var bodyID;
var tabNomsChamps = new Array ("search", "form_nl_email", "form_nl_02_email", "date_naissance_jour", "date_naissance_mois", "date_naissance_annee", "form_pro_sante_login", "form_pro_sante_pass");
var tabValeursDefaut = new Array ("Rechercher", "Votre e-mail", "Votre e-mail", "jj", "mm", "aaaa", "Login", "Mot de passe");
var selectCatRef = "";
var tabFormChampsNames = new Array ("search", "form_nl_02_email", "form_nl_email", "form_pro_sante_login", "form_pro_sante_pass", "form_recettes_search", "contacts_objet", "civilite", "nom", "prenom", "adresse", "codePostal", "ville", "pays", "tel", "email", "objet", "message", "select_produit", "reference", "dluo_mois", "dluo_annee", "select_produit_cat", "select_produit_choix", "faq_consulte", "profession", "certifie", "password_old", "password_new", "password_new2", "date_naissance_jour", "date_naissance_mois", "date_naissance_annee", "nb_enfants", "huile_utilisee", "but_visite");
var tabFormChampsLabels = new Array ("mot-clé", "e-mail", "e-mail", "login", "mot de passe", "mot-clé", "objet du message", "civilité", "nom", "prénom", "adresse", "code postal", "ville", "pays", "téléphone", "e-mail", "objet du message", "contenu du message", "produit à séledctionner", "référence produit", "mois de DLUO", "année de DLUO", "produit à sélectionner", "produit sélectionné", "FAQ consultée ?", "profession", "certification sur l'honneur", "ancien mot de passe", "nouveau mot de passe", "confirmation du nouveau mot de passe", "naissance, jour", "naissance, mois", "naissance, année", "nombre d'enfants", "huile(s) Lesieur utilisée(s)", "but de votre visite");
var tabFormChampsVidesOk = new Array ();
var tabFormChampsVidesOkContact = new Array ("adresse", "codePostal", "ville", "pays", "tel");
var tabFormChampsVidesOkContactInfo = new Array ("adresse", "codePostal", "ville", "pays", "tel", "select_produit_cat", "select_produit_choix");
var tabFormChampsVidesOkInscripPro = new Array ("adresse", "codePostal", "ville", "pays", "tel", "profession", "profession_autre", "password_old", "password_new", "password_new2");
var tabFormChampsVidesOkInscripNL = new Array ("date_naissance_jour", "date_naissance_mois", "date_naissance_annee", "departement", "situation_fami", "nb_enfants", "select_produit_cat", "select_produit_choix", "but_visite_autre_txt");
var tabFormChampsVidesOkEspaceNutrition = new Array ("pro_newsletter_01");
var tabFormEmail = new Array ("form_nl_email", "form_nl_02_email", "email");
var tabFormInt = new Array ("date_naissance_jour", "date_naissance_mois", "date_naissance_annee", "nb_enfants");

// Supprime les espaces à gauche
function leftTrim(sString)
{
	while (sString.substring(0,1) == " ")
	{
		sString = sString.substring(1, sString.length);
	}
	return (sString);
}
// Supprime les espaces à droite
function rightTrim(sString)
{
	while (sString.substring(sString.length-1, sString.length) == " ")
	{
		sString = sString.substring(0,sString.length-1);
	}
	return (sString);
}
// Supprime les espaces à droite et à gauche
function trim (sString)
{
	return (leftTrim (rightTrim (sString)));
}

// Sert à gérer l'apparition des sous-menus sur le menu horizontal
function prepareSubmenus ()
{
	var menu = document.getElementById ("nav1");
	// Sur tous les li de premier niveau
	if (null==menu) return;
	var tab_li = menu.getElementsByTagName ("li");
	if (null==tab_li) return;
	for (var i = 0; i < tab_li.length; i++)
	{
		var this_li = tab_li [i];
		this_li.onmouseover = function ()
		{
			var className = new String (this.className);
			if (className.indexOf ("hovered") == -1)
			{
				this.className = className.concat (" hovered");
			}
		}
		this_li.onmouseout = function () {
			var className = new String (this.className);
			className = className.replace (" hovered", "");
			className = (className == "hovered" ? "" : className);
			this.className = className;
		}
	}
	// Sur les sous-menus
	var tab_divs1 = menu.getElementsByTagName ("div");
	if (null==tab_divs1) return;
	for (var i = 0; i < tab_divs1.length; i++)
	{
		var this_div = tab_divs1 [i];
		if (this_div.className == "submenu")
		{
			this_div.parentNode.onmouseover = function () {
				var className = new String (this.className);
				if (className.indexOf ("hovered") == -1)
				{
					this.className = className.concat (" hovered");
				}
			}
			this_div.parentNode.onmouseout = function () {
				var className = new String (this.className);
				className = className.replace (" hovered", "");
				className = (className == "hovered" ? "" : className);
				this.className = className;
			}
		}
	}
}
// Retrouve l'index d'une valeur dans un tableau
function arrayIndexOf (tableau, valeur)
{
	var resultat = -1;
	for (var i = 0; i < tableau.length; i++)
	{
		if (tableau [i] == valeur)
		{
			resultat = i;
			break;
		}
	}
	
	return (resultat);
}

// Préparation des hover de menus sur la home
function prepareHoverHome ()
{
	var menu = document.getElementById ("tout_sur_lhuile");
	var tab_liens = menu.getElementsByTagName ("a");
	for (var i = 0; i < tab_liens.length; i++)
	{
		var this_lien = tab_liens [i];
		this_lien.onmouseover = function () {
			var className = new String (this.className);
			if (className.indexOf ("hovered") == -1)
			{
				this.className = className.concat (" hovered");
			}
			var tab_imgs = this.getElementsByTagName ("img");
			for (var i = 0; i < tab_imgs.length; i++)
			{
				var this_img = tab_imgs [i];
				if (this_img.className == "decale")
				{
					//this_img.style.display = "block";
				}
			}
		}
		this_lien.onmouseout = function () {
			var className = new String (this.className);
			className = className.replace (" hovered", "");
			className = (className == "hovered" ? "" : className);
			this.className = className;
			var tab_imgs = this.getElementsByTagName ("img");
			for (var i = 0; i < tab_imgs.length; i++)
			{
				var this_img = tab_imgs [i];
				if (this_img.className == "decale")
				{
					//this_img.style.display = "none";
				}
			}
		}
	}

	var menu = document.getElementById ("atelier_fait_main");
	var tab_liens = menu.getElementsByTagName ("a");
	for (var i = 0; i < tab_liens.length; i++)
	{
		var this_lien = tab_liens [i];
		this_lien.onmouseover = function () {
			var className = new String (this.className);
			if (className.indexOf ("hovered") == -1)
			{
				this.className = className.concat (" hovered");
			}
			var tab_imgs = this.getElementsByTagName ("img");
			for (var i = 0; i < tab_imgs.length; i++)
			{
				var this_img = tab_imgs [i];
				if (this_img.className == "decale")
				{
					//this_img.style.display = "block";
				}
			}
		}
		this_lien.onmouseout = function () {
			var className = new String (this.className);
			className = className.replace (" hovered", "");
			className = (className == "hovered" ? "" : className);
			this.className = className;
			var tab_imgs = this.getElementsByTagName ("img");
			for (var i = 0; i < tab_imgs.length; i++)
			{
				var this_img = tab_imgs [i];
				if (this_img.className == "decale")
				{
					//this_img.style.display = "none";
				}
			}
		}
	}
	
}

// Vidage de champ de formulaire au focus
function formVide (champ)
{
	var valeurChamp = new String (champ.value);
	valeurChamp = trim (valeurChamp);
	var nomChamp = champ.id;
	var indexChamp = arrayIndexOf (tabNomsChamps, nomChamp);
	if (valeurChamp == tabValeursDefaut [indexChamp])
	{
		valeurChamp = "";
	}
	champ.value = valeurChamp;
}
// Remplissage de champ de formulaire au blur
function formFill (champ)
{
	var valeurChamp = new String (champ.value);
	valeurChamp = trim (valeurChamp);
	var nomChamp = champ.id;
	var indexChamp = arrayIndexOf (tabNomsChamps, nomChamp);
	if (valeurChamp == "")
	{
		valeurChamp = tabValeursDefaut [indexChamp];
	}
	champ.value = valeurChamp;
}
// Préparation des formulaires avec champ auto-vidant / auto-remplissant
function prepareFormulaires ()
{
	// Filtrage automatique du submit
	var tabForms = document.getElementsByTagName ("form");
	for (var i = 0; i < tabForms.length; i++)
	{
		var thisForm = tabForms [i];
		thisForm.onsubmit = function ()
		{
			return (formVerif (this));
		}
	}
	// Préparation des formulaires avec champ auto-vidant / auto-remplissant
	for (var i = 0; i < tabNomsChamps.length; i++)
	{
		var nomChamp = tabNomsChamps [i];
		var champ = document.getElementById (nomChamp);
		if (champ)
		{
			var valeurDefaut = tabValeursDefaut [i].value;
			champ.onfocus = function ()
			{
				formVide (this);
			}
			champ.onblur = function ()
			{
				formFill (this);
			}
		}
	}
}
// Détermine si une valeur est sélectionnée dans une liste
function isSelected (leSelect, laValeur)
{
	var resultat = false;
	for (var i = 0; i < leSelect.length; i++)
	{
		var thisOption = leSelect.options [i];
		if (thisOption.value == laValeur && thisOption.selected)
		{
			resultat = true;
			break;
		}
	}
	return (resultat);
}
// Détermine si une valeur appartient à une liste
function isInSelect (leSelect, laValeur)
{
	var resultat = false;
	for (var i = 0; i < leSelect.length; i++)
	{
		var thisOption = leSelect.options [i];
		if (thisOption.value == laValeur)
		{
			resultat = true;
			break;
		}
	}
	return (resultat);
}
// Copie de référence du select catalogue
function prepareSelectSwap ()
{
	selectCatRef = new Array ();
	var selectCat = document.getElementById ("select_produit_cat");
	for (var i = 0; i < selectCat.options.length; i++)
	{
		var thisOption = selectCat.options [i];
		selectCatRef.push (thisOption);
	}
}
// Faire passer des éléments du select catlogue au select choix et inversement
function selectProduitSwap (direction)
{
	var selectCat = document.getElementById ("select_produit_cat");
	var selectChoix = document.getElementById ("select_produit_choix");
	var selectTemp = new Array ();
	if (direction == "leftToRight")
	{
		// 1 On construit les tableaux de labels, valeurs et attributs selected
		for (var i = 0; i < selectCatRef.length; i++)
		{
			var trouve = 0;
			var valeur = selectCatRef [i].value;
			var label = selectCatRef [i].text;
			// Chercher si l'item est sélectionné dans selectCat, ou existant dans selectChoix
			var toBeMoved = isSelected (selectCat, valeur);
			var alreadyMoved = isInSelect (selectChoix, valeur);
			var alreadyMovedAndSelected = alreadyMoved && isSelected (selectChoix, valeur);
			// Si oui, ajouter à la liste temp, en récupérant le "selected" sur selectChoix
			if (toBeMoved || alreadyMoved)
			{
				selectTemp.push (selectCatRef [i]);
				if (toBeMoved)
				{
					selectTemp [selectTemp.length - 1].selected = false;
				}
			}
			if (alreadyMovedAndSelected)
			{
				selectTemp [selectTemp.length - 1].selected = true;
			}
		}
		// 2 On vide la cible et on la re-remplit
		selectChoix.options.length = 0;
		for (var i = 0; i < selectTemp.length; i++)
		{
			var thisOption = selectTemp [i];
			var label = thisOption.text;
			var valeur = thisOption.value;
			var selected = thisOption.selected;
			selectChoix.options.length++;
			selectChoix.options[selectChoix.options.length - 1] = new Option (label, valeur);
			selectChoix.options[selectChoix.options.length - 1].selected = selected;
		}
		// 3 On vide la source et on la re-remplit
		selectCat.options.length = 0;
		for (var i = 0; i < selectCatRef.length; i++)
		{
			var thisOption = selectCatRef [i];
			var label = thisOption.text;
			var valeur = thisOption.value;
			if (!isInSelect (selectChoix, valeur))
			{
				selectCat.options.length++;
				selectCat.options[selectCat.options.length - 1] = new Option (label, valeur);
			}
		}
	}
	else
	{
		// 1 On construit les tableaux de labels, valeurs et attributs selected
		for (var i = 0; i < selectCatRef.length; i++)
		{
			var trouve = 0;
			var valeur = selectCatRef [i].value;
			var label = selectCatRef [i].text;
			// Chercher si l'item est sélectionné dans selectCat, ou existant dans selectChoix
			var toBeMoved = isSelected (selectChoix, valeur);
			var alreadyMoved = isInSelect (selectCat, valeur);
			var alreadyMovedAndSelected = alreadyMoved && isSelected (selectCat, valeur);
			// Si oui, ajouter à la liste temp, en récupérant le "selected" sur selectChoix
			if (toBeMoved || alreadyMoved)
			{
				selectTemp.push (selectCatRef [i]);
				if (toBeMoved)
				{
					selectTemp [selectTemp.length - 1].selected = false;
				}
			}
			if (alreadyMovedAndSelected)
			{
				selectTemp [selectTemp.length - 1].selected = true;
			}
		}
		// 2 On vide la cible et on la re-remplit
		selectCat.options.length = 0;
		for (var i = 0; i < selectTemp.length; i++)
		{
			var thisOption = selectTemp [i];
			var label = thisOption.text;
			var valeur = thisOption.value;
			var selected = thisOption.selected;
			selectCat.options.length++;
			selectCat.options[selectCat.options.length - 1] = new Option (label, valeur);
			selectCat.options[selectCat.options.length - 1].selected = selected;
		}
		// 3 On vide la source et on la re-remplit
		selectChoix.options.length = 0;
		for (var i = 0; i < selectCatRef.length; i++)
		{
			var thisOption = selectCatRef [i];
			var label = thisOption.text;
			var valeur = thisOption.value;
			if (!isInSelect (selectCat, valeur))
			{
				selectChoix.options.length++;
				selectChoix.options[selectChoix.options.length - 1] = new Option (label, valeur);
			}
		}
	}
}
// Détermine si un champ de formulaire est vide
function isEmpty (champ, typeChamp, formulaire)
{
	var valeur = "";
	var resultat = true;
	
	if (typeChamp == "input")
	{
		var typeInput = champ.attributes ["type"].value;
		if (typeInput == "text" || typeInput == "password")
		{
			valeur = trim (champ.value);
			champ.value = valeur;
			resultat = (valeur == "");
		}
		else if (typeInput == "radio" || typeInput == "checkbox")
		{
			var champName = champ.attributes ["name"].value;
			var tabInputs = formulaire.getElementsByTagName ("input");
			for (var i = 0; i < tabInputs.length; i++)
			{
				var thisInput = tabInputs [i];
				var thisInputName = thisInput.attributes ["name"].value;
				if (thisInputName == champName && thisInput.checked)
				{
					resultat = false;	// On a bien trouvé un champ de même nom coché, donc le champ n'est pas vide
					break;
				}
			}
		}
		else
		{
			resultat = false;
		}
	}
	else if (typeChamp == "textarea")
	{
		valeur = trim (champ.value);
		champ.value = valeur;
		resultat = (valeur == "");
	}
	else if (typeChamp == "select")
	{
		for (var i = 0; i < champ.options.length; i++)
		{
			var thisOption = champ.options [i];
			if ((thisOption.selected) && (thisOption.value != ""))
			{
				resultat = false;
				break;
			}
		}
	}
	return (resultat);
}
// Vérifie tous les champs d'un formulaire
function formVerif (formulaire)
{
	var resultat = true;
	var tabEmpty = new Array ();
	var tabBadMail = new Array ();
	var tabNotInt = new Array ();

	// 0 Gestion des formulaires avec champs auto-bascule
	if (formulaire.id == "form_search")
	{
		formVide (document.getElementById ("search"));
	}
	else if (formulaire.id == "form_nl")
	{
		formVide (document.getElementById ("form_nl_email"));
	}
	else if (formulaire.id == "form_nl_02")
	{
		formVide (document.getElementById ("form_nl_02_email"));
	}
	else if (formulaire.id == "form_inscription_nl")
	{
		formVide (document.getElementById ("date_naissance_jour"));
		formVide (document.getElementById ("date_naissance_mois"));
		formVide (document.getElementById ("date_naissance_annee"));
	}
	// 1 Les inputs
	var tabInputs = formulaire.getElementsByTagName ("input");
	for (var i = 0; i < tabInputs.length; i++)
	{
		var thisInput = tabInputs [i];
		var trouveEmpty = false;
		for (var j = 0; j < tabEmpty.length; j++)
		{
			var thisEmpty = tabEmpty [j];
			if (thisEmpty.attributes["name"].value == thisInput.attributes["name"].value)
			{
				trouveEmpty = true;
				break;
			}
		}
		if (!trouveEmpty)
		{
			if (isEmpty (thisInput, "input", formulaire))
			{
				tabEmpty.push (thisInput);
			}
		}
	}
	// 2 Les textarea
	var tabTextarea = formulaire.getElementsByTagName ("textarea");
	for (var i = 0; i < tabTextarea.length; i++)
	{
		var thisTextarea = tabTextarea [i];
		if (isEmpty (thisTextarea, "textarea", formulaire))
		{
			tabEmpty.push (thisTextarea);
		}
	}
	// 3 Les selects
	var tabSelects = formulaire.getElementsByTagName ("select");
	for (var i = 0; i < tabSelects.length; i++)
	{
		var thisSelect = tabSelects [i];
		if (isEmpty (thisSelect, "select", formulaire))
		{
			tabEmpty.push (thisSelect);
		}
	}
	
	// 4 Les emails
	tabBadMail = formVerifEmail (tabFormEmail, formulaire);
	
	// 5 Les champs numériques
	tabNotInt = formVerifInt (tabFormInt, formulaire);
	
	// 6 Gestion des formulaires avec champs auto-bascule
	if (formulaire.id == "form_search")
	{
		formFill (document.getElementById ("search"));
	}
	else if (formulaire.id == "form_nl")
	{
		formFill (document.getElementById ("form_nl_email"));
	}
	else if (formulaire.id == "form_nl_02")
	{
		formFill (document.getElementById ("form_nl_02_email"));
	}
	else if (formulaire.id == "form_inscription_nl")
	{
		formFill (document.getElementById ("date_naissance_jour"));
		formFill (document.getElementById ("date_naissance_mois"));
		formFill (document.getElementById ("date_naissance_annee"));
	}
	
	// 7 Nettoyage du résultat
	tabBadMail = formTabBadMailClean (tabBadMail, tabEmpty);
	tabNotInt = formTabNotIntClean (tabNotInt, tabEmpty);
	tabEmpty = formTabEmptyClean (tabEmpty, formulaire);

	// 8 Cas particuliers
	// contacts_information : champ select_produit_choix
	if (bodyID == "contacts_information")
	{
		var select_produit_choix = document.getElementById ("select_produit_choix");
		if (select_produit_choix.options.length == 0)
		{
			tabEmpty.push (select_produit_choix);
		}
	}
	// inscription_pro
	else if (bodyID == "inscription_pro")
	{
		var profession = document.getElementById ("profession");
		var profession_autre = document.getElementById ("profession_autre");
		if (isEmpty (profession, "select", formulaire) && (isEmpty (profession_autre, "input", formulaire)))
		{
			tabEmpty.push (profession);
		}
	}
	// modif_pro
	else if (bodyID == "modif_pro")
	{
		var profession = document.getElementById ("profession");
		var profession_autre = document.getElementById ("profession_autre");
		if (isEmpty (profession, "select", formulaire) && (isEmpty (profession_autre, "input", formulaire)))
		{
			tabEmpty.push (profession);
		}
		var passOld = document.getElementById ("password_old");
		var passNew = document.getElementById ("password_new");
		var passNew2 = document.getElementById ("password_new2");
		if ((!isEmpty (passOld, "input", formulaire)) || (!isEmpty (passNew, "input", formulaire)) || (!isEmpty (passNew2, "input", formulaire)))
		{
			if (isEmpty (passOld, "input", formulaire))
			{
				tabEmpty.push (passOld);
			}
			if (isEmpty (passNew, "input", formulaire))
			{
				tabEmpty.push (passNew);
			}
			if (isEmpty (passNew2, "input", formulaire))
			{
				tabEmpty.push (passNew2);
			}
			if (formulaire.password_new.value!=formulaire.password_new2.value) {
				alert('Vous nouveau mot de passe et sa confirmation ne sont pas identiques. Veuillez les ressaisir.');
				return false;
			}
		}
	}
	else if (bodyID == "inscription_nl")
	{
		var select_produit_choix = document.getElementById ("select_produit_choix");
		if (select_produit_choix.options.length == 0)
		{
			tabEmpty.push (select_produit_choix);
		}
		/*var but_visite_autre = document.getElementById ("but_visite_autre");
		var but_visite_autre_txt = document.getElementById ("but_visite_autre_txt");
		if (but_visite_autre.checked && isEmpty (but_visite_autre_txt, "input", formulaire))
		{
			tabEmpty.push (but_visite_autre);
		}*/
	}
	resultat = formAlert (tabEmpty, tabBadMail, tabNotInt);
	
	return (resultat);
}
// Supprime du tableau tabEmpty les champs autorisés à vide
function formTabEmptyClean (tabEmpty, formulaire)
{
	var resultat = new Array ();
	for (var i = 0; i < tabEmpty.length; i++)
	{
		var thisEmpty = tabEmpty [i];
		var thisEmptyName = thisEmpty.attributes ["name"].value;
		if (arrayIndexOf (tabFormChampsVidesOk, thisEmptyName) == -1)
		{
			resultat.push (thisEmpty);
		}
		//myPrint (resultat);
	}
	
	return (resultat);
}
// Supprime du tableau tabBadMail les champs vides
function formTabBadMailClean (tabBadMail, tabEmpty)
{
	var resultat = new Array ();
	for (var i = 0; i < tabBadMail.length; i++)
	{
		if (arrayIndexOf (tabEmpty, tabBadMail [i]) == -1)
		{
			resultat.push (tabBadMail [i]);
		}
	}
	
	return (resultat);
}
// Supprime du tableau tabNotInt les champs vides
function formTabNotIntClean (tabNotInt, tabEmpty)
{
	var resultat = new Array ();
	for (var i = 0; i < tabNotInt.length; i++)
	{
		if (arrayIndexOf (tabEmpty, tabNotInt [i]) == -1)
		{
			resultat.push (tabNotInt [i]);
		}
	}
	
	return (resultat);
}
// Vérifie si une chaîne est bien un e-mail
function isEMail (chaine)
{
	var exp = new RegExp("[a-zA-Z0-9\-_]+[a-zA-Z0-9\.\-_]*@[a-zA-Z0-9\-_]+\.[a-zA-Z\.\-_]{1,}[a-zA-Z\-_]+","g");
	var tabMail = chaine.match(exp);
	var resultat = true;
	if (tabMail == null)
	{
		resultat = false;
	}
	else
	{
		resultat = ((tabMail.length == 1) && (tabMail [0] == chaine));
	}
	
	return (resultat);
}
// Vérifie si une chaîne est un entier
function isInt (chaine)
{
	var resultat;
	resultat = ((!isNaN (chaine)) && (parseInt (chaine) == chaine));
	return (resultat);
}
// Vérifie tous les emails
function formVerifEmail (tabFormEmail, formulaire)
{
	var resultat = new Array ();;
	var tabInputs = formulaire.getElementsByTagName ("input");
	for (var i = 0; i < tabInputs.length; i++)
	{
		var thisInput = tabInputs [i];
		if (arrayIndexOf (tabFormEmail, thisInput.id) != -1)
		{
			if (!isEMail (thisInput.value))
			{
				resultat.push (thisInput);
			}
		}
	}
	return (resultat);
}
// Vérifie tous les champs entiers
function formVerifInt (tabFormInt, formulaire)
{
	var resultat = new Array ();;
	var tabInputs = formulaire.getElementsByTagName ("input");
	for (var i = 0; i < tabInputs.length; i++)
	{
		var thisInput = tabInputs [i];
		if (arrayIndexOf (tabFormInt, thisInput.id) != -1)
		{
			if (!isInt (thisInput.value))
			{
				resultat.push (thisInput);
			}
		}
	}
	return (resultat);
}


function formAlert (tabEmpty, tabBadMail, tabNotInt)
{
	var strMessage = "";
	var resultat = true;
	if (tabEmpty.length > 0 || tabBadMail.length > 0)
	{
		strMessage = "";
		for (var i = 0; i < tabEmpty.length; i++)
		{
			var champ = tabEmpty [i];
			var champName = champ.attributes["name"].value;
			// Cas particulier >>
			if (bodyID == "inscription_nl" && champName == "select_produit_choix")
			{
				champName = "huile_utilisee";
			}
			// << Cas particulier
			var label = getFormLabel (champName);
			strMessage = strMessage + "\n" + label + " : est obligatoire";
		}
		for (var i = 0; i < tabBadMail.length; i++)
		{
			var champ = tabBadMail [i];
			var champName = champ.attributes["name"].value;
			var label = getFormLabel (champName);
			strMessage = strMessage + "\n" + label + " : cette adresse e-mail n'est pas valide";
		}
		for (var i = 0; i < tabNotInt.length; i++)
		{
			var champ = tabNotInt [i];
			var champName = champ.attributes["name"].value;
			var label = getFormLabel (champName);
			strMessage = strMessage + "\n" + label + " : ne contient pas une valeur entière";
		}
		if (strMessage != "")
		{
			strMessage = "Les problèmes suivants ont été détectés dans ce formulaire :\n" + strMessage;
			alert (strMessage);
			resultat = false;
		}
	}
	return (resultat);
}
// Récupère l'intitulé d'un champ de formulaire
function getFormLabel (champName)
{
	var resultat = "";
	var index = arrayIndexOf (tabFormChampsNames, champName);
	if (index != -1)
	{
		var resultat = tabFormChampsLabels [index];
	}
	return (resultat);
}
function prepareSelectAutorun ()
{
	var select = document.getElementById ("contacts_objet");
	select.onchange = function ()
	{
		var valeur = this.options [this.options.selectedIndex].value;
		if (valeur != "")
		{
			document.location.href = valeur;
		}
	}
}


// Sert à plier/déplier un élément de la FAQ
function faqSwitcher (lien)
{
	var li = lien.parentNode.parentNode;
	var className = new String (li.className);
	if (className.indexOf ("deplie") != -1)
	{
		className = className.replace ("deplie", "");
		className = trim (className);
	}
	else
	{
		className = className.concat (" deplie");
	}
	li.className = className;
}
// Prépare le plier/déplier des éléments sur la FAQ
function prepareFaqSwitcher ()
{
	var liste = document.getElementById ("faq_liste");
	if (null==liste) return false;
	var tab_liens = liste.getElementsByTagName ("a");
	if (null==tab_liens) return false;
	for (var i = 0; i < tab_liens.length; i++)
	{
		var lien = tab_liens [i];
		if (lien.parentNode.className == "question")
		{
			lien.href = "";
			lien.onclick = function ()
			{
				faqSwitcher (this);
				return false;
			}
		}
	}
}
// Prépare le plier/déplier des éléments sur la liste de toutes les recettes
function prepareToutesRecettesSwitcher ()
{
	var liste = document.getElementById ("liste_toutes_recettes");
	var tab_liens = liste.getElementsByTagName ("a");
	for (var i = 0; i < tab_liens.length; i++)
	{
		var lien = tab_liens [i];
		if (lien.parentNode.className == "recettes_subcat_switcher")
		{
			lien.onclick = function ()
			{
				faqSwitcher (this);
				return false;
			}
		}
	}
}

// Initialisation spécifique
function initSpecif ()
{
	var body = document.getElementsByTagName ("body");
	body = body [0];
	bodyID = body.id;
	if (bodyID == "home")
	{
		prepareHoverHome ();
	}
	else if (bodyID == "contacts")
	{
		prepareSelectAutorun ();
	}
	else if (bodyID == "contacts_information" || bodyID == "inscription_nl")
	{
		prepareSelectSwap ();
	}
	else if (bodyID == "faq")
	{
		prepareFaqSwitcher ();
	}
	else if (bodyID == "toutes_recettes")
	{
		prepareToutesRecettesSwitcher ();
	}
	// Champs potentiellement vides dans les formulaires
	if (bodyID == "contacts_autre" || bodyID == "contacts_entreprise"  || bodyID == "contacts_site")
	{
		tabFormChampsVidesOk = tabFormChampsVidesOkContact;
	}
	else if (bodyID == "contacts_information")
	{
		tabFormChampsVidesOk = tabFormChampsVidesOkContactInfo;
	}
	else if (bodyID == "inscription_pro" || bodyID == "modif_pro")
	{
		tabFormChampsVidesOk = tabFormChampsVidesOkInscripPro;
	}
	else if (bodyID == "inscription_nl")
	{
		tabFormChampsVidesOk = tabFormChampsVidesOkInscripNL;
	}
	else if (bodyID == "espace_nutrition_01")
	{
		tabFormChampsVidesOk = tabFormChampsVidesOkEspaceNutrition;
	}	
}
// Initialisation générale
function init ()
{
	prepareSubmenus ();
	prepareFormulaires ();
	initSpecif ();
}
window.onload = init;

function selectList()
{
	var list = document.getElementById('select_produit_choix');
	
	for(i=0;i<list.length;i++)
	{
		list[i].selected = true;
	}
}

// JavaScript Document

function openreglement() {
    window.open('reglements.html','reglements','scrollbars=yes,width=520,height=550,top=0,left=0');
}