2 var gaChunks=new Array();
\r
3 var gaFakes=new Array();
\r
5 var gaData=new Array();
\r
8 var gbNeedCalc=false;
\r
10 var gbProcess=false;
\r
19 var gnMaxMargin=32000;
\r
32 var gsLoadingDivID="LoadingDiv";
\r
33 var gsLoadingMsg="Loading data, please wait...";
\r
37 var gbLoadInfo=false;
\r
39 function onLoadXMLError()
\r
43 var aChunk=new Array();
\r
48 var aData=new Array();
\r
53 function putDataXML(xmlDoc,sDocPath)
\r
57 var node=xmlDoc.lastChild;
\r
61 var aChunk=new Array();
\r
62 var oC=node.firstChild;
\r
65 if(oC.nodeName=="chunkinfo")
\r
67 var item=new Object();
\r
68 item.sBK=oC.getAttribute("first");
\r
69 item.sEK=oC.getAttribute("last");
\r
70 item.sFileName=oC.getAttribute("url");
\r
71 item.nNum=parseInt(oC.getAttribute("num"));
\r
74 aChunk[aChunk.length]=item;
\r
83 var node=xmlDoc.lastChild;
\r
86 var aData=new Array();
\r
89 var oC=node.firstChild;
\r
93 if(oC.nodeName=="key")
\r
95 var sName=oC.getAttribute("name");
\r
96 if(sName&&sName.length>0)
\r
98 var sTarget=oC.getAttribute("target");
\r
99 var item=new Object();
\r
103 item.sTarget=sTarget;
\r
105 aData[aData.length]=item;
\r
106 var nCurIndex=aData.length;
\r
107 processKey(oC,aData,item);
\r
108 nNext=aData.length-nCurIndex;
\r
112 else if(oC.nodeName=="letter")
\r
114 var name=oC.getAttribute("name");
\r
115 if(name&&name.length>0)
\r
117 var item=new Object();
\r
123 aData[aData.length]=item;
\r
126 else if(oC.nodeName=="entry")
\r
128 var name=oC.getAttribute("name");
\r
129 var def=oC.getAttribute("value");
\r
130 if(name&&name.length>0)
\r
132 var item=new Object();
\r
138 aData[aData.length]=item;
\r
148 function processKey(element,aData,item)
\r
153 var oC=element.firstChild;
\r
156 if(oC.nodeName=="topic")
\r
158 var name=oC.getAttribute("name");
\r
159 var url=oC.getAttribute("url");
\r
160 if(url&&url.length!=0)
\r
162 if(!name||name.length==0)
\r
164 var topic=new Object();
\r
168 item.aTopics=new Array();
\r
169 item.aTopics[item.aTopics.length]=topic;
\r
172 else if(oC.nodeName=="key")
\r
175 var name=oC.getAttribute("name");
\r
176 if(name&&name.length!=0)
\r
178 var subItem=new Object();
\r
179 subItem.sName=name;
\r
181 subItem.nPKOff=nPrev;
\r
182 aData[aData.length]=subItem;
\r
183 var nCurIndex=aData.length;
\r
184 processKey(oC,aData,subItem);
\r
185 nNext=aData.length-nCurIndex;
\r
186 subItem.nNKOff=nNext;
\r
193 function putData(aData)
\r
196 var oCData=goCData;
\r
201 setTimeout("checkReady();",1);
\r
204 gsSKA=getKByIdx(oCData,gnNKI);
\r
209 setTimeout("checkReady();",1);
\r
213 setTimeout("checkAgain();",50);
\r
225 function endLoading()
\r
227 var oDiv=getElement(gsLoadingDivID);
\r
229 oDiv.style.visibility="hidden";
\r
232 function markBegin()
\r
237 function beginLoading()
\r
239 var oDiv=getElement(gsLoadingDivID);
\r
242 oDiv.style.top=document.body.scrollTop;
\r
243 oDiv.style.visibility="visible";
\r
247 function indexHTMLPart()
\r
255 this.addHTML=function(sHTML,nConsumed,bDown,bK,sK){
\r
259 this.sHTML=sHTML+this.sHTML;
\r
261 this.nConsumed+=nConsumed;
\r
274 this.appendHTML=function(oHTML,bDown){
\r
275 this.addSubHTML(oHTML,bDown);
\r
277 this.sFK=oHTML.sFK;
\r
279 this.sLK=oHTML.sLK;
\r
281 this.sLK=oHTML.sLK;
\r
283 this.sFK=oHTML.sFK;
\r
286 this.addSubHTML=function(oHTML,bDown){
\r
288 this.sHTML+=oHTML.sHTML;
\r
290 this.sHTML=oHTML.sHTML+this.sHTML;
\r
291 this.nCurrent+=oHTML.nCurrent;
\r
292 this.nConsumed+=oHTML.nConsumed;
\r
296 function getMaxUnits()
\r
298 return Math.floor(gnMaxMargin/gnUHeight)+1;
\r
301 function getFakeItemsHTMLbyCount(nB,nCount)
\r
303 var nMU=getMaxUnits();
\r
304 var nNum=Math.floor(nCount/nMU);
\r
306 for(var i=0;i<nNum;i++)
\r
307 sHTML+=getFakeItemHTML(nB,nMU-1);
\r
309 var nRest=nCount%nMU;
\r
310 sHTML+=getFakeItemHTML(nB,nRest-1);
\r
314 function getFakeItemHTML(nB,nNum)
\r
316 return "<h6 name=fk"+nB+" id=fk"+nB+" style=\"margin-top:"+gnUHeight*nNum+";margin-bottom:0\"> </h6>";
\r
319 function fakeItemsArea(nB,n,sKA,sKB,obj)
\r
326 this.nMargin=(n-1)*gnUHeight;
\r
328 this.setNum=function(n)
\r
331 var nDelta=this.nMargin;
\r
332 this.nMargin=(n-1)*gnUHeight;
\r
333 nDelta=nDelta-this.nMargin;
\r
337 var nMU=getMaxUnits();
\r
338 nLastobj=Math.floor((n-1)/nMU);
\r
339 if(this.obj.length)
\r
340 this.obj[nLastobj].style.marginTop=((n-1)%nMU)*gnUHeight;
\r
342 this.obj.style.marginTop=((n-1)%nMU)*gnUHeight;
\r
344 if(this.obj.length)
\r
346 for(var i=this.obj.length-1;i>nLastobj;i--)
\r
347 removeThis(this.obj[i]);
\r
352 removeThis(this.obj);
\r
356 this.insertAdjacentHTML=function(sWhere,sHTML)
\r
358 if(sWhere=="beforeBegin")
\r
360 if(this.obj.length)
\r
361 this.obj[0].insertAdjacentHTML(sWhere,sHTML);
\r
363 this.obj.insertAdjacentHTML(sWhere,sHTML);
\r
365 else if(sWhere=="afterEnd")
\r
367 if(this.obj.length)
\r
369 if(gbMac&&gbIE5&&this.obj[this.obj.length-1].nextSibling)
\r
370 this.obj[this.obj.length-1].nextSibling.insertAdjacentHTML("beforeBegin",sHTML);
\r
372 this.obj[this.obj.length-1].insertAdjacentHTML(sWhere,sHTML);
\r
376 if(gbMac&&gbIE5&&this.obj.nextSibling)
\r
377 this.obj.nextSibling.insertAdjacentHTML("beforeBegin",sHTML);
\r
379 this.obj.insertAdjacentHTML(sWhere,sHTML);
\r
383 this.getBtm=function()
\r
385 if(this.obj.length)
\r
386 return this.obj[this.obj.length-1].offsetTop;
\r
388 return this.obj.offsetTop;
\r
390 this.getTop=function()
\r
392 return this.getBtm()-this.nMargin;
\r
396 function usedItems(nB,nE)
\r
403 function checkReady()
\r
405 var len=gaChunks.length;
\r
406 var bNeedLoad=false;
\r
409 var bDown=(gsSKB==null);
\r
410 var sK=bDown?gsSKA:gsSKB;
\r
414 setTimeout("checkAgain();",50);
\r
417 if(!gsChK||sK!=gsChK||gnNum==0)
\r
421 aDataCon=new Array();
\r
425 aDataCon=gaDataCon;
\r
427 for(var i=gnCheck;i<len;i++)
\r
429 var oCData=getChunkedData(i,bDown,sK);
\r
432 if(!oCData.aKs&&oCData.sFileName!=null)
\r
438 gaDataCon=aDataCon;
\r
442 loadData2(gaData[i].sPPath+gaData[i].sDPath+oCData.sFileName);
\r
446 aDataCon[s++]=oCData;
\r
453 gsSKA=gsSKB=gsShowK=null;
\r
455 var oHTML=new indexHTMLPart();
\r
456 var aPos=new Array();
\r
457 var aOriPos=new Array();
\r
458 var aMaxPos=new Array();
\r
459 var aMinPos=new Array();
\r
461 if(gbNeedCalc||gbFindCK) gnIns=0;
\r
462 for(i=0;i<aDataCon.length;i++)
\r
464 aPos[i]=getIdxPos(aDataCon[i],bDown,sK);
\r
465 if(gbNeedCalc||gbFindCK)
\r
467 gnIns+=aPos[i]+aDataCon[i].nTotal-aDataCon[i].nNum;
\r
472 if(aDataCon[i].aKs)
\r
473 gnIns+=aDataCon[i].aKs[aPos[i]].nNKOff;
\r
477 while(n<aDataCon[i].aKsOnly.length&&!aDataCon[i].aKsOnly[n])
\r
485 aOriPos[i]=aPos[i];
\r
486 getLimit(aDataCon,aPos,aMaxPos,aMinPos,i);
\r
488 if((gbNeedCalc||gbFindCK)&&!bDown&&gnIns!=-1)
\r
490 gnIns+=(aDataCon.length-1)
\r
492 if(gnIns!=-1||gbFindCK)
\r
494 oHTML.nNeeded=gnNeeded;
\r
495 var bDone=writeItems(oHTML,aDataCon,aPos,aMinPos,aMaxPos,bDown,1);
\r
496 if(oHTML.nConsumed!=0)
\r
500 nB=gnIns-oHTML.nConsumed+1;
\r
504 var oldScrollPos=document.body.scrollTop;
\r
505 if(insertIdxKs(nB,oHTML,gbScrl))
\r
507 updateUsedK(aDataCon,aOriPos,aPos,bDown);
\r
510 while(document.body.scrollTop!=oldScrollPos)
\r
511 document.body.scrollTop=oldScrollPos;
\r
521 setTimeout("checkReady();",50);
\r
529 gsSKB=getFirstKeyFromPos(aDataCon,aPos);
\r
531 setTimeout("checkReady();",50);
\r
534 if(!findCKInDom()) return;
\r
536 gnNeeded=gnNeeded-oHTML.nCurrent;
\r
539 setTimeout("checkAgain();",50);
\r
544 if(!findCKInDom()) return;
\r
546 setTimeout("checkAgain();",50);
\r
551 function getFirstKeyFromPos(aDataCon,aPos)
\r
553 var sCurrentK=getBiggestChar();
\r
554 for(var i=0;i<aPos.length;i++)
\r
556 if(aDataCon[i].aKs&&aDataCon[i].aKs.length>0&&aPos[i]>=0&&aPos[i]<aDataCon[i].aKs.length)
\r
559 compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)>0)
\r
561 sCurrentK=aDataCon[i].aKs[aPos[i]].sName;
\r
568 function checkAgain()
\r
581 getUnitIdx(document.body.scrollTop,document.body.clientHeight);
\r
585 setTimeout("checkAgain()",50);
\r
588 function getLimit(aDataCon,aPos,aMaxPos,aMinPos,i)
\r
590 aMaxPos[i]=aDataCon[i].nNum;
\r
593 if(aDataCon[i].oUsedItems)
\r
595 var oUsedItems=aDataCon[i].oUsedItems;
\r
597 if(oUsedItems.nB>aPos[i])
\r
599 aMaxPos[i]=oUsedItems.nB;
\r
603 oUsedItems=oUsedItems.oN;
\r
604 }while(oUsedItems!=null);
\r
606 aMinPos[i]=oPNode.nE;
\r
608 else if(aDataCon[i].aKs==null)
\r
610 aMaxPos[i]=aMinPos[i]=aPos[i];
\r
612 if(aMinPos[i]>=aPos[i]||aMaxPos[i]<=aPos[i])
\r
614 aMaxPos[i]=aMinPos[i]=aPos[i];
\r
618 function getIdxPos(oIdx,bDown,sK)
\r
628 for(var i=0;i<aKs.length;i++)
\r
632 if(compare(aKs[i].sName,sK)>0)
\r
640 if(compare(aKs[i].sName,sK)<0)
\r
648 else if(oIdx.aKsOnly)
\r
650 var aKsOnly=oIdx.aKsOnly;
\r
651 for(var i=0;i<aKsOnly.length;i++)
\r
657 if(compare(aKsOnly[i],sK)>0)
\r
665 if(compare(aKsOnly[i],sK)<0)
\r
676 function writeItems(oHTML,aDataCon,aPos,aMinPos,aMaxPos,bDown,nLevel)
\r
678 var aOldPos=new Array();
\r
679 for(var i=0;i<aPos.length;i++)
\r
681 aOldPos[i]=aPos[i];
\r
686 var aCurIdxSet=new Array();
\r
688 for(i=0;i<aDataCon.length;i++)
\r
690 if(aDataCon[i].aKs&&aDataCon[i].aKs.length&&aPos[i]!=-1&&
\r
691 (bDown&&aPos[i]<aMaxPos[i])||(!bDown&&aPos[i]>aMinPos[i]))
\r
694 (bDown&&compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)>0)||
\r
695 (!bDown&&compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)<0))
\r
697 sCurrentK=aDataCon[i].aKs[aPos[i]].sName;
\r
701 else if(compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)==0){
\r
705 else if(nLevel==1&&aMaxPos[i]!=aMinPos[i]){
\r
706 if(bDown&&aPos[i]==aMaxPos[i])
\r
708 if(aDataCon[i].aKs)
\r
710 gsSKA=aDataCon[i].aKs[aOldPos[i]].sName;
\r
714 else if(!bDown&&aPos[i]==aMinPos[i])
\r
716 if(aDataCon[i].aKs)
\r
718 gsSKB=aDataCon[i].aKs[aOldPos[i]].sName;
\r
725 for(var s=0;s<p;s++)
\r
727 aOldPos[aCurIdxSet[s]]=aPos[aCurIdxSet[s]];
\r
729 mergeItems(oHTML,bDown,aDataCon,aCurIdxSet,p,aPos,nLevel);
\r
730 adjustPosition(bDown,aDataCon,aCurIdxSet,p,aPos);
\r
732 if(nLevel==1&&oHTML.nNeeded<=oHTML.nCurrent){
\r
740 function updateUsedK(aDataCon,aOriPos,aOldPos,bDown)
\r
742 for(var i=0;i<aDataCon.length;i++)
\r
744 if (aOldPos[i]!=aOriPos[i])
\r
755 if (aOldPos[i]!=-1)
\r
756 nBP=aOldPos[i]+aDataCon[i].aKs[aOldPos[i]].nNKOff+1;
\r
759 nEP=aOriPos[i]+aDataCon[i].aKs[aOriPos[i]].nNKOff;
\r
763 setContentsUsed(aDataCon[i],nBP,nEP);
\r
765 var oFirstPair=aDataCon[i].oUsedItems;
\r
766 if(oFirstPair.oN==null&&oFirstPair.nB==0&&oFirstPair.nE==aDataCon[i].nNum-1)
\r
768 storeKeysOnly(aDataCon[i]);
\r
769 aDataCon[i].oUsedItems=aDataCon[i].aKs=aDataCon[i].sFileName=null;
\r
776 function storeKeysOnly(oCData)
\r
778 oCData.aKsOnly=new Array();
\r
779 for(var i=0;i<oCData.aKs.length;i++)
\r
781 oCData.aKsOnly[i]=oCData.aKs[i].sName;
\r
782 i+=oCData.aKs[i].nNKOff;
\r
786 function setContentsUsed(oIdx,nB,nE)
\r
788 if(!oIdx.oUsedItems)
\r
789 oIdx.oUsedItems=new usedItems(nB,nE);
\r
792 var oUsedItems=oIdx.oUsedItems;
\r
795 if(oUsedItems.nB>nB)
\r
797 if(oUsedItems.nB==nE+1)
\r
802 var oNewNode=new usedItems(oUsedItems.nB,oUsedItems.nE);
\r
803 oNewNode.oN=oUsedItems.oN;
\r
806 oUsedItems.oN=oNewNode;
\r
811 oUsedItems=oUsedItems.oN;
\r
812 }while(oUsedItems);
\r
816 oPNode.oN=new usedItems(nB,nE);
\r
819 if(oPNode.nE==oPNode.oN.nB-1)
\r
821 oPNode.nE=oPNode.oN.nE;
\r
822 oPNode.oN=oPNode.oN.oN;
\r
828 function projInfo(sPPath,sDPath,sFile)
\r
830 this.sPPath=sPPath;
\r
831 this.sDPath=sDPath;
\r
835 function addProjInfo(sPPath,sDPath,sFile)
\r
837 var oIdxInfo=new projInfo(sPPath,sDPath,sFile);
\r
838 gaData[gaData.length]=oIdxInfo;
\r
842 function writeDataIFrame()
\r
844 if(gnLoad<gaData.length)
\r
847 loadData2(gaData[gnLoad].sPPath+gaData[gnLoad].sDPath+gaData[gnLoad].sFile);
\r
855 gnNeeded=gnVisible;
\r
862 function getH6ById(nPos)
\r
865 return document.all("fk"+nPos);
\r
866 else if(document.getElementsByName)
\r
867 return document.getElementsByName("fk"+nPos);
\r
871 function showItemsInEvaluation(nBP)
\r
874 var fPer=nBP/gnItems;
\r
875 var nB=Math.floor(fPer*gnMaxItems);
\r
876 var oCData=getChunkByIdx(gnRef,nB);
\r
879 if(!oCData.aKs&&oCData.sFileName!=null)
\r
883 oCData.nProjId=gnRef;
\r
886 loadData2(gaData[gnRef].sPPath+gaData[gnRef].sDPath+oCData.sFileName);
\r
889 gsSKA=getKByIdx(oCData,nB);
\r
912 function isUsed(oCData,nPos)
\r
914 var oUsed=oCData.oUsedItems;
\r
915 while(oUsed&&oUsed.nB<=nPos)
\r
917 if(oUsed.nE>=nPos) return true;
\r
923 function getKByIdx(oCData,nB)
\r
925 var nRelPos=nB-(oCData.nTotal-oCData.nNum);
\r
926 var aIKs=oCData.aKs;
\r
927 if(nRelPos>=0&&aIKs&&nRelPos<aIKs.length)
\r
931 oK=aIKs[nRelPos++];
\r
933 while((oK.nType==3||isUsed(oCData,nRelPos-1))&&nRelPos<aIKs.length);
\r
939 nRelPos=nB-(oCData.nTotal-oCData.nNum)-1;
\r
943 oK=aIKs[nRelPos--];
\r
945 while((oK.nType==3||isUsed(oCData,nRelPos+1))&&nRelPos>=0);
\r
956 function loadData2(sFileName)
\r
960 loadDataXML(sFileName);
\r
962 loadData(sFileName);
\r
966 function projReady(aChunk)
\r
968 gaChunks[gnLoad++]=aChunk;
\r
969 var len=aChunk.length;
\r
972 nTotal=aChunk[len-1].nTotal;
\r
974 if(nTotal>gnMaxItems)
\r
979 setTimeout("writeDataIFrame();",1);
\r
982 function writeFakeItems()
\r
986 var sHTML=getFakeItemsHTMLbyCount(0,gnItems);
\r
987 document.body.insertAdjacentHTML("beforeEnd",sHTML);
\r
988 var obj=getH6ById(0);
\r
989 if (document.body != null)
\r
991 gnVisible=Math.ceil(document.body.clientHeight/gnUHeight);
\r
993 gaFakes[0]=new fakeItemsArea(0,gnItems,"",getEndString(),obj);
\r
997 function getEndString()
\r
999 var sBC=getBiggestChar();
\r
1000 return sBC+sBC+sBC+sBC+sBC+sBC+sBC+sBC;
\r
1003 function getUnitIdx(nScrl,nHeight)
\r
1005 if(gaFakes.length==0)
\r
1011 var nE=gaFakes.length-1;
\r
1018 nBtm=gaFakes[nM].getBtm();
\r
1019 nTop=gaFakes[nM].getTop();
\r
1021 if(nTop>=nScrl+nHeight)
\r
1023 else if(nBtm<nScrl)
\r
1033 gsSKA=gaFakes[nM].sKA;
\r
1035 gnNeeded=Math.ceil((nHeight-nTop+nScrl)/gnUHeight);
\r
1036 gnIns=gaFakes[nM].nB;
\r
1039 else if(nBtm<=nScrl+nHeight){
\r
1040 gsSKB=gaFakes[nM].sKB;
\r
1042 gnNeeded=Math.ceil((nBtm-nScrl+gnScrlMgn)/gnUHeight);
\r
1047 gnNeeded=gnVisible;
\r
1048 var nUnitIdx=gaFakes[nM].nB+Math.floor((nScrl-nTop)/gnUHeight);
\r
1049 if (!showItemsInEvaluation(nUnitIdx))
\r
1051 gsSKA=gaFakes[nM].sKA;
\r
1053 gnNeeded=Math.ceil(nHeight/gnUHeight);
\r
1054 gnIns=gaFakes[nM].nB;
\r
1065 window.onscroll=null;
\r
1066 window.onresize=null;
\r
1071 window.onscroll=window_OnScroll;
\r
1072 window.onresize=window_OnResize;
\r
1075 function insertIdxKs(nIns,oHTML,bScrl)
\r
1079 var nCount=oHTML.nConsumed;
\r
1081 var nE=gaFakes.length-1;
\r
1086 if(gaFakes[nM].nB>nIns)
\r
1088 else if(gaFakes[nM].nB+gaFakes[nM].nNum<=nIns)
\r
1097 var oFIA=gaFakes[nM];
\r
1098 var nOffsetTop=oFIA.getTop();
\r
1099 var nOffsetBottom=oFIA.getBtm();
\r
1101 var nHDiff=nIns-oFIA.nB;
\r
1102 var nTDiff=oFIA.nNum+oFIA.nB-(nIns+nCount);
\r
1105 nDelta=oFIA.setNum(nHDiff);
\r
1106 var sOldKBefore=oFIA.sKB;
\r
1107 oFIA.sKB=oHTML.sFK;
\r
1110 var sHTML=getFakeItemsHTMLbyCount(nIns,nTDiff);
\r
1111 oFIA.insertAdjacentHTML("afterEnd",sHTML);
\r
1112 var obj=getH6ById(nIns);
\r
1113 insertItemIntoArray(gaFakes,nM+1,new fakeItemsArea(nIns+nCount,nTDiff,oHTML.sLK,sOldKBefore,obj));
\r
1115 oFIA.insertAdjacentHTML("afterEnd",oHTML.sHTML);
\r
1120 var nScrollPos=nOffsetBottom-nDelta;
\r
1121 while(document.body.scrollTop!=nScrollPos)
\r
1122 document.body.scrollTop=nScrollPos;
\r
1125 window.scrollTo(0,nOffsetBottom-nDelta);
\r
1129 oFIA.insertAdjacentHTML("beforeBegin",oHTML.sHTML);
\r
1133 var nScrollPos=nOffsetTop;
\r
1134 while(document.body.scrollTop!=nScrollPos)
\r
1135 document.body.scrollTop=nScrollPos;
\r
1138 window.scrollTo(0,nOffsetTop);
\r
1143 oFIA.nB=nIns+nCount;
\r
1144 nDelta=oFIA.setNum(nTDiff);
\r
1145 oFIA.sKA=oHTML.sLK;
\r
1148 gaFakes[nM].setNum(0);
\r
1149 removeItemFromArray(gaFakes,nM);
\r
1159 function window_OnScroll()
\r
1162 setTimeout("procScroll();",50);
\r
1165 function procScroll()
\r
1167 if(gnSE==1&&!gbProcess)
\r
1170 getUnitIdx(document.body.scrollTop,document.body.clientHeight);
\r
1175 function window_OnResize()
\r
1178 setTimeout("procResize();",50);
\r
1181 function procResize()
\r
1183 if(gnRE==1&&!gbProcess)
\r
1186 gnVisible=Math.ceil(document.body.clientHeight/gnUHeight);
\r
1188 getUnitIdx(document.body.scrollTop,document.body.clientHeight);
\r
1193 function getChunkByIdx(nIdx,nPosition)
\r
1196 if(nIdx<gaChunks.length)
\r
1198 var len=gaChunks[nIdx].length;
\r
1205 var nM=(nB+nE)>>1;
\r
1206 if(nPosition<gaChunks[nIdx][nM].nTotal)
\r
1215 oCData=gaChunks[nIdx][nE];
\r
1216 else if(nPosition<gaChunks[nIdx][nB].nTotal)
\r
1217 oCData=gaChunks[nIdx][nB];
\r
1223 function getChunkedData(nIdx,bDown,sK)
\r
1227 if(nIdx<gaChunks.length)
\r
1229 var len=gaChunks[nIdx].length;
\r
1236 var nM=(nB+nE+(bDown?0:1))>>1;
\r
1239 if(compare(sK,gaChunks[nIdx][nM].sEK)<0)
\r
1249 if(compare(sK,gaChunks[nIdx][nM].sBK)>0)
\r
1269 if(gaChunks[nIdx].length>nB&&compare(sK,gaChunks[nIdx][nB].sEK)<0)
\r
1272 nCandId=gaChunks[nIdx].length-1;
\r
1276 if(0<=nE&&compare(sK,gaChunks[nIdx][nE].sBK)>0)
\r
1282 return gaChunks[nIdx][nCandId];
\r
1300 function writeLoadingDiv(nIIdx)
\r
1302 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