2 var gaHSLoad=new Array();
\r
5 var gsLoadingDivID="LoadingDiv";
\r
6 var gsLoadingMsg="Loading, click here to cancel...";
\r
8 var gaTocs=new Array();
\r
13 var gaRoot=new Array();
\r
19 var gsPathSplit="\n";
\r
20 var gsBgColor="#ffffff";
\r
26 var gsIndent="15pt";
\r
27 var gsABgColor="#cccccc";
\r
33 var giNewBookClose="";
\r
34 var giNewBookOpen="";
\r
35 var giNewBookItem="";
\r
36 var giNewURLItem="";
\r
38 var gnLoadedImages=0;
\r
39 var gaImgs=new Array();
\r
40 var gbLoadData=false;
\r
42 var gaTocsNs61Fix=null;
\r
43 var gbWhTHost=false;
\r
44 var gBookItems=new Array();
\r
47 var gbNeedFillStub=false;
\r
48 var gbLoadToc=false;
\r
50 function chunkInfoQueue()
\r
52 this.aContent=new Array();
\r
53 this.inQueue=function(cInfo)
\r
55 this.aContent[this.aContent.length]=cInfo;
\r
57 this.deQueue=function()
\r
60 if(this.aContent.length>0)
\r
62 cInfo=this.aContent[0];
\r
63 for(var i=1;i<this.aContent.length;i++)
\r
64 this.aContent[i-1]=this.aContent[i];
\r
65 this.aContent.length--;
\r
69 this.length=function()
\r
71 return this.aContent.length;
\r
75 var gchunkRequestQueue=new chunkInfoQueue();
\r
77 function chunkInfo(nIdx, bLocal)
\r
83 function setBackground(sBgImage)
\r
88 function setBackgroundcolor(sBgColor)
\r
93 function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)
\r
95 var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);
\r
96 if(sType=="Normal") goFont=vFont;
\r
97 else if(sType=="Hover") goHFont=vFont;
\r
100 function setActiveBgColor(sBgColor){gsABgColor=sBgColor;}
\r
102 function setMargin(sMargin){gsMargin=sMargin;}
\r
104 function setIndent(sIndent){gsIndent=sIndent;}
\r
106 function setIcon(sType,sURL)
\r
108 if(sType=="BookOpen")
\r
110 else if(sType=="BookClose")
\r
112 else if(sType=="Item")
\r
114 else if(sType=="RemoteItem")
\r
116 else if(sType=="NewBookClose")
\r
117 giNewBookClose=sURL;
\r
118 else if(sType=="NewBookOpen")
\r
119 giNewBookOpen=sURL;
\r
120 else if(sType=="NewItem")
\r
121 giNewBookItem=sURL;
\r
122 else if(sType=="NewRemoteItem")
\r
123 giNewURLItem=sURL;
\r
126 function bookItem(sTarget,sURL)
\r
129 this.sTarget=sTarget;
\r
131 this.sTarget="bsscright";
\r
135 function addBookItem(sBookId,sTarget,sURL)
\r
137 gBookItems[sBookId]=new bookItem(sTarget,sURL);
\r
140 function tocChunk(sPPath,sDPath)
\r
142 this.sPPath=sPPath;
\r
143 this.sDPath=sDPath;
\r
148 function addTocChunk(sPPath,sDPath)
\r
150 var oChunk=new tocChunk(sPPath,sDPath);
\r
151 gaTocs[gaTocs.length]=oChunk;
\r
155 function isHSLoad(nIdx)
\r
157 for(var i=0;i<gaHSLoad.length;i++)
\r
158 if(gaHSLoad[i]==nIdx)
\r
163 function setHSLoad(nIdx)
\r
165 if(!isHSLoad(nIdx))
\r
167 var len=gaHSLoad.length;
\r
168 for(var i=0;i<len;i++)
\r
169 if(gaHSLoad[i]==-1)
\r
174 gaHSLoad[len]=nIdx;
\r
178 function setHSUnLoad(nIdx)
\r
182 for(var i=0;i<gaHSLoad.length;i++)
\r
183 if(gaHSLoad[i]==nIdx)
\r
191 function removeLoadingDiv()
\r
193 var eLoadingDiv=getElement(gsLoadingDivID);
\r
195 removeThis(eLoadingDiv);
\r
198 function checkBookItem(nIdx)
\r
202 var sBookId=getBookId(nIdx);
\r
203 if(gBookItems[sBookId])
\r
205 window.open(gBookItems[sBookId].sURL,gBookItems[sBookId].sTarget);
\r
210 function insertBookItems(nIdx,num)
\r
212 checkBookItem(nIdx);
\r
213 var sChildBookId=getCBId(nIdx);
\r
214 var eChildDiv=getElement(sChildBookId);
\r
216 if((eChildDiv.childNodes&&eChildDiv.childNodes.length==0)||
\r
217 (eChildDiv.all&&eChildDiv.all.length==0)){
\r
218 var sHTML=writeBookItems(nIdx,num);
\r
219 eChildDiv.innerHTML=sHTML;
\r
220 setTimeout("syncInit()",1);
\r
226 function isBookEmpty(nIdx)
\r
228 var num=getItemContentsNum(nIdx);
\r
235 var nItemType=getItemType(i);
\r
237 if (!isBookEmpty(i))
\r
240 else if(nItemType==4){
\r
241 var sSrc=getRefURL(i);
\r
242 var nProj=getProject(sSrc);
\r
244 sSrc=gaRoot[nProj].sToc;
\r
249 else if(nItemType==2||nItemType==16||nItemType==8)
\r
251 } while(nCIdx<num);
\r
256 function writeBook(nIdx)
\r
258 var sIcon=getBookImage(nIdx,true);
\r
259 var sName=_textToHtml(getItemName(nIdx));
\r
260 sIcon=_textToHtml_nonbsp(sIcon);
\r
262 var nType=getItemType(nIdx);
\r
263 var bLocal=(nType==1);
\r
264 var bLocalProject=(nType!=4);
\r
266 var sHTML="<div id=\""+getPBId(nIdx)+"\" class=";
\r
269 if (!isBookEmpty(nIdx))
\r
271 sHTML+="parent><p><nobr><a id=\""+getBookId(nIdx)+"\" href=\"javascript:void(0);\" onfocus=\"markBook("+nIdx+");\" onclick=\"";
\r
272 sHTML+="insertBookItems("+nIdx+", "+getItemContentsNum(nIdx);
\r
273 sHTML+=");return false;\" title=\""+sName+"\"><img alt=\"Book\" name=\""+getBId(nIdx)+"\" src=\""+sIcon+"\" border=0 align=\"absmiddle\">";
\r
274 sHTML+=" "+sName+"</a></nobr></p></div>";
\r
275 var sURL=_textToHtml_nonbsp(getItemURL(nIdx));
\r
277 addBookItem(getBookId(nIdx),_textToHtml_nonbsp(getTopicTarget(nIdx)),sURL);
\r
278 sHTML+="<div id=\""+getCBId(nIdx)+"\" class=child></div>";
\r
285 sHTML+="stub></div>";
\r
286 gbNeedFillStub=true;
\r
287 setTimeout("fillStub("+nIdx+","+bLocalProject+");",100);
\r
292 function checkFillStub()
\r
296 if(gchunkRequestQueue.length()>0)
\r
298 var cInfo=gchunkRequestQueue.deQueue();
\r
301 fillStub(cInfo.nIdx,cInfo.bLocal);
\r
308 gbNeedFillStub=false;
\r
309 setTimeout("syncInit()",1);
\r
313 function fillStub(nIdx,bLocalProject)
\r
318 var sObj=getElement(getPBId(nIdx));
\r
321 tocExpandHelpSet(nIdx,bLocalProject);
\r
322 gbNeedFillStub=false;
\r
323 setTimeout("syncInit()",1);
\r
326 setTimeout("fillStub("+nIdx+","+bLocalProject+");",100);
\r
329 gchunkRequestQueue.inQueue(new chunkInfo(nIdx,bLocalProject));
\r
332 function getBookId(nIdx){return "B_"+nIdx;}
\r
334 function getItemId(nIdx){return "I_"+nIdx;}
\r
336 function markBook(nIdx)
\r
338 var obj=getElement(getItemId(nIdx));
\r
340 obj=getElement(getBookId(nIdx));
\r
344 setTimeout("delayMarkObj();",1);
\r
350 function delayMarkObj()
\r
359 function markObj(obj)
\r
363 HighLightElement(obj,gsABgColor,"transparent");
\r
364 var sPath=calTocPath(obj);
\r
365 if(gsCTPath!=sPath)
\r
370 function markItem(nIdx)
\r
372 var obj=getElement(getItemId(nIdx));
\r
376 setTimeout("delayMarkObj();",1);
\r
379 markObj(getElement(getItemId(nIdx)));
\r
382 function calTocPath(obj)
\r
384 var sPath=getInnerText2(obj);
\r
385 var pObj=getParentNode(obj);
\r
388 while(pObj!=null&&!isCBId(pObj.id)) pObj=getParentNode(pObj);
\r
391 var nId=getIdByCBId(pObj.id);
\r
392 var sObj=getElement(getPBId(nId));
\r
395 var objs=getItemsByBook(sObj);
\r
396 for(var i=0;i<objs.length;i++)
\r
398 var sText=getInnerText2(objs[i]);
\r
399 if(sText.length!=0)
\r
401 sPath=sText+gsPathSplit+sPath;
\r
406 pObj=getParentNode(pObj);
\r
408 }while(pObj!=null);
\r
412 function writeAnItem(nIdx)
\r
414 var sTarget=_textToHtml_nonbsp(getTopicTarget(nIdx));
\r
415 var sIcon=getItemIcon(nIdx,0);
\r
418 var nItemType=getItemType(nIdx);
\r
420 sIcon=getItemImage(nIdx,false);
\r
422 sIcon=getItemImage(nIdx,true);
\r
424 sIcon=_textToHtml_nonbsp(sIcon);
\r
425 var sName=_textToHtml(getItemName(nIdx));
\r
426 var sHTML="<p><nobr><a id=\""+getItemId(nIdx)+"\" onfocus=\"markItem("+nIdx+");\""
\r
431 sAltString="Remote Page";
\r
433 sHTML+="target=\""+sTarget+"\" ";
\r
434 sHTML+="href=\""+_textToHtml_nonbsp(getItemURL(nIdx))+"\" title=\""+sName+"\"><img alt=\""+sAltString+"\" src=\""+sIcon+"\" border=0 align=\"absmiddle\"> "+sName+"</a></nobr></p>";
\r
438 function writeBookItems(nIdx,num)
\r
446 var nItemType=getItemType(i);
\r
447 if(nItemType==1||nItemType==4||nItemType==8){
\r
448 sHTML+=writeBook(i);
\r
449 nCIdx+=getItemContentsNum(i);
\r
451 else if(nItemType==2||nItemType==16){
\r
452 sHTML+=writeAnItem(i);
\r
460 function tocExpandHelpSet(nIdx,bLocal)
\r
462 checkBookItem(nIdx);
\r
463 removeLoadingDiv();
\r
464 if(!isHSLoad(nIdx))
\r
469 var oChunk=getChunk(nIdx);
\r
472 goChunk=addTocChunk(oChunk.sPPath,oChunk.sDPath);
\r
473 sSrc=oChunk.aTocs[nIdx-oChunk.nMI].sRefURL;
\r
477 sSrc=getRefURL(nIdx);
\r
478 var nProj=getProject(sSrc);
\r
481 sSrc=gaRoot[nProj].sToc;
\r
483 goChunk=addTocChunk(gaProj[nProj].sPPath,gaProj[nProj].sDPath);
\r
492 PrepareLoading(nIdx);
\r
494 loadData2(goChunk.sPPath+goChunk.sDPath+sSrc);
\r
504 function getProject(sSrc)
\r
506 for(var i=0;i<gaProj.length;i++)
\r
507 if(isSamePath(getPath(sSrc),gaProj[i].sPPath))
\r
512 function getPath(sPath)
\r
516 sPath=_replaceSlash(sPath);
\r
517 var nPosFile=sPath.lastIndexOf("/");
\r
518 sPath=sPath.substring(0,nPosFile+1);
\r
523 function isSamePath(sPath1,sPath2)
\r
525 return (sPath1.toLowerCase()==sPath2.toLowerCase());
\r
528 function PrepareLoading(nIdx)
\r
533 var oObj=getElement(getPBId(gnInsIdx));
\r
535 oObj.insertAdjacentHTML("afterEnd",writeLoadingDiv(nIdx));
\r
539 function writeLoadingDiv(nIdx)
\r
541 return"<div id=\""+gsLoadingDivID+"\" class=parent onclick=\"removeLoadingDiv();\" style=\"padding-left:4px;background-color:ivory;border-width:1;border-style:solid;border-color:black;width:150px;\">"+gsLoadingMsg+"</div>";
\r
544 function getItemName(nIdx)
\r
546 var oChunk=getChunk(nIdx);
\r
548 return oChunk.aTocs[nIdx-oChunk.nMI].sItemName;
\r
553 function getItemContentsNum(nIdx)
\r
555 var oChunk=getChunk(nIdx);
\r
557 return oChunk.aTocs[nIdx-oChunk.nMI].nContents;
\r
562 function getItemType(nIdx)
\r
564 var oChunk=getChunk(nIdx);
\r
566 return oChunk.aTocs[nIdx-oChunk.nMI].nType;
\r
571 function getItemURL(nIdx)
\r
573 var oChunk=getChunk(nIdx);
\r
576 var sPath=oChunk.aTocs[nIdx-oChunk.nMI].sItemURL;
\r
577 if(!(sPath==null||sPath==""))
\r
579 return _getFullPath(oChunk.sPPath,sPath);
\r
585 function getRefURL(nIdx)
\r
587 var oChunk=getChunk(nIdx);
\r
590 var sPath=oChunk.aTocs[nIdx-oChunk.nMI].sRefURL;
\r
591 if(!(sPath==null||sPath==""))
\r
593 return _getFullPath(oChunk.sPPath,sPath)
\r
599 function getTopicTarget(nIdx)
\r
601 var oChunk=getChunk(nIdx);
\r
604 if(typeof(oChunk.aTocs[nIdx-oChunk.nMI].sTarget)!="undefined")
\r
605 return oChunk.aTocs[nIdx-oChunk.nMI].sTarget;
\r
610 function getItemIcon(nIdx,nIconIdx)
\r
612 var oChunk=getChunk(nIdx);
\r
615 if(typeof(oChunk.aTocs[nIdx-oChunk.nMI].sIconRef)!="undefined")
\r
617 var sIconRef=oChunk.aTocs[nIdx-oChunk.nMI].sIconRef;
\r
618 var nIndex=sIconRef.indexOf(";");
\r
619 while(nIconIdx-->0&&nIndex!=-1)
\r
621 sIconRef=sIconRef.substring(nIndex+1);
\r
622 nIndex=sIconRef.indexOf(";");
\r
627 sIconRef=sIconRef.substring(0,nIndex);
\r
628 return _getFullPath(oChunk.sPPath,sIconRef)
\r
635 function TocWriteClassStyle()
\r
637 var sStyle="<STYLE TYPE='text/css'>\n";
\r
639 sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";
\r
641 sStyle+="body {border-top:black 1px solid;}\n";
\r
642 sStyle+="P {"+getFontStyle(goFont)+"margin-top:"+gsMargin+";margin-bottom:"+gsMargin+";}\n";
\r
643 sStyle+="DIV {margin-top:"+gsMargin+";margin-bottom:"+gsMargin+";}\n";
\r
644 sStyle+=".parent {margin-left:0pt;}\n";
\r
645 sStyle+=".stub {margin-left:0pt;display:none}\n";
\r
646 sStyle+=".child {display:none;margin-left:"+gsIndent+";}\n";
\r
647 sStyle+="A:link {"+getFontStyle(goFont)+"}\n";
\r
648 sStyle+="A:visited {"+getFontStyle(goFont)+"}\n";
\r
649 sStyle+="A:active {background-color:"+gsABgColor+";}\n";
\r
650 sStyle +="A:hover {"+getFontStyle(goHFont)+"}\n";
\r
651 sStyle+="</STYLE>";
\r
652 document.write(sStyle);
\r
655 function TocWriteFixedWidth(bBegin,nWidth)
\r
657 if((gbIE4)&&(gbMac)&&(!gbIE5)){
\r
659 document.write("<table width="+nWidth+" border=0><tr><td>");
\r
661 document.write("</td></tr></table>");
\r
665 function TocInitPage()
\r
667 var tempColl=getItemsByBook(document.body);
\r
668 if(tempColl.length>0)
\r
669 tempColl[0].focus();
\r
672 function getItemsFromObj(obj)
\r
674 var aAnchor=new Array();
\r
675 var tempColl=getChildrenByTag(obj,"P");
\r
676 if(tempColl&&tempColl.length>0)
\r
678 var anobr=new Array();
\r
679 for(var i=0;i<tempColl.length;i++)
\r
681 var tempNobr=getChildrenByTag(tempColl[i],"NOBR");
\r
682 if(tempNobr&&tempNobr.length>0)
\r
683 for(var j=0;j<tempNobr.length;j++)
\r
684 anobr[anobr.length]=tempNobr[j];
\r
686 for(var s=0;s<anobr.length;s++)
\r
688 var tempAnchor=getChildrenByTag(anobr[s],"A");
\r
689 if(tempAnchor&&tempAnchor.length>0)
\r
690 for(var u=0;u<tempAnchor.length;u++)
\r
691 aAnchor[aAnchor.length]=tempAnchor[u];
\r
697 function getItemsByBook(obj)
\r
699 var aAnchor=new Array();
\r
700 var aTAnchor=getItemsFromObj(obj);
\r
701 for(var i=0;i<aTAnchor.length;i++)
\r
702 aAnchor[aAnchor.length]=aTAnchor[i];
\r
703 var tempBook=getChildrenByTag(obj,"DIV");
\r
704 if(tempBook&&tempBook.length>0)
\r
705 for(var j=0;j<tempBook.length;j++)
\r
707 var aTAnchorDiv=getItemsFromObj(tempBook[j]);
\r
708 for(var s=0;s<aTAnchorDiv.length;s++)
\r
709 aAnchor[aAnchor.length]=aTAnchorDiv[s];
\r
714 function ExpandIt(nId)
\r
717 ExpandIt2(nId,false);
\r
720 function ExpandIt2(nId,bForceOpen)
\r
722 var oC=TocExpand(nId,true,bForceOpen);
\r
723 var nNewScroll=document.body.scrollTop;
\r
724 if(oC.style.display=="block"){
\r
725 var nTop=oC.offsetTop;
\r
726 var nBottom=nTop+oC.offsetHeight;
\r
727 if(document.body.scrollTop+document.body.clientHeight<nBottom){
\r
728 nNewScroll=nBottom-document.body.clientHeight;
\r
730 if(nBottom-nTop>document.body.clientHeight){
\r
731 nNewScroll=nTop-20;
\r
734 document.body.scrollTop=nNewScroll;
\r
737 function TocExpand(nId,bChangeImg,bForceOpen)
\r
739 var oDiv=getElement(getCBId(nId));
\r
740 if(oDiv==null) return null;
\r
742 var whichIm=document.images[getBId(nId)];
\r
743 if((oDiv.style.display!="block")||bForceOpen){
\r
744 oDiv.style.display="block";
\r
746 var sPath=getPath(whichIm.src);
\r
747 sPath=_getFullPath(sPath,getBookImage(nId,false));
\r
748 whichIm.src=sPath;
\r
751 oDiv.style.display="none";
\r
753 var sPath=getPath(whichIm.src);
\r
754 sPath=_getFullPath(sPath,getBookImage(nId,true));
\r
758 this.parent.document.getElementById("tocIFrame").style.width="101%";
\r
759 this.parent.document.getElementById("tocIFrame").style.width="100%";
\r
765 function getChunkId(n)
\r
768 for(var i=0;i<gaTocs.length;i++)
\r
769 if(gaTocs[i].nMI<=n&&gaTocs[i].nMI!=-1)
\r
774 if(gaTocs[i].nMI>=gaTocs[nCan].nMI)
\r
783 function getChunk(n)
\r
785 if(gnCC!=-1&&gaTocs[gnCC].nMI<=n&&(gnCC==gaTocs.length-1||
\r
786 gaTocs[gnCC+1].nMI>n))
\r
788 return gaTocs[gnCC];
\r
791 gnCC=getChunkId(n);
\r
793 return gaTocs[gnCC];
\r
799 function getBookImage(nIdx,bClosed)
\r
801 var nIdx=bClosed?0:1;
\r
802 var sIcon=getItemIcon(nIdx,nIdx);
\r
808 return _getFullPath(gaProj[0].sPPath,sIcon);
\r
811 function getItemImage(nIdx,bRemote)
\r
813 var sIcon=getItemIcon(nIdx,0);
\r
819 return _getFullPath(gaProj[0].sPPath,sIcon);
\r
822 function getInnerText2(obj)
\r
824 var sText=getInnerText(obj);
\r
825 if(sText.length>0&&!gbOpera7)
\r
826 sText=sText.substring(1);
\r
830 function expandToc(oObj,sRest,aIdList)
\r
832 var len=aIdList.length;
\r
833 var nPos=sRest.indexOf(gsPathSplit);
\r
836 sPart=sRest.substring(0,nPos);
\r
837 sRest=sRest.substring(nPos+1);
\r
842 var aTagAs=getItemsByBook(oObj);
\r
843 for(var s=0;s<aTagAs.length;s++)
\r
845 var sText=getInnerText2(aTagAs[s]);
\r
848 aIdList[len]=aTagAs[s];
\r
855 var aChildren=getChildrenByTag(oObj,"DIV");
\r
856 for(var i=0;i<aChildren.length;i++)
\r
858 var sPId=aChildren[i].id;
\r
861 var sText=getInnerText2(aChildren[i]);
\r
864 aIdList[len]=getIdByPBId(sPId);
\r
865 var sCId=getCBId(aIdList[len]);
\r
866 var oCObj=getElement(sCId);
\r
869 if(oCObj.innerHTML=="")
\r
871 var obj=getItemsByBook(aChildren[i]);
\r
876 var sCommand=obj[0].getAttribute("onClick");
\r
877 var nCommand=sCommand.indexOf(";");
\r
878 sCommand=sCommand.substring(0,nCommand);
\r
879 setTimeout(sCommand,1);
\r
886 var nRet=expandToc(oCObj,sRest,aIdList);
\r
891 aIdList.length=len;
\r
895 function getIdByPBId(sPId)
\r
897 return parseInt(sPId.substring(2,sPId.length-1));
\r
900 function getIdByCBId(sCId)
\r
902 return parseInt(sCId.substring(2,sCId.length-1));
\r
905 function isPBId(sId)
\r
907 return (sId&&sId.indexOf("B_")==0&&sId.lastIndexOf("P")==sId.length-1);
\r
910 function isCBId(sId)
\r
912 return (sId&&sId.indexOf("B_")==0&&sId.lastIndexOf("C")==sId.length-1);
\r
915 function getBId(nIdx)
\r
920 function getPBId(nIdx)
\r
922 return getBId(nIdx)+"P";
\r
925 function getCBId(nIdx)
\r
927 return getBId(nIdx)+"C";
\r
930 function getClosestTocPath(aPaths)
\r
932 var nMaxSimilarity=0;
\r
935 if(aPaths.length==0) return sPath;
\r
936 for(var i=0;i<aPaths.length;i++)
\r
938 var nSimilarity=comparePath(gsCTPath,aPaths[i]);
\r
939 if(nSimilarity>nMaxSimilarity)
\r
941 nMaxSimilarity=nSimilarity;
\r
946 sPath=aPaths[nThatIndex];
\r
952 function comparePath(sPath1,sPath2)
\r
954 var nMaxSimilarity=0;
\r
962 nPos1=sPath1.indexOf(gsPathSplit,nStartPos1);
\r
965 sCheck1=sPath1.substring(nStartPos1,nPos1);
\r
966 nStartPos1=nPos1+1;
\r
970 sCheck1=sPath1.substring(nStartPos1);
\r
973 nPos2=sPath2.indexOf(gsPathSplit,nStartPos2);
\r
976 sCheck2=sPath2.substring(nStartPos2,nPos2);
\r
977 nStartPos2=nPos2+1;
\r
981 sCheck2=sPath2.substring(nStartPos2);
\r
984 if(sCheck1==sCheck2)
\r
988 }while(nStartPos1!=-1&&nStartPos2!=-1);
\r
989 return nMaxSimilarity;
\r
992 function getTocPaths(oTopicParam)
\r
994 var aRelTocPaths=oTopicParam.aPaths;
\r
995 var aPaths=new Array();
\r
996 for(var i=0;i<gaProj.length;i++)
\r
997 if(isSamePath(gaProj[i].sPPath,oTopicParam.sPPath))
\r
999 for(var j=0;j<aRelTocPaths.length;j++)
\r
1000 for (var k=0;k<gaRoot[i].aRPath.length;k++)
\r
1002 var sPath=gaRoot[i].aRPath[k]+aRelTocPaths[j];
\r
1003 aPaths[aPaths.length]=sPath.substring(1);
\r
1010 function syncInit()
\r
1012 if(gsTP&&!gbNeedFillStub)
\r
1015 var obj=document.body;
\r
1016 var aIdList=new Array();
\r
1017 var nRet=expandToc(obj,gsTP,aIdList);
\r
1022 if(aIdList.length)
\r
1023 for(var i=0;i<aIdList.length-1;i++)
\r
1024 ExpandIt2(aIdList[i],true);
\r
1027 aIdList[aIdList.length-1].focus();
\r
1029 HighLightElement(aIdList[aIdList.length-1],gsABgColor,"transparent");
\r
1031 var aPaths=gaBTPs;
\r
1036 var sPath=getClosestTocPath(aPaths);
\r
1040 setTimeout("syncInit()",1);
\r
1048 function loadToc()
\r
1052 var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);
\r
1053 if(SendMessage(oResMsg)&&oResMsg.oParam)
\r
1056 var oProj=oResMsg.oParam;
\r
1057 gaProj=oProj.aProj;
\r
1064 function load1B1()
\r
1066 if(gnLT+1<gaProj.length)
\r
1067 for(var i=gnLT+1;i<gaProj.length;i++)
\r
1068 if(gaProj[i].sToc)
\r
1072 setTimeout("loadTocInfo()",1);
\r
1078 function loadTocInfo()
\r
1080 loadData2(gaProj[gnLT].sPPath+gaProj[gnLT].sDPath+gaProj[gnLT].sToc);
\r
1083 function loadData2(sFile)
\r
1086 loadDataXML(sFile);
\r
1091 function projReady(sRoot,aProj)
\r
1093 if(gaRoot.length<=gnLT||!gaRoot[gnLT])
\r
1094 gaRoot[gnLT]=new Object();
\r
1095 gaRoot[gnLT].sToc=sRoot;
\r
1099 gaRoot[gnLT].aRPath=new Array();
\r
1100 gaRoot[gnLT].aRPath[0]=gsPathSplit;
\r
1103 updatePTPath(gnLT,aProj);
\r
1105 if(!((gnLT+1<gaProj.length)&&load1B1()))
\r
1109 setTimeout("loadImages();",1);
\r
1111 setTimeout("loadTData();",1);
\r
1115 function loadTData()
\r
1117 if(gaProj[0].sToc!="")
\r
1120 goChunk=addTocChunk(gaProj[0].sPPath,gaProj[0].sDPath);
\r
1122 loadData2(gaProj[0].sPPath+gaProj[0].sDPath+gaRoot[0].sToc);
\r
1126 function updatePTPath(n,aProj)
\r
1129 for(var i=0;i<aProj.length;i++)
\r
1131 var sFullPath=_getFullPath(gaProj[n].sPPath,aProj[i].sPPath);
\r
1132 for(var j=0;j<gaProj.length;j++)
\r
1133 if(isSamePath(sFullPath,gaProj[j].sPPath))
\r
1135 if(gaRoot.length<=j||!gaRoot[j])
\r
1136 gaRoot[j]=new Object();
\r
1137 if(!gaRoot[j].aRPath)
\r
1138 gaRoot[j].aRPath=new Array();
\r
1140 if(gaRoot[n].aRPath)
\r
1141 for(var k=0;k<gaRoot[n].aRPath.length;k++)
\r
1144 var sTFPath=gaRoot[n].aRPath[k]+aProj[i].sRPath;
\r
1145 for(var l=0;l<gaRoot[j].aRPath.length;l++)
\r
1146 if(gaRoot[j].aRPath[l]==sTFPath)
\r
1152 gaRoot[j].aRPath[gaRoot[j].aRPath.length]=sTFPath;
\r
1155 gaRoot[j].aRPath[gaRoot[j].aRPath.length]=aProj[i].sRPath;
\r
1161 function onLoadXMLError()
\r
1166 var aRProj=new Array();
\r
1167 projReady(sRoot,aRProj);
\r
1171 var aToc=new Array();
\r
1176 function putDataXML(xmlDoc,sDocPath)
\r
1180 var tocNode=xmlDoc.getElementsByTagName("toc")[0];
\r
1183 var sRoot=tocNode.getAttribute("root");
\r
1184 var rmtProject=tocNode.getElementsByTagName("project");
\r
1185 var aRProj=new Array();
\r
1186 if(rmtProject.length>0)
\r
1188 for(var i=0;i<rmtProject.length;i++)
\r
1190 aRProj[i]=new Object();
\r
1191 var sURL=rmtProject[i].getAttribute("url");
\r
1194 if(sURL.lastIndexOf("/")!=sURL.length-1)
\r
1197 aRProj[i].sPPath=sURL;
\r
1198 aRProj[i].sRPath = "";
\r
1199 var oSubPath = rmtProject[i].getElementsByTagName("subpath")[0];
\r
1204 aRProj[i].sRPath += oSubPath.getAttribute("name") + "\n";
\r
1205 oSubPath = oSubPath.getElementsByTagName("subpath")[0];
\r
1209 aRProj[i].sRPath=rmtProject[i].getAttribute("path");
\r
1212 projReady(sRoot,aRProj);
\r
1217 var chunkNode=xmlDoc.getElementsByTagName("tocdata")[0];
\r
1220 var aToc=new Array();
\r
1221 processBook(chunkNode,aToc);
\r
1227 function processBook(node,aToc)
\r
1231 var prevEntry=null;
\r
1232 var oChild=node.firstChild;
\r
1236 if(oChild.nodeName.indexOf("#")!=0)
\r
1238 var sName=oChild.getAttribute("name");
\r
1239 var sURL=oChild.getAttribute("url");
\r
1240 var sRef=oChild.getAttribute("ref");
\r
1241 var sTarget=oChild.getAttribute("target");
\r
1242 var sIcons=oChild.getAttribute("images");
\r
1243 var item=new Object();
\r
1244 item.sItemName=sName;
\r
1246 item.sTarget=sTarget;
\r
1248 item.sIconRef=sIcons;
\r
1249 if(sURL==null) sURL="";
\r
1251 item.sItemURL=sURL;
\r
1253 if(oChild.nodeName=="book")
\r
1256 aToc[aToc.length]=item;
\r
1257 var nCurrPos=aToc.length;
\r
1258 processBook(oChild,aToc);
\r
1259 item.nContents=aToc.length-nCurrPos;
\r
1261 else if(oChild.nodeName=="item")
\r
1265 aToc[aToc.length]=item;
\r
1267 else if(oChild.nodeName=="remoteitem")
\r
1271 aToc[aToc.length]=item;
\r
1273 else if(oChild.nodeName=="project")
\r
1277 if(sRef.lastIndexOf("/")!=sRef.length-1)
\r
1281 item.sRefURL=sRef;
\r
1283 aToc[aToc.length]=item;
\r
1285 else if(oChild.nodeName=="chunk")
\r
1288 item.sRefURL=sRef;
\r
1290 aToc[aToc.length]=item;
\r
1296 oChild=oChild.nextSibling;
\r
1300 function putData(aTocs)
\r
1302 gaTocsNs61Fix=aTocs;
\r
1303 setTimeout("realPutData();",1);
\r
1306 function realPutData()
\r
1308 removeLoadingDiv();
\r
1309 var aTocs=gaTocsNs61Fix;
\r
1310 if(!aTocs) return;
\r
1314 goChunk.nMI=gnMinIdx;
\r
1315 goChunk.aTocs=aTocs;
\r
1316 gnMinIdx+=aTocs.length;
\r
1319 var oObj=getElement(getPBId(gnInsIdx));
\r
1322 oObj.insertAdjacentHTML("afterEnd",writeBookItems(n-1,aTocs.length));
\r
1323 setTimeout("syncInit()",1);
\r
1327 document.body.insertAdjacentHTML("beforeEnd",writeBookItems(n-1,aTocs.length));
\r
1328 var oParam=new Object();
\r
1329 oParam.oTocInfo=null;
\r
1330 var oMsg=new whMessage(WH_MSG_GETTOCPATHS,this,1,oParam);
\r
1331 if(SendMessage(oMsg))
\r
1333 if(oMsg.oParam.oTocInfo)
\r
1334 syncWithPaths(oMsg.oParam.oTocInfo);
\r
1342 function syncWithPaths(oTopicParam)
\r
1344 var aPaths=getTocPaths(oTopicParam);
\r
1348 var sPath=getClosestTocPath(aPaths);
\r
1352 setTimeout("syncInit()",1);
\r
1357 function window_OnLoad()
\r
1359 if(gsBgImage&&gsBgImage.length>0)
\r
1361 document.body.background=gsBgImage;
\r
1363 if(gsBgColor&&gsBgColor.length>0)
\r
1365 document.body.bgColor=gsBgColor;
\r
1368 var oMsg=new whMessage(WH_MSG_SHOWTOC,this,1,null)
\r
1369 SendMessage(oMsg);
\r
1372 function loadImages()
\r
1376 gaImgs[gnImages]=giBookClose;
\r
1381 gaImgs[gnImages]=giBookOpen;
\r
1386 gaImgs[gnImages]=giBookItem;
\r
1391 gaImgs[gnImages]=giURLItem;
\r
1394 if(giNewBookClose)
\r
1396 gaImgs[gnImages]=giNewBookClose;
\r
1401 gaImgs[gnImages]=giNewBookOpen;
\r
1406 gaImgs[gnImages]=giNewBookItem;
\r
1411 gaImgs[gnImages]=giNewURLItem;
\r
1416 setTimeout("loadDataAfter();",1000);
\r
1417 loadImage(gaImgs[0]);
\r
1423 function loadImage(sURL)
\r
1425 var oImg=new Image();
\r
1426 oImg.onload=checkImageLoading;
\r
1427 oImg.onerror=errorImageLoading;
\r
1428 oImg.src=_getFullPath(gaProj[0].sPPath,sURL);
\r
1431 function loadDataAfter()
\r
1440 function errorImageLoading()
\r
1443 if(gnImages==gnLoadedImages)
\r
1446 loadImage(gaImgs[gnLoadedImages]);
\r
1449 function checkImageLoading()
\r
1452 if(gnImages==gnLoadedImages)
\r
1455 loadImage(gaImgs[gnLoadedImages]);
\r
1458 function window_unload()
\r
1460 UnRegisterListener2(this,WH_MSG_PROJECTREADY);
\r
1461 UnRegisterListener2(this,WH_MSG_SYNCTOC);
\r
1462 UnRegisterListener2(this,WH_MSG_SHOWTOC);
\r
1465 function onSendMessage(oMsg)
\r
1469 var nMsgId=oMsg.nMessageId;
\r
1470 if(nMsgId==WH_MSG_PROJECTREADY)
\r
1474 else if(nMsgId==WH_MSG_SYNCTOC)
\r
1478 syncWithPaths(oMsg.oParam);
\r
1481 else if(nMsgId==WH_MSG_SHOWTOC)
\r
1484 document.body.focus();
\r
1490 if(window.gbWhUtil&&window.gbWhVer&&window.gbWhMsg&&window.gbWhProxy)
\r
1492 RegisterListener2(this,WH_MSG_PROJECTREADY);
\r
1493 RegisterListener2(this,WH_MSG_SYNCTOC);
\r
1494 RegisterListener2(this,WH_MSG_SHOWTOC);
\r
1495 goFont=new whFont("Verdana","8pt","#000000","normal","normal","none");
\r
1496 goHFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");
\r
1498 window.onload=window_OnLoad;
\r
1499 window.onbeforeunload=window_BUnload;
\r
1500 window.onunload=window_unload;
\r
1504 document.location.reload();