/**
 * @author Ondrej Frinta / ondrej.frint[at]e-invent.eu / e-invent.eu
 * @date 2010-05-27
 *
 * @example
 * $('#fader').fader({
 * 	'timerDuration' : 4000, // 0 - disable timer
 * 	'fadeDuration' : 500,
 * });
 *
 */
(function($) {

		var itemHolder = null;
		var itemList = Array();
		var actualItem = 0;
		var totalItems = 0;
		var canFade = true;
		var timer = null;

		var settings = {
			'timerDuration' : 4000,
			'fadeDuration' : 500
		}

    $.fn.fader = function(options) {

      if (options) $.extend(settings, options);

			$(this).wrapInner('<div class="faderItemHolder" />');
			itemHolder = $(this).children('div.faderItemHolder').get(0);
			totalItems = $(itemHolder).children(".faderItem").size();

			if (totalItems <= 1) return;
			$(this).addClass("fader");

			$(itemHolder).children(".faderItem").each(function(index) {
					if(index>0) $(this).hide();
					itemList.push(this)
			});

			var faderBtns = "";
			for(i=0; i<totalItems; i++) {
				faderBtns += '<a href="#" id="faderBtn'+(i+1)+'"><span>'+(i+1)+'</span></a> ';
			}
			$(this).append('<div class="faderBtnHolder" >'+faderBtns+'<span class="cor-l"/><span class="cor-r"/></div>');
			$('.faderBtnHolder a:first').addClass('active');

			$('.faderBtnHolder a').click(function() {

				clearTimeout(timer);
				timer = null;

				$.fader.changeImage($(this).text()-1);
				return false;
			});

			if(settings.timerDuration>0) {
				timer=setTimeout("$.fader.timer()", settings.timerDuration);
			}
    };

    $.fader = function() {};

		$.fader.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();

			$($('.faderBtnHolder a')[actualItem]).removeClass('active');
			$($('.faderBtnHolder a')[indexNew]).addClass('active');

			actualItem = indexNew;

			if(timer==null && settings.timerDuration>0) {
				timer=setTimeout("$.fader.timer()", settings.timerDuration);
			}

		};
		$.fader.timer = function() {
				timer=setTimeout("$.fader.timer()", settings.timerDuration);
				$.fader.next();
		}
    $.fader.next = function() {
				indexNew = (actualItem+1 < totalItems) ? actualItem+1 : 0;
				$.fader.changeImage(indexNew);
    };

})(jQuery);

$(document).ready(function() {
	$('#imgChange').fader();
});

