var eternalComics = {
  selectedComic: 0,
  interval: 4000,
  nbComics: 0
};

var eternalTimeout;

jQuery(document).ready(function($)
{

  eternalComics.changeComic = function(comicIndex)
  {
    if(comicIndex == eternalComics.getCurrentComicIndex())
    {
      return;
    }

    eternalComics.selectedComic = comicIndex;

    $('.player :not(li:nth-child('+(comicIndex+1)+'))').removeClass('active');
    $('.player li:nth-child('+(comicIndex+1)+')').addClass('active');

    $('#artwork .image :not(img:nth-child('+(comicIndex+1)+'))').animate({opacity: 0});
    $('#artwork .image img:nth-child('+(comicIndex+1)+')').animate({opacity: 1});

    $('#artwork .player ul').animate({'scrollTop': $('#artwork .player li:nth-child('+(comicIndex+1)+')').get(0).offsetTop});
  }

  eternalComics.getCurrentComicIndex = function()
  {
    return eternalComics.getComicIndex($('#artwork .image img[style*="opacity=1'))
  }

  eternalComics.getComicIndex = function(target)
  {
    var index = null;
    $(target).parent().children().each(function(i, elem){
      if(elem == target)
      {
        index = i;
      }
    });

    return index;
  }

  eternalComics.nextComic = function()
  {
    var currentComic = eternalComics.selectedComic;
    if(currentComic >= eternalComics.nbComics - 1)
    {
      this.changeComic(0);
    }
    else
    {
      this.changeComic(currentComic+1);
    }
  }

  eternalComics.previousComic = function()
  {
    var currentComic = eternalComics.selectedComic;
    if(currentComic <= 0)
    {
      this.changeComic(eternalComics.nbComics - 1);
    }
    else
    {
      this.changeComic(currentComic-1);
    }
  }

  eternalComics.startTimeout = function(){
    if(eternalComics.isRunning)
    {
      return;
    }
    $('.jp-pause').show();
    $('.jp-play').hide();

    eternalTimeout = window.setInterval(function(){
      eternalComics.nextComic();
    }, eternalComics.interval);
    eternalComics.isRunning = true;
  };

  eternalComics.stopTimeout = function()
  {
    $('.jp-play').show();
    $('.jp-pause').hide();
    window.clearInterval(eternalTimeout);
    eternalComics.isRunning = false;
  };

  eternalComics.bindEvents = function()
  {
    $('.player li').click(function(event){
      var index = eternalComics.getComicIndex(event.target);
      eternalComics.changeComic(index);
    });

    $('.jp-previous').click(function(){
      eternalComics.stopTimeout();
      eternalComics.previousComic();
    });

    $('.jp-next').click(function(){
      eternalComics.stopTimeout();
      eternalComics.nextComic();
    });

    $('.jp-pause').click(function(){
      eternalComics.stopTimeout();
    });

    $('.jp-play').click(function(){
      eternalComics.startTimeout();
    });

    window.addEventListener('focus', function(){eternalComics.startTimeout()});
    window.addEventListener('blur', function(){eternalComics.stopTimeout()});
  }

  eternalComics.init = function()
  {
    eternalComics.nbComics = $('.player li').length;

    eternalComics.changeComic(eternalComics.getComicIndex($('#artwork .image .first').get(0)));

    eternalComics.bindEvents();

    eternalComics.startTimeout();
  }
  
  eternalComics.init();
});
