// JavaScript Document
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
  } if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}

function YY_checkform() { //v4.66
//copyright (c)1998,2002 Yaromat.com
  var args = YY_checkform.arguments; var myDot=true; var myV=''; var myErr='';var addErr=false;var myReq;
  for (var i=1; i<args.length;i=i+4){
    if (args[i+1].charAt(0)=='#'){myReq=true; args[i+1]=args[i+1].substring(1);}else{myReq=false}
    var myObj = MM_findObj(args[i].replace(/\[\d+\]/ig,""));
    myV=myObj.value;
    if (myObj.type=='text'||myObj.type=='password'||myObj.type=='hidden'){
      if (myReq&&myObj.value.length==0){addErr=true}
      if ((myV.length>0)&&(args[i+2]==1)){ //fromto
        var myMa=args[i+1].split('_');if(isNaN(myV)||myV<myMa[0]/1||myV > myMa[1]/1){addErr=true}
      } else if ((myV.length>0)&&(args[i+2]==2)){
          var rx=new RegExp("^[\\w\.=-]+@[\\w\\.-]+\\.[a-z]{2,4}$");if(!rx.test(myV))addErr=true;
      } else if ((myV.length>0)&&(args[i+2]==3)){ // date
        var myMa=args[i+1].split("#"); var myAt=myV.match(myMa[0]);
        if(myAt){
          var myD=(myAt[myMa[1]])?myAt[myMa[1]]:1; var myM=myAt[myMa[2]]-1; var myY=myAt[myMa[3]];
          var myDate=new Date(myY,myM,myD);
          if(myDate.getFullYear()!=myY||myDate.getDate()!=myD||myDate.getMonth()!=myM){addErr=true};
        }else{addErr=true}
      } else if ((myV.length>0)&&(args[i+2]==4)){ // time
        var myMa=args[i+1].split("#"); var myAt=myV.match(myMa[0]);if(!myAt){addErr=true}
      } else if (myV.length>0&&args[i+2]==5){ // check this 2
            var myObj1 = MM_findObj(args[i+1].replace(/\[\d+\]/ig,""));
            if(myObj1.length)myObj1=myObj1[args[i+1].replace(/(.*\[)|(\].*)/ig,"")];
            if(!myObj1.checked){addErr=true}
      } else if (myV.length>0&&args[i+2]==6){ // the same
            var myObj1 = MM_findObj(args[i+1]);
            if(myV!=myObj1.value){addErr=true}
      }
    } else
    if (!myObj.type&&myObj.length>0&&myObj[0].type=='radio'){
          var myTest = args[i].match(/(.*)\[(\d+)\].*/i);
          var myObj1=(myObj.length>1)?myObj[myTest[2]]:myObj;
      if (args[i+2]==1&&myObj1&&myObj1.checked&&MM_findObj(args[i+1]).value.length/1==0){addErr=true}
      if (args[i+2]==2){
        var myDot=false;
        for(var j=0;j<myObj.length;j++){myDot=myDot||myObj[j].checked}
        if(!myDot){myErr+='* ' +args[i+3]+'\n'}
      }
    } else if (myObj.type=='checkbox'){
      if(args[i+2]==1&&myObj.checked==false){addErr=true}
      if(args[i+2]==2&&myObj.checked&&MM_findObj(args[i+1]).value.length/1==0){addErr=true}
    } else if (myObj.type=='select-one'||myObj.type=='select-multiple'){
      if(args[i+2]==1&&myObj.selectedIndex/1==0){addErr=true}
    }else if (myObj.type=='textarea'){
      if(myV.length<args[i+1]){addErr=true}
    }
    if (addErr){myErr+='* '+args[i+3]+'\n'; addErr=false}
  }
  if (myErr!=''){alert('The required information is incomplete or contains errors:\t\t\t\t\t\n\n'+myErr)}
  document.MM_returnValue = (myErr=='');
}

function Validator(frmname)

{

  this.formobj=document.forms[frmname];

	if(!this.formobj)

	{

	  alert("BUG: couldnot get Form object "+frmname);

		return;

	}

	if(this.formobj.onsubmit)

	{

	 this.formobj.old_onsubmit = this.formobj.onsubmit;

	 this.formobj.onsubmit=null;

	}

	else

	{

	 this.formobj.old_onsubmit = null;

	}

	this.formobj.onsubmit=form_submit_handler;

	this.addValidation = add_validation;

	this.setAddnlValidationFunction=set_addnl_vfunction;

	this.clearAllValidations = clear_all_validations;

}

function set_addnl_vfunction(functionname)

{

  this.formobj.addnlvalidation = functionname;

}

function clear_all_validations()

{

	for(var itr=0;itr < this.formobj.elements.length;itr++)

	{

		this.formobj.elements[itr].validationset = null;

	}

}

function form_submit_handler()

{

	for(var itr=0;itr < this.elements.length;itr++)

	{

		if(this.elements[itr].validationset &&

	   !this.elements[itr].validationset.validate())

		{

		  return false;

		}

	}

	if(this.addnlvalidation)

	{

	  str =" var ret = "+this.addnlvalidation+"()";

	  eval(str);

    if(!ret) return ret;

	}

	return true;

}
function checksecondary()
{
		if(document.getElementById('MTG_TWO_YES').checked)
		{
			if(document.Application.BAL_TWO.value == '' )
			{
				alert("Please Select Second mortgage balance");
				document.Application.BAL_TWO.focus();
				return false;
			}
			if(document.Application.MTG_TWO_INT.value == '')
			{
				alert("Please Select Second mortgage Interest rate");
				document.Application.MTG_TWO_INT.focus();
				return false;
			}
			return true;
		}
		else
			return true;
}

function add_validation(itemname,descriptor,errstr)

{

  if(!this.formobj)

	{

	  alert("BUG: the form object is not set properly");

		return;

	}//if

	var itemobj = this.formobj[itemname];

  if(!itemobj)

	{

	  alert("BUG: Couldnot get the input object named: "+itemname);

		return;

	}

	if(!itemobj.validationset)

	{

	  itemobj.validationset = new ValidationSet(itemobj);

	}

  itemobj.validationset.add(descriptor,errstr);

}

function ValidationDesc(inputitem,desc,error)

{

  this.desc=desc;

	this.error=error;

	this.itemobj = inputitem;

	this.validate=vdesc_validate;

}

function vdesc_validate()

{

 if(!V2validateData(this.desc,this.itemobj,this.error))

 {

    this.itemobj.focus();

		return false;

 }

 return true;

}

function ValidationSet(inputitem)

{

    this.vSet=new Array();

	this.add= add_validationdesc;

	this.validate= vset_validate;

	this.itemobj = inputitem;

}

function add_validationdesc(desc,error)

{

  this.vSet[this.vSet.length]= 

	  new ValidationDesc(this.itemobj,desc,error);

}

function vset_validate()

{

   for(var itr=0;itr<this.vSet.length;itr++)

	 {

	   if(!this.vSet[itr].validate())

		 {

		   return false;

		 }

	 }

	 return true;

}

function validateEmailv2(email)

{

// a very simple email validation checking. 

// you can add more complex email checking if it helps 

    if(email.length <= 0)

	{

	  return true;

	}

    var splitted = email.match("^(.+)@(.+)$");

    if(splitted == null) return false;

    if(splitted[1] != null )

    {

      var regexp_user=/^\"?[\w-_\.]*\"?$/;

      if(splitted[1].match(regexp_user) == null) return false;

    }

    if(splitted[2] != null)

    {

      var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;

      if(splitted[2].match(regexp_domain) == null) 

      {

	    var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;

	    if(splitted[2].match(regexp_ip) == null) return false;

      }// if

      return true;

    }

return false;

}

function V2validateData(strValidateStr,objValue,strError) 

{ 

    var epos = strValidateStr.search("="); 

    var  command  = ""; 

    var  cmdvalue = ""; 

    if(epos >= 0) 

    { 

     command  = strValidateStr.substring(0,epos); 

     cmdvalue = strValidateStr.substr(epos+1); 

    } 

    else 

    { 

     command = strValidateStr; 

    } 

    switch(command) 

    { 

        case "req": 

        case "required": 

         { 

           if(eval(objValue.value.length) == 0) 

           { 

              if(!strError || strError.length ==0) 

              { 

                strError = objValue.name + " : Required Field"; 

              }//if 

              alert(strError); 

              return false; 

           }//if 

           break;             

         }//case required 

        case "maxlength": 

        case "maxlen": 

          { 

             if(eval(objValue.value.length) >  eval(cmdvalue)) 

             { 

               if(!strError || strError.length ==0) 

               { 

                 strError = objValue.name + " : "+cmdvalue+" characters maximum "; 

               }//if 

               alert(strError + "\n[Current length = " + objValue.value.length + " ]"); 

               return false; 

             }//if 

             break; 

          }//case maxlen 

        case "minlength": 

        case "minlen": 

           { 

             if(eval(objValue.value.length) <  eval(cmdvalue)) 

             { 

               if(!strError || strError.length ==0) 

               { 

                 strError = objValue.name + " : " + cmdvalue + " characters minimum  "; 

               }//if               

               alert(strError + "\n[Current length = " + objValue.value.length + " ]"); 

               return false;                 

             }//if 

             break; 

            }//case minlen 

        case "alnum": 

        case "alphanumeric": 

           { 

              var charpos = objValue.value.search("[^A-Za-z0-9]"); 

              if(objValue.value.length > 0 &&  charpos >= 0) 

              { 

               if(!strError || strError.length ==0) 

                { 

                  strError = objValue.name+": Only alpha-numeric characters allowed "; 

                }//if 

                alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 

                return false; 

              }//if 

              break; 

           }//case alphanumeric 

       

        case "num": 

        case "numeric": 

           { 

              var charpos = objValue.value.search("[^0-9.]"); 

              if(objValue.value.length > 0 &&  charpos >= 0) 

              { 

                if(!strError || strError.length ==0) 

                { 

                  strError = objValue.name+": Only digits allowed "; 

                }//if               

                alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 

                return false; 

              }//if 

              break;               

           }//numeric 

        case "alphabetic": 

        case "alpha": 

           { 

              var charpos = objValue.value.search("[^A-Za-z]"); 

              if(objValue.value.length > 0 &&  charpos >= 0) 

              { 

                  if(!strError || strError.length ==0) 

                { 

                  strError = objValue.name+": Only alphabetic characters allowed "; 

                }//if                             

                alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 

                return false; 

              }//if 

              break; 

           }//alpha 

		case "alnumhyphen":

			{

              var charpos = objValue.value.search("[^A-Za-z0-9\-_]"); 

              if(objValue.value.length > 0 &&  charpos >= 0) 

              { 

                  if(!strError || strError.length ==0) 

                { 

                  strError = objValue.name+": characters allowed are A-Z,a-z,0-9,- and _"; 

                }//if                             

                alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 

                return false; 

              }//if 			

			break;

			}

        case "email": 

          { 

               if(!validateEmailv2(objValue.value)) 

               { 

                 if(!strError || strError.length ==0) 

                 { 

                    strError = objValue.name+": Enter a valid Email address "; 

                 }//if                                               

                 alert(strError); 

                 return false; 

               }//if 

           break; 

          }//case email 

        case "lt": 

        case "lessthan": 

         { 

            if(isNaN(objValue.value)) 

            { 

              alert(objValue.name+": Should be a number "); 

              return false; 

            }//if 

            if(eval(objValue.value) >=  eval(cmdvalue)) 

            { 

              if(!strError || strError.length ==0) 

              { 

                strError = objValue.name + " : value should be less than "+ cmdvalue; 

              }//if               

              alert(strError); 

              return false;                 

             }//if             

            break; 

         }//case lessthan 

        case "gt": 

        case "greaterthan": 

         { 

            if(isNaN(objValue.value)) 

            { 

              alert(objValue.name+": Should be a number "); 

              return false; 

            }//if 

             if(eval(objValue.value) <=  eval(cmdvalue)) 

             { 

               if(!strError || strError.length ==0) 

               { 

                 strError = objValue.name + " : value should be greater than "+ cmdvalue; 

               }//if               

               alert(strError); 

               return false;                 

             }//if             

            break; 

         }//case greaterthan 

        case "regexp": 

         { 

		 	if(objValue.value.length > 0)

			{

	            if(!objValue.value.match(cmdvalue)) 

	            { 

	              if(!strError || strError.length ==0) 

	              { 

	                strError = objValue.name+": Invalid characters found "; 

	              }//if                                                               

	              alert(strError); 

	              return false;                   

	            }//if 

			}

           break; 

         }//case regexp 

        case "dontselect": 

         { 

            if(objValue.selectedIndex == null) 

            { 

              alert("BUG: dontselect command for non-select Item"); 

              return false; 

            } 

            if(objValue.selectedIndex == eval(cmdvalue)) 

            { 

             if(!strError || strError.length ==0) 

              { 

              strError = objValue.name+": Please Select one option "; 

              }//if                                                               

              alert(strError); 

              return false;                                   

             } 

             break; 

         }//case dontselect 

    }//switch 

    return true; 

}





function jump(from, to, length)

{

	if(from.value.length == length)

	{

	to.focus();

	}

}



function creditCheck()

{

	if(document.forms["Application"].creditcheck.checked==false)

	{

	alert("Sorry we are unable to help without permission to check your credit report.");

	}

}

/* Show/hide method */

function showLoan(select) {

 var others = MM_findObj("tblOthers");
 var newhome = MM_findObj("tblPurchase");
 
 // reload when product has changed after hitting submit
 if (others == null || newhome == null) {
    window.location.reload();
    select.value = "PP_REFI";
	return;
 }

 if (select.value == "PP_NEWHOME") {
   others.style.display="none";
   newhome.style.display="";
 }
 else {
   others.style.display="";
   newhome.style.display="none";
 }
}


function showLoanFields(obj) { if (obj.value == "PP_LOANMODI") {
		 window.location.href = 'apply-mortgage-loan-modification.php';
	 }
}

/*** functions for limiting values of dropdowns based on the value of another input ***/

/* Limit b's selections upto whatever a's selected value is. */
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);  
  }
 }
 
}

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
  }
}

/* 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 i=b.options.length; i>cullPoint; i--) {
  b.remove(i);
 }
 
}

/** Makes 10000 look like 10,000, etc. */
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;
}


/* fixes home equity bal two and add cach to start at >=15k if est-one > 15k.  
 * est, one:  est val and bal one.
 * form:      the form to fix up.
 */
function fixHomeEquity(est, one, form) {
 if((est - one) >= 15000) {
  
  for(var i=0; i<form.BAL_TWO.options.length; i++) {
   if(form.BAL_TWO.options[i].value < 15000) {
    // alert(form.BAL_TWO.options[i].text);
    form.BAL_TWO.options[i] = null;
    // decrement counter to accomodate array re-shuffle.
    // we could iterate backwards too...
    i--;
   }
  }
  
  for(var i=0; i<form.ADD_CASH.options.length; i++) {
   if(form.ADD_CASH.options[i].value < 15000) {
    // alert(form.ADD_CASH.options[i].text);
    form.ADD_CASH.options[i] = null;
    i--;
   }
  }
 }
}


/**** util methods */

function getInteger(vNum) {
	vNum = getIntegerString(vNum.toString());
	if (vNum == "") { vNum = 0; }
	return Number(vNum);
}

function getIntegerString(strIn) {
	return strIn.replace(/[^0-9]/g, "");
}

function trimString(strIn) {
	if (/^\s/.test(strIn)) { strIn = strIn.replace(/^\s{1,}/, ""); }
	if (/\s$/.test(strIn)) { strIn = strIn.replace(/\s{1,}$/, ""); }
	return strIn;
}

function getDecimalString(strIn) {
	strIn = strIn.replace(/[^0-9\.]/g, "");
	var iPoint = strIn.indexOf(".");
	if (iPoint > -1) {
		strIn = strIn.substring(0, iPoint + 1) + getIntegerString(strIn.substring((iPoint + 1), strIn.length));
	}
	return strIn;
}

function isValueInSelectbox(hSelectbox, strValue) {
	for (var i=0; i < hSelectbox.options.length; i++) {
		if (hSelectbox.options[i].value == strValue) {
			return true;
		}
	}
	return false;
}

function getParsedPhoneStr(strIn) {
	strIn = strIn.replace(/\.|-| |\(|\)/g,"");
	return strIn;
}


/*
 * DOM show/hide functions.
 * Do not set display to "block", it breaks things like table rows.
 */
function showElement(strID) {
	try { document.getElementById(strID).style.display = ""; } catch(ex) {}
}
function hideElement(strID) {
	try { document.getElementById(strID).style.display = "none"; } catch(ex) {}
}


function isNotHiddenFormField(form, strName) {
	// Tells you if a non-hidden field exists in a form.
	var type;
	var field = form.elements[strName];
	if (field && (typeof(field) == "object")) {
		try {
			type = field.getAttribute("type");
		} catch(ex) {
			// probably a radio button group (no attribute)
			return true;
		}
		if ((type) && (type.toLowerCase() == "hidden")) {
			return false;
		}
		return true;
	}
	return false;
}



function getRadioValue(hRadioGroup) {
	// Gets the selected value of a radio button group. If no radio button is selected, returns an empty string.
	for (var i=0; i < hRadioGroup.length; i++) {
		if (hRadioGroup[i].checked) { return hRadioGroup[i].value; }
	}
	return "";
}

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 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 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("");
}


function filterIntegerAddCommas(hField) {
	hField.value = addCommasToNumString(getIntegerString(hField.value));
}

function filterInteger(hField) {
   hField.value = getIntegerString(hField.value);
}


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 qs() {
var query = window.location.search.substring(1);
var parms = query.split('&');
for (var i=0; i<parms.length; i++) {
   var pos = parms[i].indexOf('=');
   if (pos > 0) {
      var key = parms[i].substring(0,pos);
      var val = parms[i].substring(pos+1);
      qsParm[key] = val;
      }
   }
}

function validateRadioButton(hRadioButton, strAlert){
	var selectedOption = -1;
	for(i=hRadioButton.length-1; i > -1; i--){
		if (hRadioButton[i].checked) {
			selectedOption= i;
		}
	}
	if(selectedOption == -1){
		return validationAlert(strAlert, hRadioButton[0]);
	}
	return true;
}

function validateCheckBox(hCheckBox, strAlert){
	if(!hCheckBox.checked){
		return validationAlert(strAlert, hCheckBox);
	}
	return true;
}
var downPaymentOptionLabelText = "{0}% down";

function updateDownPaymentSelectBox(hDownPaymentSelect, hHomeValueField) {
	var form = hDownPaymentSelect.form;
	var lastValue = getFormFieldValue(hDownPaymentSelect);
	var homeValue = getInteger(getFormFieldValue(hHomeValueField));
	var showDollarValue = (homeValue != 0) ? true : false;

	var opts = hDownPaymentSelect.options;
	var tmpLabel;
	var tmpDollarValue;
	for (var i=0; i < opts.length; i++) {
		if ((opts[i].value == "") || isNaN(opts[i].value)) { continue; }
		tmpLabel = downPaymentOptionLabelText.replace("{0}", opts[i].value);
		if (showDollarValue) {
			tmpDollarValue = new String(calculateDownPaymentValue(parseInt(opts[i].value), homeValue));
			tmpLabel = "$" + addCommasToNumString(tmpDollarValue) + " (" + tmpLabel + ")";
		}
		
		hDownPaymentSelect.options[i].text = tmpLabel;
	}

	var msieFix = "fixDownPaymentBoxForMSIE('" + form.name + "', '" + hDownPaymentSelect.name + "', '" + lastValue + "');";
	setTimeout(msieFix, 50);
	
	form.down_payment_other.value = homeValue;
	
}


function calculateDownPaymentValue(percent, price) {
	return Math.ceil(price * (percent / 100));
}


function fixDownPaymentBoxForMSIE(formName, fieldName, lastValue) {
	var select = document.forms[formName].elements[fieldName];
 	if (select.selectedIndex == -1) {
 	    if (isValueInSelectbox(select, lastValue)) {
 	        select.value = lastValue;
 	    } else {
 	        select.value = "";
 	    }
 	}
}

function doDownPaymentSelectBoxLogic(hSelectbox) {
	var form = hSelectbox.form;
	toggleOtherField(hSelectbox, "otherDownPaymentBlock");
	if (hSelectbox.value == "other") {
		form.down_payment_other.value = "";
		form.DOWN_PMT.value = "";
	} else {
		if (form.down_payment_other.value != 0) {
			form.DOWN_PMT.value = calculateDownPaymentValue(parseInt(hSelectbox.value), form.down_payment_other.value);
		} else {
			form.DOWN_PMT.value = calculateDownPaymentValue(parseInt(hSelectbox.value), form.EST_VAL.value);
	}
}
}

/* ###### GENERAL HELPER FUNCTIONS ######  */

function validationAlert(strAlert, hField) {
	// Displays an alert, focuses a form field, and returns false.
	alert(strAlert);
	try { hField.focus(); } catch(ex) {}
	return false;
}


/* ####### STRING VALIDATION ####### */

function isValidFirstName(strName) {
	if (/[^A-Za-z -]/.test(strName)) { return false; }
	return true;
}

function isValidLastName(strName) {
	if (/[^A-Za-z -]/.test(strName)) { return false; }
	return true;
}

function isValidStreetAddress(strAddress) {
	if (strAddress.length < 3) { return false; }
	if (strAddress.replace(/[^0-9]/g, "").length < 1) { return false; }
	if (strAddress.replace(/[^A-Za-z]/g, "").length < 1) { return false; }
	return true;
}

function isValidCity(strCity) {
	if (strCity.length < 2) { return false; }
	if (/[^A-Za-z -]/.test(strCity)) { return false; }
	return true;
}

function isValidEntirePhone(strPhone) {
	var bparsedStr = trimString(strPhone);
	var parsedStr = getParsedPhoneStr(bparsedStr);
	if (parsedStr.length < 10) { return false; }
	if (parsedStr.length > 17) { return false; }
	if (/^[01]/.test(parsedStr)) { return false; }
	var npa = parsedStr.substring(0,3);
	if (!isValidPhoneNPA(npa)) {
		return false;
	}
	var nxx = parsedStr.substring(3,6);
	if (!isValidPhoneNXX(nxx)) {
		return false;
	}
	
	return true;
}

function isValidPhoneNPA(strNPA) {
	if (strNPA.length < 3) { return false; }
	if (/[^0-9]/.test(strNPA)) { return false; }
	if (/^[01]/.test(strNPA)) { return false; }
	if ("200,222,300,333,400,444,500,555,600,666,700,777,900,999".indexOf(strNPA) != -1) { return false; }
	return true;
}

function isValidPhoneNXX(strNXX) {
	if (strNXX.length < 3) { return false; }
	if (/[^0-9]/.test(strNXX)) { return false; }
	if (/^[01]/.test(strNXX)) { return false; }
	return true;
}

function isValidEmail(strEmail) {
	var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/

	if (strEmail.length < 5) { return false; }

	if (!strEmail.match(re)) { return false; }
	
	return true;
}

/* ####### GENERIC FORM VALIDATORS ####### */

function validateInput(hInput, minLength, inputDescription) {
	if (hInput.value.length == 0) {
		return validationAlert("Please enter " + inputDescription + ".", hInput);
	} else if (hInput.value.length < minLength) {
		return validationAlert("Please re-enter " + inputDescription + ".\n(The information you entered is incomplete.)", hInput);
	}
	return true;
}

function validateSelectbox(hSelectbox, strAlert) {
	if (hSelectbox.value.length == 0) {
		return validationAlert(strAlert, hSelectbox);
	}
	return true;
}

function validateComparison(hInput, strCompare, inputDescription, extraDescription) {
	if (hInput.value != strCompare) {
		return validationAlert("Please re-enter " + inputDescription + " " + extraDescription + ".", hInput);
	}
	return true;
}

function validateNumbersOnly(hInput, strAlert) {
	if (/[^0-9]/.test(hInput.value)) {
		return validationAlert(strAlert, hInput);
	}
	return true;
}

function validateIntegerInput(hInput, minLength, inputDescription) {
	if (!validateInput(hInput, minLength, inputDescription)) { return false; }
	if (!validateNumbersOnly(hInput, inputDescription)) { return false; }
	return true;
}

function validateSSN1Input(hInput) {
	if (hInput.value.length != 3) { return validationAlert(ErrorMsg.INVALID_SSN, hInput); }
	if (/[^0-9]/.test(hInput.value)) { return validationAlert(ErrorMsg.INVALID_SSN, hInput); }
	return true;
}

function validateSSN2Input(hInput) {
	if (hInput.value.length != 2) { return validationAlert(ErrorMsg.INVALID_SSN, hInput); }
	if (/[^0-9]/.test(hInput.value)) { return validationAlert(ErrorMsg.INVALID_SSN, hInput); }
	return true;
}

function validateSSN3Input(hInput) {
	if (hInput.value.length != 4) { return validationAlert(ErrorMsg.INVALID_SSN, hInput); }
	if (/[^0-9]/.test(hInput.value)) { return validationAlert(ErrorMsg.INVALID_SSN, hInput); }
	return true;
}


/* ####### FORM VALIDATION STRING CONSTANTS ####### */

var ErrorMsg = new Object();
	ErrorMsg.VAR1 = "%VAR1%";
	ErrorMsg.EMPTY_FIRSTNAME = "Please enter your First Name.";
	ErrorMsg.INVALID_FIRSTNAME = "Your First Name may only contain letters, hyphens, or spaces. Please update your entry.";
	ErrorMsg.EMPTY_LASTNAME = "Please enter your Last Name.";
	ErrorMsg.INVALID_LASTNAME = "Your Last Name may only contain letters, hyphens, or spaces. Please update your entry.";
	ErrorMsg.EMPTY_ADDRESS = "Please enter your Address.";
	ErrorMsg.INVALID_ADDRESS = "Your Address must contain letters and numbers. Please update your entry.";
	ErrorMsg.EMPTY_CITY = "Please enter your City.";
	ErrorMsg.INVALID_CITY = "Your City may only contain letters, hyphens, or spaces. Please update your entry.";
	ErrorMsg.UNSELECTED_STATE = "Please select your State.";
	ErrorMsg.EMPTY_ZIPCODE = "Please enter your Zip Code.";
	ErrorMsg.INVALID_ZIPCODE = "Your Zip Code must be at least five numbers. Please update your entry.";
	ErrorMsg.INVALID2_ZIPCODE = "Your Zip Code may only contain numbers. Please update your entry.";
	ErrorMsg.EMPTY_PRI_PHONE = "Please enter your Primary Phone Number";
	ErrorMsg.INVALID_PRI_PHONE = "Please enter your valid Primary Phone Number";
	ErrorMsg.INVALID_SEC_PHONE = "Please enter your valid Secondary Phone Number";
	ErrorMsg.EMPTY_PHONE_NPA = "Please enter your " + ErrorMsg.VAR1 + " Phone Number Area Code";
	ErrorMsg.INVALID_PHONE_NPA = "Your " + ErrorMsg.VAR1 + " Phone Number Area Code must be a valid three-digit area code. Please update your entry.";
	ErrorMsg.EMPTY_PHONE_NXX = "Please enter the first three digits of your " + ErrorMsg.VAR1 + " Phone Number.";
	ErrorMsg.INVALID_PHONE_NXX = "Your " + ErrorMsg.VAR1 + " Phone Number must begin with three numbers. Please update your entry.";
	ErrorMsg.INVALID2_PHONE_NXX = "Your " + ErrorMsg.VAR1 + " Phone Number may not begin with a \"1\" or a \"0\". Please update your entry.";
	ErrorMsg.EMPTY_PHONE_STATION = "Please enter the last four digits of your " + ErrorMsg.VAR1 + " Phone Number.";
	ErrorMsg.INVALID_PHONE_STATION = "Your " + ErrorMsg.VAR1 + " Phone Number must end with four numbers. Please update your entry.";
	ErrorMsg.EMPTY_EMAIL = "Please enter your Email Address.";
	ErrorMsg.INVALID_EMAIL = "You must enter a valid Email Address. Please update your entry.";
	ErrorMsg.EMPTY_STREET_NUMBER = "Please enter your Street Number.";
	ErrorMsg.EMPTY_STREET_NAME = "Please enter your Street Name.";
    ErrorMsg.UNSELECTED_BEST_CALL_TIME = "Please select Best Time to Call.";
    ErrorMsg.EMPTY_PREMATCH_NPA = "Please enter the area code where you currently live.";
    ErrorMsg.INVALID_PREMATCH_NPA = "Please enter the area code where you currently live. No 800 or 888 numbers please.";
    ErrorMsg.RESTRICTED_PREMATCH_NPA = "Please enter the area code where you currently live. No 800 or 888 numbers please.";
    ErrorMsg.INVALID_SSN = "Please correct your Social Security Number.";
    

/* ####### SPECIFIC-USE FORM VALIDATORS ####### */

function validateFirstNameInput(hInput) {
	if (hInput.value.length == 0) { return validationAlert(ErrorMsg.EMPTY_FIRSTNAME, hInput); }
	if (!isValidFirstName(hInput.value)) { return validationAlert(ErrorMsg.INVALID_FIRSTNAME, hInput); }
	return true;
}

function validateLastNameInput(hInput) {
	if (hInput.value.length == 0) { return validationAlert(ErrorMsg.EMPTY_LASTNAME, hInput); }
	if (!isValidLastName(hInput.value)) { return validationAlert(ErrorMsg.INVALID_LASTNAME, hInput); }
	return true;
}

function validateStreetAddressInput(hInput) {
	if (hInput.value.length == 0) { return validationAlert(ErrorMsg.EMPTY_ADDRESS, hInput); }
	if (!isValidStreetAddress(hInput.value)) { return validationAlert(ErrorMsg.INVALID_ADDRESS, hInput); }
	return true;
}

function validateStreetNumberInput(hInput) {
	if (hInput.value.length == 0) { return validationAlert(ErrorMsg.EMPTY_STREET_NUMBER, hInput); }
	return true;
}

function validateStreetNameInput(hInput) {
	if (hInput.value.length == 0) { return validationAlert(ErrorMsg.EMPTY_STREET_NAME, hInput); }
	return true;
}

function validateCityInput(hInput) {
	if (hInput.value.length == 0) { return validationAlert(ErrorMsg.EMPTY_CITY, hInput); }
	if (!isValidCity(hInput.value)) { return validationAlert(ErrorMsg.INVALID_CITY, hInput); }
	return true;
}

function validateZipCodeInput(hInput) {
	if (hInput.value.length == 0) { return validationAlert(ErrorMsg.EMPTY_ZIPCODE, hInput); }
	if (hInput.value.length < 5) { return validationAlert(ErrorMsg.INVALID_ZIPCODE, hInput); }
	if (/[^0-9]/.test(hInput.value)) { return validationAlert(ErrorMsg.INVALID2_ZIPCODE, hInput); }
	return true;
}

function validatePropZipCodeInput(hInput) {
	if (hInput.value.length == 0) { return true; }
	if (hInput.value.length < 5) { return validationAlert(ErrorMsg.INVALID_ZIPCODE, hInput); }
	if (/[^0-9]/.test(hInput.value)) { return validationAlert(ErrorMsg.INVALID2_ZIPCODE, hInput); }
	return true;
}

function validatePrematchNPAInput(hInput) {
	if (hInput.value.length == 0) { return validationAlert(ErrorMsg.EMPTY_PREMATCH_NPA, hInput); }
	if (hInput.value.length < 3) { return validationAlert(ErrorMsg.INVALID_PREMATCH_NPA, hInput); }
	if (!isValidPhoneNPA(hInput.value)) { return validationAlert(ErrorMsg.INVALID_PREMATCH_NPA, hInput); }
	if ((hInput.value == "800") || (hInput.value == "888")) { return validationAlert(ErrorMsg.RESTRICTED_PREMATCH_NPA, hInput); }
	return true;
}

function validatePhoneNPAInput(hInput, strPhoneType) {
	if (hInput.value.length == 0) { return validationAlert(ErrorMsg.EMPTY_PHONE_NPA.replace(ErrorMsg.VAR1, strPhoneType), hInput); }
	if (hInput.value.length < 3) { return validationAlert(ErrorMsg.INVALID_PHONE_NPA.replace(ErrorMsg.VAR1, strPhoneType), hInput); }
	if (!isValidPhoneNPA(hInput.value)) { return validationAlert(ErrorMsg.INVALID_PHONE_NPA.replace(ErrorMsg.VAR1, strPhoneType), hInput); }
	return true;
}

function validatePhoneNXXInput(hInput, strPhoneType) {
	if (hInput.value.length == 0) { return validationAlert(ErrorMsg.EMPTY_PHONE_NXX.replace(ErrorMsg.VAR1, strPhoneType), hInput); }
	if (hInput.value.length < 3) { return validationAlert(ErrorMsg.INVALID_PHONE_NXX.replace(ErrorMsg.VAR1, strPhoneType), hInput); }
	if (/[^0-9]/.test(hInput.value)) { return validationAlert(ErrorMsg.INVALID_PHONE_NXX.replace(ErrorMsg.VAR1, strPhoneType), hInput); }
	if (/^[01]/.test(hInput.value)) { return validationAlert(ErrorMsg.INVALID2_PHONE_NXX.replace(ErrorMsg.VAR1, strPhoneType), hInput); }
	return true;
}

function validatePhoneStationInput(hInput, strPhoneType) {
	if (hInput.value.length == 0) { return validationAlert(ErrorMsg.EMPTY_PHONE_STATION.replace(ErrorMsg.VAR1, strPhoneType), hInput); }
	if (hInput.value.length < 4) { return validationAlert(ErrorMsg.INVALID_PHONE_STATION.replace(ErrorMsg.VAR1, strPhoneType), hInput); }
	if (/[^0-9]/.test(hInput.value)) { return validationAlert(ErrorMsg.INVALID_PHONE_STATION.replace(ErrorMsg.VAR1, strPhoneType), hInput); }
	return true;
}

function validateEmailInput(hInput) {
	hInput.value = trimString(hInput.value);
	if (hInput.value.length == 0) { return validationAlert(ErrorMsg.EMPTY_EMAIL, hInput); }
	if (!isValidEmail(hInput.value)) { return validationAlert(ErrorMsg.INVALID_EMAIL, hInput); }
	return true;
}

function validatePrimaryPhoneInput(hInput) {
	if (hInput.value.length == 0) { return validationAlert(ErrorMsg.EMPTY_PRI_PHONE, hInput); }
	if (!isValidEntirePhone(hInput.value)) { return validationAlert(ErrorMsg.INVALID_PRI_PHONE, hInput); }
	return true;
}

function validateSecondaryPhoneInput(hInput) {
	if (hInput.value.length == 0) { return true; }
	if (!isValidEntirePhone(hInput.value)) { return validationAlert(ErrorMsg.INVALID_SEC_PHONE, hInput); }
	return true;
}
	

/* ####### DYNAMIC FORM FIELD FUNCTIONS ####### */


function initOtherField(hHidden, hSelectbox, hTextbox, strOtherFormBlock) {
	// Initialize an "other value" selectbox/textbox combo (on page load).
	hSelectbox.value = hHidden.value;
	if (hSelectbox.value == hHidden.value) {
		hTextbox.value = "";
	} else {
		hSelectbox.value = "other";
		hTextbox.value = hHidden.value;
	}
	toggleOtherField(hSelectbox, strOtherFormBlock);
}

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 focusOtherField(hSelectbox, hTextbox) {
	// Focuses the appropriate field in a selectbox/textbox combo (for "other value" form validation).
	if (hSelectbox.value != "other") {
		hSelectbox.focus();
	} else {
		hTextbox.focus();
	}
}

function focusFirstEmptyField(form) {
	var hField;
	for (var i=0; i < form.elements.length; i++) {
		hField = form.elements[i];
		try {
			if (isNotHiddenFormField(form, hField.name) && (getFormFieldValue(hField) == "")) {
				hField.focus();
				return;
			}
		} catch(ex) {}
	}
}

function toggleElementBasedOnField(element, field, listOfValues) {
	// Toggles the visibility of the specified element, checking the value of the specified field against
	// the list of specified values.  If any values in the list match the field value, the field is made
	// visible--otherwise, the field is hidden
	var fieldValue = getFormFieldValue(field);
	var show = false;
	for (var i=0;i<listOfValues.length;i++) {
		if (listOfValues[i] == fieldValue) {
			show = true;
			break;
		}
	}
	
	if (show) {
		showElement(element);
	}
	else {
		hideElement(element);
	}
}

function setFieldNumbers(nextNum) {
	if (arguments.length < 2) { return nextNum; }
	var element;
	for (var i=1; i < arguments.length; i++) {
		element = document.getElementById(arguments[i]);
		if (!element) { continue; }
		try {
			element.innerHTML = nextNum;
			nextNum++;
		} catch(ex) {}
	}
	return nextNum;
}


function validateForm(form) {

	// remove elements from the dhtml when using dynamic display to avoid 
	// multiple values of the same element name
	if (form.PRODUCT != null) {
		typeEle = form.PRODUCT;
		if (typeEle.type == "select-one") {
			loanType = typeEle.options[typeEle.selectedIndex].value;
			if (loanType == 'PP_NEWHOME') {
				// remove all field from the GEN_MORT table
				var tableElem = document.getElementById("tblOthers");
				if (tableElem != null) {
					tableElem.parentNode.removeChild(tableElem);
				}
			} else {
				// remove all fields from the NEWHOME table
				var tableElem = document.getElementById("tblPurchase");
				if (tableElem != null) {
					tableElem.parentNode.removeChild(tableElem);
				}
			}
		}
	}		
	
	var productElement = form.PRODUCT;
	
	if (productElement != null && ((productElement.type == "select-one" && productElement.options[productElement.selectedIndex].value == "PP_HOME_EQUITY") || (productElement.type == "hidden" && productElement.value == "PP_HOME_EQUITY"))) {
		// make sure BAL_TWO and ADD_CASH is at least 15k
		var balTwo = form.BAL_TWO;
		var addCash = form.ADD_CASH;
		
		// only check when both parameters are present
		if (balTwo != null && addCash != null) {
			
			// only check when both parameters are not hidden
			if (balTwo.type != "hidden" && addCash.type != "hidden") {
				
				if (getInteger(getFormFieldValue(balTwo)) + getInteger(getFormFieldValue(addCash)) < 15000) {
					validationAlert("Minimum Home Equity line is $15,000", balTwo);
					return false;
				}				
			}
		}
	}
	
	var fieldName;
	/* validate only the fields defined in the form */
	for (var i=0; i < form.elements.length; i++) {
		
		fieldName = form.elements[i].name.toUpperCase();

		if (fieldName == "EST_VAL") {
			if (form.elements[i].type != "hidden") {
				if (!validateSelectbox(form.elements[i], "Please select the Estimated Property Value.")) {
        			return false;
				}else if(form.elements[i].value<80000){
					return validationAlert('Minimum Estimated Value must be at least $80,000.', form.elements[i]);
				}
			}
		} else if (fieldName == "EST_VAL2") {
			if (form.elements[i].type != "hidden") {
				if (!validateSelectbox(form.elements[i], "Please select the Estimated Property Value.")) {
        			return false;
				}else if(form.elements[i].value<80000){
					return validationAlert('Minimum Estimated Value must be at least $80,000.', form.elements[i]);
				}
			}
		} else if (fieldName == "PROP_ZIP") {
			if (form.elements[i].type != "hidden") {
				if (!validatePropZipCodeInput(form.elements[i])) {
        			return false;
				}
			}
		} else if (fieldName == "FNAME") {
			if (form.elements[i].type != "hidden") {
				if (!validateFirstNameInput(form.elements[i])) {
					return false;
				}
			}
		} else if (fieldName == "LNAME") {
			if (form.elements[i].type != "hidden") {
				if (!validateLastNameInput(form.elements[i])) {
					return false;
				}
			}
		} else if (fieldName == "ZIP") {
			if (form.elements[i].type != "hidden") {
				if (!validateZipCodeInput(form.elements[i])) {
					return false;
				}
			}
		} else if (fieldName == "EMAIL") {
			if (form.elements[i].type != "hidden") {
				if (!validateEmailInput(form.elements[i])) {
					return false;
				}
			}
		} else if (fieldName == "ADDRESS") {
			if (form.elements[i].type != "hidden") {
				if (!validateStreetAddressInput(form.elements[i])) {
					return false;
				}
			}	
		} else if (fieldName == "CITY") {
			if (form.elements[i].type != "hidden") {
				if (!validateCityInput(form.elements[i])) {
					return false;
				}
			}
		} else if (fieldName == "STATE") {
			if (form.elements[i].type != "hidden") {
				if (!validateSelectbox(form.elements[i], "Please select the State.")) {
					return false;
				}
			}
		} else if (fieldName == "PROP_ST") {
			
			var productElement = form.PRODUCT;

			if (productElement != null && productElement.type == "select-one") {
				if (!validateSelectbox(form.elements[i], "Please select the Property State.")) {
					return false;
				}
			} 
		} else if (fieldName == "BAL_ONE") {

			var productElement = form.PRODUCT;
			
			if (productElement != null && ((productElement.type == "select-one" && productElement.options[productElement.selectedIndex].value != "PP_NEWHOME") || (productElement.type == "hidden" && productElement.value != "PP_NEWHOME"))) {
				if (form.elements[i].type != "hidden") {
					if (!validateSelectbox(form.elements[i], "Please select the Mortgage Balance.")) {
						return false;
					}
				}
			}
		} else if (fieldName == "MTG_ONE_INT") {
			
			var productElement = form.PRODUCT;
			
			if (productElement != null && ((productElement.type == "select-one" && productElement.options[productElement.selectedIndex].value != "PP_NEWHOME") || (productElement.type == "hidden" && productElement.value != "PP_NEWHOME"))) {
				if (form.elements[i].type != "hidden") {
					if (!validateSelectbox(form.elements[i], "Please select the Interest Rate.")) {
						return false;
					}
				}
			}
		} else if (fieldName == "CRED_GRADE") {
			if (!validateSelectbox(form.elements[i], "Please select the Credit Profile.")) {
				return false;
			}
		} else if (fieldName == "LOAN_TYPE") {
			if (form.elements[i].type != "hidden") {
				if (!validateSelectbox(form.elements[i], "Please select the Rate Type.")) {
					return false;
				}
			}
		} else if (fieldName == "PROP_DESC") {
			if (form.elements[i].type != "hidden") {
				if (!validateSelectbox(form.elements[i], "Please select the Property Description.")) {
					return false;
				}
			}
		} else if (fieldName == "PREF_CALLTIME") {
			if (form.elements[i].type != "hidden") {
				if (!validateSelectbox(form.elements[i], "Please select the Best Contact Time.")) {
					return false;
				}
			}	
		} else if (fieldName == "PROP_PURP") {
			if (form.elements[i].type != "hidden") {
				if (!validateSelectbox(form.elements[i], "Please select the Purpose of Property.")) {
					return false;
				}
			}
		} else if (fieldName == "PRI_PHON") {
			if (form.elements[i].type != "hidden") {
				if (!validatePrimaryPhoneInput(form.elements[i])) {
					return false;
				}
			}
		} else if (fieldName == "SEC_PHON") {
			if (form.elements[i].type != "hidden") {
				if (!validateSecondaryPhoneInput(form.elements[i])) {
					return false;
				}
			}
		} else if (fieldName == "DOWN_PMT_PERCENT") {
		
			var productElement = form.PRODUCT;
			
			if (productElement != null && ((productElement.type == "select-one" && productElement.options[productElement.selectedIndex].value == "PP_NEWHOME") || (productElement.type == "hidden" && productElement.value == "PP_NEWHOME"))) {
				if (form.elements[i].type != "hidden") {
					if (!validateSelectbox(form.elements[i], "Please select Your Down Payment amount.")) {
						return false;
					} else if(form.elements[i].value<10){
						return validationAlert("Please enter at least 10% down payment to receive new home purchase mortgage quotes", form.elements[i]);
						
					}
				}	
			}
		} else if (fieldName == "ADD_CASH") {
			
			var productElement = form.PRODUCT;
			
			if (productElement != null && ((productElement.type == "select-one" && productElement.options[productElement.selectedIndex].value == "PP_HOME_EQUITY") || (productElement.type == "hidden" && productElement.value == "PP_HOME_EQUITY"))) {
				if (form.elements[i].type != "hidden") {
					if (!validateSelectbox(form.elements[i], "Please select how much You want to Borrow.")) {
						return false;
					}
				}
			}
		}
		else if (fieldName == "TOTAL_STUD_LOAN")
		{
			if (form.elements[i].type != "hidden") {
					if (!validateSelectbox(form.elements[i], "Please select Loan Amount.")) {
						return false;
					}
			}
		}
		else if (fieldName == "SSN1")
		{
				if (form.elements[i].type != "hidden") {
				if (!validateSSN1Input(form.elements[i])) {
					return false;
				}
			}
		}
		else if (fieldName == "SSN2")
		{
				if (form.elements[i].type != "hidden") {
				if (!validateSSN2Input(form.elements[i])) {
					return false;
				}
			}
		}
		else if (fieldName == "SSN3")
		{
				if (form.elements[i].type != "hidden") {
				if (!validateSSN3Input(form.elements[i])) {
					return false;
				}
			}
		}
		else if (fieldName == "PREV_LOAN_CONSOLIDATION")
		{
			 var prevLoanConsolidation = getRadioValue(form.elements[fieldName]);
			 if (prevLoanConsolidation == "yes")	 {
				 return validationAlert('If you have consolidated your loans previously you do not qualify.');
			 }
		
		} 
		else if (fieldName == "LOANS_DEFAULT")
		{
			 var loanDefault = getRadioValue(form.elements[fieldName]);
			 if (loanDefault == "yes")	 {
				 return validationAlert('If you have loans in default you do not qualify.');
			 }
			
		} 
		else if (fieldName == "GRADUATED_GRADUATING_IN_6")
		{
			var graduatingIn6 = getRadioValue(form.elements[fieldName]);

			if (graduatingIn6 == "no")
			{
				 return validationAlert('You must have graduated or will graduate within 6 months to qualify.');
			}
					
		}
		else if (fieldName == "VEHICLE_YEAR")
		{
			if (form.elements[i].type != "hidden") {
					if (!validateSelectbox(form.elements[i], "Please select Year.")) {
						return false;
					}
			}
		}
		else if (fieldName == "VEHICLE_MAKE")
		{
			if (form.elements[i].type != "hidden") {
					if (!validateSelectbox(form.elements[i], "Please select Make.")) {
						return false;
					}
			}
		}
		else if (fieldName == "VEHICLE_MODEL")
		{
			if (form.elements[i].type != "hidden") {
					if (!validateSelectbox(form.elements[i], "Please select Model.")) {
						return false;
					}
			}
		}
		else if (fieldName == "VEHICLE_MILES")
		{
			if (form.elements[i].type != "hidden") {
									
					if (!validateSelectbox(form.elements[i], "Please enter Mileage.")) {
							return false;
					}
					if(!validateNumbersOnly(form.elements[i],'Please enter valid Mileage.')){
						
						return false;
						
					}
						
				}
		}
		else if (fieldName == "MFR_WARRANTY_COVERAGE")
		{
			var warrentyCoverage = getRadioValue(form.elements[fieldName]);

			if (warrentyCoverage == "")
			{
				 return validationAlert('Do you have at least 30 days or 1000 miles left on your factory warranty?');
			}
		}
	 	else if (fieldName == "AUTO_WARR_TERM")
		{
			if (form.elements[i].type != "hidden") {
					if (!validateSelectbox(form.elements[i], "Please select Your Coverage Needs.")) {
						return false;
					}
			}
		}	
		
	}
	
	return true;
}


function balTwoEmptyCheck(b) {
	if (b.options.length < 2) {
   		addOption("You cannot borrow more than", "xx", b);
   		addOption("your Estimated Home Value", "xx", b);
   	} else if (b.options.length > 2) {
   		if (b.options[1].value == 'xx' && b.options[2].value == 'xx') {
   			b.remove(1);b.remove(1);
   		}
   	}
}

