
function scrollingArea(settingArgs)
{
	this.settings = settingArgs;
	
	var scroller = this;
	var settings = this.settings;
//	settings.obj = settings.object;
	settings.defaultDist = 1;
	settings.defaultDelay = 40;
	settings.delay = settings.defaultDelay;
	settings.speed = 75;
	settings.accel = 2;
	settings.pace = 1;
	
	settings.obj = document.getElementById(settings.id);
	settings.timer = null;
	settings.distance = settings.defaultDist;
	settings.height = settingArgs.height;
	
	settings.$scroller=$('#'+settings.id);
	if(settings.$scroller.length==0)
	{
		alert("Error: DIV with ID \""+settings.id+"\" not found on page.");
		return;
	}
	
	jQuery(document).ready(function($){
			settings.$scroller.bind('mouseenter', function(evt){scroller.over(evt)});
			settings.$scroller.bind('mousemove', function(evt){scroller.over(evt)});
			settings.$scroller.bind('mouseleave', function(evt){scroller.out(evt)});
		})
//	settings.obj.bind('mouseenter', function(){alert('over')});
//	settings.obj.bind('mouseleave', function(){alert('out')});
	
	scroller.start();
	scroller.scroll();
}

scrollingArea.prototype =
	{
		start:function()
		{
		},
		
		reset:function()
		{
			var settings = this.settings;
			
			settings.delay = settings.defaultDelay;
			settings.obj.scrollTop = 0;
		},
		
		scroll:function()
		{
			var scroller = this;
			var settings = this.settings;
			
			clearTimeout(settings.timer);
			
			if(settings.delay == 0)
			{
				height = settings.obj.clientHeight;
//				if(settings.obj.scrollTop >= settings.obj.scrollHeight-settings.height)
				if(settings.obj.scrollTop >= settings.obj.scrollHeight-height)
				{
					settings.obj.scrollTop = 0;
				}
				
				settings.obj.scrollTop = settings.obj.scrollTop + settings.distance;
				if(settings.obj.scrollTop < -settings.obj.parentElement.clientHeight)
				{
					settings.obj.scrollTop = 0;
				}
			}
			else
				settings.delay--;
			
			settings.timer = setTimeout(function(){scroller.scroll()}, (settings.speed / settings.pace));
		},
		
		over:function(evt)
		{
			var scroller = this;
			var settings = this.settings;
			
			winH = settings.obj.clientHeight;
			
			setU = winH / 5;			// zone up first 1/5 from client height
			setD = winH * 4 / 5;	// zone down third 1/5 from client width
			
			var posY = 0;
			
			if(!evt)
				var evt = window.event;
			
			if(evt.pageY)
				posY = evt.pageY;
			else
			{
				if(evt.clientY)
					posY = evt.clientY; 
			}
			
				// Adjust for the offset in the window
			
			posY -= this.topPos(settings.obj);
			
			if(posY >= setU && posY <= setD)
				settings.distance = 0;
			
			if(posY < setU)
			{
				settings.distance = -settings.defaultDist * 3;
				settings.pace = settings.accel;
			}
			
			if(posY > setD)
			{
				settings.distance = settings.defaultDist * 3;
				settings.pace = settings.accel;
				settings.delay = 0;
			}
		},
		
		out:function()
		{
			var settings = this.settings;
			settings.distance = settings.defaultDist;
			settings.pace = 1;
		},
		
		topPos:function(obj)
		{
			var top = 0;
			
			if(obj.offsetParent)
			{
				do
				{
					top += obj.offsetTop;
				}while(obj = obj.offsetParent);
			}
		
			return(top);
		}
	}
