// Supprime les espaces a gauche
function leftTrim(sString)
{
	while (sString.substring(0,1) == " ")
	{
		sString = sString.substring(1, sString.length);
	}
	return (sString);
}
// Supprime les espaces a droite
function rightTrim(sString)
{
	while (sString.substring(sString.length-1, sString.length) == " ")
	{
		sString = sString.substring(0,sString.length-1);
	}
	return (sString);
}
// Supprime les espaces a droite et a gauche
function trim (sString)
{
	return (leftTrim (rightTrim (sString)));
}

// Sert a 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 a 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 a 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 a 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 a 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 a 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;
	}
}
// montre un élément s'il est masqué, le cache s'il est visible
// _ID = id de l'élément

function showHideId(_ID){
    //alert("poipoi");
    if(document.getElementById(_ID)){
        switch(document.getElementById(_ID).style.display)
        {
            case 'block':
                document.getElementById(_ID).style.display = 'none';
                break;
            case 'none':
                document.getElementById(_ID).style.display = 'block';
                break;
            default:
                document.getElementById(_ID).style.display = 'none';
                break;
        }
    }
}

//
function hideFAQS(){
    var id = "1";
    while(document.getElementById("reponse_faq_"+id)){
        document.getElementById("reponse_faq_"+id).style.display = 'none';
        id++;
    }
}

//lis une video str dans l'element elem, si ya pas de visionneuse, il renvoi vers la page adaptée
function playVideo(str,elem){
    if(document.getElementById(elem)){
	    var _video = "/flash/lecteur.swf?film="+str;
	    var so = new SWFObject(_video, "player", "385", "344","8");
	    so.write(elem);
	}else{
	    document.location.href = "/client/index.aspx?Composant=Article&Methode=ClientVision&id_film="+str;
	}
}

//deplie / replie le menu
function showHideMenu(elem){
    var e = elem.parentNode.childNodes[1];
    if(!e)
        e = elem.parentNode.parentNode.childNodes[1];
    if(e)
    {
        if(e.style.display=='none' || undefined == e.style.display || null == e.style.display || !e.style.display){
            e.style.display = 'block';
        }else{
            e.style.display = 'none';
        }
    }
}

function verif_evolution()
{
    if(document.getElementById("q-3").value.search(/[a-zA-Z0-9]{1}[^\@]*[\@][a-zA-Z0-9-_\.]+[\.][a-zA-Z]{2,4}/)==-1)
    {
        alert("Erreur, \n\nAdresse email invalide.");
        return false;
    }
    return true;
}

function leave_website()
{
    var tabLink = document.getElementsByTagName('a');
    
    for(var i=0;i<tabLink.length;i++)
    {
        if(tabLink[i].href != "#" && tabLink[i].href.indexOf("javascript:")==-1 && (tabLink[i].href.indexOf("http://")!=-1 || tabLink[i].href.indexOf("https://")!=-1) && (tabLink[i].href.indexOf("192.168.0.152")==-1  && tabLink[i].href.indexOf("localhost")==-1  && tabLink[i].href.indexOf("abbott.melody.fr")==-1  && tabLink[i].href.indexOf("vivrepositif.fr")==-1))
        {
            if(navigator.userAgent.indexOf('MSIE')!=-1)
            {
                var hrefTemp = tabLink[i].href;
                tabLink[i].href = "javascript:byebyeExplorer('"+hrefTemp+"');"; //setAttribute("onclick","return byebye();"); //addEventListener("click",byebye);
            }
            else
            {
                tabLink[i].setAttribute("onclick","return byebye();");
            }
        }
    }
}
function byebyeExplorer(str)
{ 
    if(confirm("Vous allez \352tre redirig\351 vers un site ext\351rieur, ind\351pendant d\'ABBOTT et pour lequel ABBOTT d\351cline toute responsabilit\351.\n\nVoulez-vous continuez ?")) 
        document.location.href=str;
};

function byebye()
{ 
    if(!confirm("Vous allez \352tre redirig\351 vers un site ext\351rieur, ind\351pendant d\'ABBOTT et pour lequel ABBOTT d\351cline toute responsabilit\351.\n\nVoulez-vous continuez ?")) 
        return false;
};

function setAttributeEx(node, name, value) {
    var i;
    for (i = 0; i<attributes.length;i++)
    {
        if (node.attributes[i].name == name)
        { 
            node.attributes[i].value = value; 
        }
    }
} 
