  var ctrlbusy;
  var ajaxbusy=false;

  /* --- affiche un message d'alerte avant de lancer la requete Ajax ---*/
  function AlertHTTP(message,params,choix,idbusy) {
      if (confirm(message)) {
         if (arguments[4]) nokilltiny=true;
         requetteHTTP(choix,params,'index.php',idbusy);
      }
  }

  /* --- redirige un post de formulaire vers une requete Ajax ---*/
  /* ---- traitement multienregistrement =>choix# --------------*/

  function postForm(choix,myform) { // en option idbusy,mess,color,opacity

      if (ajaxbusy) return;

      var idbusy="wait";
      var mess="";
      var busycolor="Black";
      //var opacity=50;
      var stylebusy='color:black;font-size:20px;';
      var target='index.php';

      if (arguments[2]) idbusy=arguments[2];
      if (arguments[3]) mess=arguments[3];
      if (arguments[4]) busycolor=arguments[4];
      if (arguments[5]) opacity=arguments[5];
      if (arguments[6]) stylebusy=arguments[6];
      if (arguments[7]) target=arguments[7];

      var post="";
      for (i = 0; i <myform.elements.length ; i++) {
          if (myform.elements[i].type=="checkbox") {
             if (myform.elements[i].checked) val="oui";
             else val="non";
          }
          else val=html_entity_decode(myform.elements[i].value)
          //val=myform.elements[i].value;
          if (i!=0) post=post+"&"+myform.elements[i].name+"="+val;
          else post=post+myform.elements[i].name+"="+val;
      }
      //alert(post);
      if (idbusy!='' && idbusy!='*') {
         ctrlbusy = getBusyOverlay($(idbusy),{color: busycolor, opacity: 0.2, text:mess,style:stylebusy},{color:'black', size:16, type:'t', iradius:8, weight:16});
      }
      requetteHTTP(choix,post,target);
  }

  function postmultiForm(choix,id,myform) { // en option idbusy,mess,color,opacity

       if (ajaxbusy) return;

      var idbusy="wait";
      var mess="";
      var busycolor="Black";
      var opacity=0;
      var stylebusy='color:white;font-size:20px;';
      var target='index.php';
      k=2;
      k++;if (arguments[k]) idbusy=arguments[k];
      k++;if (arguments[k]) mess=arguments[k];
      k++;if (arguments[k]) busycolor=arguments[k];
      k++;if (arguments[k]) opacity=arguments[k];
      k++;if (arguments[k]) stylebusy=arguments[k];
      k++;if (arguments[k]) target=arguments[k];

      var post="";
      sep="";
      for (i = 0; i <myform.elements.length ; i++) {
          fieldname=myform.elements[i].name;
          if (fieldname.search("#")>0) {
             idfield=fieldname.split("#")[1];
             if (idfield==id) {
                val=html_entity_decode(myform.elements[i].value);
                post=post+sep+fieldname.split("#")[0]+"="+val;
                sep="&";
             }
          }
          else {
               val=html_entity_decode(myform.elements[i].value);
               post=post+sep+myform.elements[i].name+"="+val;
               sep="&";
          }
      }
      alert(post);
      if (idbusy!='') {
         ctrlbusy = getBusyOverlay(recupereId(idbusy),{color: busycolor, opacity: 0, text:mess,style:stylebusy},{color:'black', size:16, type:'c', iradius:8, weight:16});
      }
      //requetteHTTP(choix,post,target);
  }

  // récupère une valeur de liste (source) et envoi une requete pour récupérer une liste de valeurs (destination)

  function updateSelect(choix,params) {

      var target='index.php';
      if (arguments[2]) target=arguments[2];
      url=extractURL(params);
      var myform=document.forms[url['form']];
      src=myform.elements[url["name_src"]].value;
      //alert(url["name_src"]+" "+url["name_dest"]+" "+url["form"]);
      params=params+"&seg="+src;
      nokilltiny=true;
      requetteHTTP(choix,params,target);
  }
  var nokilltiny=false;
  // *********************** requete AJAX *************************************
  function requetteHTTP(choix,params) { // en option idbusy,mess,color,opacity
      if (RequestTimer) return; //clearTimeout(RequestTimer);
      //if (ctrlbusy) ctrlbusy.remove();
      var idbusy="wait";
      var mess="accès serveur ...";
      var busycolor="#F2F2F2";
      var opacity=0.5;
      var stylebusy='color:white;font-size:20px;';
      var target='index.php';

      var gobusy=false;
      //if (!IE) killtiny();
      if (typeof(tinyMCE)!='undefined') if (!nokilltiny) killtiny();

      nokilltiny=false;
      if (arguments[2]) target=arguments[2];
      if (arguments[3]) {idbusy=arguments[3];gobusy=true;}
      if (arguments[4]) mess=arguments[4];
      if (arguments[5]) busycolor=arguments[5];
      if (arguments[6]) opacity=arguments[6];
      if (arguments[7]) stylebusy=arguments[7];
      //alert(idbusy);
      if (gobusy) {
         ctrlbusy = getBusyOverlay($(idbusy),{color: busycolor, opacity: opacity, text:'',style:stylebusy},{color:'#000000', size:32, type:'tube', iradius:8, weight:3});
      }
     if(window.XMLHttpRequest) {// Firefox
          xhr_object = new XMLHttpRequest();}
     else if(window.ActiveXObject) // Internet Explorer
               xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
          else { // XMLHttpRequest non supporté par le navigateur
               alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
               return;
          }

     var RequestTimer= setTimeout (
         function () {xhr_object.abort();
                      alert('Pas de réponse du serveur, abandon du processus');
                      if (ctrlbusy) ctrlbusy.remove();},40000); // 40s
     xhr_object.open("POST", target, true);
     firefox3_5=true;
     testbusy=false;
     //if (IE) firefox3_5=false;
     if (!Browser.Engine.trident) xhr_object.onload = xhr_object.onerror = xhr_object.onabort = function(){
        clearTimeout(RequestTimer);
        try {
            eval(xhr_object.responseText);
            textarea_lf();
        } catch(err) {
            messerr="Exception détectée, exécution du bloc eval\n";
            messerr=messerr+"Nom de l'erreur : " + err.name+"\n";
            messerr=messerr+"Message d'erreur : " + err.message+"\n";
            switch (err.name) {
               case 'TypeError':  // bizzarerie de chrome ??
                    break;
               case 'NS_ERROR_DOM_NOT_FOUND_ERR':
                    break;
               default:
                   alert(messerr);
                   break;
            }
            if (ctrlbusy) ctrlbusy.remove();
        } finally {
            //document.writeln("Exécution du bloc finally")
        }
     };
     else xhr_object.onreadystatechange = function() {
          if (xhr_object.readyState == 4) {
             if (xhr_object.status == 200) {
                 window.clearTimeout(RequestTimer);
                 RequestTimer=null;
                 if (RequestTimer) {
                    alert('pas éteint!!');
                 }
                 try {
                	 eval(xhr_object.responseText);
                     textarea_lf();
                 } catch(err) {
                     messerr="Exception détectée, exécution du bloc eval\n";
                     messerr=messerr+"Nom de l'erreur : " + err.name+"\n";
                     messerr=messerr+"Message d'erreur : " + err.message+"\n";
                     switch (err.name) {
                          case 'NS_ERROR_DOM_NOT_FOUND_ERR':
                               break;
                           case 'Error':    //bizzarerie de IE   ??
                               break;
                          default:
                              alert(messerr);
                              break;
                     }
                     if (ctrlbusy) ctrlbusy.remove();
                 } finally {
                     //document.writeln("Exécution du bloc finally")
                 }
             }
             else alert(xhr_object.status);
          }
     }

     xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

     var data = "choix="+choix;

     if (params!="") data=data+"&"+params;
     xhr_object.send(data);
  }

  function GDownloadUrlSync(url) {
     var xhr_object=null;

     if(window.XMLHttpRequest) // Firefox 
         xhr_object = new XMLHttpRequest();
     else if(window.ActiveXObject) // Internet Explorer
         xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
     else { // XMLHttpRequest non supporté par le navigateur
          alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
          return;
          }

     xhr_object.open("GET", url, false);
     xhr_object.send(null);
     if (xhr_object.readyState == 4) return xhr_object.responseText;
  }

  function textarea_lf() {
       var textareas=$$('textarea'); //:([class="mceNoEditor"])
       var reg=new RegExp("(Ctrlf)", "g");
       for(var i=0; i<textareas.length; i++) {
         textareas[i].value=textareas[i].value.replace(reg,"\r\n");
       }
  }
