/**
 * @author frank
 */

var Slideshow = new Class ({

	Implements: [Events, Options],
	options: {
		'selectors':	  '#header',
		'infozones':      '#header',
		'images':		  '#header img.slideshow',
		'selected': 	  0,
		'slideshow': 	  true,
		'startSlideshow': true,
		'timer':		  6000,
		'useSelector':    false,
		'useInfozone':	  false
	},
	
	initialize: function(options){
		this.setOptions(options);
		
		this.images = Array();
		if($$(this.options.images).length > 1){
			$$(this.options.images).each(function(img, i){
				img.setStyle('opacity', 0);
				
				img.fx = new Fx.Morph(img, {
					duration: 1000,
					transition: Fx.Transitions.Sine.easeOut
				});
				
				this.images[i] = img;
			}.bind(this));	
		
			if(this.options.useSelector) this.selector();
			if(this.options.useInfozone) this.infozone();
			if(this.options.slideshow) this.slideshow();
			
			this.slideIn(0);
		}
	},
	
	selector: function(){
		this.selectors = Array();
		
		$$(this.options.selectors).each(function(el, i){
			el.addEvents({
				'mouseenter': function(){			
					if (i != this.options.selected) {
						this.options.startSlideshow = false;
						this.slideIn(i);
					}
					$clear(this.periodical);
				}.bind(this),
				'mouseleave': function(){
					this.options.startSlideshow = true;
					this.slideshow();
				}.bind(this)
			});
			
			this.selectors[i] = el;
		}.bind(this));
	},
	
	infozone: function(){
		this.infozones = Array();
		$$(this.options.infozones).each(function(el, i){
			el.setStyle('opacity', 0);
			this.infozones[i] = el;
		}.bind(this));
	},
	
	slideIn: function(i){
		this.slideOut();
		
		this.options.selected = i;
		
		if (this.options.useSelector) {
			this.selectors[i].setStyle('background-image', 'url(/img/gif/sidebar-item' + (i + 1) + '-bg-hl.gif)');
			if(!this.selectors[i].hasClass('highlight')) this.selectors[i].addClass('highlight');
		}
		
		if (this.options.useInfozone) {
			this.infozones[i].setStyle('opacity', 1);
		}
		
		this.images[i].fx.cancel();
		this.images[i].fx.start({'opacity': [0, 1]});
	},
	
	slideOut: function(item){
		if(typeof(item)=='undefined') item = this.options.selected;
		
		if(this.options.useSelector) {
			this.selectors[item].setStyle('background-image', 'url(/img/gif/sidebar-item' + (this.options.selected + 1) + '-bg.gif)');
			this.selectors[item].removeClass('highlight');
		}
		
		if (this.options.useInfozone) {
			this.infozones[item].setStyle('opacity', 0);
		}
		
		this.images[item].fx.cancel();
		this.images[item].fx.start({'opacity': [1, 0]});
	},
	
	slideshow: function(){
		this.periodical = (function(){
			if (this.options.startSlideshow) {
				var item = (this.options.selected+1);
				if(item >= this.images.length) item = 0;

				this.slideIn(item);
			}
		}.bind(this)).periodical(this.options.timer);
	}
});	

window.addEvent('domready', function(){
	new Slideshow();
});
