PageSourceSearch

https://u-szeged.hu/js/aitia/aitia_event.js

js u-szeged.hu collected 2026-09-24 08:37:22 UTC 11,233 bytes, 421 lines download raw bytes

1/**
2 * Általános (böngészőfüggetlen) eseménykezelő függvények
3 */
4 
5
6// Függőségek
7if ("undefined" == typeof AITIA) {
8	alert("AITIA include missing!");
9} else if ("undefined" == typeof AITIA_BROWSER) {
10	alert("AITIA_BROWSER include missing!");
11} else if ("undefined" == typeof AITIA_POSITION) {
12	alert("AITIA_POSITION include missing!");
13}
14
15// Többszörös include
16if ("undefined" != typeof AITIA_EVENT) {
17	alert("AITIA_EVENT multiple insert!");
18}
19
20AITIA_EVENT = 1;
21Aitia.Event = {};
22
23/**
24 * Elementhez esemenykezelő csatolása
25 */
26Aitia.Event.addEvent = function(el, evname, func) {
27	if (el.attachEvent) {
28		el.attachEvent("on" + evname, func);
29	}
30	else if (el.addEventListener) {
31		el.addEventListener(evname, func, false);	//bubbling
32	}
33} //addEvent
34
35
36/**
37 * Elemről eseménykezelő törlése
38 */
39Aitia.Event.removeEvent = function(el, evname, func) {
40	if (el.detachEvent) {
41		el.detachEvent("on" + evname, func);
42	}
43	else if (el.removeEventListener) {
44		if (typeof nsDOM != "undefined" && nsDOM && evname.toLowerCase() == 'submit') {
45			el.onsubmit = function () {};
46		}
47		else {
48			el.removeEventListener(evname, func, false); //ha false volt az attach-ban, akkor itt is az kell
49		}
50	}
51} //removeEvent
52
53
54/**
55 * Event propagation stop: ez csak azt intezi el, hogy a dom fában felfelé haladva a
56 * többi node ne kapja meg az esemenyt. Ettől még a böngesző elkapja (pl.: egy linkre
57 * klikkelést). Ehhez return false, vagy returnValue kell vagy event.preventDefault().
58 */
59Aitia.Event.stopPropagation = function(e) {
60	if (!e) {
61		var e = window.event;
62	}
63	if (typeof e!='undefined') {
64		e.cancelBubble = true;
65		if (e.stopPropagation) {
66			e.stopPropagation();
67		}
68	}
69	return e;
70} // stopPropagation
71
72
73/**
74 * Megakadályozza, hogy az esemény alapértelmezett hatása kiváltódjon.
75 */
76Aitia.Event.preventDefault = function(e) {
77	if (!e) {
78		var e = window.event;
79	}
80	e.returnValue = false;
81	if (e.preventDefault) {
82		e.preventDefault();
83	}
84	return e;
85} // preventDefault
86
87
88/**
89 * Adott esemény abszolut koordinátait adja vissza.
90 */
91Aitia.Event.getAbsolutePosition = function(e) {
92	var posx = 0;
93	var posy = 0;
94	if (!e) {
95		var e = window.event;
96	}
97	if (e.pageX || e.pageY)  {
98		posx = e.pageX;
99		posy = e.pageY;
100	} else if (e.clientX || e.clientY) {
101		var scrollPos = Aitia.Position.getScrollPosition();
102		posx = e.clientX + scrollPos.left;
103		posy = e.clientY + scrollPos.top;
104	}
105	return {top: posy, left: posx};
106} // getAbsolutePosition
107
108
109/**
110 * Adott esemény relatív koordinátait adja vissza.
111 *  mode: 0  (def) content lesz a 0,0
112 *  mode: 1  border lesz a 0,0
113 *
114 *  @todo: test IE!
115 */
116Aitia.Event.getRelativePosition = function(e, mode) { 
117	var posx = 0;
118	var posy = 0;
119	if (!e) {
120		e = window.event;
121	}
122	if (null == mode) {
123		mode = 0;
124	}
125
126	var target = this.getTarget(e);
127	if (Aitia.Browser.ieDom) {
128		if (0 == mode) {
129			// content az origo
130			posx = e.offsetX + Aitia.Style.getStyle(target,"border-left-width",true);
131			posy = e.offsetY + Aitia.Style.getStyle(target,"border-top-width",true);
132		} else if (1 == mode) {
133			// border
134			posx = e.offsetX - Aitia.Style.getStyle(target,"padding-left",true);
135			posy = e.offsetY - Aitia.Style.getStyle(target,"padding-top",true);
136		}
137	} else if (Aitia.Browser.operaDom) {
138		// content bal felso a 0,0, margin is kell
139		if (0 == mode) {
140			posx = e.offsetX + Aitia.Style.getStyle(target,"border-left-width",true) + Aitia.Style.getStyle(target,"padding-left",true);
141			posy = e.offsetY + Atiai.Style.getStyle(target,"border-top-width",true) + Aitia.Style.getStyle(target,"padding-top",true);
142		} else if (1 == mode) {
143			posx = e.offsetX;
144			posy = e.offsetY;
145		}
146	} else if (Aitia.Browser.nsDom) {
147		//NS: egyik sem jo, ha editor frameworkben a kep center-re van igazitva
148/*
149		var Element=e.target;
150		var CalculatedTotalOffsetLeft = CalculatedTotalOffsetTop = 0;
151		while (Element.offsetParent) {
152			CalculatedTotalOffsetLeft += Element.offsetLeft;
153			CalculatedTotalOffsetTop += Element.offsetTop;
154			Element = Element.offsetParent;
155		}
156		var posx=e.pageX - CalculatedTotalOffsetLeft;
157		var posy=e.pageY - CalculatedTotalOffsetTop;
158*/
159/*
160		posx=e.layerX-getStyle(target,"margin-left",true);  //border is benne van 0,0-ban
161		posy=e.layerY-getStyle(target,"margin-top",true);
162*/
163/*
164		posx=e.layerX;  //border is benne van 0,0-ban
165		posy=e.layerY;
166*/
167
168		//scroll ertekekert figyelembe kell venni!!!
169		var eventPos = this.getAbsolutePosition(e);
170		var targetPos = Aitia.Position.getPositionBorder(target,2);  //overflow esetben gaz van, container border bekavar, ez frissult getPos-ban scroll is bekevar, ez is frissult
171
172		posx = eventPos.left - targetPos.left;
173		posy = eventPos.top - targetPos.top;
174
175		if (1 == mode) {
176			// border az origo
177			posx -= Aitia.Style.getStyle(target,"border-left-width",true) + Aitia.Style.getStyle(target,"padding-left",true);
178			posy -= Aitia.Style.getStyle(target,"border-top-width",true) + Aitia.Style.getStyle(target,"padding-top",true);
179		}
180	} else if (Atiai.Browser.konquerorDom) {
181		var eventPos = this.getAbsolutePosition(e);
182		var targetPos = Aitia.getPositionBorder(target,2);
183
184		posx = eventPos.left - targetPos.left;
185		posy = eventPos.top - targetPos.top;
186
187		if (1 == mode) {
188			posx -= Aitia.Style.getStyle(target,"border-left-width",true) + Aitia.Style.getStyle(target,"padding-left",true);
189			posy -= Aitia.Style.getStyle(target,"border-top-width",true) + Aitia.Style.getStyle(target,"padding-top",true);
190		}
191	}
192	return {top: posy, left: posx};
193} // getRelativePosition
194
195
196/**
197 * A lenyomott billentyű karakter kódját adja vissza
198 */
199Aitia.Event.getKeyCode = function(e) {
200	if (!e) {
201		var e = window.event;
202	}
203	
204	//(e.keyCode ? e.keyCode : (e.charCode ? e.charCode : e.which));
205	if (e.keyCode) {
206		return e.keyCode;
207	} else if (e.charCode) {
208		return e.charCode;
209	} else if (e.which) {
210		return e.which;
211	}
212	return 0;
213} // getKeyCode
214
215
216/**
217 * Egéresemény esetén az egérgombokat adja vissza
218 */
219Aitia.Event.getButton = function(e) {
220	var button = "";
221	if (!e) {
222		var e = window.event;
223	}
224
225	if (Aitia.Browser.ieDom) {
226		//mousedown eseten: 1,4,2
227		//click eseten: 0
228		if ("click" == e.type) {
229			switch (e.button) {
230				case 0: button = "left";
231					break;
232				case 4: button = "middle";
233					break;
234				case 2: button = "right";
235					break;
236			}
237		} else {
238			switch (e.button) {
239				case 1: button = "left";
240					break;
241				case 4: button = "middle";
242					break;
243				case 2: button = "right";
244					break;
245			}
246		}
247	} else if (Aitia.Browser.nsDom) {
248		switch (e.button) {
249			case 0: button = "left";
250				break;
251			case 1: button = "middle";
252				break;
253			case 2: button = "right";
254				break;
255		}
256	} else if (Aitia.Browser.operaDom) {
257		switch (e.button) {
258			case 0: button = "left";
259				break;
260			case 1: button = "middle";
261				break;
262			case 2: button = "right";
263				break;
264		}
265	} else if (Aitia.Browser.konquerorDom || Aitia.Browser.safariDom) {
266		switch (e.button) {
267			case 1: button = "left";
268				break;
269			case 4: button = "middle";
270				break;
271			case 2: button = "right";
272				break;
273		}
274	}
275	return button;
276} // getbutton
277
278
279/** 
280 * mouseover, mouseout event-ek esetere
281 * target: az az element, amelyiknel az esemeny letrejott (ha onmouseover van, akkor ennek az onmouseover esemenykezeloje hivodna meg legeloszor)   outer -> inner (mouseover) from -> to 
282 * currentTarget: az az element, amire propagal az esemeny, tehat ahogy megy felfele (kontenerek fele) ez mindig az adott kontenert jeloli, a target viszont tartalmazza az eredeti esemeny elemet
283 *
284 * @todo: test focus, blur
285 */
286Aitia.Event.getFromToElements = function(e) {
287	var fromto = {from: null, to: null};
288	if (!e) {
289		var e = window.event;
290	}
291	if (e.fromElement) {
292		fromto.from = e.fromElement;
293	}
294	if (e.toElement) {
295		fromto.to = e.toElement;
296	}
297	if (e.relatedTarget) {
298		if ("mouseover" == e.type) {
299			fromto.from = e.relatedTarget;
300			fromto.to = e.target;
301		} else if ("mouseout" == e.type) {
302			fromto.to = e.relatedTarget;
303			fromto.from = e.target; 
304		}
305	} else {
306	}
307
308	return fromto;
309} // getFromToElements
310
311
312/**
313 * Azt az elemet adja vissza, amin letrejott az eredeti esemeny
314 */
315Aitia.Event.getTarget = function(e) {
316	if (!e) {
317		var e = window.event;
318	}
319	if (e.target) {
320		return e.target;
321	} else if (e.srcElement) {
322		return e.srcElement;
323	}
324	return null;
325} // getTarget
326
327
328/**
329 * Az vizsgálja,hogy az esemény közben le volt e nyomva a SHIFT billentyű
330 */
331Aitia.Event.isShiftKeyPressed = function(e) {
332	if (!e) {
333		var e = window.event;
334	}
335	return e.shiftKey;
336} // isShiftKeyPressed
337
338/**
339 * Az vizsgálja,hogy az esemény közben le volt e nyomva a SHIFT billentyű
340 */
341Aitia.Event.isAltKeyPressed = function(e) {
342	if (!e) {
343		var e = window.event;
344	}
345	return e.altKey;
346} // isAltKeyPressed
347
348/**
349 * Az vizsgálja,hogy az esemény közben le volt e nyomva a SHIFT billentyű
350 */
351Aitia.Event.isCtrlKeyPressed = function(e) {
352	if (!e) {
353		var e = window.event;
354	}
355	return e.ctrlKey;
356} // isCtrlKeyPressed
357
358/**
359 * Elindít egy eseményt. 
360 */
361Aitia.Event.fireEvent = function(fireOnThis, options) {
362
363	// default értékek
364	options = options || {};
365	options.eventType = options.eventType || 'HTMLEvents';
366	options.eventName = options.eventName || 'click';
367	options.bubbles = options.bubbles || true;
368	options.cancelable = options.cancelable || true;
369	options.detail = options.detail || 0;
370	options.screenX = options.screenX || 0;
371	options.screenY = options.screenY || 0;
372	options.clientX = options.clientX || 0;
373	options.clientY = options.clientY || 0;
374	options.ctrlKey = options.ctrlKey || false;
375	options.altKey = options.altKey || false;
376	options.shiftKey = options.shiftKey || false;
377	options.metaKey = options.metaKey || false;
378	options.button = options.button || 0;
379	options.relatedTarget = options.relatedTarget || null;
380	
381	if( document.createEvent ) {
382		var evObj = document.createEvent(options.eventType);
383		if (options.eventType == 'HTMLEvents'){
384			evObj.initEvent(options.eventName, options.bubbles, options.cancelable);
385		} else if (options.eventType == 'MouseEvents') {
386			evObj.initMouseEvent( options.eventName, options.bubbles, options.cancelable, window, 
387			options.detail, options.screenX, options.screenY, options.clientX, options.clientY, 
388			options.ctrlKey, options.altKey, options.shiftKey, options.metaKey, options.button, options.relatedTarget );
389		}
390		fireOnThis.dispatchEvent(evObj);
391	} else if( document.createEventObject ) {
392		var evObj = document.createEventObject();
393		evObj.detail = options.detail;
394		evObj.screenX = options.screenX;
395		evObj.screenY = options.screenY;
396		evObj.clientX = options.clientX;
397		evObj.clientY = options.clientY;
398		evObj.ctrlKey = options.ctrlKey;
399		evObj.altKey = options.altKey;
400		evObj.shiftKey = options.shiftKey;
401		evObj.metaKey = options.metaKey;
402		evObj.button = options.button;
403		evObj.relatedTarget = options.relatedTarget;
404		fireOnThis.fireEvent('on' + options.eventName,evObj);
405	}	
406}
407
408/**
409 * Elindít egy HTML eseményt. 
410 */
411Aitia.Event.fireHTMLEvent = function(fireOnThis, eventName) {
412	if( document.createEvent ) {
413		var evObj = document.createEvent('HTMLEvents');
414		evObj.initEvent( eventName, true, true );
415		fireOnThis.dispatchEvent(evObj);
416	} else if( document.createEventObject ) {
417		fireOnThis.fireEvent('on' + eventName);
418	}
419}
420
421

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.