Videoplayer + xml + (list) help please

greetings all,
i’ve hit a wall and i could use some help.
i’m working on a dynamic video player, and i’m trying to add a list component.
All content (video and titles) are loaded from an .xml

i have the video playing fine, and the titles are displayed in the list… so far so good.

My problemo:
i’m trying to get the correct video to display when the list is clicked.

i can get it to step forward but (i can’t get it to step back)

i’m lost… i’ve fould some video playlists online
but it seems everyone is built with the FlvPlayback component. mine is not
the only component is the list… i don’t even know if this maters…

any help would be grand…

 public class VideoJukebox_daily extends MovieClip {
  /**
   * The amount of time between calls to update the playhead timer, in 
   * milliseconds.
   */
  const PLAYHEAD_UPDATE_INTERVAL_MS:uint = 10;
  /**
   * The path to the XML file containing the video playlist.
   */
  const PLAYLIST_XML_URL:String = "playlist.xml";
  /**
   * The client object to use for the NetStream object.
   */
  var client:Object;
  /**
   * The index of the currently playing video.
   */
  var idx:uint = 0;
  /**
   * A copy of the current video's metadata object.
   */
  var meta:Object;
  var nc:NetConnection;
  var ns:NetStream;
  var playlist:XML;
  var t:Timer;
  var uldr:URLLoader;
  var vid:Video;
  var videosXML:XMLList;
 
  /**
   * Constructor
   */
  public function VideoJukebox_daily() {
   // Initialize the uldr variable which will be used to load the external 
   // playlist XML file.
   uldr = new URLLoader();
   uldr.addEventListener(Event.COMPLETE, xmlCompleteHandler);
   uldr.load(new URLRequest(PLAYLIST_XML_URL));
  }
  /**
   * Once the XML file has loaded, parse the file contents into an XML object, 
   * and create an XMList for the video nodes in the XML.
   */
  function xmlCompleteHandler(event:Event):void {
   playlist = XML(event.target.data);
   videosXML = playlist.vid;
   main();
 
 
/////////******************** PASS TITLE / VIDEO TO LIST
   for (var i=0; i<playlist.vid.length(); i++) {
         vid_select.addItem({label:playlist.vid*.@desc, data:playlist.vid*.@src});
   }
 
       vid_select.selectedIndex = 0;
    ns.play(vid_select.getItemAt(0).data);
 
    vid_select.addEventListener(Event.CHANGE, clickit);
  }
 
 
 
 
 
**////////////////////////////////////////////////////////////////////////**
**////////////////////////////////////////////////////////////////////////**
**//////////////////////////////////////////////////////////////////////// This is the problemo**
**function clickit(e:Event) {**
**    trace("selected" + e.target.selectedIndex); **
**   //ns.play(vid_select.getItemAt(vid_select.selectedIndex).data);**
** //ns.play(vid_select.getItemAt(e.target.selectedIndex));**
**   ns.play ("selected");**
**}**
**////////////////////////////////////////////////////////////////////////**
**////////////////////////////////////////////////////////////////////////**
**////////////////////////////////////////////////////////////////////////**
**//////////////////////////////////////////////////////////////////////// This is the problemo END**
 
 
 
 
 
 //vid_select.addEventListener(Event.CHANGE, clickit); 
  /**
   * The main application.
   */
  function main():void {
   // Create the client object for the NetStream, and set up a callback
   // handler for the onMetaData event.
   client = new Object();
   client.onMetaData = metadataHandler;
   nc = new NetConnection();
   nc.connect(null);
   // Initialize the NetSteam object, add a listener for the netStatus 
   // event, and set the client for the NetStream.
   ns = new NetStream(nc);
   ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
   ns.client = client;
   // Initialize the Video object, attach the NetStram, and add the Video
   // object to the display list.
   vid = new Video();
   vid.attachNetStream(ns);
 
/**
   * Event listener for the ns object. Called when the net stream's status 
   * changes.
   */
  function netStatusHandler(event:NetStatusEvent):void {
   try {
    switch (event.info.code) {
     case "NetStream.Play.Start" :
      // If the current code is Start, start the timer object.
      t.start();
      break;
     case "NetStream.Play.StreamNotFound" :
     case "NetStream.Play.Stop" :
      // If the current code is Stop or StreamNotFound, stop 
      // the timer object and play the next video in the playlist.
      t.stop();
      playNextVideo();
      break;
 
    }
   } catch (error:TypeError) {
    // Ignore any errors.
   }
  }
  /**
   * Event listener for the ns object's client property. This method is called 
   * when the net stream object receives metadata information for a video.
   */
  function metadataHandler(metadataObj:Object):void {
   // Store the metadata information in the meta object.
   meta = metadataObj;
 
  }
  /**
   * Retrieve the current video from the playlist XML object.
   */
  function getVideo():String {
   return videosXML[idx].@src;
  }
  /**
   * Play the currently selected video.
   */
  function playVideo():void {
   var src:String = getVideo();
   ns.play(src);
 
 
  }
 
  /**
   * Increase the current video index and begin playback of the video.
   */
  function playNextVideo():void {
   if (idx < (videosXML.length() - 1)) {
    // If this is not the last video in the playlist increase the 
    // video index and play the next video.
    idx++;
    playVideo();
    // Make sure the positionBar progress bar is visible.
    //positionBar.visible = true;
   } else {
    // If this is the last video in the playlist increase the video
    // index, clear the contents of the Video object and hide the 
    // positionBar progress bar. The video index is increased so that 
    // when the video ends, clicking the backButton will play the 
    // correct video.
    idx++;
    vid.clear();
   }
  }
 }
}