// Recursively "handle" all the frames from the top frame down.
function forAllFrames( objHandler )
{
 forAllFrames_recursive( window.top, objHandler );
}

function forAllFrames_recursive( objWindow, objHandler )
{
 if( !objWindow ) return;
  
 objHandler.OnFrame( objWindow );
 
 if( !objWindow.frames ) return;
  
 for( var iFrame = 0; iFrame < objWindow.frames.length; ++iFrame )
 {
  var objFrame = objWindow.frames[ iFrame ];
  forAllFrames_recursive( objFrame, objHandler );
 }
}

function slideChange_handler( objFrame )
{
 if( objFrame.OnSlideChange )
  objFrame.OnSlideChange( this.slide );
}

function broadcastSlideChange( iSlideNum )
{
 var objHandler = new Object();
 objHandler.OnFrame = slideChange_handler;
 objHandler.slide = iSlideNum;
 
 forAllFrames( objHandler );
}

function tocSeek_handler( objFrame )
{
 if( objFrame.OnTocSeek )
  objFrame.OnTocSeek( this.timeIndex );
}

function broadcastTocSeek( iTimeIndex )
{
 var objHandler = new Object();
 objHandler.OnFrame = tocSeek_handler;
 objHandler.timeIndex = iTimeIndex;

 forAllFrames( objHandler );
}
function tocSeek( iTimeIndex )
 {
  broadcastTocSeek( iTimeIndex );
 }






