monthNames = new Array(12);
monthNames[0] = "January";
monthNames[1] = "February";
monthNames[2] = "March";
monthNames[3] = "April";
monthNames[4] = "May";
monthNames[5] = "June";
monthNames[6] = "July";
monthNames[7] = "August";
monthNames[8] = "September";
monthNames[9] = "October";
monthNames[10] = "November";
monthNames[11] = "December";

function calcpmt(form){
 if (form.principal.value.length==0){
 alert("Please enter the Deposit Amount.");
 return;
 }

 if (form.rate.value.length==0){
 alert("Please enter the interest rate.");
 return;
 }

 if ((form.rate.value > 30) || (form.rate.value < 3))
 {
 alert("Please enter a loan rate between 3% and 30%.");
 return;
 }

 if (form.term.value.length==0){
 alert("Please enter the term in years.");
 return;
 }

 if ((form.term.value > 30) || (form.term.value < 1))
 {
 alert("Please enter a term between 1 and 30 years.");
 return;
 }

 for (var j=0; j < form.principal.value.length; j++) {
 var ch=form.principal.value.substring(j,j+1);
 if ((ch < "0" || "9" < ch) && ch != ".") {
 alert("c="+ch);
 alert("The principal amount contains an invalid character ="+ch);
 return;
 }
 }
 for (var j=0; j < form.rate.value.length; j++) {
 var ch=form.rate.value.substring(j, j + 1);
 if ((ch < "0" || "9" < ch) && ch !=".") { 
 alert("The interest rate contains an invalid character");
 return;
 }
 } 
 for (var j=0; j < form.term.value.length; j++) {
 var ch=form.term.value.substring(j,j + 1); 
 if (ch < "0" || "9" < ch) {
 alert("The loan term contains an invalid character");
 return;
 }
 }
 
 var i=(form.rate.value/12)/100;
 var prin=form.principal.value;
 var temp=Math.exp(Math.log(1+i)*(12*form.term.value));
 var pmt=prin / ((1-(1/temp))/i);
 form.payment.value=pmt;
 roundoff(form);
 if (form.full.checked) {
showschedule(form);
 }
}

function clearform(form) {
 form.payment.value="";
 form.principal.value="";
 form.term.value="";
 form.rate.value="";
}

function roundoff(form) {
 var r="";
 for (var j=0;j < form.payment.value.length;j++){
 if (form.payment.value.substring(j,j+1)=="."){
 r = r+form.payment.value.substring(j,j+3);
 break;
 } 
 r = r + form.payment.value.substring(j,j+1); 
 }
 form.payment.value=r;
}

function roundit(amt){
 var r = "";
var s = ""+amt;

 for (var j=0;j < s.length;j++){
 if (s.substring(j,j+1)=="."){
 r = r+s.substring(j,j+3);
 break;
 } 
 r = r + s.substring(j,j+1); 
 }
 return r;
}

function showschedule(form){
var balance=form.principal.value;
var pmt=form.payment.value;
var totint=0;
var totprin=0;
var interest = 0;
var prin = 0;
var year = form.year.value % 100; // get only the last 2 digits from the year 1995 => 95
var month = form.month.options[form.month.selectedIndex].value;
var curDate = new Date(year, month, 1);

w=window.open("","schedule2","resizable,scrollbars=yes,toolbar=yes,width=550,height=350");

w.document.open("text/html");
w.document.writeln("<html>");
w.document.writeln("<head>");
w.document.writeln("<title>Amortization Schedule</title>");
w.document.writeln("<link rel=\"stylesheet\" href=\"/includes/sfsbcss.css\" type=\"text/css\">");
w.document.writeln("</head>");
w.document.writeln("<body bgcolor=#ffffff>");
w.document.writeln("<h3>Amortization Schedule</h3>");
 
w.document.writeln("<p>Close window before the next calculation<br>");
w.document.writeln("<hr>");
w.document.writeln("<small><strong><br>Principal Amount: </strong>$");
w.document.writeln(form.principal.value);
w.document.writeln("<br><strong>Interest Rate:</strong> "+form.rate.value+"%");
w.document.writeln("<br><strong>Term in Years:</strong> "+form.term.value+" years");
w.document.writeln("<br><strong>Payment Amt:</strong> "+form.payment.value);
w.document.writeln("<br><strong>First Payment Date:</strong> "+curDate);

month = parseInt(month); <!-- turn 'month' into an integer -->
for (var i=1;i<=form.term.value;i++){
 w.document.writeln("<table width=500 align=center border=0>");
 w.document.writeln("<tr><td>&nbsp;</td></tr>");
 w.document.writeln("<tr><td nowrap width=80 align=center><strong><small>Year #</strong></small></td>");
 w.document.writeln("<td nowrap width=130 align=center><strong><small>Month</strong></small></td>");
 w.document.writeln("<td nowrap width=60 align=right><strong><small>Payment</small></strong></td>");
 w.document.writeln("<td nowrap width=60 align=right><strong><small>Principal</strong></small></td>");
 w.document.writeln("<td nowrap width=60 align=right><strong><small>Interest</strong></small></td>");
 w.document.writeln("<td nowrap width=100 align=right><strong><small>Unpaid Balance</strong></small></td></tr>");
 w.document.write("<tr><td nowrap align=center width=80><small><strong>"+i+ "</strong></small></td></tr>");
 for (j=1;j<=12;j++){
 w.document.write("<tr><td>   </td><td nowrap align=right width=130><small><strong>"+monthNames[month] + " " + (year + 2000) + "</strong></small></td>");
 interest = (balance*(form.rate.value/100)/12);
 totint += interest; 
 prin = form.payment.value - interest;
 totprin += prin;
 balance -= prin;
 if (month==11) 
 {
 year += 1;
 }
 month = (month + 1) % 12;
 
w.document.write("<td align=right width=60 nowrap><small>"+roundit(form.payment.value)+"</small></td>");
w.document.write("<td align=right width=60 nowrap><small>"+roundit(prin)+"</small></td>");
w.document.write("<td align=right width=60 nowrap><small>"+roundit(interest)+"</small></td>");
w.document.write("<td align=right width=100 nowrap><small>"+roundit(balance)+"</small></td></tr>");

 }
 totint = 0;
 totprin = 0;
 w.document.writeln("</table>");
}
w.document.writeln("</body>");
w.document.writeln("</html>");
w.document.close();

}
