Number.prototype.toNearest = function(num) { //num is an exponent of 10
	return Math.ceil(this/num)*num;
}

// calculate 504 loan info and display results
function calculateLoan(objForm) {
	
	var amount = objForm.txtAmount.value;
	var term = objForm.selTerm.value;
	var sba = 6.88;	// 504 rate
	var j = 7.50;	// bank rate
	
	// filter out dollar signs and commas
	amount = amount.replace("$","");
	amount = amount.replace(",","");
	
	// alert when entered value is over limit
	if (amount > 10000000) {
		alert("Total must be under $10,000,000");
		doReset();
		return false;
	} else if (amount <= 0 || !isNumeric(amount)) {
		alert("Please enter a total project cost.");
		doReset();
		return false;
	}
	
	// initialize result values
	var sResultAmount = document.getElementById('resultAmount');
	var sResultTerm = document.getElementById('resultTerm');
	var sResultFees = document.getElementById('resultFees');
	var sResultTotal = document.getElementById('resultTotal');
	var sResultBankAmount = document.getElementById('resultBankAmount');
	var sResultBankRate = document.getElementById('resultBankRate');
	var sResultBankTerm = document.getElementById('resultBankTerm');
	var sResultBankMonthly = document.getElementById('resultBankMonthly');
	var sResultBankAnnual = document.getElementById('resultBankAnnual');
	var sResultCDCAmount = document.getElementById('resultCDCAmount');
	var sResultCDCRate = document.getElementById('resultCDCRate');
	var sResultCDCMonthly = document.getElementById('resultCDCMonthly');
	var sResultCDCAnnual = document.getElementById('resultCDCAnnual');
	var sResultBorrowerAmount = document.getElementById('resultBorrowerAmount');
	var sResultMonthTotal = document.getElementById('resultMonthTotal');
	var sResultAnnualTotal = document.getElementById('resultAnnualTotal');
	var sResultTotalAmount = document.getElementById('resultTotalAmount');
	var calculatorResults = document.getElementById('calculator-results');
	
	// compute loan values
	sResultAmount.innerHTML = amount;
	sResultTerm.innerHTML = term;
	sResultBankAmount.innerHTML = (Math.round(amount/2));
	sResultBorrowerAmount.innerHTML = (Math.round(amount*(10/100)));
	var b = (Math.round(amount/2));
	var i = j/100;
	var n = term - (2*term);
	var p = n*12;
	var g = Math.pow((1+(i/12)), p);
	var h = (b*(i/12))/(1-g);
	sResultBankRate.innerHTML = j*1;
	sResultBankMonthly.innerHTML = (Math.round(h*1));
	sResultBankAnnual.innerHTML = sResultBankMonthly.innerHTML * 12;
	var c = amount*(40/100);
	var d = c + ((c*(225/10000))+2000);
	var e = d/(996/1000);
	var f = e.toNearest(1000);
	var k = (Math.round((d*1)+(f*(4/1000))-c));
	var ko = k.toNearest(1000);
	sResultFees.innerHTML = ko*1;
	sResultCDCAmount.innerHTML = (Math.round((amount*(40/100))+ko));
	sResultTotal.innerHTML = (Math.round((amount/2)+((amount*(40/100))+ko)+(amount*(10/100))));
	var bb = (amount*(40/100))+ko;
	var t = sba/100;
	var u = 20-40;
	var v = u*12;
	var w = Math.pow((1+(t/12)), v);
	var tv = (bb*(t/12))/(1-w);
	sResultCDCMonthly.innerHTML = (Math.round(tv*1));
	sResultCDCAnnual.innerHTML = sResultCDCMonthly.innerHTML * 12;
	sResultMonthTotal.innerHTML = (Math.round(tv*1)) + (Math.round(h*1));
	sResultAnnualTotal.innerHTML = ((Math.round(tv*1))*12) + ((Math.round(h*1))*12);
	sResultBankTerm.innerHTML = term*1;
	sResultCDCRate.innerHTML = sba*1;
	sResultTotalAmount.innerHTML = (amount*1)+(ko*1);

	// show results
	calculatorResults.style.display = "block";
	
	// ensure form doesn't try to submit
	return false;
	
} // calculateLoan()

// reset form values
function doReset() {
	var objForm = document.getElementById('frmCalculator');
	objForm.reset();
	objForm.txtAmount.focus();
	document.getElementById('calculator-results').style.display = "none";
} // doReset()

// determine if a given string is numeric (float or integer)
function isNumeric(sText) {
	var ValidChars = "0123456789.";
	var IsNumber=true;
	var Char;
	
	for (i = 0; i < sText.length && IsNumber == true; i++) { 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) {
			IsNumber = false;
		}
	}
	return IsNumber;
} // isNumeric