
/*
Lightbox JS: Fullsize Image Overlays 
by Lokesh Dhakar - http://www.huddletogether.com

Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/

Updated and modified for better accessibility handling
and improved performance 
by [grishan] - http://www.wordpress.dotflare.com
*/

var loadingImage='http://www.greatestview.de/wp-content/plugins/accessiblelightbox/loader.gif';

var alphaTrans=30;

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 returnLink=objLink;
	var objBody=document.getElementsByTagName("body").item(0);
	var objOverlay=document.createElement("div");
	objOverlay.setAttribute('id','overlay');
	objOverlay.onclick=function() {
		hideLightbox(returnLink);
		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%';
	objOverlay.style.opacity=alphaTrans/100;
	objOverlay.style.MozOpacity=alphaTrans/100;
	objOverlay.style.filter='alpha(opacity='+alphaTrans+')';
	objBody.insertBefore(objOverlay, objBody.firstChild);
	var arrayPageSize=getPageSize();
	var arrayPageScroll=getPageScroll();

	var imgPreloader=new Image();
	var objLoadingImageLink=document.createElement("a");
	objLoadingImageLink.setAttribute('href','#');
	objLoadingImageLink.setAttribute('title','Zum Schließen anklicken');
	objLoadingImageLink.onclick=function() {
		hideLightbox(returnLink);
		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.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 holdFocus=document.createElement("a");
	holdFocus.setAttribute('id','holdFocus');
	holdFocus.setAttribute('href','#');
	holdFocus.setAttribute('title','Zum Schließen anklicken');
	objLightbox.insertBefore(holdFocus,objLightbox.firstChild);
	var closeLink=document.createElement("a");
	closeLink.setAttribute('id','closeLink');
	closeLink.setAttribute('href','#');
	closeLink.setAttribute('title','Zum Schließen anklicken');
	closeLink.onclick=function() {
		hideLightbox();
		return false;
	}
	objLightbox.appendChild(closeLink);

	var objImage=document.createElement("img");
	objImage.setAttribute('id','lightboxImage');
	closeLink.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='<a href="#" title="Zum Schließen anklicken" onclick="hideLightbox(); return false;">Ansicht schließen X</a>';
	objLightboxDetails.appendChild(objKeyboardMsg);
*/

	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('nicetitle')){
			objCaption.style.display='block';
			objCaption.innerHTML='<strong>Titel: </strong>'+objLink.getAttribute('nicetitle');
		}else if(objLink.getAttribute('title')){
			objCaption.style.display='block';
			objCaption.innerHTML='<strong>Titel: </strong>'+objLink.getAttribute('title');
		}else{
			objCaption.style.display='none';
		}
*/
		if(navigator.appVersion.indexOf("MSIE")!=-1){
			//pause(100);
		}
		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');
		holdFocus.focus();
		listenKey();
		return false;
	}
	imgPreload.src=objLink.href;
}


function hideLightbox(returnLink) {
	var focusLink=returnLink;
	var anchors = document.getElementsByTagName("a");
	var activeImage=document.getElementById('lightboxImage');
	for(var i=0;i<anchors.length;i++){
		var givebackFocus=anchors[i];
		var relAttribute = String(givebackFocus.getAttribute('rel'));
		if(!activeImage.getAttribute("src")) {
			if(givebackFocus.getAttribute('href') && (relAttribute.toLowerCase().match('lightbox'))){
				if((focusLink.href.match(givebackFocus.getAttribute("href")))&&(!navigator.userAgent.match('MSIE 5.0'))){
					givebackFocus.focus();
				}
			}
		}else if(givebackFocus.getAttribute('href') && (relAttribute.toLowerCase().match('lightbox'))){
			if((activeImage.getAttribute("src").match(givebackFocus.getAttribute("href")))&&(!navigator.userAgent.match('MSIE 5.0'))){
				givebackFocus.focus();
			}
		}
	}
	var objBody=document.getElementsByTagName("body").item(0);
	if(document.getElementById('overlay')==objBody.firstChild) {
		objBody.removeChild(objBody.firstChild);
	}
	if(document.getElementById('lightbox')==objBody.firstChild) {
		objBody.removeChild(objBody.firstChild);
	}
	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];
		var relAttribute=String(anchor.getAttribute('rel'));
		if(anchor.getAttribute('href')&&(relAttribute.toLowerCase().match('lightbox'))){
			anchor.onclick=function() {
				showLightbox(this);
				return false;
			}
		}
	}
}


function addLoadEvent2(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function'){
		window.onload = func;
	} else {
		window.onload = function(){
			oldonload();
			func();
		}
	}
}

if((!navigator.userAgent.match('Netscape6'))&&document.getElementById&&document.createTextNode){
	addLoadEvent2(initLightbox);
}

/*
window.onload=function(){
	if((!navigator.userAgent.match('Netscape6'))&&document.getElementById&&document.createTextNode){
		initLightbox();
	}
}
*/
