whihost.js
上传用户:aonuowh
上传日期:2021-05-23
资源大小:35390k
文件大小:11k
- var gsDefaultTarget="bsscright";
- var gsBgColor="#ffffff";
- var gsBgImage="";
- var goIdxFont=null;
- var goIdxEmptyFont=null;
- var goIdxHoverFont=null;
- var gsIdxMargin="0pt";
- var gsIdxIndent="8pt";
- var gsIdxActiveBgColor="#cccccc";
- var gsCK = null;
- var gsBCK = null;
- var gbCR = false;
- var gbBCR = false;
- var gbWhIHost=true;
- function myEvent()
- {
- this.pageX = 0;
- this.pageY = 0;
- }
- var _event=new myEvent();
- function setBackgroundcolor(sBgColor)
- {
- gsBgColor=sBgColor;
- }
- function setBackground(sBgImage)
- {
- gsBgImage=sBgImage;
- }
- function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)
- {
- var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);
- if(sType=="Normal")
- goIdxFont=vFont;
- else if(sType=="Empty")
- goIdxEmptyFont=vFont;
- else if(sType=="Hover")
- goIdxHoverFont=vFont;
- }
- function setActiveBgColor(sBgColor)
- {
- gsIdxActiveBgColor=sBgColor;
- }
- function setMargin(sMargin)
- {
- gsIdxMargin=sMargin;
- }
- function setIndent(sIndent)
- {
- gsIdxIndent=sIndent;
- }
- function writeOneItem(oHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel)
- {
- var sHTML="";
- var nIdxSet=aCurIdxSet[0];
- var nIIdx=aPos[nIdxSet];
- var sKOriName=getItemName(aDataCon,nIdxSet,nIIdx);
- var sKName=_textToHtml(sKOriName);
- var nIdxIndent=parseInt(gsIdxIndent);
- var sTopics="";
- if(nLevel==1){
- if(getItemType(aDataCon,nIdxSet,nIIdx)==1)
- {
- sHTML+="<H6><nobr>";
- sHTML+="<b>"+sKName+"</b></nobr></H6>";
- }
- else{
- for(var i=0;i<nLength;i++)
- sTopics+=getIdxTopics(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);
- sHTML+="<p style="margin-left:"+gsIdxIndent+""><nobr>";
- sHTML+="<a alt="" + sKName + "" href="javascript:void(0);" onfocus="clearHighLight();" onclick="PopupMenu_Invoke(event,'"+getTargetName(aDataCon,nIdxSet,nIIdx)+"'";
- if(sTopics.length>0)
- sHTML+=sTopics+");return false;">"+sKName+"</a></nobr></p>";
- else
- sHTML+=");return false;" style=""+getFontStyle(goIdxEmptyFont)+"">"+sKName+"</a></nobr></p>";
- }
- }
- else if(nLevel>=2){
- var nIndent=nIdxIndent*nLevel;
- for(var i=0;i<nLength;i++)
- sTopics+=getIdxTopics(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);
- if (nLevel==2)
- sHTML+="<h6 class="firstsub" style="margin-left:"+nIndent+"pt"><nobr>";
- else
- sHTML+="<h6 style="margin-left:"+nIndent+"pt"><nobr>";
- sHTML+="<a alt="" + sKName + "" href="javascript:void(0);" onfocus="clearHighLight();" onclick="PopupMenu_Invoke(event,'"+getTargetName(aDataCon,nIdxSet,nIIdx)+"'";
- if(sTopics.length>0)
- sHTML+=sTopics+");return false;">"+sKName+"</a></nobr></h6>";
- else
- sHTML+=");return false;" style=""+getFontStyle(goIdxEmptyFont)+"">"+sKName+"</a></nobr></h6>";
- }
- oHTML.addHTML(sHTML,nLength,bDown,(nLevel==1),sKOriName);
- }
- function getTargetName(aDataCon,nIdxSet,nIIdx)
- {
- if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)
- if(aDataCon[nIdxSet].aKs[nIIdx].sTarget)
- return aDataCon[nIdxSet].aKs[nIIdx].sTarget;
- return gsDefaultTarget;
- }
- function mergeItems(oHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel)
- {
- var oLocalHTML=new indexHTMLPart();
- writeOneItem(oLocalHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel);
-
- var aLocalPos=new Array();
- var aMaxPos=new Array();
- for(var i=0;i<aPos.length;i++)
- {
- aLocalPos[i]=aPos[i];
- aMaxPos[i]=-1;
- }
-
- for(i=0;i<nLength;i++)
- {
- var nNKOff=getNKOff(aDataCon,aCurIdxSet[i],aLocalPos[aCurIdxSet[i]]);
- aLocalPos[aCurIdxSet[i]]++;
- if(nNKOff>0)
- aMaxPos[aCurIdxSet[i]]=aLocalPos[aCurIdxSet[i]]+nNKOff;
- }
- var oSubHTML=new indexHTMLPart();
- writeItems(oSubHTML,aDataCon,aLocalPos,null,aMaxPos,true,nLevel+1);
- oLocalHTML.addSubHTML(oSubHTML,true);
- oHTML.appendHTML(oLocalHTML,bDown);
- }
- function adjustPosition(bDown,aDataCon,aCurIdxSet,nLength,aPos)
- {
- if(bDown)
- {
- for(var i=0;i<nLength;i++)
- {
- var nNKOff=getNKOff(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);
- aPos[aCurIdxSet[i]]+=(1+nNKOff);
- }
- }
- else{
- for(var i=0;i<nLength;i++)
- {
- var nPKOff=getPKOff(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);
- aPos[aCurIdxSet[i]]-=(1+nPKOff);
- }
- }
- }
- function getItemName(aDataCon,nIdxSet,nIIdx)
- {
- if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)
- return aDataCon[nIdxSet].aKs[nIIdx].sName;
- else
- return null;
- }
- function getItemType(aDataCon,nIdxSet,nIIdx)
- {
- if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)
- return aDataCon[nIdxSet].aKs[nIIdx].nType;
- else
- return 0;
- }
- function getNKOff(aDataCon,nIdxSet,nIIdx)
- {
- if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)
- return aDataCon[nIdxSet].aKs[nIIdx].nNKOff;
- else
- return null;
- }
- function getPKOff(aDataCon,nIdxSet,nIIdx)
- {
- if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)
- return aDataCon[nIdxSet].aKs[nIIdx].nPKOff;
- else
- return null;
- }
- function window_OnLoad()
- {
- if(gsBgImage&&gsBgImage.length>0)
- {
- document.body.background=gsBgImage;
- }
- if(gsBgColor&&gsBgColor.length>0)
- {
- document.body.bgColor=gsBgColor;
- }
- document.body.insertAdjacentHTML("beforeEnd",writeLoadingDiv());
- loadIdx();
- var oMsg=new whMessage(WH_MSG_SHOWIDX,this,1,null)
- SendMessage(oMsg);
- }
- function loadIdx()
- {
- if(!gbReady)
- {
- var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);
- if(SendMessage(oResMsg)&&oResMsg.oParam)
- {
- gbReady=true;
- var oProj=oResMsg.oParam;
- var aProj=oProj.aProj;
- gbXML=oProj.bXML;
- if(aProj.length>0)
- {
- var sLangId=aProj[0].sLangId;
- for(var i=0;i<aProj.length;i++)
- {
- if(aProj[i].sIdx!=null&&aProj[i].sIdx!=""&&aProj[i].sLangId==sLangId)
- {
- addProjInfo(aProj[i].sPPath,aProj[i].sDPath,aProj[i].sIdx);
- }
- }
- }
- writeDataIFrame();
- enEvt();
- }
- }
- }
- function getIdxTopics(aDataCon,nIdxSet,nIIdx)
- {
- var sTopics="";
- if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)
- {
- if(aDataCon[nIdxSet].aKs[nIIdx].aTopics)
- {
- var nLen=aDataCon[nIdxSet].aKs[nIIdx].aTopics.length;
- var nProj=aDataCon[nIdxSet].nProjId;
- var sPath=gaData[nProj].sPPath;
- for(var i=0;i<nLen;i++)
- {
- var sURL=aDataCon[nIdxSet].aKs[nIIdx].aTopics[i].sURL;
- var sFullPath=_getFullPath(sPath,sURL);
- sTopics+=",'"+excapeSingleQuot(_textToHtml(aDataCon[nIdxSet].aKs[nIIdx].aTopics[i].sName))+"','"+_textToHtml_nonbsp(sFullPath)+"'";
- }
- }
- }
- return sTopics;
- }
- function excapeSingleQuot(str)
- {
- if(str==null) return null;
- var sRes=str;
- var re=new RegExp("'","g");
- sRes=sRes.replace(re,"\'");
- return sRes;
- }
- function findCKInDom()
- {
- if(gsCK!=null)
- {
- var sK=gsCK;
- var oP=getElementsByTag(document,"P");
- if(!oP) return false;
- var len=oP.length;
- var nB=0;
- var nE=len-1;
- var nM=0;
- var sItem="";
- var bF=false;
- while(nB<nE){
- nM=(nB+nE+1)>>1;
- sItem=getInnerText(oP[nM]);
-
- if(compare(sItem,sK)==0)
- {
- bF=true;
- break;
- }
- else if(compare(sItem,sK)>0)
- nE=nM-1;
- else if(compare(sItem,sK)<0)
- nB=nM;
- }
- if(!bF)
- {
- if(nB==nE) nM=nB;
-
- if(nM+1<len)
- {
- sItem=getInnerText(oP[nM+1]);
- if(compare(sItem,sK)<=0) nM++;
- }
- if(nM+1<len)
- {
- sItem=getInnerText(oP[nM+1]);
- if(compare(sItem.substring(0,sK.length),sK)==0) nM++;
- }
- }
-
- var oMatch=oP[nM];
- if(oMatch)
- {
- window.scrollTo(0,oMatch.offsetTop);
- var tempColl=getElementsByTag(oMatch,"A");
- if(tempColl&&tempColl.length>0){
- var nbTag=getElementsByTag(oMatch,"NOBR");
- if(nbTag&&nbTag.length>0)
- HighLightElement(nbTag[0], gsIdxActiveBgColor, "transparent");
- if (gbCR)
- {
- if (gbIE4)
- tempColl(0).click();
- else
- {
- var strCommand = tempColl[0].getAttribute("onClick");
- var nstrCommand = strCommand.indexOf(";");
- strCommand = strCommand.substring(0, nstrCommand);
- strCommand = strCommand.replace("event", "_event");
- window._event.pageX = oMatch.offsetLeft ;
- window._event.pageY = oMatch.offsetTop + 20;
- window.setTimeout(strCommand, 100);
- }
- }
- }
- }
- gsCK=gsBCK;
- gbCR=gbBCR;
- if(gsBCK!=null)
- {
- gsBCK=null;
- gbBCR=false;
- findCK();
- return false;
- }
-
- }
- return true;
- }
- function clearHighLight()
- {
- resetHighLight(gsBgColor);
- }
- function IndexWriteClassStyle()
- {
- var sStyle="";
- sStyle+="<STYLE TYPE='text/css'>";
- if (gsBgImage)
- sStyle+="body {border-top:"+gsBgColor+" 1px solid;}n";
- else
- sStyle+="body {border-top:black 1px solid;}n";
- if(gbIE4&&gbMac&&!gbIE5)
- {
- var nMargin=parseInt(gsIdxMargin);
- nMargin-=10;
- sStyle+="P {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}n";
- sStyle+="H6 {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}n";
- sStyle+="H6.firstsub {"+getFontStyle(goIdxFont)+"margin-top:"+nMargin+"pt;margin-bottom:"+gsIdxMargin+";}n";
- }
- else
- {
- sStyle+="P {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}n";
- sStyle+="H6 {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}n";
- }
- sStyle+="DIV {margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}n";
- sStyle+="A:link {"+getFontStyle(goIdxFont)+"}n";
- sStyle+="A:visited {"+getFontStyle(goIdxFont)+"}n";
- sStyle+="A:active {background-color:"+gsIdxActiveBgColor+";}n";
- sStyle+="A:hover {"+getFontStyle(goIdxHoverFont)+"}n";
- sStyle+="</STYLE>";
- document.write(sStyle);
- return;
- }
- function window_Unload()
- {
- UnRegisterListener2(this,WH_MSG_PROJECTREADY);
- UnRegisterListener2(this,WH_MSG_SEARCHINDEXKEY);
- }
- function onSendMessage(oMsg)
- {
- if(oMsg)
- {
- var nMsgId=oMsg.nMessageId;
- if(nMsgId==WH_MSG_SEARCHINDEXKEY)
- {
- if(oMsg.oParam && oMsg.oParam.sInput)
- {
- if(gsCK==null)
- {
- gsCK=oMsg.oParam.sInput;
- gbCR = oMsg.oParam.bCR;
- findCK();
- }
- else
- {
- gsBCK=oMsg.oParam.sInput;
- gbBCR = oMsg.oParam.bCR;
- }
- }
- }
- else if(nMsgId==WH_MSG_PROJECTREADY)
- {
- loadIdx();
- }
- }
- return true;
- }
- if(window.gbWhVer&&window.gbWhLang&&window.gbWhMsg&&window.gbWhUtil&&window.gbWhHost&&window.gbWhProxy)
- {
- RegisterListener2(this,WH_MSG_PROJECTREADY);
- RegisterListener2(this,WH_MSG_SEARCHINDEXKEY);
- goIdxFont=new whFont("Verdana","8pt","#000000","normal","normal","none");
- goIdxEmptyFont=new whFont("Verdana","8pt","#666666","normal","normal","none");
- goIdxHoverFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");
- window.onload=window_OnLoad;
- window.onbeforeunload=window_BUnload;
- window.onunload=window_Unload;
- gbWhIHost=true;
- }
- else
- document.location.reload();