/************************************************************************************************************
(C) www.dhtmlgoodies.com, September 2005

This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website.	

Terms of use:
You are free to use this script as long as the copyright message is kept intact. However, you may not
redistribute, sell or repost it without our permission.

Thank you!

www.dhtmlgoodies.com
Alf Magne Kalleland

************************************************************************************************************/
var scrollDivs = new Object();

// buttonSpeed: How fast the content scrolls when you click the scroll buttons(Up and down arrows) - default: 2
// scrollTimer: Also how fast the content scrolls. By decreasing this value, the content will move faster	- default: 10
function init_scroll_div(name, width, height, scrollTimer, buttonSpeed) {
	var scrollDiv = new Object();
	
	scrollDiv.scrollName = name;
	scrollDiv.scrollActive = false;
	
	scrollDiv.eventYPos = false;
	
	scrollDiv.scrollbuttonActive = false;
	scrollDiv.scrollbuttonDirection = false;
	scrollDiv.scrollbuttonSpeed = buttonSpeed != undefined ? buttonSpeed : 2; 
	scrollDiv.scrollTimer = scrollTimer != undefined ? scrollTimer : 10;	
	
	scrollDiv.scrollMoveToActive = false;
	scrollDiv.scrollMoveToYPosition = false;

	scrolldiv_setWidth(name, width);
	scrolldiv_setHeight(name, height);
	

	// init scroll
	scrollDiv.visibleContentHeight = document.getElementById(name + '_scrollbar').offsetHeight;
	scrollDiv.contentHeight = document.getElementById(name + '_content').offsetHeight - scrollDiv.visibleContentHeight;	
	scrollDiv.scrollHandleObj = document.getElementById(name + '_theScroll');
	scrollDiv.scrollHandleHeight = scrollDiv.scrollHandleObj.offsetHeight;	
	scrollDiv.scrollbarTop = document.getElementById(name + '_scrollbar').offsetTop;		
	
	document.getElementById(name + '_theScroll').onmousedown = function(e) { scrollDiv_startScroll(name, e); };
	document.getElementById(name + '_theScroll').onmouseup = function(e) { scrollDiv_stopScroll(name); };
	document.getElementById(name + '_scrollbar').onselectstart = function(e) { cancelEvent(name, e); };
	document.getElementById(name + '_scrollbar').onmousedown = function(e) { scrolldiv_scrollMoveToInit(name, e); };
	document.getElementById(name + '_scrollDown').onmousedown = function(e) { scrolldiv_scrollButton(name, this); };
	document.getElementById(name + '_scrollDown').onmouseup = function(e) { scrolldiv_scrollButtonStop(name, e); };
	document.getElementById(name + '_scrollDown').onselectstart = function(e) { cancelEvent(); };
	document.getElementById(name + '_scrollUp').onmousedown = function(e) { scrolldiv_scrollButton(name, this); };
	document.getElementById(name + '_scrollUp').onmouseup = function(e) { scrolldiv_scrollButtonStop(name, e); };
	document.getElementById(name + '_scrollUp').onselectstart = function(e) { cancelEvent(); };
	
	scrollDivs[name] = scrollDiv;
}
	
function scrollDiv_scroll(e)
{
	if(document.all)e = event;
	if(e.button!=1 && document.all)return;
	
	for (var name in scrollDivs) {		
		var scrollDiv = scrollDivs[name];
		
		if (!scrollDiv.scrollActive) continue;
		
		if (scrollDiv.contentHeight <= 0) continue;
		
		var scrollOffset = document.documentElement.scrollTop;
		var topPos = scrollDiv.scrollbarTop + e.clientY + scrollOffset - scrollDiv.eventYPos; 
		if (topPos < 0) {
			topPos = 0;
		}
		if (topPos/1 > scrollDiv.visibleContentHeight - (scrollDiv.scrollHandleHeight + 4)/1) {
			topPos = scrollDiv.visibleContentHeight-(scrollDiv.scrollHandleHeight + 4);
		}
		document.getElementById(name + '_theScroll').style.top = topPos + 'px';
		document.getElementById(name + '_content').style.top = 0 - Math.floor((scrollDiv.contentHeight) * ((topPos)/(scrollDiv.visibleContentHeight - scrollDiv.scrollHandleHeight)))+'px' 
	}
}

function scrollDiv_startScroll(name, e)
{
	if (document.all) {
		e = event;
	}
	var scrollDiv = scrollDivs[name];
	scrollDiv.scrollbarTop = document.getElementById(name + '_theScroll').offsetTop;
	var scrollOffset = document.documentElement.scrollTop;
	scrollDiv.eventYPos = e.clientY + scrollOffset;
	scrollDiv.scrollActive = true;
}
function scrollDiv_stopScroll(name)
{
	var scrollDiv = scrollDivs[name];
	scrollDiv.scrollActive = false;
	scrollDiv.scrollbuttonActive = false;
	scrollDiv.scrollMoveToActive = false;
}
function scrollDiv_stopScrollAll()
{
	for (var name in scrollDivs) {
		var scrollDiv = scrollDivs[name];
		scrollDiv.scrollActive = false;
		scrollDiv.scrollbuttonActive = false;
		scrollDiv.scrollMoveToActive = false; 
	}
}

/*
Click on the slider
Move the content to the this point
*/
function scrolldiv_scrollMoveToInit(name, e)
{		
	if (document.all) {
		e = event;
	}
	var scrollDiv = scrollDivs[name];
	scrollDiv.scrollMoveToActive = true;
	var scrollOffset = document.documentElement.scrollTop;
	scrollDiv.scrollMoveToYPosition = e.clientY + scrollOffset - document.getElementById(name + '_scrollbar').offsetTop;
	if (document.getElementById(name + '_theScroll').offsetTop/1 > scrollDiv.scrollMoveToYPosition - scrollDiv.scrollHandleHeight) {
		scrollDiv.scrollbuttonDirection = scrollDiv.scrollbuttonSpeed * -2; 
	} else {
		scrollDiv.scrollbuttonDirection = scrollDiv.scrollbuttonSpeed * 2;
	}
	scrolldiv_scrollMoveTo(name);	
}

function scrolldiv_scrollMoveTo(name)
{
	var scrollDiv = scrollDivs[name];
	if (!scrollDiv.scrollMoveToActive || scrollDiv.scrollActive) {
		return;
	}
	if (scrollDiv.contentHeight <= 0) return;
	var topPos = document.getElementById(name + '_theScroll').style.top.replace('px','');
	topPos = topPos/1 + scrollDiv.scrollbuttonDirection;
	if (topPos < 0) {
		topPos = 0;
		scrollDiv.scrollMoveToActive = false;
	}
	if (topPos/1 > scrollDiv.visibleContentHeight - (scrollDiv.scrollHandleHeight + 4) /1) {
		topPos = scrollDiv.visibleContentHeight - (scrollDiv.scrollHandleHeight + 4);	
		scrollDiv.scrollMoveToActive = false;
	}
	if (scrollDiv.scrollbuttonDirection < 0 &&
			topPos < scrollDiv.scrollMoveToYPosition - scrollDiv.scrollHandleHeight/2) {
		return;	
	}
	if (scrollDiv.scrollbuttonDirection > 0 &&
			topPos > scrollDiv.scrollMoveToYPosition - scrollDiv.scrollHandleHeight/2) {
		return;	
	}
	document.getElementById(name + '_theScroll').style.top = topPos + 'px';
	document.getElementById(name + '_content').style.top = 0 - Math.floor((scrollDiv.contentHeight) * ((topPos)/(scrollDiv.visibleContentHeight - scrollDiv.scrollHandleHeight)))+'px';
	setTimeout('scrolldiv_scrollMoveTo("' + name + '")', scrollDiv.scrollTimer);		
}

function cancelEvent()
{
	return false;			
}

function scrolldiv_scrollButton(name, target)
{
	var scrollDiv = scrollDivs[name];
	if (target.id == name + '_scrollDown') {
		scrollDiv.scrollbuttonDirection = scrollDiv.scrollbuttonSpeed; 
	} else {
		scrollDiv.scrollbuttonDirection = scrollDiv.scrollbuttonSpeed * -1;
	}
	scrollDiv.scrollbuttonActive = true;
	scrolldiv_scrollButtonScroll(name);
}
function scrolldiv_scrollButtonScroll(name)
{
	var scrollDiv = scrollDivs[name];
	if (!scrollDiv.scrollbuttonActive) {
		return;
	}
	if (scrollDiv.contentHeight <= 0) return;
	var topPos = document.getElementById(name + '_theScroll').style.top.replace('px','');
	topPos = topPos/1 + scrollDiv.scrollbuttonDirection;
	if (topPos < 0) {
		topPos = 0;
		scrollDiv.scrollbuttonActive = false;
	}
	if (topPos/1 > scrollDiv.visibleContentHeight - (scrollDiv.scrollHandleHeight + 4)/1) {
		topPos = scrollDiv.visibleContentHeight - (scrollDiv.scrollHandleHeight + 4);	
		scrollDiv.scrollbuttonActive = false;
	}	
	document.getElementById(name + '_theScroll').style.top = topPos + 'px';
	document.getElementById(name + '_content').style.top = 0 - Math.floor((scrollDiv.contentHeight) * ((topPos)/(scrollDiv.visibleContentHeight - scrollDiv.scrollHandleHeight)))+'px';
	setTimeout('scrolldiv_scrollButtonScroll("' + name + '")', scrollDiv.scrollTimer);
}
function scrolldiv_scrollButtonStop(name)
{
	var scrollDiv = scrollDivs[name];
	scrollDiv.scrollbuttonActive = false;
}


/*
Setting total width of scrolling div
*/
function scrolldiv_setWidth(name, newWidth)
{
	document.getElementById('dhtmlgoodies_' + name).style.width = newWidth + 'px';
	document.getElementById(name + '_parentContainer').style.width = newWidth-30 + 'px';		
}

/*
Setting total height of scrolling div
*/
function scrolldiv_setHeight(name, newHeight)
{
	document.getElementById('dhtmlgoodies_' + name).style.height = newHeight + 'px';
	document.getElementById(name + '_parentContainer').style.height = newHeight + 'px';
	document.getElementById(name + '_slider').style.height = newHeight + 'px';
	document.getElementById(name + '_scrollbar').style.height = newHeight-25 + 'px';		
}
/*
Setting new background color to the slider 
*/
function setSliderBgColor(rgbColor)
{
	document.getElementById(name + '_scrollbar').style.backgroundColor = rgbColor;
	document.getElementById(name + '_scrollUp').style.backgroundColor = rgbColor;
	document.getElementById(name + '_scrollDown').style.backgroundColor = rgbColor;
}
/*
Setting new content background color
*/
function setContentBgColor(name, rgbColor)
{
	document.getElementById(name + '_parentContainer').style.backgroundColor = rgbColor;
}

/*
Change from the default color
*/	
function scrolldiv_setColor(name, rgbColor)
{
	document.getElementById(name + '_scrollbar').style.borderColor = rgbColor;
	document.getElementById(name + '_theScroll').style.backgroundColor = rgbColor;
	document.getElementById(name + '_scrollUp').style.borderColor = rgbColor;
	document.getElementById(name + '_scrollDown').style.borderColor = rgbColor;
	document.getElementById(name + '_scrollUp').style.color = rgbColor;
	document.getElementById(name + '_scrollDown').style.color = rgbColor;
	document.getElementById(name + '_parentContainer').style.borderColor = rgbColor;
}
/*
if (document.all) {
	document.body.onmouseup = scrollDiv_stopScrollAll; 
	document.body.onmousemove = scrollDiv_scroll;
} else {
	document.documentElement.onmouseup = scrollDiv_stopScrollAll;
	document.documentElement.onmousemove = scrollDiv_scroll;
}	*/
	document.documentElement.onmouseup = scrollDiv_stopScrollAll;
	document.documentElement.onmousemove = scrollDiv_scroll;

