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

SNMP编程

开发平台:

C/C++

  1. var gsSK2=null;
  2. var gsSK=null;
  3. var gsFtsBreakChars="trn"\ .,!@#$%^&*()~'`:;<>?/{}[]|+-=x85x92x93x94x95x96x97x99xA9xAExB7";
  4. var gnCLF=0;
  5. var gsHelpCannotSearch="Cannot search for that phrase.";
  6. var gsNoTopics="No Topics Found.";
  7. var gsLoadingDivID="LoadingDiv";
  8. var gsLoadingMsg="Loading data, please wait...";
  9. var gsSearchMsg="Searching...";
  10. var gsResultDivID="ResultDiv";
  11. var gaaFCD=new Array();
  12. var gaaFTCD=new Array();
  13. var goCF=null;
  14. var goCTF=null;
  15. var gaTI=null;
  16. var gnCurrentOp=0;
  17. var gbNot=false;
  18. var gbReady=false;
  19. var gnLoadFts=1;
  20. var gnCacheLimits=5;
  21. var gaCCD=new Array();
  22. var gbXML=false;
  23. var gaData=new Array();
  24. var gsBgColor="#ffffff";
  25. var gsBgImage="";
  26. var gsMargin="0pt";
  27. var gsIndent="0pt";
  28. var gsCheckKey=null;
  29. var gnIndexNum=0;
  30. var gaFtsContentsCon=null;
  31. var gaTopicCheckInfo=null;
  32. var gnTopicCheck=0;
  33. var goFont=null;
  34. var goErrFont=null;
  35. var goHoverFont=null;
  36. var gsABgColor="#cccccc";
  37. var gbWhFHost=false;
  38. var gbFirst=false;
  39. function setBackground(sBgImage)
  40. {
  41. gsBgImage=sBgImage;
  42. }
  43. function setBackgroundcolor(sBgColor)
  44. {
  45. gsBgColor=sBgColor;
  46. }
  47. function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)
  48. {
  49. var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);
  50. if(sType=="Normal")
  51. goFont=vFont;
  52. else if(sType=="Error")
  53. goErrFont=vFont;
  54. else if(sType=="Hover")
  55. goHoverFont=vFont;
  56. }
  57. function setActiveBgColor(sBgColor)
  58. {
  59. gsABgColor=sBgColor;
  60. }
  61. function setMargin(sMargin)
  62. {
  63. gsMargin=sMargin;
  64. }
  65. function setIndent(sIndent)
  66. {
  67. gsIndent=sIndent;
  68. }
  69. function updateCache(oCF)
  70. {
  71. var len=gaCCD.length;
  72. if(len<gnCacheLimits*gnCLF)
  73. gaCCD[len]=oCF;
  74. else{
  75. gaCCD[0].aTopics=null;
  76. gaCCD[0].aFtsKeys=null;
  77. removeItemFromArray(gaCCD,0);
  78. gaCCD[len-1]=oCF;
  79. }
  80. }
  81. function addFtsInfo(sPPath,sDPath,sFtsFile)
  82. {
  83. gaData[gaData.length]=new ftsInfo(sPPath,sDPath,sFtsFile);
  84. }
  85. function putDataXML(xmlDoc,sDocPath)
  86. {
  87. if(gnLoadFts==1)
  88. {
  89. var node=xmlDoc.lastChild;
  90. if(node)
  91. {
  92. var oChild=node.firstChild;
  93. var aFCD=new Array();
  94. var aFTCD=new Array();
  95. while(oChild)
  96. {
  97. if(oChild.nodeName=="chunkinfo")
  98. {
  99. var sURL=oChild.getAttribute("url");
  100. var sFirst=oChild.getAttribute("first");
  101. var sLast=oChild.getAttribute("last");
  102. if(sURL&&sFirst&&sLast)
  103. {
  104. item=new Object();
  105. item.sStartKey=sFirst;
  106. item.sEndKey=sLast;
  107. item.sFileName=sURL;
  108. aFCD[aFCD.length]=item;
  109. }
  110. }
  111. else if(oChild.nodeName=="tchunkinfo")
  112. {
  113. var sURL=oChild.getAttribute("url");
  114. var nB=parseInt(oChild.getAttribute("first"));
  115. var nE=parseInt(oChild.getAttribute("last"));
  116. if(sURL&&sFirst&&sLast)
  117. {
  118. item=new Object();
  119. item.nBegin=nB;
  120. item.nEnd=nE;
  121. item.sFileName=sURL;
  122. aFTCD[aFTCD.length]=item;
  123. }
  124. }
  125. oChild=oChild.nextSibling;
  126. }
  127. ftsReady(aFCD,aFTCD);
  128. }
  129. }
  130. else if(gnLoadFts==3)
  131. {
  132. var node=xmlDoc.lastChild;
  133. if(node)
  134. {
  135. var oChild=node.firstChild;
  136. var aTopics=new Array();
  137. while(oChild)
  138. {
  139. if(oChild.nodeName=="topic")
  140. {
  141. var name=oChild.getAttribute("name");
  142. var sURL=oChild.getAttribute("url");
  143. if(name&&name.length>0&&sURL)
  144. {
  145. var topic=new Object();
  146. topic.sTopicTitle=name;
  147. topic.sTopicURL=sURL;
  148. aTopics[aTopics.length]=topic;
  149. }
  150. }
  151. oChild=oChild.nextSibling;
  152. }
  153. putFtsTData(aTopics);
  154. }
  155. }
  156. else if(gnLoadFts==2)
  157. {
  158. var node=xmlDoc.lastChild;
  159. if(node)
  160. {
  161. var oChild=node.firstChild;
  162. var aFtsContents=new Array();
  163. while(oChild)
  164. {
  165. if(oChild.nodeName=="key")
  166. {
  167. var name=oChild.getAttribute("name");
  168. if(name&&name.length>0)
  169. {
  170. var item=new Object();
  171. item.sItemName=name;
  172. aFtsContents[aFtsContents.length]=item;
  173. var oChildChild=oChild.firstChild;
  174. while(oChildChild)
  175. {
  176. if(oChildChild.nodeName=="#text")
  177. {
  178. var sIDs=oChildChild.nodeValue;
  179. if(sIDs)
  180. {
  181. var nBPos=0;
  182. do
  183. {
  184. var nPos=sIDs.indexOf(",",nBPos);
  185. var sID=null;
  186. if(nPos!=-1)
  187. sID=sIDs.substring(nBPos,nPos);
  188. else
  189. sID=sIDs.substring(nBPos);
  190. if(sID)
  191. {
  192. var id=parseInt(sID);
  193. if(!isNaN(id))
  194. {
  195. if(!item.aTopics)
  196. item.aTopics=new Array();
  197. item.aTopics[item.aTopics.length]=id;
  198. }
  199. }
  200. nBPos=nPos+1;
  201. }while(nBPos!=0&&nBPos<sIDs.length);
  202. }
  203. }
  204. oChildChild=oChildChild.nextSibling;
  205. }
  206. }
  207. }
  208. oChild=oChild.nextSibling;
  209. }
  210. putFtsWData(aFtsContents);
  211. }
  212. }
  213. }
  214. function ftsInfo(sPPath,sDPath,sFtsFile)
  215. {
  216. this.sPPath=sPPath;
  217. this.sDPath=sDPath;
  218. this.sFtsFile=sFtsFile;
  219. }
  220. function window_OnLoad()
  221. {
  222. if(gsBgImage&&gsBgImage.length>0)
  223. {
  224. document.body.background=gsBgImage;
  225. }
  226. if(gsBgColor&&gsBgColor.length>0)
  227. {
  228. document.body.bgColor=gsBgColor;
  229. }
  230. writeResultDiv();
  231. loadFts();
  232. var oMsg=new whMessage(WH_MSG_SHOWFTS,this,1,null)
  233. SendMessage(oMsg);
  234. }
  235. function writeResultDiv()
  236. {
  237. var sHTML="<div id=""+gsResultDivID+"" style="POSITION:absolute;"></div>";
  238. document.body.insertAdjacentHTML("beforeEnd",sHTML);
  239. }
  240. function loadFts()
  241. {
  242. if(!gbReady)
  243. {
  244. var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);
  245. if(SendMessage(oResMsg)&&oResMsg.oParam)
  246. {
  247. gbReady=true;
  248. var oProj=oResMsg.oParam;
  249. var aProj=oProj.aProj;
  250. gbXML=oProj.bXML;
  251. if(aProj.length>0)
  252. {
  253. var sLangId=aProj[0].sLangId;
  254. for(var i=0;i<aProj.length;i++)
  255. {
  256. if(aProj[i].sFts!=null&&aProj[i].sFts!=""&&aProj[i].sLangId==sLangId)
  257. {
  258. addFtsInfo(aProj[i].sPPath,aProj[i].sDPath,aProj[i].sFts);
  259. }
  260. }
  261. }
  262. loadFD();
  263. }
  264. }
  265. }
  266. function loadFD()
  267. {
  268. if(gnCLF<gaData.length)
  269. {
  270. gnLoadFts=1;
  271. loadData2(gaData[gnCLF].sPPath+gaData[gnCLF].sDPath+gaData[gnCLF].sFtsFile);
  272. }
  273. else 
  274. {
  275. var oMsg = new whMessage(WH_MSG_BACKUPSEARCH, this, 1, null);
  276. if (SendMessage(oMsg))
  277. {
  278. if (oMsg.oParam)
  279. {
  280. gsSK=oMsg.oParam.toLowerCase();
  281. findFTSKey();
  282. }
  283. }
  284. RegisterListener2(this, WH_MSG_SEARCHFTSKEY);
  285. }
  286. }
  287. function loadData2(sFile)
  288. {
  289. if(gbXML)
  290. loadDataXML(sFile);
  291. else
  292. loadData(sFile);
  293. }
  294. function findFTSKey()
  295. {
  296. gaTI=new Array();
  297. gnCurrentOp=1;
  298. gbNot=false;
  299. displayMsg(gsSearchMsg);
  300. if(gsSK!="")
  301. {
  302. gbFirst=true;
  303. findOneKey();
  304. }
  305. }
  306. function findOneKey()
  307. {
  308. if(gsSK && gsSK!="")
  309. {
  310. var sInput=gsSK;
  311. var sCW="";
  312. var nS=-1;
  313. var nSep=-1;
  314. for(var nChar=0;nChar<gsFtsBreakChars.length;nChar++){
  315. var nFound=sInput.indexOf(gsFtsBreakChars.charAt(nChar));
  316. if((nFound!=-1)&&((nS==-1)||(nFound<nS))){
  317. nS=nFound;
  318. nSep=nChar;
  319. }
  320. }
  321. if(nS==-1){
  322. sCW=sInput;
  323. sInput="";
  324. }else{
  325. sCW=sInput.substring(0,nS);
  326. sInput=sInput.substring(nS+1);
  327. }
  328. gsSK=sInput;
  329. if((sCW=="or")||((nSep>=0)&&(gsFtsBreakChars.charAt(nSep)=="|"))){
  330. gnCurrentOp=0;
  331. gbNot=false;
  332. }else if((sCW=="and")||((nSep>=0)&&(gsFtsBreakChars.charAt(nSep)=="&"))){
  333. gnCurrentOp=1;
  334. gbNot=false;
  335. }else if((sCW=="not")||
  336. ((nSep>=0)&&(gsFtsBreakChars.charAt(nSep)=="~"))){
  337. gbNot=!gbNot;
  338. }else if(sCW!=""&&!IsStopWord(sCW,gaFtsStop)){
  339. var sCurrentStem=GetStem(sCW);
  340. gsCW=sCurrentStem;
  341. ftsFindKeyword();
  342. return;
  343. }
  344. findOneKey();
  345. return;
  346. }
  347. else{
  348. displayTopics();
  349. checkAgain();
  350. }
  351. }
  352. function checkAgain()
  353. {
  354. gsSK=gsSK2;
  355. gsSK2=null;
  356. if(gsSK!=null)
  357. setTimeout("findFTSKey();",1);
  358. }
  359. function displayTopics()
  360. {
  361. var sHTML="";
  362. var sLine="";
  363. for(var i=0;i<gaTI.length;i++){
  364. sLine+="<dt><nobr><a href='"+_textToHtml(gaTI[i].sTopicURL)+"'>"+_textToHtml(gaTI[i].sTopicTitle)+"</a></nobr></dt>";
  365. if(i>>4<<4==i)
  366. {
  367. sHTML+=sLine;
  368. sLine="";
  369. }
  370. }
  371. if(sLine.length>0)
  372. sHTML+=sLine;
  373. if(sHTML.length==0)
  374. sHTML="<P>"+gsNoTopics+"</P>"
  375. else
  376. sHTML="<dl>"+sHTML+"</dl>";
  377. var resultDiv=getElement(gsResultDivID);
  378. if(resultDiv)
  379. resultDiv.innerHTML=sHTML;
  380. }
  381. function displayMsg(sErrorMsg)
  382. {
  383. var sHTML="<P>"+sErrorMsg+"</P>";
  384. var resultDiv=getElement(gsResultDivID);
  385. if(resultDiv)
  386. resultDiv.innerHTML=sHTML;
  387. }
  388. function ftsFindKeyword()
  389. {
  390. var sKey=gsCW;
  391. var bNeedLoad=false;
  392. var aFtsContentsCon=null;
  393. var s=0;
  394. if(sKey==null) return;
  395. if(!gsCheckKey||sKey!=gsCheckKey||gnIndexNum==0)
  396. {
  397. aFtsContentsCon=new Array();
  398. gnCheck=0;
  399. gsCheckKey=sKey;
  400. gnTopicCheck=0;
  401. gaTopicCheckInfo=null;
  402. }
  403. else{
  404. s=gnIndexNum;
  405. aFtsContentsCon=gaFtsContentsCon;
  406. }
  407. for(var i=gnCheck;i<gaaFCD.length;i++)
  408. {
  409. var oCF=getChunkedFts(i,sKey);
  410. if(oCF)
  411. {
  412. if(!oCF.aFtsKeys&&oCF.sFileName!=null)
  413. {
  414. bNeedLoad=true;
  415. oCF.nProjId=i;
  416. goCF=oCF;
  417. gnIndexNum=s;
  418. gnCheck=i;
  419. gaFtsContentsCon=aFtsContentsCon;
  420. gnLoadFts=2;
  421. beginLoading();
  422. loadData2(gaData[i].sPPath+gaData[i].sDPath+oCF.sFileName);
  423. break;
  424. }
  425. else{
  426. aFtsContentsCon[s++]=oCF;
  427. }
  428. }
  429. }
  430. if(!bNeedLoad)
  431. {
  432. var aTI=gaTopicCheckInfo;
  433. for(var m=gnTopicCheck;m<aFtsContentsCon.length;m++)
  434. {
  435. var aTIPart=getTopics(aFtsContentsCon[m],sKey);
  436. if(aTIPart==null)
  437. {
  438. gnCheck=gaaFCD.length;
  439. gnTopicCheck=m;
  440. gaTopicCheckInfo=aTI;
  441. gaFtsContentsCon=aFtsContentsCon;
  442. return;
  443. }
  444. if(m==0)
  445. aTI=aTIPart;
  446. else
  447. aTI=mergeTopics(aTI,aTIPart);
  448. }
  449. if(mergewithPreviousResult(aTI))
  450. {
  451. gbFirst=false;
  452. findOneKey();
  453. }
  454. else
  455. checkAgain();
  456. }
  457. }
  458. function mergewithPreviousResult(aTI)
  459. {
  460. if(aTI!=null&&aTI.length!=0)
  461. {
  462. var nNumTopics=aTI.length;
  463. if(gnCurrentOp==0||gbFirst){
  464. if(gbNot){
  465. displayMsg(gsHelpCannotSearch);
  466. return false;
  467. }else{
  468. var aLS,aSS;
  469. if(gaTI.length>=aTI.length)
  470. {
  471. aLS=gaTI;
  472. aSS=aTI;
  473. }
  474. else
  475. {
  476. aLS=aTI;
  477. aSS=gaTI;
  478. }
  479. var s=0;
  480. for(var i=0;i<aSS.length;i++)
  481. {
  482. var bAlreadyThere=false;
  483. for(var j=s;j<aLS.length;j++)
  484. {
  485. if(aSS[i].equalTo(aLS[j]))
  486. {
  487. bAlreadyThere=true;
  488. s=j;
  489. break;
  490. }
  491. }
  492. if(!bAlreadyThere)
  493. {
  494. insertTopic(aLS,aSS[i]);
  495. }
  496. }
  497. gaTI=aLS;
  498. }
  499. }else if(gnCurrentOp==1){
  500. if(gbNot){
  501. var s=0;
  502. for(var i=0;i<aTI.length;i++)
  503. {
  504. for(var j=s;j<gaTI.length;j++)
  505. {
  506. if(aTI[i].equalTo(gaTI[j]))
  507. {
  508. removeItemFromArray(gaTI,j);
  509. s=j;
  510. break;
  511. }
  512. }
  513. }
  514. }else{
  515. var s=0;
  516. for(var i=0;i<gaTI.length;i++)
  517. {
  518. var bFound=false;
  519. for(var j=s;j<aTI.length;j++)
  520. {
  521. if(gaTI[i].equalTo(aTI[j]))
  522. {
  523. bFound=true;
  524. s=j;
  525. }
  526. }
  527. if(!bFound)
  528. {
  529. removeItemFromArray(gaTI,i);
  530. i--;
  531. }
  532. }
  533. }
  534. }
  535. }else{
  536. if((gnCurrentOp==1)&&(!gbNot)){
  537. gaTI.length=0;
  538. }else if((gnCurrentOp==0)&&(gbNot)){
  539. displayMsg(gsHelpCannotSearch);
  540. return false;
  541. }
  542. }
  543. return true;
  544. }
  545. function insertTopic(aTI,oTI)
  546. {
  547. var nB=0;
  548. var nE=aTI.length-1;
  549. if(nE>=0)
  550. {
  551. var nM;
  552. var bFound=false;
  553. do{
  554. nM=(nB+nE)>>1;
  555. if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)>0)
  556. nE=nM-1;
  557. else if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)<0)
  558. nB=nM+1;
  559. else
  560. {
  561. bFound=true;
  562. break;
  563. }
  564. }while(nB<=nE);
  565. if(bFound)
  566. insertItemIntoArray(aTI,nM,oTI);
  567. else
  568. {
  569. if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)<0)
  570. insertItemIntoArray(aTI,nM+1,oTI);
  571. else
  572. insertItemIntoArray(aTI,nM,oTI);
  573. }
  574. }
  575. else
  576. aTI[0]=oTI;
  577. }
  578. function mergeTopics(aTI1,aTI2)
  579. {
  580. var i1=0;
  581. var i2=0;
  582. var len1=aTI1.length;
  583. var len2=aTI2.length;
  584. var aTopicNew=new Array();
  585. var i=0;
  586. while(i1<len1||i2<len2)
  587. {
  588. if(i1<len1&&i2<len2)
  589. {
  590. if(compare(aTI1[i1].sTopicTitle,aTI2[i2].sTopicTitle)<0)
  591. aTopicNew[i++]=aTI1[i1++];
  592. else
  593. aTopicNew[i++]=aTI2[i2++];
  594. }
  595. else if(i1<len1)
  596. aTopicNew[i++]=aTI1[i1++];
  597. else if(i2<len2)
  598. aTopicNew[i++]=aTI2[i2++];
  599. }
  600. return aTopicNew;
  601. }
  602. function getTopics(oCF,sKey)
  603. {
  604. var aTIPart=new Array();
  605. if(oCF&&oCF.aFtsKeys)
  606. {
  607. var keys=oCF.aFtsKeys;
  608. var nB=0;
  609. var nE=keys.length-1;
  610. var nM=-1;
  611. var bFound=false;
  612. do{
  613. nM=(nB+nE)>>1;
  614. if(compare(keys[nM].sItemName,sKey)>0)
  615. nE=nM-1;
  616. else if(compare(keys[nM].sItemName,sKey)<0)
  617. nB=nM+1;
  618. else{
  619. bFound=true;
  620. break;
  621. }
  622. }while(nB<=nE);
  623. if(bFound)
  624. {
  625. if(keys[nM].aTopics)
  626. {
  627. for(var i=0;i<keys[nM].aTopics.length;i++)
  628. {
  629. var oTC=getTopicChunk(gaaFTCD[oCF.nProjId],keys[nM].aTopics[i]);
  630. if(oTC.aTopics)
  631. {
  632. aTIPart[aTIPart.length]=
  633. new topicInfo(oTC.aTopics[keys[nM].aTopics[i]-oTC.nBegin].sTopicTitle,
  634. gaData[oCF.nProjId].sPPath+oTC.aTopics[keys[nM].aTopics[i]-oTC.nBegin].sTopicURL);
  635. }
  636. else{
  637. goCTF=oTC;
  638. gnLoadFts=3;
  639. beginLoading();
  640. loadData2(gaData[oCF.nProjId].sPPath+gaData[oCF.nProjId].sDPath+oTC.sFileName);
  641. return null;
  642. }
  643. }
  644. }
  645. }
  646. }
  647. return aTIPart;
  648. }
  649. function getTopicChunk(aFTCD,nTopicId)
  650. {
  651. if(aFTCD&&aFTCD.length)
  652. {
  653. var nB=0;
  654. var nE=aFTCD.length-1;
  655. var nM=-1;
  656. var bFound=false;
  657. do{
  658. nM=(nB+nE)>>1;
  659. if(aFTCD[nM].nBegin>nTopicId)
  660. nE=nM-1;
  661. else if(aFTCD[nM].nEnd<nTopicId)
  662. nB=nM+1;
  663. else{
  664. bFound=true;
  665. break;
  666. }
  667. }while(nB<=nE);
  668. if(bFound)
  669. return aFTCD[nM];
  670. }
  671. return null;
  672. }
  673. function endLoading()
  674. {
  675. var oDiv=getElement(gsLoadingDivID);
  676. if(oDiv)
  677. oDiv.style.visibility="hidden";
  678. }
  679. function beginLoading()
  680. {
  681. var oDiv=getElement(gsLoadingDivID);
  682. if(!oDiv)
  683. {
  684. document.body.insertAdjacentHTML("afterBegin",writeLoadingDiv());
  685. oDiv=getElement(gsLoadingDivID);
  686. }
  687. if(oDiv)
  688. {
  689. oDiv.style.top=document.body.scrollTop;
  690. oDiv.style.visibility="visible";
  691. }
  692. }
  693. function writeLoadingDiv(nIIdx)
  694. {
  695. return "<div id=""+gsLoadingDivID+"" style="position:absolute;top:0;left:0;z-index:600;visibility:hidden;padding-left:4px;background-color:ivory;border-width:1;border-style:solid;border-color:black;width:150px;">"+gsLoadingMsg+"</div>";
  696. }
  697. function topicInfo(sTopicTitle,sTopicURL)
  698. {
  699. this.sTopicTitle=sTopicTitle;
  700. this.sTopicURL=sTopicURL;
  701. this.equalTo=function(oTI)
  702. {
  703. return ((this.sTopicTitle==oTI.sTopicTitle)&&
  704. (this.sTopicURL==oTI.sTopicURL));
  705. }
  706. }
  707. function getChunkedFts(nIndex,sKey)
  708. {
  709. var oCF=null;
  710. if(nIndex<gaaFCD.length)
  711. {
  712. var len=gaaFCD[nIndex].length;
  713. if(len>0)
  714. {
  715. var nB=0;
  716. var nE=len-1;
  717. var bFound=false;
  718. do{
  719. var nM=(nB+nE)>>1;
  720. if(compare(sKey,gaaFCD[nIndex][nM].sEndKey)>0)
  721. {
  722. nB=nM+1;
  723. }
  724. else if(compare(sKey,gaaFCD[nIndex][nM].sStartKey)<0)
  725. {
  726. nE=nM-1;
  727. }
  728. else{
  729. bFound=true;
  730. break;
  731. }
  732. }while(nE>=nB);
  733. if(bFound)
  734. oCF=gaaFCD[nIndex][nM];
  735. }
  736. }
  737. return oCF;
  738. }
  739. function ftsReady(aFCD,aFTCD)
  740. {
  741. endLoading();
  742. gaaFTCD[gnCLF]=aFTCD;
  743. gaaFCD[gnCLF++]=aFCD;
  744. setTimeout("loadFD();",1);
  745. }
  746. function putFtsTData(aTopics)
  747. {
  748. endLoading();
  749. var oCTF=goCTF;
  750. if(oCTF)
  751. {
  752. oCTF.aTopics=aTopics;
  753. setTimeout("ftsFindKeyword();",1);
  754. }
  755. }
  756. function putFtsWData(aFtsContents)
  757. {
  758. endLoading();
  759. var oCF=goCF;
  760. if(oCF)
  761. {
  762. updateCache(oCF);
  763. oCF.aFtsKeys=aFtsContents;
  764. setTimeout("ftsFindKeyword();",1);
  765. }
  766. }
  767. function IsStopWord(sCW,aFtsStopArray)
  768. {
  769. var nStopArrayLen=aFtsStopArray.length;
  770. var nB=0;
  771. var nE=nStopArrayLen-1;
  772. var nM=0;
  773. var bFound=false;
  774. var sStopWord="";
  775. while(nB<=nE){
  776. nM=(nB+nE);
  777. nM>>=1;
  778. sStopWord=aFtsStopArray[nM];
  779. if(compare(sCW,sStopWord)>0){
  780. nB=(nB==nM)?nM+1:nM;
  781. }else{
  782. if(compare(sCW,sStopWord)<0){
  783. nE=(nE==nM)?nM-1:nM;
  784. }else{
  785. bFound=true;
  786. break;
  787. }
  788. }
  789. }
  790. return bFound;
  791. }
  792. function GetStem(szWord)
  793. {
  794. if(gaFtsStem==null||gaFtsStem.length==0)return szWord;
  795. var aStems=gaFtsStem;
  796. var nStemPos=0;
  797. var csStem="";
  798. for(var iStem=0;iStem<aStems.length;iStem++){
  799. if(aStems[iStem].length>=szWord.length-1) continue;
  800. nStemPos=szWord.lastIndexOf(aStems[iStem]);
  801. if(nStemPos>0){
  802. var cssub=szWord.substring(nStemPos);
  803. if(cssub==aStems[iStem]){
  804. csStem=szWord;
  805. if(szWord.charAt(nStemPos-2)==szWord.charAt(nStemPos-1)){
  806. csStem=csStem.substring(0,nStemPos-1);
  807. }else{
  808. csStem=csStem.substring(0,nStemPos);
  809. }
  810. return csStem;
  811. }
  812. }
  813. }
  814. return szWord;
  815. }
  816. function FtsWriteClassStyle()
  817. {
  818. var sStyle="<STYLE TYPE='text/css'>n";
  819. if (gsBgImage)
  820. sStyle+="body {border-top:"+gsBgColor+" 1px solid;}n";
  821. else
  822. sStyle+="body {border-top:black 1px solid;}n";
  823. sStyle+="P {"+getFontStyle(goErrFont)+"margin-left:"+gsIndent+";margin-top:"+gsMargin+";}n";
  824. sStyle+="dl {"+getFontStyle(goFont)+"margin-left:"+gsIndent+";margin-top:"+gsMargin+";}n";
  825. sStyle+="A:link {"+getFontStyle(goFont)+"}n";
  826. sStyle+="A:visited {"+getFontStyle(goFont)+"}n";
  827. sStyle+="A:active {background-color:"+gsABgColor+";}n";
  828. sStyle+="A:hover {"+getFontStyle(goHoverFont)+"}n";
  829. sStyle+="</STYLE>";
  830. document.write(sStyle);
  831. }
  832. function window_Unload()
  833. {
  834. UnRegisterListener2(this,WH_MSG_PROJECTREADY);
  835. UnRegisterListener2(this, WH_MSG_SEARCHFTSKEY);
  836. }
  837. function onSendMessage(oMsg)
  838. {
  839. var nMsgId=oMsg.nMessageId;
  840. if(nMsgId==WH_MSG_SEARCHFTSKEY)
  841. {
  842. if(oMsg.oParam)
  843. {
  844. if(gsSK==null||gsSK=="")
  845. {
  846. gsSK=oMsg.oParam.toLowerCase();
  847. findFTSKey();
  848. }
  849. else
  850. gsSK2=oMsg.oParam.toLowerCase();
  851. }
  852. }
  853. else if(nMsgId==WH_MSG_PROJECTREADY)
  854. {
  855. loadFts();
  856. }
  857. return true;
  858. }
  859. if (window.gbWhUtil&&window.gbWhLang&&window.gbWhProxy&&window.gbWhVer&&window.gbWhMsg)
  860. {
  861. goFont=new whFont("Verdana","8pt","#000000","normal","normal","none");
  862. goErrFont=new whFont("Verdana","8pt","#000000","normal","bold","none");
  863. goHoverFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");
  864. window.onload=window_OnLoad;
  865. window.onbeforeunload=window_BUnload;
  866. window.onunload=window_Unload;
  867. RegisterListener2(this,WH_MSG_PROJECTREADY);
  868. gbWhFHost=true;
  869. }
  870. else
  871. document.location.reload();