var genericValidationOptions = {
			
	//the validation rules for the various fields
	rules: {
		geslacht_field: {
			required:true
		},
		achternaam_field: {
			required:true
		},
		voornaam_field: {
			required:true
		},
		email_field: {
			required:true,
			email:true
		},
		bericht_field: {
			required: true
		},
		telefoonnummer_field: {
			required: true,
			number:true
		}
	},
	
	//the messages shown on a validation error for various fields
	messages: {
		geslacht_field: {
			required:	"Selecteer uw geslacht"
		},
		achternaam_field: {
			required:	"Vul uw achternaam in"
		},
		voornaam_field: {
			required:	"Vul uw voornaam in"
		},
		email_field: {
			required:	"Vul uw e-mailadres in",
			email:		"Vul een geldig emailadres in"
		},
		bericht_field: {
			required:   "Vul uw reactie in"
		},
		telefoonnummer_field: {
			required:	"Vul uw telefoonnummer in",
			number:	"Vul een geldig telefoonnummer in"
		}
	},
	
	//the class for valid and invalid messages
	success: "valid",
	errorClass: "invalid",
	
	
	//the placement of the errormessages
	errorPlacement: function(error, element) {
		if (element.context.name == ("geslacht_field")) {
			error.insertBefore(element.next().next());
		} else {
			error.insertBefore(element.next());
		} 	
	}			
};

$().ready(function() {
	// validate the comment form when it is submitted
	$("#genericForm").validate(genericValidationOptions);
		
	//register the custom validator to the validator object
	$.validator.addMethod("postalCode", postalCodeValidator, "");
	$.validator.addMethod("birthDateNL", birthdateValidator, "");
	$.validator.addMethod("selectCheck", selectValidator, "");
	$.validator.addMethod("selectNotFirst", function (value, element) { 
												var options = $("option:selected", element).val(); 
												var first   =  $(element).children(":first").val();
												return ( options != first);    
											} ,""
	); 
});
	
	
	//custom validation methods
	function postalCodeValidator(value, element){
		return /^\d{4}\s?[A-Z,a-z]{2}$/.test(value);
	}
	
	function birthdateValidator(value, element){
		if(value == '') {
			return true;
		} else {
			return /^(0[1-9]|[1-2][0-9]|3[01])-(0[1-9]|1[0-2])-(19|20)\d\d$/.test(value);
		}
	}
	
	function selectValidator(value, element) {
		if (value == '-1') {
			return false;
		}
		return true;
	}
	
	function selectValidator(value, element, params) {
		if (params) {
			if (value == '-1') {
				return false;
			}
		}
		return true;
	}

