
var enkel_getallen = false;        
var enkel_datums = false;       
var laatstgesorteerdekolom = -1;                
var omwisselen = true;      

function zetGegevensType(dezeWaarde) {
    var isDate = new Date(dezeWaarde);
    if (isDate == "NaN") {
        if (isNaN(dezeWaarde)){
            dezeWaarde =  dezeWaarde.toUpperCase();
            enkel_getallen = false
            enkel_datums = false
            return dezeWaarde;
          }
        else {
            enkel_datums = false
            return parseFloat(1*dezeWaarde);
          }
        }
  else {
        enkel_getallen = false
        return dezeWaarde ;
      }
  }
  
function sorteerTabel(kolom){
    if (laatstgesorteerdekolom == kolom){
        omwisselen ? omwisselen = false : omwisselen = true
    }
    else{
        omwisselen = true
    }
    laatstgesorteerdekolom = kolom
    alleRijen = document.getElementById("TeSorterenTabel").childNodes[0].childNodes
    totaalRijen = alleRijen.length
    teSorterenKolom = new Array()        
    kolomArray = new Array()           
    kopieOrigineleArray = new Array()            
    resultaatArray = new Array()            

    enkel_getallen = true
    enkel_datums = true
   
    for (x=1; x < totaalRijen; x++){
        teSorterenKolom[x-1] = zetGegevensType(alleRijen[x].childNodes[kolom].innerText)
        kolomArray[x-1] = alleRijen[x]
    }
    for (x=0; x<teSorterenKolom.length; x++){
        kopieOrigineleArray[x] = teSorterenKolom[x]
    }
    if (enkel_getallen){
        teSorterenKolom.sort(numberOrder)
    }
    else if (enkel_datums){
        teSorterenKolom.sort(dateOrder)
    }
    else{
        teSorterenKolom.sort(textOrder)
    }

    for(x=0; x<teSorterenKolom.length; x++){
        for(y=0; y<kopieOrigineleArray.length; y++){
            if (teSorterenKolom[x] == kopieOrigineleArray[y]){
                boolListed = false
                for(z=0; z<resultaatArray.length; z++){
                    if (resultaatArray[z]==y){
                        boolListed = true
                        break;
                    }
                }
                if (!boolListed){
                    resultaatArray[x] = y
                    break;
                }
            }
        }
    }
    for (x=0; x<resultaatArray.length; x++){
        alleRijen[x+1].swapNode(kolomArray[resultaatArray[x]])
    }
}

function numberOrder(a,b){ 
    omwisselen ? rVal = b - a : rVal = a - b
    return rVal
}

function dateOrder(a,b){
    omwisselen ? rVal = Date.parse(a) - Date.parse(b) : rVal = Date.parse(b) - Date.parse(a)
    return rVal
}

function textOrder(a,b){
    if (a.toString() < b.toString()){
        omwisselen ? rVal = -1 : rVal = 1
    }
    else{
        omwisselen ? rVal = 1 : rVal = -1
    }
    return rVal
}


