// Initialize and render the menu bar when it is available in the DOM
YAHOO.util.Event.onContentReady("menu", function () {
// Animation object
var oAnim;
// "beforeshow" event handler for each submenu of the menu bar
function onMenuBeforeShow(p_sType, p_sArgs) {
    var oBody,
        oShadow,
        oUL;
    if (this.parent) {
        oShadow = this.element.lastChild;
        oShadow.style.height = "0px";
        if (oAnim && oAnim.isAnimated()) {
            oAnim.stop();
            oAnim = null;
        }
        oBody = this.body;
        oUL = oBody.getElementsByTagName("ul")[0];
        YAHOO.util.Dom.setStyle(oBody, "overflow", "hidden");
        YAHOO.util.Dom.setStyle(oUL, "marginTop", ("-" + oUL.offsetHeight + "px"));
    }
}

function onTween(p_sType, p_aArgs, p_oShadow) {
    if (this.cfg.getProperty("iframe")) {
        this.syncIframe();
    }
    if (p_oShadow) {
        p_oShadow.style.height = this.element.offsetHeight + "px";
    }
}

function onAnimationComplete(p_sType, p_aArgs, p_oShadow) {
    var oBody = this.body,
        oUL = oBody.getElementsByTagName("ul")[0];
    if (p_oShadow) {
        p_oShadow.style.height = this.element.offsetHeight + "px";
    }
    YAHOO.util.Dom.setStyle(oUL, "marginTop", "auto");
    YAHOO.util.Dom.setStyle(oBody, "overflow", "visible");
    if (YAHOO.env.ua.ie) {
        YAHOO.util.Dom.setStyle(oBody, "zoom", "1");
    }
    
}

// "show" event handler for each submenu of the menu bar
function onMenuShow(p_sType, p_sArgs) {
    var oElement,
        oShadow,
        oUL;
    if (this.parent) {
        oElement = this.element;
        oShadow = oElement.lastChild;
        oUL = this.body.getElementsByTagName("ul")[0];
        oAnim = new YAHOO.util.Anim(oUL, 
            { marginTop: { to: 0 } },
            .5, YAHOO.util.Easing.easeOut);

        oAnim.onStart.subscribe(function () {
            oShadow.style.height = "100%";
        });
        oAnim.animate();
        /*
             Refire the event handler for the "iframe" 
             configuration property with each tween so that the  
             size and position of the iframe shim remain in sync 
             with the menu.
        */
        if (YAHOO.env.ua.ie) {
            oShadow.style.height = oElement.offsetHeight + "px";
            oAnim.onTween.subscribe(onTween, oShadow, this);
        }
        oAnim.onComplete.subscribe(onAnimationComplete, oShadow, this);
    }
}


// Instantiate and render the menu bar
var oMenuBar = new YAHOO.widget.MenuBar("menu", { autosubmenudisplay: true, hidedelay: 750, lazyload: true });
oMenuBar.subscribe("beforeShow", onMenuBeforeShow);
oMenuBar.subscribe("show", onMenuShow);
/*
     Call the "render" method with no arguments since the markup for 
     this menu already exists in the DOM.
*/
oMenuBar.render();            
});