/**
 * @author smnh
 */
var LightBox = new function() {
	var userAgent = navigator.userAgent;
	var that = this;
	var $lightBox;
	this.center;

	var $lightBoxShadow = $("<div id='lightBoxShadow'></div>");
	$lightBoxShadow.bind("click", closeLightBox);
	$lightBoxShadow.css({
		position:			"absolute",
		top:				"0px",
		left:				"0px",	
		backgroundColor:	"#000000",
		opacity:			0,
		display:			"none",
		zIndex:				99
	});
	
	$(function(){
		$("body").append($lightBoxShadow);
	});
	
	this.viewLightBox = function(_$lightBox, params) {
		$lightBox = _$lightBox;
		
		var pageScrollDim = getPageScrollDimensions();
		var pageClientDim = getViewPortDimensions();
		var pageScrollPos = getPageScrollPosition();
		
		var center = {
			left: pageScrollPos.left + parseInt(pageClientDim.width / 2, 10),
			top: pageScrollPos.top + parseInt(pageClientDim.height / 2, 10)
		};
		that.center = center;
		
		var shadowWidth = pageScrollDim.width > pageClientDim.width ? pageScrollDim.width : pageClientDim.width;
		//var shadowHeight = pageScrollDim.height > pageClientDim.height ? pageScrollDim.height : pageClientDim.height; 
		
		var cssObj = {
			width:		shadowWidth+"px",
			//height:		shadowHeight+"px",
			// For breakfast project only!
			height:		$(".stickyFooterWrapper").outerHeight(true) + "px",
			display:	"block"
		};
		$lightBoxShadow.css(cssObj);
		
		var top = 0;
		if (params && params.verticalAlignCenter) {
			top = (center.top - parseInt($lightBox.outerHeight()/2,10));
		}
		$lightBoxShadow.animate({opacity:"0.5"},function(){
			$lightBox.css({
				top: 		top + "px",
				display:	"block"
			});
			if (params && params.callback) {
				params.callback();
			}
		});
	}
	
	this.closeLightBox = closeLightBox;
	function closeLightBox() {
		$lightBox.css("display","none");
		$lightBoxShadow.animate({opacity:0},"normal",function(){
			$lightBoxShadow.css("display","none");
		});
	}
	
	function getPageScrollDimensions() {
		var offsetWidth = document.body.offsetWidth;
		var offsetHeight = document.body.offsetHeight;
		return {width:offsetWidth, height:offsetHeight};
	}
	
	function getViewPortDimensions() {
		isOpera = /Opera/.test(userAgent);
		var viewPortWidth, viewPortHeight;
		if (!isOpera) {
			viewPortWidth = document.documentElement.clientWidth;
			viewPortHeight = document.documentElement.clientHeight;
		}
		else {
			viewPortWidth = document.body.clientWidth;
			viewPortHeight = document.body.clientHeight;
		}
		return {width:viewPortWidth, height:viewPortHeight};
	}
	
	function getPageScrollPosition() {
		var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;
		var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
		return {left:scrollLeft, top:scrollTop};
	}
}