/**
 * Slider component
 * 
 * @copyright: Solid Parnters i-design B.V.
 * @author: Sven Moleman
 * @requirements: Mootools 1.1 
 * @param {SlideShow} SlideShow
 */
var SlideShow = new Class({
	options:{
		'slideSpeed': 5000,
		'fadeSpeed': 1000,
		'enableToolbar': false
	},
	initialize: function(object,options){
		this.setOptions(options);

        this.object = object;
		this.slides = object.getChildren();
		this.slides.setStyle('opacity','0');
		this.selectedIndex = object.getChildren().length - 1;
		this.slideLength = object.getChildren().length;
		
		if (this.options.enableToolbar == true) {
			this.toolbar = new Element('div', {
				'styles': {
					'height': 20,
					'opacity': 0.7,
					'width': (20 * this.slideLength),
					'position': 'absolute',
					'left': 0,
					'top': 0,
					'background-color': '#ffffff'
				}
			});
			this.slides.each(function(slide, slideIndex){
				var toolbarItem = new Element('a', {
					'styles': {
						'display': 'block',
						'float': 'left',
						'width': 20,
						'height': 20,
						'line-height': 20,
						'vertical-align': 'middle',
						'text-align': 'center',
						'cursor': 'pointer'
					}
				});
				toolbarItem.setHTML(slideIndex + 1);
				toolbarItem.addEvents({
					'click': function(event){
						var event = new Event(event);
						var slideIndex = parseInt(event.target.innerHTML) - 1;
						this.stop();
						this.slide(slideIndex);
						event.stop();
					}.bind(this)
				});
				toolbarItem.inject(this.toolbar);
			}.bind(this));
			this.toolbar.inject(this.object);
			this.toolbarFx = new Fx.Slide(this.toolbar, {wait: false});
			this.toolbarFx.hide();
			
			this.object.addEvents({
				'mouseenter': function(){
					this.toolbarFx.slideIn();
//					console.log('mouse entering object');
				}.bind(this)				,
				'mouseleave': function(){
					this.toolbarFx.slideOut();
//					console.log('mouse leaving object');
				}.bind(this)
			});
		}
    },
	start: function()	{
//		console.log('starting periodical slideshow');
		this.slides[this.selectedIndex].setStyle('opacity',1);
		this.periodicalId = this.slide.periodical(this.options.slideSpeed, this);
		return this.periodicalId;
	},
	stop: function()	{
//		console.log('stopping periodical slideshow (id:'+this.periodicalId+')');
		$clear(this.periodicalId);
	},
	slide: function(index)  {
		if (index == undefined)	{
			index = ((this.selectedIndex+1) >= this.slideLength) ? 0 : (this.selectedIndex+1);
		}
//		console.log('sliding: '+index);
	    this.slides.each(function(slide,slideIndex)  {
	    	if (slideIndex == index)	{
//				console.log('show with speed:'+this.options.fadeSpeed);
				new Fx.Style(slide, 'opacity', {duration:this.options.fadeSpeed, wait:false}).start(1);
			}
			if (slideIndex == this.selectedIndex)	{
//				console.log('hide with speed:'+this.options.fadeSpeed);
		    	new Fx.Style(slide, 'opacity', {duration:this.options.fadeSpeed, wait:false}).start(0);
			}
	    }.bind(this));
		this.selectedIndex = index;
	}
});
SlideShow.implement(new Options);
