--- modulos-nuevos/taxonomy_menu/taxonomy_menu.database.inc 
+++ modulos_patched/taxonomy_menu/taxonomy_menu.database.inc 
@@ -23,13 +23,32 @@
 }
 
 /**
- * Return the corresponding menu link id.
+ * Return the corresponding menu link ids.
  *
  * @param $tid
  *   the term's id
+ *
+ * @return array $mlids array of mlids
  */
 function _taxonomy_menu_get_mlid($tid, $vid) {
-  return db_result(db_query('SELECT mlid FROM {taxonomy_menu} WHERE tid = %d AND vid = %d', $tid, $vid));
+  $mlids = array();
+  $result = db_query('SELECT mlid FROM {taxonomy_menu} WHERE tid = %d AND vid = %d', $tid, $vid);
+  while ($mlid = db_result($result)) {
+    $mlids[] = $mlid;
+  }
+  return $mlids;
+}
+
+/**
+ * Return the corresponding plid for menu link id.
+ *
+ * @param $mlid
+ *   the item's id
+ *
+ * @return parent mlid
+ */
+function _taxonomy_menu_get_parent_mlid($mlid) {
+  return db_result(db_query('SELECT plid FROM {menu_links} WHERE mlid = %d', $mlid));
 }
 
 /**
@@ -38,14 +57,18 @@
  * @param $vid
  *   vocabulary's id
  * @return
- *   array(tid => mlid)
+ *   array(array('tid' => tid, 'mlid' => mlid))
  */
 function _taxonomy_menu_get_menu_items($vid) {
 
   $result = db_query('SELECT mlid, tid FROM {taxonomy_menu} WHERE vid = %d', $vid);
   $menu_items = array();
   while ($data = db_fetch_object($result)) {
-    $menu_items[$data->tid] = $data->mlid;
+    // $menu_items[$data->tid] = $data->mlid; <- This doesn't allow multiple parents
+    $menu_items[] = array(
+      'tid' => $data->tid,
+      'mlid' => $data->mlid,
+    );
   }
   return $menu_items;
 }
@@ -60,8 +83,8 @@
 function _taxonomy_menu_delete_all($vid) {
   $menu_terms = _taxonomy_menu_get_menu_items($vid);
   if (!empty($menu_terms)) {
-    foreach ($menu_terms as $tid => $mlid) {
-      db_query('DELETE FROM {menu_links} WHERE mlid = %d', $mlid);
+    foreach ($menu_terms as $term) {
+      db_query('DELETE FROM {menu_links} WHERE mlid = %d', $term['mlid']);
     }
     db_query('DELETE FROM {taxonomy_menu} WHERE vid = %d', $vid);
   }
