function scroller(objId, orientation) {
	var scrollMax;
	var scrollDir = 1;
	var scrollStepSize = 1;
	var scrollVal = scrollStepSize;
	var scrollInterval = 20;
	var isMouseOver = false;
	var obj = document.getElementById(objId);
	var debugEnabled = false;
	var debugDivId = 'idScrollerDebugDiv' + (new Date()).getTime();
	
	this.init = 			init;
	this.scrollit = 		scrollit;

	obj.onmousemove = mouseMoveHandler;
	obj.onmouseover = mouseOverHandler;
	obj.onmouseout  = mouseOutHandler;
	
	init();
	
	function init() {
		if(orientation == 'horizontal')
			scrollMax = getFirstChildElement(obj).offsetWidth - obj.offsetWidth;
		else
			scrollMax = getFirstChildElement(obj).offsetHeight - obj.offsetHeight;
			
		if (debugEnabled) debugElement();
		
		scrollit();
	}
	
	function debugElement() {
		var div1 = document.createElement('DIV');
		div1.setAttribute('ID', debugDivId);
		div1.innerHTML = 'SCROLLER DEBUG';
		obj.parentNode.appendChild(div1);
	}
	
	function debug(text) {
		if( ! debugEnabled) return;
		
		var div1 = document.getElementById(debugDivId);
		div1.innerHTML = text; 
	}
	
	function getFirstChildElement(tobj) {
		var firstChild = tobj.firstChild;
		while(firstChild != null && firstChild.nodeType == 3){ // skip TextNodes
			firstChild = firstChild.nextSibling;
		}
		return firstChild;
	}
	
	function mouseMoveHandler() {
		if(orientation == 'horizontal')	 {		
			var mouseRel 	= mouseX - GetOffsetX(obj);
			var objSize		= obj.offsetWidth;
		} else {
			var windowYOffset = document.documentElement.scrollTop ? document.documentElement.scrollTop : window.pageYOffset;
			if (typeof(windowYOffset)!='number')
				windowYOffset = 0;
			var mouseRel 	= mouseY - GetOffsetY(obj) + windowYOffset;
			var objSize		= obj.offsetHeight;
		}
		var scrollGear 		= (mouseRel)/(objSize);
		if (scrollGear<=0.2) {
			scrollDir = -1;
		} else if (scrollGear <=0.8) {
			scrollVal = 0;
		} else {
			scrollDir = 1;
		}
	}

	function mouseOverHandler() {
		isMouseOver = true;
	}
	
	function mouseOutHandler() {
		isMouseOver = false;
		scrollVal = scrollStepSize;
	}
	
	function GetOffsetX (tObj) {			
		if (tObj) {
			offPar = GetOffsetX(tObj.offsetParent);
			offObj = tObj.offsetLeft;
			offSum = offPar + offObj;
			return offSum;
		}
		else
			return 0;			
	}		

	function GetOffsetY (tObj) {			
		if (tObj) {
			offPar = GetOffsetY(tObj.offsetParent);
			offObj = tObj.offsetTop;
			offSum = offPar + offObj;
			return offSum;
		}
		else
			return 0;			
	}		

	function scrollit() {
		var pos = getScrollPos() + scrollDir * scrollVal;		
		
		if ( ! isMouseOver ) { // auto fordító				
			if ( (pos > scrollMax) ) {
				scrollDir = -scrollDir;
				pos = scrollMax;
			}
			if ( (pos < 1) )  {
				scrollDir = -scrollDir;
				pos = 1;
			}
		}		
		setScrollPos(pos);
		
		debug(pos);
		
		this.setTimeout(scrollit, scrollInterval);
	}
	
	function setScrollPos(pos) {
		if (orientation == 'horizontal') {
			obj.scrollLeft = pos;
		} else {
			obj.scrollTop = pos;
		}
	}
	
	function getScrollPos() {
		if (orientation == 'horizontal')
			var pos = obj.scrollLeft;
		else
			var pos = obj.scrollTop;
		return pos;
	}
	
}// scroller

