$.validator.addMethod("GETPostalCode", function(value, element){
  switch($("#Country").val()) {
    case "US":
      if ( value.length == 5 ) return /^\d{5}$/.test(value);
      if ( value.length == 9 ) return /^\d{9}/.test(value);
      return false;
    case "CA":
      if ( value.length == 6 ) return /^\w{6}$/.test(value);
      if ( value.length == 7 ) return /^\w{3}\ \w{3}$/.test(value);
      return false;
    default:
      if ( value.length > 0 ) return true;
      return false;
  }
}, "Please Enter a 5 digit US Zip Code (#####) or 7 character Canadian Postal Code (### ###).");
	
$.validator.addMethod("GETEmail", function(value, element){
  if ( /^na$/i.test(value) ) return true;
  return /^((([a-z]|\d|[!#\$%&"\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&"\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
}, "Please Enter NA or a properly formatted e-mail address.");
	
$(document).ready(function() {
  $("#CatalogLandingRequestForm").validate({
    //			debug: true,
    resetForm: false,
    clearForm: false,
    errorPlacement: function(error, element) {
      switch(element.attr("name")) {
       case "TelAreaCode":
        case "TelPrefix":
        case "TelSuffix":
          error.insertAfter("#TelSuffix");
          break;
        default:
          error.insertAfter(element);
      }
    },
    groups: {
      telephoneNumber: "TelAreaCode TelPrefix TelSuffix"
    },
    rules: {
      FirstName: {
        required: true
      },
      LastName: {
        required: true
      },
      EMail: {
        "GETEmail": true
      },
      EMailConfirm: {
        required: true,
        equalTo: "#EMail"
      },
      Address: {
        required: true
      },
      City: {
        required: true
      },
      State: {
        required: true
      },
      Province: {
        required: true
      },
      PostalCode: {
        required: true,
        "GETPostalCode": true,
        minlength: function(element) {
          switch($("#Country").val()) {
            case "US":
              return 5;
              break;
            case "CA":
              return 7;
              break;
            default:
              return 1;
          }
        },
        maxlength: function(element) {
          switch($("#Country").val()) {
            case "US":
              return 10;
              break;
            case "CA":
              return 7;
              break;
            default:
              return 12;
          }
        }
      },
      TelAreaCode: {
        required: true,
        digits: true,
        minlength: 3
      },
      TelPrefix: {
        required: true,
        digits: true,
        minlength: 3
      },
      TelSuffix: {
        required: true,
        digits: true,
        minlength: 4
      },
      DateOfBirth: {
        date: true
      }
    },
    messages: {
      TelAreaCode: {
        required: "Please enter the area code.",
        digits: "The area code should only include digits.",
        minlength: "The area code should be three digits."
      },
      TelPrefix: {
        required: "Please enter the phone prefix.",
        digits: "The phone prefix should only include digits.",
        minlength: "The phone prefix should be three digits."
      },
      TelSuffix: {
        required: "Please enter the phone number.",
        digits: "The phone number should only include digits.",
        minlength: "The phone number should be four digits."
      },
      EMail: {
        "GETEmail": "Please Enter NA or a properly formatted e-mail address."
      },
      EMailConfirm: {
        equalTo: "Please re-enter the same e-mail address as above."
      },
      State: {
        required: "Please select your state."
      },
      PostalCode: {
        required: "Please enter your Zip code.",
        minlength: function(element) {
          switch($("#Country").val()) {
            case "US":
              return "Please enter a 5 digit zip code.";
              break;
            case "CA":
              return "Please enter a 6 character postal code (### ###).";
              break;
            default:
              return "Please enter a Post Code or NONE.";
          }
        },
        "GETPostalCode": function(element) {
          switch($("#Country").val()) {
            case "US":
              return "Please enter a 5 digit zip code.";
              break;
            case "CA":
              return "Please enter a 6 character postal code (### ###).";
              break;
            default:
              return "Please enter a Post Code or NONE.";
          }
        },
        maxlength: function(element) {
          switch($("#Country").val()) {
            case "US":
              return "Please enter a 5 digit zip code.";
              break;
            case "CA":
              return "Please enter a 6 character postal code (### ###).";
              break;
            default:
              return "Please enter a Post Code or NONE.";
          }
        }
      }
    }
  });
		
  $("#Country").change(function () {
    var str = "";
    zipCodeInput = $("#PostalCode");
    country = $("#Country").val();
    switch( country ) {
      case "US":
        $("#zipOrPostalCode").html("Zip Code:");
        zipCodeInput.attr("maxLength",10);
        zipCodeInput.css("width","11ex");

        $(".regionNotUS").find(":input").attr("disabled", "disabled");
        $(".regionNotUS").hide();
        $(".regionUSOnly").find(":input").removeAttr("disabled");
        $(".regionUSOnly").show();
        $(".regionUSorCanada").find(":input").removeAttr("disabled");
        $(".regionUSorCanada").show();
        break;

      case "CA":
        $("#zipOrPostalCode").html("Postal Code:");
        zipCodeInput.attr("maxLength",7);
        zipCodeInput.css("width","8ex");

        $(".regionNotUS").find(":input").removeAttr("disabled");
        $(".regionNotUS").show();
        $(".regionUSOnly").find(":input").attr("disabled", "disabled");
        $(".regionUSOnly").hide();
        $(".regionUSorCanada").find(":input").removeAttr("disabled");
        $(".regionUSorCanada").show();
        break;
      default:
        $("#zipOrPostalCode").html("Post Code:");
        zipCodeInput.attr("maxLength",12);
        zipCodeInput.css("width","13ex");
        $(".regionNotUS").find(":input").removeAttr("disabled");
        $(".formline .regionNotUS").show();
        $(".regionNotUS").show();
        $(".regionUSOnly").find(":input").attr("disabled", "disabled");
        $(".formline .regionUSOnly").hide();
        $(".regionUSOnly").hide();
        $(".regionUSorCanada").find(":input").attr("disabled", "disabled");
        $(".formline .regionUSorCanada").hide();
        $(".regionUSorCanada").hide();
	
    }
    if ( country == "US" ) {
    }
    else {
  }
  }).change();
		

});

