private function getSortedResults($values)
 {
     if (!empty($values)) {
         $fieldInfo = SJB_ListingFieldManager::getFieldInfoBySID($this->field['sid']);
         if (SJB_Array::get($fieldInfo, 'sort_by_alphabet') > 0) {
             $i18n = SJB_I18N::getInstance();
             $parents = array();
             // in this place we have 'caption' with ids of children items, like '300,301,302,305' etc.
             // need to get real caption value (for children and parent) and sort by it
             foreach ($values as $parent => $items) {
                 if (!is_array($items)) {
                     $items = array();
                 }
                 $sids = array_keys($items);
                 $parentSid = SJB_ListingFieldTreeManager::getParentSID($parent);
                 $parentInfo = SJB_ListingFieldTreeManager::getTreeItemInfoBySID($parentSid);
                 $parents[] = $i18n->gettext('', $parentInfo['caption']);
                 // sort children by alphabet
                 $children = array();
                 foreach ($sids as $sid) {
                     $info = SJB_ListingFieldTreeManager::getTreeItemInfoBySID($sid);
                     $children[] = $i18n->gettext('', $info['caption']);
                 }
                 array_multisort($children, SORT_STRING, $sids);
                 $sids = array_fill_keys($sids, 1);
                 // set to sorted sids
                 $values[$parent] = $sids;
             }
             // sort parent by alphabet
             $keys = array_keys($values);
             array_multisort($parents, SORT_ASC, SORT_STRING, $keys, $values);
             $values = array_combine($keys, $values);
         }
     }
     return $values;
 }
 public static function getTreeParentSID($item_sid)
 {
     return SJB_ListingFieldTreeManager::getParentSID($item_sid);
 }