/*
This code is licenced under LGPL v3

Author : Alexandre Stanislawski
*/
/*global window : false, jQuery : false*/
/**
fadeImages - renamed to fadeDiv
Enhanced to manage DIV insetad of just IMG

Simple jQuery plugin that can transform a div containing images into a slideshow with a fade as a transition.

In : 
- params : object containing the attributes :  
	- timeout : time before next transition
	- fadeDuration : transition duration
	- initDelay : time before first transition
*/
jQuery.fn.fadeDiv = function(params){
    var config = {
        timeout: 4000,
        fadeDuration: 500
    };
    if (params){
        jQuery.extend(config, params);
    }
    if (!config.initDelay){
      config.initDelay=config.timeout;
    }

    function faderCreator(divSet){
        var current = 0,
          total = divSet.size(),
          fader = function(){
            var nextIter = current + 1;
            
            if (nextIter >= total){
                nextIter = 0;
            }

            jQuery(divSet[current]).animate({
                opacity: 0
            }, config.fadeDuration);

            jQuery(divSet[nextIter]).animate({
                opacity: 1
            }, config.fadeDuration, function(){
                window.setTimeout(fader, config.timeout);
            });

            current = nextIter;
        };
        
        return fader;
    }

    this.each(
    function(){
        var jQthis = jQuery(this),
            divSet = jQthis.find("div");

        jQthis.css({
            position: "relative",
            overflow: "hidden"
        });

        divSet.css({
            opacity: 0,
            position: "absolute",
            top: 0,
            left: 0
        });

        divSet.first().css({
            opacity: 1
        });

        window.setTimeout(faderCreator(divSet), config.initDelay);
    });
    return this;
};

