/*
	Original version of Lightbox JS by Lokesh Dhakar 
	http://huddletogether.com/projects/lightbox/
	
	Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/
	
	This version is heavily modified and relies on api.js
*/

var loadingImg = "";
var closeImg = "/v5/images/icon/icon-tickX.png";

// Core code from - quirksmode.org
function getPageScroll(){
	var yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (d.documentElement && d.documentElement.scrollTop){
		yScroll = d.documentElement.scrollTop;
	} else if (d.body) {
		yScroll = d.body.scrollTop;
	}

	arrPageScroll = new Array("",yScroll) 
	return arrPageScroll;
}

function getPageSize(){
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = d.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (d.body.scrollHeight > d.body.offsetHeight){
		xScroll = d.body.scrollWidth;
		yScroll = d.body.scrollHeight;
	} else { 
		xScroll = d.body.offsetWidth;
		yScroll = d.body.offsetHeight;
	}
	
	var wW, wH;
	if (self.innerHeight) {
		wW = self.innerWidth;
		wH = self.innerHeight;
	} else if (d.documentElement && d.documentElement.clientHeight) {
		wW = d.documentElement.clientWidth;
		wH = d.documentElement.clientHeight;
	} else if (d.body) {
		wW = d.body.clientWidth;
		wH = d.body.clientHeight;
	}	
	
	pH = (yScroll < wH) ? wH : yScroll;
	pW = (xScroll < wW) ? wW : xScroll;
	
	arrPageSize = new Array(pW,pH,wW,wH) 
	return arrPageSize;
}

function getKey(e){
	var keycode = (e == null) ? event.keyCode : e.which;
	key = String.fromCharCode(keycode).toLowerCase();
	if(key == "x"){ hideLightbox(); }
}
	
function showLightbox(objLink){
	var objOverlay = d.getElementById("lightboxOverlay");
	var objLightbox = d.getElementById("lightbox");
	var objCaption = d.getElementById("lightboxCaption");
	var objImage = d.getElementById("lightboxImage");
	var objLoadingImage = d.getElementById("lightboxLoadingImage");
	var objLightboxDetails = d.getElementById("lightboxDetails");

	var arrPageSize = getPageSize();
	var arrPageScroll = getPageScroll();

	if (objLoadingImage) {
		objLoadingImage.style.top = (arrPageScroll[1] + ((arrPageSize[3] - 35 - objLoadingImage.height) / 2) + "px");
		objLoadingImage.style.left = (((arrPageSize[0] - 20 - objLoadingImage.width) / 2) + "px");
		objLoadingImage.style.display = "block";
	}

	objOverlay.style.height = arrPageSize[1] + "px";
	
	objOverlay.style.display = "block";

	imgPreload = new Image();
	addEvent(imgPreload,"load",function(){
		objImage.src = objLink.href;

		var lT = arrPageScroll[1] + ((arrPageSize[3] - 35 - imgPreload.height) / 2);
		var lL = ((arrPageSize[0] - 20 - imgPreload.width) / 2);
		
		objLightbox.style.top = (lT < 0) ? 0 : lT + "px";
		objLightbox.style.left = (lL < 0) ? 0 : lL + "px";

		objLightboxDetails.style.width = imgPreload.width + "px";
		
		/*
		if(navigator.appVersion.indexOf("MSIE")!=-1){ 
			var now = new Date();
			var exit = now.getTime() + 250;
			while (true) {
				now = new Date();
				if (now.getTime() > exit){ return; }
			}
		}
		*/
		 
		if(objLoadingImage){ objLoadingImage.style.display = "none"; }

		selects = d.getElementsByTagName("SELECT");
		for(i=0; i!=selects.length; i++) {
			selects[i].style.visibility = "hidden";
		}
		hideShowAds();
	
		objLightbox.style.display = "block";

		arrPageSize = getPageSize();
		objOverlay.style.height = arrPageSize[1] + "px";
		
		addEvent(d,"keypress",getKey);

		return false;
	});

	imgPreload.src = objLink.href;
}

function hideLightbox(){
	objOverlay = d.getElementById("lightboxOverlay");
	objLightbox = d.getElementById("lightbox");

	objOverlay.style.display = "none";
	objLightbox.style.display = "none";

	selects = d.getElementsByTagName("SELECT");
	for(i=0; i!=selects.length; i++) {
		selects[i].style.visibility = "visible";
	}
	hideShowAds();
	
	removeEvent(d,"keypress",getKey);
}

function initLightbox(){
	if (!d.getElementsByTagName){ return; }
	var aObjs = d.getElementsByTagName("A");
	for (var i=0; i<aObjs.length; i++){
		if (aObjs[i].href && (aObjs[i].rel == "lightbox")){
			addEvent(aObjs[i],"click",function() { showLightbox(this); return false; });
		}
	}
	
	var closeMsg = "To close this image and return to your previous view,  press \u201Cx\u201D or click anywhere on the page.";
	
	var objBody = d.getElementsByTagName("BODY")[0];
	
	var objOverlay = createElement("div","lightboxOverlay","","","","","","Click anywhere to close the enlarged image");
	eventClose(objOverlay);
	objBody.insertBefore(objOverlay, objBody.firstChild);

	var objLightbox = createElement("div","lightbox");
	objLightbox.id = "lightbox";
	objOverlay.appendChild(objLightbox);

	var objImage = createElement("img","lightboxImage");
	objLightbox.appendChild(objImage);
	
	var objLightboxDetails = createElement("div","lightboxDetails");
	objLightbox.appendChild(objLightboxDetails);

	var objCaption = createElement("div","lightboxCaption");
	objLightboxDetails.appendChild(objCaption);

	var objKeyboardMsg = createElement("p","lightboxKeyboardMsg");
	eventClose(objKeyboardMsg);
	objKeyboardMsg.appendChild(d.createTextNode(closeMsg));
	objLightboxDetails.appendChild(objKeyboardMsg);
	
	var arrPageSize = getPageSize();
	var arrPageScroll = getPageScroll();

	if(loadingImg!=""){
		var imgPreloader = new Image();
		imgPreloader.onload=function(){
			var objCloseButton = closeButton(loadingImg,"lightboxLoadingImage","Loading");
			eventClose(objCloseButton);
			addEvent(imgPreloader,"load",function(){});
			return false;
		}
		imgPreloader.src = loadingImg;
	}
	
	if(closeImg!=""){
		var imgPreloadCloseButton = new Image();
		imgPreloadCloseButton.onload=function(){
			var objCloseButton = closeButton(closeImg,"lightboxCloseButton","Close")
			objLightbox.appendChild(objCloseButton);
			return false;
		}
		imgPreloadCloseButton.src = closeImg;
	}
	
	addCSS();
}

function closeButton(src,i,v){
	if(v=="Close") { w=10; h=10; }
	else { w=""; h=""; } 
	var objCloseButton = createElement("img",i,"",src,v,w,h,v+" the enlarged image");
	eventClose(objCloseButton);
	return objCloseButton;
}

function eventClose(nObj){
	addEvent(nObj,"click",hideLightbox);
}

function hideShowAds(){
	var ads = ["ldbdHolder","lugHolder","skyRHolder","boxRHolder","b1","b2","b3","b4",];
	for(x=0;ads.length>x;x++){
		if(d.getElementById(ads[x])){
			d.getElementById(ads[x]).style.display = (d.getElementById(ads[x]).style.display!="none") ? "none" : "block";
		}
	}
}

function addCSS(){
	var objCSS = createElement("link","","","/v5/styles/lightbox.css");
	d.getElementsByTagName("HEAD")[0].appendChild(objCSS);	
}

addEvent(window,"load",initLightbox);