// JavaScript Document
var XHR = null;
var editionmatchsencours = false; 
//variable évitant une seconde sauvegarde lors de la suppression de l'input
var sauvematch = false;

// Fonction générale

//Suppression des espaces/sauts de ligne inutiles
function trim(value) {
   var temp = value;
   var obj = /^(\s*)([\W\w]*)(\b\s*$)/;
   if (obj.test(temp)) { temp = temp.replace(obj, '$2'); }
   var obj = /  /g;
   while (temp.match(obj)) { temp = temp.replace(obj, " "); }
   return temp;
}


//Fonction donnant la largeur en pixels du texte donné
function getTextWidth(texte)
{
	//Valeur par défaut : 150 pixels
	var largeur = 150;

	if(trim(texte) == "")
	{
		return largeur;
	}

	//Création d'un span caché que l'on "mesurera"
	var span = document.createElement("span");
	span.style.visibility = "hidden";
	span.style.position = "absolute";

	//Ajout du texte dans le span puis du span dans le corps de la page
	span.appendChild(document.createTextNode(texte));
	document.getElementsByTagName("body")[0].appendChild(span);

	//Largeur du texte
	largeur = span.offsetWidth;

	//Suppression du span
	document.getElementsByTagName("body")[0].removeChild(span);
	span = null;

	return largeur;
}




//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 evenement.keyCode;
}


// renvoie une valeur aléatoire : dans le but de forcer le navigateur à envoyer la requéte sans utiliser le cache
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;
}


/////////////////////////////////////////////////////////////////////////////////////////////
// Fonction de creation de l'objet XMLHttpRequest qui resservira pour chaques fonctions AJAX
//////////////////////////////////////////////////////////////////////////////////////////////

function getXhr()
 {   
    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;
 }

function ajaxmodify(id_src,php_cible)
{
  XHR=getXhr();
  XHR.onreadystatechange = function()
   {
	      // Nous remplacons le contenu du div par le retour de php_cible
      document.getElementById(id_src).innerHTML = XHR.responseText;
   }
   XHR.open("GET",php_cible,true);
  XHR.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	//Envoi de la requête
	XHR.send(null);

}


function ajaxstats(id_joueur)
 {
  XHR=getXhr();
  XHR.onreadystatechange = function()
   {
	      // Nous remplacons le contenu du div tableau_stat par le retour de "ajax/ajaxiris.php"
      document.getElementById('tableau_stat').innerHTML = XHR.responseText;
   }
   XHR.open("POST",'ajax/ajaxstats.php',true);
  XHR.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  XHR.send("id="+id_joueur);
 }
 
 
////////////////////////////////////////////////////////////////////////////////////////////////////////


// Gestion liste  matchs ...
function sauverMatch(id_match, obj, field, value,type)
{
	//Si on a déjà sauvé la valeur en cours, on sort
	if(sauvematch)
	{
		return false;
	}
	else
	{
		sauvematch = 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 = getXhr();

	if(!XHR)
	{
		return false;
	}
	//URL du script de sauvegarde auquel on passe la valeur à modifier
	XHR.open("POST", "../ajax/ajaxmatchs.php?id_match=" + id_match + "&field=" + field + "&valeur=" + escape(value) + "&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
			editionmatchsencours = false;

			//Remplacement de l'input par le texte qu'il contient
			obj.replaceChild(document.createTextNode(value), obj.firstChild);
		}
	}

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

}

 

function ajaxmodify_matchs(id_match,obj,field,type)
 {
	 if (editionmatchsencours)
	 {	
	 	return false;
	 }
	 else
	 {
		 editionmatchsencours=true;
		 sauvematchs = false;

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

	 //On crée un composant différent selon le type de la valeur à modifier
	switch(type)
	{
		//Valeur de type texte ou nombre
		case "texte":
		case "nombre":
			input = document.createElement("input");
			break;

		//Valeur de type texte multilignes
		case  "texte-multi":
			input = document.createElement("textarea");
			break;
	}


   //Assignation de la valeur
	if (obj.innerText)
		input.value = obj.innerText;
	else
		input.value = obj.textContent;
		
	input.value = trim(input.value);
	//On lui donne une taille un peu plus large que le texte à modifier
	input.style.width  = getTextWidth(input.value) + 30 + "px";	
	//Remplacement du texte par notre objet input
	obj.replaceChild(input, obj.firstChild);

	//On donne le focus à l'input et on sélectionne le texte qu'il contient
	input.focus();
	input.select();
	
	//Sortie de l'input
	input.onblur = function sortir()
	{
		sauverMatch(id_match, obj, field, input.value,type);
		delete input;
	    sauvematch=false;
	
	};

	//Appui sur la touche Entrée
	input.onkeydown = function keyDown(event)
	{
        if (!event&&window.event)
        {
            event = window.event;
        }
		if(getKeyCode(event) == 13)
        {
			sauverMatch(id_match, obj, field, input.value,type);
			delete input;
		    sauvematch=false;
	
		}
	};
 }
