
function IntegerKeyPressHandler()
{
	if (event.keyCode < 48 || event.keyCode > 57) return false;
	else return true
}

function DecimalKeyPressHandler()
{
	if (event.keyCode != 46 && !IntegerKeyPressHandler()) return false;
	else return true
}

function OnFocusHandler(obj)
{
	obj.select();
}

function Round2SD(v)
{
	return Math.round(v * 100) / 100;
}

function PreserveZeros(v)
{
	if (typeof(v) != "string") v = v.toString();
	
	var decimalPos = v.indexOf(".");
	if (decimalPos == -1) 
	{
		v += ".";
		for (i = 0; i < 2; i++) 
		{
			v += "0";
		}
	} 
	else 
	{
		var actualDecimals = (v.length - 1) - decimalPos;
		var difference = 2 - actualDecimals;
		for (i = 0; i < difference; i++) 
		{
			v += "0";
		}
	}
	
	return v;
}

function LoanCalc()
{
	var cLoanAmount = document.frmLoanCalc.txtLoanAmount;
	var loanAmount = cLoanAmount.value;
	
	if (loanAmount == "")
	{
		loanAmount = 0;
		cLoanAmount.value = PreserveZeros(loanAmount);
	}
	else
	{ 
		loanAmount = parseFloat(loanAmount);
		if (isNaN(loanAmount) || loanAmount < 0)
		{
			cLoanAmount.focus();
			alert("Invalid Loan Amount");
			return;
		}
		else
			cLoanAmount.value = PreserveZeros(loanAmount);
	}
	
	var cInterestRate = document.frmLoanCalc.txtInterestRate;
	var interestRate = cInterestRate.value;
		
	if (interestRate == "")
	{
		interestRate = 5.95;
		cInterestRate = interestRate.toString();
	}
	else
	{ 
		interestRate = parseFloat(interestRate);
		if (isNaN(interestRate) || interestRate <= 0)
		{
			cInterestRate.focus();
			alert("Invalid Annual Percentage Rate (APR)");
			return;
		}
		else
			cInterestRate.value = interestRate.toString();
	}
	
	var cLoanTerm = document.frmLoanCalc.txtLoanTerm;
	var loanTerm = cLoanTerm.value;
		
	if (loanTerm == "")
	{
		loanTerm == 1;
		cLoanTerm = loanTerm.toString();
	}
	else
	{ 
		loanTerm = parseFloat(loanTerm);
		if (isNaN(loanTerm) || loanTerm <= 0)
		{
			cLoanTerm.focus();
			alert("Invalid Repayment Term. Enter the total number of years the loan will be repayable over");
			return;
		}
		else
			cLoanTerm.value = loanTerm.toString();
	}	
	
	var monthlyInterestRate = interestRate / 1200;
	var numPeriods = loanTerm * 12;
	var paymentAmount  = loanAmount * monthlyInterestRate * Math.pow(1 + monthlyInterestRate, numPeriods) / (Math.pow(1 + monthlyInterestRate, numPeriods) - 1);
	
	var cMonthlyRepayment = document.frmLoanCalc.txtMonthlyRepayment;
	var monthlyRepayment = Round2SD(paymentAmount);
	cMonthlyRepayment.value = PreserveZeros(monthlyRepayment);
		
	var cRepayments = document.frmLoanCalc.txtRepayments;
	var repayments = Round2SD(numPeriods);
	cRepayments.value = repayments.toString();	
	
	var cInterestCharge = document.frmLoanCalc.txtInterestCharge;
	var interestCharge = (paymentAmount * numPeriods) - loanAmount;
	interestCharge = Round2SD(interestCharge);
	cInterestCharge.value = PreserveZeros(interestCharge);	

	var cTotalPayment = document.frmLoanCalc.txtTotalPayment;
	var totalPayment = paymentAmount * numPeriods;
	totalPayment = Round2SD(totalPayment);
	cTotalPayment.value = PreserveZeros(totalPayment);	                    
}