//------FADE-SKRIPT--------------
/*------Anwendungsbeispiel-------

-Skript in HTML einbinden:

	<!-- Fade-Skript -->
	<script type="text/javascript" language="JavaScript" src="fade.js"></script>


-Ein Objekt fadend machen, mit individuellen Einstellungen:

	<!-- Fade-Bild -->
	<img src="bild.jpg" width="59" height="59" id="0" style="filter:alpha(opacity=10); -moz-opacity: 0.1;" onMouseOut="fadeOut(this, 10, 0.1)" onMouseOver="fadeIn(this, 100, 1)" />

-Ein Objekt fadend machen, mit Standardeinstellungen:

	<!-- Fade-Bild -->
	<img src="bild.jpg" width="59" height="59" id="0" style="filter:alpha(opacity=10); -moz-opacity: 0.1;" onMouseOut="fadeOutQ(this)" onMouseOver="fadeInQ(this)" />

-Kann auch auf andere Objekte angewandt werden, zB Text.

*/

/*
 * Einstellungen
 */
speed=50; 	// Zeit zwischen Fadeschritten in Millisekunden
stepIE=10; 	// Differenz von Schritt zu Schritt [IE]
stepNS=0.1;	// Differenz von Schritt zu Schritt [NS]

/*
 * Variablen
 */
fadeObjects = new Array();
fadeInTimers = new Array();
fadeOutTimers = new Array();

/*
 * Quick-Ausfade-Funktion (mit Standardwerten)
 *
 * object    = zu fadendes Objekt, das eine HTML-ID besitzen muss (zB <img ID="bild1"...>)
 */
function fadeOutQ(object)
{
	fadeOut(object,10,0.1);
}

/*
 * Quick-Einfade-Funktion (mit Standardwerten)
 *
 * object    = zu fadendes Objekt, das eine HTML-ID besitzen muss (zB <img ID="bild1"...>)
 */
function fadeInQ(object)
{
	fadeIn(object,100,1);
}

/*
 * Standard-Ausfade-Funktion
 *
 * object    = zu fadendes Objekt, das eine HTML-ID besitzen muss (zB <img ID="bild1"...>)
 * filterMS  = Endwert für MS-Browser, zB 10
 * optionsNS = Endwert für Mozilla-Browser, zB 0.1
 */
function fadeOut(object,filterMS,optionsNS)
{
	fadeObjects[object.id] = object;

	if(fadeInTimers[object.id]!=undefined)
	{
		window.clearTimeout(fadeInTimers[object.id]);
	}
	if(object.style.MozOpacity)
	{
		if(object.style.MozOpacity>optionsNS)
		{
			object.style.MozOpacity-=stepNS;
    		fadeOutTimers[object.id] = window.setTimeout("fadeOut(fadeObjects["+object.id+"], "+filterMS+", "+optionsNS+")", speed);
		}
		else
		{
			window.clearTimeout(fadeOutTimers[object.id]);
			object.style.MozOpacity = optionsNS;
		}
	}
	else
	{	
		if(object.filters.alpha.opacity>filterMS)
		{
			object.filters.alpha.opacity-=stepIE;
    		fadeOutTimers[object.id] = window.setTimeout("fadeOut(fadeObjects["+object.id+"], "+filterMS+", "+optionsNS+")", speed);
		}
		else
		{
			window.clearTimeout(fadeOutTimers[object.id]);
		}
	}
}


/*
 * Standard-Einfade-Funktion
 *
 * object    = zu fadendes Objekt, das eine HTML-ID besitzen muss (zB <img ID="bild1"...>)
 * filterMS  = Endwert für MS-Browser, zB 100
 * optionsNS = Endwert für Mozilla-Browser, zB 1
 */
function fadeIn(object,filterMS,optionsNS)
{
	fadeObjects[object.id] = object;	
    
	if(fadeOutTimers[object.id]!=undefined)
	{
		window.clearTimeout(fadeOutTimers[object.id]);
	}

	if(object.style.MozOpacity)
	{
		if(object.style.MozOpacity<optionsNS)
		{
			if( eval(object.style.MozOpacity)+stepNS >= 0.99 )
			{
				object.style.MozOpacity=0.99;
			}
			else
			{
				object.style.MozOpacity=eval(object.style.MozOpacity)+stepNS;
			}
    		fadeInTimers[object.id] = window.setTimeout("fadeIn(fadeObjects["+object.id+"], "+filterMS+", "+optionsNS+")", speed);
		}
		else
		{
			window.clearTimeout(fadeInTimers[object.id]);
			object.style.MozOpacity = optionsNS;
		}
	}
	else
	{	
		if(object.filters.alpha.opacity<filterMS)
		{
			object.filters.alpha.opacity+=stepIE;
    		fadeInTimers[object.id] = window.setTimeout("fadeIn(fadeObjects["+object.id+"], "+filterMS+", "+optionsNS+")", speed);
		}
		else
		{	
			window.clearTimeout(fadeInTimers[object.id]);
		}
	}
}