// permet de trier les entêtes d'un tableau HTML 
var index
//fonction pour trier les nombres
function sort_int(p1,p2) { return p1[index]-p2[index]; }
//fonction pour trier les strings
function sort_char(p1,p2) { return ((p1[index]>=p2[index])<<1)-1; }
 
function TableOrder(e,Dec)  //Dec= 0:Croissant, 1:Décroissant
{ //---- Détermine : oCell(cellule) oTable(table) index(index cellule) -----//
    var FntSort = new Array()
    if(!e) e=window.event
    for(oCell=e.srcElement?e.srcElement:e.target;oCell.tagName!="TD";oCell=oCell.parentNode);    //determine la cellule sélectionnée
    for(oTable=oCell.parentNode;oTable.tagName!="TABLE";oTable=oTable.parentNode);                //determine l'objet table parent
    for(index=0;oTable.rows[0].cells[index]!=oCell;index++);                                    //determine l'index de la cellule
 
 //---- Copier Tableau Html dans Table JavaScript ----//
    var Table = new Array()
    for(r=1;r<oTable.rows.length;r++) Table[r-1] = new Array()
 
    for(c=0;c<oTable.rows[0].cells.length;c++)    //Sur toutes les cellules
    {    var Type;
        objet=oTable.rows[1].cells[c].innerHTML.replace(/<\/?[^>]+>/gi,"")
        //if(objet.match(/^\d\d[\/-]\d\d[\/-]\d\d\d\d$/)) { FntSort[c]=sort_char; Type=0; } //date jj/mm/aaaa
        if(objet.match(/^\d\d[\.-]\d\d[\.-]\d\d\d\d$/)) { FntSort[c]=sort_char; Type=0; } //date jj.mm.aaaa
        else if(objet.match(/^[0-9£€$\.\s-]+$/))        { FntSort[c]=sort_int; Type=1; } //nombre, numéraire
        else                                            { FntSort[c]=sort_char; Type=2; } //Chaine de caractère
 
        for(r=1;r<oTable.rows.length;r++)        //De toutes les rangées

        {    objet=oTable.rows[r].cells[c].innerHTML.replace(/<\/?[^>]+>/gi,"")
            switch(Type)        
            {    case 0: Table[r-1][c]=new Date(objet.substring(6),objet.substring(3,5),objet.substring(0,2)); break; //date jj/mm/aaaa
                case 1: Table[r-1][c]=parseFloat(objet.replace(/[^0-9.-]/g,'')); break; //nombre
                case 2: Table[r-1][c]=objet.toLowerCase(); break; //Chaine de caractère
            }
            Table[r-1][c+oTable.rows[0].cells.length] = oTable.rows[r].cells[c].innerHTML
        }
    }
 
 //--- Tri Table ---//
    Table.sort(FntSort[index]);
    if(Dec) Table.reverse();
 
 //---- Copier Table JavaScript dans Tableau Html ----//
    for(c=0;c<oTable.rows[0].cells.length;c++)    //Sur toutes les cellules
        for(r=1;r<oTable.rows.length;r++)        //De toutes les rangées 
            oTable.rows[r].cells[c].innerHTML=Table[r-1][c+oTable.rows[0].cells.length];  
}

