summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/rectangles/util/coords.js
blob: ff561990aac8bc554bd964e1b3b11e9b276245d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function offsetFromPoint(event, element) {
  function a(width) {
    var l = 0, r = 200;
    while (r - l > 0.0001) {
      var mid = (r + l) / 2;
      var a = document.createElement('div');
      a.style.cssText = 'position: absolute;left:0;top:0;background: red;z-index: 1000;';
      a.style[width ? 'width' : 'height'] = mid.toFixed(3) + '%';
      a.style[width ? 'height' : 'width'] = '100%';
      element.appendChild(a);
      var x = document.elementFromPoint(event.clientX, event.clientY);
      element.removeChild(a);
      if (x === a) {
        r = mid;
      } else {
        if (r === 200) {
          return null;
        }
        l = mid;
      }
    }
    return mid;
  }
  var l = a(1), 
      t = a(0);
  return l && t ? {
    left: l / 100,
    top: t / 100,
    toString: function () {
      return 'left: ' + l + '%, top: ' + t + '%';
    }
  } : null;
}