	/**********************************************************************************
	 * Auteurs    : Gregory Paccaud & Julien Mariller                     		      
	 * But        : Liste de toutes les fonctions en javascript utilisées sur le site 
	 * Date       : 9 mai 2006                                                  	  
	 * Remarques  :                                                               	  
	 **********************************************************************************/
	
	function definir_case_a_cocher(form, champ, check) {
		for(var i = 0; i < document.getElementsByName(champ).length; i++)
			document.getElementsByName(champ)[i].checked = check;
	}
	
	function verifier_import_fichier() {
		if (document.getElementById('table_destination').value == "-1") {
			alert("Choisir d'abord une destination");
			return false;
		} else {
			return true;
		}
	}
	
	/**
	 * Charger un raccourci pour l'administration
	 * 
	 */
	function ouvrir_raccourci_admin(url) {
		if (url != -1) {
			document.getElementById('raccourci-admin').disabled = true;
			window.location.replace(url);
		}
		
		return false;
	}
	
	/* Modèle de base pour une URL valide */
	var modele_url = /^(http|https):\/\/[a-z0-9]+\.[a-z0-9-]+\.([a-z]{2,4})\/?$/gi;
	
	/*-- Vérifie la syntaxe générale d'un Email sous forme domaine en texte ------*/
	/* (merci à sivispacem) http://www.javascriptfr.com/codes/VERIFICATION-SYNTAXE-COURRIEL-EMAIL-EXPRESSIONS-REGULIERES_35656.aspx */
	function bSyntaxeEmail(sMail) {
		//var re=/^[a-z\d]+((\.|-|_)[a-z\d]+)*@((?![-\d])[a-z\d-]{0,62}[a-z\d]\.){1,4}[a-z]{2,6}$/gi;
		var re=/^([a-zA-Z0-9_-])+([.]?[a-zA-Z0-9_-]{1,})*@((?![-\d])[a-z\d-]{0,62}[a-z\d]\.){1,4}[a-z]{2,6}$/gi;
		return (sMail.match(re)==sMail)&&(sMail.substr(sMail.lastIndexOf("@")).length<=256);
	}
	
	// Cacher un élément (p.ex. la feuille de perso)
	function cacher_element(element) {
		document.getElementById(element).style.display = "none";
	}
	
	// Afficher l'image d'une occasion
	function afficher_image_occasion(chemin_image, description_produit, position) {
		document.getElementById('image-du-produit').src = '';
		document.getElementById('image-du-produit').src = chemin_image;
		document.getElementById('description-du-produit').innerHTML = '';
		document.getElementById('description-du-produit').innerHTML = description_produit;
		document.getElementById('conteneur-de-l-image-du-produit').style.display = "block";
		document.getElementById('conteneur-de-l-image-du-produit').style.top = parseInt(250 + position) + "px";
	}
	
	/*****************************************************************************************************
	 * But          : Vérifier la quantité d'un produit (commande et panier)							 
 	 * Paramètre(s) : Identifiant du formulaire de commande												 
	 * Résultat     : Vrai si la quantité du produit est correcte 										 
	 *****************************************************************************************************/
	function verifier_quantite(identifiant) {
		document.getElementById("bouton-modifier-quantite-" + identifiant).disabled = true;
		if (document.getElementById("quantite-produit-" + identifiant).value == "" ||
			document.getElementById("quantite-produit-" + identifiant).value.search(/^[0-9]+$/) == -1) {
			alert("Veuillez entrer une quantité valide");
			document.getElementById("quantite-produit-" + identifiant).focus();
			document.getElementById("bouton-modifier-quantite-" + identifiant).disabled = false;
			return false;
		} else if (document.getElementById("stock") != null) {
			if (document.getElementById("quantite-produit-" + identifiant).value > document.getElementById("stock").value) {
				alert("La quantité commandée est supérieure au stock");
				document.getElementById("bouton-modifier-quantite-" + identifiant).disabled = false;
				return false;
			}
		} else {
			return true;
		}
	}
	
	
	/*****************************************************************************************************
	 * But          : Vérifier que l'utilisateur a confirmé la lecture et l'acceptation des C.G.		 
  	 * Paramètre(s) : aucun																				 
	 * Résultat     : Vrai si les C.G. sont acceptées												 	 
	 *****************************************************************************************************/
	function verifier_confirmation_cg() {
		if (!document.getElementById('cg-lues').checked) {
			alert("Veuillez confirmer que vous avez lu et que vous acceptez les conditions générales");
			document.getElementById('cg-lues').focus();
			return false;
		} else {
			return true;
		}
	}
	
	
	/*****************************************************************************************************
	 * But          : Confirmer une action									 
  	 * Paramètre(s) : le message de confirmation à affichier											 	
	 * Résultat     : Vrai si l'utilisateur confirme l'action										 
	 *****************************************************************************************************/
	function confirmer_action(message) {
		if (!confirm(message)) {
			return false;
		} else {
			return true;
		}
	}
	
	
	/************************************************************************************
	 * But          : Afficher message de confirmation pour la suppression d'un élément 
 	 * Paramètre(s) : L'identifiant, le message à afficher, et le nombre de produits	
	 * Résultat     : Vrai si l'enregistrement peut être supprimé						
	 ************************************************************************************/
	function confirmer_suppression(id, msg, nbr_prod) {
		if (nbr_prod==0){
			if (confirm(msg)) {
				if (document.getElementById('categorie-a-enfants-' + id) != null) {
					if (document.getElementById('categorie-a-enfants-' + id).value != 0) {
						alert("Cette catégorie contient des sous-catégories. Supprimez celles-ci avant tout.");
						return false;
					} else {
						alert("L'enregistrement va être supprimé");
						return true;
					}
				} else {
					alert("L'enregistrement va être supprimé");
					return true;
				}
				
			} else {
				alert("Suppression non effectuée");
				return false;
			}
		} else {
			alert("La rubrique concernée contient " + nbr_prod + " enregistrement(s) ! Veuillez d'abord le(s) supprimer");
			return false;
		}
	}
	
	/*************************************************************************************
	 * But          : Afficher message d'avertissement pour les champs vides 			 
 	 * Paramètre(s) : Identifiant correspondant											 
	 * Résultat     : Vrai si champs corrects											 
	 * Remarques 	: Cette en-tête concerne les marques, liens, catégories, options 	 
	 *				  (Administration)													 
	 *************************************************************************************/
	function verifier_recherche() {
		if (document.getElementById('champ-recherche-rapide').value == "") {
			alert("Veuillez entrer un texte à chercher");
			document.getElementById('champ-recherche-rapide').focus();
			return false;
		}
		return true;
	}
	
	function verifier_formulaire_marque(identifiant) {
		if (document.getElementById(identifiant).value == "") {
			alert("Veuillez entrer un nom");
			document.getElementById(identifiant).focus();
			return false;
		}	
	}
	
	function verifier_formulaire_categorie_lien(identifiant) {
		if (document.getElementById(identifiant).value == "") {
			alert("Veuillez entrer un nom de catégorie");
			document.getElementById(identifiant).focus();
			return false;
		}	
	}	
	
	function verifier_formulaire_categorie(identifiant) {
		if (document.getElementById(identifiant).value == "") {
			alert("Veuillez entrer un nom");
			document.getElementById(identifiant).focus();
			return false;
		}	
	}
	
	function verifier_formulaire_nouveau_lien(identifiant) {
		if (document.getElementById("txt-nom-nouveau-lien-"+ identifiant).value == "") {
			alert("Veuillez entrer un titre");
			document.getElementById("txt-nom-nouveau-lien-"+ identifiant).focus();
			return false;		
		} else if (document.getElementById("txt-url-nouveau-lien-"+ identifiant).value == "") {
			alert("Veuillez entrer une url");
			document.getElementById("txt-url-nouveau-lien-"+ identifiant).focus();
			return false;
		}
	}
	
	function verifier_formulaire_lien(identifiant) {
		if (document.getElementById("txt-nom-lien-"+ identifiant).value == "") {
			alert("Veuillez entrer un titre");
			document.getElementById("txt-nom-lien-"+ identifiant).focus();
			return false;		
		}else if (document.getElementById("txt-url-lien-"+ identifiant).value == "") {
			alert("Veuillez entrer une url");
			document.getElementById("txt-url-lien-"+ identifiant).focus();
			return false;
		}
	}
	
	function verifier_formulaire_echelle(identifiant) {
		if (document.getElementById(identifiant).value == "") {
			alert("Veuillez entrer un nom");
			document.getElementById(identifiant).focus();
			return false;
		}	
	}	
	
	function verifier_formulaire_option(identifiant) {
		if (document.getElementById("txt-nom-"+ identifiant).value == "") {
			alert("Veuillez entrer un nom");
			document.getElementById("txt-nom-"+ identifiant).focus();
			return false;		
		}else if (document.getElementById("txt-valeur-"+ identifiant).value == "") {
			alert("Veuillez entrer une valeur");
			document.getElementById("txt-valeur-"+ identifiant).focus();
			return false;
		}else if (isNaN(document.getElementById("txt-valeur-"+ identifiant).value)){
			alert("Veuillez entrer une valeur numérique");
			document.getElementById("txt-valeur-"+ identifiant).focus();
			return false;
		}
	}	
	
	
	/************************************************************************************
	 * But          : Vérifie les champs du formulaire pour les utilisateurs			
 	 * Paramètre(s) : aucun																
	 * Résultat     : Vrai si les champs sont corrects									
	 ************************************************************************************/
	function verifier_formulaire_utilisateur() {
		if (document.getElementById("prenom").value == "") {
			alert("Veuillez entrer votre prénom");
			document.getElementById("prenom").focus();
			return false;
		}
		else if (document.getElementById("nom").value == "") {
			alert("Veuillez entrer votre nom");
			document.getElementById("nom").focus();
			return false;
		}
		else if (document.getElementById("rue").value == "") {
			alert("Veuillez entrer votre rue");
			document.getElementById("rue").focus();
			return false;
		}
		else if (document.getElementById("npa").value == "") {
			alert("Veuillez entrer votre code postal");
			document.getElementById("npa").focus();
			return false;
		}
		else if (document.getElementById("ville").value == "") {
			alert("Veuillez entrer votre ville");
			document.getElementById("ville").focus();
			return false;
		}
		else if (document.getElementById("email").value == "") {
			alert("Veuillez entrer votre e-mail");
			document.getElementById("email").focus();
			return false;
		}
		else if (!bSyntaxeEmail(document.getElementById("email").value)) {
			alert("Veuillez entrer une adresse e-mail valide (p.ex. prenom.nom@domaine.com)");
			document.getElementById("email").focus();
			return false;
		}
		else if (document.getElementById("nom-utilisateur").value == "") {
			alert("Veuillez entrer un nom d'utilisateur");
			document.getElementById("nom-utilisateur").focus();
			return false;
		}
		else if (document.getElementById("mot-de-passe").value == "") {
			alert("Veuillez entrer un mot de passe");
			document.getElementById("mot-de-passe").focus();
			return false;
		}
		else if (document.getElementById("date-inscription") == null) {
			if (document.getElementById("confirmation-mot-de-passe").value == "") {
				alert("Veuillez confirmer le mot de passe");
				document.getElementById("confirmation-mot-de-passe").focus();
				return false;
			}
			
			if (document.getElementById("mot-de-passe").value != document.getElementById("confirmation-mot-de-passe").value) {
				alert("La confirmation du mot de passe est incorrecte");
				document.getElementById("confirmation-mot-de-passe").focus();
				return false;
			}
		}
		else if (document.getElementById("date-inscription") != null) {
			if (document.getElementById("nouveau-mot-de-passe").value != "" &&
				document.getElementById("confirmation-nouveau-mot-de-passe").value == "") {
				alert("Veuillez confirmer le mot de passe");
				document.getElementById("confirmation-nouveau-mot-de-passe").focus();
				return false;
			}
			
			if (document.getElementById("nouveau-mot-de-passe").value != "" &&
				document.getElementById("confirmation-nouveau-mot-de-passe").value != "" &&
				document.getElementById("nouveau-mot-de-passe").value != document.getElementById("confirmation-nouveau-mot-de-passe").value) {
				alert("La confirmation du mot de passe est incorrecte");
				document.getElementById("confirmation-nouveau-mot-de-passe").focus();
				return false;
			}
		}
		else {
			document.getElementById("bouton-inscription").disabled = true;
			return true;
		}
	}
	
	
	/************************************************************************************
	 * But          : Vérifie les champs du formulaire de connexion						
 	 * Paramètre(s) : aucun																
	 * Résultat     : Vrai si les champs sont corrects									
	 ************************************************************************************/
	function verifier_formulaire_connexion() {
		if (document.getElementById("nom-utilisateur-connexion").value == "") {
			alert("Veuillez entrer votre nom d'utilisateur");
			document.getElementById("nom-utilisateur-connexion").focus();
			return false;
		}
		else if (document.getElementById("mot-de-passe-connexion").value == "") {
			alert("Veuillez entrer votre mot de passe");
			document.getElementById("mot-de-passe-connexion").focus();
			return false;
		}
		else {
			document.getElementById("bouton-connexion").disabled = true;
			return true;
		}
	}
	
	
	/******************************************************************************************
	 * But          : Vérifie la validité d'une adresse e-mail (avec message d'avertissement) 
 	 * Paramètre(s) : aucun																	  
	 * Résultat     : Vrai si les champs sont corrects									      
	 ******************************************************************************************/
	function verifier_email() {
		if (document.getElementById("email").value == "") {
			alert("Veuillez entrer votre e-mail");
			document.getElementById("email").focus();
			return false;
		}
		else if (!bSyntaxeEmail(document.getElementById("email").value)) {
			alert("Veuillez entrer une adresse e-mail valide (p.ex. prenom.nom@domaine.com)");
			document.getElementById("email").focus();
			return false;
		}
		else {
			document.getElementById("bouton-envoyer").disabled = true;
			return true;
		}
	}
	
	
	/******************************************************************************************
	 * But          : Vérifie le contenu du formulaire d'ajout/modification de produit		  
 	 * Paramètre(s) : aucun																	  
	 * Résultat     : Vrai si les champs sont corrects										  
	 ******************************************************************************************/
	function verifier_formulaire_fiche_produit() {
		if (document.getElementById("modele-produit").value == "") {
			alert("Veuillez entrer un modèle");
			document.getElementById("modele-produit").focus();
			return false;
		}
		else if (document.getElementById("reference-produit").value == "") {
			alert("Veuillez entrer une référence");
			document.getElementById("reference-produit").focus();
			return false;
		}/*
		else if (document.getElementById("description-produit").value == "") {
			alert("Veuillez entrer une description");
			document.getElementById("description-produit").focus();
			return false;
		}
		else if (document.getElementById("stock-produit").value == "") {
			alert("Veuillez entrer une valeur pour le stock");
			document.getElementById("stock-produit").focus();
			return false;
		}
		else if (document.getElementById("stock-produit").value != "" &&
				 document.getElementById("stock-produit").value.search(/^[0-9]+$/) == -1) {
			alert("Veuillez entrer une valeur correcte pour le stock");
			document.getElementById("stock-produit").focus();
			return false;
		}
		else if (document.getElementById("prix-produit").value == "") {
			alert("Veuillez indiquer un prix");
			document.getElementById("prix-produit").focus();
			return false;
		}*/
		else if (document.getElementById("prix-produit").value != "" &&
				 isNaN(document.getElementById("prix-produit").value)) {
			alert("Veuillez entrer une valeur correcte pour le prix");
			document.getElementById("prix-produit").focus();
			return false;
		}
		else {
			document.getElementById("bouton-produit").disabled = true;
			return true;
		}
	}
	
	
	
	//====================================//
	// Utilisation de la technologie AJAX //
	//====================================//
	
	// L'objet XMLHTTPRequest (XHR) qui va servir à toutes les requêtes
	var req = new CreateXMLHTTPRequestObject();
	
	/************************************************************************************
	 * But          : Mettre à jour les frais de port 									
 	 * Paramètre(s) : Le type de livraison et le sous-total du panier					
	 * Résultat     : Les frais de port mis à jour										
	 * Remarque		: Aucune															
	 ************************************************************************************/
	// Envoyer la requête au fichier de vérification
	function mettre_a_jour_frais(type_de_livraison) {
		var sous_total_panier = document.getElementById("sous-total-panier").value.replace(/'/g, "");
		var parametres = "type_de_livraison=" + type_de_livraison + "&sous_total_panier=" + sous_total_panier;
		
		// Appeler le fichier de script PHP qui va effectuer la recherche en base de données
		if(req.getFilePost("scripts/mettre-a-jour-frais-de-port.php", parametres)) {
			setTimeout("checkResponseFraisPort()", 200);
		}
	}
	
	// Traiter la réponse de la requête
	function checkResponseFraisPort() {
		// Attendre la réponse de la requête
		if(!req.hasResponse()) {
			setTimeout("checkResponseFraisPort()", 200);
			return;
		}
		
		// Conserver la réponse, et libérer la requête
		var a = req.getResponse();
		req.validateRequest();
		var donnees = a.split(";");
		
		document.getElementById("frais-de-port").innerHTML = donnees[0];
		document.getElementById("prix-total-commande").innerHTML = donnees[1];
	}
	
	
	/************************************************************************************
	 * But          : Récupérer les coordonnées d'un utilisateur enregistré dans Crésus 
 	 * Paramètre(s) : L'utilisateur dont on cherche les coordonnées						
	 * Résultat     : Les coordonnées de l'utilisateur									
	 * Remarque		: Concept abandonné pour le moment									
	 ************************************************************************************/
	// Envoyer la requête au fichier de vérification
	function recuperer_coordonnees() {
		var nom = escape(document.getElementById("nom").value);
		var prenom = escape(document.getElementById("prenom").value);
		var auto_completion = document.getElementById("auto-completion").checked;
		
		// Si les deux champs (nom et prénom) sont bien remplis et que l'auto-complétion est activée,
		// on effectue la recherche
		if (nom != "" && prenom != "" && auto_completion) {
			
			// Appeler le fichier de script PHP qui va effectuer la recherche en base de données
			if(req.getFilePost("scripts/recuperer-coordonnees.php", "nom=" + nom + "&prenom=" + prenom)) {
				setTimeout("checkResponseRecupCoords()", 200);
			}
		} else {
			document.getElementById("rue").value = "";
			document.getElementById("npa").value = "";
			document.getElementById("ville").value = "";
			document.getElementById("email").value = "";
		}
	}
	
	// Traiter la réponse de la requête
	function checkResponseRecupCoords() {
		// Attendre la réponse de la requête
		if(!req.hasResponse()) {
			setTimeout("checkResponseRecupCoords()", 200);
			return;
		}
		
		// Conserver la réponse, et libérer la requête
		var a = req.getResponse();
		req.validateRequest();
		var donnees = a.split(";");
		
		document.getElementById("rue").value = donnees[0];
		document.getElementById("npa").value = donnees[1];
		document.getElementById("ville").value = donnees[2];
		document.getElementById("email").value = donnees[3];
	}
