
<!--
/*********************************************************************/
// initializing strings for all of the FORM ELEMENTS
// the description will appear below where their default value is set
var doc_Funds = document.BoRForm.Funds;
var doc_Income = document.BoRForm.Income;
var doc_inflation = document.BoRForm.inflation;
var doc_portfolio_return = document.BoRForm.portfolio_return;

var doc_mortgage_rate = document.BoRForm.mortgage_rate;
var doc_down_payment = document.BoRForm.down_payment;
var doc_months = document.BoRForm.months;
var doc_Buy_Expenses = document.BoRForm.Buy_Expenses;
var doc_real_estate_return = document.BoRForm.real_estate_return;
var doc_market_value = document.BoRForm.market_value;

var doc_rent = document.BoRForm.rent;
var doc_rent_expenses = document.BoRForm.rent_expenses;

//If savings are all reinvested
var doc_H28 = document.BoRForm.H28;
var doc_I28 = document.BoRForm.I28;
var doc_J28 = document.BoRForm.J28;
var doc_K28 = document.BoRForm.K28;


var doc_H29 = document.BoRForm.H29;
var doc_I29 = document.BoRForm.I29;
var doc_J29 = document.BoRForm.J29;
var doc_K29 = document.BoRForm.K29;


var doc_H30 = document.BoRForm.H30;
var doc_I30 = document.BoRForm.I30;
var doc_J30 = document.BoRForm.J30;
var doc_K30 = document.BoRForm.K30;


var doc_H31 = document.BoRForm.H31;
var doc_I31 = document.BoRForm.I31;
var doc_J31 = document.BoRForm.J31;
var doc_K31 = document.BoRForm.K31;

//If savings are all blown
var doc_H35 = document.BoRForm.H35;
var doc_I35 = document.BoRForm.I35;
var doc_J35 = document.BoRForm.J35;
var doc_K35 = document.BoRForm.K35;

var doc_H36 = document.BoRForm.H36;
var doc_I36 = document.BoRForm.I36;
var doc_J36 = document.BoRForm.J36;
var doc_K36 = document.BoRForm.K36;

var doc_H37 = document.BoRForm.H37;
var doc_I37 = document.BoRForm.I37;
var doc_J37 = document.BoRForm.J37;
var doc_K37 = document.BoRForm.K37;

var doc_H38 = document.BoRForm.H38;
var doc_I38 = document.BoRForm.I38;
var doc_J38 = document.BoRForm.J38;
var doc_K38 = document.BoRForm.K38;



// initializing the variables for the computations



// ______________
// 'Input-output'
var var_Funds;
var var_Income;
var var_inflation;
var var_portfolio_return;

var var_mortgage_rate;
var var_down_payment;
var var_months;
var var_Buy_Expenses;
var var_real_estate_return;
var var_market_value;

var var_rent;
var var_rent_expenses;

//If savings are all reinvested
var var_H28;
var var_I28;
var var_J28;
var var_K28;

var var_H29;
var var_I29;
var var_J29;
var var_K29;

var var_H30;
var var_I30;
var var_J30;
var var_K30;

var var_H31;
var var_I31;
var var_J31;
var var_K31;

//If savings are all blown
var var_H35;
var var_I35;
var var_J35;
var var_K35;

var var_H36;
var var_I36;
var var_J36;
var var_K36;

var var_H37;
var var_I37;
var var_J37;
var var_K37;

var var_H38;
var var_I38;
var var_J38;
var var_K38;


// _______________________________
// Cash Flow - Purchased Residence

var pur_H3;
var pur_H4;
var pur_H5;
var pur_H6;
var pur_H7;
var pur_H8;
var pur_H9;
var pur_H10;
var pur_H11;
var pur_H12;

var pur_InterestPMT_C = new Array();
var pur_PrincipalPMT_D = new Array();
var pur_TotalPMT_E;
var pur_Outstanding_F = new Array();
var pur_OutFlow_H;
var pur_ResidenceValue_J = new Array();
var pur_AssetValue_K = new Array();
var pur_TotalWealth_L = new Array();
var pur_AssVal_M = new Array();
var pur_TotWlth_N = new Array();

// __________________
// Cash Flow - Rental

var aRen_outflow_F;
var aRen_wealth_H = new Array();
var aRn_wlth_I = new Array();

	/*****************************************************************************/
	/*                               Input-output                                */


// ---------------------- SETTING THE DEFAULTS ------------------------
// Values are given to the form elements but computation are made with variables which 
// are set with the document.form.element.value 



// setting up the defaults for the form elements


//Input Region: 
/*

// 


doc_Funds.value = 50000.00;	// Funds available for real estate and/or investment:
doc_Income.value = 3000.00;	// Disposable monthly income available for housing or investing:
doc_inflation.value = 2.5;	// Estimate of the long-term inflation rate:
doc_portfolio_return.value = 8.5;	// Estimate of after-tax return on portfolio investments:

// Input related to the purchased residence:
doc_mortgage_rate.value = 7.25;	// Annual equivalent (APR) mortgage rate:
doc_down_payment.value = 30000.00;	// Down payment:
doc_months.value = 360;	// Months until maturity, amortization period (max 360):
doc_Buy_Expenses.value = 800.00;	// Monthly expenses for purchased residence:
doc_real_estate_return.value = 3.0;	// Expected (after-tax) return on real estate:
doc_market_value.value = 300000.00;	// Market value of the purchased residence:

// Input related to the rented residence:
doc_rent.value = 2000.00;	// Monthly rent:
doc_rent_expenses.value = 100.00;	// Monthly expenses associated with the rental:


doc_H28.value = 5;	// 5 years
doc_H29.value = 10;	// 10 years
doc_H30.value = 15;	// 15 years
doc_H31.value = 30;	// 30 years
*/



	/*                               Input-output                                */
	/*****************************************************************************/




/*_______________________________________________________________________*/
/******************************* FUNCTION ********************************/
function updateBoR()
{
	/***********************************************************************/
	/*                               Input-output                          */
	
	/********************************************/
	//setting up the variable for the computation
	
	// 
	
	//Input: Information About Current Mortgage
	var_Funds = eval(isNumeric(doc_Funds.value));							// I7
	var_Income = eval(isNumeric(doc_Income.value));						// I8
	var_inflation = eval(isNumeric(doc_inflation.value))/100;	// I9 percentage
	var_portfolio_return = eval(isNumeric(doc_portfolio_return.value))/100;	// I10 percentage
	
	//Input related to the purchased residence:
	var_mortgage_rate = eval(isNumeric(doc_mortgage_rate.value))/100;	// I13 percentage
	var_down_payment = eval(isNumeric(doc_down_payment.value));				// I14
	
		// MAX allowed of 360 months
	var_months = eval(isNumeric(doc_months.value));										// I15
	if(var_months > 360)
	{
		alert("You have entered a value that exceed the maximum allowed for months, this would give you an erronous result. \n The maximum nunber of months is 360. This field will be reset to 360");
		var_months = 360;
		doc_months.value = 360;
	}
	
	var_Buy_Expenses = eval(isNumeric(doc_Buy_Expenses.value));				// I16
	var_real_estate_return = eval(isNumeric(doc_real_estate_return.value))/100;		// I17 percentage
	var_market_value = eval(isNumeric(doc_market_value.value));				// I18
	
	// Input related to the rented residence:
	var_rent = eval(isNumeric(doc_rent.value));												// I21
	var_rent_expenses = eval(isNumeric(doc_rent_expenses.value));			// I22
	
	
	// Output - Years
	var_H28 = eval(doc_H28.value);											// I28
	var_H29 = eval(doc_H29.value);											// I29
	var_H30 = eval(doc_H30.value);											// I30
	var_H31 = eval(doc_H31.value);
	// Output - Years
	var_H35 = eval(doc_H35.value);											// I35
	var_H36 = eval(doc_H36.value);											// I36
	var_H37 = eval(doc_H37.value);											// I37
	var_H38 = eval(doc_H38.value);											// I31
	
	
	/*                               Input-output                        */
	/* ------------------------------------------------------------------*/
	
	
	
	/* --------------------------------------------------------------------------*/
	/*                       Cash Flow - Purchased Residence                     */
	// 
	
	pur_H3 = var_mortgage_rate; // ='Input-output'!I13
	pur_H4 = var_market_value - var_down_payment; // ='Input-output'!I18-'Input-output'!I14
	pur_H5 = var_Funds - var_down_payment; // ='Input-output'!I7-('Input-output'!I14)
	pur_H6 = var_months; // ='Input-output'!I15
	// =H4/((1-(1/((1+'Input-output'!I13/200)^('Input-output'!I15/6))))/((1+'Input-output'!I13/200)^(1/6)-1))
	pur_H7 = pur_H4/((1-(1/(Math.pow((1+var_mortgage_rate/2),(var_months/6)))))/(Math.pow((1+var_mortgage_rate/2),(1/6))-1))
	pur_H8 = var_Income; // ='Input-output'!I8
	pur_H9 = var_market_value; // ='Input-output'!I18
	pur_H10 = var_Buy_Expenses; // ='Input-output'!I16
	pur_H11 = var_real_estate_return; // ='Input-output'!I17
	pur_H12 = var_portfolio_return; // ='Input-output'!I10
	
	/*                       Cash Flow - Purchased Residence                     */
	/* --------------------------------------------------------------------------*/
	
	
/*
var pur_InterestPMT_C = new array;
var pur_PrincipalPMT_D = new array;
var pur_TotalPMT_E;
var pur_Outstanding_F = new array;
var pur_OutFlow_H;
var pur_ResidenceValue_J = new array;
var pur_AssetValue_K = new Array();
var pur_TotalWealth_L = new Array();
*/	
	
	/* ------------------------------------------------------------------*/
	/*                               Output                              */
	
	
	//                   Cash Flow - Purchased Residence - LOOP                    
	// __________________________________________________________________________	
	// arrays containing the values of the "Cash Flow - Purchased Residence" data
	for(i=1; i<=360; i++)
	{
							//________________________
		if(i==1) // just for the first month
		{
		
		
			//____________________ Interest Payment _______________________________________
			//pur_InterestPMT_C=IF(B18<='Input-output'!$I$15,H4*((1+'Input-output'!I13/200)^(1/6)-1),"")
			pur_InterestPMT_C[i] = pur_H4*(Math.pow((1+var_mortgage_rate/2),(1/6))-1);			
			
			
			 
			//_________________________________________________________
			//____________________ Total Mortgage Payment _______________
			//=IF(B18<='Input-output'!$I$15,"Monthly mortgage payment","")
			pur_TotalPMT_E = pur_H7;
			
				
	 		//____________________ Principal RePayment ___________
			//pur_PrincipalPMT_D=IF(B18<='Input-output'!$I$15,E18-C18,"")
			pur_PrincipalPMT_D[i] = pur_TotalPMT_E - pur_InterestPMT_C[i];
			
			
			
			//____________________ Principal Outstanding _______________________
			//pur_Outstanding_F=IF(B18<='Input-output'!$I$15,H4-D18,0)
			pur_Outstanding_F[i] = pur_H4 - pur_PrincipalPMT_D[i];
			
			
			
			//____________________ Total Cash OutFlow _______________________
			//pur_OutFlow_H=IF(E18<>"",E18)+G18
			if(pur_TotalPMT_E != 0)
			{
				pur_OutFlow_H = pur_TotalPMT_E + pur_H10;
			}else{//=IF(B19<='Input-output'!$I$15,F18-D19,0)
				pur_OutFlow_H = 0;
			}
			
			
			
			//____________________ Value of Residence  _______________________
			//pur_ResidenceValue_J=H9*(1+$H11/100)^(1/12)
			pur_ResidenceValue_J[i] = pur_H9*Math.pow((1+pur_H11),(1/12));			
			
			
			//____________________ Value of invested assets K _______________________
			//pur_AssetValue_K=I18-H18+H5*(1+'Input-output'!I10/100)^(1/12)
			pur_AssetValue_K[i]=pur_H8-pur_OutFlow_H+pur_H5*Math.pow((1+var_portfolio_return),(1/12));			
			
			
			//____________________ Total Wealth L _______________________
			//pur_TotalWealth_L=J18+K18-F18
			pur_TotalWealth_L[i]=pur_ResidenceValue_J[i]+pur_AssetValue_K[i]-pur_Outstanding_F[i];
			
			
			//____________________ Value of invested assets M _______________________
			//pur_AssVal_M=H5*(1+'Input-output'!$H$12/100)^(1/12)
			pur_AssVal_M[i]=pur_H5;//*Math.pow((1+var_portfolio_return),(1/12)) **
			// ** I've commented this protion out because the excel sheet doesn't seem to take it into consideration			
			
			
			//____________________ Total Wealth N _______________________
			//pur_TotWlth_N=J18+M18-F18
			pur_TotWlth_N[i]=pur_ResidenceValue_J[i]+pur_AssVal_M[i]-pur_Outstanding_F[i];
			
			
			
			
						//___________________________________________________________________________________
		}else{ // _________________________from the second month and on ...__________________________
		
		
		
		
			//____________________ Interest Payment _______________________________________
			//pur_InterestPMT_C=IF(B19<='Input-output'!$I$15,  F18*((1+'Input-output'!$I$13/200)^(1/6)-1),"")
			pur_InterestPMT_C[i] = pur_Outstanding_F[i-1]*(Math.pow((1+var_mortgage_rate/2),(1/6))-1);			
			
			
			
			//____________________ Total Mortgage Payment _______________
			//=IF(B18<='Input-output'!$I$15,"Monthly mortgage payment","")
			pur_TotalPMT_E = pur_H7;
			
			
	 		//____________________ Principal RePayment ___________
			//pur_PrincipalPMT_D=IF(B18<='Input-output'!$I$15,E18-C18,"")
			pur_PrincipalPMT_D[i] = pur_TotalPMT_E - pur_InterestPMT_C[i];	
			
			
			
			//____________________ Principal Outstanding _________
			//pur_Outstanding_F=IF(B18<='Input-output'!$I$15,H4-D18,0)
			pur_Outstanding_F[i] = pur_Outstanding_F[i-1] - pur_PrincipalPMT_D[i];
			
			
			
			//____________________ Total Cash OutFlow _______________________
			//pur_OutFlow_H=IF(E18<>"",E18)+G18
			if(pur_TotalPMT_E != 0)
			{
				pur_OutFlow_H = pur_TotalPMT_E + pur_H10;
			}else{//=IF(B19<='Input-output'!$I$15,F18-D19,0)
				pur_OutFlow_H = 0;
			}
			
			
			
			//____________________ Value of Residence  _______________________
			//pur_ResidenceValue_J=H9*(1+$H11/100)^(1/12)
			pur_ResidenceValue_J[i] = pur_ResidenceValue_J[i-1]*Math.pow((1+pur_H11),(1/12));
			
			
			
			//____________________ Value of invested assets K _______________________
			//pur_AssetValue_K=I19-H19+K18*(1+$H$12/100)^(1/12)
			pur_AssetValue_K[i]=pur_H8-pur_OutFlow_H+pur_AssetValue_K[i-1]*Math.pow((1+pur_H12),(1/12));
			
			
			
			//____________________ Total Wealth L _______________________
			//pur_TotalWealth_L=J18+K18-F18
			pur_TotalWealth_L[i]=pur_ResidenceValue_J[i]+pur_AssetValue_K[i]-pur_Outstanding_F[i];
			
			
			//____________________ Value of invested assets M _______________________
			//pur_AssVal_M=M18*(1+$H$12/100)^(1/12)
			pur_AssVal_M[i]=pur_AssVal_M[i-1]*Math.pow((1+pur_H12),(1/12));
			
			
			
			//____________________ Total Wealth N _______________________
			//pur_TotWlth_N=J18+M18-F18
			pur_TotWlth_N[i]=pur_ResidenceValue_J[i]+pur_AssVal_M[i]-pur_Outstanding_F[i];
			
			
			
		}
		 
	}//---------------------- Cash Flow - Purchased Residence - LOOP -------------------
	
/*		
var Purchasedval = "####[cccc][dddd][eeee][ffff][hhhh][jjjj][kkkk][llll][mmmm][nnnn]\n";
	for(i=1; i<=5; i++){
	Purchasedval = Purchasedval+i+"=["+Math.round(pur_InterestPMT_C[i] )+"]["+Math.round(pur_PrincipalPMT_D[i])+"]["+Math.round(pur_TotalPMT_E)+"]["+Math.round(pur_Outstanding_F[i])+"]["+Math.round(pur_OutFlow_H)+"]["+Math.round(pur_ResidenceValue_J[i])+"]["+Math.round(pur_AssetValue_K[i])+"]["+Math.round(pur_TotalWealth_L[i])+"]["+Math.round(pur_AssVal_M[i])+"]["+Math.round(pur_TotWlth_N[i])+"]"+"\n";
	}
	alert(Purchasedval);*/
	// ----------------------- Cash Flow - Rental - LOOP ---------------------------------                    
	// _____________________________________________________________
	// arrays containing the values of the "Cash Flow - Rental" data
	for(i=1; i<=360; i++)
	{
		aRen_outflow_F = var_rent + var_rent_expenses; // =D14+E14
		
		// =G5*(1+$G7/100)^(1/12)+G14-F14
		if(i==1)// first month only
		{
			aRen_wealth_H[i] = var_Funds*Math.pow((1+var_portfolio_return),(1/12))+var_Income-aRen_outflow_F; 
			aRn_wlth_I[i] = var_Funds*Math.pow((1+var_portfolio_return),(1/12)); 
		}else{ //all other months
			//=H14*(1+$G$7/100)^(1/12)+G15-F15
			aRen_wealth_H[i] = aRen_wealth_H[i-1]*Math.pow((1+var_portfolio_return),(1/12))+var_Income-aRen_outflow_F; 
			aRn_wlth_I[i] = aRn_wlth_I[i-1]*Math.pow((1+var_portfolio_return),(1/12)); 
		}
		
	}// ---------------------------- Cash Flow - Rental - LOOP --------------------------------
	
	
	//alert(pur_TotalWealth_L[60]);
	
	// If savings  are all reinvested
	// Buy house for 
	var_I28 = pur_TotalWealth_L[60];	// 5 years
	var_I29 = pur_TotalWealth_L[120];	// 10 years
	var_I30 = pur_TotalWealth_L[180];	// 15 years
	var_I31 = pur_TotalWealth_L[360];	// 30 years
	
	// Rent house for 
	var_J28 = aRen_wealth_H[60];	// 5 years
	var_J29 = aRen_wealth_H[120];	// 10 years
	var_J30 = aRen_wealth_H[180];	// 15 years
	var_J31 = aRen_wealth_H[360];	// 30 years
	
	// Difference 
	var_K28 = var_I28 - var_J28;	// 5 years
	var_K29 = var_I29 - var_J29;	// 10 years
	var_K30 = var_I30 - var_J30;	// 15 years
	var_K31 = var_I31 - var_J31;	// 30 years

	
	// If savings  are all blown
	// Buy house for 
	var_I35 = pur_TotWlth_N[60];	// 5 years
	var_I36 = pur_TotWlth_N[120];	// 10 years
	var_I37 = pur_TotWlth_N[180];	// 15 years
	var_I38 = pur_TotWlth_N[360];	// 30 years
	
	// Rent house for 
	var_J35 = aRn_wlth_I[60];	// 5 years
	var_J36 = aRn_wlth_I[120];	// 10 years
	var_J37 = aRn_wlth_I[180];	// 15 years
	var_J38 = aRn_wlth_I[360];	// 30 years
	
	// Difference 
	var_K35 = var_I35 - var_J35;	// 5 years
	var_K36 = var_I36 - var_J36;	// 10 years
	var_K37 = var_I37 - var_J37;	// 15 years
	var_K38 = var_I38 - var_J38;	// 30 years


	//_____________________
	// Inflation adjustment
	/*var_L28 = 1*Math.pow((1+var_inflation),var_H28); // =1*(1+inflation/100)^H28
	var_L29 = 1*Math.pow((1+var_inflation),var_H29); // =1*(1+inflation/100)^H29
	var_L30 = 1*Math.pow((1+var_inflation),var_H30); // =1*(1+inflation/100)^H30
	var_L31 = 1*Math.pow((1+var_inflation),var_H31); // =1*(1+inflation/100)^H31*/
	
	/*                               Output                              */
	/* ------------------------------------------------------------------*/
	
	
	

	
	
	/* ------------------------------------------------------------------*/
	/*                   setting values to the form fields               */
	
	
		
	doc_Funds.value = cash(var_Funds);	// Funds available for real estate and/or investment:
	doc_Income.value = cash(var_Income);	// Disposable monthly income available for housing or investing:
	doc_inflation.value = decimal(var_inflation*100);	// Estimate of the long-term inflation rate:
	doc_portfolio_return.value = decimal(var_portfolio_return*100);	// Estimate of after-tax return on portfolio investments:
	
	// Input related to the purchased residence:
	doc_mortgage_rate.value = decimal(var_mortgage_rate*100);	// Annual equivalent (APR) mortgage rate:
	doc_down_payment.value = cash(var_down_payment);	// Down payment:
	doc_months.value = decimal(var_months);	// Months until maturity, amortization period (max 360):
	doc_Buy_Expenses.value = cash(var_Buy_Expenses);	// Monthly expenses for purchased residence:
	doc_real_estate_return.value = decimal(var_real_estate_return*100);	// Expected (after-tax) return on real estate:
	doc_market_value.value = cash(var_market_value);	// Market value of the purchased residence:
	
	// Input related to the rented residence:
	doc_rent.value = cash(var_rent);	// Monthly rent:
	doc_rent_expenses.value = cash(var_rent_expenses);	// Monthly expenses associated with the rental:


	// If savings  are all reinvested
	doc_H28.value = var_H28;
	doc_I28.value = cash(var_I28);
	doc_J28.value = cash(var_J28);
	doc_K28.value = cash(var_K28);
	
	doc_H29.value = var_H29;
	doc_I29.value = cash(var_I29);
	doc_J29.value = cash(var_J29);
	doc_K29.value = cash(var_K29);
	
	doc_H30.value = var_H30;
	doc_I30.value = cash(var_I30);
	doc_J30.value = cash(var_J30);
	doc_K30.value = cash(var_K30);
	
	doc_H31.value = var_H31;
	doc_I31.value = cash(var_I31);
	doc_J31.value = cash(var_J31);
	doc_K31.value = cash(var_K31);
	
	
	// If savings  are all blown
	doc_H35.value = var_H35;
	doc_I35.value = cash(var_I35);
	doc_J35.value = cash(var_J35);
	doc_K35.value = cash(var_K35);
	
	doc_H36.value = var_H36;
	doc_I36.value = cash(var_I36);
	doc_J36.value = cash(var_J36);
	doc_K36.value = cash(var_K36);
	
	doc_H36.value = var_H37;
	doc_I37.value = cash(var_I37);
	doc_J37.value = cash(var_J37);
	doc_K37.value = cash(var_K37);
	
	doc_H38.value = var_H38;
	doc_I38.value = cash(var_I38);
	doc_J38.value = cash(var_J38);
	doc_K38.value = cash(var_K38);
	
	
}

// set the value to the result fields
updateBoR();
//-->