//*******************************************
//DO NOT REMOVE THIS COPYWRITE INFO!
//Debt Consolidation Calculator V1
//2001 Daniel C. Peterson ALL RIGHTS RESERVED
//Created: 01/17/2001
//Last Modified: 05/17/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 #:3313-751-15-731
//Commercial Licence Date:2006-01-12
//*******************************************



function stripNum(num) {

var iPercent
var iDollar
var iSpace
var iComma
var numLength = num.length

//lalalla Line #114

if(numLength > 0) {

   num=num.toString();

   iPercent = num.indexOf("%");
   if(iPercent >= 0) {
      num=num.substring(0,iPercent) + "" + num.substring(iPercent + 1,numLength);
      numLength=num.length;
      }
   iDollar = num.indexOf("$");
   if(iDollar >= 0) {
      num=num.substring(0,iDollar) + "" + num.substring(iDollar + 1,numLength);
      numLength=num.length;
      }
   iSpace = num.indexOf(" ");
   if(iSpace >= 0) {
      num=num.substring(0,iSpace) + "" + num.substring(iSpace + 1,numLength);
      numLength=num.length;
      }
   iComma = num.indexOf(",");
   if(iComma >= 0) {
      while(iComma >=1) {
         num=num.substring(0,iComma) + "" + num.substring(iComma + 1,numLength);
         numLength=num.length;
         iComma = num.indexOf(",");
      }
      }

      num = eval(num);


} else {

num = 0;

}

return num;

}




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 computeForm(form) {

var accumPrincipal = 0;
var accumCost = 0;
var accumPmtAmt = 0;
var accumPmts = 0;
var accumDebts = 0;
var reportRows = "";

//BEGIN DEBT NUMBER 1
var VD1 = form.D1.value;
var Vprin1 = stripNum(form.prin1.value);
var VintRate1 = stripNum(form.intRate1.value);
var Vpmt1 = stripNum(form.pmt1.value);
var VtotCost1 = 0;
var Vnpr1 = 0;

if(Vprin1 > 0 && VintRate1 > 0 && Vpmt1 > 0) {
VtotCost1 = computeCost(VD1,Vprin1,VintRate1,Vpmt1);
form.cost1.value = formatNumber(VtotCost1);
Vnpr1 = computeTerm(VD1,Vprin1,VintRate1,Vpmt1);
accumPmts = Vnpr1;
form.npr1.value = formatNumber(accumPmts);
accumCost = VtotCost1;
accumPrincipal = Vprin1;
accumPmtAmt = Vpmt1;
accumDebts++;
reportRow1 = createRow(VD1,Vprin1,VintRate1,Vpmt1,form.cost1.value,form.npr1.value);
reportRows = "" + reportRows + "" + reportRow1 + "";
}
//END DEBT NUMBER 1

//BEGIN DEBT NUMBER 2
var VD2 = form.D2.value;
var Vprin2 = stripNum(form.prin2.value);
var VintRate2 = stripNum(form.intRate2.value);
var Vpmt2 = stripNum(form.pmt2.value);
var VtotCost2 = 0;
var Vnpr2 = 0;

if(Vprin2 > 0 && VintRate2 > 0 && Vpmt2 > 0) {
   VtotCost2 = computeCost(VD2,Vprin2,VintRate2,Vpmt2);
   form.cost2.value = formatNumber(VtotCost2);
   Vnpr2 = computeTerm(VD2,Vprin2,VintRate2,Vpmt2);
   form.npr2.value = formatNumber(Vnpr2);
   if(Vnpr2 > accumPmts) {
      accumPmts = Vnpr2;
      }
   accumCost = eval(accumCost) + eval(VtotCost2);
   accumPrincipal = eval(accumPrincipal) + eval(Vprin2);
   accumPmtAmt = eval(accumPmtAmt) + eval(Vpmt2);
accumDebts++;
reportRow2 = createRow(VD2,Vprin2,VintRate2,Vpmt2,form.cost2.value,form.npr2.value);
reportRows = "" + reportRows + "" + reportRow2 + "";
}
//END DEBT NUMBER 2

//BEGIN DEBT NUMBER 3
var VD3 = form.D3.value;
var Vprin3 = stripNum(form.prin3.value);
var VintRate3 = stripNum(form.intRate3.value);
var Vpmt3 = stripNum(form.pmt3.value);
var VtotCost3 = 0;
var Vnpr3 = 0;

if(Vprin3 > 0 && VintRate3 > 0 && Vpmt3 > 0) {
   VtotCost3 = computeCost(VD3,Vprin3,VintRate3,Vpmt3);
   form.cost3.value = formatNumber(VtotCost3);
   Vnpr3 = computeTerm(VD3,Vprin3,VintRate3,Vpmt3);
   form.npr3.value = formatNumber(Vnpr3);
   if(Vnpr3 > accumPmts) {
      accumPmts = Vnpr3;
      }
   accumCost = eval(accumCost) + eval(VtotCost3);
   accumPrincipal = eval(accumPrincipal) + eval(Vprin3);
   accumPmtAmt = eval(accumPmtAmt) + eval(Vpmt3);
accumDebts++;
reportRow3 = createRow(VD3,Vprin3,VintRate3,Vpmt3,form.cost3.value,form.npr3.value);
reportRows = "" + reportRows + "" + reportRow3 + "";
}
//END DEBT NUMBER 3

//BEGIN DEBT NUMBER 4
var VD4 = form.D4.value;
var Vprin4 = stripNum(form.prin4.value);
var VintRate4 = stripNum(form.intRate4.value);
var Vpmt4 = stripNum(form.pmt4.value);
var VtotCost4 = 0;
var Vnpr4 = 0;

if(Vprin4 > 0 && VintRate4 > 0 && Vpmt4 > 0) {
   VtotCost4 = computeCost(VD4,Vprin4,VintRate4,Vpmt4);
   form.cost4.value = formatNumber(VtotCost4);
   Vnpr4 = computeTerm(VD4,Vprin4,VintRate4,Vpmt4);
   form.npr4.value = formatNumber(Vnpr4);
   if(Vnpr4 > accumPmts) {
      accumPmts = Vnpr4;
      }
   accumCost = eval(accumCost) + eval(VtotCost4);
   accumPrincipal = eval(accumPrincipal) + eval(Vprin4);
   accumPmtAmt = eval(accumPmtAmt) + eval(Vpmt4);
accumDebts++;
reportRow4 = createRow(VD4,Vprin4,VintRate4,Vpmt4,form.cost4.value,form.npr4.value);
reportRows = "" + reportRows + "" + reportRow4 + "";
}
//END DEBT NUMBER 4

//BEGIN DEBT NUMBER 5
var VD5 = form.D5.value;
var Vprin5 = stripNum(form.prin5.value);
var VintRate5 = stripNum(form.intRate5.value);
var Vpmt5 = stripNum(form.pmt5.value);
var VtotCost5 = 0;
var Vnpr5 = 0;

if(Vprin5 > 0 && VintRate5 > 0 && Vpmt5 > 0) {
   VtotCost5 = computeCost(VD5,Vprin5,VintRate5,Vpmt5);
   form.cost5.value = formatNumber(VtotCost5);
   Vnpr5 = computeTerm(VD5,Vprin5,VintRate5,Vpmt5);
   form.npr5.value = formatNumber(Vnpr5);
   if(Vnpr5 > accumPmts) {
      accumPmts = Vnpr5;
      }
   accumCost = eval(accumCost) + eval(VtotCost5);
   accumPrincipal = eval(accumPrincipal) + eval(Vprin5);
   accumPmtAmt = eval(accumPmtAmt) + eval(Vpmt5);
accumDebts++;
reportRow5 = createRow(VD5,Vprin5,VintRate5,Vpmt5,form.cost5.value,form.npr5.value);
reportRows = "" + reportRows + "" + reportRow5 + "";
}
//END DEBT NUMBER 5

//BEGIN DEBT NUMBER 6
var VD6 = form.D6.value;
var Vprin6 = stripNum(form.prin6.value);
var VintRate6 = stripNum(form.intRate6.value);
var Vpmt6 = stripNum(form.pmt6.value);
var VtotCost6 = 0;
var Vnpr6 = 0;

if(Vprin6 > 0 && VintRate6 > 0 && Vpmt6 > 0) {
   VtotCost6 = computeCost(VD6,Vprin6,VintRate6,Vpmt6);
   form.cost6.value = formatNumber(VtotCost6);
   Vnpr6 = computeTerm(VD6,Vprin6,VintRate6,Vpmt6);
   form.npr6.value = formatNumber(Vnpr6);
   if(Vnpr6 > accumPmts) {
      accumPmts = Vnpr6;
      }
   accumCost = eval(accumCost) + eval(VtotCost6);
   accumPrincipal = eval(accumPrincipal) + eval(Vprin6);
   accumPmtAmt = eval(accumPmtAmt) + eval(Vpmt6);
accumDebts++;
reportRow6 = createRow(VD6,Vprin6,VintRate6,Vpmt6,form.cost6.value,form.npr6.value);
reportRows = "" + reportRows + "" + reportRow6 + "";
}
//END DEBT NUMBER 6

//BEGIN DEBT NUMBER 7
var VD7 = form.D7.value;
var Vprin7 = stripNum(form.prin7.value);
var VintRate7 = stripNum(form.intRate7.value);
var Vpmt7 = stripNum(form.pmt7.value);
var VtotCost7 = 0;
var Vnpr7 = 0;

if(Vprin7 > 0 && VintRate7 > 0 && Vpmt7 > 0) {
   VtotCost7 = computeCost(VD7,Vprin7,VintRate7,Vpmt7);
   form.cost7.value = formatNumber(VtotCost7);
   Vnpr7 = computeTerm(VD7,Vprin7,VintRate7,Vpmt7);
   form.npr7.value = formatNumber(Vnpr7);
   if(Vnpr7 > accumPmts) {
      accumPmts = Vnpr7;
      }
   accumCost = eval(accumCost) + eval(VtotCost7);
   accumPrincipal = eval(accumPrincipal) + eval(Vprin7);
   accumPmtAmt = eval(accumPmtAmt) + eval(Vpmt7);
accumDebts++;
reportRow7 = createRow(VD7,Vprin7,VintRate7,Vpmt7,form.cost7.value,form.npr7.value);
reportRows = "" + reportRows + "" + reportRow7 + "";
}
//END DEBT NUMBER 7

//BEGIN DEBT NUMBER 8
var VD8 = form.D8.value;
var Vprin8 = stripNum(form.prin8.value);
var VintRate8 = stripNum(form.intRate8.value);
var Vpmt8 = stripNum(form.pmt8.value);
var VtotCost8 = 0;
var Vnpr8 = 0;

if(Vprin8 > 0 && VintRate8 > 0 && Vpmt8 > 0) {
   VtotCost8 = computeCost(VD8,Vprin8,VintRate8,Vpmt8);
   form.cost8.value = formatNumber(VtotCost8);
   Vnpr8 = computeTerm(VD8,Vprin8,VintRate8,Vpmt8);
   form.npr8.value = formatNumber(Vnpr8);
   if(Vnpr8 > accumPmts) {
      accumPmts = Vnpr8;
      }
   accumCost = eval(accumCost) + eval(VtotCost8);
   accumPrincipal = eval(accumPrincipal) + eval(Vprin8);
   accumPmtAmt = eval(accumPmtAmt) + eval(Vpmt8);
accumDebts++;
reportRow8 = createRow(VD8,Vprin8,VintRate8,Vpmt8,form.cost8.value,form.npr8.value);
reportRows = "" + reportRows + "" + reportRow8 + "";
}
//END DEBT NUMBER 8

//BEGIN DEBT NUMBER 9
var VD9 = form.D9.value;
var Vprin9 = stripNum(form.prin9.value);
var VintRate9 = stripNum(form.intRate9.value);
var Vpmt9 = stripNum(form.pmt9.value);
var VtotCost9 = 0;
var Vnpr9 = 0;

if(Vprin9 > 0 && VintRate9 > 0 && Vpmt9 > 0) {
   VtotCost9 = computeCost(VD9,Vprin9,VintRate9,Vpmt9);
   form.cost9.value = formatNumber(VtotCost9);
   Vnpr9 = computeTerm(VD9,Vprin9,VintRate9,Vpmt9);
   form.npr9.value = formatNumber(Vnpr9);
   if(Vnpr9 > accumPmts) {
      accumPmts = Vnpr9;
      }
   accumCost = eval(accumCost) + eval(VtotCost9);
   accumPrincipal = eval(accumPrincipal) + eval(Vprin9);
   accumPmtAmt = eval(accumPmtAmt) + eval(Vpmt9);
accumDebts++;
reportRow9 = createRow(VD9,Vprin9,VintRate9,Vpmt9,form.cost9.value,form.npr9.value);
reportRows = "" + reportRows + "" + reportRow9 + "";
}
//END DEBT NUMBER 9

//BEGIN DEBT NUMBER 10
var VD10 = form.D10.value;
var Vprin10 = stripNum(form.prin10.value);
var VintRate10 = stripNum(form.intRate10.value);
var Vpmt10 = stripNum(form.pmt10.value);
var VtotCost10 = 0;
var Vnpr10 = 0;

if(Vprin10 > 0 && VintRate10 > 0 && Vpmt10 > 0) {
   VtotCost10 = computeCost(VD10,Vprin10,VintRate10,Vpmt10);
   form.cost10.value = formatNumber(VtotCost10);
   Vnpr10 = computeTerm(VD10,Vprin10,VintRate10,Vpmt10);
   form.npr10.value = formatNumber(Vnpr10);
   if(Vnpr10 > accumPmts) {
      accumPmts = Vnpr10;
      }
   accumCost = eval(accumCost) + eval(VtotCost10);
   accumPrincipal = eval(accumPrincipal) + eval(Vprin10);
   accumPmtAmt = eval(accumPmtAmt) + eval(Vpmt10);
accumDebts++;
reportRow10 = createRow(VD10,Vprin10,VintRate10,Vpmt10,form.cost10.value,form.npr10.value);
reportRows = "" + reportRows + "" + reportRow10 + "";
}
//END DEBT NUMBER 10

//BEGIN DEBT NUMBER 11
var VD11 = form.D11.value;
var Vprin11 = stripNum(form.prin11.value);
var VintRate11 = stripNum(form.intRate11.value);
var Vpmt11 = stripNum(form.pmt11.value);
var VtotCost11 = 0;
var Vnpr11 = 0;

if(Vprin11 > 0 && VintRate11 > 0 && Vpmt11 > 0) {
   VtotCost11 = computeCost(VD11,Vprin11,VintRate11,Vpmt11);
   form.cost11.value = formatNumber(VtotCost11);
   Vnpr11 = computeTerm(VD11,Vprin11,VintRate11,Vpmt11);
   form.npr11.value = formatNumber(Vnpr11);
   if(Vnpr11 > accumPmts) {
      accumPmts = Vnpr11;
      }
   accumCost = eval(accumCost) + eval(VtotCost11);
   accumPrincipal = eval(accumPrincipal) + eval(Vprin11);
   accumPmtAmt = eval(accumPmtAmt) + eval(Vpmt11);
accumDebts++;
reportRow11 = createRow(VD11,Vprin11,VintRate11,Vpmt11,form.cost11.value,form.npr11.value);
reportRows = "" + reportRows + "" + reportRow11 + "";
}
//END DEBT NUMBER 11

//BEGIN DEBT NUMBER 12
var VD12 = form.D12.value;
var Vprin12 = stripNum(form.prin12.value);
var VintRate12 = stripNum(form.intRate12.value);
var Vpmt12 = stripNum(form.pmt12.value);
var VtotCost12 = 0;
var Vnpr12 = 0;

if(Vprin12 > 0 && VintRate12 > 0 && Vpmt12 > 0) {
   VtotCost12 = computeCost(VD12,Vprin12,VintRate12,Vpmt12);
   form.cost12.value = formatNumber(VtotCost12);
   Vnpr12 = computeTerm(VD12,Vprin12,VintRate12,Vpmt12);
   form.npr12.value = formatNumber(Vnpr12);
   if(Vnpr12 > accumPmts) {
      accumPmts = Vnpr12;
      }
   accumCost = eval(accumCost) + eval(VtotCost12);
   accumPrincipal = eval(accumPrincipal) + eval(Vprin12);
   accumPmtAmt = eval(accumPmtAmt) + eval(Vpmt12);
accumDebts++;
reportRow12 = createRow(VD12,Vprin12,VintRate12,Vpmt12,form.cost12.value,form.npr12.value);
reportRows = "" + reportRows + "" + reportRow12 + "";
}
//END DEBT NUMBER 12

//BEGIN DEBT NUMBER 13
var VD13 = form.D13.value;
var Vprin13 = stripNum(form.prin13.value);
var VintRate13 = stripNum(form.intRate13.value);
var Vpmt13 = stripNum(form.pmt13.value);
var VtotCost13 = 0;
var Vnpr13 = 0;

if(Vprin13 > 0 && VintRate13 > 0 && Vpmt13 > 0) {
   VtotCost13 = computeCost(VD13,Vprin13,VintRate13,Vpmt13);
   form.cost13.value = formatNumber(VtotCost13);
   Vnpr13 = computeTerm(VD13,Vprin13,VintRate13,Vpmt13);
   form.npr13.value = formatNumber(Vnpr13);
   if(Vnpr13 > accumPmts) {
      accumPmts = Vnpr13;
      }
   accumCost = eval(accumCost) + eval(VtotCost13);
   accumPrincipal = eval(accumPrincipal) + eval(Vprin13);
   accumPmtAmt = eval(accumPmtAmt) + eval(Vpmt13);
accumDebts++;
reportRow13 = createRow(VD13,Vprin13,VintRate13,Vpmt13,form.cost13.value,form.npr13.value);
reportRows = "" + reportRows + "" + reportRow13 + "";
}
//END DEBT NUMBER 13

//BEGIN DEBT NUMBER 14
var VD14 = form.D14.value;
var Vprin14 = stripNum(form.prin14.value);
var VintRate14 = stripNum(form.intRate14.value);
var Vpmt14 = stripNum(form.pmt14.value);
var VtotCost14 = 0;
var Vnpr14 = 0;

if(Vprin14 > 0 && VintRate14 > 0 && Vpmt14 > 0) {
   VtotCost14 = computeCost(VD14,Vprin14,VintRate14,Vpmt14);
   form.cost14.value = formatNumber(VtotCost14);
   Vnpr14 = computeTerm(VD14,Vprin14,VintRate14,Vpmt14);
   form.npr14.value = formatNumber(Vnpr14);
   if(Vnpr14 > accumPmts) {
      accumPmts = Vnpr14;
      }
   accumCost = eval(accumCost) + eval(VtotCost14);
   accumPrincipal = eval(accumPrincipal) + eval(Vprin14);
   accumPmtAmt = eval(accumPmtAmt) + eval(Vpmt14);
accumDebts++;
reportRow14 = createRow(VD14,Vprin14,VintRate14,Vpmt14,form.cost14.value,form.npr14.value);
reportRows = "" + reportRows + "" + reportRow14 + "";
}
//END DEBT NUMBER 14

//BEGIN DEBT NUMBER 15
var VD15 = form.D15.value;
var Vprin15 = stripNum(form.prin15.value);
var VintRate15 = stripNum(form.intRate15.value);
var Vpmt15 = stripNum(form.pmt15.value);
var VtotCost15 = 0;
var Vnpr15 = 0;

if(Vprin15 > 0 && VintRate15 > 0 && Vpmt15 > 0) {
   VtotCost15 = computeCost(VD15,Vprin15,VintRate15,Vpmt15);
   form.cost15.value = formatNumber(VtotCost15);
   Vnpr15 = computeTerm(VD15,Vprin15,VintRate15,Vpmt15);
   form.npr15.value = formatNumber(Vnpr15);
   if(Vnpr15 > accumPmts) {
      accumPmts = Vnpr15;
      }
   accumCost = eval(accumCost) + eval(VtotCost15);
   accumPrincipal = eval(accumPrincipal) + eval(Vprin15);
   accumPmtAmt = eval(accumPmtAmt) + eval(Vpmt15);
accumDebts++;
reportRow15 = createRow(VD15,Vprin15,VintRate15,Vpmt15,form.cost15.value,form.npr15.value);
reportRows = "" + reportRows + "" + reportRow15 + "";
}
//END DEBT NUMBER 15

if(accumDebts == 0) {
//alert("Please enter at least one debt before computing current debt costs.");
} else {

form.totalCost.value = formatNumber(accumCost);
form.totalPrincipal.value = formatNumber(accumPrincipal);
form.totalTerm.value = formatNumber(accumPmts);
form.totalPmtAmt.value = formatNumber(accumPmtAmt);

form.HtotalCost.value = accumCost;
form.HtotalPrincipal.value = accumPrincipal;
form.HtotalTerm.value = accumPmts;
form.HtotalPmtAmt.value = accumPmtAmt;
form.HtotalDebts.value = accumDebts;

reportRows = "" + reportRows + "<TR><TD COLSPAN=6><HR></TD></TR><TR><TD><font face='arial'><small><B>Current Terms</B></small></font></TD><TD ALIGN=RIGHT><font face='arial'><small>$" + formatNumber(stripNum(form.totalPrincipal.value)) + "</small></font></TD><TD ALIGN=RIGHT><font face='arial'><small>N/A</small></font></TD><TD ALIGN=RIGHT><font face='arial'><small>$" + formatNumber(stripNum(form.totalPmtAmt.value)) + "</small></font></TD><TD ALIGN=RIGHT><font face='arial'><small>$" + formatNumber(stripNum(form.totalCost.value)) +  "</small></font></TD><TD ALIGN=RIGHT><font face='arial'><small>" + formatNumber(accumPmts) + "</small></font></TD></TR>";

form.HreportRows.value = reportRows;
} //end of if/else statement that checks to see if any debts were entered
}

function computeLoan(form) {

computeForm(form);

if(form.consolAPR.value == 0 || form.consolAPR.value == "") {
alert("Please enter an annual interest rate for your consolidation loan.");
form.consolAPR.focus();
} else
if(form.consolTerm.value == 0 || form.consolTerm.value == "") {
alert("Please enter the length of the term (number of years) for your consolidation loan.");
form.consolTerm.focus();
} else {

var VconsolName = "Consolidation Loan";
var VconsolPrin = form.HtotalPrincipal.value;
var VconsolAPR = stripNum(form.consolAPR.value);
var VconsolTerm = stripNum(form.consolTerm.value);

var i = VconsolAPR;
  if (i > 1.0) {
  i = i / 100.0;
  }
  i /= 12;

var noMonths = VconsolTerm * 12;
var pow = 1;

for (var j = 0; j < noMonths; j++)
    pow = pow * (1 + i);

var VconsolPmt = (VconsolPrin * pow * i) / (pow - 1);

var VtotConCost = computeCost(VconsolName,VconsolPrin,VconsolAPR,VconsolPmt);

var pmtSign = "-";
var pmtColor = "green";
var pmtReport = "";
var VHtotalPmt = form.HtotalPmtAmt.value;
form.totalNowPmt.value = formatNumber(VHtotalPmt);
form.totalConPmt.value = formatNumber(VconsolPmt);
var VpmtDiff = eval(VHtotalPmt) - eval(VconsolPmt);
if(VpmtDiff < 0) {
VpmtDiff *= -1;
pmtSign = "+";
pmtColor = "red";
}
pmtReport = pmtSign + "$" + formatNumber(VpmtDiff);
form.pmtDiff.value = pmtSign + "" + formatNumber(VpmtDiff);


var termSign = "-";
var termColor = "green";
var termReport = "";
var VHtotalTerm = form.HtotalTerm.value;
form.totalNowTerm.value = formatNumber(VHtotalTerm);
form.totalConTerm.value = formatNumber(noMonths);
var VtermDiff = eval(VHtotalTerm) - eval(noMonths);
if(VtermDiff < 0) {
VtermDiff *= -1;
termSign = "+";
termColor = "red";
}
termReport = termSign + "" + formatNumber(VtermDiff);
form.termDiff.value = termSign + "" + formatNumber(VtermDiff);

var VconsolFees = stripNum(form.consolFees.value);
if(VconsolFees == "") {
VconsolFees = 0;
}
var intSign = "-";
var intColor = "green";
var intReport = "";
var VHtotalInt = form.HtotalCost.value;
form.totalNowInt.value = formatNumber(VHtotalInt);
VtotConCost = eval(VtotConCost) + eval(VconsolFees);
form.totalConInt.value = formatNumber(VtotConCost);
var VintDiff = eval(VHtotalInt) - eval(VtotConCost);
if(VintDiff < 0) {
VintDiff *= -1;
intSign = "+";
intColor = "red";
}
intReport = intSign + "$" + formatNumber(VintDiff)
form.intDiff.value = intSign + "" + formatNumber(VintDiff);

var VHtotalDebts = form.HtotalDebts.value;

if(pmtSign == "-" && termSign == "+" && intSign == "+") {
form.summary.value = "If you consolidate your " + VHtotalDebts + " debts into a single $" + formatNumber(VconsolPrin) + " loan, for " + noMonths + " months, at " + stripNum(form.consolAPR.value) + "% APR, your monthly debt payments will be reduced by $" + formatNumber(VpmtDiff) + ", but it will take you an additional " + formatNumber(VtermDiff) + " months to pay off your debts and you will end up paying an additional $" + formatNumber(VintDiff) + " in interest charges and/or loan fees.";
} else
if(pmtSign == "-" && termSign == "-" && intSign == "-") {
form.summary.value = "If you consolidate your " + VHtotalDebts + " debts into a single $" + formatNumber(VconsolPrin) + " loan, for " + noMonths + " months, at " + stripNum(form.consolAPR.value) + "% APR, your monthly debt payments will be reduced by $" + formatNumber(VpmtDiff) + ", you will pay off your debts " + formatNumber(VtermDiff) + " months earlier and you will end up saving $" + formatNumber(VintDiff) + " in interest charges and/or loan fees. Just make sure you don't create any new debt paying off your consolidation loan";
} else
if(pmtSign == "-" && termSign == "+" && intSign == "-") {
form.summary.value = "If you consolidate your " + VHtotalDebts + " debts into a single $" + formatNumber(VconsolPrin) + " loan, for " + noMonths + " months, at " + stripNum(form.consolAPR.value) + "% APR, your monthly debt payments will be reduced by $" + formatNumber(VpmtDiff) + ", it will take you an additional " + formatNumber(VtermDiff) + " months to pay off your debts and you will end up saving $" + formatNumber(VintDiff) + " in interest charges and/or loan fees. Just make sure you don't do what most people who consolidate do -- they create new debt while they're paying off their consolidation loan.";
} else
if(pmtSign == "-" && termSign == "-" && intSign == "+") {
form.summary.value = "If you consolidate your " + VHtotalDebts + " debts into a single $" + formatNumber(VconsolPrin) + " loan, for " + noMonths + " months, at " + stripNum(form.consolAPR.value) + "% APR, your monthly debt payments will be reduced by $" + formatNumber(VpmtDiff) + ", you will pay off your debts " + formatNumber(VtermDiff) + " months earlier but you will end up paying an additional $" + formatNumber(VintDiff) + " in interest charges and/or loan fees.";
} else
if(pmtSign == "+" && termSign == "-" && intSign == "+") {
form.summary.value = "If you consolidate your " + VHtotalDebts + " debts into a single $" + formatNumber(VconsolPrin) + " loan, for " + noMonths + " months, at " + stripNum(form.consolAPR.value) + "% APR, your monthly debt payments will increase by $" + formatNumber(VpmtDiff) + ", you will pay off your debts " + formatNumber(VtermDiff) + " months earlier but you will end up paying an additional $" + formatNumber(VintDiff) + " in interest charges and/or loan fees.";
} else {
form.summary.value = "No Summary Available.";
}

var reportRows = form.HreportRows.value;

reportRows = "" + reportRows + "<TR><TD COLSPAN=6><HR></TD></TR><TR><TD><font face='arial'><small><B>Consolidation Terms</B></small></font></TD><TD ALIGN=RIGHT><font face='arial'><small>$" + form.totalPrincipal.value + "</small></font></TD><TD ALIGN=RIGHT><font face='arial'><small>" + formatNumber(stripNum(form.consolAPR.value)) + "%</small></font></TD><TD ALIGN=RIGHT><font face='arial'><small>$" + form.totalConPmt.value + "</small></font></TD><TD ALIGN=RIGHT><font face='arial'><small>$" + form.totalConInt.value +  "</small></font></TD><TD ALIGN=RIGHT><font face='arial'><small>" + form.totalConTerm.value + "</small></font></TD></TR><TR><TD COLSPAN=6><HR></TD></TR><TR><TD><font face='arial'><small><B>Difference</B></small></font></TD><TD ALIGN=RIGHT></TD><TD ALIGN=RIGHT></TD><TD ALIGN=RIGHT><FONT COLOR=" + pmtColor + "><font face='arial'><small>" + pmtReport + "</small></font></FONT></TD><TD ALIGN=RIGHT><font face='arial'><small><FONT COLOR=" + intColor + ">" + intReport +  "</small></font></FONT></TD><TD ALIGN=RIGHT><font face='arial'><small><FONT COLOR=" + termColor + ">" + termReport + "</small></font></FONT></TD></TR><TR><TD COLSPAN=6><HR></TD></TR><TR><TD COLSPAN=6><font face='arial'><small><B>Summary:</B> " + form.summary.value + "</small></font></TD></TR>";

form.HreportRows.value = reportRows;

   } //end of if/esle statement that checks to see if top section computed
}

function computeCost(name,principal,interest,payment) {

var i = interest;
  if (i > 1.0) {
  i = i / 100.0;
  }
  i /= 12;

var prin = principal;
var count = 0;
var prinPort = 0;
var intPort = 0;
var pmt = payment;
var accumInt = 0;

while(eval(prin) > eval(pmt)) {
   intPort = prin * i;
   accumInt = accumInt + intPort;
   prinPort = pmt - intPort;
   prin = prin - prinPort;
   count = count +1;
   if(count > 600) {
      neverPayOff(name);
      break;
      }
   }

intPort = prin * i;
accumInt = accumInt + intPort;
prinPort = pmt - intPort;
prin = prin - prinPort;

var totalInt = accumInt;

return totalInt;
}

function computeTerm(name,principal,interest,payment) {

var i = interest;
  if (i > 1.0) {
  i = i / 100.0;
  }
  i /= 12;

var prin = principal;
var count = 0;
var prinPort = 0;
var intPort = 0;
var pmt = payment;
var accumInt = 0;
var lastPmt = 0;

while(eval(prin) > eval(pmt)) {
   intPort = prin * i;
   prinPort = pmt - intPort;
   prin = prin - prinPort;
   count = count +1;
   if(count > 600) {
      break;
      }
   }

totalPmts = prin / payment + count;

return totalPmts;
}

function neverPayOff(name) {
 alert("Based on the terms you entered for " + name + ", your monthly interest charge is greater than your monthly payment -- which means you will never pay off " + name + ". Please increase the payment amount until this alert message disappears.");
}

function return1(form) { form.D2.focus(); }
function return2(form) { form.D3.focus(); }
function return3(form) { form.D4.focus(); }
function return4(form) { form.D5.focus(); }
function return5(form) { form.D6.focus(); }
function return6(form) { form.D7.focus(); }
function return7(form) { form.D8.focus(); }
function return8(form) { form.D9.focus(); }
function return9(form) { form.D10.focus(); }
function return10(form) { form.D11.focus(); }
function return11(form) { form.D12.focus(); }
function return12(form) { form.D13.focus(); }
function return13(form) { form.D14.focus(); }
function return14(form) { form.D15.focus(); }

function createRow(name,principal,interest,payment,cost,term) {

reportRow = "<TR><TD><font face='arial'><small>" + name + "</small></font></TD><TD ALIGN=RIGHT><font face='arial'><small>$" + formatNumber(principal) + "</small></font></TD><TD ALIGN=RIGHT><font face='arial'><small>" + formatNumber(interest) + "%</small></font></TD><TD ALIGN=RIGHT><font face='arial'><small>$" + formatNumber(payment) + "</small></font></TD><TD ALIGN=RIGHT><font face='arial'><small>$" + cost +  "</TD><TD ALIGN=RIGHT><font face='arial'><small>" + term + "</small></font></TD></TR>";

return reportRow;
}

function createReport(form) {

computeForm(form);
computeLoan(form);

var report = "<HEAD><TITLE>Loan Consolidation Report</TITLE></HEAD>" + "<BODY BGCOLOR = '#FFFFFF'><BR><BR><CENTER><font face='arial'><big><strong>Loan Consolidation Report</strong></big></FONT><BR><font face='arial'><small><small>(Please allow for slight rounding differences)</small></small></font></CENTER><P><CENTER><TABLE BORDER=0 CELLPADDING=4><TR><TD BGCOLOR=\"silver\"><font face='arial'><small><B>Debt Name</B></small></font></TD><TD BGCOLOR=\"silver\" ALIGN=CENTER><font face='arial'><small><B>Principal<BR>Balance</B></small></font></TD><TD BGCOLOR=\"silver\" ALIGN=CENTER><font face='arial'><small><B>APR</B></small></font></TD><TD BGCOLOR=\"silver\" ALIGN=CENTER><font face='arial'><small><B>Monthly<BR>Payment</B></small></font></TD><TD BGCOLOR=\"silver\" ALIGN=CENTER><font face='arial'><small><B>Interest<BR>Cost</B></small></font></TD><TD BGCOLOR=\"silver\" ALIGN=CENTER><font face='arial'><small><B>Number<BR>of Pmts</B></small></font></TD></TR> " + form.HreportRows.value + " </TABLE><P><center><font face='arial'><small>This report was created with <U>The Debt Consolidation Calculator</U><BR>Written by Daniel C. Peterson<BR>Calculator can be found at http://www.webwinder.com</small></font><p><form method='post'><input type='button' value='Close Window' onClick='window.close()'></form></CENTER></BODY></HTML>";

reportWin = window.open("","","width=500,height=300,toolbar=yes,menubar=yes,scrollbars=yes");
  reportWin.document.write(report);
  reportWin.document.close();
   
}
