Salome HOME
SALOME PAL V1_4_1
[modules/smesh.git] / doc / salome / gui / SMESH / whthost.js
diff --git a/doc/salome/gui/SMESH/whthost.js b/doc/salome/gui/SMESH/whthost.js
new file mode 100755 (executable)
index 0000000..80806d7
--- /dev/null
@@ -0,0 +1,1372 @@
+var gaHSLoad=new Array();\r
+var gnMinIdx=0;\r
+var gnInsIdx=-1;\r
+var gsLoadingDivID="LoadingDiv";\r
+var gsLoadingMsg="Loading, click here to cancel...";\r
+var gaProj=null;\r
+var gaTocs=new Array();\r
+var goChunk=null;\r
+var gbReady=false;\r
+var gbLoadToc=false;\r
+var gbXML=false;\r
+var gaRoot=new Array();\r
+var gnCC=-1;\r
+var gsTP="";\r
+var gaBTPs="";\r
+var gsCTPath="";\r
+var gnLT=-1;\r
+var gsPathSplit="\n";\r
+var gsBgColor="#ffffff";\r
+var gsBgImage="";\r
+var goFont=null;\r
+var goHFont=null;\r
+\r
+var gsMargin="0pt";\r
+var gsIndent="15pt";\r
+var gsABgColor="#cccccc";\r
+\r
+var giBookClose="";\r
+var giBookOpen="";\r
+var giBookItem="";\r
+var giURLItem="";\r
+var giNewBookClose="";\r
+var giNewBookOpen="";\r
+var giNewBookItem="";\r
+var giNewURLItem="";\r
+var gnImages=0;\r
+var gnLoadedImages=0;\r
+var gaImgs=new Array();\r
+var gbLoadData=false;\r
+var gobj=null;\r
+var gaTocsNs61Fix=null;\r
+var gbWhTHost=false;\r
+var gBookItems=new Array();\r
+var gInSync=false;\r
+\r
+function setBackground(sBgImage)\r
+{\r
+       gsBgImage=sBgImage;\r
+}\r
+\r
+function setBackgroundcolor(sBgColor)\r
+{\r
+       gsBgColor=sBgColor;\r
+}\r
+\r
+function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
+{\r
+       var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
+       if(sType=="Normal") goFont=vFont;\r
+       else if(sType=="Hover") goHFont=vFont;\r
+}\r
+\r
+function setActiveBgColor(sBgColor){gsABgColor=sBgColor;}\r
+\r
+function setMargin(sMargin){gsMargin=sMargin;}\r
+\r
+function setIndent(sIndent){gsIndent=sIndent;}\r
+\r
+function setIcon(sType,sURL)\r
+{\r
+       if(sType=="BookOpen")\r
+               giBookOpen=sURL;\r
+       else if(sType=="BookClose")\r
+               giBookClose=sURL;\r
+       else if(sType=="Item")\r
+               giBookItem=sURL;\r
+       else if(sType=="RemoteItem")\r
+               giURLItem=sURL;\r
+       else if(sType=="NewBookClose")\r
+               giNewBookClose=sURL;\r
+       else if(sType=="NewBookOpen")\r
+               giNewBookOpen=sURL;\r
+       else if(sType=="NewItem")\r
+               giNewBookItem=sURL;\r
+       else if(sType=="NewRemoteItem")\r
+               giNewURLItem=sURL;              \r
+}\r
+\r
+function bookItem(sTarget, sURL)\r
+{\r
+       if (sTarget)\r
+               this.sTarget=sTarget;\r
+       else\r
+               this.sTarget="bsscright";\r
+       this.sURL=sURL;\r
+}\r
+\r
+function addBookItem(sBookId, sTarget, sURL)\r
+{\r
+       gBookItems[sBookId] = new bookItem(sTarget, sURL);              \r
+}\r
+\r
+function tocChunk(sPPath,sDPath)\r
+{\r
+       this.sPPath=sPPath;\r
+       this.sDPath=sDPath;\r
+       this.nMI=-1;\r
+       this.aTocs=null;\r
+}\r
+\r
+function addTocChunk(sPPath,sDPath)\r
+{\r
+       var oChunk=new tocChunk(sPPath,sDPath);\r
+       gaTocs[gaTocs.length]=oChunk;\r
+       return oChunk;\r
+}\r
+\r
+function isHSLoad(nIdx)\r
+{\r
+       for(var i=0;i<gaHSLoad.length;i++){\r
+               if(gaHSLoad[i]==nIdx)\r
+                       return true;\r
+       }\r
+       return false;\r
+}\r
+\r
+function setHSLoad(nIdx)\r
+{\r
+       if(!isHSLoad(nIdx))\r
+       {\r
+               var len=gaHSLoad.length;\r
+               for(var i=0;i<len;i++){\r
+                       if(gaHSLoad[i]==-1)\r
+                       {\r
+                               gaHSLoad[i]=nIdx;\r
+                               return;\r
+                       }\r
+               }\r
+               gaHSLoad[len]=nIdx;\r
+       }\r
+}\r
+\r
+function setHSUnLoad(nIdx)\r
+{\r
+       if(isHSLoad(nIdx))\r
+       {\r
+               for(var i=0;i<gaHSLoad.length;i++){\r
+                       if(gaHSLoad[i]==nIdx)\r
+                       {\r
+                               gaHSLoad[i]=-1;\r
+                               return;\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+function cancelLoading(nIdx)\r
+{\r
+       var oObj=getElement(getCBId(nIdx));\r
+       if(oObj)\r
+       {\r
+               oObj.innerHTML="";\r
+               setHSUnLoad(nIdx)\r
+               ExpandIt(nIdx);\r
+       }\r
+}\r
+\r
+function cancelAll()\r
+{\r
+       var eLoadingDivs=getElement(gsLoadingDivID);\r
+       if(eLoadingDivs)\r
+               cancelHSLoading(eLoadingDivs);\r
+}\r
+\r
+function cancelHSLoading(eLoadingDiv)\r
+{\r
+       var eParent=eLoadingDiv.parentElement;\r
+       if(eParent){\r
+               var sId=eParent.id;\r
+               sId=sId.substring(5);\r
+               var nIdx=parseInt(sId);\r
+               if(!isNaN(nIdx))\r
+                       cancelLoading(nIdx)\r
+       }\r
+}\r
+\r
+function checkBookItem(nIdx)\r
+{\r
+       if(!gInSync)\r
+       {\r
+               var sBookId=getBookId(nIdx);\r
+               if(gBookItems[sBookId])\r
+               {\r
+                       window.open(gBookItems[sBookId].sURL,gBookItems[sBookId].sTarget);\r
+               }\r
+       }\r
+}\r
+\r
+function insertBookItems(nIdx,num)\r
+{\r
+       checkBookItem(nIdx);\r
+       var sChildBookId=getCBId(nIdx);\r
+       var eChildDiv=getElement(sChildBookId);\r
+       if(eChildDiv){\r
+               if((eChildDiv.childNodes&&eChildDiv.childNodes.length==0)||\r
+                       (eChildDiv.all&&eChildDiv.all.length==0)){\r
+                       var sHTML=writeBookItems(nIdx,num);\r
+                       eChildDiv.innerHTML=sHTML;\r
+                       setTimeout("syncInit()",1);\r
+               }\r
+       }\r
+       ExpandIt(nIdx);\r
+}\r
+\r
+function writeBook(nIdx,bLocal)\r
+{\r
+       var sIcon=getBookImage(nIdx,true);\r
+       var sName=_textToHtml(getItemName(nIdx));\r
+       sIcon=_textToHtml_nonbsp(sIcon);\r
+       \r
+       var sHTML="<div id=\""+getPBId(nIdx)+"\" class=parent>";\r
+       sHTML+="<p><nobr><a id=\""+getBookId(nIdx)+"\" href=\"javascript:void(0);\" onfocus=\"markBook("+nIdx+");\" onclick=\"";\r
+\r
+       if(getItemType(nIdx)==1)\r
+               sHTML+="insertBookItems("+nIdx+", "+getItemContentsNum(nIdx);\r
+       else\r
+               sHTML+="tocExpandHelpSet("+nIdx+","+bLocal;\r
+       sHTML+=");return false;\" title=\""+sName+"\"><img alt=\"Book\" name=\""+getBId(nIdx)+"\" src=\""+sIcon+"\" border=0 align=\"absmiddle\">";\r
+       var sURL=_textToHtml_nonbsp(getItemURL(nIdx));\r
+       if(sURL!="")\r
+               addBookItem(getBookId(nIdx),_textToHtml_nonbsp(getTopicTarget(nIdx)),sURL);\r
+       sHTML+="&nbsp;"+sName+"</a></nobr></p></div><div id=\""+getCBId(nIdx)+"\" class=child></div>";\r
+       return sHTML;\r
+}\r
+\r
+function getBookId(nIdx){return "B_"+nIdx;}\r
+\r
+function getItemId(nIdx){return "I_"+nIdx;}\r
+\r
+function markBook(nIdx)\r
+{\r
+       var obj=getElement(getItemId(nIdx));\r
+       if(obj==null)\r
+               obj=getElement(getBookId(nIdx));\r
+       if(gbNav6)\r
+       {\r
+               gobj=obj;\r
+               setTimeout("delayMarkObj();",1);\r
+       }\r
+       else\r
+               markObj(obj);\r
+}\r
+\r
+function delayMarkObj()\r
+{\r
+       if(gobj)\r
+       {\r
+               markObj(gobj);\r
+               gobj=null;\r
+       }\r
+}\r
+\r
+function markObj(obj)\r
+{\r
+       if(obj!=null)\r
+       {\r
+               HighLightElement(obj,gsABgColor,"transparent");\r
+               var sPath=calTocPath(obj);\r
+               if(gsCTPath!=sPath)\r
+                       gsCTPath=sPath;\r
+       }\r
+}\r
+\r
+function markItem(nIdx)\r
+{\r
+       var obj=getElement(getItemId(nIdx));\r
+       if(gbNav6)\r
+       {\r
+               gobj=obj;\r
+               setTimeout("delayMarkObj();",1);\r
+       }\r
+       else\r
+               markObj(getElement(getItemId(nIdx)));\r
+}\r
+\r
+function calTocPath(obj)\r
+{\r
+       var sPath=getInnerText(obj).substring(1);\r
+       var pObj=getParentNode(obj);\r
+       do\r
+       {\r
+               while(pObj!=null&&!isCBId(pObj.id)) pObj=getParentNode(pObj);\r
+               if(pObj!=null)\r
+               {\r
+                       var nId=getIdByCBId(pObj.id);\r
+                       var sObj=getElement(getPBId(nId));\r
+                       if(sObj!=null)\r
+                       {\r
+                               var objs=getItemsByBook(sObj);\r
+                               for(var i=0;i<objs.length;i++)\r
+                               {\r
+                                       var sText=getInnerText(objs[i]);\r
+                                       \r
+                                       if(sText.length!=0)\r
+                                       {\r
+                                               sPath=sText.substring(1)+gsPathSplit+sPath;\r
+                                               break;\r
+                                       }\r
+                               }\r
+                       }\r
+                       pObj=getParentNode(pObj);\r
+               }\r
+       }while(pObj!=null);\r
+       return sPath;\r
+}\r
+\r
+function writeAnItem(nIdx)\r
+{\r
+       var sTarget=_textToHtml_nonbsp(getTopicTarget(nIdx));\r
+       var sIcon=getItemIcon(nIdx,0);\r
+       if(sIcon=="")\r
+       {\r
+               var nItemType=getItemType(nIdx);\r
+               if(nItemType&2)\r
+                       sIcon=getItemImage(nIdx,false);\r
+               else\r
+                       sIcon=getItemImage(nIdx,true);\r
+       }\r
+       sIcon=_textToHtml_nonbsp(sIcon);\r
+       var sName=_textToHtml(getItemName(nIdx));\r
+       var sHTML="<p><nobr><a id=\""+getItemId(nIdx)+"\" onfocus=\"markItem("+nIdx+");\""\r
+       var sAltString="";\r
+       if (nItemType&2)\r
+               sAltString="Page";\r
+       else\r
+               sAltString="Remote Page";\r
+       if(sTarget!="")\r
+               sHTML+="target=\""+sTarget+"\" ";\r
+       sHTML+="href=\""+_textToHtml_nonbsp(getItemURL(nIdx))+"\" title=\""+sName+"\"><img alt=\""+sAltString+"\" src=\""+sIcon+"\" border=0 align=\"absmiddle\">&nbsp;"+sName+"</a></nobr></p>";\r
+       return sHTML;\r
+}\r
+\r
+function writeBookItems(nIdx,num)\r
+{\r
+       var sHTML="";\r
+       if(num>0){\r
+               var nCIdx=0;\r
+               do{\r
+                       nCIdx++;\r
+                       var i=nIdx+nCIdx;\r
+                       var nItemType=getItemType(i);\r
+                       if(nItemType==1){\r
+                               sHTML+=writeBook(i);    \r
+                               nCIdx+=getItemContentsNum(i);           \r
+                       }\r
+                       else if(nItemType==2||nItemType==16){\r
+                               sHTML+=writeAnItem(i);\r
+                       }else if(nItemType==4){\r
+                               sHTML+=writeBook(i,false);\r
+                       }else if(nItemType==8){\r
+                               sHTML+=writeBook(i,true);\r
+                       }\r
+               }\r
+               while(nCIdx<num);\r
+       }\r
+       return sHTML;\r
+}\r
+\r
+function tocExpandHelpSet(nIdx,bLocal)\r
+{\r
+       checkBookItem(nIdx);\r
+       cancelAll();\r
+       if(isHSLoad(nIdx))\r
+               ExpandIt(nIdx);\r
+       else{\r
+               setHSLoad(nIdx);\r
+               var sSrc="";\r
+               if(bLocal){\r
+                       var oChunk=getChunk(nIdx);\r
+                       if(oChunk)\r
+                       {\r
+                               goChunk=addTocChunk(oChunk.sPPath,oChunk.sDPath);\r
+                               sSrc=oChunk.aTocs[nIdx-oChunk.nMI].sRefURL;\r
+                       }\r
+               }\r
+               else{\r
+                       sSrc=getRefURL(nIdx);\r
+                       var nProj=getProject(sSrc);\r
+                       if(nProj!=-1)\r
+                       {\r
+                               goChunk=addTocChunk(gaProj[nProj].sPPath,gaProj[nProj].sDPath);\r
+                               sSrc=gaRoot[nProj].sToc;\r
+                       }\r
+                       else\r
+                               goChunk=null;\r
+               }\r
+               if(goChunk)\r
+               {\r
+                       PrepareLoading(nIdx);\r
+                       ExpandIt(nIdx);\r
+                       gbLoadToc=false;\r
+                       loadData2(goChunk.sPPath+goChunk.sDPath+sSrc);\r
+               }\r
+       }\r
+}\r
+\r
+function getProject(sSrc)\r
+{\r
+       for(var i=0;i<gaProj.length;i++)\r
+       {\r
+               if(isSamePath(getPath(sSrc),gaProj[i].sPPath))\r
+               {\r
+                       return i;\r
+               }\r
+       }\r
+       return -1;\r
+}\r
+\r
+function getPath(sPath)\r
+{\r
+       if(sPath!="")\r
+       {\r
+               sPath=_replaceSlash(sPath);\r
+               var nPosFile=sPath.lastIndexOf("/");\r
+               sPath=sPath.substring(0,nPosFile+1);\r
+       }\r
+       return sPath;\r
+}\r
+\r
+function isSamePath(sPath1,sPath2)\r
+{\r
+       return (sPath1.toLowerCase()==sPath2.toLowerCase());\r
+}\r
+\r
+function PrepareLoading(nIdx)\r
+{\r
+       gnInsIdx=nIdx;\r
+       if(!gsTP)\r
+       {\r
+               var oObj=getElement(getCBId(gnInsIdx));\r
+               if(oObj)\r
+                       oObj.innerHTML=writeLoadingDiv(nIdx);\r
+       }\r
+}\r
+\r
+function writeLoadingDiv(nIdx)\r
+{\r
+       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
+}\r
+\r
+function getItemName(nIdx)\r
+{\r
+       var oChunk=getChunk(nIdx);\r
+       if(oChunk)\r
+               return oChunk.aTocs[nIdx-oChunk.nMI].sItemName;\r
+       else\r
+               return null;\r
+}\r
+\r
+function getItemContentsNum(nIdx)\r
+{\r
+       var oChunk=getChunk(nIdx);\r
+       if(oChunk)\r
+               return oChunk.aTocs[nIdx-oChunk.nMI].nContents;\r
+       else\r
+               return null;\r
+}\r
+\r
+function getItemType(nIdx)\r
+{\r
+       var oChunk=getChunk(nIdx);\r
+       if(oChunk)\r
+               return oChunk.aTocs[nIdx-oChunk.nMI].nType;\r
+       else\r
+               return 0;\r
+}\r
+\r
+function getItemURL(nIdx)\r
+{\r
+       var oChunk=getChunk(nIdx);\r
+       if(oChunk)\r
+       {\r
+               var sPath=oChunk.aTocs[nIdx-oChunk.nMI].sItemURL;\r
+               if(!(sPath==null||sPath==""))\r
+               {\r
+                       return _getFullPath(oChunk.sPPath,sPath);\r
+               }\r
+       }\r
+       return "";\r
+}\r
+\r
+function getRefURL(nIdx)\r
+{\r
+       var oChunk=getChunk(nIdx);\r
+       if(oChunk)\r
+       {\r
+               var sPath=oChunk.aTocs[nIdx-oChunk.nMI].sRefURL;\r
+               if(!(sPath==null||sPath==""))\r
+               {\r
+                       return _getFullPath(oChunk.sPPath,sPath)\r
+               }\r
+       }\r
+       return "";\r
+}\r
+\r
+function getTopicTarget(nIdx)\r
+{\r
+       var oChunk=getChunk(nIdx);\r
+       if(oChunk)\r
+       {\r
+               if(typeof(oChunk.aTocs[nIdx-oChunk.nMI].sTarget)!="undefined")\r
+                       return oChunk.aTocs[nIdx-oChunk.nMI].sTarget;\r
+       }\r
+       return "";\r
+}\r
+\r
+function getItemIcon(nIdx,nIconIdx)\r
+{\r
+       var oChunk=getChunk(nIdx);\r
+       if(oChunk)\r
+       {\r
+               if(typeof(oChunk.aTocs[nIdx-oChunk.nMI].sIconRef)!="undefined")\r
+               {\r
+                       var sIconRef=oChunk.aTocs[nIdx-oChunk.nMI].sIconRef;\r
+                       var nIndex=sIconRef.indexOf(";");\r
+                       while(nIconIdx-->0&&nIndex!=-1)\r
+                       {\r
+                               sIconRef=sIconRef.substring(nIndex+1);\r
+                               nIndex=sIconRef.indexOf(";");\r
+                       }\r
+                       if(nIconIdx<0)\r
+                       {\r
+                               if(nIndex!=-1)\r
+                                       sIconRef=sIconRef.substring(0,nIndex);\r
+                               return _getFullPath(oChunk.sPPath,sIconRef)\r
+                       }\r
+               }\r
+       }\r
+       return "";\r
+}\r
+\r
+function TocWriteClassStyle()\r
+{\r
+       var sStyle="<STYLE TYPE='text/css'>\n";\r
+       if (gsBgImage)\r
+               sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";\r
+       else\r
+               sStyle+="body {border-top:black 1px solid;}\n";\r
+       sStyle+="P {"+getFontStyle(goFont)+"margin-top:"+gsMargin+";margin-bottom:"+gsMargin+";}\n";\r
+       sStyle+="DIV {margin-top:"+gsMargin+";margin-bottom:"+gsMargin+";}\n";\r
+       sStyle+=".parent {margin-left:0pt;}\n";\r
+       sStyle+=".child {display:none;margin-left:"+gsIndent+";}\n";\r
+       sStyle+="A:link {"+getFontStyle(goFont)+"}\n";\r
+       sStyle+="A:visited {"+getFontStyle(goFont)+"}\n";\r
+       sStyle+="A:active {background-color:"+gsABgColor+";}\n";\r
+       sStyle +="A:hover {"+getFontStyle(goHFont)+"}\n";\r
+       sStyle+="</STYLE>";\r
+       document.write(sStyle);\r
+}\r
+\r
+function TocWriteFixedWidth(bBegin,nWidth)\r
+{\r
+       if((gbIE4)&&(gbMac)&&(!gbIE5)){\r
+               if(bBegin)\r
+                       document.write("<table width="+nWidth+" border=0><tr><td>");\r
+               else\r
+                       document.write("</td></tr></table>");\r
+       }\r
+}\r
+\r
+function TocInitPage()\r
+{\r
+       var tempColl=getItemsByBook(document.body);\r
+       if(tempColl.length>0)\r
+               tempColl[0].focus();\r
+}\r
+\r
+function getItemsFromObj(obj)\r
+{\r
+       var aAnchor=new Array();\r
+       var tempColl=getChildrenByTag(obj,"P");\r
+       if(tempColl&&tempColl.length>0)\r
+       {\r
+               var anobr=new Array();\r
+               for(var i=0;i<tempColl.length;i++)\r
+               {\r
+                       var tempNobr=getChildrenByTag(tempColl[i],"NOBR");\r
+                       if(tempNobr&&tempNobr.length>0)\r
+                       {\r
+                               for(var j=0;j<tempNobr.length;j++)\r
+                                       anobr[anobr.length]=tempNobr[j];\r
+                       }\r
+               }\r
+               for(var s=0;s<anobr.length;s++)\r
+               {\r
+                       var tempAnchor=getChildrenByTag(anobr[s],"A");\r
+                       if(tempAnchor&&tempAnchor.length>0)\r
+                       {\r
+                               for(var u=0;u<tempAnchor.length;u++)\r
+                                       aAnchor[aAnchor.length]=tempAnchor[u];\r
+                       }\r
+               }\r
+       }\r
+       return aAnchor;\r
+}\r
+\r
+function getItemsByBook(obj)\r
+{\r
+       var aAnchor=new Array();\r
+       var aTAnchor=getItemsFromObj(obj);\r
+       for(var i=0;i<aTAnchor.length;i++)\r
+       {\r
+               aAnchor[aAnchor.length]=aTAnchor[i];\r
+       }\r
+       var tempBook=getChildrenByTag(obj,"DIV");\r
+       if(tempBook&&tempBook.length>0)\r
+       {\r
+               for(var j=0;j<tempBook.length;j++)\r
+               {\r
+                       var aTAnchorDiv=getItemsFromObj(tempBook[j]);\r
+                       for(var s=0;s<aTAnchorDiv.length;s++)\r
+                       {\r
+                               aAnchor[aAnchor.length]=aTAnchorDiv[s];\r
+                       }\r
+               }\r
+       }       \r
+       return aAnchor;\r
+}\r
+\r
+function ExpandIt(nId)\r
+{\r
+       if(!gsTP)\r
+               ExpandIt2(nId,false);\r
+}\r
+\r
+function ExpandIt2(nId,bForceOpen)\r
+{\r
+       if(gbIE4||gbNav6){\r
+               var oC=TocExpand(nId,true,bForceOpen);\r
+               var nNewScroll=document.body.scrollTop;\r
+               if(oC.style.display=="block"){\r
+                       var nTop=oC.offsetTop;\r
+                       var nBottom=nTop+oC.offsetHeight;\r
+                       if(document.body.scrollTop+document.body.clientHeight<nBottom){\r
+                               nNewScroll=nBottom-document.body.clientHeight;\r
+                       }\r
+                       if(nBottom-nTop>document.body.clientHeight){\r
+                               nNewScroll=nTop-20;\r
+                       }\r
+               }\r
+               document.body.scrollTop=nNewScroll;\r
+       }\r
+}\r
+\r
+function TocExpand(nId,bChangeImg,bForceOpen)\r
+{\r
+       var oDiv=getElement(getCBId(nId));\r
+       if(oDiv==null) return null;\r
+\r
+       var whichIm=document.images[getBId(nId)];\r
+       if((oDiv.style.display!="block")||bForceOpen){\r
+               oDiv.style.display="block";\r
+               if(bChangeImg){\r
+                       var sPath=getPath(whichIm.src);\r
+                       sPath=_getFullPath(sPath,getBookImage(nId,false));\r
+                       whichIm.src=sPath;              \r
+               }\r
+       }else{\r
+               oDiv.style.display="none";\r
+               if(bChangeImg){\r
+                       var sPath=getPath(whichIm.src);\r
+                       sPath=_getFullPath(sPath,getBookImage(nId,true));\r
+                       whichIm.src=sPath;\r
+               }\r
+               if(gbMac&&gbIE5){\r
+                       this.parent.document.getElementById("tocIFrame").style.width="101%";\r
+                       this.parent.document.getElementById("tocIFrame").style.width="100%";\r
+               }\r
+       }\r
+       return oDiv;\r
+}\r
+\r
+function getChunkId(n)\r
+{\r
+       var nCandidate=-1;\r
+       for(var i=0;i<gaTocs.length;i++){\r
+               if(gaTocs[i].nMI<=n){\r
+                       nCandidate=i;\r
+               }\r
+               else\r
+                       break;\r
+       }\r
+       if(nCandidate!=-1&&gaTocs[nCandidate].nMI!=-1)\r
+               return nCandidate;\r
+       else\r
+               return -1;\r
+}\r
+\r
+function getChunk(n)\r
+{\r
+       if(gnCC!=-1&&gaTocs[gnCC].nMI<=n&&(gnCC==gaTocs.length-1||\r
+               gaTocs[gnCC+1].nMI>n))\r
+       {       \r
+               return gaTocs[gnCC];\r
+       }\r
+       else{\r
+               gnCC=getChunkId(n);\r
+               if(gnCC!=-1)\r
+                       return gaTocs[gnCC];\r
+               else\r
+                       return null;\r
+       }\r
+}\r
+\r
+function getBookImage(nIdx,bClosed)\r
+{\r
+       var nIdx=bClosed?0:1;\r
+       var sIcon=getItemIcon(nIdx,nIdx);\r
+       if(sIcon=="")\r
+               if(bClosed)\r
+                       sIcon=giBookClose;\r
+               else\r
+                       sIcon=giBookOpen;\r
+       return _getFullPath(gaProj[0].sPPath,sIcon);\r
+}\r
+\r
+function getItemImage(nIdx,bRemote)\r
+{\r
+       var sIcon=getItemIcon(nIdx,0);\r
+       if(sIcon=="")\r
+               if(bRemote)\r
+                       sIcon=giURLItem;\r
+               else\r
+                       sIcon=giBookItem;\r
+       return _getFullPath(gaProj[0].sPPath,sIcon);\r
+}\r
+\r
+function expandToc(oObj,sRest,aIdList)\r
+{\r
+       var len=aIdList.length;\r
+       var nPos=sRest.indexOf(gsPathSplit);\r
+       if(nPos!=-1)\r
+       {\r
+               sPart=sRest.substring(0,nPos);\r
+               sRest=sRest.substring(nPos+1);\r
+       }\r
+       else\r
+       {\r
+               sPart=sRest;\r
+               var aTagAs=getItemsByBook(oObj);\r
+               for(var s=0;s<aTagAs.length;s++)\r
+               {\r
+                       var sText=getInnerText(aTagAs[s]);\r
+                       if(sText.length>0)\r
+                               sText=sText.substring(1);\r
+                       if(sText==sPart)\r
+                       {\r
+                               aIdList[len]=aTagAs[s];\r
+                               return 1;\r
+                       }\r
+               }\r
+               return 0;\r
+       }\r
+               \r
+       var aChildren=getChildrenByTag(oObj,"DIV");\r
+       for(var i=0;i<aChildren.length;i++)\r
+       {\r
+               var sPId=aChildren[i].id;\r
+               if(!isPBId(sPId))\r
+                       continue;\r
+               var sText=getInnerText(aChildren[i]);\r
+               if(sText.substring(1)!=sPart)\r
+                       continue;\r
+               aIdList[len]=getIdByPBId(sPId);\r
+               var sCId=getCBId(aIdList[len]);\r
+               var oCObj=getElement(sCId);\r
+               if(oCObj)\r
+               {\r
+                       if(oCObj.innerHTML=="")\r
+                       {\r
+                               var obj=getItemsByBook(aChildren[i]);\r
+                               if(obj.length>0)\r
+                               {\r
+                                       if(gbNav6)\r
+                                       {\r
+                                               var sCommand=obj[0].getAttribute("onClick");\r
+                                               var nCommand=sCommand.indexOf(";");\r
+                                               sCommand=sCommand.substring(0,nCommand);\r
+                                               setTimeout(sCommand,1);\r
+                                       }\r
+                                       else\r
+                                               obj[0].click();\r
+                               }\r
+                               return -1;\r
+                       }\r
+                       var nRet=expandToc(oCObj,sRest,aIdList);\r
+                       if(nRet)\r
+                               return nRet;\r
+               }\r
+       }\r
+       aIdList.length=len;\r
+       return 0;\r
+}\r
+\r
+function getIdByPBId(sPId)\r
+{\r
+       return parseInt(sPId.substring(5,sPId.length-6));\r
+}\r
+\r
+function getIdByCBId(sCId)\r
+{\r
+       return parseInt(sCId.substring(5,sCId.length-5));\r
+}\r
+\r
+function isPBId(sId)\r
+{\r
+       return (sId&&sId.indexOf("Book_")==0&&sId.lastIndexOf("Parent")==sId.length-6);\r
+}\r
+\r
+function isCBId(sId)\r
+{\r
+       return (sId&&sId.indexOf("Book_")==0&&sId.lastIndexOf("Child")==sId.length-5);\r
+}\r
+\r
+function getBId(nIdx)\r
+{\r
+       return "Book_"+nIdx;\r
+}\r
+\r
+function getPBId(nIdx)\r
+{\r
+       return getBId(nIdx)+"Parent";\r
+}\r
+\r
+function getCBId(nIdx)\r
+{\r
+       return getBId(nIdx)+"Child";\r
+}\r
+\r
+function getClosestTocPath(aPaths)\r
+{\r
+       var nMaxSimilarity=0;\r
+       var nThatIndex=-1;\r
+       var sPath=null;\r
+       if(aPaths.length==0) return sPath;\r
+       for(var i=0;i<aPaths.length;i++)\r
+       {\r
+               var nSimilarity=comparePath(gsCTPath,aPaths[i]);\r
+               if(nSimilarity>nMaxSimilarity)\r
+               {\r
+                       nMaxSimilarity=nSimilarity;\r
+                       nThatIndex=i;\r
+               }\r
+       }\r
+       if(nThatIndex!=-1)\r
+       {\r
+               sPath=aPaths[nThatIndex];\r
+       }\r
+       else\r
+       {\r
+               sPath=aPaths[0];\r
+       }\r
+       return sPath;\r
+}\r
+\r
+function comparePath(sPath1,sPath2)\r
+{\r
+       var nMaxSimilarity=0;\r
+       var nStartPos1=0;\r
+       var nPos1=-1;\r
+       var nStartPos2=0;\r
+       var nPos2=-1;\r
+       do{\r
+               var sCheck1=null;\r
+               var sCheck2=null;\r
+               nPos1=sPath1.indexOf(gsPathSplit,nStartPos1);\r
+               if(nPos1!=-1)\r
+               {\r
+                       sCheck1=sPath1.substring(nStartPos1,nPos1);\r
+                       nStartPos1=nPos1+1;\r
+               }\r
+               else\r
+               {\r
+                       sCheck1=sPath1.substring(nStartPos1);\r
+                       nStartPos1=-1;\r
+               }\r
+               nPos2=sPath2.indexOf(gsPathSplit,nStartPos2);\r
+               if(nPos1!=-1)\r
+               {\r
+                       sCheck2=sPath2.substring(nStartPos2,nPos2);\r
+                       nStartPos2=nPos2+1;\r
+               }\r
+               else\r
+               {\r
+                       sCheck2=sPath2.substring(nStartPos2);\r
+                       nStartPos2=-1;\r
+               }\r
+               if(sCheck1==sCheck2)\r
+                       nMaxSimilarity++;\r
+               else\r
+                       break;\r
+       }while(nStartPos1!=-1&&nStartPos2!=-1);\r
+       return nMaxSimilarity;\r
+}\r
+\r
+function getTocPaths(oTopicParam)\r
+{\r
+       var aRelTocPaths=oTopicParam.aPaths;\r
+       var aPaths=new Array();\r
+       for(var i=0;i<gaProj.length;i++)\r
+       {\r
+               if(isSamePath(gaProj[i].sPPath,oTopicParam.sPPath))\r
+               {\r
+                       for(var j=0;j<aRelTocPaths.length;j++)\r
+                       {\r
+                               aPaths[j]=gaRoot[i].sRPath+aRelTocPaths[j];\r
+                               aPaths[j]=aPaths[j].substring(1);\r
+                       }\r
+                       break;\r
+               }\r
+       }\r
+       return aPaths;\r
+}\r
+\r
+function syncInit()\r
+{\r
+       if(gsTP)\r
+       {\r
+               gInSync=true;\r
+               var obj=document.body;\r
+               var aIdList=new Array();\r
+               var nRet=expandToc(obj,gsTP,aIdList);\r
+               if(nRet!=-1)\r
+               {\r
+                       if(nRet==1)\r
+                       {\r
+                               if(aIdList.length)\r
+                                       for(var i=0;i<aIdList.length-1;i++)\r
+                                       {\r
+                                               ExpandIt2(aIdList[i],true);\r
+                                       }\r
+                               gsCTPath=gsTP;\r
+                               if(!gbIE55)\r
+                                       aIdList[aIdList.length-1].focus();\r
+                               else\r
+                                       HighLightElement(aIdList[aIdList.length-1],gsABgColor,"transparent");\r
+                       }\r
+                       var aPaths=gaBTPs;\r
+                       gsTP=null;\r
+                       gaBTPs=null;\r
+                       if(aPaths!=null)\r
+                       {\r
+                               var sPath=getClosestTocPath(aPaths);\r
+                               if(sPath!=null)\r
+                               {       \r
+                                       gsTP=sPath;             \r
+                                       setTimeout("syncInit()",1);\r
+                               }\r
+                       }\r
+               }\r
+               gInSync=false;\r
+       }\r
+}\r
+\r
+function loadToc()\r
+{\r
+       if(!gbReady)\r
+       {\r
+               var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);\r
+               if(SendMessage(oResMsg)&&oResMsg.oParam)\r
+               {\r
+                       var oProj=oResMsg.oParam;\r
+                       gaProj=oProj.aProj;\r
+                       gbXML=oProj.bXML;\r
+                       load1B1();\r
+               }\r
+       }\r
+}\r
+\r
+function load1B1()\r
+{\r
+       if(gnLT+1<gaProj.length)\r
+       {\r
+               for(var i=gnLT+1;i<gaProj.length;i++)\r
+               {\r
+                       if(gaProj[i].sToc!=null&&gaProj[i].sToc!="")\r
+                       {\r
+                               gbLoadToc=true;\r
+                               gnLT=i;\r
+                               setTimeout("loadTocInfo()",1);\r
+                               return true;\r
+                       }\r
+               }\r
+       }\r
+       return false;\r
+}\r
+\r
+function loadTocInfo()\r
+{\r
+       loadData2(gaProj[gnLT].sPPath+gaProj[gnLT].sDPath+gaProj[gnLT].sToc);\r
+}\r
+\r
+function loadData2(sFile)\r
+{\r
+       if(gbXML)\r
+               loadDataXML(sFile);\r
+       else\r
+               loadData(sFile);\r
+}\r
+\r
+function projReady(sRoot,aProj)\r
+{\r
+       if(gaRoot.length<=gnLT||!gaRoot[gnLT])\r
+               gaRoot[gnLT]=new Object();\r
+       gaRoot[gnLT].sToc=sRoot;\r
+       \r
+       if(gnLT==0)\r
+               gaRoot[gnLT].sRPath=gsPathSplit;\r
+\r
+       updatePTPath(gnLT,aProj);\r
+\r
+       if(!((gnLT+1<gaProj.length)&&load1B1()))\r
+       {\r
+               gbReady=true;\r
+               if(gbIE4)\r
+                       setTimeout("loadImages();",1);\r
+               else\r
+                       setTimeout("loadTData();",1);\r
+       }\r
+}\r
+\r
+function loadTData()\r
+{\r
+       if(gaProj[0].sToc!="")\r
+       {\r
+               goChunk=addTocChunk(gaProj[0].sPPath,gaProj[0].sDPath);\r
+               gbLoadToc=false;\r
+               loadData2(gaProj[0].sPPath+gaProj[0].sDPath+gaRoot[0].sToc);\r
+       }\r
+}\r
+\r
+function updatePTPath(n,aProj)\r
+{\r
+       if(aProj)\r
+       {\r
+               for(var i=0;i<aProj.length;i++)\r
+               {\r
+                       var sFullPath=_getFullPath(gaProj[n].sPPath,aProj[i].sPPath);\r
+                       for(var j=0;j<gaProj.length;j++)\r
+                       {\r
+                               if(isSamePath(sFullPath,gaProj[j].sPPath))\r
+                               {\r
+                                       if(gaRoot.length<=j||!gaRoot[j])\r
+                                               gaRoot[j]=new Object();\r
+                                       if(!gaRoot[j].sRPath)\r
+                                       {\r
+                                               if(gaRoot[n].sRPath)\r
+                                                       gaRoot[j].sRPath=gaRoot[n].sRPath+aProj[i].sRPath;\r
+                                               else\r
+                                                       gaRoot[j].sRPath=aProj[i].sRPath;\r
+                                       }\r
+                                       break;\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+function putDataXML(xmlDoc,sDocPath)\r
+{\r
+       if(gbLoadToc)\r
+       {\r
+               var tocNode=xmlDoc.getElementsByTagName("toc")[0];\r
+               if(tocNode)\r
+               {\r
+                       var sRoot=tocNode.getAttribute("root");\r
+                       var rmtProject=tocNode.getElementsByTagName("project");\r
+                       var aRProj=new Array();\r
+                       if(rmtProject.length>0)\r
+                       {\r
+                               for(var i=0;i<rmtProject.length;i++)\r
+                               {\r
+                                       aRProj[i]=new Object();\r
+                                       aRProj[i].sPPath=rmtProject[i].getAttribute("url");\r
+                                       aRProj[i].sRPath=rmtProject[i].getAttribute("path");\r
+                               }\r
+                       }\r
+                       projReady(sRoot,aRProj);\r
+               }\r
+       }\r
+       else\r
+       {\r
+               var chunkNode=xmlDoc.getElementsByTagName("tocdata")[0];\r
+               if(chunkNode)\r
+               {\r
+                       var aToc=new Array();\r
+                       processBook(chunkNode,aToc);\r
+                       putData(aToc);\r
+               }\r
+       }\r
+}\r
+\r
+function processBook(node,aToc)\r
+{\r
+       var i=0;\r
+       var entry=null;\r
+       var prevEntry=null;\r
+       var oChild=node.firstChild;\r
+       do{\r
+               if(oChild)\r
+               {\r
+                       if(oChild.nodeName.indexOf("#")!=0)\r
+                       {\r
+                               var sName=oChild.getAttribute("name");\r
+                               var sURL=oChild.getAttribute("url");\r
+                               var sRef=oChild.getAttribute("ref");\r
+                               var sTarget=oChild.getAttribute("target");\r
+                               var sIcons=oChild.getAttribute("images");\r
+                               var item=new Object();\r
+                               item.sItemName=sName;\r
+                               if(sTarget)\r
+                                       item.sTarget=sTarget;\r
+                               if(sIcons)\r
+                                       item.sIconRef=sIcons;\r
+                               if(sURL==null) sURL="";\r
+                               item.sItemURL=sURL;\r
+                               \r
+                               if(oChild.nodeName=="book")\r
+                               {\r
+                                       item.nType=1;\r
+                                       aToc[aToc.length]=item;\r
+                                       var nCurrPos=aToc.length;\r
+                                       processBook(oChild,aToc);\r
+                                       item.nContents=aToc.length-nCurrPos;\r
+                               }\r
+                               else if(oChild.nodeName=="item")\r
+                               {\r
+                                       item.nType=2;\r
+                                       item.nContents=0;\r
+                                       aToc[aToc.length]=item;\r
+                               }\r
+                               else if(oChild.nodeName=="remoteitem")\r
+                               {\r
+                                       item.nType=16;\r
+                                       item.nContents=0;\r
+                                       aToc[aToc.length]=item;\r
+                               }\r
+                               else if(oChild.nodeName=="project")\r
+                               {\r
+                                       item.nType=4;\r
+                                       item.sRefURL=sRef;\r
+                                       item.nContents=0;\r
+                                       aToc[aToc.length]=item;\r
+                               }\r
+                               else if(oChild.nodeName=="chunk")\r
+                               {\r
+                                       item.nType=8;\r
+                                       item.sRefURL=sRef;\r
+                                       item.nContents=0;\r
+                                       aToc[aToc.length]=item;\r
+                               }\r
+                       }\r
+               }\r
+               else\r
+                       break;\r
+               oChild=oChild.nextSibling;\r
+       }while(true);\r
+}\r
+\r
+function putData(aTocs)\r
+{\r
+       gaTocsNs61Fix=aTocs;\r
+       setTimeout("realPutData();",1);\r
+}\r
+\r
+function realPutData()\r
+{\r
+       var aTocs=gaTocsNs61Fix;\r
+       if(!aTocs) return;\r
+       if(goChunk)\r
+       {\r
+               var n=gnMinIdx;\r
+               goChunk.nMI=gnMinIdx;\r
+               goChunk.aTocs=aTocs;\r
+               gnMinIdx+=aTocs.length;\r
+               if(gnInsIdx!=-1)\r
+               {\r
+                       var oObj=getElement(getCBId(gnInsIdx));\r
+                       if(oObj)\r
+                       {\r
+                               oObj.innerHTML=writeBookItems(n-1,aTocs.length);\r
+                               setTimeout("syncInit()",1);\r
+                       }\r
+               }\r
+               else{\r
+                       document.body.insertAdjacentHTML("beforeEnd",writeBookItems(n-1,aTocs.length));\r
+                       var oParam=new Object();\r
+                       oParam.oTocInfo=null;\r
+                       var oMsg=new whMessage(WH_MSG_GETTOCPATHS,this,1,oParam);\r
+                       if(SendMessage(oMsg))\r
+                       {\r
+                               if (oMsg.oParam.oTocInfo)\r
+                                       syncWithPaths(oMsg.oParam.oTocInfo);\r
+                       }\r
+               }       \r
+       }\r
+}\r
+\r
+function syncWithPaths(oTopicParam)\r
+{\r
+       var aPaths=getTocPaths(oTopicParam);\r
+       if(gsTP)\r
+               gaBTPs=aPaths;\r
+       else{\r
+               var sPath=getClosestTocPath(aPaths);\r
+               if(sPath!=null)\r
+               {\r
+                       gsTP=sPath;\r
+                       setTimeout("syncInit()",1);\r
+               }\r
+       }\r
+}\r
+\r
+function window_OnLoad()\r
+{\r
+       if(gsBgImage&&gsBgImage.length>0)\r
+       {\r
+               document.body.background=gsBgImage;\r
+       }\r
+       if(gsBgColor&&gsBgColor.length>0)\r
+       {\r
+               document.body.bgColor=gsBgColor;\r
+       }\r
+       loadToc();\r
+       var oMsg=new whMessage(WH_MSG_SHOWTOC,this,1,null)\r
+       SendMessage(oMsg);\r
+}\r
+\r
+function loadImages()\r
+{\r
+       if(giBookClose)\r
+       {\r
+               gaImgs[gnImages]=giBookClose;\r
+               gnImages++;\r
+       }               \r
+       if(giBookOpen)\r
+       {\r
+               gaImgs[gnImages]=giBookOpen;\r
+               gnImages++;\r
+       }               \r
+       if(giBookItem)\r
+       {\r
+               gaImgs[gnImages]=giBookItem;\r
+               gnImages++;\r
+       }               \r
+       if(giURLItem)\r
+       {\r
+               gaImgs[gnImages]=giURLItem;\r
+               gnImages++;\r
+       }               \r
+       if(giNewBookClose)\r
+       {\r
+               gaImgs[gnImages]=giNewBookClose;\r
+               gnImages++;\r
+       }               \r
+       if(giNewBookOpen)\r
+       {\r
+               gaImgs[gnImages]=giNewBookOpen;\r
+               gnImages++;\r
+       }               \r
+       if(giNewBookItem)\r
+       {\r
+               gaImgs[gnImages]=giNewBookItem;\r
+               gnImages++;\r
+       }               \r
+       if(giNewURLItem)\r
+       {\r
+               gaImgs[gnImages]=giNewURLItem;\r
+               gnImages++;\r
+       }\r
+       if(gnImages>0)\r
+       {\r
+               setTimeout("loadDataAfter();",1000);\r
+               loadImage(gaImgs[0]);\r
+       }\r
+       else\r
+               loadDataAfter();\r
+}\r
+\r
+function loadImage(sURL)\r
+{\r
+       var oImg=new Image();\r
+       oImg.onload=checkImageLoading;\r
+       oImg.onerror=errorImageLoading;\r
+       oImg.src=_getFullPath(gaProj[0].sPPath,sURL);\r
+}\r
+\r
+function loadDataAfter()\r
+{\r
+       if(!gbLoadData)\r
+       {\r
+               gbLoadData=true;\r
+               loadTData();\r
+       }\r
+}\r
+\r
+function errorImageLoading()\r
+{\r
+       gnLoadedImages++;\r
+       if(gnImages==gnLoadedImages)\r
+               loadDataAfter();\r
+       else\r
+               loadImage(gaImgs[gnLoadedImages]);      \r
+}\r
+\r
+function checkImageLoading()\r
+{\r
+       gnLoadedImages++;\r
+       if(gnImages==gnLoadedImages)\r
+               loadDataAfter();\r
+       else\r
+               loadImage(gaImgs[gnLoadedImages]);      \r
+}\r
+\r
+function window_unload()\r
+{\r
+       UnRegisterListener2(this,WH_MSG_PROJECTREADY);\r
+       UnRegisterListener2(this,WH_MSG_SYNCTOC);\r
+       UnRegisterListener2(this,WH_MSG_SHOWTOC);\r
+}\r
+\r
+function onSendMessage(oMsg)\r
+{\r
+       if(oMsg)\r
+       {\r
+               var nMsgId=oMsg.nMessageId;\r
+               if(nMsgId==WH_MSG_PROJECTREADY)\r
+               {\r
+                       loadToc();\r
+               }\r
+               else if(nMsgId==WH_MSG_SYNCTOC)\r
+               {\r
+                       if(gbReady)\r
+                       {\r
+                               syncWithPaths(oMsg.oParam);\r
+                       }\r
+               }\r
+               else if(nMsgId==WH_MSG_SHOWTOC)\r
+               {\r
+                       if(!gbNav6)\r
+                               document.body.focus();\r
+               }\r
+       }\r
+       return true;\r
+}\r
+\r
+if (window.gbWhUtil&&window.gbWhVer&&window.gbWhMsg&&window.gbWhProxy)\r
+{\r
+       RegisterListener2(this,WH_MSG_PROJECTREADY);\r
+       RegisterListener2(this,WH_MSG_SYNCTOC);\r
+       RegisterListener2(this,WH_MSG_SHOWTOC);\r
+       goFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
+       goHFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");\r
+\r
+       window.onload=window_OnLoad;\r
+       window.onbeforeunload=window_BUnload;\r
+       window.onunload=window_unload;\r
+       gbWhTHost=true;\r
+}\r
+else\r
+       document.location.reload();\r
+\r