function savage_image_slide_show_init(image_url_list, fn) {
    image_urls = image_url_list;
    slideShowFn = fn;
    slideShowRefreshRate = 5;

    // create all image objects in a separate array of objects
    // to avoid nasty IE behavior where the image objects are reused before the
    // images are actually loaded, resulting in a random list of preloaded images
    if (document.images) {
      image_objects = new Array(image_url_list.length);
      
      for (var i=0; i<image_url_list.length; i++) {
        image_objects[i] = new Image();
        image_objects[i].src = image_url_list[i];
      }
    }

    slideShowFn();
    slideShowExecutor = new PeriodicalExecuter(slideShowFn, slideShowRefreshRate);
}

function savage_image_slide_show_click() { 
    slideShowExecutor.stop();
    slideShowFn();

    slideShowExecutor = new PeriodicalExecuter(slideShowFn, slideShowRefreshRate);
}

function savage_image_slide_show_display_random() {
    var randomImageNumber;
    do {
        randomImageNumber = Math.floor(Math.random() * image_urls.length);
    } while ((typeof savage_image_slideshow_current_img_number != 'undefined') && randomImageNumber == savage_image_slideshow_current_img_number);

    savage_image_slide_show_display(randomImageNumber);
}

function savage_image_slide_show_display_next() {
    var imageNumber;
    if (typeof savage_image_slideshow_current_img_number == 'undefined' || savage_image_slideshow_current_img_number >= (image_urls.length - 1)) {
        imageNumber = 0;
    } else {
        imageNumber = savage_image_slideshow_current_img_number + 1;
    }
    
    savage_image_slide_show_display(imageNumber)
}

function savage_image_slide_show_display(imageNumber) {
  var html = '';

  html += '<a href="#" onclick="javascript:savage_image_slide_show_click();return false;">\n';
  html += '<img src="' + image_urls[imageNumber] + '" alt="still" title="still ' + (imageNumber+1) + '" class="mainstill" />\n';
  html += '</a>\n';

  savage_image_slideshow_current_img_number = imageNumber;

  $('stills').innerHTML = html;
}
