// Initialize and render the menu bar when it is available in the DOM
YAHOO.util.Event.onContentReady("mainmenubar", 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("mainmenubar", {
        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();
});