if ('undefined' == typeof $) {
    function $(id)
    {
        return document.getElementById(id);
    }
}

function LoopingScroller(ctr, scr, delay, amt)
{
    var scroll_delay;
    var container;
    var scrollee;
    var interval = false;
    var shift = amt;
    var self = this;

    this.move = function()
    {
        var images = scrollee.getElementsByTagName('img');
        var image  = images[0];
        var last   = images[images.length-1];
        var item   = image.parentNode && image.parentNode.tagName && 'a' == image.parentNode.tagName.toLowerCase() ? image.parentNode : image;
        var parent = item.parentNode;

        if (image.src != last.src) {
            parent.appendChild(item.cloneNode(true));
        }

        var style = image.currentStyle;
        var props = {paddingLeft : 0, paddingRight : 0, borderLeftWidth : 0, borderRightWidth : 0, marginLeft: 0, marginRight : 0};

        for (var i in props) {
            props[i] = parseFloat(style[i]);
            if (true == isNaN(props[i])) {
                props[i] = 0;
            }
        }

        var width = props.marginLeft + props.borderLeftWidth + props.borderRightWidth + image.width;

        if (!document.all) {
            width += props.paddingRight + props.paddingRight;
        }

        var left  = parseInt(scrollee.style.left) - amt;

        if (-left > width) {
            parent.removeChild(item);
            scrollee.style.left = 0;
        }
        else {
            scrollee.style.left = left + 'px';
        }
    }


    this.pause = function()
    {
        clearInterval(interval);
        interval = false;
    }

    this.resume = function()
    {
        if (false === interval) {
            interval = setInterval(self.move, scroll_delay);
        }
    }

    container = $(ctr);
    scrollee  = $(scr);
    scrollee.style.width = (2 * container.offsetWidth) + 'px';
    scrollee.style.position = 'absolute';
    scrollee.style.overflow = 'hidden';
    scrollee.style.top = 0;
    scrollee.style.left = 0;
    scrollee.onmouseover = this.pause;
    scrollee.onmouseout  = this.resume;
    scroll_delay = delay;
    this.resume();
}