  if (  !(BrowserDetect.browser == "Explorer" && BrowserDetect.version < 6)  ) {
    Event.observe(  window, "load", function() {
      /(fair)|(poor)/i.test($("credit_grade").value) ? $("is_healthy_credit_row").show() : $("is_healthy_credit_row").hide();
			if(  /(newhome)/i.test($F("product"))  ){//--->when new home is selected
          //about property
  				$("new_home_area_code").show();
  				$("when_you_buy_fields").show();
  				
          $("property_area_error").addClassName("validate-area-code");
          $("buy_timeframe_error").addClassName("validate");
          $("home_found_error").addClassName("validate-radio");
          $("agent_found_error").addClassName("validate-radio");
          
  				$("property_zip_field").hide();
  				$("purchase_year_field").hide();
          $("property_zip_error").removeClassName("validate-zip");
          $("purchase_year_error").removeClassName("validate"); 
  				
				  displayByClassName("found_home_fields");
          $("agent_found_1").checked ? displayByClassName("agent_fields") : displayByClassName("agent_fields","hide");
          $("home_found_1").checked  ? $("contract_fields").show() : $("contract_fields").hide();

          //about your loan
          $("down_payment_fields").show();
          $("down_payment_percent_error").addClassName("validate");
            //'->hidden loan fields 
            $("loan_purpose_field").hide();
            $("loan_purpose_error").removeClassName("validate");
            displayByClassName("first_mortgage_fields","hide");
            $("mortgage1_balance_error").removeClassName("validate");
            $("mortgage1_interest_error").removeClassName("validate");
            $("mortgage2_radio").hide();
            displayByClassName("second_mortgage_fields","hide");
            $("add_cash_field").hide();
            $("additional_cash_error").removeClassName("validate");     
    		    $("existing_rate").hide();
    		    $("desired_rate").show();  
    		  
    		  //personal finances
    		  $("first_time_buyer_field").show();
    		  $("first_buyer_error").addClassName("validate-radio");
			}else{
				$("when_you_buy_fields").hide();
				displayByClassName("found_home_fields","hide");
				$("purchase_year_field").show();  
        $("purchase_year_error").addClassName("validate");
				$("property_zip_field").show();		
        $("property_zip_error").addClassName("validate-zip");
        
        //show loan fields
        $("down_payment_fields").hide();
        $("down_payment_percent_error").removeClassName("validate");
        $("loan_purpose_field").show();
        $("loan_purpose_error").addClassName("validate");
        $("mortgage2_radio").show();

        $("loan_purpose_field").show();
        $("loan_purpose_error").addClassName("validate");
        displayByClassName("first_mortgage_fields");
        $("mortgage1_balance_error").addClassName("validate");
        $("mortgage1_interest_error").addClassName("validate");
        $("mortgage2_radio").show();
        displayByClassName("second_mortgage_fields","hide");
        $("add_cash_field").show();
        $("additional_cash_error").addClassName("validate");
        
        $("mortgage_two_1").checked  ? displayByClassName("second_mortgage_fields") : displayByClassName("second_mortgage_fields","hide");
        
				$("new_home_area_code").hide();
        $("property_area_error").removeClassName("validate-area-code");
			  displayByClassName("agent_fields","hide");
			  
			  addCashTitle($F("product"));
		    $("existing_rate").show();
		    $("desired_rate").hide();
		    
  		  //personal finances
  		  $("first_time_buyer_field").hide();
  		  $("first_buyer_error").removeClassName("validate-radio");
			}
  		Event.observe("product", "change", function() {
  			if(  /(newhome)/i.test($F("product"))  ){ //--->when new home is selected
          //about property
  				$("new_home_area_code").show();
  				$("when_you_buy_fields").show();
  				
          $("property_area_error").addClassName("validate-area-code");
          $("buy_timeframe_error").addClassName("validate");
          $("home_found_error").addClassName("validate-radio");
          $("agent_found_error").addClassName("validate-radio");
          
  				$("property_zip_field").hide();
  				$("purchase_year_field").hide();
          $("property_zip_error").removeClassName("validate-zip");
          $("purchase_year_error").removeClassName("validate"); 
          
  				displayByClassName("found_home_fields");
          $("agent_found_1").checked ? displayByClassName("agent_fields") : displayByClassName("agent_fields","hide");
          $("home_found_1").checked  ? $("contract_fields").show() : $("contract_fields").hide();
          
          //about your loan
          $("down_payment_fields").show();
          $("down_payment_percent_error").addClassName("validate");
            //'->hidden loan fields
            $("loan_purpose_field").hide();
            $("loan_purpose_error").removeClassName("validate");
            displayByClassName("first_mortgage_fields","hide");
            $("mortgage1_balance_error").removeClassName("validate");
            $("mortgage1_interest_error").removeClassName("validate");
            $("mortgage2_radio").hide();
            displayByClassName("second_mortgage_fields","hide");
            $("add_cash_field").hide();
            $("additional_cash_error").removeClassName("validate");
            
    		    $("existing_rate").hide();
    		    $("desired_rate").show();
    		   
    		  //personal finances
    		  $("first_time_buyer_field").show();
    		  $("first_buyer_error").addClassName("validate-radio"); 
  			}else{
  				$("property_zip_field").show();
          $("property_zip_error").addClassName("validate-zip");
  				$("purchase_year_field").show(); 
          $("purchase_year_error").addClassName("validate");
  				$("when_you_buy_fields").hide();
  				$("new_home_area_code").hide();
          $("property_area_error").removeClassName("validate-area-code"); 
				  displayByClassName("agent_fields","hide");
				  displayByClassName("found_home_fields","hide");

          //show loan fields
          $("down_payment_fields").hide();
          $("down_payment_percent_error").removeClassName("validate");
          $("loan_purpose_field").show();
          $("loan_purpose_error").addClassName("validate");
          $("mortgage2_radio").show();

          $("loan_purpose_field").show();
          $("loan_purpose_error").addClassName("validate");
          displayByClassName("first_mortgage_fields");
          $("mortgage1_balance_error").addClassName("validate");
          $("mortgage1_interest_error").addClassName("validate");
          $("mortgage2_radio").show();
          displayByClassName("second_mortgage_fields","hide");
          $("add_cash_field").show();
          $("additional_cash_error").addClassName("validate");
			    
			    addCashTitle($F("product"));  
			    $("existing_rate").show();
			    $("desired_rate").hide();

    		  //personal finances
    		  $("first_time_buyer_field").hide();
    		  $("first_buyer_error").removeClassName("validate-radio");
  			}
		  });
		  
      Event.observe("agent_found_1", "click", function() {
        displayByClassName("agent_fields");
        fadeOut("agent_found_error");
        $("agent_name_error").addClassName("validate-alpha");
        $("agent1_phone1_error").addClassName("validate-phone");
        $("agent_company_error").addClassName("validate");
      });
      
      Event.observe("agent_found_0", "click", function() {
        displayByClassName("agent_fields","hide");
        fadeOut("agent_found_error");
        $("agent_name_error").removeClassName("validate-alpha");
        $("agent1_phone1_error").removeClassName("validate-phone");
        $("agent_company_error").removeClassName("validate");
      });
  			
      Event.observe("home_found_1", "click", function() {
        $("contract_fields").show();
        fadeOut("home_found_error");
        $("purchase_contract_error").addClassName("validate-radio");
      });
      
      Event.observe("home_found_0", "click", function() {
        $("contract_fields").hide();
        fadeOut("home_found_error");
        $("purchase_contract_error").removeClassName("validate-radio");
      });
  			
      Event.observe("mortgage_two_1", "click", function() {
        displayByClassName("second_mortgage_fields");
        fadeOut("mortgage_two_error");
        $("mortgage2_balance_error").addClassName("validate");
        $("mortgage2_interest_error").addClassName("validate");
      });

      Event.observe("mortgage_two_0", "click", function() {
        displayByClassName("second_mortgage_fields","hide");
        fadeOut("mortgage_two_error");
        $("mortgage2_balance_error").addClassName("validate");
        $("mortgage2_interest_error").addClassName("validate");
      });

      Event.observe("credit_grade", "click", function() {
        /(excellent)|(good)/i.test($("credit_grade").value) ? $("is_healthy_credit_row").hide() : $("is_healthy_credit_row").show();
        if(/(excellent)|(good)/i.test($("credit_grade").value)){
          $("is_healthy_credit").checked = false;
        }
      });

      Event.observe("down_payment_percent", "change", function() {
        ($F("down_payment_percent") < 20 && $F("down_payment_percent") >= 0) ? $("down_payment_message").show() : $("down_payment_message").show();
      });

      Event.observe("estimated_value", "change", function() {
        if(/(newhome)/i.test($F("product"))){
          var percentages = $("down_payment_percent");
          for(i=2; i < percentages.length; i++){
            if(/\d/.test(percentages[i].value)){
              var down_pay    = Math.round((percentages[i].value/100) * $F("estimated_value"));
              var display_val = percentages[i].value + "%, $" + formatToCurrency(down_pay, 0, '.', ',') + "";
              $("down_payment_percent")[i].text = display_val;
            }
          }
        }
      });
    ////////////////////////////////////////////////////////////////////      percentages[i].value
    });
  }

  function formatToCurrency( n, c, d, t ) {
  	var m = ( c = Math.abs( c ) + 1 ? c : 2, d = d || ",", t = t || ".", /(\d+)(?:(\.\d+)|)/.exec( n + "" ) ), x = m[1].length % 3;
  	return ( x ? m[1].substr( 0, x ) + t : "" ) + m[1].substr( x ).replace( /(\d{3})(?=\d)/g, "$1" + t ) + ( c ? d + ( +m[2] ).toFixed( c ).substr( 2 ) : "" );
  };

  function displayByClassName(id,optional){
    var option = (typeof optional == "undefined") ? "show" : "hide";
    var elements = document.getElementsByClassName(id);
    for(i=0; i < elements.length; i++){
      /(show)/i.test(option) ? elements[i].show() : elements[i].hide();
    }
  }

  /***************************************************************************
   *change add cash title depending on product type
   */
  function addCashTitle(product){
    switch(product){
      case "PP_DEBTCON":
        $("add_cash_refi").hide();
        $("add_cash_equity").hide();
        $("add_cash_debtcon").show();
        break;    
      case "PP_HOME_EQUITY":
        $("add_cash_refi").hide();
        $("add_cash_equity").show();
        $("add_cash_debtcon").hide();
        break;
      default:
        $("add_cash_refi").show();
        $("add_cash_equity").hide();
        $("add_cash_debtcon").hide();
    }
  }
  /***************************************************************************
   *Main validation form function
   */
  function validate_fields(validate_id){
    var is_valid          = true;
    var first_error       = "";
    if(isDefined(validate_id)){
      var form_fields     = $(validate_id);
      var required_fields = form_fields.getElementsByClassName("validate");
      var alpha_fields    = form_fields.getElementsByClassName("validate-alpha");
      var number_fields   = form_fields.getElementsByClassName("validate-number");
      var radio_fields    = form_fields.getElementsByClassName("validate-radio");
      var phone_numbers   = form_fields.getElementsByClassName("validate-phone");
      var birthdays       = form_fields.getElementsByClassName("validate-dob");
      var heights         = form_fields.getElementsByClassName("validate-height");
      var states          = form_fields.getElementsByClassName("validate-state");
      var zipcode         = form_fields.getElementsByClassName("validate-zip");
      var email           = form_fields.getElementsByClassName("validate-email");
      var privacy         = form_fields.getElementsByClassName("validate-privacy");
      var area_code       = form_fields.getElementsByClassName("validate-area-code");
      
      for(i=0; i < alpha_fields.length; i++){
        if(  !isValidRequiredAlphaInput(alpha_fields[i].id)  ){
          is_valid = false;
        }else{
          fadeOut(alpha_fields[i].id);
        }
      } 
      for(i=0; i < required_fields.length; i++){ 
        var parent      = $(required_fields[i].id).parentNode;
        if(parent.getElementsByTagName("SELECT").length > 0){
          if(  !isValidSelection(required_fields[i].id)  ){
            is_valid = false;
          }else{
            fadeOut(required_fields[i].id);
          }
        }else{
          if(  isEmptyInput(required_fields[i].id)  ){
            is_valid = false;
          }else{
            fadeOut(required_fields[i].id);
          }
        }
      }     
      for(i=0; i < number_fields.length; i++){
        if(  isEmptyInput(number_fields[i].id)  ){
          is_valid = false;
        }else{
          if(  !isValidNumber(number_fields[i].id)  ){
            is_valid = false;
          }else{
            fadeOut(number_fields[i].id);
          }
        }
      } 
      for(i=0; i < radio_fields.length; i++){
        if(  !isChecked(radio_fields[i].id)  ){
          is_valid = false;
        }else{
            fadeOut(radio_fields[i].id);
        }
      }   
       
      /***************************************************************************
       *validate phone numbers
       *work in progress...cant seem to iterate in a loop
       */
      for(i=0; i < phone_numbers.length; i++){
        if(  !isValidPhone(phone_numbers[i].id)  ){
          is_valid = false;
        }else{
          fadeOut(phone_numbers[i].id);
        }
      }    
      /***************************************************************************
       *validate email
       */
      if(  email.length > 0  ){
        if( !isValidEmail(email[0].id)  ){
          is_valid = false;
        }else{
          fadeOut(email[0].id);
        }
      }
      /***************************************************************************
       *validate birthday
       */
      if(birthdays.length != 0){
        for(i=0; i < birthdays.length; i++){
          if(  !isValidDate(birthdays[i].id)  ){
            is_valid = false;
          }else{
            fadeOut(birthdays[i].id);
          }
        }       
      } 
      /***************************************************************************
       *validate height(s)
       */       
      if(heights.length != 0){
        for(i=0; i < heights.length; i++){
          if(  !isValidHeight(heights[i].id)  ){
            is_valid = false;
          }else{
            fadeOut(heights[i].id);
          }
        }  
      }  
      /***************************************************************************
       *validate state(s)
       */       
      if(states.length != 0){
        for(i=0; i < states.length; i++){
          if(  !isValidUsState(states[i].id)  ){
            is_valid = false;
          }else{
            fadeOut(states[i].id);
          }
        }  
      } 
      /***************************************************************************
       *validate zip(s)
       */       
      if(zipcode.length != 0){
        for(i=0; i < zipcode.length; i++){
          if(  !isValidZip(zipcode[i].id)  ){
            is_valid = false;
          }else{
            fadeOut(zipcode[i].id);
          }
        }  
      } 
      /***************************************************************************
       *validate area code [custom]
       */       
      if(area_code.length != 0){
        var phone_area = Form.getElements($(area_code[0].id).parentNode);
        if(!/^[2-9][0-8][0-9]$/.test(phone_area[0].value)){
          is_valid = false;
          $(area_code[0].id).innerHTML = "\nPlease enter a valid area code.";  
          fadeIn($(area_code[0].id));
        }else{
          fadeOut($(area_code[0].id));
        }
      } 
      /***************************************************************************
       *validate privacy checkbox
       */   
      if(privacy.length > 0){
        error_id = privacy[0].id + "_error";
        if(  !$(privacy[0].id).checked  ){
          $(error_id).innerHTML = "\nPlease read and agree to the Privacy Policy and Site Terms of Use."
          fadeIn(error_id);
          is_valid = false;
        }else{
          fadeOut(error_id);
        }
      }  
    }
    return is_valid;
  }