
//--------------------------------------------------
// Suppression 
function confirmation_suppression(type, nom, numero)
{
	// Sécurités
	if (type.length <= 0)
		return;
	if (type == "membre" || type == "constructeur")
	{
		if (nom.length <= 0 || numero <= 0)
			return;
	}
	else if (type == "requete_suivi" || type == "requete_onair")
	{
		if (numero <= 0)
			return;
	}

	// Génération de la question
	var question = "";
	if (type == "membre")
		question = "Souhaitez-vous supprimer le membre " + nom + " de la base de données?\n\nATTENTION :\nCette suppression sera définitive!";
	else if (type == "constructeur")
		question = "Souhaitez-vous supprimer la compagnie " + nom + " de la base de données?\n\nATTENTION :\nCette suppression sera définitive!";
	else if (type == "requete_suivi" || type == "requete_onair")
		question = "Souhaitez-vous supprimer la requête n° " + numero + " de la base de données?\n\nATTENTION :\nCette suppression sera définitive!";
	else
		return;
	if (confirm(question))
	{
		// INDISPENSABLE - Nettoyage de l'objet requête
		requete = creerRequete();
	
		// Definition url de traitement
		var url = "/linked/ajax.php";
		
		// Definition requete
		requete.open("POST", url, true);
		requete.onreadystatechange = function() { validation_suppression(type, nom, numero); };
		requete.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		if (type == "membre")
			requete.send("type=" + "suppression_" + "membre" + "&nom=" + escape(nom) + "&numero=" + escape(numero));
		else if (type == "constructeur")
			requete.send("type=" + "suppression_" + "constructeur" + "&nom=" + escape(nom) + "&numero=" + escape(numero));
		else if (type == "requete_suivi" || type == "requete_onair")
			requete.send("type=" + "suppression_" + "requete" + "&nom=" + "&numero=" + escape(numero));
	}
}


//--------------------------------------------------
// Information de l'utilisateur que la suppression a bien eu lieu
function validation_suppression(type, nom, numero)
{
	if (requete.readyState == 4)
	{
		if (requete.status == 200)
		{
			if (type == "membre")
			{
				alert("Le membre " + nom + " a été supprimé de la base de données");
			}
			else if (type == "constructeur")
			{
				alert("La compagnie " + nom + " a été supprimé de la base de données");
			}
			else if (type == "requete_suivi" || type == "requete_onair")
			{
				alert("La requête n° " + numero + " a été supprimée de la base de données");
			}

			// EVOLUTION - Suppression de la ligne du tableau correspondant à l'évènement détruit
			// AUJOURD'HUI : réaffichage de la page
			if (type == "membre")
				window.location.href="admin_membres.php";
			else if (type == "constructeur")
				window.location.href="admin_compagnies.php";
			else if (type == "requete_suivi")
				window.location.href="gestion_requetes.php";
			else if (type == "requete_onair")
				window.location.href="onair.php";
		}
		else
		{
			// Message si erreur traitement script php
			var message = requete.getResponseHeader("Status");
			if ((message == null) || (message.length <= 0))
				alert("Erreur ! Le statut de la requête est " + requete.status);
			else
				alert(message);

			if (type == "membre")
				window.location.href="admin_membres.php";
			else if (type == "constructeur")
				window.location.href="admin_compagnies.php";
			else if (type == "requete_suivi")
				window.location.href="gestion_requetes.php";
			else if (type == "requete_onair")
				window.location.href="onair.php";
		}
	}
}


//--------------------------------------------------
// Utilisé dans gestion_requetes.php
// Nettoyage des zones d'erreur et désactivation des boutons de validation de modification
function nettoyage_modification_requete(mode)
	{
	// Boutons d'envoi - Il est important de désactiver les 2 au départ de cette fonction
	//var button_envoi = document.getElementById("envoi");
	//button_envoi.disabled = "disabled";
	activ("envoi", false);
	//var button_envoi_etat = document.getElementById("envoi_etat");
	activ("envoi_etat", false);
	//button_envoi_etat.disabled = "disabled";

	// Données relatives à l'affichage de la présence d'erreurs
	// IMPORTANT - il faut effacer les "*" d'erreurs pour les modes 0 et 1 !
	var div_erreurs = document.getElementById("div_erreurs");
	// Masquage de "div_erreurs"
	div_erreurs.className = "erreurs masque";
	// Masquage des "span" de "*" d'erreur - mode 0
	indique_erreur("span_date_deb", false);
	indique_erreur("span_date_fin", false);
	indique_erreur("span_constructeur", false);
	indique_erreur("span_produit_marque", false);
	indique_erreur("span_produit_modele", false);
	indique_erreur("span_version_old", false);
	indique_erreur("span_version_new", false);
	indique_erreur("span_maj", false);
	if (mode == 0 || mode == 1)
		indique_erreur("span_multiplex", false);
	indique_erreur("span_sid", false);
	indique_erreur("span_pid", false);
	indique_erreur("span_fichier", false);
	indique_erreur("span_md5", false);
	indique_erreur("span_comment", false);
	// Masquage des "span" de "*" d'erreur - mode 1
	indique_erreur("span_etat_validation", false);
	indique_erreur("span_commentaire_associe", false);
	}


//--------------------------------------------------
// Utilisé dans gestion_requetes.php
// Récupération des données d'une requête
// (Remplissage + affichage des formulaires de modification d'une requête (fonction de retour))
// mode = 0 : affichage du formulaire de modification d'une requête (état non inclus)
// mode = 1 : affichage du formulaire de modification de l'état d'une requête
function affichage_requete(numero, mode)
{
	nettoyage_modification_requete(mode);
	//alert(mode);

	// Definition url de traitement
	var url = "/linked/ajax.php";

	// INDISPENSABLE - Nettoyage de l'objet requête
	requete = creerRequete();
	
	// Definition requete
	requete.open("POST", url, true);
	requete.onreadystatechange = function() { maj_affichage_requete(numero, mode); };
	requete.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	requete.send("type=" + "get_requete" + "&numero=" + numero);
}


//--------------------------------------------------
// Remplissage + affichage du formulaire de modification d'une requête
// mode = 0 : affichage du formulaire de modification d'une requête (état non inclus)
// mode = 0.5 : affichage du formulaire de modification d'une requête (état et multiplex non inclus)
// mode = 1 : affichage du formulaire de modification de l'état d'une requête
function maj_affichage_requete(numero, mode)
{
	//alert(numero);
	if (requete.readyState == 4)
	{
		if (requete.status == 200)
		{
			/*
			// DEBUG SEULEMENT
			var reponse = requete.responseText;
			if (reponse.length > 0)
			{
				alert(reponse);
				return;
			}
			*/
			var i = 0;

			// noeuds DOM cibles
			var form_cible = document.getElementById("form_modif_requete");

			var div_cible = document.getElementById("modif_requete");
			var div_cible_1 = document.getElementById("modif_etat_requete");
			
			// Sécurités
			if ((div_cible == null) || (form_cible == null)) return;
			if (numero < 0) return;
			
			// Nettoyage des éléments du formulaire
			// Ce formulaire peut avoir été utilisé pour une autre requête
			form_cible.reset();
			
			// + nettoyage des span "constructeur" et "member" s'ils existent
			var span_member = null;
			var span_constructeur = null;
			//if (mode == 0)
			{
				span_member = document.getElementById("member");
				nettoyage_div(span_member);
				span_constructeur = document.getElementById("constructeur");
				nettoyage_div(span_constructeur);
			}
			 
			 
			// Remplissage du formulaire à partir des données récupérées
	    	var docXML = requete.responseXML;
			var recup_requete = docXML.getElementsByTagName("requete");
			if (recup_requete.length <= 0 || recup_requete.length > 1)
				return;

			// - numéro de requête dans les spans "num_requete" et "num_requete_2"
			var span_num_requete = document.getElementById("num_requete");
			nettoyage_div(span_num_requete);
			var span_num_requete_2 = document.getElementById("num_requete_2");
			nettoyage_div(span_num_requete_2);
			var n_texte = document.createTextNode(numero);
			var n_texte_2 = document.createTextNode(numero);
			span_num_requete.appendChild(n_texte);
			span_num_requete_2.appendChild(n_texte_2);

			//if (mode == 1)
			//{
				// - état "actuel" de la requête dans le span "span_etat_validation_actuel"
				var valeur_etat_validation = "";
				if (docXML.getElementsByTagName("etat_validation")[0].firstChild != null)
					valeur_etat_validation = docXML.getElementsByTagName("etat_validation")[0].firstChild.nodeValue.RLTrim();
				var valeur_etat_validation_libelle = "";
				if (docXML.getElementsByTagName("etat_validation_libelle")[0].firstChild != null)
					valeur_etat_validation_libelle = docXML.getElementsByTagName("etat_validation_libelle")[0].firstChild.nodeValue.RLTrim().XMLStrRestore();
				
				var span_etat_validation_actuel = document.getElementById("span_etat_validation_actuel");
				nettoyage_div(span_etat_validation_actuel);
				span_etat_validation_actuel.setAttribute("etat_validation_actuel", valeur_etat_validation);
				var n_texte_3 = document.createTextNode(valeur_etat_validation_libelle);
				span_etat_validation_actuel.appendChild(n_texte_3);

				// - état de la requête - également utilisation de "valeur_etat_validation"
				var select_etat_validation = document.getElementById("etat_validation");
				for (i = 0; i < select_etat_validation.options.length; i ++)
				{
					if (select_etat_validation.options[i].getAttribute("value") == valeur_etat_validation)
						select_etat_validation.options[i].selected = true;
					else
						select_etat_validation.options[i].selected = false;
				}
			/*
			}
			else if (mode == 0)
			{
			*/
				// - Marque - optionnel
				var xml_marque = null;
				xml_marque = docXML.getElementsByTagName("marque");
				var valeur_marque = '';
				if (xml_marque != null)
					if (xml_marque.length > 0)
						if (xml_marque[0].hasChildNodes())
							valeur_marque = docXML.getElementsByTagName("marque")[0].firstChild.nodeValue.RLTrim().XMLStrRestore();
				var input_marque = document.getElementById("produit_marque");
				input_marque.value = valeur_marque;
				//alert("valeur_marque = '" + valeur_marque + "'");
	
				// - Modèle
				var valeur_modele = "";
				if (docXML.getElementsByTagName("modele")[0].firstChild != null)
					valeur_modele = docXML.getElementsByTagName("modele")[0].firstChild.nodeValue.RLTrim().XMLStrRestore();
				var input_modele = document.getElementById("produit_modele");
				input_modele.value = valeur_modele;
	
				// - Version ancienne
				var valeur_version_old = "";
				if (docXML.getElementsByTagName("version")[0].firstChild != null)
					valeur_version_old = docXML.getElementsByTagName("version")[0].firstChild.nodeValue.RLTrim().XMLStrRestore();
				var input_version_old = document.getElementById("version_old");
				input_version_old.value = valeur_version_old;
	
				// - Nouvelle version
				var valeur_version_new = "";
				if (docXML.getElementsByTagName("version_new")[0].firstChild != null)
					valeur_version_new = docXML.getElementsByTagName("version_new")[0].firstChild.nodeValue.RLTrim().XMLStrRestore();
				var input_version_new = document.getElementById("version_new");
				input_version_new.value = valeur_version_new;
	
				// - Nature de la mise à jour (liste)
				var valeur_maj = -1;
				if (docXML.getElementsByTagName("nature_maj")[0].firstChild != null)
					valeur_maj = docXML.getElementsByTagName("nature_maj")[0].firstChild.nodeValue.RLTrim();
				var radio_maj = document.getElementsByName("maj");
				if (valeur_maj == 1) // new
					radio_maj[0].checked = true;
				else if (valeur_maj == 0) // old
					radio_maj[1].checked = true;
				else
					radio_maj[0].checked = true;
	
				// - date début
				var valeur_date_deb = "";
				if (docXML.getElementsByTagName("date_deb")[0].firstChild != null)
					valeur_date_deb = docXML.getElementsByTagName("date_deb")[0].firstChild.nodeValue.RLTrim();
				var input_date_deb = document.getElementById("date_deb");
				input_date_deb.value = valeur_date_deb;
				
				// - date fin
				var valeur_date_fin = "";
				if (docXML.getElementsByTagName("date_fin")[0].firstChild != null)
					valeur_date_fin = docXML.getElementsByTagName("date_fin")[0].firstChild.nodeValue.RLTrim();
				var input_date_fin = document.getElementById("date_fin");
				input_date_fin.value = valeur_date_fin;
				
				// - multiplex (liste)
				var valeur_id_multiplex = 0;
				if (mode != 0.5)
				{
					if (docXML.getElementsByTagName("id_multiplex")[0].firstChild != null)
						valeur_id_multiplex = parseInt(docXML.getElementsByTagName("id_multiplex")[0].firstChild.nodeValue.RLTrim());
					var select_multiplex = document.getElementById("multiplex");
					//alert(select_multiplex.options.length);
					if (valeur_id_multiplex > 0)
					for (i = 0; i < select_multiplex.options.length; i ++)
					{
						if (select_multiplex.options[i].getAttribute("value") == valeur_id_multiplex)
							select_multiplex.options[i].selected = true;
						else
							select_multiplex.options[i].selected = false;
					}
				}
				
				// On ne modifie pas le constructeur en mode "modification", même si la personne connectée 
				// est "AD".
				// - id_constructeur (non modifiable) - id_constructeur dans input "hidden"
				var valeur_id_constructeur = 0;
				if (docXML.getElementsByTagName("id_constructeur")[0].firstChild != null)
					valeur_id_constructeur = parseInt(docXML.getElementsByTagName("id_constructeur")[0].firstChild.nodeValue.RLTrim());
				var input_id_constructeur = document.getElementById("id_constructeur");
				input_id_constructeur.value = valeur_id_constructeur;
				
				// - constructeur (non modifiable) - constructeur dans span
				var valeur_constructeur = "";
				if (docXML.getElementsByTagName("constructeur")[0].firstChild != null)
					valeur_constructeur = docXML.getElementsByTagName("constructeur")[0].firstChild.nodeValue.RLTrim().XMLStrRestore();
				var span_constructeur = document.getElementById("constructeur");
				remplace_div(span_constructeur, valeur_constructeur);
	
				// - id_member (non modifiable) - id_member dans input "hidden"
				var valeur_id_member = 0;
				if (docXML.getElementsByTagName("id_member")[0].firstChild != null)
					valeur_id_member = parseInt(docXML.getElementsByTagName("id_member")[0].firstChild.nodeValue.RLTrim());
				var input_id_member = document.getElementById("id_member");
				input_id_member.value = valeur_id_member;
				
				// - member (non modifiable) - member dans span
				var valeur_member = "";
				if (docXML.getElementsByTagName("member")[0].firstChild != null)
					valeur_member = docXML.getElementsByTagName("member")[0].firstChild.nodeValue.RLTrim().XMLStrRestore();
				var span_member = document.getElementById("member");
				remplace_div(span_member, valeur_member);
	
				// - zone de commentaires
				var valeur_comment = "";
				if (docXML.getElementsByTagName("comment")[0].firstChild != null)
					valeur_comment = docXML.getElementsByTagName("comment")[0].firstChild.nodeValue.RLTrim().XMLStrRestore();
				var textarea_comment = document.getElementById("comment");
				textarea_comment.value = valeur_comment;
				
				// - sid
				var valeur_sid = "";
				if (docXML.getElementsByTagName("sid")[0].firstChild != null)
					valeur_sid = docXML.getElementsByTagName("sid")[0].firstChild.nodeValue.RLTrim().XMLStrRestore();
				var input_sid = document.getElementById("sid");
				input_sid.value = valeur_sid;

				// - pid
				var valeur_pid = "";
				if (docXML.getElementsByTagName("pid")[0].firstChild != null)
					valeur_pid = docXML.getElementsByTagName("pid")[0].firstChild.nodeValue.RLTrim().XMLStrRestore();
				var input_pid = document.getElementById("pid");
				input_pid.value = valeur_pid;
				
				// - nom du fichier
				var valeur_fichier = "";
				if (docXML.getElementsByTagName("fichier")[0].firstChild != null)
					valeur_fichier = docXML.getElementsByTagName("fichier")[0].firstChild.nodeValue.RLTrim().XMLStrRestore();
				var input_fichier = document.getElementById("fichier");
				input_fichier.value = valeur_fichier;
				
				// - md5
				var valeur_md5 = "";
				if (docXML.getElementsByTagName("md5")[0].firstChild != null)
					valeur_md5 = docXML.getElementsByTagName("md5")[0].firstChild.nodeValue.RLTrim().XMLStrRestore();
				var input_md5 = document.getElementById("md5");
				input_md5.value = valeur_md5;
			//}

			// Affichage du formulaire et du bouton de validation
			if (mode == 0 || mode == 0.5)
			{
				div_cible.className = "affiche";
				div_cible_1.className = "masque";
			}
			else if (mode == 1)
			{
				div_cible.className = "masque";
				div_cible_1.className = "affiche";
			}
			
			// Déplacement de la fenêtre à hauteur du formulaire
			document.location.hash = "#hash_modif_requete";
		}
		else
		{
			// Message si erreur traitement script php
			var message = requete.getResponseHeader("Status");
			if ((message == null) || (message.length <= 0))
				alert("Erreur ! Le statut de la requête est " + requete.status);
			else
				alert(message);
		}
	}
}


//--------------------------------------------------
// Utilisé dans gestion_requetes.php et requete.php
// Récupération des données des formulaires de modification ou création d'une requête
// puis mise à jour de la table 'maj' par script php
//
// mode = 0 : modif de tout sauf l'état (modif par 'AD')
// mode = 0.5 : modif de tout sauf l'état et le multiplex (modif par 'MW')
// mode = 1 : modif de l'état + envoi mail constructeur
// mode = 2 : création d'une nouvelle requête par admin pour un constructeur
// mode = 3 : création d'une nouvelle requête par un constructeur
//
function modification_requete(mode)
{
	nettoyage_modification_requete(mode);
	var div_erreurs = document.getElementById("div_erreurs");
	var occ_erreur = false; // occurrence_erreur

	// Récupération du numéro de requête dans le span "num_requete"
	// IMPORTANT - on définit numéro égal à -1 si mode == 2
	if (mode == 0 || mode == 0.5 || mode == 1)
	{
		var span_num_requete = document.getElementById("num_requete");
		if (span_num_requete == null) return;
		numero = span_num_requete.firstChild.nodeValue;
		if (numero.length <= 0) return;
	}
	else if (mode == 2 || mode == 3)
		numero = -1;

	// mode == 0 => récupération des données de la requête SAUF l'état
	if (mode == 0 || mode == 0.5 || mode == 2 || mode == 3)
	{
		// Champs relatifs à une requête - mode 0
		var input_date_deb = document.getElementById("date_deb");
		var input_date_fin = document.getElementById("date_fin");
		var select_constructeur = null;
		if (mode == 0 || mode == 0.5)
			select_constructeur = document.getElementById("id_constructeur");
		else
			select_constructeur = document.getElementById("constructeur");
		var input_id_member = document.getElementById("id_member");
		var input_produit_marque = document.getElementById("produit_marque");
		var input_produit_modele = document.getElementById("produit_modele");
		var input_version_old = document.getElementById("version_old");
		var input_version_new = document.getElementById("version_new");
		var radio_maj = document.getElementsByName("maj");
		if (mode == 0)
			var select_multiplex = document.getElementById("multiplex");
		var input_sid = document.getElementById("sid");
		var input_pid = document.getElementById("pid");
		var input_fichier = document.getElementById("fichier");
		var input_md5 = document.getElementById("md5");
		var textarea_comment = document.getElementById("comment");

		// REMARQUE - test de chaque valeur
		// Si erreur : affichage d'une "*" rouge à l'aide de la fonction "indique_erreur"
		// qui prend en argument l'id d'un span contenant le "*"
		
		// Date début
		var valeur_date_deb = input_date_deb.value.RLTrim();
		if (!validation_date(valeur_date_deb))
		{ indique_erreur("span_date_deb", true); occ_erreur = true; }
		//alert(valeur_date_deb);
		
		// Date fin
		var valeur_date_fin = input_date_fin.value.RLTrim();
		if (!validation_date(valeur_date_fin))
		{ indique_erreur("span_date_fin", true); occ_erreur = true; }
		//alert(valeur_date_fin);
		
		// Marque produit - optionnel
		var valeur_produit_marque = input_produit_marque.value.RLTrim();
		//if (valeur_produit_marque.length <= 0)
		//{ indique_erreur("span_produit_marque", true); occ_erreur = true; }
		//alert(valeur_produit_marque);

		// Modele produit
		var valeur_produit_modele = input_produit_modele.value.RLTrim();
		if (valeur_produit_modele.length <= 0)
		{ indique_erreur("span_produit_modele", true); occ_erreur = true; }
		//alert(valeur_produit_modele);

		// Version old
		var valeur_version_old = input_version_old.value.RLTrim();
		if (valeur_version_old.length <= 0)
		{ indique_erreur("span_version_old", true); occ_erreur = true; }
		//alert(valeur_version_old);

		// Version new
		var valeur_version_new = input_version_new.value.RLTrim();
		if (valeur_version_new.length <= 0)
		{ indique_erreur("span_version_new", true); occ_erreur = true; }
		//alert(valeur_version_new);

		var valeur_multiplex = 0;
		if (mode == 0)
		{
		// Multiplex
		valeur_multiplex = parseInt(select_multiplex.options[select_multiplex.selectedIndex].value.RLTrim());
		if (valeur_multiplex <= 0)
			{ indique_erreur("span_multiplex", true); occ_erreur = true; }
		//alert(valeur_multiplex);
		}

		// Constructeur
		var valeur_constructeur = -1;
		if (mode == 3)
		{
			valeur_constructeur = parseInt(select_constructeur.value.RLTrim());
		}
		else if (mode == 2)
		{
			valeur_constructeur = parseInt(select_constructeur.options[select_constructeur.selectedIndex].value.RLTrim());
			if (valeur_constructeur <= 0)
			{ indique_erreur("span_constructeur", true); occ_erreur = true; }
		}
		else if (mode == 0.5 || mode == 3)
		{
			valeur_constructeur = parseInt(select_constructeur.value.RLTrim());
		}
		//alert(valeur_constructeur);
		
		// Member
		var valeur_member = parseInt(input_id_member.value.RLTrim());
		//alert(valeur_member);
		
		// Nature mise à jour
		var valeur_maj = '';
		for (i = 0; i < radio_maj.length; i ++)
		if (radio_maj[i].checked == true)
		{
			//alert("coucou1_" + i + " = " + radio_maj[i].getAttribute("value"));
			valeur_maj = radio_maj[i].getAttribute("value").RLTrim();
		}
		if ((valeur_maj != "old") && (valeur_maj != "new"))
			{ indique_erreur("span_maj", true); occ_erreur = true; }
		
		// sid
		var valeur_sid = input_sid.value.RLTrim();
		if (valeur_sid.length <= 0)
		{ indique_erreur("span_sid", true); occ_erreur = true; }

		// pid
		var valeur_pid = input_pid.value.RLTrim();
		if (valeur_pid.length <= 0)
		{ indique_erreur("span_pid", true); occ_erreur = true; }

		// Nom fichier
		var valeur_fichier = input_fichier.value.RLTrim();
		if (valeur_fichier.length <= 0)
		{ indique_erreur("span_fichier", true); occ_erreur = true; }
		//alert(valeur_fichier);

		// md5
		var valeur_md5 = input_md5.value.RLTrim();
		//if (valeur_md5.length <= 0)
		//{ indique_erreur("span_md5", true); occ_erreur = true; }
		//alert(valeur_md5);

		// Commentaire
		var valeur_comment = textarea_comment.value.RLTrim();
		if (valeur_comment.length <= 0)
		{ indique_erreur("span_comment", true); occ_erreur = true; }
		//alert(valeur_comment);
		
		// Affichage du message "Présence d'erreurs"
		if (occ_erreur == true)
		{
			div_erreurs.className = "erreurs affiche";
			return;
		}

		var question = "";
		if (mode == 0 || mode == 0.5)
			question = "Confirmez-vous la modification de la requête?\n";	
		else if (mode == 2 || mode == 3)
			question = "Confirmez-vous la création d'une nouvelle requête?\n";	
		if (!confirm(question))
			return;
	}

	// mode == 1 => récupération de l'état et du commentaire associé
	else if (mode == 1)
	{
		// Champs relatifs à une requête - mode 1
		var span_etat_validation_actuel = document.getElementById("span_etat_validation_actuel");
		var select_etat_validation = document.getElementById("etat_validation");
		var textarea_commentaire_associe = document.getElementById("commentaire_associe");

		// Récupération de l'état avant modification de la requête dans le span "span_etat_validation_actuel"
		if (span_etat_validation_actuel == null) return;
		valeur_etat_validation_actuel = span_etat_validation_actuel.getAttribute("etat_validation_actuel").RLTrim();
		if (valeur_etat_validation_actuel < 0) return;

		var valeur_etat_validation = parseInt(select_etat_validation.options[select_etat_validation.selectedIndex].getAttribute("value").RLTrim());
		if (valeur_etat_validation < 0)
		{ indique_erreur("span_etat_validation", true); occ_erreur = true; }
		
		// return si pas de modification d'état entre "etat_validation_actuel" et "etat_validation"
		//if (valeur_etat_validation_actuel == valeur_etat_validation)
		//	return;
		
		valeur_commentaire_associe = textarea_commentaire_associe.value.RLTrim();
		//alert(valeur_commentaire_associe);
		if (valeur_commentaire_associe.length <= 0)
		{ indique_erreur("span_commentaire_associe", true); occ_erreur = true; }
		
		// Affichage du message "Présence d'erreurs"
		if (occ_erreur == true)
		{
			div_erreurs.className = "erreurs affiche";
			return;
		}

		var question = "La modification de l'état d'une requête\n";	
		question += "entraîne l'envoi d'un e-mail de notification\n";
		question += "au créateur de la requête.\n\n";
		question += "Souhaitez-vous poursuivre l'opération?";
		if (!confirm(question))
			return;
	}
	

	// Definition url de traitement
	var url = "/linked/ajax.php";

	// INDISPENSABLE - Nettoyage de l'objet requête
	requete = creerRequete();
	
	// Definition requete
	requete.open("POST", url, true);
	requete.onreadystatechange = function() { validation_modification(numero, mode); };
	requete.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	if (mode == 0)
		requete.send("type=" + "modification_requete" 
		+ "&numero=" + numero 
		+ "&date_deb=" + escape(valeur_date_deb) 
		+ "&date_fin=" + escape(valeur_date_fin) 
		+ "&id_multiplex=" + valeur_multiplex 
		+ "&marque=" + escape(valeur_produit_marque) 
		+ "&modele=" + escape(valeur_produit_modele) 
		+ "&nature_maj=" + valeur_maj 
		+ "&version=" + escape(valeur_version_old) 
		+ "&version_new=" + escape(valeur_version_new) 
		+ "&sid=" + escape(valeur_sid) 
		+ "&pid=" + escape(valeur_pid) 
		+ "&fichier=" + escape(valeur_fichier) 
		+ "&md5=" +  escape(valeur_md5) 
		+ "&comment=" + escape(valeur_comment) 
		);
	else if (mode == 0.5)
		requete.send("type=" + "modification_requete" 
		+ "&numero=" + numero 
		+ "&date_deb=" + escape(valeur_date_deb) 
		+ "&date_fin=" + escape(valeur_date_fin) 
		+ "&id_multiplex=" + valeur_multiplex 
		+ "&marque=" + escape(valeur_produit_marque) 
		+ "&modele=" + escape(valeur_produit_modele) 
		+ "&nature_maj=" + valeur_maj 
		+ "&version=" + escape(valeur_version_old) 
		+ "&version_new=" + escape(valeur_version_new) 
		+ "&sid=" + escape(valeur_sid) 
		+ "&pid=" + escape(valeur_pid) 
		+ "&fichier=" + escape(valeur_fichier) 
		+ "&md5=" +  escape(valeur_md5) 
		+ "&comment=" + escape(valeur_comment) 
		);
	else if (mode == 1)
		requete.send("type=" + "modification_etat_requete" 
		+ "&numero=" + numero 
		+ "&valeur_etat_validation=" + valeur_etat_validation 
		+ "&commentaire_associe=" + escape(valeur_commentaire_associe)
		);
	else if (mode == 2)
		requete.send("type=" + "creation_requete_admin" 
		+ "&date_deb=" + escape(valeur_date_deb) 
		+ "&date_fin=" + escape(valeur_date_fin) 
		+ "&marque=" + escape(valeur_produit_marque) 
		+ "&modele=" + escape(valeur_produit_modele) 
		+ "&nature_maj=" + valeur_maj 
		+ "&version=" + escape(valeur_version_old) 
		+ "&version_new=" + escape(valeur_version_new) 
		+ "&sid=" + escape(valeur_sid) 
		+ "&pid=" + escape(valeur_pid) 
		+ "&fichier=" + escape(valeur_fichier) 
		+ "&md5=" +  escape(valeur_md5) 
		+ "&comment=" + escape(valeur_comment) 
		+ "&id_constructeur=" + valeur_constructeur 
		+ "&id_member=" + valeur_member
		);
	else if (mode == 3)
		requete.send("type=" + "creation_requete_member" 
		+ "&date_deb=" + escape(valeur_date_deb) 
		+ "&date_fin=" + escape(valeur_date_fin) 
		+ "&marque=" + escape(valeur_produit_marque) 
		+ "&modele=" + escape(valeur_produit_modele) 
		+ "&nature_maj=" + valeur_maj 
		+ "&version=" + escape(valeur_version_old) 
		+ "&version_new=" + escape(valeur_version_new) 
		+ "&sid=" + escape(valeur_sid) 
		+ "&pid=" + escape(valeur_pid) 
		+ "&fichier=" + escape(valeur_fichier) 
		+ "&md5=" + escape(valeur_md5) 
		+ "&comment=" + escape(valeur_comment) 
		+ "&id_constructeur=" + valeur_constructeur 
		+ "&id_member=" + valeur_member
		);
}


//--------------------------------------------------
// Information sur la réalisation de la modification ou de la création d'une requête
// mode = 0 : modif de tout sauf l'état (modif par 'AD')
// mode = 0.5 : modif de tout sauf l'état ni du multiplex (modif par 'MW')
// mode = 1 : modif de l'état + envoi mail constructeur
// mode = 0 : création - IMPORTANT : numero = -1 puisque inutilisé
function validation_modification(numero, mode)
{
	if (requete.readyState == 4)
	{
		if (requete.status == 200)
		{
			var form_cible = document.getElementById("form_modif_requete");
			var div_cible = document.getElementById("div_resultat");
			nettoyage_div(div_cible);
			div_cible.className = "resultat masque";
			/*
			div_cible.className = "resultat masque";

			// Nettoyage des éléments du formulaire pour une prochaine requête
			form_cible.reset();
			nettoyage_modification_requete();
			*/
			// nettoyage des span "constructeur" et "member" s'ils existent
			var span_member = null;
			var span_constructeur = null;
			if (mode == 0)
			{
				span_member = document.getElementById("member");
				nettoyage_div(span_member);
				span_constructeur = document.getElementById("constructeur");
				nettoyage_div(span_constructeur);
			}

			// Message de fin de requête + fin nettoyage
			if (mode == 0 || mode == 0.5)
			{
				//remplace_div(div_cible, "La requête n° " + numero + " a été mise à jour.")
				//div_cible.className = "resultat affiche";
				alert("La requête n° " + numero + " a été mise à jour.");
				
				// Nettoyage des éléments du formulaire pour une prochaine requête
				form_cible.reset();
				nettoyage_modification_requete(mode);

				// EVOLUTION - mise à jour "DOM" du tableau des requêtes
				// AUJOURD'HUI : réaffichage de la page
				window.location.href = "gestion_requetes.php";
			}
			else if (mode == 1)
			{
				// Récupération de l'intitulé du (nouvel) état
				var select_etat_validation = document.getElementById("etat_validation");
				//alert(select_etat_validation);
				var valeur_etat_validation = '';
				valeur_etat_validation = select_etat_validation.options[select_etat_validation.selectedIndex].text;
				//alert(select_etat_validation.selectedIndex);
				
				//remplace_div(div_cible, "La requête n° " + numero + " est passée à l'état \"" + valeur_etat_validation + "\".")
				//div_cible.className = "resultat affiche";
				alert("La requête n° " + numero + " est passée à l'état '" + valeur_etat_validation + "'.");

				// Nettoyage des éléments du formulaire pour une prochaine requête
				form_cible.reset();
				nettoyage_modification_requete(mode);

				// EVOLUTION - mise à jour "DOM" du tableau des requêtes
				// AUJOURD'HUI : réaffichage de la page
				window.location.href = "gestion_requetes.php";
			}
			else if (mode == 2)
			{
				remplace_div(div_cible, "Création effective d'une nouvelle requête.")
				div_cible.className = "resultat affiche";
				//alert("Création effective d'une nouvelle requête.");
				
				// Nettoyage des éléments du formulaire pour une prochaine requête
				form_cible.reset();
				nettoyage_modification_requete(mode);

				// EVOLUTION - mise à jour "DOM" du tableau des requêtes
				// AUJOURD'HUI : réaffichage de la page
				//window.location.href="?mdr=2";
			}
			else if (mode == 3)
			{
				remplace_div(div_cible, "Création effective d'une nouvelle requête.")
				div_cible.className = "resultat affiche";
				//alert("Création effective d'une nouvelle requête.");
				
				// Nettoyage des éléments du formulaire pour une prochaine requête
				form_cible.reset();
				nettoyage_modification_requete(mode);
	
				// EVOLUTION - mise à jour "DOM" du tableau des requêtes
				// AUJOURD'HUI : réaffichage de la page
				//window.location.href="?mdr=2";
			}
		}
		else
		{
			// Message si erreur traitement script php
			var message = requete.getResponseHeader("Status");
			if ((message == null) || (message.length <= 0))
				alert("Erreur ! Le statut de la requête est " + requete.status);
			else
				alert(message);

			var div_cible = document.getElementById("div_resultat");
			nettoyage_div(div_cible);
			div_cible.className = "resultat masque";
			
			// Remarque - IMPORTANT - pas de redirection si erreur côté script php
			// EVITE à l'utilisateur de TOUT RETAPER
		}
	}
}


//--------------------------------------------------
//--------------------------------------------------


