
function pmt(PV, IR, NP)
{

	  var PMT = (PV * IR) / (1 - Math.pow(1 + IR, -NP));
	  //PMT=round_decimals(PMT,4)
	  //alert(PMT);
	  return (PMT);

}

function rate(Periods,Payment,Amount)
{
    var y  = 0;
    var n  = Periods ;
    var z  = Payment / Amount ;
    var x  = 1.1 ;
    while (Math.floor((y - 1) * 10000) != Math.floor((x - 1) * 10000))                                                              
    {
		y = x;
		x = y - ((Math.pow(y, n + 1) - (Math.pow(y, n) * (z + 1)) + z) / (((n + 1) * Math.pow(y, n)) - (n * (z + 1) * Math.pow(y, n - 1))));
		
    }
	return((x-1)*12*100);
}


function getPV(pmt,i,n)
{

	var v=Math.pow((1+i),-n);

	var pv=pmt*(1-v)/i;

	return(Math.round(pv));
}


// Common functionc for validations
// Sachin Karalay

 function  Comp( eleid1,eleid2,f1,f2 )
    {
        var id1 = document.getElementById(eleid1);
        var id2 = document.getElementById(eleid2);
		if (id1)
			;
        else 
			return true; 
        
		  
        var elem1 =removeThousandsSeparator( Trim(id1.value));
	    var elem2 =removeThousandsSeparator( Trim(id2.value));
		if( eval(elem1) > eval(elem2) )
	    {
		    alert(f1 + " can not exceed " + f2);
			return false;
					  
		}
		return true;
	}

 function  CheckStringValidity( eleid,eleName,max,min,msg )
    {
        var id = document.getElementById(eleid);

	if (id)
			;
        else 
			return true 
              
        var  elem =removeThousandsSeparator( Trim(id.value));
	    
		if( elem == "")
	    {
		    
		   if(msg=="")
		   	   alert("Please enter "+ eleName );
		   else
		    alert(msg);
		    
		   id.focus();
		   id.select()
		   
           return false; 
		 }
		   else
		   {
				 if(max != -1)
				  {									
					if( elem.length > max)
						{
						alert(eleName + " should contain maximum " + max + " characters");
						id.focus();
						id.select()		   
						return false;     						 		
						}						
				  }	   
				  
				  if(min!=-1)
					{
						if(elem.length < min )
						{
							alert(eleName + " must contain at least " + min + " characters");
							id.focus();
							id.select()		   
							return false;	                			
						}
					}
			}	
          return true ;
      
	  
	  }


// Sachin Karalay


function Checknegative(value1)
{
	var res;
	if(value1 > 0)
	{
		res=(Math.round(value1));
	}
	else
	{
		res="NA";
	}
	return res;
}

function  Checknull( eleid )
{
    var id = document.getElementById(eleid);

	if (id)
			;
        else 
			return true 
              
   var  elem =removeThousandsSeparator( Trim(id.value));
	    
   if( elem == "")
   {
	    elem='0';
   }
	   return true ;
}

function Trim(str)
{
	 return RTrim(LTrim(str));
}

function LTrim(str)
{
  var whitespace = new String(" \t\n\r");
  var s = new String(str);

  if (whitespace.indexOf(s.charAt(0)) != -1) 
   {
    var j=0, i = s.length;
    while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
      j++;
    s = s.substring(j, i);
   }
  return s;
}

function RTrim(str)
 {
  var whitespace = new String(" \t\n\r");
  var s = new String(str);
  if (whitespace.indexOf(s.charAt(s.length-1)) != -1) 
   {
     var i = s.length - 1;
     while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
       i--;
     s = s.substring(0, i+1);
    }
  return s;
}

function isFloat(ele,msg)
{
	 var reFloat=/^\d+(\.\d+)?$/;
	 var element=document.getElementById(ele);

	//alert(removeThousandsSeparator(element.value));
	 if( ! reFloat.test(removeThousandsSeparator(element.value)))
		{
			alert("Please input correct value for " + msg);
			element.focus();
			return false;
		}
	return true;
}
/*********************************************************/
	function calculatePMI(ele1,ele2)
	{
			var element1 = document.getElementById(ele1);
			var element2 = document.getElementById(ele2);
			
			var ele1Value = element1.value;
			var ele2Value = element2.value;
			
			var calValue = ((3/100)/12) * ele2Value;
			
			if(ele1Value > calValue)
			{
					alert("Monthly PMI is greater");
					return false;
			}
		 	return true;  	
	}
/*********************************************************/

function isValidRange(ele,min,max,msg)
{
     var element=document.getElementById(ele);

     if(document.getElementById(ele).value< min|| document.getElementById(ele).value>max)
	  {
		  alert("Please input the correct value for " + msg + ". Values cannot exceed " + max + "%" );
		  element.focus();
		  return false;
	  }
	  return true;
}

function isValidRange1(ele,min,max,msg)
{
     var element=document.getElementById(ele);
	 var ele_val=element.value;

//alert("min=" + min);
//alert("max=" + max);
	 //alert("element value=  " + ele_val);

	 var val =removeThousandsSeparator(ele_val);// removeThousandsSeparator(element.value);

	 //alert("element value(removeThousandsSeparator)= " +val);

     if(val< min|| val>max)
	  {
		  alert("Please input the correct value for " + msg + ". Values cannot exceed " + AddThousandsSeparator(max));
		  element.focus();
		  return false;
	  }
	 // alert("ok");
	  return true;
}

function IsNegative(strString)
{
   var strChar;
      var blnResult = true;
   for (i = 0; i<strString.length; i++)
   {   
     blnResult == true;
     strChar = strString.charAt(i);
     if (strChar == "-")
      {
        blnResult = false;
       }
     }
   return blnResult;
}
  
   
 function IsNumeric(strString)//negative
//  check for valid numeric strings
   {
   
   var strValidChars = "0123456789.,";
   var strChar;
   var blnResult = true;
   var i;
  // if (strString.length == 0) return false;
   for (i = 0; i<strString.length; i++)
      {   
       blnResult == true;
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
   }  
   
   function IsInteger(strString)//negative
//  check for valid numeric strings
   {
   
   var strValidChars = "0123456789";
   var strChar;
   var blnResult = true;
   var i;
  // if (strString.length == 0) return false;
   for (i = 0; i<strString.length; i++)
      {   
       blnResult == true;
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
   }  


//*****************************************************************
// Function for thousand seperator
//*****************************************************************

	function AddThousandsSeparator(val)
   { 
	if(val !="NA")
	   {
		var Content = val.toString();                
		var temp="";

		var str1="hhhh";
		var str2="";
	
		if (Content.indexOf(".") != -1) 
	   {
			var ind=Content.indexOf('.');
			str1=Content.substring(0,ind);
			str2=Content.substring(ind,Content.length-1);
			Content=str1;

		 }
	  	
		Content=Content.split(',').join('');
			 
		s=Content.split('').reverse();
		  for(i=0;i<s.length;i++)
				{

					if((i)%3==0 && i!=0)
					temp+=',';
					temp+=s[i];
						 
				}
            
		var formattedString=temp.split('').reverse().join('');
		formattedString=formattedString + str2;
	   }
	   else
	   {
		   formattedString ="NA"
	   }

		return formattedString ;
		
    }

	function removeThousandsSeparator(val)
	{
      var str=val.toString();  
	  
	  str=str.split(',').join('');
	  	 	  
	  return str;
	}


//*****************************************************************
//interest only calculator
//*****************************************************************
/*	
	function interestOnly(loanAmount,intRate,loanTerm)
{
	var monthlyPayment=loanAmount*intRate/12;
	var totalIntPaid=monthlyPayment*loanTerm*12;

    document.getElementById('txtMonthlyPayment').value=monthlyPayment;
//	document.write("monthlyPayment=" + monthlyPayment);
    document.getElementById('txtTotalInterestRate').value=totalIntPaid;
//	document.write("<br>totalIntPaid=" + totalIntPaid);
}
*/

//*****************************************************************
//Home Affordability Calculator
//*****************************************************************

 function affordability(GrossAI,DownPaymentPerc,MonthlyDebt,Points,MortgageRate,LoanTerm,ClosingCost,APTaxes,AHOInsurance)
{

var c3=(GrossAI); 
var c4=DownPaymentPerc;//(DownPaymentPerc)/100;
//alert("c4  " + c4);  
var c5=(MonthlyDebt);
var c6=(MortgageRate)/100;
var c7=(LoanTerm);
var c8=(APTaxes);
var c9=(AHOInsurance);
var c10=(Points);
var c11=(ClosingCost);

var c24=0.28;
var d24=0.33;
var c25=0.36;
var d25=0.45;
/*var c24;

	if(c6<0.2) c24=0.28;
	else c24=0.33;//0.30;

var d24;//=IF(C4<10%,30%,IF(AND(C4>10%,C4<20%),33%,36%))
	if(c4<0.01) d24=0.33;//0.30;
	else if(c4>0.01 && c4<0.02) d24=0.33;
		 else d24=0.36;



var c25=0.36;

var d25;
	if(c4<0.10) d25=0.45;//0.38;
	else if(c4>0.10 && c4<0.20) d25=0.40
		else d25=0.42;

*/
var c27=c24*c3/12;

var d27=d24*c3/12;

var c28=(c27+c5)/(c3/12);

var d28=(d27+0)/(c3/12);

var c30=c8/12;

var d30=c8/12;

var c31=c9/12;

var d31=c9/12;

var c32=c25*c3/12-c27;  


var d32=d25*c3/12-d27;

var c34;
	if(c5<=c32) c34=c27;
	else c34=c27-(c5-c32);

var d34;
	if(c5<=d32) d34=d27;   
	else d34=d27-(c5-d32);

var g12=c7; //Loan Term Years


	// Calculate Interest Factor
		var temp;
		var intFactor=0;
			for(month=1;month<=g12*12;month++)
			{
			  if(month<=g12*12) temp=1/(Math.pow((1+c6/12),month));
				  else temp=0;
			  //document.write(temp + "<br>");
			  intFactor=intFactor+temp;
			}


var i26=intFactor;
var c36=(c34-c30-c31)/(1/i26);
var d36=(d34-d30-d31)/(1/i26);
//alert("c36  " +c36);
//alert("d36  " +d36);

var c37=c36 + (c4);//c36/(1-c4);
var d37=d36 + (c4);//d36/(1-c4);
//alert("c37  " +c37);
//alert("d37  " +d37);

var c39=pmt(c36,c6/12,g12*12);
var d39=pmt(d36,c6/12,g12*12);


var c42=c37-c36;
var d42=d37-d36;
//alert(c42);
//checking infinity

///checking -ve

c39=Checknegative(c39);
d39=Checknegative(d39);

c30=Checknegative(c30);
d30=Checknegative(d30);

c31=Checknegative(c31);
d31=Checknegative(d31);

c36=Checknegative(c36);
d36=Checknegative(d36);

c42=Checknegative(c42);
d42=Checknegative(d42);

c37=Checknegative(c37);
d37=Checknegative(d37);

var Monthly_Payment1=0;//c39+c30+c31;
if(c39 >0)
{
	Monthly_Payment1=Monthly_Payment1+c39;
}
if(c30 >0)
{
	Monthly_Payment1=Monthly_Payment1+c30;
}
if(c31 >0)
{
	Monthly_Payment1=Monthly_Payment1+c31;
}

	
	
var Monthly_Payment2=0;//d39+d30+d31;
if(d39 !="NA")
{
	Monthly_Payment2=Monthly_Payment2+d39;
}
if(d30 !="NA")
{
	Monthly_Payment2=Monthly_Payment2+d30;
}
if(d31 !="NA")
{
	Monthly_Payment2=Monthly_Payment2+d31;
}


var reFloat1=/^\d+(\.\d+)?$/;
	
if(  reFloat1.test(removeThousandsSeparator(c42)) && (removeThousandsSeparator(c42)) >0)
		
{
	
//document.write("<table border=1>");

var mHTML="<table class='nor-text' cellspacing='1' cellpadding='2' border='0' >";
//document.write("<tr><td>Details : </td><td>Conservative</td><td>Aggressive</td></tr>");
mHTML=mHTML + "<tr class='resulttext'><td bgcolor='#A1A3A4' width='210'><b>Details </b> </td><td bgcolor='#A1A3A4' width='160' align='right'><b>Conservative</b></td><td bgcolor='#A1A3A4' width='160' align='right'><b>Aggressive</b></td></tr>";
//document.write("<tr><td>P & I : </td><td>" + c39 + "</td><td>" + d39 + "</td></tr>");
mHTML=mHTML + "<tr><td bgcolor='#E4E4E4'>Principal + Interest  </td><td align='right' bgcolor='#E4E4E4'>" + (AddThousandsSeparator((c39)))  + "</td><td align='right' bgcolor='#E4E4E4'>" + (AddThousandsSeparator((d39)))  + "</td></tr>";

//
//
//document.write("<tr><td>P T : </td><td>" + c30 + "</td><td>" + d30 + "</td></tr>");
mHTML=mHTML + "<tr><td bgcolor='#E4E4E4'>Property Taxes  </td><td align='right' bgcolor='#E4E4E4'>" + AddThousandsSeparator((c30)) + "</td><td align='right' bgcolor='#E4E4E4'>" + AddThousandsSeparator((d30)) + "</td></tr>";
//document.write("<tr><td>HO ins : </td><td>" + c31 + "</td><td>" + d31 + "</td></tr>");
mHTML=mHTML + "<tr><td bgcolor='#E4E4E4'>HO Insurance  </td><td align='right' bgcolor='#E4E4E4'>" + AddThousandsSeparator((c31)) + "</td><td align='right' bgcolor='#E4E4E4'>" + AddThousandsSeparator((d31)) + "</td></tr>";
//document.write("<tr><td>Monthly Payment :</td><td>" + (c39+c30+c31) + "</td><td>" + (d39+d30+d31) + "</td></tr>");

/*mHTML=mHTML + "<tr><td bgcolor='#E4E4E4'>Monthly Payment </td><td align='right' bgcolor='#E4E4E4'>" + AddThousandsSeparator((c39+c30+c31)) + "</td><td align='right' bgcolor='#E4E4E4'>" + AddThousandsSeparator((d39+d30+d31)) + "</td></tr>";
*/

mHTML=mHTML + "<tr><td bgcolor='#E4E4E4'>Monthly Payment </td><td align='right' bgcolor='#E4E4E4'>" + AddThousandsSeparator((Monthly_Payment1)) + "</td><td align='right' bgcolor='#E4E4E4'>" + AddThousandsSeparator((Monthly_Payment2)) + "</td></tr>";



//document.write("<tr><td>Loan amt : </td><td>" + c36 + "</td><td>" + d36 + "</td></tr>");
mHTML=mHTML + "<tr><td bgcolor='#E4E4E4'>Loan Amount  </td><td align='right' bgcolor='#E4E4E4'>" + AddThousandsSeparator((c36)) + "</td><td align='right' bgcolor='#E4E4E4'>" + AddThousandsSeparator((d36)) + "</td></tr>";
	mHTML=mHTML + "<tr><td  bgcolor='#E4E4E4'>Down Payment  </td><td align='right' bgcolor='#E4E4E4'>" + AddThousandsSeparator((c42)) + "</td><td align='right' bgcolor='#E4E4E4'>" + AddThousandsSeparator((d42)) + "</td></tr>";
//document.write("<tr><td>House Price : </td><td>" + c37 + "</td><td>" + d37 + "</td></tr>");
mHTML=mHTML + "<tr><td bgcolor='#E4E4E4'>House Price  </td><td align='right' bgcolor='#E4E4E4'>" +  AddThousandsSeparator((c37)) + "</td><td align='right' bgcolor='#E4E4E4'>" + AddThousandsSeparator((d37)) + "</td></tr>";
}
else
{
	
//	(d31)+ (d30)
var Monthly_Payment3=0;//d39+d30+d31;
if(d31 !="NA")
{
	Monthly_Payment3=Monthly_Payment3+d31;
}
if(d30 !="NA")
{
	Monthly_Payment3=Monthly_Payment3+d30;
}
Monthly_Payment3=Math.round(Monthly_Payment3);

//document.write("<table border=1>");

var mHTML="<table class='nor-text' cellspacing='1' cellpadding='2' border='0' >";
//document.write("<tr><td>Details : </td><td>Conservative</td><td>Aggressive</td></tr>");
mHTML=mHTML + "<tr class='resulttext'><td bgcolor='#A1A3A4' width='210' colspan='2'><b>Details </b> </td>";

//document.write("<tr><td>P & I : </td><td>" + c39 + "</td><td>" + d39 + "</td></tr>");
mHTML=mHTML + "<tr><td bgcolor='#E4E4E4'  width='210'>Principal + Interest  </td><td align='right' bgcolor='#E4E4E4' width='160'>" +  "NA" + "</td></tr>";

//document.write("<tr><td>P T : </td><td>" + c30 + "</td><td>" + d30 + "</td></tr>");
mHTML=mHTML + "<tr><td bgcolor='#E4E4E4'>Property Taxes  </td><td align='right' bgcolor='#E4E4E4'>" +  AddThousandsSeparator((d30)) + "</td></tr>";
//document.write("<tr><td>HO ins : </td><td>" + c31 + "</td><td>" + d31 + "</td></tr>");
mHTML=mHTML + "<tr><td bgcolor='#E4E4E4'>HO Insurance  </td><td align='right' bgcolor='#E4E4E4'>" + AddThousandsSeparator((d31)) + "</td></tr>";
//document.write("<tr><td>Monthly Payment :</td><td>" + (c39+c30+c31) + "</td><td>" + (d39+d30+d31) + "</td></tr>");

/*mHTML=mHTML + "<tr><td bgcolor='#E4E4E4'>Monthly Payment </td><td align='right' bgcolor='#E4E4E4'>" +  AddThousandsSeparator((d31)+ (d30)) + "</td></tr>";
*/

mHTML=mHTML + "<tr><td bgcolor='#E4E4E4'>Monthly Payment </td><td align='right' bgcolor='#E4E4E4'>" +  AddThousandsSeparator(Monthly_Payment3) + "</td></tr>";

//document.write("<tr><td>Loan amt : </td><td>" + c36 + "</td><td>" + d36 + "</td></tr>");
mHTML=mHTML + "<tr><td bgcolor='#E4E4E4'>Loan Amount  </td><td align='right' bgcolor='#E4E4E4'>" +  "NA" + "</td></tr>";
	mHTML=mHTML + "<tr><td  bgcolor='#E4E4E4'>Down Payment  </td><td align='right' bgcolor='#E4E4E4'>" +  DownPaymentPerc +"%"  + "</td></tr>";
//document.write("<tr><td>House Price : </td><td>" + c37 + "</td><td>" + d37 + "</td></tr>");
mHTML=mHTML + "<tr><td bgcolor='#E4E4E4'>House Price  </td><td align='right' bgcolor='#E4E4E4'>" +   DownPaymentPerc +"%" + "</td></tr>";
}



//document.write("</table>");
mHTML=mHTML + "</table>";
document.getElementById('result').innerHTML=mHTML;
}


function affordability1(GrossAI,DownPaymentPerc,MonthlyDebt,Points,MortgageRate,LoanTerm,ClosingCost,APTaxes,AHOInsurance)
{

var c3=(GrossAI); 
var c4=(DownPaymentPerc)*100;
var c5=(MonthlyDebt);
var c6=(MortgageRate)/100;
var c7=(LoanTerm);
var c8=(APTaxes);
var c9=(AHOInsurance);
var c10=(Points);
var c11=(ClosingCost);


/*alert("c3 " + c3);
alert("c4 " + c4);
alert("c5 " + c5);
alert("c6 " + c6);
alert("c7 " + c7);
alert("c8 " + c8);
alert("c9 " + c9);
alert("c10 " + c10);
alert("c11 " + c11);
*/
/* changes
var c24;
	if(c6<0.2) c24=0.28;
	else c24=0.30;

var d24;
	if(c4<0.01) d24=0.30;
	else if(c4>0.01 && c4<0.02) d24=0.33;
		 else d24=0.36;

var c25=0.36;

var d25;
	if(c4<0.10) d25=0.38;
	else if(c4>0.10 && c4<0.20) d25=0.40
		else d25=0.42;

*/
var c24=0.28;
var d24=0.33;

var c25=0.36;
var d25=0.45;


var c27=c24*c3/12;

var d27=d24*c3/12;

var c28=(c27+c5)/(c3/12);

var d28=(d27+0)/(c3/12);

var c30=c8/12;

var d30=c8/12;

var c31=c9/12;

var d31=c9/12;

var c32=c25*c3/12-c27;  


var d32=d25*c3/12-d27;

var c34;
	if(c5<=c32) c34=c27;
	else c34=c27-(c5-c32);

var d34;
	if(c5<=d32) d34=d27;   
	else d34=d27-(c5-d32);

var g12=c7; //Loan Term Years


	// Calculate Interest Factor
		var temp;
		var intFactor=0;
			for(month=1;month<=g12*12;month++)
			{
			  if(month<=g12*12) temp=1/(Math.pow((1+c6/12),month));
				  else temp=0;
			  //document.write(temp + "<br>");
			  intFactor=intFactor+temp;
			}


var i26=intFactor;
var c36=(c34-c30-c31)/(1/i26);
var d36=(d34-d30-d31)/(1/i26);


var c37=c36/(1-c4);

var c39=pmt(c36,c6/12,g12*12);


var c42=c37-c36;

var d42=d37-d36;

var mon_pay2=Math.round(d39+d30d31);
mon_pay2=AddThousandsSeparator(mon_pay2);
//document.write("<table border=1>");

var mHTML="<table>";
//document.write("<tr><td>Details : </td><td>Conservative</td><td>Aggressive</td></tr>");
mHTML=mHTML + "<tr><td>Details : </td><td>Conservative</td><td>Aggressive</td></tr>";
//document.write("<tr><td>P & I : </td><td>" + c39 + "</td><td>" + d39 + "</td></tr>");
mHTML=mHTML + "<tr><td>P & I : </td><td>" + AddThousandsSeparator(Math.round(c39)) + "</td><td>" + AddThousandsSeparator(Math.round(d39)) + "</td></tr>";

//document.write("<tr><td>P T : </td><td>" + c30 + "</td><td>" + d30 + "</td></tr>");
mHTML=mHTML + "<tr><td>P T : </td><td>" + AddThousandsSeparator(Math.round(c30)) + "</td><td>" + AddThousandsSeparator(Math.round(d30)) + "</td></tr>";
//document.write("<tr><td>HO ins : </td><td>" + c31 + "</td><td>" + d31 + "</td></tr>");
mHTML=mHTML + "<tr><td>HO ins : </td><td>" + AddThousandsSeparator(Math.round(c31)) + "</td><td>" + AddThousandsSeparator(Math.round(d31)) + "</td></tr>";
//document.write("<tr><td>Monthly Payment :</td><td>" + (c39+c30+c31) + "</td><td>" + (d39+d30+d31) + "</td></tr>");
mHTML=mHTML + "<tr><td>Monthly Payment :</td><td>" + AddThousandsSeparator(Math.round(c39+c30+c31)) + "</td><td>" + mon_pay2+ "</td></tr>";
//document.write("<tr><td>Loan amt : </td><td>" + c36 + "</td><td>" + d36 + "</td></tr>");
mHTML=mHTML + "<tr><td>Loan amt : </td><td>" + AddThousandsSeparator(Math.round(c36)) + "</td><td>" + AddThousandsSeparator(Math.round(d36)) + "</td></tr>";

//document.write("<tr><td>down payment : </td><td>" + c42 + "</td><td>" + d42 + "</td></tr>");

//checking infinity
mHTML=mHTML + "<tr><td>down payment : </td><td>" + AddThousandsSeparator(Math.round(c42)) + "</td><td>" + AddThousandsSeparator(Math.round(d42)) + "</td></tr>";
//document.write("<tr><td>House Price : </td><td>" + c37 + "</td><td>" + d37 + "</td></tr>");
mHTML=mHTML + "<tr><td>House Price : </td><td>" +  AddThousandsSeparator(Math.round(c37)) + "</td><td>" + AddThousandsSeparator(Math.round(d37)) + "</td></tr>";

//document.write("</table>");
mHTML=mHTML + "</table>";

document.getElementById('result').innerHTML=mHTML;
}


//
//Payment only Calculator
//
 function cal_loan_amt_final(tot_pur_price,tot_dwn_pay,loan_term,int_rate,ann_home_own_ins,ann_prop_tax,point,other_fees)
   {
	var c9=tot_pur_price;
	var c10=tot_dwn_pay;
	var c11=int_rate;
	var c12=c9*(1-c10/100);
	
	var c13=c9-c12;
	//alert(loan_term);
	var c_chk=round_decimals((c11/12),3);
	//alert(c11/12);//round_decimals((c11/12),3));
	//alert(round_decimals((c11/12),3));
	var c16=pmt(c12,c11/12,loan_term*12);
	c16=round_decimals(c16,3)
	//alert(c16);
	var d20=ann_home_own_ins;
	var d21=ann_prop_tax;
	
	///PMI Calculation
	var d25;
	
	if(c10 >= 0 && c10 <= 5) 
	{
	d25=1;
	}
	else if(c10 > 5 && c10 <= 10) 
	{
	d25=2;
	}
	else if(c10 > 10 && c10 <= 15) 
	{
	d25=3;
	}
	else if(c10 > 15 && c10 < 20) 
	{
	d25=4;
	}
	else 
	{
	d25=0;
	}
//alert(d25);
	var d36;
	var d37=0;//"-"
	var cmb_period;
	//if duration in month then divide by 12
	cmb_period=loan_term;
	//alert(cmb_period);
	if(d25==0) 
	{
	d36=0;
	}
	else if(d25==1)
	{
		if(cmb_period < 30)
		{d36=0.85;}
		else 
		{ d36=0.96;	}
	}
	else if(d25 ==2)
	{
		if(cmb_period < 30)
		{d36=0.56;}
		else 
		{ d36=0.78;	}
	
	}
	else if (d25==3)
	{
		if(cmb_period < 30)
		{d36=0.23;}
		else 
		{ d36=0.52;	}
	
	}
	
	else if (d25==4)
	{
		if(cmb_period < 30)
		{d36=0.18;}
		else 
		{ d36=0.32;	}
	
	}
	if(d36 !=0 ) 
	{
	d37=((d36*c12)/12)/100;
	}
	//alert(d36);
	//alert(d37);
	///end PMI Calculation
	
	///end Total Monthly Payment
	var c42=c16;
	var c43;
	var c44;
	c43=round_decimals(d20/12,3);//Math.round(d20/12);//
	c44=round_decimals(d21/12,3);//Math.round(d21/12);//
	c45=round_decimals(d37,3);//Math.round(d37);//
	var c47;
	c47=(eval(c42)+eval(c43)+eval(c44)+eval(c45));
	c47=round_decimals(c47,3);
	//alert("c42 " +c42);
	//alert("c43 " +c43);
	//alert("c44 " +c44);
	//alert("c45 " +c45);
	//alert("c47 " +c47);
	//alert(c47);
	
	//Upfront Costs
	var f43=eval(c13);
	var f44=eval(point * c12);
	var f45 = eval(other_fees);
	var f47=f43+f44+f45;
	//alert(f47)
	//end Upfront Costs
	///end Total Monthly Payment
	
	//APR Calculation
	var c53=c12;
	var c54=(f44)+(f45);
	var c55=eval(c53)-eval(c54);
	var c57=rate(loan_term*12,c16,c55);
	c57=round_decimals(c57,4);
	//end APR Calculation
	//c9=AddThousandsSeparator_result(c9);
		
	var mHTML="<table>";
	mHTML=mHTML + "<tr><td colspan='2'><b><u>                   Result            </b></u></td><td>";
	mHTML=mHTML + "<tr><td colspan='2'>&nbsp;</td><td>";
	mHTML=mHTML + "<tr><td>Home Price              </td><td>" + AddThousandsSeparator(Math.round(c9)) + "</td></tr>";
	mHTML=mHTML + "<tr><td>Loan amount             </td><td>" + AddThousandsSeparator(Math.round(c12)) + "</td></tr>";
	mHTML=mHTML + "<tr><td>Loan Term (Years)       </td><td>" + loan_term+ "</td></tr>";
	mHTML=mHTML + "<tr><td>Interest Rate           </td><td>" + AddThousandsSeparator(round_decimals(c11*100,3))  + "%</td></tr>";
	mHTML=mHTML + "<tr><td>APR                     </td><td>" + AddThousandsSeparator(c57) + "%</td><br></tr>";
	mHTML=mHTML + "<tr><td colspan='2'>&nbsp;</td><td>";
	mHTML=mHTML + "<tr><td colspan='2'><b><u>Upfront Cost </u></b></td></tr>";
	mHTML=mHTML + "<tr><td>DownPayment             </td><td>" + AddThousandsSeparator(Math.round(f43)) + "</td></tr>";
	mHTML=mHTML + "<tr><td>Points                  </td><td>" + AddThousandsSeparator(Math.round(f44)) + "</td></tr>";
	mHTML=mHTML + "<tr><td>Other Fees              </td><td>" + AddThousandsSeparator(Math.round(f45)) + "</td></tr>";
	mHTML=mHTML + "<tr><td>Total Cost              </td><td>" + AddThousandsSeparator(Math.round(f47)) + "</td></tr>";
	mHTML=mHTML + "<tr><td colspan='2'>&nbsp</td><td>";
	mHTML=mHTML + "<tr><td colspan='2'><b><u>Monthly Payment Amount Details </u></b></td><td>" ;
	mHTML=mHTML + "<tr><td colspan='2'>&nbsp</td><td>";
	mHTML=mHTML + "<tr><td>Principal+Interest      </td><td>" +AddThousandsSeparator((c16)) + "</td></tr>";
	mHTML=mHTML + "<tr><td>Home Owner's Insurance  </td><td>" + AddThousandsSeparator((c43)) + "</td></tr>";
	mHTML=mHTML + "<tr><td >Property Tax </td><td>" + AddThousandsSeparator((c44)) + "</td></tr>";
	mHTML=mHTML + "<tr><td>PMI                     </td><td>" + AddThousandsSeparator((c45)) + "</td></tr>";
	mHTML=mHTML + "<tr><td>Total Monthly Payment   </td><td>" +AddThousandsSeparator((c47)) + "</td></tr>";
	mHTML=mHTML + "</table>";
   mHTML=mHTML + "</table>";
document.getElementById('result').innerHTML=mHTML;

   }


//rounding value
function round_decimals(original_number, decimals) 
{
    var result1 = original_number * Math.pow(10, decimals)
    var result2 = Math.round(result1)
    var result3 = result2 / Math.pow(10, decimals)
    return pad_with_zeros(result3, decimals)
}

function pad_with_zeros(rounded_value, decimal_places)
{

    // Convert the number to a string
    var value_string = rounded_value.toString()
    
    // Locate the decimal point
    var decimal_location = value_string.indexOf(".")

    // Is there a decimal point?
    if (decimal_location == -1) {
        
        // If no, then all decimal places will be padded with 0s
        decimal_part_length = 0
        
        // If decimal_places is greater than zero, tack on a decimal point
        value_string += decimal_places > 0 ? "." : ""
    }
    else {

        // If yes, then only the extra decimal places will be padded with 0s
        decimal_part_length = value_string.length - decimal_location - 1
    }
    
    // Calculate the number of decimal places that need to be padded with 0s
    var pad_total = decimal_places - decimal_part_length
    
    if (pad_total > 0) {
        
        // Pad the string with 0s
        for (var counter = 1; counter <= pad_total; counter++) 
            value_string += "0"
        }
    return value_string
}
///end rounding value


////////////////////////////Cal for rent vs Buy

//1st cal for loan term        1
function loan_term(lterm)
{
	//VLOOKUP(B9,B4:C7,2,FALSE)	

var B9=lterm;
if(lterm==1)
{
c9=15;
}
else
{
	c9=30;
}
}
//End 1st cal for loan term

//PMI Calculation 3	
function pmi_cal(G23,L14,U6,U7,U8)//U6=Loan amt !L14 ,U7=Interest Rate !L16,U8=C9
{
D29=G23; // Rent vs Buy'!G23
D30=L14; // Rent vs Buy'!L14
var D31=D30/D29;
var D32=D29*0.8;

var U9=PMT(U7/12,U8*12,-U6,0);	//PMT(U7/12,U8*12,-U6,0)	 4

var D33;//IF(D31<=80%,0,NPER($U$7/12,U9,-D32,0,0))

if(D31<=80/100)
{
	D33=0;
}
else//NPER($U$7/12,U9,-D32,0,0)
{
	
}

var D34=(C9*12-D33);
}
////PMI Calculation	


////5 cal  --Calculation of Gain on investment of Closing costs and Down Payment
/*
O16		Downpayment	 10,000 	From Input 		               Rent vs Buy'!G23-'Rent vs Buy'!L14	
O17		Loan Closing Costs	 -   	From Input 		           Rent vs Buy'!L21	
O18		Points	0			                                   Rent vs Buy'!$L$23*'Rent vs Buy'!L14	
							
O20		Total Costs	 10,000 	Total		                   SUM(O16:O19) 	
							
O22		No.of years of residence	 5.0 	From Input 		   Rent vs Buy'!J31 	
O23		Marginal Tax Rate	28%	From Input 		               Rent vs Buy'!O25	
O24		Investment Rate	8%			Rent vs Buy'!O27	
							
O26		Amount at the end	 13,231.4 			                O20*(1+O24*(1-O23))^O22 	

		of this period					

*/

function cal_gain(O16,O17,O18,O22,O23,O24)
{
	var O20=O16+O17+O18;
	var O26=O20*(1+O24*(1-O23))^O22;
}

///End 5 th cal


function print_tab(nterm,curr_monthly_rent,ann_rent_insu)//30,700,180)////!G14=700,!G16=4
{
////'Rent vs Buy'!$G$14*12*(1+'Rent vs Buy'!$G$16)^'Backend Principal and Interest'!G14
var i;
var term;
var ARE;//Annual Rent Expense
var RI;//Rent Insurance
var Tot_exp;//Total Expense
var Cumm_exp;//Cumulative Expense
var H;
var I;
var J;
var K1;
var K2;
var mHTML="<table border='1'>";
mHTML=mHTML + "<tr><td colspan='2'><b><u>                   Result            </b></u></td><td>";
mHTML=mHTML + "<tr><td>";
H=curr_monthly_rent * 12;//*(1+'Rent vs Buy'!$G$16)^'Backend Principal and Interest'!G15
I=ann_rent_insu;
J= H+I;
K=J;
mHTML=mHTML + 1 + "</td><td>" + H + "</td><td>" + I + "</td><td>" + J +"</td><td>" + K +"</td></tr>" ;
for(i=2;i <=nterm;i++)
{
    
    I=ann_rent_insu;
	J=(curr_monthly_rent * 12 *(Math.pow(4/100,i)))+I;
	H= I*J  * (Math.pow(1.04,i));//='Rent vs Buy'!$G$14*12*(1+'Rent vs Buy'!$G$16)^'Backend Principal and Interest'!G14
	J=H+I;
	K= K + J;
	mHTML=mHTML + "<tr><td>";
	mHTML=mHTML + i + "</td><td>" + AddThousandsSeparator(round_decimals(H,2)) + "</td><td>" + AddThousandsSeparator(round_decimals(I,2)) + "</td><td>" + AddThousandsSeparator(round_decimals(J,2)) +"</td><td>" + AddThousandsSeparator(round_decimals(K,2)) + "</td></tr>" ;
}
 mHTML=mHTML + "</table>";
document.write(mHTML);
}

////End Function to print table
//////End Cal for rent vs Buy
