//Lancement du script
Event.observe(window, 'load', featSlideInit);

function featSlideInit(){
	new FeatSlide('bandeau');
}

//Début de la classe

var FeatSlide = Class.create();
FeatSlide.prototype = {
	
	//Liste des variables
	var_IdContainer			: 'featContainer',	
	var_IdContainerSlider	: 'featContainerSlider',	
	var_IdSlider			: 'featSlider',
	var_tailleSlider		: 0,
	var_ClassWrapper		: 'featWrapper',
	var_tailleWrapper		: 0,
	var_IdControl 			: 'featControl',
	var_TableWrapper		: new Array,
	var_currentWrapper		: 1,
	var_nbWrapper			: 0,
	var_effeatSlider		: '',
	//Constructeur
	
	initialize : function(mode){
		this.mode  = mode;

		if(this.mode == 'bandeau'){
			/* Init Controleur */
			this.checkControl();
			
			/* Init Taille Slider */
			var featWrapper = $$('.' + this.var_ClassWrapper);
			if(featWrapper.length){
				featWrapper.each(
					function(item, index){
						this.var_tailleSlider += item.getWidth();
						item.id = 'wrap'+(index+1);
						this.var_TableWrapper[item.id] = new Array('0' ,this.var_tailleSlider - item.getWidth());
					}.bind(this)
				);
				
				$(this.var_IdSlider).style.width =  this.var_tailleSlider+"px";
				this.var_tailleWrapper = $$('.' + this.var_ClassWrapper)[0].getWidth();
				
				//Lancement du carroussel
				this.nextWrap();				
				this.var_nbWrapper = featWrapper.last().id.split('wrap')[1];
			}
		}
		
		else if(this.mode == 'fade'){
			/* Jouer le diaporama */
			this.play();
			
		}
	},
	
	//Fonction Suivant	
	
	nextWrap : function(x){
		var myScope = this;
		var xMove = (x) ? x : this.var_TableWrapper['wrap'+this.var_currentWrapper][1];
		var featSlider = $(this.var_IdSlider);
		
		this.var_effeatSlider = new Effect.Move(featSlider,{
				mode: 'absolute',
				x: - xMove,
				y: 0,
				queue: { position: 'end', scope: 'scope' },
				beforeStart:function(){
					$('next').stopObserving('click');
					$('prev').stopObserving('click');
				},
				afterFinish:function(){
					this.checkControl();
					if(myScope.var_currentWrapper < myScope.var_nbWrapper){
						this.var_currentWrapper++;
					}
					if(this.checkPosition('nextWrap')){
						setTimeout(function(){
							myScope.nextWrap();
						},6500);						
					}else{
						setTimeout(function(){
							myScope.getBack('0');
						},6500);
					}
					
				}.bind(this)
			});
		
	},
	
	//Fonction Precedent
	
	prevWrap : function(x){		
		var myScope = this;		
		var xMove = (x) ? x : this.var_TableWrapper['wrap'+this.var_currentWrapper][1];
		var featSlider = $(this.var_IdSlider);		
		new Effect.Move(featSlider,{
				mode: 'absolute',
				x: xMove,
				y: 0,
				queue: { position: 'end', scope: 'scope' },
				beforeStart:function(){
					$('next').stopObserving('click');
					$('prev').stopObserving('click');
				},
				afterFinish:function(){
					this.checkControl();
					if(myScope.var_currentWrapper < myScope.var_nbWrapper){
						this.var_currentWrapper--;
					}
					if(this.checkPosition('prevWrap')){
						setTimeout(function(){
							myScope.nextWrap();
						},6500);						
					}else{
						setTimeout(function(){
							myScope.getBack('1620');
						},6500);
					}
					
				}.bind(this)
			});
	},
	
	getBack : function(x){	
		var myScope = this;
		var xMove = (x) ? x : '0';
		var featSlider = $(this.var_IdSlider);		
		new Effect.Move(featSlider,{
				mode: 'absolute',
				x: xMove,
				y: 0,
				queue: { position: 'end', scope: 'scope' },
				beforeStart:function(){
					$('next').stopObserving('click');
					$('prev').stopObserving('click');
				},
				afterFinish:function(){					
					this.checkControl();					
					this.var_currentWrapper = 1;
					setTimeout(function(){
						myScope.nextWrap();
					},6500);
				}.bind(this)
			});
		
	},

	//Affichage ou non des controls
	
	checkControl : function(){
		var myScope = this;
		var featControl = $$('#' + this.var_IdControl + ' span');
		if(featControl.length){
			featControl.each(
				function(item, index){
					nom = item.id;
					if(nom == 'next'){
						Event.observe(item, 'click', function(){	
							if(myScope.var_currentWrapper <= myScope.var_nbWrapper){
								myScope.nextWrap();
							}
						});						
					}else if(nom == 'prev'){
						Event.observe(item, 'click',  function(){
							if(myScope.var_currentWrapper <= myScope.var_nbWrapper){
								myScope.prevWrap();
							}
						});
					}					
					/*if(this.checkPosition(nom)){
						
						$(nom).style.display = 'block';						
					}else{
						$(nom).style.display = 'none';					
					}*/
					
				}.bind(this)
			);
		}
	},
	
	checkPosition : function(type){	
		var name = type;
		var tailleWrapper =  $$('.' + this.var_ClassWrapper)[0].getWidth();
		var featSlider = $(this.var_IdSlider);
		var position = featSlider.positionedOffset();
		
		if(name == 'nextWrap'){
			if(Math.abs(position[0] - tailleWrapper) < featSlider.getWidth()){ return true; }
			else{ return false; }	
		}
		if(name == 'prevWrap'){
			if(Math.abs(position[0]) > 0){ return true; }
			else{ return false; }
		}
	}
	
	
}
