// Gibt die aktuelle Y-Scrollposition zurück
function getScrollPosition(){

	if (self.pageYOffset) {
		return self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // IE 6 Strict
		return document.documentElement.scrollTop;
	} else if (document.body) {	// alle anderen IEs
		return document.body.scrollTop;
	}

}


// Gibt die Größe des aktuellen Fensterauschnitts und der kompletten Seite zurück
function getPageSize(){
	
	// Fenstergröße
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// alle außer IE
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // alle anderen IEs
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// Seitengröße
	var pageWidth, pageHeight;
	if (window.innerHeight && window.scrollMaxY) {	
		pageWidth = document.body.scrollWidth;
		pageHeight = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // alle außer IE Mac
		pageWidth = document.body.scrollWidth;
		pageHeight = document.body.scrollHeight;
	} else if (document.documentElement && document.documentElement.scrollHeight > document.documentElement.offsetHeight){ // IE 6 strict
		pageWidth = document.documentElement.scrollWidth;
		pageHeight = document.documentElement.scrollHeight;
	} else { // IE Mac
		pageWidth = document.body.offsetWidth;
		pageHeight = document.body.offsetHeight;
	}
	// Wenn Seitenhöhe kleiner Fensterhöhe -> Seitenhöhe = Fensterhöhe
	if(pageHeight < windowHeight){
		pageHeight = windowHeight;
	}
	// Wenn Seitenbreite kleiner Fensterbreite -> Seitenbreite = Fensterbreite
	if(pageWidth < windowWidth){	
		pageWidth = windowWidth;
	}

	return new Array(pageWidth,pageHeight,windowWidth,windowHeight);
}

// Erweitern des onload Listeners
function addLoadEvent(func) {	
	var oldonload = window.onload;
	if (typeof window.onload != 'function'){
    	window.onload = func;
	} else {
		window.onload = function(){
			oldonload();
			func();
		}
	}
}

// Damit man per ESC das BigImg schließen kann
function getKey(e){
	if(!e) e = window.event;
	if(e.which) {
		kc = e.which;
	} else if(e.keyCode) {
		kc = e.keyCode;
	}
	
	if(kc == 27) { closeBigImg(); }
}
function listenKey () {	document.onkeypress = getKey; }
	

// Öffnen des Bildes
function big_img(img) {
	var objBigImgLoading = document.getElementById('BigImgLoading');
	var objBigImgBackground = document.getElementById('BigImgBackground');
	var objBigImgLink = document.getElementById('BigImgLink');
	var objBigImg = document.getElementById('BigImg');

	var arrayPageSize = getPageSize();
	var ScrollPosition = getScrollPosition();
	
	// Ladeschrift
	objBigImgLoading.style.display = 'block';
	objBigImgLoading.style.top = (ScrollPosition + ((arrayPageSize[3] - 35 - 20) / 2))+"px";
	objBigImgLoading.style.width = '100%';
	objBigImgLoading.style.left = '0px';
	
	// Blendet den Hintergrund ein
	objBigImgBackground.style.height = (arrayPageSize[1] + 'px');
	objBigImgBackground.style.display = 'block';
	
	// Versteckt die Select Felder, damit sie im IE nicht über dem Bild erscheinen
	selects = document.getElementsByTagName("select");
	for (i=0; i!=selects.length; i++) {
		selects[i].style.visibility = "hidden";
	}
		
	// Vorladen des Bildes
	imgPreload = new Image();
	imgPreload.onload=function(){
		objBigImg.src = img;
		
		// Zentrieren des Bildes
		var Top = ScrollPosition + ((arrayPageSize[3] - 35 - imgPreload.height) / 2);
		var Left = ((arrayPageSize[0] - 20 - imgPreload.width) / 2);
		objBigImgLink.style.top = (Top < 0) ? "0px" : Top + "px";
		objBigImgLink.style.left = (Left < 0) ? "0px" : Left + "px";
		
		// Ladeschrift ausblenden
		objBigImgLoading.style.display = 'none';
		
		objBigImgLink.style.display = 'block';
		
		// Aktualisieren der Hintergrundverdunkelung, falls eine neue Seitenhöhe der Fall ist
		arrayPageSize = getPageSize();
		objBigImgBackground.style.height = (arrayPageSize[1] + 'px');
		
		// Einschalten des onkey listeners, damit man das Bild mit ESC schließen kann
		listenKey();

		return false;
	}
	
	
	imgPreload.src = img;
	
}





// Schließen des BigImg
function closeBigImg() {
	var objBigImgBackground = document.getElementById('BigImgBackground');
	var objBigImgLink = document.getElementById('BigImgLink');
	var objBigImage = document.getElementById('BigImg');

	// Schließt das Bild
	objBigImgBackground.style.display = 'none';
	objBigImgLink.style.display = 'none';
	objBigImage.src = '/spacer.gif';

	// Macht die Select Felder wieder sichtbar
	selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "visible";
	}

	// Deaktiviert den keypress listener
	document.onkeypress = '';
}



// Erstellt die nötigen HTML Elemente die für die big_img Funktion gebraucht werden (wird beim Start ausgeführt)
function initBigImg() {
	if (!document.getElementsByTagName){ return; }

	var objBody = document.getElementsByTagName("body").item(0);
	
	// Hintergrundverdunkelung
	var objBigImgBackground = document.createElement("div");
	objBigImgBackground.setAttribute('id','BigImgBackground');
	objBigImgBackground.onclick = function () {closeBigImg(); return false;}
	objBigImgBackground.style.display = 'none';
	objBigImgBackground.style.position = 'absolute';
	objBigImgBackground.style.top = '0';
	objBigImgBackground.style.left = '0';
	objBigImgBackground.style.zIndex = '90';
 	objBigImgBackground.style.width = '100%';
	objBody.insertBefore(objBigImgBackground, objBody.firstChild);
	
	// Link um das Bild herum
	var objBigImgLink = document.createElement("a");
	objBigImgLink.setAttribute('id','BigImgLink');
	objBigImgLink.setAttribute('href','#');
	objBigImgLink.setAttribute('href','#');
	objBigImgLink.setAttribute('class','link_big_img');
	objBigImgLink.onclick = function () {closeBigImg(); return false;}
	objBigImgLink.style.display = 'none';
	objBigImgLink.style.position = 'absolute';
	objBigImgLink.style.zIndex = '100';
	objBody.insertBefore(objBigImgLink, objBigImgBackground.nextSibling);
	
	// Schließen Text über dem Bild
	var objBigImgCloser = document.createElement("a");
	objBigImgCloser.setAttribute('id','BigImgLink2');
	objBigImgCloser.setAttribute('href','#');
	objBigImgCloser.setAttribute('class','link_big_img');
	objBigImgCloser.style.display = 'block';
	objBigImgCloser.style.textAlign = 'right';
	objBigImgCloser.innerHTML = 'Schlie&szlig;en';
	objBigImgLink.appendChild(objBigImgCloser);
	
	// Ladeschrift
	var objBigImgLoading = document.createElement("div");
	objBigImgLoading.setAttribute('id','BigImgLoading');
	objBigImgLoading.style.textAlign = 'center';
	objBigImgLoading.style.display = 'none';
	objBigImgLoading.style.position = 'absolute';
	objBigImgLoading.style.zIndex = '95';
	objBigImgLoading.style.color = '#FFFFFF';
	objBigImgLoading.innerHTML = 'Wird geladen...';
	objBody.insertBefore(objBigImgLoading, objBigImgBackground.nextSibling);
	
	// Bild
	var objBigImg = document.createElement("img");
	objBigImg.setAttribute('id','BigImg');
	objBigImgLink.appendChild(objBigImg);
	
}

addLoadEvent(initBigImg);
