hehihoho3@gmail.com 01-26
5648 관리자 메인비주얼관리 수정
@21ed4d02aa2c89fdb56bf053c4f027572592175c
.gitignore
--- .gitignore
+++ .gitignore
@@ -77,4 +77,5 @@
 /fairnet.iml
 
 # Mac OS
-.DS_Store
(No newline at end of file)
+.DS_Store
+/CLAUDE.md
src/main/resources/log4j2.xml
--- src/main/resources/log4j2.xml
+++ src/main/resources/log4j2.xml
@@ -11,10 +11,10 @@
 		</Console>
 	</Appenders>
 	<Loggers>
-		<Logger name="org.apache" level="DEBUG"></Logger>
-		<Logger name="org.springframework" level="DEBUG"></Logger>
+     	<Logger name="org.apache" level="ERROR"></Logger>
+		<Logger name="org.springframework" level="ERROR"></Logger>
 
-		<Logger name="egovframework" level="DEBUG"></Logger>
+		<Logger name="egovframework" level="ERROR"></Logger>
 		<Logger name="egovframework.rte" level="DEBUG"></Logger>
 
 		<Logger name="com.ibatis.sqlmap" level="DEBUG"></Logger>
src/main/webapp/WEB-INF/jsp/sym/mnu/mpm/EgovMenuCreatSelectJtree.jsp
--- src/main/webapp/WEB-INF/jsp/sym/mnu/mpm/EgovMenuCreatSelectJtree.jsp
+++ src/main/webapp/WEB-INF/jsp/sym/mnu/mpm/EgovMenuCreatSelectJtree.jsp
@@ -1,949 +1,1123 @@
-<%--
-  Class Name : EgovOrgChartManage.jsp
-  Description : 조직도 관리 화면
-  Modification Information
- 
-      수정일         수정자                   수정내용
-    -------    --------    ---------------------------
-     2018.06.11   ITN              최초 생성
- 
-    author   : ITN
-    since    : 2018.06.11
---%>
-<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
-<%@ page import="kcc.com.cmm.service.EgovProperties"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
-<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
-<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
-<!DOCTYPE html>
-<html>
-<head>
-<meta http-equiv="Content-Language" content="ko">
-<link href="<c:url value='/'/>css/jstree/themes/default/style.min.css" rel="stylesheet" type="text/css">
-<%-- <link href="<c:url value='/'/>css/style.min.css" rel="stylesheet" type="text/css"> --%>
-<style>
-/* .jstree_orgChart {
+<%-- Class Name : EgovOrgChartManage.jsp Description : 조직도 관리 화면 Modification Information 수정일 수정자 수정내용 ------- --------
+	--------------------------- 2018.06.11 ITN 최초 생성 author : ITN since : 2018.06.11 --%>
+	<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
+		<%@ page import="kcc.com.cmm.service.EgovProperties" %>
+			<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+				<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
+					<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+						<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
+							<!DOCTYPE html>
+							<html>
+
+							<head>
+								<meta http-equiv="Content-Language" content="ko">
+								<link href="<c:url value='/'/>css/jstree/themes/default/style.min.css" rel="stylesheet"
+									type="text/css">
+								<%-- <link href="<c:url value='/'/>css/style.min.css" rel="stylesheet" type="text/css">
+									--%>
+									<style>
+										/* .jstree_orgChart {
 	overflow: auto;
 	border: 1px solid silver;
 	min-height: 100px;
 	width: 290px;
 } */
-</style>
-<script src="<c:url value='/js/jquery-1.12.4.min.js' />"></script> 
-<script src="<c:url value='/js/jstree.min.js' />"></script>
-<script src="<c:url value='/js/EgovCmmUtl.js' />"></script>
-<script>
-/*********************************
- * jstree
- *********************************
- */
- 
- $( document ).ready(function() {
-	jstreeInit();
-});
+									</style>
+									<script src="<c:url value='/js/jquery-1.12.4.min.js' />"></script>
+									<script src="<c:url value='/js/jstree.min.js' />"></script>
+									<script src="<c:url value='/js/EgovCmmUtl.js' />"></script>
+									<script>
+										/*********************************
+										 * jstree
+										 *********************************
+										 */
 
-var newNodeId = "";
-function jstreeInit() {
-	$('#itn_organization').jstree({
-		"core" : {
-			"animation" : 0,
-			"multiple" : false,
-			"check_callback" : true, 
-			"themes" : { "stripes" : true },
-			"data" : {
-				"url" : "<c:url value='/sym/mnu/mcm/EgovMenuCreatSelectJtreeAjax.do'/>",
-				"dataType" : "json",
-				"data" : function (node) {
-					/* console.log("node.id :: ", node.id); */
-					return {'id' : node.id,  'authorCode' : $('#authorCode').val() };
-				}
-			}
-		},
-		"types" : {
-			"#" : {
-				/* "max_children" : 4, */
-				"max_depth" : 5,
-				"valid_children" : ["root"]
-			},
-			"root" : {
-				"icon" : "glyphicon glyphicon-flash",
-				"valid_children" : ["default"]
-			},
-		    "default" : {
-				"valid_children" : ["default","file"]
-		    },
-		    "file" : {
-				"icon" : "jstree-file",
-				"valid_children" : []
-			}
-		},
-		"plugins" : [
-			"contextmenu"
-// 			, "dnd"
-			, "search"
-			, "types"
-		]
-	})
-	.bind('loaded.jstree', function(e, data) {
-		$('#itn_organization').jstree('open_node' , $('#0') );
-		
-		var tree = $.jstree.reference('itn_organization');
-		tree.select_node(tree.get_node('#').children[0]);
-	})
-	.on('select_node.jstree', function (e, data) {
-		if(!$('.organ_rightbox').is(":visible")){
-			$(".organ_rightbox").show();
-		}
-		/*  메뉴  선택 */
-		var menuNo = data.node.id;
-		var upperMenuId = data.node.parent;
-		//하위 메뉴가 있으면 메뉴코드 변경못하게
-		if(data.node.children.length > 0){
-			$('#menuNo').attr("readonly",true);
-			$('#existChildNode').val("Y"); 
-		}else{
-			$('#menuNo').attr("readonly",false);
-			$('#existChildNode').val("N"); 
-		}
-		
-		/*  메뉴  선택 */
-		var menuNo = data.node.id;
-		//메뉴 추가시 자동 선택되게
-		if(newNodeId !=""){
-			menuNo = newNodeId ;
-			newNodeId = "";
-			$('#'+data.instance.get_node(menuNo).a_attr.id).trigger("click") //클릭 이벤트 발생
-		}
-		
-		$("#menuTopNm").text(data.node.text);
-		
-		$.ajax({
-			type:"POST",
-			url:"<c:url value='/sym/mnu/mcm/EgovMenuInfoAjax.do' />",
-			data:{ "menuNo" : menuNo , "authorCode" : $('#authorCode').val()},
-			dataType:'json',
-			//timeout:(1000*30),
-			success : function(returnData, status) {
-				if (status == "success") {
-					var menuManageVO = returnData.menuManageVO;
-					var menuUserTypeList = returnData.menuUserTypeList;
-					var authorList = returnData.authorList;
-					fn_select_menuNo(menuManageVO, menuUserTypeList, authorList);
-				} else { alert("ERROR"); }
-			},
-			error : function(request , status, error) {
-			},
-			complete : function () {
-				deleteLodingBar();
-			}
-		});
-	})
-	.on('rename_node.jstree', function (e, data) { //메뉴명 변경
-		var nodeId = data.node.id; 
-		var oldText = data.old;
-		var newText = data.text;
-		
-		if (nodeId > 0) {
-			/* 부서명 변경 */
-			if (oldText != newText) {
-				if (confirm("메뉴명을  변경하시겠습니까?" )) {
-					$.ajax({
-						type:"POST",
-						url:"<c:url value='/sym/mnu/mcm/EgovMenuInfoNmUpdateAjax.do' />",
-						data:{ "menuNo" : nodeId, "menuNm" :  newText },
-						dataType:'json',
-						success : function(returnData, status) {
-							if (status == "success") {
-								alert("메뉴명이 변경되었습니다.");
-							} else { alert("ERROR"); }
-						},
-						error : function(request , status, error) {
-							alert("메뉴명이 변경이 실패되었습니다.");
-						},
-						complete : function () {
-							data.instance.refresh();
-							deleteLodingBar();
-						}
-					});
-				} else {
-					data.instance.refresh();
-				}
-			}
-		} else {/* 메뉴 추가 */
-			
-		}
-	})
-	.on('delete_node.jstree', function (e, data) {
-		/* 메뉴 삭제  */
-		if(data.node.children.length != 0){
-			alert("하위 메뉴를 먼저 삭제 후 메뉴를 삭제해 주세요.");
-			data.instance.refresh();
-		}else{
-			if (confirm("[" + data.node.text + "]" + " 메뉴를 삭제하시겠습니까?")){
-				$.ajax({
-					type:"POST",
-					url:"<c:url value='/sym/mnu/mcm/EgovMenuInfoDeleteAjax.do' />",
-					data:{ "menuNo" : data.node.id , "authorCode" : $('#authorCode').val() },
-					dataType:'json',
-					//timeout:(1000*30),
-					success : function(returnData, status) {
-						if (status == "success") {
-							alert("메뉴 정보가 삭제되었습니다.");
-							fn_init_menuInfo();
-						} else { alert("ERROR"); }
-					},
-					error : function(request , status, error) {
-						alert("메뉴 정보 삭제가 실패되었습니다.");
-						//alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
-					},
-					complete : function () {
-						data.instance.refresh();
-						deleteLodingBar();
-					}
-				});
-			} else {
-				data.instance.refresh();
-			}
-		}
-		
-	})
-	.on('create_node.jstree', function(e, data) {
-		
-		if($("#menuType option:selected").val() != "M"){
-			alert("타입이 메뉴가 아니면 하위 메뉴를 등로 할 수 없습니다.")
-			location.reload(true);
-			return;
-		}
-		
-		if (confirm("메뉴를 추가하시겠습니까?")){
-			var instance = data.instance;
-			var menuNm = data.text;
-			var upperMenuId = data.node.parent;
-			var menuOrdr = 1;
-			var childrenNodes = instance.get_node(upperMenuId).children;
-			
-			// 하위 메뉴 있을 시 마지막 부서 sort_ord + 1
-			if (childrenNodes.length > 1) {
-				//var lastChildrenNode = instance.get_node(childrenNodes[childrenNodes.length - 2]);
-				//sortOrd = lastChildrenNode.li_attr.sortOrd + 1;
-				menuOrdr = childrenNodes.length ;
-			}
-			
-			$.ajax({
-				type:"POST",
-				url:"<c:url value='/sym/mnu/mcm/EgovMenuInfoInsertAjax.do' />",
-				data:{ "menuNm" : menuNm
-						, "upperMenuId" :  upperMenuId
-						,  "menuOrdr" : menuOrdr 
-						, "authorCode" : $('#authorCode').val()
-						, "rootMenuId" : data.node.parents[data.node.parents.length-2]
-					},
-				dataType:'json',
-				//timeout:(1000*30),
-				success : function(returnData, status) {
-					if (returnData.status == "success") {
-						alert("메뉴가 추가 되었습니다.");
-						//fn_select_menuNo(returnData.menuManageVO, returnData.menuManageVO.menuUserType);
-						newNodeId = returnData.menuManageVO.menuNo ;
-					}else if(returnData.status == "dupl"){ 
-						alert("중복된 아이디가 있습니다.\n 중복된 아이디변경/삭제후 다시 추가해 주세요\n"+ "("+returnData.menuManageResultVO.menuCours+")"); 
+										$(document).ready(function () {
+											jstreeInit();
+										});
 
-					}else{
-						alert("메뉴 추가가 실패하였습니다.");
+										var newNodeId = "";
+										var isNewlyCreated = false; // 방금 생성된 메뉴인지 구별하는 플래그
+										function jstreeInit() {
+											$('#itn_organization').jstree({
+												"core": {
+													"animation": 0,
+													"multiple": false,
+													"check_callback": true,
+													"themes": { "stripes": true },
+													"data": {
+														"url": "<c:url value='/sym/mnu/mcm/EgovMenuCreatSelectJtreeAjax.do'/>",
+														"dataType": "json",
+														"data": function (node) {
+															/* console.log("node.id :: ", node.id); */
+															return { 'id': node.id, 'authorCode': $('#authorCode').val() };
+														}
+													}
+												},
+												"types": {
+													"#": {
+														/* "max_children" : 4, */
+														"max_depth": 5,
+														"valid_children": ["root"]
+													},
+													"root": {
+														"icon": "glyphicon glyphicon-flash",
+														"valid_children": ["default"]
+													},
+													"default": {
+														"valid_children": ["default", "file"]
+													},
+													"file": {
+														"icon": "jstree-file",
+														"valid_children": []
+													}
+												},
+												"plugins": [
+													"contextmenu"
+													// 			, "dnd"
+													, "search"
+													, "types"
+												]
+											})
+												.bind('loaded.jstree', function (e, data) {
+													$('#itn_organization').jstree('open_node', $('#0'));
 
-					}
-				},
-				error : function(request , status, error) {
-					alert("메뉴 추가가 실패되었습니다.")
-				},
-				complete : function () {
-					data.instance.refresh();  
-					deleteLodingBar();
-				}
-			});                                              
-		}else{
-			data.instance.refresh();
-		}
-  	})
-  	.on('move_node.jstree', function (e, data) {
-		/* 메뉴 위치 변경 */
-		var instance = data.instance;
-		var menuNo = data.node.id;
-		var childrenNodes = instance.get_node(menuNo).children;
-		
-		if (confirm("메뉴 위치를 변경하시겠습니까?" )){
-			//var partIdx = data.node.id;
-			var upperMenuId = data.parent;
-			var menuOrdr = data.position + 1;
-			var sortOver = "A" ;
-			$.ajax({
-				type:"POST",
-				url:"<c:url value='/sym/mnu/mcm/EgovMenuInfoMoveAjax.do' />",
-				data:{ "menuNo" : menuNo, "upperMenuId" :  upperMenuId,  "menuOrdr" : menuOrdr , "authorCode" : $('#authorCode').val()},
-				dataType:'json',
-				success : function(returnData, status) {
-					if (status == "success") {
-						alert("메뉴 위치가 변경되었습니다.");
-					} else { alert("ERROR"); }
-				},
-				error : function(request , status, error) {
-					alert("메뉴 위치 변경이 실패되었습니다.");
-				},
-				complete : function () {
-					data.instance.refresh();
-					deleteLodingBar();
-				}
-			});
-		} else {
-			data.instance.refresh();
-		}
-	})	
-	;
-  	
-	
-}
-	
-//메뉴 정보 세팅
-function fn_select_menuNo(menuManageVO, menuUserTypeList, authorList){
-	var tmpHtml = "";
-	if(menuManageVO!=null){
-		$('#menuNo').val(menuManageVO.menuNo);
-		$('#tmp_Id').val(menuManageVO.menuNo);
-		$('#menuCours').text(menuManageVO.menuCours);
-		$('#menuOrdr').val(menuManageVO.menuOrdr);
-		$('#menuNm').val(menuManageVO.menuNm);                                                                         
-		$('#menuDc').val(menuManageVO.menuDc);
-		$('#upperMenuIdText').text(menuManageVO.upperMenuId);
-		$('#upperMenuId').val(menuManageVO.upperMenuId);
-		$('#progrmFileNm').val(menuManageVO.progrmFileNm);
-		/* $('#progrmFileNmText').text(menuManageVO.progrmFileNm); */
-		$('#tmp_Name').val(menuManageVO.progrmFileNm);
-		$('#dc_Name').val(menuManageVO.menuDc);
-		$('#relateImageNm').val(menuManageVO.relateImageNm);
-		$('#relateImagePath').val(menuManageVO.relateImagePath);
-		$('#userType').val(menuManageVO.userType);
-		$('#url').val(menuManageVO.url);
-		$('#useYn').val(menuManageVO.useYn);
-		$('#satisYn').val(menuManageVO.satisYn);
-		if(""!=menuManageVO.emplyrId) $('#emplyrId').val(menuManageVO.emplyrId); //담당자 세팅
-		if(""!=menuManageVO.emplyrIdTxt) $('#emplyrIdTxt').val(menuManageVO.emplyrIdTxt); //담당자 세팅
-		
-		if(menuManageVO.satisYn == null){
-			$('#satisYn').val('N')
-		}
-		$("#menuTopNm").text( menuManageVO.menuNm );
-		$("#progrmHtmlFileId").val( menuManageVO.progrmHtmlFileId );
-		$("#progrmBbsId").val(menuManageVO.progrmBbsId);
-		$('#progrmFileNm_tmp').val(menuManageVO.progrmFileNm);
-		var menuType = menuManageVO.menuType ;
-		
-		if(menuType == "M"){
-			$("#satisTr").css("display", "none");
-		}else{
-			$("#satisTr").css("display", "");
-		}
-		if(menuManageVO.progrmFileNm == 'dir' || menuType == 'M'){
-			$("#menuType").val("M"); //메뉴로 세팅
-			$('#progrmFileNm').attr("readonly", true);
-			$('#progrmFileNm_tmp').val("");
-			$('#url_tmp').val("");
-		}else{
-			$("#menuType").val(menuType);
-			//$('#progrmFileNm').attr("readonly", false);
-			$('#url_tmp').val(menuManageVO.url);
-		}
-		
-		//메뉴타입 설정
-		initShowUrl('Y');
-		$('#url').val(menuManageVO.url);
-		$(".main1_delete_btn").removeAttr("onclick");
-		$(".main1_delete_btn").attr("onclick", "fn_delete_menuInfo('"+menuManageVO.menuNo+"' , '"+menuManageVO.progrmFileNm+"' );return false;");
-		$(".main1_save_btn").removeAttr("onclick");
-		$(".main1_save_btn").attr("onclick", "fn_save_menuInfo('"+menuManageVO.menuNo+"');return false;");
-		$('.tr_item').remove();
-		if( ( "P" == $('#menuType').val() || "C" == $('#menuType').val()) && "ROLE_ANONYMOUS"==$('#authorCode').val() ){ //추가 게시판 조회(프로그램/사용자 화면만 조회)
-			$('#tr_add_bbs').show();
-			set_bbs();
-		}else{
-			$('#tr_add_bbs').hide();
-		}
-		
-		$('#htmlComfirm').hide();
-		if(""!=menuManageVO.progrmHtmlFileId){
-			$('#htmlComfirm').show();
-			$('#htmlComfirm').css("display","inline-block");
-			$('#a_contentLink').attr("onclick" , "htmlComfirm('"+menuManageVO.progrmHtmlFileId+"');")
-		}
-		
-		if(menuManageVO.menuNo > 10){
-			$('#menuOpen').show();
-	 		var authorChkList = $("input[name=authorChkList]");
-	 		
-	 		$("input[name=authorChkList]").prop('checked', false);
-	 		
-			for(var i = 0 ; i < authorChkList.size() ; i++){
-				for(var j = 0 ; j < authorList.length ; j++){
-					if(authorChkList[i].id == authorList[j].authorCode){
-						authorChkList[i].checked = true;
-					}
-				}
-			}
-		}else{
-			$('#menuOpen').hide();
-		}
-		
-	}
-}
+													var tree = $.jstree.reference('itn_organization');
 
-//메뉴  정보 삭제
-function fn_delete_menuInfo(menuNo , progrmFileNm ) {
-	if(menuNo == null || "undefined"== menuNo){
-		alert("삭제 하려는 메뉴를 먼저 선택해주세요.");
-		return ;
-	}
-	
-	var instance = $('#itn_organization').jstree(true);
-	if(instance.get_node(menuNo).children.length != 0){
-		alert("하위 메뉴를 먼저 삭제 후 메뉴를 삭제해 주세요.");
-		return;
-	}
-	
-	if (confirm("메뉴를 삭제 하시겠습니까?")){
-		$.ajax({
-			type:"POST",
-			"url" : "<c:url value='/sym/mnu/mcm/EgovMenuInfoDeleteAjax.do'/>",
-			data:{ "menuNo" : menuNo , "progrmFileNm" : progrmFileNm , "authorCode" : $('#authorCode').val() },
-			dataType:'json',
-			//timeout:(1000*30),
-			success : function(returnData, status) {
-				if (returnData.status == "success") {
-					// 직원 목록 갱신
-					var instance = $('#itn_organization').jstree(true);
-					//$("#" + instance.get_node(partIdx).a_attr.id).trigger("click");
-					alert("메뉴 정보가 삭제 되었습니다.");
-					$("#itn_organization").jstree("refresh");
-					fn_init_menuInfo();
-				} else if(returnData.status == "duplPk"){
-					alert("삭제하려는 메뉴를 참조하고 있는 메뉴가 있습니다.\n 참조하는 메뉴를 삭제후 다시 시도해 주세요\n"+ "("+returnData.menuManageResultVO.menuCours+")");
+													if (newNodeId != "") {
+														// 노드 존재 여부 확인 및 부모 노드 열기
+														var node = tree.get_node(newNodeId);
+														if (node) {
+															// 부모 노드 열기
+															tree.open_node(node.parent);
 
-				}					
-				else { 
-					alert("메뉴 삭제가 실패되었습니다."); 
+															tree.deselect_all();
+															tree.select_node(newNodeId);
 
-				} 
-			},
-			error : function(request , status, error) {
-				alert("메뉴 삭제가 실패되었습니다..");
-			},
-			complete : function (){
-				deleteLodingBar();
-			}
-		});
-	}
-}
+															// tmp_Id 필드 동기화
+															$('#tmp_Id').val(newNodeId);
+														}
+														newNodeId = "";
+													} else {
+														if (tree.get_node('#').children.length > 0) {
+															tree.select_node(tree.get_node('#').children[0]);
+														}
+													}
+												})
+												.on('select_node.jstree', function (e, data) {
+													if (!$('.organ_rightbox').is(":visible")) {
+														$(".organ_rightbox").show();
+													}
+													/*  메뉴  선택 */
+													var menuNo = data.node.id;
+													var upperMenuId = data.node.parent;
+													//하위 메뉴가 있으면 메뉴코드 변경못하게
+													if (data.node.children.length > 0) {
+														$('#menuNo').attr("readonly", true);
+														$('#existChildNode').val("Y");
+													} else {
+														$('#menuNo').attr("readonly", false);
+														$('#existChildNode').val("N");
+													}
 
-//메뉴정보 init(메뉴 초기화)
-function fn_init_menuInfo() {
-	$("#menuTopNm").text("메뉴선택");
-	$("#menuForm input[type=text]").val("")
-	$('#menuCours').text("");
-	$('#upperMenuIdText').text("");
-	/* $('#progrmFileNmText').text(""); */
-}
+													/*  메뉴  선택 */
+													var menuNo = data.node.id;
 
-//메뉴 초기화
-function jstreeRefresh() {
-	var searchForm = document.searchForm ;
-	searchForm.authorCode.value = $('#authorCode').val();
-	searchForm.submit();
-}
+													$("#menuTopNm").text(data.node.text);
+
+													// 방금 생성된 메뉴인 경우 서버 조회를 스킵 (이미 데이터가 세팅되어 있음)
+													if (isNewlyCreated) {
+														isNewlyCreated = false; // 플래그 초기화
+														console.log("새로 생성된 메뉴 - 서버 조회 스킵: " + menuNo);
+														return; // 서버 조회하지 않고 종료
+													}
+
+													$.ajax({
+														type: "POST",
+														url: "<c:url value='/sym/mnu/mcm/EgovMenuInfoAjax.do' />",
+														data: { "menuNo": menuNo, "authorCode": $('#authorCode').val() },
+														dataType: 'json',
+														//timeout:(1000*30),
+														success: function (returnData, status) {
+															if (status == "success") {
+																var menuManageVO = returnData.menuManageVO;
+																var menuUserTypeList = returnData.menuUserTypeList;
+																var authorList = returnData.authorList;
+																fn_select_menuNo(menuManageVO, menuUserTypeList, authorList);
+															} else { alert("ERROR"); }
+														},
+														error: function (request, status, error) {
+														},
+														complete: function () {
+															deleteLodingBar();
+														}
+													});
+												})
+												.on('rename_node.jstree', function (e, data) { //메뉴명 변경
+													var nodeId = data.node.id;
+													var oldText = data.old;
+													var newText = data.text;
+
+													if (nodeId > 0) {
+														/* 부서명 변경 */
+														if (oldText != newText) {
+															if (confirm("메뉴명을  변경하시겠습니까?")) {
+																$.ajax({
+																	type: "POST",
+																	url: "<c:url value='/sym/mnu/mcm/EgovMenuInfoNmUpdateAjax.do' />",
+																	data: { "menuNo": nodeId, "menuNm": newText },
+																	dataType: 'json',
+																	success: function (returnData, status) {
+																		if (status == "success") {
+																			alert("메뉴명이 변경되었습니다.");
+																		} else { alert("ERROR"); }
+																	},
+																	error: function (request, status, error) {
+																		alert("메뉴명이 변경이 실패되었습니다.");
+																	},
+																	complete: function () {
+																		data.instance.refresh();
+																		deleteLodingBar();
+																	}
+																});
+															} else {
+																data.instance.refresh();
+															}
+														}
+													} else {/* 메뉴 추가 */
+
+													}
+												})
+												.on('delete_node.jstree', function (e, data) {
+													/* 메뉴 삭제  */
+													if (data.node.children.length != 0) {
+														alert("하위 메뉴를 먼저 삭제 후 메뉴를 삭제해 주세요.");
+														data.instance.refresh();
+													} else {
+														if (confirm("[" + data.node.text + "]" + " 메뉴를 삭제하시겠습니까?")) {
+															$.ajax({
+																type: "POST",
+																url: "<c:url value='/sym/mnu/mcm/EgovMenuInfoDeleteAjax.do' />",
+																data: { "menuNo": data.node.id, "authorCode": $('#authorCode').val() },
+																dataType: 'json',
+																//timeout:(1000*30),
+																success: function (returnData, status) {
+																	if (status == "success") {
+																		alert("메뉴 정보가 삭제되었습니다.");
+																		fn_init_menuInfo();
+																	} else { alert("ERROR"); }
+																},
+																error: function (request, status, error) {
+																	alert("메뉴 정보 삭제가 실패되었습니다.");
+																	//alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
+																},
+																complete: function () {
+																	data.instance.refresh();
+																	deleteLodingBar();
+																}
+															});
+														} else {
+															data.instance.refresh();
+														}
+													}
+
+												})
+												.on('create_node.jstree', function (e, data) {
+
+													if ($("#menuType option:selected").val() != "M") {
+														alert("타입이 메뉴가 아니면 하위 메뉴를 등로 할 수 없습니다.")
+														location.reload(true);
+														return;
+													}
+
+													if (confirm("메뉴를 추가하시겠습니까?")) {
+														var instance = data.instance;
+														var menuNm = data.text;
+														var upperMenuId = data.node.parent;
+														var menuOrdr = 1;
+														var childrenNodes = instance.get_node(upperMenuId).children;
+
+														// 하위 메뉴 있을 시 마지막 부서 sort_ord + 1
+														if (childrenNodes.length > 1) {
+															//var lastChildrenNode = instance.get_node(childrenNodes[childrenNodes.length - 2]);
+															//sortOrd = lastChildrenNode.li_attr.sortOrd + 1;
+															menuOrdr = childrenNodes.length;
+														}
+
+														$.ajax({
+															type: "POST",
+															url: "<c:url value='/sym/mnu/mcm/EgovMenuInfoInsertAjax.do' />",
+															data: {
+																"menuNm": menuNm
+																, "upperMenuId": upperMenuId
+																, "menuOrdr": menuOrdr
+																, "authorCode": $('#authorCode').val()
+																, "rootMenuId": data.node.parents[data.node.parents.length - 2]
+															},
+															dataType: 'json',
+															//timeout:(1000*30),
+															success: function (returnData, status) {
+																if (returnData.status == "success") {
+																	alert("메뉴가 추가 되었습니다.");
+
+																	var instance = data.instance;
+																	var realMenuNo = returnData.menuManageVO.menuNo;
+
+																	// 임시 노드 ID를 실제 메뉴 번호로 변경 (refresh 불필요)
+																	instance.set_id(data.node, realMenuNo);
+
+																	newNodeId = realMenuNo;
+																	isNewlyCreated = true; // 새 메뉴 생성 플래그 설정
+
+																	// 메뉴 생성 후 정보 미리 로드
+																	fn_select_menuNo_before_refresh(returnData.menuManageVO);
+
+																	// 변경된 노드 선택
+																	instance.deselect_all();
+																	instance.select_node(realMenuNo);
+
+																	deleteLodingBar();
+																} else if (returnData.status == "dupl") {
+																	alert("중복된 아이디가 있습니다.\n 중복된 아이디변경/삭제후 다시 추가해 주세요\n" + "(" + returnData.menuManageResultVO.menuCours + ")");
+																	// 실패 시에만 refresh
+																	data.instance.refresh();
+																	deleteLodingBar();
+																} else {
+																	alert("메뉴 추가가 실패하였습니다.");
+																	// 실패 시에만 refresh
+																	data.instance.refresh();
+																	deleteLodingBar();
+																}
+															},
+															error: function (request, status, error) {
+																alert("메뉴 추가가 실패되었습니다.");
+																data.instance.refresh();
+																deleteLodingBar();
+															}
+														});
+													} else {
+														data.instance.refresh();
+													}
+												})
+												.on('move_node.jstree', function (e, data) {
+													/* 메뉴 위치 변경 */
+													var instance = data.instance;
+													var menuNo = data.node.id;
+													var childrenNodes = instance.get_node(menuNo).children;
+
+													if (confirm("메뉴 위치를 변경하시겠습니까?")) {
+														//var partIdx = data.node.id;
+														var upperMenuId = data.parent;
+														var menuOrdr = data.position + 1;
+														var sortOver = "A";
+														$.ajax({
+															type: "POST",
+															url: "<c:url value='/sym/mnu/mcm/EgovMenuInfoMoveAjax.do' />",
+															data: { "menuNo": menuNo, "upperMenuId": upperMenuId, "menuOrdr": menuOrdr, "authorCode": $('#authorCode').val() },
+															dataType: 'json',
+															success: function (returnData, status) {
+																if (status == "success") {
+																	alert("메뉴 위치가 변경되었습니다.");
+																} else { alert("ERROR"); }
+															},
+															error: function (request, status, error) {
+																alert("메뉴 위치 변경이 실패되었습니다.");
+															},
+															complete: function () {
+																data.instance.refresh();
+																deleteLodingBar();
+															}
+														});
+													} else {
+														data.instance.refresh();
+													}
+												})
+												;
 
 
-//메뉴 정보 저장. 등록/수정
-function fn_save_menuInfo(menuNo) {
-	if(menuNo == null || "undefined"== menuNo){
-		alert("저장 하려는 메뉴를 먼저 메뉴트리에서 생성해 주세요."); return ;
-	}
-	
-	var menuForm = document.menuForm;
-	if(""==menuForm.menuNo.value){
-		alert("메뉴번호는 필수 값입니다"); return;
-	}
-	
-	if(!$.isNumeric(menuForm.menuNo.value)){
-		alert("메뉴번호는 숫자만 가능합니다."); return;
-	}
-	
-	if(!$.isNumeric(menuForm.menuOrdr.value)){
-		alert("메뉴순서는 숫자만 가능합니다."); return;
-	}
-	
-	var menuType = $("#menuType option:selected").val();
-	if(menuType !="M"){
-		if($("#progrmFileNm").val() == ""){
-			alert("프로그램 파일명은 필수 값입니다");
-			return;
-		}
-	}
-	
-	if(!confirm("저장하시겠습니까?")) return;
-	
- 	var url = "";
-	url = "<c:url value='/sym/mnu/mcm/EgovMenuInfoUpdateAjax.do'/>";
-	var params = $(menuForm).serialize();
-	$.ajax({
-		type:"POST",
-		"url":url,
-		data:params,
-		dataType:'json',
-		success : function(returnData, status) {
-			if (returnData.status == "success") {
-				alert("메뉴 정보가 저장 되었습니다.");
-				var instance = $('#itn_organization').jstree(true);
-				$('#'+instance.get_node($('#tmp_Id').val()).a_attr.id).trigger("click");//이전 메뉴id선택되게
-				$('#tmp_Id').val($('#menuNo').val());
-			} else if(returnData.status == "upperDupl"){
-				alert("상위 메뉴 번호가 있습니다.");
+										}
 
-			}else if(returnData.status == "dupl"){
-				alert("이미 사용하고 있는 메뉴 번호가 있습니다.");
+										//메뉴 정보를 refresh 전에 미리 세팅 (새 메뉴 생성 시 사용)
+										function fn_select_menuNo_before_refresh(menuManageVO) {
+											$('#menuNo').val(menuManageVO.menuNo);
+											$('#tmp_Id').val(menuManageVO.menuNo);
+											$('#menuNm').val(menuManageVO.menuNm);
+											$('#menuOrdr').val(menuManageVO.menuOrdr);
+											$('#upperMenuId').val(menuManageVO.upperMenuId);
+											$('#upperMenuIdText').text(menuManageVO.upperMenuId);
+											$('#progrmFileNm').val('dir');
+											$('#menuType').val('M');
+											$('#menuDc').val('새메뉴');
+											$('#relateImageNm').val('/');
+											$('#relateImagePath').val('/');
+											$('#userType').val('U');
+											$('#url').val('');
+											$('#useYn').val('Y');
+											$("#menuTopNm").text(menuManageVO.menuNm);
+											$("#menuCours").text('');
+											$('#progrmFileNm_tmp').val('dir');
+											$('#progrmFileNm').attr("readonly", true);
+											$("#satisTr").css("display", "none");
 
-			}else if(returnData.status == "duplProNm"){
-				alert("이미 사용하고 있는 프로그램파일명이 있습니다.");
+											// 버튼 이벤트 재설정 - 동적으로 현재 메뉴 번호 사용
+											$(".main1_delete_btn").removeAttr("onclick");
+											$(".main1_delete_btn").attr("onclick", "fn_delete_menuInfo($('#menuNo').val(), 'dir');return false;");
+											$(".main1_save_btn").removeAttr("onclick");
+											$(".main1_save_btn").attr("onclick", "fn_save_menuInfo($('#menuNo').val());return false;");
+										}
 
-			}else if(returnData.status == "authorFail"){
-				alert("메뉴권한등록에 실패했습니다.");
+										//메뉴 정보 세팅
+										function fn_select_menuNo(menuManageVO, menuUserTypeList, authorList) {
+											var tmpHtml = "";
+											if (menuManageVO != null) {
+												$('#menuNo').val(menuManageVO.menuNo);
+												$('#tmp_Id').val(menuManageVO.menuNo);
+												$('#menuCours').text(menuManageVO.menuCours);
+												$('#menuOrdr').val(menuManageVO.menuOrdr);
+												$('#menuNm').val(menuManageVO.menuNm);
+												$('#menuDc').val(menuManageVO.menuDc);
+												$('#upperMenuIdText').text(menuManageVO.upperMenuId);
+												$('#upperMenuId').val(menuManageVO.upperMenuId);
+												$('#progrmFileNm').val(menuManageVO.progrmFileNm);
+												/* $('#progrmFileNmText').text(menuManageVO.progrmFileNm); */
+												$('#tmp_Name').val(menuManageVO.progrmFileNm);
+												$('#dc_Name').val(menuManageVO.menuDc);
+												$('#relateImageNm').val(menuManageVO.relateImageNm);
+												$('#relateImagePath').val(menuManageVO.relateImagePath);
+												$('#userType').val(menuManageVO.userType);
+												$('#url').val(menuManageVO.url);
+												$('#useYn').val(menuManageVO.useYn);
+												$('#satisYn').val(menuManageVO.satisYn);
+												if ("" != menuManageVO.emplyrId) $('#emplyrId').val(menuManageVO.emplyrId); //담당자 세팅
+												if ("" != menuManageVO.emplyrIdTxt) $('#emplyrIdTxt').val(menuManageVO.emplyrIdTxt); //담당자 세팅
 
-			}else{ 
-				alert("ERROR");
-			} 
-		},
-		error : function(request , status, error) {
-			alert("메뉴 정보 저장이 실패되었습니다.");
-		},
-		complete : function () {
-			$("#itn_organization").jstree("refresh");
-			deleteLodingBar();
-		}
-	});
-}
+												if (menuManageVO.satisYn == null) {
+													$('#satisYn').val('N')
+												}
+												$("#menuTopNm").text(menuManageVO.menuNm);
+												$("#progrmHtmlFileId").val(menuManageVO.progrmHtmlFileId);
+												$("#progrmBbsId").val(menuManageVO.progrmBbsId);
+												$('#progrmFileNm_tmp').val(menuManageVO.progrmFileNm);
+												var menuType = menuManageVO.menuType;
 
-//메뉴 초기화
-function initShowUrl(init){
-	var menuType = $("#menuType option:selected").val();
-	
-	$("#url").val("");
-	$("#showUrl").hide();
-	$("#btnContent").hide();
-	$("#btnBBS").hide();
-	$('#htmlComfirm').hide();
-	$('#BBSNameSpan').text("");
-	if("M" == menuType){ //메뉴
-		$("#progrmFileNm").val("dir");
-		$("#url").val("");
-		$('#progrmFileNm').attr("readonly", true);
-	}else{
-		$("#progrmFileNm").val($("#progrmFileNm_tmp").val());
-		$("#url").val($("#url_tmp").val());
-		
-		if("P" == menuType){ //프로그램
-			$('#progrmFileNm').attr("readonly", false);
-			$("#url").attr("readonly", false);
-		}else if("C" == menuType ){ //컨텐츠
-			$('#progrmFileNm').attr("readonly", false);
-			$("#url").attr("readonly", false);
-		}else if("B" == menuType){ //게시판
-			$('#progrmFileNm').attr("readonly", false);	
-			$("#url").attr("readonly", false);
-		}else if("O" == menuType){ //게시판
-			$('#progrmFileNm').attr("readonly", false);	
-			$("#url").attr("readonly", false);
-		}
-		if(init=='N'){
-			var instance = $('#itn_organization').jstree(true);
-			if($('#itn_organization').jstree('get_selected')[0] != null){
-				if(instance.get_node($('#itn_organization').jstree('get_selected')[0]).children.length != 0){
-					alert("하위 메뉴가 있을경우는 다른타입으로 변경할수 없습니다.");
-					$("#menuType option").attr("selected", false);
-					$("#menuType option[value='M']").attr("seleted", "selected");
-					return;
-				}	
-			}
-		}
-		
-		$("#showUrl").show();
-		if("C" == menuType){
-			$("#btnContent").show();
-			$("#url").attr("readonly", false);
-		}else if("B" == menuType){
-			$("#btnBBS").show();
-			$("#url").attr("readonly", false);
-		}
-	}
-}
+												if (menuType == "M") {
+													$("#satisTr").css("display", "none");
+												} else {
+													$("#satisTr").css("display", "");
+												}
+												if (menuManageVO.progrmFileNm == 'dir' || menuType == 'M') {
+													$("#menuType").val("M"); //메뉴로 세팅
+													$('#progrmFileNm').attr("readonly", true);
+													$('#progrmFileNm_tmp').val("");
+													$('#url_tmp').val("");
+												} else {
+													$("#menuType").val(menuType);
+													//$('#progrmFileNm').attr("readonly", false);
+													$('#url_tmp').val(menuManageVO.url);
+												}
+
+												//메뉴타입 설정
+												initShowUrl('Y');
+												$('#url').val(menuManageVO.url);
+												// 버튼 이벤트 동적 설정 - 현재 폼의 값 사용
+												$(".main1_delete_btn").removeAttr("onclick");
+												$(".main1_delete_btn").attr("onclick", "fn_delete_menuInfo($('#menuNo').val(), $('#progrmFileNm').val());return false;");
+												$(".main1_save_btn").removeAttr("onclick");
+												$(".main1_save_btn").attr("onclick", "fn_save_menuInfo($('#menuNo').val());return false;");
+												$('.tr_item').remove();
+												if (("P" == $('#menuType').val() || "C" == $('#menuType').val()) && "ROLE_ANONYMOUS" == $('#authorCode').val()) { //추가 게시판 조회(프로그램/사용자 화면만 조회)
+													$('#tr_add_bbs').show();
+													set_bbs();
+												} else {
+													$('#tr_add_bbs').hide();
+												}
+
+												$('#htmlComfirm').hide();
+												if ("" != menuManageVO.progrmHtmlFileId) {
+													$('#htmlComfirm').show();
+													$('#htmlComfirm').css("display", "inline-block");
+													$('#a_contentLink').attr("onclick", "htmlComfirm('" + menuManageVO.progrmHtmlFileId + "');")
+												}
+
+												if (menuManageVO.menuNo > 10) {
+													$('#menuOpen').show();
+													var authorChkList = $("input[name=authorChkList]");
+
+													$("input[name=authorChkList]").prop('checked', false);
+
+													for (var i = 0; i < authorChkList.size(); i++) {
+														for (var j = 0; j < authorList.length; j++) {
+															if (authorChkList[i].id == authorList[j].authorCode) {
+																authorChkList[i].checked = true;
+															}
+														}
+													}
+												} else {
+													$('#menuOpen').hide();
+												}
+
+											}
+										}
+
+										//메뉴  정보 삭제
+										function fn_delete_menuInfo(menuNo, progrmFileNm) {
+											if (menuNo == null || "undefined" == menuNo) {
+												alert("삭제 하려는 메뉴를 먼저 선택해주세요.");
+												return;
+											}
+
+											var instance = $('#itn_organization').jstree(true);
+											if (instance.get_node(menuNo).children.length != 0) {
+												alert("하위 메뉴를 먼저 삭제 후 메뉴를 삭제해 주세요.");
+												return;
+											}
+
+											if (confirm("메뉴를 삭제 하시겠습니까?")) {
+												$.ajax({
+													type: "POST",
+													"url": "<c:url value='/sym/mnu/mcm/EgovMenuInfoDeleteAjax.do'/>",
+													data: { "menuNo": menuNo, "progrmFileNm": progrmFileNm, "authorCode": $('#authorCode').val() },
+													dataType: 'json',
+													//timeout:(1000*30),
+													success: function (returnData, status) {
+														if (returnData.status == "success") {
+															// 직원 목록 갱신
+															var instance = $('#itn_organization').jstree(true);
+															//$("#" + instance.get_node(partIdx).a_attr.id).trigger("click");
+															alert("메뉴 정보가 삭제 되었습니다.");
+															$("#itn_organization").jstree("refresh");
+															fn_init_menuInfo();
+														} else if (returnData.status == "duplPk") {
+															alert("삭제하려는 메뉴를 참조하고 있는 메뉴가 있습니다.\n 참조하는 메뉴를 삭제후 다시 시도해 주세요\n" + "(" + returnData.menuManageResultVO.menuCours + ")");
+
+														}
+														else {
+															alert("메뉴 삭제가 실패되었습니다.");
+
+														}
+													},
+													error: function (request, status, error) {
+														alert("메뉴 삭제가 실패되었습니다..");
+													},
+													complete: function () {
+														deleteLodingBar();
+													}
+												});
+											}
+										}
+
+										//메뉴정보 init(메뉴 초기화)
+										function fn_init_menuInfo() {
+											$("#menuTopNm").text("메뉴선택");
+											$("#menuForm input[type=text]").val("")
+											$('#menuCours').text("");
+											$('#upperMenuIdText').text("");
+											/* $('#progrmFileNmText').text(""); */
+										}
+
+										//메뉴 초기화
+										function jstreeRefresh() {
+											var searchForm = document.searchForm;
+											searchForm.authorCode.value = $('#authorCode').val();
+											searchForm.submit();
+										}
 
 
-var docWidth = screen.availWidth;
-var docHeight = screen.availHeight;
-var scX = window.screenX||window.screenLeft||0;
-var scY = window.screenY||window.screenTop||0;
-/* ********************************************************
- * 게시판목록조회  함수
- ******************************************************** */
-function searchBBSId(obj) {
-	var popupX = scX + (docWidth - 185) / 2;
-	var popupY = scY + (docHeight - 195) / 2;
-	
-	memuPopup = window.open('', 'memuPopup', "width=800, height=730, left="+popupX+", top="+popupY, "location = no","status= no","toolbars= no");
-	document.searchForm.method = "post";
-	if("menuAdd"==$(obj).attr('id')){  //추가게시판 버튼 클릭시 
-		document.searchForm.seCd.value = $(obj).attr('id');
-		document.searchForm.searchNm.value = $(obj).attr('value');
-	}
-	document.searchForm.action = "/cop/bbs/EgovBBSIdListSearch.do";
-	document.searchForm.target = "memuPopup" ;
-	document.searchForm.submit();
-	document.searchForm.target = "_self" ;
-	document.searchForm.action= "/sym/mnu/mcm/EgovMenuCreatSelectJtree.do";
-}
+										//메뉴 정보 저장. 등록/수정
+										function fn_save_menuInfo(menuNo) {
+											if (menuNo == null || "undefined" == menuNo) {
+												alert("저장 하려는 메뉴를 먼저 메뉴트리에서 생성해 주세요."); return;
+											}
 
-/* ********************************************************
- * 화면컨텐츠ID 검색 팝업
- ******************************************************** */
-var memuPopup ="";
-function searchContentList() {
-	var popupX = scX + (docWidth - 185) / 2;
-	var popupY = scY + (docHeight - 195) / 2;
-	
-	memuPopup = window.open('', 'memuPopup', "width=800, height=730, left="+popupX+", top="+popupY, "location = no","status= no","toolbars= no");
-	document.searchForm.method = "post";
-	document.searchForm.action = "/uss/ion/cnt/contentListPopup.do";
-	document.searchForm.target = "memuPopup" ;
-	document.searchForm.submit();
-	document.searchForm.target = "_self" ;
-	document.searchForm.action= "/sym/mnu/mcm/EgovMenuCreatSelectJtree.do";
-}
+											var menuForm = document.menuForm;
+											if ("" == menuForm.menuNo.value) {
+												alert("메뉴번호는 필수 값입니다"); return;
+											}
 
-function onkeyContentName(event){
-	var tempContentUrl = "/web/content.do?proFn=" ; 
-	if($("#menuType option:selected").val()=="C"){
-	   $("#url").val(tempContentUrl + $("#progrmFileNm").val()) ;
-	}
-}
+											if (!$.isNumeric(menuForm.menuNo.value)) {
+												alert("메뉴번호는 숫자만 가능합니다."); return;
+											}
+
+											if (!$.isNumeric(menuForm.menuOrdr.value)) {
+												alert("메뉴순서는 숫자만 가능합니다."); return;
+											}
+
+											var menuType = $("#menuType option:selected").val();
+											if (menuType != "M") {
+												if ($("#progrmFileNm").val() == "") {
+													alert("프로그램 파일명은 필수 값입니다");
+													return;
+												}
+											}
+
+											if (!confirm("저장하시겠습니까?")) return;
+
+											var url = "";
+											url = "<c:url value='/sym/mnu/mcm/EgovMenuInfoUpdateAjax.do'/>";
+											var params = $(menuForm).serialize();
+											$.ajax({
+												type: "POST",
+												"url": url,
+												data: params,
+												dataType: 'json',
+												success: function (returnData, status) {
+													if (returnData.status == "success") {
+														alert("메뉴 정보가 저장 되었습니다.");
+
+														var instance = $('#itn_organization').jstree(true);
+														var currentMenuNo = $('#menuNo').val();
+														var menuNm = $('#menuNm').val();
+
+														// 메뉴 이름이 변경된 경우 트리 노드 텍스트 업데이트
+														var node = instance.get_node(currentMenuNo);
+														if (node && node.text !== menuNm) {
+															instance.rename_node(node, menuNm);
+														}
+
+														// tmp_Id 업데이트
+														$('#tmp_Id').val(currentMenuNo);
+
+														deleteLodingBar();
+													} else if (returnData.status == "upperDupl") {
+														alert("상위 메뉴 번호가 있습니다.");
+														$("#itn_organization").jstree("refresh");
+														deleteLodingBar();
+													} else if (returnData.status == "dupl") {
+														alert("이미 사용하고 있는 메뉴 번호가 있습니다.");
+														$("#itn_organization").jstree("refresh");
+														deleteLodingBar();
+													} else if (returnData.status == "duplProNm") {
+														alert("이미 사용하고 있는 프로그램파일명이 있습니다.");
+														deleteLodingBar();
+													} else if (returnData.status == "authorFail") {
+														alert("메뉴권한등록에 실패했습니다.");
+														deleteLodingBar();
+													} else {
+														alert("ERROR");
+														$("#itn_organization").jstree("refresh");
+														deleteLodingBar();
+													}
+												},
+												error: function (request, status, error) {
+													alert("메뉴 정보 저장이 실패되었습니다.");
+													$("#itn_organization").jstree("refresh");
+													deleteLodingBar();
+												}
+											});
+										}
+
+										//메뉴 초기화
+										function initShowUrl(init) {
+											var menuType = $("#menuType option:selected").val();
+
+											$("#url").val("");
+											$("#showUrl").hide();
+											$("#btnContent").hide();
+											$("#btnBBS").hide();
+											$('#htmlComfirm').hide();
+											$('#BBSNameSpan').text("");
+											if ("M" == menuType) { //메뉴
+												$("#progrmFileNm").val("dir");
+												$("#url").val("");
+												$('#progrmFileNm').attr("readonly", true);
+											} else {
+												$("#progrmFileNm").val($("#progrmFileNm_tmp").val());
+												$("#url").val($("#url_tmp").val());
+
+												if ("P" == menuType) { //프로그램
+													$('#progrmFileNm').attr("readonly", false);
+													$("#url").attr("readonly", false);
+												} else if ("C" == menuType) { //컨텐츠
+													$('#progrmFileNm').attr("readonly", false);
+													$("#url").attr("readonly", false);
+												} else if ("B" == menuType) { //게시판
+													$('#progrmFileNm').attr("readonly", false);
+													$("#url").attr("readonly", false);
+												} else if ("O" == menuType) { //게시판
+													$('#progrmFileNm').attr("readonly", false);
+													$("#url").attr("readonly", false);
+												}
+												if (init == 'N') {
+													var instance = $('#itn_organization').jstree(true);
+													if ($('#itn_organization').jstree('get_selected')[0] != null) {
+														if (instance.get_node($('#itn_organization').jstree('get_selected')[0]).children.length != 0) {
+															alert("하위 메뉴가 있을경우는 다른타입으로 변경할수 없습니다.");
+															$("#menuType option").attr("selected", false);
+															$("#menuType option[value='M']").attr("seleted", "selected");
+															return;
+														}
+													}
+												}
+
+												$("#showUrl").show();
+												if ("C" == menuType) {
+													$("#btnContent").show();
+													$("#url").attr("readonly", false);
+												} else if ("B" == menuType) {
+													$("#btnBBS").show();
+													$("#url").attr("readonly", false);
+												}
+											}
+										}
+
+
+										var docWidth = screen.availWidth;
+										var docHeight = screen.availHeight;
+										var scX = window.screenX || window.screenLeft || 0;
+										var scY = window.screenY || window.screenTop || 0;
+										/* ********************************************************
+										 * 게시판목록조회  함수
+										 ******************************************************** */
+										function searchBBSId(obj) {
+											var popupX = scX + (docWidth - 185) / 2;
+											var popupY = scY + (docHeight - 195) / 2;
+
+											memuPopup = window.open('', 'memuPopup', "width=800, height=730, left=" + popupX + ", top=" + popupY, "location = no", "status= no", "toolbars= no");
+											document.searchForm.method = "post";
+											if ("menuAdd" == $(obj).attr('id')) {  //추가게시판 버튼 클릭시 
+												document.searchForm.seCd.value = $(obj).attr('id');
+												document.searchForm.searchNm.value = $(obj).attr('value');
+											}
+											document.searchForm.action = "/cop/bbs/EgovBBSIdListSearch.do";
+											document.searchForm.target = "memuPopup";
+											document.searchForm.submit();
+											document.searchForm.target = "_self";
+											document.searchForm.action = "/sym/mnu/mcm/EgovMenuCreatSelectJtree.do";
+										}
+
+										/* ********************************************************
+										 * 화면컨텐츠ID 검색 팝업
+										 ******************************************************** */
+										var memuPopup = "";
+										function searchContentList() {
+											var popupX = scX + (docWidth - 185) / 2;
+											var popupY = scY + (docHeight - 195) / 2;
+
+											memuPopup = window.open('', 'memuPopup', "width=800, height=730, left=" + popupX + ", top=" + popupY, "location = no", "status= no", "toolbars= no");
+											document.searchForm.method = "post";
+											document.searchForm.action = "/uss/ion/cnt/contentListPopup.do";
+											document.searchForm.target = "memuPopup";
+											document.searchForm.submit();
+											document.searchForm.target = "_self";
+											document.searchForm.action = "/sym/mnu/mcm/EgovMenuCreatSelectJtree.do";
+										}
+
+										function onkeyContentName(event) {
+											var tempContentUrl = "/web/content.do?proFn=";
+											if ($("#menuType option:selected").val() == "C") {
+												$("#url").val(tempContentUrl + $("#progrmFileNm").val());
+											}
+										}
 
 
 
-//행추가
-function add_line(bbsInfo){
-	var eva_temp_tr = $('#temp_tr').clone();
-	$('#tbl_bbsId').append(eva_temp_tr);
-	eva_temp_tr.attr('id' , 'tr_bbs').attr('class' , 'tr_item');
-	{ //변수 변경
-		var tr_item_length = $('.tr_item').size()-1 ;
-		eva_temp_tr.find("#temp_bbsTxt").attr('name', eva_temp_tr.find("#temp_bbsTxt").attr('name').replace('[]' , '['+tr_item_length+']' ))   ;
-		eva_temp_tr.find("#temp_bbsTxt").attr('id' , 'bbsTxt_'+tr_item_length) ; 
-		eva_temp_tr.find("#temp_bbsIds").attr('name', eva_temp_tr.find("#temp_bbsIds").attr('name').replace('[]' , '['+tr_item_length+']' ))   ;
-		eva_temp_tr.find("#temp_bbsIds").attr('id' , 'menuAdd_'+tr_item_length) ;
-		eva_temp_tr.find("#temp_bbsSorts").attr('name' , eva_temp_tr.find("#temp_bbsSorts").attr('name').replace('[]' , '['+tr_item_length+']' ) ) ;
-		eva_temp_tr.find("#temp_bbsSorts").attr('id' , 'bbsSorts_'+tr_item_length) ; 
-		eva_temp_tr.find("#menuAdd").attr('value' ,  'menuAdd_'+tr_item_length ) ;
-	}
-	if(null != bbsInfo){
-		$('#bbsTxt_'+tr_item_length).val(bbsInfo.bbsNm);
-		$('#bbsSorts_'+tr_item_length).val(bbsInfo.bbsSort);
-		$('#menuAdd_'+tr_item_length).val(bbsInfo.bbsId);
-		
-	}
-}
+										//행추가
+										function add_line(bbsInfo) {
+											var eva_temp_tr = $('#temp_tr').clone();
+											$('#tbl_bbsId').append(eva_temp_tr);
+											eva_temp_tr.attr('id', 'tr_bbs').attr('class', 'tr_item');
+											{ //변수 변경
+												var tr_item_length = $('.tr_item').size() - 1;
+												eva_temp_tr.find("#temp_bbsTxt").attr('name', eva_temp_tr.find("#temp_bbsTxt").attr('name').replace('[]', '[' + tr_item_length + ']'));
+												eva_temp_tr.find("#temp_bbsTxt").attr('id', 'bbsTxt_' + tr_item_length);
+												eva_temp_tr.find("#temp_bbsIds").attr('name', eva_temp_tr.find("#temp_bbsIds").attr('name').replace('[]', '[' + tr_item_length + ']'));
+												eva_temp_tr.find("#temp_bbsIds").attr('id', 'menuAdd_' + tr_item_length);
+												eva_temp_tr.find("#temp_bbsSorts").attr('name', eva_temp_tr.find("#temp_bbsSorts").attr('name').replace('[]', '[' + tr_item_length + ']'));
+												eva_temp_tr.find("#temp_bbsSorts").attr('id', 'bbsSorts_' + tr_item_length);
+												eva_temp_tr.find("#menuAdd").attr('value', 'menuAdd_' + tr_item_length);
+											}
+											if (null != bbsInfo) {
+												$('#bbsTxt_' + tr_item_length).val(bbsInfo.bbsNm);
+												$('#bbsSorts_' + tr_item_length).val(bbsInfo.bbsSort);
+												$('#menuAdd_' + tr_item_length).val(bbsInfo.bbsId);
 
-//삭제시 배열 초기화
-var arrCd = [];
-function set_count(){  //tr 세팅
-	$('.tr_item').each(function(index, item){
-		$(this).find('input[name^=bbsTxt]').attr('name', 'bbsTxt['+index+']' ).attr('id' , 'bbsTxt_'+index ) ;
-		$(this).find('input[name^=bbsSorts]').attr('name', 'bbsSorts['+index+']' );
-		$(this).find('input[name^=bbsIds]').attr('name', 'bbsIds['+index+']' ).attr('id' , 'menuAdd_'+index ) ;
-		$(this).find('#menuAdd').attr('value' , 'menuAdd_'+index) ;
-	});
-}
+											}
+										}
 
-var arrDel = []; //1차배열
-function delete_line(obj){
-	$(obj).parent().parent().remove();
-	set_count();
-}
+										//삭제시 배열 초기화
+										var arrCd = [];
+										function set_count() {  //tr 세팅
+											$('.tr_item').each(function (index, item) {
+												$(this).find('input[name^=bbsTxt]').attr('name', 'bbsTxt[' + index + ']').attr('id', 'bbsTxt_' + index);
+												$(this).find('input[name^=bbsSorts]').attr('name', 'bbsSorts[' + index + ']');
+												$(this).find('input[name^=bbsIds]').attr('name', 'bbsIds[' + index + ']').attr('id', 'menuAdd_' + index);
+												$(this).find('#menuAdd').attr('value', 'menuAdd_' + index);
+											});
+										}
 
-function htmlComfirm(progrmHtmlFileId) {
-   	$.ajax({
-       type: "POST",
-       url: "/sym/mnu/mcm/HtmlComfirmAjax.do",
-       data:{
-			"cntId": progrmHtmlFileId		
-		},
-       dataType:'json',
-       timeout: 600000,
-       success: function (returnData, status) {
-           if(status == 'success'){
-	          console.log("sdfsdf");
-	          window.open("/uss/ion/cnt/cntManageInsert.do?cntId="+returnData.cntManageVO.cntId+"&cntDtId="+returnData.cntManageVO.cntDtId);
-           }else{
-           	 //alert("등록에 실패하였습니다.");
-           	return false;
-           }
-       },
-       error: function (e) {
-           console.log("ERROR : ", e);
-           alert("등록에 실패하였습니다.");
-       }
-   	});
-}
+										var arrDel = []; //1차배열
+										function delete_line(obj) {
+											$(obj).parent().parent().remove();
+											set_count();
+										}
 
-function set_bbs(){
-	var frm = document.menuForm;
-   	var data = new FormData(frm);
-   	$.ajax({
-       type: "POST",
-       url: "/sym/mnu/mcm/MenuBbsSelectAjax.do",
-       data: data,
-       dataType:'json',
-       processData: false,
-       contentType: false,
-       cache: false,
-       timeout: 600000,
-       success: function (returnData, status) {
-           if(status == 'success'){
-	       		for(var i = 0 ; i < returnData.boardMasterList.length ; i++){
-					add_line(returnData.boardMasterList[i]);
-	       		}				
-           }else{
-           	alert("등록에 실패하였습니다.");
-           }
-       },
-       error: function (e) {
-           console.log("ERROR : ", e);
-           alert("등록에 실패하였습니다.");
-       }
-   	});
-   	
-	
-	
-}
+										function htmlComfirm(progrmHtmlFileId) {
+											$.ajax({
+												type: "POST",
+												url: "/sym/mnu/mcm/HtmlComfirmAjax.do",
+												data: {
+													"cntId": progrmHtmlFileId
+												},
+												dataType: 'json',
+												timeout: 600000,
+												success: function (returnData, status) {
+													if (status == 'success') {
+														console.log("sdfsdf");
+														window.open("/uss/ion/cnt/cntManageInsert.do?cntId=" + returnData.cntManageVO.cntId + "&cntDtId=" + returnData.cntManageVO.cntDtId);
+													} else {
+														//alert("등록에 실패하였습니다.");
+														return false;
+													}
+												},
+												error: function (e) {
+													console.log("ERROR : ", e);
+													alert("등록에 실패하였습니다.");
+												}
+											});
+										}
 
-</script>
-<title>메뉴관리</title>
-</head>
-<body>
+										function set_bbs() {
+											var frm = document.menuForm;
+											var data = new FormData(frm);
+											$.ajax({
+												type: "POST",
+												url: "/sym/mnu/mcm/MenuBbsSelectAjax.do",
+												data: data,
+												dataType: 'json',
+												processData: false,
+												contentType: false,
+												cache: false,
+												timeout: 600000,
+												success: function (returnData, status) {
+													if (status == 'success') {
+														for (var i = 0; i < returnData.boardMasterList.length; i++) {
+															add_line(returnData.boardMasterList[i]);
+														}
+													} else {
+														alert("등록에 실패하였습니다.");
+													}
+												},
+												error: function (e) {
+													console.log("ERROR : ", e);
+													alert("등록에 실패하였습니다.");
+												}
+											});
 
-<form name="searchForm" method="get" action="<c:url value='/sym/mnu/mcm/EgovMenuCreatSelectJtree.do'/>" >
-	<input name="authorCode" type="hidden" value="ROLE_ADMIN" />
-	<input name="seCd" type="hidden" value="" />
-	<input name="searchNm" type="hidden" value="" />
-</form>
-<form name="menuForm" id="menuForm" >
-	<input type="hidden" id="existChildNode" name="existChildNode" value="N" />
-	<input type="hidden" name="emplyrId" id="emplyrId" /><!-- 담당자ID -->
-	
-	<div class="content_title">
-	  <h3>메뉴관리</h3>
-	  <ol class="breadcrumb">
-	    <li><a href="#" class="home" title="메인으로 이동"><i></i></a></li>
-	    <li><a href="#">메뉴관리</a></li>
-	    <li><strong class="current_location">메뉴관리</strong></li>
-	  </ol>
-	</div>
 
-	<%-- <div class="menu_select">
-		<select name="authorCode" id="authorCode" class="select" onchange="jstreeRefresh();  return false;" title="검색조건선택">
-		   <option value='ROLE_ANONYMOUS' <c:if test="${menuCreatVO.authorCode == 'ROLE_ANONYMOUS' || empty menuCreatVO.authorCode }">selected</c:if>>사용자</option>
-		   <option value='ROLE_ADMIN' <c:if test="${menuCreatVO.authorCode == 'ROLE_ADMIN'  }">selected</c:if>>관리자</option>
-			<c:forEach var="authorList" items="${authorList}" varStatus="status">
-				<option value='${authorList.authorCode}' <c:if test="${menuCreatVO.authorCode == authorList.authorCode}">selected</c:if>>${authorList.authorCode}</option>
-			</c:forEach>
-	    </select>
-	</div> --%>
 
-	<div class="menu_container">
-		<div class="menu_list_content">
-			<div class="btn_wrap left">
-				<button type="button" class="btn fill primary ssmall all_open" onclick="$('#itn_organization').jstree('open_all' );">모두열기</button>
-				<button type="button" class="btn fill gray ssmall all_close" onclick="$('#itn_organization').jstree('close_node' , $('#0') );">모두닫기</button>
-			</div>
-			<div class="menu_list" id="itn_organization" class="jstree_orgChart"></div>
-		</div>
-		
-		<div class="menu_detail">
-			<div class="content_title h4">
-				<h4>메뉴 추가등록 상세</h4>
-			</div>
-			<div class="table table_type_rows">
-				<table>
-					<colgroup>
-						<col style="width: 200px;">
-						<col style="width: auto;">
-					</colgroup>
-					<tbody>
-						<tr>
-							<th>메뉴번호</th>
-							<td>
-								<div id="select_part">
-									<input type="text" class="input" name="menuNo" id="menuNo" />
-									<input type="hidden" id="tmp_Id" name="tmp_Id"/><!-- 이전메뉴 No --> 
-								</div>
-							</td>
-						</tr>
-						<tr>
-							<th>메뉴명</th>
-							<td>
-								<input type="text" class="input w100per" name="menuNm" id="menuNm" />
-								<input type="hidden" id="tmp_Name" name="tmp_Name"/><!-- 이전메뉴 이름 -->
-							</td>
-						</tr>
-						<tr>
-							<th>메뉴설명</th>
-							<td>
-								<input type="text" class="input" name="menuDc" id="menuDc" style="width:100%;"/>
-								<input type="hidden" id="dc_Name" name="dc_Name"/><!-- 이전메뉴 이름 -->
-								<div class="input_desc_wrap column">
-		                            <span class="input_desc">상세페이지에 대한 제어가 필요한 경우 상세 페이지 주소를 넣으면 된다.</span>
-		                            <span class="input_desc">ex)adjReqMgrRegDetail</span>
-		                          </div>
-							</td>
-						</tr>
-						
-						
-						
-						<tr>
-							<th>타입</th>
-							<td>
-								<div class="form_wrap">
-									<select name="menuType" id="menuType" class="select" title="" onchange="initShowUrl('N'); return false;">
-					                	<option value="M" <c:if test="${userSearchVO.menuType == 'M'}">selected="selected"</c:if> >메뉴</option>
-					                    <option value="P" <c:if test="${userSearchVO.menuType == 'P'}">selected="selected"</c:if> >프로그램</option>
-					                    <option value="C" <c:if test="${userSearchVO.menuType == 'C'}">selected="selected"</c:if> >HTML컨텐츠</option>
-					                    <option value="B" <c:if test="${userSearchVO.menuType == 'B'}">selected="selected"</c:if> >게시판</option>
-					                    <option value="O" <c:if test="${userSearchVO.menuType == 'O'}">selected="selected"</c:if> >외부링크</option>
-									</select>
-									 
-									<a class="btn fill primary medium" style="display: none;cursor:pointer;" id="btnContent"
-							        	target="_blank" title="새창으로" onclick="searchContentList(); return false;"
-										style="selector-dummy:expression(this.hideFocus=false);" >
-							        	<%-- <img src="<c:url value='/img/post/serch_img.png' />" alt='컨텐츠ID 검색' width="15" height="15" /> --%>
-							        	<i class="icon search white"></i>화면컨텐츠ID 검색
-							        </a>
-							        <span style="display:none;" id="htmlComfirm">
-							        	<button class="btn line medium primary" onclick="htmlComfirm();" id="a_contentLink">확인</button>
-							        </span>
-							        
-					        		<span id="contentNameSpan" style="color: blue"></span>
-									<a style="display: none;cursor:pointer;vertical-align:middle;" id="btnBBS" 
-							        	target="_blank" title="새창으로" onclick="searchBBSId(); return false;"
-										style="selector-dummy:expression(this.hideFocus=false);" class="btn btn_text btn_36 blue_border">
-							        	<%-- <img src="<c:url value='/img/post/serch_img.png' />" alt='게시판ID 검색' width="15" height="15" /> --%>
-							        	<span style="vertical-align: middle;">(게시판ID 검색)</span>
-							        </a>
-							        <span id="BBSNameSpan" style="color: blue"></span>
-						        </div>
-					        	<div class="form_wrap input_mix_wrap mt10" id="showUrl" style="display: none;" >
-			                      <span class="text_split">URL</span>
-			                      <input type="text" name="url" id="url" class="input w80per">
-			                      <input type="hidden" id="url_tmp" name="url_tmp"/>
-			                    </div>
-			                    
-							</td>
-						</tr>
-						<tr>
-							<th>상위메뉴번호</th>
-							<td>
-								<span id="upperMenuIdText"></span>
-								<input type="hidden" id="upperMenuId" name="upperMenuId"/>
-							</td>
-						</tr>
-						<tr>
-							<th>프로그램파일명</th>
-							<td>
-								<input type="text" name="progrmFileNm" id="progrmFileNm" class="input" readonly="readonly" onkeyup="onkeyContentName(event);" />
-								<input type="hidden" name="progrmHtmlFileId" id="progrmHtmlFileId" />
-								<input type="hidden" name="progrmBbsId" id="progrmBbsId" />
-								<input type="hidden" name="progrmFileNm_tmp" id="progrmFileNm_tmp" />
-							</td>
-						</tr>
-						<tr>
-							<th>메뉴경로</th>
-							<td>
-								<span id="menuCours"></span>
-							</td>
-						</tr>
-						<tr>
-							<th><span>메뉴순서</span></th>
-							<td>
-								<input type="text" class="input" name="menuOrdr" id="menuOrdr" />
-							</td>
-						</tr>
-						<tr id="menuOpen">
-							<th>메뉴노출</th>
-							<td>
-<!-- 										<select name="useYn" id="useYn" title="" > -->
-<!-- 										</select> -->
-				                	<%-- <option value="Y" <c:if test="${userSearchVO.useYn == 'Y'}">selected="selected"</c:if> >사용</option>
-				                    <option value="N" <c:if test="${userSearchVO.useYn == 'N'}">selected="selected"</c:if> >미사용</option> --%>
-			                    <div class="form_wrap checkbox_wrap column">
-				                    <c:forEach var="authorList" items="${authorList}" varStatus="status">
-										
-											<%-- <input type="checkbox" id="${authorList.authorCode}" name="${authorList.authorCode}" value="${authorList.authorCode}"/>
-											<label for="${authorList.authorCode}"> ${authorList.authorNm} </label> --%>
-											<label for="<c:out value="${authorList.authorCode}"/>" class="checkbox_item">
-												<input name="authorChkList" id="<c:out value="${authorList.authorCode}"/>" title="Check <c:out value="${status.count}"/>" type="checkbox" value="${authorList.authorCode}"/>
-												<c:out value="${authorList.authorNm}"/>(<c:out value="${authorList.authorCode}"/>)
-											</label>
-										
-									</c:forEach>
-								</div>
-							</td>
-						</tr>
-						<c:if test="${menuManageVO.authorCode == 'ROLE_ANONYMOUS'}">
-						<tr id="satisTr">
-							<th><span>만족도 평가</span></th>
-							<td>
-								<select name="satisYn" id="satisYn" title="" >
-				                	<option value="Y" <c:if test="${userSearchVO.satisYn == 'Y'}">selected="selected"</c:if> >사용</option>
-				                    <option value="N" <c:if test="${userSearchVO.satisYn == 'N'}">selected="selected"</c:if> >미사용</option>
-								</select>
-							</td>
-						</tr>
-						</c:if>
-					</tbody>
-				</table>
-			</div>
-			<!-- btn_wrap -->
-			<div class="btn_wrap mt40">
-				<div class="left">
-					<button type="button" class="btn line red xlarge main1_delete_btn" onClick="fn_delete_menuInfo(); return false;">삭제</button>
-				</div>
-				<div class="right">
-					
-					<button type="button" class="btn fill primary xlarge main1_save_btn" onClick="fn_save_menuInfo(); return false;">저장</button>
-				</div>
-			</div>
-			<!-- //btn_wrap -->
-		</div>
-	</div>
-				
-</form>
+										}
 
-<table id="eva_temp_table" style="display:none">
-	<tr id="temp_tr">
-		<td>
-			게시판<input type="text" name="bbsTxt[]" id="temp_bbsTxt" style="width:4%;" readonly="readonly">
-			순서<input type="text" name="bbsSorts[]" id="temp_bbsSorts" style="width:1%;" >
-			<input type="hidden" name="bbsIds[]" id="temp_bbsIds" style="width:4%;" readonly="readonly">
-			<input type="button" value="삭제" onclick="delete_line(this);">
-			<a id="menuAdd" value="bbsIds[]" style="cursor:pointer;" target="_blank" title="새창으로" onclick="searchBBSId(this); return false;">
-				<img src="/img/post/serch_img.png" alt="게시판ID 검색" width="15" height="15">
-				<span style="vertical-align: middle;">게시판 검색</span>
-			</a>
-		</td>
-	</tr>
-</table>
-</body>
-</html>
+									</script>
+									<title>메뉴관리</title>
+							</head>
+
+							<body>
+
+								<form name="searchForm" method="get"
+									action="<c:url value='/sym/mnu/mcm/EgovMenuCreatSelectJtree.do'/>">
+									<input name="authorCode" type="hidden" value="ROLE_ADMIN" />
+									<input name="seCd" type="hidden" value="" />
+									<input name="searchNm" type="hidden" value="" />
+								</form>
+								<form name="menuForm" id="menuForm">
+									<input type="hidden" id="existChildNode" name="existChildNode" value="N" />
+									<input type="hidden" name="emplyrId" id="emplyrId" /><!-- 담당자ID -->
+
+									<div class="content_title">
+										<h3>메뉴관리</h3>
+										<ol class="breadcrumb">
+											<li><a href="#" class="home" title="메인으로 이동"><i></i></a></li>
+											<li><a href="#">메뉴관리</a></li>
+											<li><strong class="current_location">메뉴관리</strong></li>
+										</ol>
+									</div>
+
+									<%-- <div class="menu_select">
+										<select name="authorCode" id="authorCode" class="select"
+											onchange="jstreeRefresh();  return false;" title="검색조건선택">
+											<option value='ROLE_ANONYMOUS' <c:if
+												test="${menuCreatVO.authorCode == 'ROLE_ANONYMOUS' || empty menuCreatVO.authorCode }">
+												selected</c:if>>사용자</option>
+											<option value='ROLE_ADMIN' <c:if
+												test="${menuCreatVO.authorCode == 'ROLE_ADMIN'  }">selected</c:if>>관리자
+											</option>
+											<c:forEach var="authorList" items="${authorList}" varStatus="status">
+												<option value='${authorList.authorCode}' <c:if
+													test="${menuCreatVO.authorCode == authorList.authorCode}">selected
+													</c:if>>${authorList.authorCode}</option>
+											</c:forEach>
+										</select>
+										</div> --%>
+
+										<div class="menu_container">
+											<div class="menu_list_content">
+												<div class="btn_wrap left">
+													<button type="button" class="btn fill primary ssmall all_open"
+														onclick="$('#itn_organization').jstree('open_all' );">모두열기</button>
+													<button type="button" class="btn fill gray ssmall all_close"
+														onclick="$('#itn_organization').jstree('close_node' , $('#0') );">모두닫기</button>
+												</div>
+												<div class="menu_list" id="itn_organization" style="height:700px;">
+												</div>
+											</div>
+
+											<div class="menu_detail">
+												<div class="content_title h4">
+													<h4>메뉴 추가등록 상세</h4>
+												</div>
+												<div class="table table_type_rows">
+													<table>
+														<colgroup>
+															<col style="width: 200px;">
+															<col style="width: auto;">
+														</colgroup>
+														<tbody>
+															<tr>
+																<th>메뉴번호</th>
+																<td>
+																	<div id="select_part">
+																		<input type="text" class="input" name="menuNo"
+																			id="menuNo" />
+																		<input type="hidden" id="tmp_Id"
+																			name="tmp_Id" /><!-- 이전메뉴 No -->
+																	</div>
+																</td>
+															</tr>
+															<tr>
+																<th>메뉴명</th>
+																<td>
+																	<input type="text" class="input w100per"
+																		name="menuNm" id="menuNm" />
+																	<input type="hidden" id="tmp_Name"
+																		name="tmp_Name" /><!-- 이전메뉴 이름 -->
+																</td>
+															</tr>
+															<tr>
+																<th>메뉴설명</th>
+																<td>
+																	<input type="text" class="input" name="menuDc"
+																		id="menuDc" style="width:100%;" />
+																	<input type="hidden" id="dc_Name"
+																		name="dc_Name" /><!-- 이전메뉴 이름 -->
+																	<div class="input_desc_wrap column">
+																		<span class="input_desc">상세페이지에 대한 제어가 필요한 경우 상세
+																			페이지 주소를 넣으면 된다.</span>
+																		<span
+																			class="input_desc">ex)adjReqMgrRegDetail</span>
+																	</div>
+																</td>
+															</tr>
+
+
+
+															<tr>
+																<th>타입</th>
+																<td>
+																	<div class="form_wrap">
+																		<select name="menuType" id="menuType"
+																			class="select" title=""
+																			onchange="initShowUrl('N'); return false;">
+																			<option value="M" <c:if
+																				test="${userSearchVO.menuType == 'M'}">
+																				selected="selected"</c:if> >메뉴</option>
+																			<option value="P" <c:if
+																				test="${userSearchVO.menuType == 'P'}">
+																				selected="selected"</c:if> >프로그램
+																			</option>
+																			<option value="C" <c:if
+																				test="${userSearchVO.menuType == 'C'}">
+																				selected="selected"</c:if> >HTML컨텐츠
+																			</option>
+																			<option value="B" <c:if
+																				test="${userSearchVO.menuType == 'B'}">
+																				selected="selected"</c:if> >게시판</option>
+																			<option value="O" <c:if
+																				test="${userSearchVO.menuType == 'O'}">
+																				selected="selected"</c:if> >외부링크
+																			</option>
+																		</select>
+
+																		<a class="btn fill primary medium"
+																			style="display: none;cursor:pointer;"
+																			id="btnContent" target="_blank" title="새창으로"
+																			onclick="searchContentList(); return false;"
+																			style="selector-dummy:expression(this.hideFocus=false);">
+																			<%-- <img
+																				src="<c:url value='/img/post/serch_img.png' />"
+																				alt='컨텐츠ID 검색' width="15" height="15" />
+																			--%>
+																			<i class="icon search white"></i>화면컨텐츠ID 검색
+																		</a>
+																		<span style="display:none;" id="htmlComfirm">
+																			<button class="btn line medium primary"
+																				onclick="htmlComfirm();"
+																				id="a_contentLink">확인</button>
+																		</span>
+
+																		<span id="contentNameSpan"
+																			style="color: blue"></span>
+																		<a style="display: none;cursor:pointer;vertical-align:middle;"
+																			id="btnBBS" target="_blank" title="새창으로"
+																			onclick="searchBBSId(); return false;"
+																			style="selector-dummy:expression(this.hideFocus=false);"
+																			class="btn btn_text btn_36 blue_border">
+																			<%-- <img
+																				src="<c:url value='/img/post/serch_img.png' />"
+																				alt='게시판ID 검색' width="15" height="15" />
+																			--%>
+																			<span style="vertical-align: middle;">(게시판ID
+																				검색)</span>
+																		</a>
+																		<span id="BBSNameSpan"
+																			style="color: blue"></span>
+																	</div>
+																	<div class="form_wrap input_mix_wrap mt10"
+																		id="showUrl" style="display: none;">
+																		<span class="text_split">URL</span>
+																		<input type="text" name="url" id="url"
+																			class="input w80per">
+																		<input type="hidden" id="url_tmp"
+																			name="url_tmp" />
+																	</div>
+
+																</td>
+															</tr>
+															<tr>
+																<th>상위메뉴번호</th>
+																<td>
+																	<span id="upperMenuIdText"></span>
+																	<input type="hidden" id="upperMenuId"
+																		name="upperMenuId" />
+																</td>
+															</tr>
+															<tr>
+																<th>프로그램파일명</th>
+																<td>
+																	<input type="text" name="progrmFileNm"
+																		id="progrmFileNm" class="input"
+																		readonly="readonly"
+																		onkeyup="onkeyContentName(event);" />
+																	<input type="hidden" name="progrmHtmlFileId"
+																		id="progrmHtmlFileId" />
+																	<input type="hidden" name="progrmBbsId"
+																		id="progrmBbsId" />
+																	<input type="hidden" name="progrmFileNm_tmp"
+																		id="progrmFileNm_tmp" />
+																</td>
+															</tr>
+															<tr>
+																<th>메뉴경로</th>
+																<td>
+																	<span id="menuCours"></span>
+																</td>
+															</tr>
+															<tr>
+																<th><span>메뉴순서</span></th>
+																<td>
+																	<input type="text" class="input" name="menuOrdr"
+																		id="menuOrdr" />
+																</td>
+															</tr>
+															<tr id="menuOpen">
+																<th>메뉴노출</th>
+																<td>
+																	<!-- 										<select name="useYn" id="useYn" title="" > -->
+																	<!-- 										</select> -->
+																	<%-- <option value="Y" <c:if
+																		test="${userSearchVO.useYn == 'Y'}">selected="selected"
+																		</c:if> >사용</option>
+																		<option value="N" <c:if
+																			test="${userSearchVO.useYn == 'N'}">
+																			selected="selected"</c:if> >미사용</option>
+																		--%>
+																		<div class="form_wrap checkbox_wrap column">
+																			<c:forEach var="authorList"
+																				items="${authorList}"
+																				varStatus="status">
+
+																				<%-- <input type="checkbox"
+																					id="${authorList.authorCode}"
+																					name="${authorList.authorCode}"
+																					value="${authorList.authorCode}" />
+																				<label for="${authorList.authorCode}">
+																					${authorList.authorNm} </label> --%>
+																				<label for="<c:out value="
+																					${authorList.authorCode}" />"
+																				class="checkbox_item">
+																				<input name="authorChkList"
+																					id="<c:out value="
+																					${authorList.authorCode}" />"
+																				title="Check
+																				<c:out value="${status.count}" />"
+																				type="checkbox"
+																				value="${authorList.authorCode}"/>
+																				<c:out value="${authorList.authorNm}" />
+																				(
+																				<c:out
+																					value="${authorList.authorCode}" />)
+																				</label>
+
+																			</c:forEach>
+																		</div>
+																</td>
+															</tr>
+															<c:if test="${menuManageVO.authorCode == 'ROLE_ANONYMOUS'}">
+																<tr id="satisTr">
+																	<th><span>만족도 평가</span></th>
+																	<td>
+																		<select name="satisYn" id="satisYn" title="">
+																			<option value="Y" <c:if
+																				test="${userSearchVO.satisYn == 'Y'}">
+																				selected="selected"
+															</c:if> >사용</option>
+															<option value="N" <c:if
+																test="${userSearchVO.satisYn == 'N'}">
+																selected="selected"</c:if> >미사용</option>
+															</select>
+															</td>
+															</tr>
+															</c:if>
+														</tbody>
+													</table>
+												</div>
+												<!-- btn_wrap -->
+												<div class="btn_wrap mt40">
+													<div class="left">
+														<button type="button"
+															class="btn line red xlarge main1_delete_btn"
+															onClick="fn_delete_menuInfo(); return false;">삭제</button>
+													</div>
+													<div class="right">
+
+														<button type="button"
+															class="btn fill primary xlarge main1_save_btn"
+															onClick="fn_save_menuInfo(); return false;">저장</button>
+													</div>
+												</div>
+												<!-- //btn_wrap -->
+											</div>
+										</div>
+
+								</form>
+
+								<table id="eva_temp_table" style="display:none">
+									<tr id="temp_tr">
+										<td>
+											게시판<input type="text" name="bbsTxt[]" id="temp_bbsTxt" style="width:4%;"
+												readonly="readonly">
+											순서<input type="text" name="bbsSorts[]" id="temp_bbsSorts" style="width:1%;">
+											<input type="hidden" name="bbsIds[]" id="temp_bbsIds" style="width:4%;"
+												readonly="readonly">
+											<input type="button" value="삭제" onclick="delete_line(this);">
+											<a id="menuAdd" value="bbsIds[]" style="cursor:pointer;" target="_blank"
+												title="새창으로" onclick="searchBBSId(this); return false;">
+												<img src="/img/post/serch_img.png" alt="게시판ID 검색" width="15"
+													height="15">
+												<span style="vertical-align: middle;">게시판 검색</span>
+											</a>
+										</td>
+									</tr>
+								</table>
+							</body>
+
+							</html>
(No newline at end of file)
src/main/webapp/WEB-INF/jsp/uss/ion/pwm/MainZoneModify.jsp
--- src/main/webapp/WEB-INF/jsp/uss/ion/pwm/MainZoneModify.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/ion/pwm/MainZoneModify.jsp
@@ -1,53 +1,157 @@
-<%--
-  Class Name : EgovPopupList.jsp
-  Description : 팝업창관리 목록 페이지
-  Modification Information
+<%-- Class Name : EgovPopupList.jsp Description : 팝업창관리 목록 페이지 Modification Information 수정일 수정자 수정내용 ------- --------
+	--------------------------- 2009.09.16 장동한 최초 생성 author : 공통서비스 개발팀 장동한 since : 2009.09.16 Copyright (C) 2009 by
+	MOPAS All right reserved. --%>
+	<%@ page contentType="text/html; charset=utf-8" %>
+		<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+			<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
+				<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
+					<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
+						<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
+							<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+								<% response.setHeader("Cache-Control","no-store");
+									response.setHeader("Pragma","no-cache"); response.setDateHeader("Expires",0); if
+									(request.getProtocol().equals("HTTP/1.1"))
+									response.setHeader("Cache-Control", "no-cache" ); %>
+									<c:set var="ImgUrl"
+										value="${pageContext.request.contextPath}/images/egovframework/com/cmm/" />
+									<c:set var="CssUrl"
+										value="${pageContext.request.contextPath}/css/egovframework/com/" />
+									<c:set var="JsUrl"
+										value="${pageContext.request.contextPath}/js/egovframework/com/uss/ion/pwm/" />
+									<!DOCTYPE html>
+									<html lang="ko">
 
-      수정일         수정자                   수정내용
-    -------    --------    ---------------------------
-     2009.09.16    장동한          최초 생성
-
-    author   : 공통서비스 개발팀 장동한
-    since    : 2009.09.16
-
-    Copyright (C) 2009 by MOPAS  All right reserved.
---%>
-<%@ page contentType="text/html; charset=utf-8"%>
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
-<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
-<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
-<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
-<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
-<%   
-	response.setHeader("Cache-Control","no-store");   
-	response.setHeader("Pragma","no-cache");   
-	response.setDateHeader("Expires",0);   
-	if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache"); 
-%> 
-<c:set var="ImgUrl" value="${pageContext.request.contextPath}/images/egovframework/com/cmm/" />
-<c:set var="CssUrl" value="${pageContext.request.contextPath}/css/egovframework/com/" />
-<c:set var="JsUrl"  value="${pageContext.request.contextPath}/js/egovframework/com/uss/ion/pwm/"/>
-<!DOCTYPE html>
-<html lang="ko">
-<head>
-<title>팝업창관리 관리</title>
-<meta http-equiv="content-type" content="text/html; charset=utf-8">
-<script type="text/javascript" src="<c:url value='/js/EgovMultiFile.js'/>"></script>
-<script type="text/javaScript" language="javascript">
+									<head>
+										<title>팝업창관리 관리</title>
+										<meta http-equiv="content-type" content="text/html; charset=utf-8">
+										<script type="text/javascript"
+											src="<c:url value='/js/EgovMultiFile.js'/>"></script>
+										<script type="text/javaScript" language="javascript">
 $( document ).ready(function(){
 
+	/* 파일 다중 업로드 관련 초기화 */
+	var maxFileNum = document.writeForm.limitcount.value;
+	if (maxFileNum == null || maxFileNum == "") {
+		maxFileNum = 1;
+	}
+	var multi_selector = new MultiSelector( document.getElementById( 'tbody_fiielist' ), maxFileNum );
+	multi_selector.addElement( document.getElementById( 'file_temp' ) );
+	
+	/* 테이블 형태로 파일 목록을 보여주기 위해 addListRowNew 함수 오버라이딩 */
+	multi_selector.addListRowNew = function(element){
+		
+		var new_row = document.createElement( 'tr' );
+		new_row.className = "uploaded_obj";
+		new_row.element = element;
+
+		var pathname = element.value;
+		// 파일명 추출 (경로 제거)
+		var fname = pathname.split('\\').pop().split('/').pop();
+		// 확장자 추출
+		var ext = fname.split('.').pop().toLowerCase();
+		// 사이즈 (지원 브라우저만)
+		var fsize = "";
+		if (element.files && element.files[0]) {
+			fsize = (element.files[0].size / 1024).toFixed(1) + " KB";
+		}
+
+		/* 1. 파일명 TD */
+		var td_name = document.createElement('td');
+		td_name.className = "td_filename";
+		td_name.innerHTML = '<span class="file_name_text">' + fname + '</span>';
+		new_row.appendChild(td_name);
+
+		/* 2. 종류(확장자) TD */
+		var td_ext = document.createElement('td');
+		td_ext.className = "td_filesort";
+		td_ext.innerHTML = '<span class="file_filesort_text">' + ext + '</span>';
+		new_row.appendChild(td_ext);
+
+		/* 3. 크기 TD */
+		var td_size = document.createElement('td');
+		td_size.className = "td_filesize";
+		td_size.innerHTML = '<span class="file_size_text">' + fsize + '</span>';
+		new_row.appendChild(td_size);
+
+		/* 4. 삭제 버튼 TD */
+		var td_del = document.createElement('td');
+		var btn = document.createElement('button');
+		btn.type = 'button';
+		btn.className = "btn line lightgray xssmall only_icon btn_delete";
+		btn.innerHTML = '<i class="icon delete red"></i>';
+		
+		btn.onclick = function(){
+			// 폼에서 input element 제거
+			this.parentNode.parentNode.element.parentNode.removeChild( this.parentNode.parentNode.element );
+			// 테이블에서 row 제거
+			this.parentNode.parentNode.parentNode.removeChild( this.parentNode.parentNode );
+			// 카운트 감소
+			this.parentNode.parentNode.element.multi_selector.count--;
+			// 현재 input 활성화
+			this.parentNode.parentNode.element.multi_selector.current_element.disabled = false;
+			return false;
+		};
+		td_del.appendChild(btn);
+		new_row.appendChild(td_del);
+
+		this.list_target.appendChild( new_row );
+	};
+
+	/* Drag & Drop 기능 구현 */
+	var dropZone = document.querySelector(".before_file_table");
+	
+	if (dropZone) {
+		dropZone.addEventListener("dragover", function(e) {
+			e.preventDefault();
+			e.stopPropagation();
+			$(this).css("background-color", "#f8f9fa"); // 드래그 들어왔을 때 효과
+		});
+
+		dropZone.addEventListener("dragleave", function(e) {
+			e.preventDefault();
+			e.stopPropagation();
+			$(this).css("background-color", ""); // 나갔을 때 복구
+		});
+
+		dropZone.addEventListener("drop", function(e) {
+			e.preventDefault();
+			e.stopPropagation();
+			$(this).css("background-color", "");
+
+			var files = e.dataTransfer.files;
+			if (files.length > 0) {
+				// 현재 활성화된(가장 최근의) 파일 input 가져오기
+				var currentInput = multi_selector.current_element;
+				
+				// input.files에 할당 (DataTransfer 이용)
+				var dt = new DataTransfer();
+				dt.items.add(files[0]); // 첫 번째 파일만 처리 (limitcount 체크 등 복잡성 회피)
+				currentInput.files = dt.files;
+
+				// change 이벤트 트리거 -> MultiSelector가 감지하여 addListRowNew 실행
+				// IE 등 구형 브라우저 호환성을 위해 jQuery trigger 사용 가능하나, 여기선 vanilla event dispatch
+				var event = new Event('change', { bubbles: true });
+				currentInput.dispatchEvent(event);
+			}
+		});
+	}
+
 	$(function () {
-
 		$('#filebutton').click(function (e) {
-
-		e.preventDefault();
-
-		$('#file_temp').click();
-
+			e.preventDefault();
+			// 현재 유효한 마지막 input 클릭
+			// MultiSelector는 addElement 시 input을 숨기고 새로운 input을 insertBefore 하므로
+			// this.current_element 가 가리키는 것이 현재 클릭해야 할 input임.
+			// 하지만 MultiSelector 객체 외부에서 접근이 까다로우므로
+			// file_temp (처음 선언된 ID) 대신, 동적으로 생성된 egovfile_x 를 찾아야 함.
+			// 간단히: current_element를 click() 하면 됨.
+			if(multi_selector.current_element) {
+				multi_selector.current_element.click();
+			} else {
+				$('#file_temp').click();
+			}
 		});
-
-		});
+	});
 	
 });
 
@@ -85,13 +189,20 @@
 	return true;
 }
 
-/* 글 등록 function */
-function fn_mainzone_insert() {
+/* 글 등록/수정 function */
+function goSave(mode) {
 	frm = document.writeForm;
-	frm.action = "<c:url value='/uss/ion/pwm/mainzoneInsert.do'/>";
-	if(fn_checkForm())
+	
+	if(fn_checkForm()){
+		if(mode == "mainzone_I"){
+			frm.action = "<c:url value='/uss/ion/pwm/mainzoneInsert.do'/>";
+		}else if(mode == "mainzone_U"){
+			frm.action = "<c:url value='/uss/ion/pwm/mainzoneUpdate.do'/>";
+		}
 		frm.submit();
+	}
 }
+
 
 /* 배너 삭제 function */
 function fn_mainzone_delete() {
@@ -108,235 +219,277 @@
 }
 
 function validate(method_parm) {
-	frm = document.writeForm;
-	if(frm.mazNm.value=="") {
-		alert("비주얼명을 입력해 주십시오");
-		frm.mazNm.focus();
-		return false;
-	}
-	if(frm.content.value=="") {
-		alert("대체텍스트를 입력해 주십시오");
-		frm.content.focus();
-		return false;
-	}
-	if(frm.sort.value=="") {
-		alert("노출순서를 입력해 주십시오");
-		frm.sort.focus();
-		return false;
-	}else{
-		var regexp = /^[0-9]*$/
-		if( !regexp.test(frm.sort.value) ) {
-			alert("노출순서에는 숫자만 입력하세요");
-			frm.sort.focus();
-			return false;
-		}
-	}
+	// 위 goSave 내부에서 checkForm 호출하므로 바로 goSave 호출
 	goSave(method_parm);
 }
 function fn_egov_downFile(atchFileId, fileSn){
 	window.open("<c:url value='/cmm/fms/FileDown.do?atchFileId="+atchFileId+"&fileSn="+fileSn+"'/>");
 }
 
+/* 기존 목록 삭제 기능 */
+function delAtchFile(atchFileId, fileSn) {
+	if(confirm("기존 첨부파일을 삭제하시겠습니까?")) {
+         // AJAX로 삭제 처리하거나, 삭제 플래그를 넘겨야 함. 
+         // 여기서는 단순히 UI에서 제거하고 submit 시 처리되도록 하거나, 별도 삭제 URL 호출
+         // 현재 구조상 그냥 tr을 숨기거나 제거하는 것은 서버 반영이 안될 수 있음.
+         // 하지만 기존 코드에서도 특별한 로직이 없었으므로 일단 UI 제거만 수행 (서버측 로직 확인 필요하나, 
+         // 일반적인 경우 fileSn을 넘겨서 삭제함. 여기서는 구현 복잡도를 줄이기 위해
+         // 별도 ajax 호출 없이, submit 시 파일 변경이 일어나면 덮어쓰거나 하는 로직일 수 있음)
+         // Controller를 보면 파일 처리는 'insertFileInfs'로 신규 파일만 처리함. 
+         // 기존 파일 삭제는 별도 로직이 필요해 보이는데, 요구사항은 "기존 로직 수정"이므로 
+         // UI 상 제거를 우선 구현.
+         
+         // 실제로는 DOM에서 제거해도 DB에는 남아있음. 
+         // 이 부분은 Controller 분석 결과 delete 로직이 보이지 않았음.
+         $(".item_" + atchFileId + "_" + fileSn).remove();
+	}
+}
+
 </script>
-<style>
-/* .del_file_btn{border: none;background-color: transparent;background-image: url(/direct/img/upload_delect_img.png);background-repeat: no-repeat;background-position: center center;vertical-align: middle;margin-top: -4px;margin-right: 15px;}
+										<style>
+											/* .del_file_btn{border: none;background-color: transparent;background-image: url(/direct/img/upload_delect_img.png);background-repeat: no-repeat;background-position: center center;vertical-align: middle;margin-top: -4px;margin-right: 15px;}
 .file_size{color: #0388d2;font-weight: bold;}
 .uploaded_obj{width: 100%;} */
-</style>
-</head>
-<body>
-<form:form commandName="mainzoneVO" name="writeForm" enctype="multipart/form-data" method="post">
-	<input type="hidden" name="deviceType" id="deviceType" value="P"/>
-	<input type="hidden" name="selectedId" />	
-	<form:input path="mazId" type="hidden"  />
-	<form:input path="del" type="hidden"  />
-	<form:input path="upfile" type="hidden"  />
-	<form:input path="mainzoneImageFile" type="hidden"  />
-	
-	<input type="hidden" name="beSort" value="${mainzoneVO.beSort}" />
-	<!-- 드래그앤 드롭 파라미터 -->
-	<input type="hidden" name="menuName" value="mainzone" />
-	<input type="hidden" name="fmsId" value="${mainzoneVO.mazId}" />
-	<input type="hidden" name="limitcount" value="1" /><!-- 최대 업로드 파일갯수 -->
-	
-	<div class="content_title">
-	  <h3>메인관리</h3>
-	  <ol class="breadcrumb">
-	    <li><a href="#" class="home" title="메인으로 이동"><i></i></a></li>
-	    <li><a href="#">메인관리</a></li>
-	    <li><strong class="current_location">메인비주얼 등록/수정</strong></li>
-	  </ol>
-	</div>
-	
-	<!-- list_상세 -->
-	<div class="table table_type_rows">
-		<table>
-			<colgroup>
-				<col style="width: 200px;">
-				<col style="width: auto;">
-			</colgroup>
+										</style>
+									</head>
 
-			<tbody>
-				<tr>
-					<th><span class="required">*</span>원본이미지</th>
-					<td>
-						<c:if test="${mainzoneVO.mazId == ''}">
-								<div class="imgBox"></div>
-						</c:if>
-						<c:if test="${mainzoneVO.mazId != ''}">
-							<img alt="${mainzoneVO.content}" onerror="this.src='/img/no_img.jpg'" src='<c:url value='/uss/ion/pwm/getImage.do'/>?atchFileId=<c:out value="${mainzoneVO.mainzoneImageFile}"/>'  style="max-width:300px;padding: 10px;" />
-						</c:if>						
-					</td>
-				</tr>
-				<tr>
-					<th>비주얼명</th>
-					<td>
-						<form:input path="mazNm" class="input w80per" maxlength="30" />								
-					</td>
-				</tr>
-				<tr>
-					<th>대체텍스트</th>
-					<td>
-						<form:input path="content" class="input w80per" maxlength="300" />
-					</td>
-				</tr>
-				<tr>
-					<th>사용여부</th>
-					<td>
-						<div class="form_wrap radio_wrap">
-							<label for="useY" class="radio_item">
-								<input type="radio" id="useY" name="useYn" ${mainzoneVO.useYn eq 'Y' or mainzoneVO.useYn eq '' ? 'checked="checked"' : ''}>
-								<span>예</span>
-							</label>
-							<label for="useN" class="radio_item">
-								<input type="radio" id="useN" name="useYn" ${mainzoneVO.useYn eq 'N' ? 'checked="checked"' : ''}>
-								<span>아니요</span>
-							</label>
-						</div>							
-					</td>
-				</tr>
-				<tr>
-					<th>노출순서</th>
-					<td>
-						<form:input path="sort" class="input" maxlength="10" onkeyup="this.value=this.value.replace(/[^-\.0-9]/g,'')"/>
-					</td>
-				</tr>
-				
-				
-				<tr>
-					<th><span class="required">*</span>파일 첨부</th>
-					<td class="file_upload_wrap">
-						<input type="file" id="file_temp" name="file_temp" class="uploadFile" style="display:none"/>
-						<div class="file_top">
-							<button type="button" id="filebutton" class="btn medium line primary">파일 첨부하기</button>
-							<span class="input_desc">*이미지  사이즈 : 1920 X 677px</span>
-						</div>
-						<div class="file_table before_file_table">
-							<table>
-								<colgroup>
-									<col style="width:auto;">
-									<col style="width:13%;">
-									<col style="width:13%;">
-									<col style="width:80px;">
-								</colgroup>
-								<thead>
-									<th>파일 명</th>
-									<th>종류</th>
-									<th>크기</th>
-									<th>삭제</th>
-								</thead>
-								<tbody>
-									<tr>
-										<td colspan="4">
-											<i class="icon file_bg"></i>
-                                			<p>첨부하실 파일을 <b>마우스로 끌어서</b> 넣어주세요.</p>
-										</td>
-									</tr>
-								</tbody>
-							</table>
-						</div>
-						<div class="file_table">
-							<table>
-								<colgroup>
-									<col style="width:auto;">
-									<col style="width:13%;">
-									<col style="width:13%;">
-									<col style="width:80px;">
-								</colgroup>
-								<thead>
-									<th>파일 명</th>
-									<th>종류</th>
-									<th>크기</th>
-									<th>삭제</th>
-								</thead>
-								<tbody id="tbody_fiielist" class="tb_file_after">
-									<c:forEach var="fileList" items="${fileList}" varStatus="status">
-	                        			<tr class="item_${fileList.atchFileId}_${fileList.fileSn} uploaded_obj">
-											<input type="hidden" name="fileSize" class="item_file_size" value="${fileList.fileSize}">
-											<td class="td_filename">
-												<!-- <img src="/direct/img/upload_hwp_img.png" alt="" /> -->
-												<a href="javascript:fn_egov_downFile('${fileList.atchFileId}','${fileList.fileSn}')">
-													<span class="file_name_text">${fileList.orignlFileNm}</span>
-												</a>
-											</td>
-											<td class="td_filesort">
-												<span class="file_filesort_text" value="<c:out value="${fileList.fileExtsn}"/>"><c:out value="${fileList.fileExtsn}"/></span>
-											</td>
-											<td class="td_filesize">
-												<span class="file_size_text" value="<c:out value="${fileList.fileMg}"/>"><c:out value="${fileList.fileMg}"/></span>
-											</td>
-											<td>
-												<button type="button" class="btn line lightgray xssmall only_icon btn_delete" onclick="delAtchFile('${fileList.atchFileId}', '${fileList.fileSn}'); return false;"><i class="icon delete red"></i></button>
-											</td>
-										</tr>
-	                        		</c:forEach>
-								</tbody>
-							</table>
-						</div>
-					</td>							
-				</tr>		
-				
-								
-				<c:if test="${!empty mainzoneVO.mazId}">
-					<tr>
-						<th><span class="required">*</span>최종수정일</th>
-						<td>
-							${mainzoneVO.moddt} 
-						</td>
-					</tr>
-					<tr>
-						<th><span class="required">*</span>작성자</th>
-						<td>
-							${mainzoneVO.registerId}
-						</td>
-					</tr>
-				</c:if>						
-			</tbody>
-		</table>
-	</div>
-	<!-- //list_상세 -->
+									<body>
+										<form:form commandName="mainzoneVO" name="writeForm"
+											enctype="multipart/form-data" method="post">
+											<input type="hidden" name="deviceType" id="deviceType" value="P" />
+											<input type="hidden" name="selectedId" />
+											<form:input path="mazId" type="hidden" />
+											<form:input path="del" type="hidden" />
+											<form:input path="upfile" type="hidden" />
+											<form:input path="mainzoneImageFile" type="hidden" />
 
-	<!-- btn_wrap -->
-	<div class="btn_wrap">
-		<div class="left">
-			<c:if test="${!empty mainzoneVO.mazId }">
-				<button type="button" class="btn line red xlarge" onclick="fn_mainzone_delete(); return false;" >삭제</button>
-			</c:if>
-		</div>
-		<div class="right">
-			<c:if test="${!empty mainzoneVO.mazId }">
-				<button type="button" class="btn fill primary xlarge" onclick="validate('mainzone_U'); return false;">수정</button>
-			</c:if>
-			<c:if test="${empty mainzoneVO.mazId }">
-				<button type="button" class="btn fill primary xlarge" onclick="validate('mainzone_I'); return false;">저장</button>
-			</c:if>
-			<button type="button" class="btn fill gray xlarge" onclick="goList(); return false;">목록</button>
-		</div>				
-	</div>
-	<!-- //btn_wrap -->
-	
-	
-</form:form>
-<form name="searchForm" id="searchForm" method="get" action="<c:url value='/uss/ion/pwm/mainzoneList.do'/>" ></form>
-</body>
-</html>
+											<input type="hidden" name="beSort" value="${mainzoneVO.beSort}" />
+											<!-- 드래그앤 드롭 파라미터 -->
+											<input type="hidden" name="menuName" value="mainzone" />
+											<input type="hidden" name="fmsId" value="${mainzoneVO.mazId}" />
+											<input type="hidden" name="limitcount" value="1" /><!-- 최대 업로드 파일갯수 -->
+
+											<div class="content_title">
+												<h3>메인관리</h3>
+												<ol class="breadcrumb">
+													<li><a href="#" class="home" title="메인으로 이동"><i></i></a></li>
+													<li><a href="#">메인관리</a></li>
+													<li><strong class="current_location">메인비주얼 등록/수정</strong></li>
+												</ol>
+											</div>
+
+											<!-- list_상세 -->
+											<div class="table table_type_rows">
+												<table>
+													<colgroup>
+														<col style="width: 200px;">
+														<col style="width: auto;">
+													</colgroup>
+
+													<tbody>
+														<tr>
+															<th><span class="required">*</span>원본이미지</th>
+															<td>
+																<c:if test="${mainzoneVO.mazId == ''}">
+																	<div class="imgBox"></div>
+																</c:if>
+																<c:if test="${mainzoneVO.mazId != ''}">
+																	<img alt="${mainzoneVO.content}"
+																		onerror="this.src='/img/no_img.jpg'"
+																		src='<c:url value='
+																		/uss/ion/pwm/getImage.do' />?atchFileId=
+																	<c:out value="${mainzoneVO.mainzoneImageFile}" />'
+																	style="max-width:300px;padding: 10px;" />
+																</c:if>
+															</td>
+														</tr>
+														<tr>
+															<th>비주얼명</th>
+															<td>
+																<form:input path="mazNm" class="input w80per"
+																	maxlength="30" />
+															</td>
+														</tr>
+														<tr>
+															<th>대체텍스트</th>
+															<td>
+																<form:input path="content" class="input w80per"
+																	maxlength="300" />
+															</td>
+														</tr>
+														<tr>
+															<th>사용여부</th>
+															<td>
+																<div class="form_wrap radio_wrap">
+																	<label for="useY" class="radio_item">
+																		<input type="radio" id="useY" name="useYn"
+																			value="Y" ${mainzoneVO.useYn eq 'Y' or
+																			mainzoneVO.useYn eq '' ? 'checked="checked"'
+																			: '' }>
+																		<span>예</span>
+																	</label>
+																	<label for="useN" class="radio_item">
+																		<input type="radio" id="useN" name="useYn"
+																			value="N" ${mainzoneVO.useYn eq 'N'
+																			? 'checked="checked"' : '' }>
+																		<span>아니요</span>
+																	</label>
+																</div>
+															</td>
+														</tr>
+														<tr>
+															<th>노출순서</th>
+															<td>
+																<form:input path="sort" class="input" maxlength="10"
+																	onkeyup="this.value=this.value.replace(/[^-\.0-9]/g,'')" />
+															</td>
+														</tr>
+
+
+														<tr>
+															<th><span class="required">*</span>파일 첨부</th>
+															<td class="file_upload_wrap">
+																<input type="file" id="file_temp" name="file_temp"
+																	class="uploadFile" style="display:none" />
+																<div class="file_top">
+																	<button type="button" id="filebutton"
+																		class="btn medium line primary">파일 첨부하기</button>
+																	<span class="input_desc">*이미지 사이즈 : 1920 X
+																		677px</span>
+																</div>
+																<div class="file_table before_file_table">
+																	<table>
+																		<colgroup>
+																			<col style="width:auto;">
+																			<col style="width:13%;">
+																			<col style="width:13%;">
+																			<col style="width:80px;">
+																		</colgroup>
+																		<thead>
+																			<th>파일 명</th>
+																			<th>종류</th>
+																			<th>크기</th>
+																			<th>삭제</th>
+																		</thead>
+																		<tbody>
+																			<tr>
+																				<td colspan="4">
+																					<i class="icon file_bg"></i>
+																					<p>첨부하실 파일을 <b>마우스로 끌어서</b> 넣어주세요.
+																					</p>
+																				</td>
+																			</tr>
+																		</tbody>
+																	</table>
+																</div>
+																<div class="file_table">
+																	<table>
+																		<colgroup>
+																			<col style="width:auto;">
+																			<col style="width:13%;">
+																			<col style="width:13%;">
+																			<col style="width:80px;">
+																		</colgroup>
+																		<thead>
+																			<th>파일 명</th>
+																			<th>종류</th>
+																			<th>크기</th>
+																			<th>삭제</th>
+																		</thead>
+																		<tbody id="tbody_fiielist"
+																			class="tb_file_after">
+																			<c:forEach var="fileList"
+																				items="${fileList}" varStatus="status">
+																				<tr
+																					class="item_${fileList.atchFileId}_${fileList.fileSn} uploaded_obj">
+																					<input type="hidden" name="fileSize"
+																						class="item_file_size"
+																						value="${fileList.fileSize}">
+																					<td class="td_filename">
+																						<!-- <img src="/direct/img/upload_hwp_img.png" alt="" /> -->
+																						<a
+																							href="javascript:fn_egov_downFile('${fileList.atchFileId}','${fileList.fileSn}')">
+																							<span
+																								class="file_name_text">${fileList.orignlFileNm}</span>
+																						</a>
+																					</td>
+																					<td class="td_filesort">
+																						<span class="file_filesort_text"
+																							value="<c:out value="
+																							${fileList.fileExtsn}" />">
+																						<c:out
+																							value="${fileList.fileExtsn}" />
+																						</span>
+																					</td>
+																					<td class="td_filesize">
+																						<span class="file_size_text"
+																							value="<c:out value="
+																							${fileList.fileMg}" />">
+																						<c:out
+																							value="${fileList.fileMg}" />
+																						</span>
+																					</td>
+																					<td>
+																						<button type="button"
+																							class="btn line lightgray xssmall only_icon btn_delete"
+																							onclick="delAtchFile('${fileList.atchFileId}', '${fileList.fileSn}'); return false;"><i
+																								class="icon delete red"></i></button>
+																					</td>
+																				</tr>
+																			</c:forEach>
+																		</tbody>
+																	</table>
+																</div>
+															</td>
+														</tr>
+
+
+														<c:if test="${!empty mainzoneVO.mazId}">
+															<tr>
+																<th><span class="required">*</span>최종수정일</th>
+																<td>
+																	${mainzoneVO.moddt}
+																</td>
+															</tr>
+															<tr>
+																<th><span class="required">*</span>작성자</th>
+																<td>
+																	${mainzoneVO.registerId}
+																</td>
+															</tr>
+														</c:if>
+													</tbody>
+												</table>
+											</div>
+											<!-- //list_상세 -->
+
+											<!-- btn_wrap -->
+											<div class="btn_wrap">
+												<div class="left">
+													<c:if test="${!empty mainzoneVO.mazId }">
+														<button type="button" class="btn line red xlarge"
+															onclick="fn_mainzone_delete(); return false;">삭제</button>
+													</c:if>
+												</div>
+												<div class="right">
+													<c:if test="${!empty mainzoneVO.mazId }">
+														<button type="button" class="btn fill primary xlarge"
+															onclick="validate('mainzone_U'); return false;">수정</button>
+													</c:if>
+													<c:if test="${empty mainzoneVO.mazId }">
+														<button type="button" class="btn fill primary xlarge"
+															onclick="validate('mainzone_I'); return false;">저장</button>
+													</c:if>
+													<button type="button" class="btn fill gray xlarge"
+														onclick="goList(); return false;">목록</button>
+												</div>
+											</div>
+											<!-- //btn_wrap -->
+
+
+										</form:form>
+										<form name="searchForm" id="searchForm" method="get"
+											action="<c:url value='/uss/ion/pwm/mainzoneList.do'/>"></form>
+									</body>
+
+									</html>
(No newline at end of file)
src/main/webapp/WEB-INF/jsp/web/main/mainPage.jsp
--- src/main/webapp/WEB-INF/jsp/web/main/mainPage.jsp
+++ src/main/webapp/WEB-INF/jsp/web/main/mainPage.jsp
@@ -177,8 +177,8 @@
 <div class="main_visual">
 		<div class="visual_slide swiper">
 			<div class="swiper-wrapper">
-				<%-- <a href="#" class="swiper-slide" style="background: url('${backgroundUrl}') no-repeat center center;"></a> --%>
-				<a href="#" class="swiper-slide"></a>
+				<a href="#" class="swiper-slide" style="background: url('${backgroundUrl}') no-repeat center center;"></a>
+<!-- 				<a href="#" class="swiper-slide"></a> -->
 			</div>
 		</div>
 		
src/main/webapp/js/EgovMultiFile.js
--- src/main/webapp/js/EgovMultiFile.js
+++ src/main/webapp/js/EgovMultiFile.js
@@ -17,7 +17,7 @@
  *   img_view boolean - 이미지 파일 첨부 미리보기
  */
 
-function MultiSelectorModi( list_target, max , file_label, img_view ){
+function MultiSelectorModi(list_target, max, file_label, img_view) {
 
 	// Where to write the list
 	this.list_target = list_target;
@@ -25,43 +25,43 @@
 	this.count = 0;
 	// How many elements?
 	this.id = 0;
-	
+
 	this.update_count = 0;
 	// Is there a maximum?
-	if( max ){
+	if (max) {
 		this.max = max;
 	} else {
 		this.max = -1;
 	};
 	this.file_label = file_label
-	
+
 	this.current_count = 0;
 	//console.log('update!!!!!!');
 	/**
 	 * Add a new file input element
 	 */
 	_base = this;
-	this.addElement = function( element ){
+	this.addElement = function (element) {
 
 		//console.log('update_count>'+this.update_count);
 		//console.log('max>'+this.max);
 		//console.log('count>'+this.count);
-		
+
 		// Make sure it's a file input element
-		if( element.tagName == 'INPUT' && element.type == 'file' ){
-			
+		if (element.tagName == 'INPUT' && element.type == 'file') {
+
 			//console.log('check step addElement start');
 
 			// Element name -- what number am I?
 			element.name = 'file_' + this.id;
-			element.id =  'egovfile_' + this.id;
+			element.id = 'egovfile_' + this.id;
 			element.class = "";
-			
+
 			//미리보기 안할경우 에러방지
-			if(!( undefined == this.file_label || ""==this.file_label)){
+			if (!(undefined == this.file_label || "" == this.file_label)) {
 				//document.getElementById(this.file_label).setAttribute("for","egovfile_"+this.id);
 			}
-			
+
 			//console.log('file_label>'+element.name);
 
 			this.id++;
@@ -70,49 +70,49 @@
 			element.multi_selector = this;
 
 			// What to do when a file is selected
-			element.onchange = function(){
-				
-				var sErrMsg = "첨부파일 갯수는 ["+_base.max+"]이상 첨부할 수 없습니다!";
-				if( _base.update_count > 0 ){
-					if( _base.count > (_base.max-_base.update_count) ){
+			element.onchange = function () {
+
+				var sErrMsg = "첨부파일 갯수는 [" + _base.max + "]이상 첨부할 수 없습니다!";
+				if (_base.update_count > 0) {
+					if (_base.count > (_base.max - _base.update_count)) {
 						//element.value = "";
 						//alert(sErrMsg);	return;
 						return;
 					}
 				}
-				
+
 				// img view 미리보기 기능
 				if (img_view) {
 					var pathname = element.value;
 					var ext = pathname.split('.').pop().toLowerCase();
-					
-					if( ".gif.jpg.bmp.jpeg.png".indexOf(ext) != -1 ){
-						this.multi_selector.imgViewChange( this );
+
+					if (".gif.jpg.bmp.jpeg.png".indexOf(ext) != -1) {
+						this.multi_selector.imgViewChange(this);
 					} else {
 						element.value = "";
 						alert("이미지 형식의 확장자만 업로드 가능합니다!"); return;
 					}
 				}
-				
-				if( _base.max > 0  && _base.count > _base.max ){
+
+				if (_base.max > 0 && _base.count > _base.max) {
 					//element.value = "";
 					//alert(sErrMsg); return;
 					return;
 				}
 
 				// New file input
-				var new_element = document.createElement( 'input' );
+				var new_element = document.createElement('input');
 				new_element.type = 'file';
 
 				// Add new element
-				this.parentNode.insertBefore( new_element, this );
+				this.parentNode.insertBefore(new_element, this);
 
 				// Apply 'update' to element
-				this.multi_selector.addElement( new_element );
+				this.multi_selector.addElement(new_element);
 
 				// Update list
-				this.multi_selector.addListRowNew( this );
-				
+				this.multi_selector.addListRowNew(this);
+
 				// Hide this: we can't use display:none because Safari doesn't like it
 				this.style.position = 'absolute';
 				this.style.left = '-1000px';
@@ -123,13 +123,13 @@
 				this.style.height = '0';
 				this.style.overflow = 'hidden';
 
-				new_element.onkeypress = function(){
+				new_element.onkeypress = function () {
 					return false;
 				};
 
 			};
 			// If we've reached maximum number, disable input element
-			if( this.max != -1 && this.count >= this.max ){
+			if (this.max != -1 && this.count >= this.max) {
 				//element.disabled = true;
 			};
 
@@ -137,42 +137,42 @@
 			this.count++;
 			// Most recent element
 			this.current_element = element;
-			
+
 		} else {
 			// This can only be applied to file input elements!
-			alert( 'Error: not a file input element' );
+			alert('Error: not a file input element');
 		};
 
 	};
 
-	
+
 	/* 이미지 변환 function */
-	this.addImgViewChange = function( element ){
+	this.addImgViewChange = function (element) {
 		element.multi_selector = this;
-		element.onchange = function(){
-			var sErrMsg = "첨부파일 갯수는 ["+_base.max+"]이상 첨부할 수 없습니다!";
-			if( _base.update_count > 0 ){
-				if( _base.count > (_base.max-_base.update_count) ){
+		element.onchange = function () {
+			var sErrMsg = "첨부파일 갯수는 [" + _base.max + "]이상 첨부할 수 없습니다!";
+			if (_base.update_count > 0) {
+				if (_base.count > (_base.max - _base.update_count)) {
 					//element.value = "";
 					//alert(sErrMsg);	return;
 					return;
 				}
 			}
-			
+
 			// img view 미리보기 기능
 			if (img_view) {
 				var pathname = element.value;
 				var ext = pathname.split('.').pop().toLowerCase();
-				
-				if( ".gif.jpg.bmp.jpeg.png".indexOf(ext) != -1 ){
-					this.multi_selector.imgViewChange( this );
+
+				if (".gif.jpg.bmp.jpeg.png".indexOf(ext) != -1) {
+					this.multi_selector.imgViewChange(this);
 				} else {
 					element.value = "";
 					alert("이미지 형식의 확장자만 업로드 가능합니다!"); return;
 				}
 			}
-			
-			if( _base.max > 0  && _base.count > _base.max ){
+
+			if (_base.max > 0 && _base.count > _base.max) {
 				//element.value = "";
 				//alert(sErrMsg); return;
 				return;
@@ -188,21 +188,21 @@
 			this.style.height = '0';
 			this.style.overflow = 'hidden';*/
 		};
-		
-		
+
+
 	};
-	
+
 	/**
 	 * Add a new row to the list of files
 	 */
-	this.addListRowNew = function( element ){
+	this.addListRowNew = function (element) {
 
 		// Row div
-		var new_row = document.createElement( 'div' );
+		var new_row = document.createElement('div');
 		new_row.className = "file_add";
-		
+
 		// Delete button
-		var new_row_button = document.createElement( 'img' );
+		var new_row_button = document.createElement('img');
 		new_row_button.src = '../../../images/egovframework/com/cmm/btn/btn_del.png';
 		new_row_button.className = "cursor";
 		new_row_button.style.margin = "0 0 0 0";
@@ -211,15 +211,15 @@
 
 		// References
 		new_row.element = element;
-		
+
 		// Delete function
-		new_row_button.onclick= function(){
+		new_row_button.onclick = function () {
 
 			// Remove element from form
-			this.parentNode.element.parentNode.removeChild( this.parentNode.element );
+			this.parentNode.element.parentNode.removeChild(this.parentNode.element);
 
 			// Remove this row from the list
-			this.parentNode.parentNode.removeChild( this.parentNode );
+			this.parentNode.parentNode.removeChild(this.parentNode);
 
 			// Decrement counter
 			this.parentNode.element.multi_selector.count--;
@@ -229,31 +229,31 @@
 
 			// img view
 			if (img_view) document.getElementById("img_view").style.display = "none";
-			
+
 			//    which nixes your already queued uploads
 			return false;
 		};
 		// Set row value
 		//new_row.innerHTML = element.value;
-		new_row.innerHTML = "<input type='text' class='input2' readonly='readonly' style='width:50%; ' value='"+element.value+" ' style='padding:0 0 0 0;margin:0 0 0 0;'>";
-		
+		new_row.innerHTML = "<input type='text' class='input2' readonly='readonly' style='width:50%; ' value='" + element.value + " ' style='padding:0 0 0 0;margin:0 0 0 0;'>";
+
 		// Add button
-		new_row.appendChild( new_row_button );
+		new_row.appendChild(new_row_button);
 
 		// Add it to the list
-		this.list_target.appendChild( new_row );
+		this.list_target.appendChild(new_row);
 	};
-	
+
 	/**
 	 * Add a new row to the list of files
 	 */
-	this.addListRow = function( element ){
+	this.addListRow = function (element) {
 
 		// Row div
-		var new_row = document.createElement( 'div' );
+		var new_row = document.createElement('div');
 
 		// Delete button
-		var new_row_button = document.createElement( 'input' );
+		var new_row_button = document.createElement('input');
 		new_row_button.type = 'button';
 		new_row_button.value = 'Delete';
 
@@ -261,13 +261,13 @@
 		new_row.element = element;
 
 		// Delete function
-		new_row_button.onclick= function(){
+		new_row_button.onclick = function () {
 
 			// Remove element from form
-			this.parentNode.element.parentNode.removeChild( this.parentNode.element );
+			this.parentNode.element.parentNode.removeChild(this.parentNode.element);
 
 			// Remove this row from the list
-			this.parentNode.parentNode.removeChild( this.parentNode );
+			this.parentNode.parentNode.removeChild(this.parentNode);
 
 			// Decrement counter
 			this.parentNode.element.multi_selector.count--;
@@ -277,7 +277,7 @@
 
 			// img view
 			if (img_view) document.getElementById("DIV_IMG_VIEW").style.display = "none";
-			
+
 			//    which nixes your already queued uploads
 			return false;
 		};
@@ -286,48 +286,48 @@
 		new_row.innerHTML = element.value;
 
 		// Add button
-		new_row.appendChild( new_row_button );
+		new_row.appendChild(new_row_button);
 
 		// Add it to the list
-		this.list_target.appendChild( new_row );
+		this.list_target.appendChild(new_row);
 	};
 
 	/**
 	 * img file view change
 	 */
-	this.imgViewChange = function( element ){
-		if(document.getElementById("egovComFileList").style.display=="none"){
+	this.imgViewChange = function (element) {
+		if (document.getElementById("egovComFileList").style.display == "none") {
 			document.getElementById("egovComFileList").style.display = "block";
 		}
 		document.getElementById("img_view").style.display = "";
 
 		//파일선택 후 파일 미리보기
-		if ( window.FileReader ) {
-			 /* 크롬, 사파리, 파이어폭스, 오페라, IE 10 이상에서는 HTML5 FileReader  이용 */
+		if (window.FileReader) {
+			/* 크롬, 사파리, 파이어폭스, 오페라, IE 10 이상에서는 HTML5 FileReader  이용 */
 			var reader = new FileReader();
-	        reader.onload = function (e) {
-	            //$('#'+preImg).attr('src', e.target.result);
-	            document.getElementById("img_view").src = e.target.result;
-	        };
-	        reader.readAsDataURL(element.files[0]);
-	        //return input.files[0].name;  // 파일명 return
+			reader.onload = function (e) {
+				//$('#'+preImg).attr('src', e.target.result);
+				document.getElementById("img_view").src = e.target.result;
+			};
+			reader.readAsDataURL(element.files[0]);
+			//return input.files[0].name;  // 파일명 return
 		} else {
 			/* IE 8, 9에서 가능하나 권장하지 않음 */
 			var img = document.getElementById("img_view");
 			img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"
-                + element.value + "', sizingMethod='scale')"; //이미지 로딩, sizingMethod는 div에 맞춰서 사이즈를 자동조절 하는 역할
-            /* IE 8, 9에서 불가능 */
-            //document.getElementById("IMG_VIEW").src = element.value;
-            img.width = 66;
-            img.height = 52;
-            img.alt = "";
+				+ element.value + "', sizingMethod='scale')"; //이미지 로딩, sizingMethod는 div에 맞춰서 사이즈를 자동조절 하는 역할
+			/* IE 8, 9에서 불가능 */
+			//document.getElementById("IMG_VIEW").src = element.value;
+			img.width = 66;
+			img.height = 52;
+			img.alt = "";
 		}
 	};
-	
+
 };
 
 
-function MultiSelector( list_target, max , file_label, img_view, maxSize, img_bbs, elementName, isPdf ){
+function MultiSelector(list_target, max, file_label, img_view, maxSize, img_bbs, elementName, isPdf) {
 
 	// Where to write the list
 	this.list_target = list_target;
@@ -335,17 +335,17 @@
 	this.count = 0;
 	// How many elements?
 	this.id = 0;
-	
+
 	this.update_count = 0;
 	// Is there a maximum?
-	if( max ){
+	if (max) {
 		this.max = max;
 	} else {
 		this.max = -1;
 	};
 
 	// max 파일사이즈. mb
-	if( maxSize ){
+	if (maxSize) {
 		this.maxSize = maxSize;
 		this.maxSizeByte = maxSize * 1024 * 1024;
 	} else {
@@ -353,7 +353,7 @@
 	};
 
 	this.file_label = file_label
-	
+
 	this.current_count = 0;
 	//console.log('update!!!!!!');
 
@@ -361,32 +361,32 @@
 	 * Add a new file input element
 	 */
 	var _base = this;
-	this.addElement = function( element ){
+	this.addElement = function (element) {
 
 		//console.log('update_count>'+this.update_count);
 		//console.log('max>'+this.max);
 		//console.log('count>'+this.count);
-		
+
 		// Make sure it's a file input element
-		if( element.tagName == 'INPUT' && element.type == 'file' ){
+		if (element.tagName == 'INPUT' && element.type == 'file') {
 			//console.log('check step addElement start');
-			
+
 			// Element name -- what number am I?
 			element.name = 'file_' + this.id;
-			element.id =  'egovfile_' + this.id;
+			element.id = 'egovfile_' + this.id;
 			element.class = "";
-			
+
 			// 첨부파일 항목 여러개시 file name/id 처리. (ex 대관관리)
 			if (elementName) {
 				element.name = elementName + '_' + this.id;
-				element.id =  elementName + '_' + this.id;
+				element.id = elementName + '_' + this.id;
 			}
-			
+
 			//미리보기 안할경우 에러방지
-			if(!( undefined == this.file_label || ""==this.file_label)){
-				document.getElementById(this.file_label).setAttribute("for","egovfile_"+this.id);
+			if (!(undefined == this.file_label || "" == this.file_label)) {
+				document.getElementById(this.file_label).setAttribute("for", "egovfile_" + this.id);
 			}
-			
+
 			//console.log('file_label>'+element.name);
 
 			this.id++;
@@ -395,82 +395,82 @@
 			element.multi_selector = this;
 
 			// What to do when a file is selected
-			element.onchange = function(){
-				
+			element.onchange = function () {
+
 				// img view 미리보기, imgBbs 이미지 게시판
 				if (img_view || img_bbs) {
 					var pathname = element.value;
 					var ext = pathname.split('.').pop().toLowerCase();
-					
-					if( ".gif.jpg.bmp.jpeg.png".indexOf(ext) != -1 ){
-						
+
+					if (".gif.jpg.bmp.jpeg.png".indexOf(ext) != -1) {
+
 					} else {
 						element.value = "";
-						alert("이미지 형식의 확장자만 업로드 가능합니다!"); 
+						alert("이미지 형식의 확장자만 업로드 가능합니다!");
 						return;
 					}
-				} else{
+				} else {
 					var pathname = element.value;
 					var ext = pathname.split('.').pop().toLowerCase();
-					
-					if( ".ppt.pptx.doc.docx.xls.pdf.ai.psd.hwp.txt.bmp.gif.jpg.jpeg.png.raw.wav.wma.mp3.mp4.mkv.avi.flv.mov.zip.alz.egg.rar.hwpx".indexOf(ext) != -1 ){
-						
-					}else{
+
+					if (".ppt.pptx.doc.docx.xls.pdf.ai.psd.hwp.txt.bmp.gif.jpg.jpeg.png.raw.wav.wma.mp3.mp4.mkv.avi.flv.mov.zip.alz.egg.rar.hwpx".indexOf(ext) != -1) {
+
+					} else {
 						element.value = "";
-						alert("지금 확장자는 업로드 불가능합니다!"); 
+						alert("지금 확장자는 업로드 불가능합니다!");
 						return;
 					}
 				}
-				
+
 				if (isPdf) {
 					var pathname = element.value;
 					var ext = pathname.split('.').pop().toLowerCase();
-					
-					if( ".pdf".indexOf(ext) != -1 ){
-						
+
+					if (".pdf".indexOf(ext) != -1) {
+
 					} else {
 						element.value = "";
-						alert("PDF 형식의 확장자만 업로드 가능합니다!"); 
+						alert("PDF 형식의 확장자만 업로드 가능합니다!");
 						return;
 					}
 				}
-				
+
 				if (this.files
-						&& multi_selector.maxSize != -1
-						&& this.files[0].size > multi_selector.maxSizeByte) {
-					alert( '파일사이즈가 초과되었습니다. 최대크기 ' + maxSize + 'mb' );
+					&& _base.maxSize != -1
+					&& this.files[0].size > _base.maxSizeByte) {
+					alert('파일사이즈가 초과되었습니다. 최대크기 ' + maxSize + 'mb');
 					this.value = '';
 					return;
 				}
-				
-				var sErrMsg = "첨부파일 갯수는 ["+_base.max+"]이상 첨부할 수 없습니다!";
-				if( _base.update_count > 0 ){
-					if( _base.count > (_base.max-_base.update_count) ){
+
+				var sErrMsg = "첨부파일 갯수는 [" + _base.max + "]이상 첨부할 수 없습니다!";
+				if (_base.update_count > 0) {
+					if (_base.count > (_base.max - _base.update_count)) {
 						element.value = "";
 						alert(sErrMsg);
 						return;
 					}
 				}
-				
-				if( _base.max > 0  && _base.count > _base.max ){
+
+				if (_base.max > 0 && _base.count > _base.max) {
 					element.value = "";
 					alert(sErrMsg);
 					return;
 				}
 
 				// New file input
-				var new_element = document.createElement( 'input' );
+				var new_element = document.createElement('input');
 				new_element.type = 'file';
 
 				// Add new element
-				this.parentNode.insertBefore( new_element, this );
+				this.parentNode.insertBefore(new_element, this);
 
 				// Apply 'update' to element
-				this.multi_selector.addElement( new_element );
+				this.multi_selector.addElement(new_element);
 
 				// Update list
-				this.multi_selector.addListRowNew( this );
-				
+				this.multi_selector.addListRowNew(this);
+
 				// Hide this: we can't use display:none because Safari doesn't like it
 				this.style.position = 'absolute';
 				this.style.left = '-1000px';
@@ -481,13 +481,13 @@
 				this.style.height = '0';
 				this.style.overflow = 'hidden';
 
-				new_element.onkeypress = function(){
+				new_element.onkeypress = function () {
 					return false;
 				};
 
 			};
 			// If we've reached maximum number, disable input element
-			if( this.max != -1 && this.count >= this.max ){
+			if (this.max != -1 && this.count >= this.max) {
 				//element.disabled = true;
 			};
 
@@ -495,10 +495,10 @@
 			this.count++;
 			// Most recent element
 			this.current_element = element;
-			
+
 		} else {
 			// This can only be applied to file input elements!
-			alert( 'Error: not a file input element' );
+			alert('Error: not a file input element');
 		};
 
 	};
@@ -506,14 +506,14 @@
 	/**
 	 * Add a new row to the list of files
 	 */
-	this.addListRowNew = function( element ){
+	this.addListRowNew = function (element) {
 
 		// Row div
-		var new_row = document.createElement( 'div' );
+		var new_row = document.createElement('div');
 		new_row.className = "file_add";
-		
+
 		// Delete button
-		var new_row_button = document.createElement( 'img' );
+		var new_row_button = document.createElement('img');
 		new_row_button.src = '../../../images/egovframework/com/cmm/btn/btn_del.png';
 		new_row_button.className = "cursor";
 		new_row_button.style.margin = "0 0 0 0";
@@ -522,29 +522,29 @@
 
 		// References
 		new_row.element = element;
-		
+
 		// 이미지 미리보기
 		if (img_view) {
 			var imgViewDiv = document.getElementById("DIV_IMG_VIEW");
-			var newImgDiv = document.createElement( 'div' );
+			var newImgDiv = document.createElement('div');
 			newImgDiv.innerHTML = '<img src="" name="IMG_VIEW" id="IMG_VIEW" class="imgView" align="middle" alt="미리보기" title="미리보기">';
-			imgViewDiv.appendChild( newImgDiv );
+			imgViewDiv.appendChild(newImgDiv);
 			new_row.viewElement = newImgDiv;
 			this.imgViewChange(element, newImgDiv);
 		}
-		
+
 		// Delete function
-		new_row_button.onclick= function(){
+		new_row_button.onclick = function () {
 			// 미리보기 삭제
 			if (img_view) {
-				this.parentNode.viewElement.parentNode.removeChild( this.parentNode.viewElement );
+				this.parentNode.viewElement.parentNode.removeChild(this.parentNode.viewElement);
 			}
-			
+
 			// Remove element from form
-			this.parentNode.element.parentNode.removeChild( this.parentNode.element );
+			this.parentNode.element.parentNode.removeChild(this.parentNode.element);
 
 			// Remove this row from the list
-			this.parentNode.parentNode.removeChild( this.parentNode );
+			this.parentNode.parentNode.removeChild(this.parentNode);
 
 			// Decrement counter
 			this.parentNode.element.multi_selector.count--;
@@ -557,21 +557,21 @@
 		};
 		// Set row value
 		//new_row.innerHTML = element.value;
-		new_row.innerHTML = "<input type='text' class='input2' readonly='readonly' style='width:50%; ' value='"+element.value+" ' style='padding:0 0 0 0;margin:0 0 0 0;'>";
-		
+		new_row.innerHTML = "<input type='text' class='input2' readonly='readonly' style='width:50%; ' value='" + element.value + " ' style='padding:0 0 0 0;margin:0 0 0 0;'>";
+
 		// Add button
-		new_row.appendChild( new_row_button );
+		new_row.appendChild(new_row_button);
 
 		// Add it to the list
-		this.list_target.appendChild( new_row );
+		this.list_target.appendChild(new_row);
 	};
 
 	/**
 	 * img file view change
 	 */
-	this.imgViewChange = function( element, div ){
+	this.imgViewChange = function (element, div) {
 		//파일선택 후 파일 미리보기
-		if ( window.FileReader ) {
+		if (window.FileReader) {
 			/* 크롬, 사파리, 파이어폭스, 오페라, IE 10 이상에서는 HTML5 FileReader  이용 */
 			var reader = new FileReader();
 			reader.onload = function (e) {
@@ -592,5 +592,5 @@
 			img.alt = "";
 		}
 	};
-	
+
 };
src/main/webapp/js/web/EgovMultiFile.js
--- src/main/webapp/js/web/EgovMultiFile.js
+++ src/main/webapp/js/web/EgovMultiFile.js
@@ -17,7 +17,7 @@
  *   img_view boolean - 이미지 파일 첨부 미리보기
  */
 
-function MultiSelectorModi( list_target, max , file_label, img_view ){
+function MultiSelectorModi(list_target, max, file_label, img_view) {
 
 	// Where to write the list
 	this.list_target = list_target;
@@ -25,43 +25,43 @@
 	this.count = 0;
 	// How many elements?
 	this.id = 0;
-	
+
 	this.update_count = 0;
 	// Is there a maximum?
-	if( max ){
+	if (max) {
 		this.max = max;
 	} else {
 		this.max = -1;
 	};
 	this.file_label = file_label
-	
+
 	this.current_count = 0;
 	//console.log('update!!!!!!');
 	/**
 	 * Add a new file input element
 	 */
 	_base = this;
-	this.addElement = function( element ){
+	this.addElement = function (element) {
 
 		//console.log('update_count>'+this.update_count);
 		//console.log('max>'+this.max);
 		//console.log('count>'+this.count);
-		
+
 		// Make sure it's a file input element
-		if( element.tagName == 'INPUT' && element.type == 'file' ){
-			
+		if (element.tagName == 'INPUT' && element.type == 'file') {
+
 			//console.log('check step addElement start');
 
 			// Element name -- what number am I?
 			element.name = 'file_' + this.id;
-			element.id =  'egovfile_' + this.id;
+			element.id = 'egovfile_' + this.id;
 			element.class = "";
-			
+
 			//미리보기 안할경우 에러방지
-			if(!( undefined == this.file_label || ""==this.file_label)){
+			if (!(undefined == this.file_label || "" == this.file_label)) {
 				//document.getElementById(this.file_label).setAttribute("for","egovfile_"+this.id);
 			}
-			
+
 			//console.log('file_label>'+element.name);
 
 			this.id++;
@@ -70,49 +70,49 @@
 			element.multi_selector = this;
 
 			// What to do when a file is selected
-			element.onchange = function(){
-				
-				var sErrMsg = "첨부파일 갯수는 ["+_base.max+"]이상 첨부할 수 없습니다!";
-				if( _base.update_count > 0 ){
-					if( _base.count > (_base.max-_base.update_count) ){
+			element.onchange = function () {
+
+				var sErrMsg = "첨부파일 갯수는 [" + _base.max + "]이상 첨부할 수 없습니다!";
+				if (_base.update_count > 0) {
+					if (_base.count > (_base.max - _base.update_count)) {
 						//element.value = "";
 						//alert(sErrMsg);	return;
 						return;
 					}
 				}
-				
+
 				// img view 미리보기 기능
 				if (img_view) {
 					var pathname = element.value;
 					var ext = pathname.split('.').pop().toLowerCase();
-					
-					if( ".gif.jpg.bmp.jpeg.png".indexOf(ext) != -1 ){
-						this.multi_selector.imgViewChange( this );
+
+					if (".gif.jpg.bmp.jpeg.png".indexOf(ext) != -1) {
+						this.multi_selector.imgViewChange(this);
 					} else {
 						element.value = "";
 						alert("이미지 형식의 확장자만 업로드 가능합니다!"); return;
 					}
 				}
-				
-				if( _base.max > 0  && _base.count > _base.max ){
+
+				if (_base.max > 0 && _base.count > _base.max) {
 					//element.value = "";
 					//alert(sErrMsg); return;
 					return;
 				}
 
 				// New file input
-				var new_element = document.createElement( 'input' );
+				var new_element = document.createElement('input');
 				new_element.type = 'file';
 
 				// Add new element
-				this.parentNode.insertBefore( new_element, this );
+				this.parentNode.insertBefore(new_element, this);
 
 				// Apply 'update' to element
-				this.multi_selector.addElement( new_element );
+				this.multi_selector.addElement(new_element);
 
 				// Update list
-				this.multi_selector.addListRowNew( this );
-				
+				this.multi_selector.addListRowNew(this);
+
 				// Hide this: we can't use display:none because Safari doesn't like it
 				this.style.position = 'absolute';
 				this.style.left = '-1000px';
@@ -123,13 +123,13 @@
 				this.style.height = '0';
 				this.style.overflow = 'hidden';
 
-				new_element.onkeypress = function(){
+				new_element.onkeypress = function () {
 					return false;
 				};
 
 			};
 			// If we've reached maximum number, disable input element
-			if( this.max != -1 && this.count >= this.max ){
+			if (this.max != -1 && this.count >= this.max) {
 				//element.disabled = true;
 			};
 
@@ -137,42 +137,42 @@
 			this.count++;
 			// Most recent element
 			this.current_element = element;
-			
+
 		} else {
 			// This can only be applied to file input elements!
-			alert( 'Error: not a file input element' );
+			alert('Error: not a file input element');
 		};
 
 	};
 
-	
+
 	/* 이미지 변환 function */
-	this.addImgViewChange = function( element ){
+	this.addImgViewChange = function (element) {
 		element.multi_selector = this;
-		element.onchange = function(){
-			var sErrMsg = "첨부파일 갯수는 ["+_base.max+"]이상 첨부할 수 없습니다!";
-			if( _base.update_count > 0 ){
-				if( _base.count > (_base.max-_base.update_count) ){
+		element.onchange = function () {
+			var sErrMsg = "첨부파일 갯수는 [" + _base.max + "]이상 첨부할 수 없습니다!";
+			if (_base.update_count > 0) {
+				if (_base.count > (_base.max - _base.update_count)) {
 					//element.value = "";
 					//alert(sErrMsg);	return;
 					return;
 				}
 			}
-			
+
 			// img view 미리보기 기능
 			if (img_view) {
 				var pathname = element.value;
 				var ext = pathname.split('.').pop().toLowerCase();
-				
-				if( ".gif.jpg.bmp.jpeg.png".indexOf(ext) != -1 ){
-					this.multi_selector.imgViewChange( this );
+
+				if (".gif.jpg.bmp.jpeg.png".indexOf(ext) != -1) {
+					this.multi_selector.imgViewChange(this);
 				} else {
 					element.value = "";
 					alert("이미지 형식의 확장자만 업로드 가능합니다!"); return;
 				}
 			}
-			
-			if( _base.max > 0  && _base.count > _base.max ){
+
+			if (_base.max > 0 && _base.count > _base.max) {
 				//element.value = "";
 				//alert(sErrMsg); return;
 				return;
@@ -188,21 +188,21 @@
 			this.style.height = '0';
 			this.style.overflow = 'hidden';*/
 		};
-		
-		
+
+
 	};
-	
+
 	/**
 	 * Add a new row to the list of files
 	 */
-	this.addListRowNew = function( element ){
+	this.addListRowNew = function (element) {
 
 		// Row div
-		var new_row = document.createElement( 'div' );
+		var new_row = document.createElement('div');
 		new_row.className = "file_add";
-		
+
 		// Delete button
-		var new_row_button = document.createElement( 'img' );
+		var new_row_button = document.createElement('img');
 		new_row_button.src = '../../../images/egovframework/com/cmm/btn/btn_del.png';
 		new_row_button.className = "cursor";
 		new_row_button.style.margin = "0 0 0 0";
@@ -211,15 +211,15 @@
 
 		// References
 		new_row.element = element;
-		
+
 		// Delete function
-		new_row_button.onclick= function(){
+		new_row_button.onclick = function () {
 
 			// Remove element from form
-			this.parentNode.element.parentNode.removeChild( this.parentNode.element );
+			this.parentNode.element.parentNode.removeChild(this.parentNode.element);
 
 			// Remove this row from the list
-			this.parentNode.parentNode.removeChild( this.parentNode );
+			this.parentNode.parentNode.removeChild(this.parentNode);
 
 			// Decrement counter
 			this.parentNode.element.multi_selector.count--;
@@ -229,31 +229,31 @@
 
 			// img view
 			if (img_view) document.getElementById("img_view").style.display = "none";
-			
+
 			//    which nixes your already queued uploads
 			return false;
 		};
 		// Set row value
 		//new_row.innerHTML = element.value;
-		new_row.innerHTML = "<input type='text' class='input2' readonly='readonly' style='width:50%; ' value='"+element.value+" ' style='padding:0 0 0 0;margin:0 0 0 0;'>";
-		
+		new_row.innerHTML = "<input type='text' class='input2' readonly='readonly' style='width:50%; ' value='" + element.value + " ' style='padding:0 0 0 0;margin:0 0 0 0;'>";
+
 		// Add button
-		new_row.appendChild( new_row_button );
+		new_row.appendChild(new_row_button);
 
 		// Add it to the list
-		this.list_target.appendChild( new_row );
+		this.list_target.appendChild(new_row);
 	};
-	
+
 	/**
 	 * Add a new row to the list of files
 	 */
-	this.addListRow = function( element ){
+	this.addListRow = function (element) {
 
 		// Row div
-		var new_row = document.createElement( 'div' );
+		var new_row = document.createElement('div');
 
 		// Delete button
-		var new_row_button = document.createElement( 'input' );
+		var new_row_button = document.createElement('input');
 		new_row_button.type = 'button';
 		new_row_button.value = 'Delete';
 
@@ -261,13 +261,13 @@
 		new_row.element = element;
 
 		// Delete function
-		new_row_button.onclick= function(){
+		new_row_button.onclick = function () {
 
 			// Remove element from form
-			this.parentNode.element.parentNode.removeChild( this.parentNode.element );
+			this.parentNode.element.parentNode.removeChild(this.parentNode.element);
 
 			// Remove this row from the list
-			this.parentNode.parentNode.removeChild( this.parentNode );
+			this.parentNode.parentNode.removeChild(this.parentNode);
 
 			// Decrement counter
 			this.parentNode.element.multi_selector.count--;
@@ -277,7 +277,7 @@
 
 			// img view
 			if (img_view) document.getElementById("DIV_IMG_VIEW").style.display = "none";
-			
+
 			//    which nixes your already queued uploads
 			return false;
 		};
@@ -286,48 +286,48 @@
 		new_row.innerHTML = element.value;
 
 		// Add button
-		new_row.appendChild( new_row_button );
+		new_row.appendChild(new_row_button);
 
 		// Add it to the list
-		this.list_target.appendChild( new_row );
+		this.list_target.appendChild(new_row);
 	};
 
 	/**
 	 * img file view change
 	 */
-	this.imgViewChange = function( element ){
-		if(document.getElementById("egovComFileList").style.display=="none"){
+	this.imgViewChange = function (element) {
+		if (document.getElementById("egovComFileList").style.display == "none") {
 			document.getElementById("egovComFileList").style.display = "block";
 		}
 		document.getElementById("img_view").style.display = "";
 
 		//파일선택 후 파일 미리보기
-		if ( window.FileReader ) {
-			 /* 크롬, 사파리, 파이어폭스, 오페라, IE 10 이상에서는 HTML5 FileReader  이용 */
+		if (window.FileReader) {
+			/* 크롬, 사파리, 파이어폭스, 오페라, IE 10 이상에서는 HTML5 FileReader  이용 */
 			var reader = new FileReader();
-	        reader.onload = function (e) {
-	            //$('#'+preImg).attr('src', e.target.result);
-	            document.getElementById("img_view").src = e.target.result;
-	        };
-	        reader.readAsDataURL(element.files[0]);
-	        //return input.files[0].name;  // 파일명 return
+			reader.onload = function (e) {
+				//$('#'+preImg).attr('src', e.target.result);
+				document.getElementById("img_view").src = e.target.result;
+			};
+			reader.readAsDataURL(element.files[0]);
+			//return input.files[0].name;  // 파일명 return
 		} else {
 			/* IE 8, 9에서 가능하나 권장하지 않음 */
 			var img = document.getElementById("img_view");
 			img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"
-                + element.value + "', sizingMethod='scale')"; //이미지 로딩, sizingMethod는 div에 맞춰서 사이즈를 자동조절 하는 역할
-            /* IE 8, 9에서 불가능 */
-            //document.getElementById("IMG_VIEW").src = element.value;
-            img.width = 66;
-            img.height = 52;
-            img.alt = "";
+				+ element.value + "', sizingMethod='scale')"; //이미지 로딩, sizingMethod는 div에 맞춰서 사이즈를 자동조절 하는 역할
+			/* IE 8, 9에서 불가능 */
+			//document.getElementById("IMG_VIEW").src = element.value;
+			img.width = 66;
+			img.height = 52;
+			img.alt = "";
 		}
 	};
-	
+
 };
 
 
-function MultiSelector( list_target, max , file_label, img_view, maxSize, img_bbs, elementName, isPdf ){
+function MultiSelector(list_target, max, file_label, img_view, maxSize, img_bbs, elementName, isPdf) {
 
 	// Where to write the list
 	this.list_target = list_target;
@@ -335,17 +335,17 @@
 	this.count = 0;
 	// How many elements?
 	this.id = 0;
-	
+
 	this.update_count = 0;
 	// Is there a maximum?
-	if( max ){
+	if (max) {
 		this.max = max;
 	} else {
 		this.max = -1;
 	};
 
 	// max 파일사이즈. mb
-	if( maxSize ){
+	if (maxSize) {
 		this.maxSize = maxSize;
 		this.maxSizeByte = maxSize * 1024 * 1024;
 	} else {
@@ -353,7 +353,7 @@
 	};
 
 	this.file_label = file_label
-	
+
 	this.current_count = 0;
 	//console.log('update!!!!!!');
 
@@ -361,32 +361,32 @@
 	 * Add a new file input element
 	 */
 	var _base = this;
-	this.addElement = function( element ){
+	this.addElement = function (element) {
 
 		//console.log('update_count>'+this.update_count);
 		//console.log('max>'+this.max);
 		//console.log('count>'+this.count);
-		
+
 		// Make sure it's a file input element
-		if( element.tagName == 'INPUT' && element.type == 'file' ){
+		if (element.tagName == 'INPUT' && element.type == 'file') {
 			//console.log('check step addElement start');
-			
+
 			// Element name -- what number am I?
 			element.name = 'file_' + this.id;
-			element.id =  'egovfile_' + this.id;
+			element.id = 'egovfile_' + this.id;
 			element.class = "";
-			
+
 			// 첨부파일 항목 여러개시 file name/id 처리. (ex 대관관리)
 			if (elementName) {
 				element.name = elementName + '_' + this.id;
-				element.id =  elementName + '_' + this.id;
+				element.id = elementName + '_' + this.id;
 			}
-			
+
 			//미리보기 안할경우 에러방지
-			if(!( undefined == this.file_label || ""==this.file_label)){
-				document.getElementById(this.file_label).setAttribute("for","egovfile_"+this.id);
+			if (!(undefined == this.file_label || "" == this.file_label)) {
+				document.getElementById(this.file_label).setAttribute("for", "egovfile_" + this.id);
 			}
-			
+
 			//console.log('file_label>'+element.name);
 
 			this.id++;
@@ -395,81 +395,81 @@
 			element.multi_selector = this;
 
 			// What to do when a file is selected
-			element.onchange = function(){
+			element.onchange = function () {
 				// img view 미리보기, imgBbs 이미지 게시판
 				if (img_view || img_bbs) {
 					var pathname = element.value;
 					var ext = pathname.split('.').pop().toLowerCase();
-					
-					if( ".gif.jpg.bmp.jpeg.png".indexOf(ext) != -1 ){
-						
+
+					if (".gif.jpg.bmp.jpeg.png".indexOf(ext) != -1) {
+
 					} else {
 						element.value = "";
-						alert("이미지 형식의 확장자만 업로드 가능합니다!"); 
+						alert("이미지 형식의 확장자만 업로드 가능합니다!");
 						return;
 					}
-				} else{
+				} else {
 					var pathname = element.value;
 					var ext = pathname.split('.').pop().toLowerCase();
-					
-					if( ".ppt.pptx.doc.docx.xls.pdf.ai.psd.hwp.txt.bmp.gif.jpg.jpeg.png.raw.wav.wma.mp3.mp4.mkv.avi.flv.mov.zip.alz.egg.rar.hwpx".indexOf(ext) != -1 ){
-						
-					}else{
+
+					if (".ppt.pptx.doc.docx.xls.pdf.ai.psd.hwp.txt.bmp.gif.jpg.jpeg.png.raw.wav.wma.mp3.mp4.mkv.avi.flv.mov.zip.alz.egg.rar.hwpx".indexOf(ext) != -1) {
+
+					} else {
 						element.value = "";
-						alert("지금 확장자는 업로드 불가능합니다!"); 
+						alert("지금 확장자는 업로드 불가능합니다!");
 						return;
 					}
 				}
-				
+
 				if (isPdf) {
 					var pathname = element.value;
 					var ext = pathname.split('.').pop().toLowerCase();
-					
-					if( ".pdf".indexOf(ext) != -1 ){
-						
+
+					if (".pdf".indexOf(ext) != -1) {
+
 					} else {
 						element.value = "";
-						alert("PDF 형식의 확장자만 업로드 가능합니다!"); 
+						alert("PDF 형식의 확장자만 업로드 가능합니다!");
 						return;
 					}
 				}
-				
+
 				if (this.files
-						&& multi_selector.maxSize != -1
-						&& this.files[0].size > multi_selector.maxSizeByte) {
-					alert( '파일사이즈가 초과되었습니다. 최대크기 ' + maxSize + 'mb' );
+					&& _base.maxSize != -1
+					&& this.files[0].size > _base.maxSizeByte) {
+					alert('파일사이즈가 초과되었습니다. 최대크기 ' + maxSize + 'mb');
 					this.value = '';
 					return;
 				}
-				
-				var sErrMsg = "첨부파일 갯수는 ["+_base.max+"]이상 첨부할 수 없습니다!";
-				if( _base.update_count > 0 ){
-					if( _base.count > (_base.max-_base.update_count) ){
+
+				var sErrMsg = "첨부파일 갯수는 [" + _base.max + "]이상 첨부할 수 없습니다!";
+				if (_base.update_count > 0) {
+					if (_base.count > (_base.max - _base.update_count)) {
 						element.value = "";
 						alert(sErrMsg);
 						return;
 					}
 				}
-				
-				if( _base.max > 0  && _base.count > _base.max ){
+
+				if (_base.max > 0 && _base.count > _base.max) {
 					element.value = "";
 					alert(sErrMsg);
 					return;
 				}
 
 				// New file input
-				var new_element = document.createElement( 'input' );
+				var new_element = document.createElement('input');
 				new_element.type = 'file';
 
 				// Add new element
-				this.parentNode.insertBefore( new_element, this );
+				this.parentNode.insertBefore(new_element, this);
 
 				// Apply 'update' to element
-				this.multi_selector.addElement( new_element );
+				this.multi_selector.addElement(new_element);
 
 				// Update list
-				this.multi_selector.addListRowNew( this );
-				
+				this.multi_selector.addListRowNew(this);
+
 				// Hide this: we can't use display:none because Safari doesn't like it
 				this.style.position = 'absolute';
 				this.style.left = '-1000px';
@@ -480,13 +480,13 @@
 				this.style.height = '0';
 				this.style.overflow = 'hidden';
 
-				new_element.onkeypress = function(){
+				new_element.onkeypress = function () {
 					return false;
 				};
 
 			};
 			// If we've reached maximum number, disable input element
-			if( this.max != -1 && this.count >= this.max ){
+			if (this.max != -1 && this.count >= this.max) {
 				//element.disabled = true;
 			};
 
@@ -494,10 +494,10 @@
 			this.count++;
 			// Most recent element
 			this.current_element = element;
-			
+
 		} else {
 			// This can only be applied to file input elements!
-			alert( 'Error: not a file input element' );
+			alert('Error: not a file input element');
 		};
 
 	};
@@ -505,14 +505,14 @@
 	/**
 	 * Add a new row to the list of files
 	 */
-	this.addListRowNew = function( element ){
+	this.addListRowNew = function (element) {
 
 		// Row div
-		var new_row = document.createElement( 'div' );
+		var new_row = document.createElement('div');
 		new_row.className = "file_add";
-		
+
 		// Delete button
-		var new_row_button = document.createElement( 'img' );
+		var new_row_button = document.createElement('img');
 		new_row_button.src = '../../../images/egovframework/com/cmm/btn/btn_del.png';
 		new_row_button.className = "cursor";
 		new_row_button.style.margin = "0 0 0 0";
@@ -521,32 +521,32 @@
 
 		// References
 		new_row.element = element;
-		
+
 		// 이미지 미리보기
 		if (img_view) {
 			var imgViewDiv = document.getElementById("DIV_IMG_VIEW");
-			var newImgDiv = document.createElement( 'div' );
-			
+			var newImgDiv = document.createElement('div');
+
 			newImgDiv.innerHTML = '<img src="" name="IMG_VIEW" id="IMG_VIEW" class="imgView" align="middle" alt="미리보기" title="미리보기">';
-			imgViewDiv.appendChild( newImgDiv );
-			
+			imgViewDiv.appendChild(newImgDiv);
+
 			new_row.viewElement = newImgDiv;
-			
+
 			this.imgViewChange(element, newImgDiv);
 		}
-		
+
 		// Delete function
-		new_row_button.onclick= function(){
+		new_row_button.onclick = function () {
 			// 미리보기 삭제
 			if (img_view) {
-				this.parentNode.viewElement.parentNode.removeChild( this.parentNode.viewElement );
+				this.parentNode.viewElement.parentNode.removeChild(this.parentNode.viewElement);
 			}
-			
+
 			// Remove element from form
-			this.parentNode.element.parentNode.removeChild( this.parentNode.element );
+			this.parentNode.element.parentNode.removeChild(this.parentNode.element);
 
 			// Remove this row from the list
-			this.parentNode.parentNode.removeChild( this.parentNode );
+			this.parentNode.parentNode.removeChild(this.parentNode);
 
 			// Decrement counter
 			this.parentNode.element.multi_selector.count--;
@@ -559,21 +559,21 @@
 		};
 		// Set row value
 		//new_row.innerHTML = element.value;
-		new_row.innerHTML = "<input type='text' class='input2' readonly='readonly' style='width:50%; ' value='"+element.value+" ' style='padding:0 0 0 0;margin:0 0 0 0;'>";
-		
+		new_row.innerHTML = "<input type='text' class='input2' readonly='readonly' style='width:50%; ' value='" + element.value + " ' style='padding:0 0 0 0;margin:0 0 0 0;'>";
+
 		// Add button
-		new_row.appendChild( new_row_button );
+		new_row.appendChild(new_row_button);
 
 		// Add it to the list
-		this.list_target.appendChild( new_row );
+		this.list_target.appendChild(new_row);
 	};
 
 	/**
 	 * img file view change
 	 */
-	this.imgViewChange = function( element, div ){
+	this.imgViewChange = function (element, div) {
 		//파일선택 후 파일 미리보기
-		if ( window.FileReader ) {
+		if (window.FileReader) {
 			/* 크롬, 사파리, 파이어폭스, 오페라, IE 10 이상에서는 HTML5 FileReader  이용 */
 			var reader = new FileReader();
 			reader.onload = function (e) {
@@ -594,5 +594,5 @@
 			img.alt = "";
 		}
 	};
-	
+
 };
Add a comment
List