smesh/doc/salome/gui/SMESH/whihost.js
2004-04-05 07:13:18 +00:00

433 lines
11 KiB
JavaScript
Executable File

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();