/*****************************************************************
 * Globale Variablen
 ****************************************************************/

var imgArr = new Array;

/*****************************************************************
 * imageBoxInit ()
 *
 * Initialisiert die ImageBox
 ****************************************************************/
 
function imageBoxInit ()
{
	// Alle a-Tags suchen
	var aArr = document.getElementsByTagName ("a");
	
	for (i = 0; i < aArr.length; i++) {
		var aObj = aArr[i];
		
		// Attribute auslesen
		var attRel 	= String (aObj.getAttribute ('rel'));	
		var attHref = String (aObj.getAttribute ('href'));
		
		// Soll die ImageBox bei diesem Link eingebunden werden?
		if (attHref && (attRel.toLowerCase ().match ('imagebox'))) {	
			// onclick-Event setzen
			aObj.onclick = function () {
				imageBoxShow (this);
				return false;
			}
		}
	}		
}

/*****************************************************************
 * imageBoxShow (startObj)
 *
 * Zeigt die ImageBox an
 ****************************************************************/
 
function imageBoxShow (startObj)
{
	// Rel, Href und Title auslesen
	var attRel 		= String (startObj.getAttribute ('rel'));
	var attHref 	= String (startObj.getAttribute ('href'));
	var attTitle 	= String (startObj.getAttribute ('title'));
	var imgStart 	= 0;
	
	// Bilderarray auf Null setzen
	imgArr = [];
	
	// Soll das Bild alleine angezeigt werden?
	if (attRel == 'imagebox') {
		// Nur dieses Bild an das Array hängen
		imgArray.push (new Array (attHref, attTitle));			
	} else {
		// Nach weiteren Bildern aus der Galerie suchen
		var aArr = document.getElementsByTagName ("a");	
		
		k = 0;
		for (i = 0; i < aArr.length; i++) {
			var aObj = aArr[i];
			
			// Mitglied der Galerie?
			if (attRel == aObj.getAttribute ('rel')) {
				imgArr.push (new Array (aObj.getAttribute ('href'), aObj.getAttribute ('title')));
				
				if (attHref == aObj.getAttribute ('href')) {
					imgStart = k;
				}
				
				k++;
			}
		}			
	}
	
	// Bild wechseln
	imageBoxChangeImg (imgStart);
}

/*****************************************************************
 * imageBoxChangeImg (imgNo)
 *
 * Wechselt das Bild in der ImageBox
 ****************************************************************/

function imageBoxChangeImg (imgNo)
{
	// Bild vorladen
	var objPicPreload = new Image ();
	
	objPicPreload.onload = function () {
		// Box um das Bild herum auf neue Breite setzen
		var objMain = document.getElementById ('imagebox_main_box');
		mainWidth = objPicPreload.width + 10;
		objMain.style.width = mainWidth + "px";		
		
		// Bild in den img-Tag laden
		var objPic = document.getElementById ('imagebox_pic');
		objPic.src = imgArr[imgNo][0];		
		
		// Previous-Link setzen
		var objPrevLink = document.getElementById ('imagebox_prevlink');
		objPrevLink.style.display = 'none';
		
		if (imgNo != 0) {
			objPrevLink.style.display = 'block';
			objPrevLink.onclick = function () {
				imageBoxChangeImg (imgNo - 1);	
				return false;
			}
		}
		
		// Next-Link setzen
		var objNextLink = document.getElementById ('imagebox_nextlink');
		objNextLink.style.display = 'none';
		
		if (imgNo != (imgArr.length - 1)) {
			objNextLink.style.display = 'block';
			objNextLink.onclick = function () {
				imageBoxChangeImg (imgNo + 1);	
				return false;
			}
		}		

		// Titel setzen
		if (imgArr[imgNo][1]) {
			var objTitle = document.getElementById ('imagebox_title');
			objTitle.innerHTML = imgArr[imgNo][1];
		}

		// Container anzeigen und abhängig vom Scrollbalken die Position setzen
		var objContainer = document.getElementById ('imagebox_container');
		containerWidth = imageBoxPageWidth () - 20;
		objContainer.style.width = containerWidth + "px";
		objContainer.style.top = imageBoxPageScroll () + "px";
		objContainer.style.display = 'block';	
		
		// Standardladefunktion zurücksetzen
		objPicPreload.onload = function () {
		}; 
	}
	
	objPicPreload.src = imgArr[imgNo][0];	
}

/*****************************************************************
 * imageBoxClose ()
 *
 * Blendet die Imagebox aus
 ****************************************************************/

function imageBoxClose ()
{
	// Container ausblenden
	var objContainer = document.getElementById ('imagebox_container');
	objContainer.style.display = 'none';
}

/*****************************************************************
 * imageBoxPageScroll ()
 *
 * Ermittelt die Position des Scrollbalkens
 * (von quirksmode.com)
 ****************************************************************/

function imageBoxPageScroll ()
{
	var x, y;
	
	if (self.pageYOffset) { // all except Explorer
		x = self.pageXOffset;
		y = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict
		x = document.documentElement.scrollLeft;
		y = document.documentElement.scrollTop;
	}
	else if (document.body) { // all other Explorers
		x = document.body.scrollLeft;
		y = document.body.scrollTop;
	}		
	
	return y;
}

/*****************************************************************
 * imageBoxPageWidth ()
 *
 * Ermittelt die Breite des Fensters
 * (von quirksmode.com)
 ****************************************************************/
 
function imageBoxPageWidth ()
{
	var x, y;
	if (self.innerHeight) { // all except Explorer
		x = self.innerWidth;
		y = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		x = document.documentElement.clientWidth;
		y = document.documentElement.clientHeight;
	}
	else if (document.body) { // other Explorers
		x = document.body.clientWidth;
		y = document.body.clientHeight;
	}	
	
	return x;
}

/*****************************************************************
 * addLoadEvent (func)
 *
 * Fügt dem onLoad-Event eine weitere Funktion hinzu
 * (von http://simonwillison.net/2004/May/26/addLoadEvent)
 ****************************************************************/
 
function addLoadEvent (func)
{ 
	var oldonload = window.onload; 
	if (typeof window.onload != 'function') { 
		window.onload = func; 
	} else { 
		window.onload = function () { 
			oldonload(); 
			func(); 
		} 
	} 
}

// Nach dem Laden der HTML-Struktur soll die ImageBox initialisiert werden
addLoadEvent (imageBoxInit);