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


//
// getPageScroll()
// Returns array with x,y page scroll values.
// Core code from - quirksmode.org
//
function getPageScroll(){
	var yScroll;
	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}
	arrayPageScroll = new Array('',yScroll) 
	return arrayPageScroll;
}



//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//
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){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		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) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}
	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}

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


//
// showLightbox()
//
function showLightbox(obj,width,height)
{
	var objOverlay = $('overlay');
	var objLightbox = $('lightbox');
	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();
	
	// Show overlay at full height
	objOverlay.style.height = (arrayPageSize[1] + 'px');
	objOverlay.anim.custom(0,.8);

	
	objLightbox.innerHTML = "";
	objLightbox.appendChild(obj);
	
	
	var lightboxTop = arrayPageScroll[1] + ((arrayPageSize[3] - 35 - height) / 2);
	var lightboxLeft = ((arrayPageSize[0] - 40 - width) / 2);
		
	objLightbox.style.top = (lightboxTop < 0) ? "0px" : lightboxTop + "px";
	objLightbox.style.left = (lightboxLeft < 0) ? "0px" : lightboxLeft + "px";
	

	
	setTimeout(objLightbox.anim.toggle.bind(objLightbox.anim),500);

	return false;
}



function hideLightbox()
{
	$('overlay').anim.custom(.8,0);
	objLightbox = $('lightbox');
	setTimeout(objLightbox.anim.toggle.bind(objLightbox.anim),200);
}



function initLightbox()
{
	
	if (!document.getElementsByTagName){ return; }
	var anchors = document.getElementsByTagName("a");

	var objBody = document.getElementsByTagName("body").item(0);
	
	// create overlay div and hardcode some functional styles (aesthetic styles are in CSS file)
	var objOverlay = $('overlay');
	objOverlay.style.position = 'absolute';
	objOverlay.style.top = '0';
	objOverlay.style.left = '0';
	objOverlay.style.zIndex = '90';
 	objOverlay.style.width = '100%';
	
	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();
	
	// create overlay animation and hide it (Added my Sean McB)
	objOverlay.anim = new fx.Opacity(objOverlay, {duration: 400});
	objOverlay.anim.hide();

	
	// create lightbox div, same note about styles as above
	var objLightbox = $('lightbox');
	objLightbox.style.position = 'absolute';
	objLightbox.style.zIndex = '100';
	
	// create lightbox animation and initially hide
	objLightbox.anim = new fx.Height(objLightbox, {duration: 400});
	objLightbox.anim.hide();
}
