1 var gaChunks=new Array();
\r
2 var gaFakes=new Array();
\r
4 var gaData=new Array();
\r
7 var gbNeedCalc=false;
\r
18 var gnMaxMargin=32000;
\r
31 var gsLoadingDivID="LoadingDiv";
\r
32 var gsLoadingMsg="Loading data, please wait...";
\r
36 var gbLoadInfo=false;
\r
38 function putDataXML(xmlDoc,sDocPath)
\r
42 var node=xmlDoc.lastChild;
\r
46 var aChunk=new Array();
\r
47 var oC=node.firstChild;
\r
50 if(oC.nodeName=="chunkinfo")
\r
52 var item=new Object();
\r
53 item.sBK=oC.getAttribute("first");
\r
54 item.sEK=oC.getAttribute("last");
\r
55 item.sFileName=oC.getAttribute("url");
\r
56 item.nNum=parseInt(oC.getAttribute("num"));
\r
59 aChunk[aChunk.length]=item;
\r
68 var node=xmlDoc.lastChild;
\r
71 var aData=new Array();
\r
74 var oC=node.firstChild;
\r
78 if(oC.nodeName=="key")
\r
80 var sName=oC.getAttribute("name");
\r
81 if(sName&&sName.length>0)
\r
83 var sTarget=oC.getAttribute("target");
\r
84 var item=new Object();
\r
88 item.sTarget=sTarget;
\r
90 aData[aData.length]=item;
\r
91 var nCurIndex=aData.length;
\r
92 processKey(oC,aData,item);
\r
93 nNext=aData.length-nCurIndex;
\r
97 else if(oC.nodeName=="letter")
\r
99 var name=oC.getAttribute("name");
\r
100 if(name&&name.length>0)
\r
102 var item=new Object();
\r
108 aData[aData.length]=item;
\r
111 else if(oC.nodeName=="entry")
\r
113 var name=oC.getAttribute("name");
\r
114 var def=oC.getAttribute("value");
\r
115 if(name&&name.length>0)
\r
117 var item=new Object();
\r
123 aData[aData.length]=item;
\r
133 function processKey(element,aData,item)
\r
138 var oC=element.firstChild;
\r
141 if(oC.nodeName=="topic")
\r
143 var name=oC.getAttribute("name");
\r
144 var url=oC.getAttribute("url");
\r
145 if(url&&url.length!=0)
\r
147 if(!name||name.length==0)
\r
149 var topic=new Object();
\r
153 item.aTopics=new Array();
\r
154 item.aTopics[item.aTopics.length]=topic;
\r
157 else if(oC.nodeName=="key")
\r
160 var name=oC.getAttribute("name");
\r
161 if(name&&name.length!=0)
\r
163 var subItem=new Object();
\r
164 subItem.sName=name;
\r
166 subItem.nPKOff=nPrev;
\r
167 aData[aData.length]=subItem;
\r
168 var nCurIndex=aData.length;
\r
169 processKey(oC,aData,subItem);
\r
170 nNext=aData.length-nCurIndex;
\r
171 subItem.nNKOff=nNext;
\r
178 function putData(aData)
\r
181 var oCData=goCData;
\r
186 setTimeout("checkReady();",1);
\r
189 gsSKA=getKByIdx(oCData,gnNKI);
\r
194 setTimeout("checkReady();",1);
\r
198 setTimeout("checkAgain();",50);
\r
210 function endLoading()
\r
212 var oDiv=getElement(gsLoadingDivID);
\r
214 oDiv.style.visibility="hidden";
\r
217 function markBegin()
\r
222 function beginLoading()
\r
224 var oDiv=getElement(gsLoadingDivID);
\r
227 oDiv.style.top=document.body.scrollTop;
\r
228 oDiv.style.visibility="visible";
\r
232 function indexHTMLPart()
\r
240 this.addHTML=function(sHTML,nConsumed,bDown,bK,sK){
\r
244 this.sHTML=sHTML+this.sHTML;
\r
246 this.nConsumed+=nConsumed;
\r
259 this.appendHTML=function(oHTML,bDown){
\r
260 this.addSubHTML(oHTML,bDown);
\r
262 this.sFK=oHTML.sFK;
\r
264 this.sLK=oHTML.sLK;
\r
266 this.sLK=oHTML.sLK;
\r
268 this.sFK=oHTML.sFK;
\r
271 this.addSubHTML=function(oHTML,bDown){
\r
273 this.sHTML+=oHTML.sHTML;
\r
275 this.sHTML=oHTML.sHTML+this.sHTML;
\r
276 this.nCurrent+=oHTML.nCurrent;
\r
277 this.nConsumed+=oHTML.nConsumed;
\r
281 function getMaxUnits()
\r
283 return Math.floor(gnMaxMargin/gnUHeight)+1;
\r
286 function getFakeItemsHTMLbyCount(nB,nCount)
\r
288 var nMU=getMaxUnits();
\r
289 var nNum=Math.floor(nCount/nMU);
\r
291 for(var i=0;i<nNum;i++)
\r
292 sHTML+=getFakeItemHTML(nB,nMU-1);
\r
294 var nRest=nCount%nMU;
\r
295 sHTML+=getFakeItemHTML(nB,nRest-1);
\r
299 function getFakeItemHTML(nB,nNum)
\r
301 return "<h6 name=fk"+nB+" id=fk"+nB+" style=\"margin-top:"+gnUHeight*nNum+";margin-bottom:0\"> </h6>";
\r
304 function fakeItemsArea(nB,n,sKA,sKB,obj)
\r
311 this.nMargin=(n-1)*gnUHeight;
\r
313 this.setNum=function(n)
\r
316 var nDelta=this.nMargin;
\r
317 this.nMargin=(n-1)*gnUHeight;
\r
318 nDelta=nDelta-this.nMargin;
\r
322 var nMU=getMaxUnits();
\r
323 nLastobj=Math.floor((n-1)/nMU);
\r
324 if(this.obj.length)
\r
325 this.obj[nLastobj].style.marginTop=((n-1)%nMU)*gnUHeight;
\r
327 this.obj.style.marginTop=((n-1)%nMU)*gnUHeight;
\r
329 if(this.obj.length)
\r
331 for(var i=this.obj.length-1;i>nLastobj;i--)
\r
332 removeThis(this.obj[i]);
\r
337 removeThis(this.obj);
\r
341 this.insertAdjacentHTML=function(sWhere,sHTML)
\r
343 if(sWhere=="beforeBegin")
\r
345 if(this.obj.length)
\r
346 this.obj[0].insertAdjacentHTML(sWhere,sHTML);
\r
348 this.obj.insertAdjacentHTML(sWhere,sHTML);
\r
350 else if(sWhere=="afterEnd")
\r
352 if(this.obj.length)
\r
354 if(gbMac&&gbIE5&&this.obj[this.obj.length-1].nextSibling)
\r
355 this.obj[this.obj.length-1].nextSibling.insertAdjacentHTML("beforeBegin",sHTML);
\r
357 this.obj[this.obj.length-1].insertAdjacentHTML(sWhere,sHTML);
\r
361 if(gbMac&&gbIE5&&this.obj.nextSibling)
\r
362 this.obj.nextSibling.insertAdjacentHTML("beforeBegin",sHTML);
\r
364 this.obj.insertAdjacentHTML(sWhere,sHTML);
\r
368 this.getBtm=function()
\r
370 if(this.obj.length)
\r
371 return this.obj[this.obj.length-1].offsetTop;
\r
373 return this.obj.offsetTop;
\r
375 this.getTop=function()
\r
377 return this.getBtm()-this.nMargin;
\r
381 function usedItems(nB,nE)
\r
388 function checkReady()
\r
390 var len=gaChunks.length;
\r
391 var bNeedLoad=false;
\r
394 var bDown=(gsSKB==null);
\r
395 var sK=bDown?gsSKA:gsSKB;
\r
399 setTimeout("checkAgain();",50);
\r
402 if(!gsChK||sK!=gsChK||gnNum==0)
\r
406 aDataCon=new Array();
\r
410 aDataCon=gaDataCon;
\r
412 for(var i=gnCheck;i<len;i++)
\r
414 var oCData=getChunkedData(i,bDown,sK);
\r
417 if(!oCData.aKs&&oCData.sFileName!=null)
\r
423 gaDataCon=aDataCon;
\r
427 loadData2(gaData[i].sPPath+gaData[i].sDPath+oCData.sFileName);
\r
431 aDataCon[s++]=oCData;
\r
438 gsSKA=gsSKB=gsShowK=null;
\r
440 var oHTML=new indexHTMLPart();
\r
441 var aPos=new Array();
\r
442 var aOriPos=new Array();
\r
443 var aMaxPos=new Array();
\r
444 var aMinPos=new Array();
\r
446 if(gbNeedCalc||gbFindCK) gnIns=0;
\r
447 for(i=0;i<aDataCon.length;i++)
\r
449 aPos[i]=getIdxPos(aDataCon[i],bDown,sK);
\r
450 if(gbNeedCalc||gbFindCK)
\r
452 gnIns+=aPos[i]+aDataCon[i].nTotal-aDataCon[i].nNum;
\r
457 if(aDataCon[i].aKs)
\r
458 gnIns+=aDataCon[i].aKs[aPos[i]].nNKOff;
\r
462 while(n<aDataCon[i].aKsOnly.length&&!aDataCon[i].aKsOnly[n])
\r
470 aOriPos[i]=aPos[i];
\r
471 getLimit(aDataCon,aPos,aMaxPos,aMinPos,i);
\r
473 if((gbNeedCalc||gbFindCK)&&!bDown&&gnIns!=-1)
\r
475 gnIns+=(aDataCon.length-1)
\r
477 if(gnIns!=-1||gbFindCK)
\r
479 oHTML.nNeeded=gnNeeded;
\r
480 var bDone=writeItems(oHTML,aDataCon,aPos,aMinPos,aMaxPos,bDown,1);
\r
481 if(oHTML.nConsumed!=0)
\r
485 nB=gnIns-oHTML.nConsumed+1;
\r
489 var oldScrollPos=document.body.scrollTop;
\r
490 if(insertIdxKs(nB,oHTML,gbScrl))
\r
492 updateUsedK(aDataCon,aOriPos,aPos,bDown);
\r
495 while(document.body.scrollTop!=oldScrollPos)
\r
496 document.body.scrollTop=oldScrollPos;
\r
506 setTimeout("checkReady();",50);
\r
514 gsSKB=getFirstKeyFromPos(aDataCon,aPos);
\r
516 setTimeout("checkReady();",50);
\r
519 if(!findCKInDom()) return;
\r
521 gnNeeded=gnNeeded-oHTML.nCurrent;
\r
524 setTimeout("checkAgain();",50);
\r
529 if(!findCKInDom()) return;
\r
531 setTimeout("checkAgain();",50);
\r
536 function getFirstKeyFromPos(aDataCon,aPos)
\r
538 var sCurrentK=getBiggestChar();
\r
539 for(var i=0;i<aPos.length;i++)
\r
541 if(aDataCon[i].aKs&&aDataCon[i].aKs.length>0&&aPos[i]>=0&&aPos[i]<aDataCon[i].aKs.length)
\r
544 compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)>0)
\r
546 sCurrentK=aDataCon[i].aKs[aPos[i]].sName;
\r
553 function checkAgain()
\r
566 getUnitIdx(document.body.scrollTop,document.body.clientHeight);
\r
570 setTimeout("checkAgain()",50);
\r
573 function getLimit(aDataCon,aPos,aMaxPos,aMinPos,i)
\r
575 aMaxPos[i]=aDataCon[i].nNum;
\r
578 if(aDataCon[i].oUsedItems)
\r
580 var oUsedItems=aDataCon[i].oUsedItems;
\r
582 if(oUsedItems.nB>aPos[i])
\r
584 aMaxPos[i]=oUsedItems.nB;
\r
588 oUsedItems=oUsedItems.oN;
\r
589 }while(oUsedItems!=null);
\r
591 aMinPos[i]=oPNode.nE;
\r
593 else if(aDataCon[i].aKs==null)
\r
595 aMaxPos[i]=aMinPos[i]=aPos[i];
\r
597 if(aMinPos[i]>=aPos[i]||aMaxPos[i]<=aPos[i])
\r
599 aMaxPos[i]=aMinPos[i]=aPos[i];
\r
603 function getIdxPos(oIdx,bDown,sK)
\r
613 for(var i=0;i<aKs.length;i++)
\r
617 if(compare(aKs[i].sName,sK)>0)
\r
625 if(compare(aKs[i].sName,sK)<0)
\r
633 else if(oIdx.aKsOnly)
\r
635 var aKsOnly=oIdx.aKsOnly;
\r
636 for(var i=0;i<aKsOnly.length;i++)
\r
642 if(compare(aKsOnly[i],sK)>0)
\r
650 if(compare(aKsOnly[i],sK)<0)
\r
661 function writeItems(oHTML,aDataCon,aPos,aMinPos,aMaxPos,bDown,nLevel)
\r
663 var aOldPos=new Array();
\r
664 for(var i=0;i<aPos.length;i++)
\r
666 aOldPos[i]=aPos[i];
\r
671 var aCurIdxSet=new Array();
\r
673 for(i=0;i<aDataCon.length;i++)
\r
675 if(aDataCon[i].aKs&&aDataCon[i].aKs.length&&aPos[i]!=-1&&
\r
676 (bDown&&aPos[i]<aMaxPos[i])||(!bDown&&aPos[i]>aMinPos[i]))
\r
679 (bDown&&compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)>0)||
\r
680 (!bDown&&compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)<0))
\r
682 sCurrentK=aDataCon[i].aKs[aPos[i]].sName;
\r
686 else if(sCurrentK==aDataCon[i].aKs[aPos[i]].sName){
\r
690 else if(nLevel==1&&aMaxPos[i]!=aMinPos[i]){
\r
691 if(bDown&&aPos[i]==aMaxPos[i])
\r
693 if(aDataCon[i].aKs)
\r
695 gsSKA=aDataCon[i].aKs[aOldPos[i]].sName;
\r
699 else if(!bDown&&aPos[i]==aMinPos[i])
\r
701 if(aDataCon[i].aKs)
\r
703 gsSKB=aDataCon[i].aKs[aOldPos[i]].sName;
\r
710 for(var s=0;s<p;s++)
\r
712 aOldPos[aCurIdxSet[s]]=aPos[aCurIdxSet[s]];
\r
714 mergeItems(oHTML,bDown,aDataCon,aCurIdxSet,p,aPos,nLevel);
\r
715 adjustPosition(bDown,aDataCon,aCurIdxSet,p,aPos);
\r
717 if(nLevel==1&&oHTML.nNeeded<=oHTML.nCurrent){
\r
725 function updateUsedK(aDataCon,aOriPos,aOldPos,bDown)
\r
727 for(var i=0;i<aDataCon.length;i++)
\r
729 if (aOldPos[i]!=aOriPos[i])
\r
740 if (aOldPos[i]!=-1)
\r
741 nBP=aOldPos[i]+aDataCon[i].aKs[aOldPos[i]].nNKOff+1;
\r
744 nEP=aOriPos[i]+aDataCon[i].aKs[aOriPos[i]].nNKOff;
\r
748 setContentsUsed(aDataCon[i],nBP,nEP);
\r
750 var oFirstPair=aDataCon[i].oUsedItems;
\r
751 if(oFirstPair.oN==null&&oFirstPair.nB==0&&oFirstPair.nE==aDataCon[i].nNum-1)
\r
753 storeKeysOnly(aDataCon[i]);
\r
754 aDataCon[i].oUsedItems=aDataCon[i].aKs=aDataCon[i].sFileName=null;
\r
761 function storeKeysOnly(oCData)
\r
763 oCData.aKsOnly=new Array();
\r
764 for(var i=0;i<oCData.aKs.length;i++)
\r
766 oCData.aKsOnly[i]=oCData.aKs[i].sName;
\r
767 i+=oCData.aKs[i].nNKOff;
\r
771 function setContentsUsed(oIdx,nB,nE)
\r
773 if(!oIdx.oUsedItems)
\r
774 oIdx.oUsedItems=new usedItems(nB,nE);
\r
777 var oUsedItems=oIdx.oUsedItems;
\r
780 if(oUsedItems.nB>nB)
\r
782 if(oUsedItems.nB==nE+1)
\r
787 var oNewNode=new usedItems(oUsedItems.nB,oUsedItems.nE);
\r
788 oNewNode.oN=oUsedItems.oN;
\r
791 oUsedItems.oN=oNewNode;
\r
796 oUsedItems=oUsedItems.oN;
\r
797 }while(oUsedItems);
\r
801 oPNode.oN=new usedItems(nB,nE);
\r
804 if(oPNode.nE==oPNode.oN.nB-1)
\r
806 oPNode.nE=oPNode.oN.nE;
\r
807 oPNode.oN=oPNode.oN.oN;
\r
813 function projInfo(sPPath,sDPath,sFile)
\r
815 this.sPPath=sPPath;
\r
816 this.sDPath=sDPath;
\r
820 function addProjInfo(sPPath,sDPath,sFile)
\r
822 var oIdxInfo=new projInfo(sPPath,sDPath,sFile);
\r
823 gaData[gaData.length]=oIdxInfo;
\r
827 function writeDataIFrame()
\r
829 if(gnLoad<gaData.length)
\r
832 loadData2(gaData[gnLoad].sPPath+gaData[gnLoad].sDPath+gaData[gnLoad].sFile);
\r
840 gnNeeded=gnVisible;
\r
847 function getH6ById(nPos)
\r
850 return document.all("fk"+nPos);
\r
851 else if(document.getElementsByName)
\r
852 return document.getElementsByName("fk"+nPos);
\r
856 function showItemsInEvaluation(nBP)
\r
859 var fPer=nBP/gnItems;
\r
860 var nB=Math.floor(fPer*gnMaxItems);
\r
861 var oCData=getChunkByIdx(gnRef,nB);
\r
864 if(!oCData.aKs&&oCData.sFileName!=null)
\r
868 oCData.nProjId=gnRef;
\r
871 loadData2(gaData[gnRef].sPPath+gaData[gnRef].sDPath+oCData.sFileName);
\r
874 gsSKA=getKByIdx(oCData,nB);
\r
897 function isUsed(oCData,nPos)
\r
899 var oUsed=oCData.oUsedItems;
\r
900 while(oUsed&&oUsed.nB<=nPos)
\r
902 if(oUsed.nE>=nPos) return true;
\r
908 function getKByIdx(oCData,nB)
\r
910 var nRelPos=nB-(oCData.nTotal-oCData.nNum);
\r
911 var aIKs=oCData.aKs;
\r
912 if(nRelPos>=0&&aIKs&&nRelPos<aIKs.length)
\r
916 oK=aIKs[nRelPos++];
\r
918 while((oK.nType==3||isUsed(oCData,nRelPos-1))&&nRelPos<aIKs.length);
\r
924 nRelPos=nB-(oCData.nTotal-oCData.nNum)-1;
\r
928 oK=aIKs[nRelPos--];
\r
930 while((oK.nType==3||isUsed(oCData,nRelPos+1))&&nRelPos>=0);
\r
941 function loadData2(sFileName)
\r
945 loadDataXML(sFileName);
\r
947 loadData(sFileName);
\r
951 function projReady(aChunk)
\r
953 gaChunks[gnLoad++]=aChunk;
\r
954 var len=aChunk.length;
\r
957 nTotal=aChunk[len-1].nTotal;
\r
959 if(nTotal>gnMaxItems)
\r
964 setTimeout("writeDataIFrame();",1);
\r
967 function writeFakeItems()
\r
971 var sHTML=getFakeItemsHTMLbyCount(0,gnItems);
\r
972 document.body.insertAdjacentHTML("beforeEnd",sHTML);
\r
973 var obj=getH6ById(0);
\r
974 if (document.body != null)
\r
976 gnVisible=Math.ceil(document.body.clientHeight/gnUHeight);
\r
978 gaFakes[0]=new fakeItemsArea(0,gnItems,"",getEndString(),obj);
\r
982 function getEndString()
\r
984 var sBC=getBiggestChar();
\r
985 return sBC+sBC+sBC+sBC+sBC+sBC+sBC+sBC;
\r
988 function getUnitIdx(nScrl,nHeight)
\r
990 if(gaFakes.length==0)
\r
996 var nE=gaFakes.length-1;
\r
1003 nBtm=gaFakes[nM].getBtm();
\r
1004 nTop=gaFakes[nM].getTop();
\r
1006 if(nTop>=nScrl+nHeight)
\r
1008 else if(nBtm<nScrl)
\r
1018 gsSKA=gaFakes[nM].sKA;
\r
1020 gnNeeded=Math.ceil((nHeight-nTop+nScrl)/gnUHeight);
\r
1021 gnIns=gaFakes[nM].nB;
\r
1024 else if(nBtm<=nScrl+nHeight){
\r
1025 gsSKB=gaFakes[nM].sKB;
\r
1027 gnNeeded=Math.ceil((nBtm-nScrl+gnScrlMgn)/gnUHeight);
\r
1032 gnNeeded=gnVisible;
\r
1033 var nUnitIdx=gaFakes[nM].nB+Math.floor((nScrl-nTop)/gnUHeight);
\r
1034 if (!showItemsInEvaluation(nUnitIdx))
\r
1036 gsSKA=gaFakes[nM].sKA;
\r
1038 gnNeeded=Math.ceil(nHeight/gnUHeight);
\r
1039 gnIns=gaFakes[nM].nB;
\r
1050 window.onscroll=null;
\r
1051 window.onresize=null;
\r
1056 window.onscroll=window_OnScroll;
\r
1057 window.onresize=window_OnResize;
\r
1060 function insertIdxKs(nIns,oHTML,bScrl)
\r
1064 var nCount=oHTML.nConsumed;
\r
1066 var nE=gaFakes.length-1;
\r
1071 if(gaFakes[nM].nB>nIns)
\r
1073 else if(gaFakes[nM].nB+gaFakes[nM].nNum<=nIns)
\r
1082 var oFIA=gaFakes[nM];
\r
1083 var nOffsetTop=oFIA.getTop();
\r
1084 var nOffsetBottom=oFIA.getBtm();
\r
1086 var nHDiff=nIns-oFIA.nB;
\r
1087 var nTDiff=oFIA.nNum+oFIA.nB-(nIns+nCount);
\r
1090 nDelta=oFIA.setNum(nHDiff);
\r
1091 var sOldKBefore=oFIA.sKB;
\r
1092 oFIA.sKB=oHTML.sFK;
\r
1095 var sHTML=getFakeItemsHTMLbyCount(nIns,nTDiff);
\r
1096 oFIA.insertAdjacentHTML("afterEnd",sHTML);
\r
1097 var obj=getH6ById(nIns);
\r
1098 insertItemIntoArray(gaFakes,nM+1,new fakeItemsArea(nIns+nCount,nTDiff,oHTML.sLK,sOldKBefore,obj));
\r
1100 oFIA.insertAdjacentHTML("afterEnd",oHTML.sHTML);
\r
1105 var nScrollPos=nOffsetBottom-nDelta;
\r
1106 while(document.body.scrollTop!=nScrollPos)
\r
1107 document.body.scrollTop=nScrollPos;
\r
1110 window.scrollTo(0,nOffsetBottom-nDelta);
\r
1114 oFIA.insertAdjacentHTML("beforeBegin",oHTML.sHTML);
\r
1118 var nScrollPos=nOffsetTop;
\r
1119 while(document.body.scrollTop!=nScrollPos)
\r
1120 document.body.scrollTop=nScrollPos;
\r
1123 window.scrollTo(0,nOffsetTop);
\r
1128 oFIA.nB=nIns+nCount;
\r
1129 nDelta=oFIA.setNum(nTDiff);
\r
1130 oFIA.sKA=oHTML.sLK;
\r
1133 gaFakes[nM].setNum(0);
\r
1134 removeItemFromArray(gaFakes,nM);
\r
1144 function window_OnScroll()
\r
1147 setTimeout("procScroll();",50);
\r
1150 function procScroll()
\r
1152 if(gnSE==1&&!gbProcess)
\r
1155 getUnitIdx(document.body.scrollTop,document.body.clientHeight);
\r
1160 function window_OnResize()
\r
1163 setTimeout("procResize();",50);
\r
1166 function procResize()
\r
1168 if(gnRE==1&&!gbProcess)
\r
1171 gnVisible=Math.ceil(document.body.clientHeight/gnUHeight);
\r
1173 getUnitIdx(document.body.scrollTop,document.body.clientHeight);
\r
1178 function getChunkByIdx(nIdx,nPosition)
\r
1181 if(nIdx<gaChunks.length)
\r
1183 var len=gaChunks[nIdx].length;
\r
1190 var nM=(nB+nE)>>1;
\r
1191 if(nPosition<gaChunks[nIdx][nM].nTotal)
\r
1200 oCData=gaChunks[nIdx][nE];
\r
1201 else if(nPosition<gaChunks[nIdx][nB].nTotal)
\r
1202 oCData=gaChunks[nIdx][nB];
\r
1208 function getChunkedData(nIdx,bDown,sK)
\r
1212 if(nIdx<gaChunks.length)
\r
1214 var len=gaChunks[nIdx].length;
\r
1221 var nM=(nB+nE+(bDown?0:1))>>1;
\r
1224 if(compare(sK,gaChunks[nIdx][nM].sEK)<0)
\r
1234 if(compare(sK,gaChunks[nIdx][nM].sBK)>0)
\r
1254 if(gaChunks[nIdx].length>nB&&compare(sK,gaChunks[nIdx][nB].sEK)<0)
\r
1257 nCandId=gaChunks[nIdx].length-1;
\r
1261 if(0<=nE&&compare(sK,gaChunks[nIdx][nE].sBK)>0)
\r
1267 return gaChunks[nIdx][nCandId];
\r
1285 function writeLoadingDiv(nIIdx)
\r
1287 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