/**
 *	Item Rotate - jQuery plugin
 *	ThinCMS
 */

/**
 * $("#slide").itemsRotate();
 * <div id="slide">
 *		<div>
 *			 <h2>Výkonný<span></span></h2>
 *			<div>
 *				<ul>
 *					<li>Text1</li>
 *					<li>Text2</li>
 *				</ul>
 *			</div>
 *		</div>
 *		<div>
 *			<h2>Snadný<span></span></h2>
 *			<div>
 *				<p>Text3</p>
 *			</div>
 *		</div>
 *		<div>
 *			<h2>Spolehlivý<span></span></h2>
 *			<div>
 *				Text4
 *			</div>
 *		</div>
 *	</div>
 */

(function($) {
	$.fn.itemsRotate = function(options){
		var timerHandler;
		var obj = $(this);
		var items = obj.children();

		var defaults = {
			activeClassName	: 'active',
			time			: 5000
		}; 
		var options = $.extend(defaults, options);  

		items.find('h2').bind('mouseenter', function(){
			activate($(this).parent());
			stopTimer();
		}).bind('mouseleave', function (){
			startTimer();
		});
		
		items.find('div').hide();

		nextItem();

		function nextItem(){
			itemPosition = findIndex(obj.find('div.' + options.activeClassName)) + 1;
			if (itemPosition >= items.length || itemPosition < 0) itemPosition = 0;
			activate(items[itemPosition]);
			startTimer();
		}

		function activate(element){		
			findedElement = obj.find('div.' + options.activeClassName);
			findedElement.removeClass(options.activeClassName);
			findedElement.find('div').stop(true, true).fadeOut(300);
			$(element).find('div').stop(true, true).fadeIn(200);
			$(element).addClass(options.activeClassName);
		}

		function startTimer(){
			timerHandler = setTimeout(nextItem, options.time);
		}

		function stopTimer(){
			clearTimeout(timerHandler);
		}

		function findIndex(item){
			var length = items.length;
			for(i = 0; i < length; i++) {
				if (items[i] == item[0]) {
					return i;
				}
			}
			return -1;
		}
	}
})(jQuery);
