// Variablen initialisieren
var counter				= 0;
var showFirstIntro		= 0;
var changeStage			= 0;
var fadeDuration		= 2000;
var WaitForFadeOut		= 4000;
var changeStageTimer	= 0;

// Slideshow initialisieren, sobald das Dokument fertig geladen ist
window.addEvent('domready', function() {
	// Features-Navigation ausblenden
	$$('#features').fade('hide');

	// Slideshow als Element-Array ermitteln
	var stage	= $$('.stage');

	// Elemente der Slideshow vorbereiten
	stage.each( function( item, index ) {
		// Einzelne Kontainer der Slideshow vorbereiten
		item.fade('hide');									// Element ausblenden

		// Elemente innerhalb der Kontainer vorbereiten
		item.getElements('div').each( function( sitem, sindex ) {
			sitem.set('tween', {duration: fadeDuration});	// Überblend-Dauer
			sitem.fade('hide');								// Element ausblenden
		});

		// Vorhandene Bilder der Stage in einem Array ablegen
		item.stageImages = new Array();
		item.getElements('img').each( function( iitem, iindex ) {
			item.stageImages.push( iitem.get('src') )
		});
	});

	// Wenn ein Cookie gesetzt ist, den ersten Kontainer überspringen
	showFirstIntro	= (readCookie('showFirstIntro')) ? 1 : 0;
	counter			= showFirstIntro;

	// Erster Kontainer anzeigen und Überblend-Effekt starten
	var stagePreloader = new Asset.images( stage[counter].stageImages, {
		onComplete: function(){
			$$('.preloader').fade('hide');	// Preloader ausblenden
			$$('#features').fade('show');	// features-Navigation einblenden
			stage[counter].fade('show');
			stageFade( stage[counter], 0 );
		}
	});
});

// Funktion um die einzelnen Elemente innerhalb eines Kontainer überzublenden
function stageFade( stage, scounter ) {
	var myDivs = stage.getElements('div');

	// Letztes Element erreicht: Alle Elemente wieder einblenden (Zeitverzögert)
	if ( !myDivs[scounter] ) {
		var stagePreloader = new Asset.images( stage.stageImages, {
			onComplete: function(){
				( function() {
					myDivs.each( function( item, index ) {
						item.fade('0');		// Alle Unter-Elemente ausblenden
					});
					changeStageTimer = window.setTimeout('changeDiv()', fadeDuration/2);
				}).delay(WaitForFadeOut);
			}
		});
	}
	// Elemente nacheinander einblenden
	else {
		myDivs[scounter].fade(1).get('tween').chain(function() {
			stageFade( stage, scounter+1 );
		});
	}
}

// Funktion um zwischen den einzelnen Kontainer der Slideshow zu wechseln
function changeDiv() {
	// Cookie setzen, sobald der zweite Kontainer eingeblendet wird
	if ( counter >= 1 ) {
		document.cookie = 'showFirstIntro=1';
		showFirstIntro	= 1;
	}

	// Variable zurücksetzen, damit ein manueller Kontainer-Wechsel wieder erlaubt ist
	changeStage = 0;
	window.clearTimeout(changeStageTimer);

	// Aktuellen Kontainer ausblenden, und nächsten Kontainer einblenden
	var stage	= $$('.stage');
	counter	= stage[counter+1] ? counter+1 : showFirstIntro; // Zum ersten Kontainer springen, wenn der Letzte erreicht wurde
	stage[counter].fade('show');
	stageFade( stage[counter], 0 );
}

// Funktion um manuell auf den nächsten Kontainer zu wechseln
function nextStage() {
	// Slideshow als Element-Array ermitteln
	var stage	= $$('.stage');

	// Wenn der letzte Kontainer erreicht ist, die Funktion nicht ausführen
	if ( !stage[counter+1] ) {
		return;
	}

	// Wenn gerade ein Kontainer-Wechsel aktiv ist, die Funktion nicht ausführen
	if ( !changeStage ) {
		// Variable setzen, dass gerade ein Kontainer-Wechsel aktiv ist
		changeStage = 1;

		// Alle Elemente des aktuellen Kontainer ausblenden, und den nächsten Kontainer einblenden
		stage[counter].getElements('div').each(function(item, index){
			item.fade('0'); // Alle Unter-Elemente ausblenden
		});
		changeStageTimer = window.setTimeout('changeDiv()', fadeDuration / 2);
	}
}

// Funktion um manuell auf den vorherigen Kontainer zu wechseln
function prevStage() {
	// Slideshow als Element-Array ermitteln
	var stage	= $$('.stage');

	// Wenn der erste Kontainer erreicht ist, die Funktion nicht ausführen
	if ( counter < 1 ) {
		return;
	}

	// Wenn gerade ein Kontainer-Wechsel aktiv ist, die Funktion nicht ausführen
	if (!changeStage) {
		// Variable setzen, dass gerade ein Kontainer-Wechsel aktiv ist
		changeStage = 1;
		
		// Alle Elemente des aktuellen Kontainer ausblenden, und den vorherigen Kontainer einblenden
		stage[counter].getElements('div').each(function(item, index){
			item.fade('0'); // Alle Unter-Elemente ausblenden
		});
		counter = counter - 2;
		changeStageTimer = window.setTimeout('changeDiv()', fadeDuration / 2);
	}
}

// Lesen von Cookies
function readCookie( name ) {
	var cookieValue	= '';
	var search		= name + "=";
	if ( document.cookie.length > 0 ) {
		offset = document.cookie.indexOf(search);
		if ( offset != -1 ) {
			offset	+= search.length;
            end		= document.cookie.indexOf(";", offset);
            if ( end == -1 ) end = document.cookie.length;
            cookieValue = unescape( document.cookie.substring(offset, end) )
		}
	}
	return cookieValue;
}