function initFunctions()
{	
	var bann_bonPlans 	= new banniereCoulissante("pubsDIV", 148, 1500, 4500);
	/*var bann_bonPlans2	= new banniereCoulissante("pubsDIV_2", 148, 1, 1500);
	var bann_bonPlans3	= new banniereCoulissante("pubsDIV_3", 148, 0.5, 1000);*/
}

function banniereCoulissante(nomDiv, largeur, vitesse, delai)
{	
	//-- Variables ----------------------------------------------------------------------------
	var This 		= this;
	var bannName	= nomDiv;
	var bannWidth	= largeur;
	var speed		= vitesse/1000;
	var delay		= delai;
	var doPlay		= true;
	var num			= 0;
	var firstexec   = 1;
	
	//-- Initialise l'objet 'oBann' a partir du DIV conteneur ---------------------------------
	This.initBann = function(){
		var pubs		= document.getElementById(bannName);
		var pubsLength	= pubs.getElementsByTagName('a');
		var timer;
		var oBann		= {bWidth:bannWidth, conteneurPubs:pubs, allPubs:pubsLength, Timer:timer};
		
		This.reecritureConteneur(pubs);
		//this.add_Event(pubs, 'mouseover', function(){this.bannPlayStop('stop', oBann);}, false);	// hors class
		//this.add_Event(pubs, 'mouseout', function(){this.bannPlayStop('play', oBann);}, false);	// hors class
		This.enregistrerObservateur(pubs, 'onmouseover', function(){This.bannPlayStop('stop', oBann);});  //dans classe
		This.enregistrerObservateur(pubs, 'onmouseout', function(){This.bannPlayStop('play', oBann)});  //dans classe
		
		This.launchTimer(oBann);
	}
	
	This.reecritureConteneur = function(pubs) {
		var allPubs = pubs.childNodes;
		var aPubs 	= Array();
		
		for(i=0; i<allPubs.length; i++){
			if(allPubs[i].nodeType != 3)aPubs.push(i);//aPubs.push(allPubs[i]);
		}

		var O_Clone = allPubs.item(aPubs[0]).cloneNode( true);
		pubs.appendChild( O_Clone);
	}
	
	//-- Lance le timer -----------------------------------------------------------------------
	This.launchTimer = function(oBann){
		if (firstexec==1) {
			oBann.Timer = setInterval(function(){This.playBann(oBann);}, delay-vitesse);
			firstexec=0;
			}
		else oBann.Timer = setInterval(function(){This.playBann(oBann);}, delay);
	}
	
	//-- Calcul le déplacement du conteneur et le déplace -------------------------------------
	This.playBann = function(oBann){
		var bann	= oBann.conteneurPubs;
		var bannW	= oBann.bWidth;
		var iMax	= oBann.allPubs.length;
		var dep;
		var arr;
		
		if(num < iMax-1){
			dep = -1*bannW*num;
			arr = -1*bannW*(num+1);
			
			var galMoveX = new Tween(bann.style, 'left', Tween.strongEaseOut, dep, arr, speed, 'px');
			galMoveX.start();
		}else if(num == iMax-1){
			num=0;
			
			arr = -1*bannW*(num+1);
			var galMoveX = new Tween(bann.style, 'left', Tween.strongEaseOut, 0, arr, speed, 'px');
			galMoveX.start();
		}
		
		num++;	
	}
	
	//-- Efface ou relance le timer -----------------------------------------------------------
	This.bannPlayStop = function(doPlaying, oBann){ // Sans this. dans classe
		if(doPlaying == 'stop'){
			clearInterval(oBann.Timer);
		}else{
			oBann.Timer = setTimeout(function(){This.playBann(oBann); This.launchTimer(oBann);}, delay/10);
		}
	}
	
	//-- Abonnement aux Evenements hors classe ------------------------------------------------
	/*This.add_Event = function( obj_, event_, func_, mode_){
	  if( obj_.addEventListener){
		  obj_.addEventListener(event_, func_, mode_? mode_:false);
	  }else{
		  obj_.attachEvent('on'+event_, func_);
	  }
	}*/
	
	//-- Abonnement aux Evenements dans classe ------------------------------------------------
	This.enregistrerObservateur = function(objet, methode, observateur){
		var objMethode = objet[methode]; 
		
		objet[ "__" +  methode] = objMethode; 
		
		objet[methode] = function() { 
			observateur();
			objMethode.apply(this, arguments);
		} 
	} 
	
	This.initBann();
	
}