// Historie -----------------------------------------------------------------------------------------------
// 22.12.06 hma Erstellung.																			
// 22.02.07 hma Umstellung auf JS-Objekt, damit mehrere Diashows auf einer Seite dargestellt werden können.																			
// Historie -----------------------------------------------------------------------------------------------


//
// Neue Version als JS-Objekt
//

//
// intSystemId:		Eindeutige ID zur Identifizierung der entsprechenden DIV's
// intPicCount:		Anzahl der vorhandenen Bilder
// intSpeed:		Darstellungsdauer eines Bildes in Millisekunden
// intDuration:		Dauer einer Überblendung in Millisekunden
// bitLoop:			Soll die Diashow als Endlosschleife laufen?
// strRedirectURL:	Am ende der Diashow oder bei Klick wird hierher gesprungen
//
function diashow(intSystemId, intPicCount, intSpeed, intDuration, bitLoop, strRedirectURL)
{
	this.intSystemId = intSystemId;
	this.intPicCount = intPicCount;
	this.floatSpeed = parseFloat(intSpeed + intDuration) / 1000.0;	// Speed in Sekunden umrechnen
	this.floatDuration = parseFloat(intDuration) / 1000.0;			// Duration in Sekunden umrechnen
	this.bitLoop = bitLoop;
	this.strRedirectURL = strRedirectURL;
	this.intPicShown = 1;											// Das aktuell dargestellte Bild
	this.intPicNext = 2;											// Das als nächstes darzustellende Bild


	//
	// Zeigt das nächste Bild der Diashow an
	//
	this.show_next_pic = function(objInterval)
	{
		// Das aktuelle Bild ausblenden
		Effect.Fade('diashow_' + this.intSystemId + '_' + this.intPicShown, {duration: this.floatDuration});
		
		// Das nächste Bild einblenden
		Effect.Appear('diashow_' + this.intSystemId + '_' + this.intPicNext, {duration: this.floatDuration});
		
		// Die Werte für aktuelles und nächstes Bild neu setzen
		this.intPicShown = this.intPicNext;
		this.intPicNext = this.intPicNext + 1;
		
		// Falls wir am Ende sind, auf das erste Bild zurückspringen
		if(this.intPicNext > this.intPicCount)
		{
			// Aber nur, wenn die Diashow in einer Schleife laufen soll
			if(this.bitLoop)
			{
				this.intPicNext = 1;
			}
			else
			{
				// Ansonsten das Intervall beenden
				objInterval.stop();
				
				// Und weiterleiten, falls URL angegeben wurde
				if(this.strRedirectURL != '')
				{
					new PeriodicalExecuter(this.goto_url.bind(this), this.floatSpeed);
				}
			}
		}
	}
	
	
	//
	// Springt zur hinterlegten URL
	//
	this.goto_url = function()
	{
		if(this.strRedirectURL != '')
		{
			window.location.href = this.strRedirectURL;
		}
	}
	
	
	//
	// Initialisierung
	//
	
	// Wenn eine URL übergeben wurde...
	if(strRedirectURL != '')
	{
		// ...dem Diashowelement ein Klickevent mit Weiterleitung spendieren
		Event.observe($('diashow_' + this.intSystemId), 'click', this.goto_url.bind(this), true);
		
		// ...und noch einen "Zeigepointer"
		$('diashow_' + this.intSystemId).style.cursor = 'pointer';
	}

	// Das Intervall starten, welches für die Überblendungen sorgt
	new PeriodicalExecuter(this.show_next_pic.bind(this), this.floatSpeed);
}