function bScroller (el, speed)
{
    var myself    = this;
    this.speed    = speed;
    this.el       = el;
    this.scroller = 0;
    var playing   = 1;
    var height    = 1;
    var height2   = 1;

    this.setupScroller = function()
    {
        if (myself.el.scrollHeight <= myself.el.offsetHeight) {
            return 0;
        }

        html = myself.el.innerHTML;
        myself.el.innerHTML = "<div>" + html + "</div>";
        height2 = myself.el.scrollHeight;
        myself.el.innerHTML += myself.el.innerHTML;
        height = myself.el.scrollHeight;
        height = myself.el.scrollHeight; // sometimes needed by IE?!
		
		height2 = height - height2;

        myself.scroller = new YAHOO.util.Scroll(myself.el, {
            scroll: { by: [0, myself.speed] }
        }, 1);

        myself.scroller.onTween.subscribe(myself.reset);
        myself.scroller.onComplete.subscribe(myself.scroll);
        myself.scroller.animate();
        YAHOO.util.Event.addListener(myself.el, "mouseover", myself.stop);
        YAHOO.util.Event.addListener(myself.el, "mouseout", myself.resume);
    }

    this.reset = function()
    {
        if (height2 <= myself.el.scrollTop) {
            playing = 0;
            myself.scroller.stop();
            myself.el.scrollTop = 0;
            playing = 1;
            myself.scroller.animate();
        }
    }

    this.stop = function()
    {
        playing = 0;
        myself.scroller.stop();
    }

    this.resume = function()
    {
        playing = 1;
        myself.scroller.animate();
    }

    this.scroll = function()
    {
        if (playing) {
            myself.scroller.animate();
        }
    }

    myself.setupScroller();
}