var bMSIE= (-1!= navigator.appName.indexOf("Microsoft"));
var sCloseImage= "image/h1.gif";
var sOpenImage= "image/h2.gif";
var sInfoImage= "image/h3.gif";
var sDestPage= "descmenu";
var sDefaultPage= "1";
var sResultMsg= "搜尋結果";
var sNoMatch= "抱歉！ 沒有符合的項目。";
function HtmlAdd(stDest, sNewHtml)
{
	if((null== stDest)|| (null== sNewHtml))
		return;
	if(! bMSIE){
		var stRange= stDest.ownerDocument.createRange();
		stRange.selectNodeContents(stDest);
		stRange.collapse(false);
		stDest.appendChild(stRange.createContextualFragment(sNewHtml));
	}else
		stDest.insertAdjacentHTML("BeforeEnd", sNewHtml);
}
function XmlHttpUse()
{
	var stXmlHttp = false;
	/*@cc_on @*/
	/*@if (@_jscript_version >= 5)
		try{
			stXmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(stExcept1){
			try{
				stXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(stExcept2){
				stXmlHttp = false;
			}
		}
	@end @*/
	if(!stXmlHttp && ("undefined" != typeof(XMLHttpRequest))){
		try{
			stXmlHttp = new XMLHttpRequest();
		}catch(stExcept3){
			stXmlHttp = false;
		}
	}
	if(!stXmlHttp && window.createRequest){
		try{
			stXmlHttp = window.createRequest();
		}catch(stExcept4){
			stXmlHttp = false;
		}
	}
	return stXmlHttp;
}
function Stream2URI(sData)
{
	sData = sData.replace(/%/g, "%25");
	sData = sData.replace(/#/g, "%23");
	sData = sData.replace(/&/g, "%26");
	sData = sData.replace(/\+/g, "%2B");
	return sData;
}
function HelpMake(stHelpNode)
{
	if(!stHelpNode)
		return;
	var stKid = document.getElementById(stHelpNode.id + "_kid");
	if(!stKid)
		return;
	var stImage = document.getElementById(stHelpNode.id + "_img");
	if(stImage)
		stImage.src = stHelpNode.bOpen ? sOpenImage : sCloseImage;
	stKid.style.display = stHelpNode.bOpen ? "" : "none";
	var nLen = stKid.childNodes.length, i;
	for(i = 0; i < nLen; i++){
		var stNode = stKid.childNodes[i];
		if(!stHelpNode.bOpen)
			stNode.bOpen = false;
		HelpMake(stNode);
	}
}
function HelpRoll(sRoller)
{
	if(!sRoller)
		return;
	var stObject = document.getElementById("my_" + sRoller);
	if(!stObject)
		return;
	var stPapa = stObject.stParent, stAncient;
	while(stPapa){
		stPapa.bOpen = true;
		stAncient = stPapa;
		stPapa = stPapa.stParent;
	}
	if(stAncient)
		HelpMake(stAncient);
	top.frames[sDestPage].location.replace(sRoller+ ".htm");
	window.location= "#"+ sRoller;
}
function HelpClick(sEntry)
{
	if(!sEntry)
		return;
	var stSource= document.getElementById("my_" + sEntry);
	if(!stSource)
		return;
	stSource.bOpen = !stSource.bOpen;
	HelpMake(stSource);
	if("Found" == sEntry)
		top.frames[sDestPage].location.replace("about:blank");
	else
		top.frames[sDestPage].location.replace(sEntry+ ".htm");
}
function HelpNode(sParent, sChild, sTitle, rg_sMisc)
{
	if(!sParent || !sChild)
		return;
	var stTemp = document.getElementById("my_" + sParent), stTemp2;
	var stColumn = document.createElement("div"), stImage;
	stColumn.style.whiteSpace = "nowrap";
	stColumn.id = "my_" + sChild;
	stColumn.sPath = '/' + sChild + ".htm";
	if(stTemp){
		var stKid = document.getElementById("my_" + sParent + "_kid");
		if(null == stKid){
			stKid = document.createElement("div");
			stKid.id = "my_" + sParent + "_kid";
			stKid.style.display = "none";
			stKid.style.margin = "0 0 0 10px";
			stTemp.appendChild(stKid);
		}
		stKid.appendChild(stColumn);
		stColumn.stParent = stTemp;
		stImage = document.getElementById("my_" + sParent + "_img");
		if(stImage){
			stImage.src = sCloseImage;
			stImage.removeAttribute("height");
			stImage.removeAttribute("width");
		}
	}else{
		stTemp = document.getElementById("ColNode").parentNode;
		stTemp.appendChild(stColumn);
	}
	stTemp = document.createElement("a");
	if(rg_sMisc && rg_sMisc[0])
		stTemp.className = rg_sMisc[0];
	stTemp.name = sChild;
	stTemp.href = "javascript: HelpClick('" + sChild + "');";
	stColumn.appendChild(stTemp);
	stImage = document.createElement("img");
	stImage.border = 0;
	stImage.id = "my_" + sChild + "_img";
	if(rg_sMisc && rg_sMisc[1])
		stImage.src = rg_sMisc[1];
	else
		stImage.src = sInfoImage;
	stTemp.appendChild(stImage);
	if(sTitle)
		HtmlAdd(stTemp, sTitle);
}
function HelpInit()
{
	if("function" == typeof(TreeSet))
		TreeSet();
	var stColumn = document.getElementById("ColNode");
	stColumn.style.display = "none";
	var sLocat = location.search.slice(2);
	if(!sLocat)
		sLocat = sDefaultPage;
	HelpRoll(sLocat);
}
function HelpMatch(stNode, vKeyword, stDest, bScript)
{
	if(!stNode || !vKeyword || !stDest)
		return false;
	var stKid = document.getElementById(stNode.id + "_kid"), i;
	if(stKid){
		i = 0;
		while(stKid.childNodes[i]){
			if(!HelpMatch(stKid.childNodes[i], vKeyword, stDest, bScript))
				i++;
		}
		return false;
	}else if(bScript){
		var stRule = new RegExp(vKeyword, "gi"), sData;
		if(bMSIE)
			sData = stNode.firstChild.innerText;
		else
			sData = stNode.firstChild.textContent;
		if(!stRule.test(sData))
			return false;
		stDest.appendChild(stNode);
		return true;
	}else{
		var nLen = vKeyword.length;
		for(i = 0; i < nLen; i++){
			if(vKeyword[i] == stNode.sPath){
				stDest.appendChild(stNode);
				vKeyword[i] = vKeyword[nLen - 1];
				vKeyword.length--;
				return true;
			}
		}
		return false;
	}
}
function HelpReset()
{
	var stRoot = document.getElementById("ColNode").parentNode, i = 0;
	while(stRoot.childNodes[i]){
		var stNode = stRoot.childNodes[i];
		if(!stNode.id || ("my_" != stNode.id.slice(0, 3))){
			i++;
			continue;
		}
		stRoot.removeChild(stNode);
	}
	if("function" == typeof(TreeSet))
		TreeSet();
}
function HelpSearch2(vKeyword, bScript)
{
	if(bScript){
		if(!vKeyword){
			HelpSearch.bLock = false;
			return false;
		}
	}else if(!(vKeyword instanceof Array) || (0 == vKeyword.length)){
		HelpSearch.bLock = false;
		return false;
	}
	var stDiv = document.createElement("div");
	stDiv.style.whiteSpace = "nowrap";
	stDiv.id = "my_Found";
	var stImage = document.createElement("img");
	stImage.border = 0;
	stImage.src = sOpenImage;
	stDiv.appendChild(stImage);
	HtmlAdd(stDiv, sResultMsg);
	var stKid = document.createElement("div");
	stKid.id = "my_Found_kid";
	stKid.style.margin = "0 0 0 10px";
	stDiv.appendChild(stKid);
	var stRoot = document.getElementById("ColNode").parentNode, i = 0;
	while(i < stRoot.childNodes.length){
		var stNode = stRoot.childNodes[i];
		if(stNode.id && ("my_" == stNode.id.slice(0, 3))){
			if(!HelpMatch(stNode, vKeyword, stKid, bScript))
				stRoot.removeChild(stNode);
		}else
			i++;
	}
	if(0 == stKid.childNodes.length){
		alert(sNoMatch);
		HelpReset();
	}else
		stRoot.appendChild(stDiv);
	HelpSearch.bLock = false;
	return true;
}
function HelpGather(stNode)
{
	if(!stNode)
		return "";
	var stKid = document.getElementById(stNode.id + "_kid");
	var sRet1 = "", sRet2 = "";
	if("my_Found" != stNode.id)
		sRet1 = "&f=" + Stream2URI(stNode.sPath);
	if(stKid){
		var nLen = stKid.childNodes.length, i;
		for(i = 0; i < nLen; i++)
			sRet2 += HelpGather(stKid.childNodes[i]);
	}
	return sRet1 + sRet2;
}
function HelpSearch(sKeyword)
{
	if(!sKeyword)
		return;
	if(HelpSearch.bLock)
		return false;
	HelpSearch.bLock = true;
	if(document.getElementById("my_Found"))
		HelpReset();
	var stXmlHttp = XmlHttpUse();
	if(!stXmlHttp)
		return HelpSearch2(sKeyword, true);
	try{stXmlHttp.open("POST", "/cgi-bin/hlpqry", true);}
	catch(stExcept1){return HelpSearch2(sKeyword, true);}
	stXmlHttp.onreadystatechange = function(){
		if(4 == stXmlHttp.readyState){
			if(200 == stXmlHttp.status){
				var rg_sList = stXmlHttp.responseText.split('\n');
				if("Done." == rg_sList[0]){
					rg_sList[0] = rg_sList[rg_sList.length - 1];
					rg_sList.length--;
					return HelpSearch2(rg_sList, false);
				}else if("No match." == rg_sList[0]){
					alert(sNoMatch);
					HelpReset();
					HelpSearch.bLock = false;
					return false;
				}
			}
			return HelpSearch2(sKeyword, true);
		}
	};
	var sData = "q=" + Stream2URI(sKeyword) + "&charset=";
	if("string" == typeof(document.charset))
		sData += document.charset;
	else
		sData += document.characterSet;
	var sPath = location.pathname;
	sData += "&path=" + Stream2URI(sPath.slice(0, sPath.lastIndexOf('/')));
	/*
	var stRoot = document.getElementById("ColNode").parentNode;
	var nLen = stRoot.childNodes.length, i;
	for(i = 0; i < nLen; i++){
		var stNode = stRoot.childNodes[i];
		if(stNode.id && ("my_" == stNode.id.slice(0, 3)))
			sData += HelpGather(stNode);
	}/**/
	stXmlHttp.send(sData + "&utf8=" + Math.random());
	return true;
}
