var frm,
	price,
	dpPercent,
	dpText,
	interestRate,
	numYears,
	taxes,
	assFees,
	otherFees,
	
	pmi,
	pi,
	ep;
function frmLoad(){
	frm = document.forms.main;
	price = frm.price;
	dpPercent = frm.dpPercent;
	dpText = frm.dpText;
	interestRate = frm.interestRate;
	numYears = frm.numYears;
	taxes = frm.taxes;
	taxes_duration = frm.taxes_duration;
	insurance = frm.insurance;
	insurance_duration = frm.insurance_duration;
	assFees = frm.assFees;
	assFees_duration = frm.assFees_duration;
	otherFees = frm.otherFees;
	otherFees_duration = frm.otherFees_duration;
	
	pmi = frm.pmi;
	pi = frm.pi;
	ep = frm.ep;
	
	dosum();
}
addLoadEvent(frmLoad);
function floor(number){
	return Math.floor(number*100)/100;
}
function dosum(){
	// validate text inputs
	if(isNaN(price.value) || price.value == '') price.value = 0;
	if(isNaN(taxes.value) || taxes.value == '') taxes.value = 0;
	if(isNaN(insurance.value) || insurance.value == '') insurance.value = 0;
	if(isNaN(assFees.value) || assFees.value == '') assFees.value = 0;
	if(isNaN(otherFees.value) || otherFees.value == '') otherFees.value = 0;
	// figure out downPayment
	if(dpPercent.value != ''){
		if(isNaN(dpPercent.value)) dpPercent.value = 0;
		downPayment = price.value*(dpPercent.value/100);
		dpText.value = downPayment;
	} else if(dpText.value != ''){
		if(isNaN(dpPercent.value)) dpText.value = 0;
		downPayment = dpText.value;
		dpPercent.value = (downPayment/price.value)*100;
	}
	// figure out mortgage insurance
	if(dpPercent.value < 20) pmi.value = Math.floor(price.value/100000)*41.67;
	else pmi.value = 0;
	actualLoanAmount = price.value - downPayment;
	
	var mi = frm.interestRate.value/1200;
	var base = 1;
	var mbase = 1+mi;
	for(var i=0; i<numYears.value *12; i++){
		base = base*mbase;
	}
	pi.value = floor(actualLoanAmount * mi / (1 - (1/base)));
	var totalMonthly = floor(
								(actualLoanAmount * mi / (1 - (1/base))) +
								(taxes.value/taxes_duration.value) +
								(insurance.value/insurance_duration.value) +
								(assFees.value/assFees_duration.value) +
								(otherFees.value/otherFees_duration.value)
							);
	ep.value = totalMonthly;
}