// JavaScript Document
/***************************
(c) 2008 www.TUFaT.com
All Rights Reserved. Please
do not re-sell/re-distribute
this software.
***************************/
function CalcBiWeek(form) 
{
	var prin = form.prin.value;
	var int = form.int.value;
	var term = form.term.value; 
	var full = form.full.value;
	var strm = '';
	var strt = 0;
	var StrOut = '';
	var m = Array("Foo","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","B/W");
	
	for (i = 1; i < 13; i++) { 
		if (m[i] == strm) {  
			strt = i; 
		} 
	}
	
	StrOut = StrOut + "<hr><strong>For the given values:</strong><br/><ul>";
	StrOut = StrOut + "- Principal = <b>$ "+prin+"</b> <br/>";
	StrOut = StrOut + "- Interest Rate = <b>"+int+" %</b> <br/>";
	StrOut = StrOut + "- Term = <b>"+term+" </b> years<br/>";
	
	var tt = term * 12; 
	var ir = int / 1200; 
	var temp = (1.0 / Math.pow((1 + ir) ,tt));
	var paymt = prin * ir / (1 - temp);
	var bpaymt = paymt/2;
	var tint = paymt * tt - prin; 
	var btint = tint/2; 
	var aint = tint / term /12;
	var baint = aint/2;
	var bal = prin; 
	var yrint = 0; 
	var yrprin = 0;
	var bbal = prin; 
	var byrint = 0; 
	var byrprin = 0;
	if (full =='Yes') {
		StrOut = StrOut + "<table width=80% align=center cellspacing=0 cellpadding=3 border=0><tr><td colspan=3>";
		StrOut = StrOut + "<strong>Amortization Comparison</strong></td></tr>";
		StrOut = StrOut + "<tr><td>&nbsp;</td><td colpsan=2 align=center><strong>Principal Remaining</strong></td></tr>";
		StrOut = StrOut + "<tr><td><strong>Year</strong></td><td><strong>Monthly</strong></td><td><strong>Biweekly</strong></td></tr>";
		for (i = 1; i <= term; i++ )
		{
			for (j = 1; j <= 12; j++) {	
				mint = ir * bal; 
				bal = bal - paymt + mint;
				yrint = yrint + mint; 
				mprin = paymt - mint;
				yrprin = yrprin + mprin;
				
				bmint = ir * bbal; 
				bbal = bbal - paymt + bmint;
				byrint = byrint + bmint; 
				bmprin = paymt - bmint;
				byrprin = byrprin + bmprin;
			}
			bbal = bbal - paymt; 
			byrprin = byrprin + paymt;
			if (bbal < 0) { 
				bbal = 0; 
			}
			StrOut = StrOut + "<tr><td>"+i+"</td><td>"+formatNumberDec(bal,2,1)+"</td><td>"+formatNumberDec(bbal,2,1)+"</td></tr>";
		}
	}	
	StrOut = StrOut + "</table>";
	StrOut = StrOut + "<hr><strong>Where the final summary is</strong><br/>";
	
	StrOut = StrOut + "- Monthly Payment: <b>$ "+formatNumberDec(paymt,2,1)+"</b><br/>- Total Int:<b>$ "+formatNumberDec(tint,2,1)+"</b><br/>";
	StrOut = StrOut + "- Avg Int each Month: <b>$ "+formatNumberDec(aint,2,1)+"</b><br/>";
	StrOut = StrOut + "<hr><br/>";
	StrOut = StrOut + "- Biweekly Payment: <b>$ "+formatNumberDec(bpaymt,2,1)+"</b><br/>- Total Int:<b>$ "+formatNumberDec(tint,2,1)+"</b><br/>";
	StrOut = StrOut + "- Avg Int each BiWeekly Period: <b>$ "+formatNumberDec(baint,2,1)+"</b><br/>";
	
	document.getElementById("results").innerHTML=StrOut;
	document.getElementById("results").style.display='block';
}

function formatNumberDec(num, places, comma) {
	var isNeg=0;
    if(num < 0) {
       num=num*-1;
       isNeg=1;
    }
	var myDecFact = 1;
	var myPlaces = 0;
	var myZeros = "";
	while(myPlaces < places) {
		myDecFact = myDecFact * 10;
		myPlaces = eval(myPlaces) + eval(1);
		myZeros = myZeros + "0";
	}
	onum=Math.round(num*myDecFact)/myDecFact;
	integer=Math.floor(onum);
	if (Math.ceil(onum) == integer) {
		decimal=myZeros;
	} else{
		decimal=Math.round((onum-integer)* myDecFact)
	}
	decimal=decimal.toString();
	if (decimal.length<places) {
		fillZeroes = places - decimal.length;
		for (z=0;z<fillZeroes;z++) {
		decimal="0"+decimal;
		}
	}
	if(places > 0) {
	  decimal = "." + decimal;
	}
	if(comma == 1) {
		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;
	} else {
		finNum=integer+""+decimal;
	}
	
	if(isNeg == 1) {
	   finNum = "-" + finNum;
	}
	
	return finNum;
}

