PageSourceSearch

https://u-szeged.hu/js/aitia/aitia_position.js?ts=1401959690

js u-szeged.hu collected 2026-10-01 08:59:37 UTC 8,653 bytes, 281 lines download raw bytes

1// függőségek
2if ("undefined" == typeof AITIA) {
3	alert("AITIA include missing!");
4} else if ("undefined" == typeof AITIA_BROWSER) {
5	alert("AITIA_BROWSER include missing!");
6} else if ("undefined" == typeof AITIA_STYLE) {
7	alert("AITIA_STYLE include missing!");
8}
9
10// többszörös include
11if ("undefined" != typeof AITIA_POSITION) {
12	 alert("AITIA_POSITION multiple insert!");
13}
14
15AITIA_POSITION = 1;
16
17Aitia.Position = {};
18
19/*
20//ez megadja a bal felso sarok helyet
21function getPos_old(node){
22	var pos={top: 0, left:0};
23	var node=node;
24	while(node != null) {
25		pos.left+=node.offsetLeft;
26		pos.top+=node.offsetTop;
27		node=node.offsetParent;
28	}
29	return pos;
30}
31*/
32
33Aitia.Position.getPositionContent = function(el,scroll) {
34	var pos = this.getPositionPadding(el,scroll);
35	pos.top += Aitia.Style.getStyle(el,"padding-top",true);
36	pos.left += Aitia.Style.getStyle(el,"padding-left",true);
37	return pos;
38} // getPositionContent
39
40Aitia.Position.getPositionPadding = function(el,scroll) {
41	var pos = this.getPositionBorder(el,scroll);
42	pos.top += Aitia.Style.getStyle(el,"border-top-width",true);
43	pos.left += Aitia.Style.getStyle(el,"border-left-width",true);
44	return pos;
45}
46
47//scroll: 
48//0 nem veszi figyelembe
49//1 hozzaadja
50//2 kivonja	NS getEventRelativePos-hoz ez kell
51Aitia.Position.getPositionBorder = function(oriEl,scroll) {
52	var pos = {top: 0, left:0};
53	var el = oriEl;
54	var absolute = false;
55	var i = 0;
56	var borderTopWidthSum = 0;
57	var borderLeftWidthSum = 0;
58
59	if (el) {
60		while(null != el) {
61			++i;
62			if (1 != i) {
63				//nem az eredeti node-nal vagyunk mar
64				borderTopWidthSum += Aitia.Style.getStyle(el,"border-top-width",true);
65				borderLeftWidthSum += Aitia.Style.getStyle(el,"border-left-width",true);
66			}
67			pos.top += el.offsetTop;
68			pos.left += el.offsetLeft;
69		
70			if (Aitia.Browser.nsDom && el != oriEl && "auto" == Aitia.Style.getStyle(el,"overflow")) {
71				pos.left = pos.left + 2 * Aitia.Style.getStyle(el,"border-left-width",true);
72				pos.top = pos.top + 2 * Aitia.Style.getStyle(el,"border-top-width",true);
73			}
74
75			if (1 == scroll) {
76				if (el.scrollLeft) {
77					pos.left += el.scrollLeft;
78				}
79				if (el.scrollTop) {
80					pos.top += el.scrollTop;
81				}
82			} else if (2 == scroll) {
83				if (el.scrollLeft) {
84					pos.left -= el.scrollLeft;
85				}
86				if (el.scrollTop) {
87					pos.top -= el.scrollTop;
88				}
89			}
90
91			//ha div-ben van absolute, akkor a div pozicioja lesz neki az origo, tehat nem kene absolute-nal megallni
92			// most ez disable
93			if (false && Aitia.Style.getStyle(el,"position") == "absolute") {
94				//itt lehetne offset ertekek helyett top es left getStyle is, de akkor meg a margint is hozza kellene adni
95				//szoval ez igy gyorsabb es jobb szerintem
96				absolute = true;
97				el = null;
98			} else {
99				el = el.offsetParent;
100			}
101		}
102		if (Aitia.Browser.ieDom || absolute) {
103			pos.left = pos.left + borderLeftWidthSum;
104			pos.top = pos.top + borderTopWidthSum;
105			//IE a max(parent.padding-top,el.margin-top) tavolsagot renderel fuggolegesen (vizszintesnel osszeadodnak)			
106			//ezzel nem torodunk, ugy vesszuk, hogy megkapta a el.margin-top tavolsagot
107		} else if (Aitia.Browser.nsDom) {
108			//negativ, ha van border, egyszer lejott ezert ketszer hozza kell adni
109			pos.left = pos.left - 2 * document.body.offsetLeft;
110			pos.top = pos.top - 2 * document.body.offsetTop;
111		} else if (Aitia.Browser.operaDom) {				
112			pos.left = pos.left + Aitia.Style.getStyle(document.body,"border-left-width",true);
113			pos.top = pos.top + Aitia.Style.getStyle(document.body,"border-top-width",true);
114			if ("textarea" == oriEl.tagName.toLowerCase() && Aitia.Style.getStyle(oriEl,"position") != "absolute") {
115				pos.left += 3;
116				pos.top += 3;
117				//2 table-ben levo textarea-ra meg mindig nem franko teljesen
118			}
119		}
120	}
121	return pos;
122} // getPositionBorder
123
124Aitia.Position.getPositionMargin = function(el,scroll,relative,scroll) {
125	var pos = this.getPositionBorder(el,scroll);
126	pos.top -= Aitia.Style.getStyle(el,"margin-top",true);
127	pos.left -= Aitia.Style.getStyle(el,"margin-left",true);
128	return pos;
129} // getPositionMargin
130
131
132
133
134
135//content poziciojat adja meg pos
136Aitia.Position.setPositionContent = function(el,pos,relative,scroll) {
137	pos.top -= Aitia.Style.getStyle(el,"padding-top",true);
138	pos.left -= Aitia.Style.getStyle(el,"padding-left",true);
139	return this.setPositionBorder(el,pos,relative,scroll);
140} // setPositionContent
141
142
143//padding poziciojat adja meg pos
144Aitia.Position.setPositionPadding = function(el,pos,relative,scroll) {
145	pos.top -= Aitia.Style.getStyle(el,"border-top-width",true);
146	pos.left -= Aitia.Style.getStyle(el,"border-left-width",true);
147	return this.setPositionBorder(el,pos,relative,scroll);
148} // setPositionPadding
149
150//border poziciojat adja meg pos
151Aitia.Position.setPositionBorder = function(el,pos,relative,scroll) {
152	pos.top -= Aitia.Style.getStyle(el,"margin-top",true);
153	pos.left -= Aitia.Style.getStyle(el,"margin-left",true);
154	return this.setPositionMargin(el,pos,relative,scroll);
155} // setPositionBorder
156
157//box poziciojat adja meg pos
158//ez a box-modelt mozgatja
159//mozgatas
160//ha relative=true, akkor szimplan egyenlove teszi a pozicioval
161//ha relative=false, akkor ugy veszi, hogy document 0,0-hoz szamit a pozicio (csak absolute eseten van ertelme)
162//scroll: 
163//			 0 nem veszi figyelembe
164//			 1 kivonja
165//			 2 hozzaadja
166Aitia.Position.setPositionMargin = function(el,pos,relative,scroll) {
167	relative = (relative == null ) ? false : relative;
168	//nem body-hoz adom meg a pos-t, hanem absolute parent-hez
169	//position:relative eseten is hasznos
170	scroll = (scroll == null) ? 0 : scroll; 
171
172	var left = pos.left;
173	var top = pos.top;
174	var moved = true;
175
176	if (relative == false && Aitia.Style.getStyle(el,"position") == "absolute") {
177		var parent = el.offsetParent;
178		//elso absolute szulo poziciojat le kell vonni, mert absolute szulo bal felso sarka lesz az origo
179		while(parent) {
180			//scroll alapbol hozzaadodik
181		 
182			if (1 == scroll) {
183				if (parent.scrollLeft) {
184					left -= parent.scrollLeft;
185				}
186				if (parent.scrollTop) {
187					top -= parent.scrollTop;
188				}
189			} else if (2 == scroll) {
190				if (parent.scrollLeft) {
191					left += parent.scrollLeft;
192				}
193				if (parent.scrollTop) {
194					top += parent.scrollTop;
195				}
196			}
197
198			if (Aitia.Style.getStyle(parent,"position") == "absolute") {
199				var parentPos = this.getPositionContent(parent); 
200				left -= parentPos.left;
201				top -= parentPos.top;
202				parent = null;
203			} else {
204				parent = parent.offsetParent;
205			}
206		}
207	}
208	el.style.left = left + "px";
209	el.style.top = top + "px";
210	
211	return moved;
212} // setPositionMargin
213
214
215
216//aktualis scroll pozicio
217// parameter nelkul: aktualis ablak
218// parameterrel: adott element
219Aitia.Position.getScrollPosition = function(el) {
220	var pos={top: 0, left: 0};
221 
222	if (null == el) {
223		// ablak
224		if (document.documentElement && (document.documentElement.scrollTop || document.documentElement.scrollLeft)) { 
225			// Explorer 6 Strict and mozilla strict
226			pos.left = document.documentElement.scrollLeft;
227			pos.top = document.documentElement.scrollTop;
228		} else if (self.pageYOffset) {// all except Explorer
229			pos.left = self.pageXOffset;
230			pos.top = self.pageYOffset;
231		} else if (document.body) { // all other Explorers
232			pos.left = document.body.scrollLeft;
233			pos.top = document.body.scrollTop;
234		}
235	} else {
236		// element		
237		pos.left = el.scrollLeft;
238		pos.top = el.scrollTop;
239	}
240	
241	return pos;
242} // getScrollPosition
243
244
245// a böngészőablak renderelési területének magasságát adja vissza
246Aitia.Position.getInnerHeight = function() {
247	var myHeight = 0;
248	if (typeof(window.innerWidth) == 'number') {
249		//Non-IE
250		myHeight = window.innerHeight;
251	}
252	else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
253		//IE 6+ in 'standards compliant mode'
254		myHeight = document.documentElement.clientHeight;
255	}
256	else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
257		//IE 4 compatible
258		myHeight = document.body.clientHeight;
259	}
260	return myHeight;
261}
262
263
264// a böngészőablak renderelési területének szélességét adja vissza
265Aitia.Position.getInnerWidth = function() {
266	var myWidth = 0;
267	if (typeof(window.innerWidth) == 'number') {
268		//Non-IE
269		myWidth = window.innerWidth;
270	}
271	else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
272		//IE 6+ in 'standards compliant mode'
273		myWidth = document.documentElement.clientWidth;
274	}
275	else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
276		//IE 4 compatible
277		myWidth = document.body.clientWidth;
278	}
279	return myWidth;
280} // getScrollPosition
281

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.