getElementOffset = function( el ){
            var curleft = 0
                ,curtop = 0
                ;

            if (el.offsetParent) {
                do {
                    curleft += el.offsetLeft;
                    curtop += el.offsetTop;
                } while (el = el.offsetParent);
            }

            return { left: curleft, top: curtop };
        }
class InteractiveBehavior < Behavior

`Physics.behavior('interactive')`.

User interaction helper.

Used to get mouse/touch events and add grab interactions.

Additional options include:
- el: The element of the renderer. What you input as the `el` for the renderer.
- moveThrottle: The min time between move events (default: `10`).
- minVel: The minimum velocity clamp [[Vectorish]] (default: { x: -5, y: -5 }) to restrict velocity a user can give to a body
- maxVel: The maximum velocity clamp [[Vectorish]] (default: { x: 5, y: 5 }) to restrict velocity a user can give to a body

The behavior also triggers the following events on the world:
```javascript
// a body has been grabbed
world.on('interact:grab', function( data ){
    data.x; // the x coord
    data.y; // the y coord
    data.body; // the body that was grabbed
});
// no body was grabbed, but the renderer area was clicked, or touched
world.on('interact:poke', function( data ){
    data.x; // the x coord
    data.y; // the y coord
});
// when a mouse or pointer moves
world.on('interact:move', function( data ){
    data.x; // the x coord
    data.y; // the y coord
    data.body; // the grabbed body that was moved (if applicable)
});
// when the viewport is released (mouseup, touchend)
world.on('interact:release', function( data ){
    data.x; // the x coord
    data.y; // the y coord
    data.body; // the body that was grabbed (if applicable)
});
```

The behavior also sets body.isGrabbed = true for any grabbed bodies while they are grabbed.