function LightBox()
{
	var tb_pathToImage = "/images/LightBox/loadingAnimation.gif";
	var imgLoader = new Image();// preload image
	imgLoader.src = tb_pathToImage;
	
	this.detectMacXFF = function(){
	    var userAgent = navigator.userAgent.toLowerCase();
        if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox')!=-1) {
            return true;
        }
	};
	
	this.getPageSize = function(){
		var de = document.documentElement;
		var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
		var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
		arrayPageSize = [w,h];
		return arrayPageSize;
	};
	
	this.parseQuery  =function(query){
		var Params = {};
		if ( ! query ) {return Params;}// return empty object
		var Pairs = query.split(/[;&]/);
		for ( var i = 0; i < Pairs.length; i++ ) {
			var KeyVal = Pairs[i].split('=');
			if ( ! KeyVal || KeyVal.length != 2 ) {continue;}
			var key = unescape( KeyVal[0] );
			var val = unescape( KeyVal[1] );
			val = val.replace(/\+/g, ' ');
			Params[key] = val;
		}
		return Params;
	};
	
	this.position = function(){
		if(TB_LEFT != null || TB_TOP != null)
		{
			if(TB_LEFT != null)
			{
				$("#TB_window").css({marginLeft: '0px', left: parseInt(TB_LEFT,10) + 'px', width: TB_WIDTH + 'px'});
			}
	
			if(TB_TOP != null)
			{
				if ( !(jQuery.browser.msie && jQuery.browser.version < 7)) { // take away IE6
					$("#TB_window").css({marginTop: '0px', top: parseInt(TB_TOP,10) + 'px'});
				}
				else
				{//IE6
					$("#TB_window").css({marginTop: '0px', top: parseInt((TB_HEIGHT / 2),10) + 'px'});
				}
			}
		}
		else
		{
			$("#TB_window").css({marginLeft: '-' + parseInt((TB_WIDTH / 2),10) + 'px', width: TB_WIDTH + 'px'});
				if ( !(jQuery.browser.msie && jQuery.browser.version < 7)) { // take away IE6
					$("#TB_window").css({marginTop: '-' + parseInt((TB_HEIGHT / 2),10) + 'px'});
				}	
		}
		
		if(TB_BORDER.toLowerCase() == 'false')
		{
			$("#TB_window").css({border: 'none'});
		}
	};
	
	this.remove = function(){
		$("#TB_window").fadeOut("fast",function(){
			$('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove();
			$("body").css("overflow","");
		});
		
		$("#TB_load").remove();
		if (typeof document.body.style.maxHeight == "undefined") {//if IE 6
			$("body","html").css({height: "auto", width: "auto"});
			$("html").css("overflow","");
		}
		
		document.onkeydown = "";
		document.onkeyup = "";
		
		return false;
	};
	
	this.hide = function(){
		this.remove();
	};
	
	this.loading = function(){
	    if(arguments.length>0 && arguments[0]==false)
	    {
	        $("#TB_window").css({display:"none"});
	    }
	    
        $("#TB_load").remove(); 
        $("#TB_ajaxContent>div").hide();
        $("body").append("<div id='TB_load'><img src='"+imgLoader.src+"' /></div>");//add loader to the page
	    $('#TB_load').show();
	};
	
	this.loaded = function(){
	    $("#TB_window").css({display:"block"});
	    $("#TB_load").remove();
        $("#TB_ajaxContent>div").fadeIn(500);
	};
	
	this.autoSize = function(){
	    TB_WIDTH = $("#TB_ajaxContent>div").width();
	    $("#TB_ajaxContent").width(TB_WIDTH);
	    TB_HEIGHT = $("#TB_ajaxContent>div").height();
	    $("#TB_ajaxContent").height(TB_HEIGHT);
	    this.position();
	};
	
	this.resizeTo = function(){
	    TB_WIDTH = arguments[0] || 630;
	    $("#TB_ajaxContent,#TB_ajaxContent>div").width(TB_WIDTH);
	    TB_HEIGHT = arguments[1] || 430;
	    $("#TB_ajaxContent,#TB_ajaxContent>div").height(TB_HEIGHT);
	    this.position();
	};
	
	this.load = function(){
	    var url=arguments[0];
	    url = url += "&random=" + (new Date().getTime());
	    
	    var sendData = {};
	    var callback;
	    var ShowFrame = true;
	    
	    if(typeof(arguments[1])=="function")
	    {
	        callback = arguments[1];
	    }
	    else
	    {
	        sendData = arguments[1];
	        callback = arguments[2];
	    }
	    
	    if(typeof(arguments[arguments.length-1])=="boolean")
	    {
	        ShowFrame = arguments[arguments.length-1];
	    }

	    this.loading(ShowFrame);

	    var currInstance = this;
	    
	    $.get(url , sendData , function(data){//to do a post change this load method
			currInstance.position();
			currInstance.loaded();
			callback(data);
		});
	};
	
	this.html = function (){
	    if(arguments.length==0)
	    {
	        return $("#TB_ajaxContent>div").html();
	    }
	    else
	    {
	        $("#TB_ajaxContent>div").html(arguments[0]);
	    }
	};
	
	this.body = function(){
	    return $("#TB_ajaxContent>div");
	}
	
	
	
	//helper functions below
	this.showIframe = function(){
		$("#TB_load").remove();
		$("#TB_window").css({display:"block"});
	};
	
	//function called when the user clicks on a LightBox link
	this.show = function(url){
	try {
		if (typeof document.body.style.maxHeight === "undefined") {//if IE 6
			$("body","html").css({height: "100%", width: "100%"});
			$("html").css("overflow","hidden");
			if (document.getElementById("TB_HideSelect") === null) {//iframe to hide select elements in ie6
				$("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");
				$("#TB_overlay").click(this.remove);
			}
		}else{//all others
			if(document.getElementById("TB_overlay") === null){
				$("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");
				$("#TB_overlay").click(this.remove);
			}
		}
		
		if(this.detectMacXFF()){
			$("#TB_overlay").addClass("TB_overlayMacFFBGHack");//use png overlay so hide flash
		}else{
			$("#TB_overlay").addClass("TB_overlayBG");//use background and opacity
		}
		
		$("body").append("<div id='TB_load'><img src='"+imgLoader.src+"' /></div>");//add loader to the page
		$('#TB_load').show();//show loader

		var baseURL;
	   if(url.indexOf("?")!==-1){ //ff there is a query string involved
			baseURL = url.substr(0, url.indexOf("?"));
	   }else{ 
	   		baseURL = url;
	   }
	   
		if(true){//code to show html
			
			var queryString = url.replace(/^[^\?]+\??/,'');
			var params = this.parseQuery( queryString );

			TB_LEFT = params['left'] || null;
			TB_TOP = params['top'] || null;
			TB_BORDER = params['border'] || 'true';
			
			BGTran=(params['transparent'] == 'true');
			if(BGTran) $("#TB_window").css({"background-color":"transparent"});
			
			TB_BgOpacity = params['opacity'] || null;
			
			TB_SPACE = params['space'] || 0;
			
			if(typeof(params['modal'])=='undefined')
			{
				params['modal']='false';
			}
			
			if(TB_BgOpacity != null)
			{
				var BgOpacityValue = parseFloat(TB_BgOpacity);
				$(".TB_overlayBG").css("filter", "alpha(opacity=" + BgOpacityValue * 10 + ")").css("-moz-opacity", BgOpacityValue).css("opacity", BgOpacityValue);
			}
			
			
			if(params['modal'].toLowerCase() == "true")
			{
				TB_HIDESCROLLBAR = params['scrollbar'] || 'false';
				if(TB_HIDESCROLLBAR.toLowerCase()=='false')
				{
					$("body").css("overflow","hidden");
				}
				
				TB_WIDTH = (params['width']*1) + parseInt(TB_SPACE,10)*2  || 630; //defaults to 630 if no paramaters were added to URL
				TB_HEIGHT = (params['height']*1) + parseInt(TB_SPACE,10)*2  || 430; //defaults to 430 if no paramaters were added to URL
				ajaxContentW = TB_WIDTH - parseInt(TB_SPACE,10)*2;
				ajaxContentH = TB_HEIGHT - parseInt(TB_SPACE,10)*2 ;
			}
			else
			{
				TB_WIDTH = (params['width']*1)  || 630; //defaults to 630 if no paramaters were added to URL
				TB_HEIGHT = (params['height']*1) || 430; //defaults to 430 if no paramaters were added to URL
				ajaxContentW = TB_WIDTH ;
				ajaxContentH = TB_HEIGHT;
			}

			
			
			if(url.indexOf('TB_iframe') != -1){// either iframe or ajax window		
					urlNoQuery = url.split('TB_');
					$("#TB_iframeContent").remove();
					if(params['modal'].toLowerCase() != "true"){//iframe no modal
						$("#TB_window").append("<iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='this.showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;' > </iframe>");
					}else{//iframe modal
					$("#TB_overlay").unbind();
						$("#TB_window").append("<iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='this.showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;'> </iframe>");
					}
			}else{// not an iframe, ajax
					if($("#TB_window").css("display") != "block"){
						if(params['modal'] != "true"){//ajax no modal
						$("#TB_window").append("<div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px'></div>");
						}else{//ajax modal
						$("#TB_overlay").unbind();
						$("#TB_window").append("<div id='TB_ajaxContent' class='TB_modal' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'></div>");
						$("#TB_ajaxContent.TB_modal").css("padding", parseInt(TB_SPACE,10) + 'px');	
					
						}
					}else{//this means the window is already up, we are just loading new content via ajax
						$("#TB_ajaxContent")[0].style.width = ajaxContentW +"px";
						$("#TB_ajaxContent")[0].style.height = ajaxContentH +"px";
						$("#TB_ajaxContent")[0].scrollTop = 0;
					}
			}
					
				if(url.indexOf('LightBox') != -1){	
					$("#TB_ajaxContent").append($('#' + params['id']).children());
					$("#TB_window").unload(function () {
						$('#' + params['id']).append( $("#TB_ajaxContent").children() ); // move elements back when you're finished
					});
					this.position();
					$("#TB_load").remove();
					$("#TB_window").css({display:"block"}); 
				}else if(url.indexOf('TB_iframe') != -1){
					this.position();
					if($.browser.safari){//safari needs help because it will not fire iframe onload
						$("#TB_load").remove();
						$("#TB_window").css({display:"block"});
					}
				}else{
					$("#TB_ajaxContent").load(url += "&random=" + (new Date().getTime()),function(){//to do a post change this load method
						this.position();
						$("#TB_load").remove();
						this.init("#TB_ajaxContent a.LightBox");
						$("#TB_window").css({display:"block"});
					});
				}
			
		}

		if(params['modal'].toLowerCase() != 'true'){
			document.onkeyup = function(e){ 	
				if (e == null) { // ie
					keycode = event.keyCode;
				} else { // mozilla
					keycode = e.which;
				}
				if(keycode == 27){ // close
					var oLightBox = new LightBox();
					oLightBox.remove();
				}	
			};
		}
		
	} catch(e) {
		//nothing here
	}
	};
	
	//add LightBox to href & area elements that have a class of .LightBox
	this.init = function(domChunk){
		$(domChunk).click(function(){
		var a = this.href || this.alt;

		var oLightBox = new LightBox();
		
		oLightBox.show(a);
		this.blur();

		return false;
		});
	};	
}
    
function showLightBox(divID, width, height) {
    lightBox.show("#LightBox?id=" + divID + ";border=false;opacity=0.7;modal=true;width="+width+";height="+height)
}

function showLightBox2(divID, width, height) {
    lightBox.show("#LightBox?id=" + divID + ";border=false;opacity=0.7;modal=false;width="+width+";height="+height)
}

lightBox=new LightBox();
