var filters = {
   requerido: function(el) {return $(el).val() != '' && $(el).val() != -1;},
   email: function(el) {return /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test($(el).val());},
   telefono: function(el){return /^\+?[0-9]*$/.test($(el).val());}
};

$.extend({
   stop: function(e){
      if (e.preventDefault) e.preventDefault();
      if (e.stopPropagation) e.stopPropagation();
   }
});

$(document).ready(function(){
   $('#00N200000015rkf, .state_select select').val(""); // clear country and province field

   $("form.validable").bind("submit", function(e) {
      if (typeof filters == 'undefined') return;
      $(this).find("input, textarea, select").each(function(x,el){
         if ($(el).attr("className") != 'undefined') {
            $(el).removeClass("error");
            $.each(new String($(el).attr("className")).split(" "), function(x, klass){
               if ($.isFunction(filters[klass]))
                  if (!filters[klass](el))
                     $(el).addClass("error");
            });
         }
      });

      if (filters['requerido'] ($('#phone')) && !filters['telefono'] ($('#phone'))) {
         $.stop(e || window.event);
         alert("Please offer phone format with only numeric data");
         return false;
      } else if (!filters['requerido'] ($('#00N20000001NNi4'))) {
         $.stop(e || window.event);
         alert("Please select Type of Company");
         return false;
      } else if (!filters['requerido'] ($('#00N200000015rkf'))) {
         $.stop(e || window.event);
         alert("Please select your country");
         return false;
      } else if ($("#state_es").val() == '' && $("#state_es").hasClass('requerido')
                     || $("#state_pt").val() == '' && $("#state_pt").hasClass('requerido')
                     || $("#state_ca").val() == '' && $("#state_ca").hasClass('requerido')) {
         $.stop(e || window.event);
         alert('Please select your province');
         return false;
      } else if ($("#state_us").val() == '' && $("#state_us").hasClass('requerido')
                     || $("#state_mx").val() == '' && $("#state_mx").hasClass('requerido')) {
         $.stop(e || window.event);
         alert('Please select your state');
         return false;
      } else if (filters['requerido'] ($('#mobile')) && !filters['telefono'] ($('#mobile'))) {
         $.stop(e || window.event);
         alert("Please offer mobile format with only numeric data");
         return false;
      } else if (filters['requerido'] ($('#email')) && !filters['email'] ($('#email'))) {
         $.stop(e || window.event);
         alert("Please offer valid email address");
         return false;
      } else if ($(this).find(".error").size() > 0) {
         alert("There are required fields left");
         $.stop(e || window.event);
         return false;
      } else if (!$("#privacypolicy").is(':checked')) {
         alert("Do you agree with the Hotelbeds privacy policy?");
         return false;
      }
      return true;
   });
   
   $('#00N20000001NNi4').change(function(){
      if ($('#00N20000001NNi4').val() == 'Hotel Supplier') {
         $('#othertypes_container').hide();
         $('#suppliers_container').show();
      } else if ($('#00N20000001NNi4').val() == '') {
         $('#suppliers_container').hide();
         $('#othertypes_container').hide();
      } else {
         $('#suppliers_container').hide();
         $('#othertypes_container').show();
      }
   });
   
   $('#00N20000001NNi4').val("");
   
});

function changeStateList(state) {
   var elid = state.value.replace(/[^\w]/g, '');
   $(".state_select, .uk_county").hide();
   $("#state_es, #state_mx, #state_us, #state_pt, #state_ca, #state_th, #state_ad, #state_fr, #uk_county_field").removeClass('requerido');
   $("#state_" + elid + " select").addClass('requerido');
   $("#state_" + elid).show();

   if (elid == 'USA' || elid == 'CANADA') {
      $('#fax_mandatory').css('display', 'inline');
      $('#fax').addClass('requerido');
   } else if (elid == 'UNITEDKINGDOM') {
      $('.uk_county').css('display', 'inline');
      $('#uk_county_field').addClass('requerido');
   } else {
      $('#fax_mandatory').css('display', 'none');
      $('#fax').removeClass('requerido');
      $('.uk_county').css('display', 'none');
      $('#uk_county_field').removeClass('requerido');
   }
}