var claculators = ["qualificationcalculator","interestonlycalculator","amortizationcalculator","payoffcalculator","taxsavingscalculator","consolidatecalculator","refinancecalculator","biweeklycalculator","ratecomparisoncalculator","termcomparisoncalculator"];
function loadCalculator(index) {
	loadFile('/controlpanel/mywebsites/'+claculators[index]+'.php','calculator');
}

function trimSpecialCharacters(param) {

	var strLength = param.length

	if(strLength > 0) {
		param = param.replace(/\s+|\%+|\$+|\,+/g,"");
		param = eval(param);
	} 
	else {
		param = 0;
	}

	return param;
}


function formatNumber(number, places, comma) {

	var result = number.toFixed(places); 
	if(comma==1)
	result = addCommas(result);
	return result;
}


function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : ''; 
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}


function clearData(form) {
	switch(form.name) {
		case "interestOnly":
			$('monthlyTotal').value = "";
			$('taxTotal').value = "";
			$('paymentTotal').value = "";
			$('monthlyInterest').value = "";
			$('taxInterest').value = "";
			$('intereatTotal').value = "";
		break;

		case "payoff":
			$('paymentAdd').value = "";
		    $('interestSave').value = "";
		    $('results').value = "";
		break;

		case "taxSave":
			$('monthPayment').value = "";
			$('annualPropertyTax').value = "";
			$('taxSavings').value = "";
		break;

		case "mortgagePayment":
			$('monthlyPI').value = "";
			$('otherPayments').value = "";
			$('monthPayment').value = "";
		break;

		case "biweek":
			$('curPrincipal').value = "";
			$('curRate').value = "";
			$('curPayment').value = "";
			$('curIntPaid').value = "";
			$('curPayoff').value = "";
			$('biPayment').value = "";
			$('biInterestPaid').value = "";
			$('biInterestSaved').value = "";
			$('biPayOff').value = "";
			$('biPaymentsSaved').value = "";
			$('biEquivalentRate').value = "";
			$('bi25Payment').value = "";
			$('bi25InterestPaid').value = "";
			$('bi25InterestSaved').value = "";
			$('bi25PayOff').value = "";
			$('bi25PaymentsSaved').value = "";
			$('bi25EquivalentRate').value = "";
			$('bi50Payment').value = "";
			$('bi50InterestPaid').value = "";
			$('biInterestPaid').value = "";
			$('bi50InterestSaved').value = "";
			$('bi50PayOff').value = "";
			$('bi50PaymentsSaved').value = "";
			$('bi50EquivalentRate').value = "";
		break;

		case "consolidation":
			$('paymentRefin').value = "";
			$('monthlySave').value = "";
			$('closeMonth').value = "";
			$('origInterest').value = "";
			$('refinInterest').value = "";
			$('interestSave').value = "";
			$('netSave').value = "";
			$('summary').value = "";
		break;
	}

}



function getMonths() { 
   $('months').value = $('years').value;
}


function getPayment(principal, months, rate) {

	if(rate==0)
		return principal/months;
	else {
		rate = (rate >= 1)?(rate / 100):rate;
		rate /= 12;
		var par = 1;
		for(var i=0; i<months; i++)
			par = par * (rate + 1);
		return (principal * par * rate) / (par - 1);
	}
}

function getInterestPaid(principal, rate, payment) { 
	var rate = eval(rate);
	rate = (rate >= 1)?(rate / 100):rate;
	rate /= 12;
    principal = eval(principal);
   
    var sCounter = 0;
	var interestPaid = 0;
	var amounLast = 0;

    while(principal > 0) {
		amounLast = (principal * (rate + 1));
		if(payment < amounLast) {
			interestPaid = interestPaid + principal * rate;
	        principal = principal - (payment - principal * rate);
		} 
		else {
			interestPaid = interestPaid + principal * rate;
			principal = 0;
		}

		sCounter += 1;
		if(sCounter > 1000 || interestPaid > 1000000000) 
			principal = 0;
	}

	return interestPaid;
}


function getInterestRate(months, principalLeft, equivalentPayment, rate) {
	
	var equivalentRate  = 0;

	if(rate.length == 0 || rate == 0) 
		var calRate = 10;
	else {
		var calRate = rate;
		calRate = (calRate >= 1)?(calRate / 100):calRate;
	}

	var equivalentRate  = calRate / 12;
	var calPayment = 0;
	var par = 1;

	for (var i = 0; i < months; i++) {
		par = par * (equivalentRate + 1);
	}

	calPayment = (principalLeft * par * equivalentRate) / (par - 1);

	var placePars2 = getParam('0.01',calRate,months);
	var amt2 = eval((principalLeft * placePars2) / (par - 1)) - eval(calPayment);

	var placePars3 = getParam('0.001',calRate,months);
	var amt3 = eval((principalLeft * placePars3) / (par - 1)) - eval(calPayment);

	var placePars4 = getParam('0.0001',calRate,months);
	var amt4 = eval((principalLeft * placePars4) / (par - 1)) - eval(calPayment);

	var placePars5 = getParam('0.00001',calRate,months);
	var amt5 = eval((principalLeft * placePars5) / (par - 1)) - eval(calPayment);

	var diffPayment = 0;

	if(calPayment < equivalentPayment) {
		while(calPayment < equivalentPayment) {
			diffPayment = eval(equivalentPayment) - eval(calPayment);
			if(diffPayment > amt2) {
				equivalentRate = eval(equivalentRate) + eval(0.01 / 12);
			} 
			else if(diffPayment > amt3) {
				equivalentRate = eval(equivalentRate) + eval(0.001 / 12);
			} 
			else if(diffPayment > amt4) {
				equivalentRate = eval(equivalentRate) + eval(0.0001 / 12);
			} 
			else if(diffPayment > amt5) {
				equivalentRate = eval(equivalentRate) + eval(0.00001 / 12);
			} 
			else {
				equivalentRate = eval(equivalentRate) + eval(0.000001 / 12);
			}

			par = 1
			for (var i = 0; i < months; i++) {
				par = par * (eval(1) + eval(equivalentRate));
			}
			calPayment = (principalLeft * par * equivalentRate) / (par - 1);
		}
	} 
	else {
		while(calPayment > equivalentPayment) {
			diffPayment = eval(calPayment) - eval(equivalentPayment);
			if(diffPayment > amt2) {
				equivalentRate = eval(equivalentRate) - eval(0.01 / 12);
			} 
			else if(diffPayment > amt3) {
				equivalentRate = eval(equivalentRate) - eval(0.001 / 12);
			} 
			else if(diffPayment > amt4) {
				equivalentRate = eval(equivalentRate) - eval(0.0001 / 12);
			}
			else if(diffPayment > amt5) {
				equivalentRate = eval(equivalentRate) - eval(.00001 / 12);
			}
			else {
				equivalentRate = eval(equivalentRate) - eval(.000001 / 12);
			}

            par = 1
			for (var i = 0; i < months; i++) {
				par = par * (eval(1) + eval(equivalentRate));
			}
			calPayment = (principalLeft * par * equivalentRate) / (par - 1);
		}
	}
	return equivalentRate  * 12 * 100;
}

function getParam(n,calRate,months) {

	var placeRate = (eval(calRate) + eval(n)) / 12; 
	par = 1;
	for (var i = 0; i < months; i++) {
	   par = par * (eval(1) + eval(placeRate));
	}
	return par*placeRate;
}


function getCurInterest(pmtFirst,prinFirst,intFirst) {

	var interest = 0;
	var principal = 0;
	var accumInterest = 0;
	var accumPrincipal = 0;
	var sCounter = 0;

	while(prinFirst > 0) {
	   interest = prinFirst * intFirst;
	   principal = pmtFirst - interest;
	   prinFirst = prinFirst - principal;
	   accumPrincipal = accumPrincipal + principal;
	   accumInterest = accumInterest + interest;

	   sCounter += 1;
	   if(sCounter > 600) {break; } else {continue; }
	}
	return accumInterest;
}

function getBiData(n,payment,principalLeft,rate,months,accumInterest,curIntPaid,sCounter) {
	if(n==0)
	var biPayment = eval(payment / 2);
	else
	var biPayment = eval(payment / 2) + eval(n);
    
	var biInterestPaid = getBiInterest(principalLeft,payment,rate,n,1); 
    biInterestPaid = biInterestPaid + accumInterest; 
    
	var biInterestSaved = curIntPaid - biInterestPaid;

	var biTotalPaid = principalLeft + biInterestPaid;

	var biEquivPayment = biTotalPaid / months; 
  
    var biWeekNPRs = getBiInterest(principalLeft,payment,rate,n,2);
    biWeekNPRs = biWeekNPRs + sCounter; 
   
    var biPayOff = biWeekNPRs / 12;
    
	var biPaymentsSaved = months - (biWeekNPRs);

    var biEquivalentRate = getInterestRate(months, principalLeft, biEquivPayment, rate);

    switch(n) {
		case "0":
			$('biPayment').value = "$" + formatNumber(biPayment,2,1); 
		    $('biInterestPaid').value = "$" + formatNumber(biInterestPaid,0,1);
		    $('biInterestSaved').value = "$" + formatNumber(biInterestSaved,0,1); 
		    $('biPayOff').value = formatNumber(biPayOff,1,1) + " Years"; 
		    $('biPaymentsSaved').value = formatNumber(biPaymentsSaved,0,0);
			$('biEquivalentRate').value = formatNumber(biEquivalentRate,2,0) + "%";
			var summary = ("You could save $" + formatNumber(biInterestSaved,0,1) + " and have " + formatNumber(biPaymentsSaved,0,1) + " fewer payments by using the Bi-Weekly Mortgage plan!");
			$('summary').value = summary;
		break;

		case "25": 
			$('bi25Payment').value = "$" + formatNumber(biPayment,2,1); 
			$('bi25InterestPaid').value = "$" + formatNumber(biInterestPaid,0,1);
			$('bi25InterestSaved').value = "$" + formatNumber(biInterestSaved,0,1); 
			$('bi25PayOff').value = formatNumber(biPayOff,1,1) + " Years"; 
			$('bi25PaymentsSaved').value = formatNumber(biPaymentsSaved,0,0);
			$('bi25EquivalentRate').value = formatNumber(biEquivalentRate,2,0) + "%";
		break;
   
		case "50":
			$('bi50Payment').value = "$" + formatNumber(biPayment,2,1); 
			$('bi50InterestPaid').value = "$" + formatNumber(biInterestPaid,0,1);
			$('bi50InterestSaved').value = "$" + formatNumber(biInterestSaved,0,1); 
			$('bi50PayOff').value = formatNumber(biPayOff,1,1) + " Years"; 
			$('bi50PaymentsSaved').value = formatNumber(biPaymentsSaved,0,0);
			$('bi50EquivalentRate').value = formatNumber(biEquivalentRate,2,0) + "%";
		break;
	}
}

function getBiInterest(principal,payment,rate,addPayment,param) {
	
	var calPrincipal = principal - (addPayment * 5);
	var calPayment = payment / 2;
	var calRate = rate;

	calRate = (calRate >= 1)? (calRate / 100):calRate;
	calRate /= 12;

	var accumInterest = 0;
	var sCounter = 0;
	var escrowAmt = (calPayment / 6) + (addPayment * 26 / 12);
	var accumEscrow = 0;


	while(calPrincipal > 0) {

		accumEscrow += escrowAmt;
		if(calPrincipal > ((payment - (calPrincipal * calRate)) + escrowAmt)) {
			accumInterest = accumInterest + calPrincipal * calRate;
			calPrincipal = calPrincipal - (payment - (calPrincipal * calRate));
			sCounter += 1;
		}
		else {
		    accumInterest = accumInterest + calPrincipal * calRate;
		    calPrincipal = 0;
		    sCounter += 1;
		}

		if(sCounter % 6 == 0) {
			calPrincipal = calPrincipal - accumEscrow;
			accumEscrow = 0;
		}

		if(sCounter > 600) {
			break;
		} 
		else {
			continue;
		}
	}

	if(param == 1) {
	   return accumInterest;
	} else
	if(param == 2) {
	   return sCounter;
	}
}


function getRates() {

   if($('startRate').value.length == 0) {
	   if(top.window.$('openPreviewBox'))
	   alert("Please enter a starting interest before selecting the increment factor.");
	   else
	   alertMessage.show({msg:"Please enter a starting interest before selecting the increment factor."},$('startRate'));
       $('startRate').focus();
   } 
   else {
      var startRate = trimSpecialCharacters($('startRate').value);

	  startRate = (startRate < 1)?(startRate * 100):startRate;

      var increment = $('increment').value;
	  
	  for(var i=1; i<=5; i++) {
		  if(i==1)
		  var rate = startRate;
		  else
		  rate = eval(rate) + eval(increment);
		  $('rate'+i).value = formatNumber(rate,3);
	  }
      calculateRateComparison();
   }

}



function calculateBiWeekly() {

	if($('principal').value == "") {
	   if(top.window.$('openPreviewBox')) 
	   alert("Amount of mortgage is required.");
	   else
	   alertMessage.show({msg:"Amount of mortgage is required."},$('principal'));
	   $('principal').focus();
	} 
	else if($('rate').value == "") {
	   if(top.window.$('openPreviewBox'))
	   alert("Interest is required.");
	   else
	   alertMessage.show({msg:"Interest is required."},$('rate'));
	   $('rate').focus();
	} 
	else if($('months').value == "") {
	   if(top.window.$('openPreviewBox'))
	   alert("Term is required.");
	   else
	   alertMessage.show({msg:"Term is required."},$('months'));
	   $('months').focus();
	} 
	else {
		var principal = trimSpecialCharacters($('principal').value);
		var rate = trimSpecialCharacters($('rate').value);
		var months = trimSpecialCharacters($('months').value);
		var payment = trimSpecialCharacters($('payment').value);
		if(payment == 0) {
		   payment = getPayment(principal, months, rate);
		}
		var paymentsPaid = trimSpecialCharacters($('paymentsPaid').value);
		var curIntPaid = getInterestPaid(principal, rate, payment);

		$('curPrincipal').value = "$" + formatNumber(principal,2,1);
		$('curRate').value = formatNumber(rate,2,1) + "%";
		$('curPayment').value = "$" + formatNumber(payment,2,1);
		$('curIntPaid').value = "$" + formatNumber(curIntPaid,0,1);
	   
		var curPayoff = months / 12;
		$('curPayoff').value = formatNumber(curPayoff,1,0) + " Years";

		var principalLeft = principal; 
		var accumInterest = 0;
		var sCounter = 0;

		var madeRate = rate;
		madeRate = (madeRate >= 1)?(madeRate/100):madeRate;
		madeRate /= 12;

		while(sCounter < paymentsPaid) {
			accumInterest = accumInterest + principalLeft * madeRate; 
			principalLeft = principalLeft - (payment - principalLeft * madeRate); 
			sCounter += 1;
			if(sCounter > 600) 
				break;
			else 
				continue;
		}

		getBiData('0',payment,principalLeft,rate,months,accumInterest,curIntPaid,sCounter);
		getBiData('25',payment,principalLeft,rate,months,accumInterest,curIntPaid,sCounter);
		getBiData('50',payment,principalLeft,rate,months,accumInterest,curIntPaid,sCounter);   
	}	
}


function calculateIntOnly(form) {
	if($('principal').value == 0 || $('principal').value == "") {
		if(top.window.$('openPreviewBox'))
		alert("Mortgage Principal Amount is required.");
		else
		alertMessage.show({msg:"Mortgage Principal Amount is required."},$('principal'));
		$('principal').focus();
	} 
	else if($('rate').value == 0 || $('rate').value == "" || eval($('rate').value) > 25) {
		if(top.window.$('openPreviewBox'))
		alert("Interest Rate is required.");
		else
		alertMessage.show({msg:"Interest Rate is required."},$('rate'));
		$('rate').focus();
	} 
	else if($('years').value == 0 || $('years').value == "" || eval($('years').value) > 40) {
		if(top.window.$('openPreviewBox'))
		alert("Term of Mortgage is required.");
		else
		alertMessage.show({msg:"Term of Mortgage is required."},$('years'));
		$('years').focus();
	} 
	else {
		var principal = trimSpecialCharacters($('principal').value);
		var rate = trimSpecialCharacters($('rate').value);
		var years = trimSpecialCharacters($('years').value);
		var yearTax = trimSpecialCharacters($('yearTax').value);
		var monthlyPMI = trimSpecialCharacters($('monthlyPMI').value);
		var monthlyAssoc = trimSpecialCharacters($('monthlyAssoc').value);
		var yearInsurance = trimSpecialCharacters($('yearInsurance').value);


		var monthTax = (yearTax==0)?0:eval(Math.round((eval(yearTax / 12))*100))/100;
		var monthInsurance = (yearInsurance==0)?0:eval(Math.round((eval(yearInsurance / 12))*100))/100; 

		var taxTotal = eval(monthTax) + eval(monthInsurance) + eval(monthlyPMI) + eval(monthlyAssoc);
		var payments = years * 12;
		var monthlyPayments = getPayment(principal, payments, rate);
		var paymentTotal = eval(monthlyPayments) + eval(taxTotal);

		
		var calRate = rate;
		calRate = (calRate >= 1)?(calRate/100):calRate;
		calRate /= 12;

		var monthlyInterest = principal * calRate;
		var intereatTotal = eval(monthlyInterest) + eval(taxTotal);

		$('monthlyTotal').value = "$" + formatNumber(monthlyPayments,2,1);
		$('taxTotal').value = "$" + formatNumber(taxTotal,2,1);
		$('paymentTotal').value = "$" + formatNumber(paymentTotal,2,1);
		$('monthlyInterest').value = "$" + formatNumber(monthlyInterest,2,1);
		$('taxInterest').value = "$" + formatNumber(taxTotal,2,1);
		$('intereatTotal').value = "$" + formatNumber(intereatTotal,2,1);
   }
}


function calculateConsolidation() {
 
if($('firstPrincipal').value == "") {
   if(top.window.$('openPreviewBox'))
   alert("Unpaid principal of first mortgage is required.");
   else
   alertMessage.show({msg:"Unpaid principal of first mortgage is required."},$('firstPrincipal'));
   $('firstPrincipal').focus();
} 
else if($('firstPayment').value == "") {
   if(top.window.$('openPreviewBox'))
   alert("Monthly Mortgage Payment is required.");
   else
   alertMessage.show({msg:"Monthly Mortgage Payment is required."},$('firstPayment'));
   $('firstPayment').focus();
} 
else if($('firstRate').value == "") {
   if(top.window.$('openPreviewBox'))
   alert("Interest rate is required.");
   else
   alertMessage.show({msg:"Interest rate is required."},$('firstRate'));
   $('firstRate').focus();
} 
else if($('secondPrincipal').value.length > 0 && $('secondPayment').value == "") {
   if(top.window.$('openPreviewBox'))
   alert("Interest rate of refinancing is required.");
   else
   alertMessage.show({msg:"Interest rate of refinancing is required."},$('secondPayment'));
   $('secondPayment').focus();
} 
else if($('secondPrincipal').value.length > 0 && $('secondRate').value == "") {
   if(top.window.$('openPreviewBox'))
   alert("Term (years) of refinancing is required.");
   else
   alertMessage.show({msg:"Term (years) of refinancing is required."},$('secondRate'));
   $('secondRate').focus();
} 
else if($('refinRate').value == "") {
   if(top.window.$('openPreviewBox'))
   alert("Interest rate of refinancing is required.");
   else
   alertMessage.show({msg:"Interest rate of refinancing is required."},$('refinRate'));
   $('refinRate').focus();
} 
else if($('refinYears').value == "") {
   if(top.window.$('openPreviewBox'))
   alert("Term (years) of refinancing is required.");
   else
   alertMessage.show({msg:"Term (years) of refinancing is required."},$('refinYears'));
   $('refinYears').focus();
} 
else if($('closingCost').value == "") {
   if(top.window.$('openPreviewBox'))
   alert("Closing costs is required.");
   else
   alertMessage.show({msg:"Closing costs is required."},$('closingCost'));
   $('closingCost').focus(); 
} 
else {

	var firstPrincipal = trimSpecialCharacters($('firstPrincipal').value);
	var secondPrincipal = trimSpecialCharacters($('secondPrincipal').value);
	var sumPrincipal = eval(firstPrincipal) + eval(secondPrincipal);
	var numMtgs = 1;

	numMtgs = (secondPrincipal>0)?2:1;

	if($('costUnit').selectedIndex == 0) 
		var costAmount = eval(trimSpecialCharacters($('closingCost').value)/100) * sumPrincipal;
	else 
		var costAmount = trimSpecialCharacters($('closingCost').value);
	 
	var pmtFirst = trimSpecialCharacters($('firstPayment').value);
	var prinFirst = trimSpecialCharacters($('firstPrincipal').value);
	var intFirst = trimSpecialCharacters($('firstRate').value);

	intFirst = (intFirst >= 1)?(intFirst / 100):intFirst;
	intFirst  = intFirst  / 12;


	var origInt = getCurInterest(pmtFirst,prinFirst,intFirst); 

	var pmtSecond = trimSpecialCharacters($('secondPayment').value);

	if(numMtgs == 2) {
		var intSecond = trimSpecialCharacters($('secondRate').value);
		var prinSec = trimSpecialCharacters($('secondPrincipal').value);

		intSecond = (intSecond >= 1)?(intSecond / 100.0):intSecond
		intSecond  = intSecond  / 12;
		var accumIntSec = getCurInterest(pmtSecond,prinSec,intSecond); 
	}
	else 
	accumIntSec = 0;

	var origInt = eval(origInt) + eval(accumIntSec);

	$('origInterest').value = "$" + formatNumber(origInt,2,1);

	var pmtSum = eval(pmtFirst) + eval(pmtSecond);

	var intRefin = trimSpecialCharacters($('refinRate').value);
	
	intRefin = (intRefin >= 1)?(intRefin/100):intRefin;
	intRefin  = intRefin  / 12;

	var prinRefin = 0;

	if($('yesNo').selectedIndex == 0)
	prinRefin = sumPrincipal;
	else 
	prinRefin = eval(sumPrincipal) + eval(costAmount);

	var param = 1;

	var refinYears = trimSpecialCharacters($('refinYears').value);
	for (var i = 0; i < refinYears *12; i++)
	   param = param * (1 + intRefin);

	var pmtRefin = (prinRefin * param * intRefin) / (param - 1);

	$('paymentRefin').value = "$" + formatNumber(pmtRefin,2,1);

	var monthlySave = eval(pmtSum) - eval(pmtRefin);
	if(monthlySave < 0) {
		monthlySave = monthlySave * (-1);
		$('monthlySave').value = "$" + formatNumber(monthlySave,2,1) + "";
	} 
	else {
		$('monthlySave').value = "($" + formatNumber(monthlySave,2,1) + ")";
	}

	var totalIntRefin = (pmtRefin * refinYears *12) - prinRefin;
	$('refinInterest').value = "$" + formatNumber(totalIntRefin,2,1);

	var intSave = origInt - totalIntRefin;
	if(intSave <= 0) {
		$('interestSave').value = "$0.00";
	} 
	else {
		$('interestSave').value = "$" + formatNumber(intSave,2,1);
	}


	var intFirst2 = 0;
	var intSecond2 = 0;
	var intRefin2 = 0;
	var prinFirst2 = 0;
	var prinSec2 = 0;
	var prinRefin2 = 0;
	var calIntFirst2 = 0;
	var calIntSec2 = 0;
	var calIntRefin2 = 0;
	var calPrinFirst2 = 0;
	var calPrinSec2 = 0;
	var calPrinRefin2 = 0;
	var calIntSave = 0;
	var sCounter = 0;
	var firstPrincipal2 = trimSpecialCharacters($('firstPrincipal').value);
	var secondPrincipal2 = trimSpecialCharacters($('secondPrincipal').value);
	var sumPrincipal2 = eval(firstPrincipal2) + eval(secondPrincipal2);

	while(calIntSave < costAmount) { 

		intFirst2 = firstPrincipal2 * intFirst;
		intRefin2 = sumPrincipal2 * intRefin;

		prinFirst2 = pmtFirst - intFirst2;
		prinRefin2 = pmtRefin - intRefin2;

		firstPrincipal2 = firstPrincipal2 - prinFirst2;
		sumPrincipal2 = sumPrincipal2 - prinRefin2;

		calPrinFirst2 = calPrinFirst2 + prinFirst2;
		calPrinRefin2 = calPrinRefin2 + prinRefin2;

		calIntFirst2 = calIntFirst2 + intFirst2;
		accumIntCombo2 = calIntFirst2 + calIntSec2; 

		if(numMtgs == 2) {
		   intSecond2 = secondPrincipal2 * intSecond;
		   prinSec2 = pmtSecond - intSecond2;
		   secondPrincipal2 = secondPrincipal2 - prinSec2;
		   calPrinSec2 = calPrinSec2 + prinSec2;
		   calIntSec2 = calIntSec2 + intSecond2;
		}

		calIntRefin2 = calIntRefin2 + intRefin2;

		calIntSave = accumIntCombo2 - calIntRefin2;

		sCounter = sCounter + 1;

		if(sCounter > 600) 
		break; 
		else 
		continue;

	}

	if(intSave <= 0) 
	$('closeMonth').value = "N/A";
	else 
	$('closeMonth').value = sCounter;
	   

	 var fnetSave = eval(intSave) - eval(costAmount);

	 var pmtUpDown = "";
	 if(pmtRefin > pmtSum) {
		 pmtUpDown = "increase by $" + formatNumber(eval(pmtRefin) - eval(pmtSum),2,1) + "";
	 } 
	 else {
		 pmtUpDown = "decrease by $" + formatNumber(eval(pmtSum) - eval(pmtRefin),2,1) + "";
	 }

	var intSaveYesNo = "";
	if(origInt < totalIntRefin) {
		intSaveYesNo = "pay an additional $" + formatNumber(eval(totalIntRefin) - eval(origInt),2,1) + " in interest charges over the life of the mortgage.";
	} 
	else {
		intSaveYesNo = "save $" + formatNumber(eval(origInt) - eval(totalIntRefin),2,1) + " in interest charges over the life of the mortgage. However, in order for this refinancing to yield any savings at all you will need to stay in your current home for at least " + sCounter + " months.  That's how long it will take for the monthly interest savings to offset the closing costs attributable to refinancing.";
	}

	if(fnetSave <= 0) {
		$('netSave').value = "$0.00";
	} 
	else {
		$('netSave').value = "$" +formatNumber(fnetSave,2,1);
	}

	var firstRate = trimSpecialCharacters($('firstRate').value);
	var secondRate = trimSpecialCharacters($('secondRate').value);
	var refinRate = trimSpecialCharacters($('refinRate').value);

	if(firstRate < 1) {
		firstRate = formatNumber(firstRate * 100,2,1);
	}
	if(secondRate < 1) {
		secondRate = formatNumber(secondRate * 100,2,1);
	}
	if(refinRate < 1) {
		refinRate = formatNumber(refinRate * 100,2,1);
	}

	var secMtgText = "";
	if(numMtgs ==2) {
		secMtgText = " and your current " + formatNumber(secondRate,2,1) + "% mortgage";
	}

	$('summary').value = "If you refinance your current " + formatNumber(firstRate,2,1) + "% mortgage" + secMtgText + " into a single " + formatNumber(refinRate,2,1) + "% mortgage, your monthly payment will " + pmtUpDown + " and you will " + intSaveYesNo + "";

   }

}


function calculatePayoff() {

	if($('principal').value == "" || $('principal').value == 0) {
		if(top.window.$('openPreviewBox'))
		alert("Unpaid principal amount is required.");
		else
		alertMessage.show({msg:"Unpaid principal amount is required."},$('principal'));
		$('principal').focus();
	} 
	else if($('interest').value == "" || $('interest').value == 0) {
		if(top.window.$('openPreviewBox'))
		alert("Interest rate (annual) is required.");
		else
		alertMessage.show({msg:"Interest rate (annual) is required."},$('interest'));
		$('interest').focus();
   } 
   else if($('payment').value == "" || $('payment').value == 0) {
         if(top.window.$('openPreviewBox'))
		 alert("Current monthly payment is required.");
		 else
		 alertMessage.show({msg:"Current monthly payment is required."},$('payment'));
         $('payment').focus();
   } 
   else if($('years').value == "" || $('years').value == 0) {
         if(top.window.$('openPreviewBox'))
		 alert("Pay off goal (years from now) is required.");
		 else
		 alertMessage.show({msg:"Pay off goal (years from now) is required."},$('years'));
		 $('years').focus();
   }
   else {

		var principal = trimSpecialCharacters($('principal').value);
		var interest = trimSpecialCharacters($('interest').value);
		interest = (interest >= 1)?(interest/100):interest;
		interest /= 12;
		var years = trimSpecialCharacters($('years').value);
		var payment = trimSpecialCharacters($('payment').value);
		var months = years * 12;

		var pars = 1;
		for (var i = 0; i < months; i++)
		pars = pars * (1 + interest);

		var calPayment = (principal * pars * interest) / (pars - 1);

		if(calPayment <= payment) {
			if(top.window.$('openPreviewBox'))
			alert("At the terms the mortgage is already scheduled to be paid off in less than " + years + " years.");
			else
			alertMessage.show({msg:"At the terms the mortgage is already scheduled to be paid off in less than " + years + " years."},$('years'));
		    return;
		} 
		else {
			var paymentAdd = eval(calPayment) - eval(payment);
		   $('paymentAdd').value = "$" + formatNumber(paymentAdd,2,1);

		    var calPrincipal = trimSpecialCharacters($('principal').value);
		    var sCounter = 0;
		    var accumInterest = 0;

		    while(eval(calPrincipal) > eval(payment)) {
			    accumInterest = eval(accumInterest) + eval(calPrincipal * interest)
				calPrincipal = eval(calPrincipal) - eval(eval(payment) - eval(calPrincipal * interest));
				sCounter = eval(sCounter) + eval(1);

				if(sCounter > 600) {
					if(top.window.$('openPreviewBox'))
					alert("At the terms the mortgage will never be paid off. Please either decrease the principal or increase the monthly payment amount.");
					else
					alertMessage.show({msg:"At the terms the mortgage will never be paid off. Please either decrease the principal or increase the monthly payment amount."},$('years'));
					clearData("payoff");
					return;
					break;
				}
			}


		    var calInterest1 = accumInterest;
		    var calInterest2 = (eval(calPayment * months)) - eval(principal);
		    var interestSave = eval(calInterest1) - eval(calInterest2);

		    $('interestSave').value = "$" + formatNumber(interestSave,2,1);
		    $('results').value = "If you would like to pay off your mortgage in " + years + " years instead of the current " + formatNumber(sCounter / 12,2,1) + " years, you will need to start making a second monthly mortgage payment in the amount of $" + formatNumber(paymentAdd,2,1) + ". This will cut your current mortgage interest cost from $" + formatNumber(accumInterest,2,1) + " down  to $" + formatNumber(calInterest2,2,1) + ", a savings of $" + formatNumber(interestSave,2,1) + " in interest charges.";
		}
	}
}



function calculateTermComparison() {

	if($('principal').value.length == 0) {
		if(top.window.$('openPreviewBox'))
		alert("Mortgage Amount is required.");
		else
		alertMessage.show({msg:"Mortgage Amount is required."},$('principal'));
	    $('principal').focus();
	} 
	else if($('rate').value == "") {
		if(top.window.$('openPreviewBox'))
		alert("Interest rate is required.");
		else
		alertMessage.show({msg:"Interest rate is required."},$('rate'));
	    $('rate').focus();
	} 
	else 
	{
		var principal = trimSpecialCharacters($('principal').value);
		var rate = trimSpecialCharacters($('rate').value);

		var j = 60;
		for(var i=10; i<=30; i=i+5) {
			j = j + 60; 
			var payment = getPayment(principal, j, rate);
			var totalInterest = getInterestPaid(principal, rate, payment);
			var totalInterest = Math.round(totalInterest);
			var totalPayment = eval(principal) + eval(totalInterest);
			$('payment'+i).value = "$" + formatNumber(payment);
			$('totalPrincipal'+i).value = "$" + formatNumber(principal,0,1);
			$('totalInterest'+i).value = "$" + formatNumber(totalInterest,0,1);
			$('totalPayment'+i).value = "$" + formatNumber(totalPayment,0,1);
		
		}
	}
}
      

function calculateRateComparison() {

if($('principal').value.length == 0) {
	if(top.window.$('openPreviewBox'))
	alert("Mortgage amount is required.");
	else
	alertMessage.show({msg:"Mortgage amount is required."},$('principal'));
    $('principal').focus();
} 
else if($('years').value == "") {
	if(top.window.$('openPreviewBox'))
	alert("Term of Mortgage is required.");
	else
	alertMessage.show({msg:"Term of Mortgage is required."},$('years'));
    $('years').focus();
} 
else {
		var principal = trimSpecialCharacters($('principal').value); 
		var years = trimSpecialCharacters($('years').value);
		var months = years * 12;
		for(var i=1; i<=5; i++) {
			var rate = trimSpecialCharacters($('rate'+i).value);
			var monthPayment = getPayment(principal, months, rate); 
			$('monthPayment'+i).value = "$" + formatNumber(monthPayment,0,1); 
			$('totalPrincipal'+i).value = "$" + formatNumber(principal,0,1);

			var totalInterest = getInterestPaid(principal, rate, monthPayment);
			totalInterest = Math.round(totalInterest);
			$('totalInterest'+i).value = "$" + formatNumber(totalInterest,0,1);

			var totalPayment = eval(principal) + eval(totalInterest);
			$('totalPayment'+i).value = "$" + formatNumber(totalPayment,0,1);	
		}
	}
}


function calculateTaxSave() {

	if($('propertyValue').value == 0 || $('propertyValue').value == "") {
		if(top.window.$('openPreviewBox'))
		alert("Property Value is required.");
		else
	    alertMessage.show({msg:"Property Value is required."},$('propertyValue'));
		$('propertyValue').focus();
	} 
	else if($('principal').value == 0 || $('principal').value == "") {
		if(top.window.$('openPreviewBox'))
		alert("Mortgage Amount is required.");
		else
	    alertMessage.show({msg:"Mortgage Amount is required."},$('principal'));
		$('principal').focus();
	} 
	else if($('rate').value == 0 || $('rate').value == "") {
		if(top.window.$('openPreviewBox'))
		alert("Interest rate is required.");
		else
	    alertMessage.show({msg:"Interest rate is required."},$('rate'));
		$('rate').focus();
	} 
	else if($('term').value == 0 || $('term').value == "") {
		if(top.window.$('openPreviewBox'))
		alert("Term is required.");
		else
	    alertMessage.show({msg:"Term is required."},$('term'));
		$('term').focus();
	} 
	else if($('taxRate').value == 0 || $('taxRate').value == "") {
		if(top.window.$('openPreviewBox'))
		alert("State Income Tax Rate is required.");
		else
	    alertMessage.show({msg:"State Income Tax Rate is required."},$('taxRate'));
		$('taxRate').focus();
	} 
	else if($('saveYears').value == 0 || $('saveYears').value == "") {
		if(top.window.$('openPreviewBox'))
		alert("Term for which to calculate savings is required.");
		else
	    alertMessage.show({msg:"Term for which to calculate savings is required."},$('saveYears'));
		$('saveYears').focus();
	} 
	else {
		var propertyValue = trimSpecialCharacters($('propertyValue').value);
		var principal = trimSpecialCharacters($('principal').value);
		var rate = trimSpecialCharacters($('rate').value);
		var term = trimSpecialCharacters($('term').value);
		var points = trimSpecialCharacters($('points').value);
		var closeCosts = trimSpecialCharacters($('closeCosts').value);
		var propertyTaxRate = trimSpecialCharacters($('propertyTaxRate').value);
		var taxRate = trimSpecialCharacters($('taxRate').value);
		var saveYears = trimSpecialCharacters($('saveYears').value);

		var months = term * 12;

		var monthPayment = getPayment(principal, months, rate);
	
		propertyTaxRate = (propertyTaxRate>=1)?(propertyTaxRate/100):0;
		
		var annualPropertyTax = propertyValue * propertyTaxRate;
		var calRate = rate;
		calRate = (calRate >= 1)?(calRate/100):calRate;
		calRate /= 12;

		var calInterest = 0;
		var accumInterest = 0;
		var calPrincipal = 0;
		var saveMonths = 0;
		if(saveYears > term)
		saveMonths = months;
		else 
		saveMonths = saveYears * 12;
		
		var principalParam = principal;
		var sCounter = 0;
		while(sCounter < saveMonths) {
		   sCounter += 1;
		   calInterest = principalParam * calRate;
		   accumInterest += calInterest;
		   calPrincipal = eval(monthPayment) - eval(calInterest);
		   principalParam = eval(principalParam) - eval(calPrincipal);

		}

		var pointParam = points;
		pointParam = (pointParam >= 1)?(pointParam /100):pointParam;

		var pointsAmount = pointParam * principal;

		taxRate = (taxRate >= 1)?(taxRate / 100):taxRate;

		var totalDeduct = eval(accumInterest) + eval(pointsAmount) + eval(saveYears *  annualPropertyTax);
		var taxSavings = totalDeduct * taxRate;
		$('monthPayment').value = "$" + formatNumber(monthPayment,2,1);
		$('annualPropertyTax').value = "$" + formatNumber(annualPropertyTax,2,1);
		$('taxSavings').value = "$" + formatNumber(taxSavings,2,1);
	   }

}



function calculateQualification() {
	var price = trimSpecialCharacters($('price').value);
	if(price == "" || price == 0) 
	price = 60000;
	

	var downPayment = trimSpecialCharacters($('downPayment').value);
	if($('downPayMethod').value == 0) {
		if(downPayment >= 1) 
	    downPayment /= 100;
	    var downPaymentAmount = downPayment * price;
	} 
	else {
	   var downPaymentAmount = downPayment;
	}
	if(downPaymentAmount < 1) {
	   downPaymentAmount = 0;
	}
	$('downPaymentAmount').value = formatNumber(downPaymentAmount,2,1);


	var loan = eval(price) - eval(downPaymentAmount);
	$('loan').value = formatNumber(loan,2,1);


	var rate = trimSpecialCharacters($('rate').value);
	if(rate == "" || rate == 0) 
	rate = 8;
	rate = (rate >= 1)?(rate/100):rate;	
	rate /= 12;


	var noYears = trimSpecialCharacters($('noYears').value);
	var noMonths = noYears * 12;


	var param = 1;
	for (var i = 0; i < noMonths; i++) {
		param = param * (eval(1) + eval(rate));
	}
	var monthPayment = (loan * param * rate) / (eval(param) - eval(1));
	$('monthPayment').value = formatNumber(monthPayment,2,1);


	var propertyTaxPercAmount = trimSpecialCharacters($('propertyTaxPercAmount').value);
	if($('propertyTaxMethod').value == 0) {
		propertyTaxPercAmount /= 100;
	    var propertyTaxAmount = propertyTaxPercAmount * price;
	} 
	else {
		var  propertyTaxAmount = propertyTaxPercAmount;
	}
	if(propertyTaxAmount / 12 < 1) {
		propertyTaxAmount = 0;
	} 
	else {
		propertyTaxAmount = parseInt(propertyTaxAmount / 12,10);
	}
	$('propertyTaxAmoutn').value = formatNumber(propertyTaxAmount,2,1);


	var insurancePercAmount = trimSpecialCharacters($('insurancePercAmount').value);
	if($('insuranceMethod').selectedIndex == 0) {
		insurancePercAmount /= 100;
	    var insuranceAmount = insurancePercAmount * price;
	} 
	else {
		var  insuranceAmount = insurancePercAmount;
	}
	if(insuranceAmount / 12 < 1) 
	insuranceAmount = 0; 
	else 
	insuranceAmount = parseInt(insuranceAmount / 12,10);
	$('insuranceAmount').value = formatNumber(insuranceAmount,2,1);


	var pmiPercAmount = trimSpecialCharacters($('pmiPercAmount').value);
	if($('pmiMethod').value == 0) {
		pmiPercAmount /= 100;
	    var pmiAmount = pmiPercAmount * price;
	} 
	else {
		var pmiAmount = pmiPercAmount;
	}
	if(pmiAmount / 12 < 1) 
	pmiAmount = 0;
	else 
	pmiAmount = parseInt(pmiAmount / 12,10);
	$('pmiAmount').value = formatNumber(pmiAmount,2,1);

	
	var assocFees = trimSpecialCharacters($('assocFees').value);
	if(assocFees == "" || assocFees == 0) {
		assocFees = 0;
	    $('assocFees').value = 0;
	}

	
	var paymentPITI = eval(monthPayment) + eval(propertyTaxAmount) + eval(insuranceAmount) + eval(assocFees);
	$('paymentPITI').value = formatNumber(paymentPITI,2,1);

	
	var deductAmount = eval(rate * loan) + eval(insuranceAmount);
	$('deductAmount').value = formatNumber(deductAmount,2,1);

	
	var grossPay = trimSpecialCharacters($('grossPay').value);
	if($('payMethod').value == 0) 
	var monthPay = grossPay / 12;
	else 
	var monthPay = grossPay;
	  

	var monthDebts = trimSpecialCharacters($('monthDebts').value);
	if(monthDebts == "" || monthDebts == 0) {
		monthDebts = 0;
	    $('monthDebts').value = 0;
	}


	if(ratioIncome > 0.28 || ratioDebt > 0.36) 
	$('qualify').value = "No";
	else 
	$('qualify').value = "Yes";


	var maxPIncome = monthPay * 0.28;
	var maxPDebt = eval(monthPay  * 0.36) - eval(monthDebts);
	if(maxPIncome > maxPDebt) {
		var maxPmt = eval(maxPDebt) - (eval(propertyTaxAmount) + eval(insuranceAmount) + val(assocFees));
		var principal = eval(maxPDebt ) - eval(eval(maxPDebt  * rate));
		var sCounter = 1;
		while(sCounter < noMonths) {
			var calPrincipal = eval(maxPmt) - eval(principal * rate);
			principal = eval(principal) + eval(calPrincipal);
			sCounter = sCounter + 1;
			if(sCounter > 360) 
			break;  
			else 
			continue; 
		}
	} 
	else {
		var maxPmt = eval(maxPIncome) - eval(eval(propertyTaxAmount) + eval(insuranceAmount) + eval(assocFees));
		var principal = eval(maxPIncome) - (eval(maxPIncome  * rate));
		var sCounter = 1;
		while(sCounter < noMonths) {
			var calPrincipal = eval(maxPmt) - eval(principal * rate);
			principal = eval(principal) + eval(calPrincipal);
			sCounter = sCounter + 1;
			if(sCounter > 360) 
			break;  
			else 
			continue; 
		}
	}

	var maxloanAmount = principal;
	if(maxloanAmount < 0) 
	$('qualifyMax').value =  0;
	else 
	$('qualifyMax').value = formatNumber(maxloanAmount,2,1);


	var ratioIncome = paymentPITI / monthPay;
	if(ratioIncome < 0.01) 
	$('ratioIncome').value = formatNumber(ratioIncome *100,2,1) + "%";
	else 
	$('ratioIncome').value = formatNumber(ratioIncome *100,2,1) + "%";
	

	var ratioDebt = (eval(paymentPITI) + eval(monthDebts)) / monthPay ;
	if(ratioDebt < 0.01) 
	$('ratioDebt').value = formatNumber(ratioDebt * 100,2,1) + "%";
	else 
	$('ratioDebt').value = formatNumber(ratioDebt * 100,2,1) + "%";
	 
} 


function calculatePayment() { 
	if($('principal').value == 0 || $('principal').value == "") {
		if(top.window.$('openPreviewBox'))
		alert("Loan amount is required.");
		else
	    alertMessage.show({msg:"Loan amount is required."},$('principal'));
	    $('principal').focus();
	} 
	else if($('rate').value == 0 || $('rate').value == "") {
		if(top.window.$('openPreviewBox'))
		alert("Interest rate is required.");
		else
	    alertMessage.show({msg:"Interest rate is required."},$('rate'));
		$('rate').focus();
	} 
	else if($('years').value == 0 || $('years').value == "") {
		if(top.window.$('openPreviewBox'))
		alert("Term of Mortgage is required.");
		else
	    alertMessage.show({msg:"Term of Mortgage is required."},$('years'));
		$('years').focus();
	} 
	else {
		var principal = trimSpecialCharacters($('principal').value);
		var rate = trimSpecialCharacters($('rate').value);
		var years = trimSpecialCharacters($('years').value);
		
		var annualTax = $('annualTax').value;
		if(annualTax == 0 || annualTax == "") {
			annualTax = 0;
		    var monthlyTax =0;

		} 
		else {
			annualTax = trimSpecialCharacters(annualTax);
		    var monthlyTax = Math.round((annualTax / 12)*100)/100;
		}

		var annualInsurance = $('annualInsurance').value;
		if(annualInsurance == 0 || annualInsurance == "") {
			annualInsurance = 0;
		    var monthlyInsurance = 0;
		} 
		else {
		   annualInsurance = trimSpecialCharacters(annualInsurance);
		   var monthlyInsurance = Math.round((annualInsurance / 12)*100)/100;
		}


		var monthlyPMI = $('monthlyPMI').value;
		if(monthlyPMI == 0 || monthlyPMI == "") 
		monthlyPMI = 0;
		else 
		monthlyPMI = trimSpecialCharacters(monthlyPMI);

		var otherPayments = eval(monthlyTax) + eval(monthlyInsurance) + eval(monthlyPMI);
		var paymentAmount = getPayment(principal, years * 12, rate);
		var monthPayment = eval(paymentAmount) + eval(otherPayments);

		$('monthlyPI').value = "$"+formatNumber(paymentAmount,2,1);
		$('otherPayments').value = "$"+formatNumber(otherPayments,2,1);
		$('monthPayment').value = "$"+formatNumber(monthPayment,2,1);

   }

}


function calculateRefinancing() {

var msg = "";

if($('principal').value == "") {
    if(top.window.$('openPreviewBox'))
	alert("Unpaid balance of mortgage is required.");
	else
	alertMessage.show({msg:"Unpaid balance of mortgage is required."},$('principal'));
	$('principal').focus();
   
} else if($('payment').value == "") {
    if(top.window.$('openPreviewBox'))
	alert("Monthly mortgage payment is required.");
	else
    alertMessage.show({msg:"Monthly mortgage payment is required."},$('payment'));
	$('payment').focus();
} else if($('interest1').value == "") {
    if(top.window.$('openPreviewBox'))
	alert("Interest rate (current) is required.");
	else
    alertMessage.show({msg:"Interest rate (current) is required."},$('interest1'));
	$('interest1').focus();
} else if($('interest2').value == "") {
	if(top.window.$('openPreviewBox'))
	alert("Interest rate (new) is required.");
	else
    alertMessage.show({msg:"Interest rate (new) is required."},$('interest2'));
	$('interest2').focus();
} else if($('years').value == "") {
	if(top.window.$('openPreviewBox'))
	alert("Term of refinancing (years) is required.");
	else
    alertMessage.show({msg:"Term of refinancing (years) is required."},$('years'));
	$('years').focus();
} else if($('closingCost').value == "") {
	if(top.window.$('openPreviewBox'))
	alert("Closing costs is required.");
	else
    alertMessage.show({msg:"Closing costs is required."},$('closingCost'));
	$('closingCost').focus();

} else if(trimSpecialCharacters($('interest2').value) > trimSpecialCharacters($('interest1').value)) {
    msg = "You've entered a refinancing rate that is higher than your present rate.  ";
    msg += "The refinancing rate must be lower than your present rate in ";
    msg += "order for this calculator to work.";
    if(top.window.$('openPreviewBox'))
    alert(msg);
    else
	alertMessage.show({msg:msg},$('interest1'));
	$('interest1').focus();
   
} 
else {

    var payment = trimSpecialCharacters($('payment').value);
    var principal = trimSpecialCharacters($('principal').value);
    var dprincipal1 = principal;

    var closingCost = trimSpecialCharacters($('closingCost').value);
    var closeAmount = ($('type').value == "points")?(eval(closingCost) / 100 * principal):(closingCost);
	     
    var interest1 = trimSpecialCharacters($('interest1').value);
	interest1 = (interest1 >= 1.0)?(interest1 / 100.0):interest1;
	var summaryInst1 = interest1;
    var interest1  = interest1  / 12; 

    var interest2 = trimSpecialCharacters($('interest2').value);
	interest2 = (interest2 >= 1.0)?(interest2 / 100.0):interest2;
	var summaryInst2 = interest2; 
    var interest2  = interest2  / 12;

    var sCounter1 = 0;
	var calinterest1 = 0;
    var calprincipal1 = 0;
    var accumInterest1 = 0;
    

    while(dprincipal1 > 0) {
        calinterest1 = dprincipal1 * interest1;
        calprincipal1 = payment - calinterest1;
        dprincipal1 = dprincipal1 - calprincipal1;
        accumInterest1 = accumInterest1 + calinterest1;
        sCounter1 = sCounter1 + 1;
        if(sCounter1 > 600) 
			break; 
		else 
			continue; 
       }

    var dprincipal2 = 0;
    dprincipal2 = ($('yesNo').value=='No')?principal:(eval(principal) + eval(closeAmount));
	
    var years = trimSpecialCharacters($('years').value);
    var para = 1;
    for (var i = 0; i < years *12; i++)
        para = para * (1 + interest2);
    var payment2 = (dprincipal2 * para * interest2) / (para - 1);
    
    var monthSave = eval(payment) - eval(payment2);
    	
    var refinancedInerest = eval(payment2 * years *12) - eval(dprincipal2);
  
    var interestSave = accumInterest1 - refinancedInerest;
   
    var sCounter3 = 0;
	var dprincipal3 = dprincipal2;
    var dprincipal4 = principal;
    var calinterest3 = 0;
    var calinterest4 = 0;
    var calprincipal3 = 0;
    var calprincipal4 = 0;
    var accumInterest3 = 0;
    var accumInterest4 = 0;
    var calIntSave = 0;
    
    while(calIntSave < closeAmount) {

        calinterest3 = dprincipal3 * interest2;
        calinterest4 = dprincipal4 * interest1;
        calprincipal3 = payment2 - calinterest3;
        calprincipal4 = payment - calinterest4;
        dprincipal3 = dprincipal3 - calprincipal3;
        dprincipal4 = dprincipal4 - calprincipal4;
        accumInterest3 = accumInterest3 + calinterest3;
        accumInterest4 = accumInterest4 + calinterest4;
        calIntSave = accumInterest4 - accumInterest3;
        sCounter3 = sCounter3 + 1;
        if(sCounter3 > 600) 
			break; 
		else 
			continue; 
    }
   
    var netSave = eval(interestSave) - eval(closeAmount);
    var paymentUpDown = "";
    if(payment2 > payment) {
		paymentUpDown = "increase by $" + formatNumber(eval(payment2) - eval(payment),2,1) + "";
    } 
	else {
        paymentUpDown = "decrease by $" + formatNumber(eval(payment) - eval(payment2),2,1) + "";
    }

    var intSaveYesNo = "";
    if(accumInterest1 < refinancedInerest) {
        intSaveYesNo = "pay an additional $" + formatNumber(eval(refinancedInerest) - eval(accumInterest1),2,1) + " in";
        intSaveYesNo += " interest charges over the life of the mortgage.";
    } 
	else {
        intSaveYesNo = "save $" + formatNumber(eval(accumInterest1) - eval(refinancedInerest),2,1) + " in ";
		intSaveYesNo += "interest charges over the life of the mortgage. However, in order ";
		intSaveYesNo += "for this refinancing to yield any savings at all you will need to ";
		intSaveYesNo += "stay in your current home for at least " + sCounter3 + " months.  ";
		intSaveYesNo += "That's how long it will take for the monthly interest savings to ";
		intSaveYesNo += "offset the closing costs attributable to refinancing.";
    }

    var summary = "If you refinance your current " + formatNumber(summaryInst1 * 100,2,1) + "% ";
    summary += "mortgage to a " + formatNumber(summaryInst2 * 100,2,1) + "% mortgage, your ";
    summary += "monthly payment will " + paymentUpDown + " and you will " + intSaveYesNo + "";
    
	$('origInterest').value = "$" + formatNumber(accumInterest1,2,1);
	$('payment2').value = "$" + formatNumber(payment2,2,1);
	$('monthSave').value = "$" + formatNumber(monthSave,2,1);
	$('refinancedInerest').value = "$" + formatNumber(refinancedInerest,2,1);
	$('interestSave').value = (interestSave <= 0)?"$0.00":"$" + formatNumber(interestSave,2,1);
	$('closeMonth').value = sCounter3;
	$('netSave').value = (netSave <= 0)?"$0.00":"$" +formatNumber(netSave,2,1)+"";
	$('summary').value = summary;
	

   }
		
}


