   var editStat = false;
   function $(id) {
      return document.getElementById(id);
   }
   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;
}

   //Suppression des espaces/sauts de ligne inutiles (http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256C0C0062AC78)
   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;
   }

   function edition(linkId,titre,divId) {
      if(editStat==false) {
         editStat=true;
         var texte = divId.innerHTML;
         input = document.createElement("textarea");
         
         //Assignation de la valeur
         if (divId.innerText)
            input.value = divId.innerText;
         else
            input.value = divId.textContent;
         
         input.value = trim(input.value);
         
         //On lui donne une taille un peu plus large que le texte à modifier
         input.style.width  = "590px";
         
         // pour la hauteur, on compte le nombre de saut de ligne
         var nbLine = 0;
         for (i=0; i < texte.length;i++)
            if (texte.charAt(i) == '\n')
               nbLine++;
         
         hCalc = nbLine * 16;
         if(hCalc < 22)
            hCalc = 22;
         input.style.height = hCalc + "px";
            
         
         //Remplacement du texte par notre objet input
         //divId.replaceChild(input, divId.firstChild);
         divId.innerHTML = "";
         divId.appendChild(input);

         //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() {
            sauver(linkId,titre,divId,input.value);
            delete input;
         }
         
      }
   }
   
   function sauver(linkId,titre,divId,texte) {
      requete = getXMLHTTP();
      requete.open('GET', 'ajax.php?save=oui&link_id='+linkId+'&titre='+titre+'&texte='+escape(texte), true);
      requete.onreadystatechange = function() {
         if(requete.readyState == 4) {
            if(requete.status == 200){
               divId.replaceChild(document.createTextNode(texte), divId.firstChild);
               editStat=false;
            }
         }
      }
      requete.send(null);
   }