/**
  * called when action is browse.
  *
  */
 public function browse()
 {
     $in = CRM_Contact_BAO_GroupContact::getContactGroup($this->_contactId, 'Added');
     // keep track of all 'added' contact groups so we can remove them from the smart group
     // section
     $staticGroups = array();
     if (!empty($in)) {
         foreach ($in as $group) {
             $staticGroups[$group['group_id']] = 1;
         }
     }
     $allGroup = CRM_Contact_BAO_GroupContactCache::contactGroup($this->_contactId);
     $this->assign('groupSmart', NULL);
     $this->assign('groupParent', NULL);
     if (!empty($allGroup)) {
         $smart = $parent = array();
         foreach ($allGroup['group'] as $group) {
             // delete all smart groups which are also in static groups
             if (isset($staticGroups[$group['id']])) {
                 continue;
             }
             if (empty($group['children'])) {
                 $smart[] = $group;
             } else {
                 $parent[] = $group;
             }
         }
         if (!empty($smart)) {
             $this->assign_by_ref('groupSmart', $smart);
         }
         if (!empty($parent)) {
             $this->assign_by_ref('groupParent', $parent);
         }
     }
 }