home *** CD-ROM | disk | FTP | other *** search
/ ftp.rsa.com / 2014.05.ftp.rsa.com.tar / ftp.rsa.com / pub / agents / RSASecurIDTokenAuto412x64.msi / Data1.cab / _44A8E2E6F7C43D35B392919CEF867641 < prev    next >
Text File  |  2014-03-12  |  25KB  |  1,329 lines

  1. ∩╗┐//    WebHelp 5.10.002
  2. var gaChunks=new Array();
  3. var gaFakes=new Array();
  4. var gaDataCon=null;
  5. var gaData=new Array();
  6.  
  7. var gbFindCK=false;;
  8. var gbNeedCalc=false;
  9. var gbScrl=false;
  10. var gbProcess=false;
  11. var gbReady=false;
  12.  
  13. var gnCheck=0;
  14. var gnNum=0;
  15. var gnIns=-1;
  16. var gnLoad=0;
  17. var gnRef=-1;
  18. var gnMaxItems=0;
  19. var gnMaxMargin=32000;
  20. var gnNeeded=0;
  21. var gnNKI=-1;
  22. var gnRE=0;
  23. var gnScrlMgn=30;
  24. var gnSE=0;
  25. var gnVisible=0;
  26. var gnItems=0;
  27. var gnUHeight=1;
  28.  
  29. var gsBCK=null;
  30. var gsChK=null;
  31. var gsCK=null;
  32. var gsLoadingDivID="LoadingDiv";
  33. var gsLoadingMsg="Loading data, please wait...";
  34. var gsSKA=null;
  35. var gsSKB=null;
  36.  
  37. var gbLoadInfo=false;
  38.  
  39. function onLoadXMLError()
  40. {
  41.     if(gbLoadInfo)
  42.     {
  43.         var aChunk=new Array();
  44.         projReady(aChunk);
  45.     }
  46.     else
  47.     {
  48.         var aData=new Array();
  49.         putData(aData);
  50.     }
  51. }
  52.  
  53. function putDataXML(xmlDoc,sDocPath)
  54. {
  55.     if(gbLoadInfo)
  56.     {
  57.         var node=xmlDoc.lastChild;
  58.         if(node)
  59.         {
  60.             var nTotal=0
  61.             var aChunk=new Array();
  62.             var oC=node.firstChild;
  63.             while(oC)
  64.             {
  65.                 if(oC.nodeName=="chunkinfo")
  66.                 {
  67.                     var item=new Object();
  68.                     item.sBK=oC.getAttribute("first");
  69.                     item.sEK=oC.getAttribute("last");
  70.                     item.sFileName=oC.getAttribute("url");
  71.                     item.nNum=parseInt(oC.getAttribute("num"));
  72.                     nTotal+=item.nNum;
  73.                     item.nTotal=nTotal;
  74.                     aChunk[aChunk.length]=item;
  75.                 }
  76.                 oC=oC.nextSibling;
  77.             }
  78.             projReady(aChunk);
  79.         }
  80.     }
  81.     else
  82.     {
  83.         var node=xmlDoc.lastChild;
  84.         if(node)
  85.         {
  86.             var aData=new Array();
  87.             var nPrev=0;
  88.             var nNext=0;
  89.             var oC=node.firstChild;
  90.             while(oC)
  91.             {
  92.                 nPrev=nNext;
  93.                 if(oC.nodeName=="key")
  94.                 {
  95.                     var sName=oC.getAttribute("name");
  96.                     if(sName&&sName.length>0)
  97.                     {
  98.                         var sTarget=oC.getAttribute("target");
  99.                         var item=new Object();
  100.                         item.nType=2;
  101.                         item.sName=sName;
  102.                         if(sTarget)
  103.                             item.sTarget=sTarget;
  104.                         item.nPKOff=nPrev;
  105.                         aData[aData.length]=item;
  106.                         var nCurIndex=aData.length;
  107.                         processKey(oC,aData,item);
  108.                         nNext=aData.length-nCurIndex;
  109.                         item.nNKOff=nNext;
  110.                     }
  111.                 }
  112.                 else if(oC.nodeName=="letter")
  113.                 {
  114.                     var name=oC.getAttribute("name");
  115.                     if(name&&name.length>0)
  116.                     {
  117.                         var item=new Object();
  118.                         item.nType=1;
  119.                         item.sName=name;
  120.                         item.nPKOff=nPrev;
  121.                         nNext=0;
  122.                         item.nNKOff=nNext;
  123.                         aData[aData.length]=item;
  124.                     }
  125.                 }
  126.                 else if(oC.nodeName=="entry")
  127.                 {
  128.                     var name=oC.getAttribute("name");
  129.                     var def=oC.getAttribute("value");
  130.                     if(name&&name.length>0)
  131.                     {
  132.                         var item=new Object();
  133.                         item.sName=name;
  134.                         item.sDef=def;
  135.                         item.nPKOff=nPrev;
  136.                         nNext=0;
  137.                         item.nNKOff=nNext;
  138.                         aData[aData.length]=item;
  139.                     }
  140.                 }
  141.                 oC=oC.nextSibling;
  142.             }
  143.             putData(aData);
  144.         }
  145.     }
  146. }
  147.  
  148. function processKey(element,aData,item)
  149. {
  150.     var i=0;
  151.     var nPrev=0;
  152.     var nNext=0;
  153.     var oC=element.firstChild;
  154.     while(oC)
  155.     {
  156.         if(oC.nodeName=="topic")
  157.         {
  158.             var name=oC.getAttribute("name");
  159.             var url=oC.getAttribute("url");
  160.             if(url&&url.length!=0)
  161.             {
  162.                 if(!name||name.length==0)
  163.                     name=url;
  164.                 var topic=new Object();
  165.                 topic.sName=name;
  166.                 topic.sURL=url;
  167.                 if(!item.aTopics)
  168.                     item.aTopics=new Array();
  169.                 item.aTopics[item.aTopics.length]=topic;
  170.             }
  171.         }
  172.         else if(oC.nodeName=="key")
  173.         {
  174.             nPrev=nNext;
  175.             var name=oC.getAttribute("name");
  176.             if(name&&name.length!=0)
  177.             {
  178.                 var subItem=new Object();
  179.                 subItem.sName=name;
  180.                 subItem.nType=3;
  181.                 subItem.nPKOff=nPrev;
  182.                 aData[aData.length]=subItem;
  183.                 var nCurIndex=aData.length;
  184.                 processKey(oC,aData,subItem);
  185.                 nNext=aData.length-nCurIndex;
  186.                 subItem.nNKOff=nNext;
  187.             }
  188.         }
  189.         oC=oC.nextSibling;
  190.     }
  191. }
  192.  
  193. function putData(aData)
  194. {
  195.     endLoading();
  196.     var oCData=goCData;
  197.     if(oCData)
  198.     {
  199.         oCData.aKs=aData;
  200.         if(gnNKI==-1)
  201.             setTimeout("checkReady();",1);
  202.         else
  203.         {
  204.             gsSKA=getKByIdx(oCData,gnNKI);
  205.             gbNeedCalc=true;
  206.             gbScrl=true;
  207.             gnNKI=-1;
  208.             if(gsSKA)
  209.                 setTimeout("checkReady();",1);
  210.             else
  211.             {
  212.                 markEnd();
  213.                 setTimeout("checkAgain();",50);
  214.             }
  215.         }
  216.     }
  217. }
  218.  
  219. function markEnd()
  220. {
  221.     if(gbProcess)
  222.         gbProcess=false;
  223. }
  224.  
  225. function endLoading()
  226. {
  227.     var oDiv=getElement(gsLoadingDivID);
  228.     if(oDiv)
  229.         oDiv.style.visibility="hidden";
  230. }
  231.  
  232. function markBegin()
  233. {
  234.     gbProcess=true;
  235. }
  236.  
  237. function beginLoading()
  238. {
  239.     var oDiv=getElement(gsLoadingDivID);
  240.     if(oDiv)
  241.     {
  242.         oDiv.style.top=document.body.scrollTop;
  243.         oDiv.style.visibility="visible";
  244.     }
  245. }
  246.  
  247. function indexHTMLPart()
  248. {
  249.     this.sHTML="";
  250.     this.nNeeded=0;
  251.     this.nCurrent=0;
  252.     this.nConsumed=0;
  253.     this.sFK=null;
  254.     this.sLK=null;
  255.     this.addHTML=function(sHTML,nConsumed,bDown,bK,sK){
  256.         if(bDown)
  257.             this.sHTML+=sHTML;
  258.         else
  259.             this.sHTML=sHTML+this.sHTML;
  260.         this.nCurrent++;            
  261.         this.nConsumed+=nConsumed;
  262.         if(bK)
  263.         {
  264.             if(!this.sFK)
  265.                 this.sFK=sK;
  266.             if(!this.sLK)
  267.                 this.sLK=sK;
  268.             if(bDown)
  269.                 this.sLK=sK;
  270.             else
  271.                 this.sFK=sK;
  272.         }
  273.     }
  274.     this.appendHTML=function(oHTML,bDown){
  275.         this.addSubHTML(oHTML,bDown);
  276.         if(!this.sFK)
  277.             this.sFK=oHTML.sFK;
  278.         if(!this.sLK)
  279.             this.sLK=oHTML.sLK;
  280.         if(bDown)
  281.             this.sLK=oHTML.sLK;
  282.         else
  283.             this.sFK=oHTML.sFK;
  284.     }    
  285.     
  286.     this.addSubHTML=function(oHTML,bDown){
  287.         if(bDown)
  288.             this.sHTML+=oHTML.sHTML;
  289.         else
  290.             this.sHTML=oHTML.sHTML+this.sHTML;
  291.         this.nCurrent+=oHTML.nCurrent;
  292.         this.nConsumed+=oHTML.nConsumed;            
  293.     }
  294. }
  295.  
  296. function getMaxUnits()
  297. {
  298.     return Math.floor(gnMaxMargin/gnUHeight)+1;
  299. }
  300.  
  301. function getFakeItemsHTMLbyCount(nB,nCount)
  302. {
  303.     var nMU=getMaxUnits();
  304.     var nNum=Math.floor(nCount/nMU);
  305.     var sHTML="";
  306.     for(var i=0;i<nNum;i++)
  307.         sHTML+=getFakeItemHTML(nB,nMU-1);
  308.         
  309.     var nRest=nCount%nMU;
  310.     sHTML+=getFakeItemHTML(nB,nRest-1);
  311.     return sHTML;
  312. }
  313.  
  314. function getFakeItemHTML(nB,nNum)
  315. {
  316.     return "<h6 name=fk"+nB+" id=fk"+nB+" style=\"margin-top:"+gnUHeight*nNum+";margin-bottom:0\"> </h6>";
  317. }
  318.  
  319. function fakeItemsArea(nB,n,sKA,sKB,obj)
  320. {
  321.     this.nB=nB;
  322.     this.nNum=n;
  323.     this.sKA=sKA;
  324.     this.sKB=sKB;
  325.     this.obj=obj;
  326.     this.nMargin=(n-1)*gnUHeight;
  327.  
  328.     this.setNum=function(n)
  329.     {
  330.         var nLastobj=-1;
  331.         var nDelta=this.nMargin;
  332.         this.nMargin=(n-1)*gnUHeight;
  333.         nDelta=nDelta-this.nMargin;
  334.         if(n>0)
  335.         {
  336.             this.nNum=n;
  337.             var nMU=getMaxUnits();
  338.             nLastobj=Math.floor((n-1)/nMU);
  339.             if(this.obj.length)
  340.                 this.obj[nLastobj].style.marginTop=((n-1)%nMU)*gnUHeight;
  341.             else
  342.                 this.obj.style.marginTop=((n-1)%nMU)*gnUHeight;
  343.         }
  344.         if(this.obj.length)
  345.         {
  346.             for(var i=this.obj.length-1;i>nLastobj;i--)
  347.                 removeThis(this.obj[i]);
  348.         }
  349.         else
  350.         {
  351.             if(nLastobj==-1)
  352.                 removeThis(this.obj);
  353.         }
  354.         return nDelta;
  355.     }
  356.     this.insertAdjacentHTML=function(sWhere,sHTML)
  357.     {
  358.         if(sWhere=="beforeBegin")
  359.         {
  360.             if(this.obj.length)
  361.                 this.obj[0].insertAdjacentHTML(sWhere,sHTML);
  362.             else
  363.                 this.obj.insertAdjacentHTML(sWhere,sHTML);
  364.         }
  365.         else if(sWhere=="afterEnd")
  366.         {
  367.             if(this.obj.length)
  368.             {
  369.                 if(gbMac&&gbIE5&&this.obj[this.obj.length-1].nextSibling)
  370.                     this.obj[this.obj.length-1].nextSibling.insertAdjacentHTML("beforeBegin",sHTML);
  371.                 else
  372.                     this.obj[this.obj.length-1].insertAdjacentHTML(sWhere,sHTML);
  373.             }
  374.             else
  375.             {
  376.                 if(gbMac&&gbIE5&&this.obj.nextSibling)
  377.                     this.obj.nextSibling.insertAdjacentHTML("beforeBegin",sHTML);
  378.                 else
  379.                     this.obj.insertAdjacentHTML(sWhere,sHTML);
  380.             }
  381.         }
  382.     }
  383.     this.getBtm=function()
  384.     {
  385.     if(gbSafari3)
  386.     {
  387.         if(this.obj.length)
  388.             return findPosition(this.obj[this.obj.length-1]);
  389.         else
  390.             return findPosition(this.obj);
  391.     }
  392.         if(this.obj.length)
  393.             return this.obj[this.obj.length-1].offsetTop;
  394.         else
  395.             return this.obj.offsetTop;
  396.     }
  397.     this.getTop=function()
  398.     {
  399.         return this.getBtm()-this.nMargin;
  400.     }
  401. }
  402.  
  403. function usedItems(nB,nE)
  404. {
  405.     this.nB=nB;
  406.     this.nE=nE;
  407.     this.oN=null;
  408. }
  409.  
  410. function checkReady()
  411. {
  412.     var len=gaChunks.length;
  413.     var bNeedLoad=false;
  414.     var aDataCon;
  415.     var s=0;
  416.     var bDown=(gsSKB==null);
  417.     var sK=bDown?gsSKA:gsSKB;
  418.     if(sK==null)
  419.     {
  420.         markEnd();
  421.         setTimeout("checkAgain();",50);
  422.         return;
  423.     }
  424.     if(!gsChK||sK!=gsChK||gnNum==0)
  425.     {
  426.         gnCheck=0;
  427.         gsChK=sK;
  428.         aDataCon=new Array();
  429.     }
  430.     else{
  431.         s=gnNum;
  432.         aDataCon=gaDataCon;
  433.     }
  434.     for(var i=gnCheck;i<len;i++)
  435.     {
  436.         var oCData=getChunkedData(i,bDown,sK);
  437.         if(oCData)
  438.         {
  439.             if(!oCData.aKs&&oCData.sFileName!=null)
  440.             {
  441.                 bNeedLoad=true;
  442.                 goCData=oCData;
  443.                 gnNum=s;
  444.                 gnCheck=i;
  445.                 gaDataCon=aDataCon;
  446.                 oCData.nProjId=i;
  447.                 gbLoadInfo=false;
  448.                 beginLoading();
  449.                 loadData2(gaData[i].sPPath+gaData[i].sDPath+oCData.sFileName);
  450.                 return;
  451.             }
  452.             else{
  453.                 aDataCon[s++]=oCData;
  454.             }
  455.         }
  456.     }
  457.     if(!bNeedLoad)
  458.     {
  459.         gnNum=0;
  460.         gsSKA=gsSKB=gsShowK=null;
  461.         
  462.         var oHTML=new indexHTMLPart();
  463.         var aPos=new Array();
  464.         var aOriPos=new Array();
  465.         var aMaxPos=new Array();
  466.         var aMinPos=new Array();
  467.         
  468.         if(gbNeedCalc||gbFindCK) gnIns=0;
  469.         for(i=0;i<aDataCon.length;i++)
  470.         {
  471.             aPos[i]=getIdxPos(aDataCon[i],bDown,sK);
  472.             if(gbNeedCalc||gbFindCK)
  473.             {
  474.                 gnIns+=aPos[i]+aDataCon[i].nTotal-aDataCon[i].nNum;
  475.                 if(!bDown)
  476.                 {
  477.                     if(aPos[i]!=-1)
  478.                     {
  479.                         if(aDataCon[i].aKs)
  480.                             gnIns+=aDataCon[i].aKs[aPos[i]].nNKOff;
  481.                         else
  482.                         {
  483.                             var n=aPos[i]+1;
  484.                             while(n<aDataCon[i].aKsOnly.length&&!aDataCon[i].aKsOnly[n])
  485.                                 n++;
  486.                             n=n-aPos[i]-1;
  487.                             gnIns+=n;
  488.                         }
  489.                     }
  490.                 }
  491.             }
  492.             aOriPos[i]=aPos[i];
  493.             getLimit(aDataCon,aPos,aMaxPos,aMinPos,i);
  494.         }
  495.         if((gbNeedCalc||gbFindCK)&&!bDown&&gnIns!=-1)
  496.         {
  497.             gnIns+=(aDataCon.length-1)
  498.         }
  499.         if(gnIns!=-1||gbFindCK)
  500.         {
  501.             oHTML.nNeeded=gnNeeded;
  502.             var bDone=writeItems(oHTML,aDataCon,aPos,aMinPos,aMaxPos,bDown,1);
  503.             if(oHTML.nConsumed!=0)
  504.             {
  505.                 var nB;
  506.                 if(!bDown)
  507.                     nB=gnIns-oHTML.nConsumed+1;
  508.                 else
  509.                     nB=gnIns;
  510.                     
  511.                 var oldScrollPos=document.body.scrollTop;
  512.                 if(insertIdxKs(nB,oHTML,gbScrl))
  513.                 {
  514.                     updateUsedK(aDataCon,aOriPos,aPos,bDown);
  515.                     if(!gbScrl&&gbMac)
  516.                     {
  517.                         while(document.body.scrollTop!=oldScrollPos)
  518.                             document.body.scrollTop=oldScrollPos;
  519.                     }
  520.                     gbScrl=false;
  521.                 }
  522.                 if(gbFindCK)
  523.                 {
  524.                     gbFindCK=false;
  525.                     gbNeedCalc=true;
  526.                     gsSKB=oHTML.sFK;
  527.                     gnIns=-1;
  528.                     setTimeout("checkReady();",50);
  529.                     return;
  530.                 }
  531.             }
  532.             else if(gbFindCK)
  533.             {
  534.                 gbFindCK=false;
  535.                 gbNeedCalc=true;
  536.                 gsSKB=getFirstKeyFromPos(aDataCon,aPos);
  537.                 gnIns=-1;
  538.                 setTimeout("checkReady();",50);
  539.                 return;
  540.             }
  541.             if(!findCKInDom()) return;
  542.  
  543.             gnNeeded=gnNeeded-oHTML.nCurrent;
  544.             gnIns=-1;
  545.             markEnd();
  546.             setTimeout("checkAgain();",50);
  547.             gbNeedCalc=false;
  548.         }
  549.         else
  550.         {
  551.             if(!findCKInDom()) return;
  552.             markEnd();
  553.             setTimeout("checkAgain();",50);
  554.         }
  555.     }
  556. }
  557.  
  558. function getFirstKeyFromPos(aDataCon,aPos)
  559. {
  560.     var sCurrentK=getBiggestChar();
  561.     for(var i=0;i<aPos.length;i++)
  562.     {
  563.         if(aDataCon[i].aKs&&aDataCon[i].aKs.length>0&&aPos[i]>=0&&aPos[i]<aDataCon[i].aKs.length)
  564.         {
  565.             if(sCurrentK==""||
  566.                 compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)>0)
  567.             {
  568.                 sCurrentK=aDataCon[i].aKs[aPos[i]].sName;
  569.             }
  570.         }
  571.     }
  572.     return sCurrentK;
  573. }
  574.  
  575. function checkAgain()
  576. {
  577.     if(!gbProcess)
  578.     {
  579.         if(gsBCK!=null)
  580.         {
  581.             gsCK=gsBCK;
  582.             gsBCK=null;
  583.             findCK();
  584.         }
  585.         else
  586.         {
  587.             markBegin();
  588.             getUnitIdx(document.body.scrollTop,getClientHeight());
  589.         }
  590.     }
  591.     else
  592.         setTimeout("checkAgain()",50);
  593. }
  594.  
  595. function getLimit(aDataCon,aPos,aMaxPos,aMinPos,i)
  596. {
  597.     aMaxPos[i]=aDataCon[i].nNum;
  598.     aMinPos[i]=-1;
  599.     var oPNode=null;
  600.     if(aDataCon[i].oUsedItems)
  601.     {
  602.         var oUsedItems=aDataCon[i].oUsedItems;
  603.         do{
  604.             if(oUsedItems.nB>aPos[i])
  605.             {
  606.                 aMaxPos[i]=oUsedItems.nB;
  607.                 break;
  608.             }
  609.             oPNode=oUsedItems;
  610.             oUsedItems=oUsedItems.oN;
  611.         }while(oUsedItems!=null);
  612.         if(oPNode)
  613.             aMinPos[i]=oPNode.nE;
  614.     }
  615.     else if(aDataCon[i].aKs==null)
  616.     {
  617.         aMaxPos[i]=aMinPos[i]=aPos[i];
  618.     }
  619.     if(aMinPos[i]>=aPos[i]||aMaxPos[i]<=aPos[i])
  620.     {
  621.         aMaxPos[i]=aMinPos[i]=aPos[i];
  622.     }
  623. }
  624.  
  625. function getIdxPos(oIdx,bDown,sK)
  626. {
  627.     var aKs=oIdx.aKs;
  628.     var nIdx;
  629.     if(bDown)
  630.         nIdx=oIdx.nNum;
  631.     else
  632.         nIdx=-1;
  633.     if(aKs!=null)
  634.     {
  635.         for(var i=0;i<aKs.length;i++)
  636.         {    
  637.             if(bDown)
  638.             {
  639.                 if(compare(aKs[i].sName,sK)>0)
  640.                 {
  641.                     nIdx=i;
  642.                     break;
  643.                 }
  644.             }
  645.             else
  646.             {
  647.                 if(compare(aKs[i].sName,sK)<0)
  648.                     nIdx=i;
  649.                 else
  650.                     break;
  651.             }
  652.             i+=aKs[i].nNKOff;
  653.         }
  654.     }
  655.     else if(oIdx.aKsOnly)
  656.     {
  657.         var aKsOnly=oIdx.aKsOnly;
  658.         for(var i=0;i<aKsOnly.length;i++)
  659.         {    
  660.             if(aKsOnly[i])
  661.             {
  662.                 if(bDown)
  663.                 {
  664.                     if(compare(aKsOnly[i],sK)>0)
  665.                     {
  666.                         nIdx=i;
  667.                         break;
  668.                     }
  669.                 }
  670.                 else
  671.                 {
  672.                     if(compare(aKsOnly[i],sK)<0)
  673.                         nIdx=i;
  674.                     else
  675.                         break;
  676.                 }
  677.             }
  678.         }
  679.     }
  680.     return nIdx;
  681. }
  682.  
  683. function writeItems(oHTML,aDataCon,aPos,aMinPos,aMaxPos,bDown,nLevel)
  684. {
  685.     var aOldPos=new Array();
  686.     for(var i=0;i<aPos.length;i++)
  687.     {
  688.         aOldPos[i]=aPos[i];
  689.     }
  690.     var p;
  691.     do{
  692.         var sCurrentK="";
  693.         var aCurIdxSet=new Array();
  694.         p=0;
  695.         for(i=0;i<aDataCon.length;i++)
  696.         {
  697.             if(aDataCon[i].aKs&&aDataCon[i].aKs.length&&aPos[i]!=-1&&
  698.                 (bDown&&aPos[i]<aMaxPos[i])||(!bDown&&aPos[i]>aMinPos[i]))
  699.             {
  700.                 if(sCurrentK==""||
  701.                     (bDown&&compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)>0)||
  702.                     (!bDown&&compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)<0))
  703.                 {
  704.                     sCurrentK=aDataCon[i].aKs[aPos[i]].sName;
  705.                     p=0;
  706.                     aCurIdxSet[p++]=i;
  707.                 }
  708.                 else if(compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)==0){
  709.                     aCurIdxSet[p++]=i;
  710.                 }
  711.             }
  712.             else if(nLevel==1&&aMaxPos[i]!=aMinPos[i]){
  713.                 if(bDown&&aPos[i]==aMaxPos[i])
  714.                 {
  715.                     if(aDataCon[i].aKs)
  716.                     {
  717.                         gsSKA=aDataCon[i].aKs[aOldPos[i]].sName;
  718.                         return false;
  719.                     }
  720.                 }
  721.                 else if(!bDown&&aPos[i]==aMinPos[i])
  722.                 {
  723.                     if(aDataCon[i].aKs)
  724.                     {
  725.                         gsSKB=aDataCon[i].aKs[aOldPos[i]].sName;
  726.                         return false;
  727.                     }
  728.                 }
  729.             }
  730.         }
  731.         if(p>=1){
  732.             for(var s=0;s<p;s++)
  733.             {
  734.                 aOldPos[aCurIdxSet[s]]=aPos[aCurIdxSet[s]];
  735.             }
  736.             mergeItems(oHTML,bDown,aDataCon,aCurIdxSet,p,aPos,nLevel);
  737.             adjustPosition(bDown,aDataCon,aCurIdxSet,p,aPos);
  738.             
  739.             if(nLevel==1&&oHTML.nNeeded<=oHTML.nCurrent){
  740.                 return true;
  741.             }
  742.         }
  743.     }while(p>0);
  744.     return true;
  745. }
  746.  
  747. function updateUsedK(aDataCon,aOriPos,aOldPos,bDown)
  748. {
  749.     for(var i=0;i<aDataCon.length;i++)
  750.     {
  751.         if (aOldPos[i]!=aOriPos[i])
  752.         {
  753.             var nBP=0;
  754.             var nEP=0;
  755.             if(bDown)
  756.             {
  757.                 nBP=aOriPos[i];
  758.                 nEP=aOldPos[i]-1;
  759.             }
  760.             else
  761.             {
  762.                 if (aOldPos[i]!=-1)
  763.                     nBP=aOldPos[i]+aDataCon[i].aKs[aOldPos[i]].nNKOff+1;
  764.                 else
  765.                     nBP=0;
  766.                 nEP=aOriPos[i]+aDataCon[i].aKs[aOriPos[i]].nNKOff;
  767.             }
  768.             if(nBP<=nEP)
  769.             {
  770.                 setContentsUsed(aDataCon[i],nBP,nEP);
  771.                 
  772.                 var oFirstPair=aDataCon[i].oUsedItems;
  773.                 if(oFirstPair.oN==null&&oFirstPair.nB==0&&oFirstPair.nE==aDataCon[i].nNum-1)
  774.                 {
  775.                     storeKeysOnly(aDataCon[i]);
  776.                     aDataCon[i].oUsedItems=aDataCon[i].aKs=aDataCon[i].sFileName=null;
  777.                 }
  778.             }
  779.         }
  780.     }
  781. }
  782.  
  783. function storeKeysOnly(oCData)
  784. {
  785.     oCData.aKsOnly=new Array();
  786.     for(var i=0;i<oCData.aKs.length;i++)
  787.     {
  788.         oCData.aKsOnly[i]=oCData.aKs[i].sName;
  789.         i+=oCData.aKs[i].nNKOff;
  790.     }
  791. }
  792.  
  793. function setContentsUsed(oIdx,nB,nE)
  794. {
  795.     if(!oIdx.oUsedItems)
  796.         oIdx.oUsedItems=new usedItems(nB,nE);
  797.     else
  798.     {
  799.         var oUsedItems=oIdx.oUsedItems;
  800.         var oPNode=null;
  801.         do{
  802.             if(oUsedItems.nB>nB)
  803.             {
  804.                 if(oUsedItems.nB==nE+1)
  805.                 {
  806.                     oUsedItems.nB=nB;
  807.                 }
  808.                 else{
  809.                     var oNewNode=new usedItems(oUsedItems.nB,oUsedItems.nE);
  810.                     oNewNode.oN=oUsedItems.oN;
  811.                     oUsedItems.nB=nB;
  812.                     oUsedItems.nE=nE;
  813.                     oUsedItems.oN=oNewNode;
  814.                 }
  815.                 break;
  816.             }
  817.             oPNode=oUsedItems;
  818.             oUsedItems=oUsedItems.oN;
  819.         }while(oUsedItems);
  820.         if(!oUsedItems)
  821.         {
  822.             if(oPNode!=null)
  823.                 oPNode.oN=new usedItems(nB,nE);
  824.         }
  825.         if(oPNode!=null){
  826.             if(oPNode.nE==oPNode.oN.nB-1)
  827.             {
  828.                 oPNode.nE=oPNode.oN.nE;
  829.                 oPNode.oN=oPNode.oN.oN;
  830.             }
  831.         }
  832.     }
  833. }
  834.  
  835. function projInfo(sPPath,sDPath,sFile)
  836. {
  837.     this.sPPath=sPPath;
  838.     this.sDPath=sDPath;
  839.     this.sFile=sFile;
  840. }
  841.  
  842. function addProjInfo(sPPath,sDPath,sFile)
  843. {
  844.     var oIdxInfo=new projInfo(sPPath,sDPath,sFile);
  845.     gaData[gaData.length]=oIdxInfo;
  846.     return oIdxInfo;
  847. }
  848.  
  849. function writeDataIFrame()
  850. {
  851.     if(gnLoad<gaData.length)
  852.     {
  853.         gbLoadInfo=true;
  854.         loadData2(gaData[gnLoad].sPPath+gaData[gnLoad].sDPath+gaData[gnLoad].sFile);
  855.     }
  856.     else{
  857.         if(gnItems!=0)
  858.         {
  859.             markBegin();
  860.             writeFakeItems();
  861.             gsSKA="";
  862.             gnNeeded=gnVisible;
  863.             gnIns=0;
  864.             checkReady();
  865.         }
  866.     }
  867. }
  868.  
  869. function getH6ById(nPos)
  870. {
  871.     if(document.all)
  872.         return document.all("fk"+nPos);
  873.     else if(document.getElementsByName)
  874.         return document.getElementsByName("fk"+nPos);
  875.     return null;        
  876. }
  877.  
  878. function showItemsInEvaluation(nBP)
  879. {
  880.     var bRtn=true;
  881.     var fPer=nBP/gnItems;
  882.     var nB=Math.floor(fPer*gnMaxItems);
  883.     var oCData=getChunkByIdx(gnRef,nB);
  884.     if(oCData)
  885.     {
  886.         if(!oCData.aKs&&oCData.sFileName!=null)
  887.         {
  888.             gnNKI=nB;
  889.             goCData=oCData;
  890.             oCData.nProjId=gnRef;
  891.             gbLoadInfo=false;
  892.             beginLoading();
  893.             loadData2(gaData[gnRef].sPPath+gaData[gnRef].sDPath+oCData.sFileName);
  894.         }
  895.         else{
  896.             gsSKA=getKByIdx(oCData,nB);
  897.             if(gsSKA)
  898.             {
  899.                 gsSKB=null;
  900.                 gbNeedCalc=true;
  901.                 gbScrl=true;
  902.                 checkReady()
  903.             }
  904.             else
  905.             {
  906.                 markEnd();
  907.                 bRtn=false;
  908.             }
  909.         }
  910.     }
  911.     else
  912.     {
  913.         markEnd();
  914.         bRtn=false;
  915.     }
  916.     return bRtn;
  917. }
  918.  
  919. function isUsed(oCData,nPos)
  920. {
  921.     var oUsed=oCData.oUsedItems;
  922.     while(oUsed&&oUsed.nB<=nPos)
  923.     {
  924.         if(oUsed.nE>=nPos) return true;
  925.         oUsed=oUsed.oN;
  926.     }
  927.     return false;
  928. }
  929.  
  930. function getKByIdx(oCData,nB)
  931. {
  932.     var nRelPos=nB-(oCData.nTotal-oCData.nNum);
  933.     var aIKs=oCData.aKs;
  934.     if(nRelPos>=0&&aIKs&&nRelPos<aIKs.length)
  935.     {
  936.         var oK=null;
  937.         do{
  938.             oK=aIKs[nRelPos++];
  939.         }    
  940.         while((oK.nType==3||isUsed(oCData,nRelPos-1))&&nRelPos<aIKs.length);
  941.         if(oK.nType!=3)
  942.         {
  943.             return oK.sName;
  944.         }
  945.         else{
  946.             nRelPos=nB-(oCData.nTotal-oCData.nNum)-1;
  947.             if(nRelPos>=0)
  948.             {
  949.                 do{
  950.                     oK=aIKs[nRelPos--];
  951.                 }
  952.                 while((oK.nType==3||isUsed(oCData,nRelPos+1))&&nRelPos>=0);
  953.             }
  954.             if(oK.nType!=3)
  955.             {
  956.                 return oK.sName;
  957.             }
  958.         }
  959.     }
  960.     return null;
  961. }
  962.  
  963. function loadData2(sFileName)
  964. {
  965.     disEvt();
  966.     if(gbXML)
  967.         loadDataXML(sFileName);
  968.     else
  969.         loadData(sFileName);
  970.     enEvt();
  971. }
  972.  
  973. function projReady(aChunk)
  974. {
  975.     gaChunks[gnLoad++]=aChunk;
  976.     var len=aChunk.length;
  977.     var nTotal=0;
  978.     if(len>0)
  979.         nTotal=aChunk[len-1].nTotal;
  980.     gnItems+=nTotal;
  981.     if(nTotal>gnMaxItems)
  982.     {
  983.         gnMaxItems=nTotal;
  984.         gnRef=gnLoad-1;
  985.     }
  986.     setTimeout("writeDataIFrame();",1);
  987. }
  988.  
  989. function writeFakeItems()
  990. {
  991.     disEvt();
  992.     gnUHeight=15;
  993.     if(gbSafari3 && !gbMac)
  994.         gnUHeight=1;
  995.     var sHTML=getFakeItemsHTMLbyCount(0,gnItems);
  996.     document.body.insertAdjacentHTML("beforeEnd",sHTML);
  997.     var obj=getH6ById(0);
  998.     if (document.body != null)
  999.     {
  1000.         gnVisible=Math.ceil(getClientHeight()/gnUHeight);
  1001.     }
  1002.     gaFakes[0]=new fakeItemsArea(0,gnItems,"",getEndString(),obj);
  1003.     enEvt();
  1004. }
  1005.  
  1006. function getEndString()
  1007. {
  1008.     var sBC=getBiggestChar();
  1009.     return sBC+sBC+sBC+sBC+sBC+sBC+sBC+sBC;
  1010. }
  1011.  
  1012. function getUnitIdx(nScrl,nHeight)
  1013. {
  1014.     if(gaFakes.length==0)
  1015.     {
  1016.         markEnd();
  1017.         return;
  1018.     }
  1019.     var nB=0;
  1020.     var nE=gaFakes.length-1;
  1021.     var nM=-1;
  1022.     var nTop=0;
  1023.     var nBtm=0;
  1024.     var bF=false;
  1025.     do{
  1026.         nM=(nB+nE)>>1;
  1027.         nBtm=gaFakes[nM].getBtm();
  1028.         nTop=gaFakes[nM].getTop();
  1029.             
  1030.         if(nTop>=nScrl+nHeight)
  1031.             nE=nM-1;
  1032.         else if(nBtm<nScrl)
  1033.             nB=nM+1;
  1034.         else{
  1035.             bF=true;
  1036.             break;
  1037.         }
  1038.     }while(nE>=nB);
  1039.     if(bF)
  1040.     {
  1041.         if(nTop>=nScrl){
  1042.             gsSKA=gaFakes[nM].sKA;
  1043.             gsSKB=null;
  1044.             gnNeeded=Math.ceil((nHeight-nTop+nScrl)/gnUHeight);
  1045.             gnIns=gaFakes[nM].nB;
  1046.             checkReady();
  1047.         }
  1048.         else if(nBtm<=nScrl+nHeight){
  1049.             gsSKB=gaFakes[nM].sKB;
  1050.             gsSKA=null;
  1051.             gnNeeded=Math.ceil((nBtm-nScrl+gnScrlMgn)/gnUHeight);
  1052.             gbNeedCalc=true;
  1053.             checkReady();
  1054.         }
  1055.         else{
  1056.             gnNeeded=gnVisible;
  1057.             var nUnitIdx=gaFakes[nM].nB+Math.floor((nScrl-nTop)/gnUHeight);
  1058.             if (!showItemsInEvaluation(nUnitIdx))
  1059.             {
  1060.                 gsSKA=gaFakes[nM].sKA;
  1061.                 gsSKB=null;
  1062.                 gnNeeded=Math.ceil(nHeight/gnUHeight);
  1063.                 gnIns=gaFakes[nM].nB;
  1064.                 checkReady();
  1065.             }
  1066.         }
  1067.     }
  1068.     else
  1069.         markEnd();
  1070. }
  1071.  
  1072. function disEvt()
  1073. {
  1074.     window.onscroll=null;
  1075.     window.onresize=null;
  1076. }
  1077.  
  1078. function enEvt()
  1079. {
  1080.     window.onscroll=window_OnScroll;
  1081.     window.onresize=window_OnResize;
  1082. }
  1083.  
  1084. function insertIdxKs(nIns,oHTML,bScrl)
  1085. {
  1086.     var bRtn=true;
  1087.     disEvt();
  1088.     var nCount=oHTML.nConsumed;
  1089.     var nB=0;
  1090.     var nE=gaFakes.length-1;
  1091.     var nM=-1;
  1092.     var bF=false;
  1093.     do{
  1094.         nM=(nB+nE)>>1;
  1095.         if(gaFakes[nM].nB>nIns)
  1096.             nE=nM-1;
  1097.         else if(gaFakes[nM].nB+gaFakes[nM].nNum<=nIns)
  1098.             nB=nM+1;
  1099.         else{
  1100.             bF=true;
  1101.             break;
  1102.         }
  1103.     }while(nE>=nB);
  1104.     if(bF)
  1105.     {
  1106.         var oFIA=gaFakes[nM];
  1107.         var nOffsetTop=oFIA.getTop();
  1108.         var nOffsetBottom=oFIA.getBtm();
  1109.         var nDelta=0;
  1110.         var nHDiff=nIns-oFIA.nB;
  1111.         var nTDiff=oFIA.nNum+oFIA.nB-(nIns+nCount);
  1112.         if(nHDiff>0)
  1113.         {
  1114.             nDelta=oFIA.setNum(nHDiff);
  1115.             var sOldKBefore=oFIA.sKB;
  1116.             oFIA.sKB=oHTML.sFK;
  1117.             if(nTDiff>0)
  1118.             {
  1119.                 var sHTML=getFakeItemsHTMLbyCount(nIns,nTDiff);
  1120.                 oFIA.insertAdjacentHTML("afterEnd",sHTML);
  1121.                 var obj=getH6ById(nIns);
  1122.                 insertItemIntoArray(gaFakes,nM+1,new fakeItemsArea(nIns+nCount,nTDiff,oHTML.sLK,sOldKBefore,obj));
  1123.             }
  1124.             oFIA.insertAdjacentHTML("afterEnd",oHTML.sHTML);    
  1125.             if(bScrl)
  1126.             {
  1127.                 if(gbMac&&gbIE4)
  1128.                 {
  1129.                     var nScrollPos=nOffsetBottom-nDelta;
  1130.                     while(document.body.scrollTop!=nScrollPos)
  1131.                         document.body.scrollTop=nScrollPos;
  1132.                 }
  1133.                 else
  1134.                     window.scrollTo(0,nOffsetBottom-nDelta);
  1135.             }
  1136.         }
  1137.         else{
  1138.             oFIA.insertAdjacentHTML("beforeBegin",oHTML.sHTML);
  1139.             if(bScrl){
  1140.                 if(gbMac&&gbIE4)
  1141.                 {
  1142.                     var nScrollPos=nOffsetTop;
  1143.                     while(document.body.scrollTop!=nScrollPos)
  1144.                         document.body.scrollTop=nScrollPos;
  1145.                 }
  1146.                 else
  1147.                     window.scrollTo(0,nOffsetTop);
  1148.             }
  1149.                     
  1150.             if(nTDiff>0)
  1151.             {
  1152.                 oFIA.nB=nIns+nCount;
  1153.                 nDelta=oFIA.setNum(nTDiff);
  1154.                 oFIA.sKA=oHTML.sLK;
  1155.             }    
  1156.             else{
  1157.                 gaFakes[nM].setNum(0);
  1158.                 removeItemFromArray(gaFakes,nM);
  1159.             }
  1160.         }
  1161.     }
  1162.     else
  1163.         bRtn=false;
  1164.     enEvt();
  1165.     return bRtn;
  1166. }
  1167.  
  1168. function window_OnScroll()
  1169. {
  1170.     gnSE++;
  1171.     setTimeout("procScroll();",50);    
  1172. }
  1173.  
  1174. function procScroll()
  1175. {
  1176.     if(gnSE==1&&!gbProcess)
  1177.     {
  1178.         markBegin();
  1179.         getUnitIdx(document.body.scrollTop,getClientHeight());
  1180.     }
  1181.     gnSE--;
  1182. }
  1183.  
  1184. function window_OnResize()
  1185. {
  1186.     gnRE++;
  1187.     setTimeout("procResize();",50);
  1188. }
  1189.  
  1190. function procResize()
  1191. {
  1192.     if(gnRE==1&&!gbProcess)
  1193.     {
  1194.         markBegin();
  1195.         gnVisible=Math.ceil(getClientHeight()/gnUHeight);
  1196.         if(gnIns==-1)
  1197.             getUnitIdx(document.body.scrollTop,getClientHeight());
  1198.     }
  1199.     gnRE--;
  1200. }
  1201.  
  1202. function getChunkByIdx(nIdx,nPosition)
  1203. {
  1204.     var oCData=null;
  1205.     if(nIdx<gaChunks.length)
  1206.     {
  1207.         var len=gaChunks[nIdx].length;
  1208.         if(len>0)
  1209.         {
  1210.             var nB=0;
  1211.             var nE=len-1;
  1212.             var bF=false;
  1213.             do{
  1214.                 var nM=(nB+nE)>>1;
  1215.                 if(nPosition<gaChunks[nIdx][nM].nTotal)
  1216.                 {
  1217.                     bF=true;
  1218.                     nE=nM;
  1219.                 }
  1220.                 else
  1221.                     nB=nM+1;
  1222.             }while(nE>nB);
  1223.             if(bF)
  1224.                 oCData=gaChunks[nIdx][nE];
  1225.             else if(nPosition<gaChunks[nIdx][nB].nTotal)
  1226.                 oCData=gaChunks[nIdx][nB];
  1227.         }
  1228.     }
  1229.     return oCData;
  1230. }
  1231.  
  1232. function getChunkedData(nIdx,bDown,sK)
  1233. {
  1234.     var oCData=null;
  1235.     var nCandId=-1;
  1236.     if(nIdx<gaChunks.length)
  1237.     {
  1238.         var len=gaChunks[nIdx].length;
  1239.         if(len>0)
  1240.         {
  1241.             var nB=0;
  1242.             var nE=len-1;
  1243.             var bF=false;
  1244.             do{
  1245.                 var nM=(nB+nE+(bDown?0:1))>>1;
  1246.                 if(bDown)
  1247.                 {
  1248.                     if(compare(sK,gaChunks[nIdx][nM].sEK)<0)
  1249.                     {
  1250.                         bF=true;
  1251.                         nE=nM;
  1252.                     }
  1253.                     else
  1254.                         nB=nM+1;
  1255.                 }
  1256.                 else
  1257.                 {
  1258.                     if(compare(sK,gaChunks[nIdx][nM].sBK)>0)
  1259.                     {
  1260.                         bF=true;
  1261.                         nB=nM;
  1262.                     }
  1263.                     else
  1264.                         nE=nM-1;
  1265.                 }
  1266.             }while(nE>nB);
  1267.             if(bF)
  1268.             {
  1269.                 if(bDown)
  1270.                     nCandId=nE;
  1271.                 else
  1272.                     nCandId=nB;
  1273.             }
  1274.             else
  1275.             {
  1276.                 if(bDown)
  1277.                 {
  1278.                     if(gaChunks[nIdx].length>nB&&compare(sK,gaChunks[nIdx][nB].sEK)<0)
  1279.                         nCandId=nB;
  1280.                     else
  1281.                         nCandId=gaChunks[nIdx].length-1;
  1282.                 }
  1283.                 else
  1284.                 {
  1285.                     if(0<=nE&&compare(sK,gaChunks[nIdx][nE].sBK)>0)
  1286.                         nCandId=nE;
  1287.                     else
  1288.                         nCandId=0;
  1289.                 }
  1290.             }
  1291.             return gaChunks[nIdx][nCandId];
  1292.         }
  1293.     }
  1294.     return null;
  1295. }
  1296.  
  1297. function findCK()
  1298. {
  1299.     if(gsCK!=null)
  1300.     {
  1301.         gsSKA=gsCK;
  1302.         gbFindCK=true;
  1303.         gnNeeded=1;
  1304.         markBegin();
  1305.         checkReady();
  1306.     }
  1307. }
  1308.  
  1309. function writeLoadingDiv(nIIdx)
  1310. {
  1311.     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>";
  1312. }
  1313.  
  1314. function findPosition( oElement ) {
  1315.   if( typeof( oElement.offsetParent ) != 'undefined' ) 
  1316.   {
  1317.     for( var posY = 0; oElement; oElement = oElement.offsetParent ) 
  1318.     {
  1319.       posY += oElement.offsetTop;
  1320.     }
  1321.     return posY ;
  1322.   } 
  1323.   else 
  1324.   {
  1325.     return oElement.y ;
  1326.   }
  1327. }
  1328.  
  1329. var gbWhHost=true;