/*************************
File functions that just
didn't belong in misc.js
**************************/

var activeFile = -1;		// Currently open file.
var activeFileType = 0;	// Type of file

var formtags, showVelt, showS5;

// Removes reserved keywords from textboxes
function stripReserved(a) {
  var filters = [/\|F\|/g, /\|P\|/g, /\|S\|/g, /\|N\|/g];
  for (i=0; i < filters.length; i++) {
    g(a).value = g(a).value.replace(filters[i], "");
  }
}

// Escape all regular expression characters.
function stripRegExp(a) {
  var reservedChars = ['\\', '[', ']', '$', '^', '.', '?', '*', '+', '(', ')'];
  for (n=0; n < reservedChars.length; n++) {
    a = a.replace(new RegExp("\\"+reservedChars[n], 'g'), "\\"+reservedChars[n]);
  }
  return a;
}

function newFile(fileType) {
  getElementsByClassName('s5Overlay')[0].style.display = 'none';
  getElementsByClassName('s5Overlay')[1].style.display = 'none';
  g('contentFrame').contentWindow.document.getElementsByTagName('html')[0].style.padding = '';
	
  // Project Velt Slideshow
  if (fileType==0 || fileType==1) {
	for (i=0; i<showVelt.length; i++) {
	  showVelt[i].style.display = (showVelt[i].nodeName == "DIV") ? "block" : "inline";
	}
	for (i=0; i < showS5.length; i++) {
	  showS5[i].style.display = "none";
	}
	defaultSlideLayout = ["2", ""];
  }
  
  // Velt Logbook
  if (fileType == 1) {
    defaultSlideLayout = ["20", ""];
  }
  
  // S5 Slideshow
  else if (fileType == 2 || fileType == 3) {
    for (i=0; i < showVelt.length; i++) {
      showVelt[i].style.display = "none";
    }
    for (i=0; i < showS5.length; i++) {
      showS5[i].style.display = (showS5[i].nodeName == "DIV") ? "block" : "inline";
    }
    defaultSlideLayout = [0, ''];
    applyPreview();
    getElementsByClassName('s5Overlay')[0].style.display = 'block';
    getElementsByClassName('s5Overlay')[1].style.display = 'block';
    g('contentFrame').contentWindow.document.getElementsByTagName('html')[0].style.padding = '25px 0';
  }
  
  activeFile = -1;
  activeFileType = fileType;
  curSlide = 0;
  
  HTMLToggle = false;
  toggleHTML();
  
  resetDefaultSlideValues();

  // New Template layout
  if (parseInt(newSlideLayout[0]) < 20) {
    slideContent = [slideTemplates[newSlideLayout[0]]];
  }
  // Date Time
  else if (newSlideLayout[0] == 20) {
    slideContent = [getDateTime(parseInt(data.get("Velt_2_skinGlobal").split("|N|")[3])) + "<br /><br />LOG"];
  }
  // Custom layout
  else {
    slideContent = [newSlideLayout[1]];
  }
  
  // New Notes
  slideNotes = ["" + newSlideNotes];
  g('notesText').value = slideNotes[0];
  
  g('contentFrame').contentWindow.document.body.innerHTML = slideContent[curSlide];
  g('textWindow').value = slideNotes[curSlide];
  
  // New formatting data
  if (activeFileType == 0 || activeFileType == 1) {
    slideBacks = [[].concat(newSlideBacks)];
    slideLinks = [[].concat(newSlideLinks)];
    slideLists = [[].concat(newSlideLists)];
    slideSpace = [[].concat(newSlideSpace)];
  }
  
  slideTrans = [[].concat(newSlideTransitions)];
  slideTiming = [[].concat(newSlideTiming)]
  slideLayout = [[].concat(newSlideLayout)];
  
  // Resets slide list
  g('slideList').innerHTML = "<div onclick='changeSlide(0);'>Slide 1</div>";
  g('noteNum').innerHTML = (curSlide+1);
  
  // S5 Slide Title
  g('S5headText').value = (activeFileType == 3) ? getDateTime(parseInt(data.get("Velt_2_skinGlobal").split("|N|")[3])) : "Slide 1 Title";
  if (activeFileType == 2 || activeFileType == 3) {
    slideBacks[0] = g('S5headText').value;
  }
  
  resetMetaData();
  setFormatting();
  closeAllWindows();
  slideListColors();
  defaultSlideLayout = ["2", ""]; // Resets default value
  if (activeFileType == 2 || activeFileType == 3) {
    updateOverlay();
  }
}

/*** Date/Time ***/
var month=["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var week=["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
var clock24=false;

function getDateTime(a) {
  var clock=new Date(), WW, DD, MM, YYYY, HH, NN;
  WW=clock.getDay();
  DD=clock.getDate();
  MM=clock.getMonth();
  YYYY=clock.getYear();
  HH=clock.getHours();
  NN=clock.getMinutes();
  if (NN<10) {NN="0"+NN;}
  if (YYYY<1900) {YYYY+=1900;}
  
  /** Compensate for 12 hour clock **/
  if (!clock24) {
    if (HH==12) {NN+=" PM";}				// 12:00 PM
    else if (HH==0) {NN+=" AM"; HH=12;}		// 12:00 AM
    else if (HH>12) {NN+=" PM"; HH-=12;}	// >12:00 PM
    else if (HH<12) {NN+=" AM";}			// <12:00 PM
  }
  
  // Adds leading zero
  if (a>10) {
    MM++;
    if (MM<10) {MM="0"+MM;}
    if (DD<10) {DD="0"+DD;}
  }
  
  switch (a) {
    case 0: return HH+":"+NN;
    case 1: return DD+" "+month[MM]+", "+YYYY;
    case 2: return month[MM]+" "+DD+", "+YYYY;
    case 3: return HH+":"+NN+", "+DD+" "+month[MM]+", "+YYYY;
    case 4: return HH+":"+NN+", "+month[MM]+" "+DD+", "+YYYY;
    case 5: return month[MM]+" "+DD+", "+YYYY+", "+HH+":"+NN;
    case 6: return DD+" "+month[MM]+", "+YYYY+", "+HH+":"+NN;
    case 7: return week[WW]+", "+month[MM]+" "+DD+", "+YYYY;
    case 8: return week[WW]+", "+DD+" "+month[MM]+", "+YYYY;
    case 9: return week[WW]+", "+month[MM]+" "+DD+", "+YYYY+", "+HH+":"+NN;
    case 10: return week[WW]+", "+DD+" "+month[MM]+", "+YYYY+", "+HH+":"+NN;
    case 11: return DD+"/"+MM+"/"+YYYY;
    case 12: return MM+"/"+DD+"/"+YYYY;
    case 13: return DD+"-"+MM+"-"+YYYY;
    case 14: return MM+"-"+DD+"-"+YYYY;
    case 15: return YYYY+"-"+DD+"-"+MM;
    case 16: return YYYY+"-"+MM+"-"+DD;
    case 17: return YYYY+"-"+MM+"-"+DD+", "+HH+":"+NN;   
    case 18: return DD+"."+MM+"."+YYYY;
    case 19: return MM+"."+DD+"."+YYYY;
    case 20: return YYYY+"."+DD+"."+MM;
    case 21: return YYYY+"."+MM+"."+DD;
    case 22: return YYYY+"."+MM+"."+DD+", "+HH+":"+NN;
  }
}

/*** Crash Protection/Last Session ***/
var cpTimer=0;

function cpBackup() {
  var cp=getSaveData("Last Session", "|N|", false);
  data.set("Velt_2_crashProtection", cp);
  data.set("Velt_2_cp_activeFile", activeFile);
}
function cpRestore() {
  newFile(data.get('Velt_2_crashProtection').split("|P|")[11]);
  g('crashProtect').style.display="none";
  g('mainbody').style.display="block";
  setArraysFromSave("Velt_2_crashProtection", data.get("Velt_2_cp_activeFile"), true);
  cpTimer=setInterval("cpBackup()", 5000);
  resizeWidget();
  setFormatting();
  updateSlideColorRanges();
}
function cpIgnore() {
  newFile(g('defaultFileType').selectedIndex);
  g('crashProtect').style.display="none";
  g('mainbody').style.display="block";
  cpTimer=setInterval("cpBackup()", 5000);
  resizeWidget();
}