jQuery.validator.addMethod('notEqualTo', function(value, element, param) { return value != jQuery(param).val(); }, '<span></span>Must not be equal to {0}.' );
jQuery.validator.addMethod('notEqualToValue', function(value, element, param) { return value != param; }, '<span></span>Must not be equal to {0}.' );
jQuery.validator.addMethod('greaterThan', function(value, element, param) { return ( IsNaN( value ) && IsNaN( jQuery(param).val() ) ) || ( value > jQuery(param).val() ); }, '<span></span>Must be greater than {0}.' );
jQuery.validator.addMethod('lesserThan', function(value, element, param) { return ( IsNaN( value ) && IsNaN( jQuery(param).val() ) ) || ( value < jQuery(param).val() ); }, '<span></span>Must be lesser than {0}.' );
jQuery.validator.addMethod('numberNative', function(value, element, param) { return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\,\d{3})+)(?:\.\d+)?$/.test(value); }, '<span></span>Not a valid number.' );
jQuery.validator.addMethod('regExp', function(value, element, param) { return this.optional(element) || new RegExp(param).test(value); }, '<span></span>Not a valid format.');
jQuery.validator.addMethod('USPhone', function(value, element, param) { return this.optional(element) || /^[2-9]\d{2}-[2-9]\d{2}-\d{4}$/.test(value); }, '<span></span>Please use this format: xxx-xxx-xxxx.' );
jQuery.validator.addMethod('validemail', function(value, element, param) { return this.optional(element) || /^[\w!#\$%&'\*\+\x2F=\?\^`\{\|\}~-]+(\.[\w!#\$%&'\*\+\x2F=\?\^`\{\|\}~-]+)*@((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|([a-zA-Z]+[\w-]*\.)+[a-zA-Z]{2,4})$/.test(value);}, '<span></span>Please enter a valid email address.');
jQuery.validator.addMethod('validwebaddress', function(value, element, param) { return this.optional(element) || /^(https:\/\/)?(http:\/\/)?(www\.)?[a-zA-Z\\\.\?\=\_\-\#\&0-9]+\.[a-zA-Z][a-zA-Z][a-zA-Z]?(\/[a-zA-Z\/\.\?\=\_\-\#\&0-9]+)?$/.test(value); }, '<span></span>Please enter a valid web address.');
jQuery.validator.addMethod('simpleDate', function(value, element, param) {
    var result = this.optional(element) || /^(0?[1-9]|1[012]|[1-9])\/(0?[1-9]|[12][0-9]|3[01]|[1-9])\/(\d{4}|\d{2})$/.test(value);
    var month, day, year;
    if (result) {
        // now in the format mm/dd/yyyy
        month = value.substr(0, value.indexOf("/"));
        day = value.substr(value.indexOf("/") + 1, value.lastIndexOf("/") - value.indexOf("/") - 1);
        year = value.substr(value.lastIndexOf("/") + 1);
        if (day == 31 && (month == 4 || month == 6 || month == 9 || month == 11))
            return false;
        if (day >= 30 && month == 2)
            return false;
        if (month == 2 && day == 29 && !(year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)))
            return false;
        return true;
    }
    else {
        return false;
        day
    }
}, "Please check to make sure you've entered a valid date.");

jQuery.validator.addMethod('dateGreaterThan', function(value, element, param) {
    var dateValue = Date.parse(value);
    var dateParam = Date.parse(param);
    if (dateValue <= dateParam) {
        return false;
    }
    else {
        return true;
    }
}, 'Must be greater than {0}.');