function verifMail(email)
{ var b = true;
  if (!email) b = false;
  var filtre  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/;
  if(!filtre.test(email)) b = false;
  return b;
}

function createXhr()
{
	var xhr = null;
	 if (window.XMLHttpRequest) // Firefox et autres
	 {
	  xhr = new XMLHttpRequest();
	 }
	 else if (window.ActiveXObject) // Internet Explorer
	 {
	  try
	  {
	   xhr = new ActiveXObject("Microsoft.XMLHTTP" );
	  }
	  catch (e)
	  {
	   try
	   {
	    xhr = new ActiveXObject("Msxml2.XMLHTTP" );
	   }
	   catch (e1)
	   {
	    xhr = null;
	   }
	     }
	}
	
	return xhr;	
}

/* Fonctions relatives à l'inscription d'un utilisateur à la newsletter */
function videChampNewsletter(champEmailNewsletter)
{
	// si le champ a toukours la valeur initiale, on le réinitialise à vide
	if(champEmailNewsletter.value == "› Entrez ici votre email")
	{
		champEmailNewsletter.value = "";
	}
}
function inscriptionNewsletter()
{
	// si le champ a toukours la valeur initiale, on le réinitialise à vide
	if(document.formulaireInscriptionNewsletter.email.value == "")
	{
		alert("Veuillez indiquer une adresse email");
		document.formulaireInscriptionNewsletter.email.focus();
		return false;
	}
	else
	{
		if(verifMail(document.formulaireInscriptionNewsletter.email.value) == true)
		{
			document.formulaireInscriptionNewsletter.action = "/action.php?act=inscriptionNewsletter";
			return true;
		}
		else
		{
			alert("Veuillez indiquer une adresse email valide");
			document.formulaireInscriptionNewsletter.email.focus();
			return false;
		}
	}
}
/* Fin des fonctions relatives à l'inscription d'un utilisateur à la newsletter */

/*** Fonctions affichant l'autocomplétion sur la recherche des produits ***/
function afficheSelectProduit(inputRechercheProduit)
{
	passage = 0;

	var sel = document.getElementById("completion_select");
	
	// on vide le select
	sel.innerHTML=null;

	var rechercheProduit = inputRechercheProduit.value;
	if(rechercheProduit.length > 3)
	{	
		// on affiche le message d'attente
		sel.style.display = 'block';
		sel.options[sel.options.length] = new Option("Recherche en cours...","");
	
		xhr = createXhr();
	    xhr.onreadystatechange  = function()
	    { 
	         if(xhr.readyState  == 4)
	         {    
	              if(xhr.status  == 200) 
	              {
	            	  	// on vérifie que l'on est passé qu'une seule fois
	            	  	if(passage == 0)
	            	  	{
	            	  		// on vide le select
	            	  		sel.innerHTML=null;
	            	  		
							//rep = xhr.responseText;
							//document.getElementById(div).innerHTML = rep;
							
							produits = eval('(' + xhr.responseText + ')'); // [id1,id2, ...]
							
							//sel.attributes['size'].value = produits.length;
							
							
							/*while(sel.options.length > 0)
							{
								sel.options[0] = null;
							}*/
							
							// on rempli avec les nouveaux produits
							for(i=0 ; i< produits.length ; i++)
							{
								$monTableauProduit = produits[i].split('**');
								sel.options[sel.options.length] = new Option($monTableauProduit[1],$monTableauProduit[0]);
								//sel.options[i] = new Option(produits[i],produits[i]);
							}
							
							if (sel.options.length) 
							{
								sel.selectedIndex = 0 ; // on selection le premier element de la liste
								sel.style.display = 'block';
							}
							else
							{
								sel.style.display = 'none';
							}
	            	  	}
						passage = passage + 1;
				  }
	           } 
	    }; 
	    
	   	xhr.open("POST", "/ajax_affiche_select_liste_produits.php",true);
		xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
		xhr.send("rechercheProduit="+rechercheProduit); 
   }
	else
	{
		// on désaffiche la liste déroulante
		sel.style.display = 'none';
	}
}
function recup_produit_onChange() 
{
	sel = document.getElementById("completion_select");

	if(sel.options[sel.selectedIndex].value != "")
	{
		// on redirige directement vers la fiche produit (iou la page catégorie ?)
		document.location.href = sel.options[sel.selectedIndex].value;
	}
	else
	{
		// sinon l'on redirige vers la page de recherche
	}
}
function addInscriptionNewsletter(form)
{
	var email = form.email.value;
	
	if(!verifMail(email))
	{
		alert("Veuillez saisir un email valide");
		/*return false;*/
	}	
	else
	{
		var xhr = createXhr();
		 xhr.onreadystatechange  = function()
	    { 
		 if(xhr.readyState  == 4)
		 {
		      if(xhr.status == 200) 
		      {
					var rep = xhr.responseText;
					if(rep == "existe")
					{
						document.getElementById("confirmNewsletter").innerHTML = "Vous êtes déjà inscrit à la newsletter.";
					}
					else if(rep == "ajoute")
					{
						document.getElementById("confirmNewsletter").innerHTML = "Votre inscription a bien été prise en compte.";
					}
					document.getElementById("confirmNewsletter").style.display = "block";
					form.email.value = "";
		      } 
		 }
	    }; 
		xhr.open("POST", "/ajax_addInscriptionNewsletter.php",true);
		xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
		xhr.send("email="+email);
		//return false;
	}
}

/* Fonction d'ajout d'une référence dans le panier */
function addPanier(reference, quantite, champCaracteristique, numeroFormulaire)
{
	carac = "";
	
	// on vérifie si un champ longueur et largeur du tapis existe
	if(document.getElementById("longueurTapis"+numeroFormulaire) && document.getElementById("largeurTapis"+numeroFormulaire))
	{
		valeurLongueur = document.getElementById("longueurTapis"+numeroFormulaire).value;
		valeurLongueur = valeurLongueur.replace(",", ".");
		valeurLongueur = Math.round(valeurLongueur*100)/100;
		valeurLargeur = document.getElementById("largeurTapis"+numeroFormulaire).value;
		valeurLargeur = valeurLargeur.replace(",", ".");
		valeurLargeur = Math.round(valeurLargeur*100)/100;
		
		carac = valeurLongueur + "X" + valeurLargeur;
		// on calcule la quantité correspondante
		quantite = quantite * (valeurLongueur * valeurLargeur);
		// on arrondit la quantité
		quantite = Math.round(quantite*100)/100;;
	}
	
	// on vérifie si un champ choix d'une caractéristique technique existe
	if(carac == "" && document.getElementById(champCaracteristique))
	{
		carac = document.getElementById(champCaracteristique).value;
	}
	
	// appel du fichier action
	document.location.href = "/action.php?act=addPanier&idReference="+reference+"&quantite="+quantite+"&carac="+carac;
	return false;
}
function addPanierMult(reference, quantite, caracteristique)
{	
	// appel du fichier action
	document.location.href = "/action.php?act=addPanierMult&listeReference="+reference+"&listeQuantite="+quantite+"&listeCaract="+caracteristique;
	//return false;
}
// fonction appelé depuis les fiches produits ayant des références multiples
function addPanierMultiple(listeReferenceId, numeroFormulaire)
{
	tableauRefId = listeReferenceId.split('|');
	
	// chaine de caractères qui servira à stocker les différentes références concernées
	tableauReference = "";
	// chaine de caractères qui servira à stocker les différentes quantités concernées
	tableauQuantite = "";
	// chaine de caractères qui servira à stocker les différentes valeurs de caractéristiques techniques concernées
	tableauCaract = "";
	
	//for(refId in tableauRefId)
	for(refId = 0; refId < tableauRefId.length; refId++)
	{
		quantiteProduit = 0;
		// on vérifie que le champ de formulaire correspondant existe
		if(document.getElementById('quantiteRefMultiple'+numeroFormulaire+tableauRefId[refId]))
		{
			quantiteProduit = document.getElementById('quantiteRefMultiple'+numeroFormulaire+tableauRefId[refId]).value;
			tableauReference = tableauReference + tableauRefId[refId]+"_";
			
			valeurCaractProduit = "";
			
			// on vérifie si un champ longueur et largeur du tapis existe
			if(document.getElementById("longueurTapisMultiple"+numeroFormulaire+tableauRefId[refId]) && document.getElementById("largeurTapisMultiple"+numeroFormulaire+tableauRefId[refId]))
			{
				valeurLongueur = document.getElementById("longueurTapisMultiple"+numeroFormulaire+tableauRefId[refId]).value;
				valeurLongueur = valeurLongueur.replace(",", ".");
				valeurLongueur = Math.round(valeurLongueur*100)/100;
				valeurLargeur = document.getElementById("largeurTapisMultiple"+numeroFormulaire+tableauRefId[refId]).value;
				valeurLargeur = valeurLargeur.replace(",", ".");
				valeurLargeur = Math.round(valeurLargeur*100)/100;
				
				valeurCaractProduit = valeurLongueur + "X" + valeurLargeur;
				// on calcule la quantité correspondante
				quantiteProduit = quantiteProduit * (valeurLongueur * valeurLargeur);
				// on arrondit la quantité
				quantiteProduit = Math.round(quantiteProduit*100)/100;
			}
			tableauQuantite = tableauQuantite + quantiteProduit+"_";

			if(valeurCaractProduit == "" && document.getElementById('caracRefMultiple'+numeroFormulaire+tableauRefId[refId]))
			{
				valeurCaractProduit = document.getElementById('caracRefMultiple'+numeroFormulaire+tableauRefId[refId]).value;
			}
			tableauCaract = tableauCaract + valeurCaractProduit+"_";

			// si la quantité est supérieure à zéro
			//if(quantite > 0)
			//{
				// on appelle le fonction rajoutant le produit individuellement
			//	addPanier(tableauRefId[refId], quantite, true);
			//}
			addPanierMult(tableauReference, tableauQuantite, tableauCaract);
		}
	}
	return false;
}
function delPanier(reference, quantite, caracteristique)
{
	// appel du fichier action
	document.location.href = "/action.php?act=delPanier&idReference="+reference+"&quantite="+quantite+"&carac="+caracteristique;
	return false;
}
function augmenteQuantiteReference(reference, champQuantite)
{
	//valeurPrecedente = parseInt(document.getElementById(champQuantite).value);
	//document.getElementById(champQuantite).value = (valeurPrecedente + 1);
	//addPanier(reference, document.getElementById(champQuantite).value);
	return addPanier(reference, 1);
}
function diminueQuantiteReference(reference, champQuantite, caracteristique)
{
	//valeurPrecedente = parseInt(document.getElementById(champQuantite).value);
	/*if(valeurPrecedente > 0)
	{
		document.getElementById(champQuantite).value = (valeurPrecedente - 1);
	}
	delPanier(reference, document.getElementById(champQuantite).value);*/
	return delPanier(reference, 1, caracteristique);
}
function augmenteChampQuantiteReference(nomchampQuantite)
{
	valeurPrecedente = parseInt(document.getElementById(nomchampQuantite).value);
	document.getElementById(nomchampQuantite).value = (valeurPrecedente + 1);
}
function diminueChampQuantiteReference(nomchampQuantite, quantiteMinimale)
{
	// si aucune quantité minimale n'a été définie, on lui donne la valeur 1 par défaut
	if(quantiteMinimale == null)
	{
		quantiteMinimale = 1;
	}
	valeurPrecedente = parseInt(document.getElementById(nomchampQuantite).value);
	if(valeurPrecedente > quantiteMinimale)
	{
		document.getElementById(nomchampQuantite).value = (valeurPrecedente - 1);
	}
}
function supprimeReference(reference, caracteristique)
{
	if (confirm("Etes-vous sur de vouloir supprimer cet élément de votre panier ?"))
		delPanier(reference, "", caracteristique);
}

function envoiCodePromo()
{
	codepromo = "";
	// on récupère les élèments envoyés
	codepromo = document.getElementById("codepromo").value;
	remiseConquete = document.getElementById("remiseConquete").checked;
	commentaire = document.getElementById("commentaire").value;
	
	// appel du fichier action
	document.location.href = "/action.php?act=addCodePromo&codepromo="+codepromo+"&remiseConquete="+remiseConquete+"&commentaire="+commentaire;
	return false;
}
/* Fin de fonction */

/* Fonctions du parcours d'achat */
function verificationFormulaireConnexion()
{
	a = document.connection.email.value;
	valide = false;

	for(var j=1;j<(a.length);j++)
	{
		if(a.charAt(j)=='@')
		{
			if(j<(a.length-4))
			{
				for(var k=j;k<(a.length-2);k++)
				{
					if(a.charAt(k)=='.') valide=true;
				}
			}
		}
	}
	if (valide==false) alert("Veuillez saisir une adresse email valide.");
	return valide;
	elseif(valide==true && document.connection.password.value == "")
	{alert("Veuillez saisir un mot de passe!");
	return valide;}
	elseif(valide==true && document.connection.password.value != "")
	{return true;}
}

function verificationFormulaireNouveauClient()
{
	adresseEmail = document.creation.email.value;
	
	if(adresseEmail == "")
	{
		alert("Veuillez saisir une adresse email.");
		return false;
	}
	else
	{
		if(verifMail(adresseEmail) == false)
		{
			alert("Veuillez saisir une adresse email valide.");
			return false;
		}
	}
	return true;
}

function afficheBlocAdresses()
{
	if(document.getElementById("autresAdresses").style.display == "none")
	{
		document.getElementById("autresAdresses").style.display = "block";
	}
	else
	{
		document.getElementById("autresAdresses").style.display = "none";
	}
}

function validerFormulaireAdresse(form)
{
	var erreur = "";
	var nom = form.adresse_nom;
	var prenom = form.adresse_prenom;
	var adresse = form.adresse;
	var codepostal = form.codepostal;
	var ville = form.ville;
	var telephone = form.telephone;
	var espace = new RegExp("^( )+$");
	
	if (!nom.value || (espace.test(nom.value) == true))
	{	alert("Veuillez saisir un nom");
		nom.focus();
		return false;
	}
	if (!prenom.value || (espace.test(prenom.value) == true))
	{	alert("Veuillez saisir un prénom");
		prenom.focus();
		return false;
	}
	if (!adresse.value || (espace.test(adresse.value) == true))
	{	alert("Veuillez saisir une adresse");
		adresse.focus();
		return false;
	}
	
	if (!codepostal.value || (espace.test(codepostal.value) == true))
	{	alert("Veuillez saisir un code postal");
		codepostal.focus();
		return false;
	}
	
	if (!ville.value || (espace.test(ville.value) == true))
	{	alert("Veuillez saisir une ville");
		ville.focus();
		return false;
	}
	
	if (!telephone.value || (espace.test(telephone.value) == true))
	{	alert("Veuillez saisir un numéro de téléphone");
		telephone.focus();
		return false;
	}
	return true;
}

function validationDemandeCatalogue(form)
{
	var erreur = "";
	var societe = form.societe;
	var nom = form.nom;
	var prenom = form.prenom;
	var adresse = form.adresse;
	var codepostal = form.codepostal;
	var ville = form.ville;
	var telephone = form.telephone;
	var adresseEmail = form.email;
	var espace = new RegExp("^( )+$");
	/*document.getElementById("adresse").className = "input_text_400";
	document.getElementById("codepostal").className = "input_text_75";
	document.getElementById("ville").className = "input_text_310";
	document.getElementById("telephone").className = "input_text_200";*/

	if (!societe.value || (espace.test(societe.value) == true))
	{	
		alert("Veuillez saisir un nom de societe");
		societe.focus();
		return false;
	}
	if (!nom.value || (espace.test(nom.value) == true))
	{	alert("Veuillez saisir un nom");
		nom.focus();
		return false;
	}
	if (!prenom.value || (espace.test(prenom.value) == true))
	{	alert("Veuillez saisir un prénom");
		prenom.focus();
		return false;
	}
	
	if (!adresse.value || (espace.test(adresse.value) == true))
	{	alert("Veuillez saisir une adresse");
		adresse.focus();
		return false;
	}
	
	if (!codepostal.value || (espace.test(codepostal.value) == true))
	{	alert("Veuillez saisir un code postal");
		codepostal.focus();
		return false;
	}
	
	if (!ville.value || (espace.test(ville.value) == true))
	{	alert("Veuillez saisir une ville");
		ville.focus();
		return false;
	}
	
	if (!telephone.value || (espace.test(telephone.value) == true))
	{	alert("Veuillez saisir un numéro de téléphone");
		telephone.focus();
		return false;
	}
	if (!adresseEmail.value || (espace.test(adresseEmail.value) == true))
	{	alert("Veuillez saisir une adresse email");
		adresseEmail.focus();
		return false;
	}
	else
	{
		if(verifMail(adresseEmail.value) == false)
		{
			alert("Veuillez saisir une adresse email valide.");
			//document.getElementById("facturation_email").className = "erreur";
			adresseEmail.focus();
			return false;
		}
	}
	return true;
}

function validationDemandeContact(form)
{
	var erreur = "";
	var societe = form.societe;
	var nom = form.nom;
	//var prenom = form.prenom;
	//var adresse = form.adresse;
	//var codepostal = form.codepostal;
	//var ville = form.ville;
	var telephone = form.telephone;
	var adresseEmail = form.email;
	var espace = new RegExp("^( )+$");

	if (!societe.value || (espace.test(societe.value) == true))
	{	
		alert("Veuillez saisir un nom de societe");
		societe.focus();
		return false;
	}
	if (!nom.value || (espace.test(nom.value) == true))
	{	
		alert("Veuillez saisir un nom");
		nom.focus();
		return false;
	}

	if (!telephone.value || (espace.test(telephone.value) == true))
	{	alert("Veuillez saisir un numéro de téléphone");
		telephone.focus();
		return false;
	}
	if (!adresseEmail.value || (espace.test(adresseEmail.value) == true))
	{	alert("Veuillez saisir une adresse email");
		adresseEmail.focus();
		return false;
	}
	else
	{
		if(verifMail(adresseEmail.value) == false)
		{
			alert("Veuillez saisir une adresse email valide.");
			//document.getElementById("facturation_email").className = "erreur";
			adresseEmail.focus();
			return false;
		}
	}
	return true;
}

function validationMdp(form)
{
	var erreur = "";
	
	var mdp = form.mdp;
	var mdp2 = form.mdp2;
	
	var espace = new RegExp("^( )+$");
	
	retour = true;
	if(mdp)
	{
		if (!mdp.value || (espace.test(mdp.value) == true))
		{	
			alert("Veuillez saisir un mot de passe");
			mdp.focus();
			return false;
		}
		else
		{
			if(mdp.value != mdp2.value)
			{
				alert("Les mots de passe doivent être identiques.");
				mdp2.focus();
				return false;
			}
		}
	}

	return retour;
}

function validationAdresseFacturation(form)
{
	/*retour = false;
	retour = validerFormulaireAdresseFacturation();
	if(retour == false)
	{
		return false;
	}*/
	
	// on vérifie dans un premier temps si l'adresse de facturation est bien renseignée
	var erreur = "";
	var civilite = form.facturation_civilites;
	var siret = form.facturation_siret;
	var nom = form.facturation_nom;
	var prenom = form.facturation_prenom;
	var adresse = form.facturation_adresse;
	var codepostal = form.facturation_codepostal;
	var ville = form.facturation_ville;
	var telephone = form.facturation_telephone;
	var email = form.facturation_email;
	
	var mdp = form.facturation_mdp;
	var mdp2 = form.facturation_mdp_deuxieme;
	
	var espace = new RegExp("^( )+$");
	//document.getElementById("siret").className = "";
	/*document.getElementById("facturation_adresse").className = "input_text_400";
	document.getElementById("facturation_codepostal").className = "input_text_75";
	document.getElementById("facturation_ville").className = "input_text_310";
	document.getElementById("facturation_telephone").className = "input_text_200";
	document.getElementById("facturation_email").className = "input_text_400";*/
	
	if (!siret.value || (espace.test(siret.value) == true))
	{	
		alert("Veuillez saisir un numéro de siret");
		siret.focus();
		return false;
	}
	
	if (!nom.value || (espace.test(nom.value) == true))
	{	
		alert("Veuillez saisir un nom");
		nom.focus();
		return false;
	}
	
	if (!prenom.value || (espace.test(prenom.value) == true))
	{	
		alert("Veuillez saisir un prénom");
		prenom.focus();
		return false;
	}
	
	if (!adresse.value || (espace.test(adresse.value) == true))
	{	
		alert("Veuillez saisir une adresse");
		//document.getElementById("facturation_adresse").className = "erreur";
		adresse.focus();
		return false;
	}
	
	if (!codepostal.value || (espace.test(codepostal.value) == true))
	{	
		alert("Veuillez saisir un code postal");
		//document.getElementById("facturation_codepostal").className = "erreur";
		codepostal.focus();
		return false;
	}
	
	if (!ville.value || (espace.test(ville.value) == true))
	{	
		alert("Veuillez saisir une ville");
		//document.getElementById("facturation_ville").className = "erreur";
		ville.focus();
		return false;
	}
	
	if (!telephone.value || (espace.test(telephone.value) == true))
	{	
		alert("Veuillez saisir un téléphone");
		//document.getElementById("facturation_telephone").className = "erreur";
		telephone.focus();
		return false;
	}
	
	if (!email.value || (espace.test(email.value) == true))
	{	
		alert("Veuillez saisir un email");
		//document.getElementById("facturation_email").className = "erreur";
		email.focus();
		return false;
	}
	else
	{
		if(verifMail(email.value) == false)
		{
			alert("Veuillez saisir une adresse email valide.");
			//document.getElementById("facturation_email").className = "erreur";
			email.focus();
			return false;
		}
	}
	
	// on vérifie que l'on se trouve dans le cas de la création d'un compte (le champ mdp n'existe pas pour la modification)
	if(mdp)
	{
		if (!mdp.value || (espace.test(mdp.value) == true))
		{	
			alert("Veuillez saisir un mot de passe");
			mdp.focus();
			return false;
		}
		else
		{
			if(mdp.value != mdp2.value)
			{
				alert("Les mots de passe doivent être identiques.");
				mdp2.focus();
				return false;
			}
		}
	}
	
	// on vérifie si l'une des adresses de livraison est sélectionnée
	if(form.adresse_livraison[0].checked == true)
	{
		// l'adresse utilisée est celle de facturation
		retour = true;
	}
	else
	{
		retour = validerFormulaireAdresse(form);
	}
	return retour;
}

function validationAdresseLivraisonSelectionnee(form)
{
	retour = false;
	// on vérifie si l'une des adresses de livraison est sélectionnée
	if(form.adresse_livraison[0].checked == true)
	{
		// l'adresse utilisée est celle de facturation
		retour = true;
	}
	else
	{
		if(form.adresseExistanteLivraison)
		{
			// si la liste ne possède qu'un seul élèment
			if(form.adresseExistanteLivraison.checked == true)
			{
				// l'adresse utilisée est une adresse de livraison existante
				retour = true;
			}
			else
			{
				for (var i=0; i < form.adresseExistanteLivraison.length;i++) 
				{
					if (form.adresseExistanteLivraison[i].checked == true) 
			         {
			        	 // l'adresse utilisée est une adresse de livraison existante
			        	 retour = true;
			         }
				} 
			}
		}
		if(retour == false)
		{
			retour = validerFormulaireAdresse(form);
		}
	}
	return retour;
}
/* Fin des fonctions du parcours d'achat */

// FONCTION DE PERMUTATION D'IMAGE
function permuteImage(img, src)
{
	img.src = src;
}

// permet de vérifier que la quantité indiquée par l'utilisateur est bien de type numérique
function verifieDonneesChiffrees(champ)
{
	if(isNaN(champ.value))
	{
		alert("Veuillez entrer une quantité numérique");
		champ.value = 1;
	}
	else
	{
		champ.value = Math.round(champ.value);
	}
}
//permet de vérifier que la quantité indiquée par l'utilisateur est bien de type numérique
function verifieDonneesChiffreesSansArrondi(champ)
{
	if(isNaN(champ.value))
	{
		alert("Veuillez entrer une quantité numérique");
		champ.value = 1;
	}
}

// fonction d'ajout aux favoris
function favoris() {
	if ( navigator.appName != 'Microsoft Internet Explorer' )
	{ window.sidebar.addPanel("Delcourt - Produit d’entretien & nettoyage professionnels","http://www.delcourt.fr",""); }
	else { window.external.AddFavorite("http://www.delcourt.fr","Delcourt - Produit d’entretien & nettoyage professionnels"); } 
}
