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]
        } 
    }
    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"
        } 
    }
    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()
    }
    this.content = o
    this.viewableWidth = w
    this.viewableHeight = h
    this.totalWidth = o.offsetWidth
    this.totalHeight = o.offsetHeight
    this.scrollTimer = null
    this.reset()
}

