<!--

function formatAmount(val, dp){
	var fRound = 0.5 * Math.pow(10, dp * -1)
	var fVal = new Number(parseFloat(val) + fRound);
	var sVal = new String(parseInt(fVal).toString());

	var sfVal = new String;
	for(i = 0; i < sVal.length; i++){
		if(i == 0){
			sfVal += sVal.charAt(i);
		}else{
			if((sVal.length - i) % 3 == 0){
				sfVal += ",";
			}
			sfVal += sVal.charAt(i);
		}
	}
	if(dp == 0) return sfVal;

	var sDec = new String(fVal.toString().substring(fVal.toString().indexOf(".")));
	return sfVal + sDec.substring(0,dp + 1);
}

function unformatNumber(val){
	var sVal = new String(val);
	sVal = sVal.replace(/\$/g,"");
	sVal = sVal.replace(/s/g,"");
	sVal = sVal.replace(/\,/g,"");
	return sVal;
}

function numberDecimals(val){
	if(val.toString().indexOf(".") == -1){
		return 0;
	}else{
		var sDec = new String(val.toString().substring(val.toString().indexOf(".")));
		return sDec.length - 1;
	}
}

function fCashPrice(fld){
	if(fld.value == "") return;
	var val = unformatNumber(fld.value);
	if(isNaN(val)){
		alert("Cash Price must be numeric.");
		fld.focus();
		return false;
	}else if(numberDecimals(val) > 2){
		alert("Cash Price must not contain more than 2 decimal places.");
		fld.focus();
		return false;
	}else{
		val = parseFloat(val);
	}
	
	calcInputTaxCredit(val);
	calcAmountFinanced(val, parseFloat(unformatNumber(fld.form.InputTaxCredit.value)));
	fld.value = formatAmount(val, 2)
}

function calcInputTaxCredit(fCashPrice){
	
	if(fCashPrice > 57009){
		document.frm.InputTaxCredit.value = formatAmount(5182.64, 2);
	}else{
		document.frm.InputTaxCredit.value = formatAmount(fCashPrice/11, 2);
	}
	
}

function calcAmountFinanced(fCashPrice, fInputTaxCredit){
	
	var dblAmount = (fCashPrice - fInputTaxCredit) + parseFloat(document.frm.txtAppFee.value) + parseFloat(document.frm.txtRevsFee.value);
	document.frm.Amount.value = formatAmount(dblAmount, 2);
		
}

function calcResidualAmount(){
	
	var dblResidualAmount = 0;
	//var dblPurchasePrice = parseFloat(unformatNumber(document.frm.CashPrice.value)) - parseFloat(unformatNumber(document.frm.InputTaxCredit.value));
	var dblPurchasePrice = parseFloat(unformatNumber(document.frm.CashPrice.value));
	var dblTerm = parseFloat(document.frm.tTerm.options[document.frm.tTerm.selectedIndex].value);
		
	switch(dblTerm){
		case 14:
			dblResidualPercent = 0.65;
			break;
		case 26:
			dblResidualPercent = 0.55;
			break;
		case 38:
			dblResidualPercent = 0.45;
			break;
		case 50:
			dblResidualPercent = 0.35;
			break;
		case 60:
			dblResidualPercent = 0.285;
			break;
	}
	
	dblResidualAmount = dblPurchasePrice * dblResidualPercent;
	document.frm.txtResidual.value = formatAmount(dblResidualAmount, 2);
	
	return dblResidualAmount;
	
}

function calcMonthlyRental(fAmountFinanced, iTerm, fInterestRate, fResidual){
	
	// Adjustment 1 - add the interest on 2 free months to the amount financed to get the total 
	//				  amount that will actually be repayed over the remainder of the term
						
	var fAdditionalInterest = (fAmountFinanced * (fInterestRate / 100)) / 6;
	fAmountFinanced = Math.ceil(fAmountFinanced + fAdditionalInterest);
	
	// Adjustment 2 - subtract the 2 free months from the term
	iTerm = iTerm -2;
	
	// Adjustment 3 - subtract the GST from the residual
	fResidual = Math.round((fResidual/11) *10);
	
	//alert("iTerm: "+ iTerm +"\nfAmountFinanced: "+ fAmountFinanced +"\nfResidual: "+ fResidual);
	
	var fRate = new Number(1 + (fInterestRate / 1200));
	var fExpRate = new Number(Math.pow(fRate, iTerm));
	var fNetAmount = new Number(fAmountFinanced - parseFloat(fResidual / fExpRate));
	fExpRate = Math.pow(fRate, 1 - iTerm);
	var fCalcRate = new Number((fRate - 1) / (fRate - fExpRate));

	var fPayment = new Number(fNetAmount * fCalcRate);
		
	// add GST
	fPayment = fPayment * 1.1;
	
	document.frm.mp.value = formatAmount(fPayment, 2);
}
	
function calculateForm(frm){
		
	if(frm.CashPrice.value == ""){
		alert("Please enter the Purchase Price.");
		frm.CashPrice.focus();
		return false;
	}
	
	if(frm.CashPrice.value == 0){
		alert("Please enter the Purchase Price.");
		frm.CashPrice.focus();
		return false;
	}
	
	var fAmountFinanced = parseFloat(unformatNumber(frm.Amount.value));	
	var iTerm = parseInt(frm.tTerm[frm.tTerm.selectedIndex].value);
	var fInterestRate = parseFloat(unformatNumber(frm.IntRate.value))
	var fResidualValue = Math.round(calcResidualAmount());
		
	calcMonthlyRental(fAmountFinanced, iTerm, fInterestRate, fResidualValue);
	
	return false;
}
-->