var	lightbox,
	lightbox_main,
	lightbox_background,
	lightbox_animation1,
	lightbox_animation2,
	lightbox_animation3,
	lightbox_animation4,
	lightbox_active,
	lightbox_url;
	

function lightbox_display( data )
{
	lightbox_main.write( data );
}
	
/**
 *
 */
function LightBox( name )
{
	this.name			= name;
	this.width			= null;
	this.height			= null;
	this.closeButton	= false;
	lightbox_active		= false;
	this.widthSpacing	= 200;
	this.heightSpacing	= 60;
	
	lightbox_main		= new Layer( 'lightbox_main' );
	lightbox_background	= new Layer( 'lightbox_background' );
	lightbox_animation1	= new Animation( 'lightbox_animation1', 'lightbox_background' );
	lightbox_animation2	= new Animation( 'lightbox_animation2', 'lightbox_main' );
	lightbox_animation3	= new Animation( 'lightbox_animation3', 'lightbox_main' );
	lightbox_animation4	= new Animation( 'lightbox_animation4', 'lightbox_main' );
	
	
	/**
	 * Opens a lightbox
	 *
	 */
	this.open = function( url, width, height, closeButton )
	{
		lightbox_active 	= true;
		lightbox_url		= url;
		this.width			= width;
		this.height			= height;
		this.closeButton	= closeButton ? closeButton : false;
		lightbox			= this;
		
		lightbox_background.construct();
		
		if ( ie )
		{
			window.attachEvent( 'onresize', this.reposition );
			window.attachEvent( 'onscroll', this.reposition );
		}
		else
		{
			window.onresize = this.reposition;
			window.onscroll = this.reposition;
		}
		
		lightbox_background.index( 500 );
		lightbox_background.moveX( lightbox_background.getBrowserLeft() );
		lightbox_background.moveY( lightbox_background.getBrowserTop() );
		lightbox_background.setWidth( lightbox_background.getBrowserWidth() );
		lightbox_background.setHeight( lightbox_background.getWindowHeight() );
		lightbox_background.layer.style.backgroundColor = '#000';
		lightbox_background.alpha( 0 );
		lightbox_background.show( true );
		
		lightbox_animation1.object = lightbox_background;
		lightbox_animation1.action = ALPHA;
		lightbox_animation1.destination = 70;
		lightbox_animation1.duration = 250;
		lightbox_animation1.onfinish = this.openMain;
		lightbox_animation1.start();
		
		lightbox_background.layer.onclick = this.close;
	}
	
	this.openMain = function()
	{
		if ( lightbox_active )
		{
			// construct the lightbox main layer
			lightbox_main.construct();
			lightbox_main.index( 5001 );
			lightbox_main.moveX( lightbox_main.getBrowserLeft() + lightbox_main.getBrowserWidth() / 2 );
			lightbox_main.moveY( lightbox_main.getBrowserTop() + lightbox_main.getWindowHeight() / 2 );
			lightbox_main.setWidth( 2 );
			lightbox_main.setHeight( 2 );
			lightbox_main.layer.style.backgroundColor = "#FFF";
			lightbox_main.alpha( 0 );
			lightbox_main.show( true );
			
			// set up the fade in of the black background
			lightbox_animation2.object = lightbox_main;
			lightbox_animation2.action = ALPHA;
			lightbox_animation2.destination = 100;
			lightbox_animation2.duration = 100;
			lightbox_animation2.start();
			
			lightbox_animation3.object = lightbox_main;
			lightbox_animation3.action = HEIGHT_CENTER; // (lightbox_main.getBrowserHeight() / 2) + (lightbox.height / 2)
			lightbox_animation3.destination = lightbox.height ? lightbox.height + 65 : lightbox_main.getWindowHeight() - lightbox.heightSpacing;
			lightbox_animation3.duration = 250;
			lightbox_animation3.start();
			lightbox_animation3.onfinish = function()
			{
				lightbox_animation4.object = lightbox_main;
				lightbox_animation4.action = WIDTH_CENTER; // (lightbox_main.getBrowserWidth() / 2) + (lightbox.width / 2)
				lightbox_animation4.destination = lightbox.width ? lightbox.width + 35 : lightbox_main.getBrowserWidth() - lightbox.widthSpacing;
				lightbox_animation4.duration = 150;
				lightbox_animation4.start();
				lightbox_animation4.onfinish = function()
				{
					src = '<iframe id="lightbox_frame" class="lbFrame" border="0" style="text-align:center;border:none;width:100%;height:' + (lightbox.height ? lightbox.height + 30 + 'px' : '100%') + ';" src="' + lightbox_url + '"></iframe>';
					
					if ( lightbox.height )
						src += '<div class="lbcloseBtn" style="text-align:right;padding-right:10px;"><span style="font-family: Arial, Helvetica, sans-serif;cursor:pointer;font-size:12px;padding-right:5px;" onclick="lightbox.close()">Close Window</span>';
					
					lightbox_main.write( src );
					// send( 'network', AJAX, lightbox_display, lightbox_url, '' );
				}
			}
		}
	}
	
	/**
	 * Closes a lightbox
	 *
	 */
	this.shutdown = function()
	{
		lightbox_active = false;
		
		lightbox_animation2.stop();
		lightbox_animation3.stop();
		lightbox_animation4.stop();
		
		lightbox_animation1.object = lightbox_background;
		lightbox_animation1.action = ALPHA;
		lightbox_animation1.destination = 0;
		lightbox_animation1.duration = 600;
		lightbox_animation1.start();
		
		lightbox_animation2.object = lightbox_main;
		lightbox_animation2.action = ALPHA;
		lightbox_animation2.destination = 0;
		lightbox_animation2.duration = 200;
		lightbox_animation2.start();
		
		lightbox_animation1.onfinish = function() { lightbox_background.show( false );lightbox_background.close(); };
		lightbox_animation2.onfinish = function() { lightbox_main.show( false );lightbox_main.close(); };
		
		if ( box.onclose )
			box.onclose();
	}
	
	this.close = this.shutdown;
	
	/**
	 * Repositions layers if the window changes
	 *
	 */
	this.reposition = function()
	{
		if ( lightbox_active )
		{
			x	= lightbox_main.getBrowserLeft();
			y	= lightbox_main.getBrowserTop();

			lightbox_background.move( lightbox_main.getBrowserLeft(), lightbox_main.getBrowserTop() );
			lightbox_background.setWidth( lightbox_background.getBrowserWidth() );
			lightbox_background.setHeight( lightbox_background.getWindowHeight() );

			lightbox_main.move(	lightbox.width ? x + (lightbox_main.getBrowserWidth() / 2) - (lightbox.width / 2) : x + (lightbox.widthSpacing / 2),
								lightbox.height ? y + (lightbox_main.getWindowHeight() / 2) - (lightbox.height / 2) : y + (lightbox.heightSpacing / 2)
								);
			lightbox_main.setWidth( lightbox.width ? lightbox.width + 35 : lightbox_main.getBrowserWidth() - lightbox.widthSpacing );
			lightbox_main.setHeight( lightbox.height ? 200 : lightbox_main.getWindowHeight() - (lightbox.heightSpacing * 2) );

			lightbox_animation3.destination = lightbox.height ? (lightbox_main.getWindowHeight() / 2) : lightbox_main.getWindowHeight() - lightbox.heightSpacing;
			lightbox_animation4.destination = lightbox.width ? (lightbox_main.getBrowserWidth() / 2) : lightbox_main.getBrowserWidth() - lightbox.widthSpacing;
		}
	}
}

var box;

function openLightbox( url, width, height )
{
	box = new LightBox( "box" );
	box.open( url, width, height );
}
