var BigImg = {
	
	////////////////////////////////////////////////////////////////////////////////
	// Einstellungen
	background_id: 	'BigImgBackground',
	img_div_id: 		'BigImg',
	loading_id:			'BigImgLoading',
	text_id:				'BigImgText',
	
	spacer:					'/spacer.gif',
	////////////////////////////////////////////////////////////////////////////////
	
	
	
	// Gibt die aktuelle Y-Scrollposition zurueck
	getScrollPosition:function(){
		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;
		} else {
			return 0;
		}
	},
	
	
	
	// Gibt die Groesse des aktuellen Fensterauschnitts und der kompletten Seite zurueck
	getPageSize:function(){
		
		// Fenstergroesse
		var windowWidth, windowHeight;
		if (self.innerHeight) {	// alle ausser 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;
		}	
		
		// Seitengroesse
		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 ausser 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 Seitenhoehe kleiner Fensterhoehe -> Seitenhoehe = Fensterhoehe
		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
	addLoadEvent:function(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 schliessen kann
	getKey:function(e){
		if(!e) e = window.event;
		if(e.which) {
			kc = e.which;
		} else if(e.keyCode) {
			kc = e.keyCode;
		}
		
		if(kc == 27) { BigImg.closeBigImg(); }
	},
	listenKey:function() {
		document.onkeypress = this.getKey;
	},
	



	// Oeffnen des Bildes
	BigImg:function(img,beschreibung) {
		var objBigImgBackground = document.getElementById(BigImg.background_id);
		var objBigImgLoading = document.getElementById(BigImg.loading_id);
		var objBigImgText = document.getElementById(BigImg.text_id);
		var objBigImgDiv = document.getElementById(BigImg.img_div_id);
		var objBigImg = objBigImgDiv.getElementsByTagName('img')[0];
	
		var arrayPageSize = BigImg.getPageSize();
		var ScrollPosition = BigImg.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 ueber 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;
			
			// Bildgroesse
			objBigImg.setAttribute('width',imgPreload.width+'px');
			objBigImg.setAttribute('height',imgPreload.height+'px');
			objBigImgText.style.width = imgPreload.width+'px';

			// Zentrieren des Bildes
			var Top = ScrollPosition + ((arrayPageSize[3] - 35 - imgPreload.height) / 2);
			var Left = ((arrayPageSize[0] - 20 - imgPreload.width) / 2);
			objBigImgDiv.style.top = (Top < 0) ? "0px" : Top + "px";
			objBigImgDiv.style.left = (Left < 0) ? "0px" : Left + "px";
						
			// Ladeschrift ausblenden
			objBigImgLoading.style.display = 'none';
			
			objBigImgDiv.style.display = 'block';
			
			if(typeof(beschreibung)!='undefined'){
				objBigImgText.innerHTML = beschreibung;
			}
			
			// Aktualisieren der Hintergrundverdunkelung, falls eine neue Seitenhoehe der Fall ist
			arrayPageSize = BigImg.getPageSize();
			objBigImgBackground.style.height = (arrayPageSize[1] + 'px');
			
			// Einschalten des onkey listeners, damit man das Bild mit ESC schliessen kann
			BigImg.listenKey();
			
			return false;
		}
		
		imgPreload.src = img;
		
	},
	
	
	// BigDiv (Fuer den Timm Mailer)
	BigDiv:function(id,w,h) {
		var objBigImgBackground = document.getElementById(BigImg.background_id);
		var objBigUrl = document.getElementById(id);
		
		var arrayPageSize = BigImg.getPageSize();
		var ScrollPosition = BigImg.getScrollPosition();
		
		// Blendet den Hintergrund ein
		objBigImgBackground.style.height = (arrayPageSize[1] + 'px');
		objBigImgBackground.style.display = 'block';
		
		// Versteckt die Select Felder, damit sie im IE nicht ueber dem Bild erscheinen
		var selects = document.getElementsByTagName("select");
		for (i=0; i!=selects.length; i++) {
			selects[i].style.visibility = "hidden";
		}
		
		// Zentrieren des Divs
		var Top = ScrollPosition + ((arrayPageSize[3] - 35 - h) / 2);
		var Left = ((arrayPageSize[0] - 20 - w) / 2);
		objBigUrl.style.top = (Top < 0) ? "0px" : Top + "px";
		objBigUrl.style.left = (Left < 0) ? "0px" : Left + "px";
		objBigUrl.style.width = w + "px";
		
		objBigUrl.style.display = 'block';
		
		// Aktualisieren der Hintergrundverdunkelung, falls eine neue Seitenhoehe der Fall ist
		arrayPageSize = BigImg.getPageSize();
		objBigImgBackground.style.height = (arrayPageSize[1] + 'px');
		
		// Einschalten des onkey listeners, damit man das Bild mit ESC schliessen kann
		BigImg.listenKey();
	},
	
	// Schliessen des BigImg
	closeBigImg:function() {
		var objBigImgBackground = document.getElementById(BigImg.background_id);
		var objBigImgDiv = document.getElementById(BigImg.img_div_id);
		var objBigImg = objBigImgDiv.getElementsByTagName('img')[0];
	
		// Schliesst das Bild
		objBigImgBackground.style.display = 'none';
		objBigImgDiv.style.display = 'none';
		objBigImg.src = BigImg.spacer;
		
		// Fuer Timm4Mailer
		if(document.getElementById('timm4_mailer')){
			document.getElementById('timm4_mailer').style.display = 'none';
		}
	
		// 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 noetigen HTML Elemente die gebraucht werden (muss beim Start ausgefuehrt werden)
	initBigImg:function() {
		if (!document.getElementsByTagName){ return; }
	
		var objBody = document.getElementsByTagName("body").item(0);
		
		// Hintergrundverdunkelung
		var objBigImgBackground = document.createElement("div");
		objBigImgBackground.setAttribute('id',BigImg.background_id);
		objBigImgBackground.onclick = function() {BigImg.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);
		
		// Div um das Bild herum
		var objBigImgDiv = document.createElement("div");
		objBigImgDiv.setAttribute('id',BigImg.img_div_id);
		objBigImgDiv.onclick = function() {BigImg.closeBigImg(); return false;}
		objBigImgDiv.style.display = 'none';
		objBigImgDiv.style.position = 'absolute';
		objBigImgDiv.style.zIndex = '100';
		objBody.insertBefore(objBigImgDiv, objBigImgBackground.nextSibling);
		
		// Schliessen Text ueber dem Bild
		var objBigImgCloser = document.createElement("a");
		objBigImgCloser.setAttribute('href','#');
		objBigImgCloser.style.display = 'block';
		objBigImgCloser.style.textAlign = 'right';
		objBigImgCloser.className = 'noprint';
		objBigImgCloser.innerHTML = 'Schlie&szlig;en';
		objBigImgDiv.appendChild(objBigImgCloser);
		
		// Ladeschrift
		var objBigImgLoading = document.createElement("div");
		objBigImgLoading.setAttribute('id',BigImg.loading_id);
		objBigImgLoading.style.textAlign = 'center';
		objBigImgLoading.style.display = 'none';
		objBigImgLoading.style.position = 'absolute';
		objBigImgLoading.style.zIndex = '95';
		objBigImgLoading.style.color = '#FFFFFF';
		objBigImgLoading.innerHTML = 'Loading...';
		objBody.insertBefore(objBigImgLoading, objBigImgBackground.nextSibling);
		
		// Bild
		var objBigImg = document.createElement("img");
		objBigImgDiv.appendChild(objBigImg);

		// Beschreibung
		var objBigImgText = document.createElement("div");
		objBigImgText.setAttribute('id',BigImg.text_id);
		objBigImgText.style.textAlign = 'left';
		objBigImgText.style.zIndex = '95';
		objBigImgText.style.color = '#FFFFFF';
		objBigImgDiv.appendChild(objBigImgText);
		
	}
	
	
};


BigImg.addLoadEvent(BigImg.initBigImg);
function big_img(img,beschreibung) { BigImg.BigImg(img,beschreibung); }

function big_div(id,w,h) { BigImg.BigDiv(id,w,h); }
