//Création d'un objet de type JSON
		function Fading(){
						//L'objet qui sera affecté par l'effet
						MyObj = null;
						//Le timer de l'objet
						Timer  = null;
						start    = null;
						end     = null;
						IsIE     = null;
			}
		Fading.prototype.fade = function (start, end)
			{
				if(start==end){return false}
					start>=end?start-=5:start+=5;

					this.IsIE?this.MyObj.filters[0].opacity=start:this.MyObj.style.opacity=start/100;
				
					var temp  = this ;
					clearTimeout(temp.timer);
					if(start != end)
					{
					temp.timer = setTimeout(function(){temp.fade(start,end);},50);
					}
					else
					{
					clearTimeout(temp.timer);
					}
			}
			//Méthode permettant d'associer le fading sur un objet
			/*
			 * Values : hash contenant la valeur de départ et d'arrivée :{start:X,end:X}
			 * Action : hash contenant les actions sur lesquelle appeler l'effet {show:X,hide:X}
			 */			
			Fading.prototype.init = function(Element, Values, Actions){
											this.MyObj = Element;
											this.start = Values['start'];
											this.end = Values['end'];
											this.IsIE = !!document.all;
											var temp = this;
											
											//Ajout du filtre dynamiquement pour combler une bug sous ie
											if (this.IsIE) {
												this.MyObj.style.filter = 'alpha(opacity=' + this.start + ')';
												this.MyObj.filters[0].opacity = this.start;
											}
											else {
												this.MyObj.style.opacity=start /100;
											}
											//Assignation des évènements sur l'objet
											if (this.MyObj.addEventListener) {
												this.MyObj.addEventListener(Actions['show'], function(){
													temp.fade(temp.start, temp.end)
												}, false);
												this.MyObj.addEventListener(Actions['hide'], function(){
													temp.fade(temp.end, temp.start)
												}, false);
											}
											else 
												if (this.MyObj.attachEvent) {
													this.MyObj.attachEvent('on' + Actions['show'], function(){
														temp.fade(temp.start, temp.end)
													});
													this.MyObj.attachEvent('on' + Actions['hide'], function(){
														temp.fade(temp.end, temp.start)
													});
												}
			}
			
			function boxFading(BoxAnim,interval){
			this.boxAnim = this.getElement(BoxAnim);
			this.listeImage = new Array();
			this.interval = interval*1000;
			this.IsIE=!!document.all;
			// permet de définir l'image a afficher
			this.currentIndex = 0 ;
			this.imgMax = 0;
			this.relance = null;
			var temp = this;
			//Pour combler un bug ie, on attend le chargement complet de la page
			if ( typeof(window.addEventListener) != "undefined" )
				window.addEventListener( "load", function(){
					temp.init()
				}, false );
			else{
				window.attachEvent( "onload", function(){
					temp.init()
				} );
			}
		}
		boxFading.prototype.changeImage = function(manuelle){
			
			if(typeof(manuelle) == 'undefined'){
				var next = (this.currentIndex+1 > this.imgMax) ? 0:this.currentIndex+1;
			}
			else{
				var next = manuelle;
			}
			this.fade(100,0,this.listeImage[this.currentIndex]);
			this.fade(0,100,this.listeImage[next]);
			
			
			if(typeof(manuelle) == 'undefined'){
				if(this.currentIndex == this.imgMax){
				this.currentIndex = 0;
				}
				else{
					this.currentIndex++;
				}
			}
			else{
				this.currentIndex = manuelle;
			}
			
			
			
			
		}
		boxFading.prototype.init = function(){
			//On récupère toutes les images de la div
			this.listeImage = this.boxAnim.getElementsByTagName('img');
			//On assigne la valeur maximum 
			this.imgMax = this.listeImage.length-1;
			this.listeImage[0].style.display = "block";
			//Assignation du timer sur chaque image
			for(var i = 0 , l = this.listeImage.length ; i < l ; i++){
				this.listeImage[i].timer = null;
				//Ajout du filtre pour combler un bug ie
				  if(this.IsIE)
				  {
					this.listeImage[i].style.filter=(i == 0) ?'alpha(opacity=100)':'alpha(opacity=0)';
					this.listeImage[i].filters[0].opacity=(i == 0) ? 100:0;
				  }
				  else
				  {
					this.listeImage[i].style.opacity=(i == 0) ? 1:0;
				  }

			}
			var temp = this;
			//On lance la méthode permettant de changer l'image
			try {
				this.relance = setInterval(function(){
					temp.changeImage()
				}, this.interval);
			}
			catch(err){
				
			}
		}


		boxFading.prototype.getElement = function(element){
				if(typeof(element) == "string"){
					return document.getElementById(element);
				}
				else if(typeof(element) == "object"){
					return (element);
				}
				else {
					return null;
				}
		}
		//Méthode permettant d'effectuer l'effet de fading sur un objet	
		boxFading.prototype.fade = function(start, end, objectToFade){
			if (start == end) {
				return false
			}
			objectToFade.style.display = "block";
			this.IsIE ? objectToFade.filters[0].opacity = start : objectToFade.style.opacity = start / 100;
			
			start >= end ? start -= 5 : start += 5;
			
			//this.IsIE ? objectToFade.filters[0].opacity = start : objectToFade.style.opacity = start / 100;
			
			var temp = this;
			clearTimeout(objectToFade.timer);
			if (start != end) {
				objectToFade.timer = setTimeout(function(){
					temp.fade(start, end , objectToFade);
				}, 25);
			}
			else {
				if(end == 0)
				{
					objectToFade.style.display = "none";
				}
				clearTimeout(objectToFade.timer);
			}
		}                         
