(function($) {
	$.fn.textScroll = function(options) {
		var defaults = {
			scrollSpeed: 20,
			downActiveClass: 'active',
			upActiveClass: 'active'
		};
		
		var options = $.extend(defaults, options);
		var t = 0;
		
		return this.each(function() {
			
			var $this = $(this);
			var upBtn = $(options.scrollUp);
			var dwBtn = $(options.scrollDown);
			
			$this.css('top','0px');
			
			upBtn.click(function(e) { e.preventDefault(); })
			upBtn.mousedown(function(e) { scrollUp($this); upBtn.addClass(options.upActiveClass); e.preventDefault(); });
			upBtn.mouseup(function(e) { stopScroll(); upBtn.removeClass(options.upActiveClass); e.preventDefault(); });

			dwBtn.click(function(e) { e.preventDefault(); })
			dwBtn.mousedown(function(e) { scrollDown($this); dwBtn.addClass(options.downActiveClass); e.preventDefault(); });
			dwBtn.mouseup(function(e) { stopScroll(); dwBtn.removeClass(options.downActiveClass); e.preventDefault(); });
			
		});
		
		function scrollUp( div ) {
			scrollValue = div.scrollTop();
			scrollValue = ((scrollValue - options.scrollSpeed) < 0) ? 0 : scrollValue - options.scrollSpeed;
			div.scrollTop(scrollValue);
			this.t = setTimeout(function() { scrollUp(div); }, 60);
		}
		
		function scrollDown( div ) {
			scrollValue = div.scrollTop();
			scrollto = scrollValue + options.scrollSpeed;
			div.scrollTop(scrollto);
			this.t = setTimeout(function() { scrollDown(div); }, 60);
		}
		
		function stopScroll() {
			clearTimeout(this.t);
		}
		
	};  
})(jQuery);