/**
 * @author Stéphane Roucheray
 * @extends jquery
 * @modified by Pavl
 */
jQuery.fn.carousel = function(){
  var sliderList = jQuery(this).children()[0];
  var fn = function(){};

  if (sliderList) {
    var increment = jQuery(sliderList).children().outerWidth("true"),
    elmnts = jQuery(sliderList).children(),
    numElmts = elmnts.length,
    sizeFirstElmnt = increment,
    shownInViewport = Math.round(jQuery(this).width() / sizeFirstElmnt),
    firstElementOnViewPort = 1,
    isAnimating = false;

    for (i = 0; i < shownInViewport; i++) {
      jQuery(sliderList).css('width',(numElmts+shownInViewport)*increment + increment + "px");
      jQuery(sliderList).append(jQuery(elmnts[i]).clone());
    }
    fn = function(){
        if (!isAnimating) {
            if (firstElementOnViewPort > numElmts) {
              firstElementOnViewPort = 2;
              jQuery(sliderList).css('left', "0px");
            }
            else {
              firstElementOnViewPort++;
            }

            jQuery(sliderList).animate({
              left: "-=" + increment,
              y: 0,
              queue: true
            }, "swing", function(){isAnimating = false;});
            isAnimating = true;
        }
      };
  }
  return fn;
};


