(function($) {
 /*
    carousel plugin code
  */
 $.fn.carousel = function(settings) {
 var config = {
 'automated': true,
 'speed': 500,
 'interval': 5000,
 'pagination': null,
 'arrows': null,
 'windowSelector': '.carousel-window',
 'pagesSelector': '.carousel-items',
 'pageSelector': '.carousel-items > .carousel-item',
 'navigationSelector': '.carousel-navigation .carousel-link',
 'incrementFunction': function(carousel) {
 var position = parseInt($(carousel).data("position"));
 var max = parseInt($(carousel).data('max'));
 position++;

 if (position >= max) {
     position = 0;
 }
 $(carousel).data("position", position);
 config.updateFunction(carousel);
 },
 'decrementFunction': function(carousel) {
     var position = parseInt($(carousel).data("position"));
     var max = parseInt($(carousel).data('max'));
     position--;

     if (position < 0) {
         position = max - 1;
     }
     $(carousel).data("position", position);
     config.updateFunction(carousel);
 },
 'updateFunction': function(carousel) {
     var position = parseInt($(carousel).data("position"));

     $(config.navigationSelector, carousel).removeClass("active");
     $(config.navigationSelector, carousel).eq(position).addClass("active");

     var left = position * -1 * parseInt($(config.pageSelector, carousel).first().css("width"));
     $(config.pagesSelector, carousel).animate({left: left + "px"}, config.speed);
 }
 };
 if (settings) $.extend(config, settings);
 $(this).data('config', config);
 this.each(function() {
         // element-specific code here
         var carousel = this;
         var number_of_pages = $(config.pageSelector, carousel).length;

         $(carousel).data("position", 0);
         $(carousel).data("max", number_of_pages);

         $(config.pagesSelector, carousel).css('width', (parseInt($(config.pageSelector, carousel).first().width()) * number_of_pages) + 'px');

         if (config.interval > 0) {
         var timer = window.setInterval(function() {
             config.incrementFunction(carousel);
             }, config.interval);

         $(this).data("timer", timer);
         }

         $(config.navigationSelector, carousel).each(function(i) {
             $(this).click(function() {
                 var timer = $(carousel).data('timer');
                 clearInterval(timer);
                 if (config.interval > 0) {
                 var timer = window.setInterval(function() {
                     config.incrementFunction(carousel);
                     }, config.interval);
                 $(carousel).data("timer", timer);
                 }

                 $(carousel).data('position', i);
                 config.updateFunction(carousel);

                 });
             });
 });

 return this;
 };
})(jQuery);

