jQuery.validator.addMethod("maxWords", function(value, element, params) { 
    return this.optional(element) || value.match(/bw+b/g).length < params; 
}, "Please enter {0} words or less."); 
 
jQuery.validator.addMethod("minWords", function(value, element, params) { 
    return this.optional(element) || value.match(/bw+b/g).length >= params; 
}, "Please enter at least {0} words."); 
 
jQuery.validator.addMethod("rangeWords", function(value, element, params) { 
    return this.optional(element) || value.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 this.optional(element) || /^[a-z-.,()'\"s]+$/i.test(value);
}, "Letters or punctuation only please");  

jQuery.validator.addMethod("alphanumeric", function(value, element) {
	return this.optional(element) || /^w+$/i.test(value);
}, "Letters, numbers, spaces or underscores only please");  

jQuery.validator.addMethod("lettersonly", function(value, element) {
	return this.optional(element) || /^[a-z]+$/i.test(value);
}, "Letters only please"); 

jQuery.validator.addMethod("nowhitespace", function(value, element) {
	return this.optional(element) || /^S+$/i.test(value);
}, "No white space please");

jQuery.validator.addMethod("ziprange", function(value, element) {
 return this.optional(element) || /^90[2-5]\d\{2}-\d{4}$/.test(value);
}, "Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx");

jQuery.validator.addMethod(
	"dateITA",
	function(value, element) {
		var check = false;
		var re = /^\d{1,2}\-\d{1,2}\-\d{4}$/
		if( re.test(value)){
			var adata = value.split('-');
			var gg = parseInt(adata[0],10);
			var mm = parseInt(adata[1],10);
			var aaaa = parseInt(adata[2],10);
			var xdata = new Date(aaaa,mm-1,gg);
			if ( ( xdata.getFullYear() == aaaa ) && ( xdata.getMonth () == mm - 1 ) && ( xdata.getDate() == gg ) )
				check = true;
			else
				check = false;
		} else
			check = false;
		return this.optional(element) || check;
	}, 
	"Please enter a correct date"
);

	jQuery.validator.addMethod(
	"birthDateMainTraveller",
	function(value, element) {
	 var check = false;
	 var re = /^\d{1,2}\-\d{1,2}\-\d{4}$/
	 if (re.test(value)) {
	  var adata = value.split('-');
	  var gg = parseInt(adata[0], 10);
	  var mm = parseInt(adata[1], 10);
	  var aaaa = parseInt(adata[2], 10);
	  var xdata = new Date(aaaa, mm - 1, gg);
	  if ((xdata.getFullYear() == aaaa) && (xdata.getMonth() == mm - 1) && (xdata.getDate() == gg)) {
	   yearNow = (new Date()).getFullYear();
	   if (((yearNow - aaaa) >= 17) && ((yearNow - aaaa) < 150)) {
	    check = true;
	   } else {
	    check = false;
	   }
	  } else {
	   check = false;
	  }
	 } else {
	  check = false;
	 }
	 return this.optional(element) || check;
	},
	"Please enter a correct date"
);

jQuery.validator.addMethod(
	"example",
	function(value, element) {
	 return element.defaultValue != value && value.length>1;
	}, 
	"Please enter text"
);

// dutch phone
jQuery.validator.addMethod(
 "phone", 
 function(phone_number, element) {
  var check = false;
  var phone = phone_number.replace("-", "");
  phone = phone.replace(" ", "");
  
  if(phone.length == 10)
   check = phone.match(/((^06((\s{0,1})|(\-{0,1}))[0-9]{8}$)|(^[0-9]{3,4}(\s{0,1}|\-{0,1})[0-9]{6,7}$)|(^\+{1}[0-9]{2}(\s{0,1}|\-{0,1})[0-9]{2,3}(\s{0,1}|\-{0,1})[0-9]{6,7}$))/);
   
	 return this.optional(element) || check;
 }, 
 "Please specify a valid phone number"
);

// dutch phone
jQuery.validator.addMethod(
 "phonecountry", 
 function(phone_number, element) {
  if ($('#country').val()!='Nederland')
  {
  return true;
  }
  
  var check = false;  
  var phone = phone_number.replace("-", "");
  phone = phone.replace(" ", "");
  
  if(phone.length == 10)
   check = phone.match(/((^06((\s{0,1})|(\-{0,1}))[0-9]{8}$)|(^[0-9]{3,4}(\s{0,1}|\-{0,1})[0-9]{6,7}$)|(^\+{1}[0-9]{2}(\s{0,1}|\-{0,1})[0-9]{2,3}(\s{0,1}|\-{0,1})[0-9]{6,7}$))/);
   
	 return this.optional(element) || check;
 }, 
 "Please specify a valid phone number"
);

// dutch zipcode
jQuery.validator.addMethod(
 "zipcodecountry", 
 function(tcZip, element) {
  if ($('#country').val()!='Nederland')
  {
  return true;
  }
  
  var check = false;  
  tcZip = tcZip.replace(" ", "").toUpperCase();
  
  if(tcZip.length == 6)
   check = tcZip.match(/((^[0-9]{4}[A-Z]{2}$))/);
   
	 return this.optional(element) || check;
 }, 
 "Please specify a valid zipcode "
);
