/*
**  Utilisation de la librairie jQuery
**  http://docs.jquery.com/Downloading_jQuery#Download_jQuery
*/

jQuery.noConflict();
jQuery(document).ready(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;
        if (nombreItems > 0 && width == 0)
            width = $(_carousel + ' ' + _itemDeplace + ' > *').width();
        $(_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 intervalSlide1() {
                        interval = setInterval(function () {
                            if (reference < nombreItems) {
                                $(_carousel + ' .next').click();
                            } else {
                                reference = referenceInit;
                                $(_carousel + ' ' + _itemDeplace).animate({
                                    left: '0px'
                                }, _vitesse, function () { animationActive = false; }
                                );
                            }
                        }, 3000);
                    }
                    intervalSlide1();
                    $(_carousel).bind('mouseover', function () { clearInterval(interval); });
                    $(_carousel).bind('mouseout', function () { intervalSlide1(); });
                }

            } 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();
                            }
                        }, 3000);
                    }
                    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) {
        var modeauto = false;
        var nbitems = 3;
        if ($('#new_carousel').attr('modeauto') == "true") modeauto = true;
        try {
            nbitems = parseInt($('#new_carousel').attr('nbitems'));
            if (nbitems == 0) nbitems = 3;
        } catch (ex) { }

        generateCarousel('#new_carousel', 'ul', nbitems, 1000, 'defilement', modeauto);
    }
    if ($('#new_carousel_LastViewedProduct').length > 0) {
        var modeauto = false;
        var nbitems = 1;
        if ($('#new_carousel_LastViewedProduct').attr('modeauto') == "true") modeauto = true;
        try {
            nbitems = parseInt($('#new_carousel_LastViewedProduct').attr('nbitems'));
            if (nbitems == 0) nbitems = 1;
        } catch (ex) { }

        generateCarousel('#new_carousel_LastViewedProduct', 'ul', nbitems, 1000, 'numerotation', modeauto);
    }

    if ($('#news_general').length > 0) {
        var modeauto = false;
        var nbitems = 1;
        if ($('#news_general').attr('modeauto') == "true") modeauto = true;
        try {
            nbitems = parseInt($('#news_general').attr('nbitems'));
            if (nbitems == 0) nbitems = 1;
        } catch (ex) { }

        generateCarousel('#news_general', 'ul', nbitems, 1000, 'numerotation', modeauto);
    }

    if ($('#new_carousel_produit_selection').length > 0) {
        var modeauto = false;
        var nbitems = 1;
        if ($('#new_carousel_produit_selectionl').attr('modeauto') == "true") modeauto = true;
        try {
            nbitems = parseInt($('#new_carousel_produit_selection').attr('nbitems'));
            if (nbitems == 0) nbitems = 1;
        } catch (ex) { }

        generateCarousel('#new_carousel_produit_selection', 'ul', nbitems, 1000, 'numerotation', modeauto);
    }

    if ($('#promo_carousel').length > 0) {
        generateCarousel('#promo_carousel', 'ul', 3, 500, 'defilement', false);
    }

    if (jQuery('#carouselTop').length > 0) {
        generateCarousel('#carouselTop', 'ul', 1, 500, 'numerotation', true);
    }

});
