
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 } },
            .25, 
            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);
    
    }


    // "beforerender" event handler for the menu bar

    function onMenuBeforeRender(p_sType, p_sArgs, p_oMenu) {

        var oSubmenuData = {
        
            "art": [ 
            
                	{ text: "Animation", url: "/art/animation.php" },
	                { text: "Artists on Art", url: "/art/artists_on_art.php" },
	                { text: "Experimental Art", url: "/art/experimental.php" },
	                { text: "Performance Art", url: "/art/performance_art.php" },
	                { text: "Conceptual Art", url: "/art/conceptual_art.php" },
	                { text: "Time Lapse Videos", url: "/art/time_lapse.php" },
					{ text: "Collaborative Art", url: "/art/collaborative_art.php" },
					{ text: "Our Favorite Poems", url: "/art/our_favorite_poems.php" },
					{ text: "Urban Aesthetic", url: "/art/urban_aesthetic.php" }
            
            ],

            "projects": [

			 		{ text: "Hugs for Jacey", url: "projects/hugs_for_jacey.php" },
	                { text: "Free Hugs", url: "/projects/freehugs.php" },
	                { text: "Healing", url: "/projects/healing.php" },
	                { text: "Take Back the Night", url: "/projects/take_back_the_night.php" },
	                { text: "PETA", url: "/projects/peta.php" },
	                { text: "Grafitti", url: "/projects/grafitti.php" },
	                { text: "Advertising", url: "/projects/advertising.php" }                   

            ],
            
            "photography": [

              	 	{ text: "Female Nudes", url: "/photography/female_nudes.php" },
	                { text: "Photography as Art", url: "/photography/photography_as_art.php" },
	                { text: "Photography as Documentation", url:"/photography/photography_as_documentation.php" },
	                { text: "Female Photographers", url: "/photography/female_photographers.php" }         
            
            ],
            
            "feminism": [

                  	{ text: "Body Image", url: "/feminism/body_image.php" },
	                { text: "Identity", url: "/feminism/identity.php" },
               	    { text: "Sexual Politics", url: "/feminism/sexual_politics.php" },
	                { text: "In Our Voice", url: "/feminism/in_our_voice.php" },
	       			{ text: "Women's Health", url: "/feminism/health.php" },
	                { text: "Rethinking Feminism", url: "/feminism/rethinking_feminism.php" },
	                { text: "Prostitution", url: "/feminism/prostitution.php" },
	                { text: "Racial Politics", url: "/feminism/racial_politics.php" },
	                { text: "Anorexia Bulimia", url: "/feminism/anorexia_bulimia.php" },
	                { text: "Women's Liberation", url: "/feminism/womens_liberation.php" },
	                { text: "Pornography / Anti-Pornography", url: "/feminism/pornography_anti_pornography.php" },
	  				{ text: "Activism", url: "/feminism/activism.php" },
					{ text: "Islam & Feminism", url: "/feminism/islam_feminism.php" },
					{ text: "Violence Against Women", url: "/feminism/violence_against_women.php" }
            
            ],

			    "militancy": [

                	{ text: "Females Soldiers in Iraq", url: "/militancy/female_soldiers_iraq.php" },
   					{ text: "War Stories", url: "/militancy/war_stories.php" },
         			{ text: "Battle Grounds", url: "/militancy/battle_grounds.php" },
	                { text: "Russian Female Snipers WWII", url: "/militancy/russian_female_snipers.php" },
	                { text: "Celebrating Woman Warriors", url: "/militancy/celebrating_woman_warriors.php" },
	                { text: "Women at the Shooting Range", url: "/militancy/shooting_range.php" },
	                { text: "Female Fighters", url: "/militancy/female_fighters.php" },
	  				{ text: "Gun Control", url: "/militancy/gun_control.php" }
				         

            ],

		        "resources": [
		
					{ text: "Activism", url: "/resources/activism.php" },    
                	{ text: "Bookshelf", url: "/bookshelf/index.php" }         

            ],

	    	 "about": [

               		{ text: "Articles", url: "/articles/index.php" }           

           ]

        
        };


        this.getItem(0).cfg.setProperty("submenu", { id:"art", itemdata: oSubmenuData["art"] });
        this.getItem(1).cfg.setProperty("submenu", { id:"projects", itemdata: oSubmenuData["projects"] });
        this.getItem(2).cfg.setProperty("submenu", { id:"photography", itemdata: oSubmenuData["photography"] });
        this.getItem(3).cfg.setProperty("submenu", { id:"feminism", itemdata: oSubmenuData["feminism"] });
		this.getItem(4).cfg.setProperty("submenu", { id:"militancy", itemdata: oSubmenuData["militancy"] });
		this.getItem(5).cfg.setProperty("submenu", { id:"resources", itemdata: oSubmenuData["resources"] });
		this.getItem(6).cfg.setProperty("submenu", { id:"about", itemdata: oSubmenuData["about"] });

        setupMenuAnimation(this);

    }


    // Initialize the root menu bar

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


    // Subscribe to the "beforerender" event

    oMenuBar.beforeRenderEvent.subscribe(onMenuBeforeRender, oMenuBar, true);


    // Render the menu bar

    oMenuBar.render();
    
};


// Initialize and render the menu bar when it is available in the DOM

YAHOO.util.Event.onContentReady("productsandservices", YAHOO.example.onMenuBarReady);

