// Javascript for Calculator Page
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);
    computeForm(input.form);
}

function computeForm(form)
{
    if ((form.rate.value == null || form.rate.value.length == 0) || (form.years.value == null || form.years.value.length == 0) ||
        (form.amount.value == null || form.amount.value.length == 0)) 
	{ return; }

    if (!checkNumber(form.rate, 1, 15, " rate ") ||
        !checkNumber(form.years, 0.1, 40, " years ") ||
        !checkNumber(form.amount, 1, 10000000, " amount ")) 
	{
	        return;
        }
    var r = form.rate.value;
    r = r / 1200;
    var n = form.years.value;
    n = n * 12;
    var p = form.amount.value;
    var pow = 1;
    for (var j = 0; j < n; j++)
        pow = pow * (1 + r);
    var result;
    result = (r * pow * p) / (pow - 1);

    var res= parseInt(result * 100,10) / 100;	
    form.monthly.value = "$" + res;

    var tot = result * n - p;	
    tot = parseInt(tot * 100,10) / 100;
    form.total.value = "$" + tot;

}

function clearForm(form)
{
    form.rate.value = "";
    form.years.value = "";
    form.amount.value = "";
}
