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">/*
4 * Copyright(c) 2006-2007, Ext JS, LLC.
6 * Originally Released Under LGPL - original licence link has changed is not relivant.
9 * <script type="text/javascript">
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.
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">;
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">);
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">"DOMContentLoaded"</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">);
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">"ie-deferred-loader"</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">);
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">();
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">"DOMContentLoaded"</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">"<s"</span><span class="jsdoc-syntax">+</span><span class="jsdoc-string">'cript id="ie-deferred-loader" defer="defer" src="/'</span><span class="jsdoc-syntax">+</span><span class="jsdoc-string">'/:"></s'</span><span class="jsdoc-syntax">+</span><span class="jsdoc-string">"cript>"</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">"ie-deferred-loader"</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">"complete"</span><span class="jsdoc-syntax">){
61 </span><span class="jsdoc-var">fireDocReady</span><span class="jsdoc-syntax">();
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">"complete"</span><span class="jsdoc-syntax">) {
68 </span><span class="jsdoc-var">fireDocReady</span><span class="jsdoc-syntax">();
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">"load"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fireDocReady</span><span class="jsdoc-syntax">);
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">]);
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">);
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);
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">;
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">()
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">;
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">);
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">};
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">;
126 </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">){
127 </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">"boolean"</span><span class="jsdoc-syntax">) ? {} : </span><span class="jsdoc-var">opt</span><span class="jsdoc-syntax">;
128 </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">;
129 </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 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">){
133 </span><span class="jsdoc-keyword">throw </span><span class="jsdoc-string">"Error listening for \"" </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">ename </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'\". Element "' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">element </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'" doesn\'t exist.'</span><span class="jsdoc-syntax">;
136 </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">) {
137 </span><span class="jsdoc-var">ename </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">transitionEnd</span><span class="jsdoc-syntax">();
139 </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">){
140 </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">);
141 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">t</span><span class="jsdoc-syntax">;
142 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.delegate</span><span class="jsdoc-syntax">){
143 </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">);
144 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">t</span><span class="jsdoc-syntax">){
145 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
147 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
148 </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.target</span><span class="jsdoc-syntax">;
150 </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">){
151 </span><span class="jsdoc-var">e.stopEvent</span><span class="jsdoc-syntax">();
153 </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">){
154 </span><span class="jsdoc-var">e.preventDefault</span><span class="jsdoc-syntax">();
156 </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">){
157 </span><span class="jsdoc-var">e.stopPropagation</span><span class="jsdoc-syntax">();
160 </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">){
161 </span><span class="jsdoc-var">e </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.browserEvent</span><span class="jsdoc-syntax">;
164 </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">);
166 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.delay</span><span class="jsdoc-syntax">){
167 </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">);
169 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.single</span><span class="jsdoc-syntax">){
170 </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">);
172 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.buffer</span><span class="jsdoc-syntax">){
173 </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 </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 </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">]);
183 </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">);
184 </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">"mousewheel" </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">el.addEventListener</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// workaround for jQuery
185 </span><span class="jsdoc-var">el.addEventListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"DOMMouseScroll"</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">);
186 </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">(){
187 </span><span class="jsdoc-var">el.removeEventListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"DOMMouseScroll"</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-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ename </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">"mousedown" </span><span class="jsdoc-syntax">&& </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
191 </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">);
193 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">;
196 </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">){
197 </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">;
198 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">hds</span><span class="jsdoc-syntax">){
199 </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">< </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
200 </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">];
201 </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">&& </span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">[1] == </span><span class="jsdoc-var">ename</span><span class="jsdoc-syntax">){
202 </span><span class="jsdoc-var">hd </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">[2];
203 </span><span class="jsdoc-var">hds.splice</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">, 1);
204 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
208 </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">);
209 </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">);
210 </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">"mousewheel" </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">el.addEventListener</span><span class="jsdoc-syntax">){
211 </span><span class="jsdoc-var">el.removeEventListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"DOMMouseScroll"</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">);
213 </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">"mousedown" </span><span class="jsdoc-syntax">&& </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
214 </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">);
218 </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)$/;
220 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">pub </span><span class="jsdoc-syntax">= {
223 </span><span class="jsdoc-comment">/**
225 * @scope Roo.EventManager
230 * This is no longer needed and is deprecated. Places a simple wrapper around an event handler to override the browser event
231 * object with a Roo.EventObject
232 * @param {Function} fn The method the event invokes
233 * @param {Object} scope An object that becomes the scope of the handler
234 * @param {boolean} override If true, the obj passed in becomes
235 * the execution scope of the listener
236 * @return {Function} The wrapped function
239 </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">){
240 </span><span class="jsdoc-keyword">return function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
241 </span><span class="jsdoc-var">Roo.EventObject.setEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
242 </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">);
246 </span><span class="jsdoc-comment">/**
247 * Appends an event handler to an element (shorthand for addListener)
248 * @param {String/HTMLElement} element The html element or id to assign the
249 * @param {String} eventName The type of event to listen for
250 * @param {Function} handler The method the event invokes
251 * @param {Object} scope (optional) The scope in which to execute the handler
252 * function. The handler function's "this" context.
253 * @param {Object} options (optional) An object containing handler configuration
254 * properties. This may contain any of the following properties:<ul>
255 * <li>scope {Object} The scope in which to execute the handler function. The handler function's "this" context.</li>
256 * <li>delegate {String} A simple selector to filter the target or look for a descendant of the target</li>
257 * <li>stopEvent {Boolean} True to stop the event. That is stop propagation, and prevent the default action.</li>
258 * <li>preventDefault {Boolean} True to prevent the default action</li>
259 * <li>stopPropagation {Boolean} True to prevent event propagation</li>
260 * <li>normalized {Boolean} False to pass a browser event to the handler function instead of an Roo.EventObject</li>
261 * <li>delay {Number} The number of milliseconds to delay the invocation of the handler after te event fires.</li>
262 * <li>single {Boolean} True to add a handler to handle just the next firing of the event, and then remove itself.</li>
263 * <li>buffer {Number} Causes the handler to be scheduled to run in an {@link Roo.util.DelayedTask} delayed
264 * by the specified number of milliseconds. If the event fires again within that time, the original
265 * handler is <em>not</em> invoked, but the new handler is scheduled in its place.</li>
266 * </ul><br>
268 * <b>Combining Options</b><br>
269 * Using the options argument, it is possible to combine different types of listeners:<br>
271 * A normalized, delayed, one-time listener that auto stops the event and passes a custom argument (forumId)<div style="margin: 5px 20px 20px;">
272 * Code:<pre><code>
273 el.on('click', this.onClick, this, {
278 });</code></pre>
280 * <b>Attaching multiple handlers in 1 call</b><br>
281 * The method also allows for a single argument to be passed which is a config object containing properties
282 * which specify multiple handlers.
284 * Code:<pre><code>
299 });</code></pre>
301 * Or a shorthand syntax:<br>
302 * Code:<pre><code>
304 'click' : this.onClick,
305 'mouseover' : this.onMouseOver,
306 'mouseout' : this.onMouseOut
308 });</code></pre>
310 </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">){
311 </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">"object"</span><span class="jsdoc-syntax">){
312 </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">;
313 </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">){
314 </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">)){
315 </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
317 </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">"function"</span><span class="jsdoc-syntax">){
318 </span><span class="jsdoc-comment">// shared options
319 </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">);
320 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
321 </span><span class="jsdoc-comment">// individual options
322 </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">]);
325 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
327 </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">);
330 </span><span class="jsdoc-comment">/**
331 * Removes an event handler
333 * @param {String/HTMLElement} element The id or html element to remove the
335 * @param {String} eventName The type of event
336 * @param {Function} fn
337 * @return {Boolean} True if a listener was actually removed
339 </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">){
340 </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">);
343 </span><span class="jsdoc-comment">/**
344 * Fires when the document is ready (before onload and before images are loaded). Can be
345 * accessed shorthanded Roo.onReady().
346 * @param {Function} fn The method the event invokes
347 * @param {Object} scope An object that becomes the scope of the handler
348 * @param {boolean} options
350 </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">){
351 </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
352 </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">);
353 </span><span class="jsdoc-var">docReadyEvent.fire</span><span class="jsdoc-syntax">();
354 </span><span class="jsdoc-var">docReadyEvent.clearListeners</span><span class="jsdoc-syntax">();
355 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
357 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">docReadyEvent</span><span class="jsdoc-syntax">){
358 </span><span class="jsdoc-var">initDocReady</span><span class="jsdoc-syntax">();
360 </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">);
363 </span><span class="jsdoc-comment">/**
364 * Fires when the window is resized and provides resize event buffering (50 milliseconds), passes new viewport width and height to handlers.
365 * @param {Function} fn The method the event invokes
366 * @param {Object} scope An object that becomes the scope of the handler
367 * @param {boolean} options
369 </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">){
370 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">resizeEvent</span><span class="jsdoc-syntax">){
371 </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">();
372 </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">(){
373 </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">());
375 </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">"resize"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
376 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIE</span><span class="jsdoc-syntax">){
377 </span><span class="jsdoc-var">resizeTask.delay</span><span class="jsdoc-syntax">(50);
378 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
379 </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">());
383 </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">);
386 </span><span class="jsdoc-comment">/**
387 * Fires when the user changes the active text size. Handler gets called with 2 params, the old size and the new size.
388 * @param {Function} fn The method the event invokes
389 * @param {Object} scope An object that becomes the scope of the handler
390 * @param {boolean} options
392 </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">){
393 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">textEvent</span><span class="jsdoc-syntax">){
394 </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">();
395 </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">));
396 </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">;
397 </span><span class="jsdoc-var">textEl.dom.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'X'</span><span class="jsdoc-syntax">;
398 </span><span class="jsdoc-var">textEl.appendTo</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">document.body</span><span class="jsdoc-syntax">);
399 </span><span class="jsdoc-var">textSize </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">textEl.dom.offsetHeight</span><span class="jsdoc-syntax">;
400 </span><span class="jsdoc-var">setInterval</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
401 </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">){
402 </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">);
404 }, </span><span class="jsdoc-var">this.textResizeInterval</span><span class="jsdoc-syntax">);
406 </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">);
409 </span><span class="jsdoc-comment">/**
410 * Removes the passed window resize listener.
411 * @param {Function} fn The method the event invokes
412 * @param {Object} scope The scope of handler
414 </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">){
415 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">resizeEvent</span><span class="jsdoc-syntax">){
416 </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">);
420 </span><span class="jsdoc-comment">// private
421 </span><span class="jsdoc-var">fireResize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
422 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">resizeEvent</span><span class="jsdoc-syntax">){
423 </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">());
426 </span><span class="jsdoc-comment">/**
427 * Url used for onDocumentReady with using SSL (defaults to Roo.SSL_SECURE_URL)
429 </span><span class="jsdoc-var">ieDeferSrc </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
430 </span><span class="jsdoc-comment">/**
431 * The frequency, in milliseconds, to check for text resize events (defaults to 50)
433 </span><span class="jsdoc-var">textResizeInterval </span><span class="jsdoc-syntax">: 50
436 </span><span class="jsdoc-comment">/**
438 * @scopeAlias pub=Roo.EventManager
442 * Appends an event handler to an element (shorthand for addListener)
443 * @param {String/HTMLElement} element The html element or id to assign the
444 * @param {String} eventName The type of event to listen for
445 * @param {Function} handler The method the event invokes
446 * @param {Object} scope (optional) The scope in which to execute the handler
447 * function. The handler function's "this" context.
448 * @param {Object} options (optional) An object containing handler configuration
449 * properties. This may contain any of the following properties:<ul>
450 * <li>scope {Object} The scope in which to execute the handler function. The handler function's "this" context.</li>
451 * <li>delegate {String} A simple selector to filter the target or look for a descendant of the target</li>
452 * <li>stopEvent {Boolean} True to stop the event. That is stop propagation, and prevent the default action.</li>
453 * <li>preventDefault {Boolean} True to prevent the default action</li>
454 * <li>stopPropagation {Boolean} True to prevent event propagation</li>
455 * <li>normalized {Boolean} False to pass a browser event to the handler function instead of an Roo.EventObject</li>
456 * <li>delay {Number} The number of milliseconds to delay the invocation of the handler after te event fires.</li>
457 * <li>single {Boolean} True to add a handler to handle just the next firing of the event, and then remove itself.</li>
458 * <li>buffer {Number} Causes the handler to be scheduled to run in an {@link Roo.util.DelayedTask} delayed
459 * by the specified number of milliseconds. If the event fires again within that time, the original
460 * handler is <em>not</em> invoked, but the new handler is scheduled in its place.</li>
461 * </ul><br>
463 * <b>Combining Options</b><br>
464 * Using the options argument, it is possible to combine different types of listeners:<br>
466 * A normalized, delayed, one-time listener that auto stops the event and passes a custom argument (forumId)<div style="margin: 5px 20px 20px;">
467 * Code:<pre><code>
468 el.on('click', this.onClick, this, {
473 });</code></pre>
475 * <b>Attaching multiple handlers in 1 call</b><br>
476 * The method also allows for a single argument to be passed which is a config object containing properties
477 * which specify multiple handlers.
479 * Code:<pre><code>
494 });</code></pre>
496 * Or a shorthand syntax:<br>
497 * Code:<pre><code>
499 'click' : this.onClick,
500 'mouseover' : this.onMouseOver,
501 'mouseout' : this.onMouseOut
503 });</code></pre>
505 </span><span class="jsdoc-var">pub.on </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">pub.addListener</span><span class="jsdoc-syntax">;
506 </span><span class="jsdoc-var">pub.un </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">pub.removeListener</span><span class="jsdoc-syntax">;
508 </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">();
509 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">pub</span><span class="jsdoc-syntax">;
511 </span><span class="jsdoc-comment">/**
512 * Fires when the document is ready (before onload and before images are loaded). Shorthand of {@link Roo.EventManager#onDocumentReady}.
513 * @param {Function} fn The method the event invokes
514 * @param {Object} scope An object that becomes the scope of the handler
515 * @param {boolean} override If true, the obj passed in becomes
516 * the execution scope of the listener
520 </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">;
522 </span><span class="jsdoc-var">Roo.onReady</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
523 </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">);
524 </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">; }
526 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">= [
527 </span><span class="jsdoc-var">Roo.isIE </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">"roo-ie"
528 </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.isIE11 </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">"roo-ie11"
529 </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.isEdge </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">"roo-edge"
530 </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.isGecko </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">"roo-gecko"
531 </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.isOpera </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">"roo-opera"
532 </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.isSafari </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">"roo-safari" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">""</span><span class="jsdoc-syntax">];
534 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isMac</span><span class="jsdoc-syntax">){
535 </span><span class="jsdoc-var">cls.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"roo-mac"</span><span class="jsdoc-syntax">);
537 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isLinux</span><span class="jsdoc-syntax">){
538 </span><span class="jsdoc-var">cls.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"roo-linux"</span><span class="jsdoc-syntax">);
540 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIOS</span><span class="jsdoc-syntax">){
541 </span><span class="jsdoc-var">cls.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"roo-ios"</span><span class="jsdoc-syntax">);
543 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isTouch</span><span class="jsdoc-syntax">){
544 </span><span class="jsdoc-var">cls.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"roo-touch"</span><span class="jsdoc-syntax">);
546 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isBorderBox</span><span class="jsdoc-syntax">){
547 </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">);
549 </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 ".ext-strict .ext-ie"
550 </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">;
551 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">){
552 </span><span class="jsdoc-var">p.className </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">' roo-strict'</span><span class="jsdoc-syntax">;
555 </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">));
558 </span><span class="jsdoc-comment">/**
559 * @class Roo.EventObject
560 * EventObject exposes the Yahoo! UI Event functionality directly on the object
561 * passed to your event handler. It exists mostly for convenience. It also fixes the annoying null checks automatically to cleanup your code
563 * <pre><code>
564 function handleClick(e){ // e is not a standard event object, it is a Roo.EventObject
566 var target = e.getTarget();
569 var myDiv = Roo.get("myDiv");
570 myDiv.on("click", handleClick);
572 Roo.EventManager.on("myDiv", 'click', handleClick);
573 Roo.EventManager.addListener("myDiv", 'click', handleClick);
574 </code></pre>
577 </span><span class="jsdoc-var">Roo.EventObject </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
579 </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">;
581 </span><span class="jsdoc-comment">// safari keypress events for special keys return bad keycodes
582 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">safariKeys </span><span class="jsdoc-syntax">= {
583 63234 : 37, </span><span class="jsdoc-comment">// left
584 </span><span class="jsdoc-syntax">63235 : 39, </span><span class="jsdoc-comment">// right
585 </span><span class="jsdoc-syntax">63232 : 38, </span><span class="jsdoc-comment">// up
586 </span><span class="jsdoc-syntax">63233 : 40, </span><span class="jsdoc-comment">// down
587 </span><span class="jsdoc-syntax">63276 : 33, </span><span class="jsdoc-comment">// page up
588 </span><span class="jsdoc-syntax">63277 : 34, </span><span class="jsdoc-comment">// page down
589 </span><span class="jsdoc-syntax">63272 : 46, </span><span class="jsdoc-comment">// delete
590 </span><span class="jsdoc-syntax">63273 : 36, </span><span class="jsdoc-comment">// home
591 </span><span class="jsdoc-syntax">63275 : 35 </span><span class="jsdoc-comment">// end
592 </span><span class="jsdoc-syntax">};
594 </span><span class="jsdoc-comment">// normalize button clicks
595 </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} :
596 (</span><span class="jsdoc-var">Roo.isSafari </span><span class="jsdoc-syntax">? {1:0,2:1,3:2} : {0:0,1:1,2:2});
598 </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">){
599 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
600 </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">);
603 </span><span class="jsdoc-var">Roo.EventObjectImpl.prototype </span><span class="jsdoc-syntax">= {
604 </span><span class="jsdoc-comment">/**
605 * Used to fix doc tools.
606 * @scope Roo.EventObject.prototype
612 /** The normal browser event */
613 </span><span class="jsdoc-var">browserEvent </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">,
614 </span><span class="jsdoc-comment">/** The button pressed in a mouse event */
615 </span><span class="jsdoc-var">button </span><span class="jsdoc-syntax">: -1,
616 </span><span class="jsdoc-comment">/** True if the shift key was down during the event */
617 </span><span class="jsdoc-var">shiftKey </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
618 </span><span class="jsdoc-comment">/** True if the control key was down during the event */
619 </span><span class="jsdoc-var">ctrlKey </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
620 </span><span class="jsdoc-comment">/** True if the alt key was down during the event */
621 </span><span class="jsdoc-var">altKey </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
623 </span><span class="jsdoc-comment">/** Key constant
625 </span><span class="jsdoc-var">BACKSPACE </span><span class="jsdoc-syntax">: 8,
626 </span><span class="jsdoc-comment">/** Key constant
628 </span><span class="jsdoc-var">TAB </span><span class="jsdoc-syntax">: 9,
629 </span><span class="jsdoc-comment">/** Key constant
631 </span><span class="jsdoc-var">RETURN </span><span class="jsdoc-syntax">: 13,
632 </span><span class="jsdoc-comment">/** Key constant
634 </span><span class="jsdoc-var">ENTER </span><span class="jsdoc-syntax">: 13,
635 </span><span class="jsdoc-comment">/** Key constant
637 </span><span class="jsdoc-var">SHIFT </span><span class="jsdoc-syntax">: 16,
638 </span><span class="jsdoc-comment">/** Key constant
640 </span><span class="jsdoc-var">CONTROL </span><span class="jsdoc-syntax">: 17,
641 </span><span class="jsdoc-comment">/** Key constant
643 </span><span class="jsdoc-var">ESC </span><span class="jsdoc-syntax">: 27,
644 </span><span class="jsdoc-comment">/** Key constant
646 </span><span class="jsdoc-var">SPACE </span><span class="jsdoc-syntax">: 32,
647 </span><span class="jsdoc-comment">/** Key constant
649 </span><span class="jsdoc-var">PAGEUP </span><span class="jsdoc-syntax">: 33,
650 </span><span class="jsdoc-comment">/** Key constant
652 </span><span class="jsdoc-var">PAGEDOWN </span><span class="jsdoc-syntax">: 34,
653 </span><span class="jsdoc-comment">/** Key constant
655 </span><span class="jsdoc-var">END </span><span class="jsdoc-syntax">: 35,
656 </span><span class="jsdoc-comment">/** Key constant
658 </span><span class="jsdoc-var">HOME </span><span class="jsdoc-syntax">: 36,
659 </span><span class="jsdoc-comment">/** Key constant
661 </span><span class="jsdoc-var">LEFT </span><span class="jsdoc-syntax">: 37,
662 </span><span class="jsdoc-comment">/** Key constant
664 </span><span class="jsdoc-var">UP </span><span class="jsdoc-syntax">: 38,
665 </span><span class="jsdoc-comment">/** Key constant
667 </span><span class="jsdoc-var">RIGHT </span><span class="jsdoc-syntax">: 39,
668 </span><span class="jsdoc-comment">/** Key constant
670 </span><span class="jsdoc-var">DOWN </span><span class="jsdoc-syntax">: 40,
671 </span><span class="jsdoc-comment">/** Key constant
673 </span><span class="jsdoc-var">DELETE </span><span class="jsdoc-syntax">: 46,
674 </span><span class="jsdoc-comment">/** Key constant
676 </span><span class="jsdoc-var">F5 </span><span class="jsdoc-syntax">: 116,
678 </span><span class="jsdoc-comment">/** @private */
679 </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">){
680 </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">&& </span><span class="jsdoc-var">e.browserEvent</span><span class="jsdoc-syntax">)){ </span><span class="jsdoc-comment">// already wrapped
681 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">;
683 </span><span class="jsdoc-var">this.browserEvent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">;
684 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
685 </span><span class="jsdoc-comment">// normalize buttons
686 </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);
687 </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">&& </span><span class="jsdoc-var">this.button </span><span class="jsdoc-syntax">== -1){
688 </span><span class="jsdoc-var">this.button </span><span class="jsdoc-syntax">= 0;
690 </span><span class="jsdoc-var">this.type </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.type</span><span class="jsdoc-syntax">;
691 </span><span class="jsdoc-var">this.shiftKey </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.shiftKey</span><span class="jsdoc-syntax">;
692 </span><span class="jsdoc-comment">// mac metaKey behaves like ctrlKey
693 </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">;
694 </span><span class="jsdoc-var">this.altKey </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.altKey</span><span class="jsdoc-syntax">;
695 </span><span class="jsdoc-comment">// in getKey these will be normalized for the mac
696 </span><span class="jsdoc-var">this.keyCode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.keyCode</span><span class="jsdoc-syntax">;
697 </span><span class="jsdoc-comment">// keyup warnings on firefox.
698 </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">;
699 </span><span class="jsdoc-comment">// cache the target for the delayed and or buffered events
700 </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">);
701 </span><span class="jsdoc-comment">// same for XY
702 </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">);
703 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
704 </span><span class="jsdoc-var">this.button </span><span class="jsdoc-syntax">= -1;
705 </span><span class="jsdoc-var">this.shiftKey </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
706 </span><span class="jsdoc-var">this.ctrlKey </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
707 </span><span class="jsdoc-var">this.altKey </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
708 </span><span class="jsdoc-var">this.keyCode </span><span class="jsdoc-syntax">= 0;
709 </span><span class="jsdoc-var">this.charCode </span><span class="jsdoc-syntax">=0;
710 </span><span class="jsdoc-var">this.target </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
711 </span><span class="jsdoc-var">this.xy </span><span class="jsdoc-syntax">= [0, 0];
713 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
716 </span><span class="jsdoc-comment">/**
717 * Stop the event (preventDefault and stopPropagation)
719 </span><span class="jsdoc-var">stopEvent </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
720 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.browserEvent</span><span class="jsdoc-syntax">){
721 </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">){
722 </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">);
724 </span><span class="jsdoc-var">E.stopEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.browserEvent</span><span class="jsdoc-syntax">);
728 </span><span class="jsdoc-comment">/**
729 * Prevents the browsers default handling of the event.
731 </span><span class="jsdoc-var">preventDefault </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
732 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.browserEvent</span><span class="jsdoc-syntax">){
733 </span><span class="jsdoc-var">E.preventDefault</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.browserEvent</span><span class="jsdoc-syntax">);
737 </span><span class="jsdoc-comment">/** @private */
738 </span><span class="jsdoc-var">isNavKeyPress </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
739 </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">;
740 </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">;
741 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">>= 33 && </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax"><= 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">;
744 </span><span class="jsdoc-var">isSpecialKey </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-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">&& </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 ||
747 (</span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">== 16) || (</span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">== 17) ||
748 (</span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">>= 18 && </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax"><= 20) ||
749 (</span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">>= 33 && </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax"><= 35) ||
750 (</span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">>= 36 && </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax"><= 39) ||
751 (</span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">>= 44 && </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax"><= 45);
753 </span><span class="jsdoc-comment">/**
754 * Cancels bubbling of the event.
756 </span><span class="jsdoc-var">stopPropagation </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
757 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.browserEvent</span><span class="jsdoc-syntax">){
758 </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">){
759 </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">);
761 </span><span class="jsdoc-var">E.stopPropagation</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.browserEvent</span><span class="jsdoc-syntax">);
765 </span><span class="jsdoc-comment">/**
766 * Gets the key code for the event.
769 </span><span class="jsdoc-var">getCharCode </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
770 </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">;
773 </span><span class="jsdoc-comment">/**
774 * Returns a normalized keyCode for the event.
775 * @return {Number} The key code
777 </span><span class="jsdoc-var">getKey </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
778 </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">;
779 </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">;
782 </span><span class="jsdoc-comment">/**
783 * Gets the x coordinate of the event.
786 </span><span class="jsdoc-var">getPageX </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
787 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.xy</span><span class="jsdoc-syntax">[0];
790 </span><span class="jsdoc-comment">/**
791 * Gets the y coordinate of the event.
794 </span><span class="jsdoc-var">getPageY </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
795 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.xy</span><span class="jsdoc-syntax">[1];
798 </span><span class="jsdoc-comment">/**
799 * Gets the time of the event.
802 </span><span class="jsdoc-var">getTime </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
803 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.browserEvent</span><span class="jsdoc-syntax">){
804 </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">);
806 </span><span class="jsdoc-keyword">return null</span><span class="jsdoc-syntax">;
809 </span><span class="jsdoc-comment">/**
810 * Gets the page coordinates of the event.
811 * @return {Array} The xy values like [x, y]
813 </span><span class="jsdoc-var">getXY </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
814 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.xy</span><span class="jsdoc-syntax">;
817 </span><span class="jsdoc-comment">/**
818 * Gets the target for the event.
819 * @param {String} selector (optional) A simple selector to filter the target or look for an ancestor of the target
820 * @param {Number/String/HTMLElement/Element} maxDepth (optional) The max depth to
821 search as a number or element (defaults to 10 || document.body)
822 * @param {Boolean} returnEl (optional) True to return a Roo.Element object instead of DOM node
823 * @return {HTMLelement}
825 </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">){
826 </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">;
828 </span><span class="jsdoc-comment">/**
829 * Gets the related target.
830 * @return {HTMLElement}
832 </span><span class="jsdoc-var">getRelatedTarget </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
833 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.browserEvent</span><span class="jsdoc-syntax">){
834 </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">);
836 </span><span class="jsdoc-keyword">return null</span><span class="jsdoc-syntax">;
839 </span><span class="jsdoc-comment">/**
840 * Normalizes mouse wheel delta across browsers
841 * @return {Number} The delta
843 </span><span class="jsdoc-var">getWheelDelta </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
844 </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">;
845 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">delta </span><span class="jsdoc-syntax">= 0;
846 </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. */
847 </span><span class="jsdoc-var">delta </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.wheelDelta</span><span class="jsdoc-syntax">/120;
848 }</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. */
849 </span><span class="jsdoc-var">delta </span><span class="jsdoc-syntax">= -</span><span class="jsdoc-var">e.detail</span><span class="jsdoc-syntax">/3;
851 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">delta</span><span class="jsdoc-syntax">;
854 </span><span class="jsdoc-comment">/**
855 * Returns true if the control, meta, shift or alt key was pressed during this event.
858 </span><span class="jsdoc-var">hasModifier </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
859 </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">);
862 </span><span class="jsdoc-comment">/**
863 * Returns true if the target of this event equals el or is a child of el
864 * @param {String/HTMLElement/Element} el
865 * @param {Boolean} related (optional) true to test if the related target is within el instead of the target
868 </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">){
869 </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">"getRelatedTarget" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">"getTarget"</span><span class="jsdoc-syntax">]();
870 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">&& </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">);
873 </span><span class="jsdoc-var">getPoint </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
874 </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]);
878 </span><span class="jsdoc-keyword">return new </span><span class="jsdoc-var">Roo.EventObjectImpl</span><span class="jsdoc-syntax">();
881 </span></code></body></html>