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: "Votre nom est requis.",
			prenom: "Votre prénom est requis.",
			sujet: "Le sujet est requis.",
			telephone: {
				required: "Votre numéro de téléphone est requis.",
				number: "Votre numéro de téléphone doit être composé uniquement de chiffres."
			},
			postal: {
				required: "Votre code postal est requis.",
				zip: "Votre code postal n'est pas valide."
			},
			courriel: {
				required: "Votre adresse courriel est requise.",
				email: "Votre adresse courriel n'est pas valide."
			},
			captcha: {
				required: "Votre r&eacute;sultat est requis.",
				captcha: "Votre r&eacute;sultat est incorrect."
			}
			
		}
		
	});

});
