// JavaScript Document

function gotFocus(ctl,val)
{

    if(document.getElementById(ctl.id).value==val)
    {
        document.getElementById(ctl.id).value='';
    }
}
function lostFocus(ctl,val)
{
    if(document.getElementById(ctl.id).value=='')
    {
        document.getElementById(ctl.id).value=val;
    }
}


function limit(id){    
    //alert(id);
    if(id=='1stMortgageBalance'){
        var obj=document.getElementById("EstimatedHomeValue");
        var maxValue=getInteger((obj.options[obj.selectedIndex].value) * .9 );
        var b=document.getElementById(id);
        var bMax = getInteger(b.options[b.options.length-1].value);
    }
    else if(id=='2ndMortgageBalance'){
        var obj=document.getElementById("EstimatedHomeValue");
        var FMB=document.getElementById("1stMortgageBalance");
        var maxValue=getInteger((( obj.options[obj.selectedIndex].value) - getInteger(FMB.options[FMB.selectedIndex].value)) * .9 );
        var b=document.getElementById(id);
        var bMax = getInteger(b.options[b.options.length-1].value);
            
    }else if(id=='AdditionalCash'){
        var obj=document.getElementById("EstimatedHomeValue");
        var FMB=document.getElementById("1stMortgageBalance");
        var SMB=document.getElementById("2ndMortgageBalance");
        var maxValue=getInteger(((obj.options[obj.selectedIndex].value) - getInteger(FMB.options[FMB.selectedIndex].value) -  getInteger(SMB.options[SMB.selectedIndex].value)) * .9 );
        var b=document.getElementById(id);
        var bMax = getInteger(b.options[b.options.length-1].value);
    }
    //alert(bMax);
    if (bMax > maxValue) {
        trim(b, maxValue);
        //alert('here');
    }
    else if (bMax < maxValue) {
        extend(b, bMax, maxValue);
        //alert(bMax+"  "+maxValue);
    }
}
//function limit(maxValue, b) {
//
// // the current max value in b's list.
// var bMax = getInteger(b.options[b.options.length-1].value);
//
// if (bMax > maxValue) {
//  trim(b, maxValue);
// }
// else if (bMax < maxValue) {
//  extend(b, bMax, maxValue);
// }
//}

/* extends list from bMax to maxValue. */
function extend(b, bMax, maxValue) {
 var i = bMax;
 var upperlimit = false;
 while (i < maxValue) {

  var inc = 0;

  if (i < 197500) {
   inc = 5000;
   if  (!((inc+i) > maxValue)){
    i+=inc;
   }else{
   	upperlimit = true;
   }
  }else if (i == 197500) {
   inc = 10000;
   i = 205000;
  }
  else if (i < 395000) {
   inc = 10000;
   if  (!((inc+i) > maxValue)){
    i+=inc;
   }else{
    upperlimit= true;
   }
  }
  else if (i == 395000) {
   inc = 20000;
   i = 410000;
  }
  else if (i < 990000) {
   inc = 20000;
   if  (!((inc+i) > maxValue)){
    i+=inc;
   }else{
    upperlimit= true;
   }
  }
  else {
   break;
  }
  if(upperlimit == true){
  	lower = upper+1;
	upper = maxValue+(inc/2);
  	addOption(toMoneyInt(lower) + ' - ' + toMoneyInt(upper), maxValue, b);
  	break;
  }else{
  	lower = i-((inc/2)-1);
  	upper = i+(inc/2);
  	addOption(toMoneyInt(lower) + ' - ' + toMoneyInt(upper), i, b);
  }
 }
}


/* Trim a list down to maxValue. */
function trim(b, maxValue) {

 for(var i=0; i<b.options.length; i++) {
  if (getInteger(b.options[i].value) > maxValue) {
   cullPoint = i-1;

   break;
  }
 }

 for(var j=b.options.length; j>cullPoint; j--) {
  b.remove(j);

 }

}

/** Makes 10000 look like 10,000, etc. */


function getInteger(vNum) {
	vNum = getIntegerString(vNum.toString());
	if (vNum == "") { vNum = 0; }
	return Number(vNum);
}

function getIntegerString(strIn) {
	return strIn.replace(/[^0-9]/g, "");
}

function addOption(text,value,list) {
  var opt = document.createElement('option');
  opt.text = text;
  opt.value = value;

  try {
   list.add(opt, null); // standards compliant; doesn't work in IE
  }
  catch(ex) {
   list.add(opt); // IE only
  }
}

function toMoneyInt(num) {

 str = num + ""
 len = str.length
 s = ""

 for(var i=len,j=0; i>=0; i--,j++) {
  s = str.charAt(i) + s;

  if (j==3 && i > 0) {
   s = "," + s;
   j = 0;
  }
 }

 return s;
}
function getFormFieldValue(hField) {
	if (!hField) { return undefined; }
	try {
		if (hField.type) {
			if (hField.type == "radio") {
				return getRadioValue(hField.form.elements[hField.name]);
			} else if (hField.type == "select-multiple") {
				return getMultipleSelectBoxValues(hField);
			} else {
				return hField.value;
			}
		}
	} catch (ex) {}
	try {
		if (hField.length && hField[0] && (hField[0].type == "radio")) {
			return getRadioValue(hField[0].form.elements[hField[0].name]);
		}
	} catch(ex) {}
	return undefined;
}
function getMultipleSelectBoxValues(hSelect) {
	var i, option, arrSelected = new Array();
	while (hSelect.selectedIndex >= 0) {
		arrSelected[arrSelected.length] = hSelect.selectedIndex;
		hSelect.options[hSelect.selectedIndex].selected = false;
	}
	for (i=0; i < arrSelected.length; i++) {
		option = hSelect.options[arrSelected[i]];
		option.selected = true;
		arrSelected[i] = option.value;
	}
	return arrSelected;
}
function isValueInSelectbox(hSelectbox, strValue) {
	for (var i=0; i < hSelectbox.options.length; i++) {
		if (hSelectbox.options[i].value == strValue) {
			return true;
		}
	}
	return false;
}
function toggleOtherField(hSelectbox, strOtherFormBlock) {
	// Shows another form block if an option with value "other" is selected in a SELECT form element.
	if (hSelectbox.value == "other") {
		showElement(strOtherFormBlock);
	} else {
		hideElement(strOtherFormBlock);
	}
}
function addCommasToNumString(strIn) {
	var arrTemp = strIn.split("");
	var i = strIn.length - 4;
	var iPoint = strIn.indexOf(".");
	if (iPoint > -1) { i -= (strIn.length - iPoint); }
	for (i; i >= 0; i-=3) { arrTemp[i] += ","; }
	return arrTemp.join("");
}

