    YAHOO.example.onMenuBarReady = function() {
      // Animation object
      var oAnim;

      // Utility function used to setup animation for submenus

      function setupMenuAnimation(p_oMenu) {
        if(!p_oMenu.animationSetup) {

          var aItems = p_oMenu.getItemGroups();
    
          if(aItems && aItems[0]) {
    
            var i = aItems[0].length - 1;
            var oSubmenu;

            do {
              oSubmenu = p_oMenu.getItem(i).cfg.getProperty("submenu");
        
              if(oSubmenu) {
                oSubmenu.beforeShowEvent.subscribe(onMenuBeforeShow, oSubmenu, true);
                oSubmenu.showEvent.subscribe(onMenuShow, oSubmenu, true);
              }
            }
            while(i--);
          }

          p_oMenu.animationSetup = true;
        }
      }


      // "beforeshow" event handler for each submenu of the menu bar

      function onMenuBeforeShow(p_sType, p_sArgs, p_oMenu) {
        if(oAnim && oAnim.isAnimated()) {        
          oAnim.stop();
          oAnim = null;
        }
        YAHOO.util.Dom.setStyle(this.element, "overflow", "hidden");
        YAHOO.util.Dom.setStyle(this.body, "marginTop", ("-" + this.body.offsetHeight + "px"));
      }

      // "show" event handler for each submenu of the menu bar

      function onMenuShow(p_sType, p_sArgs, p_oMenu) {

        oAnim = new YAHOO.util.Anim(
          this.body, 
          { marginTop: { to: 0 } },
          .2, 
          YAHOO.util.Easing.easeOut
        );

        oAnim.animate();
        var me = this;
                        
        function onTween() {
          me.cfg.refireEvent("iframe");
        }

        function onAnimationComplete() {

          YAHOO.util.Dom.setStyle(me.body, "marginTop", ("0px"));
          YAHOO.util.Dom.setStyle(me.element, "overflow", "visible");

          setupMenuAnimation(me);

        }
        
        /*
          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(this.cfg.getProperty("iframe") == true) {
          oAnim.onTween.subscribe(onTween);
        }

        oAnim.onComplete.subscribe(onAnimationComplete);
                
      }

      // "render" event handler for the menu bar

      function onMenuRender(p_sType, p_sArgs, p_oMenu) {
        setupMenuAnimation(p_oMenu);
      }


      // Instantiate and render the menu bar

      var oMenuBar = new YAHOO.widget.MenuBar("playermenubar", { autosubmenudisplay:true, hidedelay:750, lazyload:true });

      // Subscribe to the "render" event

      oMenuBar.renderEvent.subscribe(onMenuRender, oMenuBar, true);

      oMenuBar.render();

    };

    // Initialize and render the menu bar when it is available in the DOM
    YAHOO.util.Event.onContentReady("playermenubar", YAHOO.example.onMenuBarReady);
