var mxc_scroller = new Class ({
    options: {
        scrollamount: 10, // pixels
        milliseconds: 100 // milli seconds
    },

    initialize: function(options)
    {
		this.setOptions(options);
        this.timer = null;

        this.stopCallback = this.stop.bind(this) ;

        if (this.options.compensate) {
            var el = this.options.compensate ;
            if (el.initialTop == null) {
                el.initialTop = parseInt(el.getStyle('top')) ;
            }
            window.addEvent('scroll', function() {
                var el = this.options.compensate ;
                var top = el.initialTop + window.getScrollTop() ;
                el.setStyle('top', top+'px') ;
            }.bind(this)) ;

        }
    },

    scrollUp: function() {
        window.scrollBy(0, -1*this.options.scrollamount);
    },

    scrollDown: function() {
        window.scrollBy(0, this.options.scrollamount);
    },

    startScrollUp: function() {
        this.stop() ;
        document.addEvent('mouseup', this.stopCallback) ;
        this.timer = this.scrollUp.periodical(this.options.milliseconds, this);
        this.scrollUp() ;
    },

    startScrollDown: function() {
        this.stop() ;
        document.addEvent('mouseup', this.stopCallback) ;
        this.timer = this.scrollDown.periodical(this.options.milliseconds, this);
        this.scrollDown() ;
    },

    stop: function()
    {
        document.removeEvent('mouseup', this.stopCallback) ;
        $clear(this.timer);
    }
});
mxc_scroller.implement(new Options);