whthost.js
上传用户:aonuowh
上传日期:2021-05-23
资源大小:35390k
文件大小:27k
源码类别:

SNMP编程

开发平台:

C/C++

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