function checkNumber(input, min, max, msg)
{
msg = msg + " Field has Invalid Data: " + input.value;
    var str = input.value;
    for (var i = 0; i < str.length; i++) {
        var ch = str.substring(i, i + 1)
        if ((ch < "0" || "9" < ch) && ch != '.') {
            alert(msg);
            return false;
        }
    }
    var num = 0 + str
    if (num < min || max < num) {
        alert(msg + " not in range [" + min + ".." + max + "]");
        return false;
   }
    input.value = str;
    return true;
}
function computeField(input)
{
    if (input.value != null && input.value.length != 0)
        input.value = "" + eval(input.value);
    computeMortgagePayments(input.form);
}
function computeMortgagePayments(form)
{
   if ((form.mortAmt.value == null || form.mortAmt.value.length == 0) ||

        (form.numYears.value == null || form.numYears.value.length == 0) ||

        (form.mortRate.value == null || form.mortRate.value.length == 0)) {

        return;

    }

    if (!checkNumber(form.mortAmt, 1, 10000000, "Mortgage Amount") ||
        !checkNumber(form.numYears, 1, 50, "Number of Years") ||
        !checkNumber(form.mortRate, 0, 99.99, "Mortgage Rate") ||
        !checkNumber(form.debt, 0, 1000000, "Debt.") ||
        !checkNumber(form.propTax, 0, 100000, "Property Tax") ||
        !checkNumber(form.downPayment, 0, 10000000, "Down Payment")        
        ) {

        form.mortPay.value = "Invalid";

        form.totalPay.value = "Invalid";

        form.reqdSal.value = "Invalid";

        return;
    }
        var mortgage = form.mortAmt.value;
        var yrTime = form.numYears.value;
        var yrRate = form.mortRate.value;
        var yrTax = form.propTax.value;
        var downPayment = form.downPayment.value;
        mortgage = mortgage - downPayment;
        var yrDebt = form.debt.value;
        var yrSalary = 0;

        var monTax      = yrTax/12;
        var monDebt     = yrDebt/12.0;

    var rate        = yrRate/1200.00;
    var monTime     = yrTime * 12.0;
    var poly        = (1.0 + rate);
    for (i=1; i < monTime; i++) {

        poly = poly * (1.0 + rate);
    }

    var monPayment  = mortgage * poly * rate / (poly - 1.0);
    var monTotal    = monPayment + monTax + monDebt;
    var mon28       = (monPayment + monTax) / .28;
    var mon35       = monTotal / .35;

    if (mon28 > mon35) {

                yrSalary = 12 * mon28;

    } else {

                yrSalary = 12 * mon35;

    }

    var principal = 0.0;
    var interest = 0.0;
    for (i = 1; i < monTime; i++) {
       interest = interest + (principal * rate);
       principal = (principal + monPayment)/(1.0 + rate);
    }
    form.mortPay.value = Math.round(monPayment);
        form.totalPay.value = Math.round(monTotal);
    form.reqdSal.value = Math.round(yrSalary);
}
function clearForm(form)

{

    form.mortAmt.value = "";
    form.numYears.value = "";
    form.propTax.value = "";
    form.debt.value = "";
    form.mortRate.value = "";
    form.mortPay.value = "";
    form.totalPay.value = "";
    form.reqdSal.value = "";;
}
