var IE = document.all?true:false
if (!IE) document.captureEvents(Event.MOUSEMOVE)
document.onmousemove = getMouseY;

var myY = 0
var tempY = 0

function getMouseY(e) {
  if (IE) {
    tempY = event.clientY + document.body.scrollTop
  } else {
    tempY = e.pageY;
  }

  if (0 > tempY){tempY = 0}

  return true;
}

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=5

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){
    if (x != null) {
    	this.x=x;
    	this.css.left=this.x
     }

    this.y=y
    this.css.marginTop=this.y+'px';
}

function MoveAreaDown(move){
	if(this.y>-this.scrollHeight+objContainer.clipHeight+scY+23){
    this.MoveArea(0,this.y-move)
    if(loop) setTimeout(this.obj+".down("+move+")",speed)
	}

     objScrollbox.y = (Math.floor((220*objScroller.y)/(-this.scrollHeight+objContainer.clipHeight+228))+11);
     objScrollbox.css.marginTop = objScrollbox.y+'px'

}
function MoveAreaUp(move){
	if(0>this.y){
    this.MoveArea(0,this.y-move)
    if(loop) setTimeout(this.obj+".up("+move+")",speed)
	}

	objScrollbox.y = (Math.floor((220*objScroller.y)/(-this.scrollHeight+objContainer.clipHeight+228))+23);
     objScrollbox.css.marginTop = objScrollbox.y+'px';
}

function PerformScroll(speed){
	if(initialised){
		loop=true;
		if(speed>0) objScroller.down(speed)
		else objScroller.up(speed)
	}
}

function dragScroll() {
     if (tempY < scY+46) myY = scY+46;
     else if (tempY > scMaxH+scY-23) myY = scMaxH+scY-23;
     else myY = tempY;

    if (IE) objScrollbox.y = myY-scY-23-2; else
	objScrollbox.y = myY-scY-23-2;
		
     	objScrollbox.css.marginTop = objScrollbox.y+'px';

          objScroller.y = Math.floor(((-objScroller.scrollHeight+objContainer.clipHeight+228)*(objScrollbox.y-23))/220);

          objScroller.css.marginTop = objScroller.y+'px';

     if (loop) window.setTimeout("dragScroll()",10);
}

function CeaseScroll(){
    loop=false
    if(timer) clearTimeout(timer)
}

document.onmouseup= function(ev) {
     CeaseScroll();
};

var initialised;

function getElementTop(Elem) {
		if(document.getElementById) {	
			var elem = document.getElementById(Elem);
		} else if (document.all) {
			var elem = document.all[Elem];
		}
		yPos = elem.offsetTop;
		tempEl = elem.offsetParent;
		while (tempEl != null) {
  			yPos += tempEl.offsetTop;
	  		tempEl = tempEl.offsetParent;
  		}
		return yPos;
}

function InitialiseScrollableArea(){
    objContainer=new ConstructObject('divContainer');
    objContent=new ConstructObject('divContent');
    objScrollLine=new ConstructObject('divLine');
	scMaxH = parseInt(objScrollLine.css.height);
	scY = getElementTop('divLine');
	//alert(scY);
    objScrollbox=new ConstructObject('divBox');
    objScrollUp=new ConstructObject('Layer5')
    //objScrollDown=new ConstructObject('Layer6')

    objScroller=new ConstructObject('divContent','divContainer')
    objScroller.MoveArea(0,0)
    objContainer.css.visibility='visible'
	if(objContainer.clipHeight>objContent.clipHeight){
    objScrollUp.css.visibility='hidden'
    objScrollDown.css.visibility='hidden'
	}

    initialised=true;
}

