| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903 | 
							- <!DOCTYPE html>
 
- <html>
 
- <head>
 
-   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
-   <title>The source code</title>
 
-   <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
 
-   <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
 
-   <style type="text/css">
 
-     .highlight { display: block; background-color: #ddd; }
 
-   </style>
 
-   <script type="text/javascript">
 
-     function highlight() {
 
-       document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
 
-     }
 
-   </script>
 
- </head>
 
- <body onload="prettyPrint(); highlight();">
 
-   <pre class="prettyprint lang-js"><span id='Ext-EventObject'>/**
 
- </span> * @class Ext.EventObject
 
- Just as {@link Ext.Element} wraps around a native DOM node, Ext.EventObject
 
- wraps the browser's native event-object normalizing cross-browser differences,
 
- such as which mouse button is clicked, keys pressed, mechanisms to stop
 
- event-propagation along with a method to prevent default actions from taking place.
 
- For example:
 
-     function handleClick(e, t){ // e is not a standard event object, it is a Ext.EventObject
 
-         e.preventDefault();
 
-         var target = e.getTarget(); // same as t (the target HTMLElement)
 
-         ...
 
-     }
 
-     var myDiv = {@link Ext#get Ext.get}("myDiv");  // get reference to an {@link Ext.Element}
 
-     myDiv.on(         // 'on' is shorthand for addListener
 
-         "click",      // perform an action on click of myDiv
 
-         handleClick   // reference to the action handler
 
-     );
 
-     // other methods to do the same:
 
-     Ext.EventManager.on("myDiv", 'click', handleClick);
 
-     Ext.EventManager.addListener("myDiv", 'click', handleClick);
 
-  * @singleton
 
-  * @markdown
 
-  */
 
- Ext.define('Ext.EventObjectImpl', {
 
-     uses: ['Ext.util.Point'],
 
- <span id='Ext-EventObject-property-BACKSPACE'>    /** Key constant @type Number */
 
- </span>    BACKSPACE: 8,
 
- <span id='Ext-EventObject-property-TAB'>    /** Key constant @type Number */
 
- </span>    TAB: 9,
 
- <span id='Ext-EventObject-property-NUM_CENTER'>    /** Key constant @type Number */
 
- </span>    NUM_CENTER: 12,
 
- <span id='Ext-EventObject-property-ENTER'>    /** Key constant @type Number */
 
- </span>    ENTER: 13,
 
- <span id='Ext-EventObject-property-RETURN'>    /** Key constant @type Number */
 
- </span>    RETURN: 13,
 
- <span id='Ext-EventObject-property-SHIFT'>    /** Key constant @type Number */
 
- </span>    SHIFT: 16,
 
- <span id='Ext-EventObject-property-CTRL'>    /** Key constant @type Number */
 
- </span>    CTRL: 17,
 
- <span id='Ext-EventObject-property-ALT'>    /** Key constant @type Number */
 
- </span>    ALT: 18,
 
- <span id='Ext-EventObject-property-PAUSE'>    /** Key constant @type Number */
 
- </span>    PAUSE: 19,
 
- <span id='Ext-EventObject-property-CAPS_LOCK'>    /** Key constant @type Number */
 
- </span>    CAPS_LOCK: 20,
 
- <span id='Ext-EventObject-property-ESC'>    /** Key constant @type Number */
 
- </span>    ESC: 27,
 
- <span id='Ext-EventObject-property-SPACE'>    /** Key constant @type Number */
 
- </span>    SPACE: 32,
 
- <span id='Ext-EventObject-property-PAGE_UP'>    /** Key constant @type Number */
 
- </span>    PAGE_UP: 33,
 
- <span id='Ext-EventObject-property-PAGE_DOWN'>    /** Key constant @type Number */
 
- </span>    PAGE_DOWN: 34,
 
- <span id='Ext-EventObject-property-END'>    /** Key constant @type Number */
 
- </span>    END: 35,
 
- <span id='Ext-EventObject-property-HOME'>    /** Key constant @type Number */
 
- </span>    HOME: 36,
 
- <span id='Ext-EventObject-property-LEFT'>    /** Key constant @type Number */
 
- </span>    LEFT: 37,
 
- <span id='Ext-EventObject-property-UP'>    /** Key constant @type Number */
 
- </span>    UP: 38,
 
- <span id='Ext-EventObject-property-RIGHT'>    /** Key constant @type Number */
 
- </span>    RIGHT: 39,
 
- <span id='Ext-EventObject-property-DOWN'>    /** Key constant @type Number */
 
- </span>    DOWN: 40,
 
- <span id='Ext-EventObject-property-PRINT_SCREEN'>    /** Key constant @type Number */
 
- </span>    PRINT_SCREEN: 44,
 
- <span id='Ext-EventObject-property-INSERT'>    /** Key constant @type Number */
 
- </span>    INSERT: 45,
 
- <span id='Ext-EventObject-property-DELETE'>    /** Key constant @type Number */
 
- </span>    DELETE: 46,
 
- <span id='Ext-EventObject-property-ZERO'>    /** Key constant @type Number */
 
- </span>    ZERO: 48,
 
- <span id='Ext-EventObject-property-ONE'>    /** Key constant @type Number */
 
- </span>    ONE: 49,
 
- <span id='Ext-EventObject-property-TWO'>    /** Key constant @type Number */
 
- </span>    TWO: 50,
 
- <span id='Ext-EventObject-property-THREE'>    /** Key constant @type Number */
 
- </span>    THREE: 51,
 
- <span id='Ext-EventObject-property-FOUR'>    /** Key constant @type Number */
 
- </span>    FOUR: 52,
 
- <span id='Ext-EventObject-property-FIVE'>    /** Key constant @type Number */
 
- </span>    FIVE: 53,
 
- <span id='Ext-EventObject-property-SIX'>    /** Key constant @type Number */
 
- </span>    SIX: 54,
 
- <span id='Ext-EventObject-property-SEVEN'>    /** Key constant @type Number */
 
- </span>    SEVEN: 55,
 
- <span id='Ext-EventObject-property-EIGHT'>    /** Key constant @type Number */
 
- </span>    EIGHT: 56,
 
- <span id='Ext-EventObject-property-NINE'>    /** Key constant @type Number */
 
- </span>    NINE: 57,
 
- <span id='Ext-EventObject-property-A'>    /** Key constant @type Number */
 
- </span>    A: 65,
 
- <span id='Ext-EventObject-property-B'>    /** Key constant @type Number */
 
- </span>    B: 66,
 
- <span id='Ext-EventObject-property-C'>    /** Key constant @type Number */
 
- </span>    C: 67,
 
- <span id='Ext-EventObject-property-D'>    /** Key constant @type Number */
 
- </span>    D: 68,
 
- <span id='Ext-EventObject-property-E'>    /** Key constant @type Number */
 
- </span>    E: 69,
 
- <span id='Ext-EventObject-property-F'>    /** Key constant @type Number */
 
- </span>    F: 70,
 
- <span id='Ext-EventObject-property-G'>    /** Key constant @type Number */
 
- </span>    G: 71,
 
- <span id='Ext-EventObject-property-H'>    /** Key constant @type Number */
 
- </span>    H: 72,
 
- <span id='Ext-EventObject-property-I'>    /** Key constant @type Number */
 
- </span>    I: 73,
 
- <span id='Ext-EventObject-property-J'>    /** Key constant @type Number */
 
- </span>    J: 74,
 
- <span id='Ext-EventObject-property-K'>    /** Key constant @type Number */
 
- </span>    K: 75,
 
- <span id='Ext-EventObject-property-L'>    /** Key constant @type Number */
 
- </span>    L: 76,
 
- <span id='Ext-EventObject-property-M'>    /** Key constant @type Number */
 
- </span>    M: 77,
 
- <span id='Ext-EventObject-property-N'>    /** Key constant @type Number */
 
- </span>    N: 78,
 
- <span id='Ext-EventObject-property-O'>    /** Key constant @type Number */
 
- </span>    O: 79,
 
- <span id='Ext-EventObject-property-P'>    /** Key constant @type Number */
 
- </span>    P: 80,
 
- <span id='Ext-EventObject-property-Q'>    /** Key constant @type Number */
 
- </span>    Q: 81,
 
- <span id='Ext-EventObject-property-R'>    /** Key constant @type Number */
 
- </span>    R: 82,
 
- <span id='Ext-EventObject-property-S'>    /** Key constant @type Number */
 
- </span>    S: 83,
 
- <span id='Ext-EventObject-property-T'>    /** Key constant @type Number */
 
- </span>    T: 84,
 
- <span id='Ext-EventObject-property-U'>    /** Key constant @type Number */
 
- </span>    U: 85,
 
- <span id='Ext-EventObject-property-V'>    /** Key constant @type Number */
 
- </span>    V: 86,
 
- <span id='Ext-EventObject-property-W'>    /** Key constant @type Number */
 
- </span>    W: 87,
 
- <span id='Ext-EventObject-property-X'>    /** Key constant @type Number */
 
- </span>    X: 88,
 
- <span id='Ext-EventObject-property-Y'>    /** Key constant @type Number */
 
- </span>    Y: 89,
 
- <span id='Ext-EventObject-property-Z'>    /** Key constant @type Number */
 
- </span>    Z: 90,
 
- <span id='Ext-EventObject-property-CONTEXT_MENU'>    /** Key constant @type Number */
 
- </span>    CONTEXT_MENU: 93,
 
- <span id='Ext-EventObject-property-NUM_ZERO'>    /** Key constant @type Number */
 
- </span>    NUM_ZERO: 96,
 
- <span id='Ext-EventObject-property-NUM_ONE'>    /** Key constant @type Number */
 
- </span>    NUM_ONE: 97,
 
- <span id='Ext-EventObject-property-NUM_TWO'>    /** Key constant @type Number */
 
- </span>    NUM_TWO: 98,
 
- <span id='Ext-EventObject-property-NUM_THREE'>    /** Key constant @type Number */
 
- </span>    NUM_THREE: 99,
 
- <span id='Ext-EventObject-property-NUM_FOUR'>    /** Key constant @type Number */
 
- </span>    NUM_FOUR: 100,
 
- <span id='Ext-EventObject-property-NUM_FIVE'>    /** Key constant @type Number */
 
- </span>    NUM_FIVE: 101,
 
- <span id='Ext-EventObject-property-NUM_SIX'>    /** Key constant @type Number */
 
- </span>    NUM_SIX: 102,
 
- <span id='Ext-EventObject-property-NUM_SEVEN'>    /** Key constant @type Number */
 
- </span>    NUM_SEVEN: 103,
 
- <span id='Ext-EventObject-property-NUM_EIGHT'>    /** Key constant @type Number */
 
- </span>    NUM_EIGHT: 104,
 
- <span id='Ext-EventObject-property-NUM_NINE'>    /** Key constant @type Number */
 
- </span>    NUM_NINE: 105,
 
- <span id='Ext-EventObject-property-NUM_MULTIPLY'>    /** Key constant @type Number */
 
- </span>    NUM_MULTIPLY: 106,
 
- <span id='Ext-EventObject-property-NUM_PLUS'>    /** Key constant @type Number */
 
- </span>    NUM_PLUS: 107,
 
- <span id='Ext-EventObject-property-NUM_MINUS'>    /** Key constant @type Number */
 
- </span>    NUM_MINUS: 109,
 
- <span id='Ext-EventObject-property-NUM_PERIOD'>    /** Key constant @type Number */
 
- </span>    NUM_PERIOD: 110,
 
- <span id='Ext-EventObject-property-NUM_DIVISION'>    /** Key constant @type Number */
 
- </span>    NUM_DIVISION: 111,
 
- <span id='Ext-EventObject-property-F1'>    /** Key constant @type Number */
 
- </span>    F1: 112,
 
- <span id='Ext-EventObject-property-F2'>    /** Key constant @type Number */
 
- </span>    F2: 113,
 
- <span id='Ext-EventObject-property-F3'>    /** Key constant @type Number */
 
- </span>    F3: 114,
 
- <span id='Ext-EventObject-property-F4'>    /** Key constant @type Number */
 
- </span>    F4: 115,
 
- <span id='Ext-EventObject-property-F5'>    /** Key constant @type Number */
 
- </span>    F5: 116,
 
- <span id='Ext-EventObject-property-F6'>    /** Key constant @type Number */
 
- </span>    F6: 117,
 
- <span id='Ext-EventObject-property-F7'>    /** Key constant @type Number */
 
- </span>    F7: 118,
 
- <span id='Ext-EventObject-property-F8'>    /** Key constant @type Number */
 
- </span>    F8: 119,
 
- <span id='Ext-EventObject-property-F9'>    /** Key constant @type Number */
 
- </span>    F9: 120,
 
- <span id='Ext-EventObject-property-F10'>    /** Key constant @type Number */
 
- </span>    F10: 121,
 
- <span id='Ext-EventObject-property-F11'>    /** Key constant @type Number */
 
- </span>    F11: 122,
 
- <span id='Ext-EventObject-property-F12'>    /** Key constant @type Number */
 
- </span>    F12: 123,
 
- <span id='Ext-EventObject-property-WHEEL_SCALE'>    /**
 
- </span>     * The mouse wheel delta scaling factor. This value depends on browser version and OS and
 
-      * attempts to produce a similar scrolling experience across all platforms and browsers.
 
-      *
 
-      * To change this value:
 
-      *
 
-      *      Ext.EventObjectImpl.prototype.WHEEL_SCALE = 72;
 
-      *
 
-      * @type Number
 
-      * @markdown
 
-      */
 
-     WHEEL_SCALE: (function () {
 
-         var scale;
 
-         if (Ext.isGecko) {
 
-             // Firefox uses 3 on all platforms
 
-             scale = 3;
 
-         } else if (Ext.isMac) {
 
-             // Continuous scrolling devices have momentum and produce much more scroll than
 
-             // discrete devices on the same OS and browser. To make things exciting, Safari
 
-             // (and not Chrome) changed from small values to 120 (like IE).
 
-             if (Ext.isSafari && Ext.webKitVersion >= 532.0) {
 
-                 // Safari changed the scrolling factor to match IE (for details see
 
-                 // https://bugs.webkit.org/show_bug.cgi?id=24368). The WebKit version where this
 
-                 // change was introduced was 532.0
 
-                 //      Detailed discussion:
 
-                 //      https://bugs.webkit.org/show_bug.cgi?id=29601
 
-                 //      http://trac.webkit.org/browser/trunk/WebKit/chromium/src/mac/WebInputEventFactory.mm#L1063
 
-                 scale = 120;
 
-             } else {
 
-                 // MS optical wheel mouse produces multiples of 12 which is close enough
 
-                 // to help tame the speed of the continuous mice...
 
-                 scale = 12;
 
-             }
 
-             // Momentum scrolling produces very fast scrolling, so increase the scale factor
 
-             // to help produce similar results cross platform. This could be even larger and
 
-             // it would help those mice, but other mice would become almost unusable as a
 
-             // result (since we cannot tell which device type is in use).
 
-             scale *= 3;
 
-         } else {
 
-             // IE, Opera and other Windows browsers use 120.
 
-             scale = 120;
 
-         }
 
-         return scale;
 
-     }()),
 
- <span id='Ext-EventObject-property-clickRe'>    /**
 
- </span>     * Simple click regex
 
-      * @private
 
-      */
 
-     clickRe: /(dbl)?click/,
 
-     // safari keypress events for special keys return bad keycodes
 
-     safariKeys: {
 
-         3: 13, // enter
 
-         63234: 37, // left
 
-         63235: 39, // right
 
-         63232: 38, // up
 
-         63233: 40, // down
 
-         63276: 33, // page up
 
-         63277: 34, // page down
 
-         63272: 46, // delete
 
-         63273: 36, // home
 
-         63275: 35 // end
 
-     },
 
-     // normalize button clicks, don't see any way to feature detect this.
 
-     btnMap: Ext.isIE ? {
 
-         1: 0,
 
-         4: 1,
 
-         2: 2
 
-     } : {
 
-         0: 0,
 
-         1: 1,
 
-         2: 2
 
-     },
 
-     
 
- <span id='Ext-EventObject-property-ctrlKey'>    /**
 
- </span>     * @property {Boolean} ctrlKey
 
-      * True if the control key was down during the event.
 
-      * In Mac this will also be true when meta key was down.
 
-      */
 
- <span id='Ext-EventObject-property-altKey'>    /**
 
- </span>     * @property {Boolean} altKey
 
-      * True if the alt key was down during the event.
 
-      */
 
- <span id='Ext-EventObject-property-shiftKey'>    /**
 
- </span>     * @property {Boolean} shiftKey
 
-      * True if the shift key was down during the event.
 
-      */
 
-     constructor: function(event, freezeEvent){
 
-         if (event) {
 
-             this.setEvent(event.browserEvent || event, freezeEvent);
 
-         }
 
-     },
 
-     setEvent: function(event, freezeEvent){
 
-         var me = this, button, options;
 
-         if (event == me || (event && event.browserEvent)) { // already wrapped
 
-             return event;
 
-         }
 
-         me.browserEvent = event;
 
-         if (event) {
 
-             // normalize buttons
 
-             button = event.button ? me.btnMap[event.button] : (event.which ? event.which - 1 : -1);
 
-             if (me.clickRe.test(event.type) && button == -1) {
 
-                 button = 0;
 
-             }
 
-             options = {
 
-                 type: event.type,
 
-                 button: button,
 
-                 shiftKey: event.shiftKey,
 
-                 // mac metaKey behaves like ctrlKey
 
-                 ctrlKey: event.ctrlKey || event.metaKey || false,
 
-                 altKey: event.altKey,
 
-                 // in getKey these will be normalized for the mac
 
-                 keyCode: event.keyCode,
 
-                 charCode: event.charCode,
 
-                 // cache the targets for the delayed and or buffered events
 
-                 target: Ext.EventManager.getTarget(event),
 
-                 relatedTarget: Ext.EventManager.getRelatedTarget(event),
 
-                 currentTarget: event.currentTarget,
 
-                 xy: (freezeEvent ? me.getXY() : null)
 
-             };
 
-         } else {
 
-             options = {
 
-                 button: -1,
 
-                 shiftKey: false,
 
-                 ctrlKey: false,
 
-                 altKey: false,
 
-                 keyCode: 0,
 
-                 charCode: 0,
 
-                 target: null,
 
-                 xy: [0, 0]
 
-             };
 
-         }
 
-         Ext.apply(me, options);
 
-         return me;
 
-     },
 
- <span id='Ext-EventObject-method-stopEvent'>    /**
 
- </span>     * Stop the event (preventDefault and stopPropagation)
 
-      */
 
-     stopEvent: function(){
 
-         this.stopPropagation();
 
-         this.preventDefault();
 
-     },
 
- <span id='Ext-EventObject-method-preventDefault'>    /**
 
- </span>     * Prevents the browsers default handling of the event.
 
-      */
 
-     preventDefault: function(){
 
-         if (this.browserEvent) {
 
-             Ext.EventManager.preventDefault(this.browserEvent);
 
-         }
 
-     },
 
- <span id='Ext-EventObject-method-stopPropagation'>    /**
 
- </span>     * Cancels bubbling of the event.
 
-      */
 
-     stopPropagation: function(){
 
-         var browserEvent = this.browserEvent;
 
-         if (browserEvent) {
 
-             if (browserEvent.type == 'mousedown') {
 
-                 Ext.EventManager.stoppedMouseDownEvent.fire(this);
 
-             }
 
-             Ext.EventManager.stopPropagation(browserEvent);
 
-         }
 
-     },
 
- <span id='Ext-EventObject-method-getCharCode'>    /**
 
- </span>     * Gets the character code for the event.
 
-      * @return {Number}
 
-      */
 
-     getCharCode: function(){
 
-         return this.charCode || this.keyCode;
 
-     },
 
- <span id='Ext-EventObject-method-getKey'>    /**
 
- </span>     * Returns a normalized keyCode for the event.
 
-      * @return {Number} The key code
 
-      */
 
-     getKey: function(){
 
-         return this.normalizeKey(this.keyCode || this.charCode);
 
-     },
 
- <span id='Ext-EventObject-method-normalizeKey'>    /**
 
- </span>     * Normalize key codes across browsers
 
-      * @private
 
-      * @param {Number} key The key code
 
-      * @return {Number} The normalized code
 
-      */
 
-     normalizeKey: function(key){
 
-         // can't feature detect this
 
-         return Ext.isWebKit ? (this.safariKeys[key] || key) : key;
 
-     },
 
- <span id='Ext-EventObject-method-getPageX'>    /**
 
- </span>     * Gets the x coordinate of the event.
 
-      * @return {Number}
 
-      * @deprecated 4.0 Replaced by {@link #getX}
 
-      */
 
-     getPageX: function(){
 
-         return this.getX();
 
-     },
 
- <span id='Ext-EventObject-method-getPageY'>    /**
 
- </span>     * Gets the y coordinate of the event.
 
-      * @return {Number}
 
-      * @deprecated 4.0 Replaced by {@link #getY}
 
-      */
 
-     getPageY: function(){
 
-         return this.getY();
 
-     },
 
- <span id='Ext-EventObject-method-getX'>    /**
 
- </span>     * Gets the x coordinate of the event.
 
-      * @return {Number}
 
-      */
 
-     getX: function() {
 
-         return this.getXY()[0];
 
-     },
 
- <span id='Ext-EventObject-method-getY'>    /**
 
- </span>     * Gets the y coordinate of the event.
 
-      * @return {Number}
 
-      */
 
-     getY: function() {
 
-         return this.getXY()[1];
 
-     },
 
- <span id='Ext-EventObject-method-getXY'>    /**
 
- </span>     * Gets the page coordinates of the event.
 
-      * @return {Number[]} The xy values like [x, y]
 
-      */
 
-     getXY: function() {
 
-         if (!this.xy) {
 
-             // same for XY
 
-             this.xy = Ext.EventManager.getPageXY(this.browserEvent);
 
-         }
 
-         return this.xy;
 
-     },
 
- <span id='Ext-EventObject-method-getTarget'>    /**
 
- </span>     * Gets the target for the event.
 
-      * @param {String} selector (optional) A simple selector to filter the target or look for an ancestor of the target
 
-      * @param {Number/HTMLElement} maxDepth (optional) The max depth to search as a number or element (defaults to 10 || document.body)
 
-      * @param {Boolean} returnEl (optional) True to return a Ext.Element object instead of DOM node
 
-      * @return {HTMLElement}
 
-      */
 
-     getTarget : function(selector, maxDepth, returnEl){
 
-         if (selector) {
 
-             return Ext.fly(this.target).findParent(selector, maxDepth, returnEl);
 
-         }
 
-         return returnEl ? Ext.get(this.target) : this.target;
 
-     },
 
- <span id='Ext-EventObject-method-getRelatedTarget'>    /**
 
- </span>     * Gets the related target.
 
-      * @param {String} selector (optional) A simple selector to filter the target or look for an ancestor of the target
 
-      * @param {Number/HTMLElement} maxDepth (optional) The max depth to search as a number or element (defaults to 10 || document.body)
 
-      * @param {Boolean} returnEl (optional) True to return a Ext.Element object instead of DOM node
 
-      * @return {HTMLElement}
 
-      */
 
-     getRelatedTarget : function(selector, maxDepth, returnEl){
 
-         if (selector) {
 
-             return Ext.fly(this.relatedTarget).findParent(selector, maxDepth, returnEl);
 
-         }
 
-         return returnEl ? Ext.get(this.relatedTarget) : this.relatedTarget;
 
-     },
 
- <span id='Ext-EventObject-method-correctWheelDelta'>    /**
 
- </span>     * Correctly scales a given wheel delta.
 
-      * @param {Number} delta The delta value.
 
-      */
 
-     correctWheelDelta : function (delta) {
 
-         var scale = this.WHEEL_SCALE,
 
-             ret = Math.round(delta / scale);
 
-         if (!ret && delta) {
 
-             ret = (delta < 0) ? -1 : 1; // don't allow non-zero deltas to go to zero!
 
-         }
 
-         return ret;
 
-     },
 
- <span id='Ext-EventObject-method-getWheelDeltas'>    /**
 
- </span>     * Returns the mouse wheel deltas for this event.
 
-      * @return {Object} An object with "x" and "y" properties holding the mouse wheel deltas.
 
-      */
 
-     getWheelDeltas : function () {
 
-         var me = this,
 
-             event = me.browserEvent,
 
-             dx = 0, dy = 0; // the deltas
 
-         if (Ext.isDefined(event.wheelDeltaX)) { // WebKit has both dimensions
 
-             dx = event.wheelDeltaX;
 
-             dy = event.wheelDeltaY;
 
-         } else if (event.wheelDelta) { // old WebKit and IE
 
-             dy = event.wheelDelta;
 
-         } else if (event.detail) { // Gecko
 
-             dy = -event.detail; // gecko is backwards
 
-             // Gecko sometimes returns really big values if the user changes settings to
 
-             // scroll a whole page per scroll
 
-             if (dy > 100) {
 
-                 dy = 3;
 
-             } else if (dy < -100) {
 
-                 dy = -3;
 
-             }
 
-             // Firefox 3.1 adds an axis field to the event to indicate direction of
 
-             // scroll.  See https://developer.mozilla.org/en/Gecko-Specific_DOM_Events
 
-             if (Ext.isDefined(event.axis) && event.axis === event.HORIZONTAL_AXIS) {
 
-                 dx = dy;
 
-                 dy = 0;
 
-             }
 
-         }
 
-         return {
 
-             x: me.correctWheelDelta(dx),
 
-             y: me.correctWheelDelta(dy)
 
-         };
 
-     },
 
- <span id='Ext-EventObject-method-getWheelDelta'>    /**
 
- </span>     * Normalizes mouse wheel y-delta across browsers. To get x-delta information, use
 
-      * {@link #getWheelDeltas} instead.
 
-      * @return {Number} The mouse wheel y-delta
 
-      */
 
-     getWheelDelta : function(){
 
-         var deltas = this.getWheelDeltas();
 
-         return deltas.y;
 
-     },
 
- <span id='Ext-EventObject-method-within'>    /**
 
- </span>     * Returns true if the target of this event is a child of el.  Unless the allowEl parameter is set, it will return false if if the target is el.
 
-      * Example usage:<pre><code>
 
- // Handle click on any child of an element
 
- Ext.getBody().on('click', function(e){
 
-     if(e.within('some-el')){
 
-         alert('Clicked on a child of some-el!');
 
-     }
 
- });
 
- // Handle click directly on an element, ignoring clicks on child nodes
 
- Ext.getBody().on('click', function(e,t){
 
-     if((t.id == 'some-el') && !e.within(t, true)){
 
-         alert('Clicked directly on some-el!');
 
-     }
 
- });
 
- </code></pre>
 
-      * @param {String/HTMLElement/Ext.Element} el The id, DOM element or Ext.Element to check
 
-      * @param {Boolean} related (optional) true to test if the related target is within el instead of the target
 
-      * @param {Boolean} allowEl (optional) true to also check if the passed element is the target or related target
 
-      * @return {Boolean}
 
-      */
 
-     within : function(el, related, allowEl){
 
-         if(el){
 
-             var t = related ? this.getRelatedTarget() : this.getTarget(),
 
-                 result;
 
-             if (t) {
 
-                 result = Ext.fly(el).contains(t);
 
-                 if (!result && allowEl) {
 
-                     result = t == Ext.getDom(el);
 
-                 }
 
-                 return result;
 
-             }
 
-         }
 
-         return false;
 
-     },
 
- <span id='Ext-EventObject-method-isNavKeyPress'>    /**
 
- </span>     * Checks if the key pressed was a "navigation" key
 
-      * @return {Boolean} True if the press is a navigation keypress
 
-      */
 
-     isNavKeyPress : function(){
 
-         var me = this,
 
-             k = this.normalizeKey(me.keyCode);
 
-        return (k >= 33 && k <= 40) ||  // Page Up/Down, End, Home, Left, Up, Right, Down
 
-        k == me.RETURN ||
 
-        k == me.TAB ||
 
-        k == me.ESC;
 
-     },
 
- <span id='Ext-EventObject-method-isSpecialKey'>    /**
 
- </span>     * Checks if the key pressed was a "special" key
 
-      * @return {Boolean} True if the press is a special keypress
 
-      */
 
-     isSpecialKey : function(){
 
-         var k = this.normalizeKey(this.keyCode);
 
-         return (this.type == 'keypress' && this.ctrlKey) ||
 
-         this.isNavKeyPress() ||
 
-         (k == this.BACKSPACE) || // Backspace
 
-         (k >= 16 && k <= 20) || // Shift, Ctrl, Alt, Pause, Caps Lock
 
-         (k >= 44 && k <= 46);   // Print Screen, Insert, Delete
 
-     },
 
- <span id='Ext-EventObject-method-getPoint'>    /**
 
- </span>     * Returns a point object that consists of the object coordinates.
 
-      * @return {Ext.util.Point} point
 
-      */
 
-     getPoint : function(){
 
-         var xy = this.getXY();
 
-         return new Ext.util.Point(xy[0], xy[1]);
 
-     },
 
- <span id='Ext-EventObject-method-hasModifier'>   /**
 
- </span>    * Returns true if the control, meta, shift or alt key was pressed during this event.
 
-     * @return {Boolean}
 
-     */
 
-     hasModifier : function(){
 
-         return this.ctrlKey || this.altKey || this.shiftKey || this.metaKey;
 
-     },
 
- <span id='Ext-EventObject-method-injectEvent'>    /**
 
- </span>     * Injects a DOM event using the data in this object and (optionally) a new target.
 
-      * This is a low-level technique and not likely to be used by application code. The
 
-      * currently supported event types are:
 
-      * <p><b>HTMLEvents</b></p>
 
-      * <ul>
 
-      * <li>load</li>
 
-      * <li>unload</li>
 
-      * <li>select</li>
 
-      * <li>change</li>
 
-      * <li>submit</li>
 
-      * <li>reset</li>
 
-      * <li>resize</li>
 
-      * <li>scroll</li>
 
-      * </ul>
 
-      * <p><b>MouseEvents</b></p>
 
-      * <ul>
 
-      * <li>click</li>
 
-      * <li>dblclick</li>
 
-      * <li>mousedown</li>
 
-      * <li>mouseup</li>
 
-      * <li>mouseover</li>
 
-      * <li>mousemove</li>
 
-      * <li>mouseout</li>
 
-      * </ul>
 
-      * <p><b>UIEvents</b></p>
 
-      * <ul>
 
-      * <li>focusin</li>
 
-      * <li>focusout</li>
 
-      * <li>activate</li>
 
-      * <li>focus</li>
 
-      * <li>blur</li>
 
-      * </ul>
 
-      * @param {Ext.Element/HTMLElement} target (optional) If specified, the target for the event. This
 
-      * is likely to be used when relaying a DOM event. If not specified, {@link #getTarget}
 
-      * is used to determine the target.
 
-      */
 
-     injectEvent: (function () {
 
-         var API,
 
-             dispatchers = {}, // keyed by event type (e.g., 'mousedown')
 
-             crazyIEButtons;
 
-         // Good reference: http://developer.yahoo.com/yui/docs/UserAction.js.html
 
-         // IE9 has createEvent, but this code causes major problems with htmleditor (it
 
-         // blocks all mouse events and maybe more). TODO
 
-         if (!Ext.isIE && document.createEvent) { // if (DOM compliant)
 
-             API = {
 
-                 createHtmlEvent: function (doc, type, bubbles, cancelable) {
 
-                     var event = doc.createEvent('HTMLEvents');
 
-                     event.initEvent(type, bubbles, cancelable);
 
-                     return event;
 
-                 },
 
-                 createMouseEvent: function (doc, type, bubbles, cancelable, detail,
 
-                                             clientX, clientY, ctrlKey, altKey, shiftKey, metaKey,
 
-                                             button, relatedTarget) {
 
-                     var event = doc.createEvent('MouseEvents'),
 
-                         view = doc.defaultView || window;
 
-                     if (event.initMouseEvent) {
 
-                         event.initMouseEvent(type, bubbles, cancelable, view, detail,
 
-                                     clientX, clientY, clientX, clientY, ctrlKey, altKey,
 
-                                     shiftKey, metaKey, button, relatedTarget);
 
-                     } else { // old Safari
 
-                         event = doc.createEvent('UIEvents');
 
-                         event.initEvent(type, bubbles, cancelable);
 
-                         event.view = view;
 
-                         event.detail = detail;
 
-                         event.screenX = clientX;
 
-                         event.screenY = clientY;
 
-                         event.clientX = clientX;
 
-                         event.clientY = clientY;
 
-                         event.ctrlKey = ctrlKey;
 
-                         event.altKey = altKey;
 
-                         event.metaKey = metaKey;
 
-                         event.shiftKey = shiftKey;
 
-                         event.button = button;
 
-                         event.relatedTarget = relatedTarget;
 
-                     }
 
-                     return event;
 
-                 },
 
-                 createUIEvent: function (doc, type, bubbles, cancelable, detail) {
 
-                     var event = doc.createEvent('UIEvents'),
 
-                         view = doc.defaultView || window;
 
-                     event.initUIEvent(type, bubbles, cancelable, view, detail);
 
-                     return event;
 
-                 },
 
-                 fireEvent: function (target, type, event) {
 
-                     target.dispatchEvent(event);
 
-                 },
 
-                 fixTarget: function (target) {
 
-                     // Safari3 doesn't have window.dispatchEvent()
 
-                     if (target == window && !target.dispatchEvent) {
 
-                         return document;
 
-                     }
 
-                     return target;
 
-                 }
 
-             };
 
-         } else if (document.createEventObject) { // else if (IE)
 
-             crazyIEButtons = { 0: 1, 1: 4, 2: 2 };
 
-             API = {
 
-                 createHtmlEvent: function (doc, type, bubbles, cancelable) {
 
-                     var event = doc.createEventObject();
 
-                     event.bubbles = bubbles;
 
-                     event.cancelable = cancelable;
 
-                     return event;
 
-                 },
 
-                 createMouseEvent: function (doc, type, bubbles, cancelable, detail,
 
-                                             clientX, clientY, ctrlKey, altKey, shiftKey, metaKey,
 
-                                             button, relatedTarget) {
 
-                     var event = doc.createEventObject();
 
-                     event.bubbles = bubbles;
 
-                     event.cancelable = cancelable;
 
-                     event.detail = detail;
 
-                     event.screenX = clientX;
 
-                     event.screenY = clientY;
 
-                     event.clientX = clientX;
 
-                     event.clientY = clientY;
 
-                     event.ctrlKey = ctrlKey;
 
-                     event.altKey = altKey;
 
-                     event.shiftKey = shiftKey;
 
-                     event.metaKey = metaKey;
 
-                     event.button = crazyIEButtons[button] || button;
 
-                     event.relatedTarget = relatedTarget; // cannot assign to/fromElement
 
-                     return event;
 
-                 },
 
-                 createUIEvent: function (doc, type, bubbles, cancelable, detail) {
 
-                     var event = doc.createEventObject();
 
-                     event.bubbles = bubbles;
 
-                     event.cancelable = cancelable;
 
-                     return event;
 
-                 },
 
-                 fireEvent: function (target, type, event) {
 
-                     target.fireEvent('on' + type, event);
 
-                 },
 
-                 fixTarget: function (target) {
 
-                     if (target == document) {
 
-                         // IE6,IE7 thinks window==document and doesn't have window.fireEvent()
 
-                         // IE6,IE7 cannot properly call document.fireEvent()
 
-                         return document.documentElement;
 
-                     }
 
-                     return target;
 
-                 }
 
-             };
 
-         }
 
-         //----------------
 
-         // HTMLEvents
 
-         Ext.Object.each({
 
-                 load:   [false, false],
 
-                 unload: [false, false],
 
-                 select: [true, false],
 
-                 change: [true, false],
 
-                 submit: [true, true],
 
-                 reset:  [true, false],
 
-                 resize: [true, false],
 
-                 scroll: [true, false]
 
-             },
 
-             function (name, value) {
 
-                 var bubbles = value[0], cancelable = value[1];
 
-                 dispatchers[name] = function (targetEl, srcEvent) {
 
-                     var e = API.createHtmlEvent(name, bubbles, cancelable);
 
-                     API.fireEvent(targetEl, name, e);
 
-                 };
 
-             });
 
-         //----------------
 
-         // MouseEvents
 
-         function createMouseEventDispatcher (type, detail) {
 
-             var cancelable = (type != 'mousemove');
 
-             return function (targetEl, srcEvent) {
 
-                 var xy = srcEvent.getXY(),
 
-                     e = API.createMouseEvent(targetEl.ownerDocument, type, true, cancelable,
 
-                                 detail, xy[0], xy[1], srcEvent.ctrlKey, srcEvent.altKey,
 
-                                 srcEvent.shiftKey, srcEvent.metaKey, srcEvent.button,
 
-                                 srcEvent.relatedTarget);
 
-                 API.fireEvent(targetEl, type, e);
 
-             };
 
-         }
 
-         Ext.each(['click', 'dblclick', 'mousedown', 'mouseup', 'mouseover', 'mousemove', 'mouseout'],
 
-             function (eventName) {
 
-                 dispatchers[eventName] = createMouseEventDispatcher(eventName, 1);
 
-             });
 
-         //----------------
 
-         // UIEvents
 
-         Ext.Object.each({
 
-                 focusin:  [true, false],
 
-                 focusout: [true, false],
 
-                 activate: [true, true],
 
-                 focus:    [false, false],
 
-                 blur:     [false, false]
 
-             },
 
-             function (name, value) {
 
-                 var bubbles = value[0], cancelable = value[1];
 
-                 dispatchers[name] = function (targetEl, srcEvent) {
 
-                     var e = API.createUIEvent(targetEl.ownerDocument, name, bubbles, cancelable, 1);
 
-                     API.fireEvent(targetEl, name, e);
 
-                 };
 
-             });
 
-         //---------
 
-         if (!API) {
 
-             // not even sure what ancient browsers fall into this category...
 
-             dispatchers = {}; // never mind all those we just built :P
 
-             API = {
 
-                 fixTarget: function (t) {
 
-                     return t;
 
-                 }
 
-             };
 
-         }
 
-         function cannotInject (target, srcEvent) {
 
-             //<debug>
 
-             // TODO log something
 
-             //</debug>
 
-         }
 
-         return function (target) {
 
-             var me = this,
 
-                 dispatcher = dispatchers[me.type] || cannotInject,
 
-                 t = target ? (target.dom || target) : me.getTarget();
 
-             t = API.fixTarget(t);
 
-             dispatcher(t, me);
 
-         };
 
-     }()) // call to produce method
 
- }, function() {
 
- Ext.EventObject = new Ext.EventObjectImpl();
 
- });
 
- </pre>
 
- </body>
 
- </html>
 
 
  |