Updating XML in an array issue

I am trying to update some code from AS2 to AS3 and I am having a really hard time with it.
I have a slide loader. It uses XML to hold all of the slide information. What I want to happen is that after I load the slide information I will be able to add or delete a slide and trace the updated information. On top of that I want the slide show to advance to the newly created slide.

This is the basic XML:


<?xml version="1.0" encoding="utf-8"?>
<presentation courseName ="" lesson="" >
  <modules>
    <module>
      <title></title>
      <slide></slide>
      <bullets></bullets>
      <bodyText></bodyText>
      <checkpoint></checkpoint>
      <question></question>
      <answers></answers>
      <correctAnswer></correctAnswer>
      <avatarAnswer></avatarAnswer>
    </module>
  </modules>
</presentation>

I am loading this XML into and array which was easy enough. What I want to do once it is loaded in to the array is to be able to add or delete slides from the array and then trace the new array/XML information. Here is the AS3 I have so far:


var allSlides:Array = new Array();
var _currentSlide:Number = 0;
var numSlides:Number = 0;
var xmlOut:String = "";
var allLength:Number = new Number();
var tt:Number = 0;
var all:XMLList = new XMLList();
 
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, xmlLoaded);
var xml:XML;
 
function xmlLoaded(e:Event):void {
 xml = XML(e.target.data);
 all = xml.modules.module;
 allLength = all.length();
 for (var s:uint=0; s<allLength; s++) {
  allSlides.push(all[s]);
  allSlides._title = all.title;
 }
 populateScreen(0);
}
loader.load(new URLRequest("xml.xml"));
 
var modNode:String = "";
//var modAttName:String = "number";
//var modAtt:Number = modNum;
var titNode:String = titleTxt.text;
var slNode1:String = "";
var bullNode:String = "";
var bdyNode:String = "";
var checkNode:String = "";
var quesNode:String = "";
var answNode:String = "";
var corAnNode:String = "";
var avAnNode:String = "";
var slNode:Array = ["module", "title", "slide", "bullets", "bodyText", "checkpoint", "question", "answers", "correctAnswer", "avatarAnswer"];
 
//var novel:String = <{slNode[0]}{modAttName}={modAtt}>
var novel:String = <{slNode[0]}>
<{slNode[1]}>{titNode}</{slNode[1]}>
<{slNode[2]}>{slNode1}</{slNode[2]}>
<{slNode[3]}>{bullNode}</{slNode[3]}>
<{slNode[4]}>{bdyNode}</{slNode[4]}>
<{slNode[5]}>{checkNode}</{slNode[5]}>
<{slNode[6]}>{quesNode}</{slNode[6]}>
<{slNode[7]}>{answNode}</{slNode[7]}>
<{slNode[8]}>{corAnNode}</{slNode[8]}>
<{slNode[9]}>{avAnNode}</{slNode[9]}>
</{slNode[0]}>;
 
function populateScreen(s) {
 titleTxt.text = allSlides._title[s];
}
function saveScreen(s) {
 allSlides._title[s] = titleTxt.text;
}
function gotoFrame(s) {
 _currentSlide = s;
 if (_currentSlide==allSlides.length) {
  _currentSlide = 0;
 } else if (_currentSlide<=0) {
  _currentSlide = 0;
 }
 populateScreen(_currentSlide);
}
function watchSlides() {
 if (_currentSlide==0) {
  deleteSlideBtn.enabled = false;
  deleteSlideBtn.visible = false;
 } else if (_currentSlide!=0) {
  deleteSlideBtn.enabled = true;
  deleteSlideBtn.visible = true;
 }
}
 
nextSlideButton.addEventListener(MouseEvent.MOUSE_DOWN, nextButton_MOUSEDOWN);
function nextButton_MOUSEDOWN(e:MouseEvent):void {
 saveScreen(_currentSlide);
 gotoFrame(_currentSlide+1);
 //trace(_currentSlide);
}
prevSlideButton.addEventListener(MouseEvent.MOUSE_DOWN, prevSlideButton_MOUSEDOWN);
function prevSlideButton_MOUSEDOWN(e:MouseEvent):void {
 saveScreen(_currentSlide);
 gotoFrame(_currentSlide-1);
 //trace(_currentSlide);
}
 
newSlideBtn.addEventListener(MouseEvent.MOUSE_DOWN, insertButton_MOUSEDOWN);
function insertButton_MOUSEDOWN(e:MouseEvent):void {
 saveScreen(_currentSlide);
 //watchSlides();
 allSlides.splice(_currentSlide+1,0, novel);
 _currentSlide++;
 populateScreen(_currentSlide);
 trace(allSlides.length);
}
 
deleteSlideBtn.addEventListener(MouseEvent.MOUSE_DOWN, deleteButton_MOUSEDOWN);
function deleteButton_MOUSEDOWN(e:MouseEvent):void {
 watchSlides();
 saveScreen(_currentSlide);
 allSlides.splice(_currentSlide,1);
 _currentSlide--;
}
 
saveSlideButton.addEventListener(MouseEvent.MOUSE_DOWN, doneButton_MOUSEDOWN);
function doneButton_MOUSEDOWN(e:MouseEvent):void {
 saveScreen(_currentSlide);
 trace(allSlides);
}
 

I am a total loss here. I have a working version in AS2 but it doesn’t want to work right in AS3. What am I messing up? Where did I go wrong? How do I get this to work?
I am right on the verge of it working; this DOES add and delete slides but it starts acting up after you reach the last slide. After the last slide it adds two slides together; doubling them.