
function Section(_instanceName) {
	this.instanceName = _instanceName;
	this.dir = new Array;
	this.rootMenu = new Array;
	this.menu = new Array;
	this.setDir = function() {
		var dir = new Array;
		try {dir[0] = gnb;} catch(e) {}
		try {dir[1] = depth1;} catch(e) {}
		try {dir[2] = depth2;} catch(e) {}
		try {dir[3] = depth3;} catch(e) {}
		try {dir[4] = depth4;} catch(e) {}
		for (var i=0; i<5; i++) {
			if (dir[i]!="") {
				try {
					this.dir.push(dir[i].trim());
				} catch(e) {
					break;
				}
			} else {
				break;
			}
		}
	}
	this.getDir = function(_index) {
		var dir = "";
		try {
			dir = this.dir[_index];
		} catch(e) {}
		return dir;
	}
	this.getMenuId = function(_index) {
		if (_index==null) _index = this.dir.length;
		var menuId = "";
		for (var i=0; i<this.dir.length; i++) {
			if (i<=_index) {
				if (menuId!="") menuId += "_";
				menuId += this.dir[i];
			} else {
				break;
			}
		}
		return menuId;
	}
	this.getLeftMenuId = function(_index) {
		_index += this.rootMenu.length;
		return this.getMenuId(_index);
	}
	this.addRootMenu = function(_id, _title, _url) {
		this.rootMenu.push({
			  id : _id.trim()
			, title : _title.trim()
			, url : _url.trim()
		});
	}
	this.addMenu = function(_id, _title, _url, _isSpecial) {
		_isSpecial = (_isSpecial==null) ? false : true;
		this.menu.push({
			  id : _id.trim()
			, title : _title.trim()
			, url : _url.trim()
			, isSpecial : _isSpecial
			, hasSubMenu : false
			, subMenu : new Array
		});
	}
	this.addSubMenu = function(_id, _title, _url, _isSpecial) {
		if (this.menu.length==0) return;
		_isSpecial = (_isSpecial==null) ? false : true;
		var lastMenuIndex = this.menu.length-1;
		if (!_isSpecial) {
			this.menu[lastMenuIndex].hasSubMenu = true;
		}
		this.menu[lastMenuIndex].subMenu.push({
			  id : _id.trim()
			, title : _title.trim()
			, url : _url.trim()
			, isSpecial : _isSpecial
		});
	}
	this.getHistoryHTML = function() {
		var history = new Array;
		var sHTML = '<a href="/">Home</a>';
		for (var i=0; i<this.rootMenu.length; i++) {
			history.push({
				  id : this.rootMenu[i].id
				, title : this.rootMenu[i].title
				, url : this.rootMenu[i].url
			});
		}
		var focusMenuId = this.getLeftMenuId(0);
		if (focusMenuId!="") {
			for (var i=0; i<this.menu.length; i++) {
				var menuId = this.menu[i].id;
				var menuTitle = this.menu[i].title;
				var menuUrl = this.menu[i].url;
				var hasSubMenu = this.menu[i].hasSubMenu;
				if (focusMenuId==menuId) {
					history.push({
						  id : menuId
						, title : menuTitle
						, url : menuUrl
					});
					if (this.menu[i].subMenu.length>0) {
						var focusSubMenuId = this.getLeftMenuId(1);
						if (focusSubMenuId!="") {
							for (var j=0; j<this.menu[i].subMenu.length; j++) {
								var subMenuId = this.menu[i].subMenu[j].id;
								var subMenuTitle = this.menu[i].subMenu[j].title;
								var subMenuUrl = this.menu[i].subMenu[j].url;
								if (focusSubMenuId==subMenuId) {
									history.push({
										  id : subMenuId
										, title : subMenuTitle
										, url : subMenuUrl
									});
								}
							}
						}
					}
				}
			}
		}
		
		for (var i=0; i<history.length; i++) {
			if (i<history.length-1) {
				sHTML += ' > <a href="'+history[i].url.escapeXml()+'">'+history[i].title.replace(/<br>/gi," ").replace(/&nbsp;/gi," ")+'</a>';
			} else {
				sHTML += ' > <strong>'+history[i].title.replace(/<br>/gi,"").replace(/&nbsp;/gi," ")+'</strong>';
			}
		}
		return sHTML;
	}
	
	this._menuOnOff = function(_obj, isOn) {
		if (_obj) {
			if (_obj.getAttribute("mouseAction")=="true") {
				var className = _obj.className.split("_")[0];
				if (isOn==true) {
					_obj.className = className + "_on";// ¸¶¿ì½º ¿À¹öµÆÀ»¶§
				} else {
					_obj.className = className;
				}
			}
		}
	}
	
	this.menuOn = function(_obj) {
		this._menuOnOff(_obj, true);
	}
	
	this.menuOff = function(_obj) {
		this._menuOnOff(_obj, false);
	}
	
	this.resetResizeMode = function(_menuId) {
		var subMenuArea = document.getElementById(_menuId + "-subMenuArea");
		if (subMenuArea) subMenuArea.setAttribute("isResizeMode","");
	}
	
	this.resizeToMinimizedHeight = function(_menuId, _isReCallMode) {
		if (_isReCallMode==null) _isReCallMode = false;
		var subMenuArea = document.getElementById(_menuId + "-subMenuArea");
		var subMenuOffset = document.getElementById(_menuId + "-subMenuOffset");
		if (subMenuArea&&subMenuOffset) {
			var isResizeMode = subMenuArea.getAttribute("isResizeMode");
			if (isResizeMode!="ing"||_isReCallMode) {
				subMenuArea.setAttribute("isResizeMode","ing");
				var speed = 10;
				var nowH = parseInt(subMenuArea.offsetHeight);
				var targetH = nowH - speed;
				if (targetH<=0) {
					subMenuArea.style.height = "1px";
					subMenuArea.style.display = "none";
					this.resetResizeMode(_menuId);
				} else {
					subMenuArea.style.height = targetH+"px";
					setTimeout(this.instanceName+".resizeToMinimizedHeight('"+_menuId+"', true)", 10);
				}
			}
		}
	}
	
	this.resizeToMaximizedHeight = function(_menuId, _isReCallMode) {
		if (_isReCallMode==null) _isReCallMode = false;
		var subMenuArea = document.getElementById(_menuId + "-subMenuArea");
		var subMenuOffset = document.getElementById(_menuId + "-subMenuOffset");
		if (subMenuArea&&subMenuOffset) {
			var isResizeMode = subMenuArea.getAttribute("isResizeMode");
			if (isResizeMode!="ing"||_isReCallMode) {
				subMenuArea.setAttribute("isResizeMode","ing");
				if (!_isReCallMode) subMenuArea.style.display = "";
				var speed = 10;
				var nowH = parseInt(subMenuArea.offsetHeight);
				var targetH = nowH + speed;
				subMenuArea.style.height = targetH+"px";
				var contentsH = parseInt(subMenuOffset.offsetHeight);
				if (targetH>contentsH) {
					subMenuArea.style.height = contentsH+"px";
					this.resetResizeMode(_menuId);
				} else {
					setTimeout(this.instanceName+".resizeToMaximizedHeight('"+_menuId+"', true)", 10);
				}
			}
		}
		
	}
	
	this.changeMaximizedMode = function(_menuId) {
		var subMenuArea = document.getElementById(_menuId + "-subMenuArea");
		if (subMenuArea) {
			var isResizeMode = subMenuArea.getAttribute("isResizeMode");
			if (isResizeMode!="ing") {
				var isMaximizedMode = (""+subMenuArea.getAttribute("isMaximizedMode")=="true") ? true : false;
				var buPlus = document.getElementById(_menuId + "-buPlus");
				var buMinus = document.getElementById(_menuId + "-buMinus");
				if (buPlus) buPlus.style.display = (isMaximizedMode) ? "" : "none";
				if (buMinus) buMinus.style.display = (isMaximizedMode) ? "none" : "";
				subMenuArea.setAttribute("isMaximizedMode",!isMaximizedMode);
				if (isMaximizedMode) {
					this.resizeToMinimizedHeight(_menuId);
				} else {
					this.resizeToMaximizedHeight(_menuId);
				}
			}
		}
	}
	
	this.getLeftMenuHTML = function() {
		var specialMenu = new Array;
		var subSpecialMenu = new Array;
		var nMenuCount = 0;
		var sHTML = '';
		var sTemp = '';
		sTemp += '<div id="leftmenu_box">\n';
		for (var i=0; i<this.menu.length; i++) {
			var menuId = this.menu[i].id;
			var menuTitle = this.menu[i].title;
			var menuUrl = this.menu[i].url;
			var hasSubMenu = this.menu[i].hasSubMenu;
			var isFocusMenu = (this.getLeftMenuId(0)==menuId) ? true : false;
			if (this.menu[i].isSpecial) {
				specialMenu.push({
					  id : menuId
					, title : menuTitle
					, url : menuUrl
				});
			} else {
				nMenuCount++;
				sTemp += '<div style="position:absolute;">';
				if (hasSubMenu) {
					sTemp += '<div id="'+menuId+'-buPlus" onClick="'+this.instanceName+'.changeMaximizedMode(\''+menuId+'\');" style="cursor:pointer;display:'+((isFocusMenu)?"none":"")+';"><img src="/images/common/menu/bu_plus.gif" align="absmiddle" border="0" class="mB3" hspace="2"></div>';
					sTemp += '<div id="'+menuId+'-buMinus" onClick="'+this.instanceName+'.changeMaximizedMode(\''+menuId+'\');" style="cursor:pointer;display:'+((isFocusMenu)?"":"none")+';"><img src="/images/common/menu/bu_minus.gif" align="absmiddle" border="0" class="mB3" hspace="2"></div>';
				} else {
					sTemp += '<img src="/images/common/menu/bu_dot.gif" align="absmiddle" border="0" class="mB3" hspace="2">';
				}
				sTemp += '</div>';
				sTemp += '<div onClick="location.href=\''+menuUrl.replaceQuot().escapeXml()+'\';" onMouseOver="'+this.instanceName+'.menuOn(this);" onMouseOut="'+this.instanceName+'.menuOff(this);" style="cursor:pointer;padding-left:19px;"';
				if (isFocusMenu) {
					if (hasSubMenu){
					sTemp += ' mouseAction="false" class="onedepth"';
					} else {
					sTemp += ' mouseAction="false" class="onedepth_on"';
					}
//					sTemp += ' mouseAction="false" class="onedepth"';
				} else {
					sTemp += ' mouseAction="true" class="onedepth"';
				}
				sTemp += '>';
				sTemp += menuTitle;
				sTemp += '</div>\n';
				
				if (hasSubMenu) {
					sTemp += '<div id="'+menuId+'-subMenuArea" style="overflow-y:hidden;"';
					if (isFocusMenu) {
						sTemp += ' isMaximizedMode="true"';
					} else {
						sTemp += ' isMaximizedMode="false" style="height:1px;display:none;"';
					}
					sTemp += '>\n';
					sTemp += '<div id="'+menuId+'-subMenuOffset">\n';
					for (var j=0; j<this.menu[i].subMenu.length; j++) {
						var subMenuId = this.menu[i].subMenu[j].id;
						var subMenuTitle = this.menu[i].subMenu[j].title;
						var subMenuUrl = this.menu[i].subMenu[j].url;
						var isFocusSubMenu = (this.getLeftMenuId(1)==subMenuId) ? true : false;
						if (!this.menu[i].subMenu[j].isSpecial) {
							sTemp += '<div onMouseOver="'+this.instanceName+'.menuOn(this);" onMouseOut="'+this.instanceName+'.menuOff(this);" style="cursor:pointer;"';
							if (isFocusSubMenu) {
								sTemp += ' mouseAction="false" class="twodepth_on"';
							} else {
								sTemp += ' mouseAction="true" class="twodepth"';
							}
							sTemp += ' onClick="location.href=\''+subMenuUrl.replaceQuot().escapeXml()+'\';"><img src="/images/common/menu/bu_left02_off.gif" align="absmiddle" border="0" class="mB3" hspace="2"> '+subMenuTitle+'</div>\n';
						
						}
						
					}
//					sTemp += '<div class="h8"><!-- Space 8 --></div>\n';
					sTemp += '</div>\n';
					sTemp += '</div>\n';
				}
				sTemp += '<img src="/images/common/trans.gif" width="145" height="1" class="bar"><br>\n';
				if (isFocusMenu) {
					for (var j=0; j<this.menu[i].subMenu.length; j++) {
						if (this.menu[i].subMenu[j].isSpecial) {
							subSpecialMenu.push({
								  id : this.menu[i].subMenu[j].id
								, title : this.menu[i].subMenu[j].title
								, url : this.menu[i].subMenu[j].url
							});
						}
					}
				}
			}
		}
		sTemp += '</div>\n';
		sTemp += '<img src="/images/' + cur_Dir + '/menu/bg_left02.gif" alt="" align="absmiddle"><br>\n';
		
		if (nMenuCount>0) {
			sHTML += sTemp;
			
			//alert(sHTML);
		}
		
		for (var i=0; i<subSpecialMenu.length; i++) {
			specialMenu.push({
				  id : subSpecialMenu[i].id
				, title : subSpecialMenu[i].title
				, url : subSpecialMenu[i].url
			});
		}
		for (var i=0; i<specialMenu.length; i++) {
			sHTML += '<ul id="leftmenu_dok">\n';
			sHTML += '<li';
			if (this.getMenuId()==specialMenu[i].id) {
				sHTML += ' class=sel ';
			}
			sHTML += '>';
			sHTML += '<a href="'+specialMenu[i].url.escapeXml()+'">'+specialMenu[i].title+'</a>';
			sHTML += '</li>\n';
			sHTML += '</ul>\n';
		}
		
		return sHTML;
	}
}


var section = new Section("section");
