function initMenuFromWddx(WddxPacket) {

  // Deserialize WDDX Packet into WddxRecordset object
  var rsTree = new WddxRecordset;
  rsTree.readFromPacket(WddxPacket);

  // Array to remember position of each item we add to tree
  var Level1 = -1;
  var Level2 = -1;
  
  var e;
  // For each row in the recordset, add an item to the tree.
  // A 'parent' ID of -1 indicates a new item off the tree "root"
  // Otherwise, the 'parent' ID indicates the parent of the item
  for (i = 0; i < rsTree.getRowCount(); i++) {
  
    thisItemID = rsTree.getField(i, 'itemid');
    thisParent = rsTree.getField(i, 'parent');
    thisType   = rsTree.getField(i, 'type');
    thisLabel  = rsTree.getField(i, 'label');
    thisHelp   = rsTree.getField(i, 'helptext');
    thisURL    = rsTree.getField(i, 'url');

    if (thisParent == -1) 
      Level1 = theMenu.addEntry(-1, thisType, thisLabel, thisURL, thisHelp);
    else{
      Level2 = theMenu.addChild(Level1, thisType, thisLabel, thisURL , thisHelp);
      var strPacketName = "Packet" + thisItemID;
      e = theMenu.entry[Level2];
      e.FirstChild = -2;
      }
      
	}
}

