var afficherDesProduits = function(categories, limite, tri, ordre, filtre, minFiltre, maxFiltre) {
  var blocDesProduits = $("#produits")[0];
  
  $.get(
      "themes/geeknstyle/aphp/produits.php",
      {
        categorie: categories,
        limite: limite,
        tri: tri,
        ordre: ordre,
        filtre: filtre,
        minFiltre: minFiltre,
        maxFiltre: maxFiltre
      },
      function(produits) {

        // Update pager
        $(produits).find('pagination').each(function() {
            var last = parseInt($(this).attr('last'));
            var current = parseInt($(this).attr('current'));
            if ( current > last) current = last;
            var range = 2;

            var pagination = '<ul class="pagination">';
            
            if ( current - range == 2 ) {
                pagination += '<li><a href="#">1</a></li>';
            }
            else if ( current - range >= 3 ) {
                pagination += '<li><a href="#">1</a></li>'
                           +  '<li>...</li>';
            }
            
            for (i = current - range; i <= current + range; ++i) {
                if ( i < 1 || i > last ) continue;
                if ( i != current ) {
                    pagination += '<li><a href="#">' + i + '</a></li>';
                }
                else {
                    pagination += '<li class="current"><span>' + i + '</span></li>';
                }
            }
            
            if ( current + range == last - 1 ) {
                pagination += '<li><a href="#">' + last + '</a></li>';
            }
            else if ( current + range < last - 1 ) {
                pagination += '<li>...</li>'
                           + '<li><a href="#">' + last + '</a></li>';
            }

            pagination += '</ul>';
            
            $('#pagination').html(pagination);

            $('#pagination a').each(function() {
                $(this).click(function(){
                    var page = parseInt($(this).text());
                    var limit =  ((page - 1) * 9 ) + ',9';
                    
                    afficherDesProduits(
                      categories,
                      limit,
                      tri,
                      ordre,
                      filtre,
                      minFiltre,
                      maxFiltre
                    );
                    return false;
                });
            });

        });
      
        $(blocDesProduits).children().each(function() {
          var produitTrouve;
          
          if ($("[id="+this.id.replace("produit", "")+"]", produits).length == 0) {
            // Le produit affiché n'est pas dans les résultats de la requête, il faut le supprimer.
            
            $(this).fadeOut(750, function() {
              $(this).remove();
            });
          }
        });

        $(produits).find("produit").each(function() {

          var id = $(this).attr("id");
          var stock = parseInt($(this).attr("stock"));
          var rang = $(this).attr("rang");
          var prixTtc = $(this).attr("prixTtc");
          var prixTtcFormate = $(this).attr("prixTtcFormate");
          var nom = $(this).attr("nom");
          var fabricant = $(this).attr("fabricant");
          var urlImage = $(this).attr("urlImage");
          var urlProduit = $(this).attr("urlProduit");
          
          var top = (Math.floor(rang / 3) * 201) + 19;
          var left = ((rang % 3) * 191) + 19;
          
          var produitDejaAffiche;
          
          if ((produitDejaAffiche = $("#produit"+id, blocDesProduits)).length == 0) {
            // Le produit n'est pas déjà affiché, il faut l'ajouter.
            
            var produitAjoute = 
             '<div class="produit" id="produit'+id+'" style="left: '+left+'px; top: '+top+'px; display: none;">'
              +'<div class="illustration">'
                +'<a href="'+urlProduit+'" title="'+nom+'">'
                  +'<img src="'+urlImage+'" alt="'+nom+'" id="produit'+id+'_illustration" />'
                +'</a>'
              +'</div>'
                  
              +'<div class="achat">'
                +'<p class="prix">'
                  +prixTtcFormate+' €'
                +'</p>';
                
            if (stock > 0) {
              produitAjoute +=
                 '<p class="ajouterAuPanier" id="produit'+id+'_ajouterAuPanier">'
                  +'<a href="'+base_dir_ssl+'cart.php?add=1&id_product='+id+'&qty=1&back=true" title="Ajouter au panier" onclick="javascript: ajouterUnProduitAuPanier('+id+', '+prixTtc+'); return false;"><span>Ajouter au panier</span></a>'
                +'</p>';
            }
            
            produitAjoute +=
               '</div>'
                
              +'<div class="description">'
                +'<p class="marque">'
                  +'<a href="'+urlProduit+'" title="'+nom+'">'
                    +fabricant
                  +'</a>'
                +'</p>'
                  
                +'<p class="nom">'
                  +'<a href="'+urlProduit+'" title="'+nom+'">'
                    +nom
                  +'</a>'
                +'</p>'
              +'</div>'
            +'</div>';
            
            $(blocDesProduits).append(produitAjoute);
            setTimeout('$("#produit'+id+'").fadeIn(375);', 375);
          } else {
            // Le produit est déjà affiché, il faut le déplacer.
            
            $(produitDejaAffiche).animate({ top: top+"px", left: left+"px"}, 750, "easeInOutQuart");
          }
          
        });

      },
      "xml"
  );
};





$(function() {
  // Mise en route des flèches du bloc Catégories
  
  var flecheGauche = $("#categories .fleche.gauche a")[0];
  var flecheDroite = $("#categories .fleche.droite a")[0];
  var position = 0;
  var NB_POSITIONS = 3;
  var listeDesCategories = $("#categories .liste ul")[0];
  var LARGEUR_D_UNE_CATEGORIE = 416; /* marge comprise */
  var DUREE_DE_L_INTERPOLATION = 750; /* en ms */
  var TYPE_D_ACCELERATION = "easeInOutQuart";
  
/*  if (position > 0) {
    $(flecheGauche).addClass("actif");
  } else if (position < NB_POSITIONS - 1) {
    $(flecheDroite).addClass("actif");
  } *** était nécessaire quand le carroussel ne formait pas un cercle, maintenant les flèches sont tout le temps actives */
  $(flecheGauche).addClass("actif");
  $(flecheDroite).addClass("actif");
  
  $(flecheGauche).click(function() {
//    if ($(this).hasClass("actif")) {
//      if (--position == 0) {
//        $(this).removeClass("actif");
//      }
      if (--position < 0) {
        position += NB_POSITIONS;
      }
      
//      $(flecheDroite).addClass("actif");
      $(listeDesCategories).stop().animate(
          { left: (-position * LARGEUR_D_UNE_CATEGORIE)+"px" },
          DUREE_DE_L_INTERPOLATION,
          TYPE_D_ACCELERATION
      );
//    }
    
    return false;
  });
  
  $(flecheDroite).click(function() {
//    if ($(this).hasClass("actif")) {
//      if (++position == NB_POSITIONS - 1) {
//        $(this).removeClass("actif");
//      }
      position = (position + 1) % NB_POSITIONS;
      
//      $(flecheGauche).addClass("actif");
      $(listeDesCategories).stop().animate(
          { left: (-position * LARGEUR_D_UNE_CATEGORIE)+"px" },
          DUREE_DE_L_INTERPOLATION,
          TYPE_D_ACCELERATION
      );
//    }
    
    return false;
  });
  
  // Tournage du carroussel
  
  $(window).load(function() {
    for (var i = 0; i < NB_POSITIONS; ++i) {
      setTimeout("$(\"#categories .fleche.droite a\").click();", (i + .75) * DUREE_DE_L_INTERPOLATION * 1.25);
    }
  });
  
  
  
  
  
  // Mise en route des filtres Nouveautés et Produits du mois
  
  $("#center_column .enTete .nouveautes a").click(function() {
    if (!$(this).hasClass("active")) {
      afficherDesProduits("toutes", "0,9", "date", "desc");
      
      $(this).parent().siblings().children().removeClass("active");
      
      $("#center_column .enTete .filtres .filtre").removeClass("active");
      $("#center_column .enTete .filtres .filtre .fourchette").fadeOut(250);
      
      $(this).addClass("active");
    }
    
    return false;
  });
  
  $("#center_column .enTete .produitsDuMois a").click(function() {
    if (!$(this).hasClass("active")) {
      afficherDesProduits("Produits du mois", "0,9");
      
      $(this).parent().siblings().children().removeClass("active");
      
      $("#center_column .enTete .filtres .filtre").removeClass("active");
      $("#center_column .enTete .filtres .filtre .fourchette").fadeOut(250);
      
      $(this).addClass("active");
    }
    
    return false;
  });
  
  
  
  
  
  // Mise en route des fourchettes de prix et de popularité
  
  var prixMin = parseFloat($("#prixMin").val());
  var prixMax = parseFloat($("#prixMax").val());
  
  $("#fourchetteDePrix").slider({
      animate: true,
      max: prixMax,
      min: prixMin,
      orientation: "horizontal",
      range: true,
      values: [prixMin, prixMax],
      slide: function(event, ui) {
        $("#prixMinSelectionne").text(ui.values[0]);
        $("#prixMaxSelectionne").text(ui.values[1]);
      },
      change: function(event, ui) {
        afficherDesProduits("toutes", "0,9", "prix", "ASC", "prix", ui.values[0], ui.values[1]);
      }
  });
  
  var $lesSliderHandles = $("#center_column .enTete .filtres .filtre .fourchette .ui-slider .ui-slider-handle");
  $($lesSliderHandles[0]).addClass("gauche").html("<span id=\"prixMinSelectionne\">"+prixMin+"</span>&nbsp;€");
  $($lesSliderHandles[1]).addClass("droit").html("<span id=\"prixMaxSelectionne\">"+prixMax+"</span>&nbsp;€");
  
  
  $("#center_column .enTete .filtres .filtreParPrix").click(function() {
    if (!$(this).hasClass("active")) {
    
      var fourchetteDePrix = $("#fourchetteDePrix");
      
      afficherDesProduits(
          "toutes",
          "0,9",
          "prix",
          "ASC",
          "prix",
          fourchetteDePrix.slider("option", "values")[0],
          fourchetteDePrix.slider("option", "values")[1]
      );
    
      $("#center_column .enTete .selecteurs li a").removeClass("active");
      $("#center_column .enTete .filtres .filtre").removeClass("active");
      $("#center_column .enTete .filtres .filtre .fourchette").fadeOut(250);
      
      $(".fourchette", this).fadeIn(250);
      
      $(this).addClass("active");
    }
  });
  
  
  $("#center_column .enTete .filtres .filtreParPopularite").click(function() {
    if (!$(this).hasClass("active")) {
      afficherDesProduits(
        "toutes",
        "0,9",
        "popularite",
        "DESC"
      );

      $("#center_column .enTete .selecteurs li a").removeClass("active");
      $("#center_column .enTete .filtres .filtre").removeClass("active");
      $("#center_column .enTete .filtres .filtre .fourchette").fadeOut(250);
      
      $(".fourchette", this).fadeIn(250);
      
      $(this).addClass("active");
    }
  });
});
