
function frmt_nmbr(pnumber,decimals){ 
if (isNaN(pnumber)) { return 0}; 
if (pnumber=='') { return 0}; 

var snum = new String(pnumber); 
var sec = snum.split('.'); 
var whole = parseFloat(sec[0]); 
var result = ''; 

if(sec.length > 1){ 
var dec = new String(sec[1]); 
dec = String(parseFloat(sec[1])/Math.pow(10,(dec.length - decimals))); 
dec = String(whole + Math.round(parseFloat(dec))/Math.pow(10,decimals)); 
var dot = dec.indexOf('.'); 
if(dot == -1){ 
dec += '.'; 
dot = dec.indexOf('.'); 
} 
while(dec.length <= dot + decimals) { dec += '0'; } 
result = dec; 
} else{ 
var dot; 
var dec = new String(whole); 
dec += '.'; 
dot = dec.indexOf('.'); 
while(dec.length <= dot + decimals) { dec += '0'; } 
result = dec; 
} 
return result; 
} 

function Calculate()
{	
	NumUnits = document.SCcalc_multyfam.NumUnits.value-0
	GrossPotInc = document.SCcalc_multyfam.GrossPotInc.value-0

	VacancyPercent = document.SCcalc_multyfam.VacancyPercent.value-0
	VacancyTotal = Math.round((GrossPotInc*VacancyPercent)/100)

	if (VacancyTotal<=1) {
		document.SCcalc_multyfam.VacancyTotal.value = ""
	} else {
		document.SCcalc_multyfam.VacancyTotal.value = VacancyTotal
	}

	OtherInc = document.SCcalc_multyfam.OtherInc.value-0

	EffGrossInc = GrossPotInc+OtherInc-VacancyTotal
	document.SCcalc_multyfam.EffGrossInc.value = EffGrossInc
	
	Taxes = document.SCcalc_multyfam.Taxes.value-0
	Insurance = document.SCcalc_multyfam.Insurance.value-0
	Utilities = document.SCcalc_multyfam.Utilities.value-0
	Management = document.SCcalc_multyfam.Management.value-0
	Maintenance = document.SCcalc_multyfam.Maintenance.value-0
	Administrative = document.SCcalc_multyfam.Administrative.value-0
	Marketing = document.SCcalc_multyfam.Marketing.value-0
	Trash_Sewer = document.SCcalc_multyfam.Trash_Sewer.value-0
	Miscellaneous = document.SCcalc_multyfam.Miscellaneous.value-0

	TotOperExp = Taxes+Insurance+Utilities+Management+Maintenance+Administrative+Trash_Sewer+Marketing+Miscellaneous
	document.SCcalc_multyfam.TotOperExp.value = TotOperExp	
	
	MgmtPercent = Math.round(GrossPotInc*0.05)
	
	if (Management<MgmtPercent)
	{
		Management = Math.round(GrossPotInc*0.05)
		document.SCcalc_multyfam.Management.value = Management
	}
	
	NetOperInc = EffGrossInc-TotOperExp
	document.SCcalc_multyfam.NetOperInc.value = NetOperInc

	OperExpPerUnit = Math.round(TotOperExp/NumUnits)

	valTest = OperExpPerUnit/OperExpPerUnit
	if(!isNaN(valTest))
	{	
		document.SCcalc_multyfam.OperExpPerUnit.value = OperExpPerUnit
	} else	{
		document.SCcalc_multyfam.OperExpPerUnit.value = ""
	}
	
	OperExpRatio = TotOperExp/EffGrossInc

	valTest = OperExpRatio/OperExpRatio
	if(!isNaN(valTest))
	{	
		document.SCcalc_multyfam.OperExpRatio.value = frmt_nmbr(OperExpRatio,2)
	} else	{
		document.SCcalc_multyfam.OperExpRatio.value = ""
	}
	
	CapExPerUnit = document.SCcalc_multyfam.CapExPerUnit.value-0	
	
	if (CapExPerUnit < 150)
	{
		CapExPerUnit = 150
	}
	
	document.SCcalc_multyfam.CapExPerUnit.value = CapExPerUnit	
	TotCapEx = Math.round(CapExPerUnit*NumUnits)
	document.SCcalc_multyfam.TotCapEx.value = TotCapEx
	
	CashFlow = NetOperInc-TotCapEx
	document.SCcalc_multyfam.CashFlow.value = CashFlow
	
	Rate = document.SCcalc_multyfam.Rate.value-0
	Amort = document.SCcalc_multyfam.Amort.value-0
	DSCR = document.SCcalc_multyfam.DSCR.value-0

	
	Rate = (Rate/12)/100
	NPER = Amort * 12
	PV = -100
	FV = 0
	ptype = 0
	
	powRate = Math.pow(1+Rate,NPER)	
	PMT  = (Rate*(FV+PV*(powRate)))/((1+Rate*ptype)*(1-(powRate)))*12
	pmtRev = frmt_nmbr(PMT,2)	

	valTest = pmtRev/pmtRev
	
	if(!isNaN(valTest))
	{	
		document.SCcalc_multyfam.LoanSize.value = Math.round((NetOperInc/DSCR/pmtRev)*100)
	} else	{
		document.SCcalc_multyfam.LoanSize.value = ""
	}
}



