var treeIcons = {
	MainClose	: "/images/leftmenu/dep1_close.gif",
	MainOpen	: "/images/leftmenu/dep1_open.gif",
	MainBlank	: "/images/leftmenu/dep1_close.gif",
	SubClose	: "/images/leftmenu/dep2_close.gif",
	SubOpen		: "/images/leftmenu/dep2_open.gif",
	SubBlank	: "/images/leftmenu/dep2_blank.gif",
	SubSubClose	: "/images/leftmenu/dep3_close.gif",
	SubSubOpen	: "/images/leftmenu/dep3_open.gif",
	SubSubBlank	: "/images/leftmenu/dep3_blank.gif",
	ItemClose	: "/images/leftmenu/dep4_close.gif",
	ItemOpen	: "/images/leftmenu/dep4_close.gif",
	ItemBlank	: "/images/leftmenu/dep4_close.gif"
};

treeCSS = {
	Main		: "treeMain",
	MainOver	: "treeMainOver",
	MainSel		: "treeMainSel",
	MainSel1	: "treeMainSel1",
	Sub			: "treeSub",
	SubOver		: "treeSubOver",
	SubSel		: "treeSubSel",
	SubSel1		: "treeSubSel1",
	SubSub		: "treeSubSub",
	SubSubOver	: "treeSubSubOver",
	SubSubSel	: "treeSubSubSel",
	SubSubSel1	: "treeSubSubSel1",
	Item		: "treeItem",
	ItemOver	: "treeItemOver",
	ItemSel		: "treeItemSel"
};

var treeOpenUniq = true;
var treeMenuDiv = document.getElementById("treeMenuDiv");

var treeMainCID = -1;
var treeSubCID = -1;
var treeSubSubCID = -1;
var treeItemCID = -1;

var openMainID = -1;
var openSubID = -1;
var openSubSubID = -1;
var openItemID = -1;

function treeFolderOpen(mid, sid, ssid, iid)
{
	if (mid >= 1) openMainID = mid-1;
	if (sid >= 1) openSubID = sid-1;
	if (ssid >= 1) openSubSubID = ssid-1;
	if (iid >= 1) openItemID = iid-1;

	treeMenuDiv.innerHTML = setTreeMenu();
	if ((mid >= 1) && (mid <= treeMenuDiv.childNodes.length))
	{
		treeMainCID = mid-1;
		var openMainDiv = treeMenuDiv.childNodes.item(mid-1);
		if (openMainDiv.childNodes.length > 1)
		{
			openMainDiv.childNodes.item(0).childNodes.item(0).src = treeIcons.MainOpen;
			openMainDiv.childNodes.item(0).className = treeCSS.MainSel;
			openMainDiv.childNodes.item(1).style.display = "";
			if ((sid >= 1) && (sid <= openMainDiv.childNodes.item(1).childNodes.length))
			{
				treeSubCID = sid-1;
				var openSubDiv = openMainDiv.childNodes.item(1).childNodes.item(sid-1);
				if (openSubDiv.childNodes.length > 1)
				{
					openSubDiv.childNodes.item(0).childNodes.item(0).src = treeIcons.SubOpen;
					openSubDiv.childNodes.item(0).className = treeCSS.SubSel;
					openSubDiv.childNodes.item(1).style.display = "";
					if ((ssid >= 1) && (ssid <= openSubDiv.childNodes.item(1).childNodes.length))
					{
						treeSubSubCID = ssid-1;
						var openSubSubDiv = openSubDiv.childNodes.item(1).childNodes.item(ssid-1);
						if (openSubSubDiv.childNodes.length > 1)
						{
							openSubSubDiv.childNodes.item(0).childNodes.item(0).src = treeIcons.SubSubOpen;
							openSubSubDiv.childNodes.item(0).className = treeCSS.SubSubSel;
							openSubSubDiv.childNodes.item(1).style.display = "";
							if ((iid >= 1) && (iid <= openSubSubDiv.childNodes.item(1).childNodes.length))
							{
								treeItemCID = iid-1;
								var openItemDiv = openSubSubDiv.childNodes.item(1).childNodes.item(iid-1);
								openItemDiv.className = treeCSS.ItemSel;

//document.getElementById("dbg").innerHTML += "?ΈμΆ?ν¨?? treeFolderOpen("+mid+","+sid+","+ssid+","+iid+");<br />λ©λ΄?μ€?? "+openSubSubDiv.childNodes.item(1).childNodes.item(iid-1).childNodes.item(1).nodeValue+"<br />λ§ν¬?μ΄μ§: "+treeMenus.MainMenus[mid-1].Items[sid-1].Items[ssid-1].Items[iid-1].LinkURL;
							}
							else
							{
//document.getElementById("dbg").innerHTML += "λ¬΄ν¨?μ΄μ§";
							}
						}
						else
						{
							openSubSubDiv.className = treeCSS.SubSubSel1;

//document.getElementById("dbg").innerHTML += "?ΈμΆ?ν¨?? treeFolderOpen("+mid+","+sid+","+ssid+");<br />λ©λ΄?μ€?? "+openSubSubDiv.childNodes.item(0).childNodes.item(1).nodeValue+"<br />λ§ν¬?μ΄μ§: "+treeMenus.MainMenus[mid-1].Items[sid-1].Items[ssid-1].LinkURL;
						}
					}
				}
				else
				{
					openSubDiv.className = treeCSS.SubSel1;

//document.getElementById("dbg").innerHTML += "?ΈμΆ?ν¨?? treeFolderOpen("+mid+","+sid+");<br />λ©λ΄?μ€?? "+openSubDiv.childNodes.item(0).childNodes.item(1).nodeValue+"<br />λ§ν¬?μ΄μ§: "+treeMenus.MainMenus[mid-1].Items[sid-1].LinkURL;
				}
			}
		}
		else
		{
			openMainDiv.firstChild.className = treeCSS.MainSel1;

//document.getElementById("dbg").innerHTML += "?ΈμΆ?ν¨?? treeFolderOpen("+mid+");<br />λ©λ΄?μ€?? "+openMainDiv.childNodes.item(0).childNodes.item(1).nodeValue+"<br />λ§ν¬?μ΄μ§: "+treeMenus.MainMenus[mid-1].LinkURL;
		}
	}
}

function treeFolderOver(e)
{
	if (!e) var e = window.event;
	var el = (e.target) ? e.target : e.srcElement;
	if (el.tagName == "IMG") el = el.parentNode;

	switch (el.className)
	{
		case treeCSS.MainSel :
		case treeCSS.Main :
			var treeIconsCheck = treeIcons.MainOpen.split("/");
			var treeSelCSS = treeCSS.MainSel;
			var treeOverCSS = treeCSS.MainOver;
			break;
		case treeCSS.SubSel :
		case treeCSS.Sub :
			var treeIconsCheck = treeIcons.SubOpen.split("/");
			var treeSelCSS = treeCSS.SubSel;
			var treeOverCSS = treeCSS.SubOver;
			break;
		case treeCSS.SubSubSel :
		case treeCSS.SubSub :
			var treeIconsCheck = treeIcons.SubSubOpen.split("/");
			var treeSelCSS = treeCSS.SubSubSel;
			var treeOverCSS = treeCSS.SubSubOver;
			break;
	}

	var treeFolderIcon = el.childNodes.item(0);
	var treeFolderIconSrc = treeFolderIcon.src.split("/");
	if (treeFolderIconSrc[treeFolderIconSrc.length-1] == treeIconsCheck[treeIconsCheck.length-1])
	{
		el.className = treeSelCSS;
	}
	else
	{
		el.className = treeOverCSS;
	}
}

function treeFolderOut(e)
{
	if (!e) var e = window.event;
	var el = (e.target) ? e.target : e.srcElement;
	if (el.tagName == "IMG") el = el.parentNode;

	switch (el.className)
	{
		case treeCSS.Main :
		case treeCSS.MainSel :
		case treeCSS.MainOver :
			var treeIconsCheck = treeIcons.MainOpen.split("/");
			var treeSelCSS = treeCSS.MainSel;
			var treeOutCSS = treeCSS.Main;
			break;
		case treeCSS.Sub :
		case treeCSS.SubSel :
		case treeCSS.SubOver :
			var treeIconsCheck = treeIcons.SubOpen.split("/");
			var treeSelCSS = treeCSS.SubSel;
			var treeOutCSS = treeCSS.Sub;
			break;
		case treeCSS.SubSub :
		case treeCSS.SubSubSel :
		case treeCSS.SubSubOver :
			var treeIconsCheck = treeIcons.SubSubOpen.split("/");
			var treeSelCSS = treeCSS.SubSubSel;
			var treeOutCSS = treeCSS.SubSub;
			break;
	}

	var treeFolderIcon = el.childNodes.item(0);
	var treeFolderIconSrc = treeFolderIcon.src.split("/");
	if (treeFolderIconSrc[treeFolderIconSrc.length-1] == treeIconsCheck[treeIconsCheck.length-1])
	{
		el.className = treeSelCSS;
	}
	else
	{
		el.className = treeOutCSS;
	}
}

function treeFolderClick(e)
{
	if (!e) var e = window.event;
	var el = (e.target) ? e.target : e.srcElement;
	if (el.tagName == "IMG") el = el.parentNode;

	switch (el.className)
	{
		case treeCSS.Main :
		case treeCSS.MainSel :
		case treeCSS.MainOver :
			var treeDepth = 1;
			var treeIconsCheck = treeIcons.MainClose.split("/");
			var treeSelCSS = treeCSS.MainSel;
			var treeOutCSS = treeCSS.Main;
			var treeFolderOpenIcon = treeIcons.MainOpen;
			var treeFolderCloseIcon = treeIcons.MainClose;
			var oFolderID = treeMainCID;
			treeSubCID = -1;
			treeSubSubCID = -1;
			treeItemCID = -1;
			var oFolderIconsCheck = treeIcons.MainOpen.split("/");
			break;
		case treeCSS.Sub :
		case treeCSS.SubSel :
		case treeCSS.SubOver :
			var treeDepth = 2;
			var treeIconsCheck = treeIcons.SubClose.split("/");
			var treeSelCSS = treeCSS.SubSel;
			var treeOutCSS = treeCSS.Sub;
			var treeFolderOpenIcon = treeIcons.SubOpen;
			var treeFolderCloseIcon = treeIcons.SubClose;
			var oFolderID = treeSubCID;
			treeSubSubCID = -1;
			treeItemCID = -1;
			var oFolderIconsCheck = treeIcons.SubOpen.split("/");
			break;
		case treeCSS.SubSub :
		case treeCSS.SubSubSel :
		case treeCSS.SubSubOver :
			var treeDepth = 3;
			var treeIconsCheck = treeIcons.SubSubClose.split("/");
			var treeSelCSS = treeCSS.SubSubSel;
			var treeOutCSS = treeCSS.SubSub;
			var treeFolderOpenIcon = treeIcons.SubSubOpen;
			var treeFolderCloseIcon = treeIcons.SubSubClose;
			var oFolderID = treeSubSubCID;
			treeItemCID = -1;
			var oFolderIconsCheck = treeIcons.SubSubOpen.split("/");
			break;
	}

	var treeFolderIcon = el.childNodes.item(0);
	var treeFolderIconSrc = treeFolderIcon.src.split("/");
	if (treeFolderIconSrc[treeFolderIconSrc.length-1] == treeIconsCheck[treeIconsCheck.length-1])
	{
		treeFolderIcon.src = treeFolderOpenIcon;
		el.className = treeSelCSS;
		el.nextSibling.style.display = "";
	}
	else
	{
		treeFolderIcon.src = treeFolderCloseIcon;
		el.className = treeOutCSS;
		el.nextSibling.style.display = "none";
	}

	if (treeOpenUniq)
	{
		var treeTopDiv = el.parentNode.parentNode;
		var treeTopDivList = treeTopDiv.childNodes;
		for (var i=0; i<treeTopDivList.length; i++)
		{
			var treeFolderDiv = treeTopDivList.item(i).childNodes;
			if (treeFolderDiv.item(0) == el) var nFolderID = i;
		}
		if (oFolderID >= 0)
		{
			var oFolder = treeTopDivList.item(oFolderID).childNodes;
			var oFolderIcon = oFolder.item(0).childNodes.item(0);
			var oFolderIconSrc = oFolderIcon.src.split("/");
			if (oFolderIconSrc[oFolderIconSrc.length-1] == oFolderIconsCheck[oFolderIconsCheck.length-1])
			{
				oFolderIcon.src = treeFolderCloseIcon;
				oFolder.item(0).className = treeOutCSS;
				oFolder.item(1).style.display = "none";
			}
		}
		switch (treeDepth)
		{
			case 1 :
				if (oFolderID == nFolderID) treeMainCID = -1;
				else treeMainCID = nFolderID;
				break;
			case 2 :
				if (oFolderID == nFolderID) treeSubCID = -1;
				else treeSubCID = nFolderID;
				break;
			case 3 :
				if (oFolderID == nFolderID) treeSubSubCID = -1;
				else treeSubSubCID = nFolderID;
				break;
		}
	}
}

function treeItemOver(e) {
	if (!e) var e = window.event;
	var el = (e.target) ? e.target : e.srcElement;
	if (el.tagName == "IMG") el = el.parentNode;
	el.className = treeCSS.ItemOver;
}

function treeItemOut(e) {
	if (!e) var e = window.event;
	var el = (e.target) ? e.target : e.srcElement;
	if (el.tagName == "IMG") el = el.parentNode;
	el.className = treeCSS.Item;
}

function treeItemClick(url, tar) {
	switch (tar.toUpperCase()) {
		case "NEW" :
			window.open(url);
			break;
		case "POPUP" :
			window.open(url, "treePopUp", "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=400, height=300,left=0,top=0");
			break;
		default :
			var linkTarget = eval(tar);
			linkTarget.location.href = url;
			break;
	}
}

function setTreeMenu() {
	var strHTML = "";
	for (var i=0; i<treeMenus.MainMenus.length; i++) strHTML += setMainDiv(i);
	return strHTML;
}

function setMainDiv(mid) {
	var strHTML = "";
	strHTML += "<div id=\"treeMain-"+(mid+1)+"\">";
	if (treeMenus.MainMenus[mid].Sub) {
		strHTML += "<div class=\""+treeCSS.Main+"\" onmouseover=\"treeFolderOver(event);\" onmouseout=\"treeFolderOut(event);\" onclick=\"treeFolderClick(event);\"><img src=\""+treeIcons.MainClose+"\" />"+treeMenus.MainMenus[mid].Title+"</div>";
		strHTML += "<div style=\"display:none;\">";
		for (var i=0; i<treeMenus.MainMenus[mid].Items.length; i++) {
			strHTML += setSubDiv(mid, i);
		}
		strHTML += "</div>";
	}
	else {
		var event_attribute = "";
		if (mid != openMainID) {
			event_attribute += " onmouseover=\"treeFolderOver(event);\" ";
			event_attribute += " onmouseout=\"treeFolderOut(event);\" ";
		}
		event_attribute += " onclick=\"treeItemClick('"+treeMenus.MainMenus[mid].LinkURL+"', '"+treeMenus.MainMenus[mid].LinkTarget+"');\" ";
		strHTML += "<div class=\""+treeCSS.Main+"\" "+event_attribute+"><img src=\""+treeIcons.MainBlank+"\" />"+treeMenus.MainMenus[mid].Title+"</div>";
	}
	strHTML += "</div>";
	return strHTML;
}

function setSubDiv(mid, sid) {
	var strHTML = "";
	strHTML += "<div id=\"treeSub-"+(mid+1)+"-"+(sid+1)+"\">";
	if (treeMenus.MainMenus[mid].Items[sid].Sub) {
		strHTML += "<div class=\""+treeCSS.Sub+"\" onmouseover=\"treeFolderOver(event);\" onmouseout=\"treeFolderOut(event);\" onclick=\"treeFolderClick(event);\"><img src=\""+treeIcons.SubClose+"\" />"+treeMenus.MainMenus[mid].Items[sid].Title+"</div>";
		strHTML += "<div style=\"display:none;\">";
		for (var i=0; i<treeMenus.MainMenus[mid].Items[sid].Items.length; i++) {
			strHTML += setSubSubDiv(mid, sid, i);
		}
		strHTML += "</div>";
	}
	else {
		var event_attribute = "";
		if ((mid != openMainID) || (sid != openSubID)) {
			event_attribute += " onmouseover=\"treeFolderOver(event);\" ";
			event_attribute += " onmouseout=\"treeFolderOut(event);\" ";
		}
		event_attribute += " onclick=\"treeItemClick('"+treeMenus.MainMenus[mid].Items[sid].LinkURL+"', '"+treeMenus.MainMenus[mid].Items[sid].LinkTarget+"');\" ";
		strHTML += "<div class=\""+treeCSS.Sub+"\" "+event_attribute+"><img src=\""+treeIcons.SubBlank+"\" />"+treeMenus.MainMenus[mid].Items[sid].Title+"</div>";
	}
	strHTML += "</div>";
	return strHTML;
}

function setSubSubDiv(mid, sid, ssid) {
	var strHTML = "";
	strHTML += "<div id=\"treeSubSub-"+(mid+1)+"-"+(sid+1)+"-"+(ssid+1)+"\">";
	if (treeMenus.MainMenus[mid].Items[sid].Items[ssid].Sub) {
		strHTML += "<div class=\""+treeCSS.SubSub+"\" onmouseover=\"treeFolderOver(event);\" onmouseout=\"treeFolderOut(event);\" onclick=\"treeFolderClick(event);\"><img src=\""+treeIcons.SubSubClose+"\" />"+treeMenus.MainMenus[mid].Items[sid].Items[ssid].Title+"</div>";
		strHTML += "<div style=\"display:none;\">";
		for (var i=0; i<treeMenus.MainMenus[mid].Items[sid].Items[ssid].Items.length; i++) {
			strHTML += setItemDiv(mid, sid, ssid, i);
		}
		strHTML += "</div>";
	}
	else {
		var event_attribute = "";
		if ((mid != openMainID) || (sid != openSubID) || (ssid != openSubSubID)) {
			event_attribute += " onmouseover=\"treeFolderOver(event);\" ";
			event_attribute += " onmouseout=\"treeFolderOut(event);\" ";
		}
		event_attribute += " onclick=\"treeItemClick('"+treeMenus.MainMenus[mid].Items[sid].Items[ssid].LinkURL+"', '"+treeMenus.MainMenus[mid].Items[sid].Items[ssid].LinkTarget+"');\" ";
		strHTML += "<div class=\""+treeCSS.SubSub+"\" "+event_attribute+"><img src=\""+treeIcons.SubSubBlank+"\" />"+treeMenus.MainMenus[mid].Items[sid].Items[ssid].Title+"</div>";
	}
	strHTML += "</div>";
	return strHTML;
}

function setItemDiv(mid, sid, ssid, iid) {
	var strHTML = "";
	var event_attribute = "";
	if ((mid != openMainID) || (sid != openSubID) || (ssid != openSubSubID) || (iid != openItemID)) {
		event_attribute += " onmouseover=\"treeItemOver(event);\" ";
		event_attribute += " onmouseout=\"treeItemOut(event);\" ";
	}
	event_attribute += " onclick=\"treeItemClick('"+treeMenus.MainMenus[mid].Items[sid].Items[ssid].Items[iid].LinkURL+"', '"+treeMenus.MainMenus[mid].Items[sid].Items[ssid].Items[iid].LinkTarget+"');\" ";
	strHTML += "<div class=\""+treeCSS.Item+"\" "+event_attribute+"><img src=\""+treeIcons.ItemClose+"\" />"+treeMenus.MainMenus[mid].Items[sid].Items[ssid].Items[iid].Title+"</div>";
	return strHTML;
}
