/**
 * @author Ondrej Frinta / ondrej.frint[at]e-invent.eu / e-invent.eu
 * @date 2011-04-19
 * @version 1.1
 *
 * @example
 * $('#rotator').rotator({
 * 	'timerDuration' : 45000, // 0 - disable timer
 * 	'fadeDuration' : 350,
 * 	'itemClass' : 'myRotatorItem'
 * });
 *
 */
(function($) {

		var itemHolder = null;
		var itemList = Array();
		var actualItem = 0;
		var startItem = 0;
		var totalItems = 0;
		var canFade = true;
		var timer = null;

		var settings = {
			'timerDuration' : 6000,
			'fadeDuration' : 400,
			'itemClass': 'rotatorItem'
		}

    $.fn.rotator = function(options) {

		var value = parseInt($('.stranky .active').attr("id"));
		actualItem = isNaN(value) ? 0 : value;
		var startItem = actualItem;

		if (options) $.extend(settings, options);
			var itemSel = '.'+settings.itemClass;
			var itemHolderSel = itemSel+'Holder';
			$(this).wrapInner('<div class="'+settings.itemClass+'Holder" />');

			itemHolder = $(this).children(itemHolderSel);
			itemList = itemHolder.children(itemSel).get();
			totalItems = itemList.length;

			if (totalItems <= 1) return;

			$(itemList).hide();
			$(itemList[startItem]).show();

			// Create buttons

			$($('.rotatorBtnHolder a')[startItem]).addClass('active');

			// Click handler
			$('.buttonLeft').click(function() {
				clearTimeout(timer);
				timer = null;
				$.rotator.prev();
				return false;
			});
			// Click handler
			$('.buttonRight').click(function() {
				clearTimeout(timer);
				timer = null;
				$.rotator.next();
				return false;
			});

			// init timer
			if(settings.timerDuration>0) {
				timer=setTimeout("$.rotator.timer()", settings.timerDuration);
			}
    };

    $.rotator = function() {};

	$.rotator.changeImage = function(indexNew) {
		if(!canFade || indexNew < 0 || indexNew >= totalItems || indexNew==actualItem) return false;
		canFade = false;

		$(itemHolder).append(itemList[actualItem]);
		$(itemList[actualItem]).fadeOut(settings.fadeDuration, function() {canFade = true;});
		$(itemList[indexNew]).show();

		$($('.rotatorBtnHolder a')[actualItem]).removeClass('active');
		$($('.rotatorBtnHolder a')[indexNew]).addClass('active');

		actualItem = indexNew;

		if(timer==null && settings.timerDuration>0) {
			timer=setTimeout("$.rotator.timer()", settings.timerDuration);
		}

	};
	$.rotator.timer = function() {
			timer=setTimeout("$.rotator.timer()", settings.timerDuration);
			$.rotator.next();
	}
	$.rotator.next = function() {
			indexNew = (actualItem+1 < totalItems) ? actualItem+1 : 0;
			$.rotator.changeImage(indexNew);
	};
	$.rotator.prev = function() {
			indexNew = (actualItem > 0) ? actualItem-1 : totalItems - 1;
			$.rotator.changeImage(indexNew);
	};

})(jQuery);

$(document).ready(function() {
	$('#jqRotator').rotator();
});

