jQuery.validator.addMethod("usCurrency", function(value, element) { 
  //return this.optional(element) || /^-?[\$]?[0-9\.\,]+$/.test(value); 
  return this.optional(element) || /^-?\$?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d{2})?$/.test(value); 
  
}, "Please specify a valid dollar amount");

jQuery.validator.addMethod("percentage", function(value, element) { 
  //return this.optional(element) || /^-?[\$]?[0-9\.\,]+$/.test(value); 
  return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?%?$/.test(value); 
  
}, "Please specify a valid percentage");

jQuery.validator.addMethod("wholeNumber", function(value, element) { 
  return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?$/.test(value); 
}, "Please specify a whole number");

jQuery.validator.addMethod("minNumber", 
		function(value, element, param) { 
			return this.optional(element) || parseAllFloatFormats(value) >= param;
		}, 
		$.format("Please enter a value greater than or equal to {0}.")
	);
	
	jQuery.validator.addMethod("minDate", 
		function(value, element, param) { 
			return this.optional(element) || new Date(value) >= param;
		}, 
		$.format("Please enter a value greater than or equal to {0}.")
	);
	
	jQuery.validator.addMethod("maxDate", 
		function(value, element, param) {
			return this.optional(element) || new Date(value) <= param;
		}, 
		$.format("Please enter a value less than or equal to {0}.")
	);

jQuery.validator.addMethod("gtNumber", 
		function(value, element, param) { 
			return this.optional(element) || parseAllFloatFormats(value) > param;
		}, 
		$.format("Please enter a value greater than {0}.")
	);
	
jQuery.validator.addMethod("ltNumber", 
		function(value, element, param) { 
			return this.optional(element) || parseAllFloatFormats(value) < param;
		}, 
		$.format("Please enter a value less than {0}.")
	);
	
jQuery.validator.addMethod("maxNumber", 
		function(value, element, param) {
			return this.optional(element) || parseAllFloatFormats(value) <= param;
		}, 
		$.format("Please enter a value less than or equal to {0}.")
	);

jQuery.validator.addMethod("ssn", 
		function(value, element, param) {
			return this.optional(element) || /^\d{3}-?\d{2}-?\d{4}$/.test(value);
		}, 
		$.format("Please enter a valid ssn.")
	);
	
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-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
}, "Please specify a valid phone number");

// Does not work unless embedded!? !@#$%^&* AAAAAARRRRRRRRRRRRRGGGGGGGGGGGGGHHHHHHHHHHHHHH!
//jQuery.validator.addMethod("greatherThanZero", 
//		function(value, element, param) {
//			return (stringToNumber(value) > 0);
//		}, 
//		$.format("Please enter a value greater than zero.")
//	);
