revet delay on chrome for window resize
[roojs1] / docs / src / Roo_EventManager.js.html
1 <html><head><title>Roo/EventManager.js</title><link rel="stylesheet" type="text/css" href="../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">/*
2  * Based on:
3  * Ext JS Library 1.1.1
4  * Copyright(c) 2006-2007, Ext JS, LLC.
5  *
6  * Originally Released Under LGPL - original licence link has changed is not relivant.
7  *
8  * Fork - LGPL
9  * &lt;script type=&quot;text/javascript&quot;&gt;
10  */
11
12 /**
13  * @class Roo.EventManager
14  * Registers event handlers that want to receive a normalized EventObject instead of the standard browser event and provides 
15  * several useful events directly.
16  * See {@link Roo.EventObject} for more details on normalized event objects.
17  * @static
18  */
19 </span><span class="jsdoc-var">Roo.EventManager </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
20     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">docReadyEvent</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">docReadyProcId</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">docReadyState </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
21     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">resizeEvent</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">resizeTask</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">textEvent</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">textSize</span><span class="jsdoc-syntax">;
22     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">E </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.lib.Event</span><span class="jsdoc-syntax">;
23     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">D </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.lib.Dom</span><span class="jsdoc-syntax">;
24
25
26
27
28     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">fireDocReady </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
29         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">docReadyState</span><span class="jsdoc-syntax">){
30             </span><span class="jsdoc-var">docReadyState </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
31             </span><span class="jsdoc-var">Roo.isReady </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
32             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">docReadyProcId</span><span class="jsdoc-syntax">){
33                 </span><span class="jsdoc-var">clearInterval</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">docReadyProcId</span><span class="jsdoc-syntax">);
34             }
35             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isGecko </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">Roo.isOpera</span><span class="jsdoc-syntax">) {
36                 </span><span class="jsdoc-var">document.removeEventListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;DOMContentLoaded&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fireDocReady</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
37             }
38             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIE</span><span class="jsdoc-syntax">){
39                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">defer </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">document.getElementById</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;ie-deferred-loader&quot;</span><span class="jsdoc-syntax">);
40                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">defer</span><span class="jsdoc-syntax">){
41                     </span><span class="jsdoc-var">defer.onreadystatechange </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
42                     </span><span class="jsdoc-var">defer.parentNode.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">defer</span><span class="jsdoc-syntax">);
43                 }
44             }
45             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">docReadyEvent</span><span class="jsdoc-syntax">){
46                 </span><span class="jsdoc-var">docReadyEvent.fire</span><span class="jsdoc-syntax">();
47                 </span><span class="jsdoc-var">docReadyEvent.clearListeners</span><span class="jsdoc-syntax">();
48             }
49         }
50     };
51
52     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">initDocReady </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
53         </span><span class="jsdoc-var">docReadyEvent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.util.Event</span><span class="jsdoc-syntax">();
54         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isGecko </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">Roo.isOpera</span><span class="jsdoc-syntax">) {
55             </span><span class="jsdoc-var">document.addEventListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;DOMContentLoaded&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fireDocReady</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
56         }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIE</span><span class="jsdoc-syntax">){
57             </span><span class="jsdoc-var">document.write</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;&lt;s&quot;</span><span class="jsdoc-syntax">+</span><span class="jsdoc-string">'cript id=&quot;ie-deferred-loader&quot; defer=&quot;defer&quot; src=&quot;/'</span><span class="jsdoc-syntax">+</span><span class="jsdoc-string">'/:&quot;&gt;&lt;/s'</span><span class="jsdoc-syntax">+</span><span class="jsdoc-string">&quot;cript&gt;&quot;</span><span class="jsdoc-syntax">);
58             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">defer </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">document.getElementById</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;ie-deferred-loader&quot;</span><span class="jsdoc-syntax">);
59             </span><span class="jsdoc-var">defer.onreadystatechange </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
60                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.readyState </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;complete&quot;</span><span class="jsdoc-syntax">){
61                     </span><span class="jsdoc-var">fireDocReady</span><span class="jsdoc-syntax">();
62                 }
63             };
64         }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isSafari</span><span class="jsdoc-syntax">){
65             </span><span class="jsdoc-var">docReadyProcId </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">setInterval</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
66                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">rs </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">document.readyState</span><span class="jsdoc-syntax">;
67                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">rs </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;complete&quot;</span><span class="jsdoc-syntax">) {
68                     </span><span class="jsdoc-var">fireDocReady</span><span class="jsdoc-syntax">();
69                  }
70             }, 10);
71         }
72         </span><span class="jsdoc-comment">// no matter what, make sure it fires on load
73         </span><span class="jsdoc-var">E.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;load&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fireDocReady</span><span class="jsdoc-syntax">);
74     };
75
76     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">createBuffered </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">){
77         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">task </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.util.DelayedTask</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">);
78         </span><span class="jsdoc-keyword">return function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
79             </span><span class="jsdoc-comment">// create new event object impl so new events don't wipe out properties
80             </span><span class="jsdoc-var">e </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.EventObjectImpl</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
81             </span><span class="jsdoc-var">task.delay</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.buffer</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">, [</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">]);
82         };
83     };
84
85     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">createSingle </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ename</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">){
86         </span><span class="jsdoc-keyword">return function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
87             </span><span class="jsdoc-var">Roo.EventManager.removeListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ename</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">);
88             </span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
89         };
90     };
91
92     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">createDelayed </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">){
93         </span><span class="jsdoc-keyword">return function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
94             </span><span class="jsdoc-comment">// create new event object impl so new events don't wipe out properties
95             </span><span class="jsdoc-var">e </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.EventObjectImpl</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
96             </span><span class="jsdoc-var">setTimeout</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
97                 </span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
98             }, </span><span class="jsdoc-var">o.delay </span><span class="jsdoc-syntax">|| 10);
99         };
100     };
101     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">transitionEndVal </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
102
103     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">transitionEnd </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
104     {
105         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">transitionEndVal</span><span class="jsdoc-syntax">) {
106             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">transitionEndVal</span><span class="jsdoc-syntax">;
107         }
108         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">document.createElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'div'</span><span class="jsdoc-syntax">);
109
110         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">transEndEventNames </span><span class="jsdoc-syntax">= {
111             </span><span class="jsdoc-var">WebkitTransition </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'webkitTransitionEnd'</span><span class="jsdoc-syntax">,
112             </span><span class="jsdoc-var">MozTransition    </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'transitionend'</span><span class="jsdoc-syntax">,
113             </span><span class="jsdoc-var">OTransition      </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'oTransitionEnd otransitionend'</span><span class="jsdoc-syntax">,
114             </span><span class="jsdoc-var">transition       </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'transitionend'
115         </span><span class="jsdoc-syntax">};
116
117         </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">name </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">transEndEventNames</span><span class="jsdoc-syntax">) {
118             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.style</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">name</span><span class="jsdoc-syntax">] !== </span><span class="jsdoc-var">undefined</span><span class="jsdoc-syntax">) {
119                 </span><span class="jsdoc-var">transitionEndVal </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">transEndEventNames</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">name</span><span class="jsdoc-syntax">];
120                 </span><span class="jsdoc-keyword">return  </span><span class="jsdoc-var">transitionEndVal </span><span class="jsdoc-syntax">;
121             }
122         }
123     }
124
125
126
127     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">listen </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">element</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ename</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">opt</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">)
128     {
129         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">o </span><span class="jsdoc-syntax">= (!</span><span class="jsdoc-var">opt </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">opt </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;boolean&quot;</span><span class="jsdoc-syntax">) ? {} : </span><span class="jsdoc-var">opt</span><span class="jsdoc-syntax">;
130         </span><span class="jsdoc-var">fn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">fn </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">o.fn</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">scope </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">scope </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">o.scope</span><span class="jsdoc-syntax">;
131         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.getDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">element</span><span class="jsdoc-syntax">);
132
133
134         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">){
135             </span><span class="jsdoc-keyword">throw </span><span class="jsdoc-string">&quot;Error listening for \&quot;&quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">ename </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'\&quot;. Element &quot;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">element </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&quot; doesn\'t exist.'</span><span class="jsdoc-syntax">;
136         }
137
138         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ename </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'transitionend'</span><span class="jsdoc-syntax">) {
139             </span><span class="jsdoc-var">ename </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">transitionEnd</span><span class="jsdoc-syntax">();
140         }
141         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">h </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
142             </span><span class="jsdoc-var">e </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.EventObject.setEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
143             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">t</span><span class="jsdoc-syntax">;
144             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.delegate</span><span class="jsdoc-syntax">){
145                 </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.getTarget</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.delegate</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
146                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">t</span><span class="jsdoc-syntax">){
147                     </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
148                 }
149             }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
150                 </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.target</span><span class="jsdoc-syntax">;
151             }
152             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.stopEvent </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">){
153                 </span><span class="jsdoc-var">e.stopEvent</span><span class="jsdoc-syntax">();
154             }
155             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.preventDefault </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">){
156                </span><span class="jsdoc-var">e.preventDefault</span><span class="jsdoc-syntax">();
157             }
158             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.stopPropagation </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">){
159                 </span><span class="jsdoc-var">e.stopPropagation</span><span class="jsdoc-syntax">();
160             }
161
162             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.normalized </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
163                 </span><span class="jsdoc-var">e </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.browserEvent</span><span class="jsdoc-syntax">;
164             }
165
166             </span><span class="jsdoc-var">fn.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">scope </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">t</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
167         };
168         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.delay</span><span class="jsdoc-syntax">){
169             </span><span class="jsdoc-var">h </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">createDelayed</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
170         }
171         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.single</span><span class="jsdoc-syntax">){
172             </span><span class="jsdoc-var">h </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">createSingle</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ename</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">);
173         }
174         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.buffer</span><span class="jsdoc-syntax">){
175             </span><span class="jsdoc-var">h </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">createBuffered</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
176         }
177
178         </span><span class="jsdoc-var">fn._handlers </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">fn._handlers </span><span class="jsdoc-syntax">|| [];
179
180
181         </span><span class="jsdoc-var">fn._handlers.push</span><span class="jsdoc-syntax">([</span><span class="jsdoc-var">Roo.id</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">), </span><span class="jsdoc-var">ename</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">]);
182
183
184
185         </span><span class="jsdoc-var">E.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ename</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">); </span><span class="jsdoc-comment">// this adds the actuall listener to the object..
186
187
188         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ename </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;mousewheel&quot; </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">el.addEventListener</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// workaround for jQuery
189             </span><span class="jsdoc-var">el.addEventListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;DOMMouseScroll&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
190             </span><span class="jsdoc-var">E.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'unload'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
191                 </span><span class="jsdoc-var">el.removeEventListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;DOMMouseScroll&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
192             });
193         }
194         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ename </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;mousedown&quot; </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">document</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// fix stopped mousedowns on the document
195             </span><span class="jsdoc-var">Roo.EventManager.stoppedMouseDownEvent.addListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">);
196         }
197         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">;
198     };
199
200     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">stopListening </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ename</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">){
201         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.id</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">), </span><span class="jsdoc-var">hds </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">fn._handlers</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">hd </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">;
202         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">hds</span><span class="jsdoc-syntax">){
203             </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">hds.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
204                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">h </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">hds</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
205                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">[0] == </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">[1] == </span><span class="jsdoc-var">ename</span><span class="jsdoc-syntax">){
206                     </span><span class="jsdoc-var">hd </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">[2];
207                     </span><span class="jsdoc-var">hds.splice</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">, 1);
208                     </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
209                 }
210             }
211         }
212         </span><span class="jsdoc-var">E.un</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ename</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">hd</span><span class="jsdoc-syntax">);
213         </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.getDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
214         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ename </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;mousewheel&quot; </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">el.addEventListener</span><span class="jsdoc-syntax">){
215             </span><span class="jsdoc-var">el.removeEventListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;DOMMouseScroll&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">hd</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
216         }
217         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ename </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;mousedown&quot; </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">document</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// fix stopped mousedowns on the document
218             </span><span class="jsdoc-var">Roo.EventManager.stoppedMouseDownEvent.removeListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">hd</span><span class="jsdoc-syntax">);
219         }
220     };
221
222     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">propRe </span><span class="jsdoc-syntax">= /^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/;
223
224     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">pub </span><span class="jsdoc-syntax">= {
225
226
227         </span><span class="jsdoc-comment">/** 
228          * Fix for doc tools
229          * @scope Roo.EventManager
230          */
231
232
233         /** 
234          * This is no longer needed and is deprecated. Places a simple wrapper around an event handler to override the browser event
235          * object with a Roo.EventObject
236          * @param {Function} fn        The method the event invokes
237          * @param {Object}   scope    An object that becomes the scope of the handler
238          * @param {boolean}  override If true, the obj passed in becomes
239          *                             the execution scope of the listener
240          * @return {Function} The wrapped function
241          * @deprecated
242          */
243         </span><span class="jsdoc-var">wrap </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">override</span><span class="jsdoc-syntax">){
244             </span><span class="jsdoc-keyword">return function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
245                 </span><span class="jsdoc-var">Roo.EventObject.setEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
246                 </span><span class="jsdoc-var">fn.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">override </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">scope </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">window </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.EventObject</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">);
247             };
248         },
249
250         </span><span class="jsdoc-comment">/**
251      * Appends an event handler to an element (shorthand for addListener)
252      * @param {String/HTMLElement}   element        The html element or id to assign the
253      * @param {String}   eventName The type of event to listen for
254      * @param {Function} handler The method the event invokes
255      * @param {Object}   scope (optional) The scope in which to execute the handler
256      * function. The handler function's &quot;this&quot; context.
257      * @param {Object}   options (optional) An object containing handler configuration
258      * properties. This may contain any of the following properties:&lt;ul&gt;
259      * &lt;li&gt;scope {Object} The scope in which to execute the handler function. The handler function's &quot;this&quot; context.&lt;/li&gt;
260      * &lt;li&gt;delegate {String} A simple selector to filter the target or look for a descendant of the target&lt;/li&gt;
261      * &lt;li&gt;stopEvent {Boolean} True to stop the event. That is stop propagation, and prevent the default action.&lt;/li&gt;
262      * &lt;li&gt;preventDefault {Boolean} True to prevent the default action&lt;/li&gt;
263      * &lt;li&gt;stopPropagation {Boolean} True to prevent event propagation&lt;/li&gt;
264      * &lt;li&gt;normalized {Boolean} False to pass a browser event to the handler function instead of an Roo.EventObject&lt;/li&gt;
265      * &lt;li&gt;delay {Number} The number of milliseconds to delay the invocation of the handler after te event fires.&lt;/li&gt;
266      * &lt;li&gt;single {Boolean} True to add a handler to handle just the next firing of the event, and then remove itself.&lt;/li&gt;
267      * &lt;li&gt;buffer {Number} Causes the handler to be scheduled to run in an {@link Roo.util.DelayedTask} delayed
268      * by the specified number of milliseconds. If the event fires again within that time, the original
269      * handler is &lt;em&gt;not&lt;/em&gt; invoked, but the new handler is scheduled in its place.&lt;/li&gt;
270      * &lt;/ul&gt;&lt;br&gt;
271      * &lt;p&gt;
272      * &lt;b&gt;Combining Options&lt;/b&gt;&lt;br&gt;
273      * Using the options argument, it is possible to combine different types of listeners:&lt;br&gt;
274      * &lt;br&gt;
275      * A normalized, delayed, one-time listener that auto stops the event and passes a custom argument (forumId)&lt;div style=&quot;margin: 5px 20px 20px;&quot;&gt;
276      * Code:&lt;pre&gt;&lt;code&gt;
277 el.on('click', this.onClick, this, {
278     single: true,
279     delay: 100,
280     stopEvent : true,
281     forumId: 4
282 });&lt;/code&gt;&lt;/pre&gt;
283      * &lt;p&gt;
284      * &lt;b&gt;Attaching multiple handlers in 1 call&lt;/b&gt;&lt;br&gt;
285       * The method also allows for a single argument to be passed which is a config object containing properties
286      * which specify multiple handlers.
287      * &lt;p&gt;
288      * Code:&lt;pre&gt;&lt;code&gt;
289 el.on({
290     'click' : {
291         fn: this.onClick
292         scope: this,
293         delay: 100
294     },
295     'mouseover' : {
296         fn: this.onMouseOver
297         scope: this
298     },
299     'mouseout' : {
300         fn: this.onMouseOut
301         scope: this
302     }
303 });&lt;/code&gt;&lt;/pre&gt;
304      * &lt;p&gt;
305      * Or a shorthand syntax:&lt;br&gt;
306      * Code:&lt;pre&gt;&lt;code&gt;
307 el.on({
308     'click' : this.onClick,
309     'mouseover' : this.onMouseOver,
310     'mouseout' : this.onMouseOut
311     scope: this
312 });&lt;/code&gt;&lt;/pre&gt;
313      */
314         </span><span class="jsdoc-var">addListener </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">element</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">eventName</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">){
315             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">eventName </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;object&quot;</span><span class="jsdoc-syntax">){
316                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">o </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">eventName</span><span class="jsdoc-syntax">;
317                 </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">e </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">){
318                     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">propRe.test</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">)){
319                         </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
320                     }
321                     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">] == </span><span class="jsdoc-string">&quot;function&quot;</span><span class="jsdoc-syntax">){
322                         </span><span class="jsdoc-comment">// shared options
323                         </span><span class="jsdoc-var">listen</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">element</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">], </span><span class="jsdoc-var">o.scope</span><span class="jsdoc-syntax">);
324                     }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
325                         </span><span class="jsdoc-comment">// individual options
326                         </span><span class="jsdoc-var">listen</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">element</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">]);
327                     }
328                 }
329                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
330             }
331             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">listen</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">element</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">eventName</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">);
332         },
333
334         </span><span class="jsdoc-comment">/**
335          * Removes an event handler
336          *
337          * @param {String/HTMLElement}   element        The id or html element to remove the 
338          *                             event from
339          * @param {String}   eventName     The type of event
340          * @param {Function} fn
341          * @return {Boolean} True if a listener was actually removed
342          */
343         </span><span class="jsdoc-var">removeListener </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">element</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">eventName</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">){
344             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">stopListening</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">element</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">eventName</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">);
345         },
346
347         </span><span class="jsdoc-comment">/**
348          * Fires when the document is ready (before onload and before images are loaded). Can be 
349          * accessed shorthanded Roo.onReady().
350          * @param {Function} fn        The method the event invokes
351          * @param {Object}   scope    An  object that becomes the scope of the handler
352          * @param {boolean}  options
353          */
354         </span><span class="jsdoc-var">onDocumentReady </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">){
355             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">docReadyState</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// if it already fired
356                 </span><span class="jsdoc-var">docReadyEvent.addListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">);
357                 </span><span class="jsdoc-var">docReadyEvent.fire</span><span class="jsdoc-syntax">();
358                 </span><span class="jsdoc-var">docReadyEvent.clearListeners</span><span class="jsdoc-syntax">();
359                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
360             }
361             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">docReadyEvent</span><span class="jsdoc-syntax">){
362                 </span><span class="jsdoc-var">initDocReady</span><span class="jsdoc-syntax">();
363             }
364             </span><span class="jsdoc-var">docReadyEvent.addListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">);
365         },
366
367         </span><span class="jsdoc-comment">/**
368          * Fires when the window is resized and provides resize event buffering (50 milliseconds), passes new viewport width and height to handlers.
369          * @param {Function} fn        The method the event invokes
370          * @param {Object}   scope    An object that becomes the scope of the handler
371          * @param {boolean}  options
372          */
373         </span><span class="jsdoc-var">onWindowResize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">)
374         {
375             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">resizeEvent</span><span class="jsdoc-syntax">){
376                 </span><span class="jsdoc-var">resizeEvent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.util.Event</span><span class="jsdoc-syntax">();
377                 </span><span class="jsdoc-var">resizeTask </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.util.DelayedTask</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
378                     </span><span class="jsdoc-var">resizeEvent.fire</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">D.getViewWidth</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-var">D.getViewHeight</span><span class="jsdoc-syntax">());
379                 });
380                 </span><span class="jsdoc-var">E.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;resize&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
381                 {
382                     </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIE</span><span class="jsdoc-syntax">) {
383                         </span><span class="jsdoc-var">resizeTask.delay</span><span class="jsdoc-syntax">(50);
384                     } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
385                         </span><span class="jsdoc-var">resizeEvent.fire</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">D.getViewWidth</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-var">D.getViewHeight</span><span class="jsdoc-syntax">());
386                     }
387                 });
388             }
389             </span><span class="jsdoc-var">resizeEvent.addListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">);
390         },
391
392         </span><span class="jsdoc-comment">/**
393          * Fires when the user changes the active text size. Handler gets called with 2 params, the old size and the new size.
394          * @param {Function} fn        The method the event invokes
395          * @param {Object}   scope    An object that becomes the scope of the handler
396          * @param {boolean}  options
397          */
398         </span><span class="jsdoc-var">onTextResize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">){
399             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">textEvent</span><span class="jsdoc-syntax">){
400                 </span><span class="jsdoc-var">textEvent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.util.Event</span><span class="jsdoc-syntax">();
401                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">textEl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.Element</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">document.createElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'div'</span><span class="jsdoc-syntax">));
402                 </span><span class="jsdoc-var">textEl.dom.className </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'x-text-resize'</span><span class="jsdoc-syntax">;
403                 </span><span class="jsdoc-var">textEl.dom.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'X'</span><span class="jsdoc-syntax">;
404                 </span><span class="jsdoc-var">textEl.appendTo</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">document.body</span><span class="jsdoc-syntax">);
405                 </span><span class="jsdoc-var">textSize </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">textEl.dom.offsetHeight</span><span class="jsdoc-syntax">;
406                 </span><span class="jsdoc-var">setInterval</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
407                     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">textEl.dom.offsetHeight </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-var">textSize</span><span class="jsdoc-syntax">){
408                         </span><span class="jsdoc-var">textEvent.fire</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">textSize</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">textSize </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">textEl.dom.offsetHeight</span><span class="jsdoc-syntax">);
409                     }
410                 }, </span><span class="jsdoc-var">this.textResizeInterval</span><span class="jsdoc-syntax">);
411             }
412             </span><span class="jsdoc-var">textEvent.addListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">);
413         },
414
415         </span><span class="jsdoc-comment">/**
416          * Removes the passed window resize listener.
417          * @param {Function} fn        The method the event invokes
418          * @param {Object}   scope    The scope of handler
419          */
420         </span><span class="jsdoc-var">removeResizeListener </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">){
421             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">resizeEvent</span><span class="jsdoc-syntax">){
422                 </span><span class="jsdoc-var">resizeEvent.removeListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">);
423             }
424         },
425
426         </span><span class="jsdoc-comment">// private
427         </span><span class="jsdoc-var">fireResize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
428             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">resizeEvent</span><span class="jsdoc-syntax">){
429                 </span><span class="jsdoc-var">resizeEvent.fire</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">D.getViewWidth</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-var">D.getViewHeight</span><span class="jsdoc-syntax">());
430             }
431         },
432         </span><span class="jsdoc-comment">/**
433          * Url used for onDocumentReady with using SSL (defaults to Roo.SSL_SECURE_URL)
434          */
435         </span><span class="jsdoc-var">ieDeferSrc </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
436         </span><span class="jsdoc-comment">/**
437          * The frequency, in milliseconds, to check for text resize events (defaults to 50)
438          */
439         </span><span class="jsdoc-var">textResizeInterval </span><span class="jsdoc-syntax">: 50
440     };
441
442     </span><span class="jsdoc-comment">/**
443      * Fix for doc tools
444      * @scopeAlias pub=Roo.EventManager
445      */
446
447      /**
448      * Appends an event handler to an element (shorthand for addListener)
449      * @param {String/HTMLElement}   element        The html element or id to assign the
450      * @param {String}   eventName The type of event to listen for
451      * @param {Function} handler The method the event invokes
452      * @param {Object}   scope (optional) The scope in which to execute the handler
453      * function. The handler function's &quot;this&quot; context.
454      * @param {Object}   options (optional) An object containing handler configuration
455      * properties. This may contain any of the following properties:&lt;ul&gt;
456      * &lt;li&gt;scope {Object} The scope in which to execute the handler function. The handler function's &quot;this&quot; context.&lt;/li&gt;
457      * &lt;li&gt;delegate {String} A simple selector to filter the target or look for a descendant of the target&lt;/li&gt;
458      * &lt;li&gt;stopEvent {Boolean} True to stop the event. That is stop propagation, and prevent the default action.&lt;/li&gt;
459      * &lt;li&gt;preventDefault {Boolean} True to prevent the default action&lt;/li&gt;
460      * &lt;li&gt;stopPropagation {Boolean} True to prevent event propagation&lt;/li&gt;
461      * &lt;li&gt;normalized {Boolean} False to pass a browser event to the handler function instead of an Roo.EventObject&lt;/li&gt;
462      * &lt;li&gt;delay {Number} The number of milliseconds to delay the invocation of the handler after te event fires.&lt;/li&gt;
463      * &lt;li&gt;single {Boolean} True to add a handler to handle just the next firing of the event, and then remove itself.&lt;/li&gt;
464      * &lt;li&gt;buffer {Number} Causes the handler to be scheduled to run in an {@link Roo.util.DelayedTask} delayed
465      * by the specified number of milliseconds. If the event fires again within that time, the original
466      * handler is &lt;em&gt;not&lt;/em&gt; invoked, but the new handler is scheduled in its place.&lt;/li&gt;
467      * &lt;/ul&gt;&lt;br&gt;
468      * &lt;p&gt;
469      * &lt;b&gt;Combining Options&lt;/b&gt;&lt;br&gt;
470      * Using the options argument, it is possible to combine different types of listeners:&lt;br&gt;
471      * &lt;br&gt;
472      * A normalized, delayed, one-time listener that auto stops the event and passes a custom argument (forumId)&lt;div style=&quot;margin: 5px 20px 20px;&quot;&gt;
473      * Code:&lt;pre&gt;&lt;code&gt;
474 el.on('click', this.onClick, this, {
475     single: true,
476     delay: 100,
477     stopEvent : true,
478     forumId: 4
479 });&lt;/code&gt;&lt;/pre&gt;
480      * &lt;p&gt;
481      * &lt;b&gt;Attaching multiple handlers in 1 call&lt;/b&gt;&lt;br&gt;
482       * The method also allows for a single argument to be passed which is a config object containing properties
483      * which specify multiple handlers.
484      * &lt;p&gt;
485      * Code:&lt;pre&gt;&lt;code&gt;
486 el.on({
487     'click' : {
488         fn: this.onClick
489         scope: this,
490         delay: 100
491     },
492     'mouseover' : {
493         fn: this.onMouseOver
494         scope: this
495     },
496     'mouseout' : {
497         fn: this.onMouseOut
498         scope: this
499     }
500 });&lt;/code&gt;&lt;/pre&gt;
501      * &lt;p&gt;
502      * Or a shorthand syntax:&lt;br&gt;
503      * Code:&lt;pre&gt;&lt;code&gt;
504 el.on({
505     'click' : this.onClick,
506     'mouseover' : this.onMouseOver,
507     'mouseout' : this.onMouseOut
508     scope: this
509 });&lt;/code&gt;&lt;/pre&gt;
510      */
511     </span><span class="jsdoc-var">pub.on </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">pub.addListener</span><span class="jsdoc-syntax">;
512     </span><span class="jsdoc-var">pub.un </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">pub.removeListener</span><span class="jsdoc-syntax">;
513
514     </span><span class="jsdoc-var">pub.stoppedMouseDownEvent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.util.Event</span><span class="jsdoc-syntax">();
515     </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">pub</span><span class="jsdoc-syntax">;
516 }();
517 </span><span class="jsdoc-comment">/**
518   * Fires when the document is ready (before onload and before images are loaded).  Shorthand of {@link Roo.EventManager#onDocumentReady}.
519   * @param {Function} fn        The method the event invokes
520   * @param {Object}   scope    An  object that becomes the scope of the handler
521   * @param {boolean}  override If true, the obj passed in becomes
522   *                             the execution scope of the listener
523   * @member Roo
524   * @method onReady
525  */
526 </span><span class="jsdoc-var">Roo.onReady </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.EventManager.onDocumentReady</span><span class="jsdoc-syntax">;
527
528 </span><span class="jsdoc-var">Roo.onReady</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
529     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">bd </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">document.body</span><span class="jsdoc-syntax">);
530     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">bd</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">; }
531
532     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">= [
533             </span><span class="jsdoc-var">Roo.isIE </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">&quot;roo-ie&quot;
534             </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.isIE11 </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">&quot;roo-ie11&quot;
535             </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.isEdge </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">&quot;roo-edge&quot;
536             </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.isGecko </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">&quot;roo-gecko&quot;
537             </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.isOpera </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">&quot;roo-opera&quot;
538             </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.isSafari </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">&quot;roo-safari&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;&quot;</span><span class="jsdoc-syntax">];
539
540     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isMac</span><span class="jsdoc-syntax">){
541         </span><span class="jsdoc-var">cls.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;roo-mac&quot;</span><span class="jsdoc-syntax">);
542     }
543     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isLinux</span><span class="jsdoc-syntax">){
544         </span><span class="jsdoc-var">cls.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;roo-linux&quot;</span><span class="jsdoc-syntax">);
545     }
546     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIOS</span><span class="jsdoc-syntax">){
547         </span><span class="jsdoc-var">cls.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;roo-ios&quot;</span><span class="jsdoc-syntax">);
548     }
549     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isTouch</span><span class="jsdoc-syntax">){
550         </span><span class="jsdoc-var">cls.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;roo-touch&quot;</span><span class="jsdoc-syntax">);
551     }
552     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isBorderBox</span><span class="jsdoc-syntax">){
553         </span><span class="jsdoc-var">cls.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'roo-border-box'</span><span class="jsdoc-syntax">);
554     }
555     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isStrict</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// add to the parent to allow for selectors like &quot;.ext-strict .ext-ie&quot;
556         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">bd.dom.parentNode</span><span class="jsdoc-syntax">;
557         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">){
558             </span><span class="jsdoc-var">p.className </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">' roo-strict'</span><span class="jsdoc-syntax">;
559         }
560     }
561     </span><span class="jsdoc-var">bd.addClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cls.join</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">' '</span><span class="jsdoc-syntax">));
562 });
563
564 </span><span class="jsdoc-comment">/**
565  * @class Roo.EventObject
566  * EventObject exposes the Yahoo! UI Event functionality directly on the object
567  * passed to your event handler. It exists mostly for convenience. It also fixes the annoying null checks automatically to cleanup your code 
568  * Example:
569  * &lt;pre&gt;&lt;code&gt;
570  function handleClick(e){ // e is not a standard event object, it is a Roo.EventObject
571     e.preventDefault();
572     var target = e.getTarget();
573     ...
574  }
575  var myDiv = Roo.get(&quot;myDiv&quot;);
576  myDiv.on(&quot;click&quot;, handleClick);
577  //or
578  Roo.EventManager.on(&quot;myDiv&quot;, 'click', handleClick);
579  Roo.EventManager.addListener(&quot;myDiv&quot;, 'click', handleClick);
580  &lt;/code&gt;&lt;/pre&gt;
581  * @static
582  */
583 </span><span class="jsdoc-var">Roo.EventObject </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
584
585     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">E </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.lib.Event</span><span class="jsdoc-syntax">;
586
587     </span><span class="jsdoc-comment">// safari keypress events for special keys return bad keycodes
588     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">safariKeys </span><span class="jsdoc-syntax">= {
589         63234 : 37, </span><span class="jsdoc-comment">// left
590         </span><span class="jsdoc-syntax">63235 : 39, </span><span class="jsdoc-comment">// right
591         </span><span class="jsdoc-syntax">63232 : 38, </span><span class="jsdoc-comment">// up
592         </span><span class="jsdoc-syntax">63233 : 40, </span><span class="jsdoc-comment">// down
593         </span><span class="jsdoc-syntax">63276 : 33, </span><span class="jsdoc-comment">// page up
594         </span><span class="jsdoc-syntax">63277 : 34, </span><span class="jsdoc-comment">// page down
595         </span><span class="jsdoc-syntax">63272 : 46, </span><span class="jsdoc-comment">// delete
596         </span><span class="jsdoc-syntax">63273 : 36, </span><span class="jsdoc-comment">// home
597         </span><span class="jsdoc-syntax">63275 : 35  </span><span class="jsdoc-comment">// end
598     </span><span class="jsdoc-syntax">};
599
600     </span><span class="jsdoc-comment">// normalize button clicks
601     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">btnMap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.isIE </span><span class="jsdoc-syntax">? {1:0,4:1,2:2} :
602                 (</span><span class="jsdoc-var">Roo.isSafari </span><span class="jsdoc-syntax">? {1:0,2:1,3:2} : {0:0,1:1,2:2});
603
604     </span><span class="jsdoc-var">Roo.EventObjectImpl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
605         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
606             </span><span class="jsdoc-var">this.setEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.browserEvent </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
607         }
608     };
609     </span><span class="jsdoc-var">Roo.EventObjectImpl.prototype </span><span class="jsdoc-syntax">= {
610         </span><span class="jsdoc-comment">/**
611          * Used to fix doc tools.
612          * @scope Roo.EventObject.prototype
613          */
614
615
616
617
618         /** The normal browser event */
619         </span><span class="jsdoc-var">browserEvent </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">,
620         </span><span class="jsdoc-comment">/** The button pressed in a mouse event */
621         </span><span class="jsdoc-var">button </span><span class="jsdoc-syntax">: -1,
622         </span><span class="jsdoc-comment">/** True if the shift key was down during the event */
623         </span><span class="jsdoc-var">shiftKey </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
624         </span><span class="jsdoc-comment">/** True if the control key was down during the event */
625         </span><span class="jsdoc-var">ctrlKey </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
626         </span><span class="jsdoc-comment">/** True if the alt key was down during the event */
627         </span><span class="jsdoc-var">altKey </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
628
629         </span><span class="jsdoc-comment">/** Key constant 
630         * @type Number */
631         </span><span class="jsdoc-var">BACKSPACE </span><span class="jsdoc-syntax">: 8,
632         </span><span class="jsdoc-comment">/** Key constant 
633         * @type Number */
634         </span><span class="jsdoc-var">TAB </span><span class="jsdoc-syntax">: 9,
635         </span><span class="jsdoc-comment">/** Key constant 
636         * @type Number */
637         </span><span class="jsdoc-var">RETURN </span><span class="jsdoc-syntax">: 13,
638         </span><span class="jsdoc-comment">/** Key constant 
639         * @type Number */
640         </span><span class="jsdoc-var">ENTER </span><span class="jsdoc-syntax">: 13,
641         </span><span class="jsdoc-comment">/** Key constant 
642         * @type Number */
643         </span><span class="jsdoc-var">SHIFT </span><span class="jsdoc-syntax">: 16,
644         </span><span class="jsdoc-comment">/** Key constant 
645         * @type Number */
646         </span><span class="jsdoc-var">CONTROL </span><span class="jsdoc-syntax">: 17,
647         </span><span class="jsdoc-comment">/** Key constant 
648         * @type Number */
649         </span><span class="jsdoc-var">ESC </span><span class="jsdoc-syntax">: 27,
650         </span><span class="jsdoc-comment">/** Key constant 
651         * @type Number */
652         </span><span class="jsdoc-var">SPACE </span><span class="jsdoc-syntax">: 32,
653         </span><span class="jsdoc-comment">/** Key constant 
654         * @type Number */
655         </span><span class="jsdoc-var">PAGEUP </span><span class="jsdoc-syntax">: 33,
656         </span><span class="jsdoc-comment">/** Key constant 
657         * @type Number */
658         </span><span class="jsdoc-var">PAGEDOWN </span><span class="jsdoc-syntax">: 34,
659         </span><span class="jsdoc-comment">/** Key constant 
660         * @type Number */
661         </span><span class="jsdoc-var">END </span><span class="jsdoc-syntax">: 35,
662         </span><span class="jsdoc-comment">/** Key constant 
663         * @type Number */
664         </span><span class="jsdoc-var">HOME </span><span class="jsdoc-syntax">: 36,
665         </span><span class="jsdoc-comment">/** Key constant 
666         * @type Number */
667         </span><span class="jsdoc-var">LEFT </span><span class="jsdoc-syntax">: 37,
668         </span><span class="jsdoc-comment">/** Key constant 
669         * @type Number */
670         </span><span class="jsdoc-var">UP </span><span class="jsdoc-syntax">: 38,
671         </span><span class="jsdoc-comment">/** Key constant 
672         * @type Number */
673         </span><span class="jsdoc-var">RIGHT </span><span class="jsdoc-syntax">: 39,
674         </span><span class="jsdoc-comment">/** Key constant 
675         * @type Number */
676         </span><span class="jsdoc-var">DOWN </span><span class="jsdoc-syntax">: 40,
677         </span><span class="jsdoc-comment">/** Key constant 
678         * @type Number */
679         </span><span class="jsdoc-var">DELETE </span><span class="jsdoc-syntax">: 46,
680         </span><span class="jsdoc-comment">/** Key constant 
681         * @type Number */
682         </span><span class="jsdoc-var">F5 </span><span class="jsdoc-syntax">: 116,
683
684            </span><span class="jsdoc-comment">/** @private */
685         </span><span class="jsdoc-var">setEvent </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
686             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">this </span><span class="jsdoc-syntax">|| (</span><span class="jsdoc-var">e </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">e.browserEvent</span><span class="jsdoc-syntax">)){ </span><span class="jsdoc-comment">// already wrapped
687                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">;
688             }
689             </span><span class="jsdoc-var">this.browserEvent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">;
690             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
691                 </span><span class="jsdoc-comment">// normalize buttons
692                 </span><span class="jsdoc-var">this.button </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.button </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">btnMap</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">e.button</span><span class="jsdoc-syntax">] : (</span><span class="jsdoc-var">e.which </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">e.which</span><span class="jsdoc-syntax">-1 : -1);
693                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.type </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'click' </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.button </span><span class="jsdoc-syntax">== -1){
694                     </span><span class="jsdoc-var">this.button </span><span class="jsdoc-syntax">= 0;
695                 }
696                 </span><span class="jsdoc-var">this.type </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.type</span><span class="jsdoc-syntax">;
697                 </span><span class="jsdoc-var">this.shiftKey </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.shiftKey</span><span class="jsdoc-syntax">;
698                 </span><span class="jsdoc-comment">// mac metaKey behaves like ctrlKey
699                 </span><span class="jsdoc-var">this.ctrlKey </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.ctrlKey </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">e.metaKey</span><span class="jsdoc-syntax">;
700                 </span><span class="jsdoc-var">this.altKey </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.altKey</span><span class="jsdoc-syntax">;
701                 </span><span class="jsdoc-comment">// in getKey these will be normalized for the mac
702                 </span><span class="jsdoc-var">this.keyCode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.keyCode</span><span class="jsdoc-syntax">;
703                 </span><span class="jsdoc-comment">// keyup warnings on firefox.
704                 </span><span class="jsdoc-var">this.charCode </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">e.type </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'keyup' </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">e.type </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'keydown'</span><span class="jsdoc-syntax">) ? 0 : </span><span class="jsdoc-var">e.charCode</span><span class="jsdoc-syntax">;
705                 </span><span class="jsdoc-comment">// cache the target for the delayed and or buffered events
706                 </span><span class="jsdoc-var">this.target </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">E.getTarget</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
707                 </span><span class="jsdoc-comment">// same for XY
708                 </span><span class="jsdoc-var">this.xy </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">E.getXY</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
709             }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
710                 </span><span class="jsdoc-var">this.button </span><span class="jsdoc-syntax">= -1;
711                 </span><span class="jsdoc-var">this.shiftKey </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
712                 </span><span class="jsdoc-var">this.ctrlKey </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
713                 </span><span class="jsdoc-var">this.altKey </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
714                 </span><span class="jsdoc-var">this.keyCode </span><span class="jsdoc-syntax">= 0;
715                 </span><span class="jsdoc-var">this.charCode </span><span class="jsdoc-syntax">=0;
716                 </span><span class="jsdoc-var">this.target </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
717                 </span><span class="jsdoc-var">this.xy </span><span class="jsdoc-syntax">= [0, 0];
718             }
719             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
720         },
721
722         </span><span class="jsdoc-comment">/**
723          * Stop the event (preventDefault and stopPropagation)
724          */
725         </span><span class="jsdoc-var">stopEvent </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
726             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.browserEvent</span><span class="jsdoc-syntax">){
727                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.browserEvent.type </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'mousedown'</span><span class="jsdoc-syntax">){
728                     </span><span class="jsdoc-var">Roo.EventManager.stoppedMouseDownEvent.fire</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
729                 }
730                 </span><span class="jsdoc-var">E.stopEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.browserEvent</span><span class="jsdoc-syntax">);
731             }
732         },
733
734         </span><span class="jsdoc-comment">/**
735          * Prevents the browsers default handling of the event.
736          */
737         </span><span class="jsdoc-var">preventDefault </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
738             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.browserEvent</span><span class="jsdoc-syntax">){
739                 </span><span class="jsdoc-var">E.preventDefault</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.browserEvent</span><span class="jsdoc-syntax">);
740             }
741         },
742
743         </span><span class="jsdoc-comment">/** @private */
744         </span><span class="jsdoc-var">isNavKeyPress </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
745             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.keyCode</span><span class="jsdoc-syntax">;
746             </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.isSafari </span><span class="jsdoc-syntax">? (</span><span class="jsdoc-var">safariKeys</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">] || </span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">;
747             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">&gt;= 33 &amp;&amp; </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">&lt;= 40) || </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">this.RETURN </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">this.TAB </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">this.ESC</span><span class="jsdoc-syntax">;
748         },
749
750         </span><span class="jsdoc-var">isSpecialKey </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
751             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.keyCode</span><span class="jsdoc-syntax">;
752             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.type </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'keypress' </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.ctrlKey</span><span class="jsdoc-syntax">) || </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">== 9 || </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">== 13  || </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">== 40 || </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">== 27 ||
753             (</span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">== 16) || (</span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">== 17) ||
754             (</span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">&gt;= 18 &amp;&amp; </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">&lt;= 20) ||
755             (</span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">&gt;= 33 &amp;&amp; </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">&lt;= 35) ||
756             (</span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">&gt;= 36 &amp;&amp; </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">&lt;= 39) ||
757             (</span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">&gt;= 44 &amp;&amp; </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">&lt;= 45);
758         },
759         </span><span class="jsdoc-comment">/**
760          * Cancels bubbling of the event.
761          */
762         </span><span class="jsdoc-var">stopPropagation </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
763             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.browserEvent</span><span class="jsdoc-syntax">){
764                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.type </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'mousedown'</span><span class="jsdoc-syntax">){
765                     </span><span class="jsdoc-var">Roo.EventManager.stoppedMouseDownEvent.fire</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
766                 }
767                 </span><span class="jsdoc-var">E.stopPropagation</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.browserEvent</span><span class="jsdoc-syntax">);
768             }
769         },
770
771         </span><span class="jsdoc-comment">/**
772          * Gets the key code for the event.
773          * @return {Number}
774          */
775         </span><span class="jsdoc-var">getCharCode </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
776             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.charCode </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.keyCode</span><span class="jsdoc-syntax">;
777         },
778
779         </span><span class="jsdoc-comment">/**
780          * Returns a normalized keyCode for the event.
781          * @return {Number} The key code
782          */
783         </span><span class="jsdoc-var">getKey </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
784             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.keyCode </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.charCode</span><span class="jsdoc-syntax">;
785             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">Roo.isSafari </span><span class="jsdoc-syntax">? (</span><span class="jsdoc-var">safariKeys</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">] || </span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">;
786         },
787
788         </span><span class="jsdoc-comment">/**
789          * Gets the x coordinate of the event.
790          * @return {Number}
791          */
792         </span><span class="jsdoc-var">getPageX </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
793             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.xy</span><span class="jsdoc-syntax">[0];
794         },
795
796         </span><span class="jsdoc-comment">/**
797          * Gets the y coordinate of the event.
798          * @return {Number}
799          */
800         </span><span class="jsdoc-var">getPageY </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
801             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.xy</span><span class="jsdoc-syntax">[1];
802         },
803
804         </span><span class="jsdoc-comment">/**
805          * Gets the time of the event.
806          * @return {Number}
807          */
808         </span><span class="jsdoc-var">getTime </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
809             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.browserEvent</span><span class="jsdoc-syntax">){
810                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">E.getTime</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.browserEvent</span><span class="jsdoc-syntax">);
811             }
812             </span><span class="jsdoc-keyword">return null</span><span class="jsdoc-syntax">;
813         },
814
815         </span><span class="jsdoc-comment">/**
816          * Gets the page coordinates of the event.
817          * @return {Array} The xy values like [x, y]
818          */
819         </span><span class="jsdoc-var">getXY </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
820             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.xy</span><span class="jsdoc-syntax">;
821         },
822
823         </span><span class="jsdoc-comment">/**
824          * Gets the target for the event.
825          * @param {String} selector (optional) A simple selector to filter the target or look for an ancestor of the target
826          * @param {Number/String/HTMLElement/Element} maxDepth (optional) The max depth to
827                 search as a number or element (defaults to 10 || document.body)
828          * @param {Boolean} returnEl (optional) True to return a Roo.Element object instead of DOM node
829          * @return {HTMLelement}
830          */
831         </span><span class="jsdoc-var">getTarget </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">selector</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">maxDepth</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">returnEl</span><span class="jsdoc-syntax">){
832             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">selector </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">Roo.fly</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.target</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.findParent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">selector</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">maxDepth</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">returnEl</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-var">this.target</span><span class="jsdoc-syntax">;
833         },
834         </span><span class="jsdoc-comment">/**
835          * Gets the related target.
836          * @return {HTMLElement}
837          */
838         </span><span class="jsdoc-var">getRelatedTarget </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
839             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.browserEvent</span><span class="jsdoc-syntax">){
840                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">E.getRelatedTarget</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.browserEvent</span><span class="jsdoc-syntax">);
841             }
842             </span><span class="jsdoc-keyword">return null</span><span class="jsdoc-syntax">;
843         },
844
845         </span><span class="jsdoc-comment">/**
846          * Normalizes mouse wheel delta across browsers
847          * @return {Number} The delta
848          */
849         </span><span class="jsdoc-var">getWheelDelta </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
850             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">e </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.browserEvent</span><span class="jsdoc-syntax">;
851             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">delta </span><span class="jsdoc-syntax">= 0;
852             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.wheelDelta</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">/* IE/Opera. */
853                 </span><span class="jsdoc-var">delta </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.wheelDelta</span><span class="jsdoc-syntax">/120;
854             }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.detail</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">/* Mozilla case. */
855                 </span><span class="jsdoc-var">delta </span><span class="jsdoc-syntax">= -</span><span class="jsdoc-var">e.detail</span><span class="jsdoc-syntax">/3;
856             }
857             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">delta</span><span class="jsdoc-syntax">;
858         },
859
860         </span><span class="jsdoc-comment">/**
861          * Returns true if the control, meta, shift or alt key was pressed during this event.
862          * @return {Boolean}
863          */
864         </span><span class="jsdoc-var">hasModifier </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
865             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">!!((</span><span class="jsdoc-var">this.ctrlKey </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.altKey</span><span class="jsdoc-syntax">) || </span><span class="jsdoc-var">this.shiftKey</span><span class="jsdoc-syntax">);
866         },
867
868         </span><span class="jsdoc-comment">/**
869          * Returns true if the target of this event equals el or is a child of el
870          * @param {String/HTMLElement/Element} el
871          * @param {Boolean} related (optional) true to test if the related target is within el instead of the target
872          * @return {Boolean}
873          */
874         </span><span class="jsdoc-var">within </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">related</span><span class="jsdoc-syntax">){
875             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">related </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">&quot;getRelatedTarget&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;getTarget&quot;</span><span class="jsdoc-syntax">]();
876             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">Roo.fly</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.contains</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">t</span><span class="jsdoc-syntax">);
877         },
878
879         </span><span class="jsdoc-var">getPoint </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
880             </span><span class="jsdoc-keyword">return new </span><span class="jsdoc-var">Roo.lib.Point</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.xy</span><span class="jsdoc-syntax">[0], </span><span class="jsdoc-var">this.xy</span><span class="jsdoc-syntax">[1]);
881         }
882     };
883
884     </span><span class="jsdoc-keyword">return new </span><span class="jsdoc-var">Roo.EventObjectImpl</span><span class="jsdoc-syntax">();
885 }();
886
887     </span></code></body></html>