/**
 * @author jhendrickson
 */

function InitGalleryBox(){
	var gallery = $('a[rel=\'gallerybox\']');
	
	gallery.bind('click', function(){
		showGalleryBox(this);
		return(false);
	});
}

function showGalleryBox(objLink){
	var objOverlay = $('<div id="overlay-box"></div>');
	var objImage = $('<img />');
	var objDisplayBox = $('<div id="display-box"></div>');
	var apd = getPageSize();
	var objImgPreload = new Image();
	var imageLoaded = false;
	
	objOverlay.css({
		backgroundColor: '#000',
		width: apd.pageWidth + 'px',
		height: apd.pageHeight + 'px',
		filter: 'alpha(opacity=60)',
		'-moz-opacity': '0.6',
		opacity: '0.6',
		position:'absolute',
		top: '0',
		left: '0',
		display:'block'
	});
	
	// LOAD THE IMAGE
	objImgPreload.src = $(objLink).attr('href');
	
	objImgPreload.onload = function(){
		objDisplayBox.css({
			backgroundColor: '#FFF',
			width: objImgPreload.width + 'px',
			height: objImgPreload.height + 'px',
			position: 'absolute',
			top: ((apd.pageHeight/2) - (objImgPreload.height/2)) + 'px',
			left: ((apd.pageWidth/2) - (objImgPreload.width/2)) + 'px',
			display: 'none',
			border: '10px solid #ccc'
		});
	
		// SET THE IMAGE
		objImage.attr('src',objImgPreload.src);
		objDisplayBox.html(objImage);
		
		// A small pause between the image loading and displaying is required with IE,
		// this prevents the previous image displaying for a short burst causing flicker.
		if (navigator.appVersion.indexOf("MSIE")!=-1){
			pause(250);
		}
		
		// HIDE ANY SELECT BOXES
		$('select').css('display','none');
		
		// UPDATE ANY OVERFLOW AUTO DIV's
		$('#content-panel').css('overflow-y','hidden');
		
		$('body').append(objOverlay);
		$('body').append(objDisplayBox);
		objDisplayBox.fadeIn('slow');
		
		// EVENT BINDINGS
		objOverlay.bind('click', function(){ closeGalleryBox(); });
	}
}

// pause(numberMillis)
// Pauses code execution for specified time. Uses busy code, not good.
// Code from http://www.faqts.com/knowledge_base/view.phtml/aid/1602
//
function pause(numberMillis) {
	var now = new Date();
	var exitTime = now.getTime() + numberMillis;
	while (true) {
		now = new Date();
		if (now.getTime() > exitTime)
			return;
	}
}

function closeGalleryBox(){
	$('#overlay-box').remove();
	$('#display-box').remove();
	
	// SHOW ANY SELECT BOXES
	$('select').css('display','inline');
	
	// UPDATE ANY OVERFLOW AUTO DIV's
	$('#content-panel').css('overflow-y','auto');
}

