Salome HOME
DCQ : Merge with Ecole_Ete_a6.
[modules/smesh.git] / doc / salome / gui / SMESH / whihost.js
1 var gsDefaultTarget="bsscright";\r
2 var gsBgColor="#ffffff";\r
3 var gsBgImage="";\r
4 var goIdxFont=null;\r
5 var goIdxEmptyFont=null;\r
6 var goIdxHoverFont=null;\r
7 var gsIdxMargin="0pt";\r
8 var gsIdxIndent="8pt";\r
9 var gsIdxActiveBgColor="#cccccc";\r
10 var gsCK = null;\r
11 var gsBCK = null;\r
12 var gbCR = false;\r
13 var gbBCR = false;\r
14 var gbWhIHost=true;\r
15 \r
16 function myEvent()\r
17 {\r
18         this.pageX = 0;\r
19         this.pageY = 0;\r
20 }\r
21 var _event=new myEvent();\r
22 \r
23 function setBackgroundcolor(sBgColor)\r
24 {\r
25         gsBgColor=sBgColor;\r
26 }\r
27 \r
28 function setBackground(sBgImage)\r
29 {\r
30         gsBgImage=sBgImage;\r
31 }\r
32 \r
33 function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
34 {\r
35         var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
36         if(sType=="Normal")\r
37                 goIdxFont=vFont;\r
38         else if(sType=="Empty")\r
39                 goIdxEmptyFont=vFont;\r
40         else if(sType=="Hover")\r
41                 goIdxHoverFont=vFont;\r
42 }\r
43 \r
44 function setActiveBgColor(sBgColor)\r
45 {\r
46         gsIdxActiveBgColor=sBgColor;\r
47 }\r
48 \r
49 function setMargin(sMargin)\r
50 {\r
51         gsIdxMargin=sMargin;\r
52 }\r
53 \r
54 function setIndent(sIndent)\r
55 {\r
56         gsIdxIndent=sIndent;\r
57 }\r
58 \r
59 function writeOneItem(oHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel)\r
60 {\r
61         var sHTML="";\r
62         var nIdxSet=aCurIdxSet[0];\r
63         var nIIdx=aPos[nIdxSet];\r
64         var sKOriName=getItemName(aDataCon,nIdxSet,nIIdx);\r
65         var sKName=_textToHtml(sKOriName);\r
66 \r
67         var nIdxIndent=parseInt(gsIdxIndent);\r
68         var sTopics="";\r
69         if(nLevel==1){\r
70                 if(getItemType(aDataCon,nIdxSet,nIIdx)==1)\r
71                 {\r
72                         sHTML+="<H6><nobr>";\r
73                         sHTML+="<b>"+sKName+"</b></nobr></H6>";\r
74                 }\r
75                 else{\r
76                         for(var i=0;i<nLength;i++)\r
77                                 sTopics+=getIdxTopics(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);\r
78                         sHTML+="<p style=\"margin-left:"+gsIdxIndent+"\"><nobr>";\r
79                         sHTML+="<a alt=\"" + sKName + "\" href=\"javascript:void(0);\" onfocus=\"clearHighLight();\" onclick=\"PopupMenu_Invoke(event,'"+getTargetName(aDataCon,nIdxSet,nIIdx)+"'";\r
80                         if(sTopics.length>0)\r
81                                 sHTML+=sTopics+");return false;\">"+sKName+"</a></nobr></p>";\r
82                         else\r
83                                 sHTML+=");return false;\" style=\""+getFontStyle(goIdxEmptyFont)+"\">"+sKName+"</a></nobr></p>";\r
84                 }\r
85         }\r
86         else if(nLevel>=2){\r
87                 var nIndent=nIdxIndent*nLevel;\r
88                 for(var i=0;i<nLength;i++)\r
89                         sTopics+=getIdxTopics(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);\r
90                 if (nLevel==2)\r
91                         sHTML+="<h6 class=\"firstsub\" style=\"margin-left:"+nIndent+"pt\"><nobr>";\r
92                 else\r
93                         sHTML+="<h6 style=\"margin-left:"+nIndent+"pt\"><nobr>";\r
94                 sHTML+="<a alt=\"" + sKName + "\" href=\"javascript:void(0);\" onfocus=\"clearHighLight();\" onclick=\"PopupMenu_Invoke(event,'"+getTargetName(aDataCon,nIdxSet,nIIdx)+"'";\r
95                 if(sTopics.length>0)\r
96                         sHTML+=sTopics+");return false;\">"+sKName+"</a></nobr></h6>";\r
97                 else\r
98                         sHTML+=");return false;\" style=\""+getFontStyle(goIdxEmptyFont)+"\">"+sKName+"</a></nobr></h6>";\r
99         }\r
100         oHTML.addHTML(sHTML,nLength,bDown,(nLevel==1),sKOriName);\r
101 }\r
102 \r
103 function getTargetName(aDataCon,nIdxSet,nIIdx)\r
104 {\r
105         if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
106                 if(aDataCon[nIdxSet].aKs[nIIdx].sTarget)\r
107                         return aDataCon[nIdxSet].aKs[nIIdx].sTarget;\r
108         return gsDefaultTarget;\r
109 }\r
110 \r
111 function mergeItems(oHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel)\r
112 {\r
113         var oLocalHTML=new indexHTMLPart();\r
114         writeOneItem(oLocalHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel);\r
115         \r
116         var aLocalPos=new Array();\r
117         var aMaxPos=new Array();\r
118         for(var i=0;i<aPos.length;i++)\r
119         {\r
120                 aLocalPos[i]=aPos[i];\r
121                 aMaxPos[i]=-1;\r
122         }\r
123         \r
124         for(i=0;i<nLength;i++)\r
125         {\r
126                 var nNKOff=getNKOff(aDataCon,aCurIdxSet[i],aLocalPos[aCurIdxSet[i]]);\r
127                 aLocalPos[aCurIdxSet[i]]++;\r
128                 if(nNKOff>0)\r
129                         aMaxPos[aCurIdxSet[i]]=aLocalPos[aCurIdxSet[i]]+nNKOff;\r
130         }\r
131         var oSubHTML=new indexHTMLPart();\r
132         writeItems(oSubHTML,aDataCon,aLocalPos,null,aMaxPos,true,nLevel+1);\r
133         oLocalHTML.addSubHTML(oSubHTML,true);\r
134         oHTML.appendHTML(oLocalHTML,bDown);\r
135 }\r
136 \r
137 function adjustPosition(bDown,aDataCon,aCurIdxSet,nLength,aPos)\r
138 {\r
139         if(bDown)\r
140         {\r
141                 for(var i=0;i<nLength;i++)\r
142                 {\r
143                         var nNKOff=getNKOff(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);\r
144                         aPos[aCurIdxSet[i]]+=(1+nNKOff);\r
145                 }\r
146         }\r
147         else{\r
148                 for(var i=0;i<nLength;i++)\r
149                 {\r
150                         var nPKOff=getPKOff(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);\r
151                         aPos[aCurIdxSet[i]]-=(1+nPKOff);\r
152                 }\r
153         }\r
154 }\r
155 \r
156 function getItemName(aDataCon,nIdxSet,nIIdx)\r
157 {\r
158         if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
159                 return aDataCon[nIdxSet].aKs[nIIdx].sName;\r
160         else\r
161                 return null;\r
162 }\r
163 \r
164 function getItemType(aDataCon,nIdxSet,nIIdx)\r
165 {\r
166         if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
167                 return aDataCon[nIdxSet].aKs[nIIdx].nType;\r
168         else\r
169                 return 0;\r
170 }\r
171 \r
172 function getNKOff(aDataCon,nIdxSet,nIIdx)\r
173 {\r
174         if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
175                 return aDataCon[nIdxSet].aKs[nIIdx].nNKOff;\r
176         else\r
177                 return null;\r
178 }\r
179 \r
180 function getPKOff(aDataCon,nIdxSet,nIIdx)\r
181 {\r
182         if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
183                 return aDataCon[nIdxSet].aKs[nIIdx].nPKOff;\r
184         else\r
185                 return null;\r
186 }\r
187 \r
188 function window_OnLoad()\r
189 {\r
190         if(gsBgImage&&gsBgImage.length>0)\r
191         {\r
192                 document.body.background=gsBgImage;\r
193         }\r
194         if(gsBgColor&&gsBgColor.length>0)\r
195         {\r
196                 document.body.bgColor=gsBgColor;\r
197         }\r
198         document.body.insertAdjacentHTML("beforeEnd",writeLoadingDiv());\r
199         loadIdx();\r
200         var oMsg=new whMessage(WH_MSG_SHOWIDX,this,1,null)\r
201         SendMessage(oMsg);\r
202 }\r
203 \r
204 function loadIdx()\r
205 {\r
206         if(!gbReady)\r
207         {\r
208                 var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);\r
209                 if(SendMessage(oResMsg)&&oResMsg.oParam)\r
210                 {\r
211                         gbReady=true;\r
212                         var oProj=oResMsg.oParam;\r
213                         var aProj=oProj.aProj;\r
214                         gbXML=oProj.bXML;\r
215                         if(aProj.length>0)\r
216                         {\r
217                                 var sLangId=aProj[0].sLangId;\r
218                                 for(var i=0;i<aProj.length;i++)\r
219                                 {\r
220                                         if(aProj[i].sIdx!=null&&aProj[i].sIdx!=""&&aProj[i].sLangId==sLangId)\r
221                                         {\r
222                                                 addProjInfo(aProj[i].sPPath,aProj[i].sDPath,aProj[i].sIdx);\r
223                                         }\r
224                                 }\r
225                         }\r
226                         writeDataIFrame();\r
227                         enEvt();\r
228                 }               \r
229         }\r
230 }\r
231 \r
232 function getIdxTopics(aDataCon,nIdxSet,nIIdx)\r
233 {\r
234         var sTopics="";\r
235         if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
236         {\r
237                 if(aDataCon[nIdxSet].aKs[nIIdx].aTopics)\r
238                 {\r
239                         var nLen=aDataCon[nIdxSet].aKs[nIIdx].aTopics.length;\r
240                         var nProj=aDataCon[nIdxSet].nProjId;\r
241                         var sPath=gaData[nProj].sPPath;\r
242                         for(var i=0;i<nLen;i++)\r
243                         {\r
244                                 var sURL=aDataCon[nIdxSet].aKs[nIIdx].aTopics[i].sURL;\r
245                                 var sFullPath=_getFullPath(sPath,sURL);\r
246                                 sTopics+=",'"+excapeSingleQuot(_textToHtml(aDataCon[nIdxSet].aKs[nIIdx].aTopics[i].sName))+"','"+_textToHtml_nonbsp(sFullPath)+"'";\r
247                         }\r
248                 }\r
249         }\r
250         return sTopics;         \r
251 }\r
252 \r
253 function excapeSingleQuot(str)\r
254 {\r
255         if(str==null) return null;\r
256         var sRes=str;\r
257         var re=new RegExp("'","g");\r
258         sRes=sRes.replace(re,"\\'");\r
259         return sRes;\r
260 }\r
261 \r
262 function findCKInDom()\r
263 {\r
264         if(gsCK!=null)\r
265         {\r
266                 var sK=gsCK;\r
267                 var oP=getElementsByTag(document,"P");\r
268                 if(!oP) return false;\r
269                 var len=oP.length;\r
270                 var nB=0;\r
271                 var nE=len-1;\r
272                 var nM=0;\r
273                 var sItem="";\r
274                 var bF=false;\r
275                 while(nB<nE){\r
276                         nM=(nB+nE+1)>>1;\r
277                         sItem=getInnerText(oP[nM]);\r
278                         \r
279                         if(compare(sItem,sK)==0)\r
280                         {\r
281                                 bF=true;\r
282                                 break;\r
283                         }\r
284                         else if(compare(sItem,sK)>0)\r
285                                 nE=nM-1;\r
286                         else if(compare(sItem,sK)<0)\r
287                                 nB=nM;\r
288                 }\r
289                 if(!bF)\r
290                 {\r
291                         if(nB==nE) nM=nB;\r
292                 \r
293                         if(nM+1<len)\r
294                         {\r
295                                 sItem=getInnerText(oP[nM+1]);\r
296                                 if(compare(sItem,sK)<=0) nM++;\r
297                         }                       \r
298                         if(nM+1<len)\r
299                         {\r
300                                 sItem=getInnerText(oP[nM+1]);\r
301                                 if(compare(sItem.substring(0,sK.length),sK)==0) nM++;\r
302                         }                       \r
303                 }\r
304         \r
305                 var oMatch=oP[nM];\r
306                 if(oMatch)\r
307                 {\r
308                         window.scrollTo(0,oMatch.offsetTop);\r
309                         var tempColl=getElementsByTag(oMatch,"A");\r
310                         if(tempColl&&tempColl.length>0){\r
311                                 var nbTag=getElementsByTag(oMatch,"NOBR");\r
312                                 if(nbTag&&nbTag.length>0)\r
313                                         HighLightElement(nbTag[0], gsIdxActiveBgColor, "transparent");\r
314                                 if (gbCR)\r
315                                 {\r
316                                         if (gbIE4)\r
317                                                 tempColl(0).click();\r
318                                         else\r
319                                         {\r
320                                                 var strCommand = tempColl[0].getAttribute("onClick");\r
321                                                 var nstrCommand = strCommand.indexOf(";");\r
322                                                 strCommand = strCommand.substring(0, nstrCommand);\r
323                                                 strCommand = strCommand.replace("event", "_event");\r
324                                                 window._event.pageX = oMatch.offsetLeft ;\r
325                                                 window._event.pageY = oMatch.offsetTop + 20;\r
326                                                 window.setTimeout(strCommand, 100);\r
327                                         }\r
328                                 }\r
329                         }\r
330                 }\r
331                 gsCK=gsBCK;\r
332                 gbCR=gbBCR;\r
333                 if(gsBCK!=null)\r
334                 {\r
335                         gsBCK=null;\r
336                         gbBCR=false;\r
337                         findCK();\r
338                         return false;\r
339                 }\r
340                 \r
341         }\r
342         return true;\r
343 }\r
344 \r
345 function clearHighLight()\r
346 {\r
347         resetHighLight(gsBgColor);\r
348 }\r
349 \r
350 function IndexWriteClassStyle()\r
351 {\r
352         var sStyle="";\r
353         sStyle+="<STYLE TYPE='text/css'>";\r
354         if (gsBgImage)\r
355                 sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";\r
356         else\r
357                 sStyle+="body {border-top:black 1px solid;}\n";\r
358         if(gbIE4&&gbMac&&!gbIE5)\r
359         {\r
360                 var nMargin=parseInt(gsIdxMargin);\r
361                 nMargin-=10;\r
362                 sStyle+="P {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";\r
363                 sStyle+="H6 {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";\r
364                 sStyle+="H6.firstsub {"+getFontStyle(goIdxFont)+"margin-top:"+nMargin+"pt;margin-bottom:"+gsIdxMargin+";}\n";\r
365         }\r
366         else\r
367         {\r
368                 sStyle+="P {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";\r
369                 sStyle+="H6 {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";\r
370         }\r
371         sStyle+="DIV {margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";\r
372         sStyle+="A:link {"+getFontStyle(goIdxFont)+"}\n";\r
373         sStyle+="A:visited {"+getFontStyle(goIdxFont)+"}\n";\r
374         sStyle+="A:active {background-color:"+gsIdxActiveBgColor+";}\n";\r
375         sStyle+="A:hover {"+getFontStyle(goIdxHoverFont)+"}\n";\r
376         sStyle+="</STYLE>";     \r
377         document.write(sStyle);\r
378         return;\r
379 }\r
380 \r
381 function window_Unload()\r
382 {\r
383         UnRegisterListener2(this,WH_MSG_PROJECTREADY);\r
384         UnRegisterListener2(this,WH_MSG_SEARCHINDEXKEY);\r
385 }\r
386 \r
387 function onSendMessage(oMsg)\r
388 {\r
389         if(oMsg)\r
390         {\r
391                 var nMsgId=oMsg.nMessageId;\r
392                 if(nMsgId==WH_MSG_SEARCHINDEXKEY)\r
393                 {\r
394                         if(oMsg.oParam && oMsg.oParam.sInput)\r
395                         {\r
396                                 if(gsCK==null)\r
397                                 {\r
398                                         gsCK=oMsg.oParam.sInput;\r
399                                         gbCR = oMsg.oParam.bCR;\r
400                                         findCK();\r
401                                 }\r
402                                 else\r
403                                 {\r
404                                         gsBCK=oMsg.oParam.sInput;\r
405                                         gbBCR = oMsg.oParam.bCR;\r
406                                 }\r
407                         }\r
408                 }\r
409                 else if(nMsgId==WH_MSG_PROJECTREADY)\r
410                 {\r
411                         loadIdx();\r
412                 }\r
413         }\r
414         return true;\r
415 }\r
416 \r
417 if(window.gbWhVer&&window.gbWhLang&&window.gbWhMsg&&window.gbWhUtil&&window.gbWhHost&&window.gbWhProxy)\r
418 {\r
419         RegisterListener2(this,WH_MSG_PROJECTREADY);\r
420         RegisterListener2(this,WH_MSG_SEARCHINDEXKEY);\r
421         goIdxFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
422         goIdxEmptyFont=new whFont("Verdana","8pt","#666666","normal","normal","none");\r
423         goIdxHoverFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");\r
424 \r
425         window.onload=window_OnLoad;\r
426         window.onbeforeunload=window_BUnload;\r
427         window.onunload=window_Unload;\r
428         gbWhIHost=true;\r
429 }\r
430 else\r
431         document.location.reload();\r
432 \r