//Written by Nathan Faubion: http://n-son.com
//Use this or edit how you want, just give me
//some credit!

function jsScroller (o, w, h) {
        var self = this;
        var list = o.getElementsByTagName("div");
        for (var i = 0; i < list.length; i++) {
                if (list[i].className.indexOf("Scroller-Container") > -1) {
                        o = list[i];
                }
        }

        //Private methods
        this._setPos = function (x, y) {
                if (x < this.viewableWidth - this.totalWidth)
                        x = this.viewableWidth - this.totalWidth;
                if (x > 0) x = 0;
                if (y < this.viewableHeight - this.totalHeight)
                        y = this.viewableHeight - this.totalHeight;
                if (y > 0) y = 0;
                this._x = x;
                this._y = y;
                with (o.style) {
                        left = this._x +"px";
                        top  = this._y +"px";
                }
        };

        //Public Methods
        this.reset = function () {
                this.content = o;
                this.totalHeight = o.offsetHeight;
                this.totalWidth = o.offsetWidth;
                this._x = 0;
                this._y = 0;
                with (o.style) {
                        left = "0px";
                        top  = "0px";
                }
        };
        this.scrollBy = function (x, y) {
                this._setPos(this._x + x, this._y + y);
        };
        this.scrollTo = function (x, y) {
                this._setPos(-x, -y);
        };
        this.stopScroll = function () {
                if (this.scrollTimer) window.clearInterval(this.scrollTimer);
        };
        this.startScroll = function (x, y) {
                this.stopScroll();
                this.scrollTimer = window.setInterval(
                        function(){ self.scrollBy(x, y); }, 40
                );
        };
        this.swapContent = function (c, w, h) {
                o = c;
                var list = o.getElementsByTagName("div");
                for (var i = 0; i < list.length; i++) {
                        if (list[i].className.indexOf("Scroller-Container") > -1) {
                                o = list[i];
                        }
                }
                if (w) this.viewableWidth  = w;
                if (h) this.viewableHeight = h;
                this.reset();
        };

        //variables
        this.content = o;
        this.viewableWidth  = o.parentNode.offsetWidth;
        this.viewableHeight = o.parentNode.offsetHeight - 40;
        this.totalWidth  = o.offsetWidth;
        this.totalHeight = o.offsetHeight;
        this.scrollTimer = null;
        this.reset();
};