diff --git a/hover_preview.module b/hover_preview.module
index 3b3c1a9..a5b302b 100644
--- a/hover_preview.module
+++ b/hover_preview.module
@@ -1,4 +1,5 @@
 <?php
+// $Id: hover_preview.module,v 1.1.2.4 2010/11/29 05:58:24 rjbrown99 Exp $
 
 /**
  * Implementation of hook_theme()
@@ -14,11 +15,18 @@ function hover_preview_theme() {
  
   foreach ($presets_a as $preset_a) {
     foreach ($presets_b as $preset_b) {
+      // Hover only
       $id = $preset_a['presetname'] . '_hover_preview_' . $preset_b['presetname'];
       $items['hover_preview_formatter_' . $id] = array(
         'arguments' => array('element' => NULL),
         'function' => 'theme_hover_preview_formatter',
       );
+      // Linked to node
+      $id = $preset_a['presetname'] . '_hover_preview_' . $preset_b['presetname'] . '_linked';
+      $items['hover_preview_formatter_' . $id] = array(
+        'arguments' => array('element' => NULL),
+        'function' => 'theme_hover_preview_formatter',
+      );
     }
   }
   return $items;
@@ -35,11 +43,18 @@ function hover_preview_field_formatter_info() {
   $formatters = array();
   foreach ($presets_a as $preset_a) {
     foreach ($presets_b as $preset_b) {
+      // Hover only
       $id = $preset_a['presetname'] . '_hover_preview_' . $preset_b['presetname'];
       $formatters[$id] = array(
         'label' => t('Hover: @preset_a TO: @preset_b', array('@preset_a' => $preset_a['presetname'], '@preset_b' => $preset_b['presetname'])),
         'field types' => array('image', 'filefield'),
       );
+      // Hover, linked to original node
+      $id = $preset_a['presetname'] . '_hover_preview_' . $preset_b['presetname'] . '_linked';
+      $formatters[$id] = array(
+        'label' => t('Hover: @preset_a TO: @preset_b linked to node', array('@preset_a' => $preset_a['presetname'], '@preset_b' => $preset_b['presetname'])),
+        'field types' => array('image', 'filefield'),
+      );
     }
   }
   return $formatters;
@@ -64,7 +79,13 @@ function theme_hover_preview_formatter($element) {
   drupal_add_css(drupal_get_path('module', 'hover_preview') . '/hover_preview.css');
 
   // Extract the two constituent presets
-  list($preset_a, $preset_b) = explode('_hover_preview_', $element['#formatter']);
+  if (substr($element['#formatter'], strlen($element['#formatter']) -7, strlen($element['#formatter'])) == '_linked') {
+    $linked = TRUE;
+    list($preset_a, $preset_b) = explode('_hover_preview_', substr($element['#formatter'], 0, strlen($element['#formatter']) -7));
+  }
+  else {
+    list($preset_a, $preset_b) = explode('_hover_preview_', $element['#formatter']);
+  }
 
   // Generate the preview data
   $preview_id = "hover-preview-" . $unique;
@@ -109,15 +130,22 @@ function theme_hover_preview_formatter($element) {
   $class .= " hover-preview";
   $output = theme('imagecache', $preset_a, $item['filepath'], $alt, $title, array('class' => $class, 'id' => $preview_id));
 
-  return $output . $preview_text;
+  if (($linked = TRUE) && isset($element['#node']->path)) {
+    $return = l($output, $element['#node']->path, array('html' => array('html' => 'true'))) . $preview_text;
+  }
+  else {
+    $return = $output . $preview_text;
+  }
+
+  return $return;
 }
 
 /**
  * Convenience function to display an applicable field from a node using hover_preview
  *
- * Usage: theme('hover_preview', $node, 'field_photo', 'small_preset', 'large_preset');
+ * Usage: theme('hover_preview', $node, 'field_photo', 'small_preset', 'large_preset', 'link to node (TRUE)');
  */
-function theme_hover_preview($node, $field_name, $preset_a, $preset_b) {
+function theme_hover_preview($node, $field_name, $preset_a, $preset_b, $linked = FALSE) {
   $field = content_fields($field_name, $node->type);
   if ($field) {
     // If necessary, pass the node through node_view first to sanitise it
@@ -126,12 +154,18 @@ function theme_hover_preview($node, $field_name, $preset_a, $preset_b) {
       node_view($node);
     }
     // Poke CCK's display settings to use the formatter we want
-    $format = $preset_a . '_hover_preview_' . $preset_b;
+    if ($linked = TRUE) {
+      $format = $preset_a . '_hover_preview_' . $preset_b . '_linked';
+    }
+    else {
+      $format = $preset_a . '_hover_preview_' . $preset_b;
+    }
     $field['display_settings']['full']['format'] = $format;
-
+    
     // Invoke CCK to assemble the data structure for us and then render it
     $data = content_field('view', $node, $field, $node->$field_name, FALSE, FALSE);
     $output = drupal_render($data);
+    
     return $output;
   }  
 }
