/*
 * UI Scrolling Content
 * by Suks
 *
 * Options
 * - listClassName: Class of list items container
 * - autoSlideTime: Slider timer in milisecond
 * - slideSpeed: JQ effect speed
 * - autoSlide: if true, slide will automatically run
 */

var Scrolling  = {
	_init: function() {
		var list = this.element.find("ul");
		this.element.css({ position: "relative", overflow: "hidden" });
		list.css({ padding: 0, margin: 0, position: "absolute", left: "0", width: "10000em" });
		list.find("li").css({ float: "left", width: this.element.width() - (list.find("li").outerWidth()-list.find("li").width()) });
		this.numberOfItems = list.find("li").length;
		this.options.currentItem = 1;
		this._bindNavigatorButton();
		if (this.options.autoSlide) {
			this.runSlider();
		}
	},
	_getPreviousButton: function() {
		return this.element.find(".prev");
	},
	_getNextButton: function() {
		return this.element.find(".next");
	},
	_getItemList: function() {
		return this.element.find(this.options.listClassName);
	},
	currentItem: 1,
	setCurrentItem: function(newCurrentItem) {
		this.currentItem = newCurrentItem;
	},
	numberOfItems: 0,
	_bindNavigatorButton: function() {
		var self = this;
		this._getPreviousButton().bind("click", function() {
			self.movePrevious();
			return false;
		});
		this._getNextButton().bind("click", function() {
			self.moveNext();	
			return false;
		});
	},
	moveTo: function(itemNumber) {
		var self = this;
		if (itemNumber!=null) {
			itemNumber -= 1;
			this._getItemList().animate({
				left: (itemNumber * this._getItemList().find("li").outerWidth()) * -1
			}, self.options.slideSpeed, function() {
				if (self.options.autoSlide) {
					self.runSlider();
				}
			});
		}
	},
	movePrevious: function() {
		clearTimeout(this.slideTimeout);
		if (this.currentItem-1 <= 0) {
			this.setCurrentItem(this.numberOfItems);
		} else {
			this.setCurrentItem(this.currentItem - 1);
		}
		this.moveTo(this.currentItem);
	},
	moveNext: function() {
		clearTimeout(this.slideTimeout);
		//alert(this.time)
		if (this.currentItem+1 > this.numberOfItems) {
			this.setCurrentItem(1);
		} else {
			this.setCurrentItem(this.currentItem + 1);
		}
		this.moveTo(this.currentItem);
	},
	runSlider: function() {
		var self = this;
		if (this.slideTimtout==null) {
			this.slideTimeout = setTimeout(function() {
				self.moveNext();
				return false;
			} , self.options.autoSlideTime);
		}
	},
	slideTimeout: null,
	options: {
		listClassName: ".items",
		autoSlideTime: 10000,
		slideSpeed: "fast",
		autoSlide: false
	}
};

$.widget("ui.scrolling", Scrolling);

