Index: C:/dev/utdanning-deplay-dev/apps/drupal/sites/all/modules/similar/similar.module
===================================================================
--- C:/dev/utdanning-deplay-dev/apps/drupal/sites/all/modules/similar/similar.module	(revision 6383)
+++ C:/dev/utdanning-deplay-dev/apps/drupal/sites/all/modules/similar/similar.module	(revision 10022)
@@ -215,7 +215,17 @@
             '#default_value' => variable_get('similar_taxonomy_tids', array_keys($names)),
             '#description' => t('Hold the CTRL key to (de)select multiple options.'),
             '#options' => $names, '#multiple' => true
-          );
+          );
+          $vocs = _similar_taxonomy_get_vocabularies();
+          $form['similar_taxonomy']['similar_taxonomy_exclude'] = array(
+            '#type' => 'select',
+            '#multiple' => true,
+            '#title' => t('Exclude vocabularies'),
+            '#default_value' => variable_get('similar_taxonomy_exclude', ''),
+            '#options' => $vocs
+          );        
+        
+          
         }
       }
       return $form;
@@ -228,7 +238,8 @@
         variable_set('similar_node_types', $edit['similar_node_types']);
         if (module_exists('taxonomy')) {
           variable_set('similar_taxonomy_filter', $edit['similar_taxonomy_filter']);
-          variable_set('similar_taxonomy_tids', $edit['similar_taxonomy_tids']);
+          variable_set('similar_taxonomy_tids', $edit['similar_taxonomy_tids']);
+          variable_set('similar_taxonomy_exclude', $edit['similar_taxonomy_exclude']);
         }
       }
       return;
@@ -292,7 +303,8 @@
   }
   return $types;
 }
-
+
+
 /**
  * Query for taxonomy names
  *
@@ -314,12 +326,23 @@
  * @see http://drupal.org/node/51041
  * @return array
  */
-function _similar_taxonomy_membership($nid) {
+function _similar_taxonomy_membership($nid) {
+  $tidsExclude = array();
+  $vid = variable_get('similar_taxonomy_exclude', '');
+  if (count($vid) > 0) {
+	  $result = db_query('SELECT t.tid FROM {term_data} t WHERE t.vid IN ('.implode(",", $vid) .')');
+	  while($data = db_fetch_object($result)) {
+			$tidsExclude[$data->tid] = $data->tid;
+	  }
+ }
+  
   $tids = array();
   $result = db_query('SELECT t.tid FROM {term_node} t WHERE t.nid = %d', $nid);
-  while($data = db_fetch_object($result)) {
-    $tids[$data->tid] = $data->tid;
-  }
+  while($data = db_fetch_object($result)) {
+  	if (!in_array($data->tid, $tidsExclude)) { 		
+  		$tids[$data->tid] = $data->tid;
+  	}
+  }
   return $tids;
 }
 
@@ -399,3 +422,18 @@
 
   return sizeof($items) > 0 ? theme('item_list', $items) : '';
 }
+
+/**
+ * Get all vocabularies
+ *
+ * @return array
+ */
+function _similar_taxonomy_get_vocabularies() {
+  $v = array();
+  $vocs  = taxonomy_get_vocabularies();
+  $result = db_query('SELECT DISTINCT(n.type) FROM {node} n WHERE n.status <> 0 ORDER BY n.type ASC');
+  foreach ($vocs as $voc) {
+  	$v[$voc->vid] = $voc->name;;
+  }
+  return $v;	
+}
\ No newline at end of file
