Salome HOME
Merging with WPdev
[modules/smesh.git] / doc / salome / gui / SMESH / whfhost.js
index 167acc45915b05c012cd31f07c821f7b6471945f..c3c7144fa7c88c2735b433abc615760fb8a314c4 100755 (executable)
-//     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