<!--
/* Copyright 2001 : Atout Développement */
/* Auteur : Yvan Vanwynsberghe		      */





/* paramètres de la fonction new Box()
Nom : nom de la boîte,
Identifiant : identifiant du DIV contenant les DIVs devant défiler,
Incrément : pas d'incrémentation des DIVs (en pixels),
temporisation1 : tempo entre deux incrémentations de DIV (en millisecondes),
temporisation2 : temps d'arrêt lorsqu'un DIV arrive au début de la boîte (en millisecondes),
espace : espacement entre deux DIVs
unit : unité de mesure (mesure valide pour les CSS)(par défaut px)*/
function Box(BoxName, DivId, myStep, myTempo1, myTempo2, mySpacer, myUnit)
{
	var isNs4 = (document.layers)? true:false;   			//NS 4 
	var isIe4 = (document.all)? true:false;   				//IE 4 
	var isDom = (document.getElementById)? true:false;   //dom

	var name = BoxName;
	var Step = myStep ? myStep : 1;
	var Interval1 = myTempo1 ? myTempo1 : 100;
	var Interval2 = myTempo2 ? myTempo2 : 100;
	var Spacer = mySpacer ? mySpacer : 0;
	var Unit = 'px';
	var ProcessId = null;
	var Container = new CreateObject(DivId);
//alert('Container.Object: '+Container.GetObject());
	var Children = new CreateChildren(Container.GetObject(),0,Spacer);
	var FirstChildren = 0;
	var LastChildren = Children.length-1;
	var threshold = Children[0].GetHeight()+Spacer;
	var myHeight = 0;
	for (var i=0;i<Children.length;i++) 
	{
		myHeight += (Children[i].GetHeight() + Spacer);
	}
	var TotalHeight = myHeight;
	Container.visibility = 'visible';
	
	//déclaration des fonctions publiques de la classe
	this.start = ScrollUp;
	this.stop = ScrollStop;
	
	//constructeur de Object
	function CreateObject(DivId,MyObject)
	{
		if (MyObject)
			var Obj = MyObject;
		else
			var Obj = GetObject(DivId);
		if (Obj)
		{
			var CSS = GetCSS(Obj);
			var Height = GetHeight(Obj);
			var Width = GetWidth(Obj);
			var X = GetTop(Obj);
			var Y = GetLeft(Obj);
			var Unit = GetUnit(Obj);
			//déf des fonctions publiques de la classe
			this.Move = MoveObject;
			this.Up = MoveObjectUp;
			this.Down = MoveObjectDown;
			this.GetObject = GetObj;
			this.GetHeight = GetH;
			this.GetY = GetY;
			
		}
		//return this;
		//fin du constructeur
				
				//définition des fonctions privées de l'objet CreateObject
				function GetNS4Object(MyID,MyDocument)
				{
					var MyObject= eval('MyDocument.'+MyID);
					if (!(MyObject))
						for(var i=0;i<MyDocument.layers.length;i++)
						{
							MyObject = GetNS4Object(MyID,MyDocument.layers[i].document);
							if (MyObject) break;
						}
					return MyObject;
				}
				
				
				function GetObject(MyID)
				{
					if (isDom) return document.getElementById(MyID);
					if (isIe4) return document.all[MyID];
					if (isNs4) return GetNS4Object(MyID,window.document);
					return 0;
				} 
				
				function GetCSS(MyObject)
				{
					if (isDom || isIe4) return MyObject.style;
					else if (isNs4) return MyObject;
					else return 0;
				}
				
				function GetHeight(MyObject)
				{ 
					if (isDom || isIe4) return MyObject.offsetHeight;
					else if (isNs4) return MyObject.clip.height;
					else return 0;
				}
					
				function GetWidth(MyObject)
				{ 
					if (isDom || isIe4) return MyObject.offsetWidth;
					else if (isNs4) return MyObject.clip.width;
					else return 0;
				}
				
				function GetTop(MyObject)
				{ 
					if (isDom || isIe4) 
						return (MyObject.offsetTop);
					if (isNs4) return MyObject.y;
					return 0;
				}
				
				function GetLeft(MyObject)
				{ 
					if (isDom || isIe4) return MyObject.offsetLeft;
					if (isNs4) return MyObject.x;
					return 0;
				}
					
				function GetUnit(MyObject)
				{ 
					var myUnit;
					if (isDom || isIe4) myUnit = MyObject.Unit;
					if (isNs4) myUnit = MyObject.Unit;
					if (myUnit != 'px' && myUnit != 'em' && myUnit != 'cm') myUnit = 'px';
					return myUnit;
				}
				
				//définition des fonctions publiques de l'objet CreateObject
				function GetObj() {
					return Obj;
				}
				
				function GetH() {
					return Height;
				}
				
				function GetY() {
					return Y;
				}
				
				function MoveObject(myX,myY)
				{
					X = myX;
					Y = myY;
					CSS.left=X + Unit;
					CSS.top=Y + Unit;
				}
				
				function MoveObjectUp(mystep)
				{
					Y -= mystep;
					CSS.top=Y + Unit;
				}
				
				function MoveObjectDown(mystep)
				{
					Y += mystep;
					CSS.top=Y + Unit;
				}
		
	} //fin du constructeur de CreateObject
	
	function DelTextNode(MyObject) //remove TextNode and Comments Node
	{
		var node = MyObject.firstChild;
		var next;
		
		while (node)
		{
			next = node.nextSibling;
			if (node.nodeType == 3 || node.nodeType == 8)
				MyObject.removeChild(node);
			node = next;
		}
	}
	
	function CreateChildren(MyObject,HoriSpacer,VertSpacer)
	{
		var i=0;
		var MyChildren = new Array();
		if (isDom)
		{
			DelTextNode(MyObject);
			for (i=0;i<MyObject.childNodes.length;i++)
			{
				MyChildren[i] = new CreateObject(0,MyObject.childNodes[i]);
				MyChildren[i].Move(i*HoriSpacer,i*VertSpacer);
			}
			return MyChildren;
		}
		if (isIe4)
		{
			for (i=0;i<MyObject.children.length;i++)
			{
				MyChildren[i] = new CreateObject(0,MyObject.children(i));
				MyChildren[i].Move(i*HoriSpacer,i*VertSpacer);
			}
			return MyChildren;
		}
		if (isNs4)
		{
			for (i=0;i<MyObject.document.layers.length;i++)
			{
			MyChildren[i] = new CreateObject(0,MyObject.layers[i]);
			MyChildren[i].Move(i*HoriSpacer,i*VertSpacer);
			}
			return MyChildren;   
		}
	}
	
	//définition des fonctions publiques
	function ScrollUp()	{
		var MyInterval = Interval1;
		ScrollStop();
		if (Children[FirstChildren].GetY()<-threshold) {
			MyInterval = Interval2;
			Children[FirstChildren].Down(TotalHeight);
			if (FirstChildren<Children.length-1) 	{
				FirstChildren++;
				threshold += Children[FirstChildren].GetHeight();
			}
			else
			{
				FirstChildren = 0;
				threshold = Children[FirstChildren].GetHeight()+Spacer;
			}
		}
		for (var i=0;i<Children.length;i++)
		{
			Children[i].Up(Step);    
		}
		ProcessId = setTimeout(name + '.start()', MyInterval);
	}
	
	  
	function ScrollStop() {
		if (ProcessId)
			clearTimeout(ProcessId);
		ProcessId = null;
	}
} //fin du constructeur de Box
//-->