
var timeout;
var timeoutLength = 6000;

function InitTabs(tabSelector, contentSelector, play, playSelector, pauseSelector, nextSelector, prevSelector) {

  if (play != undefined) {

    jQuery(playSelector).hide();
    timeout = window.setTimeout(function () { SetNextTimeout(contentSelector, tabSelector, timeoutLength); }, timeoutLength);
  }

  SetActiveNavItem(tabSelector, 0);

  jQuery(tabSelector).click(function () {

    if (play != undefined) {

      clearTimeout(timeout);
      play = false;
    }

    var index = jQuery(tabSelector).index(jQuery(this));

    SetItem(contentSelector, tabSelector, index);

    jQuery(playSelector).show();
    jQuery(pauseSelector).hide();

    return false;
  });

  if (playSelector != undefined) {

    jQuery(playSelector).click(function () {
    
      if (!play) {

        SetNextItem(contentSelector, tabSelector);
        timeout = window.setTimeout(function () { SetNextTimeout(contentSelector, tabSelector, timeoutLength); }, timeoutLength);
        play = true;

        jQuery(playSelector).hide();
        jQuery(pauseSelector).show();
      }
      
      return false;
    });
  }

  if (pauseSelector != undefined) {

    jQuery(pauseSelector).click(function () {

      clearTimeout(timeout);
      play = false;

      jQuery(playSelector).show();
      jQuery(pauseSelector).hide();
      return false;
    });
  }

  if (nextSelector != undefined) {

    jQuery(nextSelector).click(function () {

      SetNextItem(contentSelector, tabSelector);

      clearTimeout(timeout);
      play = false;

      jQuery(playSelector).show();
      jQuery(pauseSelector).hide();
      return false;
    });
  }

  if (prevSelector != undefined) {

    jQuery(prevSelector).click(function () {

      SetPrevItem(contentSelector, tabSelector);

      clearTimeout(timeout);
      play = false;

      jQuery(playSelector).show();
      jQuery(pauseSelector).hide();
      return false;
    });
  }

  return false;
}

function SetItem(contentSelector, tabSelector, index) {

  var currentIndex = GetCurrentIndex(tabSelector);

  if (index != currentIndex) {

    var selectorData = contentSelector.split(',');
    for (var ii = 0; ii < selectorData.length; ii++) {

      if (!jQuery(selectorData[ii]).is(':animated')) {

        ShowItemAtIndex(selectorData[ii], index);

        SetActiveNavItem(tabSelector, index);
      }
    }
  }
}

function ShowItemAtIndex(selector, index) {

  jQuery(selector).removeClass("on");
  jQuery(selector).hide();

  var item = jQuery(selector).get(index);
  jQuery(item).fadeIn();
  jQuery(item).addClass("on");
}

function SetActiveNavItem(tabSelector, index) {

  var currentNavItem = jQuery(tabSelector).get(index);
  
  jQuery(tabSelector).removeClass("on");
  jQuery(currentNavItem).addClass("on");
}

function SetNextItem(contentSelector, tabSelector) {

  var index = GetCurrentIndex(tabSelector);
  var nextIndex = GetNextIndex(tabSelector, index);
  SetItem(contentSelector, tabSelector, nextIndex);
}

function SetPrevItem(contentSelector, tabSelector) {

  var index = GetCurrentIndex(tabSelector);
  var prevIndex = GetPrevIndex(tabSelector, index);

  SetItem(contentSelector, tabSelector, prevIndex);
}

function GetCurrentIndex(tabSelector) {

  var currentItem = jQuery(tabSelector + '.on')[0];
  return jQuery(tabSelector).index(jQuery(currentItem)); ;
}

function GetNextIndex(selector, index) {

  if (jQuery(selector).size() > index + 1)
    return index + 1;
  else
    return 0;
}

function GetPrevIndex(selector, index) {

  if (index - 1 >= 0)
    return index - 1;
  else
    return jQuery(selector).size() - 1;
}

function SetNextTimeout(contentSelector, tabSelector, timeoutLength) {

  SetNextItem(contentSelector, tabSelector);
  timeout = window.setTimeout(function () { SetNextTimeout(contentSelector, tabSelector, timeoutLength); }, timeoutLength);
} 

