		
		function showHide(showHideDiv)
		{
			var xform = window.document.debtAnalyzer;
			if(eval(showHideDiv).style.display == 'none')
			{
				eval(showHideDiv).style.display = 'inline';
			}
			else
			{
				eval(showHideDiv).style.display = 'none';
			}
		}
		function ensureNumeric(frmField){
			if(isNaN(frmField.value))
			{
				alert('A numerical field is required');
				frmField.value = '';
				frmField.focus();
				return false;
			}
		}
		function formatCurrency(num,showDecimals) {
			num = num.toString().replace(/\$|\,/g,'');
			if(isNaN(num))
				num = "0";
				sign = (num == (num = Math.abs(num)));
				num = Math.floor(num*100+0.50000000001);
				cents = num%100;
				num = Math.floor(num/100).toString();
			if(cents<10)
				cents = "0" + cents;
			for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
				num = num.substring(0,num.length-(4*i+3))+','+
				num.substring(num.length-(4*i+3));
				if(showDecimals == 1)
				{
					return (((sign)?'':'-') + /*'$' +*/ num + '.' + cents);
				}
				else{
					return (((sign)?'':'-') + /*'$' +*/ num );
				}
		}
		function ensureNumericFormat(frmField,showDec){
			var num = frmField.value;
			if(isNaN(num))
			{
				alert('A numerical field is required');
				frmField.value = '';
				frmField.focus();
				return false;
			}
			else{
				if(showDec ==1 )
				{
					return FormatNumber(num,2,1,0);
				}
				else{
					return Math.round(num);
				}
			}
		}
		
		function FormatNumber(num, decimalNum, bolLeadingZero, bolParens){
			var tmpNum = num;

			// Return the right number of decimal places
			tmpNum *= Math.pow(10,decimalNum);
			tmpNum = Math.floor(tmpNum);
			tmpNum /= Math.pow(10,decimalNum);

			var tmpStr = new String(tmpNum);

			// See if we need to hack off a leading zero or not
			if (!bolLeadingZero && num < 1 && num > -1 && num !=0)
				if (num > 0)
					tmpStr = tmpStr.substring(1,tmpStr.length);
				else
					// Take out the minus sign out (start at 2)
					tmpStr = "-" + tmpStr.substring(2,tmpStr.length);                        


			// See if we need to put parenthesis around the number
			if (bolParens && num < 0)
				tmpStr = "(" + tmpStr.substring(1,tmpStr.length) + ")";


			return tmpStr;
		}



		
		function calculate(){
			var xform = window.document.debtAnalyzer;
			//check frmFields
			if(document.debtAnalyzer.netOperatingIncome.value == "" || document.debtAnalyzer.netOperatingIncome.value == 0)
			{
				alert('Please provide a numeric value greater than zero for Net Operating Income');
				document.debtAnalyzer.netOperatingIncome.focus();
				return false;
			}
			if(document.debtAnalyzer.capitalizationRate.value == "" )//|| document.debtAnalyzer.capitalizationRate.value == 0
			{
				alert('Please provide a numeric value for capitalization rate');
				document.debtAnalyzer.capitalizationRate.focus();
				return false;
			}
			if(document.debtAnalyzer.seniorDebt.value == "")
			{
				alert('Please provide a numeric value for senior debt');
				document.debtAnalyzer.seniorDebt.focus();
				return false;
			}
			if(document.debtAnalyzer.borrowerEquity.value =="" || document.debtAnalyzer.borrowerEquity.value == 0)
			{
				alert('Please provide a numeric value for borrow equity that is greater than zero');
				document.debtAnalyzer.borrowerEquity.focus();
				return false;
			
			}
			
			/*var theForm = document.forms[0];
			for(ii=0; ii<theForm.elements.length; ii++){
				
				if(theForm.elements[ii].id == 'PRIME RATE')
				{
					var i = theForm.elements[ii].value;	
					
				} 
				
			}
			alert(i);*/
			var i = parseFloat(document.debtAnalyzer.ddlRate[document.debtAnalyzer.ddlRate.selectedIndex].value / 100);
			
			var n = document.debtAnalyzer.amortizationRate[document.debtAnalyzer.amortizationRate.selectedIndex].value;
			var r = 1 / ((1 - (1 / Math.pow(1 + i / 12, (n * 12)))) / i / 12 * 12);
			//alert(r);
			/*var i = 0.055; 
			var  n = 25; 
			var  r = 1 / ((1 - (1 / Math.pow(1 + i / 12, (n * 12)))) / i / 12 * 12);
			*/
			
			document.getElementById('totalDebt').innerHTML = '$' + formatCurrency(document.debtAnalyzer.seniorDebt.value,0);
			if(document.debtAnalyzer.netOperatingIncome.value > 0 && document.debtAnalyzer.seniorDebt.value > 0)
			{
				document.getElementById('debtCoverageService').innerHTML = Math.round((document.debtAnalyzer.netOperatingIncome.value / (document.debtAnalyzer.seniorDebt.value * r)*100))/100;
			}
			else{
				document.getElementById('debtCoverageService').innerHTML = 0;
			}
			if(document.debtAnalyzer.netOperatingIncome.value > 0 && document.debtAnalyzer.capitalizationRate.value >0)
			{
				document.getElementById('loanToValue').innerHTML = Math.round((document.debtAnalyzer.seniorDebt.value / (document.debtAnalyzer.netOperatingIncome.value / document.debtAnalyzer.capitalizationRate.value)*100))/100 + '%';
			}
			else{
				document.getElementById('loanToValue').innerHTML = 0;
			}
			
			
			var annualDebtServiceVal = (Math.round((document.debtAnalyzer.seniorDebt.value * r)*100)/100);
			var netCashFlowValue = ((document.debtAnalyzer.netOperatingIncome.value - annualDebtServiceVal)*100)/100;
			//alert(annualDebtServiceVal);
			document.getElementById('loanConstant').innerHTML = Math.round((r * 100)*10000)/10000;
			document.getElementById('annualDebtService').innerHTML = '$' + formatCurrency(annualDebtServiceVal,1);//
			document.getElementById('netCashFlow').innerHTML = '$' + formatCurrency(netCashFlowValue,0);//Math.round((parseFloat(document.debtAnalyzer.seniorDebt.value) + parseFloat(document.debtAnalyzer.netOperatingIncome.value))*100)/100;
			document.getElementById('cashReturn').innerHTML = formatCurrency(((netCashFlowValue / document.debtAnalyzer.borrowerEquity.value)*100),1) + '%';
			document.getElementById('tblResults').style.display = 'inline';
			
		}
		
	function validateCapRate(){
		//alert('in');
		if(document.capRateAnalysis.netOperatingIncome.value =="")
		{
			alert('Net Operating income is required');
			document.capRateAnalysis.netOperatingIncome.focus();
			return false;
		}
		if(document.capRateAnalysis.squareFootage.value =="" || document.capRateAnalysis.squareFootage.value ==0)
		{
			alert('Square footage must be numeric, and greater than zero');
			document.capRateAnalysis.squareFootage.focus();
			return false;
		}
		if(document.capRateAnalysis.capRate.value =="" ||document.capRateAnalysis.capRate.value == 0)
		{
			alert('A cap rate greater than zero is required');
			document.capRateAnalysis.capRate.focus();
			return false;
		}
		if(document.capRateAnalysis.loanToValue.value =="")
		{
			alert('Loan to value is required');
			document.capRateAnalysis.loanToValue.focus();
			return false;
		}
		if(document.capRateAnalysis.interestRate.value =="")
		{
			alert('Interest rate is required');
			document.capRateAnalysis.interestRate.focus();
			return false;
		}
		if(document.capRateAnalysis.amortizationPeriod.value =="")
		{
			alert('Amortization period is required');
			document.capRateAnalysis.amortizationPeriod.focus();
			return false;
		}
		//good at this point, calculate results
		var price		= Math.round((document.capRateAnalysis.netOperatingIncome.value / (document.capRateAnalysis.capRate.value / 100) )*100)/100 ;
		var loanAmount	= Math.round((price * (document.capRateAnalysis.loanToValue.value / 100)) * 100)/100;
		var interestRate = Math.round(document.capRateAnalysis.interestRate.value * 100)/100;
		
		document.getElementById('price').innerHTML		= '$' + formatCurrency(price);
		document.getElementById('pricePsf').innerHTML	= '$' + formatCurrency(Math.round((price / document.capRateAnalysis.squareFootage.value)*100)/100,1);
		document.getElementById('loanAmount').innerHTML = '$' + formatCurrency(loanAmount,0);
		document.getElementById('equityRequirement').innerHTML	= '$' + formatCurrency(Math.round((price - loanAmount)*100)/100,0);
					
		
		var ra = interestRate / 12;
		var M = loanAmount;   //$lfield5 or whatever your price field is.
		var L= 12 * document.capRateAnalysis.amortizationPeriod.value;//months of financing or create a field for length of loan.
		var IntRate= document.capRateAnalysis.interestRate.value;//interest rate-again
		//Do not edit below this line.
		var N= 1+IntRate / 1200
		var result= (M * IntRate * (Math.pow(N,L))) / (1200 * (Math.pow(N,L)-1));
		var result1= Math.round((result * 100))/100;
		var debtService = Math.round((result1 * 12)*100)/100;
		document.getElementById('debtService').innerHTML = '$' + formatCurrency(debtService,0);
		
		var cashOnCashReturn = ((document.capRateAnalysis.netOperatingIncome.value - debtService) / (price - loanAmount))*100;
		document.getElementById('cashOnCashReturn').innerHTML = Math.round(cashOnCashReturn * 100)/100 + '%';
		
		var medianCap = document.capRateAnalysis.capRate.value;
		var netOpIncome = document.capRateAnalysis.netOperatingIncome.value;
		for(var i=0; i <11; i++)
		{
			var currCapRate = 'capRate' + i;
			var currPrice = 'price' + i;
			var currSquareFoot = 'psf' + i;
			var currReqEquity = 'reqEquity' + i;
			var currleveragedReturn = 'leveragedReturn' + i;
			var currPriceVal = Math.round(netOpIncome / ((medianCap - (.25 * (5 - i)))/100)) ; 
			var currReqEquityVal = '';
			var currLoanAmt = Math.round((currPriceVal * (document.capRateAnalysis.loanToValue.value / 100)) * 100)/100;
			var currPwtVal = (currLoanAmt * 6 * (Math.pow(N,L))) / (1200 * (Math.pow(N,L)-1));
				currPwtVal = currPwtVal * 12;	
			var currReqEquityVal = Math.round(currPriceVal - (currPriceVal * (document.capRateAnalysis.loanToValue.value / 100)));
			var currLevReturnVal = Math.round(( (document.capRateAnalysis.netOperatingIncome.value - currPwtVal) / currReqEquityVal)*10000)/100;
																	
			document.getElementById(currCapRate).innerHTML = formatCurrency((medianCap - (.25 * (5 - i))),1)+ '%';
			document.getElementById(currPrice).innerHTML =  '$' + formatCurrency(currPriceVal,0);//Math.round(netOpIncome / ((medianCap - (.25 * (5 - i)))/100)) ; //(medianCap - (.25 * (5 - i)));
			document.getElementById(currSquareFoot).innerHTML = '$' + formatCurrency( Math.round(((netOpIncome / ((medianCap - (.25 * (5 - i)))/100)) / document.capRateAnalysis.squareFootage.value)* 100)/100,1);
			document.getElementById(currReqEquity).innerHTML = '$' + formatCurrency(currReqEquityVal,0); //Math.round(currPriceVal - (currPriceVal * (document.capRateAnalysis.loanToValue.value / 100)));
			document.getElementById(currleveragedReturn).innerHTML = currLevReturnVal + '%';
			document.getElementById('rateResults').style.display = 'inline';
			document.getElementById('sensitivityTable').style.display = 'inline';
			//document.getElementById('sensitivityTable').style.display = 'inline';
			//showHideDivs('rateResults,sensitivityTable','','');
		} 
									
	}

