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

var totaldel=-1;

// Sets up the delete window.
function showDelete() {
  g('delInfo').innerHTML="";
  togglePrompt('delPrompt');
  showWindow('delWindow');
  deleteList();
}

// Populates a list of saved files for the "Delete" window.
function deleteList() {
  try {
    disableDelete(false);
    if (data.get("Velt_2").length<1) {throw "";} // Don't bother if there are no files
    
    var temp=data.get("Velt_2").split("|F|");
    g('delContainer').innerHTML="";
    totaldel=temp.length; // Total number of saves.
      
    /* Creates checkboxes for each saved file. This
     * allows the user to delete or copy more than one
     * file at once.
     */
    for (i=temp.length-1; i>=0; i--) {
      var currentName=temp[i].split("|P|")[0];
      g('delContainer').innerHTML+="<input type='checkbox' id='del"+i+"'><label for='del"+i+"'>"+currentName+"</label><br>";
    }
    
  }
  catch(e) {
    g('delContainer').innerHTML="<div class='nofile'>There are no saved files.<\/div>";
    disableDelete(false);
  }
}

// Disables/enables all elements in the Delete window.
function disableDelete(a) {
  var delItems=g('delWindow').getElementsByTagName("input");
  for (i=0; i<delItems.length; i++) {
    delItems[i].disabled=a;
  }
}

// Cancels delete and copy functions.
function cancelDel() {
  g('delInfo').innerHTML="";
  disableDelete(false);
}

// Selects all checkboxes in the "Delete" window.
function selectAll() {
  if (totaldel<0) {
    return;
  }
  try {
    for (i=0; i<totaldel; i++) {
      g("del"+i).checked=true;
    }
  }
  catch(e) {
    return;
  }
}

// Deselects all checkboxes in the "Delete" window.
function selectNone() {
  if (totaldel<0) {
    return;
  }
  try {
    for (i=0; i<totaldel; i++) {
      g("del"+i).checked=false;
    }
  }
  catch(e) {
    return;
  }
}

// Inverts selection of checkboxes.
function invertSelection() {
  if (totaldel<0) {
    return;
  }
  try {
    for (i=0; i<totaldel; i++) {
      g("del"+i).checked=(g("del"+i).checked) ? false: true;
    }
  }
  catch(e) {
    return;
  }
}

function confirmFunction(doThis, doFunction) {

  // There's no previous saved data.
  if (data.get("Velt_2").length<1) {
    g('delInfo').innerHTML="You have no files.";
    return;
  }
  disableDelete(true);
  
  // User has files
  var anyChecked=false;
  for (i=0; i<totaldel; i++) {
    if (g("del"+i).checked) {
      anyChecked=true;
    }
  }
    
  // Checks for no selected saves.
  if (!anyChecked) {
    cancelDel();
    g('delInfo').innerHTML="You haven't selected any files.";
    return;
  }
  
  g('delInfo').innerHTML="Do you want to <strong>"+doThis+"</strong> the selected files?<div>";
  g('delInfo').innerHTML+="<input type='button' class='miniButton' style='margin:5px;' onclick='"+doFunction+"();' value='Yes'>";
  g('delInfo').innerHTML+="<input type='button' class='miniButton' style='margin:5px;' onclick='cancelDel();' value='No'></div>";
}

// Deletes files
function deleteFiles() {
  var finalString="";
  var temp=data.get("Velt_2").split("|F|");
  
  for (i=0; i<temp.length; i++) {
    // Mark file for deletion
    if (g("del"+i).checked) {
      temp.splice(i, 1, "|N|");
    }
    // User deleted active file
    if (activeFile==i && g("del"+i).checked) {
      activeFile=-1;
    }
    // User deleted file before active file
    if (activeFile>i && g("del"+i).checked) {
      activeFile--;
    }
  }
  
  // Truly removes deleted data
  for (i=0; i<temp.length; i++) {
    if (temp[i]=="|N|") {
      temp.splice(i, 1);
      i--;
    }
  }
  
  // Files after deletion
  finalString=(temp.length>1) ? temp.join("|F|") : temp.join("");
  data.set("Velt_2", finalString);
  
  g('delInfo').innerHTML="All selected files have been deleted.";
  disableDelete(false);
  deleteList();
}

// Copies files
function copyFiles() {
  var temp=data.get("Velt_2").split("|F|");
  
  for (i=0; i<totaldel; i++) {
    // User cannot copy password-protected files.
    if (g("del"+i).checked && temp[i].split("|P|")[1]!="|N|") {
      g('delInfo').innerHTML="<div>Copy failed.</div><div>You can't copy files that are password protected.</div>";
      disableDelete(false);
      return;
    }
    // Copy file
    if (g("del"+i).checked) {
      temp.push(temp[i]);
      
      // Updates name and time
      var tempArray=temp[temp.length-1].split("|P|");
      tempArray[0]="Copy of "+tempArray[0];
      tempArray[2]=giveTime();
      temp[temp.length-1]=tempArray.join("|P|");
    }
  }
  
  data.set("Velt_2", temp.join("|F|"));
  g('delInfo').innerHTML="All selected files have been copied.";
  deleteList();
}

// Merges files
function mergeFiles() {
  var temp = data.get("Velt_2").split("|F|");
  var filesToMerge = [];
  var fileTypes = [[], []]; // Velt or S5
  
  for (i=0; i<totaldel; i++) {
    // User cannot merge password-protected files.
    if (g("del"+i).checked && temp[i].split("|P|")[1] != "|N|") {
      g('delInfo').innerHTML = "<div>You can't merge password-protected files.</div>";
      disableDelete(false);
      return;
    }
	
	// Velt + S5 mismatches
	var tempType = temp[i].split("|P|")[11];
	if (g("del"+i).checked && (tempType == "0" || tempType == "1")) {
	  fileTypes[0].push(0);
	}
	if (g("del"+i).checked && (tempType == "2" || tempType == "3")) {
	  fileTypes[1].push(0);
	}
	if (fileTypes[0] != '' && fileTypes[1] != '') {
	  g('delInfo').innerHTML = "<div>You can't merge Velt and S5 slideshows.</div>";
      disableDelete(false);
      return;
	}
	
    // Merge file
    if (g("del"+i).checked) {
      filesToMerge.push(temp[i].split("|P|"));
    }
  }
  
  // Grabs pieces for the new file
  var tempContents = [];
  var tempNotes = [];
  var tempBacks = [];
  var tempLinks = [];
  var tempLists = [];
  var tempSpace = [];
  var tempLayout = [];
  var tempFields = [];
  var tempTrans = [];
  var tempTiming = [];
  
  for (i=0; i<filesToMerge.length; i++) {
    tempContents.push(filesToMerge[i][3]);
    tempNotes.push(filesToMerge[i][4]);
    tempBacks.push(filesToMerge[i][5]);
    tempLinks.push(filesToMerge[i][6]);
    tempLists.push(filesToMerge[i][7]);
    tempSpace.push(filesToMerge[i][8]);
    tempLayout.push(filesToMerge[i][9]);
    tempFields.push(filesToMerge[i][10]);
    tempTrans.push(filesToMerge[i][12]);
    tempTiming.push(filesToMerge[i][13]);
  }
  
  // Puts together new merged file
  var newActiveFileType = (fileTypes[0] != '') ? "0" : "2";
  var finalString;
  if (newActiveFileType == "0") {
    finalString = ["New Merged Velt File (" + getDateTime(16) + ")", "|N|", giveTime(), tempContents.join("|S|"), tempNotes.join("|S|"), tempBacks.join("|S|"), tempLinks.join("|S|"), tempLists.join("|S|"), tempSpace.join("|S|"), tempLayout.join("|S|"), tempFields.join("|S|"), newActiveFileType, tempTrans.join("|S|"), tempTiming.join("|S|"), "|N|"];
  }
  if (newActiveFileType == "2") {
    finalString = ["New Merged S5 File (" + getDateTime(16) + ")", "|N|", giveTime(), tempContents.join("|S|"), tempNotes.join("|S|"), tempBacks.join("|S|"), "|N|", "|N|", defaultMetaData.join("|N|"), tempLayout.join("|S|"), tempFields.join("|S|"), newActiveFileType, tempTrans.join("|S|"), tempTiming.join("|S|"), "|N|"];
  }
  
  // Saves new merged file
  temp.push(finalString.join("|P|"));
  data.set("Velt_2", temp.join("|F|"));
  g('delInfo').innerHTML="All selected files have been merged.";
  deleteList();
}