- //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 = w;
- this.viewableHeight = h;
- this.totalWidth = o.offsetWidth;
- this.totalHeight = o.offsetHeight;
- this.scrollTimer = null;
- this.reset();
- };
Raw Paste