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">;
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">)
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">"boolean"</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">);
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">"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">;
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">();
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">;
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">;
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">();
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">();
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">();
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">;
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">);
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">);
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">);
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">);
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">|| [];
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">]);
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..
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">"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
189 </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">);
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">"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">);
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">"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
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">);
197 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">;
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">< </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">&& </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">;
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">"mousewheel" </span><span class="jsdoc-syntax">&& </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">"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">);
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">"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
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">);
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)$/;
224 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">pub </span><span class="jsdoc-syntax">= {
227 </span><span class="jsdoc-comment">/**
229 * @scope Roo.EventManager
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
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">);
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 "this" context.
257 * @param {Object} options (optional) An object containing handler configuration
258 * properties. This may contain any of the following properties:<ul>
259 * <li>scope {Object} The scope in which to execute the handler function. The handler function's "this" context.</li>
260 * <li>delegate {String} A simple selector to filter the target or look for a descendant of the target</li>
261 * <li>stopEvent {Boolean} True to stop the event. That is stop propagation, and prevent the default action.</li>
262 * <li>preventDefault {Boolean} True to prevent the default action</li>
263 * <li>stopPropagation {Boolean} True to prevent event propagation</li>
264 * <li>normalized {Boolean} False to pass a browser event to the handler function instead of an Roo.EventObject</li>
265 * <li>delay {Number} The number of milliseconds to delay the invocation of the handler after te event fires.</li>
266 * <li>single {Boolean} True to add a handler to handle just the next firing of the event, and then remove itself.</li>
267 * <li>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 <em>not</em> invoked, but the new handler is scheduled in its place.</li>
270 * </ul><br>
272 * <b>Combining Options</b><br>
273 * Using the options argument, it is possible to combine different types of listeners:<br>
275 * A normalized, delayed, one-time listener that auto stops the event and passes a custom argument (forumId)<div style="margin: 5px 20px 20px;">
276 * Code:<pre><code>
277 el.on('click', this.onClick, this, {
282 });</code></pre>
284 * <b>Attaching multiple handlers in 1 call</b><br>
285 * The method also allows for a single argument to be passed which is a config object containing properties
286 * which specify multiple handlers.
288 * Code:<pre><code>
303 });</code></pre>
305 * Or a shorthand syntax:<br>
306 * Code:<pre><code>
308 'click' : this.onClick,
309 'mouseover' : this.onMouseOver,
310 'mouseout' : this.onMouseOut
312 });</code></pre>
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">"object"</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">;
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">"function"</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">]);
329 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
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">);
334 </span><span class="jsdoc-comment">/**
335 * Removes an event handler
337 * @param {String/HTMLElement} element The id or html element to remove the
339 * @param {String} eventName The type of event
340 * @param {Function} fn
341 * @return {Boolean} True if a listener was actually removed
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">);
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
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">;
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">();
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">);
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
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">)
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">());
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">"resize"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
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">());
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">);
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
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">);
410 }, </span><span class="jsdoc-var">this.textResizeInterval</span><span class="jsdoc-syntax">);
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">);
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
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">);
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">());
432 </span><span class="jsdoc-comment">/**
433 * Url used for onDocumentReady with using SSL (defaults to Roo.SSL_SECURE_URL)
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)
439 </span><span class="jsdoc-var">textResizeInterval </span><span class="jsdoc-syntax">: 50
442 </span><span class="jsdoc-comment">/**
444 * @scopeAlias pub=Roo.EventManager
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 "this" context.
454 * @param {Object} options (optional) An object containing handler configuration
455 * properties. This may contain any of the following properties:<ul>
456 * <li>scope {Object} The scope in which to execute the handler function. The handler function's "this" context.</li>
457 * <li>delegate {String} A simple selector to filter the target or look for a descendant of the target</li>
458 * <li>stopEvent {Boolean} True to stop the event. That is stop propagation, and prevent the default action.</li>
459 * <li>preventDefault {Boolean} True to prevent the default action</li>
460 * <li>stopPropagation {Boolean} True to prevent event propagation</li>
461 * <li>normalized {Boolean} False to pass a browser event to the handler function instead of an Roo.EventObject</li>
462 * <li>delay {Number} The number of milliseconds to delay the invocation of the handler after te event fires.</li>
463 * <li>single {Boolean} True to add a handler to handle just the next firing of the event, and then remove itself.</li>
464 * <li>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 <em>not</em> invoked, but the new handler is scheduled in its place.</li>
467 * </ul><br>
469 * <b>Combining Options</b><br>
470 * Using the options argument, it is possible to combine different types of listeners:<br>
472 * A normalized, delayed, one-time listener that auto stops the event and passes a custom argument (forumId)<div style="margin: 5px 20px 20px;">
473 * Code:<pre><code>
474 el.on('click', this.onClick, this, {
479 });</code></pre>
481 * <b>Attaching multiple handlers in 1 call</b><br>
482 * The method also allows for a single argument to be passed which is a config object containing properties
483 * which specify multiple handlers.
485 * Code:<pre><code>
500 });</code></pre>
502 * Or a shorthand syntax:<br>
503 * Code:<pre><code>
505 'click' : this.onClick,
506 'mouseover' : this.onMouseOver,
507 'mouseout' : this.onMouseOut
509 });</code></pre>
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">;
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">;
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
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">;
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">; }
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">"roo-ie"
534 </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.isIE11 </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">"roo-ie11"
535 </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.isEdge </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">"roo-edge"
536 </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.isGecko </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">"roo-gecko"
537 </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.isOpera </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">"roo-opera"
538 </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">];
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">"roo-mac"</span><span class="jsdoc-syntax">);
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">"roo-linux"</span><span class="jsdoc-syntax">);
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">"roo-ios"</span><span class="jsdoc-syntax">);
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">"roo-touch"</span><span class="jsdoc-syntax">);
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">);
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 ".ext-strict .ext-ie"
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">;
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">));
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
569 * <pre><code>
570 function handleClick(e){ // e is not a standard event object, it is a Roo.EventObject
572 var target = e.getTarget();
575 var myDiv = Roo.get("myDiv");
576 myDiv.on("click", handleClick);
578 Roo.EventManager.on("myDiv", 'click', handleClick);
579 Roo.EventManager.addListener("myDiv", 'click', handleClick);
580 </code></pre>
583 </span><span class="jsdoc-var">Roo.EventObject </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
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">;
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">};
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});
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">);
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
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">,
629 </span><span class="jsdoc-comment">/** Key constant
631 </span><span class="jsdoc-var">BACKSPACE </span><span class="jsdoc-syntax">: 8,
632 </span><span class="jsdoc-comment">/** Key constant
634 </span><span class="jsdoc-var">TAB </span><span class="jsdoc-syntax">: 9,
635 </span><span class="jsdoc-comment">/** Key constant
637 </span><span class="jsdoc-var">RETURN </span><span class="jsdoc-syntax">: 13,
638 </span><span class="jsdoc-comment">/** Key constant
640 </span><span class="jsdoc-var">ENTER </span><span class="jsdoc-syntax">: 13,
641 </span><span class="jsdoc-comment">/** Key constant
643 </span><span class="jsdoc-var">SHIFT </span><span class="jsdoc-syntax">: 16,
644 </span><span class="jsdoc-comment">/** Key constant
646 </span><span class="jsdoc-var">CONTROL </span><span class="jsdoc-syntax">: 17,
647 </span><span class="jsdoc-comment">/** Key constant
649 </span><span class="jsdoc-var">ESC </span><span class="jsdoc-syntax">: 27,
650 </span><span class="jsdoc-comment">/** Key constant
652 </span><span class="jsdoc-var">SPACE </span><span class="jsdoc-syntax">: 32,
653 </span><span class="jsdoc-comment">/** Key constant
655 </span><span class="jsdoc-var">PAGEUP </span><span class="jsdoc-syntax">: 33,
656 </span><span class="jsdoc-comment">/** Key constant
658 </span><span class="jsdoc-var">PAGEDOWN </span><span class="jsdoc-syntax">: 34,
659 </span><span class="jsdoc-comment">/** Key constant
661 </span><span class="jsdoc-var">END </span><span class="jsdoc-syntax">: 35,
662 </span><span class="jsdoc-comment">/** Key constant
664 </span><span class="jsdoc-var">HOME </span><span class="jsdoc-syntax">: 36,
665 </span><span class="jsdoc-comment">/** Key constant
667 </span><span class="jsdoc-var">LEFT </span><span class="jsdoc-syntax">: 37,
668 </span><span class="jsdoc-comment">/** Key constant
670 </span><span class="jsdoc-var">UP </span><span class="jsdoc-syntax">: 38,
671 </span><span class="jsdoc-comment">/** Key constant
673 </span><span class="jsdoc-var">RIGHT </span><span class="jsdoc-syntax">: 39,
674 </span><span class="jsdoc-comment">/** Key constant
676 </span><span class="jsdoc-var">DOWN </span><span class="jsdoc-syntax">: 40,
677 </span><span class="jsdoc-comment">/** Key constant
679 </span><span class="jsdoc-var">DELETE </span><span class="jsdoc-syntax">: 46,
680 </span><span class="jsdoc-comment">/** Key constant
682 </span><span class="jsdoc-var">F5 </span><span class="jsdoc-syntax">: 116,
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">&& </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">;
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">&& </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;
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];
719 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
722 </span><span class="jsdoc-comment">/**
723 * Stop the event (preventDefault and stopPropagation)
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">);
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">);
734 </span><span class="jsdoc-comment">/**
735 * Prevents the browsers default handling of the event.
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">);
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">>= 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">;
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">&& </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">>= 18 && </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax"><= 20) ||
755 (</span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">>= 33 && </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax"><= 35) ||
756 (</span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">>= 36 && </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax"><= 39) ||
757 (</span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">>= 44 && </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax"><= 45);
759 </span><span class="jsdoc-comment">/**
760 * Cancels bubbling of the event.
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">);
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">);
771 </span><span class="jsdoc-comment">/**
772 * Gets the key code for the event.
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">;
779 </span><span class="jsdoc-comment">/**
780 * Returns a normalized keyCode for the event.
781 * @return {Number} The key code
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">;
788 </span><span class="jsdoc-comment">/**
789 * Gets the x coordinate of the event.
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];
796 </span><span class="jsdoc-comment">/**
797 * Gets the y coordinate of the event.
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];
804 </span><span class="jsdoc-comment">/**
805 * Gets the time of the event.
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">);
812 </span><span class="jsdoc-keyword">return null</span><span class="jsdoc-syntax">;
815 </span><span class="jsdoc-comment">/**
816 * Gets the page coordinates of the event.
817 * @return {Array} The xy values like [x, y]
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">;
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}
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">;
834 </span><span class="jsdoc-comment">/**
835 * Gets the related target.
836 * @return {HTMLElement}
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">);
842 </span><span class="jsdoc-keyword">return null</span><span class="jsdoc-syntax">;
845 </span><span class="jsdoc-comment">/**
846 * Normalizes mouse wheel delta across browsers
847 * @return {Number} The delta
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;
857 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">delta</span><span class="jsdoc-syntax">;
860 </span><span class="jsdoc-comment">/**
861 * Returns true if the control, meta, shift or alt key was pressed during this event.
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">);
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
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">"getRelatedTarget" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">"getTarget"</span><span class="jsdoc-syntax">]();
876 </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">);
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]);
884 </span><span class="jsdoc-keyword">return new </span><span class="jsdoc-var">Roo.EventObjectImpl</span><span class="jsdoc-syntax">();
887 </span></code></body></html>