Valid XHTML     Valid CSS2    


        //    (gH)   -_-  exemple1.js  ;  TimeStamp (unix) : 16 Octobre 2009 vers 15:11
        
        var SORT_ROW_INDEX;
        var SORT_COL_INDEX;
        var thead = false;
        var tc    = new Array(); // pour cloner les tableaux originaux il faut un tableau auxilliaire
        
        // ###############################################################
        
        function initialisationDesTableaux() {
        
        // ###############################################################
        
        // On cherche les tableaux dans la page dont la classe est triCol, triLig ou triTab
        // et suivant les cas, on complète la première ligne/colonne
        
           if (!document.getElementsByTagName) return    ; // si le navigteur ne sait pas le faire, on quitte
        
           tbls = document.getElementsByTagName("table") ; // on met dans tbls tous les tableaux HTML de la page
        
           for (var ti=0;ti<tbls.length;ti++) {
              thisTbl = tbls[ti];
              // si le tableau courant thisTbl a le style requis,
              // alors on lui applique la fonction correspondante
              if (((' '+thisTbl.className+' ').indexOf("triCol") != -1)) {
                 rendTriableEnColonne(thisTbl);
              } //fin de si
              if (((' '+thisTbl.className+' ').indexOf("triLig") != -1)) {
                 rendTriableEnLigne(thisTbl);
              } //fin de si
              if (((' '+thisTbl.className+' ').indexOf("triTab") != -1))       {
                 rendTriableEnColonne(thisTbl);
                 rendTriableEnLigne(thisTbl);
                 /* non : rendTriable(thisTbl); */
              } //fin de si
           } // fin de pour
        
           // on est alors pret à faire une copie des tableaux
        
           tbls = document.getElementsByTagName("table") ; // on met dans tbls tous les tableaux HTML de la page
        
           for (var ti=0;ti<tbls.length;ti++) {
              thisTbl = tbls[ti];
              // on fait une copie de l'original
              tc[ti] = thisTbl.cloneNode(true);
           } // fin de pour
        
        } // fin de fonction initialisationDesTableaux
        
        // ###############################################################
        
        function rendTriableEnColonne(t) {
        
        // ###############################################################
        
        // Cette fonction insère un bouton pour chacune des cellules de la première ligne.
        // Dès qu'on clique :  - soit on trie le tableau dans l'ordre croissant ou décroissant suivant le sens de la flèche
        //                     - soit on recharge le tableau original
        
           firstRow = testeEntete(t)   ; if (!firstRow) { return ; }    // s'il n'y a pas d'entete, on quitte
        
           // on rend chacune des cellules de l'entete cliquable
        
           for (var ic=0;ic<firstRow.cells.length;ic++) {
              var cell = firstRow.cells[ic];
              // var txt = ts_getInnerText(cell);
              var txtHTML = sousArbreDom(cell,1,1)
                  if (txtHTML.indexOf("triCol")==-1) {
                  // on retire <th> et </th>
                  txtHTML = txtHTML.replace(/<th>/g, "");
                  txtHTML = txtHTML.replace(/<\/th>/g, "");
                  cell.innerHTML =   txtHTML + '<span class="sortheader" onclick="tri_col(this, '+ic+');return false;">'
                                             + symboleTri("col","h",1)
                                             + '</span>' // avant, c'était juste txt au lieu de txtHTML
                  } ; // finsi
           } // fin pour
        
        } // fin de fonction rendTriableEnColonne
        
        // ###############################################################
        
        function tri_col(lnk, clid) {
        
        // ###############################################################
        
        // cette fonction permet de trier le tableau en lignes selon la colonne clid
        // lnk sert à connaitre le tableau qui contient la colonne
        
        ecrit_infos("tri_col("+lnk+","+clid+")")
        
           // on récupère le contenu des "<span...>"
           // car on y met l'attribut "sensTri" qui donne le sens du tri
        
           var span;
           for (var ci=0;ci<lnk.childNodes.length;ci++) {
              if (lnk.childNodes[ci].tagName && lnk.childNodes[ci].tagName.toLowerCase() == 'span') {
                  span = lnk.childNodes[ci];
              } // fin si
           } // fin pour
        
           var spantext = ts_getInnerText(span);
        
           var l=0;
           var td = lnk.parentNode;
           var column = clid ;
           var t = getParent(td,'TABLE');
        
           if (t.rows.length <= 1) return; // on quitte s'il n'y a pas de colonne
        
           nsortfn = natureDuTriCol(t,column)
        
           SORT_COL_INDEX = column;
           var firstRow      = new Array();
           var newRows       = new Array();
           var newColumns    = new Array();
        
           for (var k=0;k<t.tBodies.length;k++) {
              if (!thead) {
                 // on saute la première ligne
                 for (var j=1;j<t.tBodies[k].rows.length;j++) {
                    newRows[j-1] = t.tBodies[k].rows[j]; // newRows contient les lignes du tableau à trier
                 } // fin pour
              } else {
                 // on ne saute pas la première ligne
                 for (var j=0;j<t.tBodies[k].rows.length;j++) {
                    newRows[j] = t.tBodies[k].rows[j];
                 } // fin pour
              } // fin si
        
           } // fin pour
        
        sensTriAtt = span.getAttribute("senstri")
        ecrit_infos("triCol sens = "+sensTriAtt)
        
        // si le sens de tri est none, on reprend l'original
        
        if (sensTriAtt == 'o') {
        
                       ARROW = symboleTri("col","h",1)
                       span.setAttribute('senstri','h');
        
                       k=0;
                       var m=0;
                       var idtv= 0 ;
                       while (m<tc.length) {
        
                          for(var i=0;i<tc[m].rows[0].cells.length;i++) {
                             // si on retrouve la bonne en-tete...
                             if (trim(ts_getInnerText(t.rows[0].cells[column]))==trim(ts_getInnerText(tc[m].rows[0].cells[i]))) {
                             // on peut recopier le tableau original cloné
                                idtv = m ;
                                for(var j=0;j<newRows.length;j++) {
                                   for(var k=0;k<newRows[0].cells.length;k++) {
        // c'est ici que tout se joue : il faut tout enlever avant de mettre la copie clonée
                                      laCase = newRows[j].cells[k]
                                      enleveLesAttributs(laCase)
                                      while (laCase.firstChild) { laCase.removeChild(laCase.firstChild) }
                                      cn = tc[m].rows[j+1].cells[k].cloneNode(true)
                                      laCase.appendChild( cn )
        
                                   } // fin pour k
                                } // fin pour j
                                break;
                             } // fin si
                          } // fin pour i
                          m++;
                       } // fintant que
        
        } else {
        
        // sinon, on doit trier et changer le symbole ainsi que le "span" du sens de tri
        
        newRows.sort(sortfnCol);
        
          if (sensTriAtt == 'b') { // pour avoir un tri inverse, on utilise reverse
        
               ARROW = symboleTri("col","o",1)
               newRows.reverse();
               span.setAttribute('senstri','o');
        
          } else { // ou alors, on ajuste à changer la flèche et le span
        
               ARROW = symboleTri("col","b",1)
               span.setAttribute('senstri','b');
        
          } // fin si
        
        // on a bien géré newRows, on le recopie dans le tableau de départ
        
          for (var i=0; i<newRows.length; i++) {
                    if (!newRows[i].className || (newRows[i].className && (newRows[i].className.indexOf('sortbottom') == -1))) {
                       t.tBodies[0].appendChild(newRows[i]);
                    } // fin si
          } // fin pour
        
        } // fin si
        
        // on remet les boutons pour les autres colonnes
        
        var allspans = document.getElementsByTagName("span");
        for (var ci=0;ci<allspans.length;ci++) {
              if (allspans[ci].className == 'triCol') {
                 if (getParent(allspans[ci],"table") == getParent(lnk,"table")) { // in the same table as us?
                    allspans[ci].innerHTML = symboleTri("col","h",0)
                 } // fin si getParent
              } // allspans
        } // fin pour
        
        span.innerHTML = ARROW;
        
        } // fin de fonction tri_col
        
        // ###############################################################
        
        function rendTriableEnLigne(t) {
        
        // ###############################################################
        
        // Cette fonction insère un bouton pour chacune des cellules de la première colonne.
        // Dès qu'on clique :  - soit on trie le tableau dans l'ordre croissant ou décroissant suivant le sens de la flèche
        //                     - soit on recharge le tableau original
        
           firstRow = testeEntete(t)   ; if (!firstRow) { return ; }    // s'il n'y a pas d'entete, on quitte
        
           // on rend chacune des cellules de la colonne 1 cliquable
        
           for (var il=0; il<t.rows.length; il++) {
              cell = t.rows[il].cells[0];
              // var txt     = ts_getInnerText(cell);
              var txtHTML = sousArbreDom(cell,1,1)
                  if (txtHTML.indexOf("triLig")==-1) {
                  // on retire <th> et </th>
                  txtHTML = txtHTML.replace(/<th>/g, "");
                  txtHTML = txtHTML.replace(/<\/th>/g, "");
                  cell.innerHTML =    '<span class="sortheader" onclick="tri_lig(this, '+ il + ');return false;">'
                                   + symboleTri("lig","d",1) + '</span>'
                                   + txtHTML; // avant, c'était juste txt
                  } ; // finsi
           } // fin pour
        
        } // fin de fonction rendTriableEnLigne
        
        // ###############################################################
        
        function tri_lig(lnk,clid) {
        
        // ###############################################################
        
        // cette fonction permet de trier le tableau en colonne selon la ligne clid
        // lnk sert à connaitre le tableau qui contient la colonne
        
        // on récupère le contenu des "<span...>"
        // car on y met l'attribut "sensTri" qui donne le sens du tri
        
        ecrit_infos("tri_lig("+lnk+","+clid+")")
        //ecrit_infos("le parent est "+lnk.getParent())
           var span;
           var l=0;
        
           for (var ci=0;ci<lnk.childNodes.length;ci++) {
              if (lnk.childNodes[ci].tagName && lnk.childNodes[ci].tagName.toLowerCase() == 'span')
              span = lnk.childNodes[ci];
           } // fin pour ci
           var spantext = ts_getInnerText(span);
           var td = lnk.parentNode;
           var ligne = clid ;
           var t = getParent(td,'TABLE');
        
           if (t.rows.length <= 1) return; // on quitte s'il n'y a pas de colonne
        
           sortfnLig = natureDuTriLig(t,ligne)
        
           SORT_ROW_INDEX = ligne;
           var newRows = new Array();
        
           for (var k=0;k<t.tBodies.length;k++) {
                 for (var j=0;j<t.tBodies[k].rows.length;j++) {
                    newRows[j] = t.tBodies[k].rows[j];
                 } // fin pour j
           } // fin pour k
        
           var min_max;
           var k;
           var tmp;
        
           // on ne peut pas appliquer la meme technique que pour le tri des lignes
        
        // si le sens de tri est none, on reprend l'original
        
        sensTriAtt = span.getAttribute("senstri")
        ecrit_infos("triLig sens = "+sensTriAtt)
        
           if (sensTriAtt == 'o') {
        ecrit_infos("Lig partie none")
                       ARROW = symboleTri("lig","d",1)
                       span.setAttribute('senstri','d');
        
                       k=0;
                       var m=0;
                       while (m<tc.length) {
                          for(var i=0;i<tc[m].rows.length;i++) {
                             if (ts_getInnerText(t.rows[ligne].cells[0])==ts_getInnerText(tc[m].rows[i].cells[0])) {
                                for(var j=0;j<newRows.length;j++) {
                                   for(var k=0;k<newRows[0].cells.length;k++) {
                                      // newRows[j].cells[k].innerHTML=ts_getInnerText(tc[m].rows[j].cells[k]);
        
                                      laCase = newRows[j].cells[k]
                                      enleveLesAttributs( laCase )
                                      while (laCase.firstChild) { laCase.removeChild(laCase.firstChild) }
        
                                      cn = tc[m].rows[j].cells[k].cloneNode(true)
                                      laCase.appendChild( cn )
                                   } // fin pour k
                                } // fin pour j
                                break;
                             } // fin si
                          } // fin pour i
                          m++;
                       } // fin tant
        
           } else {
        
        // sinon, on doit trier et changer le symbole ainsi que le "span" du sens de tri
        
                 if (sensTriAtt == 'g') { // pour avoir un tri inverse, on
        
                    for(var k=1;k<newRows[1].cells.length-1;k++) {
                       min_max=k;
                       for(var j=k+1;j<newRows[1].cells.length;j++) {
                          if (sortfnLig(newRows[SORT_ROW_INDEX].cells[j],newRows[SORT_ROW_INDEX].cells[k])>0) {
                             min_max=j;
                             echangerCellule(tmp,newRows[SORT_ROW_INDEX].cells[k],newRows[SORT_ROW_INDEX].cells[min_max]);
                             for(var i=0;i<newRows.length;i++) {
                                if(i!=SORT_ROW_INDEX) {
                                   echangerCellule(tmp,newRows[i].cells[k],newRows[i].cells[min_max]);
                                } // fin si
                             } // fin pour i
                          } // fin si sortfnLig
                       } // fin pour j
                    } // fin pour k
        
                    ARROW = symboleTri("lig","o",1)
                    span.setAttribute('senstri','o');
        
            } else { // ou alors, on ajuste à changer la flèche et le span
        
                    ARROW = symboleTri("lig","g",1)
                    span.setAttribute('senstri','g');
        
                    for(var k=1;k<newRows[1].cells.length-1;k++) {
                       min_max=k;
                       for(var j=k+1;j<newRows[1].cells.length;j++) {
                          if (sortfnLig(newRows[SORT_ROW_INDEX].cells[j],newRows[SORT_ROW_INDEX].cells[k])<0) {
                             min_max=j;
                             echangerCellule(tmp,newRows[SORT_ROW_INDEX].cells[k],newRows[SORT_ROW_INDEX].cells[min_max]);
                             for (var i=0;i<newRows.length;i++) {
                                if(i!=SORT_ROW_INDEX) {
                                   echangerCellule(tmp,newRows[i].cells[k],newRows[i].cells[min_max]);
                                } //fin si
                             } // fin pour i
                          } // fin si sortfnLig
                       } //fin pour j
                    } // fin pour k
        
                 } // fin si
           } // fin si
        
           // on remet les boutons pour les autres colonnes
        
           var allspans = document.getElementsByTagName("span");
           for (var ci=0;ci<allspans.length;ci++) {
              if (allspans[ci].className == 'trilig') {
                 if (getParent(allspans[ci],"table") == getParent(lnk,"table")) { // in the same table as us?
                    allspans[ci].innerHTML = symboleTri("lig","d",0)
                 } // fin si
              } // fin si
           } //  pour
        
           span.innerHTML = ARROW;
        
        } // fin de fonction tri_lig
        
        // ###############################################################
        
        function ts_getInnerText(el) {
        
        // ###############################################################
        
        // cette fonction retourne le contenu d'un élément du tableau saisi en paramètre
        
           if (typeof el == "string") return el;
           if (typeof el == "undefined") { return el };
           if (el.innerText) return el.innerText;   // Not needed but it is faster
           var str = "";
        
           var cs = el.childNodes;
           var l = cs.length;
           for (var i = 0; i < l; i++) {
              switch (cs[i].nodeType) {
                 case 1: //ELEMENT_NODE
                    str += ts_getInnerText(cs[i]);
                    break;
                 case 3:   //TEXT_NODE
                    str += cs[i].nodeValue;
                    break;
              } //fin de switch
           } //fin de pour
           return str;
        } // fin de fonction ts_getInnerText
        
        // ###############################################################
        
        function echangerCellule(tmp,cell1,cell2) {
        
        // ###############################################################
        
           tmp1 = sousArbreDom(cell1,1,1)
           tmp2 = sousArbreDom(cell2,1,1)
           cell1.innerHTML = tmp2 ;
           cell2.innerHTML = tmp1 ;
        
        }  // fin de fonction
        
        // ###############################################################
        
        function echanger(tmp,cell1,cell2) {
        
        // ###############################################################
        
           tmp=ts_getInnerText(cell1);
           cell1.innerHTML=ts_getInnerText(cell2);
           cell2.innerHTML=tmp;
        
        }  // fin de fonction
        
        // ###############################################################
        
        function ts_sort_numeric1(a,b) {
        
        // ###############################################################
        
           var aa = trim(ts_getInnerText(a));
           aa = clean_num(aa);
           var bb = trim(ts_getInnerText(b));
           bb = clean_num(bb);
        
           return compare_numeric1(aa,bb);
        
        }  // fin de fonction
        
        // ###############################################################
        
        function compare_numeric1(a,b) {
        
        // ###############################################################
        
           var a = parseFloat(a);
           a = (isNaN(a) ? 0 : a);
           var b = parseFloat(b);
           b = (isNaN(b) ? 0 : b);
           return a - b;
        
        }  // fin de fonction
        
        // ###############################################################
        
        function ts_sort_caseinsensitive1(a,b) {
        
        // ###############################################################
        
           aa = ts_getInnerText(a).toLowerCase();
           bb = ts_getInnerText(b).toLowerCase();
           if (aa==bb) {
              return 0;
           } // fin si
           if (aa<bb) {
              return -1;
           } // fin si
           return 1;
        
        }  // fin de fonction
        
        // ###############################################################
        
        function getParent(el, pTagName) {
        
        // ###############################################################
        
           if (el == null) {
              return null;
           } else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase()) {
              return el;
           } else {
              return getParent(el.parentNode, pTagName);
           } // finsi
        
        }  // fin de fonction
        
        // ###############################################################
        
        function sort_date(date) {
        
        // ###############################################################
        
           // y2k notes: two digit years less than 50 are treated as 20XX, greater than 50 are treated as 19XX
           dt = "00000000";
           if (date.length == 11) {
              mtstr = date.substr(3,3);
              mtstr = mtstr.toLowerCase();
              switch(mtstr) {
                 case "jan": var mt = "01"; break;
                 case "feb": var mt = "02"; break;
                 case "mar": var mt = "03"; break;
                 case "apr": var mt = "04"; break;
                 case "may": var mt = "05"; break;
                 case "jun": var mt = "06"; break;
                 case "jul": var mt = "07"; break;
                 case "aug": var mt = "08"; break;
                 case "sep": var mt = "09"; break;
                 case "oct": var mt = "10"; break;
                 case "nov": var mt = "11"; break;
                 case "dec": var mt = "12"; break;
                 // default: var mt = "00";
              } // fin de switch
              dt = date.substr(7,4)+mt+date.substr(0,2);
              return dt;
           } else if (date.length == 10) {
              if (europeandate == false) {
                 dt = date.substr(6,4)+date.substr(0,2)+date.substr(3,2);
                 return dt;
              } else {
                 dt = date.substr(6,4)+date.substr(3,2)+date.substr(0,2);
                 return dt;
              } // fin si
           } else if (date.length == 8) {
              yr = date.substr(6,2);
              if (parseInt(yr) < 50) {
                 yr = '20'+yr;
              } else {
                 yr = '19'+yr;
              } // fin si
              if (europeandate == true) {
                 dt = yr+date.substr(3,2)+date.substr(0,2);
                 return dt;
              } else {
                 dt = yr+date.substr(0,2)+date.substr(3,2);
                 return dt;
              } // fin si
           } // fin si
           return dt;
        
        }  // fin de fonction
        
        // ###############################################################
        
        function ts_sort_date(a,b) {
        
        // ###############################################################
        
           dt1 = sort_date(ts_getInnerText(a.cells[SORT_COL_INDEX]));
           dt2 = sort_date(ts_getInnerText(b.cells[SORT_COL_INDEX]));
        
           if (dt1==dt2) {
              return 0;
           } // fin si
           if (dt1<dt2) {
              return -1;
           } // fin si
           return 1;
        
        }  // fin de fonction
        
        // ###############################################################
        
        function ts_sort_numeric(a,b) {
        
        // ###############################################################
        
           var aa = trim(ts_getInnerText(a.cells[SORT_COL_INDEX]));
           aa = clean_num(aa);
           var bb = trim(ts_getInnerText(b.cells[SORT_COL_INDEX]));
           bb = clean_num(bb);
        
           return compare_numeric(aa,bb);
        
        }  // fin de fonction
        
        // ###############################################################
        
        function compare_numeric(a,b) {
        
        // ###############################################################
           var a = parseFloat(a);
           a = (isNaN(a) ? 0 : a);
           var b = parseFloat(b);
           b = (isNaN(b) ? 0 : b);
           return a - b;
        
        }  // fin de fonction
        
        // ###############################################################
        
        function ts_sort_caseinsensitive(a,b) {
        
        // ###############################################################
        
           aa = ts_getInnerText(a.cells[SORT_COL_INDEX]).toLowerCase();
           bb = ts_getInnerText(b.cells[SORT_COL_INDEX]).toLowerCase();
           if (aa==bb) {
              return 0;
           } // fin si
           if (aa<bb) {
              return -1;
           } // fin si
           return 1;
        
        }  // fin de fonction
        
        // ###############################################################
        
        function ts_sort_default(a,b) {
        
        // ###############################################################
        
           aa = ts_getInnerText(a.cells[SORT_COL_INDEX]);
           bb = ts_getInnerText(b.cells[SORT_COL_INDEX]);
           if (aa==bb) {
              return 0;
           } // fin si
           if (aa<bb) {
              return -1;
           } // fin si
           return 1;
        
        }  // fin de fonction
        
        // ###############################################################
        
        function addEvent(elm, evType, fn, useCapture) {
        
        // ###############################################################
        
        // addEvent and removeEvent
        // cross-browser event handling for IE5+,   NS6 and Mozilla
        // By Scott Andrew
        
           if (elm.addEventListener){
              elm.addEventListener(evType, fn, useCapture);
              return true;
           } else if (elm.attachEvent){
              var r = elm.attachEvent("on"+evType, fn);
              return r;
           } else {
              alert("Handler could not be removed");
           } // fin si
        
        }  // fin de fonction
        
        // ###############################################################
        
        function clean_num(str) {
        
        // ###############################################################
        
           str = str.replace(new RegExp(/[^-?0-9.]/g),"");
           return str;
        }  // fin de fonction clean_num
        
        // ###############################################################
        
        function trim(s) {
        
        // ###############################################################
        
           return s.replace(/^\s+\s+$/g, "");
        
        } // fin de fonction trim
        
        // ###############################################################
        
        // ###############################################################
        
        function ecrit_infos(mesTxt)  {
        
        // ###############################################################
        
        mt = document.getElementById("infos")
        
        mt.value += "\n" + mesTxt ;
        
        return(false)
        
        }  // fin de fonction ecrit_infos
        
        // ###############################################################
        
        function reset_infos(mesTxt)  {
        
        // ###############################################################
        
        mt = document.getElementById("infos")
        
        mt.value = ""
        
        return(false)
        
        }  // fin de fonction reset_infos
        
        // ###############################################################
        
        function symboleTri(org,sens,avecSpan)  {
        
        // ###############################################################
        
        // org vaut lig" ou "col"
        
        // sens = "o" : on revient à l'original
        //        "h" : vers le haut
        //        "b" : vers le bas
        //        "d" : vers la droite
        //        "g" : vers la gauche
        
        if (org=="col") { cla = "triCol" }
                   else { cla = "triLig"   }
        symb = sens
        fond = "transparent"
        
        if (sens=='d') { symb = "&#9656;" ; fond = "vert_clair" }
        if (sens=='h') { symb = "&#9652;" ; fond = "vert_clair" }
        if (sens=='b') { symb = "&#9662;" ; fond = "orange"  }
        if (sens=='g') { symb = "&#9666;" ; fond = "orange"  }
        if (sens=='o') { symb = "o"       ; fond = "original" }
        
        if (avecSpan==1) { leSymbole = '<span class="'+cla+'" senstri="'+sens+'">'  }
                    else { leSymbole = '' }
        leSymbole +=  '<input class="'+fond+'" type="button" value="'+symb+'" />'
        
        if (avecSpan==1) { leSymbole += '</span>'  }
        
        return(leSymbole)
        
        }  // fin de fonction reset_infos
        
        // ###############################################################
        
        function testeEntete(t) {
        
        // ###############################################################
        
           if (t.rows && t.rows.length > 0) {
              if (t.tHead && t.tHead.rows.length > 0) {
                 var firstRow = t.tHead.rows[t.tHead.rows.length-1];
                 thead = true;
              } else {
                 var firstRow = t.rows[0];
              } //fin si
           } // fin si
        
           return(firstRow)
        
        }  // fin de fonction testeEntete
        
        // ###############################################################
        
        function natureDuTriCol(t,column) {
        
        // ###############################################################
        
           sortfnCol  = ts_sort_caseinsensitive;
        
           var itm = "";
           var i = 0;
        
           while (itm == "" && i < t.tBodies[0].rows.length) {
              var itm = ts_getInnerText(t.tBodies[0].rows[i].cells[column]);
              itm = trim(itm);  // on supprime les espaces avant et apres la chaine itm
              itm=clean_num(itm);
              if (itm.substr(0,4) == "<!--" || itm.length == 0) {
                 itm = "";
              } // fin si
              i++;
           } // fin de tant que
        
        // ecrit_infos(" natureDuTri pour : "+itm)
        
           if (itm == "") return(sortfnCol) ;
           sortfnCol  = ts_sort_caseinsensitive;
        
           if (itm.match(/^-?[£$€Û¢´]\d/)) {
            sortfnCol  = ts_sort_numeric;
           } // fin de si
        
           if (itm.match(/^-?(\d+[,\.]?)+(E[-+][\d]+)?%?$/)) {
            sortfnCol  = ts_sort_numeric;
           } // fin si
        
           return(sortfnCol)
        
        }  // fin de fonction natureDuTriCol
        
        // ###############################################################
        
        function natureDuTriLig(t,ligne) {
        
        // ###############################################################
        
           sortfnLig = ts_sort_caseinsensitive1;
        
           var itm = "";
           var i = 0;
        
           while (itm == "" && i < t.tBodies[0].rows[0].cells.length) {
              var itm = ts_getInnerText(t.tBodies[0].rows[ligne].cells[i]);
              itm = trim(itm);  // on supprime les espaces avant et apres la chaine itm
              itm = clean_num(itm);
              if (itm.substr(0,4) == "<!--" || itm.length == 0) {
                 itm = "";
              }
              i++;
           } // fin tant que
        
           if (itm == "") return(sortfnLig) ;
           sortfnLig = ts_sort_caseinsensitive1;
        
           if (itm.match(/^\d\d[\/\.-][a-zA-z][a-zA-Z][a-zA-Z][\/\.-]\d\d\d\d$/)) sortfnLig = ts_sort_date;
           if (itm.match(/^\d\d[\/\.-]\d\d[\/\.-]\d\d\d{2}?$/)) sortfnLig = ts_sort_date;
           if (itm.match(/^-?[£$€Û¢´]\d/)) sortfnLig = ts_sort_numeric1;
           if (itm.match(/^-?(\d+[,\.]?)+(E[-+][\d]+)?%?$/)) sortfnLig = ts_sort_numeric1;
        
           return(sortfnLig)
        
        }  // fin de fonction natureDuTriLig
        
        // ###############################################################
        
        function enleveLesAttributs(maCase) {
        
        // ###############################################################
        
        // nombre d'enfants
        
        nbe = maCase.childNodes.length
        
        if (maCase.childNodes[0]) {
        
             // type du premier noeud
        
             tpe = maCase.childNodes[0].nodeType
        
             // si un seul enfant et de type texte
        
             if ( (nbe==1) &&  tpe==3) {
                // on peut détruire tous les attributs
                atd  = maCase.attributes
                for (ida=0;ida<atd.length;ida++) {
                    maCase.removeAttribute(atd[ida].name)
             } // fin pour
        
             } // fin si
        
        } // fin si
        
        // imparfait : on 'enlève pas tout (entre <span sur élement
        // et <td class, il y a un 'hic'
        
        }  // fin de fonction enleveAttributs
        
        
        // ###############################################################
        
        function surligne(elt) {
        
        // ###############################################################
        
        elt.className += " surligne "
        
        }  // fin de fonction surligne
        
        // ###############################################################
        
        function desurligne(elt) {
        
        // ###############################################################
        
        var eltcn = elt.className
        var er = new RegExp("(surligne)","g") ;
        // ecrit_infos("className avant "+eltcn)
        eltcn = eltcn.replace(er, ' ')
        // ecrit_infos("il reste encore "+eltcn)
        elt.className = eltcn
        //} ;
        
        }  // fin de fonction desurligne
        
        // ###############################################################
        // ###############################################################
        
        // -- fin du fichier exemple1.js
        
        // ###############################################################
        // ###############################################################
        

 

 

retour gH    Retour à la page principale de   (gH)