/*
	Lightbox JS: Fullsize Image Overlays 
	by Lokesh Dhakar - http://www.huddletogether.com

	For more information on this script, visit:
	http://huddletogether.com/projects/lightbox/

	Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/

*/
var loadingImage= '../grafiken/loading.gif'; 
var closeButton= '../grafiken/close.gif'; 
function getPageScroll(){
 var yScroll;
 if(self.pageYOffset) {
 yScroll=self.pageYOffset;
}else if(document.documentElement&&document.documentElement.scrollTop){ yScroll=document.documentElement.scrollTop;
}else if(document.body) { yScroll=document.body.scrollTop;
}
 arrayPageScroll=new Array('',yScroll) 
 return arrayPageScroll;
}
function getPageSize(){

 var xScroll,yScroll;

 if(window.innerHeight&&window.scrollMaxY) { 
 xScroll=document.body.scrollWidth;
 yScroll=window.innerHeight+window.scrollMaxY;
}else if(document.body.scrollHeight>document.body.offsetHeight){ xScroll=document.body.scrollWidth;
 yScroll=document.body.scrollHeight;
}else{ xScroll=document.body.offsetWidth;
 yScroll=document.body.offsetHeight;
}

 var windowWidth,windowHeight;
 if(self.innerHeight) { windowWidth=self.innerWidth;
 windowHeight=self.innerHeight;
}else if(document.documentElement&&document.documentElement.clientHeight) { windowWidth=document.documentElement.clientWidth;
 windowHeight=document.documentElement.clientHeight;
}else if(document.body) { windowWidth=document.body.clientWidth;
 windowHeight=document.body.clientHeight;
} 

 if(yScroll<windowHeight){
 pageHeight=windowHeight;
}else{ 
 pageHeight=yScroll;
}
 if(xScroll<windowWidth){ 
 pageWidth=windowWidth;
}else{
 pageWidth=xScroll;
}
 arrayPageSize=new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
 return arrayPageSize;
}
function pause(numberMillis) {
 var now=new Date();
 var exitTime=now.getTime() +numberMillis;
 while(true) {
 now=new Date();
 if(now.getTime() >exitTime)
 return;
}
}
function getKey(e){
 if(e==null) { keycode=event.keyCode;
}else{ keycode=e.which;
}
 key=String.fromCharCode(keycode).toLowerCase();

 if(key== 'x'){hideLightbox(); }
}
function listenKey() {document.onkeypress=getKey; }

function showLightbox(objLink)
{
 var objOverlay=document.getElementById('overlay');
 var objLightbox=document.getElementById('lightbox');
 var objCaption=document.getElementById('lightboxCaption');
 var objImage=document.getElementById('lightboxImage');
 var objLoadingImage=document.getElementById('loadingImage');
 var objLightboxDetails=document.getElementById('lightboxDetails');

 var arrayPageSize=getPageSize();
 var arrayPageScroll=getPageScroll();
 if(objLoadingImage) {
 objLoadingImage.style.top= (arrayPageScroll[1] + ((arrayPageSize[3] -35-objLoadingImage.height) /2) + 'px');
 objLoadingImage.style.left= (((arrayPageSize[0] -20-objLoadingImage.width) /2) + 'px');
 objLoadingImage.style.display= 'block';
}
 objOverlay.style.height= (arrayPageSize[1] + 'px');
 objOverlay.style.display= 'block';
 imgPreload=new Image();
 imgPreload.onload=function(){
 objImage.src=objLink.href;
 var lightboxTop=arrayPageScroll[1] + ((arrayPageSize[3] -35-imgPreload.height) /2);
 var lightboxLeft= ((arrayPageSize[0] -20-imgPreload.width) /2);
 
 objLightbox.style.top= (lightboxTop<0) ? "0px":lightboxTop+ "px";
 objLightbox.style.left= (lightboxLeft<0) ? "0px":lightboxLeft+ "px";
 objLightboxDetails.style.width=imgPreload.width+ 'px';
 
 if(objLink.getAttribute('title')){
 objCaption.style.display= 'block';
 objCaption.innerHTML=objLink.getAttribute('title');
 }else{
 objCaption.style.display= 'none';
 }
 
 if(navigator.appVersion.indexOf("MSIE")!=-1){
 pause(250);
 } 
 if(objLoadingImage) {objLoadingImage.style.display= 'none'; }
 selects=document.getElementsByTagName("select");
 for(i=0;i!=selects.length;i++) {
 selects[i].style.visibility= "hidden";
 }

 objLightbox.style.display= 'block';
 arrayPageSize=getPageSize();
 objOverlay.style.height= (arrayPageSize[1] + 'px');
 
 listenKey();
 return false;
}
 imgPreload.src=objLink.href;

}
function hideLightbox()
{
 objOverlay=document.getElementById('overlay');
 objLightbox=document.getElementById('lightbox');
 objOverlay.style.display= 'none';
 objLightbox.style.display= 'none';
 selects=document.getElementsByTagName("select");
 for(i=0;i!=selects.length;i++) {
 selects[i].style.visibility= "visible";
}
 document.onkeypress= '';
}
function initLightbox()
{

 if(!document.getElementsByTagName){return; }
 var anchors=document.getElementsByTagName("a");
 for(var i=0;i<anchors.length;i++){
 var anchor=anchors[i];
 if(anchor.getAttribute("href") && (anchor.getAttribute("rel") == "lightbox")){
 anchor.onclick=function() {showLightbox(this);return false;}
 }
}
 
 var objBody=document.getElementsByTagName("body").item(0);

 var objOverlay=document.createElement("div");
 objOverlay.setAttribute('id','overlay');
 objOverlay.onclick=function() {hideLightbox();return false;}
 objOverlay.style.display= 'none';
 objOverlay.style.position= 'absolute';
 objOverlay.style.top= '0';
 objOverlay.style.left= '0';
 objOverlay.style.zIndex= '90';
 objOverlay.style.width= '100%';
 objBody.insertBefore(objOverlay,objBody.firstChild);

 var arrayPageSize=getPageSize();
 var arrayPageScroll=getPageScroll();
 var imgPreloader=new Image();

 imgPreloader.onload=function(){
 var objLoadingImageLink=document.createElement("a");
 objLoadingImageLink.setAttribute('href','#');
 objLoadingImageLink.onclick=function() {hideLightbox();return false;}
 objOverlay.appendChild(objLoadingImageLink);
 
 var objLoadingImage=document.createElement("img");
 objLoadingImage.src=loadingImage;
 objLoadingImage.setAttribute('id','loadingImage');
 objLoadingImage.style.position= 'absolute';
 objLoadingImage.style.zIndex= '150';
 objLoadingImageLink.appendChild(objLoadingImage);
 imgPreloader.onload=function(){}; 
 return false;
}
 imgPreloader.src=loadingImage;
 var objLightbox=document.createElement("div");
 objLightbox.setAttribute('id','lightbox');
 objLightbox.style.display= 'none';
 objLightbox.style.position= 'absolute';
 objLightbox.style.zIndex= '100'; 
 objBody.insertBefore(objLightbox,objOverlay.nextSibling);

 var objLink=document.createElement("a");
 objLink.setAttribute('href','#');
 objLink.setAttribute('title','Fenster schließen');
 objLink.onclick=function() {hideLightbox();return false;}
 objLightbox.appendChild(objLink);
 var imgPreloadCloseButton=new Image();
 imgPreloadCloseButton.onload=function(){
 var objCloseButton=document.createElement("img");
 objCloseButton.src=closeButton;
 objCloseButton.setAttribute('id','closeButton');
 objCloseButton.style.position= 'absolute';
 objCloseButton.style.zIndex= '200';
 objLink.appendChild(objCloseButton);
 return false;
}
 imgPreloadCloseButton.src=closeButton;
 var objImage=document.createElement("img");
 objImage.setAttribute('id','lightboxImage');
 objLink.appendChild(objImage);

 var objLightboxDetails=document.createElement("div");
 objLightboxDetails.setAttribute('id','lightboxDetails');
 objLightbox.appendChild(objLightboxDetails);
 var objCaption=document.createElement("div");
 objCaption.setAttribute('id','lightboxCaption');
 objCaption.style.display= 'none';
 objLightboxDetails.appendChild(objCaption);
 var objKeyboardMsg=document.createElement("div");
 objKeyboardMsg.setAttribute('id','keyboardMsg');
 objKeyboardMsg.innerHTML= 'Fenster <a title="schlie&szlig;sen" href="#" onclick="hideLightbox(); return false;">schlie&szlig;en</a>';
 objLightboxDetails.appendChild(objKeyboardMsg);
}
function addLoadEvent(func)
{ 
 var oldonload=window.onload;
 if(typeof window.onload!= 'function'){
 window.onload=func;
}else{
 window.onload=function(){
 oldonload();
 func();
 }
}
}
addLoadEvent(initLightbox);
