CAROUSEL = '.carousel';
CAROUSEL_CONTENT_ITEM = CAROUSEL + ' .content';
CAROUSEL_FADE_SPEED = 'fast';
CAROUSEL_AUTOMATIC_SWITCHITEM = true;
CAROUSEL_AUTOMATIC_SWITCHITEM_SPEED = 4000;

CAROUSEL_PAGINATION_APPEND_OBJECT = '#header';
CAROUSEL_PAGINATION_CLASS = 'carouselPagination';
CAROUSEL_PAGINATION_ACTIVE_PAGE_CLASS = 'active';
CAROUSEL_PAGINATION = CAROUSEL_PAGINATION_APPEND_OBJECT + ' .' + CAROUSEL_PAGINATION_CLASS;
CAROUSEL_PAGINATION_PAGE_CLASS = 'page';
CAROUSEL_PAGINATION_PAGE = CAROUSEL_PAGINATION + ' .' + CAROUSEL_PAGINATION_PAGE_CLASS;

CAROUSEL_AUTOMATIC_SWITCHITEM_INTERVAL = '';

function CreateCarouselPagination () {
  var pagesCount = $(CAROUSEL_CONTENT_ITEM).length;
  if (pagesCount > 0) {
    var pagination = '<ul class="' + CAROUSEL_PAGINATION_CLASS + '">';
    for (var page = 0; page < pagesCount; page++) {
      pagination += '<li class="' + CAROUSEL_PAGINATION_PAGE_CLASS + '"><a href="#' + page + '">' + page + '</a></li>';
    }
    pagination += '</ul><!-- .' + CAROUSEL_PAGINATION_CLASS + ' -->';
    $(CAROUSEL_PAGINATION_APPEND_OBJECT).append(pagination);
  }
}

function SwitchCarouselContent () {
  if (CAROUSEL_AUTOMATIC_SWITCHITEM) {
    clearInterval(CAROUSEL_AUTOMATIC_SWITCHITEM_INTERVAL);
  }
  var carouselContentIndex = $(this).parent('li').index();
  $(CAROUSEL_PAGINATION_PAGE).removeClass(CAROUSEL_PAGINATION_ACTIVE_PAGE_CLASS);
  $(CAROUSEL_PAGINATION_PAGE + ':eq(' + carouselContentIndex + ')').addClass(CAROUSEL_PAGINATION_ACTIVE_PAGE_CLASS);
  var carouselOldItem = $(CAROUSEL_CONTENT_ITEM + ':visible');

  var carouselNewItem = $(CAROUSEL_CONTENT_ITEM).eq(carouselContentIndex);
  carouselOldItem.css('z-index', 0);
  carouselNewItem.css('z-index', 1);
  carouselOldItem.fadeOut(CAROUSEL_FADE_SPEED);
  carouselNewItem.fadeIn(CAROUSEL_FADE_SPEED);
  if (CAROUSEL_AUTOMATIC_SWITCHITEM) {
    CAROUSEL_AUTOMATIC_SWITCHITEM_INTERVAL = setInterval(AutomaticSwitchCarouselContent, CAROUSEL_AUTOMATIC_SWITCHITEM_SPEED);
  }
  return false;
}

function AutomaticSwitchCarouselContent () {
  var actualVisibleItemIndex = $(CAROUSEL_PAGINATION_PAGE + '.' + CAROUSEL_PAGINATION_ACTIVE_PAGE_CLASS).index();
  var pagesCount = $(CAROUSEL_CONTENT_ITEM).length;
  var newItemIndex = 0;
  if (actualVisibleItemIndex + 1 < pagesCount) {
    newItemIndex = actualVisibleItemIndex + 1;
  }
  $(CAROUSEL_PAGINATION_PAGE).eq(newItemIndex).children('a').click();
}

$(document).ready(function () {

  CreateCarouselPagination();

  $(CAROUSEL_CONTENT_ITEM).hide().css('z-index', 1);
  $(CAROUSEL_CONTENT_ITEM).eq(0).show().css('z-index', 0);
  $(CAROUSEL_PAGINATION_PAGE).removeClass(CAROUSEL_PAGINATION_ACTIVE_PAGE_CLASS);
  $(CAROUSEL_PAGINATION_PAGE).eq(0).addClass(CAROUSEL_PAGINATION_ACTIVE_PAGE_CLASS);

  if (CAROUSEL_AUTOMATIC_SWITCHITEM) {
    CAROUSEL_AUTOMATIC_SWITCHITEM_INTERVAL = setInterval(AutomaticSwitchCarouselContent, CAROUSEL_AUTOMATIC_SWITCHITEM_SPEED);
  }

  $(CAROUSEL_PAGINATION_PAGE + ' a').live('click', SwitchCarouselContent);

});

