$.fn.infiniteCarousel = function () {

    function repeat(str, num) {
        return new Array( num + 1 ).join( str );
    }
  
    return this.each(function () {
        var $wrapper = $('> div', this).css('overflow', 'hidden'),
            $slider = $wrapper.find('> ul'),
            $items = $slider.find('> li'),
            $single = $items.filter(':first'),

            singleWidth = $single.outerWidth(),
            visible = Math.ceil($wrapper.innerWidth() / singleWidth), // note: doesn't include padding or border
            currentPage = 1,
            pages = Math.ceil($items.length / visible);

            $slider.css('width', singleWidth*visible*(pages+2));

        // 1. Pad so that 'visible' number will always be seen, otherwise create empty items
        if (($items.length % visible) != 0) {
            $slider.append(repeat('<li class="empty"><span></span></li>', visible - ($items.length % visible)));
            $items = $slider.find('> li');
        }

        // 2. Top and tail the list with 'visible' number of items, top has the last section, and tail has the first
        $items.filter(':first').before($items.slice(- visible).clone().addClass('cloned'));
        $items.filter(':last').after($items.slice(0, visible).clone().addClass('cloned'));
        $items = $slider.find('> li'); // reselect
        
        // 3. Set the left position to the first 'real' item
        $wrapper.scrollLeft(singleWidth * visible);
        
        // 4. paging function
        function gotoPage(page) {
            var dir = page < currentPage ? -1 : 1,
                n = Math.abs(currentPage - page),
                left = singleWidth * dir * visible * n;
            
            $wrapper.filter(':not(:animated)').animate({
                scrollLeft : '+=' + left
            }, 500, function () {
                if (page == 0) {
                    $wrapper.scrollLeft(singleWidth * visible * pages);
                    page = pages;
                } else if (page > pages) {
                    $wrapper.scrollLeft(singleWidth * visible);
                    // reset back to start position
                    page = 1;
                } 

                currentPage = page;
            });                
            
            return false;
        }
        
        $wrapper.after('<a class="arrow back">&lt;</a><a class="arrow forward">&gt;</a>');
        
        // 5. Bind to the forward and back buttons
        $('a.back', this).click(function () {
            return gotoPage(currentPage - 1);
        });
        
        $('a.forward', this).click(function () {
            return gotoPage(currentPage + 1);
        });
        
        // create a public interface to move to a specific page
        $(this).bind('goto', function (event, page) {
            gotoPage(page);
        });
    });  
};


$(document).ready(function() {

  var
    carousel = $('#infinite-carousel'),
    pathname,
    productId,
    currentIndex
  ;

  if (carousel.length > 0) {
    pathname = window.location.pathname.split('/');
    currentIndex = $('#' + pathname[5]).prevAll().length + 1;
    currentPage = Math.ceil(currentIndex / 7);
    carousel.infiniteCarousel();
    if (1 < currentPage)
    {
      carousel.trigger('goto', currentPage);
    }
  };
  
  if ($('#slideshow').length)
  {
    $('ul','#slideshow')
      .css('overflow','hidden')
      .innerfade({
        speed: 750,
        timeout: 4000,
        type: 'random_start',
        containerheight: '307'
      })
    ;
  }

  $('.popup li a, a.popup').fancybox({
    transitionIn: 'elastic',
    transitionOut: 'elastic',
    speedIn: 600, 
    speedOut: 200,
    overlayOpacity: 0.5,
    overlayColor: '#fff'
  });

  $('.presse ul.popup').innerfade({
    speed: 750,
    timeout: 4000,
    type: 'random_start',
    containerheight: '206px'
  });

  // Always select an available product size
  $productSize = $('#product-size li input:not([disabled]):first');
  if ($productSize.length) {
    $productSize.attr('checked', 'checked');
  } else {
    $('#add-to-cart')
      .after('<p>Ce modèle n’est plus disponible<p>')
      .hide();
  };

	// Vente association
	// Ajouter // devant les lignes suivantes pour masquer la popup d'accueil
	// if ($('body.home').length) {
	// 		$.fancybox(
	// 			'<div id="vente-assoc"><div class="visuallyhidden">Les 15, 16, 17 et 18 octobre 2011, participez à notre vente en ligne, au profit d’une association de votre choix !</p><p>Tous les bénéfices des ventes des collections Automne-Hiver 2010 et Printemps-Été 2011 seront reversés à une œuvre caritative.</p><p>Tous les produits de ces 2 saisons seront soldés à -50% et -60% ! Profitez des promotions pour faire une bonne action !</div><a href="http://ellips-chaussures.blogspot.com/" class="ir">Votez pour l’assocation de votre choix sur notre blog !</a></div>',
	// 			{
	// 				'autoDimensions'	: false,
	// 				'width'         	: 600,
	// 				'height'        	: 420,
	// 				'transitionIn'		: 'none',
	// 				'transitionOut'		: 'elastic',
	// 				'padding'					: 0,
	// 				'margin'					: 0,
	// 				'scrolling'				: 'no'
	// 			}
	// 		);
	// 	};
	// end of Vente association

});

