var start_frame = null;
var end_frame;
var delay;
var slideshow_started = false;
var timers = new Array();
var randomNumber = 1;

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
function start_slideshow()
{
  /* [mjh] First, clear left over timers from other slideshows */
  for( i=0; i<timers.length; i++ )
  {
    try{ window.clearTimeout( timers[i] ) }
    catch( e ){}
  }

  /* [mjh] star a new slide show */
  $( 'slideshow' + start_frame ).style.display = "block";
  slideshow_started = true;
  timers.length = 0;

  // alert( start_frame )

  timers[timers.length] = setTimeout( switch_slides( start_frame ), delay );
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
function getRandomNr()
{
  randomNumber = Math.round( Math.random() * end_frame );
  
  if( randomNumber == 0 )
    getRandomNr();
  else 
    return randomNumber
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
function getRandomFrame()
{
  if( arguments.length )
    seed_frame = arguments[0];
  else
    seed_frame = null;

  if( seed_frame != null )
  {
    newframe = seed_frame;

    while( newframe == seed_frame )
      newframe = getRandomNr();
  }
  else
    newframe = getRandomNr();

  return newframe;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
function switch_slides()
{
  curr_frame = arguments[0];

  return( function()
  {
    Effect.Fade( 'slideshow' + curr_frame );
    new_frame = getRandomFrame( curr_frame );

    timers[timers.length] = setTimeout( "Effect.Appear('slideshow" + new_frame + "');", 100 );
    timers[timers.length] = setTimeout( switch_slides( new_frame ), delay + 300 );
  })
}