//    Code créé par francktfr pour www.systeme-d.net 
function SortArray(aText,aHtml,Index,Order){ 
    var Test = Order > 0 ? "aText["+Index+"][b] > aText["+Index+"][a]" : "aText["+Index+"][b] < aText["+Index+"][a]" // Choix de la comparaison 
    for (a = 0; a < aText[Index].length; a++)                //    Liste de tous les éléments du tableau 
    {     
     for (b = 0; b < aText[Index].length ;b++)        //    Re-liste tous les éléments pour les comparer à Numbers[a] 
     { 
             if (eval(Test)) { 
                    for (i=0; i<aText.length; i++){            //    Mise a jour des tableaux 
                        Copy = aText[i][b]; aText[i][b] = aText[i][a]; aText[i][a] = Copy 
                        Copy = aHtml[i][b]; aHtml[i][b] = aHtml[i][a]; aHtml[i][a] = Copy 
                    }     
                } 
     } 
    } 
} 
function IsDate(sDate){    //    retourne true si c'est une date valide 
    if (sDate.length < 8){return false} 
    var iDay = sDate.substring(0,2) 
    var iMonth = sDate.substring(3,5) 
    var iYear = sDate.substring(6) 
    iDay = iDay*1 
    iMonth = (iMonth*1)-1 
    iYear = iYear*1 
    var rDate = new Date(iYear,iMonth,iDay,0,0) 
    if(rDate.toString() == "NaN"){return false} 
    return true 
} 
function cDate(sDate){    //    Convertie une date du format JJ/MM/AAAA en date JavaScript 
    var iDay = sDate.substring(0,2) 
    var iMonth = sDate.substring(3,5) 
    var iYear = sDate.substring(6) 
    iDay = iDay*1 
    iMonth = (iMonth*1)-1 
    iYear = iYear*1 
    var rDate = new Date(iYear,iMonth,iDay,0,0) 
    return(rDate) 
} 
function TableOrder(Dir){    //    1: Croissant, -1: Décroissant 
    var oCell = event.srcElement 
    while (oCell.tagName != "TD"){oCell = oCell.parentElement}    //    determine la cellule sélectionnée 
    var oTable = oCell.parentElement 
    while (oTable.tagName != "TABLE"){oTable = oTable.parentElement}    //    determine l'objet table parent 
    var index = -1 
    for (c=0; c<oTable.rows[0].cells.length; c++){if (oTable.rows[0].cells[c]==oCell){index=c}}    //    determine l'index de la cellule 
    var RowNb = 0 
    var aHtmlTable = new Array()                    //    Tableau de contenu HTML 
    var aTextTable = new Array()                    //    Tableau de valeur 
    for (c=0; c<oTable.rows[0].cells.length; c++){    //    sur toutes les cellules 
        var ColonneHtml = new Array() 
        var ColonneText = new Array() 
        var RowNb = 0 
        for (r=0; r<oTable.rows.length; r++){        //    de toutes les rangées nommées "TableDatas" 
            if (oTable.rows[r].id == "TableDatas"){ 
                ColonneHtml[RowNb] = oTable.rows[r].cells[c].innerHTML    //    met a jour le tableau de colonne correspondant 
                ColonneText[RowNb] = IsDate(oTable.rows[r].cells[c].innerText) ? cDate(oTable.rows[r].cells[c].innerText) : oTable.rows[r].cells[c].innerText 
                RowNb++ 
            } 
        } 
        aHtmlTable[c] = ColonneHtml 
        aTextTable[c] = ColonneText 
        for (a=0; a<ColonneHtml.length; a++){aHtmlTable[c][a]=ColonneHtml[a]} 
        for (a=0; a<ColonneText.length; a++){aTextTable[c][a]=ColonneText[a]} 
    } 
    RowNb=0 
    SortArray(aTextTable,aHtmlTable,index,Dir)    //    Tri des données 
    for (x=0; x<oTable.rows[0].cells.length; x++){    //    Remplacement des données dans le tableau HTML 
        RowNb=0 
        for (y=0; y<oTable.rows.length; y++){ 
            if (oTable.rows[y].id == "TableDatas"){ 
                oTable.rows[y].cells[x].innerHTML= aHtmlTable[x][RowNb] 
                RowNb++ 
            } 
        } 
    } 
} 
