(function($) {
	var currentIndex = 0;
	var settings = {};
	var container;
	var count, totalWidth, containerWidth;
	var scrolling = false;
	$.fn.scroller = function(s) {

		return this.each(function() {
			settings = $.extend({ animateTime: 80, animateDelta: 15, lines: 1}, s);
			container = $(this);
			count = container.find("li").size();
			var totalImages = container.find("ul img").size();
			var loadedImages = 0;
			/*
			container.find("ul img").load(function() {
				if (++loadedImages == totalImages) {
					$.fn.scroller.setup();
				}
			}).each(function(index, el) {
				var src = el.src;
				el.src = '';
				el.src = src;
			});
			*/
			$.fn.scroller.setup();

			if (count <= 1) {
					return;
			}
			$prev = $("<a>").addClass("scroller-prev").attr('href', 'javascript:void(0);').hover(function() {  scrolling = true; $.fn.scroller.scroll(+1); }, function() { scrolling = false; });
			$next = $("<a>").addClass("scroller-next").attr('href', 'javascript:void(0);').hover(function() {  scrolling = true; $.fn.scroller.scroll(-1); }, function() { scrolling = false; });
			container.append($next).append($prev);

		});
	};
	$.fn.scroller.scroll = function(direction) {
		if (scrolling) {
			var left = container.find("ul").position().left;
			if (direction > 0) {
				left = Math.min(left + settings.animateDelta, 0);
			} else {
				left = Math.max(left - settings.animateDelta, containerWidth - Math.max(containerWidth, totalWidth / settings.lines));
			}
			container.find("ul").dequeue().animate({ left: left }, settings.animateTime, 'linear', function() { $.fn.scroller.scroll(direction); });
		}
	}
	$.fn.scroller.setup = function() {
		containerWidth = container.find("ul").width();
		totalWidth = 0;
		for (var i = 0; i < count; i++) {
			totalWidth += container.find("li").eq(i).width() + 1;
		}
		totalWidth = Math.max(totalWidth, containerWidth);
		var split = count / settings.lines;
		for (var i = 1; i < settings.lines; i++) {
			container.find("li").eq(split * i).css("clear", "both");
		}
		container.find("ul").css("width", totalWidth);
	}
})(jQuery);
