Index: stormteam/stormteam.module
===================================================================
--- stormteam/stormteam.module	(revision 899)
+++ stormteam/stormteam.module	(working copy)
@@ -261,7 +261,7 @@
     '#weight' => module_exists('content') ? content_extra_field_weight($node->type, 'group1') : -20,
   );
   
-  $options = array(0 => '-');
+  $options = array(0 => '- none -');
   
   $s_per = "SELECT n.nid, n.title FROM {node} n INNER JOIN {stormperson} spe ON n.vid=spe.vid WHERE n.type='stormperson' ORDER BY n.title";
   $s_per = stormperson_access_sql($s_per);
@@ -272,7 +272,7 @@
     $people[$person->nid] = $person->title;
   }
   
-  $options = $options + array(-1 => t('-PEOPLE-')) + $people;
+  $options = $options + array(t('People:') => $people) ;
   
   $s_org = "SELECT n.nid, n.title FROM {node} n WHERE n.type='stormorganization' ORDER BY n.title";
   $s_org = stormorganization_access_sql($s_org);
@@ -283,37 +283,43 @@
     $organizations[$organization->nid] = $organization->title;
   }
   
-  $options = $options + array(-2 => t('-ORGANIZATIONS-')) + $organizations;
-  
-  $i = 1;
-  $variable = 'members_array_'. $i;
+  $options = $options + array(t('Organizations:') => $organizations);
   
-  // Add rows for existing team members
-  if (isset($node->members_array) && is_array($node->members_array)) {
-    foreach ($node->members_array as $node->$variable => $name) {
-      $form['group1'][$variable] = array(
-        '#type' => 'select',
-        '#title' => t('Team Member @num', array('@num' => $i)),
-        '#options' => $options,
-        '#default_value' => $node->$variable,
-      );
-      $i++;
-      $variable = 'members_array_'. $i;
+  $default = array();
+  if (!empty($node->members_array)) {
+    
+    if (!empty($node->members_array['people']) && !empty($node->members_array['organizations'])) {
+      $default = array_merge(array_keys($node->members_array['people']), array_keys($node->members_array['organizations']));
+    }
+    elseif (!empty($node->members_array['people']) && empty($node->members_array['organizations'])) {
+      $default = array_keys($node->members_array['people']);
+    }
+    elseif (empty($node->members_array['people']) && !empty($node->members_array['organizations'])) {
+      $default = array_keys($node->members_array['organizations']);
+    }
+    else {
+      
+      // OLD STRUCTURE
+      $default = array_keys($node->members_array);
+      
     }
+    
   }
   
-  // Add placeholder rows
-  for ($j = 0; $j < 3; $j++) {
-    $variable = 'members_array_'. $i;
-    $form['group1'][$variable] = array(
-      '#type' => 'select',
-      '#title' => t('Team Member @num', array('@num' => $i)),
-      '#options' => $options,
-      '#default_value' => $node->$variable,
-    );
-    $i++;
-  }
+  $form['group1']['members_array'] = array(
+    '#type' => 'select',
+    '#title' => t('Team Members'),
+    '#options' => $options,
+    '#default_value' => $default,
+    '#multiple' => TRUE,
+    '#size' => 10,
+  );
   
+  $form['group1']['member_options'] = array(
+    '#type' => 'value',
+    '#value' => $options,
+  );
+    
   if ($type->has_body) {
     $form['body_field'] = node_body_field($node, $type->body_label, $type->min_word_count);
   }
@@ -356,18 +362,38 @@
  * Function to be called internally before saving Storm Team nodes
  */
 function _stormteam_beforesave(&$node) {
-  $i = 1;
-  $variable = 'members_array_'. $i;
-
-  while (isset($node->$variable)) {
-    $title = db_fetch_object(db_query('SELECT n.title FROM {node} AS n WHERE nid = %d', $node->$variable));
-    $node->members_array[$node->$variable] = $title->title;
-    $i++;
-    $variable = 'members_array_'. $i;
-  }
   
-  if (array_key_exists(0, $node->members_array)) {
-    unset($node->members_array[0]);
+  if (!empty($node->members_array)) {
+    foreach ($node->members_array as $team_nid) {
+      
+      if (!empty($node->member_options[t('Organizations:')][$team_nid])) {
+        $node->members_array['organizations'][$team_nid] = $node->member_options[t('Organizations:')][$team_nid];
+      }
+      elseif (!empty($node->member_options[t('People:')][$team_nid])) {
+        $node->members_array['people'][$team_nid] = $node->member_options[t('People:')][$team_nid];
+      }
+      else {
+        $result = db_fetch_object(db_query('SELECT n.title, n.type FROM {node} AS n WHERE nid = %d', $team_nid));
+        if (!empty($result)) {
+          
+          switch ($result->type) {
+            
+            case 'stormperson':
+              $node->members_array['people'][$team_nid] = $title->title;
+              break;
+              
+            case 'stormorganization':
+              $node->members_array['organizations'][$team_nid] = $title->title;
+              break;
+            
+          }
+          
+        }
+        
+      }
+      
+      unset($node->members_array[$team_nid]);
+    }
   }
   
   $node->members = serialize($node->members_array);
@@ -392,7 +418,6 @@
  */
 function stormteam_update($node) {
   _stormteam_beforesave($node);
-  
   if ($node->revision) {
     stormexpense_insert($node);
   }
Index: stormteam/stormteam.theme.inc
===================================================================
--- stormteam/stormteam.theme.inc	(revision 899)
+++ stormteam/stormteam.theme.inc	(working copy)
@@ -14,7 +14,7 @@
   drupal_add_css(drupal_get_path('module', 'storm') . '/storm-node.css', 'module');
   
   $node = node_prepare($node, $teaser);
-  $type = node_get_types('type', $node);
+  $node_type = node_get_types('type', $node);
     
   /*$node->content['links'] = array(
     '#prefix' => '<div class="stormlinks"><dl>',
@@ -30,25 +30,75 @@
   
   // Add links to each team member title
   if (isset($node->members_array) && is_array($node->members_array)) {
-    foreach ($node->members_array as $nid => $name) {
-      $member = node_load($nid);
-      if (($member->type == 'stormperson' && stormperson_access('view', $nid)) || ($member->type == 'stormorganization' && stormorganization_access('view', $nid))) {
-        $node->members_array[$nid] = l($name, 'node/'. $nid);
+    
+    // DISPLAY NEW STRUCTURE DIVIDED BY SUBARRAY OF PEOPLE AND ORGANIZATIONS
+    if (!empty($node->members_array['people']) || !empty($node->members_array['organizations'])) {
+    
+      foreach ($node->members_array as $type => $type_array) {
+        if (!empty($type_array)) {
+          foreach ($type_array as $nid => $name) {
+            
+            if (($type == 'people' && stormperson_access('view', $nid)) || ($type == 'organizations' && stormorganization_access('view', $nid))) {
+              $node->members_array[$type][$nid] = l($name, 'node/'. $nid);
+            }
+            else {
+              unset($node->members_array[$type][$nid]);
+            }
+            
+          }    
+          
+          switch ($type) {
+            
+            case 'people':
+              $label = t('People');
+              break;
+              
+            case 'organizations':
+              $label = t('Organizations');
+              break;
+            
+          }
+  
+          $node->content['group1'][$type] = array(
+            '#prefix' => '<div class="'. $type .'">',
+            '#suffix' => '</div>',
+            '#value' => theme('storm_view_item', $label , implode(" | ", $node->members_array[$type])),
+            '#weight' => $w++,
+          );
+          
+        }
+        
+      }
+      
     }
-  }
+    else {
+      
+      // DISPLAY THE OLD STRUCTURE WHERE PEOPLE AND ORGANIZATIONS ARE SAVED TOGETHER
+      // Add links to each team member title
+      if (isset($node->members_array) && is_array($node->members_array)) {
+        foreach ($node->members_array as $nid => $name) {
+          $member = node_load($nid);
+          if (($member->type == 'stormperson' && stormperson_access('view', $nid)) || ($member->type == 'stormorganization' && stormorganization_access('view', $nid))) {
+            $node->members_array[$nid] = l($name, 'node/'. $nid);
+          }
+        }
+        
+        $node->content['group1']['members'] = array(
+          '#prefix' => '<div class="members">',
+          '#suffix' => '</div>',
+          '#value' => theme('storm_view_item', t('Members'), implode(" | ", $node->members_array)),
+          '#weight' => $w++,
+        );
+      }
+      
+    }
     
-    $node->content['group1']['members'] = array(
-      '#prefix' => '<div class="members">',
-      '#suffix' => '</div>',
-      '#value' => theme('storm_view_item', t('Members'), implode(", ", $node->members_array)),
-      '#weight' => $w++,
-    );
   }
   
   $node->content['body_field'] = array(
     '#prefix' => '<div class="stormbody">',
     '#suffix' => '</div>',
-    '#value' => theme('storm_view_item', $type->body_label, $node->content['body']['#value']),
+    '#value' => theme('storm_view_item', $node_type->body_label, $node->content['body']['#value']),
     '#weight' => module_exists('content') ? content_extra_field_weight($node->type, 'body_field') : 0,
   );
   unset($node->content['body']);
