
/**
 * This calculates a very rough estimate of PMI payments for a given
 * loan.
 */

var LTVTHRESHOLD = 0.8;

function PMICalculator() {
	var returnObject = new Object();

	returnObject.calculate = PMICalculatorCalculate;
	
	return returnObject;
}


/**
 * The calculate() method takes the loan parameters and determines 
 * estimated monthly PMI.
 * 
 * @param loanAmt loan amount in dollars
 * @param downPaymentAmt down payment amount in dollars
 * @return the monthly PMI payment in dollars
 */   
function PMICalculatorCalculate(loanAmt, downPaymentAmt) {
	if (loanAmt <= 0) {
		return 0;
	}

	var monthlyMI = 0;        
	var ltv = loanAmt/(loanAmt + downPaymentAmt);

	if (ltv > LTVTHRESHOLD) {
		var pmiRate = 0;

		if (ltv <= 0.85) {
			pmiRate = 0.0032; 
		} else if (ltv <= 0.90) {
			pmiRate = 0.0052; 
		} else if (ltv <= 0.95) {
			pmiRate = 0.0078; 
		} else  {
			pmiRate = 0.0090; 
		}

		monthlyMI = loanAmt * pmiRate/12;
	}

	return monthlyMI;
}


