jQuery.validator.addMethod('maxWords', function(value, element, params) { 
    return $(element).val().match(/bw+b/g).length < params; 
}, 'Please enter {0} words or less.'); 
 
jQuery.validator.addMethod('minWords', function(value, element, params) { 
    return $(element).val().match(/bw+b/g).length >= params; 
}, "Please enter at least {0} words."); 
 
jQuery.validator.addMethod('rangeWords', function(value, element, params) { 
    return ($(element).val().match(/bw+b/g).length >= params[0] && $(element).val().match(/bw+b/g).length < params[1]); 
}, 'Please enter between {0} and {1} words.');


jQuery.validator.addMethod("letterswithbasicpunc", function(value, element) {
	return /^[a-z-.,()'\"s]+$/i.test(value);
}, "Letters or punctuation only please");  

jQuery.validator.addMethod("alphanumeric", function(value, element) {
	return /^w+$/i.test(value);
}, "Letters, numbers, spaces or underscores only please");  

jQuery.validator.addMethod("lettersonly", function(value, element) {
	return /^[a-z]+$/i.test(value);
}, "Letters only please"); 

jQuery.validator.addMethod("nowhitespace", function(value, element) {
	return /^S+$/i.test(value);
}, "No white space please"); 

jQuery.validator.addMethod("anything", function(value, element) {
	return /^.+$/i.test(value);
}, "May contain any characters."); 

jQuery.validator.addMethod("integer", function(value, element) {
	return /^d+$/i.test(value);
}, "Numbers only please");


jQuery.validator.addMethod("usdate", function(value, element) {
	return /^((((0[13578])|([13578])|(1[02]))[\/](([1-9])|([0-2][0-9])|(3[01])))|(((0[469])|([469])|(11))[\/](([1-9])|([0-2][0-9])|(30)))|((2|02)[\/](([1-9])|([0-2][0-9]))))[\/]\d{4}$|^\d{4}$/i.test(value);
}, "Format date as mm/dd/yyyy");

jQuery.validator.addMethod("time", function(value, element) {
	return /^(([0][0-9]|[1][0-2])|[0-9]):([0-5][0-9])( *)((AM|PM))$/i.test(value);
}, "Format time as 6:00 pm");
	//^([1-9]|1[0-2]|0[1-9]){1}(:[0-5][0-9][aApP][mM]){1}$
	//^((0?[1-9]|1[012])(\s*:\s*([0-5]\d))?(\s*:\s*([0-5]\d))?(\s*([AaPp])[Mm]?)$|(2[0-3]|[1]\d|0?\d)(\s*:\s*([0-5]\d))(\s*:\s*([0-5]\d))?)$
	//^\s*(?i:)((1[0-2])|(0[1-9])|([123456789])):(([0-5][0-9])|([123456789]))\s(am|pm)\s*$
	//^([0-1]?\d|2[0-3])([:]?[0-5]\d)?([:]?|[0-5]\d)?\s?(A|AM|P|p|a|PM|am|pm|pM|aM|Am|Pm)?$


jQuery.validator.addMethod("phone", function(value, element) {
	//return /^d{3}-d{3}-d{4}$/.test(value);
	return /^[\(]?(\d{0,3})[\)]?[\s]?[\-]?(\d{3})[\s]?[\-]?(\d{4})[\s]?[x]?(\d*)$/.test(value);
}, "Must be xxx-xxx-xxxx");

jQuery.validator.addMethod("zipcode", function(value, element) {
	return /^(\d{5}-\d{4})|(\d{5})$/.test(value);
}, "Must be xxxxx or xxxxx-xxxx");

jQuery.validator.addMethod("ziprange", function(value, element) {
	return !jQuery.validator.methods.required(value, element) || /^90[2-5]\d\{2}-\d{4}$/.test(value);
}, "Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx");
