newjax.scroller = function() {

	return {

		name: 	'scroller',
		t:		[],
		l:		[],
		h:		[],
		
		st:		0,
		sh:		0,
		lastY:	0,
		dir:	'up',
		speed:	0,
		mspeed:	0,
		id:		0,
		div:	[],
		
		

		scroll_cell: function(s, div) {
			
			s.onmousemove = function(e) {
				
				Y = e.clientY - newjax.scroller.t[div];
				X = e.clientX - newjax.scroller.l[div];
				
				
				newjax.scroller.st = s.scrollTop;
				newjax.scroller.sh = s.scrollHeight;


				newjax.scroller.speed = (newjax.scroller.sh / newjax.scroller.h[div]);
				newjax.scroller.mspeed = newjax.scroller.lastY - Y;
				
				
				if (newjax.scroller.mspeed < 0) newjax.scroller.mspeed = -newjax.scroller.mspeed;
				

				if (newjax.scroller.lastY > Y) newjax.scroller.dir = 'dn';	
				else newjax.scroller.dir = 'up';

				if (newjax.scroller.dir == 'dn') newjax.scroller.move_dn(s);	
				else newjax.scroller.move_up(s);


				newjax.scroller.lastY = Y;


				//$('debug').innerHTML = 'X: '+X+' Y: '+Y+' mS: '+newjax.scroller.mspeed+' '+newjax.scroller.sh+' '+newjax.scroller.st;
					
			}
			
		},
		
		
		move_up: function(s) {
		
			if (newjax.scroller.dir == 'dn') return;
			
			s.scrollTop += (newjax.scroller.speed * newjax.scroller.mspeed);

		},
		
		
		move_dn: function(s) {
			
			if (newjax.scroller.dir == 'up') return;
			
			s.scrollTop -= (newjax.scroller.speed * newjax.scroller.mspeed);

		},
		
		
		
		init: function(div) {
			
			if (!newjax.scroller.id) newjax.scroller.id = 1;
			else newjax.scroller.id = newjax.scroller.id + 1;
			

			var s = $(div);
			if (!s) return;
			
			
			newjax.scroller.t[newjax.scroller.id] = findtop(s);
			newjax.scroller.l[newjax.scroller.id] = findleft(s);
			newjax.scroller.h[newjax.scroller.id] = parseInt(s.offsetHeight);
		
		
			s.onmouseover = function(e) {
				newjax.scroller.scroll_cell(s, newjax.scroller.id);
			}
			
		}
		
	} //return

}();


Event.observe(window, 'load', function() {
	/* AFTER LOADING */	
});

















