/* Version  1.1 mit JQuery */

var srzsd_galerie = new Object();

/***** Bilder laden *****/

srzsd_galerie.init = function (x, start){
	
	this.debug = false;
	
	var urls = x.split(",");
	
	if (start == null){
		start = 0;
	}
		
	this.bilder = new Array();
	
	if (urls.length != 0){
	
		this.navigation = {
			container: '.slideshow .navigation',
			sichtbar: true,
			timer: null
		};

		$(document).ready(
		
			function(){
			
				$("#bild").hover(
					function(){
						srzsd_galerie.zeigeNavigation(true);
					},
					function(){
						srzsd_galerie.zeigeNavigation(false);
					}
				);
				
				$(srzsd_galerie.navigation.container).hover(
					function(){
						srzsd_galerie.zeigeNavigation(true);
					},
					function(){
						srzsd_galerie.zeigeNavigation(false);
					}
				);
				
				srzsd_galerie.navigation.timer = window.setTimeout("srzsd_galerie.zeigeNavigation(false)", 1000);

			}
			
		);
		
 		for (var id = 0; id < urls.length; id++){
			this.bilder[id] = 0;
		}
	
		for (var id = 0; id < urls.length; id++){
			this.bilder[id] = new this.makeBild(id, urls[id]);
		}
				
		this.bilder[start].ladeBild();

	}
}


srzsd_galerie.makeBild = function (id, url){
	this.id = id;
	this.url = url;
	this.geladen = false;
		
	this.ladeBild = function(){		
		srzsd_galerie.zeigeStatus("Bild laden: " + this.id + " (" + this.geladen + ")");
		
		if (! this.geladen){
			this.bild.src = this.url;
		}
	};
	
	this.bild = new Image();
	
	this.bild.id = id;

	this.bild.onload = function(){
		srzsd_galerie.zeigeStatus("*** Bild geladen: " + this.id);
	
		srzsd_galerie.bilder[this.id].geladen = true;
				
		if (this.id < srzsd_galerie.bilder.length - 1){
			srzsd_galerie.bilder[Number(this.id) + 1].ladeBild();
		}
		
		if (this.id > 0){
			srzsd_galerie.bilder[Number(this.id) - 1].ladeBild();
		}
	};
}


/***** Bild anzeigen *****/

srzsd_galerie.zeigeBild = function (richtung, einblenden){
	clearTimeout(this.timer);

	if (this.intervall != null){
		return false;
	}

	aktuelle_id += richtung;
	
	if (aktuelle_id < 0){
		aktuelle_id = 0;
		return false;
	}
	if (aktuelle_id >= this.bilder.length){
		aktuelle_id = this.bilder.length - 1;
		return false;
	}
	
	/* Pfeile */
	
	if (document.getElementById("pfeil_vor") && document.getElementById("pfeil_zurueck")){
	
		if (this.pfeile == null){
			this.pfeile = new Object();
			this.pfeile.zurueck = document.getElementById("pfeil_zurueck").innerHTML.replace(/<\/?a.*?>/g,"");
			this.pfeile.vor = document.getElementById("pfeil_vor").innerHTML.replace(/<\/?a.*?>/g,"");
		}
			
		// Pfeil Zurueck
			
		var html = "";
		
		if (aktuelle_id > 0){
			html += "<a href=\"#\" onclick=\"srzsd_galerie.zeigeBild(-1, true); return false;\" title=\"Vorheriges Bild anzeigen\">";
			html += this.pfeile.zurueck;
			html += "</a>\n";
		} else {
			html += this.pfeile.zurueck;
		}
		
		document.getElementById("pfeil_zurueck").innerHTML = html;
		
		
		// Pfeil Vor
		
		var html = "";
		
		if (aktuelle_id < this.bilder.length - 1){
			html += "<a href=\"#\" onclick=\"srzsd_galerie.zeigeBild(1, true); return false;\" title=\"Vorheriges Bild anzeigen\">";
			html += this.pfeile.vor;
			html += "</a>\n";
		} else {
			html += this.pfeile.vor;
		}
		
		document.getElementById("pfeil_vor").innerHTML = html;
	}

	/* Titel und Beschreibung */

	if (document.getElementById("bild_text")){
	
		document.getElementById("bild_text").innerHTML = "";
		
		if (titel[aktuelle_id]){
			document.getElementById("bild_text").innerHTML += "<h4>&raquo;" + titel[aktuelle_id] + "&laquo;</h4>";
		}
		
		if (beschreibung[aktuelle_id]){
			document.getElementById("bild_text").innerHTML += "<p>" + beschreibung[aktuelle_id] + "</p>";
		}
		
		if (document.getElementById("bild_text").innerHTML == ""){
			document.getElementById("bild_text").style.display = "none";
		} else {
			document.getElementById("bild_text").style.display = "block";
		}
	}

	/* Bild */

	if (einblenden){
		if (document.getElementById("bild").innerHTML != ""){
			this.bildAusblenden("bild");
		} else {
			this.bildEinblenden("bild");
		}
	} else {
		this.tauscheBild(verzeichnis + this.bilder[aktuelle_id].url);
	}
	
}

srzsd_galerie.tauscheBild = function (url){
	this.zeigePlatzhalter(false);

	var html = "";

	if (navigator.userAgent.indexOf("Firefox") != -1) {
		html += "<div class=\"bild\" style=\"background-image: url(" + url + "); opacity: 0; MozOpacity: 0;\">";
	} else {
		html += "<div class=\"bild\" style=\"background-image: url(" + url + ");\">";
	}
	
	html += "<img src=\"/media/empty.gif\"/>";
	html += "</div>";
	
	document.getElementById("bild").innerHTML = html;
}

srzsd_galerie.zeigePlatzhalter = function (zustand){
	if (zustand){
		document.getElementById("bild").style.backgroundImage = "url(/media/schere.gif)";
	} else {
		document.getElementById("bild").style.backgroundImage = "none";
	}
}

/* Überblenden */

srzsd_galerie.bildAusblenden = function (id){
	this.steps = 3;
	
	if (this.step == null || this.step == 0) {
		this.step = 1;
		this.intervall = window.setInterval("srzsd_galerie.bildAusblenden('" + id + "')", 50);
	} else {
		this.setDeckung(id, (1 - this.step/this.steps) * 100);
		
		if (this.step < this.steps){
			this.step++;
		} else {
			window.clearInterval(this.intervall);
			this.step = 0;
			
			document.getElementById("bild").innerHTML = "";
			this.zeigePlatzhalter(true);

			this.bildEinblenden(id);
		}
	}
}

srzsd_galerie.bildEinblenden = function (id){
	if (this.bilder[aktuelle_id].geladen){
		if (this.step == 0) {
			clearTimeout(this.timer);

			this.tauscheBild(verzeichnis + this.bilder[aktuelle_id].url);
			this.setDeckung(id, 0);
			
			this.step++;
			this.intervall = window.setInterval("srzsd_galerie.bildEinblenden('" + id + "')", 50);
		} else {
			this.setDeckung(id, this.step/this.steps * 100);
			
			if (this.step < this.steps){
				this.step++;
			} else {
				window.clearInterval(this.intervall);
				this.intervall = null;
				this.step = 0;
			}
		}
	} else {
		this.bilder[aktuelle_id].ladeBild();
		this.intervall = null;
		this.timer = setTimeout("srzsd_galerie.bildEinblenden('" + id + "')", 100);
	}
}

srzsd_galerie.setDeckung = function (id, deckung){
	if (document.getElementById(id).firstChild){
		if (document.getElementById(id).firstChild.nodeName == "DIV"){
			if (navigator.userAgent.indexOf("Firefox") != -1) {
				if (deckung == 100) { deckung = 99.99; }
			}
			
			var objekt = document.getElementById(id).firstChild.style;

			objekt.filter = "alpha(opacity=" + deckung + ")"; // IE/Win
			objekt.KhtmlOpacity = (deckung / 100);            // Safari 1.1 or lower, Konqueror
			objekt.MozOpacity = (deckung / 100);              // Older Mozilla+Firefox
			objekt.opacity = (deckung / 100);                 // Safari 1.2, Firefox+Mozilla
		}
	}
}


/* Navigation ein- und ausblenden */

srzsd_galerie.zeigeNavigation = function (zeigen){

	window.clearTimeout(this.navigation.timer);

	if (this.navigation.timer == null){
	
		this.navigation.timer = window.setTimeout("srzsd_galerie.zeigeNavigation(" + zeigen + ")", 100);
	
	} else {
	
		this.navigation.timer = null;

		if (zeigen){
		
			if (! srzsd_galerie.navigation.sichtbar){
				$(srzsd_galerie.navigation.container).fadeTo('fast', 1, 
					function(){
						srzsd_galerie.navigation.sichtbar = true;
					}
				);
			}
			
		} else {
		
			if (srzsd_galerie.navigation.sichtbar){
				$(srzsd_galerie.navigation.container).fadeTo('fast', 0.001,
					function(){
						srzsd_galerie.navigation.sichtbar = false;
					}
				);
			}
			
		}
	
	}
	
}


/* Debugging */

srzsd_galerie.zeigeStatus = function (text){
	if (this.debug && document.getElementById("kontrolle")){
		if (text == ""){ document.getElementById("kontrolle").innerHTML = ""; }
		else { document.getElementById("kontrolle").innerHTML += text + "<br/>"; }
	}
}

