var bw;
function getBrowserType() { 
    this.ver=navigator.appVersion 
    this.dom=document.getElementById?1:0 
    this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom)?1:0; 
    this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom)?1:0; 
    this.ie4=(document.all && !this.dom)?1:0; 
    this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0; 
    this.ns4=(document.layers && !this.dom)?1:0; 
    this.ie=(this.ie6 || this.ie5 || this.ie4);
    this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6) 
    this.name=this.ns4?'ns4':this.ns6?'ns6':this.ie4?'ie4':this.ie5?'ie5':this.ie6?'ie6':'x';
    return this 
} 
bw=new getBrowserType();
var speed=50;
var loop, timer, tim ;
var barMin, barMax;
var objButton;
// Global holds reference to selected element
var selectedObj = null;
// Globals hold location of click relative to element
var offsetY = 0;
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; 
//alert(obj+': this.css.document.height: '+this.css.document.height);
    this.scrollHeight=bw.ns4?this.css.document.height:this.el.offsetHeight 
    this.clipHeight=bw.ns4?this.css.clip.height:this.el.offsetHeight 
    this.scrollWidth=bw.ns4?this.css.document.width:this.el.offsetWidth 
    this.clipWidth=bw.ns4?this.css.clip.width:this.el.offsetWidth 
    this.top=bw.ns4?this.css.top:this.el.offsetTop;
    this.left=bw.ns4?this.css.left:this.el.offsetLeft;
    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){ 
var z;
    this.x=x;this.y=y 
    this.css.left=this.x 
    this.css.top=this.y 
    if (initialised && !dragging) {
    z=barMin + ((y * -1) / (objScroller.scrollHeight - objContainer.clipHeight) * (barMax));
    if (z>(barMax+barMin)) z=barMax+barMin;
		if (z<barMin) z=barMin;
    objButton.css.top = z;
    }
} 
 
function MoveAreaDown(move){ 
	if(this.y>-this.scrollHeight+objContainer.clipHeight){ 
    this.MoveArea(0,this.y-move) 
    if(loop) timer=setTimeout(this.obj+".down("+move+")",speed) 
	} 
} 
function MoveAreaUp(move){ 
	if(this.y<0){ 
    this.MoveArea(0,this.y-move) 
    if(loop) timer=setTimeout(this.obj+".up("+move+")",speed) 
	} 
} 
 
function PerformScroll(speed){ 
	if(initialised){ 
		loop=true; 
		if(speed>0) {
			//document.images['downArrow'].src = imgDownOn.src;
			objScroller.down(speed);
		} else {
			//document.images['upArrow'].src = imgUpOn.src;
			objScroller.up(speed) 
		}
	} 
	
} 
function PerformInitialScroll(speed){ 
	if(initialised){ 
		loop=false; 
		if(speed>0) objScroller.down(speed) 
		else objScroller.up(speed) 
		if ((objScroller.y<0 && objScroller.y>speed) || (objScroller.y>0 && objScroller.y<speed)) {
			objScroller.MoveArea(0,0); //objContainer.clipHeight);
		} else {
			if (objScroller.y!=0) timer=setTimeout('PerformInitialScroll('+speed+')',1) 
		}
	} 
} 
 
function CeaseScroll(dir){ 
    loop=false;
    if(timer) clearTimeout(timer);
//    if (dir=='Up')	document.images['upArrow'].src = imgUpOff.src;
//    else document.images['downArrow'].src = imgDownOff.src;
} 
var alertCount = 0;
function ScrollBanner() {
	if (parseInt(objScrollBanner.css.left)<-1300) objScrollBanner.css.left=411+'px';
	objScrollBanner.css.left=(parseInt(objScrollBanner.css.left)-2)+'px';
	if (alertCount<2) {
		alertCount++;
		//alert('objScrollBanner.css.left: '+objScrollBanner.css.left);
	}
	tim=setTimeout(ScrollBanner,1);
}
var initialised; 
function InitialiseScrollableArea(noBanner){ 
bw=new getBrowserType();
var bShowBanner=(noBanner!='true');
    objContainer=new ConstructObject('divContainer');
//alert('done container');
    objScroller=new ConstructObject('divContent','divContainer');
    objScroller.MoveArea(0,-objScroller.scrollHeight); //objContainer.clipHeight);
    objContainer.css.visibility='visible';
    
    //if (bShowBanner) {
    //objContainerBanner=new ConstructObject('divBannerContainer');
    //objScrollBanner=new ConstructObject('divBannerContent','divBannerContainer');
    //objScrollBanner.css.left=411+'px';
    //objContainerBanner.css.visibility='visible';
    //}
    
    objUp=new ConstructObject('divUpControl');
    objDown=new ConstructObject('divDownControl');
    objBar=new ConstructObject('divScrollerBar');
    objButton=new ConstructObject('divScrollerButton');
    //alert('Container height: '+objContainer.clipHeight+'\nScroll height: '+objScroller.scrollHeight);
		barMin = objBar.top;
		barMax = objBar.scrollHeight - objButton.scrollHeight;
		//alert('barMin: '+barMin+'\nbarMax: '+barMax);
    if (objScroller.scrollHeight>objContainer.clipHeight) {
			objUp.css.visibility='visible';
			objDown.css.visibility='visible';
			objBar.css.visibility='visible';
			objButton.css.visibility='visible';
    } else {
			objUp.css.visibility='hidden';
			objDown.css.visibility='hidden';
			objBar.css.visibility='hidden';
			objButton.css.visibility='hidden';
    }
		dragging = false;

		if (bw.ns4) {
			document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP)
			document.onmousedown = doMouseDown;
			document.onmousemove = doMouseMove;
			document.onmouseup = doMouseUp;
		} else if (bw.ns6) {
				var imgObject = document.getElementById('scrollerButton');
				imgObject.addEventListener("mousedown", doMouseDown, false);
				imgObject.addEventListener("mouseup", doMouseUp, false);
				imgObject.addEventListener("mousemove", doMouseMove, false);
		} else 	if (bw.ie) {
			document.onmousedown = doMouseDown;
			document.onmousemove = doMouseMove;
			document.onmouseup = doMouseUp
		}
    initialised=true; 
    //alert('initialised, bShowBanner: '+bShowBanner);
    //if (dropDown)  
		//	PerformInitialScroll(-12);
		//else
		objScroller.MoveArea(0,0);
    //if (bShowBanner)  
			//ScrollBanner();
} 

function setSelectedElem(theEvent) {
	if (bw.ns4) {
		var clickX = theEvent.pageX
		var clickY = theEvent.pageY
		var testObj
		for (var i = document.layers.length - 1; i >= 0; i--) {
			testObj = document.layers[i]
			if ((clickX > testObj.left) &&
				(clickX < testObj.left + testObj.clip.width) &&
				(clickY > testObj.top) &&
				(clickY < testObj.top + testObj.clip.height)) {
				selectedObj = testObj
				if (selectedObj != null) {
					selectedObj.zIndex = 100;
					dragging = true;
					return
				}
			}
		}
	} else if (bw.ns6) {
		selectedObj = theEvent.target;
		//alert('selectedObj.parentElement.id: '+selectedObj.parentElement.id);
		dragging = true;
		return;
	} else if (bw.ie) {
		var imgObj = event.srcElement;
		//alert('imgObj.parentElement.id: '+imgObj.parentElement.id);
		if (imgObj.parentElement.id=='divScrollerButton') {
			selectedObj = imgObj.parentElement.style;
			if (selectedObj != null) {
				dragging = true;
				return;
			}
		}
	}

	selectedObj = null;
	dragging = false;
	return;
}

var z,w;

function doMouseMove(theEvent) {
	if ((dragging) && (selectedObj != null)) {
		if (bw.ns4) {
			z=theEvent.pageY - offsetY;
			if (z<barMin) z=barMin;
			if (z>(barMax+barMin)) z=barMax+barMin;
			selectedObj.top = z;
			w=-((z-barMin)/barMax)*(objScroller.scrollHeight - objContainer.clipHeight);
			//alert(w+':'+z);
			objScroller.MoveArea(0,w);
				return false
		} else if (bw.ns6) {
			z=theEvent.pageY - offsetY;
			if (z<barMin) z=barMin;
			if (z>(barMax+barMin)) z=barMax+barMin;
			document.getElementById('divScrollerButton').style.top = z+"px";
			//status="Y="+z
		} else if (bw.ie) {
			z=window.event.y - offsetY;
			if (z<barMin) z=barMin;
			if (z>(barMax+barMin)) z=barMax+barMin;
			selectedObj.top = z;
			w=-((z-barMin)/barMax)*(objScroller.scrollHeight - objContainer.clipHeight);
			//alert(w+':'+z);
			objScroller.MoveArea(0,w);
				return false
		}
	}
}


function doMouseDown(theEvent) {

	setSelectedElem(theEvent)
	if (selectedObj != null) {
		if (bw.ns4) {
			offsetY = theEvent.pageY - selectedObj.top
			return false;
		} else if (bw.ie) {
			offsetY = window.event.offsetY
			return false;
		} else if (bw.ns6) {
			offsetY = theEvent.pageY - parseInt(document.getElementById('divScrollerButton').style.top);
			status="Y="+offsetY 
		}
	}
}

// Turn dragging off
function doMouseUp(theEvent) {
	if (dragging && bw.ns6) {
		w=-((z-barMin)/barMax)*(objScroller.scrollHeight - objContainer.clipHeight);
		objScroller.MoveArea(0,w);
	}
	dragging = false;
	selectedObj = null;
}
