//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();

};
