var speed = 60;
var loop = false;
var timer = false;
var initialised = false; 

function ConstructObject(obj,nest){
	nest = (!nest) ? '':'document.' + nest + '.';
	this.el = document.getElementById(obj);
	this.css = document.getElementById(obj).style;
	this.scrollHeight = this.el.offsetHeight;
	this.clipHeight = this.el.offsetHeight;
	this.up=MoveAreaUp;
	this.down = MoveAreaDown;
	this.MoveArea = MoveArea; 
	this.x; 
	this.y;
	this.obj = obj + "Object";
	eval(this.obj + "=this");
	return this;
} 
function MoveArea(x, y){ 
    this.x = x;
		this.y = y ;
    this.css.left = this.x + "px";
    this.css.top = this.y + "px";
} 
function MoveAreaDown(move){ 
	if(this.y > -this.scrollHeight + objContainer.clipHeight){ 
    this.MoveArea(0, this.y - move);
    if(loop) setTimeout(this.obj + ".down(" + move + ")", speed);
	} 
} 
function MoveAreaUp(move){ 
	if(this.y < 0){ 
    this.MoveArea(0, this.y - move); 
    if(loop) setTimeout(this.obj + ".up(" + move + ")", speed);
	} 
} 
function PerformScroll(speed){ 
	if(initialised){ 
		loop = true; 
		if(speed > 0) objScroller.down(speed);
		else objScroller.up(speed);
	} 
} 
function CeaseScroll(){ 
    loop = false;
    if(timer) clearTimeout(timer);
} 

function InitialiseScrollableArea(){ 
    objContainer = new ConstructObject('divContainer');
    objScroller = new ConstructObject('divContent', 'divContainer');
    objScroller.MoveArea(0,0);
    objContainer.css.visibility = 'visible';
    initialised = true; 
}