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