jQuery().ready(function() {

	jQuery.validator.addMethod("zip", function(value, element) {
                        return this.optional(element) || value.match(/^((\d{5}-\d{4})|(\d{5})|([a-z]\d[a-z]\s?\d[a-z]\d))$/i);
                }, "US or Canadian postal code only") 
	
	jQuery.validator.addMethod("captcha", function(value, element) {
                    return this.optional(element) || value.match(/^[5]{1,1}$/);
     }, "resultat incorrect") 
	
	// Téléphone
	$.validator.addMethod("phoneNumberRequired", $.validator.methods.required, "Le numéro de téléphone n'est pas valide. Le format accepté est 000 000 0000.");
	$.validator.addMethod("phoneNumberMinlength", $.validator.methods.minlength, "Le numéro de téléphone n'est pas valide. Le format accepté est 000 000 0000.");
	$.validator.addMethod("phoneNumberMaxlength", $.validator.methods.maxlength, "Le numéro de téléphone n'est pas valide. Le format accepté est 000 000 0000.");
	$.validator.addMethod("phoneNumberDigits", $.validator.methods.digits, "Le numéro de téléphone n'est pas valide. Le format accepté est 000 000 0000.");
	
	$.validator.addClassRules({
		requiredPhoneNumber1: {phoneNumberRequired:true, phoneNumberDigits:true, phoneNumberMinlength:3, phoneNumberMaxlength:3},
		requiredPhoneNumber2: {phoneNumberRequired:true, phoneNumberDigits:true, phoneNumberMinlength:3, phoneNumberMaxlength:3},
		requiredPhoneNumber3: {phoneNumberRequired:true, phoneNumberDigits:true, phoneNumberMinlength:4, phoneNumberMaxlength:4}
	});
	
	
	// Configuration de la validation
	$("#formContact").validate({
		
		showErrors: function(errorMap, errorList) {
			this.defaultShowErrors();
		},
		
		// Conteneur de la liste d'erreurs
		errorLabelContainer: "#errorsBox ul",
		wrapper: "li", 
		
		highlight: function(element, errorClass) {
			if ($(element).attr("id") == "noTel1" || $(element).attr("id") == "noTel2" || $(element).attr("id") == "noTel3") {
				$("label[for=noTel]").addClass(errorClass);
			} else {
				$("label[for=" + element.name + "]").addClass(errorClass);
			}
		},
		
		unhighlight: function(element, errorClass) {
			if ($(element).attr("id") == "noTel1" || $(element).attr("id") == "noTel2" || $(element).attr("id") == "noTel3") {
				$("label[for=noTel]").removeClass(errorClass);
			} else {
				$("label[for=" + element.id + "]").removeClass(errorClass);
			}
		},
		
		groups: {
			noTel: "noTel1 noTel2 noTel3",
			noFax: "noFax1 noFax2 noFax3"
		},
		
		rules: {	
			nom: "required",
			prenom: "required",
			sujet: "required",
			captcha: {
				required: true,
				captcha: true
			},
			telephone: {
				required: true,
				number: true
			},
			postal: {
				required: true,
				zip: true
			},
			courriel: {
				required: true,
				email: true
			}
			
		},
		
		messages: {
			nom: "Your name is required.",
			prenom: "Your first name is required.",
			sujet: "The subject is required.",
			telephone: {
				required: "Your phone number is required.",
				number: "Your phone number mustbe numbers only."
			},
			postal: {
				required: "Your postal code is required.",
				zip: "Your postal code is not valid."
			},
			courriel: {
				required: "Your email address is required.",
				email: "Your email address is not valid."
			},
			captcha: {
				required: "The result is required.",
				captcha: "The result is incorrect."
			}
			
		}
		
	});

});
