var calctimer;
var calcdelay = 500;

Event.add(window, "load", function() {
	var fields = ["price", "down", "length", "rate", "tax", "insurance", "pmi"];
		for (var i in fields) {
			if (Dom.exists(fields[i])) {
				var el = Dom.get(fields[i]);
				var id = el.id;
				el.onkeypress = numbersOnly;
				Event.add(el, "keyup", function() {calcpayment(this);});
			}
	}
	if (Dom.exists("recalculate")) {
		Dom.get("recalculate").style.display="none";
	}
})
function loadTour(toururl, tourid) {
	strSettings="width=800,height=600,scrollbars=no,resizable=yes";
	var _W=window.open(toururl,'virtual_tour_' + tourid,strSettings);
	  _W.focus(); 
}

function mainImage(el) {
	var main = Dom.get("main");
	main.src = el.childNodes[0].src;
}

var numbersOnly = function (e) {
	var keynum;
	var keychar;
	var numcheck;
	var percheck;
	if(window.event) { // IE
	  keynum = event.keyCode;
	}
	else if(e.which)  { // Netscape/Firefox/Opera
	  keynum = e.which;
	}
	//alert(keynum);
	keychar = String.fromCharCode(keynum);
	numcheck = /\d/;
	percheck = /\./;
	// Allow numbers, decimal, backspace, delete, and tab
	if (numcheck.test(keychar) || percheck.test(keychar) || keynum == 8 || keynum == 45 || typeof(keynum) == "undefined") {
		return true;
	} else {
		return false;
	}
}

function calcpayment(elid) {
	clearInterval(calctimer);
	calctimer = setTimeout(function() {dopayment(elid);}, calcdelay);
}

function dopayment(el) {
	var id = Dom.get(el).id;
	var price = getNumber("price");
	var down = getNumber("down");
	var length = getNumber("length");
	var rate = getNumber("rate");
	var tax = getNumber("tax");
	var insurance = getNumber("insurance");
	var pmi = getNumber("pmi");
	// Calculate estimated PMI
	// ONLY if was NOT the PMI box
	if (id != "pmi") {
		var pmi = (down < 20) ? .35 : 0;
		pmi = (down <= 10) ? .55 : pmi;
		pmi = (down <= 5) ? .80 : pmi;
		pmi = (down <= 3) ? .90 : pmi;
		if (!isNaN(length) && length <= 20) {
			pmi = (down < 20) ? .19 : 0;
			pmi = (down <= 10) ? .23 : pmi;
			pmi = (down <= 5) ? .26 : pmi;
			pmi = (down <= 3) ? .79 : pmi;
		}
		Dom.get("pmi").value = pmi;
	}
	
	down = (price * (down/100));
	var loan = (price - down);
	var payment = yht_loan_payment(loan, rate, length * 12);
	var taxins = Math.round(((tax + insurance)/ 12)*100) / 100;
	pmi = Math.round(((pmi/100) * loan) / 12 * 100) / 100;
	
	Dom.get("cprice").innerHTML = numCurrency(price, 0);
	Dom.get("cdown").innerHTML = numCurrency(down, 0);
	Dom.get("cloan").innerHTML = numCurrency(loan, 0);
	Dom.get("cpayment").innerHTML = numCurrency(payment, 2);
	Dom.get("ctaxins").innerHTML = numCurrency(taxins, 2);
	Dom.get("cpmi").innerHTML = numCurrency(pmi, 2);
	var total = (payment + taxins + pmi);
	Dom.get("ctotal").innerHTML = numCurrency(total, 2);
	
}

function getNumber(el) {
	var number = Dom.get(el).value * 1;
	if (isNaN(number)) {number = 0;}
	return number;
}


function numCurrency(num, dec) {
	return "$" + numAddCommas(num.toFixed(dec));
}

function numAddCommas(nStr) {
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}


function yht_loan_payment(A, i, N) {
	// DEBUG: echo "<br>Amount:" . $A . "=" . $i . "=" . $N;
	// Is the interest something like 5.5? Needs to be 0.055
	if (i>1) {i = i/100;}
	// Interest is PER PAYMENT, so calculate annual rate into monthly rate
	i = i/12;
	// Do the calculation....
	p = (i * A) / (1 - (Math.pow(1 + i, N * -1)));
	return Math.round(p*100)/100;
}

