// (c) EIKONA AG, it.x informationssysteme gmbh, Alle Rechte vorbehalten.

// 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 -----------------------------------------------------------------------------------------------


// Diashow auf Basis von Scriptaculous.

// intSystemId:		Eindeutige ID zur Identifizierung der entsprechenden DIV's
// intPicCount:		Anzahl der vorhandenen Elemente
// intSpeed:		Darstellungsdauer eines Elementes 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;
			}
		}
	
	// 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);
		
	} // diashow()
