function cashflow()
{
	var market = getValue("market");
	var rent = getValue("rent");
	var utilities = getValue("utilities");
	var proptaxes = getValue("ptaxes");
	var down = getValue("downpayment");
	var closing = getValue("closing_costs");
	var purchase = getValue("purchase");

	var loan = purchase - down;

	calculate_cashflow(purchase, market, down, closing, loan, rent, utilities, proptaxes, true);

	setMoney("down", down);
	setMoney("closing", closing);
	setMoney("purchase_price", purchase);
	setPercentage2("percent_of_mkt", purchase / market);
	
	//setText(div, dollars(purchase) + ' <span style="font-weight:normal;font-size:80%;">(' + percentage2(purchase / market) + ')</span>');
}


function calculate_cashflow(purchase, market, down, closing, loan, rent, utilities, ptaxes, settext)
{	
	var investment = down + closing;

	// inital investment
	if (settext) setMoney("investment", investment);
	
	// the loan
	//var loan = purchase - down;
	var apr = getValue("apr");
	var interestonly = getCheckedValue(document.forms.propform.interestonly) == "true";
	var monthly = mortgage_payments(loan, apr, 30, interestonly);
	var annual = -monthly * 12;
	if (settext) setMoney("loan_amount", loan);
	if (settext) setMoney("loan_monthly", monthly);
	//if (settext) setMoney("loan_annual"), dollars(annual));

	// noi
	var gross = rent*12;
	var vacancy = -getValue("vacancy")*gross/100;
	var propmgmt = -getValue("propmgmt")*gross/100;
	var proptaxes = -ptaxes*purchase/100;//getValue("proptaxes")*purchase/100;
	var insurance = -getValue("insurance")*purchase/100;
	var annual_utilities = -utilities*12;
	var misc = -getValue("misc")*purchase/100;
	var noi = gross + vacancy + propmgmt + proptaxes + insurance + annual_utilities + misc;
	var cap = noi / purchase;
	if (settext) setMoney("gross_rent", gross);
	if (settext) setMoney("vacancy", vacancy);
	if (settext) setMoney("propmgmt", propmgmt);
	if (settext) setMoney("proptaxes", proptaxes);
	if (settext) setMoney("insurance", insurance);
	if (settext) setMoney("utils", annual_utilities);
	if (settext) setMoney("misc", misc);
	if (settext) setMoney("noi", noi);
	if (settext) setPercentage("cap", cap);

	// before tax cashflow
	var bt_cashflow = noi + annual;
	var principal = 0;
	if (!interestonly)
		principal = -principal_reduction(loan, apr, monthly);
	var interest = annual - principal;
	if (settext) setMoney("interest", interest);
	if (settext) setMoney("principal", principal);
	if (settext) setMoney("bt_cashflow", bt_cashflow);
	if (settext) setMoney("monthly_cashflow", bt_cashflow/12);

	// after tax cashflow
	var depreciation = -getValue("base") * purchase / 27.5 / 100;
	var taxable = noi + interest + depreciation;
	var taxes = taxable * getValue("tax") / 100;
	var at_cashflow = bt_cashflow - taxes;
	if (settext) setMoney("depreciation", depreciation);
	if (settext) setMoney("taxable", taxable);
	if (settext) setMoney("taxes", taxes);
	if (settext) setMoney("at_cashflow", at_cashflow);
	
	// increase in equity
	var appreciation = getValue("appreciation")/100;
	var eoy_value = market * (1+appreciation);
	var equity = eoy_value - market;
	var equityinit = market - purchase;
	var reduction = -principal;
	if (settext) setMoney("eoy_value", eoy_value);
	if (settext) setMoney("equityinit", equityinit);
	if (settext) setMoney("equity", equity);
	if (settext) setMoney("reduction", reduction);
	
	var bt_cashoncash = bt_cashflow / investment;
	var at_cashoncash = at_cashflow / investment;
	var sales_costs = eoy_value * getValue("sales_costs") / 100;
	var saleprofit = eoy_value - loan - sales_costs + reduction;
	var ret = at_cashflow + saleprofit - investment;
	var roi = ret / investment;
	if (settext) setPercentage("bt_cashoncash", bt_cashoncash);
	if (settext) setPercentage("at_cashoncash", at_cashoncash);
	if (settext) setMoney("sale", saleprofit);
	if (settext) setMoney("return", ret);
	if (settext) setPercentage("roi", roi);

	return bt_cashflow;
}

function calcPayments(formname)
{
	var loan = parseNumber(document.forms[formname].loanamt.value);
	var apr = parseNumber(document.forms[formname].apr.value);
	var impound = parseNumber(document.forms[formname].impound.value);
	var pmi = parseNumber(document.forms[formname].pmi.value);
	var term = parseNumber(document.forms[formname].term.value);
	var interestonly = getCheckedValue(document.forms[formname].interestonly) == "true";
	var payment = mortgage_payments(loan, apr, term, interestonly) + impound + pmi;
	payment = Math.round(payment*100) / 100;
	document.forms[formname].payment.value = payment; 
}
