
var hexArray = new Array(0,1,2,3,4,5,6,7,8,9,"a","b","c","d","e","f");

/////////////////////////////// User-Variablen ///////////////////////////////////////////

var step              = 30;    //Die Anzahl der Farbpaletteneinträge. Die Farbabstufungen
var max_Object         = 11;     //Anzahl der Zellen, Objekte

//Berechne Farbübergänge
//Man muss die Farben noch fürs ein- und ausfaden anpassen
var colors = new Array(step); //Farbübergang für die Zelle
createColorTable( colors, 182, 182, 182, 252, 252, 252 );

var colors2 = new Array(step); //Farbübergang für die Schrift
createColorTable( colors2, 255, 255, 255, 122, 122, 122 );
//////////////////////////////////////////////////////////////////////////////////////////

function hex(i)
{
    if (i < 0)
        return "00";
    else if (i > 255)
        return "ff";
    else
       return "" + hexArray[Math.floor(i/16)] + hexArray[i%16];
}

//FadeObjekte
var fadeArray = new Array( max_Object );    //Anzahl der Objekte, sprich der zu fadenden Felder
for ( i=0; i<fadeArray.length; i++ )
    fadeArray[i] = new Objekt();

//Param1: Das zu füllende Array
//Param2,3,4: Fadeout-Color
//Param5,6,7: Fadein-Color
function createColorTable( array, max_r, max_g, max_b, min_r, min_g, min_b )
{
    for ( i=0; i<array.length; ++i)
    {
        var r = Math.floor(max_r * ((step - i)/ step) + min_r * (i / step));
        var g = Math.floor(max_g * ((step - i)/ step) + min_g * (i / step));
        var b = Math.floor(max_b * ((step - i)/ step) + min_b * (i / step));
        array[i] = "#"+hex(r)+hex(g)+hex(b);
    }
}

//Der 1 Parameter ist der index des Objekts, welches gefadet werden soll. Index beginnt ab 0
//Der 2 Parameter gibt den Faktor an. Der Faktor ist der Wert wie schnell die Farbpalette durchlaufen werden soll.
function fade( elementNr, faktor )
{
    var e = fadeArray[elementNr];

    if ( e.typ & 1 )
        e.element.style.backgroundColor = "transparent"[Math.round(e.i)];

    if ( (e.typ & 1) && (e.element.style.backgroundColor == "") )
        e.element.style.background = "transparent"[Math.round(e.i)];

    if ( e.typ & 2 )
        e.element.style.color = "" + colors2[Math.round(e.i)];

     if ( (!e.direction && e.i >0) || (e.direction && e.i<step-1) )
     {
         if ( e.direction )
             e.i += faktor;
         else
             e.i -= faktor;

         if ( e.i < 0 )
             e.i = 0;
         else if ( e.i >step-1 )
             e.i = step-1;

         setTimeout("fade("+elementNr+","+faktor+");",step);
     }
}

//Das Objekt welches gefadet werden soll
function Objekt()
{
    this.element    = 0;
    this.i            = 0;
    this.direction  = 0;
    this.typ        = 1;
}

//nr:        Nummer des Fadeobjektes
//element:    Das Objekt
//faktor:     Schnelligkeit des Fadens 1=normal(Arbeite alle Farbübergänge ab). Faktor 5 bedeutet: "Jede 5 Farbe", also 5 mal so schnell
//fadetyp:     Was wollen sie faden 1=Tabellenzelle; 2=Text; 3=Beides; 0=nichts
function fadein( nr, element, faktor, fadetyp )
{
    var e = fadeArray[nr];

    if ( e.element == 0 )
        e.element = element;

    e.direction = 1;
    e.typ        = fadetyp;

    fade(nr,faktor);
}

//nr:        Nummer des Fadeobjektes
//faktor:     Schnelligkeit des Fadens 1=normal(Arbeite alle Farbübergänge ab). Faktor 5 bedeutet: "Jede 5 Farbe", also 5 mal so schnell
function fadeout( nr, faktor )
{
    fadeArray[nr].direction = 0;
    fade(nr,faktor);
}
//-->

