/** Schumacher benjamin **/
/** Plugin Cycle Jquery v0.4 **/
/** @copyright Webgenery 2011 **/

/** example

 Affiche des div en dans l'ordre qui sont contenu dans une div principal :

 $(document).ready(function() {
  $("#bloc_coup_coeur").fadeDiv({
   pause : 6000,
   duree : 1000,
   width : 'auto',
   height: 'auto'
  });
 });

 <div id="bloc_coup_coeur">
  <div>une image</div>
  <div>du texte</div>
  <div>des liens</div>
 </div>

 **/

 $.fadeDiv = {
  build : function (options)
  {
   var defaults = {
    pause : 6000, // durée durant laquelle reste afficher chaque div
    duree : 1000, //le durée de l'animation de l'apparition/disparition de la div
    width : 'auto', // la largeur voulu par la div englobante ou sinon en auto prend la taille de la div englobée la plus grande
    height: 'auto' // la hauteur voulu par la div englobante ou sinon en auto prend la taille de la div englobée la plus grande
         };

   var divPrincipal = this.selector;
   var selector = this.selector+" > div";
   var width_auto = '';
   var height_auto = '';
   i=1;

   // déclare des id a chaque div et récupére les height et width max
   $(selector).each(function(){

    if (width_auto<$(this).css("width")) {
     width_auto = $(this).css("width");
    }
    if (height_auto<$(this).css("height")) {
     height_auto = $(this).css("height");
    }
    $(this).attr("id",divPrincipal+i);
    if (i > 1) {
     $(this).css("display","none");
    }
    i++;
   });


   // si le width est auto, définit les height et width max pour la div englobante
   if (options.width != 'auto') {
    $(divPrincipal).css('width', options.width);
   }else{
    $(divPrincipal).css('width', width_auto);
   }

   if (options.height != 'auto') {
    $(divPrincipal).css('height', options.height);
   }else{
    $(divPrincipal).css('height', height_auto);
   }


   start();

   $(selector).hover(function(){
    pause();
   });

   $(selector).mouseleave(function(){
    start();
   });

   // démarre le cycle
   function start(){
    intval = setInterval(cycle,options.pause);
   }

   // stop le cycle
   function pause(){
    if (intval!="") {
     clearInterval(intval);
    }
   }

   //la fonction qui effectue le cycle
   function cycle() {
    $(selector).each(function(){
     if ($(this).css("display") == "block") {
      if ($(this).attr("id") == $(selector).last().attr("id")) {
                   $(this).fadeOut(options.duree, function()
        {$(selector).first().fadeIn(options.duree)
       });
      }else{
       $(this).fadeOut(options.duree, function(){
        $(this).next().fadeIn(options.duree);
       });
      }

     return (false);
     };
    })
   }

  }
 };
 $.fn.fadeDiv = $.fadeDiv.build;
