/**
* slideshow.js
*
* Funktionen fuer eine einfache Slideshow
*
* Der folgende Code wird im Header-Bereich der HTML-Datei eingebunden.
* Dabei koennen beliebige Bilder und die entsprechende Groesse definiert
* werden. Bei einer automatischen Slideshow sollte das letzte Bild
* dasselbe wie das erste sein. Somit wird der Eindruck von einer
* Endlosschleife erzeugt:
*
*	<script language="javascript">
*	bilder=new Array()
*	bilder[0]=""
*	bilder[1]=new Image()
*	bilder[1]="images/bild04.gif"
*	bilder[2]=new Image()
*	bilder[2]="images/bild05.gif"
*	bilder[3]=new Image()
*	bilder[3]="images/bild06.gif"
*	bilder[4]=new Image()
*	bilder[4]="images/bild04.gif"
*	Bildbreite=240 //breite der Bilder
*	Bildhoehe=240 //hoehe der Bilder
*   effekt_nr=2 // 1 = Bild nach rechts raus schieben
*               // 2 = Bild ohne Effekt ausblenden
*	</script>
*	<script type="text/javascript" src="jscript/slideshow.js"></script>
*
* An der entsprechenden Stelle im HTML-Code wird einfach folgender
* Code eingefuegt:
*
* <script language="javascript">
* 	printSlidesContainer()
* 	timer=window.setTimeout('auto()',pause) // Wechselautomatik starten
* </script>
*
* @since 05/01/10 (amw) Funktionalitaet in diesem Modul zusammengefasst
* @since 13/01/10 (amw) Neuer Ueberblendeffekt (MS IE: Alpha)
*
*/

posx=0;              //Variable zum Speichern der aktuellen Bildposition
posmax=Bildbreite;   //größe des Anzeigebereichs der Bilder

zaehler1=1;          //aktuelles Bild
aktiv=0;             //variable steht auf 0 wenn ein Bildwechsel abgeschlossen ist, während des Bildwechsels hat sie den Wert 1
timer=null;          //Variable fürs Timeout
pause=7000;          //Pause zwischen den Bildwechseln(hier 7 Sekunden)
tempo=20;            //Slide-Geschwindigkeit(hier 20 millisekunden)
schrittweite=10;     //schrittweite der einzelnen Bewegungsschritte

opacity=100;         // Bildtransparenz
op_tempo=30;         // Ueberblendgeschwindigkeit
op_schrittweite=5;   //schrittweite der Tranzparenzschritte

/**
* getobj()
*
* Verweis auf Containerobjekt entsprechend dem genutzten Browser (NS4/NS6/IE)
* erstellen und zurueckliefern.
*
* @access   public
* @param    integer   Bildnummer
* @return   object    Verweis auf Containerobjekt
*/
function getobj(nr) //erstellt Verweise auf die  ensprechenden objecte für NS4/NS6/IE-Browser
{
	if(document.layers) //NS4
		return eval("document.Bilddiv.document.inhalt"+nr)
	else if(document.all) //IE 4/5
		return eval("document.all.inhalt"+nr+".style")
	else if (document.getElementById) //IE 5/NS6
		return eval("document.getElementById('inhalt"+nr+"').style")
}


/**
* start()
*
* Bildnummer pruefen und entsprechend des zaehler-Vorzeichens aufdecken.
*
* @access   public
* @param    integer   1=naechstes Bild; -1=vorheriges Bild
*/
function start(zaehler)
//prueft Bildnummer und Laufrichtung und ruft die entsprechende Bewegungsfunktion auf
{
	if(aktiv>0) //klick währen des Bildwechsel , function abbrechen
		return
	aktiv=1 //Bildwechsel in arbeit
	if((zaehler1<bilder.length-1)&&zaehler>0) //vorwärts gedrückt und nicht letztes Bild
	{
		next_image(zaehler1)
		zaehler1=zaehler1+zaehler //Bildzaehler erhöhen
	}
	else if(zaehler1>1&&zaehler<0) //zurück gedrückt und nicht erstes Bild
	{
		if(zaehler1>1)
		{
			zaehler1=zaehler1+zaehler //Bildzaehler erniedrigen
			previous_image(zaehler1)
		}
	}
	else //wenn erstes oder letztes Bild erreicht,Bildwechselvariable wider auf null setzen
		aktiv=0
}

/**
* auto()
*
* Automatischen Bildwechsel durchfuehren. Es werden alle Bilder des Arrays
* bilder nacheinander "aufgedeckt"
*
* @access   public
*/
function auto()
{
	if(zaehler1>=bilder.length-1) //wenn letztes Bild erreicht
	{
		zaehler1=1 //zaehler auf 1 setzen
		for(i=1;i<=bilder.length-1;i++) //alle bilder an Ihre ausgangsposition bringen
		{
			getobj(i).left=0;
			if (document.all) //IE 4/5
				getobj(i).filter="";
		}
	}
	else
	{
		start(1)
	}
	if (zaehler1!=1)
		timer=window.setTimeout('auto()',pause) //ruft automatischen Bildwechsel nach Pausenzeit auf
	else
		auto()
}

/**
* autostop()
*
* Automatik der Diashow stoppen
*
* @access   public
*/
function autostop()
{
	window.clearTimeout(timer)
}

/**
* next_image()
*
* Zu naechstem Bild wechseln. Hierbei wird der eingestellte
* Effekt beruecksichtigt.
*
* @access   public
* @param    integer   Bildnummer
* @global   integer   effekt_nr
*/
function next_image(nr)
{
	switch(effekt_nr)
	{
		case 1:
			moving_forward(nr);
			break;

		case 2:
			if(document.all) //IE 4/5
			{
				IE_blend_forward(nr);
			}
			else
			{
				switch_forward(nr);
			}
			break;

		case 3:
		default:
			switch_forward(nr);
			break;
	}
}

/**
* previous_image()
*
* Zu vorherigen Bild wechseln. Hierbei wird der eingestellte
* Effekt beruecksichtigt.
*
* @access   public
* @param    integer   Bildnummer
* @global   integer   effekt_nr
*/
function previous_image(nr)
{
	switch(effekt_nr)
	{
		case 1:
			moving_back(nr);
			break;

		case 2:
			switch_back(nr);
			break;

		case 3:
		default:
			switch_back(nr);
			break;
	}
}

/**
* switch_forward()
*
* Zu naechstem Bild umschalten - ohne Effekt
*
* @access   public
* @param    integer   Bildnummer
*/
function switch_forward(nr)
{
	startbild = nr;
	getobj(nr).left=posmax;
	aktiv=0;
}

/**
* switch_back()
*
* Zu vorherigem Bild umschalten - ohne Effekt
*
* @access   public
* @param    integer   Bildnummer
*/
function switch_back(nr)
{
	startbild = nr;
	getobj(nr).left=0;
	aktiv=0;
}

/**
* IE_blend()
*
* Aktuelles (=oberstes) Bild wird von links nach rechts aus dem sichtbaren
* Bereich geschoben.
*
* @access   public
* @param    integer   Nummer des Startbildes
*/
function IE_blend_forward(nr)
{
	startbild=nr; //aktuelles Bild

	if(parseInt(opacity)>0) //solange das Bild im sichtbaren Bereich ist
	{
		opacity=opacity-op_schrittweite; // Transparenz erhoehen
		getobj(startbild).filter="Alpha(opacity="+opacity+", finishopacity="+opacity+", style=2)";
		window.setTimeout('IE_blend_forward(startbild)',op_tempo);
	}
	else
	{
		opacity=100; //Transparenz fuers naechste Bild auf 100 setzen
		aktiv=0; //Bildwechselvariable auf fertig setzen
	}
}

/**
* moving_forward()
*
* Aktuelles (=oberstes) Bild wird von links nach rechts aus dem sichtbaren
* Bereich geschoben.
*
* @access   public
* @param    integer   Nummer des Startbildes
*/
function moving_forward(nr)
{
	startbild=nr //aktuelles Bild

	if(parseInt(getobj(startbild).left)<=posmax) //solange das Bild im sichtbaren Bereich ist
	{
		posx=posx+schrittweite // positionszaehler erhöhen
		getobj(startbild).left=posx //neue Position
		window.setTimeout('moving_forward(startbild)',tempo)
	}
	else
	{
		posx=0; //Positionsvariable fürs nächste Bild auf  0 setzen
		aktiv=0 //Bildwechselvariable auf fertig setzen
	}
}

/**
* moving_back()
*
* Bild von rechts nach links ueber das aktuelle Bild schieben.
* Der Layer des aktuellen Bildes wird dabei verdeckt.
*
* @access   public
* @param    integer   Nummer des Startbildes
*/
function moving_back(nr)
{
	startbild=nr
	posx=parseInt(getobj(startbild).left)
	if(parseInt(getobj(startbild).left)>0) //solange das Bild im sichtbaren Bereich ist
	{
		posx=posx-schrittweite  // positionszaehler erniedrigen
		getobj(startbild).left=posx
		window.setTimeout('moving_back(startbild)',tempo)
	}
	else
	{
		posx=0; //Positionsvariable fürs nächste Bild auf  0 setzen
		aktiv=0 //Bildwechselvariable auf fertig setzen
	}
}

/**
* printSlidesContainer()
*
* HTML-Container erzeugen und ausgeben
*
* @access   public
*/
function printSlidesContainer()
{
	if(document.layers)
	{
		document.write('<layer name="Bilddiv" top="0" left="0" clip="0,0,'+Bildbreite+','+Bildhoehe+'">')
		for(i=1;i<=bilder.length-1;i++)
		{
			document.write('<layer name="inhalt'+i+'" left="5" top="0" width="'+Bildbreite+'" z-index='+(bilder.length-i)+'"><img src="'+bilder[i]+'"></layer><br>')
		}
		document.write("</layer>")
	}
	else
	{
		document.write('<div id="Bilddiv" style="position:absolute;top:0;left:5; clip:rect(0,'+ Bildbreite+','+ Bildhoehe+',0);">')
		for(i=1;i<=bilder.length-1;i++)
		{
			document.write('<div id="inhalt'+i+'" style= "position:absolute;left:0;top:0;width:'+ Bildbreite+';z-index:'+(bilder.length-i)+'"><img src="'+bilder[i]+'"></div><br>')
		}
		document.write("</div>")
	}
}
