📄 whhost.js
字号:
// 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\"> </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(gbSafari3)
{
if(this.obj.length)
return findPosition(this.obj[this.obj.length-1]);
else
return findPosition(this.obj);
}
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,getClientHeight());
}
}
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)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -