<!--

//this function takes a number, removes a leading dollar sign and any commas
//then it rounds the number to two decimal places 
function correctNumber(correctMe)
{
	var correctedNumber = correctMe;
	
	//check for leading dollar sign, remove if necessary
	if (correctMe.substring(0,1)=='$')
		correctedNumber = correctMe.substring(1);
	
	//check for commas, remove if necessary
	commaArray = correctedNumber.split(",");
	if (commaArray.length>1)
	{	
		var noCommas = '';
		correctedNumber = '';
		for (var i=0;i<commaArray.length;i++)
		{
			noCommas = noCommas + commaArray[i];
		}
		correctedNumber = noCommas;
		var commaArray;
	}
	
	//parse floating point number, this will recognize only one decimal point
	correctedNumber = parseFloat(correctedNumber);

	//round to the nearest 2 decmial places
	correctedNumber = roundNumber(correctedNumber);

	return correctedNumber;
}

function roundNumber(numbertoround)
{
	var roundednumber = numbertoround;
	//round to the nearest 2 decmial places
	roundednumber = roundednumber*100;
	roundednumber = Math.round(roundednumber);
	roundednumber = roundednumber/100;
	return roundednumber;
}

function calchowmuchcaniafford()
{
	var income1Num = correctNumber(document.howmuchcaniafford.income1.value);
	var income2Num = correctNumber(document.howmuchcaniafford.income2.value);
	
	//calculate total income adding income1 + income2
	var totalmonthlyincomeNum =  income1Num + income2Num;
	document.howmuchcaniafford.totalincome.value = totalmonthlyincomeNum;

	//calculate total outside housing expenses using carloans + student loans + credit cards + other
	var carloansNum = correctNumber(document.howmuchcaniafford.carloans.value);
	var studentloansNum = correctNumber(document.howmuchcaniafford.studentloans.value);
	var creditcardsNum = correctNumber(document.howmuchcaniafford.creditcards.value);
	var otherloansNum = correctNumber(document.howmuchcaniafford.totalother.value);
	totalnonhousingNum = carloansNum + studentloansNum + creditcardsNum + otherloansNum;
	document.howmuchcaniafford.totalnonhousing.value = totalnonhousingNum;

	//calculate monthly total housing expenses by adding yealy property taxes and insurnace (or condo dues) and dividing by 12
	var propertytaxNum = correctNumber(document.howmuchcaniafford.propertytax.value);
	var insurancecondoduesNum = correctNumber(document.howmuchcaniafford.insurancecondodues.value);
	totalhousingMonthlyNum = roundNumber((propertytaxNum + insurancecondoduesNum) / 12);
	document.howmuchcaniafford.totalhousing.value = totalhousingMonthlyNum;
	
	//calculate P&I available by multiplying .42 by total monthly income, then subtracting all expenses
	var totalpandiNum = (.42*totalmonthlyincomeNum)-((totalnonhousingNum)+(totalhousingMonthlyNum));
	document.howmuchcaniafford.totalpandi.value = roundNumber(totalpandiNum);

	//calculate total loan amount available
	var loanyearsNum = parseInt(document.howmuchcaniafford.loanyears.value);
	var totalloanpaymentsNum = loanyearsNum*12;
	var interestrateNum = parseFloat(document.howmuchcaniafford.interestrate.value);
	var monthlyInterestRate = (interestrateNum/100)/12;
	
	document.howmuchcaniafford.totalavailable.value = roundNumber(PresentValue(totalpandiNum,monthlyInterestRate,totalloanpaymentsNum));
	
	window.location = "howmuchcaniafford.html#results";
}

function calcmortgagepayment()
{
	var totalloanamountN = correctNumber(document.mortgagepayment.totalloanamount.value);
	var loantermMonthsN = roundNumber(correctNumber(document.mortgagepayment.loantermyears.value)*12);
	var annualinterestrate = parseFloat(document.mortgagepayment.annualinterestrate.value);
	var yearlypropertytaxN = correctNumber(document.mortgagepayment.yearlypropertytax.value);
	var yearlyinsuranceduesN = correctNumber(document.mortgagepayment.yearlyinsurancedues.value);
	
	var monthlypaymentN = monthlyPayment(totalloanamountN,annualinterestrate,loantermMonthsN,0)
	
	document.mortgagepayment.monthlypayment.value = roundNumber(monthlypaymentN);
	document.mortgagepayment.monthlytaxes.value = roundNumber(yearlypropertytaxN/12);
	document.mortgagepayment.monthlyinsurancedues.value = roundNumber(yearlyinsuranceduesN/12);
	document.mortgagepayment.totalmonthlypayment.value = roundNumber(monthlypaymentN+(yearlypropertytaxN/12)+(yearlyinsuranceduesN/12));
	
	document.mortgagepayment.intonlymonthlypayment.value = roundNumber((totalloanamountN*(annualinterestrate/100))/12);
	document.mortgagepayment.intonlymonthlytaxes.value = roundNumber(yearlypropertytaxN/12);
	document.mortgagepayment.intonlymonthlyinsurancedues.value = roundNumber(yearlyinsuranceduesN/12);
	document.mortgagepayment.intonlytotalmonthlypayment.value = roundNumber(((totalloanamountN*(annualinterestrate/100))/12)+(yearlypropertytaxN/12)+(yearlyinsuranceduesN/12));

	window.location = "mortgagepayment.html#results";
}

function calcshouldirefinance() {

    var currentloanbalanceN = correctNumber(document.shouldirefinance.currentloanbalance.value);
    var currentpaymentN = correctNumber(document.shouldirefinance.currentpayment.value);
    //parse this differently?
	var yearsuntilsaleN = parseFloat(document.shouldirefinance.yearsuntilsale.value);
    var newloanbalanceN = correctNumber(document.shouldirefinance.newloanbalance.value);
    var newinterestrateN = parseFloat(document.shouldirefinance.newinterestrate.value);
    var newloantermN = roundNumber((document.shouldirefinance.newloanterm.value)*12);
    var costtorefinanceN = correctNumber(document.shouldirefinance.costtorefinance.value);
    
	//new monthly payment...
	var newmonthlypayment = roundNumber(monthlyPayment(newloanbalanceN,newinterestrateN,newloantermN,0));
	document.shouldirefinance.newloanpayment.value = newmonthlypayment;
	//document.shouldirefinance.newloanpayment.value = "$" + parseInt(fpayment2,10) + "." + parseInt(fpayment2 % 1 * 100,10);

	//monthly savings...
	var monthlysavings =  currentpaymentN - newmonthlypayment;
	document.shouldirefinance.monthlysavings.value = roundNumber(monthlysavings);
	//var fmoSave = parseInt(document.shouldirefinance.currentpayment.value) - fpayment2;
	//document.shouldirefinance.monthlysavings.value = "$" + parseInt(fmoSave,10) + "." + parseInt(fmoSave % 1 *100,10);
	
	//months until break even
	var monthsuntilbreakweven = costtorefinanceN / monthlysavings;
	document.shouldirefinance.monthstobreakeven.value = roundNumber(monthsuntilbreakweven);
	
	//total life savings
	document.shouldirefinance.netsavings.value = roundNumber(((yearsuntilsaleN*12)-monthsuntilbreakweven)*monthlysavings);

	window.location = "shouldirefinance.html#results";
}

function calchowlong()
{
	var loanamountNum = correctNumber(document.howlong.loanamount.value);
	var monthlypaymentNum = correctNumber(document.howlong.monthlypayment.value);
	var interestrateNum = parseFloat(document.howlong.interestrate.value);
	
	document.howlong.yearstopayoff.value = roundNumber(paymentDuration(loanamountNum,interestrateNum,0,monthlypaymentNum)/12);
	
}

//this funciton calculates how many months a loan will last
function paymentDuration (initial, annualRatePercent, residual, monthlyPayments) {
  if (annualRatePercent == 0.0) {
    return (Math.round( (initial - residual) / monthlyPayments));
  }
  else {
    var monthlyRate = annualRatePercent / 12.0 / 100.0;
    var initialPrinRate = initial * monthlyRate - monthlyPayments;
    if (initialPrinRate >= 0.0) {
      // No way to pay it back on that payment.
      return 1200;
    }
    else {
      return (Math.round(Math.log((residual * monthlyRate - monthlyPayments) /  initialPrinRate) / Math.log(1 + monthlyRate)));
    }
  }
}  

// this fountion calculates monthly payment
function monthlyPayment (initial, annualRatePercent, months, residual) {
  if (annualRatePercent == 0.0) {
    return (initial - residual) / months;
  }
  else {
    var monthlyRate = annualRatePercent / 12.0 / 100.0;
    var PVFactor = Math.pow(1 + monthlyRate, months);
    var FVFinanced = initial * PVFactor - residual;
    return (FVFinanced * monthlyRate / (PVFactor - 1));
  }
}

function calcthirtyvsfifteen()
{
	var totalloanamount = correctNumber(document.thirtyvsfifteen.loanamount.value);
	var thirtyIr = parseFloat(document.thirtyvsfifteen.thirtyyearir.value);
	var fifteenIr = parseFloat(document.thirtyvsfifteen.fifteenyearir.value);
	
	//what is 30 year monthly payment?
	var thirtyyearmonthlypayments = monthlyPayment(totalloanamount,thirtyIr,360,0);
	
	//what is 15 year monthly payment?
	var fifteenyearmonthlypayments = monthlyPayment(totalloanamount,fifteenIr,180,0);
	
	document.thirtyvsfifteen.thirtyyearmonthly.value = roundNumber(thirtyyearmonthlypayments);
	document.thirtyvsfifteen.thirtyyeartotal.value = roundNumber(thirtyyearmonthlypayments*360);
	
	document.thirtyvsfifteen.fifteenyearmonthly.value = roundNumber(fifteenyearmonthlypayments);
	document.thirtyvsfifteen.fifteenyeartotal.value = roundNumber(fifteenyearmonthlypayments*180);
	
	document.thirtyvsfifteen.additionalcost.value = roundNumber(fifteenyearmonthlypayments-thirtyyearmonthlypayments);
	document.thirtyvsfifteen.totalsavings.value = roundNumber((thirtyyearmonthlypayments*360)-(fifteenyearmonthlypayments*180));
	
}


function ExpN(nX, iN)   // compute x ** n, where n is integral
{
   var nResult = 1;
   var bSign = 0;
   if (iN < 0)
   {
      bSign = 1;
      iN = -iN;
   }
   while (iN > 0)
   {
      if (iN & 1)
         nResult *= nX;
      nX *= nX;
      iN >>= 1;
   }
   if (bSign)
      nResult = 1 / nResult;
   return nResult;
}

function PresentValue(nPayment, nPercent, iNumPeriods)
{
   var nAmount = (Math.abs(nPercent) > 1e-20)
         ? nPayment * (1 - ExpN(1 + nPercent, -iNumPeriods))
                                        / nPercent
         : nPayment * iNumPeriods;
   return nAmount;
}
// -->