/*
###################################
#
#	Scroller.js
#
#	Provides functionality for scrollable div boxes with the use of graphical scrollbuttons.
#
#	Settings:
#
#		scrlbox_speed_max
#			The maximum length between scrolling actions in milliseconds (the slowest scroll speed)
#			
#		scrlbox_speed_min
#			The minimum length between scrolling actions in milliseconds (the fastest scroll speed)
#			
#		scrlbox_increment
#			The height of each scroll action in pixels
#			
#
#	sample html:
#
#
#
	<div id="test" style="position: relative; top: 0px; left: 0px; width: 100px; height: 100px; border: 1px solid black;">
		<div id="test_scroller" style="position: relative;">
			<div id="test_scroller_content">
				<div style="backgroud-color: white;">Item 1</div>
				<div style="backgroud-color: gray;">Item 2</div>
				<div style="backgroud-color: white;">Item 3</div>
				<div style="backgroud-color: gray;">Item 4</div>
				<div style="backgroud-color: white;">Item 5</div>
				<div style="backgroud-color: gray;">Item 6</div>
				<div style="backgroud-color: white;">Item 7</div>
				<div style="backgroud-color: gray;">Item 8</div>
			</div>
		</div>
	</div>
	<a href="#" onmousedown="return scrlbox_doScroll('test', 'up');" onmousemove="return scrlbox_doScroll('test', 'stop');" onmouseup="return scrlbox_doScroll('test', 'stop');">up</a>
	<a href="#" onmousedown="return scrlbox_doScroll('test', 'down');" onmousemove="return scrlbox_doScroll('test', 'stop');" onmouseup="return scrlbox_doScroll('test', 'stop');">down</a>
#
#
####################################
*/


//####################################
//-- Variables
var scrlbox_speed_max = 50; // in milliseconds
var scrlbox_speed_min = 10; // in milliseconds
var scrlbox_increment = 5; // in pixels
//####################################


// -- No editing below here --//
var scrlbox_scrolling = false;
var scrlbox_speed = scrlbox_speed_max;

function scrlbox_doScroll(obj_id, dir)
{
	dir = dir.toLowerCase();
	var obj = document.getElementById(obj_id);
	if(obj)
	{
		var obj_scroller = document.getElementById(obj_id + "_scroller");
		if(obj_scroller)
		{
			scrlbox_speed = scrlbox_speed_max;
			scrlbox_scrolling = (dir == 'up') ? true : (dir == 'down') ? true : false;
			scrlbox_doScrollAction(obj_id, dir);
		}
	}
	return false;
}

function scrlbox_doScrollAction(obj_id, dir)
{
	var objScroller = document.getElementById(obj_id + "_scroller");
	var objContainer = document.getElementById(obj_id);
	
	if(!scrlbox_scrolling) dir = 'stop';
	
	var top = parseInt(objScroller.style.top);
	if(isNaN(top))
		top = 0;
		
	switch(dir.toLowerCase())
	{
		case 'up':
			if(top)
				objScroller.style.top = (top + scrlbox_increment) + 'px';
			break;
		
		case 'down':
			var atBottom = (objContainer.offsetHeight - top) >= objScroller.offsetHeight;
			if(!atBottom)
				objScroller.style.top = (top - scrlbox_increment) + 'px';
			break;
			
		default:
			scrlbox_scrolling = false;
			scrlbox_speed = scrlbox_speed_max;
			break;
	}
	
	if(scrlbox_scrolling)
	{
		if(scrlbox_speed > scrlbox_speed_min)
			scrlbox_speed--;
			
		setTimeout('scrlbox_doScrollAction("' + obj_id + '", "' + dir + '");', scrlbox_speed);
	}
	
}

//$Header$