// Slideshow JS
// Copyright (c) 2011 Print Media Group (http://p-m-g.eu)
// Author: Marius Köster

// Hinweis: Verwendet scriptaculous (http://script.aculo.us)

// Alle Pages als Array
var pagesArray;

// Aktuelle Page, nächste Page, nächstes Kontrollelement
var currentPage;
var nextPage;

// Slideshow aktiv
var slideshowActive;

// Timeout für Slideshow
var slideshowTimeout;

// Slideshow Object
var slideshow;

// Initialisierung der Slideshow, Übergabe von Pages und Seitentimeout
// Pages als Array übergeben
// Minimaler Timout sollte 5000 (5 Sekunden) betragen
function slideshowInit(Pages,Timeout) {
	pagesArray = Pages;
	slideshowTimeout = Timeout;
	currentPage = 0;
	slideshowActive = 0;
	// Slideshow-Kontrollen erzeugen
	slideshowControlsCreate();
	slideshowElementHighlight(0);
	// Erste Seite zum Start aufrufen
	new Effect.Appear(pagesArray[currentPage],{duration: 2.0});
	return false;
}

// Pagewechsel
function slideshowTurn() {
	// Fall letzte Page im Array
	if(currentPage == (pagesArray.length-1)) {
		nextPage = 0;
		new Effect.Fade(pagesArray[currentPage],{afterFinish: function (obj) { new Effect.Appear(pagesArray[nextPage],{duration: 2.0})}});
		currentPage = nextPage;
		slideshow = setTimeout("slideshowTurn();",slideshowTimeout);
		slideshowElementHighlight(nextPage);
		return false;
	}
	// Sonst
	else {
		nextPage = currentPage+1;
		new Effect.Fade(pagesArray[currentPage],{afterFinish: function (obj) { new Effect.Appear(pagesArray[nextPage],{duration: 2.0})}});		 
		currentPage = nextPage;
		slideshow = setTimeout("slideshowTurn();",slideshowTimeout);
		slideshowElementHighlight(nextPage);
		return false;
	}
}

// Spezifische Page aufrufen und Slideshow anhalten
function slideshowSpecificTurn(nextPage) {
	slideshowDeactivate();
	new Effect.Fade(pagesArray[currentPage],{afterFinish: function (obj) { new Effect.Appear(pagesArray[nextPage],{duration: 2.0})}});
	currentPage = nextPage;
	slideshowElementHighlight(nextPage);
	return false;
}

// Slideshow aktivieren
function slideshowActivate() {
	if(!slideshowActive) {
		slideshowActive = 1;
		slideshow = setTimeout("slideshowTurn();",slideshowTimeout);
	}
	return false;
}

// Slideshow anhalten
function slideshowDeactivate() {
	clearTimeout(slideshow);
	slideshowActive = 0;
	return false;
}

// Slideshow-Element in Kontrollen highlighten
function slideshowElementHighlight(highlightElement) {
	// Über alle Elemente iterieren
	for(var i = 0; i < pagesArray.length; i++) {
		if(i == highlightElement) {
			document.getElementById('slideshowElement_'+i).style.color = '#ED1C24';
		}
		else {
			document.getElementById('slideshowElement_'+i).style.color = '#555';
		}	
	}	
}

// Slideshow-Kontrollen erzeugen
function slideshowControlsCreate() {
	// Über alle Elmente iterieren
	for(var i = 0; i < pagesArray.length; i++) {
		// Link Element erzeugen
		var newElement = document.createElement("a");
		newElement.href = '#';
		newElement.id = 'slideshowElement_'+i;		
		newElement.setAttribute('onClick','slideshowSpecificTurn('+i+');');
		var newText = document.createTextNode(i+1);
		newElement.appendChild(newText);		
		// Link Element anhängen
		document.getElementById('slideshowControls').appendChild(newElement);
		// Trennzeichen erzeugen, letztes Auslassen
		if(i < (pagesArray.length - 1)) {
			newText = document.createTextNode(' | ');
			document.getElementById('slideshowControls').appendChild(newText);
		}
	}
}
