var num=0;
var amt=0;
var per=0;
var months=0;
var c="<td>"
var ec="</td>"
var s="R ";
function iA(){
 this.length=iA.arguments.length;
 for (var i=0;i<this.length;i++){
  this[i]=iA.arguments[i];
  }
 }
var pwr=new iA(10);
var dec=new iA(16);
pwr[0]=1;
for (var i=0;i<9;i++){
 pwr[i+1]=pwr[i]*10;
}
dec[0]=.1;
dec[1]=.01;
dec[2]=.001;
dec[3]=.0001;
dec[4]=.00001;
dec[5]=.000001;
dec[6]=.0000001;
dec[7]=.00000001;
dec[8]=.000000001;
dec[9]=.0000000001;
dec[10]=.00000000001;
dec[11]=.000000000001;
dec[12]=.0000000000001;
dec[13]=.00000000000001;
dec[14]=.000000000000001;
dec[15]=.0000000000000001;
   
var ns="01234567890";
var cr="";
var str="";

function stn(){
 num=0;
 pos=str.indexOf(".");
 sfx="";
 if (pos>-1){
  sfx=str.substring(pos+1,str.length);
  str=str.substring(0,pos);
  }
 strl=str.length;
 for (var i=strl-1;i>-1;i--){
  cr=str.substring(i,i+1);
  pos=ns.indexOf(cr);
  num+=pos*pwr[strl-i-1];
  }
  if (sfx!=""&&sfx.length>dp){
   pos=ns.indexOf(sfx.charAt(dp+1));
   if (pos>4){
    pos=ns.indexOf(sfx.charAt(dp));
    sfx=sfx.substring(0,dp-1)+(pos+1);
    }
   }
  if (sfx!=""){
   for (var i=0;i<dp;i++){
    cr=sfx.substring(i,i+1);
    pos=ns.indexOf(cr);
    num+=pos*dec[i];
    }
/*    sfx="";
    sfx+=num;
    pos=sfx.indexOf(".");
    sfx=sfx.substring(pos+1,sfx.length);
    if (sfx.charAt(dp+1)=="9"){
     num+=dec[sfx.length-2];
     } */
  }
 }

function testIt(form){
 str=document.isn.amt.value;
 fmtIt();
 bl=str.length+3;
 dp=2;
 stn();
 amt=num;
 str=document.isn.per.value;
 dp=4;
 stn();
 per=num;
 str=document.isn.months.value;
 dp=0;
 stn();
 months=num;
 if (months<1||months>999||per<.0001||per>99||amt<1||amt>pwr[9]){
  alrt();
  }
 else{
 computeForm();
 }
}

function computeForm(){
 ls="";
 isnnum=1;
 i=per/12/100;
 fpv=0;
 for (var j=0;j<months;j++)
  isnnum=isnnum*(1+i);
  tmp=(amt*isnnum*i)/(isnnum-1);
  fpv+=tmp;
  fcalc=((months*fpv)-amt);
  
 prtSched();
 }
 
function prtSched(){
 if (document.isn.repayment.value.length > 0)
 {
	fpv = document.isn.repayment.value;
 } else {
	fpv+=.01;
 }
 str=""
 str+=fpv;
 fmtIt();
 ffpv=str;
 dp=2;
 stn();
 fpv=num;
 tp=0;
 pct=per/12/100;
 if (bl<14){
  bl=14;
  }
 str="";
 str+=amt;
 fmtIt();
 amt1=str;
 ls="<h1><img src=\"../images/calc_hed_results.gif\" width=\"62\" height=\"11\" border=\"0\" alt=\"\" /></h1>"
 ls+="<div id=\"results_cont\"><p><b>Results for <span id='mnths' class='result'>.</span> to repay <span class='result'>"+s+outputComma(amt1)+"</span> at <span class='result'>"+document.isn.per.value+"%</span></b></p>";
 if (fpv<=(amt*pct)){
	 ls+="<p>The payments will not cover the interest. Please increase the repayment value to more than "+outputComma(ffpv)+"</p></div>"
  document.getElementById("output_cont").innerHTML=ls;
	 return false;
 }
 ls+="<p>Monthly repayment amount: <span class='result'>"+s+outputComma(ffpv)
	 +"</span></p><p>Total value of payments: <span id='tvop' class='result'></span></p>";
 ls+="<h2>Amortisation schedule</h2><table width='616px' cellpadding='4px' cellspacing='0px' border='0px'><tr class='result_titles'><th>Month</th><th>Monthly amount</th><th>Interest amount</th><th>Capital reduction</th><th>Balance due</th><th>Total paid</th></tr>";
 var j=0;
 var x=2;
 while (amt > 0){
  j++
  ntr=(amt*pct);
  str="";
  str+=ntr;
  fmtIt();
  ntr1=s+outputComma(str);
  prp=fpv-ntr;
  if (prp>amt){
   prp=amt;
   }
  str="";
  str+=prp;
  fmtIt();
  prp1=s+outputComma(str);
  amt-=prp;
  str="";
  str+=amt;
  fmtIt();
  amt1=s+outputComma(str);
  if (fpv>(ntr+prp)){
   fpv=ntr+prp;
   }
  str="";
  str+=fpv;
  fmtIt();
  fpv1=s+outputComma(str);
  tp+=fpv;
  str="";
  str+=tp;
  fmtIt();
  stp=s+outputComma(str);
  str="";
  str+=(j);
  if (x==1){
	  x=2;
  } else {
	  x=1;
  }
  ls+=
	"<tr class='result_0"+x+"'>"
	+c+str+ec
	+c+fpv1+ec
	+c+ntr1+ec
	+c+prp1+ec
	+c+amt1+ec
	+c+stp+ec
	+"</tr>";
  }
  document.getElementById("output_cont").innerHTML=ls+"</table></div>";
  document.getElementById("tvop").innerHTML=stp;
  document.getElementById("repayment").disabled = false;
  document.getElementById("repayment_label").style.color="Black";
  document.getElementById("currency").style.color="Black";
  document.getElementById("repayment").value=ffpv;
  document.getElementById("repayment").className="field_02";
  document.getElementById("mnths").innerHTML=j+" months";
  document.getElementById("months").value=j;
  document.getElementById("calcButt").src="../images/calc_re_butt.gif";
}
function fmtIt(){
 pos=str.indexOf(".");
 if (pos==0){
  str="0"+str;
  pos++;
  }
 if (pos<0){
  str+=".00";
  pos=str.indexOf(".");
  }
 str+="0000";
 str=str.substring(0,pos+4);
 cr=str.charAt(str.length-1);
 pos=ns.indexOf(cr);
 str=str.substring(0,str.length-1);
 if (pos>5){
  fmtIt1();
  }
 }
 function fmtIt1(){
  for (var k=str.length-1;k>-1;k--){
   cr=str.charAt(k);
   posn=ns.indexOf(cr);
   if (posn<0){
    k--;
   }
   else{
    str=str.substring(0,k)+ns.substring(posn+1,posn+2)
    +str.substring(k+1,str.length);
    if (posn!=9){
     k=-1;
    }
   }
  }
 }
function outputComma(number) {
    if (number.length > 3) {
		var pos=number.indexOf(".");
		var dec="";
		if (pos>0){
			dec=number.substr(pos, number.length);
			number=number.substr(0, pos);
		}
		number = '' + number
        var mod = number.length%3;
        var output = (mod > 0 ? (number.substring(0,mod)) : '');
        for (i=0 ; i < Math.floor(number.length/3) ; i++) {
            if ((mod ==0) && (i ==0))
                output+= number.substring(mod+3*i,mod+3*i+3);
            else
                output+= ',' + number.substring(mod+3*i,mod+3*i+3);
        }
        return (output+dec);
    }
    else return number;
}
function alrt(){
 alert("Please note: Months must be from"
 +" 1 to 999, Loan amount from 1 to "+pwr[9]
 +" and Interest from .001 to 99%");
}
function clearPayment(){
	if (!document.getElementById("repayment").disabled){
	  document.getElementById("repayment_label").style.color="";
	  document.getElementById("currency").style.color="";
	  document.getElementById("repayment").value="";
	  document.getElementById("output_cont").innerHTML="";
	  document.getElementById("repayment").className="field_02_off";
	  document.getElementById("repayment").disabled = true;
	  document.getElementById("calcButt").src="../images/calc_butt.gif";
	}
}