// hide from old browsers
//============= FORM UTILITIES =============
// Test for Invalid Entry

var test_it_counter = 0;
function test_it(entry){

    if (entry.value != null && entry.value.length != 0){

        entry.value = "" + eval(entry.value);

    }
    if (test_it_counter == 0) {
        //for some reason the first calc can be off by a few cents...
        //this is a hack to stop that.
        computeForm(entry.form);
    }
    computeForm(entry.form);
    test_it_counter++;
}



function computeForm(form){

    if ((form.months.value == null || form.months.value.length == 0) ||

    (form.rate.value == null || form.rate.value.length == 0) ||

    (form.financed.value == null || form.financed.value.length == 0)){

        return;

    }

    if (!alrt_msg(form.months, 1, 480, "Number of Payments") ||

    !alrt_msg(form.rate, .001, 99, "Interest Rate") ||

    !alrt_msg(form.financed, 100, 10000000, "Principal Amount")){

        form.payment.value = "Invalid Entry.";

        return;

    }



    // --------------------Math Strings---------------------


    var i = form.rate.value;

    ffv = 0;

    ffv += form.financed.value;

    fmv = 0;

    fmv += form.months.value;

    if (i > 1.0){

        // Hack to mostly correct floating point/binary conversion error
        i = (i / 100.0) + .00001;

        var fmt = "";

        fmt += i;

        fmt = fmt.substring(0, 6)

        form.rate.value = fmt;

    }



    // --------------------Math Functions---------------------


    i /= 12;

    var isn = 1;

    for (var j = 0; j < form.months.value; j++)

    isn = isn * (1 + i);



    form.payment.value = (form.financed.value * isn * i) / (isn - 1);

    fpv = 0;



    fpv += form.payment.value;

    var fmt = "";

    var add = 9;

    fmt += form.payment.value;

    for (var i = 0; i < fmt.length; i++){

        if (fmt.charAt(i) == "."){

            add = i + 3;

            i = fmt.length;

        }

    }

    fmt = fmt.substring(0, add);

    fcalc = ((fmv * fpv) - ffv);

    var fmtb = "";

    var add = 9;

    fmtb += fcalc;

    for (var i = 0; i < fmtb.length; i++){

        if (fmtb.charAt(i) == "."){

            add = i + 3;

            i = fmtb.length;

        }

    }

    fmtb = fmtb.substring(0, add);

    form.payment.value = "   $" + fmt;

}



// --------------------Reset Form---------------------


function reset_it(form, type){
    if (type == null){
        type = '';
    }
    
    if (type != 'ppl'){
        form.months.value = "";
    
        form.rate.value = "";
    }
    form.financed.value = "";

    form.payment.value = "";

}



// --------------------Invalid Messages---------------------


function alrt_msg(entry, low, high, prompt){

    prompt = "Please Note: " + prompt + " is invalid. ";

    var scratch = entry.value;

    for (var i = 0; i < scratch.length; i++){

        var letter = scratch.substring(i, i + 1);

        if ((letter < "0" || "9" < letter) && letter != '.'){

            alert(prompt);

            return false;

        }

    }

    var errtst = parseFloat(scratch)

    if (errtst < low || high < errtst){

        alert("" + prompt + " Must be between " + low + " and " + high + "!");

        return false;

    }

    entry.value = scratch;

    return true;

}


