//Objet servant à l'édition de la valeur dans la page
var champ = null;

//On ne pourra éditer qu'une valeur à la fois
var editionEnCours = false;

//variable évitant une seconde sauvegarde lors de la suppression de l'input
var sauve = false;

//Fonction de modification inline de l'élément double-cliqué
function inlineMod(id, obj, nomChamp, classe, fichier, b, p2)
{

	if (editionEnCours)
	{
		return false;
	}
	else
	{
		editionEnCours = true;
		sauve = false;
		document.getElementById("messages").innerHTML = '';
		document.getElementById("messages").className = "hidden";
	}
	
	//Création de l'objet dont le nom de classe est passé en paramètre
	champ = eval('new ' + classe + '();');
	
	//Assignation des différentes propriétés
	champ.valeur = html_entity_decode(obj.innerText ? obj.innerText : obj.textContent);
	//champ.valeur = trim(champ.valeur);
	
	champ.id = id;
	champ.nomChamp = nomChamp;
	champ.className = "message";

	//Remplacement du texte par notre objet input
	champ.remplacerTexte(obj, sauverMod, fichier, b, p2);

	//"Activation" du champ (focus, sélection ou autres...)
	champ.activerChamp();
}


//Objet XMLHTTPRequest
var XHR = null;

//Fonction de sauvegarde des modifications apportées
function sauverMod(fichier, b, p2)
{
	//Si on a déjà sauvé la valeur en cours, on sort
	if (sauve)
	{
		return false;
	}
	else
	{
		sauve = true;
	}

	//Vérification d'erreur
	if(champ.erreur())
	{
		document.getElementById("messages").className = "normalb show";
		document.getElementById("messages").innerHTML = champ.texteErreur;
		sauve = false;
		return false;
	}
		
	//Si l'objet existe déjà on abandonne la requête et on le supprime
	if(XHR && XHR.readyState != 0)
	{
		XHR.abort();
		delete XHR;
	}

	//Création de l'objet XMLHTTPRequest
	XHR = getAjax();

	if (!XHR)
	{
		return false;
	}

	//On se sert de l'événement OnReadyStateChange pour supprimer l'input et le replacer par son contenu
	XHR.onreadystatechange = function()
	{
		//Si le chargement est terminé
		if (XHR.readyState == 4 && req.status == 200 )
			//Réinitialisation de la variable d'état d'édition
			editionEnCours = false;
	
			//Sortie du mode d'édition
			champ.terminerEdition();

			if (!XHR.responseText)
			{
				//Réinitialisation de l'affichage d'erreur
				document.getElementById("messages").innerHTML = '';
				document.getElementById("messages").className = "hidden";
				sauve = false;
				return false;
			}
			else //S'il y a une réponse texte, c'est une erreur PHP
			{
				//Affichage du message
				document.getElementById("messages").className = "normalb show";
				document.getElementById("messages").innerHTML = XHR.responseText;
				sauve = true;
				return true;
			}
	}

	if (champ.nomChamp == 'n_text' || champ.nomChamp == 'n_proposition' || champ.nomChamp == 'r_proposition')
	{
		url = fichier + ".php?b=" + b + "&champ=" + escape(champ.nomChamp) + "&p2=" + p2 + "&p3=" + champ.id + "&echap=" + champ.echaperValeur() + ieTrick();
		p1 = "p1=" + encodeURI(champ.getValeur());
		XHR.open("POST", url, true);
		XHR.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		XHR.send(p1);
	}
	else
	{
		url = fichier + ".php?b=" + b + "&champ=" + escape(champ.nomChamp) + "&p1=" + encodeURI(champ.getValeur()) + "&p2=" + p2 + "&p3=" + champ.id + "&echap=" + champ.echaperValeur() + ieTrick();
		//URL du script de sauvegarde auquel on passe la requête à exécuter
		XHR.open("GET", url, true);
		//XHR.setRequestHeader('Content-Type','text/html; charset=iso-8859-1');

		//Envoi de la requête
		XHR.send(null);
	}
}
