if( hq == undefined ) {
	var hq = {};
}

hq.lightbox2 = {
	
	$domObj : null,
	
	init : function() {
		console.group( 'lightbox::init' );
		
		var html = [];
		html[html.length] = "<div id='lightbox' style='display:none;' class='hidden'>";
		html[html.length] =   "<div id='lbShell'>";
		html[html.length] =     "<div id='closeLB' title='Close'></div>";
		html[html.length] =     "<table>";
		html[html.length] =       "<tr class='top'>";
		html[html.length] =         "<td class='left'></td>";
		html[html.length] =         "<td class='center'></td>";
		html[html.length] =         "<td class='right'></td>";
		html[html.length] =       "</tr><tr class='middle'>";
		html[html.length] =         "<td class='left'></td>";
		html[html.length] =         "<td class='center' id='lbBodyWrapper'></td>";
		html[html.length] =         "<td class='right'></td>";
		html[html.length] =       "</tr><tr class='bottom'>";
		html[html.length] =         "<td class='left'></td>";
		html[html.length] =         "<td class='center'></td>";
		html[html.length] =         "<td class='right'></td>";
		html[html.length] =       "</tr>";
		html[html.length] =     "</table>";
		html[html.length] =   "</div>";
		html[html.length] =   "<div id='lbBG'></div>";
		
		this.$domObj = $j( html.join('') ).appendTo( $j('body') );
		
		this.$domObj.find( '#lbBG' ).css( 'opacity', .8 );
		this.$domObj.find( '#closeLB' ).addClass( 'evtBound' ).click( toolbox.delegate( this.hide, this ) );
		
		$j( '#contentWrapper' ).bind( 'closeLB', toolbox.delegate( this.delayedClose, this ) );
		
		console.groupEnd();
	},
	
	update : function( content ) {
		console.group( 'lightbox::update' );
		
		this.$domObj.find( '#lbBodyWrapper' ).html( content );
		
		var width = this.$domObj.find( '#lbBodyWrapper > :first' ).attr( 'width' );
		
		this.$domObj.find( '#lbShell' ).width( width ? width + 'px' : 'auto' );
		
		console.groupEnd();
	},
	
	clear : function() {
		console.group( 'lightbox::clear' );
		
		this.$domObj.find( '#lbBodyWrapper' ).find( '.evtBound' ).unbind();
		this.$domObj.find( '#lbBodyWrapper' ).html( '' );
		
		console.groupEnd();
	},
	
	show : function() {
		console.group( 'lightbox::show' );
		this.$domObj.stop().removeClass( 'hidden' ).addClass( 'visible' ).show();
		this.$domObj.find('#lbBG').click(toolbox.delegate(this.hide, this));
		console.groupEnd();
	},
	
	hide : function() {
		console.group( 'lightbox::hide' );
		this.$domObj.stop().removeClass( 'visible' ).addClass( 'hidden' ).hide();
		console.groupEnd();
	},
	
	delayedClose : function( evt, evtElement ) {
		console.group( 'lightbox::delayedClose' );
		
		var delay = $j( evtElement ).attr( 'delay' );
		if( !delay ) {
			delay = 500000;
		}
		console.info( 'Delay = ' + delay + 'ms');
		
		this.$domObj.animate( { opacity : 1 }, delay, 'linear', toolbox.delegate( this.hide, this ) );
		console.groupEnd();
	},
	
	isVisible : function() {
		return this.$domObj.hasClass( 'visible' );
	}
	
};

