window.addEvent(
	 'domready'
	 , function( ) {
		if( isset( 'slidesChef' ) ) {
			new SlidesChef( $( 'SplashChef' ) )
				.load( slidesChef.sort(function() {return 0.5 - Math.random()}), 'resource/image/_chefslides/' )
				
			$( 'SplashChef' ).getFirst(  ).dispose( );
			$( 'SplashChef' ).addClass( 'loaded' );
			
		}
	  }
);

var SlidesChef = new Class( {
	
	
	  slidesChef: []
	, timer: null
	, container: null
	, lastBtn: null
	
	, initialize: function( container ) {
		this.container = container;
		this.slidesChef = new CycleIterator( );
	  }
	
	, addSlide: function( slide ) {
		this.slidesChef.add( slide );
	  }
	
	, load: function( files, path ) {
		var slidesChef = new Element( 'div', { id: 'SlidesChef' } );
		var nav = new Element( 'ul', { 'class': 'nav flat' } );
		
		files.each( function( file, i ) {
			var btn = new Element( 'li', { html: '&nbsp;' } );
			var slide = new Slide( );
			
			slide.asset.setStyles({ 
				opacity: (i==0 ? 1:0)
				});
				 
			slide.asset.addEvent(
				 'load'
				, function( slide ) {
					btn.fade( 'in' );
					btn.addClass( 'loaded' );
					btn.addEvent(
						 'click'
						, function( e, slide ) {
							var isClick = e && e.type === 'click';
							
							this.lastBtn.removeClass( 'current' );
							btn.addClass( 'current' );
							this.lastBtn = btn;
														
							this.slidesChef.current().asset.fade( 'out' );
							
							this.slidesChef.cursor = this.slidesChef.keyOf( slide );
							
							slide.asset.fade('in');
					
							if( isClick ) {
//							this.start( );
							}
						  }.bindWithEvent( this, slide )
					);
				  }.bind( this, slide )
			);
			
			slide.load( path+file );
			slide.btn = btn;
			
			this.addSlide( slide );
			
			nav.grab( btn );
			slidesChef.grab( slide.asset );
		}.bind( this ) );
		
		this.container.grab( slidesChef );
		this.container.grab( nav );
		
		this.lastBtn = nav.getFirst( );
		this.lastBtn.addClass( 'current' );
		
		if( !isIE( ) ) {
			nav.getChildren( ).fade( .25 );
		}
		
		return this;
	  }
	
	, start: function( ) {
		this.timer = this.jump.periodical( 8000, this );
	  }
	
	, pause: function( ) {
		$clear( this.timer );
	  }
	
	, jump: function( ) {
		this.slidesChef.next( ).btn.fireEvent( 'click' );
	  }
	
} );

var Slide = new Class( {
	  asset: null
	, src: ''
	
	, initialize: function( ) {
		this.asset = new Image( );
		$( this.asset ).addClass( 'slide' );
	  }
	
	, load: function( src ) {
		this.src = auri( src );
		this.asset.src = this.src;
	  }
	
	/**
	 *	@browser Firefox-specific feature
	 */
/*	,  __noSuchMethod__: function( method, args ) {
		return this.asset[ method ].apply( this.asset, args );
	  }*/
} );

