(function () {
  if ($('#banner-navigator').length == 0) {
    return;
  }

  var config = {
        interval: 5000,
        fade: 1500
      },
      BUTTON = {
        prev: $('#banner-navigator .prev'),
        pause: $('#banner-navigator .pause'),
        next: $('#banner-navigator .next')
      },
      _container = $('#banner > ul'),
      _running,
      _timeout;

  function click_handler(e)
  {
    switch ($(e.target).attr('class')) {
      case 'prev':
        move(-1);
        break;
      case 'pause':
        stop();
        break;
      case 'next':
        move(1);
        break;
    }
  }

  function start()
  {
    _timeout = setInterval(move, config.interval);
    _running = false;
  }

  function stop()
  {
    clearInterval(_timeout);
  }

  function move(dir) {
    dir = dir || 0;

    if(_running) {
      return;
    }
    _running = true;

    stop();

    var speed = (dir == 0) ? 500 : config.fade;

    if (dir != -1) {
      var banner = $('.banner-item:last');
      banner.fadeTo(speed, 0, function () {
        banner.prependTo(_container).fadeTo(0, 1);
        start();
      });
    } else {
      var banner = $('.banner-item:first');
      banner.fadeTo(0, 0).appendTo(_container);
      banner.fadeTo(speed, 1, start);
    }
  }

  start();
  $('#banner-navigator').click(click_handler);
})();


