

jQuery(function() {
    jQuery("#scroller").each(function() {
        var scroller = jQuery(this);
        var scrollCover = scroller.next();
        var coverLeft = scrollCover.offset().left;
        var scrollWidth = scroller.width();
        var imgs = jQuery("img", scroller);

        var gapBetween = 50;  

        var links = [];
        var imgWidths = [];
        imgs.each(function() {
            var img = jQuery(this);
            imgWidths.push(img.width());
            links.push(img.parent().attr("href"));
        });

        var currentImages = [];
        currentImages.push(0);

        var currentPositions = [];
        currentPositions.push(scrollWidth);

        var repaint = function() {
            if (currentPositions[0] < -imgWidths[currentImages[0]]) {
                currentImages.shift();
                currentPositions.shift();
            }
            for (var i = 0; i < currentImages.length; i++) {
                currentPositions[i] -= 1;  // jump
                jQuery(imgs[currentImages[i]]).css({ left: currentPositions[i] });
            }
            var lastImage = currentImages[currentImages.length - 1];
            var lastX = currentPositions[currentPositions.length - 1] + imgWidths[lastImage] + gapBetween;
            if (lastX < scrollWidth) {
                currentPositions.push(scrollWidth);
                currentImages.push((lastImage < imgs.length - 1) ? lastImage + 1 : 0);
            }
        };

        var intervalId = null;

        var go = function() {
            if (intervalId == null) {
                intervalId = setInterval(repaint, 20); // speed
            }
        }

        go();
    });
});
