var Carousel =
{
  interval: 10,
  cur_page: 0,
  max_page: 0,
  switching: false,
  paused: false,
  periodical: null,
  
  start: function() {
    if (!Carousel.paused && Carousel.periodical == null) {
      Carousel.periodical = new PeriodicalExecuter(Carousel.next, Carousel.interval);
    }
  },

  stop: function() {
    if (Carousel.periodical != null) {
      Carousel.periodical.stop();
      Carousel.periodical = null;
    }
  },

  toggle: function() {
    if (!Carousel.switching) {
      Carousel.paused = !Carousel.paused;
      if (Carousel.paused) {
        Carousel.stop();
        $('paginator-play-button').update('Play');
      } else {
        Carousel.next();
        Carousel.start();
        $('paginator-play-button').update('Pause');
      }
    }
  },

  show: function(page) {
    if (!Carousel.switching && page != Carousel.cur_page) {
      Carousel.switching = true;
      items = $$('#editorial-list .editorial-item');
      Effect.Fade(items[Carousel.cur_page]);
      Effect.Appear(items[page], {afterFinish:Carousel.done});
      links = $$('#editorial-carousel-paginator .paginator-button');
      links[Carousel.cur_page].removeClassName('current');
      links[page].addClassName('current');
      Carousel.cur_page = page;
    }
  },

  done: function() {
    Carousel.switching = false;
  },

  prev: function() {
    if (!Carousel.switching) {
      page = Carousel.cur_page - 1;
      if (page < 0) {
        page = Carousel.max_page - 1;
      }
      Carousel.show(page)
    }
  },

  next: function() {
    if (!Carousel.switching) {
      page = Carousel.cur_page + 1;
      if (page >= Carousel.max_page) {
        page = 0;
      }
      Carousel.show(page)
    }
  },

  init: function() {
	items = $$('#editorial-list .editorial-item');
	if (items && items.length > 1) {
		Carousel.max_page = items.length
		items[0].show();
		links = $$('#editorial-carousel .paginator-button');
		items[0].addClassName('selected');
	}
	box = $('editorial-carousel');
	Event.observe(box, 'mouseover', Carousel.stop);
	Event.observe(box, 'mouseout', Carousel.start);
	Carousel.start();
  }
}
