/*****************************************

	Æ®¸®ÄÁÆ®·Ñ v0.51
	
	Á¦ÀÛ : ÃÖ¿µ±Ô(maritpe@hotmail.com)
	³¯Â¥ : 2002³â 11¿ù 23ÀÏ

*****************************************/

var layerRef, styleSwitch;

if (navigator.appName == 'Netscape')
{
	layerRef = 'document.layers';
	styleSwitch = '';
}
else
{
	layerRef = 'document.all';
	styleSwitch = '.style';
}

function itemCollapse(layerID, frame)
{	
	var fsrc = "";
	
	if (frame) fsrc = "top." + frame + ".";
	eval(fsrc + layerRef + '["' + layerID + '"]' + styleSwitch + '.display="none"');
	eval("document.btn_"+layerID+".src = 'images/ftv2node+.gif';");
	eval("document.ico_"+layerID+".src = 'images/closefolder.gif';");
	eval("document.all.icobg_"+layerID+".style.backgroundImage = 'url(images/collapsechild.gif)';");
}

function itemExpand(layerID, frame)
{
	var fsrc = "";
	
	if (frame) fsrc = "top." + frame + ".";
	eval(fsrc + layerRef + '["' + layerID + '"]' + styleSwitch + '.display="block"');
	eval("document.btn_"+layerID+".src = 'images/ftv2node-.gif';");
	eval("document.ico_"+layerID+".src = 'images/openfolder.gif';");
	eval("document.all.icobg_"+layerID+".style.backgroundImage = 'url(images/expandchild.gif)';");
}

function getItemExpand(layerID, frame)
{
	var fsrc = "";
	
	if (frame) fsrc = "top." + frame + ".";
	eval ("var i = " + fsrc + layerRef + '["' + layerID + '"]' + styleSwitch + '.display;');

	return (i == "block" || i == "");
}

function clickItem(layerID, frame)
{
	if (getItemExpand(layerID, frame))
		itemCollapse(layerID, frame);
	else
		itemExpand(layerID, frame);
}

function TreeCtrl(_treename)
{
	var treename = _treename;
	var aryChild = new Array;
	
	this.getChild = getChild;
	this.getChildLength = getChildLength;

	this.addItem = addItem;
	this.showTree = showTree;
	
	this.setExpand = setExpand;
	
	function getChild(index)
	{
		return aryChild[index];
	}
	
	function getChildLength()
	{
		return aryChild.length;
	}
	
	function addItem(child)
	{
		var length = aryChild.length;
		
		if (child)
		{
			aryChild[length] = child;
			
			if (length == 0) // 0 ÀÌ¸é ¸Ç Ã³À½ ³ëµå·Î ¼³Á¤
				aryChild[length].setFirst(true);
			else
				aryChild[length - 1].setLast(false);
			
			aryChild[length].setLast(true); // Áö±Ý²¬ ¸Ç ¸¶Áö¸· ³ëµå·Î ¼³Á¤
			aryChild[length].setParent(false); // ºÎ¸ð°¡ ¾ø´Ù°í ¼³Á¤
		}
	}
	
	function showTree(node, depth, nodestr)
	{
		/*
		if (nodestr)
			alert ("ÇÏÇÏ");
		else
			alert("È£È£");
		*/
		
		if (!depth) depth = -1;
		if (!nodestr) nodestr = "";

		if (!node) // == undefined)
		{
			for (var i = 0; i < getChildLength(); i++)
				showTree(getChild(i), ++depth, nodestr);
		}
		else
		{
			var haveChild = node.getChildLength();
			
			node.setNodeStr(nodestr);
			
			document.write("<font onselectstart='return false;' style='cursor:default;'>");
			if (haveChild) document.write("<font onclick=\"clickItem('"+node.getLayerID()+"');\" ondblclick=\"clickItem('"+node.getLayerID()+"');\">");
			node.printNode();
			if (haveChild) document.write("</font>");
			document.write("</font>");

			nodestr += (node.getLast() ? "¡¡" : "¦¢");

			if (haveChild)
			{
				document.write("<div id='"+node.getLayerID()+"'>");
			}
			
			for (var i = 0; i < node.getChildLength(); i++)
				showTree(node.getChild(i), ++depth, nodestr);

			if (haveChild)
			{
				document.write("</div>");
				node.setDrawLayer(true);
			}
		}
	}

	function setExpand(flag, node)
	{
		if (!node) // == undefined)
		{
			for (var i = 0; i < getChildLength(); i++)
				setExpand(flag, getChild(i));
		}
		else
		{
			node.setExpand(flag);
		
			for (var i = 0; i < node.getChildLength(); i++)
				setExpand(flag, node.getChild(i))
		}
	}

};

function Item(_szText, _szLink, _szTarget, _imgExpand, _imgCollapse)
{
	var szText = _szText;
	var szLink = _szLink;
	var szTarget;
	var imgExpand = _imgExpand;
	var imgCollapse = _imgCollapse;
	var layerID = "layer"+parseInt(Math.random() * 1000000000000000);
	
	if (!_szTarget)
			szTarget = "_self";
	else
		szTarget = _szTarget;
	
	var parent = true;
	var first;
	var last;
	var nodeStr = "";
	var drawlayer = false;
	
	var aryChild = new Array;

	this.getText = getText;
	this.getLink = getLink;
	this.getTarget = getTarget;
	this.getImgExpand = getImgExpand;
	this.getImgCollapse = getImgCollapse;
	this.getLayerID = getLayerID;

	this.getChild = getChild;
	this.getChildLength = getChildLength;
	
	this.setParent = setParent;
	this.getParent = getParent;
	
	this.setFirst = setFirst;
	this.getFirst = getFirst;

	this.setLast = setLast;
	this.getLast = getLast;

	this.setNodeStr = setNodeStr;
	this.getNodeStr = getNodeStr;

	this.setDrawLayer = setDrawLayer;
	this.getDrawLayer = getDrawLayer;

	this.addItem = addItem;
	
	this.setExpand = setExpand;
	this.getExpand = getExpand;
	
	this.printNode = printNode;
	
	function getText() { return szText; }
	function getLink() { return szLink; }
	function getTarget() { return szTarget; }
	function getImgExpand() { return imgExpand; }
	function getImgCollapse() { return imgCollapse; }
	function getLayerID() { return layerID; }
	
	function getChild(index) { return aryChild[index]; }
	function getChildLength() { return aryChild.length; }
	
	function setParent(v) { parent = v; }
	function getParent() { return parent; }

	function setFirst(v) { first = v; }
	function getFirst() { return first; }

	function setLast(v) { last = v; }
	function getLast() { return last; }

	function setNodeStr(v) { nodeStr = v; }
	function getNodeStr() { return nodeStr; }

	function setDrawLayer(v) { drawlayer = v; }
	function getDrawLayer() { return drawlayer; }

	function addItem(child)
	{
		var length = aryChild.length;
		
		if (child)
		{
			aryChild[length] = child;
			
			if (length == 0) // 0 ÀÌ¸é ¸Ç Ã³À½ ³ëµå·Î ¼³Á¤
				aryChild[length].setFirst(true);
			else
				aryChild[length - 1].setLast(false);
			
			aryChild[length].setLast(true); // Áö±Ý²¬ ¸Ç ¸¶Áö¸· ³ëµå·Î ¼³Á¤
		}
	}
	
	function setExpand(value)
	{
		if (getChildLength())
		{
			if (getExpand() && value == false) // ÆîÃÄÁ® ÀÖÀ¸¸é
				itemCollapse(getLayerID());
			else if (value == true) // ¾È ÆîÃÄÁ® ÀÖÀ¸¸é
				itemExpand(getLayerID());
		}
	}
	
	function getExpand()
	{
		if (getDrawLayer())
			return getItemExpand(getLayerID());
		else
			return true;
	}
	
	function getNodeLine()
	{
		if (getFirst() && getLast())
		{
			if (getParent())
				return "¦¦";
			else
				return "¦¡";
		}
		else if (getFirst())
		{
			if (getParent())
				return "¦§";
			else
				return "¦£";
		}
		else if (getLast())
			return "¦¦";
		else
			return "¦§";
	}
	
	function printNode()
	{
		var Img;
		var BtnImg;
		var NodeStr = getNodeStr() + getNodeLine();
		
		document.write("<table border=0 cellspacing=0 cellpadding=0 class='treectrl'><tr>");
		for (var i = 0; i < NodeStr.length; i++)
		{
			switch (NodeStr.charAt(i))
			{
			case "¦£":
				Img = "images/ftv2nodefirst.gif";
				break;
			case "¦§":
				Img = "images/ftv2nodemidl.gif";
				break;
			case "¦¦":
				Img = "images/ftv2nodelast.gif";
				break;
			case "¦¡":
				Img = "images/ftv2nodehline.gif";
				break;
			case "¦¢":
				Img = "images/ftv2nodevline.gif";
				break;
			default:
				Img = "images/ftv2nodeblank.gif";
			}
			
			document.write("<td background='"+Img+"'>");

			if (getChildLength() && i == NodeStr.length - 1)
			{
				if (getExpand())
					BtnImg = "images/ftv2node-.gif";
				else
					BtnImg = "images/ftv2node+.gif";
					
				document.write("<img src='"+BtnImg+"' name='btn_"+getLayerID()+"'>");
			}
			else
			{
				BtnImg = "images/ftv2nodeblank.gif";
				document.write("<img src='"+BtnImg+"'>");
			}

			document.write("</td>");
		}

		if (getChildLength())
		{
			if (getExpand())
			{
				document.write("<td background='images/expandchild.gif' id='icobg_"+getLayerID()+"'>");
				document.write("<img src='images/openfolder.gif' name='ico_"+getLayerID()+"'>");
			}
			else
			{
				document.write("<td background='images/collapsechild.gif' id='icobg_"+getLayerID()+"'>");
				document.write("<img src='images/closefolder.gif' name='ico_"+getLayerID()+"'>");
			}
		}
		else
		{
			document.write("<td background='image/collapsechild.gif' id='icobg_"+getLayerID()+"'>");
			document.write("<img src='images/linkicon.gif'>");
		}
		document.write("</td>");

		document.write("<td>&nbsp;");
		if (getLink()) document.write("<a href='"+getLink()+"' target='"+getTarget()+"'>");
		document.write(getText());
		if (getLink()) document.write("</a>");
		document.write("</td>");
		document.write("</tr></table>");
	}
};

