  var home = new function() {

    var posterDelay = 10000;
    var posterTimeoutId = null;
    var posters = new Array();
    var currentPoster = 0;
    var bullets = new Array();

    this.init = function() {

      posters = $$('#homeMainImage .child');
      if(posters.length > 1) {

        var bulletX = 10;
        var bulletY = $('homeMainImage').getHeight() - 25;
        var spacing = 3;
        var slideCounter = 0;

        posters.each(function(elm) {

          var bullet = new Element('DIV');
          bullet.className = (bulletX == 10? 'slideBulletActive' : 'slideBulletInactive');
          bullet.style.left = bulletX + 'px';
          bullet.style.top  = bulletY + 'px';
          bulletX = bulletX + spacing + 19;
          $('homeMainImage').appendChild(bullet);

          var i = slideCounter;
          bullet.observe('click', function() {
            advanceSlide(i);
          });
          slideCounter++;

          bullets[bullets.length] = bullet;
        });

        posterTimeoutId = window.setTimeout(handlePosterTimeout, posterDelay);
      }
    }

    function handlePosterTimeout() {

      bullets[currentPoster].className = 'slideBulletInactive';
      Effect.Fade(posters[currentPoster], {duration: 0.5});

      if(currentPoster < posters.length-1) {
        currentPoster++;
      }
      else {
        currentPoster = 0; // Restart
      }

      bullets[currentPoster].className = 'slideBulletActive';

      Effect.Appear(posters[currentPoster], {duration: 0.5, delay: 0});
      posterTimeoutId = window.setTimeout(handlePosterTimeout, posterDelay);
    }

    function advanceSlide(slideIndex) {
      bullets[currentPoster].className = 'slideBulletInactive';
      posters[currentPoster].hide();
      currentPoster = slideIndex;
      posters[currentPoster].show();
      bullets[currentPoster].className = 'slideBulletActive';
      window.clearTimeout(posterTimeoutId);
      posterTimeoutId = window.setTimeout(handlePosterTimeout, posterDelay);
    }
  }

  Event.observe(window, 'load', home.init);