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

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

var step  			= 40;	//Die Anzahl der Farbpaletteneinträge. Die Farbabstufungen
var max_Object 		= 50; 	//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, 255, 255, 255, 222, 222, 222);

var colors2 = new Array(step); //Farbübergang für die Schrift
createColorTable( colors2, 0, 0, 0, 102, 153, 51 );
//////////////////////////////////////////////////////////////////////////////////////////

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 = "" + colors[Math.round(e.i)];

	if ( (e.typ & 1) && (e.element.style.backgroundColor == "") )
		e.element.style.background = "" + colors[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);
}
