(function ($) {

	$.fn.simpleCycle = function (options) {

		// Create some defaults, extending them with any options that were provided
		var settings = $.extend({
			interval: 6000
		}, options);

		return this.each(function () {
			if ($(this).is('ul')) {
				var $List = $(this);

				if ($List.children().size() > 1) {
					var $Children = $List.children();

					// set container dimensions
					function setContainerHeight() {
						var height;
						if (typeof settings.height == 'undefined') {
							height = 0;
							$Children.each(function () {
								var thisHeight = $(this).outerHeight(true);
								height = height < thisHeight ? thisHeight : height;
							});
						}
						else
							height = settings.height;

						$List.css('height', height + 'px');
					}

					function setContainerWidth() {
						var width;
						if (typeof settings.width == 'undefinded') {
							width = 0;
							$Children.each(function () {
								var thisWidth = $(this).outerWidth(true);
								width = width < thisWidth ? thisWidth : width;
							});
						}
						else
							width = settings.width;

						$List.css('width', width + "px");
					}

					function setContainerSize() {
						setContainerHeight();
						setContainerWidth();
					}

					setContainerSize();
					$List.load(setContainerSize);
					
					// add classes					
					$List.addClass('simpleCycleList');
					$Children.addClass('simpleCycleItem');

					// setup
					var index = 0;
					$Children.css('z-index', '1').hide();
					$Children.first().show();

					function showSlide() {
						var $child = $Children.eq(index);

						$child.css('z-index', '2');

						$Children.stop(true, true);

						$child.fadeIn('slow', function () {
							$Children.not($child).hide();
							$Children.css('z-index', '1');
						});
					}

					function next() {
						index = (index + 1) % $Children.size();
						showSlide();
					}

					// setup
					var seIntervalID = setInterval(next, settings.interval);

					// don't scroll on hover
					$List.hover(
					function () {
						clearInterval(seIntervalID);
					},
					function () {
						seIntervalID = setInterval(next, settings.interval);
					}
				);
				}
			}
		});
	};
})(jQuery);

