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 = parseFloat(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.principal.value == null || form.principal.value.length == 0 || form.principal.value.length == "")
	{
		alert("Please enter Loan Amount");
		return;
	}
	else if (form.interest.value == null || form.interest.value.length == 0 || form.interest.value.length == "")
	{
		alert("Please enter Interest Rate");
		return;
	}
	if (form.payments.value == null || form.payments.value.length == 0 || form.payments.value.length == "")
	{
		alert("Please enter Term (Years):");
		return;
	}

	num=replaceChar(form.principal.value);
	num=replaceChars(form.principal.value);

	form.principal.value = num;
	
    if (!checkNumber(form.principal, 100, 10000000, "Loan Amount") ||
        !checkNumber(form.interest, .001, 99, "Interest Rate") ||
        !checkNumber(form.payments, 1, 50, "# of years")) {
        form.payment.value = "Invalid";
        return;
    }

    var i = form.interest.value;
    if (i > 1.0) {
        i = i / 100.0;
    }

    i /= 12;
    var pow = 1;
    for (var j = 0; j < (12*form.payments.value); j++)
        pow = pow * (1 + i);
    
    inp_payment = (form.principal.value * pow * i) / (eval(pow) - eval(1));       
    inp_iopayment = form.principal.value * i;   
    form.payment.value = formatNum(inp_payment);
    form.iopayment.value = formatNum(inp_iopayment); 

    form.savings.value = formatNum(inp_payment - inp_iopayment);
	
	form.principal.value = formatCurrencyThousandWithoudDollar(num);   
}

function computeForm_Default(form)
{
	basicedit();

	var m=form.YR.value*12;
	if (m < 70)
	{
		alert ("Term in Years must be at least " + Math.round(70/12));
		form.YR.value='50';
	}
	else
	if (form.YR.value > 50)
	{
		alert ("Term in Years must not be greater than " + 50);
		form.YR.value='50';
	}

	if (replacePct(form.IR.value) > 20 )
	{
		alert ("Interest Rate must not be greater than " + 20 + " percent");
		form.IR.value=addPct('20');
	}
	else
	if (replacePct(form.IR.value) < 1 )
	{
		alert ("Interest Rate must be greater than " + 1 + " percent");
		form.IR.value=addPct('1');
	}

	var IR = replacePct(form.IR.value);
	var mi = IR / 1200;	
	var base = 1;
	var mbase = 1 + mi;
	var loanA = replaceChars(form.LA.value);
	var loanA = replaceChar(loanA);
	if ( checkForm(IR) && checkForm(loanA) && checkForm(form.YR.value));
	{
		for (i=0; i<form.YR.value * 12; i++)
		base = base * mbase	
	}

	//form.PI.value = calcRound(floor(loanA * mi / ( 1 - (1/base))));
	var PI_value = (loanA*((IR/(1200))/(1-(Math.pow(1+(IR/(1200)),((m)*-1))))));
	form.PI.value =  calcRound(PI_value);

	var TI_value = loanA*mi;
	form.TI.value = calcRound(TI_value);
	form.savings.value = calcRound(PI_value - TI_value);
}

function computeFormCost(form)
{
	var loanA = replaceChars(form.loanAmount.value);
	var loanA = replaceChar(loanA);
	var purchaseP = replaceChars(form.purchasePrice.value);
	var purchaseP = replaceChar(purchaseP);
	return;
}

function clearForm(form)
{
	form.payments.value = "";
	form.interest.value = "";
	form.principal.value = "";
}