+++ /dev/null
-var gsSK2=null;\r
-var gsSK=null;\r
-var gsFtsBreakChars="\t\r\n\"\\ .,!@#$%^&*()~'`:;<>?/{}[]|+-=\x85\x92\x93\x94\x95\x96\x97\x99\xA9\xAE\xB7";\r
-var gnCLF=0;\r
-var gsHelpCannotSearch="Cannot search for that phrase.";\r
-var gsNoTopics="No Topics Found.";\r
-var gsLoadingDivID="LoadingDiv";\r
-var gsLoadingMsg="Loading data, please wait...";\r
-var gsSearchMsg="Searching...";\r
-var gsResultDivID="ResultDiv";\r
-var gaaFCD=new Array();\r
-var gaaFTCD=new Array();\r
-var goCF=null;\r
-var goCTF=null;\r
-var gaTI=null;\r
-var gnCurrentOp=0;\r
-var gbNot=false;\r
-var gbReady=false;\r
-var gnLoadFts=1;\r
-var gnCacheLimits=5;\r
-var gaCCD=new Array();\r
-var gbXML=false;\r
-var gaData=new Array();\r
-var gsBgColor="#ffffff";\r
-var gsBgImage="";\r
-var gsMargin="0pt";\r
-var gsIndent="0pt";\r
-var gsCheckKey=null;\r
-var gnIndexNum=0;\r
-var gaFtsContentsCon=null;\r
-var gaTopicCheckInfo=null;\r
-var gnTopicCheck=0;\r
-var goFont=null;\r
-var goErrFont=null;\r
-var goHoverFont=null;\r
-var gsABgColor="#cccccc";\r
-var gbWhFHost=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")\r
- goFont=vFont;\r
- else if(sType=="Error")\r
- goErrFont=vFont;\r
- else if(sType=="Hover")\r
- goHoverFont=vFont;\r
-}\r
-\r
-function setActiveBgColor(sBgColor)\r
-{\r
- gsABgColor=sBgColor;\r
-}\r
-\r
-function setMargin(sMargin)\r
-{\r
- gsMargin=sMargin;\r
-}\r
-\r
-function setIndent(sIndent)\r
-{\r
- gsIndent=sIndent;\r
-}\r
-\r
-function updateCache(oCF)\r
-{\r
- var len=gaCCD.length;\r
- if(len<gnCacheLimits*gnCLF)\r
- gaCCD[len]=oCF;\r
- else{\r
- gaCCD[0].aTopics=null;\r
- gaCCD[0].aFtsKeys=null;\r
- removeItemFromArray(gaCCD,0);\r
- gaCCD[len-1]=oCF;\r
- }\r
-}\r
-\r
-function addFtsInfo(sPPath,sDPath,sFtsFile)\r
-{\r
- gaData[gaData.length]=new ftsInfo(sPPath,sDPath,sFtsFile);\r
-}\r
-\r
-function putDataXML(xmlDoc,sDocPath)\r
-{\r
- if(gnLoadFts==1)\r
- {\r
- var node=xmlDoc.lastChild;\r
- if(node)\r
- {\r
- var oChild=node.firstChild;\r
- var aFCD=new Array();\r
- var aFTCD=new Array();\r
- while(oChild)\r
- {\r
- if(oChild.nodeName=="chunkinfo")\r
- {\r
- var sURL=oChild.getAttribute("url");\r
- var sFirst=oChild.getAttribute("first");\r
- var sLast=oChild.getAttribute("last");\r
- if(sURL&&sFirst&&sLast)\r
- {\r
- item=new Object();\r
- item.sStartKey=sFirst;\r
- item.sEndKey=sLast;\r
- item.sFileName=sURL;\r
- aFCD[aFCD.length]=item;\r
- }\r
- }\r
- else if(oChild.nodeName=="tchunkinfo")\r
- {\r
- var sURL=oChild.getAttribute("url");\r
- var nB=parseInt(oChild.getAttribute("first"));\r
- var nE=parseInt(oChild.getAttribute("last"));\r
- if(sURL&&sFirst&&sLast)\r
- {\r
- item=new Object();\r
- item.nBegin=nB;\r
- item.nEnd=nE;\r
- item.sFileName=sURL;\r
- aFTCD[aFTCD.length]=item;\r
- }\r
-\r
- }\r
- oChild=oChild.nextSibling;\r
- }\r
- ftsReady(aFCD,aFTCD);\r
- }\r
- }\r
- else if(gnLoadFts==3)\r
- {\r
- var node=xmlDoc.lastChild;\r
- if(node)\r
- {\r
- var oChild=node.firstChild;\r
- var aTopics=new Array();\r
- while(oChild)\r
- {\r
- if(oChild.nodeName=="topic")\r
- {\r
- var name=oChild.getAttribute("name");\r
- var sURL=oChild.getAttribute("url");\r
- if(name&&name.length>0&&sURL)\r
- {\r
- var topic=new Object();\r
- topic.sTopicTitle=name;\r
- topic.sTopicURL=sURL;\r
- aTopics[aTopics.length]=topic;\r
- }\r
- }\r
- oChild=oChild.nextSibling;\r
- }\r
- putFtsTData(aTopics);\r
- }\r
- }\r
- else if(gnLoadFts==2)\r
- {\r
- var node=xmlDoc.lastChild;\r
- if(node)\r
- {\r
- var oChild=node.firstChild;\r
- var aFtsContents=new Array();\r
- while(oChild)\r
- {\r
- if(oChild.nodeName=="key")\r
- {\r
- var name=oChild.getAttribute("name");\r
- if(name&&name.length>0)\r
- {\r
- var item=new Object();\r
- item.sItemName=name;\r
- aFtsContents[aFtsContents.length]=item;\r
- var oChildChild=oChild.firstChild;\r
- while(oChildChild)\r
- {\r
- if(oChildChild.nodeName=="#text")\r
- {\r
- var sIDs=oChildChild.nodeValue;\r
- if(sIDs)\r
- {\r
- var nBPos=0;\r
- do\r
- {\r
- var nPos=sIDs.indexOf(",",nBPos);\r
- var sID=null;\r
- if(nPos!=-1)\r
- sID=sIDs.substring(nBPos,nPos);\r
- else\r
- sID=sIDs.substring(nBPos);\r
-\r
- if(sID)\r
- {\r
- var id=parseInt(sID);\r
- if(!isNaN(id))\r
- {\r
- if(!item.aTopics)\r
- item.aTopics=new Array();\r
- item.aTopics[item.aTopics.length]=id;\r
- }\r
- }\r
- nBPos=nPos+1;\r
- }while(nBPos!=0&&nBPos<sIDs.length);\r
- }\r
- }\r
- oChildChild=oChildChild.nextSibling;\r
- }\r
- }\r
- }\r
- oChild=oChild.nextSibling;\r
- }\r
- putFtsWData(aFtsContents);\r
- }\r
- }\r
-}\r
-\r
-function ftsInfo(sPPath,sDPath,sFtsFile)\r
-{\r
- this.sPPath=sPPath;\r
- this.sDPath=sDPath;\r
- this.sFtsFile=sFtsFile;\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
- writeResultDiv();\r
- loadFts();\r
- var oMsg=new whMessage(WH_MSG_SHOWFTS,this,1,null)\r
- SendMessage(oMsg);\r
-}\r
-\r
-function writeResultDiv()\r
-{\r
- var sHTML="<div id=\""+gsResultDivID+"\" style=\"POSITION:absolute;\"></div>";\r
- document.body.insertAdjacentHTML("beforeEnd",sHTML);\r
-}\r
-\r
-function loadFts()\r
-{\r
- if(!gbReady)\r
- {\r
- var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);\r
- if(SendMessage(oResMsg)&&oResMsg.oParam)\r
- {\r
- gbReady=true;\r
- var oProj=oResMsg.oParam;\r
- var aProj=oProj.aProj;\r
- gbXML=oProj.bXML;\r
- if(aProj.length>0)\r
- {\r
- var sLangId=aProj[0].sLangId;\r
- for(var i=0;i<aProj.length;i++)\r
- {\r
- if(aProj[i].sFts!=null&&aProj[i].sFts!=""&&aProj[i].sLangId==sLangId)\r
- {\r
- addFtsInfo(aProj[i].sPPath,aProj[i].sDPath,aProj[i].sFts);\r
- }\r
- }\r
- }\r
- loadFD();\r
-\r
- } \r
- }\r
-}\r
-\r
-function loadFD()\r
-{\r
- if(gnCLF<gaData.length)\r
- {\r
- gnLoadFts=1;\r
- loadData2(gaData[gnCLF].sPPath+gaData[gnCLF].sDPath+gaData[gnCLF].sFtsFile);\r
- }\r
- else \r
- {\r
- var oMsg = new whMessage(WH_MSG_BACKUPSEARCH, this, 1, null);\r
- if (SendMessage(oMsg))\r
- {\r
- if (oMsg.oParam)\r
- {\r
- gsSK=oMsg.oParam.toLowerCase();\r
- findFTSKey();\r
- }\r
- }\r
- RegisterListener2(this, WH_MSG_SEARCHFTSKEY);\r
- }\r
-}\r
-\r
-function loadData2(sFile)\r
-{\r
- if(gbXML)\r
- loadDataXML(sFile);\r
- else\r
- loadData(sFile);\r
-}\r
-\r
-function findFTSKey()\r
-{\r
- gaTI=new Array();\r
- gnCurrentOp=0;\r
- gbNot=false;\r
- displayMsg(gsSearchMsg);\r
- if(gsSK!="")\r
- findOneKey();\r
-}\r
-\r
-function findOneKey()\r
-{\r
- if(gsSK && gsSK!="")\r
- {\r
- var sInput=gsSK;\r
- var sCW="";\r
- var nS=-1;\r
- var nSep=-1;\r
- for(var nChar=0;nChar<gsFtsBreakChars.length;nChar++){\r
- var nFound=sInput.indexOf(gsFtsBreakChars.charAt(nChar));\r
- if((nFound!=-1)&&((nS==-1)||(nFound<nS))){\r
- nS=nFound;\r
- nSep=nChar;\r
- }\r
- }\r
- if(nS==-1){\r
- sCW=sInput;\r
- sInput="";\r
- }else{\r
- sCW=sInput.substring(0,nS);\r
- sInput=sInput.substring(nS+1);\r
- }\r
-\r
- gsSK=sInput;\r
- \r
- if((sCW=="or")||((nSep>=0)&&(gsFtsBreakChars.charAt(nSep)=="|"))){\r
- gnCurrentOp=0;\r
- gbNot=false;\r
- }else if((sCW=="and")||((nSep>=0)&&(gsFtsBreakChars.charAt(nSep)=="&"))){\r
- gnCurrentOp=1;\r
- gbNot=false;\r
- }else if((sCW=="not")||\r
- ((nSep>=0)&&(gsFtsBreakChars.charAt(nSep)=="~"))){\r
- gbNot=!gbNot;\r
- }else if(sCW!=""&&!IsStopWord(sCW,gaFtsStop)){\r
- var sCurrentStem=GetStem(sCW);\r
- gsCW=sCurrentStem;\r
- ftsFindKeyword();\r
- return;\r
- }\r
- findOneKey();\r
- return;\r
- }\r
- else{\r
- displayTopics();\r
- checkAgain();\r
- }\r
-}\r
-\r
-function checkAgain()\r
-{\r
- gsSK=gsSK2;\r
- gsSK2=null;\r
- if(gsSK!=null)\r
- setTimeout("findFTSKey();",1);\r
-}\r
-\r
-function displayTopics()\r
-{\r
- var sHTML="";\r
- var sLine="";\r
- for(var i=0;i<gaTI.length;i++){\r
- sLine+="<dt><nobr><a href='"+_textToHtml(gaTI[i].sTopicURL)+"'>"+_textToHtml(gaTI[i].sTopicTitle)+"</a></nobr></dt>";\r
- if(i>>4<<4==i)\r
- {\r
- sHTML+=sLine;\r
- sLine="";\r
- }\r
- }\r
- if(sLine.length>0)\r
- sHTML+=sLine;\r
-\r
- if(sHTML.length==0)\r
- sHTML="<P>"+gsNoTopics+"</P>"\r
- else\r
- sHTML="<dl>"+sHTML+"</dl>";\r
-\r
- var resultDiv=getElement(gsResultDivID);\r
- if(resultDiv)\r
- resultDiv.innerHTML=sHTML;\r
-}\r
-\r
-function displayMsg(sErrorMsg)\r
-{\r
- var sHTML="<P>"+sErrorMsg+"</P>";\r
-\r
- var resultDiv=getElement(gsResultDivID);\r
- if(resultDiv)\r
- resultDiv.innerHTML=sHTML;\r
-}\r
-\r
-function ftsFindKeyword()\r
-{\r
- var sKey=gsCW;\r
- var bNeedLoad=false;\r
- var aFtsContentsCon=null;\r
- var s=0;\r
- if(sKey==null) return;\r
- if(!gsCheckKey||sKey!=gsCheckKey||gnIndexNum==0)\r
- {\r
- aFtsContentsCon=new Array();\r
- gnCheck=0;\r
- gsCheckKey=sKey;\r
- gnTopicCheck=0;\r
- gaTopicCheckInfo=null;\r
- }\r
- else{\r
- s=gnIndexNum;\r
- aFtsContentsCon=gaFtsContentsCon;\r
- }\r
- for(var i=gnCheck;i<gaaFCD.length;i++)\r
- {\r
- var oCF=getChunkedFts(i,sKey);\r
- if(oCF)\r
- {\r
- if(!oCF.aFtsKeys&&oCF.sFileName!=null)\r
- {\r
- bNeedLoad=true;\r
- oCF.nProjId=i;\r
- goCF=oCF;\r
- gnIndexNum=s;\r
- gnCheck=i;\r
- gaFtsContentsCon=aFtsContentsCon;\r
- gnLoadFts=2;\r
- beginLoading();\r
- loadData2(gaData[i].sPPath+gaData[i].sDPath+oCF.sFileName);\r
- break;\r
- }\r
- else{\r
- aFtsContentsCon[s++]=oCF;\r
- }\r
- }\r
- }\r
- if(!bNeedLoad)\r
- {\r
- var aTI=gaTopicCheckInfo;\r
- for(var m=gnTopicCheck;m<aFtsContentsCon.length;m++)\r
- {\r
- var aTIPart=getTopics(aFtsContentsCon[m],sKey);\r
- if(aTIPart==null)\r
- {\r
- gnCheck=gaaFCD.length;\r
- gnTopicCheck=m;\r
- gaTopicCheckInfo=aTI;\r
- gaFtsContentsCon=aFtsContentsCon;\r
- return;\r
- }\r
- if(m==0)\r
- aTI=aTIPart;\r
- else\r
- aTI=mergeTopics(aTI,aTIPart);\r
- }\r
- if(mergewithPreviousResult(aTI))\r
- findOneKey();\r
- else\r
- checkAgain();\r
- }\r
-}\r
-\r
-function mergewithPreviousResult(aTI)\r
-{\r
- if(aTI!=null&&aTI.length!=0)\r
- {\r
- var nNumTopics=aTI.length;\r
- if(gnCurrentOp==0){\r
- if(gbNot){\r
- displayMsg(gsHelpCannotSearch);\r
- return false;\r
- }else{\r
- var aLS,aSS;\r
- if(gaTI.length>=aTI.length)\r
- {\r
- aLS=gaTI;\r
- aSS=aTI;\r
- }\r
- else\r
- {\r
- aLS=aTI;\r
- aSS=gaTI;\r
- }\r
- var s=0;\r
- for(var i=0;i<aSS.length;i++)\r
- {\r
- var bAlreadyThere=false;\r
- for(var j=s;j<aLS.length;j++)\r
- {\r
- if(aSS[i].equalTo(aLS[j]))\r
- {\r
- bAlreadyThere=true;\r
- s=j;\r
- break;\r
- }\r
- }\r
- if(!bAlreadyThere)\r
- {\r
- insertTopic(aLS,aSS[i]);\r
- }\r
- }\r
- gaTI=aLS;\r
- }\r
- }else if(gnCurrentOp==1){\r
- if(gbNot){\r
- var s=0;\r
- for(var i=0;i<aTI.length;i++)\r
- {\r
- for(var j=s;j<gaTI.length;j++)\r
- {\r
- if(aTI[i].equalTo(gaTI[j]))\r
- {\r
- removeItemFromArray(gaTI,j);\r
- s=j;\r
- break;\r
- }\r
- }\r
- }\r
- }else{\r
- var s=0;\r
- for(var i=0;i<gaTI.length;i++)\r
- {\r
- var bFound=false;\r
- for(var j=s;j<aTI.length;j++)\r
- {\r
- if(gaTI[i].equalTo(aTI[j]))\r
- {\r
- bFound=true;\r
- s=j;\r
- }\r
- }\r
- if(!bFound)\r
- {\r
- removeItemFromArray(gaTI,i);\r
- i--;\r
- }\r
- } \r
- }\r
- }\r
- }else{\r
- if((gnCurrentOp==1)&&(!gbNot)){\r
- gaTI.length=0;\r
- }else if((gnCurrentOp==0)&&(gbNot)){\r
- displayMsg(gsHelpCannotSearch);\r
- return false;\r
- }\r
- }\r
- return true;\r
-}\r
-\r
-function insertTopic(aTI,oTI)\r
-{\r
- var nB=0;\r
- var nE=aTI.length-1;\r
- if(nE>=0)\r
- {\r
- var nM;\r
- var bFound=false;\r
- do{\r
- nM=(nB+nE)>>1;\r
- if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)>0)\r
- nE=nM-1;\r
- else if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)<0)\r
- nB=nM+1;\r
- else\r
- {\r
- bFound=true;\r
- break;\r
- }\r
- }while(nB<=nE);\r
- if(bFound)\r
- insertItemIntoArray(aTI,nM,oTI);\r
- else\r
- {\r
- if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)<0)\r
- insertItemIntoArray(aTI,nM+1,oTI);\r
- else\r
- insertItemIntoArray(aTI,nM,oTI);\r
- }\r
- }\r
- else\r
- aTI[0]=oTI;\r
-}\r
-\r
-function mergeTopics(aTI1,aTI2)\r
-{\r
- var i1=0;\r
- var i2=0;\r
- var len1=aTI1.length;\r
- var len2=aTI2.length;\r
- var aTopicNew=new Array();\r
- var i=0;\r
- while(i1<len1||i2<len2)\r
- {\r
- if(i1<len1&&i2<len2)\r
- {\r
- if(compare(aTI1[i1].sTopicTitle,aTI2[i2].sTopicTitle)<0)\r
- aTopicNew[i++]=aTI1[i1++];\r
- else\r
- aTopicNew[i++]=aTI2[i2++];\r
- }\r
- else if(i1<len1)\r
- aTopicNew[i++]=aTI1[i1++];\r
- else if(i2<len2)\r
- aTopicNew[i++]=aTI2[i2++];\r
- }\r
- return aTopicNew;\r
-}\r
-\r
-function getTopics(oCF,sKey)\r
-{\r
- var aTIPart=new Array();\r
- if(oCF&&oCF.aFtsKeys)\r
- {\r
- var keys=oCF.aFtsKeys;\r
- var nB=0;\r
- var nE=keys.length-1;\r
- var nM=-1;\r
- var bFound=false;\r
- do{\r
- nM=(nB+nE)>>1;\r
- if(compare(keys[nM].sItemName,sKey)>0)\r
- nE=nM-1;\r
- else if(compare(keys[nM].sItemName,sKey)<0)\r
- nB=nM+1;\r
- else{\r
- bFound=true;\r
- break;\r
- }\r
- }while(nB<=nE);\r
- if(bFound)\r
- {\r
- if(keys[nM].aTopics)\r
- {\r
- for(var i=0;i<keys[nM].aTopics.length;i++)\r
- {\r
- var oTC=getTopicChunk(gaaFTCD[oCF.nProjId],keys[nM].aTopics[i]);\r
- if(oTC.aTopics)\r
- {\r
- aTIPart[aTIPart.length]=\r
- new topicInfo(oTC.aTopics[keys[nM].aTopics[i]-oTC.nBegin].sTopicTitle,\r
- gaData[oCF.nProjId].sPPath+oTC.aTopics[keys[nM].aTopics[i]-oTC.nBegin].sTopicURL);\r
- }\r
- else{\r
- goCTF=oTC;\r
- gnLoadFts=3;\r
- beginLoading();\r
- loadData2(gaData[oCF.nProjId].sPPath+gaData[oCF.nProjId].sDPath+oTC.sFileName);\r
- return null;\r
- }\r
- }\r
- }\r
- }\r
- }\r
- return aTIPart;\r
-}\r
-\r
-function getTopicChunk(aFTCD,nTopicId)\r
-{\r
- if(aFTCD&&aFTCD.length)\r
- {\r
- var nB=0;\r
- var nE=aFTCD.length-1;\r
- var nM=-1;\r
- var bFound=false;\r
- do{\r
- nM=(nB+nE)>>1;\r
- if(aFTCD[nM].nBegin>nTopicId)\r
- nE=nM-1;\r
- else if(aFTCD[nM].nEnd<nTopicId)\r
- nB=nM+1;\r
- else{\r
- bFound=true;\r
- break;\r
- }\r
- }while(nB<=nE);\r
- if(bFound)\r
- return aFTCD[nM];\r
- }\r
- return null;\r
-}\r
-\r
-function endLoading()\r
-{\r
- var oDiv=getElement(gsLoadingDivID);\r
- if(oDiv)\r
- oDiv.style.visibility="hidden";\r
-}\r
-\r
-function beginLoading()\r
-{\r
- var oDiv=getElement(gsLoadingDivID);\r
- if(!oDiv)\r
- {\r
- document.body.insertAdjacentHTML("afterBegin",writeLoadingDiv());\r
- oDiv=getElement(gsLoadingDivID);\r
- }\r
- \r
- if(oDiv)\r
- {\r
- oDiv.style.top=document.body.scrollTop;\r
- oDiv.style.visibility="visible";\r
- }\r
-}\r
-\r
-function writeLoadingDiv(nIIdx)\r
-{\r
- 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>";\r
-}\r
-\r
-function topicInfo(sTopicTitle,sTopicURL)\r
-{\r
- this.sTopicTitle=sTopicTitle;\r
- this.sTopicURL=sTopicURL;\r
- this.equalTo=function(oTI)\r
- {\r
- return ((this.sTopicTitle==oTI.sTopicTitle)&&\r
- (this.sTopicURL==oTI.sTopicURL));\r
- }\r
-}\r
-\r
-function getChunkedFts(nIndex,sKey)\r
-{\r
- var oCF=null;\r
- if(nIndex<gaaFCD.length)\r
- {\r
- var len=gaaFCD[nIndex].length;\r
- if(len>0)\r
- {\r
- var nB=0;\r
- var nE=len-1;\r
- var bFound=false;\r
- do{\r
- var nM=(nB+nE)>>1;\r
- if(compare(sKey,gaaFCD[nIndex][nM].sEndKey)>0)\r
- {\r
- nB=nM+1;\r
- }\r
- else if(compare(sKey,gaaFCD[nIndex][nM].sStartKey)<0)\r
- {\r
- nE=nM-1;\r
- }\r
- else{\r
- bFound=true;\r
- break;\r
- }\r
- }while(nE>=nB);\r
- if(bFound)\r
- oCF=gaaFCD[nIndex][nM];\r
- }\r
- }\r
- return oCF;\r
-}\r
-\r
-function ftsReady(aFCD,aFTCD)\r
-{\r
- endLoading();\r
- gaaFTCD[gnCLF]=aFTCD;\r
- gaaFCD[gnCLF++]=aFCD;\r
- setTimeout("loadFD();",1);\r
-}\r
-\r
-function putFtsTData(aTopics)\r
-{\r
- endLoading();\r
- var oCTF=goCTF;\r
- if(oCTF)\r
- {\r
- oCTF.aTopics=aTopics;\r
- setTimeout("ftsFindKeyword();",1);\r
- }\r
-}\r
-\r
-function putFtsWData(aFtsContents)\r
-{\r
- endLoading();\r
- var oCF=goCF;\r
- if(oCF)\r
- {\r
- updateCache(oCF);\r
- oCF.aFtsKeys=aFtsContents;\r
- setTimeout("ftsFindKeyword();",1);\r
- }\r
-}\r
-\r
-function IsStopWord(sCW,aFtsStopArray)\r
-{\r
- var nStopArrayLen=aFtsStopArray.length;\r
- var nB=0;\r
- var nE=nStopArrayLen-1;\r
- var nM=0;\r
- var bFound=false;\r
- var sStopWord="";\r
- while(nB<=nE){\r
- nM=(nB+nE);\r
- nM>>=1;\r
- sStopWord=aFtsStopArray[nM];\r
- if(compare(sCW,sStopWord)>0){\r
- nB=(nB==nM)?nM+1:nM;\r
- }else{\r
- if(compare(sCW,sStopWord)<0){\r
- nE=(nE==nM)?nM-1:nM;\r
- }else{\r
- bFound=true;\r
- break;\r
- }\r
- }\r
- }\r
- return bFound;\r
-}\r
-\r
-function GetStem(szWord)\r
-{\r
- if(gaFtsStem==null||gaFtsStem.length==0)return szWord;\r
- var aStems=gaFtsStem;\r
-\r
- var nStemPos=0;\r
- var csStem="";\r
- for(var iStem=0;iStem<aStems.length;iStem++){\r
-\r
- if(aStems[iStem].length>=szWord.length-1) break;\r
- nStemPos=szWord.lastIndexOf(aStems[iStem]);\r
- if(nStemPos>0){\r
- var cssub=szWord.substring(nStemPos);\r
- if(cssub==aStems[iStem]){\r
- csStem=szWord;\r
- if(szWord.charAt(nStemPos-2)==szWord.charAt(nStemPos-1)){\r
- csStem=csStem.substring(0,nStemPos-1);\r
- }else{\r
- csStem=csStem.substring(0,nStemPos);\r
- }\r
- return csStem;\r
- }\r
- }\r
- }\r
- return szWord;\r
-}\r
-\r
-function FtsWriteClassStyle()\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(goErrFont)+"margin-left:"+gsIndent+";margin-top:"+gsMargin+";}\n";\r
- sStyle+="dl {"+getFontStyle(goFont)+"margin-left:"+gsIndent+";margin-top:"+gsMargin+";}\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(goHoverFont)+"}\n";\r
- sStyle+="</STYLE>";\r
- document.write(sStyle);\r
-}\r
-\r
-function window_Unload()\r
-{\r
- UnRegisterListener2(this,WH_MSG_PROJECTREADY);\r
- UnRegisterListener2(this, WH_MSG_SEARCHFTSKEY);\r
-}\r
-\r
-\r
-function onSendMessage(oMsg)\r
-{\r
- var nMsgId=oMsg.nMessageId;\r
- if(nMsgId==WH_MSG_SEARCHFTSKEY)\r
- {\r
- if(oMsg.oParam)\r
- {\r
- if(gsSK==null||gsSK=="")\r
- {\r
- gsSK=oMsg.oParam.toLowerCase();\r
- findFTSKey();\r
- }\r
- else\r
- gsSK2=oMsg.oParam.toLowerCase();\r
- }\r
- }\r
- else if(nMsgId==WH_MSG_PROJECTREADY)\r
- {\r
- loadFts();\r
- }\r
- return true;\r
-}\r
-\r
-if (window.gbWhUtil&&window.gbWhLang&&window.gbWhProxy&&window.gbWhVer&&window.gbWhMsg)\r
-{\r
- goFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
- goErrFont=new whFont("Verdana","8pt","#000000","normal","bold","none");\r
- goHoverFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");\r
- window.onload=window_OnLoad;\r
- window.onbeforeunload=window_BUnload;\r
- window.onunload=window_Unload;\r
- RegisterListener2(this,WH_MSG_PROJECTREADY);\r
- gbWhFHost=true;\r
-}\r
-else\r
- document.location.reload();
\ No newline at end of file