
var scrollerIntervalMs = 50;


function jQueryAutoScroll() { }

jQueryAutoScroll.initScroller = function() {


    $('.autoscroll').each(function() {


        // Add event handlers to toggle pausing
        $(this).mouseenter(function() { jQueryAutoScroll.doPause(this); });
        $(this).mouseleave(function() { jQueryAutoScroll.doPause(this); });

        // Default each elements' scrollerStep to 1 if not set
        if ($(this).attr('scrollerStep') == undefined)
            if (undefined === window.scrollerStep)
            $(this).attr('scrollerStep', 1);
        else
            $(this).attr('scrollerStep', scrollerStep);

    });

    // Set interval to scroll another step every scrollerIntervalMs
    setInterval("jQueryAutoScroll.doScroll()", scrollerIntervalMs);
}

jQueryAutoScroll.doScroll = function() {
    $('.autoscroll').filter(':not(".paused")').each(function() {

        var scrollerStep = parseInt($(this).attr('scrollerStep'), 10);
        var x = this.scrollTop;

        // The height of the div, as defined by CSS
        var divHeight = parseInt($(this).css('height'));

        // The height of the div's contents
        var contentHeight = this.scrollHeight;

        // Start over if we've scrolled too far
        if ((x + scrollerStep <= 0) || (x + scrollerStep >= (contentHeight - divHeight))) {
            var firstDiv = $(this).children(":first");
            $(this).append(firstDiv[0]);
            if (firstDiv[0].scrollHeight > 0) {

                x = x + scrollerStep - firstDiv[0].scrollHeight;
            }
            else {
                x = x + scrollerStep - $(firstDiv[0]).children()[0].scrollHeight;
            }
        }
        else {
            // Increment the position we're scrolling to by 1px
            x += scrollerStep;
        }
        // Scroll!
        this.scrollTop = x;
        $(this).attr('scrollerStep', scrollerStep);
    });
}

jQueryAutoScroll.doPause = function(el) {
    $(el).toggleClass('paused');
}

$(document).ready(function() {
    jQueryAutoScroll.initScroller();
});
