/* global vars */
var cashflowStart = "<table style='background:white; font-size:7pt;' border=1><tr><th>Price</th><th>Down Payment</th><th>Term<br>(months)</th><th>Rate</th><th>Monthly<br>Income</th><th>Monthly<br>Expenses</th><th>Loan<br>Payments</th><th><u>Cashflow</u></th></tr>";
var cashflowTable = cashflowStart;
var sensitivityStart = "<table style='background:white; font-size:8pt;' border=1><tr><th>Avg. Rent<br>Per Unit</th><th>Units</th><th>Current<br>Gross<br>Revenue</th><th>Rent<br>Increase</th><th>% Inc</th><th>Units needed<br>to maintain<br>Gross Income</th><th>Allowable<br>Occupancy<br>Drop</th><th>Allowable<br>Unit Drop</th><th>Possible Gross<br>(No Unit Drop)</th></tr>";
var sensitivityTable = sensitivityStart;
var yearlyreport = "";
var report = "";

/* Useful stuff first*/
function screen(input) {
  if (input == "") input = "0";
  var a = input.split("");
  var b = "";
  for (var i in a)
    if ((a[i].match(/\d/)) || (a[i]=='.') || (a[i]=='-'))
    b += a[i];
  while (b.length>1 && b.charAt(0) == "0") b=b.substr(1,b.length);
  return b;
}

function CurrencyFormatted(amount)
{
	var i = parseFloat(amount);
	if(isNaN(i)) { i = 0.00; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	var s = new String(i);
	if(s.indexOf('.') < 0) { s += '.00'; }
	if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
	s = minus + s;
	return s;
	
}
function CurrencyFormat(amount)
{
	var i = parseFloat(amount);
	if(isNaN(i)) { i = 0.00; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	var s = new String(i);
	if(s.indexOf('.') < 0) { s += '.00'; }
	if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
	s = minus+ "$" + s;
	return addSeparatorsNF(s, '.', '.', ',');
	
}

function resetTable()
{
	cashflowTable = "<table>";
	document.getElementById("full_results").innerHTML = cashflowTable + "</table>";
}
function resetTable2()
{
	sensitivityTable = sensitivityStart;
	document.getElementById("resultspan").innerHTML = '';
	document.getElementById("theresult").innerHTML = '';
	a='';
	dp='';
	n='';
	p='';
	ai='';
	ae='';
	tpayment='';
	cashFlow='';
	cashflowTable=cashflowStart;
	
		
}
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;
}
function addSeparatorsNF(nStr, inD, outD, sep)
{
	nStr += '';
	var dpos = nStr.indexOf(inD);
	var nStrEnd = '';
	if (dpos != -1) {
		nStrEnd = outD + nStr.substring(dpos + 1, nStr.length);
		nStr = nStr.substring(0, dpos);
	}
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(nStr)) {
		nStr = nStr.replace(rgx, '$1' + sep + '$2');
	}
	return nStr + nStrEnd;
}

function asMoney(amount)
{
	return addCommas(CurrencyFormatted(amount));
//	return addSeparatorsNF(CurrencyFormatted(amount), '.', '.', ',');
}
/* Real stuff here... */

	function getTotalInterest(a, n, p){
		var i=0;

		/* Calculate Total Interest **/
		var payment = getPayment(a,n,p);
		var balance=a;
		var interest = 0.0;
		var principal=0.0;
		var totalinterest=0.0;
		for (i=1;i<=n;i++) {
			interest = balance*p/1200;
			totalinterest += interest;
			principal = payment-interest;
			balance -= principal;
		}
		return totalinterest;
	}

	function showInterest(a, n, p) {
		var i=0;
		var sATline="";
		var oResultLine=document.getElementById("resultLine");
		var oResult=document.getElementById("theresult");
		oResultLine.style.visibility="visible";
		
		/* Calculate amortization and write data to result line **/
		//var tinterest = Math.round(getTotalInterest(screen(a),screen(n),screen(p)));
		var tinterest = getTotalInterest(screen(a),screen(n),screen(p));
		oResult.innerHTML = "Total Interest paid: $ " + asMoney(tinterest);
		
	}

	
	
	function getAmortization(a,n,p) {
		var i=0;
		var sATline="";
		var oResultLine=document.getElementById("resultLine");
		oResultLine.style.visibility="visible";
		var oAmortizationTable=document.getElementById("amortizationtable");
		oAmortizationTable.style.visibility="visible";
		var sCR=String.fromCharCode(13);
		var sTab=String.fromCharCode(27);

		/* Calculate amortization and write table to text area **/
		var payment = getPayment(screen(a),screen(n),screen(p));
		oAmortizationTable.value = sCR + "Monthly Payment = " + (Math.round(payment*100)/100) + sCR + sCR;
		oAmortizationTable.value += "Month  Balance    Principal  Interest  Payment    Total Interest" + sCR;
		var balance=a;
		var interest = 0.0;
		var principal=0.0;
		var totalinterest=0.0;
		for (i=1;i<=n;i++) {
			interest = balance*p/1200;
			totalinterest += interest;
			principal = payment-interest;
			balance -= principal;
			sATline = i.toString()+getSpaces(7-i.toString().length);
			sATline += Math.round(balance*100)/100;
			sATline += getSpaces(18-sATline.length);
			sATline += (Math.round(principal*100)/100);
			sATline += getSpaces(29-sATline.length);
			sATline += (Math.round(interest*100)/100);
			sATline += getSpaces(39-sATline.length);
			sATline += (Math.round(i*payment*100)/100);
			sATline += getSpaces(50-sATline.length);
			sATline += (Math.round(totalinterest*100)/100) + sCR;
			oAmortizationTable.value += sATline;
		}
	}

	function getSpaces(n) {
		var i=0; 
		var sSpaces="";
		for (i=0;i<n;i++) {sSpaces += " ";}
		return sSpaces;
	}

	function getPayment(a,n,p) {
		var price = a;
		
		var term = n;
		var percent = p;
		//alert("To Start:\nPrice="+price+"\nTerm="+term+" months\nPercent="+percent+"%");
		/* Calculates the monthly payment from annual percentage
		   rate, term of loan in months and loan amount. **/
		var acc=0;
		var base = 1 + p/1200;
		var rate = p/1200;
		var payment = (a * Math.pow(base, n) * rate)/ ((Math.pow(base, n)) - 1);
		/*for (i=1;i<=n;i++) 
			{ acc += Math.pow(base,-i); }
		return a/acc;
			
			*/
		return payment;
	}
	
	
	function getPayment1(a,n,p) {										
		var payment = (a*(p*0.01))/12;
		return payment;
	}

	function getPrinciple(monthly,payments,percent) {
		/* Calculates the loan amount from annual percentage
		   rate, term of loan in months and monthly payment. **/
		var i = percent / 1200;
		var principle = 0;
		var x = 1/Math.pow((1+i), payments);
		principle = ( monthly * (1 - x) ) / i;
		return principle;

	}
	
	function showPayment(a, n, p) {
		var i=0;
		var sATline="";
		var oResultLine=document.getElementById("resultLine");
		var oResult=document.getElementById("theresult");
		oResultLine.style.visibility="visible";
		//alert(document.getElementById('yes').value);
		/* Calculate amortization and write data to result line **/
		//var payment = Math.round(getPayment(screen(a),screen(n),screen(p))); 
		if(document.getElementById('no').checked){
		var payment = getPayment(screen(a),screen(n),screen(p)); 
		oResult.innerHTML = "Monthly Payment: $ " + asMoney(payment);
		}
		if(document.getElementById('yess').checked){
			var payment = getPayment(screen(a),screen(n),screen(p)); 
		var x=(payment*screen(n))-screen(a)
		oResult.innerHTML = "Monthly Interest: $ " + asMoney((x/12));	
		}
	}

	function getCashFlow(a, n, p, dp, ai, ae){
		var amt = a - dp;
		var payment = getPayment(amt, n, p); 
		var rawflow = ai - ae;
		rawflow = rawflow - payment;
		//alert(rawflow)
		return rawflow;
	}
	
	function getCashFlow1(a, n, p, dp, ai, ae){					///   // amount, term,apr, downp, monthlyincome, monthlyexpenses
		var amt = a - dp;
		var payment = getPayment1(amt, n, p); 
		var rawflow = ai - ae;
		rawflow = rawflow - payment;
		//alert(rawflow)
		return rawflow;
	}
	
	function showCashFlow(a, n, p, dp, ai, ae){                                       // amount, term,apr, downp, monthlyincome, monthlyexpenses
		var i=0;
		var sATline="";
		var oResultLine=document.getElementById("resultLine");
		var oResult=document.getElementById("theresult");
		oResultLine.style.visibility="visible";
		
		/* Calculate amortization and write data to result line **/
		//var payment = Math.round(getPayment(screen(a),screen(n),screen(p))); 
		
		if(document.getElementById('yes').checked)
		{
			resetTable2();
			var x=((screen(a)-screen(dp))*screen(n)*screen(p))/1200;
			var y=asMoney(x);
			oResult.innerHTML  = "Interest Paid $" + y;
			var cashFlow = getCashFlow1(screen(a),screen(n),screen(p), screen(dp), screen(ai), screen(ae)); 
			var tpayment = getPayment1((screen(a)-screen(dp)),screen(n),screen(p));                        //getPayment(amount-downp,term,apr)
			cashflowTable = cashflowTable + "<tr><td align=right>$"+ asMoney(screen(a)) +"</td><td align=right>$"+ asMoney(screen(dp)) +"</td><td align=right>"+ n 
			+"</td><td align=right>"+ p +"%</td><td align=right>$"+ asMoney(ai) +"</td><td align=right>$"+ asMoney(ae) 
			+"</td><td align=right>$"+ asMoney(tpayment) +"</td><td align=right>$"+ asMoney(cashFlow) +"</td></tr>";
			document.getElementById("resultspan").innerHTML =cashflowTable + "</table>";
		}
		
		
		
		if(document.getElementById('no').checked)
		{
			var cashFlow = getCashFlow(screen(a),screen(n),screen(p), screen(dp), screen(ai), screen(ae)); 
			oResult.innerHTML = "Cash Flow: $ " + asMoney(cashFlow) + " per month";
			var tpayment = getPayment((screen(a)-screen(dp)),screen(n),screen(p));
			cashflowTable = cashflowTable + "<tr><td align=right>$"+ asMoney(screen(a)) +"</td><td align=right>$"+ asMoney(screen(dp)) +"</td><td align=right>"+ n 
			+"</td><td align=right>"+ p +"%</td><td align=right>$"+ asMoney(ai) +"</td><td align=right>$"+ asMoney(ae) 
			+"</td><td align=right>$"+ asMoney(tpayment) +"</td><td align=right>$"+ asMoney(cashFlow) +"</td></tr>";
			document.getElementById("resultspan").innerHTML =cashflowTable + "</table>";
		}
	}
	
	function showRentSensitivity(r, a, i){
		var rent = screen(r);
		var apts = screen(a);
		var increase = screen(i);
		var incpercent = Math.round(((increase / rent) * 100)*10) / 10;
		var grossrev = rent * apts;
		var possgross = (rent*1+increase*1) * apts;
		var neededunits = Math.ceil(grossrev / (rent*1+increase*1));
		var occdrop = Math.round(((1 - (neededunits / apts)) * 100)*10) / 10; 
		var unitdrop = apts - neededunits;
		
		sensitivityTable = sensitivityTable + "<tr><td align=right>$" + asMoney(rent) +"</td><td align=right>"
			+ apts + "</td><td align=right>$"
			+ asMoney(grossrev) + "</td><td align=right>$"
			+ asMoney(increase) + "</td><td align=right>"
			+ incpercent + "%</td><td align=right>"
			+ neededunits + "</td><td align=right>"
			+ occdrop + "%</td><td align=right>"
			+ unitdrop + "</td><td align=right>$"
			+ asMoney(possgross) + "</td></tr>";
		document.getElementById("resultspan").innerHTML = sensitivityTable + "</table>";
		
	}
	
	function showYearlyReport(yea, prop, inve, iamt, ta, cas, inlos, eq, ap){
		//start here
		var investment = screen(iamt);
		var tax = screen(ta);
		var cash = screen(cas);
		var income_loss = screen(inlos);
		var equity = screen(eq);
		var appreciation = screen(ap);
		var totalBenefit = 0;
		
		
		yearlyreport = "<font size=+2>Annual Benefits</font><br>"
			+ "<table>"
			+ "<tr><td>Year</td><td>"+ yea +"</td></tr>"
			+ "<tr><td>Property</td><td>"+ prop +"</td></tr>"
			+ "<tr><td>Investor</td><td>"+ inve +"</td></tr>"
			+ "<tr><td>Investment</td><td>$"+ asMoney(investment) +"</td></tr>"
			+ "<tr><td>Est. Marginal Tax Bracket</td><td>"+ screen(ta) +"%</td></tr>"
			+ "</table>";
		
		var afterTaxinc = ((income_loss*1) * (tax/100)) * (0-1);
		totalBenefit = (cash*1) + (afterTaxinc*1) + (equity*1) + (appreciation*1);
		var theReturn = Math.round(((totalBenefit / investment) * 100)*100) / 100;
		yearlyreport = yearlyreport 
			+ "<table border=1>"
			+ "<tr><td>&nbsp;</td><th>Pre-Tax</th><th>After Tax Benefits</th></tr>"
			+ "<tr><td><b>Cash Flow</b></td><td align=right>" + CurrencyFormat(cash) + "</td><td align=right>" + CurrencyFormat(cash) + "</td></tr>"
			+ "<tr><td><b>Income/Loss</b></td><td align=right>" + CurrencyFormat(income_loss) + "</td><td align=right>" + CurrencyFormat(afterTaxinc) + "</td></tr>"
			+ "<tr><td><b>Equity Buildup</b></td><td align=right>" + CurrencyFormat(equity) + "</td><td align=right>" + CurrencyFormat(equity) + "</td></tr>"
			+ "<tr><td><b>Appreciation</b></td><td align=right>" + CurrencyFormat(appreciation) + "</td><td align=right>" + CurrencyFormat(appreciation) + "</td></tr>"
			+ "<tr><td colspan=2><b><i>Total</i></b></td><td align=right>" + CurrencyFormat(totalBenefit) + "</td></tr>"
			+ "<tr><td colspan=2><b><i>Percentage Return</i></b></td><td align=right>" + theReturn + "%</td></tr>"
			+ "</table>";
		var oResultLine=document.getElementById("resultLine")
		var oResult=document.getElementById("theresult");
		oResultLine.style.visibility="visible";
//		oResult.innerHTML = yearlyreport + "<br><input type=button value=Print Version onClick=\"window.open('print_version.htm');\">";
		oResult.innerHTML = yearlyreport + "<br><input type=button value=\"Print Version\" onClick=\"printMe();\">";
	}	
	
	function showPossibleLoan(a, n, p) {
		var aa = screen(a);
		var nn = screen(n);
		var pp = screen(p);
		if ( (aa*1 <= 0) || (nn*1<=0) || (pp*1<=0)){
			alert("All inputs must be positive numbers");
		} else {		
		var oResultLine=document.getElementById("resultLine");
		var oResult=document.getElementById("theresult");
		oResultLine.style.visibility="visible";
		
		/* Calculate amortization and write data to result line **/
		//var payment = Math.round(getPrinciple(aa,nn,pp));
		var payment =getPrinciple(aa,nn,pp);
		oResult.innerHTML = "Loan Amount: $ " + asMoney(payment);
		if(document.getElementById('no').checked){
		oResult.innerHTML = "Loan Amount: $ " + asMoney(payment);
		}
		if(document.getElementById('yess').checked){
		var x=((screen(a)*screen(n))-payment);	
		oResult.innerHTML = "Total Interest: $ " + asMoney(x);
		}
		}
	}
	
	function getRemainingDebt(amt, pay, rate, time){
		var l_rate = rate / 1200;
		var l_time = time*12;
		var z = 1 + l_rate;
		var remaining = (amt * Math.pow(z, l_time) ) - ((pay * (Math.pow(z, l_time)-1) ) / (z-1));
		return remaining;
		
	}
	
	function showPercent(numb){
		numb = Math.round(numb * 100) / 100;
		return numb + "%";
	}
	
	function showForecast(goal, goalt, ret_per, apr, pri, dwn, trm, rte){
		var errormess = "";
		var goal_amt = screen(goal);
		var goal_years = screen(goalt);
		var return_percent = screen(ret_per);
		var appreciation = screen(apr);
		var price = screen(pri);
		var down_pay = screen(dwn);
		var loan_term = screen(trm);
		var loan_rate = screen(rte);
		
		// error check
		if ((!isNaN(goal_years))&&((goal_years*1) <= 0)){
			errormess = errormess + "Goal Time must be a positive number.\n";
		}
		if ((!isNaN(return_percent))&&((return_percent*1) <= 0)){
			errormess = errormess + "Asset Return Percent must be a positive number.\n";
		}
		if ((!isNaN(appreciation))&&((appreciation*1) <= 0)){
			errormess = errormess + "Property Appreciation must be a positive number.\n";
		}
		if ((!isNaN(price))&&((price*1) <= 0)){
			errormess = errormess + "Property Price must be a positive number.\n";
		}
		if ((!isNaN(down_pay))&&((down_pay*1) <= 0)){
			errormess = errormess + "Down Payment must be a positive number.\n";
		}
		if ((down_pay*1) >= (price*1)){
			errormess = errormess + "Down Payment must be smaller than Property Price.\n";
		}
		if ((!isNaN(loan_term))&&((loan_term*1) <= 0)){
			errormess = errormess + "Loan Term must be a positive number.\n";
		}
		if ((!isNaN(loan_rate))&&((loan_rate*1) <= 0)){
			errormess = errormess + "Loan Rate must be a positive number.\n";
		}
		// if error in input, display 
		if (!(errormess == "")){
			alert(errormess);
		} else {
			// compute the report
			var return_percent_decimal = return_percent /100;
			var goal_equity = goal_amt / return_percent_decimal;
			var i;
			var loan_amount = (price*1) - (down_pay*1);
			var payment = getPayment(loan_amount, (loan_term*12), loan_rate);
			var remain = getRemainingDebt(loan_amount, payment, loan_rate, goal_years);
			if (remain < 1) {
				remain = 0;
			}
			//future value
			var futureValue = price;
			for (i=0; i < (goal_years*1); i++){
				futureValue = (futureValue *1) + (futureValue * (appreciation / 100));
			}
			var totalEquity = (futureValue *1) - (remain*1);
			var estIncome = totalEquity * (return_percent / 100);
			var theResult = "";
			if (totalEquity >= goal_equity){
				theResult = "Based on the assumptions given, this investment will be enough to meet your financial goal.<br><br>";
			}
			    else {
				    // goal fail
				    var lacking = (goal_amt * 1) - (estIncome*1);
				    theResult += "Based on the assumptions given, this investment alone <u>will not</u> be enough to meet your financial goal.  To reach your goal, you will need other investments to produce the remaining <u>" +
				    CurrencyFormat(lacking) + "</u> a year.";
			    }
			    report = "<center><table width=500 style=\"border-width:thin; border-style:solid\">"
			    + "<tr><th align=center><font size=\"+3\">CRYSTAL BALL</font><br><font size=\"+1\">FUTURE REVENUE FORECAST</font></th></tr> "
			    + "<tr><td><br><br>"
			    + "<ul>"
			    + "<li>Your goal is to have <b>" + CurrencyFormat(goal_amt) +
			    "</b> per year in income.</li>"
			    + "<li>You estimated that equity owned can produce an income of <b>" +
			    showPercent(return_percent) + "</b> per year.</li>"
			    + "<li>The time frame for building the equity is <b>" +
			    goal_years + "</b> years.</li>"
			    + "</ul><br>"
			    + "To produce <b>" + CurrencyFormat(goal_amt) +
			    "</b> in income, you would need <u>" +
			    CurrencyFormat(goal_equity) +
			    "</u> in equity producing the <b>" + showPercent(return_percent) +
			    "</b> yield you predicted.<br><br>"
			    + "If you purchased a <u>" + CurrencyFormat(price) +
			    "</u> property with an initial investment of <b>" +
			    CurrencyFormat(down_pay) + "</b>, "
			    + "you would need to borrow <u>" + CurrencyFormat(loan_amount) +
			    "</u>. You estimated an interest rate of <b>" +
			    showPercent(loan_rate) +
			    "</b>, with the debt amortized monthly over <b>" +
			    loan_term + "</b> years."
			    + " You estimated an increased property value of <b> " +
			    showPercent(appreciation) + "</b> per year.<br><br>"
			    + "In <b>" + goal_years +
			    "</b> years the value of the property would be <u>" +
			    CurrencyFormat(futureValue) + "</u>.<br>"
			    + "The balance of the loan would be <u>" +
			    CurrencyFormat(remain) + "</u>.<br>"
			    + "Your estimated equity would be <u>" + CurrencyFormat(totalEquity) +
			    "</u>.<br><br>"
			    + "A <b>" + showPercent(return_percent) + "</b> return on <u>" +
			    CurrencyFormat(totalEquity) +
			    "</u> in equity would equal an annual income of <u>" +
			    CurrencyFormat(estIncome) + "</u>.<br><br>"
			    + "<font size=\"+1\">End Result:</font><br>"
			    + theResult
			    + "<br><br>Note:<br>"
			    + "Numbers in bold were input as assumptions.<br>"
			    + "Numbers underlined were generated through computation.<br>"
			    + "All numbers are estimates and cannot be guaranteed. They are subject to errors, omission and change! They are for review and discussion only."
			    + "</td></tr>"
			    + "</table></center>"
			    ;
			  var oResult=document.getElementById("theresult");
			  oResult.innerHTML = "<br>" + report + "<br><center><input type=button value=\"Print Version\" onClick=\"printThis();\"></center>";
		}
	}
	
	function show1031(LV,IV,AA,YS){
		var ltv = screen(LV);
		var initialValue = screen(IV);
		var appreciation = screen(AA);
		var term = screen(YS);
		
		// errorcheck
		var errormess = "";
		if ((!isNaN(ltv))&&((ltv*1) <= 0)){
			errormess = errormess + "Loan to Value must be a positive number.\n";
		}
		if ((!isNaN(initialValue))&&((initialValue*1) <= 0)){
			errormess = errormess + "Initial Value must be a positive number.\n";
		}
		if ((!isNaN(appreciation))&&((appreciation*1) <= 0)){
			errormess = errormess + "Annual Appreciation must be a positive number.\n";
		}
		if ((!isNaN(term))&&((term*1) <= 0)){
			errormess = errormess + "Years to Sale(term) must be a positive number.\n";
		}
		
		if (!(errormess == "")){
			alert(errormess);
		} else {
			// do report thing
			
			// get the future value
			var futureValue = initialValue;
			var i;
			for (i=0; i < (term*1); i++){
				futureValue = (futureValue *1) + (futureValue * (appreciation / 100));
			}
			var increase = (futureValue*1) - (initialValue*1);
			var loanatterm = futureValue * (ltv/100);
			report = "<table>"
			+ "<tr><th colspan=2>Lease/Option/Purchase (1031 Alt.)</th></tr>"
			+ "<tr><td>Loan to Value</td><td align=\"right\">" + showPercent(ltv) +
			"</td></tr>"
			+ "<tr><td>Initial Value</td><td align=\"right\">" +
			CurrencyFormat(initialValue) + "</td></tr>"
			+ "<tr><td>Annual Appreciation</td><td align=\"right\">" +
			showPercent(appreciation) + "</td></tr>"
			+ "<tr><td>Years to Sale(term)</td><td align=\"right\">" +
			term + " years</td></tr>"
			+ "<tr><td>&nbsp;</td></tr>"
			+ "<tr><td>Value at Term</td><td align=right>" + CurrencyFormat(futureValue) +
			"</td></tr>"
			+ "<tr><td>Appreciation</td><td align=right>" + CurrencyFormat(increase) +
			"</td></tr>"
			+ "<tr><td>Loan Amount at Term</td><td align=right>" +
			CurrencyFormat(loanatterm) + "</td></tr>"
			+ "</table>";
			var oResult=document.getElementById("theresult");
			  oResult.innerHTML = "<br>" + report + "<br><center><input type=button value=\"Print Version\" onClick=\"printThis();\"></center>";
		}
	}
	
	function printMe(){
		var newWindow = window.open ("", "Print View", "toolbar=yes,location=1,status=1,scrollbars=1,width=500,height=300");
		newWindow.document.write(yearlyreport);
		var today = new Date();
		var month = today.getMonth() + 1;
		var day = today.getDate();
		var year = today.getFullYear();
		var s = "/";
		var tDate = month + s + day + s + year
		newWindow.document.write("Report generated"+tDate);
		
//newWindow.document.write("</body></html>")
		//newWindow.stop();
		//newWindow.onLoad = newWindow.print();
		newWindow.document.close();
	}	
	function printThis(){
		var newWindow = window.open ("", "Print View", "toolbar=yes,location=1,status=1,scrollbars=1,width=550,height=300");

		newWindow.document.write(report);
		newWindow.document.close();
	}



