Whitespace fixed from patch, and removed docs for beforefeatureselected and featureselected events because they are fired on the layer, not the control.
p=mosesonline, r=me (closes http://trac.osgeo.org/openlayers/ticket/3538)
For PanZoomBar, this fixes the slider behavior. Now the buttonclick listener argument also includes a buttonXY property, and PanZoomPanel does not need an Events instance for the zoombarDiv any more.
For Panel, this fixes events for panels outside the map. Just setting the element on the Events instance was no longer enough after e70569b2bb. Events::attachToElement is now used, and it needed to be modified to also work if the Events instance had no element previously.
Finally, I renamed the button property of the buttonclick listener argument to buttonElement, to not confuse it with the browser event button property, and added some more tests and documentation.
This change involves removal of the map's eventsDiv and introduces an OpenLayers.Events.buttonclick component that adds a buttonclick event which makes sure that only events that are not related to clicking a button propagate. This allows button controls to be on the map's viewPortDiv again.
As an optimization, certain browsers (e.g. Firefox) may not execute functions sent to `requestAnimationFrame` while the window is not visible. Because our tests run in an iframe, the tests fail unless we open a popup to run the animation methods.
The old `containsPoint` method was sensitive to failure when looking for ray crossings with nearly vertical edges. These added tests demonstrate the simple cases where `containsPoint` succeeds. The tests also now include a case that covers the failure for polygons with nearly vertical edges. The previous `getX` method (within the `containsPoint` method) and the new one are mathematically equivalent. The updated version performs better in cases using coordinates with many significant figures.
As an optimization, Firefox does not execute functions passed to requestAnimationFrame when the window is hidden. This is the case for the panTo tests here that use a map in a hidden iframe. Since other browsers may follow suit, we just test the fallback setTimeout method of animating on these tests.
Instead of using an arbitrary interval for tweening, we let the device decide the best animation frame rate. Where requestAnimationFrame is not available, this will default to 60 fps.