/*
**  Utilisation de la librairie jQuery
**  http://docs.jquery.com/Downloading_jQuery#Download_jQuery
*/

jQuery.noConflict();
jQuery(function($) {

    /**
    * carouselSelection : Permet de générer un nouveau carousel horizontal
    *
    * @author Eric Giovannetti       <eric@bleuroy.com>
    * @params string  _carousel      L'identifiant du carousel.
    * @params string  _itemDeplace   L'identifiant du bloc qui va se déplacer.
    * @params int     _itemsVisibles Nombre d'items visibles par défaut.
    * @params int     _vitesse       Vitesse de déplacement en millisecondes.
    * @params string  _boutons       Defini le type de boutons.
    * @params boolean _autoslide     Défini si l'autoslide est actif.
    * @version 1.3.0
    */
    function generateCarousel(_carousel, _itemDeplace, _itemsVisibles, _vitesse, _boutons, _autoslide) {
        var width           = $(_carousel + ' ' + _itemDeplace + ' > *').width();
        var nombreItems     = $(_carousel + ' ' + _itemDeplace + ' > *').length;
        var widthTotal      = width * nombreItems;
        var reference       = _itemsVisibles;
        var referenceInit   = _itemsVisibles;
        var animationActive = false;
        
        $(_carousel + ' ' + _itemDeplace).css('width', widthTotal + 'px');
        
        if(nombreItems > _itemsVisibles) {
        
        
            if(_boutons == 'defilement') {
            
                $(_carousel).append('<div class="prev"><a href="#" title="Précédent"></a></div>');
                $(_carousel).prepend('<div class="next"><a href="#" title="Suivant"></a></div>');
                
            
                $(_carousel + ' .prev').click(function () { 
                    if(reference > referenceInit && animationActive == false) {
                        animationActive = true;
                        var deplacement = parseInt($(_carousel + ' ' + _itemDeplace).css('left').split('px')) + width;
                        deplacement += 'px';
                        $(_carousel + ' ' + _itemDeplace).animate({ 
                            left: deplacement
                            }, _vitesse, function() { animationActive = false; } 
                        );
                        reference--;
                    }
                    return false;
                });
                
                $(_carousel + ' .next').click(function () { 
                    if(reference < nombreItems && animationActive == false) {
                        animationActive = true;
                        var deplacement = parseInt($(_carousel + ' ' + _itemDeplace).css('left').split('px')) - width;
                        deplacement += 'px';
                        $(_carousel + ' ' + _itemDeplace).animate({ 
                            left: deplacement
                            }, _vitesse, function() { animationActive = false; }
                        );
                        reference++;
                    }
                    return false;
                });
                
                if(_autoslide == true) {
                    var interval = false;
                    function intervalSlide() {
                        interval = setInterval(function() {
                            if(reference < nombreItems) {
                                $(_carousel + ' .next').click(); 
                            } else {
                                reference = referenceInit;
                                $(_carousel + ' ' + _itemDeplace).animate({ 
                                    left: '0px'
                                    }, _vitesse, function() { animationActive = false; }
                                );
                            }
                        }, 2500);
                    }
                    intervalSlide();
                    $(_carousel).bind('mouseover', function(){ clearInterval(interval); });
                    $(_carousel).bind('mouseout', function(){ intervalSlide(); });
                }
                
            } else if(_boutons == 'numerotation') {
            
                var nombreCases = nombreItems/_itemsVisibles;
                var items = '<div class="numerotation">';
                for(var i = 0; i < nombreCases; i++) {
                    items += '<a href="#" class="item'+i+'">'+(i+1)+'</a> ';
                }
                items += '</div>';
                $(_carousel).prepend(items);
                $(_carousel + ' .numerotation a:eq(0)').addClass('actif');
                
                $(_carousel + ' .numerotation a').click(function () {
                    $(_carousel + ' .numerotation a.actif').removeClass('actif');
                    var item = $(this).attr('class').split('item');
                    $(this).addClass('actif');
                    var deplacement = -(item[1] * width);
                    deplacement += 'px';
                    $(_carousel + ' ' + _itemDeplace).animate({ 
                        left: deplacement
                        }, _vitesse
                    );
                    return false;
                });
                
                if(_autoslide == true) {
                    var interval = false;
                    function intervalSlide() {
                        interval = setInterval(function() {
                            var afterActif = $(_carousel + ' .numerotation a.actif').next();
                            if(afterActif.length == true) {
                                afterActif.click(); 
                            } else {
                                $(_carousel + ' .numerotation a:eq(0)').click(); 
                            }
                        }, 2500);
                    }
                    intervalSlide();
                    $(_carousel).bind('mouseover', function(){ clearInterval(interval); });
                    $(_carousel).bind('mouseout', function(){ intervalSlide(); });
                }
                
            }
            
        }
        
    } /* Fin generateCarousel() */

    if ($('#carouselImages').length > 0) {
        generateCarousel('#carouselImages', 'ul', 1, 500, 'numerotation', true);
    }
    //  generate carrousel on product sheet
     if ($('#similaires_carousel').length > 0) {
        generateCarousel('#similaires_carousel', 'ul', 4, 500, 'defilement', false);
    }
      if ($('#new_carousel').length > 0) {
        generateCarousel('#new_carousel', 'ul', 3, 500, 'defilement', false);
    }
     
    if ($('#promo_carousel').length > 0) {
        generateCarousel('#promo_carousel', 'ul', 2, 500, 'defilement', false);
    }

    if (jQuery('#carouselTop').length > 0) {
        generateCarousel('#carouselTop', 'ul', 1, 500, 'numerotation', true);
    }

});
