    function scroller()
    {
        this.layer          =   new Object;
        this.layer          =   {
                                    'inner': { 'height': 0, 'width': 0, 'top': 0 },
                                    'outer': { 'height': 0, 'width': 0, 'top': 0 }
        };

        this.layer.inner    =   null;
        this.layer.outer    =   null;

        this.scroll_timer   =   0;
        this.scroll_speed   =   ((document.all) ? .25 : .5);
        this.scroll_timeout =   1;
        return;
    }

    scroller.prototype.scroll = function()
    {
        var scroller    =   this;
        
        if ( this.layer.inner.top >= this.target )
        {
            this.layer.inner.top        =   this.layer.inner.top - this.scroll_speed;
                
            if( this.layer.inner.top <= this.target )
            {
                this.layer.inner.top    =   this.layer.outer.height;
                this.scroll_timer = clearTimeout(this.scroll_timer);
                this.scroll();
            }

            else
            {
                this.layer.inner.style.top  =   this.layer.inner.top + 'px';
                this.scroll_timer           =   setTimeout( function() { scroller.scroll(); }, this.scroll_timeout );
            }
        }

        return;

    };

    scroller.prototype.scroller_load = function( inner_layer, outer_layer )
    {
        
        var _scroller               =   this;

        this.layer.inner            =   inner_layer;
        this.layer.outer            =   outer_layer;

        this.layer.outer            =   document.getElementById(this.layer.outer);
        this.layer.inner            =   document.getElementById(this.layer.inner);

        if ( typeof this.layer.outer == undefined ||
            typeof this.layer.inner == undefined ) return;

        this.layer.outer.onmouseover = function() {
                this.scroll_timer = clearTimeout(this.scroll_timer);
        }.bind(this);

        this.layer.outer.onmouseout = function() {
            var scroller = this;
            this.scroll_timer = setTimeout( function() { scroller.scroll(); }, this.scroll_timeout );
        }.bind(this);

        this.layer.outer.height     =   parseInt(this.layer.outer.offsetHeight);
        this.layer.inner.height     =   parseInt(this.layer.inner.offsetHeight);
        this.layer.inner.style.top  =   this.layer.outer.height+'px';
        this.layer.inner.top        =   parseInt(this.layer.inner.style.top);
        this.layer.inner.style.visibility    =   'visible';

        this.target                 =   (this.layer.inner.top - this.layer.outer.height) - this.layer.inner.height;
      
        this.scroll();

        return;
    }