/****************************
Roboshrub Inc.
Save Menu
http://roboshrub.blogspot.com
*****************************/

// Sets up the save window.
function showSave() {
  togglePrompt('savePrompt');
  showWindow('saveWindow');
  g('saveInput').focus();
}

// Toggles the disabled status of the password box.
function toggleDis() {
  if (!g('passBox').checked) {
    g('passEnter').disabled = 'disabled';
    g('passEnter').value = '';
  }
  else {
    g('passEnter').disabled = false;
    g('passEnter').focus();
  }
}

// Saves the current data in a cookie.
function getSaveData(fName, fPassword, fromSaveMenu) {

  // File Name
  var nameData = fName;
  
  // Password
  var passData;
  if (fromSaveMenu) {
    passData = (g('passBox').checked && g('passEnter').value!="") ? fPassword : '|N|';
  }
  else {
    passData = fPassword;
  }

  // Date
  var dateData = giveTime();
  
  // Get Current Notes
  slideNotes[curSlide] = g('notesText').value;
  
  // Get Current Content
  slideContent[curSlide] = HTMLToggle ? g('contentFrame').contentWindow.document.body.innerHTML : g('textWindow').value;
  
  // Get Current slide heading
  if (activeFileType == 2 || activeFileType == 3) {
    slideBacks[curSlide] = g('S5headText').value;
  }
  
  // Checks to make sure all slides are valid
  for (i=0; i < slideContent.length; i++) {
    var filters = [/\|F\|/g, /\|P\|/g, /\|S\|/g, /\|N\|/g];
    for (k in filters) {
      slideContent[i] = slideContent[i].replace(filters[k], "");
      slideNotes[i] = slideNotes[i].replace(filters[k], "");
    }
  }
  
  // Gets all slide data
  var slideData = slideContent.join("|S|");
  var notesData = slideNotes.join("|S|");
  
  /*** Prepare formatting ***/
  var tempBacks = [];
  var tempLinks = [];
  var tempLists = [];
  var tempSpace = [];
  var tempLayout = [];
  var tempTrans = [];
  var tempTiming = [];
  
  // Project Velt slideshow
  if (activeFileType == 0 || activeFileType == 1) {
    for (i=0; i < slideBacks.length; i++) {
      tempBacks[i] = slideBacks[i].join("|N|");
      tempLinks[i] = slideLinks[i].join("|N|");
      tempLists[i] = slideLists[i].join("|N|");
      tempSpace[i] = slideSpace[i].join("|N|");
      tempLayout[i] = slideLayout[i].join("|N|");
    }
  }
  // S5 Slideshow
  else if (activeFileType == 2 || activeFileType == 3) {
    for (i=0; i < slideLayout.length; i++) {
      tempLayout[i] = slideLayout[i].join("|N|");
    }

	tempBacks = [slideBacks.join("|S|")]; // Slide Headings
	
	// Unused
    tempLinks = ["|N|"];
    tempLists = ["|N|"];

	// Meta data
	var metaReservedStripper = ["N", "C", "E", "D", "S", "L", "V"];  // Removes reserved characters from metadata
	for (i=0; i < metaReservedStripper.length; i++) {
      for (var k=0; k < filters.length; k++) {
        g("efi" + metaReservedStripper[i]).value = g("efi" + metaReservedStripper[i]).value.replace(filters[k], "");
      }
	}
    tempSpace = [g("efiN").value, g("efiC").value, g("efiE").value, g("efiD").value, getGenerator(), g("efiS").value, g("efiL").value, g("efiV").value, "S5 1.1", g("efiW").value, g('editFileSelectTL').selectedIndex, g('editFileSelectTR').selectedIndex,g('editFileSelectBL').selectedIndex,g('editFileSelectBR').selectedIndex];
  }
  
  var backsData = tempBacks.join("|S|");
  var linksData = tempLinks.join("|S|");
  var listsData = tempLists.join("|S|");
  var spaceData;
  var layoutData = tempLayout.join("|S|");
  
  if (activeFileType == 0 || activeFileType == 1) {
    spaceData = tempSpace.join("|S|"); // Line spacing
  }
  if (activeFileType == 2 || activeFileType == 3) {
    spaceData = tempSpace.join("|N|"); // Meta data
  }
  
  // Custom Fields
  var cFields = [];
  if (customFields[0] == undefined) {
    cFields = "|N|";
  }
  else {
    for (i=0; i < customFields.length; i++) {
      cFields[i] = customFields[i].join("|N|");
    }
    cFields = cFields.join("|S|");
  }
  
  // Slide Transitions
  for (i=0; i < slideTrans.length; i++) {
    tempTrans[i] = slideTrans[i].join("|N|");
  }
  tempTrans = tempTrans.join("|S|");
  
  // Slide Timing
  for (i=0; i < slideTiming.length; i++) {
    tempTiming.push([]);
    tempTiming[i][0] = slideTiming[i][0] ? 1 : 0;
    tempTiming[i][1] = slideTiming[i][1];
    tempTiming[i][2] = slideTiming[i][2];
    tempTiming[i] = tempTiming[i].join("|N|");
  }
  tempTiming = tempTiming.join("|S|");
  
  var storeIt = [nameData, passData, dateData, slideData, notesData, backsData, linksData, listsData, spaceData, layoutData, cFields, activeFileType, tempTrans, tempTiming, "|N|"].join("|P|");
  
  return storeIt;
}

function saveData(fName, fPassword, fromSaveMenu, saveAs) {
  var tempFiles=data.get("Velt_2").split("|F|");
  var sData=getSaveData(fName, fPassword, fromSaveMenu);
  if (sData==null) {return;}
  
  // Make sure the changed file is at the end
  if (!saveAs) {
    tempFiles.splice(activeFile, 1);
  }
  tempFiles.push(sData);
  if (tempFiles[0]=="") {tempFiles.shift();}
  
  // Update the cookie
  var sFinal=tempFiles.join("|F|");
  data.set("Velt_2", sFinal);
  
  // No saved data exists, make this the first file
  activeFile=data.get("Velt_2").split("|F|").length-1;
  if (activeFile<0) {activeFile=0;}
  
  g('saveInput').value='';
  g('passEnter').value='';
  g('passEnter').disabled=true;
  g('passBox').checked=false;
  closeAllWindows();
}

function pureSave() {
  // File has never been saved.
  if (activeFile<0) {
    showSave();
    return;
  }
  var thisFile=data.get("Velt_2").split("|F|")[activeFile].split("|P|");
  var tempName=thisFile[0];
  var tempPass=thisFile[1];
  saveData(tempName, tempPass, false, false);
}

// Save Button hover behavior.
function hoverFile() {
  g('sloganArea').style.display="inline";
  if (activeFile>=0) {
    var temp=data.get("Velt_2").split("|F|")[activeFile].split("|P|")[0];
    if (temp.length>22) {
      temp=temp.substring(0,19)+"...";
    }
    g('sloganArea').innerHTML="Save File: \""+temp+"\"";
  }
  else {
    g('sloganArea').innerHTML="No File Is Loaded";
  }
}

function checkSaveSubmit(e) {
  if (e.keyCode==13) {
    stripReserved('saveInput');
    stripReserved('passEnter');
    saveData(g('saveInput').value, g('passEnter').value, true, true);
	return false;
  }
}