var g_isSliding = false;
var g_wasPlaying = false;

var g_TimeLabel = null;
var g_lastDisplayedTimeMs = -1000;
var g_layoutIgnoreTimeChange = false;

var g_layoutTimeSlider = null;
var g_layoutVolumeSlider = null;
var g_layoutCurrentSlide = -1;

var g_layoutLogoCode = '';

var g_slidesOffset = 0;

var isIE = false;

if (document.all)
  isIE = true;

function layout_init()
{
}

function s(id)
{
  if (isNS4)
    return eval('document.' + id);
  else
    return document.getElementById(id).style;
}

function o(id)
{
  if (isNS4)
    return s(id);
  return document.getElementById(id);
}

function layout_getSlideForTime(msTime)
{
  var newSlideNr = -1;
  for (var i=0; i<g_thumbCount-1; ++i)
  {
      // alert("checking between " + parent.g_thumbEntries[i].timeStamp + " and " + parent.g_thumbEntries[i+1].timeStamp);
      if (msTime >= g_thumbEntries[i].timeStamp &&
          msTime < g_thumbEntries[i+1].timeStamp)
      {
        newSlideNr = i;
      }
  }
  if (newSlideNr == -1)
  {
    if (msTime == 0)
      newSlideNr = 0;
    else
      newSlideNr = g_thumbCount - 1;
  }

  return newSlideNr;
}

function layout_onPlay()
{
  control_playPause();
}

function layout_onMute()
{
  control_mute();
}

function layout_onHome()
{
  control_seekTime(0);
}

function layout_onBack()
{
  var currentSlide = layout_getCurrentSlide();
  if (currentSlide > 0)
    control_seekTime(g_thumbEntries[currentSlide - 1].timeStamp);
  else
    layout_onHome();
}

function layout_onEnd()
{
  control_seekTime(g_mediaDurations[0]);
}

function layout_onForward()
{
  var currentSlide = layout_getCurrentSlide();
  if (currentSlide < g_thumbCount - 1)
    control_seekTime(g_thumbEntries[currentSlide + 1].timeStamp);
  else
    layout_onEnd();
}

function layout_getSlide(timeMs)
{
  var slideNr = -1;
  for (var i=0; i<g_thumbCount-1; ++i)
  {
    if ((timeMs >= g_thumbEntries[i].timeStamp &&
        timeMs < g_thumbEntries[i+1].timeStamp) ||
	  (i == 0 && timeMs < g_thumbEntries[i+1].timeStamp))
      slideNr = i;
  }
  if (slideNr == -1)
    slideNr = g_thumbCount-1;
  return slideNr;
}

function layout_getCurrentSlide()
{
  var timeMs = control_getTimeMs();
  return layout_getSlide(timeMs);
}

function layout_displayOverview()
{
  // Hide/show areas
  s('slidesFrame').visibility = 'hidden';
  s('slidesLabel').visibility = 'hidden';
  s('infoDiv').visibility = 'hidden';
  s('thumbsFrame').visibility = 'visible';

  // Fix colors
  s('slidesTab').backgroundColor = '#ded8c0';
  s('infoTab').backgroundColor = '#ded8c0';
  s('overviewTab').backgroundColor = '#ece9d7';

  // And Z-Index
  s('slidesTab').zIndex = 5;
  s('infoTab').zIndex = 5;
  s('overviewTab').zIndex = 7;
}

function layout_displaySlides()
{
  s('thumbsFrame').visibility = 'hidden';
  s('infoDiv').visibility = 'hidden';
  s('slidesFrame').visibility = 'visible';
  s('slidesLabel').visibility = 'visible';

  s('slidesTab').backgroundColor = '#ece9d7';
  s('infoTab').backgroundColor = '#ded8c0';
  s('overviewTab').backgroundColor = '#ded8c0';

  s('slidesTab').zIndex = 7;
  s('infoTab').zIndex = 5;
  s('overviewTab').zIndex = 5;
}

function layout_displayInfo()
{
  s('thumbsFrame').visibility = 'hidden';
  s('slidesFrame').visibility = 'hidden';
  s('slidesLabel').visibility = 'hidden';
  s('infoDiv').visibility = 'visible';

  s('slidesTab').backgroundColor = '#ded8c0';
  s('infoTab').backgroundColor = '#ece9d7';
  s('overviewTab').backgroundColor = '#ded8c0';

  s('slidesTab').zIndex = 5;
  s('infoTab').zIndex = 7;
  s('overviewTab').zIndex = 5;
}

function layout_onResize()
{
  // Resizing mechanism.
  // How much space do we need for the header contents, excluding margins?
  // This is also the width for the media player.
  var headerWidth = 300; // minimum width
  if (g_hasVideo)
  {
    if (g_videoWidth > headerWidth)
      headerWidth = g_videoWidth;
  }
  if (g_hasStillImage)
  {
    if (g_stillImageWidth > headerWidth)
      headerWidth = g_stillImageWidth;
  }

  // How much space do we have horizontally?
  var height;
  if (!isIE)
    height = window.innerHeight - 20;
  else
    height = document.body.offsetHeight - 20;

  // We need 28 pixels for the Media Player status bar
  // Minimum 130 pixels plus margin for the info panels
  
  // Calculate inner space for player components
  var playerHeight = 28;
  if (g_hasVideo)
    playerHeight += g_videoHeight;
  else if (g_hasStillImage)
    playerHeight += g_stillImageHeight;

  // Which leaves us with...
  var infoPanelHeight = height - playerHeight - 20 - 105; // 20 is margin, 105 top pos of info area
  if (infoPanelHeight < 134)
    infoPanelHeight = 134;

  var ieOffset = 0;
  if (!isIE)
    ieOffset = 10;

  // Let's go.
  s('slidesFrame').width = headerWidth - 2; // -2 for frame border
  s('thumbsFrame').width = headerWidth - 2;
  s('thumbsFrame').height = infoPanelHeight - 2;
  s('infoDiv').width = headerWidth - ieOffset;
  s('infoDiv').height = infoPanelHeight - ieOffset;
  s('containerDiv').width = headerWidth + 12;
  s('containerDiv').height = infoPanelHeight + 12;

  s('playerDiv').top = 105 + 12 + infoPanelHeight;
  s('playerDiv').width = headerWidth + 12;
  s('playerDiv').height = playerHeight + 12;

  var playerTop = 105 + 18 + infoPanelHeight;
  if (g_hasStillImage)
    playerTop += g_stillImageHeight;
  s('masterPlayerDiv').top = playerTop;
  if (!g_hasVideo)
    s('masterPlayerDiv').width = headerWidth;
  if (g_hasStillImage)
  {
    s('stillImageDiv').top = 105 + 18 + infoPanelHeight;
    s('stillImageDiv').width = g_stillImageWidth;
    s('stillImageDiv').height = g_stillImageHeight;
  }

  // Title and Logo
  if (g_layoutLogoCode == '')
  {
    // No logo
    s('titleDiv').left = 9;
    s('titleDiv').width = 300;
  }

  g_slidesOffset = headerWidth + 27; // used in layoutapi.js
}

