jQuery.validator.addMethod("phoneUS", function (phone_number, element) {
    phone_number = phone_number.replace(/\s+/g, "");
    return this.optional(element) || phone_number.length > 9 &&
		phone_number.match(/^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$/);
}, "Invalid US phone number format.");

jQuery.validator.addMethod("phone", function(value, element) {
    return this.optional(element) || /^[0-9\s\(\)\+\-]+$/.test(value);
}, "Invalid phone number format.");

jQuery.validator.addMethod("multiemail", function (email_list, element) {
    if (this.optional(element)) return true;
    var emails = email_list.split(new RegExp("\\s*,\\s*", "gi"));
    valid = true;
    for (var i in emails) {
        var value = emails[i];
        valid = valid && jQuery.validator.methods.email.call(this, value, element);
    }
    return valid;
}, "Invalid email list format.");

jQuery.validator.addMethod("notEqual", function (value, element, param) {
    return this.optional(element) || value != param;
}, "Please specify a different (non-default) value");

jQuery.validator.addMethod("postalcode", function (postalcode, element) {
    return this.optional(element) || postalcode.match(/(^\d{5}(-\d{4})?$)|(^[ABCEGHJKLMNPRSTVXYabceghjklmnpstvxy]{1}\d{1}[A-Za-z]{1} ?\d{1}[A-Za-z]{1}\d{1})$/);
}, "Please specify a valid postal/zip code");

jQuery.validator.addMethod("keyword", function (valuestr, element) {
    return this.optional(element) || (/^[a-zA-Z\d-]+$/.test(valuestr));
}, "La llave solo puede contener letras, n&uacute;meros y el signo \"-\" ");

jQuery.validator.addMethod("lettersOnly", function(value, element) {
    return this.optional(element) || /^[a-z]+$/i.test(value);
}, "Por favor escriba solo letras");

jQuery.validator.addMethod("lettersAndNumbers", function(value, element) {
    return this.optional(element) || /^[a-z\d]+$/i.test(value);
}, "Por favor escriba Letras y números");

jQuery.validator.addMethod("time", function(value, element) {
    return this.optional(element) || /^([0-1][0-9]|[2][0-3]):([0-5][0-9])$/.test(value);
}, "Escriba la hora correctamente entre 00:00 y 23:59");

jQuery.validator.addMethod("numbersOnly", function(value, element) {
    return this.optional(element) || /^[0-9]+$/.test(value);
}, "Por favor escriba sólo números");
