﻿
var scrollerIntervalMs = 50;


function jQueryAutoScroll() { }

jQueryAutoScroll.initScroller = function() {


   // The height of the div, as defined by CSS
    var divHeight = parseInt($($('.autoscrollCategory')[0]).css('height'));

    // The height of the div's contents
    var contentHeight = $('.autoscrollCategory')[0].scrollHeight;

    if (contentHeight > divHeight) {
        $('.autoscrollCategory').prepend('<div style="padding-top:150px;"></div>');

        $('.autoscrollCategory').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);
    }
    $($('.autoscrollCategory')[0]).css('visibility', 'visible');}

jQueryAutoScroll.doScroll = function() {
    $('.autoscrollCategory').filter(':not(".categoryPaused")').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) {
    $($('.autoscrollCategory')[0]).toggleClass('categoryPaused');
}

$(document).ready(function() {
    jQueryAutoScroll.initScroller();
});

