/*****************************************
(C) http://www.calculator.net all right reserved.  
*****************************************/
var dataArray=new Array();var theLoanTerm=0;var delayShow=true;function gDate(C,B,D,A){C=Math.floor(C);B=Math.floor(B);if(A==1){C+=(D-1);B+=Math.floor(C/12);C=C%12;if(C==0){C=12;B-=1}return C+"/"+B}else{eQ=Math.ceil(C+11+(D-1)*12);Rv=B;Rv+=Math.floor(eQ/12);eQ=eQ%12;if(eQ==0){eQ=12;Rv-=1}Rv=(Rv+"").substring(2);if((D-parseInt(D))>0.0001){D=Math.ceil(D)}C+=(D-1)*12;B+=Math.floor(C/12);C=C%12;if(C==0){C=12;B-=1}B=(B+"").substring(2);return C+"/"+B+" - "+eQ+"/"+Rv}}function calc(){showquickmsg("calculating...",true);gObj("resulttable").innerHTML="";setTimeout("process()",2)}function process(){xk=gObj("cloanamount").value;ok=gObj("cloanterm").value;gG=gObj("cinterestrate").value;PD=gObj("cpropertytaxes").value;hM=gObj("cpmi").value;Eo=gObj("cothercost").value;Sr=gObj("cstartmonth").value;ie=gObj("cstartyear").value;dd=(document.domain+"").toLowerCase();if((dd!="\x6C\x6F\x63\x61\x6C\x68\x6F\x73\x74")&&(dd.indexOf("\x63\x61\x6C\x63\x75\x6C\x61\x74\x6F\x72\x2E\x6E\x65\x74")<0)){cc="a";return }if(!isNumber(xk)){showquickmsg("loan amount need to be numeric",true);return }else{if(!isNumber(ok)){showquickmsg("loan term need to be numeric",true);return }else{if(!isNumber(Sr)){showquickmsg("please select start month",true);return }else{if(!isNumber(ie)){showquickmsg("start year need to be numeric",true);return }else{if((ok<1)||(ok>500)){showquickmsg("loan term need to be a number between 0 and 500",true);return }else{if(!isNumber(gG)){showquickmsg("interest rate need to be numeric",true);return }else{if((gG<-200)||(gG>200)){showquickmsg("interest rate needs to be between -200 and 200",true);return }else{if(!isNumber(PD)){showquickmsg("property taxes need to be numeric",true);return }else{if(!isNumber(hM)){showquickmsg("private mortgage insurance need to be numeric",true);return }else{if(!isNumber(Eo)){showquickmsg("other insurance and costs need to be numeric",true);return }}}}}}}}}}if(typeof (cc)!="undefined"){return }qN=gG/100/12;if(qN==0){WY=xk/ok/12}else{WY=(qN/(1-Math.pow((1+qN),(-ok*12))))*xk}Vw=parseInt(ok*12);og=ok*12-Vw;SK=new Array();for(i=1;i<=(ok*12);i++){SK[(i-1)]=new Array();rl=Math.pow((1+qN),i);if(qN==0){DQ=xk-i*WY}else{DQ=rl*xk-((rl-1)/qN)*WY}if(i==1){SK[(i-1)][0]=xk}else{SK[(i-1)][0]=SK[(i-2)][1]}SK[(i-1)][1]=DQ;SK[(i-1)][2]=WY;SK[(i-1)][3]=WY-(SK[(i-1)][0]-SK[(i-1)][1]);if(i==1){SK[(i-1)][4]=SK[(i-1)][3]}else{SK[(i-1)][4]=SK[(i-1)][3]+SK[(i-2)][4]}}if(og>0.0001){SK[Vw]=new Array();SK[Vw][0]=SK[(Vw-1)][1];SK[Vw][1]=0;SK[Vw][2]=og*WY;SK[Vw][3]=SK[Vw][2]-(SK[Vw][0]-SK[Vw][1]);SK[Vw][4]=SK[(Vw-1)][4]+SK[Vw][3]}else{Vw--}var A=[];A.push("<table border=0 cellpadding=3 width='100%'>");A.push("<tr align=right bgcolor='#E0F0FE'><td>&nbsp;</td><td><b>date</b></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<=(ok*12);i++){if((i%2)==1){A.push("<tr align=right bgcolor='#dddddd'><td>"+i)}else{A.push("<tr align=right><td>"+i)}A.push("</td><td>"+gDate(Sr,ie,i,1)+"</td><td>"+formatAsMoney(SK[(i-1)][0])+"</td><td>"+formatAsMoney(SK[(i-1)][3])+"</td><td>"+formatAsMoney(SK[(i-1)][2]-SK[(i-1)][3])+"</td><td>"+formatAsMoney(SK[(i-1)][1])+"</td></tr>");if((i%12)==0){rl=parseInt(i/12);A.push("<tr bgcolor='#E0F0FE' align='center'><td colspan='6'><b>year "+rl+" end</b></td></tr>")}}if(og>0.0001){A.push("<tr align=right bgcolor='#E0F0FE'><td>"+(ok*12).toFixed(2)+"</td><td>"+gDate(Sr,ie,i,1)+"</td><td>"+formatAsMoney(SK[Vw][0])+"</td><td>"+formatAsMoney(SK[Vw][3])+"</td><td>"+formatAsMoney(SK[Vw][2]-SK[Vw][3])+"</td><td>"+formatAsMoney(SK[Vw][1])+"</td></tr>")}}else{for(i=0;i<parseInt(ok);i++){tData0=SK[(i*12)][0];tData1=SK[(i*12+11)][1];tData2=0;tData3=0;for(j=0;j<12;j++){idN=i*12+j;tData2+=SK[idN][2];tData3+=SK[idN][3]}if((i%2)==1){A.push("<tr align=right><td>"+(i+1))}else{A.push("<tr align=right bgcolor='#dddddd'><td>"+(i+1))}A.push("</td><td>"+gDate(Sr,ie,(i+1),0)+"</td><td>"+formatAsMoney(tData0));A.push("</td><td>"+formatAsMoney(tData3));A.push("</td><td>"+formatAsMoney(tData2-tData3));A.push("</td><td>"+formatAsMoney(tData1)+"</td></tr>")}if((ok-parseInt(ok))>0.0001){i=parseInt(ok);tData0=SK[(i*12)][0];tData1=SK[Vw][1];tData2=0;tData3=0;for(j=(i*12);j<=Vw;j++){idN=j;tData2+=SK[idN][2];tData3+=SK[idN][3]}if((i%2)==1){A.push("<tr align=right><td>"+(i+1))}else{A.push("<tr align=right bgcolor='#dddddd'><td>"+(i+1))}A.push("</td><td>"+gDate(Sr,ie,ok,0)+"</td><td>"+formatAsMoney(tData0));A.push("</td><td>"+formatAsMoney(tData3));A.push("</td><td>"+formatAsMoney(tData2-tData3));A.push("</td><td>"+formatAsMoney(tData1)+"</td></tr>")}}A.push("</table>");outputString=A.join("");dataArray=SK;theLoanTerm=ok;PD=parseFloat(PD);hM=parseFloat(hM);Eo=parseFloat(Eo);KY=PD+hM+Eo;lW="<hr /><h2>Summary</h2><table cellpadding='3' width='80%'>";lW+="<tr bgcolor='#dddddd'><td><b>monthly pay</b></td><td align=right>"+formatAsMoney(WY)+"</td></tr>";if(KY>0){if(PD>0){lW+="<tr><td>monthly property tax</td><td align=right>"+formatAsMoney(PD/12)+"</td></tr>"}if(hM>0){lW+="<tr><td>monthly pmi (private mortgage insurance)</td><td align=right>"+formatAsMoney(hM/12)+"</td></tr>"}if(Eo>0){lW+="<tr><td>monthly other costs</td><td align=right>"+formatAsMoney(Eo/12)+"</td></tr>"}lW+="<tr bgcolor='#dddddd'><td><b>monthly total out of pocket</b></td><td align=right>"+formatAsMoney(WY+KY/12)+"</td></tr>"}lW+="<tr><td>total of "+(ok*12).toFixed(2)+" monthly payments</td><td align=right>"+formatAsMoney(WY*12*ok)+"</td></tr>";lW+="<tr><td>total interest paid</td><td align=right>"+formatAsMoney(WY*12*ok-xk)+"</td></tr>";lW+="</table>";showquickmsg(lW,false);if(gObj("cmonthoryear2").checked){gObj("resulttable").innerHTML="<hr /><h2>Monthly Amortization Schedule</h2>"+outputString}else{gObj("resulttable").innerHTML="<hr /><h2>Annual Amortization Schedule</h2>"+outputString}if((delayShow)&&(/msie/i.test(navigator.userAgent)&&!/opera/i.test(navigator.userAgent))){delayShow=false;setTimeout("drawCurve()",1500)}else{delayShow=false;drawCurve()}}function drawCurve(){var F=[];var D=[];var C=[];if(dataArray.length<100){for(var B=0;B<dataArray.length;B++){F.push([(B+1)/12,B*dataArray[B][2]]);D.push([(B+1)/12,dataArray[B][0]]);C.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]]);D.push([(B+1)/12,dataArray[B][0]]);C.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]]);D.push([(B+1)/12,dataArray[B][0]]);C.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]]);D.push([(B+1)/12,dataArray[B][0]]);C.push([(B+1)/12,dataArray[B][4]])}}}}function A(G){return G}var E=Flotr.draw($("container"),[{data:F,label:"payment"},{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}})};
