function getPageCoords(element) { var coords = {x : 0, y : 0}; while (element) { coords.x += element.offsetLeft; coords.y += element.offsetTop; element = element.offsetParent; } return coords; } function getOffsets(evt) { var target = evt.target; if (typeof target.offsetLeft == 'undefined') { target = target.parentNode; } var pageCoords = getPageCoords(target); var eventCoords = { x: window.pageXOffset + evt.clientX, y: window.pageYOffset + evt.clientY }; var offsets = { offsetX: eventCoords.x - pageCoords.x, offsetY: eventCoords.y - pageCoords.y } return offsets; }