// JavaScript Document
//  Monthly Loan Payment Calculator
// ERROR CHECKING

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;
}

//ROUND NUMBERS

function Round(n)
  {
      pennies = n * 100;
      pennies = Math.round(pennies);

      strPennies = "" + pennies;

      len = strPennies.length;

      return strPennies.substring(0, len - 2) + "." +                   

	strPennies.substring(len - 2, len);

    }

// CALCULATE FORM

function computeForm(form)
{

 for (i=0;i<form.elements.length;i++)
	{
		if (form.elements[i].type=="text")
		{
			if (form.elements[i].name.substr(0,1)=="f")
			{					
				if ((form.elements[i].value=="") || (form.elements[i].lenght==0))
				{
					alert("Fields marked with * are Mandatory");
					form.elements[i].value="";
					form.elements[i].focus();
					return;
				}
			}	
		}
	}
	
  if (form.m8.value == null || form.m8.value.length == 0) 
     form.m8.value = 0;
	
    if ((form.f6.value == null || form.f6.value.length == 0) ||
		(form.m8.value == null || form.m8.value.length == 0) ||
        (form.f10.value == null || form.f10.value.length == 0) ||
        (form.f12.value == null || form.f12.value.length == 0) ||
        (form.f14.value == null || form.f14.value.length == 0)) {
        return;
    }
    if (!checkNumber(form.f6, 100, 10000000, "Amount of Loan")||
        !checkNumber(form.m8, 0, 99, "Fee")||
        !checkNumber(form.f10, 0, 10, "Years of Deferral (if any)")||
        !checkNumber(form.f12, 0, 50, "Repayment Terms - Years")||
	  !checkNumber(form.f14, .001, 99, "Interest Rate")) {
        form.monthly.value = "Invalid";
        return;


}
var F = parseFloat(form.m8.value);
var I = parseFloat(form.f14.value);
var L = parseFloat(form.f6.value);                         
var D = parseFloat(form.f10.value);
var R = parseFloat(form.f12.value);

var F = F / 100;
var I = I / 100;

var A = L * (1 + F);
var B = 1 + (I * D);
var C = I / 12;
var G = A * B * C;

//var H = 1 - (C + 1);
var H = C + 1
var J = R * 12;
var K = Math.pow(H, -J);
var Q = 1 - K

var M = G / Q;

//var P = Math.round(M);

form.monthly.value = Round(M);


}


// CLEAR FORM

function clearForm(form)
{
    form.f6.value = "";
    form.m8.value = "";
    form.f10.value = "";
    form.f12.value = "";
    form.f14.value = "";
    form.monthly.value = "";
}