Epson.Nuggets =
{
	setup: function()
	{
		jQuery( this ).bind( 'click', Epson.Nuggets.open );
	},

	open: function(e)
	{
		var url = this.className.match( /nl-url-([^\s]+)/ );
		if ( url ) url = url[1];
		else return;

		var nugget_layer = jQuery( '<div id="NuggetLayer" class="nuggetGalleryLayer"></div>' ).css( { height:0, width:0, margin:0, opacity:0 } );

		jQuery( '#Container' ).append( nugget_layer ).find( '#NuggetLayer' ).load( url, Epson.Nuggets.delegateResult );

		nugget_layer.animate( { height:480, width:940, marginTop:-241, marginLeft:-470, opacity:1 }, 500, 'swing' );

		e.preventDefault();
	},

	close: function(e)
	{
		jQuery( '#NuggetLayer' ).animate( { opacity:0 }, 300, 'swing', function() { jQuery( '#NuggetLayer' ).remove() } );

		e.preventDefault();
	},
	
	delegateResult: function()
	{
		jQuery( '#NuggetLayer' ).append( jQuery( '<div class="close"><a href="#" class="buttonBlueClose"><span>Close</span></a></div>' ) );

		jQuery( '#NuggetLayer .close' ).bind( 'click', Epson.Nuggets.close );
		
		// nugget specific code
		if ( jQuery( '#NuggetLayer .nuggetGallery' ).length )
		{
			// set up thumbnail events
			jQuery( '#NuggetLayer .nuggetGallery ul a' ).each( function()
			{
				jQuery( this ).bind( 'click', Epson.Nuggets.Gallery.loadItem )
			} );
			jQuery( '#NuggetLayer .buttonBluePrevious' ).bind( 'click', Epson.Nuggets.Gallery.loadPreviousItem );
			jQuery( '#NuggetLayer .buttonBlueNext' ).bind( 'click', Epson.Nuggets.Gallery.loadNextItem );

			// set up thumnbail toggle
			jQuery( '#NuggetLayer .nuggetGallery .nuggetGalleryPane' ).toggle( function()
			{
				jQuery( '#NuggetLayer .nuggetGallery .nuggetGalleryPane' ).animate( { height:105 }, 300, 'swing' );
			},
			function()
			{
				jQuery( '#NuggetLayer .nuggetGallery .nuggetGalleryPane' ).animate( { height:20 }, 300, 'swing' );
			} );
		}

	},

	Gallery:
	{
		loadItem: function(e)
		{
			var url = jQuery( this ).find( 'img' ).attr( 'class' ).match( /nl-image-([^\s]+)/ );
			if ( url ) url = url[1];
			else return;

			// update image
			jQuery( '#NuggetLayer .nuggetGalleryImage' ).attr( { src:url } )

			// display selection
			jQuery( this ).parents( 'ul' ).find( 'li' ).removeClass( 'selected' );
			jQuery( this ).parents( 'li' ).addClass( 'selected' );

			e.stopPropagation();
			e.preventDefault();
		},

		loadNextItem: function(e)
		{
			// get next item
			var selected = jQuery( '#NuggetLayer ul li.selected' ).next().length ? jQuery( '#NuggetLayer ul li.selected' ).next() : jQuery( '#NuggetLayer ul li:first' );

			var url = selected.find( 'img' ).attr( 'class' ).match( /nl-image-([^\s]+)/ );
			if ( url ) url = url[1];
			else return;

			// update image
			jQuery( '#NuggetLayer .nuggetGalleryImage' ).attr( { src:url } )

			// display selection
			jQuery( '#NuggetLayer ul li' ).removeClass( 'selected' );
			selected.addClass( 'selected' );

			e.preventDefault();
		},

		loadPreviousItem: function(e)
		{
			// get next item
			var selected = jQuery( '#NuggetLayer ul li.selected' ).prev().length ? jQuery( '#NuggetLayer ul li.selected' ).prev() : jQuery( '#NuggetLayer ul li:last' );

			var url = selected.find( 'img' ).attr( 'class' ).match( /nl-image-([^\s]+)/ );
			if ( url ) url = url[1];
			else return;

			// update image
			jQuery( '#NuggetLayer .nuggetGalleryImage' ).attr( { src:url } )

			// display selection
			jQuery( '#NuggetLayer ul li' ).removeClass( 'selected' );
			selected.addClass( 'selected' );

			e.preventDefault();
		}
	}
}
