jQuery.validator.addMethod("validdateNL", function(value, element) {
	return this.optional(element) || checkdate(value);
}, jQuery.validator.messages.validdateNL);

function checkdate(input){
	var validformat=/^\d+\/\d+\/\d+$/;
	var returnval=false;
	if (validformat.test(input)) {
		var monthfield=input.split("/")[0]-1;
		var dayfield=input.split("/")[1];
		var yearfield=input.split("/")[2];
		var dayobj = new Date(yearfield, monthfield, dayfield);
		if ((dayobj.getMonth()==monthfield) && (dayobj.getDate()==dayfield) && (dayobj.getFullYear()==yearfield)) {
			returnval=true;
		}
	}
	return returnval;
}

jQuery.validator.addMethod("passwordstrong", function( value, element ) {
	return this.optional(element) || checkStrongPassword(value);
 }, jQuery.validator.messages.passwordstrong);

function checkStrongPassword(input) {
	var validFormat = /^[0-9a-zA-Z]{6,20}$/;
	var returnval = false;
	if (validFormat.test(input)) {
		returnval=true;
	}
	return returnval;
}

jQuery.validator.addMethod("zipcodeNL", function( value, element ) {
	return this.optional(element) || checkZipcodeNL(value);
 }, jQuery.validator.messages.zipcodeNL);

function checkZipcodeNL(input) {
	var validformat= /^[1-9]{1}[0-9]{3} ?[A-Za-z]{2}$/; 
	var returnval=false;
	if (validformat.test(input)) {
		returnval=true;
	}
	return returnval;
}

jQuery.validator.addMethod("housenumber", function( value, element ) {
	return this.optional(element) || checkHouseNumber(value);
 }, jQuery.validator.messages.housenumber);

function checkHouseNumber(input) {
	var validformat= /^[1-9]{1}[0-9]*[A-Za-z]*/; 
	var returnval=false;
	if (validformat.test(input)) {
		returnval=true;
	}
	return returnval;
}

jQuery.validator.addMethod("dutchPhoneNumber", function( value, element ) {
	return this.optional(element) || checkPhoneNumber(value);
 }, jQuery.validator.messages.phonenumber);

/**
 * http://regexlib.com/Search.aspx?k=phonenumber
 */
function checkPhoneNumber(input) {
	var validformat= /^((((0031)|(\+31))(\-)?6(\-)?[0-9]{8})|(06(\-)?[0-9]{8})|(((0031)|(\+31))(\-)?[1-9]{1}(([0-9](\-)?[0-9]{7})|([0-9]{2}(\-)?[0-9]{6})))|([0]{1}[1-9]{1}(([0-9](\-)?[0-9]{7})|([0-9]{2}(\-)?[0-9]{6}))))$/; 
	var returnval=false;
	if (validformat.test(input)) {
		returnval=true;
	}
	return returnval;
}

jQuery.validator.addMethod("novalidation", function(value, element) {
	return true;
}, jQuery.validator.messages.novalidation);

jQuery.validator.addMethod("digitsgtzero", function( value, element ) {
	return this.optional(element) || (value > 0);
}, jQuery.validator.messages.digitsgtzero);

jQuery.validator.addMethod("requiredcomment", function(value, element) {
	var inputElement = jQuery(element).parent().prev().find("input")[0];
	return inputElement.checked == true ? this.getLength(value, element) > 0 : true;
}, jQuery.validator.messages.requiredcomment);

jQuery.validator.addClassRules({
	maxlength100: {
		maxlength: 100
	},
	maxlength500: {
		maxlength: 500
	}
});


