Mercurial > defr > drupal > core
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);