var chrono;
var offsetDiv;
var offsetWDiv;
var elDiv;
var pas=1;
var totPas=0;
var	oldTop = 0;
var	oldLeft = 0;

// a mettre en entré de la fonction
var boucle = 1;//Si ya boucle demandé
 
function demarre(idDiv, sens1, direct1, effect1, portion1, inter1, vitesse1)
{
	elDiv =document.getElementById(idDiv);
  offsetDiv = elDiv.offsetHeight;
  offsetWDiv = elDiv.offsetWidth;
  elDiv.scrollTop = 0;
  elDiv.scrollLeft = 0;
  direct = direct1; //aller=1; retour=0
  sens = sens1; //vertical=0; horizontal=1
  effect = effect1; //continu=0; intermittent=1
  portion = portion1;
  inter = inter1; 
  vitesse = vitesse1;
  //après intervalle de temps on démarre le défilement
	setTimeout("demarre_defil()", inter * 1000);
}

function demarre_defil()
{
	clearTimeout(chrono);
	chrono=setInterval("defile()",vitesse);
}

function defile()
{
	if(document.getElementById('etat_'+elDiv.id).value != 1)
  {
  	//sens vertical
  	if(sens == 0)
  	{
  		//aller
	  	if(direct == 1)
		 	{
		 		//tant qu'on n'est pas arriver au bout, on continu
		 		if (elDiv.scrollTop != oldTop || oldTop == 0)
		 		{
		 			//on garde en mémoire l'ancien point en y pour le div scrollé afin de savoir si on est arrivé à la fin
		 			oldTop = elDiv.scrollTop;
		 			
		 			//on ajoute le nombre de pas voulu (car aller vers le bas)
		    	elDiv.scrollTop +=pas;
	 				//on incrémente le compteur afin de pouvoir arrêter le défilement tous les n pas
	 				totPas += pas;
		    	
		 			//si une portion de défilement est définie et que l'on est en mode intermittent, on s'arrête à chaque portion dépassée
		 			if(effect != 0 && portion > 0)
		 			{
			 			//on vérifie qu'on n'est pas arrivé à la portion de défilement prévu
			 			if((Math.round((offsetDiv * portion)/100)) <= totPas) 
			 			{
							//on remet le compteur à zéro afin de pouvoir arrêter le défilement tous les n pas
			 				totPas=0;
			 				//on arrête le défilement
							clearTimeout(chrono);
							//et on le rédémarre après intervalle de temps donné
							setTimeout("demarre_defil()", inter * 1000);
			 			}
			 		}
		    }
		    
		 		else
	  	{
			 		// Si on est en mode boucle 
			 		if (boucle > 0)
			 		{
			 			if (totPas > pas) 
			 				totPas-=pas;
			 			else
			 				totPas = 0;
			 			elDiv.scrollTop=totPas;
			 			//et on le rédémarre après intervalle de temps donné
						setTimeout("demarre_defil()",0);
					}
				//sinon, on repart
				else
					{			 			
			 			totPas=0;
		    	  direct = 0;
		    	}
		  } 
		  	}
	  	//retour
	 		else
	  	{
	  		//si on est revenu au début, on repart
	  		if(elDiv.scrollTop == 0)
		  	{
			 		totPas=0;
	  			direct = 1;
	  		}
	  		//sinon	
	  		else
	  		{
		 			//on enlève le nombre de pas voulu (car retour vers le haut)
	  			elDiv.scrollTop -=pas;
	 				//on incrémente le compteur afin de pouvoir arrêter le défilement tous les n pas
		 			totPas += pas;
	  			//si une portion de défilement est définie et que l'on est en mode intermittent, on s'arrête à chaque portion dépassée
		 			if(effect != 0 && portion > 0)
		 			{
			 			//on vérifie qu'on n'est pas arrivé à la portion de défilement prévu
			 			if((Math.round((offsetDiv * portion)/100)) <= totPas) 
			 			{
							//on remet le compteur à zéro afin de pouvoir arrêter le défilement tous les n pas
			 				totPas=0;
			 				//on arrête le défilement
							clearTimeout(chrono);
							//et on le rédémarre après intervalle de temps donné
							setTimeout("demarre_defil()", inter * 1000);
			 			}
			 		}
	  		}
	  	}
	  }
	  //sens horizontal
		else
		{
			//aller
			if(direct == 1)
		 	{
		 		//tant qu'on n'est pas arriver au bout, on continu
		 		if (elDiv.scrollLeft != oldLeft || oldLeft == 0)
		 		{
		 			//on garde en mémoire l'ancien point en x pour le div scrollé afin de savoir si on est arrivé à la fin
		 			oldLeft = elDiv.scrollLeft;
		 			
		 			//on ajoute le nombre de pas voulu (car aller vers la droite)
		 			elDiv.scrollLeft += pas;
	 				//on incrémente le compteur afin de pouvoir arrêter le défilement tous les n pas
	 				totPas += pas;
	  			
	  			//si une portion de défilement est définie et que l'on est en mode intermittent, on s'arrête à chaque portion dépassée
		 			if(effect != 0 && portion > 0)
		 			{
			 			//on vérifie qu'on n'est pas arrivé à la portion de défilement prévu
			 			if((Math.round((offsetWDiv * portion)/100)) <= totPas) 
			 			{
							//on remet le compteur à zéro afin de pouvoir arrêter le défilement tous les n pas
			 				totPas=0;
			 				//on arrête le défilement
							clearTimeout(chrono);
							//et on le rédémarre après intervalle de temps donné
							setTimeout("demarre_defil()", inter * 1000);
			 			}
			 		}
		    }
	  	else
	  	{
			 		if (boucle > 0)
			 		{
			 			totPas=0;
			 			elDiv.scrollLeft=0;
			 			//et on le rédémarre après intervalle de temps donné
						setTimeout("demarre_defil()", 0);
					}
				//sinon, on repart
				else
					{			 			
			 			totPas=0;
		    	  direct = 0;
		    	}
		  } 
		   
	  }
	  	//retour
	 		else
	  	{
	  		//si on est revenu au début, on repart
	  		if(elDiv.scrollLeft == 0)
	  		{
	  			totPas = 0;
	  			direct = 1;
	  		}
	  		//sinon
	  		else
	  		{
		 			//on enlève le nombre de pas voulu (car retour vers la gauche)
	  			elDiv.scrollLeft -=pas;
	  			
	  			//si une portion de défilement est définie et que l'on est en mode intermittent, on s'arrête à chaque portion dépassée
		 			if(effect != 0 && portion > 0)
		 			{			 			
			 			//on vérifie qu'on n'est pas arrivé à la portion de défilement prévu
			 			if((Math.round((offsetWDiv * portion)/100)) < totPas) 
			 			//if(totPas <= 0)
			 			{
							//on remet le compteur à zéro afin de pouvoir arrêter le défilement tous les n pas
			 				totPas=-1;
			 				//on arrête le défilement
							clearTimeout(chrono);
							//et on le rédémarre après intervalle de temps donné
							setTimeout("demarre_defil()", inter * 1000);
			 			}
			 			
		 				//on incrémente le compteur afin de pouvoir arrêter le défilement tous les n pas
			 			totPas += pas;
			 		}
	  		}
	  	}
		}
  }
}