function fixFloatFormat(input)
{
    var str = input.value;
    var index = 0;
    var newstr = 0;
    for (var i = 0; i < str.length; i++) {
        var ch = str.substring(i, i + 1)
        if (ch == '.') {
           index = i;
        }
    }
    newstr = str.substring(0, index);
	input.value = newstr + "." + str.substring(index+1, index+3);
    return true;
}
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.propTax.value == null || form.propTax.value.length == 0) ||
        (form.debt.value == null || form.debt.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")) {
        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 yrDebt = form.debt.value;
	var yrSalary = 0;
	var yrSalary2 = 0;
	
	var monTax      = yrTax/12;
	var monDebt     = yrDebt/1;
    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;
    var mon48       = monTotal / .48;
    if (mon28 > mon35) {
		yrSalary = 12 * mon28;
    } else {
		yrSalary = 12 * mon35;
		yrSalary2 = 12 * mon48;
    }
    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 = monPayment;
	fixFloatFormat(form.mortPay);
	form.totalPay.value = monTotal;
	fixFloatFormat(form.totalPay);
    form.reqdSal.value = yrSalary;
	fixFloatFormat(form.reqdSal);
   form.HighRatioReqdSal.value = 12 * mon48;
	fixFloatFormat(form.HighRatioReqdSal);
   form.MonthlySalary35.value = mon35;
	fixFloatFormat(form.MonthlySalary35);
  form.MonthlySalary48.value = mon48;
	fixFloatFormat(form.MonthlySalary48);
}
  