/* A modifier en fonction du dev */
var idDemandeInfo = "0";
var idPublication = "1";


/* Affiche les bons champs en fonction du thème sélectionné */
function selectTheme() {
	if ($("#THEME").val() == idPublication) {
		$("#blockMessage").hide();
		$("#blockCheckbox").show();
	}
	else {
		$("#blockMessage").show();
		$("#blockCheckbox").hide();
	}
		
		fixIE();
}

// Fix IE6 (les arrondis ne suivent pas la hauteur du bloc)
function fixIE() {
	if($.browser.msie && parseInt(jQuery.browser.version) <= 6){
		$("#fixIE").removeClass("block3");
		$("#fixIE").addClass("block3");
	}
}

/* initialisation */
$(document).ready(function(){
	
	/* Affiche les bons champs en fonction du thème sélectionné */
	$("#THEME").change(function () {
		selectTheme();
	});
	
	/* initialisation des champs à afficher */
	selectTheme();
	
	/* Initialisation de la validation du formulaire */
	if($("#formDemandeInfo").length) 
	{
		$.validator.methods.telephone_fr = function(value, element, param){ 
			return /^(()|(0[0-9]{9}))$/.test(value); 
		}; 
		
		$.validator.methods.code_postal = function(value, element, param){ 
			return /^(()|([0-9]{5}))$/.test(value); 
		}; 
		
		/**
			Si le theme choisi est la demande d'info, alors le message est obligatoire,
		*/
		$.validator.methods.message = function(value, element, param){
				return ($("#THEME").val() != idDemandeInfo) || ($("#MESSAGE").val().replace(" ", "") != "");
		}; 
		
		
		/**
			Si  le theme choisi est la commande de publication alors au moins une doit être sélectionnée.
		*/
		$.validator.methods.valid_publications = function(value, element, param){
				return ($("#THEME").val() != idPublication) || $("#GUIDEENTREPREUNEUR").is(':checked') || $("#GUIDEPRATIQUE").is(':checked') || $("#GUIDEINTERVENANT").is(':checked') || $("#MEMENTOSURETE").is(':checked'); 

		}; 
	
		$("#formDemandeInfo").validate({
			errorElement: "span",
			
			errorClass: "inlineErrorMessage",
			
			focusCleanup: false,
			
			groups: {
				publications: "GUIDEENTREPREUNEUR GUIDEPRATIQUE GUIDEINTERVENANT MEMENTOSURETE"
			},
			
			errorPlacement: function(error, element) {
				if (element.attr("name") == "CIVILITE")
					error.insertAfter(element.parent().find("label[for=CIV_M]"));
				else if (element.attr("name") == "GUIDEENTREPREUNEUR")
					error.insertBefore(element);
				else if (element.attr("name") == "CHARTE")
					error.insertAfter(element.parent().find("label[for=CHARTE]"));
				else
					error.insertAfter(element);
			},
			
			rules:{ 
				CIVILITE:"required",
				NOM:"required",
				PRENOM:"required",
				COURRIEL: {
					required: true,
					email: true
				},
				TELEPHONE: {
					telephone_fr: true
				},
				FAX: {
					telephone_fr: true
				},
				CODEPOSTAL: {
					code_postal: true
				},
				MESSAGE: {
					message: true
				},
				GUIDEENTREPREUNEUR: {
					valid_publications: true
				},
				GUIDEPRATIQUE: {
					valid_publications: true
				},
				GUIDEINTERVENANT: {
					valid_publications: true
				},
				MEMENTOSURETE: {
					valid_publications: true
				},
				SOCIETE:"required"
 
			}, 
			
			messages:{
				CIVILITE: "La civilité est requise",
				NOM: "Le nom est requis",
				PRENOM: "Le prénom est requis",
				COURRIEL: "L'adresse courriel est requise",
				TELEPHONE: "Le téléphone doit commencer par 0 et avoir 10 chiffres",
				FAX: "Le fax doit commencer par 0 et avoir 10 chiffres",
				SOCIETE: "Le nom de la société est requis",
				MESSAGE: "Le message est requis",
				GUIDEENTREPREUNEUR: "Veuillez sélectionner au moins une publication<br /><br />",
				GUIDEPRATIQUE: "Veuillez sélectionner au moins une publication<br /><br />",
				GUIDEINTERVENANT: "Veuillez sélectionner au moins une publication<br /><br />",
				MEMENTOSURETE: "Veuillez sélectionner au moins une publication<br /><br />",
				CODEPOSTAL: "Le code postal est composé de 5 chiffres"
			},
			
			highlight: function(element, errorClass) {
				if ($(element).attr("name") == "CIVILITE") {
					$("#blockCivilite label").each(function(i, elem) {$(elem).addClass("highlight");});
				}
				else if ($(element).attr("name") == "GUIDEENTREPREUNEUR" || $(element).attr("name") == "GUIDEPRATIQUE" || $(element).attr("name") == "GUIDEINTERVENANT" ||  $(element).attr("name") == "MEMENTOSURETE") {
					$(".checkboxPublication label").each(function(i, elem) {$(elem).addClass("highlight");});
					$("#titleListPublication").addClass("highlight");
				}
				else {
					$(element).addClass(errorClass);
					$(element.form).find("label[for=" + element.id + "]").addClass("highlight");
				}
			},
			
			unhighlight: function(element, errorClass) {
				if ($(element).attr("name") == "CIVILITE") {
					$("#blockCivilite label").each(function(i, elem) {$(elem).removeClass("highlight");});
				}
				else if ($(element).attr("name") == "GUIDEENTREPREUNEUR" || $(element).attr("name") == "GUIDEPRATIQUE" || $(element).attr("name") == "GUIDEINTERVENANT" ||  $(element).attr("name") == "MEMENTOSURETE") {
					$(".checkboxPublication label").each(function(i, elem) {$(elem).removeClass("highlight");});
					$("#titleListPublication").removeClass("highlight");
				}
				else {
					$(element).removeClass(errorClass);
					$(element.form).find("label[for=" + element.id + "]").removeClass("highlight");
				}
			},
			
			showErrors: function(errorMap, errorList) {

				this.defaultShowErrors();
				
				fixIE();
			},
			
			invalidHandler: function(form, validator) {
				if(validator.numberOfInvalids() > 1)
					$("#summaryErrors").html(validator.numberOfInvalids() + " champs ont été oubliés ou restent incomplets.<br />Les champs concernés ont été mis en relief. Merci de bien vouloir les vérifier et les compléter. ");
				else  if(validator.numberOfInvalids() == 1)
					$("#summaryErrors").html("Un champs a été oublié ou reste incomplet.<br />Le champ concerné a été mis en relief. Merci de bien vouloir le vérifier et le compléter. ");
				else 
					$("#summaryErrors").html("");
				
				fixIE();
			}


		}); 
	}
	
});


