loanRecalc = function() {
	if (!$('loanDownPayment') || !$('loanInterestRate') || !$('loanNumberOfYears')) {
		alert('loanRecalc() Error: page is missing some values');
		return false;
	}
	var downPayment = $('loanDownPayment').value;
	var annualInterestRate = $('loanInterestRate').value/100;
	var years = $('loanNumberOfYears').value;
	var monthRate = annualInterestRate/12;
	var numPayments = years*12;
	
	$$('.loanAmount').each(function(el){
		var loanAmount = el.value;
		var prin = loanAmount - downPayment;
		var monthPayment = Math.floor((prin*monthRate)/(1-Math.pow((1+monthRate),(-1*numPayments)))*100)/100;
		$('loanPayments'+el.id.replace('loanAmount', '')).update(numPayments+' payments of <br/><b>$'+number_format(monthPayment, 2, '.', ',')+'</b>');
	});
}

function number_format(a, b, c, d) {
	a = Math.round(a * Math.pow(10, b)) / Math.pow(10, b);
	e = a + "";
	f = e.split(".");
	if (!f[0]) {
		f[0] = "0";
	}
	if (!f[1]) {
		f[1] = "";
	}
	if (f[1].length < b) {
		g = f[1];
		for (i = f[1].length + 1; i <= b; i++) {
			g += "0";
		}
		f[1] = g;
	}
	if (d != "" && f[0].length > 3) {
		h = f[0];
		f[0] = "";
		for (j = 3; j < h.length; j += 3) {
			i = h.slice(h.length - j, h.length - j + 3);
			f[0] = d + i + f[0] + "";
		}
		j = h.substr(0, h.length % 3 == 0 ? 3 : h.length % 3);
		f[0] = j + f[0];
	}
	c = b <= 0 ? "" : c;
	return f[0] + c + f[1];
}
