TopMenu = {

  FXObj: {},
  OffTimers: {},
  
  On: function(pID) {
    
    if (!TopMenu.FXObj[pID]) {
      new fx.Height(pID, 
        {
          duration: 1, 
          onComplete: function() {
            $(pID).style.visibility = 'visible';
            TopMenu.On(pID);
          } 
        }
      ).custom($(pID).offsetHeight, 0);
     
      TopMenu.FXObj[pID] = new fx.Height(pID, {duration: 250});
    }
    
    clearTimeout(TopMenu.OffTimers[pID]);
    TopMenu.OffTimers[pID] = setTimeout("TopMenu.TryHideMenu('"+pID+"')", 7000);
    
    if ($(pID).offsetHeight == 0) {
      TopMenu.FXObj[pID].clearTimer();
      TopMenu.FXObj[pID].toggle();
      
    }
  },
  
  Off: function(pID) {
    clearTimeout(TopMenu.OffTimers[pID]);
    TopMenu.OffTimers[pID] = setTimeout("TopMenu.TryHideMenu('"+pID+"')", 350);
  },
  
  TryHideMenu: function(pID) {
    if ($(pID).offsetHeight == 0) {
      return;
    }
    
    TopMenu.FXObj[pID].clearTimer(); 
    TopMenu.FXObj[pID].toggle();
    TopMenu.OffTimers[pID] = false;
  }
  
}
