PageSourceSearch

https://bitte.net.ua/js/boxOver.js

js bitte.net.ua collected 2026-10-08 08:15:29 UTC 10,893 bytes, 368 lines download raw bytes

1/* --- BoxOver ---*/
2
3if (typeof document.attachEvent!='undefined') {
4   window.attachEvent('onload',initboxOver);
5   document.attachEvent('onmousemove',moveMouse);
6   document.attachEvent('onclick',checkMove); }
7else {
8   window.addEventListener('load',initboxOver,false);
9   document.addEventListener('mousemove',moveMouse,false);
10   document.addEventListener('click',checkMove,false);
11}
12
13var oDv=document.createElement("div");
14var dvHdr=document.createElement("div");
15var dvBdy=document.createElement("div");
16var windowlock,boxMove,fixposx,fixposy,lockX,lockY,fixx,fixy,ox,oy,boxLeft,boxRight,boxTop,boxBottom,evt,mouseX,mouseY,boxOpen,totalScrollTop,totalScrollLeft;
17boxOpen=false;
18ox=10;
19oy=10;
20lockX=0;
21lockY=0;
22
23function initboxOver() {
24	oDv.appendChild(dvHdr);
25	//oDv.appendChild(dvBdy);
26	oDv.style.position="absolute";
27	oDv.style.visibility='hidden';
28	document.body.appendChild(oDv);	
29}
30
31function defHdrStyle() {
32	//dvHdr.innerHTML='  '+dvHdr.innerHTML;
33	//dvHdr.style.maxWidth='auto';
34	dvHdr.style.width='150px';
35	dvHdr.style.height='auto';
36	dvHdr.style.fontFamily='Tahoma';
37	dvHdr.style.fontSize='12px';
38	dvHdr.style.border='0px solid #FFFFFF';
39	dvHdr.style.padding='10px';
40	dvHdr.style.color='#FFFFFF';
41	dvHdr.style.background='none';
42	dvHdr.style.filter='alpha(opacity=90)'; // IE
43	dvHdr.style.opacity='0.9'; // FF
44	//dvHdr.style.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'../images/cut.gif\')';
45}
46
47function defBdyStyle() {
48	dvBdy.style.borderBottom='none';
49	dvBdy.style.borderLeft='none';
50	dvBdy.style.borderRight='none';
51	dvBdy.style.width='auto';
52	dvBdy.style.height='1px';	
53	dvBdy.style.padding='0';
54	dvBdy.style.margin='0';	
55	dvBdy.style.color='#999999';
56}
57
58function checkElemBO(txt) {
59if (!txt || typeof(txt) != 'string') return false;
60if ((txt.indexOf('header')>-1)&&(txt.indexOf('body')>-1)&&(txt.indexOf('[')>-1)&&(txt.indexOf('[')>-1)) 
61   return true;
62else
63   return false;
64}
65
66function scanBO(curNode) {
67	  if (checkElemBO(curNode.title)) {
68         curNode.boHDR=getParam('header',curNode.title);
69         curNode.boBDY=getParam('body',curNode.title);
70			curNode.boCSSBDY=getParam('cssbody',curNode.title);			
71			curNode.boCSSHDR=getParam('cssheader',curNode.title);
72			curNode.IEbugfix=(getParam('hideselects',curNode.title)=='on')?true:false;
73			curNode.fixX=parseInt(getParam('fixedrelx',curNode.title));
74			curNode.fixY=parseInt(getParam('fixedrely',curNode.title));
75			curNode.absX=parseInt(getParam('fixedabsx',curNode.title));
76			curNode.absY=parseInt(getParam('fixedabsy',curNode.title));
77			curNode.offY=(getParam('offsety',curNode.title)!='')?parseInt(getParam('offsety',curNode.title)):10;
78			curNode.offX=(getParam('offsetx',curNode.title)!='')?parseInt(getParam('offsetx',curNode.title)):10;
79			curNode.fade=(getParam('fade',curNode.title)=='on')?true:false;
80			curNode.fadespeed=(getParam('fadespeed',curNode.title)!='')?getParam('fadespeed',curNode.title):0.1;
81			curNode.delay=(getParam('delay',curNode.title)!='')?parseInt(getParam('delay',curNode.title)):0;
82			if (getParam('requireclick',curNode.title)=='on') {
83				curNode.requireclick=true;
84				document.all?curNode.attachEvent('onclick',showHideBox):curNode.addEventListener('click',showHideBox,false);
85				document.all?curNode.attachEvent('onmouseover',hideBox):curNode.addEventListener('mouseover',hideBox,false);
86			}
87			else {// Note : if requireclick is on the stop clicks are ignored   			
88   			if (getParam('doubleclickstop',curNode.title)!='off') {
89   				document.all?curNode.attachEvent('ondblclick',pauseBox):curNode.addEventListener('dblclick',pauseBox,false);
90   			}	
91   			if (getParam('singleclickstop',curNode.title)=='on') {
92   				document.all?curNode.attachEvent('onclick',pauseBox):curNode.addEventListener('click',pauseBox,false);
93   			}
94   		}
95			curNode.windowLock=getParam('windowlock',curNode.title).toLowerCase()=='off'?false:true;
96			curNode.title='';
97			curNode.hasbox=1;
98	   }
99	   else
100	      curNode.hasbox=2;   
101}
102
103
104function getParam(param,list) {
105	var reg = new RegExp('([^a-zA-Z]' + param + '|^' + param + ')\\s*=\\s*\\[\\s*(((\\[\\[)|(\\]\\])|([^\\]\\[]))*)\\s*\\]');
106	var res = reg.exec(list);
107	var returnvar;
108	if(res)
109		return res[2].replace('[[','[').replace(']]',']');
110	else
111		return '';
112}
113
114function Left(elem){	
115	var x=0;
116	if (elem.calcLeft)
117		return elem.calcLeft;
118	var oElem=elem;
119	while(elem){
120		 if ((elem.currentStyle)&& (!isNaN(parseInt(elem.currentStyle.borderLeftWidth))
120)&&(x!=0))
121		 	x+=parseInt(elem.currentStyle.borderLeftWidth);
122		 x+=elem.offsetLeft;
123		 elem=elem.offsetParent;
124	  } 
125	oElem.calcLeft=x;
126	return x;
127	}
128
129function Top(elem){
130	 var x=0;
131	 if (elem.calcTop)
132	 	return elem.calcTop;
133	 var oElem=elem;
134	 while(elem){		
135	 	 if ((elem.currentStyle)&& (!isNaN(parseInt(elem.currentStyle.borderTopWidth)))&&(x!=0))
136		 	x+=parseInt(elem.currentStyle.borderTopWidth); 
137		 x+=elem.offsetTop;
138	         elem=elem.offsetParent;
139 	 } 
140 	 oElem.calcTop=x;
141 	 return x;
142 	 
143}
144
145var ah,ab;
146function applyStyles() {
147	if(ab)
148		oDv.removeChild(dvBdy);
149	if (ah)
150		oDv.removeChild(dvHdr);
151	dvHdr=document.createElement("div");
152	dvBdy=document.createElement("div");
153	CBE.boCSSBDY?dvBdy.className=CBE.boCSSBDY:defBdyStyle();
154	CBE.boCSSHDR?dvHdr.className=CBE.boCSSHDR:defHdrStyle();
155	dvHdr.innerHTML=CBE.boHDR;
156	dvBdy.innerHTML=CBE.boBDY;
157	ah=false;
158	ab=false;
159	if (CBE.boHDR!='') {		
160		oDv.appendChild(dvHdr);
161		ah=true;
162	}	
163	if (CBE.boBDY!=''){
164		oDv.appendChild(dvBdy);
165		ab=true;
166	}	
167}
168
169var CSE,iterElem,LSE,CBE,LBE, totalScrollLeft, totalScrollTop, width, height ;
170var ini=false;
171
172// Customised function for inner window dimension
173function SHW() {
174   if (document.body && (document.body.clientWidth !=0)) {
175      width=document.body.clientWidth;
176      height=document.body.clientHeight;
177   }
178   if (document.documentElement && (document.documentElement.clientWidth!=0) && (document.body.clientWidth + 20 >= document.documentElement.clientWidth)) {
179      width=document.documentElement.clientWidth;   
180      height=document.documentElement.clientHeight;   
181   }   
182   return [width,height];
183}
184
185
186var ID=null;
187function moveMouse(e) {
188   //boxMove=true;
189	e?evt=e:evt=event;
190	
191	CSE=evt.target?evt.target:evt.srcElement;
192	
193	if (!CSE.hasbox) {
194	   // Note we need to scan up DOM here, some elements like TR don't get triggered as srcElement
195	   iElem=CSE;
196	   while ((iElem.parentNode) && (!iElem.hasbox)) {
197	      scanBO(iElem);
198	      iElem=iElem.parentNode;
199	   }	   
200	}
201	
202	if ((CSE!=LSE)&&(!isChild(CSE,dvHdr))&&(!isChild(CSE,dvBdy))){		
203	   if (!CSE.boxItem) {
204			iterElem=CSE;
205			while ((iterElem.hasbox==2)&&(iterElem.parentNode))
206					iterElem=iterElem.parentNode; 
207			CSE.boxItem=iterElem;
208			}
209		iterElem=CSE.boxItem;
210		if (CSE.boxItem&&(CSE.boxItem.hasbox==1))  {
211			LBE=CBE;
212			CBE=iterElem;
213			if (CBE!=LBE) {
214				applyStyles();
215				if (!CBE.requireclick)
216					if (CBE.fade) {
217						if (ID!=null)
218							clearTimeout(ID);
219						ID=setTimeout("fadeIn("+CBE.fadespeed+")",CBE.delay);
220					}
221					else {
222						if (ID!=null)
223							clearTimeout(ID);
224						COL=1;
225						ID=setTimeout("oDv.style.visibility='visible';ID=null;",CBE.delay);						
226					}
227				if (CBE.IEbugfix) {hideSelects();} 
228				fixposx=!isNaN(CBE.fixX)?Left(CBE)+CBE.fixX:CBE.absX;
229				fixposy=!isNaN(CBE.fixY)?Top(CBE)+CBE.fixY:CBE.absY;			
230				lockX=0;
231				lockY=0;
232				boxMove=true;
233				ox=CBE.offX?CBE.offX:10;
234				oy=CBE.offY?CBE.offY:10;
235			}
236		}
237		else if (!isChild(CSE,dvHdr) && !isChild(CSE,dvBdy) && (boxMove))	{
238			// The conditional here fixes flickering between tables cells.
239			if ((!isChild(CBE,CSE)) || (CSE.tagName!='TABLE')) {   			
240   			CBE=null;
241   			if (ID!=null)
242  					clearTimeout(ID);
243   			fadeOut();
244   			showSelects();
245			}
246		}
247		LSE=CSE;
248	}
249	else if (((isChild(CSE,dvHdr) || isChild(CSE,dvBdy))&&(boxMove))) {
250		totalScrollLeft=0;
251		totalScrollTop=0;
252		
253		iterElem=CSE;
254		while(iterElem) {
255			if(!isNaN(parseInt(iterElem.scrollTop)))
256				totalScrollTop+=parseInt(iterElem.scrollTop);
257			if(!isNaN(parseInt(iterElem.scrollLeft)))
258				totalScrollLeft+=parseInt(iterElem.scrollLeft);
259			iterElem=iterElem.parentNode;			
260		}
261		if (CBE!=null) {
262			boxLeft=Left(CBE)-totalScrollLeft;
263			boxRight=parseInt(Left(CBE)+CBE.offsetWidth)-totalScrollLeft;
264			boxTop=Top(CBE)-totalScrollTop;
265			boxBottom=parseInt(Top(CBE)+CBE.offsetHeight)-totalScrollTop;
266			doCheck();
267		}
268	}
269	
270	if (boxMove&&CBE) {
271		// This added to alleviate bug in IE6 w.r.t DOCTYPE
272		bodyScrollTop=document.documentElement&&document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop;
273		bodyScrollLet=document.documentElement&&document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft;
274		mouseX=evt.pageX?evt.pageX-bodyScrollLet:evt.clientX-document.body.clientLeft;
275		mouseY=evt.pageY?evt.pageY-bodyScrollTop:evt.clientY-document.body.clientTop;
276		if ((CBE)&&(CBE.windowLock)) {
277			mouseY < -oy?lockY=-mouseY-oy:lockY=0;
278			mouseX < -ox?lockX=-mouseX-ox:lockX=0;
279			mouseY > (SHW()[1]-oDv.offsetHeight-oy)?lockY=-mouseY+SHW()[1]-oDv.offsetHeight-oy:lockY=lockY;
280			mouseX > (SHW()[0]-dvBdy.offsetWidth-ox)?lockX=-mouseX-ox+SHW()[0]-dvBdy.offsetWidth:lockX=lockX;			
281		}
282		oDv.style.left=((fixposx)||(fixposx==0))?fixposx:bodyScrollLet+mouseX+ox+lockX+"px";
283		oDv.style.top=((fixposy)||(fixposy==0))?fixposy:bodyScrollTop+mouseY+oy+lockY+"px";		
284		
285	}
286}
287
288function doCheck() {	
289	if (   (mouseX < boxLeft)    ||     (mouseX >boxRight)     || (mouseY < boxTop) || (mouseY > boxBottom)) {
290		if (!CBE.requireclick)
291			fadeOut();
292		if (CBE.IEbugfix) {showSelects();}
293		CBE=null;
294	}
295}
296
297function pauseBox(e) {
298   e?evt=e:evt=event;
299	boxMove=false;
300	evt.cancelBubble=true;
301}
302
303function showHideBox(e) {
304	oDv.style.visibility=(oDv.style.visibility!='visible')?'visible':'hidden';
305}
306
307function hideBox(e) {
308	oDv.style.visibility='hidden';
309}
310
311var COL=0;
312var stopfade=false;
313function fadeIn(fs) {
314		ID=null;
315		COL=0;
316		oDv.style.visibility='visible';
317		fadeIn2(fs);
318}
319
320function fadeIn2(fs) {
321		COL=COL+fs;
322		COL=(COL>1)?1:COL;
323		oDv.style.filter='alpha(opacity='+parseInt(100*COL)+')';
324		oDv.style.opacity=COL;
325		if (COL<1)
326		 setTimeout("fadeIn2("+fs+")",10);		
327}
328
329
330function fadeOut() {
331	oDv.style.visibility='hidden';
332	
333}
334
335function isChild(s,d) {
336	while(s) {
337		if (s==d) 
338			return true;
339		s=s.parentNode;
340	}
341	return false;
342}
343
344var cSrc;
345function checkMove(e) {
346	e?evt=e:evt=event;
347	cSrc=evt.target?evt.target:evt.srcElement;
348	if ((!boxMove)&&(!isChild(cSrc,oDv))) {
349		fadeOut();
350		if (CBE&&CBE.IEbugfix) {showSelects();}
351		boxMove=true;
352		CBE=null;
353	}
354}
355
356function showSelects(){
357   var elements = document.getElementsByTagName("select");
358   for (i=0;i< elements.length;i++){
359      elements[i].style.visibility='visible';
360   }
361}
362
363function hideSelects(){
364   var elements = document.getElementsByTagName("select");
365   for (i=0;i< elements.length;i++){
366   elements[i].style.visibility='hidden';
367   }
368}

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.