/**
 * @author Ondrej Frinta / ondrej.frint[at]e-invent.eu / e-invent.eu
 * @date 2010-05-27
 *
 * @example
 * $('#fader').fader({
 * 	'timerDuration' : 5000, // 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' : 5000,
			'fadeDuration' : 500
		}

    $.fn.fader = function(options) {

      if (options) $.extend(settings, options);

			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 = $(this).find(".faderBtnHolder a");
			faderBtns.each(function(index) {								
				$(this).attr('id','faderBtn'+(index+1));
			});

			$('.faderBtnHolder a:first').addClass('active');

			$('.faderBtnHolder a').click(function() {

				clearTimeout(timer);
				timer = null;
							
				$.fader.changeImage(faderBtns.index($(this)));
				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();
});

