var qList = new Array(true, true, true, true, true, true);
var qListString = new Array ("q1div","q2div","q3div","q4div","q5div","q6div");

var curQ = 0;
var lastQ = 0;
var warnedAboutPhone = false;
var validateDayPhone = true;
var validateEveningPhone = true;

window.isMsnHomepage = false;
window.formFamily = "Mortgage";

function resizeDisplayWindow(){
  var screenWidth = screen.availWidth;
  var screenHeight = screen.availHeight;
  if(screenWidth <=0) {
      screenWidth = 800;
  }
  if(screenHeight <=0) {
      screenHeight = 600;
  }
  window.moveTo(0,0);
  window.resizeTo(screenWidth-10,screenHeight-10);
  if(window.focus) {
    window.focus();
  }
}

var checkQueryString = window.location.search;
if(checkQueryString.indexOf("resizeDisplay=true")>=0) {
  resizeDisplayWindow();
}

function nextQ(field) {
    if(field == window.document.form1.HOUSE_VALUE_01) {
      initQ5();
      initQ6();
    } else if(field == window.document.form1.FIRST_MORTGAGE_BALANCE_01 || field == window.document.form1.SECOND_MORTGAGE_BALANCE_01 
              || field == window.document.form1.DESIRED_LOAN_TYPE_01) {
        initQ6();
        initSecondMortgage();
        if(field == window.document.form1.DESIRED_LOAN_TYPE_01) {
            initOptDiv_DESIRED_LOAN_TYPE_01();
            initDiv_FHA_LOAN();
            showPage1ProductPath();
        }
    } else if(compareFields(field,window.document.form1.MORT_HOME_FOUND_01)) {
        showFoundHomeQuestions();
    } else if(compareFields(field,window.document.form1.SECOND_MORTGAGE_01)) {
        initSecondMortgage();
    } else if(compareFields(field,window.document.form1.MORT_AGENT_01) || compareFields(field,window.document.form1.MORT_MATCH_AGENT_01)) {
        showAgentQuestions();
    } else if(field == window.document.form1.MORT_PURCHASE_PRICE_01) {
        initDownPayment();
    } else if(compareFields(field,window.document.form1.MORT_OWN_HOME_01)) {
    	showOwnHomeQuestions(); 
    }
    return;
}

function showNextQ(field) {
    if(!validate(field)) {
        return;
    }
    if(field == window.document.form1.HOUSE_VALUE_01) {
    initQ5();
    initQ6();
        hideAll();
    } else if(field == window.document.form1.FIRST_MORTGAGE_BALANCE_01) {
        initQ6();
        initSecondMortgage();
        hideAll();
    } else if(compareFields(field,window.document.form1.SECOND_MORTGAGE_01)) {
    initSecondMortgage();
    }
    lastQ = curQ;
    curQ++;
    while(curQ<qList.length) {
        if(qList[curQ]) {
            hide(qListString[lastQ]);
            show(qListString[curQ]);
            return;
        }
        curQ++;
    }
    submitForm();
}

function validate(field) {
    if(field==window.document.form1.HOUSE_TYPE_01) {
        return validate_HOUSE_TYPE_01();
    } else if(field==window.document.form1.PROP_ZIP_01) {
        return validate_PROP_ZIP_01();
    } else if(field==window.document.form1.PROP_STATE_01) {
        return validate_PROP_STATE_01();
    } else if(field==window.document.form1.PROP_PURP_01) {
        return validate_PROP_PURP_01();
    } else if(field==window.document.form1.HOUSE_VALUE_01) {
        return validate_HOUSE_VALUE_01();
    } else if(field==window.document.form1.FIRST_MORTGAGE_BALANCE_01) {
        return validate_FIRST_MORTGAGE_BALANCE_01();
    } else if(field==window.document.form1.CURRENT_INTEREST_RATE_DECIMAL_01) {
        return validate_CURRENT_INTEREST_RATE_01();
    } else if(field==window.document.form1.CURRENT_INTEREST_RATE_DECIMAL_TEXT_01) {
        return validate_CURRENT_INTEREST_RATE_TEXT_01();
    } else if(field==window.document.form1.SECOND_MORTGAGE_01) {
        return validate_SECOND_MORTGAGE_01();
    } else if(field==window.document.form1.SECOND_MORTGAGE_BALANCE_01) {
        return validate_SECOND_MORTGAGE_BALANCE_01();
    } else if(field==window.document.form1.SECOND_INTEREST_RATE_DECIMAL_01) {
        return validate_SECOND_INTEREST_RATE_01();
    } else if(field==window.document.form1.SECOND_INTEREST_RATE_DECIMAL_TEXT_01) {
        return validate_SECOND_INTEREST_RATE_TEXT_01();
    } else if(field==window.document.form1.DESIRED_LOAN_TYPE_01) {
        return validate_DESIRED_LOAN_TYPE_01();
    } else if(field==window.document.form1.ADDITIONAL_CASH_TO_BORROW_01) {
        return validate_ADDITIONAL_CASH_TO_BORROW_01();
    } else if(field==window.document.form1.LOAN_TYPE_01) {
        return validate_LOAN_TYPE_01();
    } else if(field==window.document.form1.LOAN_PURP_01) {
        return validate_LOAN_PURP_01();
    } else if(field==window.document.form1.CREDIT_STATUS_01) {
        return validate_CREDIT_STATUS_01();
    } else if(field==window.document.form1.EMAIL_01) {
        return validate_EMAIL_01(window.document.form1);
    } 
    return true;
}

function hideAll() {
    i=0;
    while(i<qListString.length) {
        hide(qListString[i]);
        i++;
    }
}

function initQ5() {
	if (!window.document.form1.HOUSE_VALUE_01){
		return;
	}
    var houseValue = getHouseValueOrZero();
    houseValue = (houseValue/1000);
    
    var q5=window.document.form1.FIRST_MORTGAGE_BALANCE_01;
    var q5Value = getFieldValueLB(q5);
    var firstOption = q5.options[0];
    
    var qSecondMortgage=window.document.form1.SECOND_MORTGAGE_BALANCE_01;
    var qSecondMortgageValue = getFieldValueLB(qSecondMortgage);
    var firstOptionSecondMor = qSecondMortgage.options[0];
    
    q5.length=0;
    qSecondMortgage.length=0;
    
    q5.options[q5.length] = firstOption;
    q5.options[q5.length] = new Option("$0","0");
    
    qSecondMortgage.options[qSecondMortgage.length] = firstOptionSecondMor;
    qSecondMortgage.options[qSecondMortgage.length] = new Option("$0","0");
    
    if(houseValue>2) {
        q5.options[q5.length] = new Option("$1 - $5,000","2500");
        qSecondMortgage.options[qSecondMortgage.length] = new Option("$1 - $5,000","2500");
    }
    var counter=5;
    while(counter<houseValue && counter<980) {
        var rightEnd=counter;
        if(counter<200) {
            rightEnd+=5;
            q5.options[q5.length] = new Option("$"+counter+",001 - $"+rightEnd+",000" ,(counter+rightEnd)*500);
            qSecondMortgage.options[qSecondMortgage.length] = new Option("$"+counter+",001 - $"+rightEnd+",000" ,(counter+rightEnd)*500);
            counter+=5;
        } else if(counter < 400) {
            rightEnd+=10;
            q5.options[q5.length] = new Option("$"+counter+",001 - $"+rightEnd+",000" ,(counter+rightEnd)*500);
            qSecondMortgage.options[qSecondMortgage.length] = new Option("$"+counter+",001 - $"+rightEnd+",000" ,(counter+rightEnd)*500);
            counter+=10;
        } else {
            rightEnd+=20;
            q5.options[q5.length] = new Option("$"+counter+",001 - $"+rightEnd+",000" ,(counter+rightEnd)*500);
            qSecondMortgage.options[qSecondMortgage.length] = new Option("$"+counter+",001 - $"+rightEnd+",000" ,(counter+rightEnd)*500);
            counter+=20;
        }
    }
    if(houseValue>=1000) {
        q5.options[q5.length] = new Option("$980,000 - $1,000,000","990000");
        qSecondMortgage.options[qSecondMortgage.length] = new Option("$980,000 - $1,000,000","990000");
    }
    if(houseValue>=1001) {
        q5.options[q5.length] = new Option("Over $1,000,000","1000001");
        qSecondMortgage.options[qSecondMortgage.length] = new Option("Over $1,000,000","1000001");
    }
    selectValue(q5,q5Value);
    selectValue(qSecondMortgage,qSecondMortgageValue);
    
    return;
}

function initQ6() {
    if(window.document.form1.ADDITIONAL_CASH_TO_BORROW_01==null) {
        return;
    }
    var maxAdditionalCash = 0;

    var loanTypeValue = getLoanType();

    if(window.document.form1.MAX_ADD_HID_01 != null) {
        maxAdditionalCash = window.document.form1.MAX_ADD_HID_01.value;
    } else {
        var firstMortgage = getFirstMortgageValueOrZero();
        var houseValue = getHouseValueOrZero();
        var secondMortgage = getSecondMortgageOrZero();

        var ltvFactor = getLtvFactor(loanTypeValue);        
        maxAdditionalCash = (houseValue * ltvFactor) - firstMortgage - secondMortgage;
        
        // alert("LTV: loanType: " + loanType + ", firstMortgage: " + firstMortgage + ", houseValue: " + houseValue + ", secondMortgage: " + secondMortgage + ", ltvFactor: " + ltvFactor + ", maxAdditionalCash: " + maxAdditionalCash);
    }
    
    maxAdditionalCash = maxAdditionalCash/1000;
    var q6=window.document.form1.ADDITIONAL_CASH_TO_BORROW_01;
    var value = getFieldValueLB(q6);
    q6.length=0;
    var counter=5;
    if(loanTypeValue == "Home Improvement" || loanTypeValue == "Home Equity Loan") {
        if(maxAdditionalCash >= 15) {
            q6.options[q6.length] = new Option("$15,000", "15000");
            counter = 20;
        } else {
            q6.options[q6.length] = new Option("NA", "0");
        }
    } else {
        if(maxAdditionalCash > 0) {
            q6.options[q6.length] = new Option("Select One","");
            q6.options[q6.length] = new Option("$0","0");
        } else {
            q6.options[q6.length] = new Option("Select One","");
            q6.options[q6.length] = new Option("NA", "0");
        }
        if(maxAdditionalCash>2) {
        q6.options[q6.length] = new Option("$2,500","2500");
        }
    }
    while(counter<maxAdditionalCash && counter<1000) {
        q6.options[q6.length] = new Option("$"+counter+",000",counter+"000");
        if(counter<200) {
            counter+=5;
        } else if(counter < 400) {
            counter+=10;
        } else {
            counter+=20;
        }
    }
    if(maxAdditionalCash>=1000) {
        q6.options[q6.length] = new Option("$1,000,000","1000000");
    }
    if(maxAdditionalCash>=1001) {
        q6.options[q6.length] = new Option("Over $1,000,000","1000001");
    }
    selectValue(q6,value);
    return;
}

function getFirstMortgageValueOrZero() {
	var firstMortgage = 0;
    if(window.document.form1.FIRST_MORTGAGE_BALANCE_HID_01) {
        firstMortgage = parseInt(window.document.form1.FIRST_MORTGAGE_BALANCE_HID_01.value);    
    } else if(window.document.form1.FIRST_MORTGAGE_BALANCE_01) {
        firstMortgage = parseInt(getFieldValueLB(window.document.form1.FIRST_MORTGAGE_BALANCE_01));
    }
    if (isNaN(firstMortgage)) {
    	firstMortgage = 0;
    }
    
    return firstMortgage;
}
function getHouseValueOrZero() {
	var houseValue = 0;
    if(window.document.form1.HOUSE_VALUE_HID_01) {
        houseValue = parseInt(window.document.form1.HOUSE_VALUE_HID_01.value);
    } else if(window.document.form1.HOUSE_VALUE_01) {
        houseValue = parseInt(getFieldValueLB(window.document.form1.HOUSE_VALUE_01));
    }
    if (isNaN(houseValue)) {
    	houseValue = 0;
    }
    
    return houseValue;
}
function getAddCashValueOrZero() {
	var addCash = 0;
    if(window.document.form1.MAX_ADD_HID_01) {
    	addCash = parseInt(window.document.form1.MAX_ADD_HID_01.value);
    } else if(window.document.form1.ADDITIONAL_CASH_TO_BORROW_01) {
    	addCash = parseInt(getFieldValueLB(window.document.form1.ADDITIONAL_CASH_TO_BORROW_01));
    }
    if (isNaN(addCash)) {
    	addCash = 0;
    }
    
    return addCash;	
}

function getSecondMortgageOrZero() {
	var secondMortgage = 0;
    if(window.document.form1.SECOND_MORTGAGE_BALANCE_HID_01) {
        secondMortgage = parseInt(window.document.form1.SECOND_MORTGAGE_BALANCE_HID_01.value);    
    } else if(window.document.form1.SECOND_MORTGAGE_BALANCE_01 && getFieldValueRB(window.document.form1.SECOND_MORTGAGE_01) == "YES") {
        secondMortgage = parseInt(getFieldValueLB(window.document.form1.SECOND_MORTGAGE_BALANCE_01));
    }
    if (isNaN(secondMortgage)) {
    	secondMortgage = 0;
    }  
    
    return secondMortgage;
}

function initSecondMortgage() {
    if ((!homePurchaseSelected()) && isSecondMortgage()) {
    	showSecondMortgage();

        var houseValue = getHouseValueOrZero();
        houseValue = (houseValue/1000);
        
        var q5=window.document.form1.FIRST_MORTGAGE_BALANCE_01;
        var q5Value = getFieldValueLB(q5)/1000;
        
        var qSecondMortgage=window.document.form1.SECOND_MORTGAGE_BALANCE_01;
        var qSecondMortgageValue = getFieldValueLB(qSecondMortgage);
        
        var firstOption = qSecondMortgage.options[0];
        qSecondMortgage.length=0;
        qSecondMortgage.options[0] = firstOption;
        qSecondMortgage.options[qSecondMortgage.length] = new Option("$0","0");
        
        if(houseValue-q5Value>2) {
            qSecondMortgage.options[qSecondMortgage.length] = new Option("$1 - $5,000","2500");
        }
        var counter=5;
        var endValue = houseValue - q5Value;
        while(counter<endValue && counter<980) {
            var rightEnd=counter;
            if(counter<200) {
                rightEnd+=5;
                qSecondMortgage.options[qSecondMortgage.length] = new Option("$"+counter+",001 - $"+rightEnd+",000" ,(counter+rightEnd)*500);
                counter+=5;
            } else if(counter < 400) {
                rightEnd+=10;
                qSecondMortgage.options[qSecondMortgage.length] = new Option("$"+counter+",001 - $"+rightEnd+",000" ,(counter+rightEnd)*500);
                counter+=10;
            } else {
                rightEnd+=20;
                qSecondMortgage.options[qSecondMortgage.length] = new Option("$"+counter+",001 - $"+rightEnd+",000" ,(counter+rightEnd)*500);
                counter+=20;
            }
        }
        if(houseValue>=1000) {
            qSecondMortgage.options[qSecondMortgage.length] = new Option("$980,000 - $1,000,000","990000");
        }
        if(houseValue>=1001) {
            qSecondMortgage.options[qSecondMortgage.length] = new Option("Over $1,000,000","1000001");
        }
        selectValue(qSecondMortgage,qSecondMortgageValue);

    } else {
    	hideSecondMortgage();
    }
}
function isSecondMortgage() {
	return (getFieldValueRB(window.document.form1.SECOND_MORTGAGE_01) == "YES");
}
function showSecondMortgage() {
    if (document.getElementById("qDiv_SECOND_MORTGAGE_1") != null && document.getElementById("qDiv_SECOND_MORTGAGE_2") != null) {
        show("qDiv_SECOND_MORTGAGE_1");
        show("qDiv_SECOND_MORTGAGE_2");
    } else {
        show("qDiv_SECOND_MORTGAGE");
    }
}
function hideSecondMortgage() {
    if(document.getElementById("qDiv_SECOND_MORTGAGE_1") != null && document.getElementById("qDiv_SECOND_MORTGAGE_2") != null) {
        hide("qDiv_SECOND_MORTGAGE_1");
        hide("qDiv_SECOND_MORTGAGE_2");
    } else {
        hide("qDiv_SECOND_MORTGAGE");
    }
}

function fPayOption(num,rate) {
   if(isNaN(num)) {
     num = "0";
   }
   num = Math.floor(num);
   num = num.toString();
   //add commas
   for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) {
     num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));
   }

   return ('$' + num + ' ('+rate+'%)');
}

function initDownPayment() {
    if(window.document.form1.MORT_DOWN_PAYMENT_01 && window.document.form1.MORT_PURCHASE_PRICE_01) {
      var houseValue = window.document.form1.MORT_PURCHASE_PRICE_01.options[window.document.form1.MORT_PURCHASE_PRICE_01.selectedIndex].value;
      var qDownPayment=window.document.form1.MORT_DOWN_PAYMENT_01;
      var qDownPaymentValue = getFieldValueLB(qDownPayment);

      qDownPayment.length=0;
      qDownPayment.options[qDownPayment.length] = new Option("Please select one","");
      if(houseValue > 0) {
        rate = 3;
        qDownPayment.options[qDownPayment.length] = new Option(fPayOption(houseValue * (rate/100),rate),rate);
        rate = 5;
        while(rate<100) {
          qDownPayment.options[qDownPayment.length] = new Option(fPayOption(houseValue * (rate/100),rate),rate);
          rate+=5;
        }
      }
      selectValue(qDownPayment, qDownPaymentValue);
    }
}

function initInterestRateDynamic(rateField) {
	var minRate = 2.0;
	var maxRate = 11.0;
	var increment = 0.25;
	var currentRate = minRate;
	if (rateField) {
		var selectedValue = getFieldValueLB(rateField);
		var firstOption = rateField.options[0];

		rateField.length = 0;
		rateField.options[0] = firstOption;
		while (currentRate <= maxRate) {
			rateField.options[rateField.length] = new Option(currentRate + "%",currentRate);
			currentRate += increment;
		}
	    if (selectedValue) {
	        setFieldValueLB(rateField, selectedValue);
	    }
	}
}

function initOptDiv_DESIRED_LOAN_TYPE_01() {
    if(document.getElementById("optDiv_DESIRED_LOAN_TYPE_01") != null) {
        var loanTypeValue = getFieldValueLB(window.document.form1.DESIRED_LOAN_TYPE_01);
        if(validateIsRequired(loanTypeValue)) {
            if(loanTypeValue == "Home Equity Loan") {
                show("optDiv_DESIRED_LOAN_TYPE_01");
            } else {
                hide("optDiv_DESIRED_LOAN_TYPE_01");
            }
        }
    }
}

function initDiv_FHA_LOAN() {
	var loanTypeField = window.document.form1.DESIRED_LOAN_TYPE_01;
	if(loanTypeField == null || loanTypeField == undefined ||
			document.getElementById("div_FHA_LOAN_01") == null || document.getElementById("div_FHA_LOAN_01") == undefined ||
			document.getElementById("div_FHA_LOAN_02") == null || document.getElementById("div_FHA_LOAN_02") == undefined) {
		return;
	}
    
    var loanTypeValue = getFieldValueLB(loanTypeField);
    if(loanTypeValue == "Home Purchase") {
        hide("div_FHA_LOAN_01");
        hide("div_FHA_LOAN_02");
    } else {
        show("div_FHA_LOAN_01");
        show("div_FHA_LOAN_02");
    }
}

function homePurchaseSelected() {
  var loanTypeValue = "";
  if(window.document.form1.DESIRED_LOAN_TYPE_HID_01) {
    loanTypeValue = getFieldValueTF(window.document.form1.DESIRED_LOAN_TYPE_HID_01);
  } else if(window.document.form1.DESIRED_LOAN_TYPE_01) {
    loanTypeValue = getFieldValueLB(window.document.form1.DESIRED_LOAN_TYPE_01);
  }
  return loanTypeValue == "Home Purchase";
}

function hasOwnHome() {
  var ownHomeValue = "";
  if(homePurchaseSelected() && window.document.form1.MORT_OWN_HOME_01) {
	ownHomeValue = getFieldValueRB(window.document.form1.MORT_OWN_HOME_01);
  } 
  return ownHomeValue == "YES";
}

function refinanceSelected() {
  var loanTypeValue = "";
  if(window.document.form1.DESIRED_LOAN_TYPE_HID_01) {
    loanTypeValue = getFieldValueTF(window.document.form1.DESIRED_LOAN_TYPE_HID_01);
  } else if(window.document.form1.DESIRED_LOAN_TYPE_01) {
    loanTypeValue = getFieldValueLB(window.document.form1.DESIRED_LOAN_TYPE_01);
  }
  return loanTypeValue == "Refinance" || loanTypeValue == "Refinance with Cash Out" || loanTypeValue == "Debt Consolidation";
}

function hasAgent() {
  if(homePurchaseSelected() && window.document.form1.MORT_AGENT_01) {
    agentValue = getFieldValueRB(window.document.form1.MORT_AGENT_01);
    if(validateIsRequired(agentValue)) {
      return agentValue == "YES";
    }
  }
  return false;
}

function answeredAgentQuestion() {
  if(homePurchaseSelected() && window.document.form1.MORT_AGENT_01) {
    agentValue = getFieldValueRB(window.document.form1.MORT_AGENT_01);
    if(validateIsRequired(agentValue)) {
      return true;
    }
  }
  return false;
}

function foundHome() {
  if(homePurchaseSelected() && window.document.form1.MORT_HOME_FOUND_01) {
    foundHomeValue = getFieldValueRB(window.document.form1.MORT_HOME_FOUND_01);
    if(validateIsRequired(foundHomeValue)) {
      return foundHomeValue == "YES";
    }
  }
  return false;
}

function matchToAgent() {
  if(homePurchaseSelected() && !hasAgent() && window.document.form1.MORT_MATCH_AGENT_01) {
    matchAgentValue = getFieldValueRB(window.document.form1.MORT_MATCH_AGENT_01);
    if(validateIsRequired(matchAgentValue)) {
      return matchAgentValue == "YES";
    }
  }
  return false;
}

function showAgentQuestions() {
    if(document.getElementById("mortNoAgent") != null && document.getElementById("mortHasAgent") != null) {
        if(hasAgent()) {
            show("mortHasAgent");
            hide("mortNoAgent");
        } else if(homePurchaseSelected() && answeredAgentQuestion()) {
            hide("mortHasAgent");
            show("mortNoAgent");
        } else {
            hide("mortHasAgent");
            hide("mortNoAgent");
        }
    } else if(document.getElementById("mortNoAgent_1") != null && document.getElementById("mortHasAgent_1") != null) {
        if(hasAgent()) {
            showElement2("mortHasAgent_1");
            showElement2("mortHasAgent_2");
            showElement2("mortHasAgent_3");
            hideElement2("mortNoAgent_1");
        } else if(homePurchaseSelected() && answeredAgentQuestion()) {
            hideElement2("mortHasAgent_1");
            hideElement2("mortHasAgent_2");
            hideElement2("mortHasAgent_3");
            showElement2("mortNoAgent_1");
        } else {
            hideElement2("mortHasAgent_1");
            hideElement2("mortHasAgent_2");
            hideElement2("mortHasAgent_3");
            hideElement2("mortNoAgent_1");
        }
    }
    if(document.getElementById("mortMatchAgent") != null) {
        if(matchToAgent()) {
            show("mortMatchAgent");
        } else {
            hide("mortMatchAgent");
        }
    } else if(document.getElementById("mortMatchAgent_1") != null) {
        if(matchToAgent()) {
            showElement2("mortMatchAgent_1");
            showElement2("mortMatchAgent_2");
            showElement2("mortMatchAgent_3");
        } else {
            hideElement2("mortMatchAgent_1");
            hideElement2("mortMatchAgent_2");
            hideElement2("mortMatchAgent_3");
        }
    }
}

function showFoundHomeQuestions() {
    if(document.getElementById("mortFoundHome") != null) {
        if(foundHome()) {
            show("mortFoundHome");
        } else {
            hide("mortFoundHome");
        }
    } else if(document.getElementById("mortFoundHome_1") != null) {
        if(foundHome()) {
            showElement2("mortFoundHome_1");
        } else {
            hideElement2("mortFoundHome_1");
        }
    }
}

function showOwnHomeQuestions() {
    if(document.getElementById("mortOwnHome_1") != null) {
        if(hasOwnHome()) {
            hide("mortOwnHome_1");
        } else {
            show("mortOwnHome_1");
        }
    } 
}

function showPage3ProductPath() {
	if(document.getElementById("mortPage2NotHP_4pageG_hp_1") != null && document.getElementById("mortPage2HP_4pageG_hp_1") != null) {
        if(homePurchaseSelected()) {
            showElement2("mortPage3HP_4pageG_hp_1");
            showElement2("mortPage3HP_4pageG_hp_2");
        } else {
            hideElement2("mortPage3HP_4pageG_hp_1");
            hideElement2("mortPage3HP_4pageG_hp_2");
        }
    }
}

function showPage2ProductPath() {
    if(document.getElementById("mortPage2NotHP") != null && document.getElementById("mortPage2HP") != null) {
        if(homePurchaseSelected()) {
            show("mortPage2HP");
            hide("mortPage2NotHP");
        } else {
            hide("mortPage2HP");
            show("mortPage2NotHP");
        }
    } else if(document.getElementById("mortPage2NotHP_1") != null && document.getElementById("mortPage2HP_1") != null) {
        if(homePurchaseSelected()) {
            showElement2("mortPage2HP_1");
            showElement2("mortPage2HP_2");
            showElement2("mortPage2HP_3");
            showElement2("mortPage2HP_4");
            hideElement2("mortPage2NotHP_1");
            hideElement2("mortPage2NotHP_2");
        } else {
            hideElement2("mortPage2HP_1");
            hideElement2("mortPage2HP_2");
            hideElement2("mortPage2HP_3");
            hideElement2("mortPage2HP_4");
            showElement2("mortPage2NotHP_1");
            showElement2("mortPage2NotHP_2");
        }
    } else if(document.getElementById("mortPage2NotHP_3pageN_hp_1") != null && document.getElementById("mortPage2HP_3pageN_hp_1") != null) {
        if(homePurchaseSelected()) {
            showElement2("mortPage2HP_3pageN_hp_1");
            showElement2("mortPage2HP_3pageN_hp_2");
            hideElement2("mortPage2NotHP_3pageN_hp_1");
            hideElement2("mortPage2NotHP_3pageN_hp_2");
            hideElement2("mortPage2NotHP_3pageN_hp_3");
            hideElement2("div_FHA_LOAN_01");
        } else {
            hideElement2("mortPage2HP_3pageN_hp_1");
            hideElement2("mortPage2HP_3pageN_hp_2");
            showElement2("mortPage2NotHP_3pageN_hp_1");
            showElement2("mortPage2NotHP_3pageN_hp_2");
            showElement2("mortPage2NotHP_3pageN_hp_3");
            showElement2("div_FHA_LOAN_01");
        }
    } else if(document.getElementById("mortPage2NotHP_4pageG_hp_1") != null && document.getElementById("mortPage2HP_4pageG_hp_1") != null) {
        if(homePurchaseSelected()) {
            showElement2("mortPage2HP_4pageG_hp_1");
            showElement2("mortPage2HP_4pageG_hp_2");
            showElement2("mortPage2HP_4pageG_hp_3");
            showElement2("mortPage2HP_4pageG_hp_4");
            showElement2("mortPage2HP_4pageG_hp_5");
            hideElement2("mortPage2NotHP_4pageG_hp_1");
            hideElement2("mortPage2NotHP_4pageG_hp_2");
            hideElement2("mortPage2NotHP_4pageG_hp_3");
            hideElement2("mortPage2NotHP_4pageG_hp_4");
            hideElement2("mortPage2NotHP_4pageG_hp_5");
            hideElement2("mortPage2NotHP_4pageG_hp_6");
            
            hideElement2("div_FHA_LOAN_01");
            showElement2("divLOAN_TYPE_02");
            hideElement2("divLOAN_TYPE_01");
            
        } else {
            hideElement2("mortPage2HP_4pageG_hp_1");
            hideElement2("mortPage2HP_4pageG_hp_2");
            hideElement2("mortPage2HP_4pageG_hp_3");
            hideElement2("mortPage2HP_4pageG_hp_4");
            hideElement2("mortPage2HP_4pageG_hp_5");
            showElement2("mortPage2NotHP_4pageG_hp_1");
            showElement2("mortPage2NotHP_4pageG_hp_2");
            showElement2("mortPage2NotHP_4pageG_hp_5");

            showElement2("divLOAN_TYPE_01");
            hideElement2("divLOAN_TYPE_02");          
            
            if (isShowHideOptionalFieldsOff()) {
                showElement2("mortPage2NotHP_4pageG_hp_3");
                showElement2("mortPage2NotHP_4pageG_hp_4");
                showElement2("mortPage2NotHP_4pageG_hp_6");
                showElement2("div_FHA_LOAN_01");            	            
            }
        }
        initSecondMortgage();
    }
    showAgentQuestions();
    initDownPayment();
}

function isShowHideOptionalFieldsOff() {
	return (typeof isShowHideOptionalFields === "undefined") || (isShowHideOptionalFields == false);
}

function showPage1ProductPath() {
    if(document.getElementById("mortPage1NotHP") != null && document.getElementById("mortPage1HP") != null) {
        if(homePurchaseSelected()) {
            show("mortPage1HP");
            hide("mortPage1NotHP");
        } else {
            show("mortPage1NotHP");
            hide("mortPage1HP");
        }
    } else if(document.getElementById("mortPage1NotHP_1") != null && document.getElementById("mortPage1HP_1") != null) {
        if(homePurchaseSelected()) {
            showElement2("mortPage1HP_1");
            showElement2("mortPage1HP_2");
            hideElement2("mortPage1NotHP_1");
            hideElement2("mortPage1NotHP_2");
            hideElement2("mortPage1NotHP_3");
            hideElement2("mortPage1NotHP_4");
        } else {
            showElement2("mortPage1NotHP_1");
            showElement2("mortPage1NotHP_2");
            showElement2("mortPage1NotHP_3");
            showElement2("mortPage1NotHP_4");
            hideElement2("mortPage1HP_1");
            hideElement2("mortPage1HP_2");
        }
    } else if (document.getElementById("mortPage1NotHP_3pageN_hp_1") != null && document.getElementById("mortPage1HP_3pageN_hp_1") != null) {
        if(homePurchaseSelected()) {
            showElement2("mortPage1HP_3pageN_hp_1");
            showElement2("mortPage1HP_3pageN_hp_2");
            showElement2("mortPage1HP_3pageN_hp_3");
            showElement2("mortPage1HP_3pageN_hp_4");  
            showElement2("mortPage1HP_3pageN_hp_5");  
            hideElement2("mortPage1NotHP_3pageN_hp_1");
            hideElement2("mortPage1NotHP_3pageN_hp_2");
            hideElement2("mortPage1NotHP_3pageN_hp_3");
            hideElement2("mortPage1NotHP_3pageN_hp_4");
            
            showElement2("divLOAN_TYPE_02");
            hideElement2("divLOAN_TYPE_01");
        } else {
            showElement2("mortPage1NotHP_3pageN_hp_1");
            showElement2("mortPage1NotHP_3pageN_hp_2");
            showElement2("mortPage1NotHP_3pageN_hp_3");
            showElement2("mortPage1NotHP_3pageN_hp_4");
            hideElement2("mortPage1HP_3pageN_hp_1");
            hideElement2("mortPage1HP_3pageN_hp_2");
            hideElement2("mortPage1HP_3pageN_hp_3");
            hideElement2("mortPage1HP_3pageN_hp_4"); 
            hideElement2("mortPage1HP_3pageN_hp_5");
            
            showElement2("divLOAN_TYPE_01");
            hideElement2("divLOAN_TYPE_02");
        }
        initSecondMortgage();
    }
    showFoundHomeQuestions();
}

function hideElement2(element) {
	var myElement = document.getElementById(element);
	if(myElement) {
		if (myElement.className && myElement.className.indexOf("visible") >=0) {
			myElement.className = myElement.className.replace(/visible/, "hidden"); 
		} else {
			myElement.className += " hidden";
		}
	}
}

function showElement2(element) {
   var myElement = document.getElementById(element);
	if(myElement) {
		if (myElement.className && myElement.className.indexOf("hidden") >=0) {
			myElement.className = myElement.className.replace(/hidden/, "visible"); 
		} else {
			myElement.className += " visible";
		}
	}
}

function optDesiredLoanTypeQ(selection) {
    if("Yes" == selection) {
        selectValue(window.document.form1.DESIRED_LOAN_TYPE_01, "Refinance with Cash Out");
    }
    hide("optDiv_DESIRED_LOAN_TYPE_01");
    window.document.form1.DESIRED_LOAN_TYPE_01.focus();
}

function selectValue(field, value) {
    for (var i = 0; i < field.options.length; i++) {
        if (field.options[i].value == value) {
            field.options[i].selected = true;
            field.selectedIndex = i;
            return;
        }
    }
    return;
}

function validate_HOUSE_TYPE_01() {
    field = window.document.form1.HOUSE_TYPE_01;
    value = getFieldValueLB(field);
    if(!validateIsRequired(value)) {
        alert( "Please indicate the Type of Property you want to refinance." );
        field.focus();
        return false;
    }
    return true;
}

function validate_DESIRED_RATE_TYPE_01() {
	field = window.document.form1.DESIRED_RATE_TYPE_01;
    value = getFieldValueRB(field);
    if(homePurchaseSelected() && !validateIsRequired(value)) {
        alert( "Please indicate your desired type of rate." );
        return false;
    }
    return true;
}

function validate_MORT_OWN_HOME_01() {
    field = window.document.form1.MORT_OWN_HOME_01;
    value = getFieldValueRB(field);
    if(homePurchaseSelected() && !validateIsRequired(value)) {
        alert( "Please indicate if you currently own a home." );
        return false;
    }
    return true;
}

function validate_MORT_FIRST_HOME_01() {
    field = window.document.form1.MORT_FIRST_HOME_01;
    value = getFieldValueRB(field);
    if(homePurchaseSelected() && !validateIsRequired(value)) {
        alert( "Please indicate if this is your first home purchase." );
        return false;
    }
    return true;
}

function validate_MORT_FIRST_HOME_02() {
    field = window.document.form1.MORT_FIRST_HOME_02;
    value = getFieldValueRB(field);
    if(homePurchaseSelected() && !hasOwnHome() && !validateIsRequired(value)) {
        alert( "Please indicate if this is your first home purchase." );
        return false;
    }
    return true;
}

function validate_MORT_HOME_FOUND_01() {
    field = window.document.form1.MORT_HOME_FOUND_01;
    value = getFieldValueRB(field);
    if(homePurchaseSelected() && !validateIsRequired(value)) {
        alert( "Please indicate if you have found a specific home." );
        return false;
    }
    return true;
}

function validate_MORT_CONTRACT_01() {
    if(!foundHome()) {
      return true;
    }
    field = window.document.form1.MORT_CONTRACT_01;
    value = getFieldValueRB(field);
    if(homePurchaseSelected() && !validateIsRequired(value)) {
        alert( "Please indicate if you have a purchase contract." );
        return false;
    }
    return true;
}

function validate_MORT_LOAN_TIME_01() {
    field = window.document.form1.MORT_LOAN_TIME_01;
    value = getFieldValueLB(field);
    if(homePurchaseSelected() && !validateIsRequired(value)) {
        alert( "Please select a timeframe to buy a home." );
        field.focus();
        return false;
    }
    return true;
}

function validate_MORT_AGENT_01() {
    field = window.document.form1.MORT_AGENT_01;
    value = getFieldValueRB(field);
    if(homePurchaseSelected() && !validateIsRequired(value)) {
        alert( "Please indicate if you have a real estate agent." );
        return false;
    }
    return true;
}

var warnedAboutAgentName = false;

function validate_MORT_AGENT_NAME_01() {
    if(!hasAgent() || warnedAboutAgentName) {
        return true;
    }
    field = window.document.form1.MORT_AGENT_NAME_01;
    value = getFieldValueTF(field);
    if(homePurchaseSelected() && validateIsRequired(value)) {
        if(!validateAlphaChar(value)) {
            warnedAboutAgentName = true;
            alert( "Please enter your agent's name." );
            field.focus();
            return false;
        }
    }
    return true;
}

function validate_MORT_AGENT_PHONE_01(form) {
    if(!hasAgent()) {
        return true;
    }
    dayMessage = "Please enter a valid phone number.";
    dayAreaCode = getFieldValueTF(form.MORT_AGENT_PHONE_AREA_01);
    dayPrefix = getFieldValueTF(form.MORT_AGENT_PHONE_PREFIX_01);
    daySuffix = getFieldValueTF(form.MORT_AGENT_PHONE_SUFFIX_01);


    //this is supposed to be optional
    if(!(validateIsRequired(dayAreaCode) || validateIsRequired(dayPrefix) || validateIsRequired(daySuffix))) {
       return true;
    }

    if(!validate_PHONE_GENERIC_AREA_01_with_messages(form.MORT_AGENT_PHONE_AREA_01, "USA", dayMessage, dayMessage)) {
        return false;
    }

    if(!validate_PHONE_2PART_01(form.MORT_AGENT_PHONE_PREFIX_01, form.MORT_AGENT_PHONE_SUFFIX_01, dayMessage)) {
        return false;
    }

    return true;
}

function validate_MORT_AGENT_COMPANY_01() {
    //field = window.document.form1.MORT_AGENT_COMPANY_01;
    //alert( "Please enter your agent's company name." );
    return true;
}

function validate_MORT_MATCH_AGENT_01() {
    field = window.document.form1.MORT_MATCH_AGENT_01;
    value = getFieldValueRB(field);
    if(homePurchaseSelected() && !hasAgent() && !validateIsRequired(value)) {
        alert( "Please indicate if you would like to be matched with a real estate agent." );
        return false;
    }
    return true;
}

function validate_MORT_SQUARE_FOOTAGE_01() {
    if(!matchToAgent()) {
        return true;
    }
    field = window.document.form1.MORT_SQUARE_FOOTAGE_01;
    value = getFieldValueLB(field);
    if(homePurchaseSelected() && !validateIsRequired(value)) {
        alert( "Please select the desired square footage." );
        field.focus();
        return false;
    }
    return true;
}

function validate_MORT_BEDROOMS_01() {
    if(!matchToAgent()) {
        return true;
    }
    field = window.document.form1.MORT_BEDROOMS_01;
    value = getFieldValueLB(field);
    if(homePurchaseSelected() && !validateIsRequired(value)) {
        alert( "Please select the number of bedrooms." );
        field.focus();
        return false;
    }
    return true;
}

function validate_MORT_BATHS_01() {
    if(!matchToAgent()) {
        return true;
    }
    field = window.document.form1.MORT_BATHS_01;
    value = getFieldValueLB(field);
    if(homePurchaseSelected() && !validateIsRequired(value)) {
        alert( "Please select the number of bathrooms." );
        field.focus();
        return false;
    }
    return true;
}

function validate_MORT_PURCHASE_PRICE_01() {
    field = window.document.form1.MORT_PURCHASE_PRICE_01;
    value = getFieldValueLB(field);
    if(homePurchaseSelected() && !validateIsRequired(value)) {
        alert( "Please select an estimate of the home purchase price." );
        field.focus();
        return false;
    }
    return true;
}

function validate_MORT_DOWN_PAYMENT_01() {
    field = window.document.form1.MORT_DOWN_PAYMENT_01;
    value = getFieldValueLB(field);
    if(homePurchaseSelected() && !validateIsRequired(value)) {
        alert( "Please select the estimated down payment." );
        field.focus();
        return false;
    }
    return true;
}

function validate_MORT_INCOME_01() {
    field = window.document.form1.MORT_INCOME_01;
    value = getFieldValueLB(field);
    if(!validateIsRequired(value)) {
        alert( "Please select your pre-tax income." );
        field.focus();
        return false;
    }
    return true;
}

function validate_MORT_OCCUPATION_STATUS_01() {
    field = window.document.form1.MORT_OCCUPATION_STATUS_01;
    value = getFieldValueLB(field);
    if(!validateIsRequired(value)) {
        alert( "Please select your occupational status." );
        field.focus();
        return false;
    }
    return true;
}

function validate_MORT_BANKRUPTCY_STATUS_01() {
    field = window.document.form1.MORT_BANKRUPTCY_STATUS_01;
    if (field) {
    	value = getFieldValueLB(field);
    	if(!validateIsRequired(value)) {
    		alert( "Please select your bankruptcy status." );
    		field.focus();
    		return false;
    	}
    } else {
    	field = window.document.form1.MORT_BANKRUPTCY_RADIO_01;
    	value = getFieldValueRB(field);
    	if(!validateIsRequired(value)) {
    		alert( "Please select your bankruptcy status." );
    		field.focus();
    		return false;
    	}    	
    }
    return true;
}

function validate_MORT_FORECLOSURE_STATUS_01() {
	field = window.document.form1.MORT_FORECLOSURE_STATUS_01;
	value = getFieldValueRB(field);
	if(homePurchaseSelected() && !validateIsRequired(value)) {
		alert("Please indicate if you have had any foreclosures.");
		return false;
	}
	return true;
}

function validate_MORT_LATE_PAYMENT_01() {
    field = window.document.form1.MORT_LATE_PAYMENT_01;
    value = getFieldValueRB(field);
    if(latePaymentQuestionIsRequired() && !validateIsRequired(value)) {
        alert( "Please indicate if you have had any late mortgage payments." );
        return false;
    }
    return true;
}
function validate_MORT_FRIEND_FAMILY_LOAN() {
    field = window.document.form1.MORT_FRIEND_FAMILY_LOAN;
    value = getFieldValueRB(field);
    if(homePurchaseSelected() && !validateIsRequired(value)) {
        alert( "Please indicate if you have family or friends that could loan you money." );
        return false;
    }
    return true;
}

function validate_MORT_VETERAN_STATUS_01() {
    field = window.document.form1.MORT_VETERAN_STATUS_01;
    value = getFieldValueRB(field);
    if(!validateIsRequired(value)) {
        alert( "Please indicate your U.S. Military status." );
        return false;
    }
    return true;
}

function validate_MORT_REVERSE_MORTGAGE_01() {
    field = window.document.form1.MORT_REVERSE_MORTGAGE_01;
    value = getFieldValueRB(field);
    if(reverseMortgageQuestionIsRequired() && !validateIsRequired(value)) {
        alert( "Please indicate if you are interested in a reverse mortgage." );
        return false;
    }
    return true;
}

function reverseMortgageQuestionIsRequired() {
    age = getFieldValueLB(window.document.form1.MORT_AGE_01)
    age62 = getFieldValueRB(window.document.form1.MORT_AGE_62)
    if(refinanceSelected() && age >= 62) {
        return true;
    } else if (age62 == "YES") {
        return true;
    } else {
    	return false;
    }
}

function showReverseMortgageQuestion() {
    if(document.getElementById("qDiv_MORT_REVERSE_MORTGAGE_01") != null) {
        if(reverseMortgageQuestionIsRequired()) {
            show("qDiv_MORT_REVERSE_MORTGAGE_01");
        } else {
            hide("qDiv_MORT_REVERSE_MORTGAGE_01");
        }
    } else if(document.getElementById("qDiv_MORT_REVERSE_MORTGAGE_01_1") != null) {
        if(reverseMortgageQuestionIsRequired()) {
            showElement2("qDiv_MORT_REVERSE_MORTGAGE_01_1");
        } else {
            hideElement2("qDiv_MORT_REVERSE_MORTGAGE_01_1");
        }
    }
}

function showHideReverseMortgageQuestion(containerId, ageName, reverseMortgageName) {
	var form = window.document.form1;
	
    if(document.getElementById(containerId) != null) {
        if(reverseMortgageQuestionIsRequired()) {
            show(containerId);
        } else {
            hide(containerId);
            InlineErrorValidator.validateReverseMortgage(form[ageName], form[reverseMortgageName]);
        }
    } 
}

function showAgeQuestion() {
    if(document.getElementById("qDiv_MORT_AGE_01") != null) {
        if(refinanceSelected()) {
            show("qDiv_MORT_AGE_01");
        } else {
            hide("qDiv_MORT_AGE_01");
        }
    } else if(document.getElementById("qDiv_MORT_AGE_01_1") != null) {
        if(refinanceSelected()) {
            showElement2("qDiv_MORT_AGE_01_1");
        } else {
            hideElement2("qDiv_MORT_AGE_01_1");
        }
    }
}

function latePaymentQuestionIsRequired() {
    answer = "NOTANSWERED";
    if(window.document.form1.MORT_FIRST_HOME_HID_01 != null) {
        answer = getFieldValueTF(window.document.form1.MORT_FIRST_HOME_HID_01);
    } else if(window.document.form1.MORT_FIRST_HOME_01 != null) {
        answer = getFieldValueRB(window.document.form1.MORT_FIRST_HOME_01);
    }
    if(!homePurchaseSelected() || answer != "YES") {
        return true;
    } else {
        return false;
    }
}

function showLatePaymentQuestion() {
    if(document.getElementById("qDiv_MORT_LATE_PAYMENT_01") != null) {
        if(latePaymentQuestionIsRequired()) {
            show("qDiv_MORT_LATE_PAYMENT_01");
        } else {
            hide("qDiv_MORT_LATE_PAYMENT_01");
        }
    } else if(document.getElementById("qDiv_MORT_LATE_PAYMENT_01_1") != null) {
        if(latePaymentQuestionIsRequired()) {
            showElement2("qDiv_MORT_LATE_PAYMENT_01_1");
        } else {
            hideElement2("qDiv_MORT_LATE_PAYMENT_01_1");
        }
    }
}
function showFriendLoanQuestion() {
    if(document.getElementById("qDiv_MORT_FRIEND_LOAN") != null) {
        if(homePurchaseSelected()) {
            show("qDiv_MORT_FRIEND_LOAN");
        } else {
            hide("qDiv_MORT_FRIEND_LOAN");
        }
    } else if(document.getElementById("qDiv_MORT_FRIEND_LOAN_1") != null) {
        if(homePurchaseSelected()) {
            showElement2("qDiv_MORT_FRIEND_LOAN_1");
        } else {
            hideElement2("qDiv_MORT_FRIEND_LOAN_1");
        }
    }
}

function validate_MORT_AGE_01() {
    field = window.document.form1.MORT_AGE_01;
    value = getFieldValueLB(field)
    if(refinanceSelected() && !validateIsRequired(value)) {
        alert( "Please select your age." );
        field.focus();
        return false;
    }
    return true;
}

function validate_PROP_STATE_01() {
    field = window.document.form1.PROP_STATE_01;
    value = getFieldValueLB(field)
    if(!validateIsRequired(value)) {
        alert( "Please indicate the Property Location." );
        field.focus();
        return false;
    } else if(nonLicensedState(value)) {
        alert( "Sorry, we can't help you for properties in this state." );
        field.focus();
        return false;
    }
    return true;
}
function showHidePrefilledPropState() {
    field = window.document.form1.PROP_STATE_01;
    value = getFieldValueLB(field)
    if(validateIsRequired(value)) {
    	hideElement2("qPropState");
    } else {
    	showElement2("qPropState");
    }
}

function validate_PROP_ZIP_01() {
    field = window.document.form1.PROP_ZIP_01;
    value = getFieldValueTF(field)
    if(!validateIsRequired(value)) {
        alert( "Please provide a valid Property Zip Code." );
        field.focus();
        return false;
    }
    if(!isUSZip(value)) {
        alert( "Please provide a valid Property Zip Code." );
        field.focus();
        return false;
    }
    
    return true;
}

function validate_PROP_PURP_01() {
    if(homePurchaseSelected()) {
      return true;
    }
    field = window.document.form1.PROP_PURP_01;
    value = getFieldValueLB(field)
    if(!validateIsRequired(value)) {
        alert( "Please indicate the Property Use." );
        field.focus();
        return false;
    }
    return true;
}

function validate_HOUSE_VALUE_01() {
    if(homePurchaseSelected()) {
      return true;
    }
    field = window.document.form1.HOUSE_VALUE_01;
    value = getFieldValueLB(field)
    if(!validateIsRequired(value)) {
        alert( "Please provide the Estimated Value of your property." );
        field.focus();
        return false;
    }

    if(value<75000) {
        alert( "We're sorry. Your property value needs to be higher in order to match with any lenders in our network." );
        field.focus();
        return false;
    }
    return true;
}

function validate_FIRST_MORTGAGE_BALANCE_01() {
    if(homePurchaseSelected()) {
      return true;
    }
    field = window.document.form1.FIRST_MORTGAGE_BALANCE_01;
    value = getFieldValueLB(field)
    if(!validateIsRequired(value)) {
        alert( "Please provide the Balance on your 1st Mortgage." );
        field.focus();
        return false;
    }

    if(value<10000) {
        alert( "We're sorry. In order to match with lenders in our network, your 1st mortgage balance needs to be higher. Be sure to include outstanding Home Equity Loan or Line of Credit balances." );
        field.focus();
        return false;
    }

    return true;
}

function validate_CURRENT_INTEREST_RATE_TEXT_01() {
    if(homePurchaseSelected()) {
      return true;
    }
    
    var field1 = window.document.form1.CURRENT_INTEREST_RATE_INT_TEXT_01;
    var field2 = window.document.form1.CURRENT_INTEREST_RATE_DECIMAL_TEXT_01;
    var rateInt = getFieldValueLB(field1);
    var rateDec = getFieldValueLB(field2);
    
    if(!validateIsRequired(rateInt) && !validateIsRequired(rateDec)) {
        alert( "Please provide the current interest rate on your current mortgage." );
        field1.focus();
        return false;
    }
    
    if (!validatePercentageText(rateInt + "." + rateDec, field1, "Current Interest Rate")){
        return false;	
    }
    
    return true;
}

function validate_SECOND_INTEREST_RATE_TEXT_01() {
	if(homePurchaseSelected()) {
	    return true;
	}
	    
	if(getFieldValueRB(window.document.form1.SECOND_MORTGAGE_01) == "YES") {    	
	    // perform the same validation as the current interest rate
	    var field1 = window.document.form1.SECOND_INTEREST_RATE_INT_TEXT_01;
	    var field2 = window.document.form1.SECOND_INTEREST_RATE_DECIMAL_TEXT_01;
	    var rateInt = getFieldValueLB(field1);
	    var rateDec = getFieldValueLB(field2);

	    // make sure current interest rate is entered first
	    if(!validate_CURRENT_INTEREST_RATE_TEXT_01()) {
	        alert( "Please provide a valid Current Interest Rate on your current mortgage first." );
	        field.focus();
	        return false;
	    }
	    if(!validateIsRequired(rateInt) && !validateIsRequired(rateDec)) {
	        alert( "Please provide the current interest rate on Additional Mortgage" );
	        field1.focus();
	        return false;
	    }
	        
	    if (!validatePercentageText(rateInt + "." + rateDec, field1, "Current Interest Rate on Additional Mortgage")){
	        return false;	
	    }
	}
	
    return true;
}

function validatePercentageText(rate, field, fieldName){
    
    var rateDouble = parseFloat(rate);
    var minValue = 0.001;
    var maxValue = 15.000;
    
    if (isNaN(rate)) {
    	alert("The " + fieldName + " should be a numeric value.");
    	field.focus();
        return false;
    }
    
    if (rateDouble < minValue){
    	alert("Interest rates cannot be 0. Please select interest rate above 0");
        field.focus();
        return false;
    }
    
    if (rateDouble > maxValue){
    	alert("Interest rates cannot exceed " + maxValue
            + ". Please select interest rates below " + maxValue);
        field.focus();
        return false;
    }
    
    return true;
}


function validate_CURRENT_INTEREST_RATE_01() {
	if(homePurchaseSelected()) {
		return true;
	}
	var field1 = window.document.form1.CURRENT_INTEREST_RATE_INT_01;
	var field2 = window.document.form1.CURRENT_INTEREST_RATE_DECIMAL_01;
	var field3 = window.document.form1.CURRENT_INTEREST_RATE_01;
	if (field1 && field2) {
		var rateInt = getFieldValueLB(field1);
		var rateDec = getFieldValueLB(field2);
		if(!validateIsRequired(rateInt)) {
			alert( "Please provide the Interest Rate on your current mortgage." );
			field1.focus();
			return false;
		}
		if(!validateIsRequired(rateDec)) {
			alert( "Please provide the Interest Rate on your current mortgage." );
			field2.focus();
			return false;
		}
	} else if (field3) {
		if(!validateIsRequired(getFieldValueLB(field3))) {
			alert( "Please provide the Interest Rate on your current mortgage." );
			field3.focus();
			return false;
		}

	}
	return true;
}


function validate_DESIRED_LOAN_TYPE_01() {
    field = window.document.form1.DESIRED_LOAN_TYPE_01;
    value = getFieldValueLB(field)
    if(!validateIsRequired(value)) {
        alert( "Please indicate what Type of Loan you want." );
        field.focus();
        return false;
    }
    return true;
}

function validate_FHA_LOAN_01() {
	if(homePurchaseSelected()) {
		return true;
	}

	field = window.document.form1.FHA_LOAN_01;
	if(field == null) {
		return true;
	}

	value = getFieldValueRB(field)
	if(!validateIsRequired(value)) {
		alert( "Please indicate if you are in an FHA loan." );
		return false;
	}
	return true;
}

function validate_SECOND_MORTGAGE_01() {
    if(homePurchaseSelected()) {
      return true;
    }
    field = window.document.form1.SECOND_MORTGAGE_01;
    value = getFieldValueRB(field)
    if(!validateIsRequired(value)) {
        alert( "Please indicate Are there additional mortgages on this property." );
        field.focus();
        return false;
    }
    return true;
}

function validate_SECOND_MORTGAGE_BALANCE_01() {
	if(homePurchaseSelected() || !isSecondMortgage()) {
		return true;
	}
	field = window.document.form1.SECOND_MORTGAGE_BALANCE_01;
	value = getFieldValueLB(field)
	if(!validateIsRequired(value)) {
		alert( "Please provide Balance on Additional Mortgage." );
		field.focus();
		return false;
	}

	return true;
}

function validate_SECOND_INTEREST_RATE_01() {
	if(homePurchaseSelected() || !isSecondMortgage()) {
		return true;
	}

	var field1 = window.document.form1.SECOND_INTEREST_RATE_INT_01;
	var field2 = window.document.form1.SECOND_INTEREST_RATE_DECIMAL_01;
	var field3 = window.document.form1.SECOND_INTEREST_RATE_01;
	if (field1 && field2) {
		var rateInt = getFieldValueLB(field1);
		var rateDec = getFieldValueLB(field2);
		if(!validateIsRequired(rateInt)) {
			alert( "Please provide the Interest Rate on your additional mortgage." );
			field1.focus();
			return false;
		}
		if(!validateIsRequired(rateDec)) {
			alert( "Please provide the Interest Rate on your additional mortgage." );
			field2.focus();
			return false;
		}
	} else if (field3) {
		if(!validateIsRequired(getFieldValueLB(field3))) {
			alert( "Please provide the Interest Rate on your additional mortgage." );
			field3.focus();
			return false;
		}

	}

	return true;
}

function validate_ADDITIONAL_CASH_TO_BORROW_01() {
    if(homePurchaseSelected()) {
      return true;
    }
    var firstMortgage = 0;
    if(window.document.form1.FIRST_MORTGAGE_BALANCE_HID_01 != null) {
    firstMortgage = window.document.form1.FIRST_MORTGAGE_BALANCE_HID_01.value;    
    } else {
        firstMortgage = window.document.form1.FIRST_MORTGAGE_BALANCE_01.options[window.document.form1.FIRST_MORTGAGE_BALANCE_01.selectedIndex].value;
        
    }
    var secondMortgage = 0;
    if(window.document.form1.SECOND_MORTGAGE_BALANCE_HID_01 != null) {
        secondMortgage = window.document.form1.SECOND_MORTGAGE_BALANCE_HID_01.value;    
    } else {
        secondMortgage = window.document.form1.SECOND_MORTGAGE_BALANCE_01.options[window.document.form1.SECOND_MORTGAGE_BALANCE_01.selectedIndex].value;
        
    }
    if(window.document.form1.HOUSE_VALUE_HID_01 != null) {
        houseValue = window.document.form1.HOUSE_VALUE_HID_01.value;
    } else {
        houseValue = window.document.form1.HOUSE_VALUE_01.options[window.document.form1.HOUSE_VALUE_01.selectedIndex].value;
    }
    field = window.document.form1.ADDITIONAL_CASH_TO_BORROW_01;
    value = getFieldValueLB(field);
    var additionalCash = 0;
    if (value.length > 0) {
        additionalCash = parseInt(additionalCash)+parseInt(value);
    }

    var ltv = (parseInt(additionalCash)+parseInt(firstMortgage))/parseInt(houseValue);
    if((parseInt(additionalCash)+parseInt(firstMortgage)+parseInt(secondMortgage))<=0) {
        alert( "In order to Refinance, your First Mortgage Balance plus Additional Cash to Borrow should be greater than $0.  Please try again." );
        field.focus();
        return false;
    }

    var loanType = getLoanType();

    if(loanType=="Refinance" || loanType=="Refinance with Cash Out" || loanType=="Debt Consolidation") {
        if((parseInt(additionalCash)+parseInt(firstMortgage)+parseInt(secondMortgage))<50000) {
            var loanPurpose = getFieldValueLB(window.document.form1.LOAN_PURP_01);
            if(loanPurpose == "make_improvements" && (loanType=="Refinance" || loanType=="Refinance with Cash Out")) {
                return true; // will be changed to "Home Equity Loan" and Addicational Cash $15000 (Bug 627)
            } else {
                alert( "We're sorry. In order to match with lenders, your loan size needs to be bigger. Please try increasing Additional Cash to Borrow." );
                field.focus();
                return false;
            }
        } else {
            return true;
        }
    } else if(loanType=="Home Equity Loan" || loanType == "Home Improvement") {
        if((parseInt(additionalCash)+parseInt(firstMortgage)+parseInt(secondMortgage))<15000) {
            alert( "We're sorry. In order to match with lenders, your loan size needs to be bigger. Please try increasing Additional Cash to Borrow." );
            field.focus();
            return false;
        } else {
            return true;
        }
    }

    var ltvThreshold = getLtvThreshold(loanType);          
    //alert("LTV: loanType: " + loanType + ", ltv: " + ltv + ", ltvThreshold: " + ltvThreshold + ", ltv > ltvThreshold: " + (ltv > ltvThreshold));
    
    if ((ltv > ltvThreshold) && ((parseInt(additionalCash)+parseInt(firstMortgage)) < 50000)) {
        alert( "We're sorry.  We are unable to match you with any Lenders in our network.  Please make sure the Estimated Value of Your Property is accurate." );
        field.focus();
        return false;
    }
    return true;
}

function getLoanType() {
    if (null != window.document.form1.DESIRED_LOAN_TYPE_HID_01) {
        return window.document.form1.DESIRED_LOAN_TYPE_HID_01.value
    }

	if (null != window.document.form1.DESIRED_LOAN_TYPE_01) {
        return getFieldValueLB(window.document.form1.DESIRED_LOAN_TYPE_01);
    }
    
    return "";
}

function getLtvFactor(loanType) {
	if ((loanType == "Refinance") || (loanType == "Refinance with Cash Out") || (loanType == "Debt Consolidation")) {
		return toPercentage(window.document.form1.MORT_LTV_FACTOR.value);
	} 

	if ((loanType == "Home Improvement") || (loanType == "Home Equity Loan")) {
		return 1.05;
	}
	
	//
	// Home Purchase
	//
	return 0.9;
}

function getLtvThreshold(loanType) {
	if ((loanType == "Refinance") || (loanType == "Refinance with Cash Out") || (loanType == "Debt Consolidation")) {
		return toPercentage(window.document.form1.MORT_LTV_THRESHOLD.value);
	} 
	
	return 0.9;
}

function toPercentage(value) {
    if (isNaN(value)) {
    	value = 0;
    }
    
	return parseInt(value) / 100.0;
}

function validate_CREDIT_STATUS_01() {
    field = window.document.form1.CREDIT_STATUS_01;
    value = getFieldValueLB(field);
    if(!validateIsRequired(value)) {
        alert( "Please indicate your Credit Status." );
        field.focus();
        return false;
    }
    return true;
}

function validate_LOAN_TYPE_01() {
    field = window.document.form1.LOAN_TYPE_01;
    value = getFieldValueLB(field);
    if(!validateIsRequired(value)) {
    	if (homePurchaseSelected()){
    		alert("Please select your Preferred Rate Type.")
        } else {
            alert("Please select your current rate type.");
        }
        field.focus();
        return false;
    }
    return true;
}

function validate_LOAN_PURP_01() {
    if(homePurchaseSelected()) {
      return true;
    }
    field = window.document.form1.LOAN_PURP_01;
    value = getFieldValueLB(field);
    if(!validateIsRequired(value)) {
        alert( "Please indicate your Loan purpose." );
        field.focus();
        return false;
    }
    return true;
}

function validate_PREF_CALLTIME_01() {
    field1 = window.document.form1.PREF_CALLTIME_PART1_01;
    value1 = getFieldValueLB(field1);
    field2 = window.document.form1.PREF_CALLTIME_PART2_01;
    value2 = getFieldValueLB(field1);
    if(!validateIsRequired(value1) || !validateIsRequired(value1)) {
        alert( "Please indicate your best call time." );
        field.focus();
        return false;
    }
    return true;
}

function validate_AGENT_NAME_01() {
    var hasAgent = getFieldValueRB(window.document.form1.HAS_AGENT_01);
    if(hasAgent == "YES" || hasAgent == "Yes") {
        var field = window.document.form1.AGENT_NAME_01;
        var value = getFieldValueTF(field);
        if(!validateIsRequired(value)) {
            alert( "Please enter your real estate agent's name." );
            field.focus();
            return false;
        }
    }
    return true;
}

function validate_AGENT_COMPANY_01() {
    var hasAgent = getFieldValueRB(window.document.form1.HAS_AGENT_01);
    if(hasAgent == "YES" || hasAgent == "Yes") {
        var field = window.document.form1.AGENT_COMPANY_01;
        var value = getFieldValueTF(field);
        if(!validateIsRequired(value)) {
            alert( "Please enter the company your real estate agent works for." );
            field.focus();
            return false;
        }
    }
    return true;
}

function validate_AGENT_PHONE_AREA_01(form) {
    var hasAgent = getFieldValueRB(window.document.form1.HAS_AGENT_01);
    if(hasAgent == "NO" || hasAgent == "No") {
        return true;
    }
    var field = form.AGENT_PHONE_AREA_01;
    var value = getFieldValueTF(field)
    if(!validateIsRequired(value)) {
        alert( "Please enter your real estate agent's phone area code." );
        form.AGENT_PHONE_AREA_01.focus();
        return false;
    }
    value=stripAwayNonDigits(value);
    if(!validateMinLength(value,3)) {
        alert( "Please enter a valid agent's phone number." );
        field.focus();
        return false;
    } else if(!validateMaxLength(value,3)) {
        alert( "Please enter a valid agent's phone number." );
        field.focus();
        return false;
    } else if(value.charAt(0)=="0" || value.charAt(0)=="1") {
        alert( "Please enter a valid agent's phone number." );
        field.focus();
        return false;
    } else if(allCharsTheSame(value)) {
        alert( "Please enter a valid agent's phone number." );
        field.focus();
        return false;
    }
    return true;
}

function validate_AGENT_PHONE_01(form) {
    var hasAgent = getFieldValueRB(window.document.form1.HAS_AGENT_01);
    if(hasAgent == "NO" || hasAgent == "No") {
        return true;
    }
    var field = form.AGENT_PHONE_01;
    var value = getFieldValueTF(field);
    if(!validateIsRequired(value)) {
        alert( "Please enter your agent's phone number." );
        field.focus();
        return false;
    }
    value=stripAwayNonDigits(value);
    if(!validateMinLength(value,7)) {
        alert( "Please enter a valid agent's phone number." );
        field.focus();
        return false;
    } else if(!validateMaxLength(value,7)) {
        alert( "Please enter a valid agent's phone number." );
        field.focus();
        return false;
    } else if(allCharsTheSame(value)) {
        alert( "Please enter a valid agent's phone number." );
        field.focus();
        return false;
    } else if(value.charAt(0)=="0" || value.charAt(0)=="1") {
        alert( "Please enter a valid agent's phone number." );
        field.focus();
        return false;
    } else if(value == "5551212") {
        alert( "Please enter a valid agent's phone number." );
        field.focus();
        return false;
    }
    return true;
}

function geoStateText() {
var geoStateTextField = '';
if(window.document.form1.GeoState) {
  geoStateTextField = window.document.form1.GeoState.value;
}
if(geoStateTextField == "AL") {
  geoStateTextField = ' in Alaska ';
} else if(geoStateTextField == "AZ") {
  geoStateTextField = ' in Arizona ';
} else if(geoStateTextField == "CA") {
  geoStateTextField = ' in California ';
} else if(geoStateTextField == "CO") {
  geoStateTextField = ' in Colorado ';
} else if(geoStateTextField == "CT") {
  geoStateTextField = ' in Connecticut ';
} else if(geoStateTextField == "DE") {
  geoStateTextField = ' in Delaware ';
} else if(geoStateTextField == "FL") {
  geoStateTextField = ' in Florida ';
} else if(geoStateTextField == "GA") {
  geoStateTextField = ' in Georgia ';
} else if(geoStateTextField == "HI") {
  geoStateTextField = ' in Hawaii ';
} else if(geoStateTextField == "ID") {
  geoStateTextField = ' in Idaho ';
} else if(geoStateTextField == "IL") {
  geoStateTextField = ' in Illinois ';
} else if(geoStateTextField == "IN") {
  geoStateTextField = ' in Indiana ';
} else if(geoStateTextField == "MA") {
  geoStateTextField = ' in Massachusetts ';
} else if(geoStateTextField == "ME") {
  geoStateTextField = ' in Maine ';
} else if(geoStateTextField == "MD") {
  geoStateTextField = ' in Maryland ';
} else if(geoStateTextField == "MI") {
  geoStateTextField = ' in Michigan ';
} else if(geoStateTextField == "MN") {
  geoStateTextField = ' in Minnesota ';
} else if(geoStateTextField == "MO") {
  geoStateTextField = ' in Missouri ';
} else if(geoStateTextField == "MT") {
  geoStateTextField = ' in Montana ';
} else if(geoStateTextField == "NV") {
  geoStateTextField = ' in Nevada ';
} else if(geoStateTextField == "NH") {
  geoStateTextField = ' in New Hampshire ';
} else if(geoStateTextField == "NJ") {
  geoStateTextField = ' in New Jersey ';
} else if(geoStateTextField == "NM") {
  geoStateTextField = ' in New Mexico ';
} else if(geoStateTextField == "NY") {
  geoStateTextField = ' in New York ';
} else if(geoStateTextField == "OH") {
  geoStateTextField = ' in Ohio ';
} else if(geoStateTextField == "OK") {
  geoStateTextField = ' in Oklahoma ';
} else if(geoStateTextField == "OR") {
  geoStateTextField = ' in Oregon ';
} else if(geoStateTextField == "PA") {
  geoStateTextField = ' in Pennsylvania ';
} else if(geoStateTextField == "RI") {
  geoStateTextField = ' in Rhode Island ';
} else if(geoStateTextField == "VA") {
  geoStateTextField = ' in Virginia ';
} else if(geoStateTextField == "WA") {
  geoStateTextField = ' in Washington ';
} else if(geoStateTextField == "DC") {
  geoStateTextField = ' in Washington D.C. ';
} else if(geoStateTextField == "WV") {
  geoStateTextField = ' in West Virgina ';
} else if(geoStateTextField == "WI") {
  geoStateTextField = ' in Wisconsin ';
} else {
  geoStateTextField = '';
}
var geoStateSpan = document.getElementById('geoStateSpan');
if(geoStateSpan) {
  geoStateSpan.innerHTML = geoStateTextField;
}
}

function NonResidents() {
    if(window.document.form1.COUNTRY_01 != null) {
        window.document.form1.COUNTRY_01.value= "other";
    }
    submitForm();
    return true;
}

function initParams() {
    var q = window.location.search;
    if(q != null && q.length > 1) {
        q = q.substring(1, q.length);
        var keyValuePairs = q.split("&");
        for(var index=0; index < keyValuePairs.length; index++) {
            var delim = keyValuePairs[index].indexOf("=");
            if(delim > 0 && delim < (keyValuePairs[index].length - 1)) {
                var name = keyValuePairs[index].substring(0,delim);
                var value = keyValuePairs[index].substring(++delim,keyValuePairs[index].length);
                value = replaceSpecialSymbols(value);
                var field = window.document.getElementsByName(name);
                if(field != null && field.length > 0) {
                    initField(field, value);
                    nextQ(field[0]);
                }
            }
        }
    }
}

function validate_MORTGAGE_PHONE_01(form) {
	if (validateDayPhone && !validate_DAY_PHONE_01(form)) {
		return false;
	}
	if (validateEveningPhone && !validate_EVENING_PHONE_01(form)) {
		return false;
	}
	
	return true;
}

function validate_DAY_PHONE_01(form) {
	var dayMessage = "Please enter a valid work phone number.";
    var eveningMessage = "Please enter a valid home phone number.";
    
    var dayAreaCode = getFieldValueTF(form.PHONE_DAY_AREA_01);
    var dayPrefix = getFieldValueTF(form.PHONE_DAY_PREFIX_01);
    var daySuffix = getFieldValueTF(form.PHONE_DAY_SUFFIX_01);

    var eveningAreaCode = getFieldValueTF(form.PHONE_EVENING_AREA_01);
    var eveningPrefix = getFieldValueTF(form.PHONE_EVENING_PREFIX_01);
    var eveningSuffix = getFieldValueTF(form.PHONE_EVENING_SUFFIX_01);
    
    if(isDayPhoneEmpty(form)) {
    	if (validateEveningPhone && validateIsRequired(eveningAreaCode) && validateIsRequired(eveningPrefix) && validateIsRequired(eveningSuffix)) {
    		if(!validate_PHONE_EVENING_AREA_01_with_messages(form, "Please enter your home Area Code.", eveningMessage)) {
    	        return false;
    	    }
    	    if(!validate_PHONE_2PART_01(form.PHONE_EVENING_PREFIX_01, form.PHONE_EVENING_SUFFIX_01, eveningMessage)) {
    	    	return false;
    	    }
	        if(warnedAboutPhone) {
	            setFieldValueTF(form.PHONE_DAY_AREA_01, eveningAreaCode);
	            setFieldValueTF(form.PHONE_DAY_PREFIX_01, eveningPrefix);
	            setFieldValueTF(form.PHONE_DAY_SUFFIX_01, eveningSuffix);
	        } else {
	            warnedAboutPhone=true;
	            alert(dayMessage);
	            return false;
	        }
    	} else {
    		alert(dayMessage);
    		return false;
    	}
    }
    
    if(!validate_PHONE_DAY_AREA_01_with_messages(form, "Please enter your work Area Code.", dayMessage)) {
        return false;
    }
    if(!validate_PHONE_2PART_01(form.PHONE_DAY_PREFIX_01, form.PHONE_DAY_SUFFIX_01, dayMessage)) {
        return false;
    }

    return true;
}

function isDayPhoneEmpty(form) {
    var dayAreaCode = getFieldValueTF(form.PHONE_DAY_AREA_01);
    var dayPrefix = getFieldValueTF(form.PHONE_DAY_PREFIX_01);
    var daySuffix = getFieldValueTF(form.PHONE_DAY_SUFFIX_01);	
    
    return !validateIsRequired(dayAreaCode) && !validateIsRequired(dayPrefix) && !validateIsRequired(daySuffix);
}


function validate_EVENING_PHONE_01(form) {
    var dayMessage = "Please enter a valid work phone number.";
    var eveningMessage = "Please enter a valid home phone number.";
    
    var dayAreaCode = getFieldValueTF(form.PHONE_DAY_AREA_01);
    var dayPrefix = getFieldValueTF(form.PHONE_DAY_PREFIX_01);
    var daySuffix = getFieldValueTF(form.PHONE_DAY_SUFFIX_01);

    var eveningAreaCode = getFieldValueTF(form.PHONE_EVENING_AREA_01);
    var eveningPrefix = getFieldValueTF(form.PHONE_EVENING_PREFIX_01);
    var eveningSuffix = getFieldValueTF(form.PHONE_EVENING_SUFFIX_01);
    
    if(isEvePhoneEmpty(form)) {
    	if (validateDayPhone && validateIsRequired(dayAreaCode) && validateIsRequired(dayPrefix) && validateIsRequired(daySuffix)) {
		    if(!validate_PHONE_DAY_AREA_01_with_messages(form, "Please enter your work Area Code.", dayMessage)) {
		        return false;
		    }
		    if(!validate_PHONE_2PART_01(form.PHONE_DAY_PREFIX_01, form.PHONE_DAY_SUFFIX_01, dayMessage)) {
		        return false;
		    }
	        if(warnedAboutPhone) {
	            setFieldValueTF(form.PHONE_EVENING_AREA_01, dayAreaCode);
	            setFieldValueTF(form.PHONE_EVENING_PREFIX_01, dayPrefix);
	            setFieldValueTF(form.PHONE_EVENING_SUFFIX_01, daySuffix);
	        } else {
	            warnedAboutPhone=true;
	            alert(eveningMessage);
	            return false;
	        }
    	} else {
    		alert(eveningMessage);
    		return false;
    	}
    }

    if(!validate_PHONE_EVENING_AREA_01_with_messages(form, "Please enter your home Area Code.", eveningMessage)) {
        return false;
    }
    if(!validate_PHONE_2PART_01(form.PHONE_EVENING_PREFIX_01, form.PHONE_EVENING_SUFFIX_01, eveningMessage)) {
    	return false;
    }

    return true;
}

function isEvePhoneEmpty(form) {
    var eveningAreaCode = getFieldValueTF(form.PHONE_EVENING_AREA_01);
    var eveningPrefix = getFieldValueTF(form.PHONE_EVENING_PREFIX_01);
    var eveningSuffix = getFieldValueTF(form.PHONE_EVENING_SUFFIX_01);
    
    return !validateIsRequired(eveningAreaCode) && !validateIsRequired(eveningPrefix) && !validateIsRequired(eveningSuffix);
}

function validate_PHONE_2PART_01(prefixField, suffixField, message) {
    prefix = getFieldValueTF(prefixField);
    suffix = getFieldValueTF(suffixField);

    if(!validateIsRequired(prefix)) {
            alert( message );
            prefixField.focus()
            return false;
    }
    if(!validateIsRequired(suffix)) {
            alert( message );
            suffixField.focus()
            return false;
    }
    value = stripAwayNonDigits(prefix) + stripAwayNonDigits(suffix);

    if(!validateMinLength(value,7)) {
        alert( message );
        prefixField.focus();
        return false;
    } else if(!validateMaxLength(value,7)) {
        alert( message );
        prefixField.focus();
        return false;
    } else if(allCharsTheSame(value)) {
        alert( message );
        prefixField.focus();
        return false;
    } else if(value.charAt(0)=="0" || value.charAt(0)=="1") {
        alert( message );
        prefixField.focus();
        return false;
    } else if(value == "5551212") {
        alert( message );
        prefixField.focus();
        return false;
    }

    return true;
}

function validate_CONFIRM_CONTACT() {
    var cbField = window.document.form1.confirm_contact;
    if(cbField) {
      if(cbField.checked == false) {
        alert("Please check the box indicating your acknowledgment to be contacted.");
        return false;
      }
    }
    return true;
}

function submitFailField(field) {
    if(field == window.document.form1.COUNTRY_01) {
      var country = getFieldValueLB(field);
      if(country != null && country == "other") {
        submitForm();
        return;
      }
    } else if(field == window.document.form1.PROP_STATE_01) {
        var propState = getFieldValueLB(field);
        if(propState != null && propState == "Not a US Resident") {
          submitForm();
          return;
        }
    } 
//    we are running homepurchase form msnhp
//    if (window.isMsnHomepage || window.redirect4LoanType) {
//      if(field == window.document.form1.DESIRED_LOAN_TYPE_01) {
//        var product = getFieldValueLB(field);
//        if(product != null && product == "Home Purchase") {
//          submitForm();
//          return;
//        }
//      }
//    } 
    
    if (window.isMsnHomepage || window.redirect4Ltv) {
      if(field == window.document.form1.FIRST_MORTGAGE_BALANCE_01 || field == window.document.form1.HOUSE_VALUE_01){
        //|| field == window.document.form1.SECOND_MORTGAGE_BALANCE_01 || field == window.document.form1.ADDITIONAL_CASH_TO_BORROW_01) {
        var firstMortgage = null;
        if(window.document.form1.FIRST_MORTGAGE_BALANCE_01) {
          firstMortgage = getFieldValueLB(window.document.form1.FIRST_MORTGAGE_BALANCE_01);
        }
/*        var secondMortgage = 0;
        if (window.document.form1.SECOND_MORTGAGE_BALANCE_01) {
          secondMortgage = getFieldValueLB(window.document.form1.SECOND_MORTGAGE_BALANCE_01);
        }
        var addCache = 0;
        if (window.document.form1.ADDITIONAL_CASH_TO_BORROW_01) {
          addCache = getFieldValueLB(window.document.form1.ADDITIONAL_CASH_TO_BORROW_01);
        }
        */
        var houseValue = null;
        if (window.document.form1.HOUSE_VALUE_01) {
          houseValue = getFieldValueLB(window.document.form1.HOUSE_VALUE_01);
        }
  //FIRST_MORTGAGE_BALANCE + SECOND_MORTGAGE_BALANCE + ADDITIONAL_CASH_TO_BORROW) / HOUSE_VALUE
        if(firstMortgage != null && houseValue != null && houseValue != "0") {
          var loanType = getLoanType();
          var ltv = parseInt(firstMortgage)/parseInt(houseValue);          
          var ltvThreshold = getLtvThreshold(loanType);     
          
          // alert("LTV: loanType: " + loanType + ", ltv: " + ltv + ", ltvThreshold: " + ltvThreshold + ", ltv > ltvThreshold: " + (ltv > ltvThreshold));
          
          if (ltv > ltvThreshold) {
            submitForm();
            return;
          }
        }
      }
    }
    if (window.isMsnHomepage || window.redirect4Credit) {
      if (field == window.document.form1.CREDIT_STATUS_01) {
         var crStatus = getFieldValueLB(field);
         if (crStatus == 'Poor') {
           submitForm();
           return;
         }
      }
    }
}
function displayNextQ(field)
{
    submitFailField(field);
    nextQ(field);
}

function initHighlight(form) {
    var LBFieldsToHighlight = ["MORT_LOAN_TIME_01", "MORT_PURCHASE_PRICE_01", "MORT_DOWN_PAYMENT_01", "HOUSE_VALUE_01", "FIRST_MORTGAGE_BALANCE_01", "SECOND_MORTGAGE_BALANCE_01", "SECOND_INTEREST_RATE_INT_TEXT_01", "SECOND_INTEREST_RATE_DECIMAL_TEXT_01", "MORT_INCOME_01", "MORT_AGE_01", "SECOND_INTEREST_RATE_INT_01", "SECOND_INTEREST_RATE_DECIMAL_01", "CURRENT_INTEREST_RATE_INT_01", "CURRENT_INTEREST_RATE_DECIMAL_01"];
    var TFFieldsToHighlight = ["PROP_ZIP_01", "CURRENT_INTEREST_RATE_INT_TEXT_01", "CURRENT_INTEREST_RATE_DECIMAL_TEXT_01", "EMAIL_01", "FIRSTNAME_01", "LASTNAME_01", "ADDRESS1_01", "ADDRESS2_01", "PHONE_DAY_AREA_01", "PHONE_DAY_PREFIX_01", "PHONE_DAY_SUFFIX_01", "PHONE_DAY_EXT_01", "PHONE_EVENING_AREA_01", "PHONE_EVENING_PREFIX_01", "PHONE_EVENING_SUFFIX_01"];
  
    var highlightCssClass = getHighlightClassName();
    
    for (var i=0; i< LBFieldsToHighlight.length; i++) {
        var field = form[LBFieldsToHighlight[i]];
        var value = getFieldValueLB(field);
       
        if( value != null && value == "" && !hasCssClass( field, highlightCssClass ) ) {
            highlightFieldAndAttachEvent(field, highlightCssClass);
        }
    }
    
    for (var i=0; i< TFFieldsToHighlight.length; i++) {
        var field = form[TFFieldsToHighlight[i]];
        var value = getFieldValueLB(field);
        if( value != null && value == "" && !hasCssClass( field, highlightCssClass ) ) {
            highlightFieldAndAttachEvent(field, highlightCssClass);
        }
    }
}

function highlightFieldAndAttachEvent(field, highlightCssClass){
    addCssClass(field, highlightCssClass);
    var existingEvent = field.onchange;
    field.onchange = removeFieldHighlight(existingEvent, field, highlightCssClass);
}

function removeFieldHighlight(existingEvent, field, highlightCssClass){
    return function(){
        if(existingEvent) {
            existingEvent.call(this);
        }
        removeCssClass(field, highlightCssClass);
    }
}

function getHighlightClassName(){
    return "highlight";
}
function hasCssClass(element, cssClass) {
    if(element){
        if(element.className) {
            return element.className.indexOf(cssClass)>=0;
        }
    }
}

function addCssClass(element, cssClass) {
    if(element){
        element.className += (element.className? ' ' : '') + cssClass;
    }
}

function removeCssClass(element, cssClass) {
    if(element) { 
        element.className = element.className.replace(cssClass,"");
    }
}

//Set required fields for popunder
function setForm2Fields(form) {
    var form2 = window.document.form2;
    if (form.DESIRED_LOAN_TYPE_01 && form2.DESIRED_LOAN_TYPE_01) {
        form2.DESIRED_LOAN_TYPE_01.value = getFieldValueLB(form.DESIRED_LOAN_TYPE_01);
    }    
    if (form.HOUSE_TYPE_01 && form2.HOUSE_TYPE_01) {
        form2.HOUSE_TYPE_01.value = getFieldValueLB(form.HOUSE_TYPE_01);
    }
    if (form.PROP_ZIP_01 && form2.PROP_ZIP_01) {
        form2.PROP_ZIP_01.value = getFieldValueTF(form.PROP_ZIP_01);
    }
    if (form.CREDIT_STATUS_01 && form2.CREDIT_STATUS_01) {
        form2.CREDIT_STATUS_01.value = getFieldValueLB(form.CREDIT_STATUS_01);
    }
    if (form.HOUSE_TYPE_01 && form2.HOUSE_TYPE_01) {
        form2.HOUSE_TYPE_01.value = getFieldValueLB(form.HOUSE_TYPE_01);
    }
    if (form.PROP_STATE_01 && form2.PROP_STATE_01) {
        form2.PROP_STATE_01.value = getFieldValueLB(form.PROP_STATE_01);
    }
    if (form.PROP_PURP_01 && form2.PROP_PURP_01) {
        form2.PROP_PURP_01.value = getFieldValueLB(form.PROP_PURP_01);
    }
    if (form.HOUSE_VALUE_01 && form2.HOUSE_VALUE_01) {
        form2.HOUSE_VALUE_01.value = getFieldValueLB(form.HOUSE_VALUE_01);
    }
    if (form.FIRST_MORTGAGE_BALANCE_01 && form2.FIRST_MORTGAGE_BALANCE_01) {
        form2.FIRST_MORTGAGE_BALANCE_01.value = getFieldValueLB(form.FIRST_MORTGAGE_BALANCE_01);
    }
    if (form.CURRENT_INTEREST_RATE_INT_01 && form2.CURRENT_INTEREST_RATE_INT_01) {
        form2.CURRENT_INTEREST_RATE_INT_01.value = getFieldValueTF(form.CURRENT_INTEREST_RATE_INT_01);
    }
    if (form.CURRENT_INTEREST_RATE_DECIMAL_01 && form2.CURRENT_INTEREST_RATE_DECIMAL_01) {
        form2.CURRENT_INTEREST_RATE_DECIMAL_01.value = getFieldValueTF(form.CURRENT_INTEREST_RATE_DECIMAL_01);
    }
    if (form.SECOND_MORTGAGE_01 && form2.SECOND_MORTGAGE_01) {
        form2.SECOND_MORTGAGE_01.value = getFieldValueRB(form.SECOND_MORTGAGE_01);
    }
    if (form.SECOND_MORTGAGE_BALANCE_01 && form2.SECOND_MORTGAGE_BALANCE_01) {
        form2.SECOND_MORTGAGE_BALANCE_01.value = getFieldValueLB(form.SECOND_MORTGAGE_BALANCE_01);
    }
    if (form.SECOND_INTEREST_RATE_INT_01 && form2.SECOND_INTEREST_RATE_INT_01) {
        form2.SECOND_INTEREST_RATE_INT_01.value = getFieldValueTF(form.SECOND_INTEREST_RATE_INT_01);
    }
    if (form.SECOND_INTEREST_RATE_DECIMAL_01 && form2.SECOND_INTEREST_RATE_DECIMAL_01) {
        form2.SECOND_INTEREST_RATE_DECIMAL_01.value = getFieldValueTF(form.SECOND_INTEREST_RATE_DECIMAL_01);
    }
    
    form2.COUNTRY_01.value = getCountryValue(form.COUNTRY_01);
    form2.H.value = getFieldValueTF(form.H);
    form2.Z.value = getFieldValueTF(form.Z);
    form2.GeoState.value = getFieldValueTF(form.GeoState);
    form2.exPop.value = getFieldValueTF(form.exPop);
}


//This method was based from the submitForm2PopUnder method in autoinsFullForm.js
//It was named as such since there is a possibility that different popunder types
//will be introduced to this FF. AutoFF would be our primary example (Surehits, Generic).
function submitForm2ForDifferentPopUnderTypes(form) {
	
	// Since tag is not applied to all pages that show popunder therefore this block 
	// of code should be executed event if window.showPopunder is null or undefined
	var form2 = window.document.form2;
	if (window.showPopunder && form && form2 && form2.CROSS_SELL_CAMPAIGN_01 && window.showPopunder == 'GENERIC') {
		window.document.form2.CROSS_SELL_CAMPAIGN_01.value = window.popunderCampaign;
		window.document.form2.MORTGAGE_POPUNDER.value = "YES";  
		setForm2Fields(form);

        var newWindow = window.open('', 'formWindow', 'height=1000,width=1000,scrollbars=yes');
        //check if we were able to open the new window
        if (newWindow) {
	        newWindow.blur();

	        window.document.form2.target='formWindow';
	        document.form2.submit();
	        window.focus();
        }
	}
	
	return status;
}

function popUpTerms() {
	var newWindow=window.open('','mrg_terms_window','height=450,width=460,scrollbars,resizable');
	var tmp = newWindow.document;
	tmp.write('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
	tmp.write('<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Terms and Conditions</title>');
	tmp.write('<style>body {font-family:Tahoma, Geneva, sans-serif;font-size:12px;}</style></head><' + 'body' + '>');
	tmp.write('<h2>Terms and Conditions</h2>');
	tmp.write(document.getElementById('termsText').innerHTML);
	tmp.write('</' + 'body' + '></html>');
	tmp.close();
}

function showHideLoanType(desiredLoanTypeId) {
	if (typeof(window.showLoanType) != "undefined" && "YES" == window.showLoanType.toUpperCase()) {
		show(desiredLoanTypeId);
	} else {
		hide(desiredLoanTypeId);
	}
}

function nonLicensedState(value) {
    if(value=='MA' || value=='RI' || value=='MT') {
    	return true;
    } else {
    	return false;
    }
}

function compareFields(givenField, expectedField) {
  if((givenField == expectedField) || 
      ((givenField && expectedField && givenField.length == expectedField.length) &&
      (givenField[0] && expectedField[0] && givenField[0].name == expectedField[0].name))){
      return true;
  }
  return false;
}

var currentStep = 1;
function insertStepTitles(){
	$.each(stepTitles,function(i){
		$('#step'+(i+1)).html('<span>'+stepTitles[i]+'</span>');

		if($('#step'+(i+1)).hasClass('currentStep')){
			currentStep = i;
		}
	});

	for(var i=currentStep-1;i>=0;i--){
		$('#step'+(i+1)).css('cursor','pointer');

		(function(i){
			$('#step'+(i+1)).click(function(){
				window.backWasClicked = true;
				history.go(-1*(currentStep-i));
			});
		})(i);
	}
}

