
<!-- begin script

//
// Refinance Analysis
//

function CalculateRefinance(form)
{
	var dLoanAmt=0.0;
    var   dIntFactor=0.0;
 //   iTerm;
//	i;
    var iRemTerm = 0;
	var iNewTerm = 0;
	var iOrigTerm = 0;
    var iYrsLived = 0;
	var iYrsKeep = 0;
	var dInt=0.0;
    var dPrincipal=0.0;
	var dCCAmt = 0.0; 
	var dCurPI=0.0;
	var dNewPI=0.0;
	var dPIDiff=0.0;
	var dRefiCost=0.0;
	var dExistRed=0.0;
	var dNewRed=0.0;
	var dRedDiff=0.0;
	var dRefiSave=0.0;
	var dTotSave=0.0;
	var dTotCurPmt = 0.0;
	var dTotNewPmt = 0.0;
	var dMthlyPmtSvgs = 0.0;
	var iMonthsowned;
    
	if (Validate(form))
	{

		 ///Use PI entered by borrower or calculate PI for current payment 
		//Calculate Remaining Term, first convert everything to monthly 
		if ( form.Mortgage_period.options[0].selected )
			iOrigTerm = parseInt(form.Mortgage_term.value) * 12;
		else
			iOrigTerm = parseInt(form.Mortgage_term.value);

		if (form.Years_owned.value == "")
			iYrsLived = parseInt(form.Months_owned.value);
		else
		{
			if (form.Months_owned.value == "")
				iMonthsowned = 0;
			else
				iMonthsowned = parseInt(form.Months_owned.value);
			
			iYrsLived = (parseInt(form.Years_owned.value) * 12.0 ) + iMonthsowned;	
		}

		if ( form.New_mortgage_period.options[0].selected )
			iNewTerm = parseInt(form.New_mortgage_term.value) * 12;
		else
			iNewTerm = parseInt (form.New_mortgage_term.value);
		
		iRemTerm = iOrigTerm - iYrsLived;
		iYrsKeep = parseInt (form.Time_in_home.value);
		form.Time_in_home2.value = form.Time_in_home5.value = form.Time_in_home.value; 
   
		dCurPI = CalculatePI( parseFloat(form.Orig_Loan_Amount.value), parseFloat(form.IRR_From.value)/100.0, iOrigTerm);
		form.Exist_Payment_Amt.value = Math.round(dCurPI);  
    
		dNewPI = CalculatePI( parseFloat(form.New_loan_balance.value),parseFloat(form.New_IRR_From.value)/100.0, iNewTerm);
		form.New_Payment_Amt.value = Math.round(dNewPI);
		
		dPIDiff = Math.round(dCurPI) - Math.round(dNewPI);
		if (dPIDiff < 0)
		{
			dPIDiff = Math.round(dPIDiff);
			form.Payment_Difference.value = dPIDiff; 
		}
		else
			form.Payment_Difference.value = Math.round(dPIDiff);
		
		dTotCurPmt = dCurPI * ( Math.min(iRemTerm,(iYrsKeep * 12)) );
		dTotNewPmt = dNewPI * ( Math.min(iNewTerm, (iYrsKeep * 12)) );
		dMthlyPmtSvgs = dTotCurPmt - dTotNewPmt;

		if (dMthlyPmtSvgs < 0)
		{
			dMthlyPmtSvgs = Math.round(dMthlyPmtSvgs);
			form.Payment_Savings.value = dMthlyPmtSvgs;
		}
		else
			form.Payment_Savings.value = Math.round(dMthlyPmtSvgs);
 
		
	//	if  ( dCCAmt  <= 0 )
		dCCAmt = eval((form.Closing_costs.value/100.0) * form.New_loan_balance.value);
                                                        

	//	dRefiCost = (( dPoints / 100.0) * form.New_loan_balance.value) + dCCAmt;
		dRefiCost = (( 0 / 100.0) * form.New_loan_balance.value) + dCCAmt;

		form.Refi_Cost.value = Math.round(dRefiCost);
  
	//	dLoanAmt = 	parseFloat(form.Orig_Loan_Amount.value);
		dLoanAmt = 	parseFloat(form.Curr_Loan_Balance.value);
		dIntFactor = parseFloat(form.IRR_From.value)/ 1200.0;
		dPrincipal = dCurPI;
		
		//iRemTerm is in monthly format
		//Convert iYrsKeep to monthly and calculate

		if ((iYrsKeep * 12) < iRemTerm)
    			iTerm =  iYrsKeep * 12;
		else
			iTerm = iRemTerm;
				
		for (i= 1; i <= iTerm; i++)	 
		{
			dInt = dLoanAmt * dIntFactor;
			dPrincipal = dCurPI - dInt;
			dExistRed = dExistRed + dPrincipal;
			dLoanAmt = dLoanAmt - dPrincipal;
		}	 	
		form.Time_in_home3.value = iTerm/12;
		
		form.Exist_Reduction.value = Math.round(dExistRed);
    
		dLoanAmt = parseFloat (form.New_loan_balance.value);
		dIntFactor = parseFloat(form.New_IRR_From.value)/ 1200.0;
		dPrincipal = dNewPI;
    
		//iNewTerm is in monthly format
		//Convert iYrsKeep to monthly and calculate

		if ((iYrsKeep * 12) < iNewTerm)
    		iTerm =  iYrsKeep * 12;
		else
			iTerm = iNewTerm;
			
		
		for (i= 1; i <= iTerm; i++)	 
		{
			dInt = dLoanAmt * dIntFactor;
			dPrincipal = dNewPI - dInt;
			dNewRed = dNewRed + dPrincipal;
			dLoanAmt = dLoanAmt - dPrincipal;
		}	 	
		form.Time_in_home4.value = iTerm/12;
	 
		form.New_Reduction.value = Math.round(dNewRed);
		dRedDiff = dNewRed - dExistRed;
		
		if (dRedDiff < 0)
		{
			dRedDiff = Math.round(dRedDiff);
			form.Reduction_Diff.value = dRedDiff;
		}
		else
			form.Reduction_Diff.value = Math.round(dRedDiff);  
    
		dTotSave = ((dMthlyPmtSvgs + dRedDiff) - dRefiCost);
		if (dTotSave < 0)
		{
			dTotSave = Math.round(dTotSave);
			form.Total_Savings.value = dTotSave;
		}
		else
			form.Total_Savings.value = Math.round(dTotSave);  
		document.forms[0].elements[27].focus();
	//	window.location  = "#Results";
	}

	
//	document.write('Orig Term ' + iOrigTerm + 'Years Lived ' + iYrsLived + 'New Term' 
//		+ iNewTerm + 'Rem Term' + iRemTerm + 'Years Keep ' + iYrsKeep + 'Current PI ' + dCurPI
//		+ 'New PI ' + dNewPI + 'PI Diff ' + dPIDiff + 'Exist Red ' + dExistRed + 'Total Savings ' + dTotSave); 
//  window.location = "#results";
}

function CalculatePI(LoanAmt, Rate, Term)
{
    var dPI = 0.0;
    var dMthlyIntRate = Rate / 12.0;    
    var dDenominator = (Math.pow( (1+dMthlyIntRate),Term) - 1);
    var dNumerator = dMthlyIntRate * (Math.pow( (1 + dMthlyIntRate),Term) );
    dPI =  LoanAmt * (dNumerator / dDenominator);  
//	window.location  = "#Results";
    return dPI;
}      

function ResetValues(form)
{
	form.Mortgage_term.value == "30"; 
	form.Mortgage_period.options[0].selected=true;
	form.Years_owned.value == "";
	form.Months_owned.value == ""; 
	form.Orig_Loan_Amount.value == "" ;
	form.Curr_Loan_Balance.value == "" ;
	form.IRR_From.value == "" ;
	form.New_loan_balance.value == ""; 
	form.New_mortgage_term.value == "30";
	form.New_mortgage_period.options[0].selected=true;
	form.New_IRR_From.value == "" ;
	form.Closing_costs.value == "5" ;
	form.Time_in_home.value == "" ;

	form.Exist_Payment_Amt.value == "";
	form.New_Payment_Amt.value == "";
	form.Payment_Difference.value == "";
	form.Time_in_home2.value == "";
	form.Payment_Savings.value == "";
	form.Time_in_home3.value == "";
	form.Time_in_home4.value == "";
	form.Time_in_home5.value == "";
}

function Validate(form)
{
	if (form.Mortgage_term.value == "" || parseInt(form.Mortgage_term.value) == 0)
	{
		alert("A value must be entered for mortgage term");
		document.forms[0].elements[1].select();
		document.forms[0].elements[1].focus();
		return false;
	}
	else
	{
		if (form.Mortgage_period.selectedIndex == 0)
		{
			if ( parseInt(form.Mortgage_term.value) > 30 ) 
			{
				document.forms[0].elements[1].select();
				document.forms[0].elements[1].focus();
				alert("Please enter a valid Mortgage Term");
				return false;
			}
		}
		else
		{
			if ( parseInt(form.Mortgage_term.value) > 360 ) 
			{
				document.forms[0].elements[1].select();
				document.forms[0].elements[1].focus();
				alert("Please enter a valid Mortgage Term");
				return false;
			}
		}
	}



	if (form.Orig_Loan_Amount.value == "" || parseFloat(form.Orig_Loan_Amount.value) == 0)
	{
		alert ("A value must be entered for your original loan amount");
		document.forms[0].elements[3].select();
		document.forms[0].elements[3].focus();
		return false;
	}

	if (form.Curr_Loan_Balance.value == "" || parseFloat(form.Orig_Loan_Amount.value) == 0)
	{
		alert ("A value must be entered for your current loan balance");
		document.forms[0].elements[3].select();
		document.forms[0].elements[3].focus();
		return false;
	}

		
	if (form.Years_owned.value == "" || parseInt(form.Years_owned.value) == 0)
	{
		if (form.Months_owned.value == "" || parseInt(form.Months_owned.value) == 0)
		{
			document.forms[0].elements[5].select();
			document.forms[0].elements[5].focus();
			alert("A value must be entered for Years Owned or Months Owned");
			return false;
		}
	}
	if (form.IRR_From.value == "" || parseFloat(form.IRR_From.value) == 0)
	{
		alert ("A value must be entered for current interest rate");	 
		document.forms[0].elements[6].select();
		document.forms[0].elements[6].focus();
		return false;
	}
		
	if (form.New_loan_balance.value == "" || parseFloat(form.New_loan_balance.value) == 0)
	{
		alert ("A value must be entered for new loan balance");	 
		document.forms[0].elements[7].select();
		document.forms[0].elements[7].focus();
		return false;
	}
 
	if (form.New_mortgage_term.value == "" || parseInt(form.New_mortgage_term.value) == 0)
	{
		alert ("A value must be entered for new mortgage term");	 
		document.forms[0].elements[8].select();
		document.forms[0].elements[8].focus();
		return false;
	}
	else
	{
		if (form.New_mortgage_period.selectedIndex == 0)
		{
			if ( parseInt(form.New_mortgage_term.value) > 30 ) 
			{
				document.forms[0].elements[8].select();
				document.forms[0].elements[8].focus();
				alert("Please enter a valid New Mortgage Term");
				return false;
			}
		}
		else
		{
			if ( parseInt(form.New_mortgage_term.value) > 360 ) 
			{
				document.forms[0].elements[8].select();
				document.forms[0].elements[8].focus();
				alert("Please enter a valid New Mortgage Term");
				return false;
			}
		}
	}

 	if (form.New_IRR_From.value == "" || form.New_IRR_From.value == 0 )
	{
		alert ("A value must be entered for new interest rate");	 
		document.forms[0].elements[10].select();
		document.forms[0].elements[10].focus();
		return false;
	}
	
	if (form.Closing_costs.value == "" || form.Closing_costs.value == 0)
	{
		alert ("A value must be entered for closing costs");
		document.forms[0].elements[11].select();
		document.forms[0].elements[11].focus();
		return false;
	}

	if (form.Time_in_home.value == "" || form.Time_in_home.value == 0)
	{
		alert ("A value must be entered for length of time in new home");	 
		document.forms[0].elements[12].select();
		document.forms[0].elements[12].focus();
		return false;
	}
	return true;
}

function checkNum(inValue, VarName)
{
	var NewVal="";
	var bFirst = true;
	num="0123456789.";

	if (inValue != "")
	{
		for (var i=0; i<inValue.length; i++)
		{
			check=inValue.substring(i,i+1); 
			if ( num.indexOf(check) >= 0 )
			{
				if (bFirst)
				{	
					NewVal = check;
					bFirst = false;
				}
				else
					NewVal += check;
			}
		}
		
		//update new value
		document.forms[0].elements[VarName].value = NewVal;	
	}
 }

function CopyValue(NewVal, ElementNo)
{
	document.forms[0].elements[ElementNo].value = NewVal
}

function CopySelectValue(form)
{
	form.New_mortgage_period.options[form.Mortgage_period.selectedIndex].selected = true;
}

// end script -->
