//
//	ScrollBar
//

//---------------------------------------------------------
function ScrollBar(scrID)
	{
	this.min = 1;
	this.max = 1;
	this.val = 1;
	this.viewed;
	this.upArrowID = "scrollUpArrowID"+scrID;
	this.dnArrowID = "scrollDnArrowID"+scrID;
	this.thumbID = "scrollThumbID"+scrID;
	this.divID = "SCRDIV"+scrID;
	this.CreateScrollBar();
	}

//---------------------------------------------------------
ScrollBar.prototype.CreateScrollBar = function()
	{
	var s=	"<img id='"+this.upArrowID+"'; "+
			"onmousedown='UpArrowMouseDown(this)' "+
			"onmouseup='UpArrowMouseUp(this)' "+
			"onmouseover='UpArrowMouseOver(this)' "+
			"onmouseout='UpArrowMouseOut(this)' "+
			"ondrag='ReturnFalse()' "+
			"style='z-index: 300; position: relative; ';"+
			"></img>"+
			"<img id='"+this.dnArrowID+"'; "+
			"onmousedown='DnArrowMouseDown(this)' "+
			"onmouseup='DnArrowMouseUp(this)' "+
			"onmouseover='DnArrowMouseOver(this)' "+
			"onmouseout='DnArrowMouseOut(this)' "+
			"ondrag='ReturnFalse()' "+
			"style='z-index: 300; position: relative; ';"+
			"></img>"+	
			"<img id='"+this.thumbID+"'; "+
			"onmousedown='ThumbMouseDown(this)' "+
			"onmouseup='ThumbMouseUp(this)' "+
			"onmouseover='ThumbMouseOver(this)' "+
			"onmouseout='ThumbMouseOut(this)' "+
			"ondrag='ThumbDrag(this)' "+
			"style='z-index: 300; position: relative; ';"+
			"></img>";

	var body = document.getElementsByTagName("body")[0];
	this.div = document.createElement("div");
	this.div.id = this.divID;
	this.div.scrollObj = this;
	this.div.style.display = "none";
	this.div.style.position = "absolute";
	this.div.style.zIndex = 260;
	this.div.style.backgroundColor = 0xdddddd;
	this.div.innerHTML = s;
	this.div.left = 90;
	body.appendChild(this.div);
	
	this.upArrowImg = document.getElementById(this.upArrowID);
	this.dnArrowImg = document.getElementById(this.dnArrowID);
	this.thumbImg = document.getElementById(this.thumbID);
	}
//-----------------------------------------------------
function ImageToScrollObj(imgObj)
	{
	var elem = imgObj.parentNode;
	while (elem.id.substring(0,6) != "SCRDIV")
		{
		elem = elem.parentNode;	
		}
	return elem.scrollObj;
	}

 //---------------------------------------------------------
ScrollBar.prototype.SetHookFunc = function(scrollingObj, hookFunc)
	{
	this.scrollingObj = scrollingObj;
	this.hookFunc = hookFunc;
	}
 //---------------------------------------------------------
ScrollBar.prototype.SetBounds = function(top, left, height, width )
	{
	var divStyle = this.div.style;
	divStyle.top = top;
	divStyle.left = left;
	divStyle.width = width;
	divStyle.height = height;
	
	this.top = top;
	this.left = left;
	this.width = width;
	this.height = height;
	
	var up = this.upArrowImg;
	var dn = this.dnArrowImg;
	var th = this.thumbImg;

	up.style.position = "relative";
	up.style.left=0;
	up.style.top = 0;
	up.style.width = this.width;
	up.style.height = this.width;
	up.style.cursor = "pointer";
//	Event_AddEventObject(this, top+up.style.top, left+up.style.left, up.height, up.width, ScrollUpOnFunc, ScrollUpOffFunc);
	
	dn.style.position = "relative";
	dn.style.left=0;
	dn.style.top = this.height-this.width;
	dn.style.width = this.width;
	dn.style.height = this.width;
	dn.style.cursor = "pointer";
//	Event_AddEventObject(this, top+dn.style.top, left+dn.style.left, dn.height, dn.width, ScrollDnOnFunc, ScrollDownOffFunc);

	th.style.position = "relative";
	th.style.left=0;
	th.style.top = this.width;
	th.style.width = this.width;
	th.style.height = this.width;
	th.style.cursor = "pointer";
	}
//---------------------------------------------------------
ScrollBar.prototype.SetImages = function(upArrowNormal,upArrowOver,upArrowDown,
										  dnArrowNormal,dnArrowOver,dnArrowDown,
										  thumbNormal,thumbOver,thumbDown,thumbBkgnd)
	{
	// -- preload images ---
	var img = new Image();
	img.src = upArrowNormal;
	img.src = upArrowOver;
	img.src = upArrowDown;
	img.src = dnArrowNormal;
	img.src = dnArrowOver;
	img.src = dnArrowDown;
	img.src = thumbNormal;
	img.src = thumbOver;
	img.src = thumbDown;
	img.src = thumbBkgnd;
	delete img;
	
	this.upArrowNormal = upArrowNormal;
	this.upArrowOver = upArrowOver;
	this.upArrowDown = upArrowDown;
	
	this.dnArrowNormal = dnArrowNormal;
	this.dnArrowOver = dnArrowOver;
	this.dnArrowDown = dnArrowDown;
	
	this.thumbNormal = thumbNormal;
	this.thumbOver = thumbOver;
	this.thumbDown = thumbDown;

	this.upArrowImg.src = upArrowNormal;
	this.dnArrowImg.src = dnArrowNormal;
	this.thumbImg.src = thumbNormal;
	}

//---------------------------------------------------------
ScrollBar.prototype.SetInitValues = function(min, max, val, viewed)
	{
	this.min = min;
	this.max = max;
	this.val = val;

	this.viewed = viewed;
	var valRng = max - min + 1;
	var pixRange = this.height - (2*this.width);
	var bkTop = this.width;
	var thTop = bkTop + ((this.height * (val-min)) / valRng);
	this.thumbImg.style.top = thTop + "px";
	
	if (max <= viewed)
		{
		this.thumbImg.style.display = "none";
		}
	else
		{
		var thHt = (pixRange*viewed)/valRng;
		if (thHt < 15) thHt = 15;
		this.thumbImg.style.height = thHt + "px";
		this.thumbImg.style.display = "inline";
		}
	}
//---------------------------------------------------------
ScrollBar.prototype.SetMax = function(max)
	{
	this.SetInitValues(this.min, max, this.val, this.viewed);
	}
//---------------------------------------------------------
ScrollBar.prototype.ChangeValue = function(increm)
	{
	var newVal = this.val + increm;
	
	if (newVal < this.min)
		{
		newVal = this.min;
		}
	else
		{
		if (newVal > this.max)
			{
			newVal = this.max
			}
		}
	this.SetInitValues(this.min, this.max, newVal, this.viewed);
	this.hookFunc(this.scrollingObj, newVal);
	}

//---------------------------------------------------------
ScrollBar.prototype.SetValue = function(val)
	{
	if (val < this.min)
		{
		val = this.min;
		}
	else
		{
		if (val > this.max)
			{
			val = this.max
			}
		}
	this.SetInitValues(this.min, this.max, val, this.viewed);
	this.hookFunc(this.scrollingObj, val);
	}

//---------------------------------------------------------
function ScrollUpOnFunc(scrollObj)
	{
//	scrollObj.ChangeValue(-1);
	scrollObj.ChangeValue(-scrollObj.viewed-1);
	}
//---------------------------------------------------------
function ScrollUpOffFunc(scrollObj)
	{
	}
//---------------------------------------------------------
function ScrollDnOnFunc(scrollObj)
	{
//	scrollObj.ChangeValue(1);
	scrollObj.ChangeValue(-scrollObj.viewed-1);
	}
//---------------------------------------------------------
function ScrollDownOffFunc(scrollObj)
	{
	}

//---------------------------------------------------------
ScrollBar.prototype.Show = function()
	{
	this.div.style.display = "inline";
	}
//---------------------------------------------------------
ScrollBar.prototype.Hide = function()
	{
	this.div.style.display = "none";
	}
//---------------------------------------------------------
ScrollBar.prototype.ScrollPageUp = function()
	{
	this.ChangeValue(-this.viewed);	
	}
//---------------------------------------------------------
ScrollBar.prototype.ScrollPageDn = function()
	{
	this.ChangeValue(this.viewed);	
	}
//---------------------------------------------------------
ScrollBar.prototype.ScrollUpOne = function()
	{
	this.ChangeValue(-1);	
	}
//---------------------------------------------------------
ScrollBar.prototype.ScrollDnOne = function()
	{
	this.ChangeValue(1);	
	}

//---------------------------------------------------------
function UpArrowMouseDown(img)
	{
	var scrollBar = ImageToScrollObj(img);
//	window.event.cancelBubble = true;
 	scrollBar.upArrowImg.src = scrollBar.upArrowDown;
	scrollBar.ScrollUpOne();
	}
//---------------------------------------------------------
function UpArrowMouseUp(img)
	{
	var scrollBar = ImageToScrollObj(img);
	scrollBar.upArrowImg.src = scrollBar.upArrowOver;
	}
//---------------------------------------------------------
function UpArrowMouseOver(img)
	{
	var scrollBar = ImageToScrollObj(img);
	if (Event_IsButtonDown())
		{
		scrollBar.upArrowImg.src = scrollBar.upArrowDown;
		scrollBar.ChangeValue(-1);
		}
	else
		{
		scrollBar.upArrowImg.src = scrollBar.upArrowOver;

		}
	}
//---------------------------------------------------------
function UpArrowMouseOut(img)
	{
	var scrollBar = ImageToScrollObj(img);
	scrollBar.upArrowImg.src = scrollBar.upArrowNormal;
	}
	
//---------------------------------------------------------
function DnArrowMouseDown(img)
	{
	var scrollBar = ImageToScrollObj(img);
//	window.event.cancelBubble = true;
 	scrollBar.dnArrowImg.src = scrollBar.dnArrowDown;
	scrollBar.ScrollDnOne();
	}
//---------------------------------------------------------
function DnArrowMouseUp(img)
	{
	var scrollBar = ImageToScrollObj(img);
	scrollBar.dnArrowImg.src = scrollBar.dnArrowOver;
	}
//---------------------------------------------------------
function DnArrowMouseOver(img)
	{
	var scrollBar = ImageToScrollObj(img);
	if (Event_IsButtonDown())
		{
		scrollBar.dnArrowImg.src = scrollBar.dnArrowDown;
		scrollBar.ChangeValue(1);
		}
	else
		{
		scrollBar.dnArrowImg.src = scrollBar.dnArrowOver;
		}
	}
//---------------------------------------------------------
function DnArrowMouseOut(img)
	{
	var scrollBar = ImageToScrollObj(img);
	scrollBar.dnArrowImg.src = scrollBar.dnArrowNormal;
	}
		
//---------------------------------------------------------
function ThumbMouseDown(img)
	{
	var scrollBar = ImageToScrollObj(img);
	var mouseInfo = Event_GetMouseInfo();
//	window.event.cancelBubble = true;
 	scrollBar.thumbImg.src = scrollBar.thumbDown;
	scrollBar.thumbVMouseOffset = mouseInfo.y - scrollBar.top;
//	scrollBar.ChangeValue(1);
	}
//---------------------------------------------------------
function ThumbMouseUp(img)
	{
	var scrollBar = ImageToScrollObj(img);
	scrollBar.thumbImg.src = scrollBar.thumbOver;
	}
//---------------------------------------------------------
function ThumbMouseOver(img)
	{
	var scrollBar = ImageToScrollObj(img);
	if (Event_IsButtonDown())
		{
		scrollBar.thumbImg.src = scrollBar.thumbNormal;
		}
	else
		{
		scrollBar.thumbImg.src = scrollBar.thumbOver;
		}
	}
//---------------------------------------------------------
function ThumbMouseOut(img)
	{
	var scrollBar = ImageToScrollObj(img);
	scrollBar.thumbImg.src = scrollBar.thumbNormal;
	}

//---------------------------------------------------------
function ThumbDrag(img)
	{
	var scrollBar = ImageToScrollObj(img);
	var mouseInfo = Event_GetMouseInfo();
	var s = img.style;
	
	var top = mouseInfo.y - scrollBar.thumbVMouseOffset;

	var highTop = scrollBar.top + scrollBar.width;
	if (top < highTop)
		{
		top = highTop
		}
	else
		{
		var lowestTop = scrollBar.height - scrollBar.width - s.height;
		if (top > lowestTop)
			{
			top = lowestTop;
			}
		}
	}
