/*****************************************
(C) http://www.calculator.net all right reserved.  
*****************************************/
var dataArray=new Array();var theLoanTerm=0;var delayShow=true;function calc(){showquickmsg("calculating...",true);gObj("resulttable").innerHTML="";setTimeout("process()",2)}function process(){XQ=trimAll(gObj("cstartingprinciple").value+"");wS=trimAll(gObj("cannualaddition").value+"");Pf=trimAll(gObj("cmonthlyaddition").value+"");qd=trimAll(gObj("cinterestrate").value+"");uM=trimAll(gObj("cyears").value+"");HL=trimAll(gObj("ctaxtrate").value+"");iE=trimAll(gObj("cinflationrate").value+"");GV=gObj("ccompound").value;ph=true;mQ=(document.domain+"").toLowerCase();if((mQ!="\x6C\x6F\x63\x61\x6C\x68\x6F\x73\x74")&&(mQ.indexOf("\x63\x61\x6C\x63\x75\x6C\x61\x74\x6F\x72\x2E\x6E\x65\x74")<0)){cc="a";return }if(gObj("cadditionat2").checked){ph=false}if(!isNumber(XQ)){showquickmsg("starting principle need to be numeric",true);return }else{if(!isNumber(wS)){showquickmsg("annual addition need to be numeric",true);return }else{if(!isNumber(Pf)){showquickmsg("monthly addition need to be numeric",true);return }else{if(!isNumber(qd)){showquickmsg("interest rate need to be numeric",true);return }else{if((qd<-200)||(qd>200)){showquickmsg("interest rate needs to be between -200 and 200",true);return }else{if(!isNumber(uM)){showquickmsg("holding years need to be numeric",true);return }else{if(!isNumber(HL)){showquickmsg("tax rate need to be numeric",true);return }else{if(!isNumber(iE)){showquickmsg("inflation rate need to be numeric",true);return }}}}}}}}if(typeof (cc)!="undefined"){return }XQ=parseFloat(XQ);wS=parseFloat(wS);Pf=parseFloat(Pf);qd=parseFloat(qd);uM=parseFloat(uM);HL=parseFloat(HL);iE=parseFloat(iE);FJ=0;ND=parseInt(uM*12);theLoanTerm=uM;if(GV=="annually"){FJ=Math.log(qd/100+1)}else{if(GV=="semiannually"){FJ=Math.log(Math.pow((qd/200+1),2))}else{if(GV=="quarterly"){FJ=Math.log(Math.pow((qd/400+1),4))}else{if(GV=="monthly"){FJ=Math.log(Math.pow((qd/1200+1),12))}else{FJ=qd/100}}}}qD=((Math.pow(Math.E,FJ)-1)*100).toFixed(3);WT=new Array();FA=0;Fl=0;for(i=1;i<=(uM*12);i++){WT[(i-1)]=new Array();if(i==1){WT[(i-1)][0]=XQ;WT[(i-1)][1]=WT[(i-1)][0];if(ph){WT[(i-1)][0]+=Pf;WT[(i-1)][1]+=Pf;if(((i-1)%12)==0){WT[(i-1)][0]+=wS;WT[(i-1)][1]+=wS}}}else{WT[(i-1)][0]=WT[(i-2)][4];WT[(i-1)][1]=WT[(i-2)][2];if(ph){WT[(i-1)][0]+=Pf;WT[(i-1)][1]+=Pf;if(((i-1)%12)==0){WT[(i-1)][0]+=wS;WT[(i-1)][1]+=wS}}}WT[(i-1)][2]=WT[(i-1)][1]*Math.pow(Math.E,(FJ/12));WT[(i-1)][3]=WT[(i-1)][2]-WT[(i-1)][1];WT[(i-1)][6]=WT[(i-1)][3]*HL/100;WT[(i-1)][2]=WT[(i-1)][2]-WT[(i-1)][6];if(!(ph)){WT[(i-1)][4]=WT[(i-1)][0]+Pf;WT[(i-1)][2]=WT[(i-1)][2]+Pf;if((i%12)==0){WT[(i-1)][4]=WT[(i-1)][0]+wS;WT[(i-1)][2]=WT[(i-1)][2]+wS}}else{WT[(i-1)][4]=WT[(i-1)][0]}FA+=WT[(i-1)][3];Fl+=WT[(i-1)][6];WT[(i-1)][5]=FA;WT[(i-1)][7]=Fl}Ye=parseInt(uM*12);Wa=uM*12-Ye;if(Wa>0.0001){ND++;WT[Ye]=new Array();WT[Ye][0]=WT[(Ye-1)][4];WT[Ye][1]=WT[(Ye-1)][2];if(ph){WT[Ye][0]+=Pf;WT[Ye][1]+=Pf;if((Ye%12)==0){WT[Ye][0]+=wS;WT[Ye][1]+=wS}}WT[Ye][2]=WT[Ye][1]*Math.pow(Math.E,(FJ*Wa/12));WT[Ye][3]=WT[Ye][2]-WT[Ye][1];WT[Ye][6]=WT[Ye][3]*HL/100;WT[Ye][2]=WT[Ye][2]-WT[Ye][6];WT[Ye][4]=WT[Ye][0];FA+=WT[Ye][3];Fl+=WT[Ye][6];WT[Ye][5]=FA;WT[Ye][7]=Fl}ZU="<table border=0 cellpadding=3 width='100%'>";ZU+="<tr align=right bgcolor='#E0F0FE'><td>&nbsp;</td><td><b>start principle</b></td><td><b>start balance</b></td><td><b>interest</b></td><td><b>tax</b></td><td><b>end balance</b></td><td><b>end principle</b></td></tr>";for(i=1;i<=(uM*12);i++){if((i%2)==1){ZU+="<tr align=right bgcolor='#dddddd'><td>"+i}else{ZU+="<tr align=right><td>"+i}ZU+="</td><td>"+formatAsMoney(WT[(i-1)][0])+"</td><td>"+formatAsMoney(WT[(i-1)][1])+"</td><td>"+formatAsMoney(WT[(i-1)][3])+"</td><td>"+formatAsMoney(WT[(i-1)][6])+"</td><td>"+formatAsMoney(WT[(i-1)][2])+"</td><td>"+formatAsMoney(WT[(i-1)][4])+"</td></tr>";if((i%12)==0){bI=parseInt(i/12);ZU+="<tr bgcolor='#E0F0FE' align='center'><td colspan='7'><b>year "+bI+" end</b></td></tr>"}}if(Wa>0.0001){AX=(Ye+Wa).toFixed(3);ZU+="<tr align=right><td>"+AX+"</td><td>"+formatAsMoney(WT[Ye][0])+"</td><td>"+formatAsMoney(WT[Ye][1])+"</td><td>"+formatAsMoney(WT[Ye][3])+"</td><td>"+formatAsMoney(WT[Ye][6])+"</td><td>"+formatAsMoney(WT[Ye][2])+"</td><td>"+formatAsMoney(WT[Ye][4])+"</td></tr>"}ZU+="</table>";sl="<h2>Summary</h2><table cellpadding='3' width='90%'>";sl+="<tr bgcolor='#dddddd'><td><b>end balance</b></td><td align=right><b>"+formatAsMoney(WT[(ND-1)][2])+"</b></td></tr>";if(iE!=0){ao=WT[(ND-1)][2]/Math.pow((1+iE/100),uM);sl+="<tr bgcolor='#dddddd'><td>after inflation adjustment</td><td align=right>"+formatAsMoney(ao)+"</td></tr>"}sl+="<tr bgcolor='#dddddd'><td>total principle</td><td align=right>"+formatAsMoney(WT[(ND-1)][4])+"</td></tr>";sl+="<tr bgcolor='#dddddd'><td>total interest</td><td align=right>"+formatAsMoney(WT[(ND-1)][5])+"</td></tr>";if(HL>0.0001){sl+="<tr bgcolor='#dddddd'><td>total tax</td><td align=right>"+formatAsMoney(WT[(ND-1)][7])+"</td></tr>"}if(GV!="annually"){sl+="<tr><td colspan='2'>* interest rate of "+qd+"% compound "+GV+" is equivalent to annual rate of "+qD+"%</td></tr>"}sl+="</table>";dataArray=WT;showquickmsg(sl,false);gObj("resulttable").innerHTML="<hr /><h2>Monthly Schedule</h2>"+ZU;if((delayShow)&&(/msie/i.test(navigator.userAgent)&&!/opera/i.test(navigator.userAgent))){delayShow=false;setTimeout("drawCurve()",2000)}else{delayShow=false;drawCurve()}}function drawCurve(){var E=[];var D=[];var C=[];if(dataArray.length<100){for(var B=0;B<dataArray.length;B++){E.push([(B+1)/12,dataArray[B][4]]);D.push([(B+1)/12,dataArray[B][2]]);C.push([(B+1)/12,dataArray[B][5]])}}else{if(dataArray.length<200){for(var B=0;B<dataArray.length;(B=B+2)){E.push([(B+1)/12,dataArray[B][4]]);D.push([(B+1)/12,dataArray[B][2]]);C.push([(B+1)/12,dataArray[B][5]])}}else{if(dataArray.length<300){for(var B=0;B<dataArray.length;(B=B+3)){E.push([(B+1)/12,dataArray[B][4]]);D.push([(B+1)/12,dataArray[B][2]]);C.push([(B+1)/12,dataArray[B][5]])}}else{for(var B=0;B<dataArray.length;(B=B+4)){E.push([(B+1)/12,dataArray[B][4]]);D.push([(B+1)/12,dataArray[B][2]]);C.push([(B+1)/12,dataArray[B][5]])}}}}function A(G){return G}var F=Flotr.draw($("container"),[{data:E,label:"principle"},{data:D,label:"balance"},{data:C,label:"interest"}],{legend:{position:"ne",labelFormatter:A,backgroundColor:"#D2E8FF"},xaxis:{ticks:[[1/12,""],formatNum(theLoanTerm*0.2),formatNum(theLoanTerm*0.4),formatNum(theLoanTerm*0.6),formatNum(theLoanTerm*0.8),theLoanTerm],max:theLoanTerm}})};