/*
 * Description 		: Folder object
 * Author			: Kim Dong-kyu (superkdk@tt.co.kr)
 * Last Modified	: 2004.10.14
 */
// Folder object
function Folder(sId, sPath) {

	this.sId = sId;			// id
	this.sPath = sPath;		// skin path
	this.htParent = new Array();
	this.htName = new Array();
	this.htType = new Array();
	this.htFile = new Array();
	this.nFolder = 0;
}

Folder.prototype.add = function(nFolderNo, nParentNo, sName, sType, cntFile) {
	this.htParent[nFolderNo] = nParentNo;
	this.htName[nFolderNo] = sName;
	this.htType[nFolderNo] = sType;
	this.htFile[nFolderNo] = cntFile;
	this.nFolder++;
}

// list folder.
Folder.prototype.list = function(nFolderNo, nLevel) {
	// indent
	var sIndent = "";
	for(var i = 1; i <= nLevel; i++) sIndent += "&nbsp;&nbsp;";
	// display
	var sDisplay = (nLevel == 0 ? "block" : "none");
	var nchild = 0;
	var cntFile = "";

	for(var key in this.htParent) {
		if(this.htParent[key] == nFolderNo) {
			nChild = this.child(key);
			document.write("<tr id='folder" + key + "' opened='0' level='" + (nLevel+1)
				+ "' child=" + nChild + " height='20' style='display:" + sDisplay + ";'><td>" + sIndent);

			// folder icon
			if(nChild != 0) {
				document.write(" <a href='javascript:folder.open(" + key + ");' onFocus='blur()'><img name='folder" + key + "_img' src='" + this.sPath + "images/folder_plus.gif' width='11' height='11' border='0' align='absmiddle'></a>");
			} else {
				document.write("&nbsp;&nbsp;&nbsp;&nbsp;");
			}

			// ÃßÈÄ Ãß°¡.
			//cntFile = (this.htFile[key] != 0 ? "(" + this.htFile[key] + ")" : "");
			if(this.htType[key].indexOf("image") != -1) {
				document.write(" <img src='" + this.sPath + "images/folder_img.gif' align=absmiddle> <a href='ttfilebox.cgi?id=" + this.sId + "&act=webhard&folder=" + key + "'>" + "<div id='folder" + key + "_name' style='display:inline;'> " + this.htName[key] + "</div></a>" + cntFile + "</td></tr>");
			} else {
				document.write(" <img src='" + this.sPath + "images/folder.gif' align=absmiddle> <a href='ttfilebox.cgi?id=" + this.sId + "&act=webhard&folder=" + key + "'>" + "<div id='folder" + key + "_name' style='display:inline;'> " + this.htName[key] + "</div></a>" + cntFile + "</td></tr>");
			}

			this.list(key, nLevel+1);
		}
	}
}

// count total number of children.
Folder.prototype.child = function(nFolderNo) {
	var cntChild = 0;

	for(var key in this.htParent) {
		if(this.htParent[key] == nFolderNo)
			cntChild++;
	}

	return cntChild;
}

// open folder.
Folder.prototype.open = function(nFolderNo) {
	// check on parameter.
	if(nFolderNo == 0) return;

	var oFolder = document.getElementById("folder" + nFolderNo);
	var oFolderImg = document.getElementById("folder" + nFolderNo + "_img");
	var bOpened = oFolder.getAttribute("opened");

	// toggle icon.
	if(bOpened == 0) {
		// open folder.
		oFolder.setAttribute("opened", 1);
		if(oFolderImg != null)
			oFolderImg.src = this.sPath + "images/folder_minus.gif";

		// show sub-folders.
		for(var key in this.htParent) {
			if(this.htParent[key] == nFolderNo)
				setDisplay("folder"+key, "block");
		}
	} else {
		// close folder.
		if(oFolder.getAttribute("child") != 0) {
			oFolder.setAttribute("opened", 0);
			if(oFolderImg != null)
				oFolderImg.src = this.sPath + "images/folder_plus.gif";
		}

		// hide sub-folders.
		for(var key in this.htParent) {
			if(this.htParent[key] == nFolderNo)
				this.close(key);
		}
	}
}

// close folder.
Folder.prototype.close = function(nFolderNo) {
	// check on parameter.
	if(nFolderNo == 0) return;

	var oFolder = document.getElementById("folder" + nFolderNo);
	var oFolderImg = document.getElementById("folder" + nFolderNo + "_img");

	oFolder.style.display = "none";

	if(oFolder.getAttribute("child") != 0) {
		oFolder.setAttribute("opened", 0);
		oFolderImg.src = this.sPath + "images/folder_plus.gif";
	}

	// hide sub-folders.
	for(var key in this.htParent) {
		if(this.htParent[key] == nFolderNo)
			this.close(key);
	}
}

Folder.prototype.closeAll = function() {
	var oFolder = null;
	var oFolderImg = null;
	var oFolderName = null;

	for(var key in this.htParent) {
		oFolder = document.getElementById("folder" + key);
		oFolderImg = document.getElementById("folder" + key + "_img");
		oFolderName = document.getElementById("folder" + key + "_name");

		if(oFolder.getAttribute("level") > 1)
			oFolder.style.display = "none";

		if(oFolder.getAttribute("child") != 0) {
			oFolder.setAttribute("opened", 0);
			oFolderImg.src = "./images/plus_icon.gif";
		}

		// remove highlight of a folder.
		if(oFolderName) {
			oFolderName.style.fontWeight = "normal";
		}
	}
}

// init list
Folder.prototype.init = function(nFolderNo) {
	var nParentNo = nFolderNo;
	var oFolderName = document.getElementById("folder" + nFolderNo + "_name");

	while(nParentNo != 0) {
		this.open(nParentNo);
		nParentNo = this.htParent[nParentNo];
	}
	// highlight current folder.
	if(oFolderName) {
		oFolderName.style.fontWeight = "bold";
	}
}

