/****************
 * jQuery.fn.bleRotationContenu()
 * Plugin de rotation de contenus pour un noeud donne.
 * Charge et affiche un contenu choisit au hasard parmi
 * une collection. Permet ou non de faire par la suite
 * rotation entre les contenus.
 *
 * Francois Moreau, grillonbleu@gmail.com, mars 2009
 *
 * PARAMETRES (valeurs par defaut)
 *   millisecParContenu: (-1)
 *     Temps d'affichage par contenu en millisecondes.
 *     -1 = pas de rotation; on conserve le premier contenu charge.
 *   fadeSpeed: (400)
 *     Vitesse de fadeIn/fadeOut lors de la rotation de contenu.
 *   requeteTableContenus ("_entete.html table")
 *     Requete du tableau de contenus, url relatif + " " + selecteur jQuery
 *   requeteContenus: ("table td")
 *     Requete des noeuds de contenu
 *
 * USAGE :
 *  jQuery("#mon-noeud-affichage").bleRotationContenu({option1: val1, option2: val2});
 */

jQuery.fn.saviezvousRotationContenu = function(options) {
  var opts = jQuery.extend({}, jQuery.fn.saviezvousRotationContenu.defaults, options);
  return this.each(function() {
                     var affichage = jQuery(this);
                     affichage.load(opts.requeteTableContenus, null,
                                    contenusChargesCallback(affichage));
                   });


  // = = = = = = = =
  //Methodes privees
  // = = = = = = = =

  function contenusChargesCallback(affichage) {
    return function(page_html, etat, http_req) {
      if('success' != etat){
        //Chargement echoue
        affichage.hide();
        return;
      }
      var contenus = affichage.find(opts.requeteContenus);
      affichage.data("saviezvous:_listeContenus", contenus);
      choisit1erContenu(affichage);
      if(0 < opts.millisecParContenu) {
        affichage.data("saviezvous:_minuterie",
                       setInterval(function() { changeContenu(affichage); },
                                   opts.millisecParContenu));
      }
    };
  };


  function choisit1erContenu(affichage) {
    var contenus   = affichage.data("saviezvous:_listeContenus");
    var nouv_index = Math.floor(Math.random() * contenus.length);

    affichage.data("saviezvous:_indexContenuAffiche", nouv_index);
    affichage.html( contenus.eq(nouv_index).html() );
  };


  function changeContenu(affichage) {
    var contenus   = affichage.data("saviezvous:_listeContenus");
    var nouv_index = (1+ affichage.data("saviezvous:_indexContenuAffiche")) % contenus.length;

    affichage.fadeOut(opts.fadeSpeed, function() {
                        affichage.data("saviezvous:_indexContenuAffiche", nouv_index);
                        affichage.html( contenus.eq(nouv_index).html() );
                        affichage.fadeIn(opts.fadeSpeed);
                      });
  };
};
jQuery.fn.saviezvousRotationContenu.defaults = {
  millisecParContenu: -1,
  fadeSpeed: 400,
  requeteTableContenus: "/fr/saviez-vous_que/_random.html table",
  requeteContenus: "table td"
};


//Appels

jQuery(function() {
         jQuery("#contenu-saviez-vous-random").saviezvousRotationContenu();
         //jQuery("#temoignage_logo").bleRotationContenu({millisecParContenu: 10000,
         //                                               requeteTableContenus: "_logo.html table"});
       });

// FIN jQuery.fn.bleRotationContenu()

