var kiwiSliders = Class.create({
		initialize : function(silder_id , effect , duration, lecture) {
			this.hasTexteFixes = 	false;
			this.hasMenu = 			false;
			this.sliderEnCours = 	0;
			this.sliderPrecedent = 	false;
			this.enTransition = 	false;
			this.timeOut = 			false;
			this.effect = 			effect;
			this.lecture = 			lecture;
			this.duration = 		duration;
			this.slider_id = 		silder_id;
			this.slide_class = 		'slide';
			this.slide_jumper = 	'jumper';
			this.slide_texte =	 	'texte';
			this.slide_actif = 		'slide_actif';
			this.listeSliders = 	$$('#'+this.slider_id+' .'+this.slide_class);
			this.goToNext();
			this.initNavigation();
		},
		initNavigation : function() {
			var self=this;
			$$('#'+this.slider_id+' .navigation').each(function(elNode , index){
				$$('#'+elNode.id+' .suivant').each(function(elNode2 , index2){
					elNode2.observe('click' , function(e){self.goToSuivant();e.stop();});
				});
				$$('#'+elNode.id+' .precedent').each(function(elNode2 , index2){
					elNode2.observe('click' , function(e){self.goToPrecedent();e.stop();});
				});
				$$('#'+elNode.id+' .pause').each(function(elNode2 , index2){
					elNode2.observe('click' , function(e){clearTimeout(self.timeOut);self.lecture=false;e.stop();});
				});
				$$('#'+elNode.id+' .lecture').each(function(elNode2 , index2){
					elNode2.observe('click' , function(e){if(self.lecture==false){self.lecture=true;self.goToNext();}e.stop();});
				});
				$$('#'+elNode.id+' .'+self.slide_jumper).each(function(elNode2 , index2){
					elNode2.observe('click' , function(e){self.goToDirect(elNode2.id.split('_')[2]);e.stop();});
				});
			});
			var texteSlider = $$('#'+this.slider_id+' .'+this.slide_texte);
			if(texteSlider && texteSlider.length > 0){
				this.hasTexteFixes = true;
			}
			var menuss = $$('#'+this.slider_id+' .'+this.slide_jumper);
			if(menuss && menuss.length > 0){
				this.hasMenu = true;
				$(this.slider_id+'_'+this.slide_jumper+'_'+this.sliderEnCours).addClassName(this.slide_actif);;
			}
		},
		afficheSliderEnCours : function() {
			this.enTransition = true;
			if(this.effect == 'switch'){
				if(this.sliderPrecedent != false || this.sliderPrecedent == 0){
					var suivant = $(this.slider_id+'_'+this.sliderEnCours);
					var precedent = $(this.slider_id+'_'+this.sliderPrecedent);
					suivant.style.display='block';			
					precedent.style.display='none';
					this.goToNext();
				}
			}else if(this.effect == 'slide'){
				if(this.sliderPrecedent != false || this.sliderPrecedent == 0){
					var dest = this.sliderEnCours;
					var encours = this.sliderPrecedent;
					var largeur = $$('#'+this.slider_id+' .'+this.slide_class)[0].measure('width');
					var ecart = dest - encours;
					var self=this;
					if(Math.abs(ecart) == this.listeSliders.length - 1){
						ecart = ecart/(-(this.listeSliders.length - 1));
					}
					var boucle = true;
					while(boucle){
						var ecartActuel = dest - encours;
						if(Math.abs(ecartActuel) == this.listeSliders.length - 1){
							ecartActuel = ecartActuel/(-(this.listeSliders.length - 1));
						}
						var position = ecartActuel*largeur;
						$(this.slider_id+'_'+dest).style.left=position+'px';
						$(this.slider_id+'_'+dest).style.display='block';
						if(dest==encours){
							new Effect.Move($(this.slider_id+'_'+dest), { x: -(ecart*largeur), mode: 'relative'  ,afterFinish:function(){$(self.slider_id+'_'+self.sliderPrecedent).style.display='none';self.goToNext();}});
							boucle = false;
						}else if(encours == this.sliderEnCours){
							new Effect.Move($(this.slider_id+'_'+dest), { x: -(ecart*largeur), mode: 'relative'  ,afterFinish:function(){$(self.slider_id+'_'+dest).style.display='none';} });
						}else{
							new Effect.Move($(this.slider_id+'_'+dest), { x: -(ecart*largeur), mode: 'relative' });
						}
						dest = dest-(ecart/(Math.abs(ecart)));
						if(dest > this.listeSliders.length - 1){
							dest = 0;
						}else if(dest<0){
							dest = this.listeSliders.length - 1;
						}
					}					
				}
			}else if(this.effect == 'fade'){
				if(this.sliderPrecedent != false || this.sliderPrecedent == 0){
					var suivant = $(this.slider_id+'_'+this.sliderEnCours);
					var precedent = $(this.slider_id+'_'+this.sliderPrecedent);	
					var self=this;	
					suivant.setOpacity(0);
					suivant.style.display='inline-block';
					new Effect.Opacity(precedent, {from:1,to:0,afterFinish:function(){
							new Effect.Opacity(suivant,{from:0,to:1,afterFinish:function(){precedent.style.display='none';self.goToNext();}});
					}});
				}
			}else if(this.effect == 'transition'){
				if(this.sliderPrecedent != false || this.sliderPrecedent == 0){
					var suivant = $(this.slider_id+'_'+this.sliderEnCours);
					var precedent = $(this.slider_id+'_'+this.sliderPrecedent);	
					var self=this;	
					suivant.setOpacity(0);
					suivant.style.display='block';
					new Effect.Opacity(precedent, {from:1,to:0,afterFinish:function(){precedent.style.display='none';}});
					new Effect.Opacity(suivant,{from:0,to:1,afterFinish:function(){self.goToNext();}});
				}
			}
			if(this.hasTexteFixes){
				if(this.sliderPrecedent != false || this.sliderPrecedent == 0){
					$(this.slider_id+'_'+this.slide_texte+'_'+this.sliderPrecedent).style.display='none';	
				}
				$(this.slider_id+'_'+this.slide_texte+'_'+this.sliderEnCours).style.display='block';
			}
			if(this.hasMenu){
				if(this.sliderPrecedent != false || this.sliderPrecedent == 0){
					$(this.slider_id+'_'+this.slide_jumper+'_'+this.sliderPrecedent).removeClassName(this.slide_actif);	
				}
				$(this.slider_id+'_'+this.slide_jumper+'_'+this.sliderEnCours).addClassName(this.slide_actif);
			}			
		},
		goToNext : function(){
			this.enTransition = false;
			if(this.lecture){
				var self = this;
				this.timeOut = setTimeout(function(){
						self.sliderPrecedent = self.sliderEnCours;
						self.sliderEnCours++;
						if(!$(self.slider_id+'_'+self.sliderEnCours)){
							self.sliderEnCours = 0;
						}
						self.afficheSliderEnCours();
				} , this.duration*1000);	
			}
		},
		goToDirect : function(num_slide){
			clearTimeout(this.timeOut);
		   if(!$(this.slider_id+'_'+this.slide_jumper+'_'+num_slide).hasClassName(this.slide_actif)){   
			if(this.enTransition == true){
			 var self=this; 
			 setTimeout(function(){self.goToDirect(num_slide);} , 500);
			}else{
			 this.sliderPrecedent = this.sliderEnCours;
			 this.sliderEnCours = num_slide;
			 this.afficheSliderEnCours();
			}
		   }
		  },
		goToSuivant : function(){
			clearTimeout(this.timeOut);
			if(this.enTransition == true){
				var self=this;	
				setTimeout(function(){self.goToSuivant();} , 500);
			}else{
				this.sliderPrecedent = this.sliderEnCours;
				this.sliderEnCours++;
				if(!$(this.slider_id+'_'+this.sliderEnCours)){
					this.sliderEnCours = 0;
				}
				this.afficheSliderEnCours();
			}
		},
		goToPrecedent : function(){
			clearTimeout(this.timeOut);
			if(this.enTransition == true){
				var self=this;	
				setTimeout(function(){self.goToPrecedent();} , 500);
			}else{
				this.sliderPrecedent = this.sliderEnCours;
				if(!$(this.slider_id+'_'+this.sliderPrecedent)){
					this.sliderPrecedent = $$('#'+this.slider_id+' .'+this.slide_class).length-1;
				}
				this.sliderEnCours = this.sliderPrecedent-1;
				if(!$(this.slider_id+'_'+this.sliderEnCours)){
					this.sliderEnCours = $$('#'+this.slider_id+' .'+this.slide_class).length-1;
				}
				this.afficheSliderEnCours();
			}
		}
	}
);
var listeKiwiSlide = new Array();

function initSliders(){
	$$('.kiwiSlide').each(function(elNode , index){
		initSlider(elNode.id);
	});
}

function initSlider(slider_id){
	var elNode = $(slider_id);
	var params = elNode.readAttribute('rel');
	params = params.split(',');
	if(params[2] && params[2] == 'autoplay'){
		params[2] = true;
	}else{
		params[2] = false;
	}
	listeKiwiSlide[elNode.id] = new kiwiSliders(elNode.id , params[0] , params[1] , params[2]);
}

document.observe('dom:loaded' , initSliders);
