/*************
Slidebar Logic
**************/

// Content/notes
var slideContent = [];
var slideNotes = [];

var curSlide = 0;

function toggleSlideBox() {
  g('slideFloater').style.display = (g('slideFloater').style.display != 'block') ? 'block' : 'none';
  resizeWidget();
}

// Gets selected radio button index.
function getCheckedValue(a) {
  var tmp = document.getElementsByName(a);
  for (i=0; i < tmp.length; i++) {
    if (tmp[i].checked) {
      return i;
    }
  }
  return -1;
}

var sT = 38; // Current dialog theme, for slidelist use

// Resets text and background color of each option.
function slideListColors() {
  var options = g('slideList').getElementsByTagName('div');
  for (i=0; i<options.length; i++) {
    options[i].innerHTML = "Slide " + (i+1);
    options[i].style.color = (i%2 != 0) ? tableColors[sT][5] : tableColors[sT][4];
    options[i].style.backgroundColor = (i%2 != 0) ? tableColors[sT][1] : tableColors[sT][0];
    // Selected index
    if (i == curSlide) {
      options[i].style.color = tableColors[sT][6];
      options[i].style.backgroundColor = tableColors[sT][2];
    }
  }
}

function addSlide() {
  // Current Notes
  slideNotes[curSlide] = g('notesText').value;
  
  // Current Content
  slideContent[curSlide] = (HTMLToggle) ? g('contentFrame').contentWindow.document.body.innerHTML : g('textWindow').value;
  
  // S5 Current Slide Header
  if (activeFileType == 2 || activeFileType == 3) {
    slideBacks[curSlide] = g('S5headText').value;
  }
  
  curSlide++;
  
  // Template Layout
  if (parseInt(newSlideLayout[0]) < 20) {
    slideContent.splice(curSlide, 0, slideTemplates[newSlideLayout[0]]);
  }
  // Logbook Date/Time
  else if (parseInt(newSlideLayout[0]) == 20) {
    slideContent.splice(curSlide, 0, getDateTime(parseInt(data.get("Velt_2_skinGlobal").split("|N|")[3])) + "<br /><br />LOG");
  }
  // Custom Layout
  else {
    slideContent.splice(curSlide, 0, newSlideLayout[1]);
  }
  
  slideNotes.splice(curSlide, 0, "" + newSlideNotes);
  
  /* Inserts new slide formatting */
  
  // Project Velt
  if (activeFileType == 0 || activeFileType == 1) {
    slideBacks.splice(curSlide, 0, [].concat(newSlideBacks));
    slideLinks.splice(curSlide, 0, [].concat(newSlideLinks));
    slideLists.splice(curSlide, 0, [].concat(newSlideLists));
    slideSpace.splice(curSlide, 0, [].concat(newSlideSpace));
  }
  
  // S5 Slideshow
  if (activeFileType == 2) {
    slideBacks.splice(curSlide, 0, "Slide " + (curSlide+1) + " Title");
  }
  // S5 Logbook
  if (activeFileType == 3) {
    slideBacks.splice(curSlide, 0, getDateTime(parseInt(data.get("Velt_2_skinGlobal").split("|N|")[3])));
  }
  
  slideLayout.splice(curSlide, 0, [].concat(newSlideLayout));
  slideTrans.splice(curSlide, 0, [].concat(newSlideTransitions));
  slideTiming.splice(curSlide, 0, [].concat(newSlideTiming));

  // Loads content
  g('notesText').value = slideNotes[curSlide];
  g('contentFrame').contentWindow.document.body.innerHTML = slideContent[curSlide];
  g('textWindow').value = slideContent[curSlide];
  if (activeFileType == 2 || activeFileType == 3) {
    g('S5headText').value = slideBacks[curSlide];
  }
  
  g('noteNum').innerHTML = (curSlide+1);
  
  // Adds new slide to list
  var newSlideHTML = "<div onclick='changeSlide(" + g('slideList').getElementsByTagName('div').length + ");'></div>";
  g('slideList').innerHTML += newSlideHTML;
  
  if (HTMLToggle) {
    g('contentFrame').focus();
    buttonState();
  }
  
  resetIFrameStyle();
  
  slideListColors();
  setFormatting();
  forceRepaint();
  updateSlideColorRanges();
}

function removeSlide() {
  if (g('slideList').getElementsByTagName('div').length < 2) {
    return;
  }
  
  // Deletes active slide data
  slideNotes.splice(curSlide, 1);
  slideContent.splice(curSlide, 1);
  slideBacks.splice(curSlide, 1);
  slideTrans.splice(curSlide, 1);
  slideTiming.splice(curSlide, 1);
  
  if (activeFileType == 0 || activeFileType == 1) {
    slideLinks.splice(curSlide, 1);
    slideLists.splice(curSlide, 1);
    slideSpace.splice(curSlide, 1);
  }
  
  slideLayout.splice(curSlide, 1);
  
  // Get rid of unneeded DIV
  var lastDIV = g('slideList').getElementsByTagName('div')[g('slideList').getElementsByTagName('div').length-1];
  g('slideList').removeChild(lastDIV);
  
  resetIFrameStyle();
  
  curSlide--;
  if (curSlide < 0) {
    curSlide = 0;
  }
  
  // Loads content
  g('notesText').value = slideNotes[curSlide];
  g('S5headText').value = slideBacks[curSlide];
  g('contentFrame').contentWindow.document.body.innerHTML = slideContent[curSlide];
  g('textWindow').value = slideContent[curSlide];
  g('noteNum').innerHTML = (curSlide+1);
  
  slideListColors();
  setFormatting();
  forceRepaint();
  updateSlideColorRanges();
}

function moveSlideUp() {

  // Can't move up any more
  if (curSlide <= 0) {
    return;
  }
  
  swap(slideContent, curSlide, curSlide-1);
  swap(slideNotes, curSlide, curSlide-1);
  swap(slideBacks, curSlide, curSlide-1);
  swap(slideTrans, curSlide, curSlide-1);
  swap(slideTiming, curSlide, curSlide-1);
  
  if (activeFileType == 0 || activeFileType == 1) {
    swap(slideLinks, curSlide, curSlide-1);
    swap(slideLists, curSlide, curSlide-1);
    swap(slideSpace, curSlide, curSlide-1);
  }
  
  swap(slideLayout, curSlide, curSlide-1);
  
  curSlide--;
  g('noteNum').innerHTML = (curSlide+1);
  slideListColors();
}

function moveSlideDown() {

  // Can't move down any more
  if (curSlide >= g('slideList').getElementsByTagName('div').length-1) {
    return;
  }
  
  swap(slideContent, curSlide, curSlide+1);
  swap(slideNotes, curSlide, curSlide+1);
  swap(slideBacks, curSlide, curSlide+1);
  swap(slideTrans, curSlide, curSlide+1);
  swap(slideTiming, curSlide, curSlide+1);
  
  if (activeFileType == 0 || activeFileType == 1) {
    swap(slideLinks, curSlide, curSlide+1);
    swap(slideLists, curSlide, curSlide+1);
    swap(slideSpace, curSlide, curSlide+1);
  }
  
  swap(slideLayout, curSlide, curSlide+1);
  
  curSlide++;
  g('noteNum').innerHTML = (curSlide+1);
  slideListColors();
}

function changeSlide(a) {
  // Save Current Notes
  slideNotes[curSlide] = g('notesText').value;
  
  // Save Current Content
  slideContent[curSlide] = (HTMLToggle) ? g('contentFrame').contentWindow.document.body.innerHTML : g('textWindow').value;
  
  // S5 Slide Headings
  if (activeFileType == 2 || activeFileType == 3) {
    slideBacks[curSlide] = g('S5headText').value;
  }
  
  curSlide = a;
  
  // Clear old CSS data
  resetIFrameStyle();
  
  // Loads content
  g('notesText').value = slideNotes[curSlide];
  g('contentFrame').contentWindow.document.body.innerHTML = slideContent[curSlide];
  g('textWindow').value = slideContent[curSlide];
  g('noteNum').innerHTML = (curSlide+1);
  
  // S5 Slide Headings
  if (activeFileType == 2 || activeFileType == 3) {
    g('S5headText').value = slideBacks[curSlide];
  }
  
  if (HTMLToggle) {
    g('contentFrame').focus();
    buttonState();
  }
  
  slideListColors();
  setFormatting();
  forceRepaint();
  updateSlideColorRanges();
}

function updateSlideColorRanges() {
  if (activeFileType == 0 || activeFileType == 1) {
    if (currentColorType.match('HSL') != null) {
      updateHue('pageB');
    }
    else if (currentColorType.match('RGB') != null) {
      updateRed('pageB');
      updateGreen('pageB');
      updateBlue('pageB');
    }
  }
}

function resetIFrameStyle() {
  var t = g('contentFrame').contentWindow.document.getElementsByTagName('head')[0];
  while (t.hasChildNodes()) {
    t.removeChild(t.firstChild);
  }
  
  // Add original style data
  t = document.createElement('style');
  t.type = "text\/css";
  t.appendChild(document.createTextNode(layoutCSS));
  g('contentFrame').contentWindow.document.getElementsByTagName('head')[0].appendChild(t);
}