
/*fonction d'initialisation du scroll sur un élément
	La fonctionne se lance ainsi :  
	initScroll(ElementId, increment, timer, direction, ismouseover)
	ElementId : correspond à l'identifiant de l'élément visé
	increment : nombre de pixels que le block avance
	timer : durée en millisecondes avant la prochaine incrémentation (avancement)
	direction : direction du bloc :  
			   -TB : Top to Bottom, du haut vers le bas
			   -BT : Bottom to Top, du bas vers le haut
			   -LR : Left to Right, de la gauche vers la droite
			   -RL : Right to Left, de la droite vers la gauche
	ismouseover : arrêt du défilement lors du passage de la souris
				 true : action avec souris
				 false : aucune action avec souris
	exemple :  
	  -initScroll("monbloc", 2, 20, "tb" );
	  -initScroll("mesnews", 1, 30, "lr" );
	   
	   
	la fonction scrollElement est la fonction qui est appelée successivement, pour faire avancer le scroll.
	la fonction initScroll sert à créer et initialiser le block avec qu'il puisse faire du scrolling.
	sous Opera, le scroll ne fonction que si les scroller sont visible (overflow:auto), avec overflow:hidden  
	le scroll ne fonctionnera pas sous Opera
	Vous pouvez à tout moment arrêter le scroll sur un bloc ou le relancer.
	il vous suffit pour cela de faire un clearInterval(lenomdemonblockTimer)
	le nom de la variable qui est lancée par setInterval, est constitué de l'id du bloc suivi du mot Timer
	ex : blocktoscrollTimer
	et vous pouvez à tout moment relancer la fonction par un setInterval de cette manière :  
	var monTimer = setInterval('scrollElement("iddemonElement", 10, "tb"', 30);
   
	la fonction scrollElement se lance avec les parametre ElementId, increment, direction.
  
	Attention aux valeurs que vous choisissez, dans l'increment, vous pouvre mettre des valeurs de 1 à 5, c'est largement suffisant
	et pour le timer, mettez des valeurs de 10 à 100, c'est une bonne fouchette
*/  
	function initScroll(EltId, increment, timer, direction, ismouseover) {
		direction = direction.toLowerCase();
		var BlockScroll = document.getElementById(EltId); //On recupere l'element
		//On rajoute les attributs dans l'élément, ça évite de se les trimballer à chaque fois
		BlockScroll.increment = increment;
		BlockScroll.timer = timer;
		BlockScroll.direction = direction;
		if (direction=="bt" || direction=="tb" ) { //direction verticale
		 var FirstDiv = BlockScroll.insertBefore(document.createElement("div" ), BlockScroll.firstChild); //On cree un DIV au debut du bloc
		 var LastDiv = BlockScroll.appendChild(document.createElement("div" )); //on cree un div à la fin du bloc
		 FirstDiv.style.height = BlockScroll.clientHeight+"px"; //On dimensionne le premier div de la hauteur du bloc
		 LastDiv.style.height = BlockScroll.clientHeight+"px"; //idem pour le dernier div
		}
		if (direction=="lr" || direction=="rl" ) { //direction horizontale
		 BlockScroll.style.paddingLeft=BlockScroll.clientWidth;
		 BlockScroll.style.paddingRight=BlockScroll.clientWidth;
		 BlockScroll.style.whiteSpace="nowrap"; //On vire le retour charriot afin de présenter le texte sur une seule ligne
		}
		//Rajout des évènement sur le block
		if (ismouseover) {
		BlockScroll.onmouseover = function() { //Arrête le défilement lors du passage de la souris
		  this.backupincrement = this.increment;
		  this.increment=0;
		}
		BlockScroll.onmouseout = function() {
		  this.increment=this.backupincrement;
		}
		}
		eval('var '+EltId+'Timer = setInterval("scrollElement(\'" + EltId + "\')",timer);'); //On lance la fonction qui va initialiser le scroll
		
		}
             
		function scrollElement(eltId) {
		 
		   var BlockScroll = document.getElementById(eltId);
		   with (BlockScroll) {
			  switch(direction) {
				  case "bt":
					 scrollTop += increment;
					 if (scrollTop+clientHeight>=scrollHeight) { scrollTop=0};
					 break;
				  case "tb":
					 scrollTop -= increment;
					 if (scrollTop<=increment) { scrollTop=scrollHeight};
					 break;
				  case "rl":  
					 scrollLeft += increment;
					 if (scrollLeft+clientWidth>=scrollWidth) scrollLeft=0;
					 break;
				  case "lr":  
					 scrollLeft -= increment;
					 if (scrollLeft<increment) scrollLeft=scrollWidth;
					 break;
			  }
		   }
		}
