Salome HOME
Fix problem with table of contents resizing
[modules/smesh.git] / doc / salome / gui / SMESH / whphost.js
1 //      WebHelp 5.10.005\r
2 var gaProj=new Array();\r
3 var gnChecked=0;\r
4 var gsProjName="";\r
5 var gbReady=false;\r
6 var goMan=null;\r
7 var gbXML=false;\r
8 var gsFirstPane="";\r
9 var gServerEnabled=false;\r
10 var gsPath="";\r
11 var gbWhPHost=false;\r
12 var goDiv = null;\r
13 var gsHTML = "";\r
14 \r
15 if (navigator.currentNavPen)\r
16         gsFirstPane = navigator.currentNavPen;\r
17 \r
18 \r
19 function delayLoad()\r
20 {\r
21         if (goDiv&&gsHTML)\r
22         {\r
23                 goDiv.innerHTML=gsHTML;\r
24                 goDiv=null;\r
25                 gsHTML="";\r
26         }\r
27 }\r
28 \r
29 function whCom(sName,sComFile)\r
30 {\r
31         this.msName=sName;\r
32         this.msDivId=sName+"Div";\r
33         this.msIFrameId=sName+"IFrame";\r
34         this.msComFile=sComFile;\r
35         this.mbloaded=false;\r
36         this.mbShow=false;\r
37         this.show=function(bShow)\r
38         {\r
39                 if(this.mbShow!=bShow)\r
40                 {\r
41                         if(bShow&&!this.mbloaded)\r
42                         {\r
43                                 this.load();\r
44                         }\r
45 \r
46                         var oDiv=getElement(this.msDivId);\r
47                         if(oDiv)\r
48                         {\r
49                                 if(gbIE55||(gbIE5&&gbMac))\r
50                                 {\r
51                                         var oIframe=getElement(this.msIFrameId);\r
52                                         if(oIframe)\r
53                                         {\r
54                                                 if(bShow)\r
55                                                 {\r
56                                                         oDiv.style.zIndex=3;\r
57                                                         if(oIframe!=null)\r
58                                                         {\r
59                                                                 oIframe.style.zIndex=3;\r
60                                                                 if (!gbIE55)\r
61                                                                         oIframe.style.visibility="visible";\r
62                                                         }\r
63                                                 }\r
64                                                 else\r
65                                                 {\r
66                                                         oDiv.style.zIndex=2;\r
67                                                         if(oIframe!=null)\r
68                                                         {\r
69                                                                 oIframe.style.zIndex=2;\r
70                                                                 if (!gbIE55)\r
71                                                                         oIframe.style.visibility="hidden";\r
72                                                         }\r
73                                                 }\r
74                                         }\r
75                                 }\r
76                                 if (!gbIE55)\r
77                                         oDiv.style.visibility=(bShow==true)?'visible':'hidden';\r
78                                 this.mbShow=bShow;\r
79                         }\r
80 \r
81                 }\r
82         }\r
83         this.load=function()\r
84         {\r
85                 if(!this.mbloaded)\r
86                 {\r
87                         if(this.msComFile.length>0){\r
88                                 var strFile= _getFullPath(getPath(), this.msComFile);\r
89                                 var oDiv=getElement(this.msDivId);\r
90                                 if(oDiv){\r
91                                         if(gbIE4||gbOpera7){\r
92                                                 var nIFrameHeight=oDiv.style.pixelHeight;\r
93                                                 var nIFrameWidth=oDiv.style.pixelWidth;\r
94                                                 var sHTML="<IFRAME ID="+this.msIFrameId+" title=\"" + this.msName + "\" SRC=\""+strFile+"\" BORDER=0 FRAMEBORDER=no STYLE=\"width:";\r
95                                                 if(gbMac){\r
96                                                         sHTML+=nIFrameWidth+"px;height:"+nIFrameHeight+"px;\"></IFRAME>";\r
97                                                 }else{\r
98                                                         sHTML+="100%; height:100%;\"></IFRAME>";\r
99                                                 }\r
100                                                 oDiv.innerHTML=sHTML;\r
101                                         }else if(gbNav6){\r
102                                                 gsHTML="<IFRAME ID="+this.msIFrameId+" title=\"" + this.msName + "\" SRC=\""+strFile+"\" BORDER=0 FRAMEBORDER=no STYLE=\"width:100%;border:0;height:100%;\"></IFRAME>";\r
103                                                 goDiv = oDiv;\r
104                                                 setTimeout("delayLoad()", 100);\r
105                                         }\r
106                                         this.mbloaded=true;\r
107                                 }\r
108                         }\r
109                 }\r
110         }\r
111         this.unload=function()\r
112         {\r
113                 var oDiv=getElement(this.msDivId);\r
114                 if(oDiv)\r
115                         oDiv.innerHTML="";\r
116         }\r
117         this.getDivHTML=function()\r
118         {\r
119                 var sHTML="";\r
120                 if(gbMac&&gbIE4)\r
121                         sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;margin:0;padding:0;border:0;\">";\r
122                 else if(gbIE5)\r
123                         sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;\">";\r
124                 else if(gbIE4||gbWindows)\r
125                         sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;visibility:hidden\">";\r
126                 else\r
127                         sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;visibility:hidden\">";\r
128                 sHTML+="</DIV>";\r
129                 return sHTML;\r
130         }\r
131 }  \r
132 \r
133 function whComMan()\r
134 {\r
135         this.sName="";\r
136         this.maCom=new Array();\r
137         this.addCom=function(sName,sComFile)\r
138         {\r
139                 var owhCom=new whCom(sName,sComFile);\r
140                 this.maCom[this.maCom.length]=owhCom;\r
141         }\r
142         this.init=function()\r
143         {\r
144                 var sHTML="";\r
145                 for(var i=0;i<this.maCom.length;i++)\r
146                 {\r
147                         sHTML+=this.maCom[i].getDivHTML();\r
148                 }\r
149                 document.body.insertAdjacentHTML("beforeEnd",sHTML);\r
150 \r
151         }\r
152         this.showById=function(nId)\r
153         {\r
154                 for(var s=0;s<this.maCom.length;s++)\r
155                 {\r
156                         if(s!==nId)\r
157                                 this.maCom[s].show(false);\r
158                 }\r
159                 this.maCom[nId].show(true);\r
160         }\r
161         this.show=function(sName)\r
162         {\r
163                 navigator.currentNavPen = sName;\r
164                 var bFound=false;\r
165                 for(var i=0;i<this.maCom.length;i++)\r
166                 {\r
167                         if(sName==this.maCom[i].msName)\r
168                         {\r
169                                 bFound=true;\r
170                                 break;\r
171                         }\r
172                 }\r
173                 if(bFound)\r
174                 {\r
175                         this.showById(i);\r
176                         this.sName=sName;\r
177                 }\r
178         }\r
179         this.unload=function()\r
180         {\r
181                 for(var i=0;i<this.maCom.length;i++)\r
182                 {\r
183                         this.maCom[i].unload();\r
184                 }               \r
185         }\r
186         this.getCurrent=function()\r
187         {\r
188                 return this.sName;\r
189         }\r
190 }\r
191 \r
192 function getPath()\r
193 {\r
194         if(gsPath=="")\r
195         {\r
196                 gsPath=location.href;\r
197                 gsPath=_replaceSlash(gsPath);\r
198                 var nPosFile=gsPath.lastIndexOf("/");\r
199                 gsPath=gsPath.substring(0,nPosFile+1);\r
200         }\r
201         return gsPath;\r
202 }\r
203 \r
204 goMan=new whComMan();\r
205 function addPane(sName,sFileName)\r
206 {\r
207         var oParam=new Object();\r
208         oParam.sName=sName;\r
209         var oMsg=new whMessage(WH_MSG_GETPANE, this, 1, oParam);\r
210         if (SendMessage(oMsg))\r
211         {\r
212                 if (oMsg.oParam.bEnable)\r
213                         goMan.addCom(sName,sFileName);\r
214         }\r
215         else\r
216                 goMan.addCom(sName,sFileName);  \r
217 }\r
218 \r
219 function setShowPane(sName, bForce)\r
220 {\r
221         if ((gsFirstPane == "") || bForce)\r
222         {\r
223                 var oMsg=new whMessage(WH_MSG_GETDEFPANE, this, 1, null);\r
224                 if (SendMessage(oMsg))\r
225                 {\r
226                         if (oMsg.oParam)\r
227                                 gsFirstPane = oMsg.oParam;\r
228                         else\r
229                                 gsFirstPane=sName;\r
230                 }\r
231                 else\r
232                         gsFirstPane=sName;\r
233         }\r
234 }\r
235 \r
236 function window_OnLoad()\r
237 {\r
238         var oMsg=new whMessage(WH_MSG_GETCMD,this,1,null);\r
239         var bHidePane=false;\r
240         if (SendMessage(oMsg))\r
241         {\r
242                 if(oMsg.oParam>0)\r
243                 {\r
244                         if(oMsg.oParam==1)\r
245                                 gsFirstPane="toc";\r
246                         else if(oMsg.oParam==2)\r
247                                 gsFirstPane="idx";\r
248                         else if(oMsg.oParam==3)\r
249                                 gsFirstPane="fts";\r
250                         else if(oMsg.oParam==4)\r
251                                 gsFirstPane="glo";\r
252                 }\r
253                 else if(oMsg.oParam==0)\r
254                 {\r
255                         bHidePane=true;\r
256                 }\r
257         }\r
258         goMan.init();\r
259         if(gsProjName!="")                      \r
260                 loadData2(gsProjName);  \r
261         if (bHidePane)\r
262         {\r
263                 gsFirstPane="";\r
264                 var oMsg1=new whMessage(WH_MSG_HIDEPANE, this, 1, null)\r
265                 SendMessage(oMsg1);\r
266         }\r
267         else\r
268         {\r
269                 if(gsFirstPane!="")\r
270                         goMan.show(gsFirstPane);\r
271                 else\r
272                         goMan.showById(0);\r
273         }\r
274 }\r
275 \r
276 function setServerEnabled()\r
277 {\r
278         gServerEnabled = true;\r
279 }\r
280 \r
281 function loadData2(strFile)\r
282 {\r
283         if(gbXML)\r
284                 loadDataXML(strFile);\r
285         else\r
286                 loadData(strFile);\r
287 }\r
288 \r
289 function addProject(bPreferXML,sXMLName,sHTMLName)\r
290 {\r
291         var bLoadXML=bPreferXML;\r
292         if(!gbIE4&&!gbNav6&&!gbOpera7)\r
293                 return;\r
294         if(gbIE4&&!gbIE5)\r
295                 bLoadXML=false;\r
296         if (gbIE5&&!gbMac)\r
297                 bLoadXML=true;\r
298         if(gbIE55||gbNav6)\r
299                 bLoadXML=true;\r
300         if(gbOpera7)\r
301                 bLoadXML=false;         \r
302         if(bLoadXML)\r
303                 addProjectXML(sXMLName);\r
304         else\r
305                 addProjectHTML(sHTMLName);\r
306 }\r
307 \r
308 function addProjectHTML(sName)\r
309 {\r
310         gbXML=false;\r
311         gsProjName=sName;\r
312 }\r
313 \r
314 function addProjectXML(sName)\r
315 {\r
316         gbXML=true;\r
317         gsProjName=sName;\r
318 }\r
319 \r
320 function window_MyBunload()\r
321 {\r
322         goMan.unload();\r
323         window_BUnload();\r
324 }\r
325 \r
326 function putDataXML(xmlDoc,sdocPath)\r
327 {\r
328         if(xmlDoc!=null)\r
329         {\r
330                 var projectNode=xmlDoc.getElementsByTagName("project")[0];\r
331                 if(projectNode)\r
332                 {\r
333                         var aRProj=new Array();\r
334                         aRProj[0]=new Object();\r
335                         aRProj[0].sPPath=_getPath(sdocPath);\r
336                         var sLangId=projectNode.getAttribute("langid");\r
337                         if(sLangId)\r
338                         {\r
339                                 aRProj[0].sLangId=sLangId;\r
340                         }\r
341                         var sDPath=projectNode.getAttribute("datapath");\r
342                         if(sDPath)\r
343                         {\r
344                                 if(sDPath.lastIndexOf("/")!=sDPath.length-1)\r
345                                         sDPath+="/";\r
346                                 aRProj[0].sDPath=sDPath;\r
347                         }\r
348                         else\r
349                                 aRProj[0].sDPath="";\r
350                         aRProj[0].sToc=projectNode.getAttribute("toc");\r
351                         aRProj[0].sIdx=projectNode.getAttribute("index");\r
352                         aRProj[0].sFts=projectNode.getAttribute("fts");\r
353                         aRProj[0].sGlo=projectNode.getAttribute("glossary");\r
354                         var RmtProject=projectNode.getElementsByTagName("remote");\r
355                         var nCount=1;\r
356                         for (var i=0;i<RmtProject.length;i++)\r
357                         {\r
358                                 var sURL=RmtProject[i].getAttribute("url");\r
359                                 if(sURL)\r
360                                 {\r
361                                         if(sURL.lastIndexOf("/")!=sURL.length-1)\r
362                                                 sURL+="/";\r
363                                         aRProj[nCount]=new Object();\r
364                                         aRProj[nCount++].sPPath=_getFullPath(aRProj[0].sPPath,sURL);\r
365                                 }\r
366                         }\r
367                         putProjectInfo(aRProj);\r
368                 }\r
369                 else\r
370                 {\r
371                         // on Netscape 6.0 under some situation the xml file cannot be loaded.\r
372                         // so we use pure html instead.\r
373                         if (gnChecked == 0)\r
374                                 setTimeout("redirectToList();",100);\r
375                         else\r
376                         {\r
377                                 gnChecked++;\r
378                                 setTimeout("checkRemoteProject();", 1);\r
379                         }\r
380                 }\r
381         }\r
382 }\r
383 \r
384 function onLoadXMLError()\r
385 {\r
386         gnChecked++;\r
387         setTimeout("checkRemoteProject();", 1);\r
388 }\r
389 \r
390 function redirectToList()\r
391 {\r
392         if(gbReDirectThis)\r
393                 document.location=gsNavReDirect;\r
394         else\r
395                 parent.document.location=gsNavReDirect;\r
396 }\r
397 \r
398 function putProjectInfo(aRProj)\r
399 {\r
400         if(gnChecked==0||isSamePath(gaProj[gnChecked].sPPath,aRProj[0].sPPath))\r
401         {\r
402                 if(gnChecked!=0)\r
403                 {\r
404                         if(aRProj[0].sLangId!=gaProj[0].sLangId)\r
405                                 alert("The merged Help system "+aRProj[0].sPPath+" is using a different language from the master Help system, which will cause the index and full-text search functionality to be disabled in the merged Help system.");\r
406                 }\r
407                 gaProj[gnChecked]=aRProj[0];\r
408                 for(var i=1;i<aRProj.length;i++)\r
409                 {\r
410                         var bFound=false;\r
411                         for(var j=0;j<gaProj.length;j++)\r
412                         {\r
413                                 if(isSamePath(gaProj[j].sPPath,aRProj[i].sPPath))\r
414                                 {\r
415                                         bFound=true;\r
416                                         break;\r
417                                 }\r
418                         }\r
419                         if(!bFound)\r
420                         {\r
421                                 gaProj[gaProj.length]=aRProj[i];\r
422                         }\r
423                 }\r
424                 gnChecked++;\r
425                 setTimeout("checkRemoteProject();", 1);\r
426         }\r
427         else\r
428                 alert("Could not load correctly, please click Refresh.");\r
429 }\r
430 \r
431 function isSamePath(sPath1,sPath2)\r
432 {\r
433         return (sPath1.toLowerCase()==sPath2.toLowerCase());\r
434 }\r
435 \r
436 function checkRemoteProject()\r
437 {\r
438         if(gaProj.length!=gnChecked)\r
439         {\r
440                 setTimeout("cancelProj("+gnChecked+");",10000);\r
441                 loadData2(gaProj[gnChecked].sPPath+gsProjName);\r
442         }\r
443         else{\r
444                 var oMsg=new whMessage(WH_MSG_PROJECTREADY,this,1,null);\r
445                 gbReady=true;\r
446                 SendMessage(oMsg);\r
447         }\r
448 }\r
449 \r
450 function cancelProj(i)\r
451 {\r
452         if(i==gnChecked)\r
453         {\r
454                 gnChecked++;\r
455                 setTimeout("checkRemoteProject();", 1);\r
456         }       \r
457 }\r
458 \r
459 function window_resize()\r
460 {\r
461         for(var i=0;i<goMan.maCom.length;i++)\r
462         {\r
463                 var oFrame=getElement(goMan.maCom[i].msIFrameId);\r
464                 if(oFrame)\r
465                 {\r
466                         oFrame.style.height=document.body.clientHeight;\r
467                         oFrame.style.width=document.body.clientWidth;\r
468                 }\r
469         }\r
470         window_resize2();\r
471 }\r
472 \r
473 function window_resize2()\r
474 {\r
475         if(document.body)\r
476         {\r
477                 if(document.body.clientWidth > 1 && document.body.clientHeight>1)\r
478                 {\r
479                         var oMsg = new whMessage(WH_MSG_RESIZEPANE, this, 1, null);\r
480                         SendMessage(oMsg);\r
481                 }\r
482         }\r
483 }\r
484 \r
485 function window_unload()\r
486 {\r
487         UnRegisterListener2(this,WH_MSG_GETPROJINFO);\r
488         UnRegisterListener2(this,WH_MSG_SHOWTOC);\r
489         UnRegisterListener2(this,WH_MSG_SHOWIDX);\r
490         UnRegisterListener2(this,WH_MSG_SHOWFTS);\r
491         UnRegisterListener2(this,WH_MSG_SHOWGLO);\r
492         UnRegisterListener2(this,WH_MSG_GETPANEINFO);\r
493 }\r
494 \r
495 function onSendMessage(oMsg)\r
496 {\r
497         if(oMsg)\r
498         {\r
499                 var nMsgId=oMsg.nMessageId;\r
500                 if(nMsgId==WH_MSG_GETPROJINFO)\r
501                 {\r
502                         if(gbReady)\r
503                         {\r
504                                 var oProj=new Object();\r
505                                 oProj.aProj=gaProj;\r
506                                 oProj.bXML=gbXML;\r
507                                 oMsg.oParam=oProj;\r
508                         }\r
509                         else\r
510                                 return false;\r
511                 }\r
512                 else if(nMsgId==WH_MSG_SHOWTOC)\r
513                 {\r
514                         if(goMan)\r
515                                 goMan.show("toc");\r
516                         var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "toc");\r
517                         SendMessage(onMsg);\r
518                         onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
519                         SendMessage(onMsg);\r
520                 }\r
521                 else if(nMsgId==WH_MSG_SHOWIDX)\r
522                 {\r
523                         if(goMan)\r
524                                 goMan.show("idx");\r
525                         var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "idx");\r
526                         SendMessage(onMsg);\r
527                         onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
528                         SendMessage(onMsg);\r
529                 }\r
530                 else if(nMsgId==WH_MSG_SHOWFTS)\r
531                 {\r
532                         if(goMan)\r
533                                 goMan.show("fts");\r
534                         var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "fts");\r
535                         SendMessage(onMsg);\r
536                         onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
537                         SendMessage(onMsg);\r
538                 }\r
539                 else if(nMsgId==WH_MSG_SHOWGLO)\r
540                 {\r
541                         if(goMan)\r
542                                 goMan.show("glo");\r
543                         var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "glo");\r
544                         SendMessage(onMsg);\r
545                         onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
546                         SendMessage(onMsg);\r
547                 }\r
548                 else if(nMsgId==WH_MSG_GETPANEINFO)\r
549                 {\r
550                         oMsg.oParam=goMan.getCurrent();\r
551                         return false;\r
552                 }\r
553         }\r
554         return true;\r
555 }\r
556 \r
557 if(window.gbWhUtil&&window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)\r
558 {\r
559         RegisterListener2(this,WH_MSG_GETPROJINFO);\r
560         RegisterListener2(this,WH_MSG_SHOWTOC);\r
561         RegisterListener2(this,WH_MSG_SHOWIDX);\r
562         RegisterListener2(this,WH_MSG_SHOWFTS);\r
563         RegisterListener2(this,WH_MSG_SHOWGLO);\r
564         RegisterListener2(this,WH_MSG_GETPANEINFO);\r
565 \r
566         if((gbMac&&gbIE4)||(gbSunOS&&gbIE5)||gbOpera7)\r
567         {\r
568                 window.onresize=window_resize;\r
569         }\r
570         else if(gbIE4)\r
571         {\r
572                 window.onresize=window_resize2;\r
573         }\r
574         window.onload=window_OnLoad;\r
575         window.onbeforeunload=window_MyBunload;\r
576         window.onunload=window_unload;\r
577         gbWhPHost=true;\r
578 }\r
579 else\r
580         document.location.reload();\r
581 \r