
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 MortgageCalc()
{
	var cCILoanAmount = document.frmMortgageCalc.txtCILoanAmount;
	var CILoanAmount = cCILoanAmount.value;
	
	if (CILoanAmount == "")
	{
		CILoanAmount = 0;
		cCILoanAmount.value = CILoanAmount.toString();
	}
	else
	{ 
		CILoanAmount = parseFloat(CILoanAmount);
		if (isNaN(CILoanAmount))
		{
			cCILoanAmount.focus();
			alert("Invalid capital and interest loan amount");
			return;
		}
		else
			cCILoanAmount.value = CILoanAmount.toString();
	}
	
	var cIOLoanAmount = document.frmMortgageCalc.txtIOLoanAmount;
	var IOLoanAmount = cIOLoanAmount.value;
		
	if (IOLoanAmount == "")
	{
		CILoanAmount = 0;
		cIOLoanAmount = IOLoanAmount.toString();
	}
	else
	{ 
		IOLoanAmount = parseFloat(IOLoanAmount);
		if (isNaN(IOLoanAmount))
		{
			cIOLoanAmount.focus();
			alert("Invalid interest only loan amount");
			return;
		}
		else
			cIOLoanAmount.value = IOLoanAmount.toString();
	}
	
	var cMortgageTerm = document.frmMortgageCalc.txtMortgageTerm;
	var mortgageTerm = cMortgageTerm.value;
		
	if (mortgageTerm == "")
	{
		mortgageTerm = 1;
		cMortgageTerm = mortgageTerm.toString();
	}
	else
	{ 
		mortgageTerm = parseFloat(mortgageTerm);
		if (isNaN(mortgageTerm) || mortgageTerm < 0)
		{
			cMortgageTerm.focus();
			alert("Invalid mortgage term");
			return;
		}
		else
			cMortgageTerm.value = mortgageTerm.toString();
	}	
	

	var cInterestRate = document.frmMortgageCalc.txtInterestRate;
	var interestRate = cInterestRate.value;
		
	if (interestRate == "")
	{
		interestRate = 5;
		cInterestRate = interestRate.toString();
	}
	else
	{ 
		interestRate = parseFloat(interestRate);
		if (isNaN(interestRate) || interestRate < 0)
		{
			cInterestRate.focus();
			alert("Invalid annual interest rate");
			return;
		}
		else
			cInterestRate.value = interestRate.toString();
	}
	
	var cTotalLoan = document.frmMortgageCalc.txtTotalLoan;
	var totalLoan = CILoanAmount + IOLoanAmount;
	totalLoan = Round2SD(totalLoan);
	cTotalLoan.value = totalLoan.toString();
	
	var cIOMonthlyRepayment = document.frmMortgageCalc.txtIOMonthlyRepayment;
	var IOMonthlyRepayment = (IOLoanAmount * (interestRate / 100)) / 12;
	IOMonthlyRepayment = Round2SD(IOMonthlyRepayment);
	cIOMonthlyRepayment.value = IOMonthlyRepayment.toString();
	
	var cIOTotalPayment = document.frmMortgageCalc.txtIOTotalPayment;
	var IOTotalPayment = (IOLoanAmount * (interestRate / 100)) * mortgageTerm;
	IOTotalPayment = Round2SD(IOTotalPayment);
	cIOTotalPayment.value = IOTotalPayment.toString();
	
	var monthlyInterestRate = interestRate / 1200;
	var numPeriods = mortgageTerm * 12;
	var paymentAmount  = CILoanAmount * monthlyInterestRate * Math.pow(1 + monthlyInterestRate, numPeriods) / (Math.pow(1 + monthlyInterestRate, numPeriods) - 1);
	
	var cCIMonthlyRepayment = document.frmMortgageCalc.txtCIMonthlyRepayment;
	var CIMonthlyRepayment = Round2SD(paymentAmount);
	cCIMonthlyRepayment.value = CIMonthlyRepayment.toString();
	
	var cCITotalPayment = document.frmMortgageCalc.txtCITotalPayment;
	var CITotalPayment = paymentAmount * numPeriods;
	CITotalPayment = Round2SD(CITotalPayment);
	cCITotalPayment.value = CITotalPayment.toString();
	
	var cMonthlyRepayment = document.frmMortgageCalc.txtMonthlyRepayment;
	var monthlyRepayment = IOMonthlyRepayment + CIMonthlyRepayment;
	monthlyRepayment = Round2SD(monthlyRepayment);
	cMonthlyRepayment.value = monthlyRepayment.toString();
	
	var cTotalPayment = document.frmMortgageCalc.txtTotalPayment;
	var totalPayment = IOTotalPayment + CITotalPayment;
	totalPayment = Round2SD(totalPayment);
	cTotalPayment.value = totalPayment.toString();
}
