XML Menu in externally loaded movie

This is just driving me nuts all night, so after searching and messing with AS my eyeballs are buggin!

I am loading a movie that contains Kirupa’s XML Menu into the _root movie. The menu works fine in the external movie but when loaded into _root, the buttons don’t work.

Here is the code in the externally loaded movie:


// generates a list of menu items (effectively one menu)
// given the inputted parameters.  This makes the main menu
// as well as any of the submenus
GenerateMenu = function(menucontainer, name, x, y, depth, node_xml) {
    // variable declarations
    var curr_node;
    var curr_item;
    var curr_menu = menucontainer.createEmptyMovieClip(name, depth);
    
    // for all items or XML nodes (items and menus)
    // within this node_xml passed for this menu
    for (var i=0; i<node_xml.childNodes.length; i++) {
        // movieclip for each menu item
        curr_item = curr_menu.attachMovie("menuitem","item"+i+"_mc", i);
        curr_item._x = x;
        curr_item._y = y + i*curr_item._height;
        curr_item.trackAsMenu = true;
        
        // item properties assigned from XML
        curr_node = node_xml.childNodes*;
        curr_item.action = curr_node.attributes.action;
        curr_item.variables = curr_node.attributes.variables;
        curr_item.name.text = curr_node.attributes.name;
        
        // item submenu behavior for rollover event
        if (node_xml.childNodes*.nodeName == "menu"){
            // open a submenu
            curr_item.node_xml = curr_node;
            curr_item.onRollOver = curr_item.onDragOver = function(){
                var x = this._x + this._width - 5;
                var y = this._y + 5;
                GenerateMenu(curr_menu, "submenu_mc", x, y, 1000, this.node_xml);
                // show a hover color
                var col = new Color(this.background);
                col.setRGB(0xf4faff);
            };
        }else{ // nodeName == "item"
            curr_item.arrow._visible = false;
            // close existing submenu
            curr_item.onRollOver = curr_item.onDragOver = function(){
                curr_menu.submenu_mc.removeMovieClip();
                // show a hover color
                var col = new Color(this.background);
                col.setRGB(0xf4faff);
            };
        }
        
        curr_item.onRollOut = curr_item.onDragOut = function(){
            // restore color
            var col = new Color(this.background);
            col.setTransform({ra:100,rb:0,ga:100,gb:0,ba:100,bb:0});
        };
        
        // any item, menu opening or not can have actions
        curr_item.onRelease = function(){
            Actions[this.action](this.variables);
            CloseSubmenus();
        };
    } // end for loop
};

// create the main menu, this will be constantly visible
CreateMainMenu = function(x, y, depth, menu_xml){
    // generate a menu list
    GenerateMenu(this, "mainmenu_mc", x, y, depth, menu_xml.firstChild);
    // close only submenus if visible durring a mouseup
    // this main menu (mainmenu_mc) will remain
    mainmenu_mc.onMouseUp = function(){
        if (mainmenu_mc.submenu_mc && !mainmenu_mc.hitTest(_root._xmouse, _root._ymouse, true)){
            CloseSubmenus();
        }
    };
};

// closes all submenus by removing the submenu_mc
// in the main menu (if it exists)
CloseSubmenus = function(){
    mainmenu_mc.submenu_mc.removeMovieClip();
};

// This actions object handles methods for actions
// defined by the XML called when a menu item is pressed
Actions = Object();
Actions.gotoURL = function(urlVar){
    getURL(urlVar, "_blank");
};
Actions.message = function(msg){
    message_txt.text = msg;
};
Actions.newMenu = function(menuxml){
    menu_xml.load(menuxml);
};

// load XML, when done, run CreateMainMenu to interpret it
menu_xml = new XML();
menu_xml.ignoreWhite = true;
menu_xml.onLoad = function(ok){
    // create main menu after successful loading of XML
    if (ok){
        CreateMainMenu(10, 40, 0, this);
        message_txt.text = "Information...";
    }else{
        message_txt.text = "error:  XML not successfully loaded";
    }
};
// load first XML menu
menu_xml.load("menu1.xml");

// under CreateMainMenu: 10 = x, 40 = y, 0 = level

and here is the XML code:

<?xml version="1.0"?>

<menu name="Shirts">

    <item name="Shirt1" action="gotoURL" variables="asfunction:loadShirt1"/>
    <item name="Shirt2" action="gotoURL" variables="asfunction:loadShirt2"/>

    <menu name="Other Stuff">

        <item name="Records" action="newMenu" variables="menu3.xml"/>

        <item name="Main Menu" action="newMenu" variables="menu1.xml"/>

    </menu>

</menu>

This is an example of the AS on the timeline for my AS Functions:

function loadShirt1() {
    shop.gotoAndStop("shirt1");
}

I can’t figure out what the problem is, maybe from looking at code all night, but perhaps it has something to do with loading into level 0? I don’t know…

help?:jail:

(thx in advance!)