--- og_vocab.module.orig	2006-12-27 05:24:56.000000000 +0200
+++ og_vocab.module	2007-06-27 16:31:48.000000000 +0300
@@ -169,18 +169,20 @@
       break;
     case (isset($form['type']) && $form['type']['#value'] .'_node_form' == $form_id):
       if (isset($form['taxonomy'])) {
+        $edit = $_POST['edit'];
+	$ogs = (is_array($edit['og_groups'])) ? $edit['og_groups'] : array();
         // remove from node form those vocabs that belong to groups other than us (if we even have a group)
-        $groupnode = og_get_group_context();
-        $where = "(v.module = 'og_vocab' AND ov.nid != %d)";
-        $sql = "SELECT v.vid, v.tags FROM {vocabulary} v LEFT JOIN {og_vocab} ov ON v.vid = ov.vid WHERE $where";
-        $result = db_query($sql, $groupnode->nid);
+        $sql = "SELECT v.vid, v.tags, ov.nid FROM {vocabulary} v LEFT JOIN {og_vocab} ov ON v.vid = ov.vid WHERE v.module = 'og_vocab'";
+        $result = db_query($sql);
         while ($row = db_fetch_object($result)) {
-          if ($row->tags) {
-            unset($form['taxonomy']['tags'][$row->vid]);
-          }
-          else {
-            unset($form['taxonomy'][$row->vid]);
-          }
+	  if(!array_key_exists($row->nid, $ogs)) {
+            if ($row->tags) {
+              unset($form['taxonomy']['tags'][$row->vid]);
+            }
+            else {
+              unset($form['taxonomy'][$row->vid]);
+            }
+	  }
         }
         
         // remove categories fieldset if no vocabularies remain
@@ -297,4 +299,4 @@
     default:
       break;
   }
-}
\ No newline at end of file
+}
