/*
mooCicle
Javascript image cicle slideshow
*/
var zindex=300;
var duration=300;
var topadd=40;
var leftadd=20;


var moocicle = new Class({
	timer: null,
	Implements: [Events, Options],
	options: {
		zindex: 300,
		duration: 600,
		topadd: 40,
		leftadd: 20
	},
	initialize: function(element,options){
		this.moocicle = element;
		var images=this.moocicle.getElements('li img');
		this.setOptions(options);
		this.moocicle.setStyles({
			'margin':0,
			'padding':0,
			'height':images[0].getStyle('height'),
			'width':images[0].getStyle('width'),
			'list-style':'none',
			'display':'block',
			'position':'relative'
		});
		var listet=this.moocicle.getElements('li');
		listet.each(function(el,i){
			el.setStyles({
			'top':i*10,
			'left':i*10,
			'position':'absolute'
			})
		});
		nlist=listet.length;
		var slidefxs = [];
		var slidefxs1 = [];
		var mc=this;
		listet.each(function(el, i){
			zindex++;
			el.setStyle('z-index',zindex);
			
			el.addEvent('dblclick', function(){ 
				$clear(this.timer);
			});
			el.addEvent('click', function(e){
				$clear(this.timer);
				this.timer = (function(){
				$$('body').setStyle('overflow-x', 'hidden');
				/*slidefxs[i] = new Fx.Tween(el, 'left', {
					duration: duration,
					transition: Fx.Transitions.linear,
					wait: true
				});
				slidefxs[i].start.delay(0, slidefxs[i], (el.getStyle('width')+leftadd+(i*10)));*/
				
				var morph= new Fx.Morph(el,{
					duration: duration,
					transition: Fx.Transitions.linear,
					wait: true,
					link: 'chain'
				});
				var myChain = new Chain();
				morph.start({
					'left': el.getStyle('width')+leftadd+(i*10),
					'top': topadd
				});
				mc.nextimage.pass([el, listet]).delay(duration);
				morph.start({
					'left': (i*10),
					'top': (i*10)
				});


				/*
				slidefxs1[i] = new Fx.Tween(el, 'top', {
					duration: duration,
					transition: Fx.Transitions.linear,
					wait: true
				});
				slidefxs1[i].start.delay(0, slidefxs1[i], topadd);
				
				moocicle.nextimage.pass([el, listet]).delay(duration);
				
				slidefxs[i] = new Fx.Tween(el, 'left', {
					duration: duration,
					transition: Fx.Transitions.backOut,
					wait: true
				});
				slidefxs[i].start.delay(duration, slidefxs[i], 0);
				
				slidefxs1[i] = new Fx.Tween(el, 'top', {
					duration: duration,
					transition: Fx.Transitions.backOut,
					wait: true
				});
				slidefxs1[i].start.delay(duration, slidefxs1[i], 0);
				*/
				mc.reactive.delay((duration*2)+1,el);
				this.fireEvent('change',el);
				}).delay(200, this);
			});	
			
		});
	},
	nextimage: function(el,listet){
		el.setStyle('z-index',((el.getStyle('z-index').toInt()-nlist)+1));
		listet.each(function(other, j){
			if (other != el){
				other.setStyle('z-index',(other.getStyle('z-index').toInt()+1));					
			}
		});
	},
	reactive: function(el){
		$$('body').setStyle('overflow-x', 'visible');
		
	}

});
