

var ns4 = (document.layers)? true:false;   			//NS 4 
var ie4 = (document.all)? true:false;   				//IE 4 
var dom = (document.getElementById)? true:false;   //DOM
var MyBox = null;
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);
  if (ie4) return document.all[MyID];
  if (ns4) return GetNS4Object(MyID,window.document);
  return 0; } 

function GetCSS(MyObject) 	{ if(MyObject) 	{ if (dom || ie4) return MyObject.style; else if (ns4) return MyObject; else return 0; } 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); if (ns4) return MyObject.y; 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; this.CSS.top=this.Y; }
function MoveObjectUp(mystep) { this.Y -= mystep; this.CSS.top=this.Y; }
function MoveObjectDown(mystep) { this.Y += mystep;this.CSS.top=this.Y; }

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) {
	if(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) {
  if(!MyObject) return null;
  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;
  }
  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;
  }
  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() {
	if(!this) return;
	if(!this.Children) return;
	if(!this.Children[this.FirstChildren]) return;
  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) return; if (this.ProcessId) clearTimeout(this.ProcessId); this.ProcessId = null; }

function Box(BoxName, DivId, myStep, myTempo1, myTempo2, mySpacer) {
	var child;
  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);
  if(this.Container)   {        
    this.Children = new CreateChildren(this.Container.Object,0,mySpacer);;
    if(this.Children && this.Children[0]) {
      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';
    }    
  }
}
if(Box) { Box.prototype.start = ScrollUp; Box.prototype.stop = ScrollStop; }

