
  var b_MSIE3 = navigator.userAgent.lastIndexOf('MSIE 3.') != -1;
  
function numFormat(elem, lead, sep, dec)
{
	if (elem.value == '') return true;
	
	// var value = parseInt(cleanNumber(elem.value), 10);
	var value = parseFloat(cleanNumber(elem.value));
	if (0 > value) value = 0;
	if (isNaN(value)) {
		alert('You may have entered an incorrect character or exceeded the range for some information on this tab. \nPlease check your information and try again.');
		elem.value = '';
		elem.focus();
		return false;
	}
	value = floor(value, dec);
	elem.value = format(value, lead, sep);
	return true;
}

function format(value, lead, sep)
{
	var strValue = new String(value);
	var len = strValue.length;
	var n;
	var strRet = '';
	var ctChar = 3 - (len%3);
	if (ctChar == 3) ctChar =0;
	for (n=0; len > n; n++) {
		if (ctChar == 3) {
			strRet += sep;
			ctChar = 0;
		}
		ctChar++;
		strRet += strValue.substring(n,n+1)		
	}
	if (lead == '%') {
		return strRet + " " + lead;
	}
	else {
		return lead + " " + strRet;
	}
}

function cleanNumber(strNum)
{
	if (!strNum) return strNum;
	strNum = replace(strNum, '$', '', 0);
	strNum = replace(strNum, ',', '', 0);
	strNum = replace(strNum, '%', '', 0);	
	return strNum;
}

function replace(szBuf, szFind, szReplace, lStart)
{
	var lFind = 0;
	if (!lStart) lStart = 0;
	
	while (lFind != -1) {
		lFind = szBuf.indexOf(szFind, lStart);

		if (b_MSIE3) {
			if (lFind != 0 &&(lFind == '' || lFind == null)) lFind = -1;
		}

		if (lFind != -1) {
			szBuf = szBuf.substring(0,lFind) + szReplace + szBuf.substring(lFind + szFind.length);
			lStart = lFind + szReplace.length;
		}
	}
	return szBuf;
}

function updateForm(pElem)
{
	  // reset results
  document.temps.PI.value = "";
  document.temps.MT.value = "";
  document.temps.MI.value = "";
  document.temps.PMI.value = "";
  document.temps.MP.value = "";
  
	var v = cleanNumber(pElem.value);
		
	if (pElem.name == 'HI')
	{
		if ((v == '') || !(0 <= v && v <= 20))
		{
			alert("Home Insurance must be a number between 0% and 20%!");
			pElem.focus();
			return(false);
		}
	numFormat(pElem, '%', '', 1)
	}
	
	
	else if (pElem.name == 'PDP')
	{
		document.temps.DP.value = cleanNumber(document.temps.PV.value) * v / 100;
	numFormat(document.temps.DP, '$', ',', 0)
	numFormat(pElem, '%', '', 1)
	}

	
	
	else if (pElem.name == 'PT')
	{
		if ((v == '') || !(0 <= v && v <= 20))
		{
			alert("Property Tax must be a number between 0% and 20%!");
			pElem.focus();
			return(false);
		}
	numFormat(pElem, '%', '', 1)
	}
	else if (pElem.name == 'PV')
	{
		if ((v == '') || !(0 < v && v <= 100000000))
		{
			alert("Property Value must be a number between $0 and $100,000,000!");
			pElem.focus();
			return(false);
		}
	numFormat(pElem, '$', ',', 0)
	}
	else if (pElem.name == 'DP')
	{
		if ((v == '') || !(0 <= v && v <= 100000000))
		{
			alert("Down Payment must be a number between $0 and $100,000,000!");
			pElem.focus();
			return(false);
		}
	numFormat(pElem, '$', ',', 0)
	document.temps.PDP.value = v / cleanNumber(document.temps.PV.value) * 100;
	}
	else if (pElem.name == 'IR')
	{
		if ((v == '') || !(0 < v && v <= 20))
		{
			alert("Interest Rate must be a number between 1% and 20%!");
			pElem.focus();
			return(false);
		}
	numFormat(pElem, '%', '', 2)
	}
	else if (pElem.name == 'YR')
	{
		if ((v == '') || !(0 < v && v <= 30))
		{
			alert("Length of Loan must be a number between 1 and 30!");
			pElem.focus();
			return(false);
		}
	numFormat(pElem, '', ',', 0)
	}
	return(true);
}
  
function floor(number, dec)
{
  return Math.floor(number*Math.pow(10,dec))/Math.pow(10,dec);
}

function dosum()
{
  var PMI = 0.005;
  var mir = cleanNumber(document.temps.IR.value) / 1200;
  var pv = cleanNumber(document.temps.PV.value) * 1;
  var dp = cleanNumber(document.temps.DP.value) * 1;
  var lv = pv - dp;
  var tr = cleanNumber(document.temps.YR.value) * 12;
  
  
  var base = 1;
  var mbase = 1 + mir;
  for (i=0; i<tr; i++)
  {
    base = base * mbase
  }
  var pi = lv * mir / ( 1 - (1/base));
  document.temps.PI.value = pi;
  numFormat(document.temps.PI, '$', '', 2);
  
  var mt = cleanNumber(document.temps.PT.value) * pv / 1200;
  document.temps.MT.value = mt;
  numFormat(document.temps.MT, '$', '', 2);
  
  
  var mi = cleanNumber(document.temps.HI.value) * pv / 1200;
  document.temps.MI.value = mi;
  numFormat(document.temps.MI, '$', '', 2);
  
  var LTV = dp / pv;
  var pmi = PMI * pv / 12;
  if (LTV < 0.2) {
  var pmi = PMI * pv / 12;
  }
  else
  {
  var pmi = 0;
  }
  document.temps.PMI.value = pmi;
  numFormat(document.temps.PMI, '$', '', 2);
  
var dasum = pi + mt + mi + pmi;
  document.temps.MP.value = dasum;
  numFormat(document.temps.MP, '$', '', 2);
}

