Index: relativity.module
===================================================================
--- relativity.module	(revision 17)
+++ relativity.module	(working copy)
@@ -1098,11 +1098,21 @@
           '#weight' => $w,
         );
       }
+
+      // set breadcrumb if we are viewing the node in question
+      if (!$teaser && $page && variable_get('relativity_set_breadcrumb_trail', false)) {
+        $trail = relativity_get_breadcrumb($node);
+        // add home link and reverse
+        $trail[] = l(t('Home'),'');
+        $trail = array_reverse($trail);
+        drupal_set_breadcrumb($trail);
+      }
       break;
-  }  
-}
+  }
 
+}  
 
+
 /**
  * Returns an array of sorted children types, unindexed
  */
@@ -1279,6 +1289,28 @@
 }
 
 /**
+ * Calculate breadcrumb for given node, calling itself recursively
+ * @param object $node
+ * @return array
+ *   array of breadcrumbs in reverse order (top parent is last)
+ */
+function relativity_get_breadcrumb($node, $trail = null) {
+  // Drupal default is to start with home
+  if (!$trail) {
+    $trail = array();
+  }
+  
+  // find first parent
+  $result = db_query('SELECT parent_nid as pid FROM {relativity} WHERE nid = %d ORDER BY parent_nid ASC LIMIT 1', $node->nid);
+  if ($parent = db_fetch_object($result)) {
+    $pnode = node_load($parent->pid);
+    $trail[] = l($pnode->title, 'node/' . $pnode->nid);
+    return relativity_get_breadcrumb($pnode, $trail);
+  }
+  
+  return $trail;
+}
+/**
  * Implementing hook_token_values to present basic tokens
  * for relativity module
  */
