Salome HOME
Merging with WPdev
[modules/smesh.git] / doc / salome / gui / SMESH / whhost.js
index 5a02374adbb8824deb56dc11d9cd8163f09fda19..a32225a1aa1a19ed5df04b58ceddb9108c2792c8 100755 (executable)
-//     WebHelp 5.10.002\r
-var gaChunks=new Array();\r
-var gaFakes=new Array();\r
-var gaDataCon=null;\r
-var gaData=new Array();\r
-\r
-var gbFindCK=false;;\r
-var gbNeedCalc=false;\r
-var gbScrl=false;\r
-var gbProcess=false;\r
-var gbReady=false;\r
-\r
-var gnCheck=0;\r
-var gnNum=0;\r
-var gnIns=-1;\r
-var gnLoad=0;\r
-var gnRef=-1;\r
-var gnMaxItems=0;\r
-var gnMaxMargin=32000;\r
-var gnNeeded=0;\r
-var gnNKI=-1;\r
-var gnRE=0;\r
-var gnScrlMgn=30;\r
-var gnSE=0;\r
-var gnVisible=0;\r
-var gnItems=0;\r
-var gnUHeight=1;\r
-\r
-var gsBCK=null;\r
-var gsChK=null;\r
-var gsCK=null;\r
-var gsLoadingDivID="LoadingDiv";\r
-var gsLoadingMsg="Loading data, please wait...";\r
-var gsSKA=null;\r
-var gsSKB=null;\r
-\r
-var gbLoadInfo=false;\r
-\r
-function onLoadXMLError()\r
-{\r
-       if(gbLoadInfo)\r
-       {\r
-               var aChunk=new Array();\r
-               projReady(aChunk);\r
-       }\r
-       else\r
-       {\r
-               var aData=new Array();\r
-               putData(aData);\r
-       }\r
-}\r
-\r
-function putDataXML(xmlDoc,sDocPath)\r
-{\r
-       if(gbLoadInfo)\r
-       {\r
-               var node=xmlDoc.lastChild;\r
-               if(node)\r
-               {\r
-                       var nTotal=0\r
-                       var aChunk=new Array();\r
-                       var oC=node.firstChild;\r
-                       while(oC)\r
-                       {\r
-                               if(oC.nodeName=="chunkinfo")\r
-                               {\r
-                                       var item=new Object();\r
-                                       item.sBK=oC.getAttribute("first");\r
-                                       item.sEK=oC.getAttribute("last");\r
-                                       item.sFileName=oC.getAttribute("url");\r
-                                       item.nNum=parseInt(oC.getAttribute("num"));\r
-                                       nTotal+=item.nNum;\r
-                                       item.nTotal=nTotal;\r
-                                       aChunk[aChunk.length]=item;\r
-                               }\r
-                               oC=oC.nextSibling;\r
-                       }\r
-                       projReady(aChunk);\r
-               }\r
-       }\r
-       else\r
-       {\r
-               var node=xmlDoc.lastChild;\r
-               if(node)\r
-               {\r
-                       var aData=new Array();\r
-                       var nPrev=0;\r
-                       var nNext=0;\r
-                       var oC=node.firstChild;\r
-                       while(oC)\r
-                       {\r
-                               nPrev=nNext;\r
-                               if(oC.nodeName=="key")\r
-                               {\r
-                                       var sName=oC.getAttribute("name");\r
-                                       if(sName&&sName.length>0)\r
-                                       {\r
-                                               var sTarget=oC.getAttribute("target");\r
-                                               var item=new Object();\r
-                                               item.nType=2;\r
-                                               item.sName=sName;\r
-                                               if(sTarget)\r
-                                                       item.sTarget=sTarget;\r
-                                               item.nPKOff=nPrev;\r
-                                               aData[aData.length]=item;\r
-                                               var nCurIndex=aData.length;\r
-                                               processKey(oC,aData,item);\r
-                                               nNext=aData.length-nCurIndex;\r
-                                               item.nNKOff=nNext;\r
-                                       }\r
-                               }\r
-                               else if(oC.nodeName=="letter")\r
-                               {\r
-                                       var name=oC.getAttribute("name");\r
-                                       if(name&&name.length>0)\r
-                                       {\r
-                                               var item=new Object();\r
-                                               item.nType=1;\r
-                                               item.sName=name;\r
-                                               item.nPKOff=nPrev;\r
-                                               nNext=0;\r
-                                               item.nNKOff=nNext;\r
-                                               aData[aData.length]=item;\r
-                                       }\r
-                               }\r
-                               else if(oC.nodeName=="entry")\r
-                               {\r
-                                       var name=oC.getAttribute("name");\r
-                                       var def=oC.getAttribute("value");\r
-                                       if(name&&name.length>0)\r
-                                       {\r
-                                               var item=new Object();\r
-                                               item.sName=name;\r
-                                               item.sDef=def;\r
-                                               item.nPKOff=nPrev;\r
-                                               nNext=0;\r
-                                               item.nNKOff=nNext;\r
-                                               aData[aData.length]=item;\r
-                                       }\r
-                               }\r
-                               oC=oC.nextSibling;\r
-                       }\r
-                       putData(aData);\r
-               }\r
-       }\r
-}\r
-\r
-function processKey(element,aData,item)\r
-{\r
-       var i=0;\r
-       var nPrev=0;\r
-       var nNext=0;\r
-       var oC=element.firstChild;\r
-       while(oC)\r
-       {\r
-               if(oC.nodeName=="topic")\r
-               {\r
-                       var name=oC.getAttribute("name");\r
-                       var url=oC.getAttribute("url");\r
-                       if(url&&url.length!=0)\r
-                       {\r
-                               if(!name||name.length==0)\r
-                                       name=url;\r
-                               var topic=new Object();\r
-                               topic.sName=name;\r
-                               topic.sURL=url;\r
-                               if(!item.aTopics)\r
-                                       item.aTopics=new Array();\r
-                               item.aTopics[item.aTopics.length]=topic;\r
-                       }\r
-               }\r
-               else if(oC.nodeName=="key")\r
-               {\r
-                       nPrev=nNext;\r
-                       var name=oC.getAttribute("name");\r
-                       if(name&&name.length!=0)\r
-                       {\r
-                               var subItem=new Object();\r
-                               subItem.sName=name;\r
-                               subItem.nType=3;\r
-                               subItem.nPKOff=nPrev;\r
-                               aData[aData.length]=subItem;\r
-                               var nCurIndex=aData.length;\r
-                               processKey(oC,aData,subItem);\r
-                               nNext=aData.length-nCurIndex;\r
-                               subItem.nNKOff=nNext;\r
-                       }\r
-               }\r
-               oC=oC.nextSibling;\r
-       }\r
-}\r
-\r
-function putData(aData)\r
-{\r
-       endLoading();\r
-       var oCData=goCData;\r
-       if(oCData)\r
-       {\r
-               oCData.aKs=aData;\r
-               if(gnNKI==-1)\r
-                       setTimeout("checkReady();",1);\r
-               else\r
-               {\r
-                       gsSKA=getKByIdx(oCData,gnNKI);\r
-                       gbNeedCalc=true;\r
-                       gbScrl=true;\r
-                       gnNKI=-1;\r
-                       if(gsSKA)\r
-                               setTimeout("checkReady();",1);\r
-                       else\r
-                       {\r
-                               markEnd();\r
-                               setTimeout("checkAgain();",50);\r
-                       }\r
-               }\r
-       }\r
-}\r
-\r
-function markEnd()\r
-{\r
-       if(gbProcess)\r
-               gbProcess=false;\r
-}\r
-\r
-function endLoading()\r
-{\r
-       var oDiv=getElement(gsLoadingDivID);\r
-       if(oDiv)\r
-               oDiv.style.visibility="hidden";\r
-}\r
-\r
-function markBegin()\r
-{\r
-       gbProcess=true;\r
-}\r
-\r
-function beginLoading()\r
-{\r
-       var oDiv=getElement(gsLoadingDivID);\r
-       if(oDiv)\r
-       {\r
-               oDiv.style.top=document.body.scrollTop;\r
-               oDiv.style.visibility="visible";\r
-       }\r
-}\r
-\r
-function indexHTMLPart()\r
-{\r
-       this.sHTML="";\r
-       this.nNeeded=0;\r
-       this.nCurrent=0;\r
-       this.nConsumed=0;\r
-       this.sFK=null;\r
-       this.sLK=null;\r
-       this.addHTML=function(sHTML,nConsumed,bDown,bK,sK){\r
-               if(bDown)\r
-                       this.sHTML+=sHTML;\r
-               else\r
-                       this.sHTML=sHTML+this.sHTML;\r
-               this.nCurrent++;                        \r
-               this.nConsumed+=nConsumed;\r
-               if(bK)\r
-               {\r
-                       if(!this.sFK)\r
-                               this.sFK=sK;\r
-                       if(!this.sLK)\r
-                               this.sLK=sK;\r
-                       if(bDown)\r
-                               this.sLK=sK;\r
-                       else\r
-                               this.sFK=sK;\r
-               }\r
-       }\r
-       this.appendHTML=function(oHTML,bDown){\r
-               this.addSubHTML(oHTML,bDown);\r
-               if(!this.sFK)\r
-                       this.sFK=oHTML.sFK;\r
-               if(!this.sLK)\r
-                       this.sLK=oHTML.sLK;\r
-               if(bDown)\r
-                       this.sLK=oHTML.sLK;\r
-               else\r
-                       this.sFK=oHTML.sFK;\r
-       }       \r
-       \r
-       this.addSubHTML=function(oHTML,bDown){\r
-               if(bDown)\r
-                       this.sHTML+=oHTML.sHTML;\r
-               else\r
-                       this.sHTML=oHTML.sHTML+this.sHTML;\r
-               this.nCurrent+=oHTML.nCurrent;\r
-               this.nConsumed+=oHTML.nConsumed;                        \r
-       }\r
-}\r
-\r
-function getMaxUnits()\r
-{\r
-       return Math.floor(gnMaxMargin/gnUHeight)+1;\r
-}\r
-\r
-function getFakeItemsHTMLbyCount(nB,nCount)\r
-{\r
-       var nMU=getMaxUnits();\r
-       var nNum=Math.floor(nCount/nMU);\r
-       var sHTML="";\r
-       for(var i=0;i<nNum;i++)\r
-               sHTML+=getFakeItemHTML(nB,nMU-1);\r
-               \r
-       var nRest=nCount%nMU;\r
-       sHTML+=getFakeItemHTML(nB,nRest-1);\r
-       return sHTML;\r
-}\r
-\r
-function getFakeItemHTML(nB,nNum)\r
-{\r
-       return "<h6 name=fk"+nB+" id=fk"+nB+" style=\"margin-top:"+gnUHeight*nNum+";margin-bottom:0\">&nbsp;</h6>";\r
-}\r
-\r
-function fakeItemsArea(nB,n,sKA,sKB,obj)\r
-{\r
-       this.nB=nB;\r
-       this.nNum=n;\r
-       this.sKA=sKA;\r
-       this.sKB=sKB;\r
-       this.obj=obj;\r
-       this.nMargin=(n-1)*gnUHeight;\r
-\r
-       this.setNum=function(n)\r
-       {\r
-               var nLastobj=-1;\r
-               var nDelta=this.nMargin;\r
-               this.nMargin=(n-1)*gnUHeight;\r
-               nDelta=nDelta-this.nMargin;\r
-               if(n>0)\r
-               {\r
-                       this.nNum=n;\r
-                       var nMU=getMaxUnits();\r
-                       nLastobj=Math.floor((n-1)/nMU);\r
-                       if(this.obj.length)\r
-                               this.obj[nLastobj].style.marginTop=((n-1)%nMU)*gnUHeight;\r
-                       else\r
-                               this.obj.style.marginTop=((n-1)%nMU)*gnUHeight;\r
-               }\r
-               if(this.obj.length)\r
-               {\r
-                       for(var i=this.obj.length-1;i>nLastobj;i--)\r
-                               removeThis(this.obj[i]);\r
-               }\r
-               else\r
-               {\r
-                       if(nLastobj==-1)\r
-                               removeThis(this.obj);\r
-               }\r
-               return nDelta;\r
-       }\r
-       this.insertAdjacentHTML=function(sWhere,sHTML)\r
-       {\r
-               if(sWhere=="beforeBegin")\r
-               {\r
-                       if(this.obj.length)\r
-                               this.obj[0].insertAdjacentHTML(sWhere,sHTML);\r
-                       else\r
-                               this.obj.insertAdjacentHTML(sWhere,sHTML);\r
-               }\r
-               else if(sWhere=="afterEnd")\r
-               {\r
-                       if(this.obj.length)\r
-                       {\r
-                               if(gbMac&&gbIE5&&this.obj[this.obj.length-1].nextSibling)\r
-                                       this.obj[this.obj.length-1].nextSibling.insertAdjacentHTML("beforeBegin",sHTML);\r
-                               else\r
-                                       this.obj[this.obj.length-1].insertAdjacentHTML(sWhere,sHTML);\r
-                       }\r
-                       else\r
-                       {\r
-                               if(gbMac&&gbIE5&&this.obj.nextSibling)\r
-                                       this.obj.nextSibling.insertAdjacentHTML("beforeBegin",sHTML);\r
-                               else\r
-                                       this.obj.insertAdjacentHTML(sWhere,sHTML);\r
-                       }\r
-               }\r
-       }\r
-       this.getBtm=function()\r
-       {\r
-               if(this.obj.length)\r
-                       return this.obj[this.obj.length-1].offsetTop;\r
-               else\r
-                       return this.obj.offsetTop;\r
-       }\r
-       this.getTop=function()\r
-       {\r
-               return this.getBtm()-this.nMargin;\r
-       }\r
-}\r
-\r
-function usedItems(nB,nE)\r
-{\r
-       this.nB=nB;\r
-       this.nE=nE;\r
-       this.oN=null;\r
-}\r
-\r
-function checkReady()\r
-{\r
-       var len=gaChunks.length;\r
-       var bNeedLoad=false;\r
-       var aDataCon;\r
-       var s=0;\r
-       var bDown=(gsSKB==null);\r
-       var sK=bDown?gsSKA:gsSKB;\r
-       if(sK==null)\r
-       {\r
-               markEnd();\r
-               setTimeout("checkAgain();",50);\r
-               return;\r
-       }\r
-       if(!gsChK||sK!=gsChK||gnNum==0)\r
-       {\r
-               gnCheck=0;\r
-               gsChK=sK;\r
-               aDataCon=new Array();\r
-       }\r
-       else{\r
-               s=gnNum;\r
-               aDataCon=gaDataCon;\r
-       }\r
-       for(var i=gnCheck;i<len;i++)\r
-       {\r
-               var oCData=getChunkedData(i,bDown,sK);\r
-               if(oCData)\r
-               {\r
-                       if(!oCData.aKs&&oCData.sFileName!=null)\r
-                       {\r
-                               bNeedLoad=true;\r
-                               goCData=oCData;\r
-                               gnNum=s;\r
-                               gnCheck=i;\r
-                               gaDataCon=aDataCon;\r
-                               oCData.nProjId=i;\r
-                               gbLoadInfo=false;\r
-                               beginLoading();\r
-                               loadData2(gaData[i].sPPath+gaData[i].sDPath+oCData.sFileName);\r
-                               return;\r
-                       }\r
-                       else{\r
-                               aDataCon[s++]=oCData;\r
-                       }\r
-               }\r
-       }\r
-       if(!bNeedLoad)\r
-       {\r
-               gnNum=0;\r
-               gsSKA=gsSKB=gsShowK=null;\r
-               \r
-               var oHTML=new indexHTMLPart();\r
-               var aPos=new Array();\r
-               var aOriPos=new Array();\r
-               var aMaxPos=new Array();\r
-               var aMinPos=new Array();\r
-               \r
-               if(gbNeedCalc||gbFindCK) gnIns=0;\r
-               for(i=0;i<aDataCon.length;i++)\r
-               {\r
-                       aPos[i]=getIdxPos(aDataCon[i],bDown,sK);\r
-                       if(gbNeedCalc||gbFindCK)\r
-                       {\r
-                               gnIns+=aPos[i]+aDataCon[i].nTotal-aDataCon[i].nNum;\r
-                               if(!bDown)\r
-                               {\r
-                                       if(aPos[i]!=-1)\r
-                                       {\r
-                                               if(aDataCon[i].aKs)\r
-                                                       gnIns+=aDataCon[i].aKs[aPos[i]].nNKOff;\r
-                                               else\r
-                                               {\r
-                                                       var n=aPos[i]+1;\r
-                                                       while(n<aDataCon[i].aKsOnly.length&&!aDataCon[i].aKsOnly[n])\r
-                                                               n++;\r
-                                                       n=n-aPos[i]-1;\r
-                                                       gnIns+=n;\r
-                                               }\r
-                                       }\r
-                               }\r
-                       }\r
-                       aOriPos[i]=aPos[i];\r
-                       getLimit(aDataCon,aPos,aMaxPos,aMinPos,i);\r
-               }\r
-               if((gbNeedCalc||gbFindCK)&&!bDown&&gnIns!=-1)\r
-               {\r
-                       gnIns+=(aDataCon.length-1)\r
-               }\r
-               if(gnIns!=-1||gbFindCK)\r
-               {\r
-                       oHTML.nNeeded=gnNeeded;\r
-                       var bDone=writeItems(oHTML,aDataCon,aPos,aMinPos,aMaxPos,bDown,1);\r
-                       if(oHTML.nConsumed!=0)\r
-                       {\r
-                               var nB;\r
-                               if(!bDown)\r
-                                       nB=gnIns-oHTML.nConsumed+1;\r
-                               else\r
-                                       nB=gnIns;\r
-                                       \r
-                               var oldScrollPos=document.body.scrollTop;\r
-                               if(insertIdxKs(nB,oHTML,gbScrl))\r
-                               {\r
-                                       updateUsedK(aDataCon,aOriPos,aPos,bDown);\r
-                                       if(!gbScrl&&gbMac)\r
-                                       {\r
-                                               while(document.body.scrollTop!=oldScrollPos)\r
-                                                       document.body.scrollTop=oldScrollPos;\r
-                                       }\r
-                                       gbScrl=false;\r
-                               }\r
-                               if(gbFindCK)\r
-                               {\r
-                                       gbFindCK=false;\r
-                                       gbNeedCalc=true;\r
-                                       gsSKB=oHTML.sFK;\r
-                                       gnIns=-1;\r
-                                       setTimeout("checkReady();",50);\r
-                                       return;\r
-                               }\r
-                       }\r
-                       else if(gbFindCK)\r
-                       {\r
-                               gbFindCK=false;\r
-                               gbNeedCalc=true;\r
-                               gsSKB=getFirstKeyFromPos(aDataCon,aPos);\r
-                               gnIns=-1;\r
-                               setTimeout("checkReady();",50);\r
-                               return;\r
-                       }\r
-                       if(!findCKInDom()) return;\r
-\r
-                       gnNeeded=gnNeeded-oHTML.nCurrent;\r
-                       gnIns=-1;\r
-                       markEnd();\r
-                       setTimeout("checkAgain();",50);\r
-                       gbNeedCalc=false;\r
-               }\r
-               else\r
-               {\r
-                       if(!findCKInDom()) return;\r
-                       markEnd();\r
-                       setTimeout("checkAgain();",50);\r
-               }\r
-       }\r
-}\r
-\r
-function getFirstKeyFromPos(aDataCon,aPos)\r
-{\r
-       var sCurrentK=getBiggestChar();\r
-       for(var i=0;i<aPos.length;i++)\r
-       {\r
-               if(aDataCon[i].aKs&&aDataCon[i].aKs.length>0&&aPos[i]>=0&&aPos[i]<aDataCon[i].aKs.length)\r
-               {\r
-                       if(sCurrentK==""||\r
-                               compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)>0)\r
-                       {\r
-                               sCurrentK=aDataCon[i].aKs[aPos[i]].sName;\r
-                       }\r
-               }\r
-       }\r
-       return sCurrentK;\r
-}\r
-\r
-function checkAgain()\r
-{\r
-       if(!gbProcess)\r
-       {\r
-               if(gsBCK!=null)\r
-               {\r
-                       gsCK=gsBCK;\r
-                       gsBCK=null;\r
-                       findCK();\r
-               }\r
-               else\r
-               {\r
-                       markBegin();\r
-                       getUnitIdx(document.body.scrollTop,document.body.clientHeight);\r
-               }\r
-       }\r
-       else\r
-               setTimeout("checkAgain()",50);\r
-}\r
-\r
-function getLimit(aDataCon,aPos,aMaxPos,aMinPos,i)\r
-{\r
-       aMaxPos[i]=aDataCon[i].nNum;\r
-       aMinPos[i]=-1;\r
-       var oPNode=null;\r
-       if(aDataCon[i].oUsedItems)\r
-       {\r
-               var oUsedItems=aDataCon[i].oUsedItems;\r
-               do{\r
-                       if(oUsedItems.nB>aPos[i])\r
-                       {\r
-                               aMaxPos[i]=oUsedItems.nB;\r
-                               break;\r
-                       }\r
-                       oPNode=oUsedItems;\r
-                       oUsedItems=oUsedItems.oN;\r
-               }while(oUsedItems!=null);\r
-               if(oPNode)\r
-                       aMinPos[i]=oPNode.nE;\r
-       }\r
-       else if(aDataCon[i].aKs==null)\r
-       {\r
-               aMaxPos[i]=aMinPos[i]=aPos[i];\r
-       }\r
-       if(aMinPos[i]>=aPos[i]||aMaxPos[i]<=aPos[i])\r
-       {\r
-               aMaxPos[i]=aMinPos[i]=aPos[i];\r
-       }\r
-}\r
-\r
-function getIdxPos(oIdx,bDown,sK)\r
-{\r
-       var aKs=oIdx.aKs;\r
-       var nIdx;\r
-       if(bDown)\r
-               nIdx=oIdx.nNum;\r
-       else\r
-               nIdx=-1;\r
-       if(aKs!=null)\r
-       {\r
-               for(var i=0;i<aKs.length;i++)\r
-               {       \r
-                       if(bDown)\r
-                       {\r
-                               if(compare(aKs[i].sName,sK)>0)\r
-                               {\r
-                                       nIdx=i;\r
-                                       break;\r
-                               }\r
-                       }\r
-                       else\r
-                       {\r
-                               if(compare(aKs[i].sName,sK)<0)\r
-                                       nIdx=i;\r
-                               else\r
-                                       break;\r
-                       }\r
-                       i+=aKs[i].nNKOff;\r
-               }\r
-       }\r
-       else if(oIdx.aKsOnly)\r
-       {\r
-               var aKsOnly=oIdx.aKsOnly;\r
-               for(var i=0;i<aKsOnly.length;i++)\r
-               {       \r
-                       if(aKsOnly[i])\r
-                       {\r
-                               if(bDown)\r
-                               {\r
-                                       if(compare(aKsOnly[i],sK)>0)\r
-                                       {\r
-                                               nIdx=i;\r
-                                               break;\r
-                                       }\r
-                               }\r
-                               else\r
-                               {\r
-                                       if(compare(aKsOnly[i],sK)<0)\r
-                                               nIdx=i;\r
-                                       else\r
-                                               break;\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-       return nIdx;\r
-}\r
-\r
-function writeItems(oHTML,aDataCon,aPos,aMinPos,aMaxPos,bDown,nLevel)\r
-{\r
-       var aOldPos=new Array();\r
-       for(var i=0;i<aPos.length;i++)\r
-       {\r
-               aOldPos[i]=aPos[i];\r
-       }\r
-       var p;\r
-       do{\r
-               var sCurrentK="";\r
-               var aCurIdxSet=new Array();\r
-               p=0;\r
-               for(i=0;i<aDataCon.length;i++)\r
-               {\r
-                       if(aDataCon[i].aKs&&aDataCon[i].aKs.length&&aPos[i]!=-1&&\r
-                               (bDown&&aPos[i]<aMaxPos[i])||(!bDown&&aPos[i]>aMinPos[i]))\r
-                       {\r
-                               if(sCurrentK==""||\r
-                                       (bDown&&compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)>0)||\r
-                                       (!bDown&&compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)<0))\r
-                               {\r
-                                       sCurrentK=aDataCon[i].aKs[aPos[i]].sName;\r
-                                       p=0;\r
-                                       aCurIdxSet[p++]=i;\r
-                               }\r
-                               else if(compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)==0){\r
-                                       aCurIdxSet[p++]=i;\r
-                               }\r
-                       }\r
-                       else if(nLevel==1&&aMaxPos[i]!=aMinPos[i]){\r
-                               if(bDown&&aPos[i]==aMaxPos[i])\r
-                               {\r
-                                       if(aDataCon[i].aKs)\r
-                                       {\r
-                                               gsSKA=aDataCon[i].aKs[aOldPos[i]].sName;\r
-                                               return false;\r
-                                       }\r
-                               }\r
-                               else if(!bDown&&aPos[i]==aMinPos[i])\r
-                               {\r
-                                       if(aDataCon[i].aKs)\r
-                                       {\r
-                                               gsSKB=aDataCon[i].aKs[aOldPos[i]].sName;\r
-                                               return false;\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-               if(p>=1){\r
-                       for(var s=0;s<p;s++)\r
-                       {\r
-                               aOldPos[aCurIdxSet[s]]=aPos[aCurIdxSet[s]];\r
-                       }\r
-                       mergeItems(oHTML,bDown,aDataCon,aCurIdxSet,p,aPos,nLevel);\r
-                       adjustPosition(bDown,aDataCon,aCurIdxSet,p,aPos);\r
-                       \r
-                       if(nLevel==1&&oHTML.nNeeded<=oHTML.nCurrent){\r
-                               return true;\r
-                       }\r
-               }\r
-       }while(p>0);\r
-       return true;\r
-}\r
-\r
-function updateUsedK(aDataCon,aOriPos,aOldPos,bDown)\r
-{\r
-       for(var i=0;i<aDataCon.length;i++)\r
-       {\r
-               if (aOldPos[i]!=aOriPos[i])\r
-               {\r
-                       var nBP=0;\r
-                       var nEP=0;\r
-                       if(bDown)\r
-                       {\r
-                               nBP=aOriPos[i];\r
-                               nEP=aOldPos[i]-1;\r
-                       }\r
-                       else\r
-                       {\r
-                               if (aOldPos[i]!=-1)\r
-                                       nBP=aOldPos[i]+aDataCon[i].aKs[aOldPos[i]].nNKOff+1;\r
-                               else\r
-                                       nBP=0;\r
-                               nEP=aOriPos[i]+aDataCon[i].aKs[aOriPos[i]].nNKOff;\r
-                       }\r
-                       if(nBP<=nEP)\r
-                       {\r
-                               setContentsUsed(aDataCon[i],nBP,nEP);\r
-                               \r
-                               var oFirstPair=aDataCon[i].oUsedItems;\r
-                               if(oFirstPair.oN==null&&oFirstPair.nB==0&&oFirstPair.nE==aDataCon[i].nNum-1)\r
-                               {\r
-                                       storeKeysOnly(aDataCon[i]);\r
-                                       aDataCon[i].oUsedItems=aDataCon[i].aKs=aDataCon[i].sFileName=null;\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-}\r
-\r
-function storeKeysOnly(oCData)\r
-{\r
-       oCData.aKsOnly=new Array();\r
-       for(var i=0;i<oCData.aKs.length;i++)\r
-       {\r
-               oCData.aKsOnly[i]=oCData.aKs[i].sName;\r
-               i+=oCData.aKs[i].nNKOff;\r
-       }\r
-}\r
-\r
-function setContentsUsed(oIdx,nB,nE)\r
-{\r
-       if(!oIdx.oUsedItems)\r
-               oIdx.oUsedItems=new usedItems(nB,nE);\r
-       else\r
-       {\r
-               var oUsedItems=oIdx.oUsedItems;\r
-               var oPNode=null;\r
-               do{\r
-                       if(oUsedItems.nB>nB)\r
-                       {\r
-                               if(oUsedItems.nB==nE+1)\r
-                               {\r
-                                       oUsedItems.nB=nB;\r
-                               }\r
-                               else{\r
-                                       var oNewNode=new usedItems(oUsedItems.nB,oUsedItems.nE);\r
-                                       oNewNode.oN=oUsedItems.oN;\r
-                                       oUsedItems.nB=nB;\r
-                                       oUsedItems.nE=nE;\r
-                                       oUsedItems.oN=oNewNode;\r
-                               }\r
-                               break;\r
-                       }\r
-                       oPNode=oUsedItems;\r
-                       oUsedItems=oUsedItems.oN;\r
-               }while(oUsedItems);\r
-               if(!oUsedItems)\r
-               {\r
-                       if(oPNode!=null)\r
-                               oPNode.oN=new usedItems(nB,nE);\r
-               }\r
-               if(oPNode!=null){\r
-                       if(oPNode.nE==oPNode.oN.nB-1)\r
-                       {\r
-                               oPNode.nE=oPNode.oN.nE;\r
-                               oPNode.oN=oPNode.oN.oN;\r
-                       }\r
-               }\r
-       }\r
-}\r
-\r
-function projInfo(sPPath,sDPath,sFile)\r
-{\r
-       this.sPPath=sPPath;\r
-       this.sDPath=sDPath;\r
-       this.sFile=sFile;\r
-}\r
-\r
-function addProjInfo(sPPath,sDPath,sFile)\r
-{\r
-       var oIdxInfo=new projInfo(sPPath,sDPath,sFile);\r
-       gaData[gaData.length]=oIdxInfo;\r
-       return oIdxInfo;\r
-}\r
-\r
-function writeDataIFrame()\r
-{\r
-       if(gnLoad<gaData.length)\r
-       {\r
-               gbLoadInfo=true;\r
-               loadData2(gaData[gnLoad].sPPath+gaData[gnLoad].sDPath+gaData[gnLoad].sFile);\r
-       }\r
-       else{\r
-               if(gnItems!=0)\r
-               {\r
-                       markBegin();\r
-                       writeFakeItems();\r
-                       gsSKA="";\r
-                       gnNeeded=gnVisible;\r
-                       gnIns=0;\r
-                       checkReady();\r
-               }\r
-       }\r
-}\r
-\r
-function getH6ById(nPos)\r
-{\r
-       if(document.all)\r
-               return document.all("fk"+nPos);\r
-       else if(document.getElementsByName)\r
-               return document.getElementsByName("fk"+nPos);\r
-       return null;            \r
-}\r
-\r
-function showItemsInEvaluation(nBP)\r
-{\r
-       var bRtn=true;\r
-       var fPer=nBP/gnItems;\r
-       var nB=Math.floor(fPer*gnMaxItems);\r
-       var oCData=getChunkByIdx(gnRef,nB);\r
-       if(oCData)\r
-       {\r
-               if(!oCData.aKs&&oCData.sFileName!=null)\r
-               {\r
-                       gnNKI=nB;\r
-                       goCData=oCData;\r
-                       oCData.nProjId=gnRef;\r
-                       gbLoadInfo=false;\r
-                       beginLoading();\r
-                       loadData2(gaData[gnRef].sPPath+gaData[gnRef].sDPath+oCData.sFileName);\r
-               }\r
-               else{\r
-                       gsSKA=getKByIdx(oCData,nB);\r
-                       if(gsSKA)\r
-                       {\r
-                               gsSKB=null;\r
-                               gbNeedCalc=true;\r
-                               gbScrl=true;\r
-                               checkReady()\r
-                       }\r
-                       else\r
-                       {\r
-                               markEnd();\r
-                               bRtn=false;\r
-                       }\r
-               }\r
-       }\r
-       else\r
-       {\r
-               markEnd();\r
-               bRtn=false;\r
-       }\r
-       return bRtn;\r
-}\r
-\r
-function isUsed(oCData,nPos)\r
-{\r
-       var oUsed=oCData.oUsedItems;\r
-       while(oUsed&&oUsed.nB<=nPos)\r
-       {\r
-               if(oUsed.nE>=nPos) return true;\r
-               oUsed=oUsed.oN;\r
-       }\r
-       return false;\r
-}\r
-\r
-function getKByIdx(oCData,nB)\r
-{\r
-       var nRelPos=nB-(oCData.nTotal-oCData.nNum);\r
-       var aIKs=oCData.aKs;\r
-       if(nRelPos>=0&&aIKs&&nRelPos<aIKs.length)\r
-       {\r
-               var oK=null;\r
-               do{\r
-                       oK=aIKs[nRelPos++];\r
-               }       \r
-               while((oK.nType==3||isUsed(oCData,nRelPos-1))&&nRelPos<aIKs.length);\r
-               if(oK.nType!=3)\r
-               {\r
-                       return oK.sName;\r
-               }\r
-               else{\r
-                       nRelPos=nB-(oCData.nTotal-oCData.nNum)-1;\r
-                       if(nRelPos>=0)\r
-                       {\r
-                               do{\r
-                                       oK=aIKs[nRelPos--];\r
-                               }\r
-                               while((oK.nType==3||isUsed(oCData,nRelPos+1))&&nRelPos>=0);\r
-                       }\r
-                       if(oK.nType!=3)\r
-                       {\r
-                               return oK.sName;\r
-                       }\r
-               }\r
-       }\r
-       return null;\r
-}\r
-\r
-function loadData2(sFileName)\r
-{\r
-       disEvt();\r
-       if(gbXML)\r
-               loadDataXML(sFileName);\r
-       else\r
-               loadData(sFileName);\r
-       enEvt();\r
-}\r
-\r
-function projReady(aChunk)\r
-{\r
-       gaChunks[gnLoad++]=aChunk;\r
-       var len=aChunk.length;\r
-       var nTotal=0;\r
-       if(len>0)\r
-               nTotal=aChunk[len-1].nTotal;\r
-       gnItems+=nTotal;\r
-       if(nTotal>gnMaxItems)\r
-       {\r
-               gnMaxItems=nTotal;\r
-               gnRef=gnLoad-1;\r
-       }\r
-       setTimeout("writeDataIFrame();",1);\r
-}\r
-\r
-function writeFakeItems()\r
-{\r
-       disEvt();\r
-       gnUHeight=15;\r
-       var sHTML=getFakeItemsHTMLbyCount(0,gnItems);\r
-       document.body.insertAdjacentHTML("beforeEnd",sHTML);\r
-       var obj=getH6ById(0);\r
-       if (document.body != null)\r
-       {\r
-               gnVisible=Math.ceil(document.body.clientHeight/gnUHeight);\r
-       }\r
-       gaFakes[0]=new fakeItemsArea(0,gnItems,"",getEndString(),obj);\r
-       enEvt();\r
-}\r
-\r
-function getEndString()\r
-{\r
-       var sBC=getBiggestChar();\r
-       return sBC+sBC+sBC+sBC+sBC+sBC+sBC+sBC;\r
-}\r
-\r
-function getUnitIdx(nScrl,nHeight)\r
-{\r
-       if(gaFakes.length==0)\r
-       {\r
-               markEnd();\r
-               return;\r
-       }\r
-       var nB=0;\r
-       var nE=gaFakes.length-1;\r
-       var nM=-1;\r
-       var nTop=0;\r
-       var nBtm=0;\r
-       var bF=false;\r
-       do{\r
-               nM=(nB+nE)>>1;\r
-               nBtm=gaFakes[nM].getBtm();\r
-               nTop=gaFakes[nM].getTop();\r
-                       \r
-               if(nTop>=nScrl+nHeight)\r
-                       nE=nM-1;\r
-               else if(nBtm<nScrl)\r
-                       nB=nM+1;\r
-               else{\r
-                       bF=true;\r
-                       break;\r
-               }\r
-       }while(nE>=nB);\r
-       if(bF)\r
-       {\r
-               if(nTop>=nScrl){\r
-                       gsSKA=gaFakes[nM].sKA;\r
-                       gsSKB=null;\r
-                       gnNeeded=Math.ceil((nHeight-nTop+nScrl)/gnUHeight);\r
-                       gnIns=gaFakes[nM].nB;\r
-                       checkReady();\r
-               }\r
-               else if(nBtm<=nScrl+nHeight){\r
-                       gsSKB=gaFakes[nM].sKB;\r
-                       gsSKA=null;\r
-                       gnNeeded=Math.ceil((nBtm-nScrl+gnScrlMgn)/gnUHeight);\r
-                       gbNeedCalc=true;\r
-                       checkReady();\r
-               }\r
-               else{\r
-                       gnNeeded=gnVisible;\r
-                       var nUnitIdx=gaFakes[nM].nB+Math.floor((nScrl-nTop)/gnUHeight);\r
-                       if (!showItemsInEvaluation(nUnitIdx))\r
-                       {\r
-                               gsSKA=gaFakes[nM].sKA;\r
-                               gsSKB=null;\r
-                               gnNeeded=Math.ceil(nHeight/gnUHeight);\r
-                               gnIns=gaFakes[nM].nB;\r
-                               checkReady();\r
-                       }\r
-               }\r
-       }\r
-       else\r
-               markEnd();\r
-}\r
-\r
-function disEvt()\r
-{\r
-       window.onscroll=null;\r
-       window.onresize=null;\r
-}\r
-\r
-function enEvt()\r
-{\r
-       window.onscroll=window_OnScroll;\r
-       window.onresize=window_OnResize;\r
-}\r
-\r
-function insertIdxKs(nIns,oHTML,bScrl)\r
-{\r
-       var bRtn=true;\r
-       disEvt();\r
-       var nCount=oHTML.nConsumed;\r
-       var nB=0;\r
-       var nE=gaFakes.length-1;\r
-       var nM=-1;\r
-       var bF=false;\r
-       do{\r
-               nM=(nB+nE)>>1;\r
-               if(gaFakes[nM].nB>nIns)\r
-                       nE=nM-1;\r
-               else if(gaFakes[nM].nB+gaFakes[nM].nNum<=nIns)\r
-                       nB=nM+1;\r
-               else{\r
-                       bF=true;\r
-                       break;\r
-               }\r
-       }while(nE>=nB);\r
-       if(bF)\r
-       {\r
-               var oFIA=gaFakes[nM];\r
-               var nOffsetTop=oFIA.getTop();\r
-               var nOffsetBottom=oFIA.getBtm();\r
-               var nDelta=0;\r
-               var nHDiff=nIns-oFIA.nB;\r
-               var nTDiff=oFIA.nNum+oFIA.nB-(nIns+nCount);\r
-               if(nHDiff>0)\r
-               {\r
-                       nDelta=oFIA.setNum(nHDiff);\r
-                       var sOldKBefore=oFIA.sKB;\r
-                       oFIA.sKB=oHTML.sFK;\r
-                       if(nTDiff>0)\r
-                       {\r
-                               var sHTML=getFakeItemsHTMLbyCount(nIns,nTDiff);\r
-                               oFIA.insertAdjacentHTML("afterEnd",sHTML);\r
-                               var obj=getH6ById(nIns);\r
-                               insertItemIntoArray(gaFakes,nM+1,new fakeItemsArea(nIns+nCount,nTDiff,oHTML.sLK,sOldKBefore,obj));\r
-                       }\r
-                       oFIA.insertAdjacentHTML("afterEnd",oHTML.sHTML);        \r
-                       if(bScrl)\r
-                       {\r
-                               if(gbMac&&gbIE4)\r
-                               {\r
-                                       var nScrollPos=nOffsetBottom-nDelta;\r
-                                       while(document.body.scrollTop!=nScrollPos)\r
-                                               document.body.scrollTop=nScrollPos;\r
-                               }\r
-                               else\r
-                                       window.scrollTo(0,nOffsetBottom-nDelta);\r
-                       }\r
-               }\r
-               else{\r
-                       oFIA.insertAdjacentHTML("beforeBegin",oHTML.sHTML);\r
-                       if(bScrl){\r
-                               if(gbMac&&gbIE4)\r
-                               {\r
-                                       var nScrollPos=nOffsetTop;\r
-                                       while(document.body.scrollTop!=nScrollPos)\r
-                                               document.body.scrollTop=nScrollPos;\r
-                               }\r
-                               else\r
-                                       window.scrollTo(0,nOffsetTop);\r
-                       }\r
-                                       \r
-                       if(nTDiff>0)\r
-                       {\r
-                               oFIA.nB=nIns+nCount;\r
-                               nDelta=oFIA.setNum(nTDiff);\r
-                               oFIA.sKA=oHTML.sLK;\r
-                       }       \r
-                       else{\r
-                               gaFakes[nM].setNum(0);\r
-                               removeItemFromArray(gaFakes,nM);\r
-                       }\r
-               }\r
-       }\r
-       else\r
-               bRtn=false;\r
-       enEvt();\r
-       return bRtn;\r
-}\r
-\r
-function window_OnScroll()\r
-{\r
-       gnSE++;\r
-       setTimeout("procScroll();",50); \r
-}\r
-\r
-function procScroll()\r
-{\r
-       if(gnSE==1&&!gbProcess)\r
-       {\r
-               markBegin();\r
-               getUnitIdx(document.body.scrollTop,document.body.clientHeight);\r
-       }\r
-       gnSE--;\r
-}\r
-\r
-function window_OnResize()\r
-{\r
-       gnRE++;\r
-       setTimeout("procResize();",50);\r
-}\r
-\r
-function procResize()\r
-{\r
-       if(gnRE==1&&!gbProcess)\r
-       {\r
-               markBegin();\r
-               gnVisible=Math.ceil(document.body.clientHeight/gnUHeight);\r
-               if(gnIns==-1)\r
-                       getUnitIdx(document.body.scrollTop,document.body.clientHeight);\r
-       }\r
-       gnRE--;\r
-}\r
-\r
-function getChunkByIdx(nIdx,nPosition)\r
-{\r
-       var oCData=null;\r
-       if(nIdx<gaChunks.length)\r
-       {\r
-               var len=gaChunks[nIdx].length;\r
-               if(len>0)\r
-               {\r
-                       var nB=0;\r
-                       var nE=len-1;\r
-                       var bF=false;\r
-                       do{\r
-                               var nM=(nB+nE)>>1;\r
-                               if(nPosition<gaChunks[nIdx][nM].nTotal)\r
-                               {\r
-                                       bF=true;\r
-                                       nE=nM;\r
-                               }\r
-                               else\r
-                                       nB=nM+1;\r
-                       }while(nE>nB);\r
-                       if(bF)\r
-                               oCData=gaChunks[nIdx][nE];\r
-                       else if(nPosition<gaChunks[nIdx][nB].nTotal)\r
-                               oCData=gaChunks[nIdx][nB];\r
-               }\r
-       }\r
-       return oCData;\r
-}\r
-\r
-function getChunkedData(nIdx,bDown,sK)\r
-{\r
-       var oCData=null;\r
-       var nCandId=-1;\r
-       if(nIdx<gaChunks.length)\r
-       {\r
-               var len=gaChunks[nIdx].length;\r
-               if(len>0)\r
-               {\r
-                       var nB=0;\r
-                       var nE=len-1;\r
-                       var bF=false;\r
-                       do{\r
-                               var nM=(nB+nE+(bDown?0:1))>>1;\r
-                               if(bDown)\r
-                               {\r
-                                       if(compare(sK,gaChunks[nIdx][nM].sEK)<0)\r
-                                       {\r
-                                               bF=true;\r
-                                               nE=nM;\r
-                                       }\r
-                                       else\r
-                                               nB=nM+1;\r
-                               }\r
-                               else\r
-                               {\r
-                                       if(compare(sK,gaChunks[nIdx][nM].sBK)>0)\r
-                                       {\r
-                                               bF=true;\r
-                                               nB=nM;\r
-                                       }\r
-                                       else\r
-                                               nE=nM-1;\r
-                               }\r
-                       }while(nE>nB);\r
-                       if(bF)\r
-                       {\r
-                               if(bDown)\r
-                                       nCandId=nE;\r
-                               else\r
-                                       nCandId=nB;\r
-                       }\r
-                       else\r
-                       {\r
-                               if(bDown)\r
-                               {\r
-                                       if(gaChunks[nIdx].length>nB&&compare(sK,gaChunks[nIdx][nB].sEK)<0)\r
-                                               nCandId=nB;\r
-                                       else\r
-                                               nCandId=gaChunks[nIdx].length-1;\r
-                               }\r
-                               else\r
-                               {\r
-                                       if(0<=nE&&compare(sK,gaChunks[nIdx][nE].sBK)>0)\r
-                                               nCandId=nE;\r
-                                       else\r
-                                               nCandId=0;\r
-                               }\r
-                       }\r
-                       return gaChunks[nIdx][nCandId];\r
-               }\r
-       }\r
-       return null;\r
-}\r
-\r
-function findCK()\r
-{\r
-       if(gsCK!=null)\r
-       {\r
-               gsSKA=gsCK;\r
-               gbFindCK=true;\r
-               gnNeeded=1;\r
-               markBegin();\r
-               checkReady();\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
+//     WebHelp 5.10.002
+var gaChunks=new Array();
+var gaFakes=new Array();
+var gaDataCon=null;
+var gaData=new Array();
+
+var gbFindCK=false;;
+var gbNeedCalc=false;
+var gbScrl=false;
+var gbProcess=false;
+var gbReady=false;
+
+var gnCheck=0;
+var gnNum=0;
+var gnIns=-1;
+var gnLoad=0;
+var gnRef=-1;
+var gnMaxItems=0;
+var gnMaxMargin=32000;
+var gnNeeded=0;
+var gnNKI=-1;
+var gnRE=0;
+var gnScrlMgn=30;
+var gnSE=0;
+var gnVisible=0;
+var gnItems=0;
+var gnUHeight=1;
+
+var gsBCK=null;
+var gsChK=null;
+var gsCK=null;
+var gsLoadingDivID="LoadingDiv";
+var gsLoadingMsg="Loading data, please wait...";
+var gsSKA=null;
+var gsSKB=null;
+
+var gbLoadInfo=false;
+
+function onLoadXMLError()
+{
+       if(gbLoadInfo)
+       {
+               var aChunk=new Array();
+               projReady(aChunk);
+       }
+       else
+       {
+               var aData=new Array();
+               putData(aData);
+       }
+}
+
+function putDataXML(xmlDoc,sDocPath)
+{
+       if(gbLoadInfo)
+       {
+               var node=xmlDoc.lastChild;
+               if(node)
+               {
+                       var nTotal=0
+                       var aChunk=new Array();
+                       var oC=node.firstChild;
+                       while(oC)
+                       {
+                               if(oC.nodeName=="chunkinfo")
+                               {
+                                       var item=new Object();
+                                       item.sBK=oC.getAttribute("first");
+                                       item.sEK=oC.getAttribute("last");
+                                       item.sFileName=oC.getAttribute("url");
+                                       item.nNum=parseInt(oC.getAttribute("num"));
+                                       nTotal+=item.nNum;
+                                       item.nTotal=nTotal;
+                                       aChunk[aChunk.length]=item;
+                               }
+                               oC=oC.nextSibling;
+                       }
+                       projReady(aChunk);
+               }
+       }
+       else
+       {
+               var node=xmlDoc.lastChild;
+               if(node)
+               {
+                       var aData=new Array();
+                       var nPrev=0;
+                       var nNext=0;
+                       var oC=node.firstChild;
+                       while(oC)
+                       {
+                               nPrev=nNext;
+                               if(oC.nodeName=="key")
+                               {
+                                       var sName=oC.getAttribute("name");
+                                       if(sName&&sName.length>0)
+                                       {
+                                               var sTarget=oC.getAttribute("target");
+                                               var item=new Object();
+                                               item.nType=2;
+                                               item.sName=sName;
+                                               if(sTarget)
+                                                       item.sTarget=sTarget;
+                                               item.nPKOff=nPrev;
+                                               aData[aData.length]=item;
+                                               var nCurIndex=aData.length;
+                                               processKey(oC,aData,item);
+                                               nNext=aData.length-nCurIndex;
+                                               item.nNKOff=nNext;
+                                       }
+                               }
+                               else if(oC.nodeName=="letter")
+                               {
+                                       var name=oC.getAttribute("name");
+                                       if(name&&name.length>0)
+                                       {
+                                               var item=new Object();
+                                               item.nType=1;
+                                               item.sName=name;
+                                               item.nPKOff=nPrev;
+                                               nNext=0;
+                                               item.nNKOff=nNext;
+                                               aData[aData.length]=item;
+                                       }
+                               }
+                               else if(oC.nodeName=="entry")
+                               {
+                                       var name=oC.getAttribute("name");
+                                       var def=oC.getAttribute("value");
+                                       if(name&&name.length>0)
+                                       {
+                                               var item=new Object();
+                                               item.sName=name;
+                                               item.sDef=def;
+                                               item.nPKOff=nPrev;
+                                               nNext=0;
+                                               item.nNKOff=nNext;
+                                               aData[aData.length]=item;
+                                       }
+                               }
+                               oC=oC.nextSibling;
+                       }
+                       putData(aData);
+               }
+       }
+}
+
+function processKey(element,aData,item)
+{
+       var i=0;
+       var nPrev=0;
+       var nNext=0;
+       var oC=element.firstChild;
+       while(oC)
+       {
+               if(oC.nodeName=="topic")
+               {
+                       var name=oC.getAttribute("name");
+                       var url=oC.getAttribute("url");
+                       if(url&&url.length!=0)
+                       {
+                               if(!name||name.length==0)
+                                       name=url;
+                               var topic=new Object();
+                               topic.sName=name;
+                               topic.sURL=url;
+                               if(!item.aTopics)
+                                       item.aTopics=new Array();
+                               item.aTopics[item.aTopics.length]=topic;
+                       }
+               }
+               else if(oC.nodeName=="key")
+               {
+                       nPrev=nNext;
+                       var name=oC.getAttribute("name");
+                       if(name&&name.length!=0)
+                       {
+                               var subItem=new Object();
+                               subItem.sName=name;
+                               subItem.nType=3;
+                               subItem.nPKOff=nPrev;
+                               aData[aData.length]=subItem;
+                               var nCurIndex=aData.length;
+                               processKey(oC,aData,subItem);
+                               nNext=aData.length-nCurIndex;
+                               subItem.nNKOff=nNext;
+                       }
+               }
+               oC=oC.nextSibling;
+       }
+}
+
+function putData(aData)
+{
+       endLoading();
+       var oCData=goCData;
+       if(oCData)
+       {
+               oCData.aKs=aData;
+               if(gnNKI==-1)
+                       setTimeout("checkReady();",1);
+               else
+               {
+                       gsSKA=getKByIdx(oCData,gnNKI);
+                       gbNeedCalc=true;
+                       gbScrl=true;
+                       gnNKI=-1;
+                       if(gsSKA)
+                               setTimeout("checkReady();",1);
+                       else
+                       {
+                               markEnd();
+                               setTimeout("checkAgain();",50);
+                       }
+               }
+       }
+}
+
+function markEnd()
+{
+       if(gbProcess)
+               gbProcess=false;
+}
+
+function endLoading()
+{
+       var oDiv=getElement(gsLoadingDivID);
+       if(oDiv)
+               oDiv.style.visibility="hidden";
+}
+
+function markBegin()
+{
+       gbProcess=true;
+}
+
+function beginLoading()
+{
+       var oDiv=getElement(gsLoadingDivID);
+       if(oDiv)
+       {
+               oDiv.style.top=document.body.scrollTop;
+               oDiv.style.visibility="visible";
+       }
+}
+
+function indexHTMLPart()
+{
+       this.sHTML="";
+       this.nNeeded=0;
+       this.nCurrent=0;
+       this.nConsumed=0;
+       this.sFK=null;
+       this.sLK=null;
+       this.addHTML=function(sHTML,nConsumed,bDown,bK,sK){
+               if(bDown)
+                       this.sHTML+=sHTML;
+               else
+                       this.sHTML=sHTML+this.sHTML;
+               this.nCurrent++;                        
+               this.nConsumed+=nConsumed;
+               if(bK)
+               {
+                       if(!this.sFK)
+                               this.sFK=sK;
+                       if(!this.sLK)
+                               this.sLK=sK;
+                       if(bDown)
+                               this.sLK=sK;
+                       else
+                               this.sFK=sK;
+               }
+       }
+       this.appendHTML=function(oHTML,bDown){
+               this.addSubHTML(oHTML,bDown);
+               if(!this.sFK)
+                       this.sFK=oHTML.sFK;
+               if(!this.sLK)
+                       this.sLK=oHTML.sLK;
+               if(bDown)
+                       this.sLK=oHTML.sLK;
+               else
+                       this.sFK=oHTML.sFK;
+       }       
+       
+       this.addSubHTML=function(oHTML,bDown){
+               if(bDown)
+                       this.sHTML+=oHTML.sHTML;
+               else
+                       this.sHTML=oHTML.sHTML+this.sHTML;
+               this.nCurrent+=oHTML.nCurrent;
+               this.nConsumed+=oHTML.nConsumed;                        
+       }
+}
+
+function getMaxUnits()
+{
+       return Math.floor(gnMaxMargin/gnUHeight)+1;
+}
+
+function getFakeItemsHTMLbyCount(nB,nCount)
+{
+       var nMU=getMaxUnits();
+       var nNum=Math.floor(nCount/nMU);
+       var sHTML="";
+       for(var i=0;i<nNum;i++)
+               sHTML+=getFakeItemHTML(nB,nMU-1);
+               
+       var nRest=nCount%nMU;
+       sHTML+=getFakeItemHTML(nB,nRest-1);
+       return sHTML;
+}
+
+function getFakeItemHTML(nB,nNum)
+{
+       return "<h6 name=fk"+nB+" id=fk"+nB+" style=\"margin-top:"+gnUHeight*nNum+";margin-bottom:0\">&nbsp;</h6>";
+}
+
+function fakeItemsArea(nB,n,sKA,sKB,obj)
+{
+       this.nB=nB;
+       this.nNum=n;
+       this.sKA=sKA;
+       this.sKB=sKB;
+       this.obj=obj;
+       this.nMargin=(n-1)*gnUHeight;
+
+       this.setNum=function(n)
+       {
+               var nLastobj=-1;
+               var nDelta=this.nMargin;
+               this.nMargin=(n-1)*gnUHeight;
+               nDelta=nDelta-this.nMargin;
+               if(n>0)
+               {
+                       this.nNum=n;
+                       var nMU=getMaxUnits();
+                       nLastobj=Math.floor((n-1)/nMU);
+                       if(this.obj.length)
+                               this.obj[nLastobj].style.marginTop=((n-1)%nMU)*gnUHeight;
+                       else
+                               this.obj.style.marginTop=((n-1)%nMU)*gnUHeight;
+               }
+               if(this.obj.length)
+               {
+                       for(var i=this.obj.length-1;i>nLastobj;i--)
+                               removeThis(this.obj[i]);
+               }
+               else
+               {
+                       if(nLastobj==-1)
+                               removeThis(this.obj);
+               }
+               return nDelta;
+       }
+       this.insertAdjacentHTML=function(sWhere,sHTML)
+       {
+               if(sWhere=="beforeBegin")
+               {
+                       if(this.obj.length)
+                               this.obj[0].insertAdjacentHTML(sWhere,sHTML);
+                       else
+                               this.obj.insertAdjacentHTML(sWhere,sHTML);
+               }
+               else if(sWhere=="afterEnd")
+               {
+                       if(this.obj.length)
+                       {
+                               if(gbMac&&gbIE5&&this.obj[this.obj.length-1].nextSibling)
+                                       this.obj[this.obj.length-1].nextSibling.insertAdjacentHTML("beforeBegin",sHTML);
+                               else
+                                       this.obj[this.obj.length-1].insertAdjacentHTML(sWhere,sHTML);
+                       }
+                       else
+                       {
+                               if(gbMac&&gbIE5&&this.obj.nextSibling)
+                                       this.obj.nextSibling.insertAdjacentHTML("beforeBegin",sHTML);
+                               else
+                                       this.obj.insertAdjacentHTML(sWhere,sHTML);
+                       }
+               }
+       }
+       this.getBtm=function()
+       {
+               if(this.obj.length)
+                       return this.obj[this.obj.length-1].offsetTop;
+               else
+                       return this.obj.offsetTop;
+       }
+       this.getTop=function()
+       {
+               return this.getBtm()-this.nMargin;
+       }
+}
+
+function usedItems(nB,nE)
+{
+       this.nB=nB;
+       this.nE=nE;
+       this.oN=null;
+}
+
+function checkReady()
+{
+       var len=gaChunks.length;
+       var bNeedLoad=false;
+       var aDataCon;
+       var s=0;
+       var bDown=(gsSKB==null);
+       var sK=bDown?gsSKA:gsSKB;
+       if(sK==null)
+       {
+               markEnd();
+               setTimeout("checkAgain();",50);
+               return;
+       }
+       if(!gsChK||sK!=gsChK||gnNum==0)
+       {
+               gnCheck=0;
+               gsChK=sK;
+               aDataCon=new Array();
+       }
+       else{
+               s=gnNum;
+               aDataCon=gaDataCon;
+       }
+       for(var i=gnCheck;i<len;i++)
+       {
+               var oCData=getChunkedData(i,bDown,sK);
+               if(oCData)
+               {
+                       if(!oCData.aKs&&oCData.sFileName!=null)
+                       {
+                               bNeedLoad=true;
+                               goCData=oCData;
+                               gnNum=s;
+                               gnCheck=i;
+                               gaDataCon=aDataCon;
+                               oCData.nProjId=i;
+                               gbLoadInfo=false;
+                               beginLoading();
+                               loadData2(gaData[i].sPPath+gaData[i].sDPath+oCData.sFileName);
+                               return;
+                       }
+                       else{
+                               aDataCon[s++]=oCData;
+                       }
+               }
+       }
+       if(!bNeedLoad)
+       {
+               gnNum=0;
+               gsSKA=gsSKB=gsShowK=null;
+               
+               var oHTML=new indexHTMLPart();
+               var aPos=new Array();
+               var aOriPos=new Array();
+               var aMaxPos=new Array();
+               var aMinPos=new Array();
+               
+               if(gbNeedCalc||gbFindCK) gnIns=0;
+               for(i=0;i<aDataCon.length;i++)
+               {
+                       aPos[i]=getIdxPos(aDataCon[i],bDown,sK);
+                       if(gbNeedCalc||gbFindCK)
+                       {
+                               gnIns+=aPos[i]+aDataCon[i].nTotal-aDataCon[i].nNum;
+                               if(!bDown)
+                               {
+                                       if(aPos[i]!=-1)
+                                       {
+                                               if(aDataCon[i].aKs)
+                                                       gnIns+=aDataCon[i].aKs[aPos[i]].nNKOff;
+                                               else
+                                               {
+                                                       var n=aPos[i]+1;
+                                                       while(n<aDataCon[i].aKsOnly.length&&!aDataCon[i].aKsOnly[n])
+                                                               n++;
+                                                       n=n-aPos[i]-1;
+                                                       gnIns+=n;
+                                               }
+                                       }
+                               }
+                       }
+                       aOriPos[i]=aPos[i];
+                       getLimit(aDataCon,aPos,aMaxPos,aMinPos,i);
+               }
+               if((gbNeedCalc||gbFindCK)&&!bDown&&gnIns!=-1)
+               {
+                       gnIns+=(aDataCon.length-1)
+               }
+               if(gnIns!=-1||gbFindCK)
+               {
+                       oHTML.nNeeded=gnNeeded;
+                       var bDone=writeItems(oHTML,aDataCon,aPos,aMinPos,aMaxPos,bDown,1);
+                       if(oHTML.nConsumed!=0)
+                       {
+                               var nB;
+                               if(!bDown)
+                                       nB=gnIns-oHTML.nConsumed+1;
+                               else
+                                       nB=gnIns;
+                                       
+                               var oldScrollPos=document.body.scrollTop;
+                               if(insertIdxKs(nB,oHTML,gbScrl))
+                               {
+                                       updateUsedK(aDataCon,aOriPos,aPos,bDown);
+                                       if(!gbScrl&&gbMac)
+                                       {
+                                               while(document.body.scrollTop!=oldScrollPos)
+                                                       document.body.scrollTop=oldScrollPos;
+                                       }
+                                       gbScrl=false;
+                               }
+                               if(gbFindCK)
+                               {
+                                       gbFindCK=false;
+                                       gbNeedCalc=true;
+                                       gsSKB=oHTML.sFK;
+                                       gnIns=-1;
+                                       setTimeout("checkReady();",50);
+                                       return;
+                               }
+                       }
+                       else if(gbFindCK)
+                       {
+                               gbFindCK=false;
+                               gbNeedCalc=true;
+                               gsSKB=getFirstKeyFromPos(aDataCon,aPos);
+                               gnIns=-1;
+                               setTimeout("checkReady();",50);
+                               return;
+                       }
+                       if(!findCKInDom()) return;
+
+                       gnNeeded=gnNeeded-oHTML.nCurrent;
+                       gnIns=-1;
+                       markEnd();
+                       setTimeout("checkAgain();",50);
+                       gbNeedCalc=false;
+               }
+               else
+               {
+                       if(!findCKInDom()) return;
+                       markEnd();
+                       setTimeout("checkAgain();",50);
+               }
+       }
+}
+
+function getFirstKeyFromPos(aDataCon,aPos)
+{
+       var sCurrentK=getBiggestChar();
+       for(var i=0;i<aPos.length;i++)
+       {
+               if(aDataCon[i].aKs&&aDataCon[i].aKs.length>0&&aPos[i]>=0&&aPos[i]<aDataCon[i].aKs.length)
+               {
+                       if(sCurrentK==""||
+                               compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)>0)
+                       {
+                               sCurrentK=aDataCon[i].aKs[aPos[i]].sName;
+                       }
+               }
+       }
+       return sCurrentK;
+}
+
+function checkAgain()
+{
+       if(!gbProcess)
+       {
+               if(gsBCK!=null)
+               {
+                       gsCK=gsBCK;
+                       gsBCK=null;
+                       findCK();
+               }
+               else
+               {
+                       markBegin();
+                       getUnitIdx(document.body.scrollTop,document.body.clientHeight);
+               }
+       }
+       else
+               setTimeout("checkAgain()",50);
+}
+
+function getLimit(aDataCon,aPos,aMaxPos,aMinPos,i)
+{
+       aMaxPos[i]=aDataCon[i].nNum;
+       aMinPos[i]=-1;
+       var oPNode=null;
+       if(aDataCon[i].oUsedItems)
+       {
+               var oUsedItems=aDataCon[i].oUsedItems;
+               do{
+                       if(oUsedItems.nB>aPos[i])
+                       {
+                               aMaxPos[i]=oUsedItems.nB;
+                               break;
+                       }
+                       oPNode=oUsedItems;
+                       oUsedItems=oUsedItems.oN;
+               }while(oUsedItems!=null);
+               if(oPNode)
+                       aMinPos[i]=oPNode.nE;
+       }
+       else if(aDataCon[i].aKs==null)
+       {
+               aMaxPos[i]=aMinPos[i]=aPos[i];
+       }
+       if(aMinPos[i]>=aPos[i]||aMaxPos[i]<=aPos[i])
+       {
+               aMaxPos[i]=aMinPos[i]=aPos[i];
+       }
+}
+
+function getIdxPos(oIdx,bDown,sK)
+{
+       var aKs=oIdx.aKs;
+       var nIdx;
+       if(bDown)
+               nIdx=oIdx.nNum;
+       else
+               nIdx=-1;
+       if(aKs!=null)
+       {
+               for(var i=0;i<aKs.length;i++)
+               {       
+                       if(bDown)
+                       {
+                               if(compare(aKs[i].sName,sK)>0)
+                               {
+                                       nIdx=i;
+                                       break;
+                               }
+                       }
+                       else
+                       {
+                               if(compare(aKs[i].sName,sK)<0)
+                                       nIdx=i;
+                               else
+                                       break;
+                       }
+                       i+=aKs[i].nNKOff;
+               }
+       }
+       else if(oIdx.aKsOnly)
+       {
+               var aKsOnly=oIdx.aKsOnly;
+               for(var i=0;i<aKsOnly.length;i++)
+               {       
+                       if(aKsOnly[i])
+                       {
+                               if(bDown)
+                               {
+                                       if(compare(aKsOnly[i],sK)>0)
+                                       {
+                                               nIdx=i;
+                                               break;
+                                       }
+                               }
+                               else
+                               {
+                                       if(compare(aKsOnly[i],sK)<0)
+                                               nIdx=i;
+                                       else
+                                               break;
+                               }
+                       }
+               }
+       }
+       return nIdx;
+}
+
+function writeItems(oHTML,aDataCon,aPos,aMinPos,aMaxPos,bDown,nLevel)
+{
+       var aOldPos=new Array();
+       for(var i=0;i<aPos.length;i++)
+       {
+               aOldPos[i]=aPos[i];
+       }
+       var p;
+       do{
+               var sCurrentK="";
+               var aCurIdxSet=new Array();
+               p=0;
+               for(i=0;i<aDataCon.length;i++)
+               {
+                       if(aDataCon[i].aKs&&aDataCon[i].aKs.length&&aPos[i]!=-1&&
+                               (bDown&&aPos[i]<aMaxPos[i])||(!bDown&&aPos[i]>aMinPos[i]))
+                       {
+                               if(sCurrentK==""||
+                                       (bDown&&compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)>0)||
+                                       (!bDown&&compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)<0))
+                               {
+                                       sCurrentK=aDataCon[i].aKs[aPos[i]].sName;
+                                       p=0;
+                                       aCurIdxSet[p++]=i;
+                               }
+                               else if(compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)==0){
+                                       aCurIdxSet[p++]=i;
+                               }
+                       }
+                       else if(nLevel==1&&aMaxPos[i]!=aMinPos[i]){
+                               if(bDown&&aPos[i]==aMaxPos[i])
+                               {
+                                       if(aDataCon[i].aKs)
+                                       {
+                                               gsSKA=aDataCon[i].aKs[aOldPos[i]].sName;
+                                               return false;
+                                       }
+                               }
+                               else if(!bDown&&aPos[i]==aMinPos[i])
+                               {
+                                       if(aDataCon[i].aKs)
+                                       {
+                                               gsSKB=aDataCon[i].aKs[aOldPos[i]].sName;
+                                               return false;
+                                       }
+                               }
+                       }
+               }
+               if(p>=1){
+                       for(var s=0;s<p;s++)
+                       {
+                               aOldPos[aCurIdxSet[s]]=aPos[aCurIdxSet[s]];
+                       }
+                       mergeItems(oHTML,bDown,aDataCon,aCurIdxSet,p,aPos,nLevel);
+                       adjustPosition(bDown,aDataCon,aCurIdxSet,p,aPos);
+                       
+                       if(nLevel==1&&oHTML.nNeeded<=oHTML.nCurrent){
+                               return true;
+                       }
+               }
+       }while(p>0);
+       return true;
+}
+
+function updateUsedK(aDataCon,aOriPos,aOldPos,bDown)
+{
+       for(var i=0;i<aDataCon.length;i++)
+       {
+               if (aOldPos[i]!=aOriPos[i])
+               {
+                       var nBP=0;
+                       var nEP=0;
+                       if(bDown)
+                       {
+                               nBP=aOriPos[i];
+                               nEP=aOldPos[i]-1;
+                       }
+                       else
+                       {
+                               if (aOldPos[i]!=-1)
+                                       nBP=aOldPos[i]+aDataCon[i].aKs[aOldPos[i]].nNKOff+1;
+                               else
+                                       nBP=0;
+                               nEP=aOriPos[i]+aDataCon[i].aKs[aOriPos[i]].nNKOff;
+                       }
+                       if(nBP<=nEP)
+                       {
+                               setContentsUsed(aDataCon[i],nBP,nEP);
+                               
+                               var oFirstPair=aDataCon[i].oUsedItems;
+                               if(oFirstPair.oN==null&&oFirstPair.nB==0&&oFirstPair.nE==aDataCon[i].nNum-1)
+                               {
+                                       storeKeysOnly(aDataCon[i]);
+                                       aDataCon[i].oUsedItems=aDataCon[i].aKs=aDataCon[i].sFileName=null;
+                               }
+                       }
+               }
+       }
+}
+
+function storeKeysOnly(oCData)
+{
+       oCData.aKsOnly=new Array();
+       for(var i=0;i<oCData.aKs.length;i++)
+       {
+               oCData.aKsOnly[i]=oCData.aKs[i].sName;
+               i+=oCData.aKs[i].nNKOff;
+       }
+}
+
+function setContentsUsed(oIdx,nB,nE)
+{
+       if(!oIdx.oUsedItems)
+               oIdx.oUsedItems=new usedItems(nB,nE);
+       else
+       {
+               var oUsedItems=oIdx.oUsedItems;
+               var oPNode=null;
+               do{
+                       if(oUsedItems.nB>nB)
+                       {
+                               if(oUsedItems.nB==nE+1)
+                               {
+                                       oUsedItems.nB=nB;
+                               }
+                               else{
+                                       var oNewNode=new usedItems(oUsedItems.nB,oUsedItems.nE);
+                                       oNewNode.oN=oUsedItems.oN;
+                                       oUsedItems.nB=nB;
+                                       oUsedItems.nE=nE;
+                                       oUsedItems.oN=oNewNode;
+                               }
+                               break;
+                       }
+                       oPNode=oUsedItems;
+                       oUsedItems=oUsedItems.oN;
+               }while(oUsedItems);
+               if(!oUsedItems)
+               {
+                       if(oPNode!=null)
+                               oPNode.oN=new usedItems(nB,nE);
+               }
+               if(oPNode!=null){
+                       if(oPNode.nE==oPNode.oN.nB-1)
+                       {
+                               oPNode.nE=oPNode.oN.nE;
+                               oPNode.oN=oPNode.oN.oN;
+                       }
+               }
+       }
+}
+
+function projInfo(sPPath,sDPath,sFile)
+{
+       this.sPPath=sPPath;
+       this.sDPath=sDPath;
+       this.sFile=sFile;
+}
+
+function addProjInfo(sPPath,sDPath,sFile)
+{
+       var oIdxInfo=new projInfo(sPPath,sDPath,sFile);
+       gaData[gaData.length]=oIdxInfo;
+       return oIdxInfo;
+}
+
+function writeDataIFrame()
+{
+       if(gnLoad<gaData.length)
+       {
+               gbLoadInfo=true;
+               loadData2(gaData[gnLoad].sPPath+gaData[gnLoad].sDPath+gaData[gnLoad].sFile);
+       }
+       else{
+               if(gnItems!=0)
+               {
+                       markBegin();
+                       writeFakeItems();
+                       gsSKA="";
+                       gnNeeded=gnVisible;
+                       gnIns=0;
+                       checkReady();
+               }
+       }
+}
+
+function getH6ById(nPos)
+{
+       if(document.all)
+               return document.all("fk"+nPos);
+       else if(document.getElementsByName)
+               return document.getElementsByName("fk"+nPos);
+       return null;            
+}
+
+function showItemsInEvaluation(nBP)
+{
+       var bRtn=true;
+       var fPer=nBP/gnItems;
+       var nB=Math.floor(fPer*gnMaxItems);
+       var oCData=getChunkByIdx(gnRef,nB);
+       if(oCData)
+       {
+               if(!oCData.aKs&&oCData.sFileName!=null)
+               {
+                       gnNKI=nB;
+                       goCData=oCData;
+                       oCData.nProjId=gnRef;
+                       gbLoadInfo=false;
+                       beginLoading();
+                       loadData2(gaData[gnRef].sPPath+gaData[gnRef].sDPath+oCData.sFileName);
+               }
+               else{
+                       gsSKA=getKByIdx(oCData,nB);
+                       if(gsSKA)
+                       {
+                               gsSKB=null;
+                               gbNeedCalc=true;
+                               gbScrl=true;
+                               checkReady()
+                       }
+                       else
+                       {
+                               markEnd();
+                               bRtn=false;
+                       }
+               }
+       }
+       else
+       {
+               markEnd();
+               bRtn=false;
+       }
+       return bRtn;
+}
+
+function isUsed(oCData,nPos)
+{
+       var oUsed=oCData.oUsedItems;
+       while(oUsed&&oUsed.nB<=nPos)
+       {
+               if(oUsed.nE>=nPos) return true;
+               oUsed=oUsed.oN;
+       }
+       return false;
+}
+
+function getKByIdx(oCData,nB)
+{
+       var nRelPos=nB-(oCData.nTotal-oCData.nNum);
+       var aIKs=oCData.aKs;
+       if(nRelPos>=0&&aIKs&&nRelPos<aIKs.length)
+       {
+               var oK=null;
+               do{
+                       oK=aIKs[nRelPos++];
+               }       
+               while((oK.nType==3||isUsed(oCData,nRelPos-1))&&nRelPos<aIKs.length);
+               if(oK.nType!=3)
+               {
+                       return oK.sName;
+               }
+               else{
+                       nRelPos=nB-(oCData.nTotal-oCData.nNum)-1;
+                       if(nRelPos>=0)
+                       {
+                               do{
+                                       oK=aIKs[nRelPos--];
+                               }
+                               while((oK.nType==3||isUsed(oCData,nRelPos+1))&&nRelPos>=0);
+                       }
+                       if(oK.nType!=3)
+                       {
+                               return oK.sName;
+                       }
+               }
+       }
+       return null;
+}
+
+function loadData2(sFileName)
+{
+       disEvt();
+       if(gbXML)
+               loadDataXML(sFileName);
+       else
+               loadData(sFileName);
+       enEvt();
+}
+
+function projReady(aChunk)
+{
+       gaChunks[gnLoad++]=aChunk;
+       var len=aChunk.length;
+       var nTotal=0;
+       if(len>0)
+               nTotal=aChunk[len-1].nTotal;
+       gnItems+=nTotal;
+       if(nTotal>gnMaxItems)
+       {
+               gnMaxItems=nTotal;
+               gnRef=gnLoad-1;
+       }
+       setTimeout("writeDataIFrame();",1);
+}
+
+function writeFakeItems()
+{
+       disEvt();
+       gnUHeight=15;
+       var sHTML=getFakeItemsHTMLbyCount(0,gnItems);
+       document.body.insertAdjacentHTML("beforeEnd",sHTML);
+       var obj=getH6ById(0);
+       if (document.body != null)
+       {
+               gnVisible=Math.ceil(document.body.clientHeight/gnUHeight);
+       }
+       gaFakes[0]=new fakeItemsArea(0,gnItems,"",getEndString(),obj);
+       enEvt();
+}
+
+function getEndString()
+{
+       var sBC=getBiggestChar();
+       return sBC+sBC+sBC+sBC+sBC+sBC+sBC+sBC;
+}
+
+function getUnitIdx(nScrl,nHeight)
+{
+       if(gaFakes.length==0)
+       {
+               markEnd();
+               return;
+       }
+       var nB=0;
+       var nE=gaFakes.length-1;
+       var nM=-1;
+       var nTop=0;
+       var nBtm=0;
+       var bF=false;
+       do{
+               nM=(nB+nE)>>1;
+               nBtm=gaFakes[nM].getBtm();
+               nTop=gaFakes[nM].getTop();
+                       
+               if(nTop>=nScrl+nHeight)
+                       nE=nM-1;
+               else if(nBtm<nScrl)
+                       nB=nM+1;
+               else{
+                       bF=true;
+                       break;
+               }
+       }while(nE>=nB);
+       if(bF)
+       {
+               if(nTop>=nScrl){
+                       gsSKA=gaFakes[nM].sKA;
+                       gsSKB=null;
+                       gnNeeded=Math.ceil((nHeight-nTop+nScrl)/gnUHeight);
+                       gnIns=gaFakes[nM].nB;
+                       checkReady();
+               }
+               else if(nBtm<=nScrl+nHeight){
+                       gsSKB=gaFakes[nM].sKB;
+                       gsSKA=null;
+                       gnNeeded=Math.ceil((nBtm-nScrl+gnScrlMgn)/gnUHeight);
+                       gbNeedCalc=true;
+                       checkReady();
+               }
+               else{
+                       gnNeeded=gnVisible;
+                       var nUnitIdx=gaFakes[nM].nB+Math.floor((nScrl-nTop)/gnUHeight);
+                       if (!showItemsInEvaluation(nUnitIdx))
+                       {
+                               gsSKA=gaFakes[nM].sKA;
+                               gsSKB=null;
+                               gnNeeded=Math.ceil(nHeight/gnUHeight);
+                               gnIns=gaFakes[nM].nB;
+                               checkReady();
+                       }
+               }
+       }
+       else
+               markEnd();
+}
+
+function disEvt()
+{
+       window.onscroll=null;
+       window.onresize=null;
+}
+
+function enEvt()
+{
+       window.onscroll=window_OnScroll;
+       window.onresize=window_OnResize;
+}
+
+function insertIdxKs(nIns,oHTML,bScrl)
+{
+       var bRtn=true;
+       disEvt();
+       var nCount=oHTML.nConsumed;
+       var nB=0;
+       var nE=gaFakes.length-1;
+       var nM=-1;
+       var bF=false;
+       do{
+               nM=(nB+nE)>>1;
+               if(gaFakes[nM].nB>nIns)
+                       nE=nM-1;
+               else if(gaFakes[nM].nB+gaFakes[nM].nNum<=nIns)
+                       nB=nM+1;
+               else{
+                       bF=true;
+                       break;
+               }
+       }while(nE>=nB);
+       if(bF)
+       {
+               var oFIA=gaFakes[nM];
+               var nOffsetTop=oFIA.getTop();
+               var nOffsetBottom=oFIA.getBtm();
+               var nDelta=0;
+               var nHDiff=nIns-oFIA.nB;
+               var nTDiff=oFIA.nNum+oFIA.nB-(nIns+nCount);
+               if(nHDiff>0)
+               {
+                       nDelta=oFIA.setNum(nHDiff);
+                       var sOldKBefore=oFIA.sKB;
+                       oFIA.sKB=oHTML.sFK;
+                       if(nTDiff>0)
+                       {
+                               var sHTML=getFakeItemsHTMLbyCount(nIns,nTDiff);
+                               oFIA.insertAdjacentHTML("afterEnd",sHTML);
+                               var obj=getH6ById(nIns);
+                               insertItemIntoArray(gaFakes,nM+1,new fakeItemsArea(nIns+nCount,nTDiff,oHTML.sLK,sOldKBefore,obj));
+                       }
+                       oFIA.insertAdjacentHTML("afterEnd",oHTML.sHTML);        
+                       if(bScrl)
+                       {
+                               if(gbMac&&gbIE4)
+                               {
+                                       var nScrollPos=nOffsetBottom-nDelta;
+                                       while(document.body.scrollTop!=nScrollPos)
+                                               document.body.scrollTop=nScrollPos;
+                               }
+                               else
+                                       window.scrollTo(0,nOffsetBottom-nDelta);
+                       }
+               }
+               else{
+                       oFIA.insertAdjacentHTML("beforeBegin",oHTML.sHTML);
+                       if(bScrl){
+                               if(gbMac&&gbIE4)
+                               {
+                                       var nScrollPos=nOffsetTop;
+                                       while(document.body.scrollTop!=nScrollPos)
+                                               document.body.scrollTop=nScrollPos;
+                               }
+                               else
+                                       window.scrollTo(0,nOffsetTop);
+                       }
+                                       
+                       if(nTDiff>0)
+                       {
+                               oFIA.nB=nIns+nCount;
+                               nDelta=oFIA.setNum(nTDiff);
+                               oFIA.sKA=oHTML.sLK;
+                       }       
+                       else{
+                               gaFakes[nM].setNum(0);
+                               removeItemFromArray(gaFakes,nM);
+                       }
+               }
+       }
+       else
+               bRtn=false;
+       enEvt();
+       return bRtn;
+}
+
+function window_OnScroll()
+{
+       gnSE++;
+       setTimeout("procScroll();",50); 
+}
+
+function procScroll()
+{
+       if(gnSE==1&&!gbProcess)
+       {
+               markBegin();
+               getUnitIdx(document.body.scrollTop,document.body.clientHeight);
+       }
+       gnSE--;
+}
+
+function window_OnResize()
+{
+       gnRE++;
+       setTimeout("procResize();",50);
+}
+
+function procResize()
+{
+       if(gnRE==1&&!gbProcess)
+       {
+               markBegin();
+               gnVisible=Math.ceil(document.body.clientHeight/gnUHeight);
+               if(gnIns==-1)
+                       getUnitIdx(document.body.scrollTop,document.body.clientHeight);
+       }
+       gnRE--;
+}
+
+function getChunkByIdx(nIdx,nPosition)
+{
+       var oCData=null;
+       if(nIdx<gaChunks.length)
+       {
+               var len=gaChunks[nIdx].length;
+               if(len>0)
+               {
+                       var nB=0;
+                       var nE=len-1;
+                       var bF=false;
+                       do{
+                               var nM=(nB+nE)>>1;
+                               if(nPosition<gaChunks[nIdx][nM].nTotal)
+                               {
+                                       bF=true;
+                                       nE=nM;
+                               }
+                               else
+                                       nB=nM+1;
+                       }while(nE>nB);
+                       if(bF)
+                               oCData=gaChunks[nIdx][nE];
+                       else if(nPosition<gaChunks[nIdx][nB].nTotal)
+                               oCData=gaChunks[nIdx][nB];
+               }
+       }
+       return oCData;
+}
+
+function getChunkedData(nIdx,bDown,sK)
+{
+       var oCData=null;
+       var nCandId=-1;
+       if(nIdx<gaChunks.length)
+       {
+               var len=gaChunks[nIdx].length;
+               if(len>0)
+               {
+                       var nB=0;
+                       var nE=len-1;
+                       var bF=false;
+                       do{
+                               var nM=(nB+nE+(bDown?0:1))>>1;
+                               if(bDown)
+                               {
+                                       if(compare(sK,gaChunks[nIdx][nM].sEK)<0)
+                                       {
+                                               bF=true;
+                                               nE=nM;
+                                       }
+                                       else
+                                               nB=nM+1;
+                               }
+                               else
+                               {
+                                       if(compare(sK,gaChunks[nIdx][nM].sBK)>0)
+                                       {
+                                               bF=true;
+                                               nB=nM;
+                                       }
+                                       else
+                                               nE=nM-1;
+                               }
+                       }while(nE>nB);
+                       if(bF)
+                       {
+                               if(bDown)
+                                       nCandId=nE;
+                               else
+                                       nCandId=nB;
+                       }
+                       else
+                       {
+                               if(bDown)
+                               {
+                                       if(gaChunks[nIdx].length>nB&&compare(sK,gaChunks[nIdx][nB].sEK)<0)
+                                               nCandId=nB;
+                                       else
+                                               nCandId=gaChunks[nIdx].length-1;
+                               }
+                               else
+                               {
+                                       if(0<=nE&&compare(sK,gaChunks[nIdx][nE].sBK)>0)
+                                               nCandId=nE;
+                                       else
+                                               nCandId=0;
+                               }
+                       }
+                       return gaChunks[nIdx][nCandId];
+               }
+       }
+       return null;
+}
+
+function findCK()
+{
+       if(gsCK!=null)
+       {
+               gsSKA=gsCK;
+               gbFindCK=true;
+               gnNeeded=1;
+               markBegin();
+               checkReady();
+       }
+}
+
+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>";
+}
+
 var gbWhHost=true;
\ No newline at end of file