//*******************************************
//DO NOT REMOVE THIS COPYWRITE INFO!
//Loan Balance Calculator
//2002 Daniel C. Peterson ALL RIGHTS RESERVED
//Created: 01/29/2002
//Last Modified: 05/20/2002
//This script may not be copied, edited, distributed or reproduced
//without express written permission from
//Daniel C. Peterson of Web Winder Website Services
//For commercial use rates, contact:
//Dan Peterson:
//Web Winder Website Services
//P.O. Box 11
//Bemidji, MN  56619
//dan@webwinder.com
//http://www.webwinder.com
//Commercial User Licence #:5782-1237-22-1198
//Commercial Licence Date:2008-09-11
//*******************************************



function stripNum(num) {

   num=num.toString();


   var len = num.length;
   var rnum = "";
   var test = "";
   var j = 0;

   var b = num.substring(0,1);
   if(b == "-") {
      rnum = "-";
   }

   for(i = 0; i <= len; i++) {

      b = num.substring(i,i+1);

      if(b == "0" || b == "1" || b == "2" || b == "3" || b == "4" || b == "5" || b == "6" || b == "7" || b == "8" || b == "9" || b == ".") {
         rnum = rnum + "" + b;

      }

   }

   if(rnum == "" || rnum == "-") {
      rnum = 0;
   }

   rnum = Number(rnum);

   return rnum;

}



function formatNumber(num) {

var isNeg=0;

    if(num < 0) {
       num=num*-1;
       isNeg=1;
    }

    
	onum=Math.round(num*100)/100;
		
	integer=Math.floor(onum);

	if (Math.ceil(onum) == integer) {
		decimal="00";
	} else{
		decimal=Math.round((onum-integer)*100)
	}
	decimal=decimal.toString();
	if (decimal.length<2) decimal="0"+decimal;

	integer=integer.toString();
	var tmpnum="";
	var tmpinteger="";
	var y=0;

	for (x=integer.length;x>0;x--) {
		tmpnum=tmpnum+integer.charAt(x-1);
		y=y+1;
		if (y==3 & x>1) {
			tmpnum=tmpnum+",";
			y=0;
		}
	}

	for (x=tmpnum.length;x>0;x--) {
		tmpinteger=tmpinteger+tmpnum.charAt(x-1);
	}
		
	finNum=tmpinteger+"."+decimal;

    if(isNeg == 1) {
       finNum = "-" + finNum;
    }

	return finNum;
}


function openCalculator(form) {

if(form.principal.value == 0 || form.principal.value == "") {
alert("Please enter the original loan amount.");
form.principal.focus();
} else
if(form.interest.value == 0 || form.interest.value == "") {
alert("Please enter the loan's interest rate.");
form.interest.focus();
} else
if(form.payments.value == 0 || form.payments.value == "") {
alert("Please enter the original loan term (number of monthly payments).");
form.payments.focus();
} else
if(form.payment.value == 0 || form.payment.value == "") {
alert("Please enter the loan's monthly payment amount.");
form.payment.focus();
} else
if(form.yearStart.value == 0 || form.yearStart.value == "" || form.yearStart.value.length < 4) {
alert("Please enter the 4-digit year the loan was originated.");
form.yearStart.focus();
} else
if(form.monthsPast.value == 0 || form.monthsPast.value == "") {
alert("Please enter the number of months that have past since the loan was originated.");
form.monthsPast.focus();
} else {

var Vprincipal = stripNum(form.principal.value);
var Vinterest = stripNum(form.interest.value);
var Vpayment = stripNum(form.payment.value);
var VmonthsPast = stripNum(form.monthsPast.value);

var monthNumber = form.monthStart.options.selectedIndex;
var yearNumber = stripNum(form.yearStart.value);
var dateString = "";

var VformRows = "";
var count = 0;
var formPmtElementNum = 0;

var VnormalPrin = Vprincipal;
var VintPort = 0;
var VprinPort = 0;

if(Vinterest >= 1) {
   Vinterest /= 100;
}
Vinterest /= 12;

while(count < VmonthsPast) {

monthNumber = eval(monthNumber) + eval(1);
if(monthNumber == 13) {
   monthNumber = 1;
   yearNumber = eval(yearNumber) + eval(1);
}
dateString = (monthNumber + "/" + yearNumber);

VintPort = VnormalPrin * Vinterest;
VprinPort = eval(Vpayment) - eval(VintPort);
VnormalPrin = eval(VnormalPrin) - eval(VprinPort);

count = count + 1;


VformRows = "" + VformRows + "<tr><td align='right'><font face='arial'><small>" + count + "</small></font></td><td align='right'><font face='arial'><small>" + dateString + "</small></font></td><td><input type='text' name='periodNum" + count + "' value='" + Vpayment + "' size='10'></td><td><input type='button' value='Fill Down' onClick=\"fillDown(" + formPmtElementNum + ", " + VmonthsPast + ")\"></td><td><input type='text' name='fillNum" + count + "' size='6'></tr>"

formPmtElementNum = count * 3;

}

var part1 = ("<HEAD><TITLE>Loan Balance Schedule</TITLE><scr");

var scriptPart1 = ("ipt language='Javascript'> function format" + "Number(num) { var isNeg=0; if(num < 0) { num=num*-1; isNeg=1; } onum=Math.round(num*100)/100; integer=Math.floor(onum); if (Math.ceil(onum) == integer) { decimal='00'; } else{ decimal=Math.round((onum-integer)*100) } decimal=decimal.toString(); if (decimal.length<2) decimal='0'+decimal; integer=integer.toString(); var tmpnum=\"\"; var tmpinteger=\"\"; var y=0; for (x=integer.length;x>0;x--) { tmpnum=tmpnum+integer.charAt(x-1); y=y+1; if (y==3 & x>1) { tmpnum=tmpnum+\",\"; y=0; } } for (x=tmpnum.length;x>0;x--) { tmpinteger=tmpinteger+tmpnum.charAt(x-1); } finNum=tmpinteger+\".\"+decimal; if(isNeg == 1) { finNum = \"-\" + finNum; } return finNum; } ");

var scriptPart2 = ("function computeBalance(form) { var VnewIntPort = 0; var VnewPrinPort = 0; var VnewPrin = form.origPrin.value; var VnewInt = form.origInt.value; var VnewMonthsPast = form.newMonthsPast.value; var newCount = 0; var elementCount = 0; while(newCount < VnewMonthsPast) { VpmtFormField = form.elements[elementCount].value; newCount = newCount + 1; elementCount = elementCount + 3; VnewIntPort = VnewPrin * VnewInt; VnewPrinPort = VpmtFormField - VnewIntPort; VnewPrin = VnewPrin - VnewPrinPort; } form.currentBalance.value = format" + "Number(VnewPrin); } function fillDown(paymentNum, totPmts) { var VpaymentNum = eval(paymentNum); var fillElement = eval(VpaymentNum) + eval(2); var fillNumber = document.balanceForm.elements[fillElement].value; var fillPmtAmt = document.balanceForm.elements[VpaymentNum].value; var maxFillNum = eval(totPmts) - eval(paymentNum / 3); var fillCount = 0; while(fillCount <= fillNumber) { document.balanceForm.elements[VpaymentNum].value = fillPmtAmt; VpaymentNum = eval(VpaymentNum) + eval(3); fillCount = eval(fillCount) + eval(1); if(fillCount >= maxFillNum) { break; } else { continue; } } computeBalance(document.balanceForm); } </scr" + "ipt></HEAD>" + "<BODY BGCOLOR = '#FFFFFF'><BR><BR>");

var part2 = ("<CENTER><form name='balanceForm' method='post'><TABLE BORDER='1' WIDTH='90%' CELLSPACING='0' CELLPADDING='4'><tr><td align='center' colspan='5'><font face='arial'><big><strong>Loan Balance Calculator</strong></big></FONT></td></tr><tr><td colspan='5'><font face='arial'><small><b>Instructions:</b> Change any payment amounts that were different from the monthly payment amount set forth in the original loan agreement. For your conveniece, if a series of payments were made that were all the same, but different from the original agreement, enter the number of months in the \"Fill Down Number\" column and click the \"Fill Down\" button. This will copy the amount to the left of the button to the stipulated number of rows below the button.</small></font></td></tr><tr><td align='center'><font face='arial'><small><b>Pmt #</b></small></font></td><td align='center'><font face='arial'><small><b>Payment<br>Mo/Yr</b></small></font></td><td align='center'><font face='arial'><small><b>Payment<br>Amount</b></small></font></td><td><font face='arial'><small><b>Fill<br>Buttons</b></small></font></td><td><font face='arial'><small><b>Fill Down<br>Number</b></small></font></td></tr>");

var part3 = "" + VformRows + "";

var part4 = "<tr><td colspan='5' align='center'><input type='button' value='Compute Balance' onClick='computeBalance(this.form)'></td></tr><tr><td colspan='3'><font face='arial'><small><b>Current balance:</b></small></font></td><td colspan='2'><input type='text' name='currentBalance' value='" + formatNumber(VnormalPrin) + "' size='10'></td></tr>"

var part5 = ("</TABLE><input type='hidden' name='origPrin' value='" + Vprincipal + "'><input type='hidden' name='origInt' value='" + Vinterest + "'><input type='hidden' name='newMonthsPast' value='" + VmonthsPast + "'></form></center><BR><CENTER><FORM METHOD='POST'><INPUT TYPE=\'BUTTON\' VALUE=\'Close Window\' onClick=\'window.close()\'></FORM></CENTER></BODY></HTML>");

var schedule = (part1 + "" + scriptPart1 + "" + scriptPart2 + "" + part2 + "" + part3 + "" + part4 + "" + part5 + "");

  reportWin = window.open("","","width=500,height=400,toolbar=yes,menubar=yes,scrollbars=yes");
  reportWin.document.write(schedule);
  reportWin.document.close();
}
}
