//<![CDATA[
<!--
//::::::::::::::::::::::::::::::::::::::::::::::
// Auteur : Michael LHOTE					   :
//::::::::::::::::::::::::::::::::::::::::::::::

//+-----------------------------------------------------------------------------------+
//|	Classe		: scrollerObjH														  |
//| Description : classe qui permet de mettre en place un scroller horizontal.		  |	
//|				  Ce scroller peut contenir du HTML.								  |
//|				  Lorsque le pointer de la souris est dans le scroller, ce dernier	  |
//|				  s'arrête. Ce qui permet par exemple de cliquer sur un lien.		  |
//|				  De plus, ce scroller a 2 principales options qui sont :			  |
//|																					  |	
//|		1 - possibilité de régler la vitesse de scrolling tant au niveau de			  |
//|			déplacement du message qu'au niveau du réglage du Timer.				  |
//|																					  |
//|		2 - possibilité de faire défiler le même message, le 2ème, à la suite		  |
//|			de l'autre, le 1er, en spécifiant la position approximative, puisque	  |
//|			c'est exprimé en %. Donc espacement proportionnel entre le 1er bandeau	  |
//|			de message par rapport au 2ème bandeau de message.						  |		
//|																					  |		
//|	Parametres :																	  |	
//|																					  |	
//|		1 - ID de l'objet															  |	
//|		2 - position Top du message par rapport au bandeau							  |
//|		3 - position Left du message par rapport au bandeau							  |
//|		4 - hauteur du message et du bandeau										  |
//|		5 - largeur du bandeau														  |		
//|		6 - le message Flash														  |	
//|		7 - couleur de fond du bandeau												  |
//|		8 - couleur de fond du message Flash										  |
//|		9 - vitesse de défilement du message dans le bandeau						  |
//|	   10 -	vitesse de défilement du message dans le bandeau (le retour)			  |
//|			Réglage de la fréquence du Timer.										  |
//|	   11 - delta exprimé en pourcentage (%).										  |
//|			Par exemple, 0.1 (10%) indique qu'on recommence							  |
//|			à re afficher le bandeau message que lorsque le 1er est arrivé			  |
//|			à 10% de sa fin.														  |
//|			Entre 0 et 1 cette  fonctionnalité est annulée.							  |
//|			Elle est remplacée par celle par défaut qui n'affiche le				  |
//|			prochain message qu'à la fin du 1er et vice et versa.					  |
//|																					  |
//+-----------------------------------------------------------------------------------+
function scrollerObjH(name,initH,initW,heightB,widthB,content,initBg,Bg,speed,timerSpeed,delta){
	//====================================//
	//			Attributs				  //
	//====================================//
	this.name=name;
	this.initH=initH;
	this.initW=initW;
	this.heightB=heightB;
	this.widthB=widthB;
	this.content=content;
	this.widthText=this.content.length+10;
	this.initBg=initBg;
	this.Bg=Bg;
	this.speed=parseInt(speed) || 1;
	this.timerSpeed=parseInt(timerSpeed) || 25;
	this.timer=name + "Timer";
	this.elem; //1er bandeau
	this.elemBuff; //2eme bandeau
	this.delta=delta;
	this.offsetDiv=(60 * this.delta);
	this.isD1=true;//c'est le 1er bandeau qui commence
	this.isD2=false;
	this.cptD1=0;
	this.cptD2=0;
	//====================================//
	//		Declaration Methods 		  //
	//====================================//
	this.getElement=getElement;
	this.createLayer=createLayer;
	
	//Affectation de la fonction dont le Timer
	//va se servir
	if (this.delta > 0 && this.delta < 1)
	{
		this.scrollLayer = scrollLayerPlus;
	} else {
		this.scrollLayer = scrollLayer;
	}
	//

	this.stopAnim=stopAnim;
	this.startAnim=startAnim;
	this.scrollLoop=scrollLoop;
	//====================================//
	//		Initialise l'objet  		  //
	//====================================//
	this.createLayer();
	this.getElement();
	this.scrollLayer();

}//fin scrollerObjH

//=======================================================================================//
//							Definition Methods											 //
//=======================================================================================//

/*
 * Permet d'interagir avec la vitesse du scrolling.
 * 
 * param int s		vitesse du message scrollé.
 *					Remarque : s = 0 stop le scrolling
 */
function scrollLoop(s){
	this.speed = s;
}//fin scrollLoop

//=======================================================================================

/*
 * Le mecanisme du scrolling par défaut.
 * 
 */
function scrollLayer(){
	var templeft = this.elem.style.left.replace('px','');
	var D1Left = parseInt(templeft);

	if(D1Left > this.elem.offsetWidth*(-1)){
		this.elem.style.left = D1Left - this.speed;
	}else {
		this.elem.style.left = this.initW;
	}//fin if

}//fin scrollLayer

//=======================================================================================

/*	
 *  Le scroller ++
 *	
 *	On fait en sorte que le 2ème bandeau message puisse commencer à défiler alors
 *	que le 1er bandeau message n'est pas encore arrivé à sa fin.
 *	De plus, le début du 2ème message s'ajuste par rapport à un delta exprimé en pourcentage.
 *	Ce pourcentage correspond à la postion en partant de la fin du bandeau.
 */
function scrollLayerPlus(){
	var templeft = this.elem.style.left.replace('px','');
	var tempbuffleft = this.elemBuff.style.left.replace('px','');
	var D1Left = parseInt(templeft);
	var D2Left = parseInt(tempbuffleft);
	var diff = this.elem.offsetWidth * this.delta;			//le delta pour le 1er bandeau
	var diff2 = this.elemBuff.offsetWidth * this.delta;		//le delta pour le 2eme bandeau

	////////////////////////////////////////////////////
	// Controle le si le delta est atteint
	//
	if( D1Left - diff < this.elem.offsetWidth*(-1)) this.isD2 = true;
	if( D2Left - diff2 < this.elemBuff.offsetWidth*(-1)) this.isD1 = true;
	//fin controle delta/////////////////////////////////
	
	////////////////////////////////////////////////////
	// Activation du Bandeau D1
	//
	// Si le bandeau D1 est arrivé à la fin et que le delta soit atteint
	if( (D1Left > this.elem.offsetWidth*(-1)) && this.isD1){
		//Si D2 est actif, on ne fait pas bouger D1 sinon il bougerait 2 fois
		//donc il irait plus vite
		
		if (this.isD2)
		{
			this.cptD2++;
			//Au départ de l'affichage de D2, on le positionne
			//proportionnellement à D1 en fonction de delta (en %)
			if (this.cptD2 == 1)
				this.elemBuff.style.left = ""+D2Left - this.speed + this.offsetDiv+"px";
			else 
				this.elemBuff.style.left = ""+D2Left - this.speed+"px";

		}else {
		
			//on attend que D2 soit fini pour que le relais de D1 se fasse ici
			this.cptD1++;
			this.elem.style.left = ""+D1Left - this.speed+"px";
		}

	}else {
		this.cptD1 = 0;
		this.isD1 = false;
		this.elem.style.left = ""+this.initW+"px";
	}//fin if
	
	////////////////////////////////////////////////////
	// Activation du Bandeau D2
	//
	// Si le bandeau D2 est arrivé à la fin et que le delta soit atteint
	if ((D2Left > this.elemBuff.offsetWidth*(-1)) && this.isD2) {

		//Si D1 est actif, on ne fait pas bouger D2 sinon il bougerait 2 fois
		//donc il irait plus vite
		if (this.isD1)
		{
			this.cptD1++;
			//Au départ de l'affichage de D1, on le positionne
			//proportionnellement à D2 en fonction de delta (en %)
			if (this.cptD1 == 1)
				this.elem.style.left = ""+D1Left - this.speed + this.offsetDiv+"px";
			else
				this.elem.style.left = ""+D1Left - this.speed+"px";

		}else {
			//on attend que D1 soit fini pour que le relais de D2 se fasse ici
			this.cptD2++;
			this.elemBuff.style.left = ""+D2Left - this.speed+"px";
		}

	} else {
		this.cptD2 = 0;
		this.isD2 = false;
		this.elemBuff.style.left = this.initW+"px";
	}//fin if
	

}//fin scrollLayerPlus

//=======================================================================================

/*
 * Recuperation du DIV (le bandeau)
 * 
 */
function getElement() {

	if(document.getElementById){
		this.elem = document.getElementById(this.name);
		this.elemBuff= document.getElementById('buff'+this.name);
	} else if (document.all){
		this.elem = document.all[name];
		this.elemBuff= document.all['buff'+name];
	} else if (document.layers){
		this.elem = document.layers[name];
		this.elemBuff= document.layers['buff'+name];
	}//fin if
}//fin getElement

//=======================================================================================

/*
 * Création du scroller ou du bandeau
 * 
 */
function createLayer(){

	if(document.getElementById || document.all){
		//conteneur
		document.write('<div id="layer'+this.name+'" style="position:relative;overflow:hidden;background-color:#'+this.initBg+';border:0px solid black;width:'+this.widthB+'px;height:'+this.heightB+'px;" onMouseover="'+this.name+'.scrollLoop(0)" onMouseout="'+this.name+'.scrollLoop('+this.speed+')">');
		//1er bandeau de message
		document.write('<div id="'+this.name+'" style="position:absolute;top:'+this.initH+'px;left:'+this.initW+'px;border:0px solid black;white-space:nowrap;height:'+this.heightB+'px;background-color:#'+this.Bg+'">');
		document.write(this.content);
		document.write('<\/div>');
		//2eme bandeau de message
		document.write('<div id="buff'+this.name+'" style="position:absolute;top:'+this.initH+'px;left:'+this.initW+'px;border:0px solid white;white-space:nowrap;height:'+this.heightB+'px;background-color:#'+this.Bg+'">');
		document.write(this.content);
		document.write('<\/div><\/div>');
	} else if(document.layers){
		document.write('<ilayer name="'+this.name+'" bgcolor="#'+this.Bg+'" width="'+this.widthB+'" height="'+this.heightB+'">'+this.content+'<\/ilayer>');
		document.write('<ilayer name="buff'+this.name+'" bgcolor="#'+this.Bg+'" width="'+this.widthB+'" height="'+this.heightB+'">'+this.content+'<\/ilayer>');
		return;
	}//fin if
	
	//mise en route du Timer
	this.startAnim();

}//fin createLayer

//=======================================================================================

/*
 * Stop le Timer
 * 
 */
function stopAnim(){
	if(this.scrollLayer) window.clearInterval(this.timer);
}//fin stopAnim

function startAnim() {
	if (this.scrollLayer) this.timer = setInterval(this.name+'.scrollLayer()',this.timerSpeed);
}//fin startAnim
//-->
//]]>