		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;
				
				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;
		
		}		
		
		
		
			var boiteAlerte = Class.create();
			
			boiteAlerte.prototype = {
			
			
				  initialize: function(element) {
					
					this.masque = this.createMasque();
				
					this.contenant = element;
					
					var mybody = document.getElementsByTagName('BODY')[0]; 
					mybody.insertBefore(this.contenant,mybody.firstChild);		
					
					var elementWidth = Element.getWidth(this.contenant);
					
					Element.setStyle(this.contenant,{
							position : 'absolute',
							display: 'none',
							zIndex : 900,
							left : '50%',
							marginLeft : '-' + (elementWidth/2) + 'px',
							marginTop: '280px'
								
					});
					
				
					var _this = this;
					
					//Event.observe(this.masque, 'click' , function() {_this.cacher();} );
					
					
					window.onscroll = function() { _this.resizeMasque(); };
					window.onresize = function() { _this.resizeMasque(); };
				
				  },
				  createMasque: function() {
					
					var body = document.getElementsByTagName('BODY')[0];
					/*
					var width = document.viewport.getWidth();
					
					var height = document.viewport.getHeight();
					var scrolls = document.viewport.getScrollOffsets();
					width += scrolls['left'];
					height += scrolls['top'];
					*/	
					var ArraySize = this.getPageSize();
					
					width = ArraySize[0];
					height = ArraySize[1];
						
						
					var masque = document.createElement('DIV');
									
						Element.setStyle(masque,{
								position : 'absolute',
									top : '0px',
									left : '0px',
								background : '#000',
								opacity : 0.5,
								width : width+'px',
								height : height+'px',
								zIndex : 800,
								cursor: 'pointer',
								display: 'none'
						});
						
					body.insertBefore(masque,body.firstChild);		
					
				  
					return masque;
				  },
				  resizeMasque: function() {
					/*
					var width = document.viewport.getWidth();
					var height = document.viewport.getHeight();
					var scrolls = document.viewport.getScrollOffsets();
					
						width += scrolls['left'];
						height += scrolls['top'];
					*/
					var ArraySize = this.getPageSize();
					
					width = ArraySize[0];
					height = ArraySize[1];
					
					Element.setStyle(this.masque,{
							width : width+'px',
							height : height+'px'
					});	  
					  
					return;
				  },
				  cacherClick: function() {
				  
				  	var _this = this;
				  	
				  	Event.observe(this.masque, 'click' , function() {_this.cacher();} );
				  	
				  	return true;
				  },
				  afficher: function() {
			
			
					Element.show(this.masque);
					Element.show(this.contenant);
					this.resizeMasque();
					
					return;
				  },
				  cacher: function() {
				  
					Element.hide(this.masque);
					Element.hide(this.contenant);
					
					return;	  
				  
				  },
				   getPageSize: function() {
					        
					     var xScroll, yScroll;
						
						if (window.innerHeight && window.scrollMaxY) {	
							xScroll = window.innerWidth + window.scrollMaxX;
							yScroll = window.innerHeight + window.scrollMaxY;
						} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
							xScroll = document.body.scrollWidth;
							yScroll = document.body.scrollHeight;
						} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
							xScroll = document.body.offsetWidth;
							yScroll = document.body.offsetHeight;
						}
						
						var windowWidth, windowHeight;
						
						if (self.innerHeight) {	// all except Explorer
							if(document.documentElement.clientWidth){
								windowWidth = document.documentElement.clientWidth; 
							} else {
								windowWidth = self.innerWidth;
							}
							windowHeight = self.innerHeight;
						} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
							windowWidth = document.documentElement.clientWidth;
							windowHeight = document.documentElement.clientHeight;
						} else if (document.body) { // other Explorers
							windowWidth = document.body.clientWidth;
							windowHeight = document.body.clientHeight;
						}	
						
						// for small pages with total height less then height of the viewport
						if(yScroll < windowHeight){
							pageHeight = windowHeight;
						} else { 
							pageHeight = yScroll;
						}
					
						// for small pages with total width less then width of the viewport
						if(xScroll < windowWidth){	
							pageWidth = xScroll;		
						} else {
							pageWidth = windowWidth;
						}
				
						return [pageWidth,pageHeight];
					}			
			}	
		
