var PulldownMenus = {
    closeDelay: 100,
    closeTimer: new Object(), 

    ShowDropDownMenu: function(sourceElem, menuElemID) {
	    // Reset the menu first, just to be safe
	    PulldownMenus.HideDropDownMenu(sourceElem, menuElemID);
    	
	    var menuElem = Get(menuElemID);
         
	    // Position the menu
	    menuElem.style.left = Pliner.Util.Display.FindXPosition(sourceElem) + "px";
	    menuElem.style.top  = (Pliner.Util.Display.FindYPosition(sourceElem) + sourceElem.offsetHeight - 1) + "px";
    
	    // Show the menu
	    menuElem.style.display = "block";
	    menuElem.style.zIndex = 10000;
	    
	    //keep root menu item highlighted
    	sourceElem.className = "rootMenuItemHover"; 
	    
	    menuElem = null;
    }, 
    
    ShowDropDownSubMenu: function(rootElem, sourceElem, menuElemID) {
	    // Reset the menu first, just to be safe
	    PulldownMenus.HideDropDownMenu(sourceElem, menuElemID);
    	
	    var menuElem = Get(menuElemID);
         
	    // Position the menu
	    menuElem.style.left = (Pliner.Util.Display.FindXPosition(sourceElem) + sourceElem.offsetWidth) + "px";
	    menuElem.style.top  = Pliner.Util.Display.FindYPosition(sourceElem) + "px";
    
	    // Show the menu
	    menuElem.style.display = "block";
	    menuElem.style.zIndex = 10000;
	    
	    //keep root menu item highlighted
	    rootElem.className = "rootMenuItemHover"; 
	    
	    menuElem = null;        
    }, 
    
    MouseOverSubMenu: function(rootElem, sourceElem, menuElemID) {
        clearTimeout(PulldownMenus.closeTimer[menuElemID]);
        clearTimeout(PulldownMenus.closeTimer[sourceElem]);
        
        //Keep other menu parts highlighted
        rootElem.className = "rootMenuItemHover";
    },
    
//    MouseOutDropDown: function(rootElem, sourceElem, menuElemID) {
//    
//    	CloseDropDownMenu(sourceElem, menuElemID);
//    	CloseDropDownMenu(rootElem, sourceElem);
//    
//    },

    HideDropDownMenu: function(sourceElem, menuElemID) {
	    // Clear the close timeout
	    if (PulldownMenus.closeTimer[menuElemID])
	        clearTimeout(PulldownMenus.closeTimer[menuElemID]);

	    // Hide the menu
	    Get(menuElemID).style.display = "none";
	    sourceElem.setAttribute("class", "");
    	sourceElem.setAttribute("className", ""); 
    }, 

    CloseDropDownMenu: function(sourceElem, menuElemID) {
	    PulldownMenus.closeTimer[menuElemID] = setTimeout(function() { PulldownMenus.HideDropDownMenu(sourceElem, menuElemID); }, PulldownMenus.closeDelay);
    }, 

    MouseOverMenu: function(menuElemID) {
	    // Clear the close timeout
	    clearTimeout(PulldownMenus.closeTimer[menuElemID]);
	    
    }
};