﻿YAHOO.example.OverlayManager = new YAHOO.widget.OverlayManager();


// Data used to built product category submenus

var g_aYProducts = {

    products: [
    
        { text: "OWLS System", url: "OWLS-System.aspx" },
        { text: "OWLS Sensor chips", url: "sensorchip_ow2400.aspx" },
        { text: "Accessories", url: "label-free-biosensor-accessories.aspx" },
        { text: "Technology", url: "technology-overview.aspx" },
        { text: "QCM-ITO Crystal", url: "Quartz-Crystal-Microbalance-ITO-QCM-Electrohemical-Transparent.aspx" }
        

    ],

    company: [

        { text: "About MicroVacuum", url: "company.aspx" },
        { text: "Contact us", url: "contactus.aspx" },
        { text: "News", url: "news.aspx" }

    ],
    
    applications: [

        { text: "Application areas", url: "label-free-biosensor-applications.aspx" },
        { text: "Application notes", url: "label-free-biosensor-application-notes.aspx" },
        { text: "Publications", url: "publications.aspx" }

    ]

};

var g_nTimeoutId;


// "mouseover" event handler for the root menu

function onMenuBarMouseOver(p_sType, p_aArguments, p_oMenu) {

    if(g_nTimeoutId) {

        window.clearTimeout(g_nTimeoutId);

    }

}

// "mouseover" event handler for each submenu

function onSubmenuMouseOver(p_sType, p_aArguments, p_oMenu) {

    if(g_nTimeoutId) {

        window.clearTimeout(g_nTimeoutId);

    }

}


// "mouseout" event handler for each submenu

function onSubmenuMouseOut(p_sType, p_aArguments, p_oMenu) {

    function hideMenu() {

        p_oMenu.hide();

    }


    if(g_nTimeoutId) {

        window.clearTimeout(g_nTimeoutId);

    }

    g_nTimeoutId = window.setTimeout(hideMenu, 750);

}


// "mousedown" handler for the document

function onDocumentMouseDown(p_oEvent) {

    YAHOO.example.OverlayManager.hideAll();

}


// "mouseover" handler for each item in the menu bar

function onMenuBarItemMouseOver(p_sType, p_aArguments, p_oMenuItem) {

    var oActiveItem = this.parent.activeItem;


    // Hide any other submenus that might be visible

    if(oActiveItem && oActiveItem != this) {

        this.parent.clearActiveItem();

    }


    // Select and focus the current MenuItem instance

    this.cfg.setProperty("selected", true);
    this.focus();


    // Show the submenu for this instance

    var oSubmenu = this.cfg.getProperty("submenu");

    if(oSubmenu) {

        oSubmenu.show();

    }

};


// "mouseout" handler for each item in the menu bar

function onMenuBarItemMouseOut(p_sType, p_aArguments, p_oMenuItem) {

    this.cfg.setProperty("selected", false);


    var oSubmenu = this.cfg.getProperty("submenu");

    if(oSubmenu) {

        var oEvent = p_aArguments[0],
            oRelatedTarget = YAHOO.util.Event.getRelatedTarget(oEvent);

        if(
            !(
                oRelatedTarget == oSubmenu.element || 
                this._oDom.isAncestor(oSubmenu.element, oRelatedTarget)
            )
        ) {

            oSubmenu.hide();

        }

    }

};

// "load" handler for the window

function onWindowLoad() {

    roundIt();

    var oMenuBar = new YAHOO.widget.MenuBar("yproducts");

    var i = oMenuBar.getItemGroups()[0].length - 1,
        oMenuItem,
        oSubmenu,               
        aSubmenuItems,
        nSubmenuItems;


    do {

        oMenuItem = oMenuBar.getItem(i);
        
        aSubmenuItems = g_aYProducts[oMenuItem.element.id];

        if(aSubmenuItems) {
        
            // Create a submenu

            oSubmenu = new YAHOO.widget.Menu(
                            (oMenuItem.element.id + "menu")
                        );

            // Add a "mouseover" event handler to the submenu

            oSubmenu.mouseOverEvent.subscribe(
                    onSubmenuMouseOver, 
                    oSubmenu, 
                    true
                );


            // Add a "mouseout" event handler to the submenu

            oSubmenu.mouseOutEvent.subscribe(
                    onSubmenuMouseOut,
                    oSubmenu, 
                    true
                );


            // Add items to the submenu

            nSubmenuItems = aSubmenuItems.length;

            for(var n=0; n<nSubmenuItems; n++) {

                oSubmenu.addItem(
                    new YAHOO.widget.MenuItem(
                        aSubmenuItems[n].text, 
                        { url: aSubmenuItems[n].url}
                        )
                    );

            }


            // Add the submenu to its parent item in the main menu

            oMenuItem.cfg.setProperty("submenu", oSubmenu);

            YAHOO.example.OverlayManager.register(oSubmenu);
            
        }
    
    }
    while(i--);


    // Render the menubar and corresponding submenus
    
    oMenuBar.render();


    /*
        Add a "mouseover" and "mouseout" event handler each item 
        in the menu bar 
    */               

    var aMenuBarItems = oMenuBar.getItemGroups()[0],
        i = aMenuBarItems.length - 1;

    do {

        aMenuBarItems[i].mouseOverEvent.subscribe(
            onMenuBarItemMouseOver, 
            this
        );

        aMenuBarItems[i].mouseOutEvent.subscribe(
            onMenuBarItemMouseOut, 
            this
        );
    
    }
    while(i--);


    // Add a "mouseover" handler to the menubar

    oMenuBar.mouseOverEvent.subscribe(
            onMenuBarMouseOver, 
            oMenuBar, 
            true
        );


    // Add a "mousedown" handler to the document

    YAHOO.util.Event.addListener(
            document, 
            "mousedown", 
            onDocumentMouseDown
        );

}


// Add a "load" handler for the window

YAHOO.util.Event.addListener(window, "load", onWindowLoad);
