function AscribeScroller(config) {
	if (config.axis) {
		slider1 = new Control.Slider(config.handleID, config.trackID, {
			axis: config.axis,
			onSlide: function(v) { 
				scrollVertical(v, $(config.scrollerID), slider1);  
			},
			onChange: function(v) { 
				scrollVertical(v, $(config.scrollerID), slider1); 
			}
		});
		var vertical = true;
	}
	else {
		slider1 = new Control.Slider(config.handleID, config.trackID, {
			onSlide: function(v) {
				scrollHorizontal(v, $(config.scrollerID), slider1);  
			},
			onChange: function(v) {
				scrollHorizontal(v, $(config.scrollerID), slider1); 
			}
		});
		var horizontal = true;
	}
	Event.observe(window, 'load', function() {
		if (vertical) {
			if ($(config.scrollerID).scrollHeight <= $(config.scrollerID).offsetHeight) {
				slider1.setDisabled();
				$(config.trackID).hide();
			}
			else {
		    $(config.trackID).style.visibility = 'visible';
		  }
		}
		if (horizontal) {
			if ($(config.scrollerID).scrollWidth <= $(config.scrollerID).offsetWidth) {
				slider1.setDisabled();
				$(config.trackID).hide();
			}
			else {
		    $(config.trackID).style.visibility = 'visible';
		  }
		}
	});
}

function scrollVertical(value, element, slider) {
	element.scrollTop = Math.round(value/slider.maximum*(element.scrollHeight-element.offsetHeight));
}

function scrollHorizontal(value, element, slider) {
	element.scrollLeft = Math.round(value/slider.maximum*(element.scrollWidth-element.offsetWidth));
}
