function calculateLoan()
{
	// Get fully numeric values
	calcAmount = parseFloat((document.getElementById('mortAmount').value).replace(/[^0-9\.]/gi, ''));
	calcInterest = (parseFloat((document.getElementById('mortInterest').value).replace(/[^0-9\.]/gi, '')))/100;
	calcTerm = parseFloat((document.getElementById('mortYears').value).replace(/[^0-9\.]/gi, ''));
	calcDown = parseFloat((document.getElementById('mortDown').value).replace(/[^0-9\.]/gi, ''));

	// Months to pay, rounded to two decimals
	outPayments = (calcTerm * 12) * 100;
	outPayments = Math.round(outPayments)/100;

	// Mortgage calculation, rounded to two decimals
    if (document.getElementById('mortDownPercent').checked)
    {
        // Percentage
        outTotalAmount = calcAmount - (calcAmount * (calcDown / 100));
    } else {
        // Cash value
        outTotalAmount = calcAmount - calcDown;
    }

	outMonthlyAmount = ((calcInterest/12)*(Math.pow((1+(calcInterest/12)),(calcTerm*12)))*outTotalAmount)/(-1+(Math.pow((1+(calcInterest/12)),(calcTerm*12))));
	outMonthlyAmount = outMonthlyAmount * 100;
	outMonthlyAmount = Math.round(outMonthlyAmount)/100;

	// Return results, and return 0 if it's a negative number (down payment > principal)
	if (outMonthlyAmount > 0)
	{
		document.getElementById('monthlyAmount').innerHTML = currency(outMonthlyAmount);
	} else {
		document.getElementById('monthlyAmount').innerHTML = 0;
	}	
}

// From http://www.cs.adfa.edu.au/courses/ACSC3008/coursework/currency-coolnerds.html
function currency(anynum) {
   //-- Returns passed number as string in $xxx,xxx.xx format.
   anynum=eval(anynum)
   workNum=anynum;workStr=""+workNum
   if (workStr.indexOf(".")==-1){workStr+=".00"}
   dStr=workStr.substr(0,workStr.indexOf("."));dNum=dStr-0
   pStr=workStr.substr(workStr.indexOf("."))
   while (pStr.length<3){pStr+="0"}

   //--- Adds comma in thousands place.
   if (dNum>=1000) {
      dLen=dStr.length
      dStr=parseInt(""+(dNum/1000))+","+dStr.substring(dLen-3,dLen)
   }

   //-- Adds comma in millions place.
   if (dNum>=1000000) {
      dLen=dStr.length
      dStr=parseInt(""+(dNum/1000000))+","+dStr.substring(dLen-7,dLen)
   }
   retval = dStr + pStr 
   //-- Put numbers in parentheses if negative.
   if (anynum<0) {retval="("+retval+")"}
   
   return "$"+retval.substr(0,retval.indexOf("."))
}