function MortgageCalculator(theform) {
  
	var price = theform.price.value;
	var downpayment = theform.downpayment.value;
  var years = theform.years.value;
  var interest_rate = theform.interest_rate.value;
	
	if (isNumber(price) && isNumber(downpayment)) {
		pv = parseFloat(price) - parseFloat(downpayment);
		np = parseFloat(years) * 12;
		fv = 0;
		ir = eval(interest_rate) / 100 /12;
		q = Math.pow(1 + ir,np);
		pmt = ((ir * (fv + q * pv))/(-1 + q));
		
		theform.monthly_payment.value = formatCurrency(pmt, 2);
	} else 	{
		theform.monthly_payment.value = "N/A";
	}
}


function isNumber(aString) {
	var bIsNumber = false;
	if (trim(aString) != "")	{
		var noVal = Number(aString)
		bIsNumber = (!isNaN(noVal));
	}
	return bIsNumber;
}

function trim(aString) {

 // skip leading and trailing whitespace
 // and return everything in between
  var cTrimmedString=aString;
  cTrimmedString = cTrimmedString.replace(/^\s*(.*)/, "$1");
  cTrimmedString = cTrimmedString.replace(/(.*?)\s*$/, "$1");
  return cTrimmedString;
}

function formatCurrency(num, aiDecimalPlaces) {

	var iMultip = Math.pow(10, aiDecimalPlaces);
	var cFormattedVal = "";		
	num = num.toString();
	if(isNaN(num))
		num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*iMultip+0.50000000001);
	cents = num%iMultip;
	num = Math.floor(num/iMultip).toString();

	cents = rightPad(cents, aiDecimalPlaces, "0");

	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3))+','+ num.substring(num.length-(4*i+3));
	if (aiDecimalPlaces > 0)
		cFormattedVal = (((sign)?'':'-') + num + '.' + cents);
	else
		cFormattedVal = (((sign)?'':'-') + num );
	return cFormattedVal;
}


function rightPad(aString, aLength, aPadChar) {
	var newString = aString.toString();
	var iStrLength = newString.length;

	for (var i= iStrLength; i < aLength; i++)	{
		newString = newString +aPadChar;
	}
	return newString;
}

