function hideLightbox_div(){
	  $j('#overlay_div').hide();
	  $j('#lightbox_div').hide();
	  $j('#lightboxDiv_div').html('');
	  $j("select").show();
	  document.onkeypress = '';
	  return false;
}

$j(document).ready(function($){
  var loadingImage = '/images/lightbox/loading.gif';		
  var closeButton = '/images/close2.jpg';		
  function getPageScroll_div(){
	  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;
	  return new Array('',yScroll);
  }
  function getPageSize_div(){
	  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;
	  }	
	  if(yScroll < windowHeight) pageHeight = windowHeight;
	  else pageHeight = yScroll;
	  if(xScroll < windowWidth) pageWidth = windowWidth;
	  else pageWidth = xScroll;	
	  return new Array(pageWidth,pageHeight,windowWidth,windowHeight);
  }
  function pause(numberMillis) {
	  var exitTime = new Date().getTime() + numberMillis;
	  while( true )
		  if ((new Date()).getTime() > exitTime) return;
  }
  function getKey(e) {
	  if (e == null) keycode = event.keyCode;
	  else keycode = e.which;
	  key = String.fromCharCode(keycode).toLowerCase();
  }
  function listenKey(){	$(document).bind("keypress", getKey); }
  
  $("a[rel=lightbox_div]").bind("click",function(){
    var objOverlay = $('#overlay_div');
	  var objLightbox = $('#lightbox_div');
	  var objCaption = $('#lightboxCaption_div');
	  var objDiv = $('#lightboxDiv_div');
	  var objLoadingImage = $('#loadingImage_div');
	  var objLightboxDetails = $('#lightboxDetails_div');
	  var arrayPageSize = getPageSize_div();
	  var arrayPageScroll = getPageScroll_div();
	  
	  if (objLoadingImage.length>0) {
	    var img_top = arrayPageScroll[1] + ((arrayPageSize[3] - 35 - (objLoadingImage.height()||0)) / 2);
	    var img_left = (arrayPageSize[0] - 20 - (objLoadingImage.width()||0)) / 2;
	    objLoadingImage.css({"top":img_top,"left":img_left}).show();
	  }
	  objOverlay.height(arrayPageSize[1]).show();
	  var str_divid = $(this).attr('href');
	  var int_pindex = str_divid.indexOf( "#" );
	  str_divid = str_divid.substring( int_pindex , str_divid.length ).replace("#", "");
	  var obj_div = $( "#"+str_divid );
	  if( obj_div.length > 0 )	{
	    var width = obj_div.width()||0;
	    var height = obj_div.height()||0;
		  var lightboxTop = arrayPageScroll[1] + ((arrayPageSize[3] - 35 - height) / 2);
		  var lightboxLeft = ((arrayPageSize[0] - 20 - width) / 2);
		  objLightbox.css({"top": ((lightboxTop<0)?0:lightboxTop),"left": ((lightboxLeft<0)?0:lightboxLeft),"width":width});
		  objDiv.width(width);
		  objLightboxDetails.width(width);
		  obj_div.children().clone(true).appendTo(objDiv);
		  if(objLink.attr('title')) objCaption.html(objLink.attr('title')).show();
		  else objCaption.hide();		
		  if (navigator.appVersion.indexOf("MSIE")!=-1) pause(250);
		  if (objLoadingImage.length>0) objLoadingImage.hide();
		  $("select[rel!=nohide]").hide();
		  objLightbox.show();
		  objLightbox.focus();
		  objOverlay.css("height",((getPageSize_div()[1]) + 'px'));
		  listenKey();
	  }
	  return false;
  });					
  											
  var objOverlay = $.create("div", {"id":"overlay_div"}).css({"display":"none","position":"absolute", "top":"0px", "left":"0px", "z-index":90, "width":"100%"}).bind("click",hideLightbox_div).hide();
  var arrayPageSize = getPageSize_div();
  var arrayPageScroll = getPageScroll_div();
  var imgPreloader = new Image();
  imgPreloader.onload=function(){
	  var objLoadingImageLink = $.create("a", {"href":'#'}).bind("click",hideLightbox_div);
	  var objLoadingImage = $.create("img", {'id':'loadingImage_div', "src":loadingImage}).css({"position":"absolute", "z-index":150});
	  objLoadingImageLink.append(objLoadingImage);
	  objOverlay.append(objLoadingImageLink);
	  imgPreloader.onload=function(){};	//	clear onLoad, as IE will flip out w/animated gifs
	  return false;
  }
  imgPreloader.src = loadingImage;
  // create lightbox div, same note about styles as above
  var objLightbox = $.create("div", {'id':'lightbox_div'}).css({"display":"none",'position':'absolute', 'z-index':100}).hide();
  var objDiv = $.create("div", {'id':'lightboxDiv_div'});
  var objLink = $.create("a"); //, {'href':'#', 'title':'Click to close'}).bind("click",hideLightbox_div);
  var imgPreloadCloseButton = new Image();
  imgPreloadCloseButton.onload=function(){
	  //objLink.append($.create("img", {'id':'closeButton_div',"src":closeButton}).css({'position':'absolute','z-index':200}));
	  return false;
  }
  imgPreloadCloseButton.src = closeButton;
  var objLightboxDetails = $.create("div", {'id':'lightboxDetails_div'});
  var objCaption = $.create("div",{'id':'lightboxCaption_div'}).hide();
	
  $("body").prepend(objOverlay);
  objOverlay.after( objLightbox );
  objLightbox.append(objDiv);
  objLightbox.append(objLink);
  objLightbox.append(objLightboxDetails);
  objLightboxDetails.append(objCaption);
  hideLightbox_div();
});