diff misc/farbtastic/farbtastic.js @ 7:fff6d4c8c043 6.3

Drupal 6.3
author Franck Deroche <webmaster@defr.org>
date Tue, 23 Dec 2008 14:30:28 +0100
parents c1f4ac30525a
children
line wrap: on
line diff
--- a/misc/farbtastic/farbtastic.js	Tue Dec 23 14:30:08 2008 +0100
+++ b/misc/farbtastic/farbtastic.js	Tue Dec 23 14:30:28 2008 +0100
@@ -1,4 +1,4 @@
-// $Id: farbtastic.js,v 1.4 2007/06/01 09:05:45 unconed Exp $
+// $Id: farbtastic.js,v 1.4.2.1 2008/06/25 09:34:17 goba Exp $
 // Farbtastic 1.2
 
 jQuery.fn.farbtastic = function (callback) {
@@ -104,49 +104,49 @@
     var x, y;
     var el = event.target || event.srcElement;
     var reference = fb.wheel;
+    
+    // If the offset from the relative element is undefined calculate it.
+    if ( typeof event.offsetX == 'undefined' && typeof event.offsetY == 'undefined' ) {
+      var offset = $(event.target).offset(false);
+      event.offsetX = event.pageX - offset.left;
+      event.offsetY = event.pageY - offset.top;
+    }
+    
+    // Use offset coordinates and find common offsetParent
+    var pos = { x: event.offsetX, y: event.offsetY };
 
-    if (typeof event.offsetX != 'undefined') {
-      // Use offset coordinates and find common offsetParent
-      var pos = { x: event.offsetX, y: event.offsetY };
+    // Send the coordinates upwards through the offsetParent chain.
+    var e = el;
+    while (e) {
+      e.mouseX = pos.x;
+      e.mouseY = pos.y;
+      pos.x += e.offsetLeft;
+      pos.y += e.offsetTop;
+      e = e.offsetParent;
+    }
 
-      // Send the coordinates upwards through the offsetParent chain.
-      var e = el;
-      while (e) {
-        e.mouseX = pos.x;
-        e.mouseY = pos.y;
-        pos.x += e.offsetLeft;
-        pos.y += e.offsetTop;
-        e = e.offsetParent;
+    // Look for the coordinates starting from the wheel widget.
+    var e = reference;
+    var offset = { x: 0, y: 0 };
+    while (e) {
+      if (typeof e.mouseX != 'undefined') {
+        x = e.mouseX - offset.x;
+        y = e.mouseY - offset.y;
+        break;
       }
+      offset.x += e.offsetLeft;
+      offset.y += e.offsetTop;
+      e = e.offsetParent;
+    }
 
-      // Look for the coordinates starting from the wheel widget.
-      var e = reference;
-      var offset = { x: 0, y: 0 };
-      while (e) {
-        if (typeof e.mouseX != 'undefined') {
-          x = e.mouseX - offset.x;
-          y = e.mouseY - offset.y;
-          break;
-        }
-        offset.x += e.offsetLeft;
-        offset.y += e.offsetTop;
-        e = e.offsetParent;
-      }
+    // Reset stored coordinates
+    e = el;
+    while (e) {
+      e.mouseX = undefined;
+      e.mouseY = undefined;
+      e = e.offsetParent;
+    }
 
-      // Reset stored coordinates
-      e = el;
-      while (e) {
-        e.mouseX = undefined;
-        e.mouseY = undefined;
-        e = e.offsetParent;
-      }
-    }
-    else {
-      // Use absolute coordinates
-      var pos = fb.absolutePosition(reference);
-      x = (event.pageX || 0*(event.clientX + $('html').get(0).scrollLeft)) - pos.x;
-      y = (event.pageY || 0*(event.clientY + $('html').get(0).scrollTop)) - pos.y;
-    }
     // Subtract distance to middle
     return { x: x - fb.width / 2, y: y - fb.width / 2 };
   };
@@ -240,20 +240,6 @@
     }
   };
 
-  /**
-   * Get absolute position of element
-   */
-  fb.absolutePosition = function (el) {
-    var r = { x: el.offsetLeft, y: el.offsetTop };
-    // Resolve relative to offsetParent
-    if (el.offsetParent) {
-      var tmp = fb.absolutePosition(el.offsetParent);
-      r.x += tmp.x;
-      r.y += tmp.y;
-    }
-    return r;
-  };
-
   /* Various color utility functions */
   fb.pack = function (rgb) {
     var r = Math.round(rgb[0] * 255);