﻿function calculate_repayment()
{document.frmFinanceLand.loanamount.value=ForceNumeric(document.frmFinanceLand.loanamount.value);document.frmFinanceLand.loanperiod.value=ForceNumeric(document.frmFinanceLand.loanperiod.value);document.frmFinanceLand.interestrate.value=ForceNumeric(document.frmFinanceLand.interestrate.value);document.frmFinanceLand.overpayment.value=ForceNumeric(document.frmFinanceLand.overpayment.value);var loanamount=document.frmFinanceLand.loanamount.value;var interestrate=document.frmFinanceLand.interestrate.value;var loanperiod=document.frmFinanceLand.loanperiod.value;var over=document.frmFinanceLand.overpayment.value;if(interestrate>0&&loanperiod>0)
{if(parseFloat(over)<parseFloat(loanamount))
{var I=interestrate/12;var X=1/(1+I/100);var N=loanperiod*12;var L=loanamount;var P1=0;var P2=loanamount;var A1=(L- P1*Math.pow(X,N))*(X- 1)/(Math.pow(X,N+1)-X);var m=(A1+ +over);var Q=((A1+ +over))-(L*(I/100));var A2=(Math.log(m/Q))/(Math.log(1+(I/100)))/12;document.frmFinanceLand.repayment.value=FormatNumber(A1,2);document.frmFinanceLand.totalpayment.value=FormatNumber((A1*12)*loanperiod,2);document.frmFinanceLand.term.value=FormatNumber(loanperiod,1);document.frmFinanceLand.newrepayment.value=FormatNumber(m);document.frmFinanceLand.newtotalpayment.value=FormatNumber((m*12)*A2,2);document.frmFinanceLand.newterm.value=FormatNumber(A2,1);if(over=0)
{document.frmFinanceLand.totalsaving.value=FormatNumber(0,2);document.frmFinanceLand.years.value=FormatNumber(0,1);;}
else
{document.getElementById("totalsaved").innerHTML=FormatNumber(document.frmFinanceLand.totalpayment.value- document.frmFinanceLand.newtotalpayment.value,2);document.getElementById("yearssaved").innerHTML=FormatNumber(document.frmFinanceLand.term.value- document.frmFinanceLand.newterm.value,1);}}
else
{document.frmFinanceLand.overpayment.value="0";document.frmFinanceLand.newrepayment.value="0";document.frmFinanceLand.newtotalpayment.value="0";document.frmFinanceLand.newterm.value="0";document.frmFinanceLand.repayment.value="0";document.frmFinanceLand.totalpayment.value="0";document.frmFinanceLand.term.value="0";document.frmFinanceLand.totalsaving.value="0";document.frmFinanceLand.years.value="0";}}
else
{document.frmFinanceLand.repayment.value="*ERROR*";document.frmFinanceLand.interestonly.value="*ERROR*";}}
function FormatNumber(Number,Decimals,Separator)
{Number+=""
Decimals+=""
Separator+=""
if((Separator=="")||(Separator.length>1))
Separator="."
if(Number.length==0)
Number="0"
var OriginalNumber=Number
var Sign=1
var Pad=""
var Count=0
if(parseFloat(Number)){Number=parseFloat(Number)}else{Number=0}
if((parseInt(Decimals,10))||(parseInt(Decimals,10)==0)){Decimals=parseInt(Decimals,10)}else{Decimals=2}
if(Number<0)
{Sign=-1
Number*=Sign}
if(Decimals<0)
Decimals*=-1
Number=""+ Math.floor(Number*Math.pow(10,Decimals+ 1)+ 5)
if((Number.substring(1,2)=='.')||((Number+'')=='NaN'))
return(OriginalNumber)
if(Number.length<Decimals+1)
{for(Count=Number.length;Count<=Decimals;Count++)
Pad+="0"}
Number=Pad+ Number
if(Decimals==0){Number=Number.substring(0,Number.length-1)}else{Number=Number.substring(0,Number.length- Decimals-1)+
Separator+
Number.substring(Number.length- Decimals-1,Number.length-1)}
if(Sign==-1)
Number="-"+ Number
if(Number.length==0)
Number="0"
return(Number)}
function ForceNumeric(nValue)
{validChars="0123456789.";newValue="";for(k=0;k<nValue.length;k++)
{thisChar=nValue.charAt(k);if(validChars.indexOf(thisChar)!=-1)newValue+=thisChar;}
return newValue;}
