function floor(number)
{
  return Math.floor(number*Math.pow(10,2))/Math.pow(10,2);
}

function dosum()
{
  var mi = document.temps.IR.value / 1200;
  var base = 1;
  var mbase = 1 + mi;
  for (i=0; i<document.temps.YR.value * 12; i++)
  {
    base = base * mbase
  }
  document.temps.PI.value = floor(document.temps.LA.value * mi / ( 1 - (1/base)))
  }

function dosum2()
{
  var mi2 = document.temps2.IN.value / 1200;
  var base2 = 1;
  var mbase2 = 1 + mi2;
  for (i2=0; i2<document.temps2.YR2.value * 12; i2++)
  {
    base2 = base2 * mbase2
  }
	document.temps2.LA2.value = floor(document.temps2.PI2.value * ( ( 1 - (1/base2))/mi2))  
	}

function dowow()
{
  var OR = document.wow.OldRate.value / 1200;
  var CR = document.wow.CLLRate.value / 1200;
  var OldBase = 1;
  var CLLBase = 1;
  var OldBaseM = 1 + OR;
  var CLLBaseM = 1 + CR;
  for (i=0; i<document.wow.TermRemaining.value * 12; i++)
  {
    OldBase = OldBase * OldBaseM
    CLLBase = CLLBase * CLLBaseM
  }

  document.wow.OldPayments.value = floor(document.wow.LoanAmount.value * OR / ( 1 - (1/OldBase)))
  document.wow.CLLPayments.value = floor(document.wow.LoanAmount.value * CR / ( 1 - (1/CLLBase)))
  document.wow.OldTotalMtg.value = floor(document.wow.OldPayments.value * 
      	document.wow.TermRemaining.value*12)
  document.wow.CLLTotalMtg.value = floor(document.wow.CLLPayments.value * 
      	document.wow.TermRemaining.value*12)
  document.wow.OldTotalInt.value = floor((document.wow.OldPayments.value - 
		document.wow.LoanAmount.value / ( document.wow.TermRemaining.value * 12)) *
   		document.wow.TermRemaining.value*12)
  document.wow.CLLTotalInt.value = floor((document.wow.CLLPayments.value - 
		document.wow.LoanAmount.value / ( document.wow.TermRemaining.value * 12)) *
   		document.wow.TermRemaining.value*12)
  document.wow.SavingWow.value = floor(document.wow.OldTotalMtg.value - 
		document.wow.CLLTotalMtg.value - 
		document.wow.RefinancingCosts.value)
  document.wow.SavingMonthly.value = floor(document.wow.OldPayments.value - 
		document.wow.CLLPayments.value)
  }

//function to format numbers to 2 decimal places

function format(num)
{
num = Math.round(num*100)/100
        return num;
}
//validate form input
function validcalc()
{
if ((document.xtra.LoanAmount.value=="") || (document.xtra.LoanAmount.value < 1) || (isNaN(document.xtra.LoanAmount.value))) 
{   alert("You must enter a Loan Amount")}
else   
if ((document.xtra.Intrate.value < 1) || (document.xtra.Intrate.value > 50) || (isNaN(document.xtra.Intrate.value))) 
{   alert("You must enter an Interest Rate between 1 and 50")}
else   
if ((document.xtra.LoanPeriod.value < 1) || (document.xtra.LoanPeriod.value > 30) || (isNaN(document.xtra.LoanPeriod.value))) 
{   alert("You must enter an Loan Period value between 1 and 30 years")}
else   advcalc();
}

//declare xtra variables

function advcalc()
{
     LoanAmount= document.xtra.LoanAmount.value;
     LoanPeriod= document.xtra.LoanPeriod.value;
     AnnualIntrate = document.xtra.Intrate.value/100;
     MonthIntrate = document.xtra.Intrate.value/(12*100);
     FortIntrate = document.xtra.Intrate.value/(26*100);
     WeekIntrate = document.xtra.Intrate.value/(52*100);
     NumPaymentsMonth=LoanPeriod*12;
     NumPaymentsFort=LoanPeriod*26;
     NumPaymentsWeek=LoanPeriod*52;
     ExtraRepay= document.xtra.ExtraRepay.value;
	
//run function dependant on the repayment frequency form value

	if (document.xtra.RepayFreq[document.xtra.RepayFreq.selectedIndex].value == "Monthly")
		advcalcmonth()
	else 
	{
	if (document.xtra.RepayFreq[document.xtra.RepayFreq.selectedIndex].value == "Fortnightly")
		advcalcfort()
	else 
	if (document.xtra.RepayFreq[document.xtra.RepayFreq.selectedIndex].value == "Weekly")
		advcalcweek()
	}
}

//calculate results for monthly repayments

function advcalcmonth()
{
	if (document.xtra.ExtraRepayFreq[document.xtra.ExtraRepayFreq.selectedIndex].value == "Monthly")
		var ExtraRepay = document.xtra.ExtraRepay.value;
	else 
	{
	if (document.xtra.ExtraRepayFreq[document.xtra.ExtraRepayFreq.selectedIndex].value == "Fortnightly"
)
		var ExtraRepay = document.xtra.ExtraRepay.value * 2;
	else 
		var ExtraRepay = document.xtra.ExtraRepay.value * 4;
	}
	MonthPayment=LoanAmount * (MonthIntrate / (1 - Math.pow((1+MonthIntrate),-(NumPaymentsMonth))));
	Repay=MonthPayment;
	TotalRepay=Number(ExtraRepay)+Number(Repay);
	ExtraLoanPaymentPeriod=(Math.log(TotalRepay/(TotalRepay-(LoanAmount*MonthIntrate))))/Math.log(1+MonthIntrate);
	years = Math.floor((ExtraLoanPaymentPeriod)/12);
	months = Math.round(((ExtraLoanPaymentPeriod/12) - Math.floor(ExtraLoanPaymentPeriod/12))*12);
	if (months == 12)
	{document.xtra.ExtraRepayPeriod.value=(years+1) + ' years '+ ' 0 months'
	}
	else
{   document.xtra.ExtraRepayPeriod.value=(years) + ' years '+ months + ' months'}
	RepayTotal = (MonthPayment*12*LoanPeriod);
	InterestPaid = (RepayTotal-LoanAmount);
	ExtraTotal = TotalRepay*ExtraLoanPaymentPeriod;
	ExtraInterestPaid = (ExtraTotal-LoanAmount);
	InterestSaving = InterestPaid - ExtraInterestPaid;
	document.xtra.InterestSaving.value=format(InterestSaving); 
	}
	
function advcalcfort()
{
	if (document.xtra.ExtraRepayFreq[document.xtra.ExtraRepayFreq.selectedIndex].value == "Monthly")
		var ExtraRepay = document.xtra.ExtraRepay.value*12/52;
	else 
	{
	if (document.xtra.ExtraRepayFreq[document.xtra.ExtraRepayFreq.selectedIndex].value == "Fortnightly"
)
		var ExtraRepay = document.xtra.ExtraRepay.value;
	else 
		var ExtraRepay = document.xtra.ExtraRepay.value * 2;
	}
	FortPayment=LoanAmount * (FortIntrate / (1 - Math.pow((1+FortIntrate),-(NumPaymentsFort))));
	Repay=FortPayment;
	TotalRepay=Number(ExtraRepay)+Number(Repay);
	ExtraLoanPaymentPeriod=(Math.log(TotalRepay/(TotalRepay-(LoanAmount*FortIntrate))))/Math.log(1+FortIntrate
);
	document.xtra.ExtraRepayPeriod.value=Math.round(ExtraLoanPaymentPeriod/26);
	years = Math.floor((ExtraLoanPaymentPeriod)/26);
	months = Math.round(((ExtraLoanPaymentPeriod/26) - Math.floor(ExtraLoanPaymentPeriod/26))*12);
	if (months == 12)
	{document.xtra.ExtraRepayPeriod.value=(years+1) + ' years '+ ' 0 months'
	}
	else   
{   document.xtra.ExtraRepayPeriod.value=(years) + ' years '+ months + ' months'}
	RepayTotal = (FortPayment*26*LoanPeriod);
	InterestPaid = (RepayTotal-LoanAmount);
	ExtraTotal = (TotalRepay*ExtraLoanPaymentPeriod);
	ExtraInterestPaid = (ExtraTotal-LoanAmount);
	InterestSaving = InterestPaid - ExtraInterestPaid
	document.xtra.InterestSaving.value=format(InterestSaving);
	}
function advcalcweek()
{
	if (document.xtra.ExtraRepayFreq[document.xtra.ExtraRepayFreq.selectedIndex].value == "Monthly")
		var ExtraRepay = document.xtra.ExtraRepay.value*12/52;
	else 
	{
	if (document.xtra.ExtraRepayFreq[document.xtra.ExtraRepayFreq.selectedIndex].value == "Fortnightly")
		var ExtraRepay = document.xtra.ExtraRepay.value*12/26;
	else 
		var ExtraRepay = document.xtra.ExtraRepay.value;
	}
	var WeekPayment=LoanAmount * (WeekIntrate / (1 - Math.pow((1+WeekIntrate),-(NumPaymentsWeek))));
	var Repay=WeekPayment;
	var TotalRepay=Number(ExtraRepay)+Number(Repay);
	var ExtraLoanPaymentPeriod=(Math.log(TotalRepay/(TotalRepay-(LoanAmount*WeekIntrate))))/Math.log(1+WeekIntrate
);
	years = Math.floor((ExtraLoanPaymentPeriod)/52);
	months = Math.round(((ExtraLoanPaymentPeriod/52) - Math.floor(ExtraLoanPaymentPeriod/52))*12);
	if (months == 12)
	{document.xtra.ExtraRepayPeriod.value=(years+1) + ' years '+ ' 0 months'
	}
	else   
{   document.xtra.ExtraRepayPeriod.value=(years) + ' years '+ months + ' months'}
	var RepayTotal = (WeekPayment*52*LoanPeriod);
	var InterestPaid = (RepayTotal-LoanAmount);
	var ExtraTotal = (TotalRepay*ExtraLoanPaymentPeriod);
	var ExtraInterestPaid = (ExtraTotal-LoanAmount);
	var InterestSaving = InterestPaid - ExtraInterestPaid
	document.xtra.InterestSaving.value=format(InterestSaving);
	}
