// CHANGELOG (from 0.7.1)
// - improved readability
// - simplyfied some if-else structures
// - saved some frequently used variables
// - shortened line lengths
// - removed try-catch blocks (dead code)
// - handle function has become useless
// - added some helper functions (isNodeName, arrayScroll, computedStyle)
// - corrected events (@param event instead of IE style window.event)
// - removed event.returnValue It's only for IE :)
// - replace event.srcElement with event.target (the first is non-standard)
// - changed default scroll size to 120px (somewhat default in all browsers)
// - replaced parseInt with Math.floor (faster and more appropriate)
//   http://jsperf.com/math-floor-vs-math-round-vs-parseint
// - future idea: make it cross browser (embedded into webpages)?
// - works with built-in PDF viewer
// - works with Google Reader
// - home and end buttons now work on textarea, input, contenteditable
// - (shift) spacebar support
// - added clearTimeouts
// - wrapped the extension into its scope
// - localStorage strings are converted to number/bool
// - setting to switch pulse algorithm
// - setting to exclude pages
// - fixed End button smoothness
// - removed unused settings (keyboard framrates, pageUp/Down scroll size)
// - added help notes to most settings
// - added a whole NEW module for middle mouse scrolling
// - moved init to DOMContentLoaded instead of window.onload (much faster)
// - added a `key` object, and refactored keydown into a clear switch statement
// - fixed how default options work
// - fixed default actions for <embed> elements (both keyboard and mouse)
// - completely reworked mouse scrolling to support touchpads (two dimensional delta)
// - added keyboard support for all overflowing elements (activeElement)
// - both mousewheel and keydown checks if defaultPrevented is true, so pages can add custom behavior
// - MAJOR performance improvements (fixed FPS, no polling, elapsed time)
// - implemented a cache for overflowingAncestor
// - made GMail to be SS ready :)