﻿function setinsurancerate() {
    downpaymentrate = document.forms.paymentcalculator.downpayment.value / document.forms.paymentcalculator.propertyprice.value;
    document.forms.paymentcalculator.insurance.value = 0
    if (downpaymentrate < .10) { document.forms.paymentcalculator.insurancerate.value = 2.75 }
    if ((downpaymentrate >= .10) && (downpaymentrate < .15)) { document.forms.paymentcalculator.insurancerate.value = 2.00 }
    if ((downpaymentrate >= .15) && (downpaymentrate < .20)) { document.forms.paymentcalculator.insurancerate.value = 1.75 }
    if (downpaymentrate >= .20) { document.forms.paymentcalculator.insurancerate.value = 0 }
}

function validate() {
    var errormessage = ""
    errormessage = errormessage + ValRequired("propertyprice", "Property Price")
    errormessage = errormessage + ValRequiredList("term", "Term")
    errormessage = errormessage + ValRequiredNumber("monthlytaxes", "Monthly Taxes")
    errormessage = errormessage + ValRequiredNumber("monthlycondofees", "Monthly Condo Fees")
    errormessage = errormessage + ValRequiredNumber("monthlyother", "Other Monthly Costs")
    errormessage = errormessage + ValRequiredNumber("monthlypayment", "Monthly Payment")
    errormessage = errormessage + ValRequiredNumber("downpayment", "Down Payment")
    errormessage = errormessage + ValRequiredNumber("propertyprice", "Property Price")
    errormessage = errormessage + ValRequiredNumber("ammortization", "Amortization")

    if (document.forms.paymentcalculator.principal.value == "NaN") { document.forms.paymentcalculator.principal.value = "" }

    if (errormessage != "") { alert(errormessage) } else { calculatepayment() }
}

function startup() {
    document.forms.paymentcalculator.downpayment.value = Math.round(document.forms.paymentcalculator.downpayment1[document.forms.paymentcalculator.downpayment1.selectedIndex].value / 100 * document.forms.paymentcalculator.propertyprice.value);
    document.forms.paymentcalculator.principal.value = document.forms.paymentcalculator.propertyprice.value - document.forms.paymentcalculator.downpayment.value;
    setinsurancerate();
    document.forms.paymentcalculator.insurance.value = Math.round(document.forms.paymentcalculator.principal.value * document.forms.paymentcalculator.insurancerate.value / 100);
    document.forms.paymentcalculator.rate.value = document.forms.paymentcalculator.term[document.forms.paymentcalculator.term.selectedIndex].value;
    validate();
}



function calculatepayment() {


    var p = document.forms.paymentcalculator.principal.value
    var i = document.forms.paymentcalculator.rate.value
    i = i / 100;
    var n = document.forms.paymentcalculator.ammortization.value * 12


    setinsurancerate();
    document.forms.paymentcalculator.insurance.value = Math.round(document.forms.paymentcalculator.principal.value * document.forms.paymentcalculator.insurancerate.value / 100);
    p = (p * 1) + document.forms.paymentcalculator.insurance.value * 1;

    var part1 = Math.pow((1 + i / 2), (1 / 6))
    var part2 = Math.pow((part1), (n * -1))
    var MonthlyPmt = (p * ((part1 - 1)) / (1 - part2))

    document.forms.paymentcalculator.monthlypayment.value = Math.round(MonthlyPmt);


    MonthlyTotal = MonthlyPmt + (document.forms.paymentcalculator.monthlytaxes.value * 1) + (document.forms.paymentcalculator.monthlycondofees.value * 1) + (document.forms.paymentcalculator.monthlyother.value * 1);

    document.forms.paymentcalculator.monthlytotal.value = Math.round(MonthlyTotal);

    document.forms.paymentcalculator.householdincome.value = Math.round(12 * (document.forms.paymentcalculator.monthlytotal.value - (document.forms.paymentcalculator.monthlycondofees.value / 2)) / .32);

}
