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

