
diff --git a/hovertip/hovertip.js b/hovertip/hovertip.js
index 3afb196..a6a9162 100644
--- a/hovertip/hovertip.js
+++ b/hovertip/hovertip.js
@@ -355,7 +355,7 @@ jQuery.fn.hovertipActivate = function(config, targetSelect, tipPrepare, targetPr
  *  Here, we break the action up into several timout callbacks, to avoid
  *  locking up browsers.
  */
-function hovertipInit() {
+function hovertipInit(context) {
   // specify the attribute name we use for our clicktips
   var clicktipConfig = {'attribute':'clicktip'};
   
@@ -365,7 +365,7 @@ function hovertipInit() {
    * <div id="foo" class="clicktip">blah blah</div>
    */
   window.setTimeout(function() {
-    $('.clicktip').hovertipActivate(clicktipConfig,
+    $('.clicktip:not(.Hovertip1-processed)', context).addClass('Hovertip1-processed').hovertipActivate(clicktipConfig,
                                     targetSelectById,
                                     clicktipPrepareWithCloseLink,
                                     clicktipTargetPrepare);
@@ -377,7 +377,7 @@ function hovertipInit() {
    * <div target="foo" class="clicktip">blah blah</div>
    */
   window.setTimeout(function() {
-    $('.clicktip').hovertipActivate(clicktipConfig,
+    $('.clicktip:not(.Hovertip2-processed)', context).addClass('Hovertip2-processed').hovertipActivate(clicktipConfig,
                                     targetSelectByTargetAttribute,
                                     clicktipPrepareWithCloseLink,
                                     clicktipTargetPrepare);
@@ -389,7 +389,7 @@ function hovertipInit() {
                         'hideDelay': 700};
   
   // use <div class='hovertip'>blah blah</div>
-  var hovertipSelect = 'div.hovertip';
+  var hovertipSelect = 'div.hovertip:not(.hovertip_wrap3)';
   
   // OPTIONAL: here we wrap each hovertip to apply special effect. (i.e. drop shadow):
   $(hovertipSelect).css('display', 'block').addClass('hovertip_wrap3').
@@ -405,7 +405,6 @@ function hovertipInit() {
              tooltip.setAttribute('id', id);
            }
          });
-  hovertipSelect = 'div.hovertip_wrap0';
   
   // end optional FX section
   
@@ -416,10 +415,13 @@ function hovertipInit() {
      * <div id="foo" class="hovertip">blah blah</div>
      */
     window.setTimeout(function() {
-        $(hovertipSelect).hovertipActivate(hovertipConfig,
-                                           targetSelectById,
-                                           hovertipPrepare,
-                                           hovertipTargetPrepare);
+        $('div.hovertip_wrap0:not(.Hovertip3-processed)', context)
+          .addClass('Hovertip3-processed')
+          .hovertipActivate(
+            hovertipConfig,
+            targetSelectById,
+            hovertipPrepare,
+            hovertipTargetPrepare);
       }, 0);
     
     /**
@@ -428,10 +430,13 @@ function hovertipInit() {
      * <div target="foo" class="hovertip">blah blah</div>
      */
     window.setTimeout(function() {
-        $(hovertipSelect).hovertipActivate(hovertipConfig,
-                                           targetSelectByTargetAttribute,
-                                           hovertipPrepare,
-                                           hovertipTargetPrepare);
+        $('div.hovertip_wrap0:not(.Hovertip4-processed)', context)
+          .addClass('Hovertip4-processed')
+          .hovertipActivate(
+            hovertipConfig,
+            targetSelectByTargetAttribute,
+            hovertipPrepare,
+            hovertipTargetPrepare);
       }, 0);
   } else {
     /**
@@ -444,10 +449,13 @@ function hovertipInit() {
      * associated with more than one target.  
      */
     window.setTimeout(function() {
-        $(hovertipSelect).hovertipActivate(hovertipConfig,
-                                           targetSelectByPrevious,
-                                           hovertipPrepare,
-                                           hovertipTargetPrepare);
+        $('div.hovertip_wrap0:not(.Hovertip5-processed)', context)
+          .addClass('Hovertip5-processed')
+          .hovertipActivate(
+            hovertipConfig,
+            targetSelectByPrevious,
+            hovertipPrepare,
+            hovertipTargetPrepare);
       }, 0);
   }
 
@@ -460,15 +468,16 @@ function hovertipInit() {
  * 
  * <span>this is the text that always appears</span><span class=hovertip>this is the text that appears on mouse hover.</span>
  */
-function hovertipSpanInit() {
+function hovertipSpanInit(context) {
   // specify our configuration for hovertips, including delay times (millisec)
   var hovertipConfig = {'attribute':'hovertip',
                         'showDelay': 300,
                         'hideDelay': 700};
   var hovertipSpanSelect = 'span.hovertip';
   // activate hovertips with wrappers for FX (drop shadow):
-  $(hovertipSpanSelect).css('display', 'block').addClass('hovertip_wrap3').
-    wrap("<span class='hovertip_wrap0'><span class='hovertip_wrap1'><span class='hovertip_wrap2'>" + 
+  $('span.hovertip:not(.Hovertip6-processed)', context).addClass('Hovertip6-processed')
+    .css('display', 'block').addClass('hovertip_wrap3')
+    .wrap("<span class='hovertip_wrap0'><span class='hovertip_wrap1'><span class='hovertip_wrap2'>" +
          "</span></span></span>").each(function() {
              // fix class and attributes for newly wrapped elements
              var tooltip = this.parentNode.parentNode.parentNode;
@@ -483,11 +492,12 @@ function hovertipSpanInit() {
   hovertipSpanSelect = 'span.hovertip_wrap0';
   
   window.setTimeout(function() {
-      $(hovertipSpanSelect)
-        .hovertipActivate(hovertipConfig,
-                          targetSelectByPrevious,
-                          hovertipPrepare,
-                          hovertipTargetPrepare);
+      $('span.hovertip_wrap0:not(.Hovertip7-processed)', context).addClass('Hovertip7-processed')
+        .hovertipActivate(
+          hovertipConfig,
+          targetSelectByPrevious,
+          hovertipPrepare,
+          hovertipTargetPrepare);
     }, 0);
 };
 
@@ -499,24 +509,25 @@ function hovertipSpanInit() {
  * 
  * In this case the text that always appeared will be followed by an icon inicating more information is available.
  */
-function hoverinfoDivInit() {
+function hoverinfoDivInit(context) {
   // specify our configuration for hovertips, including delay times (millisec)
   var hovertipConfig = {'attribute':'hovertip',
                         'showDelay': 300,
                         'hideDelay': 700};
-  var select = '.hoverinfo';
   // activate hovertips with wrappers for FX (drop shadow):
-  $(select).css('display', 'block').addClass('hovertip_wrap3').
-    wrap("<div class='hovertip_wrap0'><div class='hovertip_wrap1'><div class='hovertip_wrap2'>" + 
+  $('.hoverinfo:not(.Hovertip8-processed)', context).addClass('Hovertip8-processed')
+    .css('display', 'block').addClass('hovertip_wrap3')
+    .wrap("<div class='hovertip_wrap0'><div class='hovertip_wrap1'><div class='hovertip_wrap2'>" +
          "</div></div></div>");
   hovertipSpanSelect = 'div.hovertip_wrap0';
   
   window.setTimeout(function() {
       $(hovertipSpanSelect)
         .before('<span class=hoverinfo_target><span></span></span>')
-        .hovertipActivate(hovertipConfig,
-                          targetSelectByPrevious,
-                          hovertipPrepare,
-                          hovertipTargetPrepare);
+        .hovertipActivate(
+          hovertipConfig,
+          targetSelectByPrevious,
+          hovertipPrepare,
+          hovertipTargetPrepare);
     }, 0);
 };
diff --git a/hovertip/hovertip.module b/hovertip/hovertip.module
index 555ba02..419c04a 100644
--- a/hovertip/hovertip.module
+++ b/hovertip/hovertip.module
@@ -16,9 +16,9 @@ function _hovertip_get_javascript() {
   $default =<<<END
 
     // initialize tooltips in a separate thread
-    $(document).ready(function() {
-      window.setTimeout(hovertipInit, 1);
-    });
+    Drupal.behaviors.hovertip = function (context) {
+      window.setTimeout(hovertipInit(context), 1);
+    };
 
 END;
   return variable_get('hovertip_javascript', $default);

