⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 whhost.js

📁 阅读您的文件包然后写出其具体功能(至少要20个字)。尽量不要让站长把时间都花费在为您修正说明上。压缩包解压时不能有密码
💻 JS
📖 第 1 页 / 共 2 页
字号:
						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;
	if(gbSafari3 && !gbMac)
	    gnUHeight=1;
	var sHTML=getFakeItemsHTMLbyCount(0,gnItems);
	document.body.insertAdjacentHTML("beforeEnd",sHTML);
	var obj=getH6ById(0);
	if (document.body != null)
	{
		gnVisible=Math.ceil(getClientHeight()/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,getClientHeight());
	}
	gnSE--;
}

function window_OnResize()
{
	gnRE++;
	setTimeout("procResize();",50);
}

function procResize()
{
	if(gnRE==1&&!gbProcess)
	{
		markBegin();
		gnVisible=Math.ceil(getClientHeight()/gnUHeight);
		if(gnIns==-1)
			getUnitIdx(document.body.scrollTop,getClientHeight());
	}
	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>";
}

function findPosition( oElement ) {
  if( typeof( oElement.offsetParent ) != 'undefined' ) 
  {
    for( var posY = 0; oElement; oElement = oElement.offsetParent ) 
    {
      posY += oElement.offsetTop;
    }
    return posY ;
  } 
  else 
  {
    return oElement.y ;
  }
}

var gbWhHost=true;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -