PageSourceSearch

https://medicanapharm.ru/t/images/menuhandler2.js

js medicanapharm.ru collected 2026-10-08 13:56:57 UTC 5,252 bytes, 240 lines download raw bytes

1menuController = {
2	
3	menus: [],
4
5	inWork: false,
6	isIE : (navigator.userAgent.indexOf("MSIE") != -1?true:false),
7			
8	mouseOver: function(obj,e){
9
10		if (this.inWork==false) this.inWork = true;
11		else return true;
12		
13		var menu = this.getMenu(obj);
14
15		if (menu.timer) window.clearTimeout(menu.timer);
16		
17		var target = this.getEventTarget(e);
18						
19		var root = true;				
20										
21		var overElement = this.getElement(target,menu.submenuElementTagName);
22		
23		if (!overElement) overElement = this.getElement(target,menu.menuElementTagName);
24		else root = false;		
25								
26		if (overElement&&target != obj&&target.nodeName!=menu.submenuContainerTagName){
27
28			var container = this.getElement(target,menu.submenuContainerTagName);				
29						
30			var par;
31
32			//if (menu.opened.length >0&&menu.opened[menu.opened.length-1]==container) return true;
33
34			while (menu.opened.length >0 && (root||menu.opened[menu.opened.length-1] != container) && (par=menu.opened.pop())) 				
35				par.style.display='none';													
36																
37			//if ((!menu.triggerElementTagName || target.nodeName == menu.triggerElementTagName) && (!menu.triggerElementClassName || menu.triggerElementClassName == target.className)){
38					
39			var submenu	= this.getFirstChild(overElement,menu.submenuContainerTagName);										
40											    	
41				if (submenu) {									
42				
43					if (menu.positioningPoint == 'overElement'){
44						
45						target = overElement;
46																		
47					}
48				
49					menu.opened.push(submenu);										
50																								
51					var coords = this.getDemensions(target);	
52					
53					//alert(coords.toSource());
54																					
55					submenu.style.zIndex = 1000 + menu.opened.length;														
56
57					if (menu.position == 'left'||menu.opened.length > 1) {
58					        
59						submenu.style.left = (coords.x + coords.w + menu.offsetX) + 'px';
60						submenu.style.top = (coords.y + menu.offsetY) + 'px';
61
62					} else if (menu.position == 'top') {
63 											
64						submenu.style.left = (coords.x + menu.offsetX) + 'px';			
65						submenu.style.top = (coords.y + coords.h + menu.offsetY-35+(this.isIE?10:0)) + 'px';
66
67					}
68					
69					submenu.style.display='block';	
70																				
71				} 		 				
72									
73			//}
74						
75		}		
76
77		this.inWork = false;
78		return true;				
79				
80	},
81
82	closeAll: function(menu){
83
84		var a = null;
85				
86		while(a=menu.opened.pop()) a.style.display="none";			
87
88	},
89
90	mouseOut: function(obj,e){
91		
92		var menu = this.getMenu(obj);
93		
94		if (menu.timer) window.clearTimeout(menu.timer);
95
96		menu.timer = window.setTimeout(function(){menuController.closeAll(menu)},menu.closeDelay);
97
98	},
99
100	getMenu: function(objOrId){
101
102		if (objOrId){
103
104			var obj = null;
105			var id = null;	  			
106
107			if (typeof(objOrId) == 'string') {
108
109			 	id = objOrId;		
110
111			} else {
112
113				obj = objOrId;
114				id = obj.id;
115				
116			}	
117					
118			for (var i=0; i < this.menus.length; i++) {
119
120				if (obj&&this.menus[i].obj==obj||id&&this.menus[i].id==id){
121			        
122					if (obj) this.menus[i].obj = obj;
123					if (id) this.menus[i].id = id;
124					return this.menus[i];
125
126				}
127
128			}
129
130			var a = {};
131						
132			a.opened = [];
133			a.obj = obj;
134			a.id = id;
135			
136			a.menuElementTagName = "TD";
137			a.submenuElementTagName = "LI";
138			a.submenuContainerTagName = "UL";
139									
140			/*
141			a.triggerElementTagName = null;
142			a.triggerElementClassName = null;
143			a.triggerElementExpandedClassName = null;*/
144			
145			a.offsetX = 0;
146			a.offsetY = 0;
147			a.position = "top";
148			a.positioningPoint = "overElement"; // can position over trigger Element = "overTriggerElement";
149			a.closeDelay = 1500;
150
151			this.menus.push(a);
152			return a;	
153			
154	  	}
155
156		return null;
157
158	},
159
160
161	getEventTarget: function(e){
162
163		if (!e) e = window.event;
164		
165       		if (e.target) {
166
167			if (e.target.nodeType == 3) e.target = e.target.parentNode;
168        	 	return e.target;
169        	 
170      		} else if (e.srcElement)
171
172        	return e.srcElement;
173
174	},
175	
176	
177	getDemensions : function(obj) {
178
179		var a = new Object();
180
181		a.h = obj.offsetHeight;
182		a.w = obj.offsetWidth;		
183		a.x=0;
184		a.y=0;
185
186		if (obj.offsetParent) {
187		
188			while (obj.offsetParent) {
189			
190				if (obj.style.left) {
191					/*a.x += parseInt(obj.style.left);									
192					a.y += parseInt(obj.style.top);*/									
193				break;
194				}
195				
196				a.y += obj.offsetTop;
197				a.x += obj.offsetLeft;
198				obj = obj.offsetParent;
199			}
200			
201		} else {
202			
203			if (obj.x) a.x += obj.x;
204			if (obj.y) a.y += obj.y;
205
206		}
207
208		return a;
209
210	},
211	
212	getFirstChild : function(obj,tagname){
213
214		if (obj) obj = obj.firstChild;		
215					
216		if (obj&&obj.nodeName==tagname) return obj;					
217														
218		return this.getNextSibling(obj,tagname);
219
220	},
221
222	getNextSibling : function(obj,tagname){
223										
224		if (obj) obj = obj.nextSibling;
225
226		while (obj&&obj.nodeName!=tagname) obj = obj.nextSibling;
227		
228		return obj;		
229						
230	},
231	
232	getElement : function(obj,tagname){										
233																
234		while (obj&&obj.nodeName!=tagname) obj = obj.parentNode;														
235					 																						
236		return obj;	
237		
238	}
239				
240};

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.