
// begin absolutely positioned scrollable area object scripts 
// Extension developed by David G. Miles 
// Original Scrollable Area code developed by Thomas Brattli 
function verifyCompatibleBrowser(){ 
    this.ver=navigator.appVersion 
    this.dom=document.getElementById?1:0 
    this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom)?1:0; 
    this.ie4=(document.all && !this.dom)?1:0; 
    this.ns5=(this.dom && parseInt(this.ver) >= 5) ?1:0; 
 
    this.ns4=(document.layers && !this.dom)?1:0; 
    this.bw=(this.ie5 || this.ie4 || this.ns4 || this.ns5) 
    return this 
} 
bw=new verifyCompatibleBrowser() 
 
 
var speed=50 
 
var loop, timer 
 
function ConstructObject(obj,nest){ 
    nest=(!nest) ? '':'document.'+nest+'.' 
    this.el=bw.dom?document.getElementById(obj):bw.ie4?document.all[obj]:bw.ns4?eval(nest+'document.'+obj):0; 
    this.css=bw.dom?document.getElementById(obj).style:bw.ie4?document.all[obj].style:bw.ns4?eval(nest+'document.'+obj):0; 
    this.scrollHeight=bw.ns4?this.css.document.height:this.el.offsetHeight 
    this.clipHeight=bw.ns4?this.css.clip.height: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 
    this.css.top=this.y 
} 
 
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) 
} 
var iniAtialised; 
function InitialiseScrollableArea(){ 
    objContainer=new ConstructObject('divContainer') 
    objScroller=new ConstructObject('divContent','divContainer') 
    objScroller.MoveArea(0,0) 
    objContainer.css.visibility='visible' 
    initialised=true; 
} 
// end absolutely positioned scrollable area object scripts 



<!-- Browser Check -->
iens6=document.all||document.getElementById
ns4=document.layers

<!--GLOBAL SCROLLER VARIABLES-->

var scrollspeed = 40 <!-- scrollspeed, lower is faster -->

var step=1
var contentobj
var contentheight
var theobj
var theheight
var thename
var thecontainer
var theScroller
var timerup
var timerdown
var timerupname
var timerdownname
<!--END GLOBAL SCROLLER VARIABLES-->

<!--GLOBAL SCROLLER FUNCTIONS-->
function director(incomingScroller,theFunction) {
stopall()
theScroller=incomingScroller
theobj = "contentobj"+theScroller
theheight = "contentheight"+theScroller
if(iens6){
	thename = "content"+theScroller
	theobj=document.getElementById? document.getElementById(thename):document.all.thename
	theheight=theobj.offsetHeight
	if (document.getElementById&&!document.all){
   		step=5
	}
}else if(ns4){
	thename = "nscontent"+theScroller
	thecontainer = "nscontainer"+theScroller
	theobj = eval("document."+thecontainer+".document."+thename)
	theheight=theobj.clip.height
}
	if(theFunction=="sd") {
		timerdown="window.down"+theScroller
		timerdownname="down"+theScroller
		scrolldown()
	}else if(theFunction=="su") {
		timerup="window.up"+theScroller
		timerupname="up"+theScroller
		scrollup()
	}else if(theFunction=="sa") {
		stopall()
	}else if(theFunction=="st") {
		shifttotop()
	}
}
<!-- scroll down function -->
function scrolldown() {
	if(iens6&&parseInt(theobj.style.top)>=(theheight*(-1)+100)){
		theobj.style.top=parseInt(theobj.style.top)-step
	}else if(ns4&&theobj.top>=(theheight*(-1)+100)){
		theobj.top-=step
	}
	timerdownname = setTimeout("scrolldown()",scrollspeed)
}
<!-- scroll up function -->
function scrollup() {
	if(iens6&&parseInt(theobj.style.top)<=0){
		theobj.style.top=parseInt(theobj.style.top)+step
	}else if(ns4&&theobj.top<=0){ 
		theobj.top+=step
	}
	timerupname = setTimeout("scrollup()",scrollspeed)	
}
<!-- function to stop all scroll timers -->
function stopall() {
	if(timerup){
		clearTimeout(timerupname)
	}
	if(timerdown){
		clearTimeout(timerdownname)
	}
}
<!-- function that shifts the object to top -->
function shifttotop(){
	stopall()
	if (iens6) {
		theobj.style.top=0
	}else{
		theobj.top=0
	}
}

<!--END GLOBAL SCROLLER FUNCTIONS-->