--- content_taxonomy.module	2009-06-30 19:26:35.915000000 +0300
+++ content_taxonomy_new.module	2009-06-30 14:27:29.090000000 +0300
@@ -257,21 +257,27 @@ function content_taxonomy_allowed_values
   
   $depth = (is_numeric($field['depth'])) ? $field['depth'] : NULL;
 
-  $tree = taxonomy_get_tree($field['vid'], content_taxonomy_field_get_parent($field), -1, $depth);
-  
-  if (is_array($tree)) {
-    foreach ($tree as $term) {
-      _content_taxonomy_localize_term($term);
-      if ($field['widget']['show_depth']) {
-        $value = str_repeat(' - ', $term->depth) . $term->name;
-      }
-      else {
-        $value = $term->name;
-      }
-      //do a check_plain except for selects because form api does that
-      $options[$term->tid] = ($field['widget']['type'] == 'content_taxonomy_select') ? $value : check_plain($value);
-    }
+  $parents = content_taxonomy_field_get_parent($field);
+  if (!is_array($parents)) $parents_ids = array($parents); else $parents_ids = $parents;
+  foreach($parents_ids as $parent)
+  {
+	  $tree = taxonomy_get_tree($field['vid'], $parent, -1, $depth);
+	  if (is_array($tree)) {
+	    foreach ($tree as $term) {
+	      _content_taxonomy_localize_term($term);
+	      if ($field['widget']['show_depth']) {
+	        $value = str_repeat(' - ', $term->depth) . $term->name;
+	      }
+	      else {
+	        $value = $term->name;
+	      }
+	      //do a check_plain except for selects because form api does that
+	      $options[$term->tid] = ($field['widget']['type'] == 'content_taxonomy_select') ? $value : check_plain($value);
+	    }
+	  }
   }
+  if (isset($field['#sorted'])) asort($options);
+  
   if (($field['widget']['type'] == 'content_taxonomy_select' && !$field['multiple']) || ($field['widget']['type'] == 'content_taxonomy_options' && !$field['multiple'] && !$field['required'])) {
     $options = array('' => theme('content_taxonomy_options_widgets_none', $field)) + $options;
   }
@@ -283,14 +289,18 @@ function content_taxonomy_allowed_values
  */
 function content_taxonomy_allowed_values_groups($field) {
   $options = array();
-  $parent = content_taxonomy_field_get_parent($field);
+  $parents = content_taxonomy_field_get_parent($field);
   $group_parent = $field['widget']['group_parent'];
   
   //if children in no group
-  $default_terms = taxonomy_get_children($parent);
-  foreach ($default_terms as $default_term) {
-    _content_taxonomy_localize_term($default_term);
-    $options[$default_term->tid] = check_plain($default_term->name);
+  if (!is_array($parents)) $parents_ids = array($parents); else $parents_ids = $parents;
+  foreach($parents_ids as $parent)
+  {
+	  $default_terms = taxonomy_get_children($parent);
+	  foreach ($default_terms as $default_term) {
+	    _content_taxonomy_localize_term($default_term);
+	    $options[$default_term->tid] = check_plain($default_term->name);
+	  }
   }
   
   foreach (taxonomy_get_children($group_parent) as $group) {
