
var timeout;
var timeoutLength = 6000;

jQuery(document).ready(function () {

  SetCatalogSlider('#catalog .row', '#catalog .prev', '#catalog .next', '#catalog .pause');
});

function SetCatalogSlider(contentSelector, prevSelector, nextSelector, pauseSelector) {

  var play = true;
  timeout = window.setTimeout(function () { SetNextSliderTimeout(contentSelector, timeoutLength); }, timeoutLength);
  
  if (pauseSelector != undefined) {

    jQuery(pauseSelector).click(function () {

      clearTimeout(timeout);
      play = false;
      return false;
    });
  }

  if (nextSelector != undefined) {

    jQuery(nextSelector).click(function () {

      SetNextSliderItem(contentSelector);

      clearTimeout(timeout);
      play = false;
      return false;
    });
  }

  if (prevSelector != undefined) {

    jQuery(prevSelector).click(function () {

      SetPrevSliderItem(contentSelector);

      clearTimeout(timeout);
      play = false;
      return false;
    });
  }
}

function SetNextSliderItem(selector) {

  var currentItem = jQuery(selector).filter(':visible');

  var nextIndex = GetNextSliderIndex(selector, jQuery(selector).index(currentItem));
  var nextItem = jQuery(selector).get(nextIndex);

  jQuery(currentItem).insertBefore(jQuery(nextItem));  
  
  jQuery(currentItem).hide();
  jQuery(nextItem).fadeIn();
}

function SetPrevSliderItem(selector) {

  var currentItem = jQuery(selector).filter(':visible');

  var prevIndex = GetPrevSliderIndex(selector, jQuery(selector).index(currentItem));
  var prevItem = jQuery(selector).get(prevIndex);

  jQuery(currentItem).insertBefore(jQuery(prevItem));

  jQuery(currentItem).hide();
  jQuery(prevItem).fadeIn();
}

function GetNextSliderIndex(selector, index) {

  if (jQuery(selector).size() > index + 1)
    return index + 1;
  else
    return 0;
}

function GetPrevSliderIndex(selector, index) {

  if (index - 1 >= 0)
    return index - 1;
  else
    return jQuery(selector).size() - 1;
}


function SetNextSliderTimeout(selector, timeoutLength) {

  SetNextSliderItem(selector);
  timeout = window.setTimeout(function () { SetNextSliderTimeout(selector, timeoutLength); }, timeoutLength);
} 
