﻿
document.createElement("img").src = "AbAktiv.gif";


function sortiere(  bild,           // Aufrufobjekt, hier ein img-Element
                    spalte,         // nullbasierter Index der Sortierspalte
                    richtung,       // true = aufsteigend;    false = absteigend
                    typ             // true = alphanumerisch; false = numerisch
                 ) 
{
    
    //           img      th          tr
    var bilder = bild.parentNode.parentNode.getElementsByTagName("img");
    
    for (var i=0; i < bilder.length; i++) {
        //absolute Pfadangaben und "Aktiv" werden ggf. entfernt
        bilder[i].src = bilder[i].src.replace(/(?:.+\/)?(A(?:uf|b))(Aktiv)?\.gif/, "$1.gif");                                  
    };
    
    //neue aktive Grafik wird gesetzt
    bild.src = bild.src.replace(/(?:.+\/)?(A(?:uf|b))\.gif/, "$1Aktiv.gif");
    

    
    //          img      th        tr     table | tbody
    var liste = bild.parentNode.parentNode.parentNode.getElementsByTagName("tr"); //liste ≡ »NodeList« bzw. »HTMLCollection«

    /* »NodeList« bzw. »HTMLCollection« in ein Array überführen */
    
    var zeilen = [];
    for (var i=1; i<liste.length; i++) {
      zeilen[i-1] = liste[i];
    };

    

    /* Aufruf der eigentlichen Sortierfunktionen */
    
    if (richtung && typ) {
        zeilen.sort( 
            function(x, y) { 
                return alpAuf(x, y, spalte); 
            } //Beachte: Kein Semikolon, da Referenz
        );    
    }; 
    
    if (!richtung && typ) {
        zeilen.sort( 
            function(x, y) { 
                return alpAb(x, y, spalte); 
            } 
        );
    }; 
    
    if (richtung && !typ) {
        zeilen.sort( 
            function(x, y) { 
                return numAuf(x, y, spalte); 
            } 
        );    
    };
    
    if (!richtung && !typ) {
        zeilen.sort( 
            function(x, y) { 
                return numAb(x, y, spalte); 
            } 
        );    
    };        
    
    

    /* Sortierte Zeilen in Tabelle überführen */
    
    for (var i=0; i < zeilen.length; i++) {
        zeilen[i].className = Boolean(i % 2) ? "gerade" : "ungerade";
        bild.parentNode.parentNode.parentNode.appendChild(zeilen[i]);
    };
    
}; //Ende sortiere()



function alpAuf(x, y, spalte) {

  /* Extraktion des Sortierkriteriums aus dem Sortierobjekt plus Aufbereitung des Sortierkriteriums */
  var xKriterium = x.getElementsByTagName("td")[spalte].innerHTML.toLowerCase();
  var yKriterium = y.getElementsByTagName("td")[spalte].innerHTML.toLowerCase();

  /* Vergleich der aufbereiteten Sortierkriterien */
  if (xKriterium < yKriterium) return -1;
  if (xKriterium > yKriterium) return 1;
  return 0;
  
}; //Ende alpAuf()



function alpAb(x, y, spalte) {
  
  /* Extraktion des Sortierkriteriums aus dem Sortierobjekt plus Aufbereitung des Sortierkriteriums */
  var xKriterium = x.getElementsByTagName("td")[spalte].innerHTML.toLowerCase();
  var yKriterium = y.getElementsByTagName("td")[spalte].innerHTML.toLowerCase();  

  /* Vergleich der aufbereiteten Sortierkriterien */
  if (xKriterium < yKriterium) return 1;  
  if (xKriterium > yKriterium) return -1;
  return 0;
  
}; //Ende alpAb()



function numAuf(x, y, spalte) {

  /* Extraktion des Sortierkriteriums aus dem Sortierobjekt plus Aufbereitung des Sortierkriteriums */
  var xKriterium = parseFloat(x.getElementsByTagName("td")[spalte].innerHTML.toString().replace(/\./g, "").replace(",", "."));
  var yKriterium = parseFloat(y.getElementsByTagName("td")[spalte].innerHTML.toString().replace(/\./g, "").replace(",", "."));

  /* Vergleich der aufbereiteten Sortierkriterien */
  return xKriterium - yKriterium;
         
}; //Ende numAuf()



function numAb(x, y, spalte) {

  /* Extraktion des Sortierkriteriums aus dem Sortierobjekt plus Aufbereitung des Sortierkriteriums */
  var xKriterium = parseFloat(x.getElementsByTagName("td")[spalte].innerHTML.toString().replace(/\./g, "").replace(",", "."));
  var yKriterium = parseFloat(y.getElementsByTagName("td")[spalte].innerHTML.toString().replace(/\./g, "").replace(",", "."));

  /* Vergleich der aufbereiteten Sortierkriterien */
  return yKriterium - xKriterium;
         
}; //Ende numAb()

