var confirmMsg  = 'Voulez-vous vraiment effectuer ';
/**
 * Displays an confirmation box beforme to submit a "DROP/DELETE/ALTER" query
 * This function is called while clicking links
 *
 * @param   object   the link
 * @param   object   the sql query to submit
 *
 * @return  boolean  whether to run the query or not
 */
function confirmLink(theLink, theSqlQuery)
{
    // Confirmation is not required in the configuration file
    if (confirmMsg == '') {
        return true;
    }
    var is_confirmed = confirm(confirmMsg + ' :\n' + theSqlQuery);
    if (is_confirmed) {
        theLink.href += '&is_js_confirmed=1';
    }
    return is_confirmed;
} // end of the 'confirmLink()' function


/**
 * Checks/unchecks all tables
 *
 * @param   string   the form name
 * @param   boolean  whether to check or to uncheck the element
 *
 * @return  boolean  always true
 */
function setCheckboxes(the_form, do_check)
{
    var elts      = document.forms[the_form].elements;
    var elts_cnt  = (typeof(elts.length) != 'undefined')
                  ? elts.length
                  : 0;
    var nb = 0 ; //nom positif si on a jouter de élément négatif si on ajoute des éléments
    if (elts_cnt) {
        for (var i = 0; i < elts_cnt; i++) {
          if(elts[i].type == 'checkbox'){
            if(elts[i].checked != do_check){
              elts[i].checked = do_check;
              if(do_check){// vrai on a coché
                nb = nb + 1;
              }else{ // On a décoché
                nb = nb - 1;
              }
            }
          }
        } // end for
    } else {
        elts.checked = do_check;
    } // end if... else
    return nb;
} // end of the 'setCheckboxes()' function


/* Function for showing and hiding elements that use 'display:none' to hide */
function toggle(targetId) {
    if (document.getElementById) {
        target = document.getElementById(targetId);
        if (target.style.display == "none"){
            target.style.display = "";
        } else {
        target.style.display = "none";
        }
    }
}

var check = false;
var DOM = 0, MS = 0, OP = 0, b = 0;
// Determine the browser type


/**
 * Pendant la saisie des heures, verifie que les valeurs saisies sont correctes
 *  et complete si besoin est.
 */
function goodcharsheure(id, e){
key = getkey(e);
valeur = document.getElementById(id).value;

if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
  return true;
else{
if(valeur.length >= 5){
  return false;
  }
  keychar = String.fromCharCode(key);
  keychar = keychar.toLowerCase();
  if(valeur.length == 0){
    good1 = "3456789";
    goods = "012";
    if(good1.indexOf(keychar) != -1){
      document.getElementById(id).value = 0+good1.substring(good1.indexOf(keychar), good1.indexOf(keychar)+1);
      return false;
    }
  }else if(valeur.length == 1 && valeur == "2"){
      goods = "0123";
  }else if(valeur.length == 3){
    goods = "012345";
  }else{
    goods = "0123456789";
  }
  // check goodkeys
  if (goods.indexOf(keychar) != -1)
    return true;

  // else return false
  return false;
  }
}

function add2pointheure(id){
  if ( key!=null && key!=0 && key!=8 && key!=9 && key!=13 && key!=27 ){
    if(document.getElementById(id).value.indexOf(":") == -1){
      if(document.getElementById(id).value.length == 2){
        document.getElementById(id).value = document.getElementById(id).value +":";
      }
    }
  }
}

function add2slashdate(id){
  sdate = document.getElementById(id).value;
  if(key!=null && key != 8 && key!=9 && key!=13 && key!=27 && key !=111){
    if(sdate.length == 2 || sdate.length == 5){
      document.getElementById(id).value = sdate +"/";
    }
  }
  if(key ==111){      // On vient de saisir un slash avec un seul chiffre devant
    if(sdate.length == 2){
      // On rajoute un zero
      document.getElementById(id).value = "0"+sdate;
    }
    else if(sdate.length == 4){
      document.getElementById(id).value = sdate.substring(0,3);
    }
    else if(sdate.length == 5){
      document.getElementById(id).value = sdate.substring(0,3)+"0"+sdate.substring(3);
    }
    else if(sdate.length == 7){
      document.getElementById(id).value = sdate.substring(0,6);
    }
  }
}

/**
 * Fonction qui vérifie si le caractère que vient de taper l'utilisateur
 * correspond à un caractère accepté.
 * fonction appelée sur on onkeypress d'un input
 * e : evenement
 * goods : chaine de caractère composée des caractères acceptés
 */
function goodchars(id, e, goods)
{
var key, keychar;
key = getkey(e);// numéro de touche tapée.
datevaleur = document.getElementById(id).value;

if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 ){
  return true;
}else{
  // get character
  keychar = String.fromCharCode(key);// caractère correspondant à la touche tapée
  keychar = keychar.toLowerCase();
  goods = goods.toLowerCase();

  // check goodkeys
  if (goods.indexOf(keychar) != -1)
    return true;

  // else return false
  return false;
}
}

/**
 * Fonction appelée pour la mise en forme auto des dates lors de la saisie de
 * celles-ci. Ajoute juste le caractère "/" entre JJ MM et AAAA
 * id : id de l'input de saisie de la date
 */
function caracterespe(id){
  datevaleur = document.getElementById(id).value;
  taille = datevaleur.length;
  if(taille == 2 | taille == 5){
    document.getElementById(id).value = datevaleur + "/";
  }
}

/**
 * retourne le code de la touche enfoncée par l'utilisateur
 * e : event.
 */
function  getkey(e){
  if (window.event)
    return window.event.keyCode;
  else if (e)
    return e.which;
  else
    return null;
}

/**
 * Teste la validité du nom d'un document joint saisi.
 */
function verifNomDocjoint(){
var regexp = new RegExp("^[a-zA-Z0-9\-\_]+[\.]{1}[a-zA-Z0-9\-\_]+$");
var regexp2 = new RegExp("^[a-zA-Z0-9\-\_]+$");
  filename = document.getElementById("nomdocumentjoint").value;
  if(filename != ""){
      if(regexp.test(filename)){
        document.getElementById("formsaisie").submit();
      }else{
        if(regexp2.test(filename)){
          document.getElementById("formsaisie").submit();
        }else{
                 alert("nom de fichier incorrect");
        }
      }
     }
     else{
             document.getElementById("formsaisie").submit();
     }
}

function periodiciteChangeDocType(){
 document.getElementById("changetypesubmit").click();
}

/**
 * Fonction qui rajoute un caractère "0" devant un numéro passé en paramètre
 * si ce dernier n'est composé que d'un caractère.
 * Cette fonction est utilisée pour le formatage des date pour ne pas avoir
 * de date de la forme 2/3/2007
 */
function metzerodevant(num){
  if(num.length == 1){
    num = "0"+num;
  }
  return num;
}


/**
 * Fonction spéciale aux fiches actions. Celle-ci est appelée lors de la modification
 * de la date debut ou la date de fin et calcule la durée.
 */
function reloadDuree(){
  var deuxnum = new RegExp("^[0-9]{2}$");
  var quatrenum = new RegExp("^[0-9]{4}$");

  sdatedeb = document.getElementById("datedebut").value;// date de debut
  jourdeb = metzerodevant(sdatedeb.substr(0,sdatedeb.indexOf("/")));
  num = sdatedeb.indexOf("/",sdatedeb.indexOf("/")+1) - sdatedeb.indexOf("/")-1;
  moisdeb = metzerodevant(sdatedeb.substr(sdatedeb.indexOf("/")+1,num));
  andeb = sdatedeb.substr(sdatedeb.indexOf("/", sdatedeb.indexOf("/")+1)+1,4);
  // vérivication de la validité de la date de début
  if(!deuxnum.test(jourdeb) || !deuxnum.test(moisdeb) || !quatrenum.test(andeb)){
    alert("Date debut non valide");
    document.getElementById("datedebut").value = document.getElementById("datefin").value;
  }else{
    // Cas date debut valide

    document.getElementById("datedebut").value = jourdeb +"/"+ moisdeb +"/"+andeb;
    sdatefin = document.getElementById("datefin").value;
    jourfin = metzerodevant(sdatefin.substr(0,sdatefin.indexOf("/")));
    num = sdatefin.indexOf("/",sdatefin.indexOf("/")+1) - sdatefin.indexOf("/")-1;
    moisfin = metzerodevant(sdatefin.substr(sdatefin.indexOf("/")+1,num));
    anfin = sdatefin.substr(sdatefin.indexOf("/", sdatefin.indexOf("/")+1)+1,4);
    // On vérifie la date de fin
    if(!deuxnum.test(jourfin) || !deuxnum.test(moisfin) || !quatrenum.test(anfin)){
      alert("Date fin non valide");
      document.getElementById("datefin").value = document.getElementById("datedebut").value;
    }else{
	// Cas date fin Valide
        //récupération de l'heure de fin
      document.getElementById("datefin").value = jourfin +"/"+ moisfin +"/"+anfin;
      sheuremindeb = document.getElementById("heuredebut").value;
      heuredeb = metzerodevant(sheuremindeb.substr(0,sheuremindeb.indexOf(":")));
      mindeb = metzerodevant(sheuremindeb.substr(sheuremindeb.indexOf(":")+1,2));
      // vérification de la validité de l'heure de fin
      if(!deuxnum.test(heuredeb) || !deuxnum.test(mindeb)){
        alert("Heure debut non valide");
        document.getElementById("heuredebut").value = document.getElementById("heurefin").value;
      }else{
	// Cas heure fin valide
        //on récupère l'heure de début
         document.getElementById("heuredebut").value = heuredeb +":"+ mindeb;
        sheureminfin = document.getElementById("heurefin").value;
        heurefin = metzerodevant(sheureminfin.substr(0,sheureminfin.indexOf(":")));
        minfin = metzerodevant(sheureminfin.substr(sheureminfin.indexOf(":")+1,2));
        // vérification de la validité de l'heure de début
        if(!deuxnum.test(heuredeb) || !deuxnum.test(mindeb)){
          alert("Heure fin non valide");
          document.getElementById("heurefin").value = document.getElementById("heuredebut").value;
        }else{
          // Cas heure de début valide
          document.getElementById("heurefin").value = heurefin +":"+ minfin;
          //Si la date de début est postérieure à la date de fin, on recopie la date de début
          // dans la date de fin
          if(andeb > anfin){
            document.getElementById("datefin").value = document.getElementById("datedebut").value;
          }
          if(andeb == anfin){
            if(moisdeb > moisfin){
              document.getElementById("datefin").value = document.getElementById("datedebut").value;
            }
            if(moisfin == moisdeb){
              if(jourdeb > jourfin){
                document.getElementById("datefin").value = document.getElementById("datedebut").value;
              }
            }
          }

          if(sdatedeb == sdatefin){
            // Cas ou les dates de début et de fin sont identiques, on vérifie la
            // validité des heures
            if(heuredeb > heurefin){
              document.getElementById("heurefin").value = document.getElementById("heuredebut").value;
              if(document.getElementById("heurefinvisible")){
                document.getElementById("heurefinvisible").value = document.getElementById("heuredebut").value;
              }
            }
            if(heuredeb == heurefin){
              if(mindeb > minfin){
                document.getElementById("heurefin").value = document.getElementById("heuredebut").value;
                if(document.getElementById("heurefinvisible")){
                document.getElementById("heurefinvisible").value = document.getElementById("heuredebut").value;
              }
              }
            }
          }


          //   Calcul de la durée
          sdatefin = document.getElementById("datefin").value;
          jourfin = metzerodevant(sdatefin.substr(0,sdatefin.indexOf("/")));
          moisfin = metzerodevant(sdatefin.substr(sdatefin.indexOf("/")+1,2));
          anfin = sdatefin.substr(sdatefin.indexOf("/", sdatefin.indexOf("/")+1)+1,4);

          sheureminfin = document.getElementById("heurefin").value;
          heurefin = metzerodevant(sheureminfin.substr(0,sheureminfin.indexOf(":")));
          minfin = metzerodevant(sheureminfin.substr(sheureminfin.indexOf(":")+1,2));

          jsdateDeb = new Date(andeb, moisdeb, jourdeb, heuredeb, mindeb, 0);

          jsdateFin = new Date(anfin, moisfin, jourfin, heurefin, minfin, 0);

          mili = jsdateFin.getTime() - jsdateDeb.getTime();

          jsjour = Math.floor(mili / 86400000);// calsul du nb de jours

          jsheure = Math.floor((mili - jsjour*86400000) / 3600000);// calcul du nb d'heures

          jsmin = Math.round(((mili - jsjour*86400000) - jsheure*3600000)/60000);// calcul du nb de minutes


          duree = "";
          // Construction de la chaine de caractère résultat
          if(jsjour > 0){
            duree = jsjour +" jours ";
          }
          if(jsheure == 1){
            duree = duree + jsheure + " heure ";
          }else if(jsheure != 0){
            duree = duree + jsheure + " heures ";
          }
          if(jsmin == 0){
            // ne pas mettre le mot minute
          }else if(jsmin == 1){
            duree = duree + jsmin + " minute";
          }else{
            duree = duree + jsmin + " minutes";
          }
          if(document.getElementById("idDureeAction")){
            document.getElementById("idDureeAction").innerHTML = duree;
          }
          if(document.getElementById("dureehidden")){
            document.getElementById("dureehidden").value = mili/60000;
          }
        }
      }
    }
  }
}
/*
var win;
function displayWaitingWindow(){
  var w = 300, h = 150;
  move = screen ?
                ',left=' + ((screen.width - w) >> 1) + ',top=' + ((screen.height) >> 1) : '';
       win = window.open(contextpath+'/listes/doctype/attenteconstructiondocument.jsp', null, "help=no,status=no,scrollbars=no,resizable=no"
        + move + ",width="+ w +",height="+ h +",dependent=yes", true);
        win.opener = window;
        win.focus();
}

function cacheWaitingWindow(){
 win.close('attente');
}*/

/**
 * fonction sensée charger une image sélectionée dans un input type file (ne marche plus ???).
 * et l'afficher dans un élément genre div dont l'id est passé en paramètre.
 * idnom : id de l'input type file contenant le chemin du fichier
 * iddivimage : id du div dans lequel placer l'image
 * width : largeur de l'image
 * height : hauteur de l'image
 */
function chargeImage(idnom, iddivimage, width, height){
  val = document.getElementById(idnom).value;
 document.getElementById(iddivimage).innerHTML="<img id=\"icone\" width=\""+width+"\" height=\""+height+"\" onmouseover=\"onImageOver();\" onclick=\"return false;\" alt=\"pas d'image\" src=\""+val+"\"/>";
}

function enleveImage(idnomimage,iddivimage){
  document.getElementById(iddivimage).innerHTML="";
  document.getElementById(idnomimage).value="";
}



/**
 * GESTION DES COOKIES
 */

 /**
  * Création d'un cookie
  * name : Nom du cookie
  * val : valeur du cookie
  * expires : date d'expiration du cookie ex : new Date(2050, 12).getTime()
  * path : chemin d'accès de validité du cookie.
  */
function setcookie(name, val, expire,path){
  var timestamp=new Date(expire);
  document.cookie=name + "=" + escape(val) + "; expires=" + timestamp.toGMTString() + "; path=" + path;
}

/**
 * retourne la valeur contenue dans un cookie
 * name : Nom du cookie
 */
function getcookie(name) {
  var arg = name + "=";
  var alen = arg.length;
  var clen = document.cookie.length;
  var i = 0;
  while (i < clen) {// boucle sur tous les cookies
    var j = i + alen;
    if (document.cookie.substring(i, j) == arg){
      return getCookieVal (j);
    }
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0)
      break;
  }
  return null;
}

function getCookieVal(offset) {
  var endstr = document.cookie.indexOf (";", offset);
  if (endstr == -1)
    endstr = document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr));
}

/**
 * Supprime un cookie en mettant une date d'expiration antérieure à la date courante
 */
function effaceCookie(name, expire)
{
var timestamp=new Date(expire);
	document.cookie=name + "=" + null + "; expires=" + timestamp.toGMTString();
}

/**
 * Gestion des messages d'attente
 */

 /**
  * Affichage du message d'attente appel en ajax de la page jsp de construction du message
  */
 function attente(){
  makeRequest(contextpath+'/listes/doctype/attenteconstructiondocument.jsp', 'montredivattente');
}

/**
 * traitement de l'affichage du message d'attente en résultat de la requete ajax
 */
function montredivattente() {
  if (http_request.readyState == 4) {//réponse reçue
    if (http_request.status == 200) {// réponse correcte
	if(http_request.responseText.length < 100){// si message trop court on cache le message
          document.getElementById('divAttente').style.display='none';
	}else{
          if(http_request.responseText.indexOf("#STOP#") == -1){// on montre le message
      document.getElementById('divAttente').innerHTML=http_request.responseText;
      document.getElementById('divAttente').style.display='block';
      //rappel du calcul du message d'attente dans un délai de 2 secondes.
	  window.setTimeout("makeRequest('"+contextpath+"/listes/doctype/attenteconstructiondocument.jsp', 'montredivattente')",2000);
          }else{// si message contient #STOP# on cache le message
            document.getElementById('divAttente').style.display='none';
          }
	  }
    } else {// status non valide (erreur 500 ou 404 ou autre)
      alert('Un probl\u00E8me est survenu avec la requ\u00EAte.');
    }
  }
}
/****************************************************/
// Fonction utilisé dans le menu
/**
 * Fait clignoté le l'information comme quoi il a un emssage non lu
 * @return
 */
function messageclignote(){
    if(document.getElementById("unMessage").style.color == "black"){
      document.getElementById("unMessage").style.color="silver";
    }else{
      document.getElementById("unMessage").style.color = "black";
    }
  }
function modifformrecherche(){
	  val = document.getElementById("actionRecherche").value;
	  if(val != "all"){
	    document.getElementById("formactionrecherche").action=contextpath+"/listes/fullText.do?nomtable="+val;
	  }else{
	    document.getElementById("formactionrecherche").action=contextpath+"/menu/menuChercher.do";
	  }
	}

function montreMenu(){
  effaceCookie("menuyellowbox",(new Date(2000, 12).getTime()));
  if(document.getElementById('menuTout').style.display=="block"){
    // rédution de la taille du menu
	document.getElementById('divmenuprinc').style.width = "30px";
	//on efface le menu complet
	document.getElementById('menuTout').style.display="none";
	//on montre le menu simple
	document.getElementById('menuMini').style.display="block";
	//on efface l'icone de fermeture le menu
	document.getElementById('menu_ouvert').style.display="none";
	//on effiche l'icone d'ouverture du menu
	document.getElementById('menu_ferme').style.display="block";
	menuvisible = "false";
  }else{
	document.getElementById('divmenuprinc').style.width = "180px";
	document.getElementById('menuTout').style.display="block";
	document.getElementById('menuMini').style.display="none";
	document.getElementById('menu_ouvert').style.display="block";
	document.getElementById('menu_ferme').style.display="none";
	menuvisible = "true";
  }
  // création d'un cookie permettant d'indiquer si le menu est ouvert ou fermé.
  setcookie("menuyellowbox",menuvisible, (new Date(2050, 12).getTime()), contextpath);
}
/****************************************************/
/**
 * Modification du lien associé à un champ de type site web.
 * idlien : id du lien vers le site
 * val : adresse du site.
 */
function modifChampSiteWeb(idlien, val){
  modifChamp();
  if(val.indexOf('http://') != 0){
    document.getElementById(idlien).href = "http://" + val;
  }else{
    document.getElementById(idlien).href =  val;
  }
}

/**
 * Modification du lien associé à un champ de type voip.
 * idlien : id du lien skype
 * val : login skype.
 */

function modifChampSkype(idlien, val){
  document.getElementById(idlien).href = Constante.PROTOCOLEIP +val;
}

/**
 * Gestion de la modification d'un champ de type mail.
 * Vérification de la syntaxe (contient un @ et un point)
 * Mise à jour du lien du champ mail.
 * idlien : id du lien
 * val : valeur de l'adresse mail
 * idchamp : id de l'input contenant la valeur de l'adresse mail.
 */
function modifChampMail(idlien, val, idchamp){
  if(val.length > 0){
    //verification de la syntaxe
  indexa = val.indexOf("@");
  indexpoint = val.lastIndexOf(".");
  if(indexa != -1 && indexpoint != -1 && indexa < indexpoint){
    // la syntaxe est bonne
    modifChamp();
    // maj du lien
    document.getElementById(idlien).href = "javascript:verifmodif('/element/mail/creerMailAdresse.do?adressemail=" + val+"');";
    }else{
      // syntaxe mauvaise on remet la valeur à vide.
    ancien = "";
    document.getElementById(idchamp).value = ancien;
    if(document.getElementById(idchamp+"onglet")){
      document.getElementById(idchamp+"onglet").value = ancien;
    }
    alert("Le format de l\u0027adresse mail n\u0027est pas valide !");
  }
  }
}

/**
 * Utilisée pour passer à la page suivante ou précédente lorsque l'on est dans une sous liste
 * et que l'on fait une recherche pour lier une fiche.
 */
function calculPagesRelations(uri){
  if(Relation_listeId != ";"){
    makeRequestPost(uri, 'divselectionrelationcontenu', 'listeid='+Relation_listeId,'');
  }else{
    makeRequestFirefox(uri, "divselectionrelation", "divselectionrelationcontenu", "divselectionrelation", "-1");
  }
}

function calculChoixRelation(request){
  makeRequestFirefox(contextpath+request, "divselectionrelation", "divselectionrelationcontenu", "divselectionrelation", "-1");
  Relation_listeId = ";";
  Relation_nbElem = 0;
}

function Relation_ExecFiltre(idchamp){
  contenuform = getContenuFromForm("formfiltre");
  if(idchamp != ""){
    contenuform = contenuform + "&nomidchamp=" + idchamp;
  }
  contenuform = contenuform + "&listeid=" + Relation_listeId;
  makeRequestPost(contextpath+'/listes/relation/filtre.do', 'divselectionrelationcontenu', contenuform,'Relation_affichage');
}

function Relation_InitFiltre(idchamp){
  contenuform = getContenuFromForm("formfiltre");
  if(idchamp != ""){
    contenuform = contenuform + "&nomidchamp=" + idchamp;
  }
  contenuform = contenuform + "&listeid=" + Relation_listeId;
  makeRequestPost(contextpath+'/listes/relation/filtreinit.do', 'divselectionrelationcontenu', contenuform,'');
}

function Relation_valider(){
  document.getElementById('Relation_listeid').value=Relation_listeId;
  document.getElementById('Relation_btnvalide').click;
}
/**
 * Utilisé pour la mise à jour des champs de type contact ou société
 */
function majchamptypetable(idnomchamp, valeur){
  if(document.getElementById(idnomchamp)){
  document.getElementById(idnomchamp).value = valeur;
  }
  if(document.getElementById(idnomchamp+"onglet")){
    document.getElementById(idnomchamp+"onglet").value = valeur;
  }
  modifChamp();// force la validation de la fiche
  verifmodif("/listes/relation/ajouterRelation.do?id="+valeur+"&majchamptypetable=true&idchamp="+idnomchamp);// appel de l'action d'ajout de relation.
}


/**
 * Fonction qui fait clignotter les messages d'erreur.
 */
function messageerreurclignotent(){
  if(document.getElementById("divhtmlerrors").style.color == "red"){
     document.getElementById("divhtmlerrors").style.color="silver";
   }else{
      document.getElementById("divhtmlerrors").style.color = "red";
   }
}

/**
 * Fonction Ajax spéciale pour gérer l'insertion de la ligne de calcul dans les listes.
 */
function makeRequestEtContinue(url, callfonction) {
  var request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
    request = new XMLHttpRequest();
    if (request.overrideMimeType) {
      request.overrideMimeType('text/xml');
    }
  } else if (window.ActiveXObject) { // IE
    try {
      request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }
  if (!request) {
    alert('Abandon :( Impossible de créer une instance XMLHTTP');
    return false;
  }
  request.onreadystatechange = function() {insertcalculs(request);};
if (window.navigator.appName == "Netscape") {
  request.open('GET', url, true);
}else {
  request.open('POST', url, true);
}
  request.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=iso-8859-1');
  request.setRequestHeader("Cache-Control", "no-cache");
  request.send(null);
}

/**
 * Fonction d'insertion de la ligne de calcul dans les listes.
 */
function insertcalculs(request){
  if (request.readyState == 4) {
    if (request.status == 200) {
      if(document.getElementById("ligneCalculs").innerHTML.indexOf("<!--findetable-->",1) != -1){
        txt = document.getElementById("ligneCalculs").innerHTML.substring(0, document.getElementById("ligneCalculs").innerHTML.indexOf("<!--findetable-->",1)+17);
      }else{
        txt = document.getElementById("ligneCalculs").innerHTML.substring(0, document.getElementById("ligneCalculs").innerHTML.indexOf("<!--findetable-->",1)+17);
      }
      if(txt.indexOf("BACKGROUND: #aabaef") != -1){
        txt = remetCouleurs(txt, txt.indexOf("BACKGROUND: #aabaef"));
      }
      if(txt.indexOf("BACKGROUND: #AABAEF") != -1){
        txt = remetCouleurs(txt, txt.indexOf("BACKGROUND: #AABAEF"));
      }
      if(txt.indexOf("background: rgb(170, 186, 239)") != -1){
        txt = remetCouleursFirefox(txt, txt.indexOf("background: rgb(170, 186, 239)"));
      }
      document.getElementById("ligneCalculs").innerHTML= txt + request.responseText+"</table>";
    } else {
      //alert('Un probl\u00E8me est survenu avec la requ\u00EAte (insertcalculs).');
    }
  }
}

function remetCouleurs(txt, index){
  var odd = txt.indexOf("odd", index);
  var even = txt.indexOf("even", index);
  if(odd > even){
   txt = txt.substring(0, index)+ "BACKGROUND: #EAEBFC"+txt.substring(index+19, txt.length);
  }else{
    txt = txt.substring(0, index)+ "BACKGROUND: #FFFFFF"+txt.substring(index+19, txt.length);
  }
  return txt;
}

function remetCouleursFirefox(txt, index){
  var odd = txt.indexOf("odd", index);
  var even = txt.indexOf("even", index);
  if(odd > even){
   txt = txt.substring(0, index)+ "background: rgb(234, 235, 252)"+txt.substring(index+30, txt.length);
  }else{
    txt = txt.substring(0, index)+ "background: rgb(255, 255, 255)"+txt.substring(index+30, txt.length);
  }
  return txt;
}

/**
 * Fonction qui remplace dans une chaine A une chaine B par une chaine C
 * chaine : chaine principale, celle que l'on veut modifier
 * val1 : chaine à remplacer
 * val2 : chaine de remplacement.
 */
function replaceAll(chaine, val1, val2){
  if(val1 != val2){
    chaine2 = "";
    while(chaine.indexOf(val1) != -1){
      chaine2 = chaine2 + chaine.substring(0, chaine.indexOf(val1)) + val2;
      chaine = chaine.substring(chaine.indexOf(val1)+val1.length, chaine.length);
    }
	chaine2 = chaine2 + chaine;
  }else{
  chaine2 = chaine;
  }
  return chaine2;
}

/**
 * Fonction appelée lors du click sur un élément d'une liste pour partie en
 * modification dessus. On met à jour l'id de l'enregistrement sur lequel on part
 * et on valide le formulaire servant à partir en modification.
 * id : id du formulaire
 * elem : référence de l'élément sur lequel on part en modif.
 */
function clickSurId(id, elem){
  document.getElementById("id"+id).value = elem;
  document.getElementById(id).submit();
}
function openElementId(id){
  eval(document.getElementById("element_"+id).href);
}
/**
 * Fonction qui met une valeur val dans un input dont l'id est id.
 */
function majValId(id, val){
  document.getElementById(id).value = val;
}

function makeRequest(url, callfunction) {
  http_request = false;

  if (window.XMLHttpRequest) { // Mozilla, Safari,...
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {
      http_request.overrideMimeType('text/xml');
    }
  } else if (window.ActiveXObject) { // IE
    try {
      http_request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        http_request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }

  if (!http_request) {
    alert('Abandon :( Impossible de créer une instance XMLHTTP');
    return false;
  }

  if (window.navigator.appName == "Netscape") {
	http_request.onreadystatechange = eval(callfunction+'()');
    http_request.open('GET', url, false);
  }else {
	http_request.onreadystatechange = eval(callfunction);
    http_request.open('POST', url, false);
  }

  http_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=iso-8859-1');
  http_request.setRequestHeader("Cache-Control", "no-cache");
  http_request.send(null);
}

/**
 * Fonction Ajax d'appel d'unr url en AJAX
 * url : adresse de la page souhaitée
 * iddiv : id du div principal
 * iddiv2 : id du div dans lequel on va placer la réponse
 * idframe : // plus utilisée mêtre la même valeur que iddiv
 * functocall : nom de la fonction à appeler après traitement du résultat
 */
function makeRequestFirefox(url, iddiv, iddiv2, idframe, functocall) {
   /* Construction de l'objet XMLHTTP */
  if (functocall == null){
    functocall = '';
  }
  url = replaceAll(url, "#", "$");
  var http_requestetff = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
    http_requestetff = new XMLHttpRequest();
    if (http_requestetff.overrideMimeType) {
      http_requestetff.overrideMimeType('text/xml');
    }
  } else if (window.ActiveXObject) { // IE
    try {
      http_requestetff = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        http_requestetff = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }
  if (!http_requestetff) {
    // cas où le navigateur ne gère pas l'ajax ou option désactivée.
    alert('Abandon Impossible de créer une instance XMLHTTP');
    return false;
  }
  /* Construction de la requete */

  // On désigne la fonction javascript qui va traiter la réponse
  http_requestetff.onreadystatechange = function() {affichediv(iddiv, iddiv2, idframe, http_requestetff, functocall);};
  // Construction de la requete en post le troisième paramètre précise si la
  // requete doit être lancée en mode asynchrone
  if (window.navigator.appName == "Netscape") {
    http_requestetff.open('GET', url, true);
  }else {
    http_requestetff.open('POST', url, true);
  }

  // Type MIME pour les requete envoyées en post
  http_requestetff.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=iso-8859-1');
  // Oblige à recalculer la page appelée
  http_requestetff.setRequestHeader('Cache-Control', 'no-cache');
  http_requestetff.setRequestHeader('Content-length', '0');
  // envoi de la requete
  attenteCurseur();
  http_requestetff.send(null);
}
/**
 *
 */
function makeRequestPost(url, iddiv, postcontent,functocall) {
  url = replaceAll(url, "#", "$");
  var http_requestetff = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
    http_requestetff = new XMLHttpRequest();
    if (http_requestetff.overrideMimeType) {
      http_requestetff.overrideMimeType('text/xml');
    }
  } else if (window.ActiveXObject) { // IE
    try {
      http_requestetff = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        http_requestetff = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }
  if (!http_requestetff) {
    // cas où le navigateur ne gère pas l'ajax ou option désactivée.
    alert('Abandon Impossible de créer une instance XMLHTTP');
    return false;
  }
  /* Construction de la requete */

  // On désigne la fonction javascript qui va traiter la réponse
  http_requestetff.onreadystatechange = function() {affichediv(iddiv, iddiv, iddiv, http_requestetff, functocall);};
  // Construction de la requete en post le troisième paramètre précise si la
  // requete doit être lancée en mode asynchrone
  http_requestetff.open('POST', url, true);
  // Type MIME pour les requete envoyées en post
  http_requestetff.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=iso-8859-1');
  // Oblige à recalculer la page appelée
  http_requestetff.setRequestHeader("Cache-Control", "no-cache");
  // envoi de la requete
  attenteCurseur();
  http_requestetff.send(postcontent);
}
/**
 * Traitement de la réponse AJAX.
 * iddiv : id du div principal
 * iddivtext : id du div dans lequel on va placer la réponse
 * idframe : // plus utilisée mêtre la même valeur que iddiv
 * http_requestetff : Objet XMLHTTP
 * functocall : nom de la fonction à appeler après traitement du résultat
 */
function affichediv(iddiv, iddivtext, idframe, http_requestetff, functocall){
	
  if (http_requestetff.readyState == 4) {
    debloqueCurseur();
    if (http_requestetff.status == 200) {
      // Affichage du résultat sauf dans certains cas

      if(functocall != "FormutimleEtats" &&
         functocall != "majVille" &&
         functocall != "majCodepost" &&
         functocall != "alertaffiche" &&
         functocall != "majdivchamplie" &&
         functocall != "souslistemajnb" &&
         ((functocall != null ) && (functocall.substring(0,11) != "majchamplie"))&&
         iddivtext != ''
         ){

        document.getElementById(iddivtext).innerHTML=http_requestetff.responseText;
        if(document.getElementById(iddiv)){
          document.getElementById(iddiv).style.display="block";
        }
        document.getElementById(idframe).style.display="block";
      }
      // Traitement des cas particuliers
      if(functocall == "selecteurchampsloadDivExecute"){
        selecteurchampsloadDivExecute();
      }
      else if(functocall == "selecteurchampsloadDivExecute2"){
          selecteurchampsloadDivExecute2();
      }
      else if(functocall.indexOf('selecteurchampsloadDiv')>-1){
    	  eval(functocall);
      }
      else if(functocall == "montredivrecherche"){
        montredivrecherche();
      }
      else if(functocall == "findline"){
        findline();
      }
      else if(functocall == "majVille"){
        val = http_requestetff.responseText;
        if(val == null || val == ''){
        }
        else if(val.substring(0, val.indexOf("##")).indexOf("simple") != -1){
          majVille(val);
        }else{
          document.getElementById(iddivtext).innerHTML=val;
          document.getElementById(iddiv).style.display="block";
          document.getElementById(idframe).style.display="block";
        }
      }
      else if(functocall == "majCodepost"){
        val = http_requestetff.responseText;
        if(val.substring(0, val.indexOf("##")).indexOf("simple") != -1){
          majCodepost(val);
        }else{
          document.getElementById(iddivtext).innerHTML=val;
          document.getElementById(iddiv).style.display="block";
          document.getElementById(idframe).style.display="block";
        }
      }
      else if(functocall == "FormuleEtats"){
        valinsert = http_requestetff.responseText.substring(http_requestetff.responseText.indexOf("##")+2, http_requestetff.responseText.lastIndexOf("##"));
        document.getElementById('formulecalculetat').value = document.getElementById('formulecalculetat').value+valinsert;
      }else if(functocall == "glissedivUser"){
        glissediv(iddiv, 300);
      }
      else if(functocall == "activeWindow"){
        activeWindow(iddiv);
      }
      else if(functocall == "alertaffiche"){
        if(http_requestetff.responseText.indexOf("##alertaffiche##") != -1){
          document.getElementById("alertaction").innerHTML=http_requestetff.responseText;
          document.getElementById("tdalert").height = "20px";
          document.getElementById("alertaction").style.position="relative";
          document.getElementById("alertaction").style.display="block";
          document.getElementById("alertaction").style.display="block";
        }else{
          majAlertAction();
        }
      }
      else if(functocall.substring(0,11) == "majchamplie"){
        majchamplie(http_requestetff.responseText,functocall.substring(12));
      }
      else if(functocall == "majdivchamplie"){
        document.getElementById(iddivtext).innerHTML=http_requestetff.responseText;
      }
      else if(functocall == "souslistemajnb"){
	  Ssliste_initnbelemecocheonglet(iddiv,http_requestetff.responseText);
      }
      else if(functocall == "Relation_affichage"){
          Relation_affichage();
      }
    }
  }
}

function bloquefiche(){
}

/**
 * Fonction appelée pour afficher la fenêtre "A propos"
 */
function montreAPropos(){
  makeRequestFirefox(contextpath+"/templates/aproposbody.jsp", "divApropos", "divAproposcontenu", "divApropos", "-1");
  activeWindow("divApropos");
}

// Fonction appelée pour cacher la fenêtre "A propos"
function cacheApropos(){
  document.getElementById("divApropos").style.display="none";
}

/**
 * Fonction utilisée dans les pieds de page pour le lien "aller à la page"
 *  idchamp : id du champ lorsque l'on sélection une société depuis un champ
 */
function vasverspageRelation(uri,idvalpage, nombre2page,idchamp){
  value = document.getElementById(idvalpage).value;
  // verification de la valeur saisie
  if(value > nombre2page){
  value = nombre2page;
  }
  if(value == 0){
    value = 1;
  }

  if(idchamp == ""){
    calculPagesRelations(uri+'?page='+value);
  }else{
    calculPagesRelations(uri+'?page='+value+'&nomidchamp='+idchamp);
  }
}

/**
 * Fonction utilisée dans les arbres d'utilisateur à sélection unique
 * pour indiquer la valeur sélectionnée.
 *
 */
function changecouleur(id, name){
  var idprec = document.getElementById(name+'hidden').value;
  if(document.getElementById('lien'+name+idprec)){
    document.getElementById('lien'+name+idprec).innerHTML=document.getElementById(name+'visible').value;
  }
  if(document.getElementById('lien'+name+id)){
    document.getElementById('lien'+name+id).innerHTML="<font color='#B52179'>"+document.getElementById('lien'+name+id).innerHTML+"</font>";
  }
}

/**
 * Fonction utilisée dans les arbres pour déplier ou plier
 * l'arborescence (le plus ou le moins)
 * id : id du div à montrer ou cacher celon son état ectuel.
 */
function affiche(id){
  // si le div était visible on le cache
  if(document.getElementById('divgroupe'+id).style.display == 'block'){
    document.getElementById('divgroupe'+id).style.display='none';
    if(document.getElementById('minusdivgroupe'+id)){// image moins
      document.getElementById('minusdivgroupe'+id).style.display='none';
    }
    if(document.getElementById('plusdivgroupe'+id)){// image plus
      document.getElementById('plusdivgroupe'+id).style.display='block';
    }
  }else{
    // si le div était caché on le montre
    document.getElementById('divgroupe'+id).style.display='block';
    if(document.getElementById('minusdivgroupe'+id)){// image moins
      document.getElementById('minusdivgroupe'+id).style.display='block';
    }
    if(document.getElementById('plusdivgroupe'+id)){//image plus
      document.getElementById('plusdivgroupe'+id).style.display='none';
    }
  }
}


function validRecuperationValeurs(idtable, idfiche, idchamp){
 verifmodif("/listes/relation/boutonrecuperation/boutonMappingCreerMappingAction.do?idtablerecherche="+idtable+"&idficherecherche="+idfiche+"&idchamprecherche="+idchamp);
}

function validRecuperationValeursForceModif(idtable, idfiche, idchamp){
 modifChamp();
 verifmodif("/listes/relation/boutonrecuperation/boutonMappingCreerMappingAction.do?idtablerecherche="+idtable+"&idficherecherche="+idfiche+"&idchamprecherche="+idchamp);
}

/**
 * Fonction de mise à jour du champ code postal d'après la valeur sélectionnée
 * lors du calcul automatique du codepostal.
 */
function majCodepost(val){
  if(val.indexOf("simple####") == -1){
  ville = val.substring(val.indexOf("##")+2, val.indexOf("||"));
  codePost = val.substring(val.indexOf("||")+2, val.lastIndexOf("||"));
  pays = val.substring(val.lastIndexOf("||")+2, val.lastIndexOf("##"));
  document.getElementById("ville").value = ville;
  document.getElementById("codepost").value = codePost;
  document.getElementById("pays").value=pays;
  }
}

/**
 * Fonction de mise à jour du champ ville d'après la valeur sélectionnée
 * lors du calcul automatique de la ville.
 */
function majVille(val){
  if(val.indexOf("simple####") == -1){
  ville = val.substring(val.indexOf("##")+2, val.indexOf("||"));
  codePost = val.substring(val.indexOf("||")+2, val.lastIndexOf("||"));
  pays = val.substring(val.lastIndexOf("||")+2, val.lastIndexOf("##"));
  document.getElementById("ville").value = ville;
  document.getElementById("codepost").value = codePost;
  document.getElementById("pays").value=pays;
  }
}

/**
 * Fonction de concaténation de la valeur contenue dans un input avec la chaine val.
 * id : id de l'input à mêtre à jour.
 * val : valeur à ajouter.
 */
function addValue(val, id){
  document.getElementById(id).value = document.getElementById(id).value + val;
}


 // Fonction d'affectation d'une valeur à un input

function setValueInChamp(val, id){
  if(document.getElementById(id)){
    document.getElementById(id).value =  val;
  }
}

// Fonction qui vide la valeur d'un input
function deleteValeur(idchamp){
  if(document.getElementById(idchamp)){
    document.getElementById(idchamp).value='';
  }
}

// Fonction qui simule le clic de la souris sur un bouton dont l'id est passé en
// paramètre.
function cliqueSur(idButton){
  if(document.getElementById(idButton)){
    document.getElementById(idButton).click();
  }
}

// vérifie que l'image sélectionnée est au format supporté par les navigateurs internet.
// Vide le champ sinon
function verifTypeImage(idinputfile){
  if(document.getElementById(idinputfile).value.toLowerCase().indexOf('.gif') != -1 || document.getElementById(idinputfile).value.toLowerCase().indexOf('.jpg') != -1 || document.getElementById(idinputfile).value.toLowerCase().indexOf('.jpeg') != -1 || document.getElementById(idinputfile).value.toLowerCase().indexOf('.tiff') != -1 || document.getElementById(idinputfile).value.toLowerCase().indexOf('.png') != -1){
  }else{
    alert("Le format de l\u0027image n\u0027est pas valide.\n seuls les formats gif jpg tiff et png sont accept\u00E9s");
    document.getElementById(idinputfile).value="";
  }
}

// Vérifie que le fichier sélectionné est au format text
function verifTypeTXT(idinputfile){
  if(document.getElementById(idinputfile).value.toLowerCase().indexOf('.txt') != -1 ){
    return true;
  }else{
    alert("Le format du fichier pas valide.\n seul le format text est accept\u00E9");
    document.getElementById(idinputfile).value="";
    return false;
  }
}

/**
 * Mise à jour de la valeur sélectionnée pour les champs de type date
 * lors de la sélection dans le calendrier.
 * a : année
 * m : mois
 * j : jour
 * id : id du champ à mêtre à jour
 * typeDate(facultatif): 0,1 ou 2 suivant le format utilisé pour l'affichage (jj/mm/aaaa ou mm/aaaa ou aaaa)
 */
function majDate(a, m, j, id, typeDate){
  if(typeDate){// si type date passé en paramète
     if(typeDate=="1"){// cas mm/aaaa
      document.getElementById(id).value=verif2num(m)+"/"+a;
      if(document.getElementById(id+"onglet")){
        document.getElementById(id+"onglet").value=verif2num(m)+"/"+a;
      }
    }else if(typeDate=="2"){//cas aaaa
      document.getElementById(id).value=a;
      if(document.getElementById(id+"onglet")){
        document.getElementById(id+"onglet").value=a;
      }
    }else{//cas jj/mm/aaaa
      document.getElementById(id).value=verif2num(j)+"/"+verif2num(m)+"/"+a;
      if(document.getElementById(id+"onglet")){
        document.getElementById(id+"onglet").value=verif2num(j)+"/"+verif2num(m)+"/"+a;
      }
    }
  }else{// cas ou le type n'est pas définit on le formate en jj/mm/aaaa
  document.getElementById(id).value=verif2num(j)+"/"+verif2num(m)+"/"+a;
  // cas des champs dans les fiches fiches qui sont dans un onglet autre que
  // l'onglet général
  if(document.getElementById(id+"onglet")){
        document.getElementById(id+"onglet").value=verif2num(j)+"/"+verif2num(m)+"/"+a;
      }
  }
  // on cache la fenêtre de sélection de la date
  document.getElementById("divdate").style.display="none";
  // cas des champs datedebut et datefin de la fiche action
  // on lance le calcul de la durée
  if(id == "datedebut" || id == "datefin"){
    reloadDuree();
  }
}

/**
 * Vérification de la valeur saisie dans les recherches full texte
 * on vérifie ne nombre de caractères saisis si la valeur contient une *
 */
function testValeurRechercheFullText(valeur){
  if(valeur.indexOf("*") != -1){
    if(valeur.length < 4){
      return confirm("Le critère saisi est impr\u00E9cis\nLa recherche peut prendre du temps.\nVoulez-vous continuer?")
    }
  }
  return true;
}




var possourisx = 0;
var possourisy = 0;
posXsouris = 0;
posYsouris = 0;
// affichage du message d'attente suivant la souris lors d'un appel en AJAX
function attenteCurseur(){
  if(navigator.appName.substring(0,3) == "Net")
    document.captureEvents(Event.MOUSEMOVE);
  document.onmousemove = Pos_Souris;
  document.getElementById("attentesouris").style.display="block";
}

// On masque le message d'attente des requetes AJAX
function debloqueCurseur(){
  document.getElementById("attentesouris").style.display="none";
  document.onmousemove="";
}

// Positionne le message d'attente près de la souris
function Pos_Souris(e){
  possourisx = (navigator.appName.substring(0,3) == "Net") ? e.pageX : event.x+document.body.scrollLeft;
  possourisy = (navigator.appName.substring(0,3) == "Net") ? e.pageY : event.y+document.body.scrollTop;
  posXsouris = posXsouris+(((possourisx-posXsouris)+12));
  posYsouris = posYsouris+(((possourisy-posYsouris)+2));
  document.getElementById("attentesouris").style.top = posYsouris+"px";
  document.getElementById("attentesouris").style.left = posXsouris+"px";
}
// Appeller lors de la modification d'un champ
function modifchampgenerique(idTable,idChamp,valeur){
  //alert('Modif table :'+idTable+' Champ : '+idChamp+' valeur :'+valeur);
  //document.getElementById("71").value="Madame";
  makeRequestFirefox(contextpath+'/element/majchamphierarchique.jsp?idchamp='+idChamp+'&valeur='+valeur,'','','','majchamplie_'+idChamp);

}

function majchamplie(valeur,idChamp){
// valeur liste des id séparé par des ';' puis '#' puis liste des valeur père séparé par des ';'
// idChamp modifié par l'utilisateur
listechamp = valeur.substring(0,valeur.indexOf('#'));
listechamp = listechamp.substring(listechamp.indexOf(';')+1);
listevaleurPere = valeur.substring(valeur.indexOf('#')+1);
var reg1=new RegExp("[,]", "g");
var reg=new RegExp("[;]", "g");
  //document.write("Chaîne d'origine : " + chaine + "<BR>");
  var tab1 = listechamp.split(reg1);
  for(var j=0; j<tab1.length; j++) {
    var tableau=tab1[j].split(reg);
    var tabvalpere = listevaleurPere.split(reg);
    var ispere = true;
    for (var i=0; i<tableau.length; i++) {
      if(tableau[i] != idChamp){
        if(ispere){
          obj = document.getElementById(tableau[i]);
          if(obj != null){
            //obj.value=tabvalpere[i];
          }
		  //makeRequestFirefox(contextpath+'/element/calculListeMotcle.jsp?idChamp='+tableau[i]+'&idListeMotcle=null',tableau[i]+'select',tableau[i]+'selectliste',tableau[i]+'select','majdivchamplie');
        }else{
          if(tableau[i] != ''){
	        document.getElementById(tableau[i]).value='';
            makeRequestFirefox(contextpath+'/element/calculListeMotcle.jsp?idChamp='+tableau[i]+'&idListeMotcle=null',tableau[i]+'select',tableau[i]+'selectliste',tableau[i]+'select','majdivchamplie');
    	  }
        }
      }
      else{
        ispere = false;
      }
    }
  }
}


//Fonction de vérification des personnes associées à une action
function verifAction(idElem){
  if(document.getElementById("datedebut")){
     datedeb = document.getElementById("datedebut").value;
     datefin = document.getElementById("datefin").value;
     heuredeb = document.getElementById("heuredebutvisible").value;
     heurefin = document.getElementById("heurefinvisible").value;
     makeRequestFirefox(contextpath+"/element/action/actionsVerifActionDispo.do?idelem="+idElem+"&datedebut="+datedeb+"&datefin="+datefin+"&heuredebut="+heuredeb+"&heurefin="+heurefin, 'actionUsed', 'actionUsed', 'actionUsed', '');
  }
}

// Fonction qui retourne le contenu du formulaire
function getContenuFromForm(nomform){
var contenuform;
contenuform = "";
var x=document.getElementById(nomform);
for (var i=0;i<x.length;i++){
  sep = '&';
  if(i == 0){
    sep = '';
  }
  if(x.elements[i].type == 'checkbox'){
    if(x.elements[i].checked==true){
      contenuform = contenuform + sep + x.elements[i].name +'=1';
    }else{
      contenuform = contenuform + sep + x.elements[i].name +'=0';
    }
  }else{
      contenuform = contenuform + sep + x.elements[i].name +'='+x.elements[i].value;
    }
  }
  contenuform = contenuform.replace('%', '%25');
  return contenuform;
}

window.Alert_Affiche=function( alert_Titre,alert_Message, url )
{
  var alertBox = "";
  document.getElementById("alert_divAssombrir").style.visibility = "visible";
  alertBox +="<form name=\"FormValid\" method=\"get\" action='" + url + "'>";
  alertBox +="<table width=\"100%\" height=\"100%\"><tr width=\"100%\" align=\"center\"><td width=\"100%\"  class=\"TextCourantGrasgris10Centre\">";
  alertBox += alert_Titre+"<hr width=\"100%\" /></td></tr>";
  alertBox +="<tr width=\"100%\"><td width=\"100%\" class=\"TextCourantGrasgris10Centre\">";
  alertBox += alert_Message;
  alertBox +="</td></tr>";
  alertBox +="<tr width=\"100%\"><td align=\"center\" width=\"100%\">";
  alertBox +="<input style=\"float:left; margin-left:25%; bottom:10%; background-color:#97BE0D;\" type=\"submit\" value=\"OK\"/>";
  alertBox +="<input style=\"float:right; margin-right:25%; bottom:10%;\" type=\"button\" value=\"Annuler\" onclick=\"Alert_Close();\" />";
  alertBox +="</td></tr></table>";
  alertBox +="</form>";
  document.getElementById("alert_divcontenu").innerHTML = alertBox;
  document.getElementById("alert_div").style.visibility = "visible";
  document.getElementById("alert_divcontenu").style.visibility = "visible";
}

function Alert_Close()
{
  var alertBox =  document.getElementById("alert_div");
  alertBox.innerHTML ="";
  document.getElementById("alert_div").style.visibility = "hidden";
  document.getElementById("alert_divAssombrir").style.visibility = "hidden";
}

// fonction pour la déconnection automatique
var tempsrestant ;
var vardecremente = false;
function AffichedeconnectionAuto(){
  document.getElementById("deconectionauto").style.display="block";
  vardecremente = true;
  tempsrestant = 30;
  timerdecrement = setTimeout("decremente()", 1000);
}

function decremente(){
  if(vardecremente == true){
    tempsrestant = tempsrestant -1;
    if(tempsrestant == 0){
      YellowboxClose(contextpath);
    }else{
      document.getElementById('divtemprestant').innerHTML = tempsrestant + ' secondes';
      timerdecrement = setTimeout("decremente('"+contextpath+"')", 1000);
    }
  }
}

function annuledeconnection(temps,texte){
  vardecremente = false;
  document.getElementById("deconectionauto").style.display="none";
  timerdeconection = setTimeout("AffichedeconnectionAuto()", temps);
  document.getElementById('divtemprestant').innerHTML = texte;
  makeRequestFirefox(contextpath+'/reactivesession.do', '','','','');
}

function YellowboxClose(){
  location.replace(contextpath+"/deconnect.do");
}

function validerFiltres(e){
  codecle = getkey(e);
  if(codecle == 13){
	if(document.getElementById("btnValiderFiltre")){
      document.getElementById("btnValiderFiltre").click();
	}
  }
}

//*****************************************************************
// Fonction de la structure
function montreDivCreationTable(){
	  document.getElementById("divCreerTable").style.display="block";
	  document.getElementById("nomtableParam").focus();
	}
	function cacheDivCreationTable(){
	  document.getElementById("divCreerTable").style.display="none";
	}
	function montreDivGestionRelationFiche(){
	  document.getElementById("divGererRelationFiche").style.display="block";
	}
	function cacheDivGestionRelationFiche(){
	  document.getElementById("divGererRelationFiche").style.display="none";
	}
	
	var selecteurchamps = new selecteurChamp("leftpartchamps", "rightpartchamps", "selectprincchamps", "selectliechamps", "selectliechamps3", "selecteurchamps");

    function majtableduplicata(val){
      if(val == "duplicata"){
        document.getElementById("tableduplique").style.display="block";
        document.getElementById("tabletableliee").style.display="none";
        document.getElementById("idPrincipale").value = "";
        document.getElementById("idPrincipalevisible").value = "";
      }else{
        document.getElementById("tabletableliee").style.display="block";
        document.getElementById("tableduplique").style.display="none";
        document.getElementById("divmappingtitre").style.display="none";
        document.getElementById("divmapping").style.display="none";
        document.getElementById("listeChamps").value="";
        document.getElementById("idTablecatalogue").value="";
        document.getElementById("idTablecataloguevisible").value="";
        document.getElementById("divCreerTable").style.height="180px";
        if(N){
          document.getElementById("divCreerTablecontenu").style.height="140px";
        }else{
          document.getElementById("divCreerTablecontenu").style.height="144px";
        }
      }
    }
    function majlistechampstableduplicata(val){
      document.getElementById("divmappingtitre").style.display="block";
      document.getElementById("divCreerTable").style.height="390px";
      if(N){
          document.getElementById("divCreerTablecontenu").style.height="350px";
        }else{
          document.getElementById("divCreerTablecontenu").style.height="354px";
        }
      makeRequestFirefox(contextpath+'/param/structure/selecteurChamps.jsp?idtable='+val, "divmapping", "divmapping", "divmapping");
    }
    function submitElementsSelected(){
	resultval = '';
	var noeuds = document.getElementById('rightpartchamps').firstChild;
	while(noeuds != null){
  	  if(resultval == ''){
         resultval = noeuds.id.substring(noeuds.id.indexOf("_")+1);
       }else{
         resultval += ';'+noeuds.id.substring(noeuds.id.indexOf("_")+1);
       }
       noeuds = noeuds.nextSibling;
      }
      document.getElementById('listeChamps').value=resultval;
    }

    function majlisterelationfiche(){
      val1=document.getElementById('idTableDep').value;
      val2=document.getElementById('idTableCree').value;
		makeRequestFirefox(contextpath+'/param/structure/listetable/gestionrelationfiche.jsp?idtabledep='+val1+'&idtablecree='+val2, "divrelationfiche", "divrelationfiche", "divrelationfiche");

    }

function majrelationauto(typerelation,idRelation){
      makeRequestFirefox(contextpath+'/param/structure/listetable/majrelationauto.jsp?idrelation='+idRelation+'&typerelation='+typerelation, "", "", "");

}
var bloquer=false;
function valideTraitement(){
if(bloquer == false){
document.getElementById('submitCreationTable').click();
bloquefiche();
bloquer = true;
}
}

/** Utiliser dans la liste des recherches */
function validChangeTypeTableRecherche(val){
  if(val != -1){
	 if(document.getElementById("formTableSelectRecherche")){
       document.getElementById("formTableSelectRecherche").submit();
	 }
  }
}

//*****************************************************************
//**Fonction pour ListeTag
var clickligne = 0;
function Liste_maj(div,uri,page,tri_col,tri_sens,filtre){
	if ( (tri_col=='') || (tri_sens == '') ){
	  param = 'page='+page;
	}else{
	  param = 'page='+page+'&tri_col='+tri_col+'&tri_sens='+tri_sens;
	}
	if(filtre != ''){
	  param = param + '&filtre='+ filtre;
	}
	if(uri.indexOf('?') == -1){
	  makeRequestFirefox(uri+'?'+param,div,div,div,'');
	}else{
	  makeRequestFirefox(uri+'&'+param,div,div,div,'');
	}
}

function Liste_confirme(message,uri){
	clickligne = 1;
	if(confirm(message)){
	  location.replace(uri);
	}
	clickligne = 0;
}

$(function(){
	$.jstree._themes = contextpath+"/jscript/jstree/themes/";
	$("#webmail")
	  .jstree({
		"json_data" : {
			"ajax" : {
				"url" : contextpath+"/webmailtree",
				"data" : function (n) {
		  var test = {id : n.attr ? n.attr("id") : 0};
					return  test ;; 
				}
			}
		},
		"themes" : {
			"theme" : "menu",
			"dots" : true,
			"icons" : true
		},
		"plugins" : [ "themes", "json_data","ui","types" ]
	})
	.bind("open_node.jstree close_node.jstree", function (e) {
		//alert("open_node.jstree close_node.jstree : "+e.type);
	})
	.bind('select_node.jstree', function(node, data) { 
		var id = data.rslt.obj.attr("id").slice(12);
		if(id == '0'){
		  location.replace(contextpath+"/menu/listeMail.do");
		}else{
		  location.replace(contextpath+"/menu/listeMail.do?id="+id);
		}
		return false;
	});
});
//*****************************************************************
//**Fonction pour la liste des utilisateurs
var varmodifCheck; // Indique si on a modifier les boites à cocher
function modifCheck(){
	   varmodifCheck = true;
	}

	function verifmodifCheck2(request,action){
	  if(varmodifCheck){
	    document.getElementById("formliste").target = "";
	    document.getElementById("formliste").nomAction.value = action;
	    document.getElementById("btnValiderListe").click();
	  }
	  else{
	    location.replace(request + action);
	  }
	}
	function imprimerUtilisateur(request,action){
		document.getElementById("formliste").target = "_blank";
		document.getElementById("formliste").nomAction.value = action;
		document.getElementById("btnValiderListe").click();
	}
	
	  function executeoperation(val,sequence,request){
	   if (val == '2'){
	     verifmodifCheck2(request,'/listes/toutcocher.do?sequence='+sequence);
	   }
	   else if (val == '3'){
	     verifmodifCheck2(request,'/listes/toutdecocher.do?sequence='+sequence);
	   }
	   else if (val == '4'){
	     verifmodifCheck2(request,'/listes/inverserSelection.do?sequence='+sequence);
	   }
	   else if (val == '-'){
	     document.getElementById('selectboiteacoche').value = 0;
	   }
	 }


	 function validModifGroupe(request){
	  action = '/param/utilisateur/listeUtilisateurModifierGroupeAction.do?idgroupe='+document.getElementById('idGroupehidden').value;
	  verifmodifCheck2(request,action);
	 }

	 function affichefenetremodifgroupe(){
	 document.getElementById('modifgroupe').style.display="block";
	 }

	 function validRechargeProfil(request){
	  action = '/param/utilisateur/listeUtilisateurRechargerProfilAction.do?iduser='+document.getElementById('idUserprofilehidden').value;
	  verifmodifCheck2(request,action);
	 }

	 function affichefenetrerechargeprofil(){
	 document.getElementById('rechargeprofil').style.display="block";
	 }
	 
	 function initilialiserfiltres(){
		  verifmodifCheck2(contextpath,'/param/utilisateur/listeUtilisateurInitFiltres.do'); 
	 }
	 function initilialiseroptions(){
		 verifmodifCheck2(contextpath,'/param/utilisateur/listeUtilisateurInitOptions.do'); 
	 }
	 function incrementecasescochees(elementcase){
		  if(elementcase.checked){
		  nbcasesacocher = nbcasesacocher+1;
		  }else{
		    nbcasesacocher = nbcasesacocher-1;
		  }
		}
	 var nbcasesacocher = 0;
     function listeutilisateur(){
         var checkboxclick = 0;
         var varmodifCheck = false;
         nbcasesacocher = 0;
         varmodifCheck=false;
         makeRequestFirefox(contextpath+'/home/listeUtilisateur_ajax.do','bodypage','bodypage','bodypage','');
     }
	 
//*****************************************************************
// Ancien fichier scriptFieldSociete.js 
	  var lettresSociete = "";
	  function calculeChoixSocietesDefaut(val){
	    lettresSociete = val;
	    request = contextpath+"/element/ficheRechercherElementALierAction.do?typeelement=societe&lettres="+val;
	    makeRequestFirefox(request, "divChoixsocieteDefaut", "div2ChoixsocieteDefaut", "divChoixsocieteDefaut", "-1");
	  }

	  function cacheChoixSocieteDefaut(){
	  document.getElementById('divChoixsocieteDefaut').style.display='none';
	  }

	  function cacheCreationSocieteDefaut(){
	    document.getElementById('divCreationsocieteDefaut').style.display='none';
	  }


	  function calculeSocieteLiesDefaut(){
	    request = contextpath+"/element/ficheRechercherElementLiesAction.do?idTable=104";
	    makeRequestFirefox(request, "divChoixsocieteLiesDefaut", "div2ChoixsocieteLiesDefaut", "divChoixsocieteLiesDefaut", "-1");
	  }

	  function cacheChoixSocieteLiesDefaut(){
	    document.getElementById('divChoixsocieteLiesDefaut').style.display='none';
	  }

	  var historiqueSocieteCalcule = false;
	  function cacheHistoriqueSocieteDefaut(){
	    document.getElementById('divHistoriquesocieteDefaut').style.display='none';
	  }
	  function calculeHistoriqueSocieteDefaut(idelem){
	    if(historiqueSocieteCalcule == true){
	      document.getElementById('divHistoriquesocieteDefaut').style.display='block';
	    }else{
	      request = contextpath+"/listes/action/actionsRecupererHistoriqueAction.do?id="+idelem+"&typeelement=societe";
	      makeRequestFirefox(request, "divHistoriquesocieteDefaut", "div2HistoriquesocieteDefaut", "divHistoriquesocieteDefaut", "-1");
	    }
	  }
//***********************************************
// Ancien fichier scriptFieldContact.js
	  var lettresContact = "";
	  function calculeChoixContactsDefaut(val){
	    lettresContact = val;
	    request = contextpath+"/element/ficheRechercherElementALierAction.do?typeelement=contact&lettres="+val;
	    makeRequestFirefox(request, "divChoixcontactDefaut", "div2ChoixcontactDefaut", "divChoixcontactDefaut", "-1");
	  }

	  function cacheChoixContactDefaut(){
	  document.getElementById('divChoixcontactDefaut').style.display='none';
	  }

	  function CalculCreationContactDefaut(){
	    cacheChoixContactDefaut();
	    request = contextpath+"/element/contact/contactCreerDepuisAtion.jsp?lettres="+lettresContact;
	    makeRequestFirefox(request, "divCreationcontactDefaut", "div2CreationcontactDefaut", "divCreationcontactDefaut", "-1");
	  }

	  function cacheCreationContactDefaut(){
	    document.getElementById('divCreationcontactDefaut').style.display='none';
	  }

	  function calculeContactLiesDefaut(){
	  request = contextpath+"/element/ficheRechercherElementLiesAction.do?idTable=68";
	  makeRequestFirefox(request, "divChoixcontactLiesDefaut", "div2ChoixcontactLiesDefaut", "divChoixcontactLiesDefaut", "-1");
	  }

	  function cacheChoixContactLiesDefaut(){
	    document.getElementById('divChoixcontactLiesDefaut').style.display='none';
	  }

	  var historiqueContactCalculeDefaut = false;
	  function cacheHistoriqueContactDefaut(){
	    document.getElementById('divHistoriquecontactDefaut').style.display='none';
	  }
	  function calculeHistoriqueContactDefaut(idelem){
	    if(historiqueContactCalculeDefaut == true){
	      document.getElementById('divHistoriquecontactDefaut').style.display='block';
	    }else{
	      request = contextpath+"/listes/action/actionsRecupererHistoriqueAction.do?id="+idelem+"&typeelement=contact";
	      makeRequestFirefox(request, "divhistoriquecontactDefaut", "div2historiquecontactDefaut", "divhistoriquecontactDefaut", "-1");
	    }
	  }
// ***********************************************

function selectElemLies(idTable,idChamp){
  request = contextpath+"/element/ficheRechercherElementLiesAction.do?idTable="+idTable+"&idChamp="+idChamp;
  makeRequestFirefox(request, "divChoixelementLies", "div2ChoixelementLies", "divChoixelementLies", "-1");
}

function cacheChoixContactLies(){
  document.getElementById('divChoixelementLies').style.display='none';
}


function arretServeur(){
  if(confirm("Attention !!!! Voulez-vous arrêter le serveur yellowbox ?")){
	 location.replace(contextpath +"/arreterserveuraction.do");
  }
}

function infoUtilisationChamp(idChamp){
	request = contextpath+"/param/structure/utilisationchamp.do?idChamp="+idChamp;
	makeRequestFirefox(request, "idInfoChamp", "idInfoChampcontenu", "idInfoChamp", "-1");
}

function afficheImp(){
	  document.getElementById('divchoiximprimer').style.display='block';
	}

/*******/
// Fonction pour recherche full texte lors de la selection d'un utilisateur
function calculRechercheFullTextRelation(mot){
  calculRechercheFullTextRelation(mot,0);
}
function calculRechercheFullTextRelation(mot,idnomchamp){
  strinparam = '';
  if(idnomchamp != 0){
    strinparam = '&nomidchamp='+idnomchamp;
  }
  makeRequestFirefox(contextpath+'/listes/relation/fullText.do?nom='+mot+strinparam, "divselectionrelation", "divselectionrelationcontenu", "divselectionrelation", "-1");
}

function calculRechercheFullTextRelationOngletGeneral(mot){
  makeRequestFirefox(contextpath+'/listes/relation/fullText.do?ongletgeneral=1&nom='+mot, "divselectionrelation", "divselectionrelationcontenu", "divselectionrelation", "-1");
}

function calculFiltreUnique(mot, typerec,idchamp){
  makeRequestFirefox(contextpath+'/listes/relation/fullText.do?ongletgeneral=1&nom='+mot+'&typerec='+typerec, "divselectionrelation", "divselectionrelationcontenu", "divselectionrelation", "-1");
}

function calculRechercheFullTextRelationGeneral(listerelation, mot){
  makeRequestFirefox(contextpath+'/element/ficheRechercherElementALierAction.do?ongletgeneral=1&typeelement='+listerelation+'&lettres='+mot, "divselectionrelation", "divselectionrelationcontenu", "divselectionrelation", "-1");
}

function calculRechercheFullTextRelationGeneralautre(listerelation, mot, idnomchamp){
  makeRequestFirefox(contextpath+'/element/ficheRechercherElementALierAction.do?nomidchamp='+idnomchamp+'&typeelement='+listerelation+'&lettres='+mot, "divselectionrelation", "divselectionrelationcontenu", "divselectionrelation", "-1");
  activeWindow("divselectionrelation");
}

function cacheChoixRelation(){
  document.getElementById('divselectionrelation').style.display="none";
}

/**********************************/
function menuContext_Cache(nom){
  document.getElementById(nom).style.display='none';
}
function menuContext_Montre(nom){
  document.getElementById(nom).style.display='block';
}
/**********************************/
function lanceFiltre(){
	filtre = "ACTIF:"+document.getElementById("regle_actif").value+";";
	filtre += "TABLE:"+document.getElementById("regle_table").value+";";
	filtre += "TYPEREGLE:"+document.getElementById("regle_type").value;
	Liste_maj('listeregle_div',contextpath+'/listes/regle_ajax.do','1','','',filtre);
}

function tableaubord_changevisu(type,idEtatGraphique,idDiv){
	makeRequestFirefox(contextpath+'/listes/tableaubord/EtatGraphiqueExecuter.do?type='+type+'&id='+idEtatGraphique+'&iddiv='+idDiv, idDiv, idDiv, idDiv, "-1");
}

function lanceFiltreRecherche(){
	filtre = "TABLE:"+document.getElementById("recherche_table").value;
	Liste_maj('listerecherche_div',contextpath+'/listes/recherche_ajax.do','1','','',filtre);
}

function select_onclick(id,cpt){
  document.getElementById( id + 'visible').value=document.getElementById(id + "_" + cpt ).value; 
  document.getElementById( id ).value=document.getElementById( id + "_" + cpt + 'val').value; 
  document.getElementById( id + 'select' ).style.display='none'; 
}

function executeEtatExcel(idEtat,idOnglet){
	var type = "pc";
	if(navigator.appVersion.indexOf("Mac",0)>0){
	type="mac";
}

	Ssliste_actionsurselection('/generationexcel?idonglet='+idOnglet+'&id='+idEtat+'&saisiemodele=0&typeclient='+type,idOnglet,'','NORMAL',true);

}

function montrecreationfichecommune(nomdudiv,tablesousliste,idonglet){
	request = contextpath+"/listes/creationfichecommune.jsp?sousliste="+tablesousliste+"&idonglet="+idonglet;
	makeRequestFirefox(request, nomdudiv+"contenu", nomdudiv+"contenu", nomdudiv, "-1");
	activeWindow("nomdudiv");
	}

function lancecreationfichecommune(tablesousliste,idonglet){
	  idTable = document.getElementById("idselecttable").value;
	  Ssliste_actionsurselection('/listes/creerFicheCommuneAction.do?idtable='+idTable+'&sousliste='+tablesousliste,idonglet,'','NORMAL',true);

}

function verifchamptable(){
	var type = document.getElementById("typechamp").value;
	if(type == "12"){
		document.getElementById("champtypetable").style.display="";
	}
	else{
		document.getElementById("champtypetable").style.display="none";
	}
}
