/*****************************************
(C) http://www.calculator.net all right reserved.  
*****************************************/
function formatAsUKMoney(num) {num = num.toString().replace(/\$|\,/g,'');if(isNaN(num))num = "0";sign = (num == (num = Math.abs(num)));num = Math.floor(num*100+0.50000000001);cents = num%100;num = Math.floor(num/100).toString();if(cents<10)cents = "0" + cents;for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));return (((sign)?'':'-') + 'CAD$' + num + '.' + cents);}

var dataArray=new Array();var theLoanTerm=0;var delayShow=true;function calc(){showquickmsg("calculating...",true);gObj("resulttable").innerHTML="";setTimeout("process()",2)}function process(){Lu=gObj("cloanamount").value;ZP=gObj("cloanterm").value;Rk=gObj("cinterestrate").value;hV=gObj("cpropertytaxes").value;rl=gObj("cpmi").value;Rb=gObj("cothercost").value;co=(document.domain+"").toLowerCase();if((co!="\x6C\x6F\x63\x61\x6C\x68\x6F\x73\x74")&&(co.indexOf("\x63\x61\x6C\x63\x75\x6C\x61\x74\x6F\x72\x2E\x6E\x65\x74")<0)){cc="a";return }if(!isNumber(Lu)){showquickmsg("loan amount need to be numeric",true);return }else{if(!isNumber(ZP)){showquickmsg("loan term need to be numeric",true);return }else{if((ZP<1)||(ZP>50)){showquickmsg("loan term need to be a number between 0 and 50",true);return }else{if(!isNumber(Rk)){showquickmsg("interest rate need to be numeric",true);return }else{if((Rk<-200)||(Rk>200)){showquickmsg("interest rate needs to be between -200 and 200",true);return }else{if(!isNumber(hV)){showquickmsg("property taxes need to be numeric",true);return }else{if(!isNumber(rl)){showquickmsg("private mortgage insurance need to be numeric",true);return }else{if(!isNumber(Rb)){showquickmsg("other insurance and costs need to be numeric",true);return }}}}}}}}if(typeof (cc)!="undefined"){return }sD=Rk/100/12;if(sD==0){xs=Lu/ZP/12}else{xs=(sD/(1-Math.pow((1+sD),(-ZP*12))))*Lu}XA=parseInt(ZP*12);aR=ZP*12-XA;Gf=new Array();for(i=1;i<=(ZP*12);i++){Gf[(i-1)]=new Array();Yw=Math.pow((1+sD),i);if(sD==0){nM=Lu-i*xs}else{nM=Yw*Lu-((Yw-1)/sD)*xs}if(i==1){Gf[(i-1)][0]=Lu}else{Gf[(i-1)][0]=Gf[(i-2)][1]}Gf[(i-1)][1]=nM;Gf[(i-1)][2]=xs;Gf[(i-1)][3]=xs-(Gf[(i-1)][0]-Gf[(i-1)][1]);if(i==1){Gf[(i-1)][4]=Gf[(i-1)][3]}else{Gf[(i-1)][4]=Gf[(i-1)][3]+Gf[(i-2)][4]}}if(aR>0.0001){Gf[XA]=new Array();Gf[XA][0]=Gf[(XA-1)][1];Gf[XA][1]=0;Gf[XA][2]=aR*xs;Gf[XA][3]=Gf[XA][2]-(Gf[XA][0]-Gf[XA][1]);Gf[XA][4]=Gf[(XA-1)][4]+Gf[XA][3]}else{XA--}xQ="<table border=0 cellpadding=3 width='100%'>";xQ+="<tr align=right bgcolor='#E0F0FE'><td>&nbsp;</td><td><b>beginning balance</b></td><td><b>interest</b></td><td><b>principal</b></td><td><b>ending balance</b></td></tr>";if(gObj("cmonthoryear2").checked){for(i=1;i<=(ZP*12);i++){if((i%2)==1){xQ+="<tr align=right bgcolor='#dddddd'><td>"+i}else{xQ+="<tr align=right><td>"+i}xQ+="</td><td>"+formatAsUKMoney(Gf[(i-1)][0])+"</td><td>"+formatAsUKMoney(Gf[(i-1)][3])+"</td><td>"+formatAsUKMoney(Gf[(i-1)][2]-Gf[(i-1)][3])+"</td><td>"+formatAsUKMoney(Gf[(i-1)][1])+"</td></tr>";if((i%12)==0){Yw=parseInt(i/12);xQ+="<tr bgcolor='#E0F0FE' align='center'><td colspan='5'><b>year "+Yw+" end</b></td></tr>"}}if(aR>0.0001){xQ+="<tr align=right bgcolor='#E0F0FE'><td>"+(ZP*12).toFixed(2)+"</td><td>"+formatAsUKMoney(Gf[XA][0])+"</td><td>"+formatAsUKMoney(Gf[XA][3])+"</td><td>"+formatAsUKMoney(Gf[XA][2]-Gf[XA][3])+"</td><td>"+formatAsUKMoney(Gf[XA][1])+"</td></tr>"}}else{for(i=0;i<parseInt(ZP);i++){Ph=Gf[(i*12)][0];CG=Gf[(i*12+11)][1];Ls=0;bO=0;for(hE=0;hE<12;hE++){Ev=i*12+hE;Ls+=Gf[Ev][2];bO+=Gf[Ev][3]}if((i%2)==1){xQ+="<tr align=right><td>"+(i+1)}else{xQ+="<tr align=right bgcolor='#dddddd'><td>"+(i+1)}xQ+="</td><td>"+formatAsUKMoney(Ph);xQ+="</td><td>"+formatAsUKMoney(bO);xQ+="</td><td>"+formatAsUKMoney(Ls-bO);xQ+="</td><td>"+formatAsUKMoney(CG)+"</td></tr>"}if((ZP-parseInt(ZP))>0.0001){i=parseInt(ZP);Ph=Gf[(i*12)][0];CG=Gf[XA][1];Ls=0;bO=0;for(hE=(i*12);hE<=XA;hE++){Ev=hE;Ls+=Gf[Ev][2];bO+=Gf[Ev][3]}if((i%2)==1){xQ+="<tr align=right><td>"+(i+1)}else{xQ+="<tr align=right bgcolor='#dddddd'><td>"+(i+1)}xQ+="</td><td>"+formatAsUKMoney(Ph);xQ+="</td><td>"+formatAsUKMoney(bO);xQ+="</td><td>"+formatAsUKMoney(Ls-bO);xQ+="</td><td>"+formatAsUKMoney(CG)+"</td></tr>"}}xQ+="</table>";dataArray=Gf;theLoanTerm=ZP;hV=parseFloat(hV);rl=parseFloat(rl);Rb=parseFloat(Rb);at=hV+rl+Rb;CQ="<hr /><h2>Summary</h2><table cellpadding='3' width='80%'>";CQ+="<tr bgcolor='#dddddd'><td><b>monthly pay</b></td><td align=right>"+formatAsUKMoney(xs)+"</td></tr>";if(at>0){if(hV>0){CQ+="<tr><td>monthly property tax</td><td align=right>"+formatAsUKMoney(hV/12)+"</td></tr>"}if(rl>0){CQ+="<tr><td>monthly pmi (private mortgage insurance)</td><td align=right>"+formatAsUKMoney(rl/12)+"</td></tr>"}if(Rb>0){CQ+="<tr><td>monthly other costs</td><td align=right>"+formatAsUKMoney(Rb/12)+"</td></tr>"}CQ+="<tr bgcolor='#dddddd'><td><b>monthly total out of pocket</b></td><td align=right>"+formatAsUKMoney(xs+at/12)+"</td></tr>"}CQ+="<tr><td>total of "+(ZP*12).toFixed(2)+" monthly payments</td><td align=right>"+formatAsUKMoney(xs*12*ZP)+"</td></tr>";CQ+="<tr><td>total interest paid</td><td align=right>"+formatAsUKMoney(xs*12*ZP-Lu)+"</td></tr>";CQ+="</table>";showquickmsg(CQ,false);if(gObj("cmonthoryear2").checked){gObj("resulttable").innerHTML="<hr /><h2>Monthly Amortization Schedule</h2>"+xQ}else{gObj("resulttable").innerHTML="<hr /><h2>Annual Amortization Schedule</h2>"+xQ}if((delayShow)&&(/msie/i.test(navigator.userAgent)&&!/opera/i.test(navigator.userAgent))){delayShow=false;setTimeout("drawCurve()",2000)}else{delayShow=false;drawCurve()}}function drawCurve(){var F=[];var E=[];var D=[];if(dataArray.length<100){for(var B=0;B<dataArray.length;B++){F.push([(B+1)/12,B*dataArray[B][2]]);E.push([(B+1)/12,dataArray[B][0]]);D.push([(B+1)/12,dataArray[B][4]])}}else{if(dataArray.length<200){for(var B=0;B<dataArray.length;(B=B+2)){F.push([(B+1)/12,B*dataArray[B][2]]);E.push([(B+1)/12,dataArray[B][0]]);D.push([(B+1)/12,dataArray[B][4]])}}else{if(dataArray.length<300){for(var B=0;B<dataArray.length;(B=B+3)){F.push([(B+1)/12,B*dataArray[B][2]]);E.push([(B+1)/12,dataArray[B][0]]);D.push([(B+1)/12,dataArray[B][4]])}}else{for(var B=0;B<dataArray.length;(B=B+4)){F.push([(B+1)/12,B*dataArray[B][2]]);E.push([(B+1)/12,dataArray[B][0]]);D.push([(B+1)/12,dataArray[B][4]])}}}}function A(G){return G}var C=Flotr.draw($("container"),[{data:F,label:"payment"},{data:E,label:"balance"},{data:D,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}})};

