// Add submenu item
 public void AddItem(ref cMenuItem item)
 {
     if (SubMenu == null)	{
         SubMenu = new cMenu(Id, false);
         SubMenu.ParentPage = this.ParentPage;
     }
     SubMenu.AddItem(ref item);
 }
 // Check if a menu item should be shown
 public bool RenderItem(cMenuItem item)
 {
     if (item.SubMenu != null) {
         foreach (cMenuItem subitem in item.SubMenu.ItemData) {
             if (item.SubMenu.RenderItem(subitem))
                 return true;
         }
     }
     return (item.Allowed && ew_NotEmpty(item.Url));
 }
 // Find item
 public bool FindItem(int id, ref cMenuItem outitem)
 {
     bool result = false;
     cMenuItem item;
     result = false;
     for (int i = 0; i <= ItemData.Count - 1; i++) {
         item = (cMenuItem)ItemData[i];
         if (item.Id == id) {
             outitem = item;
             return true;
         } else if (item.SubMenu != null) {
             if (item.SubMenu.FindItem(id, ref outitem))
                 return true;
         }
     }
     return result;
 }
 // Add a menu item
 public void AddMenuItem(int aId, string aText, string aUrl, int aParentId, string aSrc, bool aAllowed, bool aGroupTitle)
 {
     cMenuItem oParentMenu = null;
     cMenuItem item = new cMenuItem(aId, aText, aUrl, aParentId, aSrc, aAllowed, aGroupTitle);
     item.Page = m_Page;
     if (!ParentPage.MenuItem_Adding(ref item))
         return;
     if (item.ParentId < 0) {
         AddItem(ref item);
     }	else {
         if (FindItem(item.ParentId, ref oParentMenu))
             oParentMenu.AddItem(ref item);
     }
 }
 // Add item to internal ArrayList
 public void AddItem(ref cMenuItem item)
 {
     ItemData.Add(item);
 }
    public bool MenuItem_Adding(ref cMenuItem Item)
    {
        //HttpContext.Current.Response.Write(Item.AsString());
        // Return False if menu item not allowed

        return true;
    }