// JavaScript Document
function test_it(entry) {
		computeForm(entry.form);
	}

	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,"Your Number of Payments") ||
			!alrt_msg(form.rate,.001,99,"Your Interest Rate") ||
			!alrt_msg(form.financed,100,10000000,"Your Principal Amount")) {
			form.payment.value = "Invalid Entry";
			form.interest.value = "Click Reset";
			return;
		}
		var i = parseFloat(form.rate.value);
		var ffv = parseFloat(form.financed.value);
		var fmv = parseFloat(form.months.value);
		if (i >= 1.0) {
			// Hack to mostly correct floating point/binary conversion error
			i = (i/100.0);
			form.rate.value = i;
		}
		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);
		var fpv = parseFloat(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);
		var fmt2 = "";
		for (var i = 0;i < fmt.length;i++) {
			if (i > 3 && i%3 == 0) {
				fmt2 += ","
			}
			fmt2 += fmt.charAt(fmt.length - 1 - i)
		}
		fmt = "";
		for (var i = 0;i < fmt2.length;i++) {
			fmt += fmt2.charAt(fmt2.length - 1 - i)
		}
		var fmtb = "";
		var add = 9;
		fmtb += ((fmv * fpv) - ffv);
		for (var i = 0;i < fmtb.length;i++) {
			if (fmtb.charAt(i) == ".") {
				add = i + 3;
				i = fmtb.length;
			}
		}
		fmtb = fmtb.substring(0,add);
		var fmtb2 = "";
		for (var i = 0;i < fmtb.length;i++) {
			if (i > 3 && i%3 == 0) {
				fmtb2 += ","
			}
			fmtb2 += fmtb.charAt(fmtb.length - 1 - i)
		}
		fmtb = "";
		for (var i = 0;i < fmtb2.length;i++) {
			fmtb += fmtb2.charAt(fmtb2.length - 1 - i)
		}
		form.payment.value = "$" + fmt;
		form.interest.value = "$" + fmtb;
	}

	function alrt_msg(entry,low,high,prompt) {
		prompt = prompt + " entry is invalid: ";
		var scratch = entry.value;
		if (isNaN(scratch) == true) {
			alert(prompt + scratch + " is not a number");
			return false;
		}
		var errtst = parseFloat(scratch)
		if (errtst < low || high < errtst) {
			alert("I'm sorry. " + prompt + "It must be in the range from " + low + " to " + high + "!");
			return false;
		}
		entry.value = scratch;
		return true;
	}