/* Copyright 2001 : Atout Développement */
/* Auteur : Yvan Vanwynsberghe		    */
/* Modifié par : Alexandre Bonhomme		*/
var ns4=(document.layers)?true:false;   		//NS 4 
var ie4=(document.all)?true:false;   			//IE 4 
var dom=(document.getElementById)?true:false;	//DOM

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(dom) return document.getElementById(MyID);
	else if(ie4) return document.all[MyID];
	else if(ns4) return GetNS4Object(MyID,window.document);
	else return 0;
} 
function GetCSS(MyObject){
	if(dom||ie4) return MyObject.style;
	else if(ns4) return MyObject;
	else return 0;
}
function GetHeight(MyObject){ 
	if(dom||ie4) return MyObject.offsetHeight;
	else if(ns4) return MyObject.clip.height;
	else return 0;
}
function GetWidth(MyObject){ 
	if(dom||ie4) return MyObject.offsetWidth;
	else if(ns4) return MyObject.clip.width;
	else return 0;
}
function GetTop(MyObject){ 
	if(dom||ie4) return (MyObject.offsetTop);
	else if(ns4) return MyObject.y;
	else return 0;
}
function GetLeft(MyObject){ 
	if(dom||ie4) return MyObject.offsetLeft;
	if(ns4) return MyObject.x;
	return 0;
}
function MoveObject(myX,myY){
	this.X=myX;
	this.Y=myY;
	this.CSS.left=this.X+'px';
	this.CSS.top=this.Y+'px';
}
function MoveObjectUp(mystep){
	this.Y-=mystep;
	this.CSS.top=this.Y+'px';
}
function MoveObjectDown(mystep){
	this.Y+=mystep;
	this.CSS.top=this.Y+'px';
}
function CreateObject(DivId,MyObject){
	if(MyObject) this.Object=MyObject;
	else this.Object=GetObject(DivId);
    
    if(this.Object){
		this.CSS=GetCSS(this.Object);
		this.Height=GetHeight(this.Object);
		this.Width=GetWidth(this.Object);
		this.X=GetTop(this.Object);
		this.Y=GetLeft(this.Object);
		this.Move=MoveObject;
		this.Up=MoveObjectUp;
		this.Down=MoveObjectDown;
	}
	return this;
}
function DelTextNode(MyObject){
	var node=MyObject.firstChild;
	var next;

	while (node){
		next=node.nextSibling;
		if(node.nodeType==3) MyObject.removeChild(node);
		node=next;
	}
}
function CreateChildren(MyObject,HoriSpacer,VertSpacer){
	var i=0;
	var MyChildren=new Array();
	if(dom){
		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;
	}
	else if(ie4){
		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;
	}
	else if(ns4){
		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;
	}
}
function ScrollUp(){
	var MyInterval=this.Interval1;
	this.stop();
	if(this.Children[this.FirstChildren].Y<-this.threshold){
		MyInterval=this.Interval2;
		this.Children[this.FirstChildren].Down(this.TotalHeight);
		if(this.FirstChildren<this.Children.length-1){
			this.FirstChildren++;
			this.threshold+=this.Children[this.FirstChildren].Height;
		}
		else{
			this.FirstChildren=0;
			this.threshold=this.Children[this.FirstChildren].Height+this.Spacer;
			}
	}
	for(var i=0;i<this.Children.length;i++){this.Children[i].Up(this.Step);}
	this.ProcessId=setTimeout(this.name+'.start()', MyInterval);
}
function ScrollStop(){
	if(this.ProcessId) clearTimeout(this.ProcessId);
	this.ProcessId = null;
}
function Box(BoxName, DivId, myStep, myTempo1, myTempo2, mySpacer){
	this.name=BoxName;
	this.Step=myStep?myStep:1;
	this.Interval1=myTempo1?myTempo1:100;
	this.Interval2=myTempo2?myTempo2:100;
	this.Spacer=mySpacer?mySpacer:0;
	this.ProcessId=null;
	this.Container=new CreateObject(DivId);
	this.Children=new CreateChildren(this.Container.Object,0,mySpacer);
	this.FirstChildren=0;
	this.LastChildren=this.Children.length-1;
	this.threshold=this.Children[0].Height+this.Spacer;
	var myHeight=0;
	for(var i=0;i<this.Children.length;i++){myHeight+=(this.Children[i].Height+this.Spacer);}
	this.TotalHeight=myHeight;
	this.Container.visibility='visible';
}
Box.prototype.start=ScrollUp;
Box.prototype.stop=ScrollStop;
