// retourne un objet xmlHttpRequest.
// méthode compatible entre tous les navigateurs (IE/Firefox/Opera)
function getXMLHTTP()
{
    var xhr = null;
    if(window.XMLHttpRequest)
    { // Firefox et autres
        xhr = new XMLHttpRequest();
    }
    else if(window.ActiveXObject)
    { // Internet Explorer
        try
        {
            xhr = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch(e)
        {
            try
            {
                xhr = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch(e1)
            {
                xhr = null;
            }
        }
    }
    else
    { // XMLHttpRequest non supporté par le navigateur
        alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
    }

    return xhr;
}


//Fonction renvoyant le code de la touche appuyée lors d'un événement clavier
function getKeyCode(evenement)
{
    for (prop in evenement)
    {
        if(prop == 'which')
        {
            return evenement.which;
        }
    }

    return event.keyCode;
}


//Fonction renvoyant une valeur "aléatoire" pour forcer le navigateur (ie...)
//à envoyer la requête de mise à jour
function ieTrick(sep)
{
	d = new Date();
	trick = d.getYear() + "ie" + d.getMonth() + "t" + d.getDate() + "r" + d.getHours() + "i" + d.getMinutes() + "c" + d.getSeconds() + "k" + d.getMilliseconds();

	if (sep != "?")
	{
		sep = "&";
	}

	return sep + "ietrick=" + trick;
}


//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;

var sauve_vote  = false;

var sauve_com   = false;
var sauve_com_p = false;
var sauve_com_m = false;

var sauve_id = new Array();

function inlineMod_vote(id, nomValeur, table, nombre)
{
	if(sauve_vote)
	{
		alert("Vous avez déjà voté !");
		return false;
	}
	else
	{
		sauve_vote = false;
	}

	sauverMod_vote(id, nomValeur, table, nombre);
}

function inlineMod_commentaire_plus(id, nomValeur, table, nombre)
{
		if(sauve_com)
	{
		alert("Vous avez déjà donné votre avis !");
		return false;
	}
	else
	{
		sauve_com = false;
	}

	sauverMod_commentaire_plus(id, nomValeur, table, nombre);
}

function inlineMod_commentaire_moins(id, nomValeur, table, nombre)
{
	if(sauve_com)
	{
		alert("Vous avez déjà donné votre avis !");
		return false;
	}
	else
	{
		sauve_com = false;
	}

	sauverMod_commentaire_moins(id, nomValeur, table, nombre);
}

function inlineMod_chek(id, obj, nomValeur, type, table)
{
	var valeur;
	
	if(editionEnCours)
	{
		return false;
	}
	else
	{
		editionEnCours = true;
		sauve = false;
	}

	if (obj.checked == true )
	{
		valeur = "1";
	}
	else
	{
		valeur = "0";
	}
	//alert(obj.checked);
	//alert(valeur);
	
	
	sauverMod(id, obj, nomValeur, valeur, type, table);
}

function inlineMod_chek_statut(id, obj, nomValeur, type, table)
{
	var valeur;
	
	if(editionEnCours)
	{
		return false;
	}
	else
	{
		editionEnCours = true;
		sauve = false;
	}

	valeur = obj.value;

	//alert(valeur);
	
	
	sauverMod(id, obj, nomValeur, valeur, type, table);
}

var XHR = null;

function sauverMod_vote(id, nomValeur, table, nombre)
{
	//Si on a déjà sauvé la valeur en cours, on sort
	if(sauve_vote)
	{
		return false;
	}
	else
	{
		sauve_vote = 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 = getXMLHTTP();

	if(!XHR)
	{
		return false;
	}

	//URL du script de sauvegarde auquel on passe la valeur à modifier
	XHR.open("GET", "scripts/script_" + table + ".php?id=" + id + "&table=" + table + "&champ=" + nomValeur + "&nombre=" + nombre + ieTrick(), true);

	//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 && sauve_vote == false )
		{
			//Réinitialisation de la variable d'état d'édition
			editionEnCours = false;
			nombre = nombre + 1;
			document.getElementById("vote").innerHTML = "(" + nombre + ")";
			sauve_vote = true;
		}
	}

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

function sauverMod_commentaire_plus(id, nomValeur, table, nombre)
{
	if(XHR && XHR.readyState != 0){
		XHR.abort();
		delete XHR;}

	XHR = getXMLHTTP();

	if(!XHR){return false;}

	XHR.open("GET", "scripts/script_" + table + ".php?id=" + id + "&table=" + table + "&champ=" + nomValeur + "&nombre=" + nombre + ieTrick(), true);

	XHR.onreadystatechange = function(){
		if (XHR.readyState == 4 && sauve_com == false ){
			editionEnCours = false;
			nombre = nombre + 1;
			document.getElementById( nomValeur + "_" + id ).innerHTML = nombre ;}
		var sauve_com = true;}

	XHR.send(null);
}

function sauverMod_commentaire_moins(id, nomValeur, table, nombre)
{
	//Si on a déjà sauvé la valeur en cours, on sort
	//alert(sauve_com_m);
	
	if(sauve_com)
	{
		return false;
	}
	else
	{
		sauve_com = false;
	}
	
	//alert(sauve_com_m);

	//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 = getXMLHTTP();

	if(!XHR)
	{
		return false;
	}

	//URL du script de sauvegarde auquel on passe la valeur à modifier
	XHR.open("GET", "scripts/script_" + table + ".php?id=" + id + "&table=" + table + "&champ=" + nomValeur + "&nombre=" + nombre + ieTrick(), true);

	//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é
		//alert(sauve_com_m);
		if (XHR.readyState == 4 && sauve_com == false )
		{
			//Réinitialisation de la variable d'état d'édition
			editionEnCours = false;
			
			nombre = nombre + 1;
			document.getElementById( nomValeur + "_" + id ).innerHTML = nombre ;
			sauve_com = true;
		}
		//alert(sauve_com_m);
	
	}

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

function sauverMod(id, obj, nomValeur, valeur, type, table)
{
	//Si on a déjà sauvé la valeur en cours, on sort
	if(sauve)
	{
		return false;
	}
	else
	{
		sauve = true;		
	}

	//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 = getXMLHTTP();

	if(!XHR)
	{
		return false;
	}

	//URL du script de sauvegarde auquel on passe la valeur à modifier
	XHR.open("GET", "scripts/sauverMod.php?id=" + id + "&table=" + table + "&champ=" + nomValeur + "&valeur=" + escape(valeur) + "&type=" + type + ieTrick(), true);

	//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)
		{
			//Réinitialisation de la variable d'état d'édition
			editionEnCours = false;
		}
	}

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