		var defilementBloc = Class.create();
		defilementBloc.prototype = {
		
			  initialize: function(conteneur, elementClassName, options) {
			    this.conteneur = conteneur;
			    this.elementClassName = elementClassName;

				(options)? this.options = options : this.options = false;
				(options && options['defaut'])? this.indexCurrent = options['defaut'] : this.indexCurrent =1;
				(options && options['tempDefilement'])? this.tempDefilement = options['tempDefilement'] : this.tempDefilement = 1000;
				
				this.elements = $(conteneur).getElementsByClassName(elementClassName);
				this.EnCours = false;
				
				//this.widthConteneur = parseInt($(conteneur).getStyle({'width'})) ;
				
				
				
				var stop = false;
				var i = this.indexCurrent;
				var j = 1;
				
				if(this.elements.length > 0) {
					do {
						this.elements[i-1].setStyle({
										position:"absolute",
										'float':"left",
										left:(400*(j-1))+"px",
										width:"400px" });				
					
						(i+1 > this.elements.length) ? i = 1 : i++;
						if(i == this.indexCurrent) stop = true;
						j++;
					
					
					} while(!stop);
				}
			
			  },
			  allerSuivant: function() {
			  	
			  	var indexSuivant;
			  	
			  	if(this.indexCurrent >= this.elements.length)
			  		indexSuivant = 1;
			  	else
			  		indexSuivant = this.indexCurrent + 1;
			  		
			  	this.setDefilement(indexSuivant, "gauche");
			  
			  },
			  allerPrecedent: function() {
			  	
			  	var indexPrecedent;
			  	
			  	if(this.indexCurrent <= 1)
			  		indexPrecedent = this.elements.length;
			  	else
			  		indexPrecedent = this.indexCurrent - 1;
			  				  	
			  	this.setDefilement(indexPrecedent, "droite");
			  
			  },			  
			  setDefilement: function(indexDestination, direction) {
					
					if(!indexDestination) return false;
					if(this.EnCours) return false;				
					if(this.elements.length < 2) {return false; }
								
				this.EnCours = true; 
					
				if(direction == "gauche")
					this.defilementGauche(this.indexCurrent , indexDestination );
				else
					this.defilementDroite(this.indexCurrent , indexDestination );
					
					
				this.indexCurrent = indexDestination;
					
				
			  },
			  
			  defilementDroite: function(from , to) {
				  
				if(to < from)
					var nombreSauts = Math.abs(from - to);
				else if(to > from) 
					var nombreSauts = Math.abs(from - to + this.elements.length);
				else 
					 var nombreSauts = this.elements.length;
				
				var nombrePxSaut = Math.ceil((nombreSauts*400 / this.tempDefilement) * 40);
					
								 
			  	var stop = false;
			 	var i = from;
			 	var j = 0;
			 	
			 	do {
			 		this.elements[i-1].setStyle({left:"-"+(j*400)+"px"});
			 		
			 		if(i == to) stop = true;
			 		
			 		(i < 2)? i = this.elements.length : i--;
			 		j++;
			 	
			 	} while(!stop);
			 	
			 	var listeElements  = this.elements;
				
				var monObjetEnCours = this;	
						 		
				new PeriodicalExecuter(function(pe) {
			  									
					stop = false;
					var i = from;				
							
					do {
							var currentElement = listeElements[i-1];
							
							var actuelle = currentElement.getStyle('left');
							var nouvelle = (parseInt(actuelle)+nombrePxSaut);
							
							currentElement.setStyle({
								left : nouvelle+"px"
								});					
						
							if(i == to) stop = true;
							
							(i < 2)? i = listeElements.length : i--;
							
							
						} while(!stop);
					
					if(parseInt(listeElements[to-1].getStyle("left")) >= 0) {pe.stop(); monObjetEnCours.EnCours = false;}
				   
				}, 0.01);	
				
							
				delete listeElements;		
				
				return true;	 	
			 },
			 
			  defilementGauche: function(from , to) {
			  
			  	if(to > from)
					var nombreSauts = Math.abs(to - from);
				else if(to < from) 
					var nombreSauts = Math.abs(to - from + this.elements.length);
				else 
					 var nombreSauts = this.elements.length;
				
				var nombrePxSaut = Math.ceil((nombreSauts*400 / this.tempDefilement) * 40);
					
				
					
			  	var stop = false;
			 	var i = from;
			 	var j = 0;
			 	
			 	do {
			 		
			 		this.elements[i-1].setStyle({left:(j*400)+"px"});
			 		
			 		if(i == to) stop = true;
			 		
			 		(i >= this.elements.length)? i = 1 : i++;
			 		j++;
			 	
			 	} while(!stop);
			 	
			 
			 	var listeElements  = this.elements;
			 	var monObjetEnCours = this;			 	
			 	
				new PeriodicalExecuter(function(pe) {
				
					stop = false;
					var i = from;

					do {
						var currentElement = listeElements[i-1];
						
						var actuelle = currentElement.getStyle('left');
						var nouvelle = (parseInt(actuelle)-nombrePxSaut);
												
						currentElement.setStyle({
							left : nouvelle+"px"
							});					
					
						if(i == to) stop = true;
						
						(i >= listeElements.length)? i = 1 : i++;
						
						
					} while(!stop);
					
								
					if(parseInt(listeElements[to-1].getStyle("left")) <= 0) {pe.stop(); monObjetEnCours.EnCours = false;}	    
				   
				}, 0.01);	
				
				delete listeElements;		
				
				return true;	 	
			 }		 

		};
		
		
		
		function autoClear(myObject , defaultValue) {
		
			if(myObject.value == defaultValue)
				myObject.value = "";
		
		}
		function autoComplete(myObject , defaultValue) {
		
			if(myObject.value == "")
				myObject.value = defaultValue;
		
		}		
		
		
