/*
 * Class: magifade
 * Use: Element fade transition
 *
 * Copyright (c) 2010 Magico Software
 * Author: Martin Poucher
 * Company: Magico Software
 *
 * Version: 1.0
 * Created: 16th November 2010
 */

(function($){
    $.fn.magifade = function(options) {
        var settings = $.extend({
            numToShow: 8,
            timeBetweenTransitions: 4000,
            fadeTime: 1000
        },options);
        
	var firstVisibleClass = "firstToShow";

	return $.each($(this), function(i,n) {
		$(n).children().filter(":gt(0):lt(" + (settings.numToShow-1) + ")").add($(n).children(":first")).show();

		setInterval(function() {
			$(n).children(":visible:first").addClass(firstVisibleClass);
			$(n).children(":visible").fadeOut(1000, function() {
				if ($(n).children(":visible").length == 0) {
					var indexOfFirst = $(n).children().index($(n).children("." + firstVisibleClass));

					if (indexOfFirst >= ($(n).children().length - settings.numToShow)) {
						$(n).children().filter(":gt(0):lt(" + (settings.numToShow-1) + ")").add($(n).children(":first")).fadeIn(settings.fadeTime, function() {
							$(n).children().removeClass(firstVisibleClass);
						});
					}
					else {
						$(n).children().filter(":gt(" + (indexOfFirst+settings.numToShow) + "):lt(" + (settings.numToShow - 1) + ")").add($(n).children(":eq(" + (indexOfFirst+settings.numToShow) + ")")).fadeIn(settings.fadeTime, function() {
							$(n).children().removeClass(firstVisibleClass);
						});
					}
					
				}
			});
		}, settings.timeBetweenTransitions);
      	});
    };
})(jQuery);
