function cleanNumber(input) {
	return input.replace("$", "").replace(/,/g, "");
};

function checkNumber(input, min, max, msg) {
	input.value = cleanNumber(input.value);
	msg = msg + " 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 + " is not in the range [" + min + " to " + max + "]");
		return false;
	};
	input.value = str;
	return true;
};
	
function computeField(input) {
	if (input.value != null && input.value.length != 0)
	input.value = "" + eval(cleanNumber(input.value));
	computeForm(input.form);
}

function computeField2(input) {
	if (input.value != null && input.value.length != 0)
	input.value = "" + eval(cleanNumber(input.value));
	computeForm(input.form);
}

function computeForm(frm) {
if (frm.interest.value == null || frm.interest.value.length == 0 || frm.principal.value == null || frm.principal.value.length == 0) {
	alert('Please fill in all fields.');
	return;
}
if (!checkNumber(frm.interest, 2, 99, "Interest") ||
!checkNumber(frm.principal, 100, 100000000, "Principal") ||
!checkNumber(frm.downpayment, 0, 100000000, "Down Payment")) {
frm.payment.value = "Invalid";
return;
}
var i = cleanNumber(frm.interest.value);
if (i > 1) {
i = i / 100;
//frm.interest.value;
}
i /= 12;
var pow = 1;
for (var j = 0; j < (frm.payments[frm.payments.selectedIndex].value*12); j++)
pow = pow * (1 + i);
money = "" + .01* Math.round(100*((cleanNumber(frm.principal.value) - cleanNumber(frm.downpayment.value)) * pow * i) / (pow - 1));
dec = money.indexOf(".");
dollars = money.substring(0,dec); 
cents = money.substring(dec+1,dec+3);
cents = (cents.length < 2) ? cents + "0" : cents;
money = dollars + "." + cents;
frm.payment.value = money;
}