Salome HOME
DCQ : Merge with Ecole_Ete_a6.
[modules/smesh.git] / doc / salome / gui / SMESH / whthost.js
1 var gaHSLoad=new Array();\r
2 var gnMinIdx=0;\r
3 var gnInsIdx=-1;\r
4 var gsLoadingDivID="LoadingDiv";\r
5 var gsLoadingMsg="Loading, click here to cancel...";\r
6 var gaProj=null;\r
7 var gaTocs=new Array();\r
8 var goChunk=null;\r
9 var gbReady=false;\r
10 var gbLoadToc=false;\r
11 var gbXML=false;\r
12 var gaRoot=new Array();\r
13 var gnCC=-1;\r
14 var gsTP="";\r
15 var gaBTPs="";\r
16 var gsCTPath="";\r
17 var gnLT=-1;\r
18 var gsPathSplit="\n";\r
19 var gsBgColor="#ffffff";\r
20 var gsBgImage="";\r
21 var goFont=null;\r
22 var goHFont=null;\r
23 \r
24 var gsMargin="0pt";\r
25 var gsIndent="15pt";\r
26 var gsABgColor="#cccccc";\r
27 \r
28 var giBookClose="";\r
29 var giBookOpen="";\r
30 var giBookItem="";\r
31 var giURLItem="";\r
32 var giNewBookClose="";\r
33 var giNewBookOpen="";\r
34 var giNewBookItem="";\r
35 var giNewURLItem="";\r
36 var gnImages=0;\r
37 var gnLoadedImages=0;\r
38 var gaImgs=new Array();\r
39 var gbLoadData=false;\r
40 var gobj=null;\r
41 var gaTocsNs61Fix=null;\r
42 var gbWhTHost=false;\r
43 var gBookItems=new Array();\r
44 var gInSync=false;\r
45 \r
46 function setBackground(sBgImage)\r
47 {\r
48         gsBgImage=sBgImage;\r
49 }\r
50 \r
51 function setBackgroundcolor(sBgColor)\r
52 {\r
53         gsBgColor=sBgColor;\r
54 }\r
55 \r
56 function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
57 {\r
58         var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
59         if(sType=="Normal") goFont=vFont;\r
60         else if(sType=="Hover") goHFont=vFont;\r
61 }\r
62 \r
63 function setActiveBgColor(sBgColor){gsABgColor=sBgColor;}\r
64 \r
65 function setMargin(sMargin){gsMargin=sMargin;}\r
66 \r
67 function setIndent(sIndent){gsIndent=sIndent;}\r
68 \r
69 function setIcon(sType,sURL)\r
70 {\r
71         if(sType=="BookOpen")\r
72                 giBookOpen=sURL;\r
73         else if(sType=="BookClose")\r
74                 giBookClose=sURL;\r
75         else if(sType=="Item")\r
76                 giBookItem=sURL;\r
77         else if(sType=="RemoteItem")\r
78                 giURLItem=sURL;\r
79         else if(sType=="NewBookClose")\r
80                 giNewBookClose=sURL;\r
81         else if(sType=="NewBookOpen")\r
82                 giNewBookOpen=sURL;\r
83         else if(sType=="NewItem")\r
84                 giNewBookItem=sURL;\r
85         else if(sType=="NewRemoteItem")\r
86                 giNewURLItem=sURL;              \r
87 }\r
88 \r
89 function bookItem(sTarget, sURL)\r
90 {\r
91         if (sTarget)\r
92                 this.sTarget=sTarget;\r
93         else\r
94                 this.sTarget="bsscright";\r
95         this.sURL=sURL;\r
96 }\r
97 \r
98 function addBookItem(sBookId, sTarget, sURL)\r
99 {\r
100         gBookItems[sBookId] = new bookItem(sTarget, sURL);              \r
101 }\r
102 \r
103 function tocChunk(sPPath,sDPath)\r
104 {\r
105         this.sPPath=sPPath;\r
106         this.sDPath=sDPath;\r
107         this.nMI=-1;\r
108         this.aTocs=null;\r
109 }\r
110 \r
111 function addTocChunk(sPPath,sDPath)\r
112 {\r
113         var oChunk=new tocChunk(sPPath,sDPath);\r
114         gaTocs[gaTocs.length]=oChunk;\r
115         return oChunk;\r
116 }\r
117 \r
118 function isHSLoad(nIdx)\r
119 {\r
120         for(var i=0;i<gaHSLoad.length;i++){\r
121                 if(gaHSLoad[i]==nIdx)\r
122                         return true;\r
123         }\r
124         return false;\r
125 }\r
126 \r
127 function setHSLoad(nIdx)\r
128 {\r
129         if(!isHSLoad(nIdx))\r
130         {\r
131                 var len=gaHSLoad.length;\r
132                 for(var i=0;i<len;i++){\r
133                         if(gaHSLoad[i]==-1)\r
134                         {\r
135                                 gaHSLoad[i]=nIdx;\r
136                                 return;\r
137                         }\r
138                 }\r
139                 gaHSLoad[len]=nIdx;\r
140         }\r
141 }\r
142 \r
143 function setHSUnLoad(nIdx)\r
144 {\r
145         if(isHSLoad(nIdx))\r
146         {\r
147                 for(var i=0;i<gaHSLoad.length;i++){\r
148                         if(gaHSLoad[i]==nIdx)\r
149                         {\r
150                                 gaHSLoad[i]=-1;\r
151                                 return;\r
152                         }\r
153                 }\r
154         }\r
155 }\r
156 \r
157 function cancelLoading(nIdx)\r
158 {\r
159         var oObj=getElement(getCBId(nIdx));\r
160         if(oObj)\r
161         {\r
162                 oObj.innerHTML="";\r
163                 setHSUnLoad(nIdx)\r
164                 ExpandIt(nIdx);\r
165         }\r
166 }\r
167 \r
168 function cancelAll()\r
169 {\r
170         var eLoadingDivs=getElement(gsLoadingDivID);\r
171         if(eLoadingDivs)\r
172                 cancelHSLoading(eLoadingDivs);\r
173 }\r
174 \r
175 function cancelHSLoading(eLoadingDiv)\r
176 {\r
177         var eParent=eLoadingDiv.parentElement;\r
178         if(eParent){\r
179                 var sId=eParent.id;\r
180                 sId=sId.substring(5);\r
181                 var nIdx=parseInt(sId);\r
182                 if(!isNaN(nIdx))\r
183                         cancelLoading(nIdx)\r
184         }\r
185 }\r
186 \r
187 function checkBookItem(nIdx)\r
188 {\r
189         if(!gInSync)\r
190         {\r
191                 var sBookId=getBookId(nIdx);\r
192                 if(gBookItems[sBookId])\r
193                 {\r
194                         window.open(gBookItems[sBookId].sURL,gBookItems[sBookId].sTarget);\r
195                 }\r
196         }\r
197 }\r
198 \r
199 function insertBookItems(nIdx,num)\r
200 {\r
201         checkBookItem(nIdx);\r
202         var sChildBookId=getCBId(nIdx);\r
203         var eChildDiv=getElement(sChildBookId);\r
204         if(eChildDiv){\r
205                 if((eChildDiv.childNodes&&eChildDiv.childNodes.length==0)||\r
206                         (eChildDiv.all&&eChildDiv.all.length==0)){\r
207                         var sHTML=writeBookItems(nIdx,num);\r
208                         eChildDiv.innerHTML=sHTML;\r
209                         setTimeout("syncInit()",1);\r
210                 }\r
211         }\r
212         ExpandIt(nIdx);\r
213 }\r
214 \r
215 function writeBook(nIdx,bLocal)\r
216 {\r
217         var sIcon=getBookImage(nIdx,true);\r
218         var sName=_textToHtml(getItemName(nIdx));\r
219         sIcon=_textToHtml_nonbsp(sIcon);\r
220         \r
221         var sHTML="<div id=\""+getPBId(nIdx)+"\" class=parent>";\r
222         sHTML+="<p><nobr><a id=\""+getBookId(nIdx)+"\" href=\"javascript:void(0);\" onfocus=\"markBook("+nIdx+");\" onclick=\"";\r
223 \r
224         if(getItemType(nIdx)==1)\r
225                 sHTML+="insertBookItems("+nIdx+", "+getItemContentsNum(nIdx);\r
226         else\r
227                 sHTML+="tocExpandHelpSet("+nIdx+","+bLocal;\r
228         sHTML+=");return false;\" title=\""+sName+"\"><img alt=\"Book\" name=\""+getBId(nIdx)+"\" src=\""+sIcon+"\" border=0 align=\"absmiddle\">";\r
229         var sURL=_textToHtml_nonbsp(getItemURL(nIdx));\r
230         if(sURL!="")\r
231                 addBookItem(getBookId(nIdx),_textToHtml_nonbsp(getTopicTarget(nIdx)),sURL);\r
232         sHTML+="&nbsp;"+sName+"</a></nobr></p></div><div id=\""+getCBId(nIdx)+"\" class=child></div>";\r
233         return sHTML;\r
234 }\r
235 \r
236 function getBookId(nIdx){return "B_"+nIdx;}\r
237 \r
238 function getItemId(nIdx){return "I_"+nIdx;}\r
239 \r
240 function markBook(nIdx)\r
241 {\r
242         var obj=getElement(getItemId(nIdx));\r
243         if(obj==null)\r
244                 obj=getElement(getBookId(nIdx));\r
245         if(gbNav6)\r
246         {\r
247                 gobj=obj;\r
248                 setTimeout("delayMarkObj();",1);\r
249         }\r
250         else\r
251                 markObj(obj);\r
252 }\r
253 \r
254 function delayMarkObj()\r
255 {\r
256         if(gobj)\r
257         {\r
258                 markObj(gobj);\r
259                 gobj=null;\r
260         }\r
261 }\r
262 \r
263 function markObj(obj)\r
264 {\r
265         if(obj!=null)\r
266         {\r
267                 HighLightElement(obj,gsABgColor,"transparent");\r
268                 var sPath=calTocPath(obj);\r
269                 if(gsCTPath!=sPath)\r
270                         gsCTPath=sPath;\r
271         }\r
272 }\r
273 \r
274 function markItem(nIdx)\r
275 {\r
276         var obj=getElement(getItemId(nIdx));\r
277         if(gbNav6)\r
278         {\r
279                 gobj=obj;\r
280                 setTimeout("delayMarkObj();",1);\r
281         }\r
282         else\r
283                 markObj(getElement(getItemId(nIdx)));\r
284 }\r
285 \r
286 function calTocPath(obj)\r
287 {\r
288         var sPath=getInnerText(obj).substring(1);\r
289         var pObj=getParentNode(obj);\r
290         do\r
291         {\r
292                 while(pObj!=null&&!isCBId(pObj.id)) pObj=getParentNode(pObj);\r
293                 if(pObj!=null)\r
294                 {\r
295                         var nId=getIdByCBId(pObj.id);\r
296                         var sObj=getElement(getPBId(nId));\r
297                         if(sObj!=null)\r
298                         {\r
299                                 var objs=getItemsByBook(sObj);\r
300                                 for(var i=0;i<objs.length;i++)\r
301                                 {\r
302                                         var sText=getInnerText(objs[i]);\r
303                                         \r
304                                         if(sText.length!=0)\r
305                                         {\r
306                                                 sPath=sText.substring(1)+gsPathSplit+sPath;\r
307                                                 break;\r
308                                         }\r
309                                 }\r
310                         }\r
311                         pObj=getParentNode(pObj);\r
312                 }\r
313         }while(pObj!=null);\r
314         return sPath;\r
315 }\r
316 \r
317 function writeAnItem(nIdx)\r
318 {\r
319         var sTarget=_textToHtml_nonbsp(getTopicTarget(nIdx));\r
320         var sIcon=getItemIcon(nIdx,0);\r
321         if(sIcon=="")\r
322         {\r
323                 var nItemType=getItemType(nIdx);\r
324                 if(nItemType&2)\r
325                         sIcon=getItemImage(nIdx,false);\r
326                 else\r
327                         sIcon=getItemImage(nIdx,true);\r
328         }\r
329         sIcon=_textToHtml_nonbsp(sIcon);\r
330         var sName=_textToHtml(getItemName(nIdx));\r
331         var sHTML="<p><nobr><a id=\""+getItemId(nIdx)+"\" onfocus=\"markItem("+nIdx+");\""\r
332         var sAltString="";\r
333         if (nItemType&2)\r
334                 sAltString="Page";\r
335         else\r
336                 sAltString="Remote Page";\r
337         if(sTarget!="")\r
338                 sHTML+="target=\""+sTarget+"\" ";\r
339         sHTML+="href=\""+_textToHtml_nonbsp(getItemURL(nIdx))+"\" title=\""+sName+"\"><img alt=\""+sAltString+"\" src=\""+sIcon+"\" border=0 align=\"absmiddle\">&nbsp;"+sName+"</a></nobr></p>";\r
340         return sHTML;\r
341 }\r
342 \r
343 function writeBookItems(nIdx,num)\r
344 {\r
345         var sHTML="";\r
346         if(num>0){\r
347                 var nCIdx=0;\r
348                 do{\r
349                         nCIdx++;\r
350                         var i=nIdx+nCIdx;\r
351                         var nItemType=getItemType(i);\r
352                         if(nItemType==1){\r
353                                 sHTML+=writeBook(i);    \r
354                                 nCIdx+=getItemContentsNum(i);           \r
355                         }\r
356                         else if(nItemType==2||nItemType==16){\r
357                                 sHTML+=writeAnItem(i);\r
358                         }else if(nItemType==4){\r
359                                 sHTML+=writeBook(i,false);\r
360                         }else if(nItemType==8){\r
361                                 sHTML+=writeBook(i,true);\r
362                         }\r
363                 }\r
364                 while(nCIdx<num);\r
365         }\r
366         return sHTML;\r
367 }\r
368 \r
369 function tocExpandHelpSet(nIdx,bLocal)\r
370 {\r
371         checkBookItem(nIdx);\r
372         cancelAll();\r
373         if(isHSLoad(nIdx))\r
374                 ExpandIt(nIdx);\r
375         else{\r
376                 setHSLoad(nIdx);\r
377                 var sSrc="";\r
378                 if(bLocal){\r
379                         var oChunk=getChunk(nIdx);\r
380                         if(oChunk)\r
381                         {\r
382                                 goChunk=addTocChunk(oChunk.sPPath,oChunk.sDPath);\r
383                                 sSrc=oChunk.aTocs[nIdx-oChunk.nMI].sRefURL;\r
384                         }\r
385                 }\r
386                 else{\r
387                         sSrc=getRefURL(nIdx);\r
388                         var nProj=getProject(sSrc);\r
389                         if(nProj!=-1)\r
390                         {\r
391                                 goChunk=addTocChunk(gaProj[nProj].sPPath,gaProj[nProj].sDPath);\r
392                                 sSrc=gaRoot[nProj].sToc;\r
393                         }\r
394                         else\r
395                                 goChunk=null;\r
396                 }\r
397                 if(goChunk)\r
398                 {\r
399                         PrepareLoading(nIdx);\r
400                         ExpandIt(nIdx);\r
401                         gbLoadToc=false;\r
402                         loadData2(goChunk.sPPath+goChunk.sDPath+sSrc);\r
403                 }\r
404         }\r
405 }\r
406 \r
407 function getProject(sSrc)\r
408 {\r
409         for(var i=0;i<gaProj.length;i++)\r
410         {\r
411                 if(isSamePath(getPath(sSrc),gaProj[i].sPPath))\r
412                 {\r
413                         return i;\r
414                 }\r
415         }\r
416         return -1;\r
417 }\r
418 \r
419 function getPath(sPath)\r
420 {\r
421         if(sPath!="")\r
422         {\r
423                 sPath=_replaceSlash(sPath);\r
424                 var nPosFile=sPath.lastIndexOf("/");\r
425                 sPath=sPath.substring(0,nPosFile+1);\r
426         }\r
427         return sPath;\r
428 }\r
429 \r
430 function isSamePath(sPath1,sPath2)\r
431 {\r
432         return (sPath1.toLowerCase()==sPath2.toLowerCase());\r
433 }\r
434 \r
435 function PrepareLoading(nIdx)\r
436 {\r
437         gnInsIdx=nIdx;\r
438         if(!gsTP)\r
439         {\r
440                 var oObj=getElement(getCBId(gnInsIdx));\r
441                 if(oObj)\r
442                         oObj.innerHTML=writeLoadingDiv(nIdx);\r
443         }\r
444 }\r
445 \r
446 function writeLoadingDiv(nIdx)\r
447 {\r
448         return"<div id=\""+gsLoadingDivID+"\" class=parent onclick=\"cancelLoading("+nIdx+");\" style=\"padding-left:4px;background-color:ivory;border-width:1;border-style:solid;border-color:black;width:150px;\">"+gsLoadingMsg+"</div>";\r
449 }\r
450 \r
451 function getItemName(nIdx)\r
452 {\r
453         var oChunk=getChunk(nIdx);\r
454         if(oChunk)\r
455                 return oChunk.aTocs[nIdx-oChunk.nMI].sItemName;\r
456         else\r
457                 return null;\r
458 }\r
459 \r
460 function getItemContentsNum(nIdx)\r
461 {\r
462         var oChunk=getChunk(nIdx);\r
463         if(oChunk)\r
464                 return oChunk.aTocs[nIdx-oChunk.nMI].nContents;\r
465         else\r
466                 return null;\r
467 }\r
468 \r
469 function getItemType(nIdx)\r
470 {\r
471         var oChunk=getChunk(nIdx);\r
472         if(oChunk)\r
473                 return oChunk.aTocs[nIdx-oChunk.nMI].nType;\r
474         else\r
475                 return 0;\r
476 }\r
477 \r
478 function getItemURL(nIdx)\r
479 {\r
480         var oChunk=getChunk(nIdx);\r
481         if(oChunk)\r
482         {\r
483                 var sPath=oChunk.aTocs[nIdx-oChunk.nMI].sItemURL;\r
484                 if(!(sPath==null||sPath==""))\r
485                 {\r
486                         return _getFullPath(oChunk.sPPath,sPath);\r
487                 }\r
488         }\r
489         return "";\r
490 }\r
491 \r
492 function getRefURL(nIdx)\r
493 {\r
494         var oChunk=getChunk(nIdx);\r
495         if(oChunk)\r
496         {\r
497                 var sPath=oChunk.aTocs[nIdx-oChunk.nMI].sRefURL;\r
498                 if(!(sPath==null||sPath==""))\r
499                 {\r
500                         return _getFullPath(oChunk.sPPath,sPath)\r
501                 }\r
502         }\r
503         return "";\r
504 }\r
505 \r
506 function getTopicTarget(nIdx)\r
507 {\r
508         var oChunk=getChunk(nIdx);\r
509         if(oChunk)\r
510         {\r
511                 if(typeof(oChunk.aTocs[nIdx-oChunk.nMI].sTarget)!="undefined")\r
512                         return oChunk.aTocs[nIdx-oChunk.nMI].sTarget;\r
513         }\r
514         return "";\r
515 }\r
516 \r
517 function getItemIcon(nIdx,nIconIdx)\r
518 {\r
519         var oChunk=getChunk(nIdx);\r
520         if(oChunk)\r
521         {\r
522                 if(typeof(oChunk.aTocs[nIdx-oChunk.nMI].sIconRef)!="undefined")\r
523                 {\r
524                         var sIconRef=oChunk.aTocs[nIdx-oChunk.nMI].sIconRef;\r
525                         var nIndex=sIconRef.indexOf(";");\r
526                         while(nIconIdx-->0&&nIndex!=-1)\r
527                         {\r
528                                 sIconRef=sIconRef.substring(nIndex+1);\r
529                                 nIndex=sIconRef.indexOf(";");\r
530                         }\r
531                         if(nIconIdx<0)\r
532                         {\r
533                                 if(nIndex!=-1)\r
534                                         sIconRef=sIconRef.substring(0,nIndex);\r
535                                 return _getFullPath(oChunk.sPPath,sIconRef)\r
536                         }\r
537                 }\r
538         }\r
539         return "";\r
540 }\r
541 \r
542 function TocWriteClassStyle()\r
543 {\r
544         var sStyle="<STYLE TYPE='text/css'>\n";\r
545         if (gsBgImage)\r
546                 sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";\r
547         else\r
548                 sStyle+="body {border-top:black 1px solid;}\n";\r
549         sStyle+="P {"+getFontStyle(goFont)+"margin-top:"+gsMargin+";margin-bottom:"+gsMargin+";}\n";\r
550         sStyle+="DIV {margin-top:"+gsMargin+";margin-bottom:"+gsMargin+";}\n";\r
551         sStyle+=".parent {margin-left:0pt;}\n";\r
552         sStyle+=".child {display:none;margin-left:"+gsIndent+";}\n";\r
553         sStyle+="A:link {"+getFontStyle(goFont)+"}\n";\r
554         sStyle+="A:visited {"+getFontStyle(goFont)+"}\n";\r
555         sStyle+="A:active {background-color:"+gsABgColor+";}\n";\r
556         sStyle +="A:hover {"+getFontStyle(goHFont)+"}\n";\r
557         sStyle+="</STYLE>";\r
558         document.write(sStyle);\r
559 }\r
560 \r
561 function TocWriteFixedWidth(bBegin,nWidth)\r
562 {\r
563         if((gbIE4)&&(gbMac)&&(!gbIE5)){\r
564                 if(bBegin)\r
565                         document.write("<table width="+nWidth+" border=0><tr><td>");\r
566                 else\r
567                         document.write("</td></tr></table>");\r
568         }\r
569 }\r
570 \r
571 function TocInitPage()\r
572 {\r
573         var tempColl=getItemsByBook(document.body);\r
574         if(tempColl.length>0)\r
575                 tempColl[0].focus();\r
576 }\r
577 \r
578 function getItemsFromObj(obj)\r
579 {\r
580         var aAnchor=new Array();\r
581         var tempColl=getChildrenByTag(obj,"P");\r
582         if(tempColl&&tempColl.length>0)\r
583         {\r
584                 var anobr=new Array();\r
585                 for(var i=0;i<tempColl.length;i++)\r
586                 {\r
587                         var tempNobr=getChildrenByTag(tempColl[i],"NOBR");\r
588                         if(tempNobr&&tempNobr.length>0)\r
589                         {\r
590                                 for(var j=0;j<tempNobr.length;j++)\r
591                                         anobr[anobr.length]=tempNobr[j];\r
592                         }\r
593                 }\r
594                 for(var s=0;s<anobr.length;s++)\r
595                 {\r
596                         var tempAnchor=getChildrenByTag(anobr[s],"A");\r
597                         if(tempAnchor&&tempAnchor.length>0)\r
598                         {\r
599                                 for(var u=0;u<tempAnchor.length;u++)\r
600                                         aAnchor[aAnchor.length]=tempAnchor[u];\r
601                         }\r
602                 }\r
603         }\r
604         return aAnchor;\r
605 }\r
606 \r
607 function getItemsByBook(obj)\r
608 {\r
609         var aAnchor=new Array();\r
610         var aTAnchor=getItemsFromObj(obj);\r
611         for(var i=0;i<aTAnchor.length;i++)\r
612         {\r
613                 aAnchor[aAnchor.length]=aTAnchor[i];\r
614         }\r
615         var tempBook=getChildrenByTag(obj,"DIV");\r
616         if(tempBook&&tempBook.length>0)\r
617         {\r
618                 for(var j=0;j<tempBook.length;j++)\r
619                 {\r
620                         var aTAnchorDiv=getItemsFromObj(tempBook[j]);\r
621                         for(var s=0;s<aTAnchorDiv.length;s++)\r
622                         {\r
623                                 aAnchor[aAnchor.length]=aTAnchorDiv[s];\r
624                         }\r
625                 }\r
626         }       \r
627         return aAnchor;\r
628 }\r
629 \r
630 function ExpandIt(nId)\r
631 {\r
632         if(!gsTP)\r
633                 ExpandIt2(nId,false);\r
634 }\r
635 \r
636 function ExpandIt2(nId,bForceOpen)\r
637 {\r
638         if(gbIE4||gbNav6){\r
639                 var oC=TocExpand(nId,true,bForceOpen);\r
640                 var nNewScroll=document.body.scrollTop;\r
641                 if(oC.style.display=="block"){\r
642                         var nTop=oC.offsetTop;\r
643                         var nBottom=nTop+oC.offsetHeight;\r
644                         if(document.body.scrollTop+document.body.clientHeight<nBottom){\r
645                                 nNewScroll=nBottom-document.body.clientHeight;\r
646                         }\r
647                         if(nBottom-nTop>document.body.clientHeight){\r
648                                 nNewScroll=nTop-20;\r
649                         }\r
650                 }\r
651                 document.body.scrollTop=nNewScroll;\r
652         }\r
653 }\r
654 \r
655 function TocExpand(nId,bChangeImg,bForceOpen)\r
656 {\r
657         var oDiv=getElement(getCBId(nId));\r
658         if(oDiv==null) return null;\r
659 \r
660         var whichIm=document.images[getBId(nId)];\r
661         if((oDiv.style.display!="block")||bForceOpen){\r
662                 oDiv.style.display="block";\r
663                 if(bChangeImg){\r
664                         var sPath=getPath(whichIm.src);\r
665                         sPath=_getFullPath(sPath,getBookImage(nId,false));\r
666                         whichIm.src=sPath;              \r
667                 }\r
668         }else{\r
669                 oDiv.style.display="none";\r
670                 if(bChangeImg){\r
671                         var sPath=getPath(whichIm.src);\r
672                         sPath=_getFullPath(sPath,getBookImage(nId,true));\r
673                         whichIm.src=sPath;\r
674                 }\r
675                 if(gbMac&&gbIE5){\r
676                         this.parent.document.getElementById("tocIFrame").style.width="101%";\r
677                         this.parent.document.getElementById("tocIFrame").style.width="100%";\r
678                 }\r
679         }\r
680         return oDiv;\r
681 }\r
682 \r
683 function getChunkId(n)\r
684 {\r
685         var nCandidate=-1;\r
686         for(var i=0;i<gaTocs.length;i++){\r
687                 if(gaTocs[i].nMI<=n){\r
688                         nCandidate=i;\r
689                 }\r
690                 else\r
691                         break;\r
692         }\r
693         if(nCandidate!=-1&&gaTocs[nCandidate].nMI!=-1)\r
694                 return nCandidate;\r
695         else\r
696                 return -1;\r
697 }\r
698 \r
699 function getChunk(n)\r
700 {\r
701         if(gnCC!=-1&&gaTocs[gnCC].nMI<=n&&(gnCC==gaTocs.length-1||\r
702                 gaTocs[gnCC+1].nMI>n))\r
703         {       \r
704                 return gaTocs[gnCC];\r
705         }\r
706         else{\r
707                 gnCC=getChunkId(n);\r
708                 if(gnCC!=-1)\r
709                         return gaTocs[gnCC];\r
710                 else\r
711                         return null;\r
712         }\r
713 }\r
714 \r
715 function getBookImage(nIdx,bClosed)\r
716 {\r
717         var nIdx=bClosed?0:1;\r
718         var sIcon=getItemIcon(nIdx,nIdx);\r
719         if(sIcon=="")\r
720                 if(bClosed)\r
721                         sIcon=giBookClose;\r
722                 else\r
723                         sIcon=giBookOpen;\r
724         return _getFullPath(gaProj[0].sPPath,sIcon);\r
725 }\r
726 \r
727 function getItemImage(nIdx,bRemote)\r
728 {\r
729         var sIcon=getItemIcon(nIdx,0);\r
730         if(sIcon=="")\r
731                 if(bRemote)\r
732                         sIcon=giURLItem;\r
733                 else\r
734                         sIcon=giBookItem;\r
735         return _getFullPath(gaProj[0].sPPath,sIcon);\r
736 }\r
737 \r
738 function expandToc(oObj,sRest,aIdList)\r
739 {\r
740         var len=aIdList.length;\r
741         var nPos=sRest.indexOf(gsPathSplit);\r
742         if(nPos!=-1)\r
743         {\r
744                 sPart=sRest.substring(0,nPos);\r
745                 sRest=sRest.substring(nPos+1);\r
746         }\r
747         else\r
748         {\r
749                 sPart=sRest;\r
750                 var aTagAs=getItemsByBook(oObj);\r
751                 for(var s=0;s<aTagAs.length;s++)\r
752                 {\r
753                         var sText=getInnerText(aTagAs[s]);\r
754                         if(sText.length>0)\r
755                                 sText=sText.substring(1);\r
756                         if(sText==sPart)\r
757                         {\r
758                                 aIdList[len]=aTagAs[s];\r
759                                 return 1;\r
760                         }\r
761                 }\r
762                 return 0;\r
763         }\r
764                 \r
765         var aChildren=getChildrenByTag(oObj,"DIV");\r
766         for(var i=0;i<aChildren.length;i++)\r
767         {\r
768                 var sPId=aChildren[i].id;\r
769                 if(!isPBId(sPId))\r
770                         continue;\r
771                 var sText=getInnerText(aChildren[i]);\r
772                 if(sText.substring(1)!=sPart)\r
773                         continue;\r
774                 aIdList[len]=getIdByPBId(sPId);\r
775                 var sCId=getCBId(aIdList[len]);\r
776                 var oCObj=getElement(sCId);\r
777                 if(oCObj)\r
778                 {\r
779                         if(oCObj.innerHTML=="")\r
780                         {\r
781                                 var obj=getItemsByBook(aChildren[i]);\r
782                                 if(obj.length>0)\r
783                                 {\r
784                                         if(gbNav6)\r
785                                         {\r
786                                                 var sCommand=obj[0].getAttribute("onClick");\r
787                                                 var nCommand=sCommand.indexOf(";");\r
788                                                 sCommand=sCommand.substring(0,nCommand);\r
789                                                 setTimeout(sCommand,1);\r
790                                         }\r
791                                         else\r
792                                                 obj[0].click();\r
793                                 }\r
794                                 return -1;\r
795                         }\r
796                         var nRet=expandToc(oCObj,sRest,aIdList);\r
797                         if(nRet)\r
798                                 return nRet;\r
799                 }\r
800         }\r
801         aIdList.length=len;\r
802         return 0;\r
803 }\r
804 \r
805 function getIdByPBId(sPId)\r
806 {\r
807         return parseInt(sPId.substring(5,sPId.length-6));\r
808 }\r
809 \r
810 function getIdByCBId(sCId)\r
811 {\r
812         return parseInt(sCId.substring(5,sCId.length-5));\r
813 }\r
814 \r
815 function isPBId(sId)\r
816 {\r
817         return (sId&&sId.indexOf("Book_")==0&&sId.lastIndexOf("Parent")==sId.length-6);\r
818 }\r
819 \r
820 function isCBId(sId)\r
821 {\r
822         return (sId&&sId.indexOf("Book_")==0&&sId.lastIndexOf("Child")==sId.length-5);\r
823 }\r
824 \r
825 function getBId(nIdx)\r
826 {\r
827         return "Book_"+nIdx;\r
828 }\r
829 \r
830 function getPBId(nIdx)\r
831 {\r
832         return getBId(nIdx)+"Parent";\r
833 }\r
834 \r
835 function getCBId(nIdx)\r
836 {\r
837         return getBId(nIdx)+"Child";\r
838 }\r
839 \r
840 function getClosestTocPath(aPaths)\r
841 {\r
842         var nMaxSimilarity=0;\r
843         var nThatIndex=-1;\r
844         var sPath=null;\r
845         if(aPaths.length==0) return sPath;\r
846         for(var i=0;i<aPaths.length;i++)\r
847         {\r
848                 var nSimilarity=comparePath(gsCTPath,aPaths[i]);\r
849                 if(nSimilarity>nMaxSimilarity)\r
850                 {\r
851                         nMaxSimilarity=nSimilarity;\r
852                         nThatIndex=i;\r
853                 }\r
854         }\r
855         if(nThatIndex!=-1)\r
856         {\r
857                 sPath=aPaths[nThatIndex];\r
858         }\r
859         else\r
860         {\r
861                 sPath=aPaths[0];\r
862         }\r
863         return sPath;\r
864 }\r
865 \r
866 function comparePath(sPath1,sPath2)\r
867 {\r
868         var nMaxSimilarity=0;\r
869         var nStartPos1=0;\r
870         var nPos1=-1;\r
871         var nStartPos2=0;\r
872         var nPos2=-1;\r
873         do{\r
874                 var sCheck1=null;\r
875                 var sCheck2=null;\r
876                 nPos1=sPath1.indexOf(gsPathSplit,nStartPos1);\r
877                 if(nPos1!=-1)\r
878                 {\r
879                         sCheck1=sPath1.substring(nStartPos1,nPos1);\r
880                         nStartPos1=nPos1+1;\r
881                 }\r
882                 else\r
883                 {\r
884                         sCheck1=sPath1.substring(nStartPos1);\r
885                         nStartPos1=-1;\r
886                 }\r
887                 nPos2=sPath2.indexOf(gsPathSplit,nStartPos2);\r
888                 if(nPos1!=-1)\r
889                 {\r
890                         sCheck2=sPath2.substring(nStartPos2,nPos2);\r
891                         nStartPos2=nPos2+1;\r
892                 }\r
893                 else\r
894                 {\r
895                         sCheck2=sPath2.substring(nStartPos2);\r
896                         nStartPos2=-1;\r
897                 }\r
898                 if(sCheck1==sCheck2)\r
899                         nMaxSimilarity++;\r
900                 else\r
901                         break;\r
902         }while(nStartPos1!=-1&&nStartPos2!=-1);\r
903         return nMaxSimilarity;\r
904 }\r
905 \r
906 function getTocPaths(oTopicParam)\r
907 {\r
908         var aRelTocPaths=oTopicParam.aPaths;\r
909         var aPaths=new Array();\r
910         for(var i=0;i<gaProj.length;i++)\r
911         {\r
912                 if(isSamePath(gaProj[i].sPPath,oTopicParam.sPPath))\r
913                 {\r
914                         for(var j=0;j<aRelTocPaths.length;j++)\r
915                         {\r
916                                 aPaths[j]=gaRoot[i].sRPath+aRelTocPaths[j];\r
917                                 aPaths[j]=aPaths[j].substring(1);\r
918                         }\r
919                         break;\r
920                 }\r
921         }\r
922         return aPaths;\r
923 }\r
924 \r
925 function syncInit()\r
926 {\r
927         if(gsTP)\r
928         {\r
929                 gInSync=true;\r
930                 var obj=document.body;\r
931                 var aIdList=new Array();\r
932                 var nRet=expandToc(obj,gsTP,aIdList);\r
933                 if(nRet!=-1)\r
934                 {\r
935                         if(nRet==1)\r
936                         {\r
937                                 if(aIdList.length)\r
938                                         for(var i=0;i<aIdList.length-1;i++)\r
939                                         {\r
940                                                 ExpandIt2(aIdList[i],true);\r
941                                         }\r
942                                 gsCTPath=gsTP;\r
943                                 if(!gbIE55)\r
944                                         aIdList[aIdList.length-1].focus();\r
945                                 else\r
946                                         HighLightElement(aIdList[aIdList.length-1],gsABgColor,"transparent");\r
947                         }\r
948                         var aPaths=gaBTPs;\r
949                         gsTP=null;\r
950                         gaBTPs=null;\r
951                         if(aPaths!=null)\r
952                         {\r
953                                 var sPath=getClosestTocPath(aPaths);\r
954                                 if(sPath!=null)\r
955                                 {       \r
956                                         gsTP=sPath;             \r
957                                         setTimeout("syncInit()",1);\r
958                                 }\r
959                         }\r
960                 }\r
961                 gInSync=false;\r
962         }\r
963 }\r
964 \r
965 function loadToc()\r
966 {\r
967         if(!gbReady)\r
968         {\r
969                 var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);\r
970                 if(SendMessage(oResMsg)&&oResMsg.oParam)\r
971                 {\r
972                         var oProj=oResMsg.oParam;\r
973                         gaProj=oProj.aProj;\r
974                         gbXML=oProj.bXML;\r
975                         load1B1();\r
976                 }\r
977         }\r
978 }\r
979 \r
980 function load1B1()\r
981 {\r
982         if(gnLT+1<gaProj.length)\r
983         {\r
984                 for(var i=gnLT+1;i<gaProj.length;i++)\r
985                 {\r
986                         if(gaProj[i].sToc!=null&&gaProj[i].sToc!="")\r
987                         {\r
988                                 gbLoadToc=true;\r
989                                 gnLT=i;\r
990                                 setTimeout("loadTocInfo()",1);\r
991                                 return true;\r
992                         }\r
993                 }\r
994         }\r
995         return false;\r
996 }\r
997 \r
998 function loadTocInfo()\r
999 {\r
1000         loadData2(gaProj[gnLT].sPPath+gaProj[gnLT].sDPath+gaProj[gnLT].sToc);\r
1001 }\r
1002 \r
1003 function loadData2(sFile)\r
1004 {\r
1005         if(gbXML)\r
1006                 loadDataXML(sFile);\r
1007         else\r
1008                 loadData(sFile);\r
1009 }\r
1010 \r
1011 function projReady(sRoot,aProj)\r
1012 {\r
1013         if(gaRoot.length<=gnLT||!gaRoot[gnLT])\r
1014                 gaRoot[gnLT]=new Object();\r
1015         gaRoot[gnLT].sToc=sRoot;\r
1016         \r
1017         if(gnLT==0)\r
1018                 gaRoot[gnLT].sRPath=gsPathSplit;\r
1019 \r
1020         updatePTPath(gnLT,aProj);\r
1021 \r
1022         if(!((gnLT+1<gaProj.length)&&load1B1()))\r
1023         {\r
1024                 gbReady=true;\r
1025                 if(gbIE4)\r
1026                         setTimeout("loadImages();",1);\r
1027                 else\r
1028                         setTimeout("loadTData();",1);\r
1029         }\r
1030 }\r
1031 \r
1032 function loadTData()\r
1033 {\r
1034         if(gaProj[0].sToc!="")\r
1035         {\r
1036                 goChunk=addTocChunk(gaProj[0].sPPath,gaProj[0].sDPath);\r
1037                 gbLoadToc=false;\r
1038                 loadData2(gaProj[0].sPPath+gaProj[0].sDPath+gaRoot[0].sToc);\r
1039         }\r
1040 }\r
1041 \r
1042 function updatePTPath(n,aProj)\r
1043 {\r
1044         if(aProj)\r
1045         {\r
1046                 for(var i=0;i<aProj.length;i++)\r
1047                 {\r
1048                         var sFullPath=_getFullPath(gaProj[n].sPPath,aProj[i].sPPath);\r
1049                         for(var j=0;j<gaProj.length;j++)\r
1050                         {\r
1051                                 if(isSamePath(sFullPath,gaProj[j].sPPath))\r
1052                                 {\r
1053                                         if(gaRoot.length<=j||!gaRoot[j])\r
1054                                                 gaRoot[j]=new Object();\r
1055                                         if(!gaRoot[j].sRPath)\r
1056                                         {\r
1057                                                 if(gaRoot[n].sRPath)\r
1058                                                         gaRoot[j].sRPath=gaRoot[n].sRPath+aProj[i].sRPath;\r
1059                                                 else\r
1060                                                         gaRoot[j].sRPath=aProj[i].sRPath;\r
1061                                         }\r
1062                                         break;\r
1063                                 }\r
1064                         }\r
1065                 }\r
1066         }\r
1067 }\r
1068 \r
1069 function putDataXML(xmlDoc,sDocPath)\r
1070 {\r
1071         if(gbLoadToc)\r
1072         {\r
1073                 var tocNode=xmlDoc.getElementsByTagName("toc")[0];\r
1074                 if(tocNode)\r
1075                 {\r
1076                         var sRoot=tocNode.getAttribute("root");\r
1077                         var rmtProject=tocNode.getElementsByTagName("project");\r
1078                         var aRProj=new Array();\r
1079                         if(rmtProject.length>0)\r
1080                         {\r
1081                                 for(var i=0;i<rmtProject.length;i++)\r
1082                                 {\r
1083                                         aRProj[i]=new Object();\r
1084                                         aRProj[i].sPPath=rmtProject[i].getAttribute("url");\r
1085                                         aRProj[i].sRPath=rmtProject[i].getAttribute("path");\r
1086                                 }\r
1087                         }\r
1088                         projReady(sRoot,aRProj);\r
1089                 }\r
1090         }\r
1091         else\r
1092         {\r
1093                 var chunkNode=xmlDoc.getElementsByTagName("tocdata")[0];\r
1094                 if(chunkNode)\r
1095                 {\r
1096                         var aToc=new Array();\r
1097                         processBook(chunkNode,aToc);\r
1098                         putData(aToc);\r
1099                 }\r
1100         }\r
1101 }\r
1102 \r
1103 function processBook(node,aToc)\r
1104 {\r
1105         var i=0;\r
1106         var entry=null;\r
1107         var prevEntry=null;\r
1108         var oChild=node.firstChild;\r
1109         do{\r
1110                 if(oChild)\r
1111                 {\r
1112                         if(oChild.nodeName.indexOf("#")!=0)\r
1113                         {\r
1114                                 var sName=oChild.getAttribute("name");\r
1115                                 var sURL=oChild.getAttribute("url");\r
1116                                 var sRef=oChild.getAttribute("ref");\r
1117                                 var sTarget=oChild.getAttribute("target");\r
1118                                 var sIcons=oChild.getAttribute("images");\r
1119                                 var item=new Object();\r
1120                                 item.sItemName=sName;\r
1121                                 if(sTarget)\r
1122                                         item.sTarget=sTarget;\r
1123                                 if(sIcons)\r
1124                                         item.sIconRef=sIcons;\r
1125                                 if(sURL==null) sURL="";\r
1126                                 item.sItemURL=sURL;\r
1127                                 \r
1128                                 if(oChild.nodeName=="book")\r
1129                                 {\r
1130                                         item.nType=1;\r
1131                                         aToc[aToc.length]=item;\r
1132                                         var nCurrPos=aToc.length;\r
1133                                         processBook(oChild,aToc);\r
1134                                         item.nContents=aToc.length-nCurrPos;\r
1135                                 }\r
1136                                 else if(oChild.nodeName=="item")\r
1137                                 {\r
1138                                         item.nType=2;\r
1139                                         item.nContents=0;\r
1140                                         aToc[aToc.length]=item;\r
1141                                 }\r
1142                                 else if(oChild.nodeName=="remoteitem")\r
1143                                 {\r
1144                                         item.nType=16;\r
1145                                         item.nContents=0;\r
1146                                         aToc[aToc.length]=item;\r
1147                                 }\r
1148                                 else if(oChild.nodeName=="project")\r
1149                                 {\r
1150                                         item.nType=4;\r
1151                                         item.sRefURL=sRef;\r
1152                                         item.nContents=0;\r
1153                                         aToc[aToc.length]=item;\r
1154                                 }\r
1155                                 else if(oChild.nodeName=="chunk")\r
1156                                 {\r
1157                                         item.nType=8;\r
1158                                         item.sRefURL=sRef;\r
1159                                         item.nContents=0;\r
1160                                         aToc[aToc.length]=item;\r
1161                                 }\r
1162                         }\r
1163                 }\r
1164                 else\r
1165                         break;\r
1166                 oChild=oChild.nextSibling;\r
1167         }while(true);\r
1168 }\r
1169 \r
1170 function putData(aTocs)\r
1171 {\r
1172         gaTocsNs61Fix=aTocs;\r
1173         setTimeout("realPutData();",1);\r
1174 }\r
1175 \r
1176 function realPutData()\r
1177 {\r
1178         var aTocs=gaTocsNs61Fix;\r
1179         if(!aTocs) return;\r
1180         if(goChunk)\r
1181         {\r
1182                 var n=gnMinIdx;\r
1183                 goChunk.nMI=gnMinIdx;\r
1184                 goChunk.aTocs=aTocs;\r
1185                 gnMinIdx+=aTocs.length;\r
1186                 if(gnInsIdx!=-1)\r
1187                 {\r
1188                         var oObj=getElement(getCBId(gnInsIdx));\r
1189                         if(oObj)\r
1190                         {\r
1191                                 oObj.innerHTML=writeBookItems(n-1,aTocs.length);\r
1192                                 setTimeout("syncInit()",1);\r
1193                         }\r
1194                 }\r
1195                 else{\r
1196                         document.body.insertAdjacentHTML("beforeEnd",writeBookItems(n-1,aTocs.length));\r
1197                         var oParam=new Object();\r
1198                         oParam.oTocInfo=null;\r
1199                         var oMsg=new whMessage(WH_MSG_GETTOCPATHS,this,1,oParam);\r
1200                         if(SendMessage(oMsg))\r
1201                         {\r
1202                                 if (oMsg.oParam.oTocInfo)\r
1203                                         syncWithPaths(oMsg.oParam.oTocInfo);\r
1204                         }\r
1205                 }       \r
1206         }\r
1207 }\r
1208 \r
1209 function syncWithPaths(oTopicParam)\r
1210 {\r
1211         var aPaths=getTocPaths(oTopicParam);\r
1212         if(gsTP)\r
1213                 gaBTPs=aPaths;\r
1214         else{\r
1215                 var sPath=getClosestTocPath(aPaths);\r
1216                 if(sPath!=null)\r
1217                 {\r
1218                         gsTP=sPath;\r
1219                         setTimeout("syncInit()",1);\r
1220                 }\r
1221         }\r
1222 }\r
1223 \r
1224 function window_OnLoad()\r
1225 {\r
1226         if(gsBgImage&&gsBgImage.length>0)\r
1227         {\r
1228                 document.body.background=gsBgImage;\r
1229         }\r
1230         if(gsBgColor&&gsBgColor.length>0)\r
1231         {\r
1232                 document.body.bgColor=gsBgColor;\r
1233         }\r
1234         loadToc();\r
1235         var oMsg=new whMessage(WH_MSG_SHOWTOC,this,1,null)\r
1236         SendMessage(oMsg);\r
1237 }\r
1238 \r
1239 function loadImages()\r
1240 {\r
1241         if(giBookClose)\r
1242         {\r
1243                 gaImgs[gnImages]=giBookClose;\r
1244                 gnImages++;\r
1245         }               \r
1246         if(giBookOpen)\r
1247         {\r
1248                 gaImgs[gnImages]=giBookOpen;\r
1249                 gnImages++;\r
1250         }               \r
1251         if(giBookItem)\r
1252         {\r
1253                 gaImgs[gnImages]=giBookItem;\r
1254                 gnImages++;\r
1255         }               \r
1256         if(giURLItem)\r
1257         {\r
1258                 gaImgs[gnImages]=giURLItem;\r
1259                 gnImages++;\r
1260         }               \r
1261         if(giNewBookClose)\r
1262         {\r
1263                 gaImgs[gnImages]=giNewBookClose;\r
1264                 gnImages++;\r
1265         }               \r
1266         if(giNewBookOpen)\r
1267         {\r
1268                 gaImgs[gnImages]=giNewBookOpen;\r
1269                 gnImages++;\r
1270         }               \r
1271         if(giNewBookItem)\r
1272         {\r
1273                 gaImgs[gnImages]=giNewBookItem;\r
1274                 gnImages++;\r
1275         }               \r
1276         if(giNewURLItem)\r
1277         {\r
1278                 gaImgs[gnImages]=giNewURLItem;\r
1279                 gnImages++;\r
1280         }\r
1281         if(gnImages>0)\r
1282         {\r
1283                 setTimeout("loadDataAfter();",1000);\r
1284                 loadImage(gaImgs[0]);\r
1285         }\r
1286         else\r
1287                 loadDataAfter();\r
1288 }\r
1289 \r
1290 function loadImage(sURL)\r
1291 {\r
1292         var oImg=new Image();\r
1293         oImg.onload=checkImageLoading;\r
1294         oImg.onerror=errorImageLoading;\r
1295         oImg.src=_getFullPath(gaProj[0].sPPath,sURL);\r
1296 }\r
1297 \r
1298 function loadDataAfter()\r
1299 {\r
1300         if(!gbLoadData)\r
1301         {\r
1302                 gbLoadData=true;\r
1303                 loadTData();\r
1304         }\r
1305 }\r
1306 \r
1307 function errorImageLoading()\r
1308 {\r
1309         gnLoadedImages++;\r
1310         if(gnImages==gnLoadedImages)\r
1311                 loadDataAfter();\r
1312         else\r
1313                 loadImage(gaImgs[gnLoadedImages]);      \r
1314 }\r
1315 \r
1316 function checkImageLoading()\r
1317 {\r
1318         gnLoadedImages++;\r
1319         if(gnImages==gnLoadedImages)\r
1320                 loadDataAfter();\r
1321         else\r
1322                 loadImage(gaImgs[gnLoadedImages]);      \r
1323 }\r
1324 \r
1325 function window_unload()\r
1326 {\r
1327         UnRegisterListener2(this,WH_MSG_PROJECTREADY);\r
1328         UnRegisterListener2(this,WH_MSG_SYNCTOC);\r
1329         UnRegisterListener2(this,WH_MSG_SHOWTOC);\r
1330 }\r
1331 \r
1332 function onSendMessage(oMsg)\r
1333 {\r
1334         if(oMsg)\r
1335         {\r
1336                 var nMsgId=oMsg.nMessageId;\r
1337                 if(nMsgId==WH_MSG_PROJECTREADY)\r
1338                 {\r
1339                         loadToc();\r
1340                 }\r
1341                 else if(nMsgId==WH_MSG_SYNCTOC)\r
1342                 {\r
1343                         if(gbReady)\r
1344                         {\r
1345                                 syncWithPaths(oMsg.oParam);\r
1346                         }\r
1347                 }\r
1348                 else if(nMsgId==WH_MSG_SHOWTOC)\r
1349                 {\r
1350                         if(!gbNav6)\r
1351                                 document.body.focus();\r
1352                 }\r
1353         }\r
1354         return true;\r
1355 }\r
1356 \r
1357 if (window.gbWhUtil&&window.gbWhVer&&window.gbWhMsg&&window.gbWhProxy)\r
1358 {\r
1359         RegisterListener2(this,WH_MSG_PROJECTREADY);\r
1360         RegisterListener2(this,WH_MSG_SYNCTOC);\r
1361         RegisterListener2(this,WH_MSG_SHOWTOC);\r
1362         goFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
1363         goHFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");\r
1364 \r
1365         window.onload=window_OnLoad;\r
1366         window.onbeforeunload=window_BUnload;\r
1367         window.onunload=window_unload;\r
1368         gbWhTHost=true;\r
1369 }\r
1370 else\r
1371         document.location.reload();\r
1372 \r