var inputs;
var termControl;

/*Inputs*/
var currentRent;
var propertyValue;
var appreciationRate;
var loanAmount;
var term;
var interest;
var incomeTax;

/*Outputs*/
var valueAfterAppreciation;
var totalMortgagePayment;
var taxSavings;
var mortgageNetCost;
var rentNetCost;

/*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.onchange=Calc;
	document.getElementById("viewReportButton").onclick=toggleReport;
	valueAfterAppreciation=document.getElementById("valueAfterAppreciation");
	totalMortgagePayment=document.getElementById("totalMortgagePayment");
	taxSavings=document.getElementById("taxSavings");
	mortgageNetCost=document.getElementById("mortgageNetCost");
	rentNetCost=document.getElementById("rentNetCost");
/*	Calc(); */ /* I modified your code to essentially run this function in the svg */
}

function Calc() 
{
	getInputs();
	adjustReport();
	calcOwn();
	calcRentNetCost();
	document.getElementById("calcFlash").rentvsBuy(graph2,graph1);
//	SetRentBar(parseFloat(rentNetCost.firstChild.nodeValue)); 
//	SetOwnBar(parseFloat(mortgageNetCost.firstChild.nodeValue));
}

function getInputs()
{
	for (var i=0;i<inputs.length;i++)
		switch(inputs[i].getAttribute("id"))
		{
		case "currentRent":
			currentRent=parseFloat(inputs[i].value);
			if (isNaN(currentRent)) currentRent=0;
		break;
		case "propertyValue":
			propertyValue=parseFloat(inputs[i].value);
			if (isNaN(propertyValue)) propertyValue=0;
		break;
		case "appreciationRate":
			appreciationRate=parseFloat(inputs[i].value);
			if (isNaN(appreciationRate)) appreciationRate=0;
		break;
		case "calcLoanAmount":
			loanAmount=parseFloat(inputs[i].value);
			if (isNaN(loanAmount)) loanAmount=0;
		break;
		case "interest":
			interest=parseFloat(inputs[i].value);
			if (isNaN(interest)) interest=0;
		break;
		case "incomeTax":
			incomeTax=parseFloat(inputs[i].value);
			if (isNaN(incomeTax)) incomeTax=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 monthlyPayment()
{
	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 calcOwn()
{
	var rate=interest/1200;
	var n=term*12;
	var a=round(monthlyPayment());
	var balance=loanAmount;
	var totalPayment=0;
	var j=12;
	var yearlyInterest=0;
	var homeValue=propertyValue;
	for (var i=1;i<=n;i++)
	{
		interest=round(balance*rate);
		yearlyInterest+=interest;
		balance-=a-interest;
		totalPayment+=a;
		if (i==j)
		{
			var year=(j)/12;
			homeValue=Math.round(homeValue*(100+appreciationRate))/100;
			if (i==n)
			{
				var yearPayment=a*12+balance;//
				document.getElementById("r"+year+"Balance").innerHTML="$0";
			}
			else
			{
				var yearPayment=a*12;
				document.getElementById("r"+year+"Balance").innerHTML="$"+addCommas(round(balance));
			}
			document.getElementById("r"+year+"Payment").innerHTML="$"+addCommas(round(yearPayment));
			document.getElementById("r"+year+"TaxSavings").innerHTML="$"+addCommas(round((yearPayment)-(yearlyInterest*incomeTax/100)));
			document.getElementById("r"+year+"Rent").innerHTML="$"+addCommas(currentRent*12);
			document.getElementById("r"+year+"HomeValue").innerHTML="$"+addCommas(homeValue);
			document.getElementById("r"+year+"Equity").innerHTML="$"+addCommas(round(homeValue-balance));
			yearlyInterest=0;
			j+=12;
		}
	}
	totalPayment=round(totalPayment+balance);
	var futureValue=round(propertyValue*Math.pow(1+(appreciationRate/100),term));
	var taxCredit=Math.round((totalPayment-loanAmount)*incomeTax)/100;
	valueAfterAppreciation.innerHTML=addCommas(futureValue);
	totalMortgagePayment.innerHTML=addCommas(totalPayment);
	taxSavings.innerHTML=addCommas(taxCredit);
	graph1=round(totalPayment-futureValue-taxCredit)
	mortgageNetCost.innerHTML=addCommas(graph1);
}

function calcRentNetCost()
{
	graph2=currentRent*term*12;
	rentNetCost.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);
