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 computeLoan(input)
{
    if (input.value != null && input.value.length != 0)
        input.value = "" + eval(input.value);
    computeLoanBalance(input.form);
}

function computeAll(input)
{
    if (input.value != null && input.value.length != 0)
        input.value = "" + eval(input.value);
    computeForm(input.form);
}

function computeField(input)
{
    if (input.value != null && input.value.length != 0)
        input.value = "" + eval(input.value);
    computeMonthlyPay(input.form);
}

function computeLoanBalance(form)
{
    if ((form.salePrice.value == null || form.salePrice.value.length == 0) ||
        (form.Down.value == null || form.Down.value.length == 0)) {
        return;
    }

    if (!checkNumber(form.Down, 0, 99, "Down Payment") ||
        !checkNumber(form.salePrice, 1, 10000000, "Sale Price")) {
        form.salePrice.value = "Invalid";
        return;
    }

    var i = form.Down.value;

    form.loanBalance.value = form.salePrice.value - (i/100 * form.salePrice.value);
}

 
 

function computeMonthlyPay(form)
   
{
    if ((form.payments.value == null || form.payments.value.length == 0) ||
        (form.interest.value == null || form.interest.value.length == 0) ||
        (form.loanBalance.value == null || form.loanBalance.value.length == 0)) {
        return;
    }
        form.payments.value=form.payments.value*12
    if (!checkNumber(form.payments, 1, 1200, "# of payments") ||
        !checkNumber(form.interest, .001, 99, "Interest") ||
        !checkNumber(form.loanBalance, 1, 10000000, "Principal")) {
        form.monthlypay.value = "Invalid";
        return;
    }

    var i = form.interest.value;
    if (i > 1.0) {
        i = i / 100.0;
        form.interest.value = i;
    }
    i /= 12;

    var pow = 1;
    for (var j = 0; j < form.payments.value; j++)
        pow = pow * (1 + i);
    form.monthlypay.value = (form.loanBalance.value * pow * i) / (pow - 1)
	fixFloatFormat(form.monthlypay);
    form.payments.value=form.payments.value/12
}

 

function clearForm(form)
{
    form.salePrice.value = "";
    form.Down.value = "";
    form.loanBalance.value = "";
    form.payments.value = "";
    form.monthlypay.value = "";
    form.interest.value = "";;
 
}
