
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
// -->

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


//Amount financed = Tot Cash Price + insurance - Deposit

// Insurance Rates - first one for 6 months, second for 12 months, third for 18 months etc.
	//var InsuranceRates = new Array(0.08, 0.08, 0.10, 0.12, 0.14);
	
	// Booking Fee - currently $200.00
	var BookingFee = new Number (200.00);
	
	// GST Rate - currently 12.5%
	var GSTRate = new Number (0.125);
	
	// Interest Rate - currently 14.5%
	var InterestRate = new Number (0.145);

	// Residual Value - Currently 15% of Cash Price - GST Exclusive
	var ResidualValue = new Number (0.15);

	// Service Contract - Currently 15% pa of Cash Price
	var ServiceContract = new Number (.45)  // .15 x 3 yr or 36 mnths

	// Calculates and displays the Monthly Payments, Fortnightly Payments, Weekly Payments, Minimum Deposit,
	// for a loan from Gateacre Finance, based on the 
	// Price, Deposit, Term, and Insurance options entered by the user. 	
	function Calculate()
	{
		var CashPriceIncGST = new Number (0);
		var CashPriceExcGST = new Number (0);
		var CashPrice = new Number (0);
		var InsuranceRate = new Number (0);
		var InsuranceAmount = new Number (0);
		var InsuranceAmountIncluded = new Number (0);
		var TotalGrossCost = new Number (0);
		var AmountFinanced = new Number (0);
		var MonthlyPayments = new Number (0);
		var BalancePayable = new Number (0);
		var TotalCostOfTransaction = new Number (0);
		var AdditionalCostOfCashTransaction = new Number (0);
		var ResidualAmount = new Number (0);
		var Term = 36 
		var ServiceContractAmount = new Number (0);
		var ServiceAmount = new Number (0);
				
		
 
		CashPrice = Number(DollarToNumber(document.Loan.CashPrice.value));
		
		
		if (document.Loan.GST.checked == false)
		{
			CashPriceIncGST = CashPrice;
			CashPriceExcGST = CashPrice / (GSTRate + 1);
		}
		else
		{
			CashPriceIncGST = CashPrice * (GSTRate + 1);
			CashPriceExcGST = CashPrice;
		}
		
		InsuranceRate = .14 
		  if (InsuranceRate * CashPriceIncGST < 50){
		  InsuranceAmount = 50;
		}
		  else
		{
		InsuranceAmount = InsuranceRate * CashPriceIncGST;
		}
		
		if (document.Loan.InsOption.selectedIndex == 0)
		{
			InsuranceAmountIncluded = InsuranceAmount;
		}
		
		else
		{
			InsuranceAmountIncluded = 0;
		}
		
		ServiceContractAmount = ServiceContract * CashPriceIncGST
		
		if (document.Loan.ServCont.selectedIndex == 0)
		{	
			ServiceAmount = ServiceContractAmount;
		}
		else
		{
			ServiceAmount = 0;
		}
		
		TotalGrossCost = CashPriceIncGST ;
		AmountFinanced =  TotalGrossCost + InsuranceAmountIncluded + ServiceAmount;

		ResidualAmount = ResidualValue * CashPriceIncGST;
		MonthlyPayments = ((AmountFinanced*(1+InterestRate/12* Term  )-ResidualAmount)/Term)+((BookingFee)/Term);
		
		
		TotalCharges = MonthlyPayments * Term - AmountFinanced -BookingFee - InsuranceAmountIncluded;
		FinanceCharge = TotalCharges - 0;
		
		BalancePayable = AmountFinanced  + TotalCharges;
		
		TotalCostOfTransaction = TotalGrossCost + TotalCharges;
		AdditionalCostOfCashTransaction = TotalCharges;
				
		document.Loan.Gate.value = "With Compliments of Gateacre Finance Ltd";
		document.Loan.MonthlyPayments.value = NumberToDollar(MonthlyPayments);
		document.Loan.CashPriceIncGST.value = NumberToDollar(CashPriceIncGST);
				
		return true;		
	}
	

	// Calculates the payment for a loan based on constant payments and a constant interest rate, given the present value, the 
	// interest rate for the loan  and the number of payments for the loan.
	function PaymentAmount(IntrestRate, NumberOfPayments, PresentValue, FutureValue)
	{ 
		var PMT = new Number (0.000);		
		var Temp = new Number (0.000);		
			
		if(IntrestRate == 0.0) 
		{
			if(NumberOfPayments != 0) 
			{
				PMT = -(FutureValue + PresentValue) / NumberOfPayments;
			}
			else 
			{
				alert("Divide by zero error.");
			}
		}
		else 
		{
			Temp = Math.pow(1 + IntrestRate, NumberOfPayments);
			PMT = -((IntrestRate * (FutureValue + Temp * PresentValue)) /( -1 + Temp));
		}
		return PMT;
	} 
	
	
	// Converts a string in a '$100.00' format to a number value.
	function DollarToNumber(DollarValue)
	{
		var i = 1;
		var ReturnString = "";
		for (i = 0; i < DollarValue.length; i++)
		{
			if ((DollarValue.charAt(i) >= '0' && DollarValue.charAt(i) <= '9') || DollarValue.charAt(i) == '.')
			{
				ReturnString = ReturnString + DollarValue.charAt(i);
			}
		}
		return ReturnString;
	}

        // Converts a number value to a string in a '$100.00' format.
        function NumberToDollar(Val) {
        Dollar = Math.floor(Val) 
        Val = "" + Math.round(Val * 100)
        Decimal = Val.substring (Val.length-2, Val.length)
        return ("$" + Dollar + "." + Decimal);
        }

	

        function MM_findObj(n, d) { //v4.01
         var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
          d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
           if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
            for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
             if(!x && d.getElementById) x=d.getElementById(n); return x;
       }

       function MM_validateForm() { //v4.0
         var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
          for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
           if (val) { nm=val.name; if ((val=val.value)!="") {
            if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
             if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
       } else if (test!='R') { num = parseFloat(val);
         if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
          if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
            min=test.substring(8,p); max=test.substring(p+1);
             if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
      } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
      } if (errors) alert('The following error(s) occurred:\n'+errors);
        document.MM_returnValue = (errors == '');
      }


