XML gallery: numbers + next buttons: PLEASE help?

I’ve adapted the xml gallery to have numbers instead of thumbs from one of the threads here, but now realize that the prev and next buttons do not work properly when including the numbers. (If I press on a number , say “5”, the next button does not necessarily give me image “6”). I thought it was as simple as adding “picture num()” to the buttons code, but it didn;t work. Can someone please give me some guidance as to what I should be changing in the code?
Here it is:


function loadXML(loaded) {
 if (loaded) {
  var item_spacing = 20;
  var item_count = 0;
  xmlNode = this.firstChild;
  image = [];
  description = [];
  item_mc = [];
  total = xmlNode.childNodes.length;
  for (i=0; i<total; i++) {
   image* = xmlNode.childNodes*.childNodes[0].firstChild.nodeValue;
   //trace(image*)
   description* = xmlNode.childNodes*.childNodes[1].firstChild.nodeValue;
   //trace(names)
   //
   item_mc* = numbersB.attachMovie("btn", "item"+i, i);
   item_mc*.btnid = i;
     item_mc*._x = i*item_spacing;
   //item_mc*.myText.autoSize = "center";
   item_mc*.myText.text = i+1;
   item_count++;
   item_mc*.onRelease = function() {
    picture.loadMovie(image[this.btnid], 1);
    desc_txt.text = description[0];
    picture_num();
     };  

  }
  firstImage();
 } else {
  content = "file not loaded!";
 }
}
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("images.xml");
/////////////////////////////////////
listen = new Object();
listen.onKeyDown = function() {
 if (Key.getCode() == Key.LEFT) {
  prevImage();
 } else if (Key.getCode() == Key.RIGHT) {
  nextImage();
 }
};
Key.addListener(listen);
previous_btn.onRelease = function() {
 prevImage();
};
next_btn.onRelease = function() {
 nextImage();
};
//
/////////////////////////////////////
p = 0;
//
///
this.onEnterFrame = function() {
 filesize = picture.getBytesTotal();
 loaded = picture.getBytesLoaded();
 preloader._visible = true;
 if (loaded != filesize) {
  preloader.preload_bar._xscale = 100*loaded/filesize;
 } else {
  preloader._visible = false;
  if (picture._alpha<100) {
   picture._alpha += 10;
  }
 }
};
function thisImage() {
 if (p<(total-1)) {
  p++;
  if (loaded == filesize) {
   picture._alpha = 0;
   picture.loadMovie(image[p], 1);
   img_text.desc_txt.text = description[p];
   picture_num();
  }
 }
}
function nextImage() {
 if (p<(total-1)) {
  p++;
  if (loaded == filesize) {
   picture._alpha = 0;
   picture.loadMovie(image[p], 1);
   img_text.desc_txt.text = description[p];
   picture_num();
  }
 }
}
function prevImage() {
 if (p>0) {
  p--;
  picture._alpha = 0;
  picture.loadMovie(image[p], 1);
  img_text.desc_txt.text = description[p];
  picture_num();
 }
}
function firstImage() {
 if (loaded == filesize) {
  picture._alpha = 0;
  picture.loadMovie(image[0], 1);
  desc_txt.text = description[0];
  picture_num();
 }
}
function picture_num() {
 current_pos = p+1;
 pos_txt.text = current_pos+" / "+total;
}

//