var GalleryItem = BaseObject.extend( {

	initialize: function( options )
	{
		this.parent( options );
	},
	
	bind: function( ) 
	{
		this.options.container.addEvent( 'mouseover', this.mouseEnter );
		this.options.container.addEvent( 'mouseleave', this.mouseLeave );
		this.options.container.addEvent( 'click', this.clicked.bind( this ) );
	},
	
	clicked: function( event ) {
		// - virtual function
	},
	
	mouseEnter: function( event ) {
		
		this.getFirst( ).getChildren( ).each( function( element ) {

			if ( element.getFirst( ) != null )
			{
				element = element.getFirst( );
			}
			
			if ( ! element.getProperty( 'src' ).contains( '_sel.gif' ) )
			{
				element.setProperty( 'src', element.getProperty( 'src' ).replace( '.gif', '_sel.gif' ) );
			}
			
			if ( ! element.getProperty( 'src' ).contains( '_sel.jpg' ) )
			{
				element.setProperty( 'src', element.getProperty( 'src' ).replace( '.jpg', '_sel.jpg' ) );
			}
		
		} );
	},
	
	mouseLeave: function( event ) {
		
		this.getFirst( ).getChildren( ).each( function( element ) {
				
			if ( element.getFirst( ) != null )
			{
				element = element.getFirst( );
			}
			
			if ( element.getProperty( 'src' ).contains( '_sel.gif' ) )
			{
				element.setProperty( 'src', element.getProperty( 'src' ).replace( '_sel.gif', '.gif' ) );
			}
			
			if ( element.getProperty( 'src' ).contains( '_sel.jpg' ) )
			{
				element.setProperty( 'src', element.getProperty( 'src' ).replace( '_sel.jpg', '.jpg' ) );
			}
		
		} );
	}

} );

var PictureGalleryItem = GalleryItem.extend( {
										   
	initialize: function( options )
	{
		this.parent( options );
	},
	
	clicked: function( event ) {
		
		this.parent( event );
		
		var mainPicContainer = $$( 'img.mainPhoto' );
				
		//mainPicContainer.setProperty( 'src', '/lib/images/gallery/' + this.getParameter( 'filePath' ) );
		mainPicContainer.setProperty( 'src', this.getParameter( 'filePath' ) );
		imgsrc = element.getProperty( 'src' ).replace( 'http://noddycms', '' );
		
		alert(mainPicContainer.getProperty( 'src'));
		
		$( 'pictureNameContainer' ).setText( this.options.container.getChildren( ).filterByClass( 'galleryItemTitleContainer' ).getText( ) );
		$( 'pictureDescriptionContainer' ).setText( this.options.container.getChildren( ).filterByClass( 'galleryItemDescriptionContainer' ).getText( ) );
		
	}

} );

var MovieGalleryItem = GalleryItem.extend( {
										   
	initialize: function( options )
	{
		this.parent( options );
	},
	
	clicked: function( event ) {
		
		this.parent( event );
		
		var videoPlayerContainer = $( 'videoPlayerContainer' );
		var titleContainer = this.options.container.getChildren( ).filterByClass( 'galleryItemTitleContainer' );
		var descriptionContainer = this.options.container.getChildren( ).filterByClass( 'galleryItemDescriptionContainer' );
			
		$$('div.activeTitleContainer' ).setText( titleContainer.getText( ) );
		$$('div.activeDescriptionContainer' ).setText( descriptionContainer.getText( ) );
		
		var newVideo = new Element( 'div' )
			.setProperty( 'id', 'videoPlayer' )
			.setProperty( 'class', 'flashmovie right' )
			.setProperty( 'rel', 'filename:video_primary,' + this.options.container.getProperty( 'rel' ) );

		videoPlayerContainer.empty( );
		
		newVideo.injectInside( videoPlayerContainer );
		
		var flashManager = new FlashManager( );
		flashManager.renderObjects( );
		
	}

} );

var GalleryManager = FlashManager.extend( {

	initialize: function( options ) 
	{
		this.galleryItems = new Array( );
		
		var movieGalleryItemContainers = $$( 'div.movieGalleryItemContainer' );
		
		for( var i = 0; i != movieGalleryItemContainers.length; i++ )
		{
			var galleryItem = new MovieGalleryItem( {
				
				container: movieGalleryItemContainers[ i ]
			
			} );
			
			this.galleryItems.push( galleryItem );
									
		}
		
		var pictureGalleryItemContainers = $$( 'div.pictureGalleryItemContainer' );
		
		for( var i = 0; i != pictureGalleryItemContainers.length; i++ )
		{
			var galleryItem = new PictureGalleryItem( {
				
				container: pictureGalleryItemContainers[ i ]
			
			} );
			
			this.galleryItems.push( galleryItem );
									
		}
	},
	
	setup: function( ) 
	{
		for( var i = 0; i != this.galleryItems.length; i++ )
		{
			this.galleryItems[ i ].bind( );	
		}
	}

} );

GalleryManager.implement( new Options );

window.addEvent( 'domready', function( ) {
				
	var galleryManager = new GalleryManager( );
	galleryManager.setup( );
	
} );