var inputs;
var termControl;

/*Inputs*/
var loanAmount;
var term;
var fixedInterest;
var interestOnly;

/*Outputs*/
var fixedRatePayments;
var interestOnlyPayments;

/*Globals*/
var oldTerm=30;
var graph1,graph2;

function round(num){ return(Math.round(num*100)/100); }

function loadEvents()
{
	var calculator=document.getElementById("viewReportButton").parentNode;
	setVisibility("reportView",'none');
	calculator.style.display="block";
	inputs=calculator.getElementsByTagName("input");
	termControl=document.getElementById("term");
	for (var i=0;i<inputs.length;i++)
		inputs[i].onkeyup=Calc;
	termControl.onclick=Calc;
	document.getElementById("viewReportButton").onclick=toggleReport;
	fixedRatePayments=document.getElementById("fixedRatePayments");
	interestOnlyPayments=document.getElementById("interestOnlyPayments");
	/*Calc(); Comment this line out when you put in the svg and read the rentvsbuy stuff */
}

function Calc() 
{
	getInputs();
	adjustReport();
	calcPayments();
	document.getElementById("calcFlash").interestOnlyvsFixedAs(graph1,graph2);
//	SetGraph(parseFloat(fixedRatePayments.firstChild.nodeValue),parseFloat(interestOnlyPayments.firstChild.nodeValue));
}

function getInputs()
{
	for (var i=0;i<inputs.length;i++)
		switch(inputs[i].getAttribute("id"))
		{
		case "calcLoanAmount":
			loanAmount=inputs[i].value;
			if (isNaN(loanAmount)) loanAmount=0;
		break;
		case "fixedInterest":
			interest=inputs[i].value;
			if (isNaN(interest)) interest=0;
		break;
		case "interestOnly":
			interestOnlyRate=inputs[i].value;
			if (isNaN(interest)) interest=0;
		break;
		}
		if (termControl.value)
			term=parseFloat(termControl.value);
		else
		{
			var options=termControl.getElementsByTagName("option");
			for (var i=0;i<options.length;i++) 
				if (options[i].getAttribute("selected"))
				{
					term=parseFloat(options[i].firstChild.data);
					break;
				}
		}		
}
function setVisibility(objectID,state) { document.getElementById(objectID).style.display = state; }

function adjustReport()
{
	if (oldTerm>term) //turn off unneeded rows
		switch (term)
		{
			case 5:
				setVisibility("year10Rows",'none');
			case 10:
				setVisibility("year15Rows",'none');
			case 15:
				setVisibility("year30Rows",'none');
			break;
		}
	if (oldTerm<term) //turn on needed rows
	{
		switch (term)
		{
			case 30:
				setVisibility("year30Rows","");
			case 15:
				setVisibility("year15Rows","");
			case 10:
				setVisibility("year10Rows","");
			break;
		}
	}
	oldTerm=term;
}

function toggleReport()
{
	var reportButton=document.getElementById("viewReportButton").getElementsByTagName("button")[0];
	if (document.getElementById("reportView").style.display!='none') // if report is visible
	{
		setVisibility("reportView",'none');
		reportButton.innerHTML="View Report";
	}
	else
	{
		setVisibility("reportView","");
		reportButton.innerHTML="Hide Report";
	}
}


function calcMonthlyPayment()
{
	var i=interest/1200;
	var n=term*12;
	var a;
	if (i>0)
		a=(i+i/(Math.pow(1+i,n)-1))*loanAmount;
	else
		a=loanAmount/n;
	return(a);
}

function calcPayments()
{
	var rate=interest/1200;
	var n=term*12;
	var a=round(calcMonthlyPayment());
	var balance=loanAmount;
	var ipayments=loanAmount*interestOnlyRate/1200;
	var j=12;
	for (var i=1;i<=n;i++)
	{
		interest=round(balance*rate);
		balance-=a-interest;
		if (j==i)
		{
			var year=j/12;
			if (i==n)
			{
				var yearPayment=a*12+balance;
				document.getElementById("r"+year+"fixedBalance").innerHTML="$0";
			}
			else
			{
				var yearPayment=a*12;
				document.getElementById("r"+year+"fixedBalance").innerHTML="$"+addCommas(round(balance));
			}
			document.getElementById("r"+year+"Payment").innerHTML="$"+addCommas(round(yearPayment));
			document.getElementById("r"+year+"InterestPaid").innerHTML="$"+addCommas(round(ipayments*12));
			document.getElementById("r"+year+"Balance").innerHTML="$"+addCommas(round(loanAmount));
			j+=12;
		}
	}
	graph1=round(a);
	graph2=round(ipayments);
	fixedRatePayments.innerHTML=addCommas(graph1);
	interestOnlyPayments.innerHTML=addCommas(graph2);
}

function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

if (window.addEventListener) window.addEventListener("load",loadEvents,false);
else window.attachEvent("onload",loadEvents);
