
// Inicializacao de Variaveis Globais

var modo_edicao = 0; // Modo de edicao ?
var video_mode = 0; // Modo de visualizacao? 0 = sinc, 1 = full, 2 = edit
var pixeis_barra_tempo = 518;

var directorio_base = "";
var WMPlayer = document.Player;
var VGASlide = document.slide;

var linhascroll = 0;

file_prefix = 'Slide';
file_sufix = '.png';

// Array de Diapositivos (timecode, nome do slide)
var diapositivos;
var n_diapositivos; // Contador de numero de diapositivos
var diapositivo_actual; // Diapositivo apresentado actualmente ( 0 = nao inicializado, 1 ou superior slide )
var last_mark_slide = 0; // Diapositivo marcado

function doisdigitos(i)
{
  if (i < 10) {
    return '0' + i;
  }

  return i;
}

function VideoPlay()
{
  Player.controls.Play();
}

function VideoStop()
{
  Player.controls.Stop();
}

function VideoPause()
{
  Player.controls.Pause();
}

function VideoFastForward()
{
  Player.controls.FastForward();
}

function VideoFastReverse()
{
  Player.controls.FastReverse();
}

function VideoGotoTimeCode(timecode)
{  
  if (timecode >= 0) {    
    Player.controls.currentPosition = timecode;
  }
}

function VideoSeekRelative(deltatimecode)
{
  duracao = duracao = document.Player.currentMedia.duration;
  timecode = Player.controls.currentPosition + deltatimecode;  
  if ((timecode > 0) && (timecode < duracao)) {
    Player.controls.currentPosition = timecode;
  }
}

function VideoGotoThisSlide()
{
  VideoGotoTimeCode(ThisSlideTimeCode());
}

function VideoGotoNextSlide()
{
  VideoGotoTimeCode(NextSlideTimeCode());
}

function VideoGotoPrevSlide()
{
  VideoGotoTimeCode(PrevSlideTimeCode());
}

function NextSlideTimeCode()
{
  return diapositivos[diapositivo_actual][0];
}

function PrevSlideTimeCode()
{
  var i;
  
  i = diapositivo_actual - 2;
  if (i >= 0) {
    return diapositivos[i][0];
  } 
  
  return -1;
}

function ThisSlideTimeCode()
{
  var i;
  
  i = diapositivo_actual - 1;
  if (i >= 0) {
    return diapositivos[i][0];
  } 
  
  return -1;
}

function VideoHide()
{
  document.all.video.style.visibility = "hidden";
}

function VideoShow()
{
  document.all.video.style.visibility = "visible";
}


function VideoGotoSlide(slide)
{
  if ((slide >= 0) && (slide < n_diapositivos)) {
    last_mark_slide = slide + 2;
    VideoGotoTimeCode(diapositivos[slide][0]);
  }
}


// Handles de Eventos da Janela de Video

function VideoMouseMove(x2, y2)
{
}

function VideoPositionChange(d1, d2)
{
}




function InitSlideArray()
{
  n_diapositivos = 0;
  return new Array();
}

function AddSlide(timecode, nome)
{
  diapositivos[n_diapositivos] = new Array(timecode, nome);
  n_diapositivos++;
}

function Init()
{
  InitSlideList();

  document.title = titulo;
  document.all.tituloslides.innerHTML = titulo;
  document.all.tituloautor.innerHTML = "Por: " + autor;
  
  // Objecto Dummy para fazer preload da imagem
  document.preload = new Image();
  
  setTimeout("run();", 150);
}

function Done()
{
  VideoStop();
}

function InitSlideList()
{
  diapositivos = InitSlideArray();
  diapositivo_actual = 0;

  RegisterSlides(); 
}

function VideoSwapMode()
{
  if (video_mode == 0) {
    VideoFullMode();
  } else {
    VideoSincMode();
  }
}

function VideoFullMode()
{
  video_mode = 1; 
  modo_edicao = 0;
  
  VideoUpdateLayout();
}

function VideoSincMode()
{
  video_mode  = 0;
  modo_edicao = 0;
  
  VideoUpdateLayout();
}
function VideoEditMode()
{
  video_mode = 2;
  modo_edicao = 1;
  
  VideoUpdateLayout();
}

function VideoUpdateLayout()
{
  if (video_mode == 0) { // Sinc
    
    document.all.vgasmall.style.top = 5;
    document.all.vgasmall.style.left = 80;

    document.slide.width = 544;
    document.slide.height = 408;

    document.all.video.style.top = 265;
    document.all.video.style.left = 700;
    
    Player.width = 216;
    Player.height = 152;
  } 

  if (video_mode == 1) { // Full
    //alert('FULL VIDEO');
    document.all.vgasmall.style.top = 265;
    document.all.vgasmall.style.left = 700;    
    
    document.slide.width = 216;
    document.slide.height = 152;

    document.all.video.style.top = 5;
    document.all.video.style.left = 80;

    Player.width = 544;
    Player.height = 408;
  } 
 
  PrintSlideList();  
}

function HideSlideListOutput()
{
  document.all.slidelistoutput.style.visibility = "hidden";
}

function ShowSlideListOutput()
{
  document.all.slidelistoutput.style.visibility = "visible";
}

function EditSlideName(slide)
{
  var new_name;
  
  VideoPause();  
  new_name = prompt("Nome do Slide?", diapositivos[slide][1]);
  
  if (new_name != null) {
    diapositivos[slide][1] = new_name;
  }
  
  VideoPlay();  
  PrintSlideList();
}

function MarkThisSlideTimeCode()
{
  if (last_mark_slide == 0) {
    last_mark_slide = diapositivo_actual + 1;
  }
  
  EditMarkTimecode(last_mark_slide - 1);
  
  last_mark_slide++;
}

function SetTimecode(slide, posicao)
{
  var i;
  
  diapositivos[slide][0] = posicao;

  for(i = slide + 1; i < n_diapositivos; i++) {
    if (diapositivos[i][0] < posicao) {
      posicao = posicao + 1;
      diapositivos[i][0] = posicao;
    }    
  }
}

function EditMarkTimecodeInput(slide)
{
  var posicao;
  var new_timecode
  
  posicao = Player.controls.currentPosition;
  
  VideoPause();  
  new_timecode = prompt("Timecode do Slide?", diapositivos[slide][0]);
  
  if (new_timecode != null) {
    SetTimecode(slide, new_timecode);
  }
  
  VideoPlay();  
  PrintSlideList();  
  
}

function EditMarkTimecode(slide)
{
  var i;
  var c;
  var posicao;
  
  posicao = Player.controls.currentPosition;
 
  SetTimecode(slide, posicao);
  
  PrintSlideList();
}

function ScrollSlideDown()
{ 
  if (linhascroll < n_diapositivos) {
    linhascroll++;
    PrintSlideList();
  }
}

function ScrollSlideUp()
{
  if (linhascroll > 0) {
    linhascroll--;
    PrintSlideList();
  }
}

function ScrollSlide()
{
  var x;
  var y;

  x = event.offsetX;
  y = event.offsetY;	

  linhascroll = Math.round( (y - 15) * (n_diapositivos - 20) / 223 );

  PrintSlideList();
}

function PrintSlideList()
{
  var lll;
  var fslide, lslide;
  var line_size;
  var line_nums;
  
  line_nums = 20;
  
  lll = "";

  if (linhascroll != 0) {
    fslide = linhascroll;
    lslide = fslide + line_nums;
  } else {  
    fslide = diapositivo_actual - Math.ceil(line_nums / 2);
    lslide = diapositivo_actual + Math.floor(line_nums / 2);  
  }
  
  
  if (fslide < 0) {
    fslide = 0;
    lslide = Math.min(n_diapositivos, fslide + line_nums);
  }
  
  if (lslide > n_diapositivos) {
    fslide = Math.max(n_diapositivos - line_nums, 0);
    lslide = n_diapositivos;
  }

  if (n_diapositivos > 0)
    document.all.marcadorv.style.top = Math.ceil((fslide * 223) / (n_diapositivos - line_nums)) + 15;  
  
  for(i = fslide; i < lslide; i++) {

    if (i + 1 == diapositivo_actual) {
      estilo = "diapositivo_on";
    } else {
      estilo = "diapositivo_off";
    }

    lll += "<p>";

    line_size = 25;
    
    var nome_slide;
    
    nome_slide = diapositivos[i][1];
    if ( nome_slide.length > line_size ) {
      nome_slide = nome_slide.substring(0, line_size) + "...";
    }
    
    lll += "- <a class='" + estilo + "' onmouseup='VideoGotoSlide(" + i + ")'>" + nome_slide + "</a></p>";

  }
  
  lll += "</p>";
  
  document.all.slides.innerHTML = lll;
}

function TimeFormat(posicao)
{
  var horas, minutos, segundos;
  
  segundos = Math.round(posicao);
    
  minutos = Math.floor(segundos / 60);
  minutos = minutos % 60;
  if (minutos < 10) { minutos = "0" + minutos; };
    
  horas = Math.floor(segundos / 3600);
        
  segundos = segundos % 60;
  if (segundos < 10) { segundos = "0" + segundos; };

  return horas + ":" + minutos + ":" + segundos;        
}


function ScaleGotoTimeCode()
{
  var x;
  var y;

  x = event.offsetX;
  y = event.offsetY;	
    
  VideoGotoTimeCode(Math.round( (x / pixeis_barra_tempo) * document.Player.currentMedia.duration ) ); 
}

function run()
{
  var posicao, duracao;
  var i, encontrou;
  var s, x;
  var rr;
  
  try {  
    s = (document.Player.currentMedia.duration == 0);
  } 
  
  catch (e)
  {
    setTimeout("run();", 250);  
    return;
  }
  
  if ( document.Player.currentMedia.duration == 0 ) {

    // Player ainda nao arrancou...

    s = "Esperando pelo Windows Media Player...";

  } else {

    rr = "";
      
    posicao = document.Player.controls.currentPosition;    
    duracao = document.Player.currentMedia.duration;

    // Actualiza Marcador
    document.all.marcador.style.left = Math.round(posicao / duracao * pixeis_barra_tempo) + 14;
    
    // Actualiza Relogio

    rr+= TimeFormat(posicao) + " / " + TimeFormat(duracao);
    document.all.relogio.innerHTML = rr;
    

//  s = Math.round(posicao);
//  s += " <" + n_diapositivos + ">";

    i = 0;
    encontrou = 0;
    while ((i < n_diapositivos) && (!encontrou)) {
      x = diapositivos[i][0];
//    s += " -- " + i + " .:. " + x;
      if (diapositivos[i][0] > posicao) {
        encontrou = 1;
      } else {
        i++;
      }
    }
    
    if (i == n_diapositivos) {
      encontrou = 1;
    }
        
//  s+= " encontrou: " + encontrou + " i = " + i + " diapositivo_actual = " + diapositivo_actual;
    if ((encontrou) && (i != diapositivo_actual)) {
      diapositivo_actual = i;

      // Re-escreve lista de slides
      PrintSlideList();          
      
      // Muda SLIDE
     
      document.slide.src = directorio_base + file_prefix + doisdigitos(diapositivo_actual) + file_sufix; 

      // Muda SLIDE Preview

      if (modo_edicao) {
        if (last_mark_slide != 0) {
          document.slideactual.src = directorio_base + file_prefix + doisdigitos((last_mark_slide - 1)) + file_sufix;           
          document.slidenext.src = directorio_base + file_prefix + doisdigitos(last_mark_slide) + file_sufix; 
        }
      }
     
//    s += "  :   " + directorio_base + file_prefix + doisdigitos(diapositivo_actual) + file_sufix;

      // Preload
      i++;
      if (i < n_diapositivos) {
        document.preload.src = directorio_base + file_prefix + doisdigitos(diapositivo_actual) + file_sufix; 
      }
    } 
  }
 
  // Arma alarme para nova execução
  setTimeout("run();", 150);

  // Debug
// window.status = s;
}


// <input type="button" onClick="Player.controls.Play();" value="Play">
// <input type="button" onClick="Player.controls.Pause();" value="Pause">
// <input type="button" onClick="Player.controls.Stop();" value="Stop">
// <input type="button" onClick="Player.controls.FastForward();" value="FFor">
// <input type="button" onClick="Player.controls.FastReverse();" value="FRev"><p>
// <input type="button" onClick="Player.controls.currentPosition = Player.controls.currentPosition - 10;" value="Prev">
// <input type="button" onClick="Player.controls.currentPosition = Player.controls.currentPosition + 10;" value="Next">



function getObject(object)
{
  var obj;
  
  if(document.layers)
  { // Netscape
    obj = eval("document." + object);
  }
  
  if(document.all) { // MSIE
    obj = eval(obj + ".style");
  }
  
  return obj;
}


