annotate rhodecode/public/js/yui/event-mouseenter/event-mouseenter.js @ 547:1e757ac98988

renamed project to rhodecode
author Marcin Kuzminski <marcin@python-works.com>
date Wed, 06 Oct 2010 03:18:16 +0200
parents pylons_app/public/js/yui/event-mouseenter/event-mouseenter.js@564e40829f80
children 289ff43cc190
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1 /*
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2 Copyright (c) 2009, Yahoo! Inc. All rights reserved.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3 Code licensed under the BSD License:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4 http://developer.yahoo.net/yui/license.txt
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5 version: 2.8.0r4
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8 * Augments the Event Utility with support for the mouseenter and mouseleave
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9 * events: A mouseenter event fires the first time the mouse enters an
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
10 * element; a mouseleave event first the first time the mouse leaves an
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
11 * element.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
12 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
13 * @module event-mouseenter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
14 * @title Event Utility mouseenter and mouseout Module
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
15 * @namespace YAHOO.util
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
16 * @requires event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
17 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
18
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
19 (function () {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
20
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
21 var Event = YAHOO.util.Event,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
22 Lang = YAHOO.lang,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
23
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
24 addListener = Event.addListener,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
25 removeListener = Event.removeListener,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
26 getListeners = Event.getListeners,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
27
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
28 delegates = [],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
29
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
30 specialTypes = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
31 mouseenter: "mouseover",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
32 mouseleave: "mouseout"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
33 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
34
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
35 remove = function(el, type, fn) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
36
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
37 var index = Event._getCacheIndex(delegates, el, type, fn),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
38 cacheItem,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
39 returnVal;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
40
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
41 if (index >= 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
42 cacheItem = delegates[index];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
43 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
44
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
45 if (el && cacheItem) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
46
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
47 // removeListener will translate the value of type
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
48 returnVal = removeListener.call(Event, cacheItem[0], type, cacheItem[3]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
49
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
50 if (returnVal) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
51 delete delegates[index][2];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
52 delete delegates[index][3];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
53 delegates.splice(index, 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
54 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
55
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
56 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
57
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
58 return returnVal;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
59
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
60 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
61
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
62
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
63 Lang.augmentObject(Event._specialTypes, specialTypes);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
64
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
65 Lang.augmentObject(Event, {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
66
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
67 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
68 * Creates a delegate function used to call mouseover and mouseleave
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
69 * event listeners specified via the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
70 * <code>YAHOO.util.Event.addListener</code>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
71 * or <code>YAHOO.util.Event.on</code> method.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
72 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
73 * @method _createMouseDelegate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
74 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
75 * @param {Function} fn The method (event listener) to call
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
76 * @param {Object} obj An arbitrary object that will be
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
77 * passed as a parameter to the listener
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
78 * @param {Boolean|object} overrideContext If true, the value of the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
79 * obj parameter becomes the execution context
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
80 * of the listener. If an object, this object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
81 * becomes the execution context.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
82 * @return {Function} Function that will call the event listener
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
83 * specified by either the <code>YAHOO.util.Event.addListener</code>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
84 * or <code>YAHOO.util.Event.on</code> method.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
85 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
86 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
87 * @for Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
88 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
89 _createMouseDelegate: function (fn, obj, overrideContext) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
90
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
91 return function (event, container) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
92
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
93 var el = this,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
94 relatedTarget = Event.getRelatedTarget(event),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
95 context,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
96 args;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
97
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
98 if (el != relatedTarget && !YAHOO.util.Dom.isAncestor(el, relatedTarget)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
99
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
100 context = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
101
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
102 if (overrideContext) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
103 if (overrideContext === true) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
104 context = obj;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
105 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
106 context = overrideContext;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
107 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
108 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
109
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
110 // The default args passed back to a mouseenter or
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
111 // mouseleave listener are: the event, the element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
112 // to which the listener is bound, and any object the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
113 // user passed when subscribing
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
114
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
115 args = [event, el, obj];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
116
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
117 // Add the delegation container as an argument when
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
118 // delegating mouseenter and mouseleave
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
119
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
120 if (container) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
121 args.splice(2, 0, container);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
122 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
123
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
124 return fn.apply(context, args);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
125
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
126 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
127
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
128 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
129
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
130 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
131
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
132 addListener: function (el, type, fn, obj, overrideContext) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
133
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
134 var fnDelegate,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
135 returnVal;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
136
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
137 if (specialTypes[type]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
138
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
139 fnDelegate = Event._createMouseDelegate(fn, obj, overrideContext);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
140
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
141 fnDelegate.mouseDelegate = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
142
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
143 delegates.push([el, type, fn, fnDelegate]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
144
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
145 // addListener will translate the value of type
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
146 returnVal = addListener.call(Event, el, type, fnDelegate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
147
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
148 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
149 else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
150 returnVal = addListener.apply(Event, arguments);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
151 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
152
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
153 return returnVal;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
154
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
155 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
156
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
157 removeListener: function (el, type, fn) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
158
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
159 var returnVal;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
160
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
161 if (specialTypes[type]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
162 returnVal = remove.apply(Event, arguments);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
163 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
164 else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
165 returnVal = removeListener.apply(Event, arguments);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
166 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
167
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
168 return returnVal;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
169
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
170 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
171
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
172 getListeners: function (el, type) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
173
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
174 // If the user specified the type as mouseover or mouseout,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
175 // need to filter out those used by mouseenter and mouseleave.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
176 // If the user specified the type as mouseenter or mouseleave,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
177 // need to filter out the true mouseover and mouseout listeners.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
178
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
179 var listeners = [],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
180 elListeners,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
181 bMouseOverOrOut = (type === "mouseover" || type === "mouseout"),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
182 bMouseDelegate,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
183 i,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
184 l;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
185
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
186 if (type && (bMouseOverOrOut || specialTypes[type])) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
187
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
188 elListeners = getListeners.call(Event, el, this._getType(type));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
189
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
190 if (elListeners) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
191
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
192 for (i=elListeners.length-1; i>-1; i--) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
193
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
194 l = elListeners[i];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
195 bMouseDelegate = l.fn.mouseDelegate;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
196
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
197 if ((specialTypes[type] && bMouseDelegate) || (bMouseOverOrOut && !bMouseDelegate)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
198 listeners.push(l);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
199 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
200
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
201 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
202
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
203 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
204
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
205 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
206 else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
207 listeners = getListeners.apply(Event, arguments);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
208 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
209
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
210 return (listeners && listeners.length) ? listeners : null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
211
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
212 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
213
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
214 }, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
215
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
216 Event.on = Event.addListener;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
217
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
218 }());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
219 YAHOO.register("event-mouseenter", YAHOO.util.Event, {version: "2.8.0r4", build: "2449"});