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