function SmoothScroller(element){

	var ua							= navigator.userAgent.toLowerCase();
	var is_ie						= document.all && ua.indexOf("opera") == -1;
	var is_moz						= document.getElementById && ua.indexOf("gecko")!=-1 && ua.indexOf("khtml")==-1;

	if(!is_ie && !is_moz)
		return;

	this.moElement					= element;
	this.moElement.style.overflow	= "hidden";
	this.moElement.Scroller			= this;
	this.miMargin					= 20;

	this.moElement.onmousemove		= function(e){
		var evt						= e || event;
		var liOffsetX				= 0;
		var liOffsetY				= 0;

		if(evt.offsetX){
			liOffsetX				= evt.offsetX - this.scrollLeft;
			liOffsetY				= evt.offsetY - this.scrollTop;
		} else {
			liOffsetX				= evt.layerX - this.scrollLeft;
			liOffsetY				= evt.layerY - this.scrollTop;
		}

		if(!isNaN(liOffsetX) && !isNaN(liOffsetY) && liOffsetX > 0 && liOffsetY > 0)
			this.Scroller.ScrollTo(liOffsetX,liOffsetY);
		}

	this.ScrollTo					= function(x,y){
		var liScrollArea			= this.moElement.offsetHeight - (2*this.miMargin);
		var liOffsetY				= y - this.miMargin;
		if(liOffsetY < 0)
			liOffsetY				= 0;
		var ldSizeRatio				= (this.moElement.scrollHeight - this.moElement.offsetHeight) / liScrollArea;
		var liScrollTop				= ldSizeRatio * liOffsetY;
		this.moElement.scrollTop	= liScrollTop;
		}
	}
