wyh 2024-10-11
선거문자 엑셀 불러오기 기능 수정, 주소록 불러오기 오류 수정, 불필요한 코드 제거
@572b0e58c00ca5eba8bf2276220eafefed0ea690
src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainDataController.java
--- src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainDataController.java
+++ src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainDataController.java
@@ -232,7 +232,7 @@
 			model.addAttribute("addrVO", searchVO);
 		}
 		
-		//주소록에서 선택시 넘어오는 파라미터
+		//주소록에서 전체전송 넘어오는 파라미터
 		if("Y".equals(searchVO.getMoveAddrAllFlag())) {
 			AddrVO addrVO = new AddrVO();
 			
src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp
--- src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp
@@ -14,226 +14,6 @@
 <script type="text/javascript">
 
 
-
-$(document).ready(function(){
-	
-	//받는사람 연락처 내용 처리
-	//Tabulator AJAX Data Loading
-	tableL = new Tabulator(".callList_box", {
-		height:"255px",
-	    layout:"fitColumns",
-	    headerHozAlign:"center",
-	    validationMode:"highlight",
-	    placeholder:"복사(Ctrl+C)한 내용을 여기에 붙여넣기(Ctrl+V) 해주세요.", //fit columns to width of table (optional)
-	    resizableColumns:false,
-	    columnDefaults:{ // 공통설정
-	        hozAlign: "center",
-	        headerHozAlign: "center",
-	        editor: "input",
-	        editor: false
-	    },
-	 	columns:[ //Define Table Columns
-	 		{formatter:"rowSelection", headerHozAlign:"center", titleFormatter:"rowSelection",clipboard:false, hozAlign:"center", width:5, headerSort:false, cellClick:function(e, cell){
-	 	        cell.getRow().toggleSelect();
-		 	}}, 
-// 			{formatter:"rownum", align:"center", title:"No", hozAlign:"center", headerHozAlign:"center", field:"No", width:30},
-			{formatter:"rownum", align:"center" ,title:"No", hozAlign:"center", headerHozAlign:"center", width:40},
-		 	{title:"이름", field:"name", editor:false, validator:["maxLength:12"], cellEdited:function(cell){
-		 	    fnReplCell();
-		    }},
-		 	{title:"휴대폰", field:"phone", width:100, editor:false, validator:["required","minLength:10", "maxLength:12"]},
-		 	{title:"[*1*]", field:"rep1", minWidth:60, editor:false, validator:["maxLength:40"], cellEdited:function(cell){
-		 	    fnReplCell();
-		    }},
-		 	{title:"[*2*]", field:"rep2", minWidth:60, editor:false, validator:["maxLength:40"], cellEdited:function(cell){
-		 		fnReplCell();
-		    }},
-		 	{title:"[*3*]", field:"rep3", minWidth:60, editor:false, validator:["maxLength:40"], cellEdited:function(cell){
-		 		fnReplCell();
-		    }},
-		 	{title:"[*4*]", field:"rep4", minWidth:60, editor:false, validator:["maxLength:40"], cellEdited:function(cell){
-		 		fnReplCell();
-		    }},
-		 	
-	 	],
-	 	validationFailed:function(cell, value, parameters){ // 유효성 체크 함수 - 아직 잘 모르겠음 
-	        //take action on validation fail
-	 		var valid = cell.isValid();
-	 		var fieldNm = cell.getField();
-	 		var cellVal = cell.getValue();
-	 		var returnVal = "";
-	 		if(!valid){
-	 			
-	 			if(fieldNm == "name"){
-	 				alert("받는사람 이름은 최대 12글자까지만 입력 가능합니다.");
-	 				cell.setValue(strMaxLengthSubstring(cellVal, 11)); //스크립트 함수가 0부터 시작이므로 원하는 글자수 -1을 해줘야한다.
-	 				cell.clearValidation();
-	 			}else if(fieldNm == "phone"){
-	 				alert("휴대폰번호는 하이픈(-)을 제외한 숫자만 정확히 입력해 주세요.");
-	 			}else{
-		 			alert("치환문자를 정확히 입력해 주세요. 40글자 이내로 입력 가능합니다.");
-		 			cell.setValue(strMaxLengthSubstring(cellVal, 39));
-		 			cell.clearValidation();
-	 			}
-	 			
-	 			//해당 셀 데이터 삭제
-	 			//cell.setValue("");
-	 			
-	 		}
-	 		return value % parameters.phone;
-	    },
-
-	});
-	
-	// Tabulator 초기화
-	tableAddr = new Tabulator(".callAddr_box", {
-	    height: "255px",
-	    layout: "fitColumns",
-	    headerHozAlign: "center",
-	    validationMode: "highlight",
-	    placeholder: "주소록 그룹을 선택해 주세요.", 
-	    resizableColumns: false,
-		progressiveLoad:"scroll",
-	    columns: [
-	        {formatter: "rowSelection", clipboard: false, hozAlign: "center", headerSort: false}, 
-// 	        {formatter: "rowSelection", titleFormatter: "rowSelection", clipboard: false, hozAlign: "center", headerSort: false, cellClick: function(e, cell) {
-// 	                cell.getRow().toggleSelect();
-// 	            }
-// 	        }, 
-	        {formatter: "rownum", align: "center", title: "No", hozAlign: "center", headerHozAlign: "center", width: 60},
-	        {title: "그룹명", hozAlign: "center", field: "addrGroupNm", editor: false, width: 100, validator: ["required", "minLength:2", "maxLength:40"]},
-	        {title: "이름", hozAlign: "center", field: "name", editor: false, width: 100, validator: ["maxLength:12"]},
-	        {title: "휴대폰번호", hozAlign: "center", field: "phone", editor: false, width: 100, validator: ["required", "minLength:10", "maxLength:11"]},
-	        {title: "[*1*]", hozAlign: "center", field: "rep1", editor: false, width: 84, validator: ["maxLength:40"]},
-	        {title: "[*2*]", hozAlign: "center", field: "rep2", editor: false, width: 84, validator: ["maxLength:40"]},
-	        {title: "[*3*]", hozAlign: "center", field: "rep3", editor: false, width: 84, validator: ["maxLength:40"]},
-	        {title: "[*4*]", hozAlign: "center", field: "rep4", editor: false, width: 84, validator: ["maxLength:40"]},
-	    ],
-	    validationFailed: function(cell, value, parameters) { 
-	        var valid = cell.isValid();
-	        var fieldNm = cell.getField();
-	        if (!valid) {
-	            if (fieldNm == "addrName") {
-	                alert("받는사람 이름은 최대 12글자까지만 입력 가능합니다.");
-	            } else if (fieldNm == "addrPhone") {
-	                alert("휴대폰번호는 하이픈(-)을 제외한 숫자만 정확히 입력해 주세요.");
-	            } else if (fieldNm == "addrGroupNm") {
-	                alert("그룹명을 정확히 입력해 주세요. 2 ~ 40글자 이내로 입력 가능합니다.");
-	            } else {
-	                alert("치환문자를 정확히 입력해 주세요. 100글자 이내로 입력 가능합니다.");
-	            }
-	            cell.setValue("");
-	        }
-	        console.log('parameters : ', parameters);
-	        return value % parameters.addrPhone;
-	    },
-	});
-	
-	
-	
-	/*  
-	* 20240823
-	* 미리보기 스크립트
-	*/
-	// 현재 위치
-	var currentIndex = 0;
-
-	// 제일 이전
-	$('#btnFirst').on('click', function(){
-		currentIndex = 0;
-		
-		updateButtons(currentIndex );
-		fn_previewText(currentIndex);
-	});
-
-	// 이전
-	$('#btnPrev').on('click', function(){
-    	
-		if (currentIndex > 0) {
-			currentIndex--;
-			updateButtons(currentIndex );
-			fn_previewText(currentIndex);
-		}
-    });
-    
-
-	// 다음
-	$('#btnNext').on('click', function(){
-		var dataLength = tableL.getData().length;
-		if (currentIndex < dataLength - 1) {
-			currentIndex++;
-			updateButtons(currentIndex );
-			fn_previewText(currentIndex);
-		}
-    });
-
-	// 제일 다음
-	$('#btnLast').on('click', function(){
-		var dataLength = tableL.getData().length;
-		currentIndex = dataLength - 1;
-		updateButtons(currentIndex );
-		fn_previewText(currentIndex);
-	});
-
-	updateButtons(currentIndex);
-	
-});
-
-/*
- * 버튼 disabled 스크립트
- */
-function updateButtons(currentIndex ) {
-	
-	
-	var dataLength = tableL.getData().length;
- 	console.log('dataLength ', dataLength);
- 	console.log('currentIndex ', currentIndex);
-	
-	
-	if (currentIndex <= 0) {
-		$('#btnPrev').attr('disabled', true);
-		$('#btnFirst').attr('disabled', true);
-	} else {
-		$('#btnPrev').attr('disabled', false);
-		$('#btnFirst').attr('disabled', false);
-	}
-	
-	if (currentIndex >= dataLength - 1) {
-		$('#btnNext').attr('disabled', true);
-		$('#btnLast').attr('disabled', true);
-	} else {
-		$('#btnNext').attr('disabled', false);
-		$('#btnLast').attr('disabled', false);
-	}
-} 
-
-/*
- * 미리보기 데이터 치환
- */
-function fn_previewText(rowIndex){
-	
-	var smsText = $('#smsTxtArea').val()
-	// 데이터 가져오기
-	var data = tableL.getData();
-	
-	// 특정 인덱스(예: 1)로 행을 선택하여 치환
-	var row = data[rowIndex]; // 인덱스 1의 행을 선택
-	
-	
-	// 이름 치환
-	smsText = smsText.replace(/\[\*이름\*\]/g, row.name !== undefined && row.name !== null ? row.name : '[*이름*]');
-	
-	// rep1, rep2, rep3, rep4 치환
-	smsText = smsText.replace(/\[\*1\*\]/g, row.rep1 !== undefined && row.rep1 !== null ? row.rep1 : '[*1*]');
-	smsText = smsText.replace(/\[\*2\*\]/g, row.rep2 !== undefined && row.rep2 !== null ? row.rep2 : '[*2*]');
-	smsText = smsText.replace(/\[\*3\*\]/g, row.rep3 !== undefined && row.rep3 !== null ? row.rep3 : '[*3*]');
-	smsText = smsText.replace(/\[\*4\*\]/g, row.rep4 !== undefined && row.rep4 !== null ? row.rep4 : '[*4*]');
-	
-	// 결과 출력 또는 다른 곳에 사용
-	console.log(smsText);
-	$('.realtime').text(smsText);
-}
-
 var tableErrorData = [];
 var totRows = 0; // 좌측 받는사람 총 갯수
 
@@ -242,321 +22,6 @@
 var _fileForm2 = new Array();
 var fileExt = ""; // 첨부파일 확장자
 var excelAddr = []; //엑셀 불러오기에서 내용 저장하는 배열 변수
-
-//전체 데이터 갯수 구하는 함수
-function updateTotCnt(data){
-	
-	var rowTotCnt = data;
-	$("#rowTotCnt").text(numberWithCommas(rowTotCnt));
-
-}
-
-//주소록 불러오기에서 수신자 리스트 tabulator에 데이터 추가해주기
-function addPhoneInfo(data){
-	
-	if(data == null){
-		
-		alert("연락처 정보가 없습니다.");
-		return;
-		
-	}else{
-		
-		var idx = 0;
-		var newData = data;//중복 연락처는 하나만 남기고 모두 제거
-		
-		var recTableData = tableL.getRows();		 // 받는사람 리스트의 전체 목록을 저장
-		var tableData = [];
-		
-		//기존 받는사람 리스트를 배열에 미리 담아둔다.
-		if(recTableData.length > 0){
-			
-			for(var j=0; j < recTableData.length; j++){
-				
-				tableData.push({phone: removeDash(recTableData[j].getData().phone) , name: recTableData[j].getData().name, rep1: recTableData[j].getData().rep1, rep2: recTableData[j].getData().rep2, rep3: recTableData[j].getData().rep3, rep4: recTableData[j].getData().rep4});
-			
-			}
-		
-		}
-		
-		//받는사람 리스트를 담아둔 배열에 신규 추가 데이터를 추가해 준다.
-		for(var i=0; i < newData.length; i++){
-			
-			tableData.push({phone: removeDash(newData[i].phone) , name: newData[i].name, rep1: newData[i].rep1, rep2: newData[i].rep2, rep3: newData[i].rep3, rep4: newData[i].rep4});
-			
-		}
-		
-		var temp = tableData.length;
-		
-		//기존 수신 리스트를 지워준 후 신규 전체 리스트를 추가해준다.
-		tableL.clearData(); //기존 받는사람 목록을 삭제.
-		//tableL.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기
-		tableL.addData(getSpupDupliPhoneDataChk(tableData)); // 속도 개선된 중복 검사 호출
-		
-		_fileForm2 = []; //form file data 초기화
-		_fileIdx = 0;	//form file idx 초기화
-		
-		totRows = tableL.getRows().length; 
-		updateTotCnt(totRows); //전체 데이터 갯수 구하기
-		
-		var smsTxtArea = $('#smsTxtArea').val();
-		//일괄변환 문구 결제금액 처리
-		if(smsTxtArea.indexOf("[*이름*]")  > -1 
-				|| smsTxtArea.indexOf("[*1*]") > -1
-				|| smsTxtArea.indexOf("[*2*]") > -1
-				|| smsTxtArea.indexOf("[*3*]") > -1
-				|| smsTxtArea.indexOf("[*4*]") > -1){
-			
-			fnReplCell();
-			
-		}else{
-			
-			//결제 금액 구하기
-		    totalPriceSum(totRows);
-			
-		}
-		
-	}
-	
-}
-
-/* 파일사이즈 가져오기 */
-function getStrFileSize(filesize){
-	var sizeStr="";
-	var sizeKB = filesize/1024;
-	if(parseInt(sizeKB) > 1024){
-	    var sizeMB = sizeKB/1024;
-	    sizeStr = sizeMB.toFixed(2)+" MB";
-	}else{
-	    sizeStr = sizeKB.toFixed(2)+" KB";
-	}
-	return sizeStr;
-}
-
-// 엑셀 파일 불러오기
-function excelExport(event){
-	
-	var data = new FormData(document.excelForm);
-	data.append("file0", $('#excelFile').prop('files')[0]);
-	
-	var fileValue = $("#excelFile").val().split("\\");
-	var fileName = fileValue[fileValue.length-1];
-	
-	var fileExt = fileName.split('.').pop().toLowerCase();
-
-	if(fileExt.length > 0){
-		if($.inArray(fileExt, ['txt','xls','xlsx']) == -1) {
-
-			alert('txt, xls, xlsx 파일만 업로드 할수 있습니다.');
-			return false;
-
-	   	}
-	   
-		
-		var url = "";
-		
-		if(fileExt == "xls" || fileExt == "xlsx"){
-			
-			url = "/web/mjon/msgdata/sendExelFilePhoneNumAjax.do";
-			
-		}else if(fileExt = "txt"){
-			
-			url = "/web/mjon/msgdata/sendTxtFilePhoneNumAjax.do";
-			
-		}else{
-			
-			alert('txt, xls, xlsx 파일만 업로드 할수 있습니다.');
-			return;
-			
-		}
-		
-		//엑셀 데이터 변수에 자료가 있으면 지워준다.
-	   	if(excelAddr.length > 0){
-	    	
-	    	excelAddr = [];
-	    	
-	    }
-		
-		$.ajax({
-	        type: "POST",
-	        enctype: 'multipart/form-data',
-	        url: url,
-	        data: data,
-	        dataType:'json',
-	        async: true,
-	        processData: false,
-	        contentType: false,
-	        cache: false,
-	        //timeout: 600000,
-	        success: function (returnData, status) {
-				if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
-					
-					if(returnData.success){
-						
-						var data = returnData.data;
-						var message = returnData.message;
-						
-						if(message != '' ){
-							alert(returnData.message);
-						}
-						
-						if(data != null){
-							
-							$.each(data, function(i, item){
-								
-								if(checkHpNum(item.phone)){
-								
-									excelAddr.push({phone: item.phone, name: item.name, rep1: item.replace1, rep2: item.replace2, rep3: item.replace3, rep4: item.replace4});
-									
-								}/* else{
-									
-									alert("엑셀 파일 데이터의 형식이 맞지 않는 부분이 있습니다.");
-					        		excelAddr = []; //엑셀 데이터 저장 변수 초기화
-					        		$("#excelFile").val(""); //첨부파일 input 초기화
-					        	    $("#excelNm").val("");  // 첨부파일 명 초기화
-					        	    fileName = "";
-					        		return false;
-									
-								} */
-							 
-							});
-	
-						}
-						
-					}else{
-						alert(returnData.message);
-// 						alert("첨부파일 불러오는 중 오류가 발생하였습니다.");
-						excelAddr = []; //엑셀 데이터 저장 변수 초기화
-		        		$("#excelFile").val(""); //첨부파일 input 초기화
-		        	    $("#excelNm").val("");  // 첨부파일 명 초기화
-		        	    fileName = "";
-						return;
-						
-					}
-				} else if(status== 'fail'){
-					alert("첨부파일 불러오는 중 오류가 발생하였습니다.");
-					console.log("status : fail ~");
-				}
-			},
-			error: function (e) { 
-	        	alert("첨부파일 불러오는 중 오류가 발생하였습니다."); 
-	        	console.log("ERROR : ", e); 
-	        },
-			beforeSend : function(xmlHttpRequest) {
-	        	//로딩창 show
-	        	$('.loading_layer').addClass('active');				
-			},	        	        
-	        complete : function(xhr, textStatus) {
-	        	//로딩창 hide
-	        	$('.loading_layer').removeClass('active');
-			}
-	    });
-		
-		$("#excelFile").val("");
-	    $("#excelNm").val(fileName); 
-		
-	}
-	
-}
-
-//엑셀 불러오기 팝업의 추가 버튼 처리
-$("#excelAdd").click(function(){
-	
-	if(excelAddr.length > 0){
-		
-		//첨부파일로 불러온 데이터를 받는사람 목록에 추가해 준다.
-		addPhoneInfo(excelAddr);
-		
-		 //첨부파일 초기화 시켜주기
-	    $("#excelFile").val("");
-	    $("#excelNm").val("");
-		
-	}else{
-		
-		alert("추가 엑셀 데이터가 없습니다.");
-		return false;
-		
-	}
-	
-	
-});
-
-function txtExport(event){
-    var input = event.target; 
-    var reader = new FileReader();
-    var file = input.files[0];
-    var txtAddr = [];
-	var fileNm = input.files[0].name;
-    var fileExt = fileNm.split('.').pop().toLowerCase();
-    
-    if(fileExt != "txt"){
-    	
-    	alert("TXT 파일만 등록 할 수 있습니다.");
-    	return false;
-    	
-    }
-    
-    if (!file) {
-    	
-    	alert("첨부파일이 없습니다.");
-        return;
-    }
-    
-    //txt 파일 읽어 오기
-    var arrSplitData = [];
-    reader.onload = function(e) {
-        fileData = e.target.result;
-        arrSplitData = fileData.split("\n");
-        
-        for(var i=0; i < arrSplitData.length; i++){
-        	
-        	var arrTemp = arrSplitData[i].split("\t");
-        	txtAddr.push({phone: arrTemp[1].trim(), name: arrTemp[0].trim()});
-        	
-        }
-        
-      	//Tabulator에 데이터 입력해주기
-        addPhoneInfo(txtAddr);
-    };
-    reader.readAsText(file, 'UTF-8');
-    
-    //첨부파일 초기화 시켜주기
-    $("#txtFile").val("");
-} 
-
-//발송금액 단가표시
-function SetPriceWrapOpen() {
-	var loginVO = '${LoginVO}';
-	//로그인 체크
-	if(loginVO == "" || loginVO == null){
-	}
-	else {
-		// 발송금액 가격안내
-		$("#myPriceWrap").show();		
-	}
-}
-
-//등급제 시행 ON/OFF 체크
-function getMberSettingDetail() {
-	$.ajax({
-        type: "POST",
-        url: "/web/grd/mberSettDetailAjax.do",
-        data: {},
-        dataType:'json',
-        async: false,
-        success: function (data) {
-			if (data.isSuccess) {
-				// 발송금액 가격안내
-				$("#myPriceWrap").show();
-			} 
-			else {
-				//alert("Msg : " + data.msg);
-			}
-		},
-        error: function (e) { 
-        	//alert("ERROR : " + JSON.stringify(e)); 
-        }
-    });				
-}	
 
 $(document).ready(function (){
 	// 발송금액 단가표시
@@ -584,54 +49,41 @@
 	});//문자 바이트수 계산하기 끝
 	
 	
-	//스프레드 시트 Tabulator 초기 셋팅
-	/* var tabledata = [
-	 ]; */
-	
-	//var selectRow;
-	
-	//받는사람 연락처 내용 처리
+	//받는사람 연락처  Tabulator 처리
 	//Tabulator AJAX Data Loading
 	tableL = new Tabulator(".callList_box", {
 		height:"255px",
 	    layout:"fitColumns",
-	    //data:tabledata,
-	    //autoColumns:true,
 	    headerHozAlign:"center",
 	    validationMode:"highlight",
-	    //clipboard:false,
-	    //clipboardCopySelector:"table",
-	    //clipboardPasteAction:"insert", // insert, update, replace
 	    placeholder:"복사(Ctrl+C)한 내용을 여기에 붙여넣기(Ctrl+V) 해주세요.", //fit columns to width of table (optional)
 	    resizableColumns:false,
+	    columnDefaults:{ // 공통설정
+	        hozAlign: "center",
+	        headerHozAlign: "center",
+	        editor: "input",
+	        editor: false
+	    },
 	 	columns:[ //Define Table Columns
-	 		{formatter:"rowSelection", titleFormatter:"rowSelection",clipboard:false, hozAlign:"center", headerSort:false, cellClick:function(e, cell){
+	 		{formatter:"rowSelection", headerHozAlign:"center", titleFormatter:"rowSelection",clipboard:false, hozAlign:"center", width:5, headerSort:false, cellClick:function(e, cell){
 	 	        cell.getRow().toggleSelect();
-		 		}
-		 	}, 
-		 	{title:"이름", hozAlign:"center", field:"name", editor:"input", validator:["maxLength:12"], cellEdited:function(cell){
-		 	    //cell - cell component
+		 	}}, 
+			{formatter:"rownum", align:"center" ,title:"No", hozAlign:"center", headerHozAlign:"center", width:40},
+		 	{title:"이름", field:"name", editor:false, validator:["maxLength:12"], cellEdited:function(cell){
 		 	    fnReplCell();
 		    }},
-		 	{title:"휴대폰", hozAlign:"center", field:"phone", editor:"input", width:100, validator:["required","minLength:10", "maxLength:12"], cellEdited:function(cell){
-		 	    //cell - cell component
-		 	    fnDuplPhone();
-		    }},
-		 	{title:"[*1*]", hozAlign:"center", field:"rep1", editor:"input", validator:["maxLength:40"], cellEdited:function(cell){
-		 	    //cell - cell component
+		 	{title:"휴대폰", field:"phone", width:100, editor:false, validator:["required","minLength:10", "maxLength:12"]},
+		 	{title:"[*1*]", field:"rep1", minWidth:60, editor:false, validator:["maxLength:40"], cellEdited:function(cell){
 		 	    fnReplCell();
 		    }},
-		 	{title:"[*2*]", hozAlign:"center", field:"rep2", editor:"input", validator:["maxLength:40"], cellEdited:function(cell){
-		 	    //cell - cell component
-		 	    fnReplCell();
+		 	{title:"[*2*]", field:"rep2", minWidth:60, editor:false, validator:["maxLength:40"], cellEdited:function(cell){
+		 		fnReplCell();
 		    }},
-		 	{title:"[*3*]", hozAlign:"center", field:"rep3", editor:"input", validator:["maxLength:40"], cellEdited:function(cell){
-		 	    //cell - cell component
-		 	    fnReplCell();
+		 	{title:"[*3*]", field:"rep3", minWidth:60, editor:false, validator:["maxLength:40"], cellEdited:function(cell){
+		 		fnReplCell();
 		    }},
-		 	{title:"[*4*]", hozAlign:"center", field:"rep4", editor:"input", validator:["maxLength:40"], cellEdited:function(cell){
-		 	    //cell - cell component
-		 	    fnReplCell();
+		 	{title:"[*4*]", field:"rep4", minWidth:60, editor:false, validator:["maxLength:40"], cellEdited:function(cell){
+		 		fnReplCell();
 		    }},
 		 	
 	 	],
@@ -642,7 +94,6 @@
 	 		var cellVal = cell.getValue();
 	 		var returnVal = "";
 	 		if(!valid){
-	 			
 	 			if(fieldNm == "name"){
 	 				alert("받는사람 이름은 최대 12글자까지만 입력 가능합니다.");
 	 				cell.setValue(strMaxLengthSubstring(cellVal, 11)); //스크립트 함수가 0부터 시작이므로 원하는 글자수 -1을 해줘야한다.
@@ -654,61 +105,53 @@
 		 			cell.setValue(strMaxLengthSubstring(cellVal, 39));
 		 			cell.clearValidation();
 	 			}
-	 			
-	 			//해당 셀 데이터 삭제
-	 			//cell.setValue("");
-	 			
 	 		}
 	 		return value % parameters.phone;
 	    },
-
 	});
 	
-	
-	//주소록 불러오기 팝업 내용
-	//Tabulator AJAX Data Loading
+	// 주소록 불러오기 Tabulator 초기화
 	tableAddr = new Tabulator(".callAddr_box", {
-		height:"255px",
-	    layout:"fitColumns",
-	    headerHozAlign:"center",
-	    validationMode:"highlight",
-	    placeholder:"주소록 그룹을 선택해 주세요.", //fit columns to width of table (optional)
-	    resizableColumns:false,
-	 	columns:[ //Define Table Columns
-	 		{formatter:"rowSelection", titleFormatter:"rowSelection",clipboard:false, hozAlign:"center", headerSort:false, cellClick:function(e, cell){
+	    height: "255px",
+	    layout: "fitColumns",
+	    headerHozAlign: "center",
+	    validationMode: "highlight",
+	    placeholder: "주소록 그룹을 선택해 주세요.", 
+	    resizableColumns: false,
+		progressiveLoad:"scroll",
+	    columns: [
+	    	{formatter:"rowSelection", headerHozAlign:"center", titleFormatter:"rowSelection",clipboard:false, hozAlign:"center", width:5, headerSort:false, cellClick:function(e, cell){
 	 	        cell.getRow().toggleSelect();
-		 		}
-		 	}, 
-		 	{title:"그룹명", hozAlign:"center", field:"addrGroupNm", editor:"input", width:100, validator:["required","minLength:2", "maxLength:40"]},
-		 	{title:"이름", hozAlign:"center", field:"addrName", editor:"input",  width:100, validator:["maxLength:12"]},
-		 	{title:"휴대폰번호", hozAlign:"center", field:"addrPhone", editor:"input", width:100, validator:["required","minLength:10", "maxLength:11"]},
-		 	{title:"[*1*]", hozAlign:"center", field:"addrRep1", editor:"input", width:84, validator:["maxLength:40"]},
-		 	{title:"[*2*]", hozAlign:"center", field:"addrRep2", editor:"input", width:84, validator:["maxLength:40"]},
-		 	{title:"[*3*]", hozAlign:"center", field:"addrRep3", editor:"input", width:84, validator:["maxLength:40"]},
-		 	{title:"[*4*]", hozAlign:"center", field:"addrRep4", editor:"input", width:84, validator:["maxLength:40"]},
-		 	
-	 	],
-	 	validationFailed:function(cell, value, parameters){ // 유효성 체크 함수 - 아직 잘 모르겠음 
-	 		var valid = cell.isValid();
-	 		var fieldNm = cell.getField();
-	 		if(!valid){
-	 			if(fieldNm == "addrName"){
-	 				alert("받는사람 이름은 최대 12글자까지만 입력 가능합니다.");
-	 			}else if(fieldNm == "addrPhone"){
-	 				alert("휴대폰번호는 하이픈(-)을 제외한 숫자만 정확히 입력해 주세요.");
-	 			}else if(fieldNm == "addrGroupNm"){
-	 				alert("그룹명을 정확히 입력해 주세요. 2 ~ 40글자 이내로 입력 가능합니다.");
-	 			}else{
-		 			alert("치환문자를 정확히 입력해 주세요. 40글자 이내로 입력 가능합니다.");
-	 			}
-	 			
-	 			//해당 셀 데이터 삭제
-	 			cell.setValue("");
-	 		}
-	 		return value % parameters.addrPhone;
+		 	}}, 
+	        {formatter: "rownum", align: "center", title: "No", hozAlign: "center", headerHozAlign: "center", width: 60},
+	        {title: "그룹명", hozAlign: "center", field: "addrGroupNm", editor: false, width: 100, validator: ["required", "minLength:2", "maxLength:40"]},
+	        {title: "이름", hozAlign: "center", field: "addrName", editor: false, width: 100, validator: ["maxLength:12"]},
+	        {title: "휴대폰번호", hozAlign: "center", field: "addrPhone", editor: false, width: 100, validator: ["required", "minLength:10", "maxLength:11"]},
+	        {title: "[*1*]", hozAlign: "center", field: "addrRep1", editor: false, width: 84, validator: ["maxLength:40"]},
+	        {title: "[*2*]", hozAlign: "center", field: "addrRep2", editor: false, width: 84, validator: ["maxLength:40"]},
+	        {title: "[*3*]", hozAlign: "center", field: "addrRep3", editor: false, width: 84, validator: ["maxLength:40"]},
+	        {title: "[*4*]", hozAlign: "center", field: "addrRep4", editor: false, width: 84, validator: ["maxLength:40"]},
+	    ],
+	    validationFailed: function(cell, value, parameters) {
+	        var valid = cell.isValid();
+	        var fieldNm = cell.getField();
+	        if (!valid) {
+	            if (fieldNm == "addrName") {
+	                alert("받는사람 이름은 최대 12글자까지만 입력 가능합니다.");
+	            } else if (fieldNm == "addrPhone") {
+	                alert("휴대폰번호는 하이픈(-)을 제외한 숫자만 정확히 입력해 주세요.");
+	            } else if (fieldNm == "addrGroupNm") {
+	                alert("그룹명을 정확히 입력해 주세요. 2 ~ 40글자 이내로 입력 가능합니다.");
+	            } else {
+	                alert("치환문자를 정확히 입력해 주세요. 100글자 이내로 입력 가능합니다.");
+	            }
+	            cell.setValue("");
+	        }
+	        console.log('parameters : ', parameters);
+	        return value % parameters.addrPhone;
 	    },
-
 	});
+	
 	
 	//핸드폰 번호 Tabulator에서 수정시 중복 체크
 	function fnDuplPhone(){
@@ -718,20 +161,14 @@
 		
 		//기존 받는사람 리스트를 배열에 미리 담아둔다.
 		if(recTableData.length > 0){
-			
 			for(var j=0; j < recTableData.length; j++){
-				
 				tableData.push({phone: removeDash(recTableData[j].getData().phone.trim()) , name: recTableData[j].getData().name, rep1: recTableData[j].getData().rep1, rep2: recTableData[j].getData().rep2, rep3: recTableData[j].getData().rep3, rep4: recTableData[j].getData().rep4});
-			
 			}
-		
 		}
 		
 		//수신목록에서 중복 휴대폰문자가 있는지 체크해주기
 		var dupCnt = dupliPhoneDataChk(tableData);
-		
 		if(dupCnt > 0){
-			
 			if(confirm("동일한 휴대폰 번호가 받는사람 목록에 등록되어 있습니다. 중복 번호를 삭제하시겠습니까?")){
 				
 				//수신목록에서 중복 휴대폰 번호 삭제해주기
@@ -742,11 +179,8 @@
 				
 				totRows = tableL.getRows().length; 
 				updateTotCnt(totRows); //전체 데이터 갯수 구하기
-				
 			}
-			
 		}
-		
 	}
 	
 	//받는사람 목록에 복사/붙여넣기 기능 처리
@@ -817,13 +251,10 @@
 					for(var j=0; j < splitData.length; j++){
 
 						if(j == 0){
-							
 							name = splitData[j].trim();
-							
 						}
 						
 						if(j == 1){
-							
 							if(checkHpNum(splitData[j].trim())){//핸드폰 양식이 맞는지 확인
 								phone = removeDash(splitData[j].trim());
 								isPhoneValid = true;
@@ -832,33 +263,23 @@
 									tableErrorData.push(splitData[j].trim());
 								}
 							}
-							
 						}
 						
 						if(j == 2){	//치환문자1
-							
 							rep1 = splitData[j].trim();
-							
 						}
 						
 						if(j == 3){	//치환문자2
-							
 							rep2 = splitData[j].trim();
-							
 						}
 						
 						if(j == 4){	//치환문자3
-							
 							rep3 = splitData[j].trim();
-							
 						}
 						
 						if(j == 5){	//치환문자4
-							
 							rep4 = splitData[j].trim();
-							
 						}
-						
 					}
 					
 					if (isPhoneValid == true) {
@@ -875,32 +296,21 @@
 			
 			//기존 받는사람 리스트를 배열에 미리 담아둔다.
 			if(recTableData.length > 0){
-				
 				for(var j=0; j < recTableData.length; j++){
-					
 					tableData.push({phone: removeDash(recTableData[j].getData().phone.trim()) , name: recTableData[j].getData().name, rep1: recTableData[j].getData().rep1, rep2: recTableData[j].getData().rep2, rep3: recTableData[j].getData().rep3, rep4: recTableData[j].getData().rep4,  });
-				
 				}
-			
 			}
 			
 			if(realPhone.length > 0){
-				
 				for(var j=0; j < realPhone.length; j++){
-					
 					tableData.push({phone: removeDash(realPhone[j].phone.trim()) , name: realPhone[j].name, rep1: realPhone[j].rep1, rep2: realPhone[j].rep2, rep3: realPhone[j].rep3, rep4: realPhone[j].rep4});
-				
 				}
-			
 			}
-			
-			//tableData.push(realPhone);
 				
 			//중복 연락처 1개만 남기고 삭제하기
 			var removeDuplPhone = dupliPhoneData(tableData);
 			  
 			//수신자 리스트에 전화번호 추가해주기
-			//tableL.addData(removeDuplPhone);
 			tableL.setData(removeDuplPhone);
 			
 			totRows = tableL.getRows().length; 
@@ -924,9 +334,7 @@
 			if (tableErrorData.length > 0) {
 				alert("올바르지 않은 휴대폰 번호가 "+ tableErrorData.length +" 건 있습니다.");
 			}			
-			
 		}
-		  
 	});
 	
 	//받는사람 번호 버튼 클릭시 Tabulator에 데이터 넣어주기
@@ -953,21 +361,15 @@
 	    var tableData = [];
 	    var dpCnt = 0;
 	    for(var i=0; i < tableL.getRows().length; i++){
-	    	
 	    	if(callToNum == data[i].getData().phone){
-	    		
 	    		dpCnt++;
-	    	
 	    	}
-	    	
 	    }
 	    
 	    if(dpCnt > 0){
-	    	
 	    	alert("받는사람 리스트에 동일한 연락처가 있습니다.");
 	    	$('#callTo').val("");
 	    	return false;
-	    
 	    }else{
 	    	
 	    	tabledata = [{phone: callToNum},];
@@ -977,29 +379,14 @@
 	    	var totLen = tableL.getRows().length;
 	    	
 	    	for(var i=0; i < totLen; i++){
-		    	
 		    	tableData.push({phone: data[i].getData().phone.trim(), name: data[i].getData().name});
-		    	
 		    }
 			
 	    	//연락처 추가해 주기
 			addPhoneInfo(tabledata);
-	    	
-		    //tableL.addData(tabledata);
-		    
-		    //전체 데이터 갯수 구하기
-		    //totRows = tableL.getRows().length;
-		    //updateTotCnt(totRows);
-		    
-		    //결제 금액 구하기
-		    //totalPriceSum(totRows);
-		    
 		    $('#callTo').val("");
-	    
 	    }
-		
 	});
-	
 	
 	//받는사람 전체삭제 버튼 처리
 	$('.all_del').click(function(){
@@ -1007,38 +394,29 @@
 		var data = tableL.getRows();	
 	
 		if(data == null || data == ""){
-			
 			alert("받는사람을 추가해 주세요.");
 			return false;
-		
 		}else{
-			
 			if(confirm("받는사람 목록을 모두 삭제하시겠습니까?")){
 				tableL.clearData();
 				$("#rowTotCnt").text(0); //총건수 수정
 				$("#rowDupCnt").text(0); //중복건수 수정
 				totalPriceSum(0);		 //결제 금액 수정
 			}
-	
 		}
-		
 	});
-	
 	
 	// 받는사람 선택삭제 버튼 처리해주기
 	$('.select_del').click(function(){
 		
 		if(tableL == null || tableL == ""){
-			
 			alert("받는사람을 추가해 주세요.");
 			return false;
-		
 		}
 		
 		var selectedData = tableL.getSelectedRows();
 		
 		if(selectedData == "" || selectedData == null){
-			
 			alert("삭제할 연락처를 선택해주세요.");
 			return false;
 		
@@ -1047,9 +425,7 @@
 			if(confirm("선택하신 받는 사람을 삭제하시겠습니까?")){
 				
 				for(var i=0; i < selectedData.length; i++){
-					
 					selectedData[i].delete();
-				
 				}
 			
 				totRows = tableL.getRows().length;
@@ -1070,11 +446,8 @@
 					//결제 금액 구하기
 				    totalPriceSum(totRows);
 				}
-				
 			}
-
 		}
-		
 	});
 	
 	//주소록 불러오기 버튼 클릭시
@@ -1083,10 +456,8 @@
 		var login = '${LoginVO.id}';
 		
 		if(login == null || login == ''){
-			
 			alert("로그인 후 이용이 가능합니다.");
 			return false;
-			
 		}
 		
 		$("#addrGroupLoad").load("/web/mjon/msgcampain/selectAddrGroupListAjax.do", "" ,function(response, status, xhr){
@@ -1103,9 +474,7 @@
 	
 	//엑섹불러오기 버튼 클릭시 파일 첨부 실행
 	$('.c3').click(function(){ // 엑셀파일 불러오기 선택 시
-		
 		$("#excelFile").click();
-		
 	});
 	
 	//최근전송내역 팝업 선택추가 버튼 처리(체크내역 받는사람 리스트로 추가해주기)
@@ -1158,16 +527,12 @@
 	
 	//최근전송내역 팝업 선택 취소 버튼 처리
 	$(document).on('click', '#latestCancelPhone', function (){
-		
 		$("input[name=latAddrChk]").prop("checked", false);
-		
 	});
 	
 	//최근전송내역 팝업 삭제 버튼 처리
 	$(document).on('click', '#latestAddrDel', function (){
-		
 		$(this).parent("#latestLi").remove();
-		
 	});
 	
 	//자주보내는 번호 팝업 선택추가 버튼 처리(체크내역 받는사람 리스트로 추가해주기)
@@ -1220,16 +585,12 @@
 	
 	//자주보내는 번호 팝업 선택 취소 버튼 처리
 	$(document).on('click', '#bookMarkCancelPhone', function (){
-		
 		$("input[name=bookAddrChk]").prop("checked", false);
-		
 	});
 	
 	//자주보내는 번호 팝업 삭제 버튼 처리
 	$(document).on('click', '#bookMarkAddrDel', function (){
-		
 		$(this).parent("#bookMarkLi").remove();
-		
 	});
 	
 	
@@ -1247,47 +608,31 @@
 				
 				//오류 데이터 값 저장
 				for(var i=0; i < totLen; i++){
-					
 					var cellValue = invalid[i].getValue();
-					
 					if(i == 0){
-						
 						errMsg = cellValue;
-						
 					}else{
-						
 						errMsg = errMsg +", "+ cellValue;
-						
 					}
-					
 				}
 				
 				if(errMsg == "" || errMsg == null){
-					
 					alert("내용에 오류가 있습니다.");
 					return false;
-					
 				}else{
-					
 					alert(errMsg + "의 내용에 오류가 있습니다.");
 					return false;
-					
 				}
 				
 			}else{
-				
 				alert("오류 데이터가 없습니다.");
 				return false;
-				
 			}
 			
 		}else{
-			
 			alert("연락처를 입력해 주세요.");
 			return false;
-			
 		}
-		
 	});
 	
 	//문자입력창의 첨부된 이미지 순서를 바꿀 때
@@ -1317,32 +662,23 @@
 		var form = document.letterForm;
 		
 		if($(this).hasClass("active") === true){
-			
 			if(index == 0){
-				
 				form.pageIndex.value = 1;
 				form.letterType.value = "S";
 				form.categoryCode.value = "";
 				form.hashTag.value = "";
-			
 			}else if(index == 1){
-				
 				form.pageIndex.value = 1;
 				form.letterType.value = "P";
 				form.categoryCode.value = "";
 				form.hashTag.value = "";
-				
 			}else if(index == 2){
-				
 				setTimeout(function(){ 
 			    	map.relayout();
 			    	map.setCenter(testcoords);
 			    }, 0);
-				
 			}
-		
 		}
-		
 	});
 	
 	
@@ -1392,12 +728,10 @@
 			var totalPrice  = totalPriceSum(totRows);
 			$('#totalPrice').text(totalPrice);
 			$('#txtReplYn').val("N");
-			
 		}
 
 		var sendOfT=$('.send_top').offset().top;
 		$('html,body').stop().animate({'scrollTop':sendOfT-60},250);
-		
 	});
 	
 	
@@ -1426,24 +760,18 @@
 				imgFileId.splice(i, 1);   //이미지 아이디 삭제 - 내 문자 보관함 저장용으로 사용
 				i--;
 			}
-			
 		}
 		
-		//imgCnt--;
 		$("#imgCnt").val(Number(imgCnt) - 1);
 		
 		//미리보기 포토 1,2,3 번 번호 표시 변경
 		$('.photo_num_02').hide();
 		$('.photo_num_03').hide();
 		if(imgCnt > 2){
-			
 			$('.photo_num_01').show();
 			$('.photo_num_02').show();
-			
-			
 		}else if(imgCnt > 1){
 			$('.photo_num_01').show();
-			
 		}else{
 			
 			//그림을 모두 삭제 했을때 단문으로 변경
@@ -1456,7 +784,6 @@
 			$('#msgType').val("4"); // 메세지 타입 설정
 			
 			fnByteString(contents);
-			
 		}
 		
 		//수신목록 전체 데이터 갯수 구하기
@@ -1477,14 +804,12 @@
 			var totalPrice  = totalPriceSum(totRows);
 			$('#totalPrice').text(totalPrice);
 			$('#txtReplYn').val("N");
-			
 		}
 		
 		var scrollHei = $(".mCustomScrollBox").height();
 		if(scrollHei > 488) {
 			$(".img_box").removeClass("on_scroll_img");
 		}
-		
 	}); 
 	
 	// 초기화 버튼 처리
@@ -1494,15 +819,11 @@
 		$("#send_adYnN").prop("checked", true);
 		
 		$('.delLi').each(function(){
-			
 			$(this).remove();
-			
 		});
 		
 		$('.preBoxF').each(function(){
-			
 			$(this).remove();
-			
 		});
 		
 		//그림 카운트 초기화
@@ -1544,8 +865,6 @@
 		});
 		// 클릭 시 조회수 증가 로직 끝
 		
-		
-		/* var smsTxtArea = $(this).find('.msg_text').text(); */
 		var smsTxtArea = $(this).find('.msg_text').html();
 				
 		smsTxtArea = smsTxtArea.replace(/(<br>|<br\/>|<br \/>)/g, '\n');
@@ -1565,12 +884,6 @@
 		var formM = document.myMsgForm;
 		formL.categoryCode.value = ""; //해시태그 검색 시 카테고리 제거
 		formL.upperCateNo.value = ""; //해시태그 검색 시 카테고리 제거
-		/* if(form.searchKeyword.value == ""){
-			
-			alert("검색어를 입력해 주세요.");
-			return false;
-			
-		} */
 		
 		var tabIndex = $(".selectedTab").children(".active").index();
 
@@ -1629,13 +942,10 @@
 			formM.searchKeyword.value = "";
 			fnMyMsgListAjax(1);
 		}
-		
 	});
 	
 	/*
-	
 		단문 / 장문 탭 옵션 선택시 실행 
-	
 	**/
 	
 	$('.tDep1_mType').click(function(){ // 전체,기업, 개인 선택 옵션 처리
@@ -1644,21 +954,14 @@
 		var form = document.letterForm;
 		
 		if(mType == "전체"){
-			
 			form.memberType.value = "";
-			
 		}else if(mType == "기업"){
-			
 			form.memberType.value = "B";
-			
 		}else{
-			
 			form.memberType.value = "P";
-			
 		}
 		
 		//문자 리스트 불러오기
-		//form.letterType.value = "S";
 		form.categoryCode.value = "";
 		form.hashTag.value = "";
 		form.pageIndex.value = 1;
@@ -1737,14 +1040,11 @@
 		
 		//문자 리스트 불러오기
 		fnLetterListAjax(1);
-		
 	});
 	
 	
 	/*
-		
 		그림문자 탭 옵션 선택시 사용
-	
 	*/
 	
 	$('.tDep2_mType').click(function(){ // 전체,기업, 개인 선택 옵션 처리
@@ -1753,17 +1053,11 @@
 		var form = document.letterForm;
 		
 		if(mType == "전체"){
-			
 			form.memberType.value = "";
-			
 		}else if(mType == "기업"){
-			
 			form.memberType.value = "B";
-			
 		}else{
-			
 			form.memberType.value = "P";
-			
 		}
 		
 		//문자 리스트 불러오기
@@ -1773,18 +1067,15 @@
 		form.pageIndex.value = 1;
 		
 		fnPhotoListAjax();
-		
 	});
 	
 	$('.tDep2_letType').click(function(){ // 그림문자 선택 
-		
 		var letterType = $(this).find('.on').attr("value");
 		var form = document.letterForm;
 		form.letterType.value = 'P';
 		
 		//문자 리스트 불러오기
 		fnPhotoListAjax(1);
-		
 	});
 	
 	$('.tDep2_cateCode').click(function(){ // 그림 문자 카테고리 선택 시 옵션 처리
@@ -1793,9 +1084,7 @@
 		var form = document.letterForm;
 		
 		if(cateCode == "all"){ //전체 선택시
-			
 			cateCode = "";	
-		
 		} else {
 			//카테고리 코드 클릭 시 해쉬태그 초기화 후 전체 선택
 			form.hashTag.value="";
@@ -1889,6 +1178,102 @@
 	});
 });
 
+//전체 데이터 갯수 구하는 함수
+function updateTotCnt(data){
+	var rowTotCnt = data;
+	$("#rowTotCnt").text(numberWithCommas(rowTotCnt));
+}
+
+//주소록 불러오기에서 수신자 리스트 tabulator에 데이터 추가해주기
+function addPhoneInfo(data){
+	
+	if(data == null){
+		
+		alert("연락처 정보가 없습니다.");
+		return;
+		
+	}else{
+		
+		var idx = 0;
+		var newData = data;//중복 연락처는 하나만 남기고 모두 제거
+		
+		var recTableData = tableL.getRows();		 // 받는사람 리스트의 전체 목록을 저장
+		var tableData = [];
+		
+		//기존 받는사람 리스트를 배열에 미리 담아둔다.
+		if(recTableData.length > 0){
+			
+			for(var j=0; j < recTableData.length; j++){
+				
+				tableData.push({phone: removeDash(recTableData[j].getData().phone) , name: recTableData[j].getData().name, rep1: recTableData[j].getData().rep1, rep2: recTableData[j].getData().rep2, rep3: recTableData[j].getData().rep3, rep4: recTableData[j].getData().rep4});
+			
+			}
+		
+		}
+		
+		//받는사람 리스트를 담아둔 배열에 신규 추가 데이터를 추가해 준다.
+		for(var i=0; i < newData.length; i++){
+			
+			tableData.push({phone: removeDash(newData[i].phone) , name: newData[i].name, rep1: newData[i].rep1, rep2: newData[i].rep2, rep3: newData[i].rep3, rep4: newData[i].rep4});
+			
+		}
+		
+		var temp = tableData.length;
+		
+		//기존 수신 리스트를 지워준 후 신규 전체 리스트를 추가해준다.
+		tableL.clearData(); //기존 받는사람 목록을 삭제.
+		//tableL.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기
+		tableL.addData(getSpupDupliPhoneDataChk(tableData)); // 속도 개선된 중복 검사 호출
+		
+		_fileForm2 = []; //form file data 초기화
+		_fileIdx = 0;	//form file idx 초기화
+		
+		totRows = tableL.getRows().length; 
+		updateTotCnt(totRows); //전체 데이터 갯수 구하기
+		
+		var smsTxtArea = $('#smsTxtArea').val();
+		//일괄변환 문구 결제금액 처리
+		if(smsTxtArea.indexOf("[*이름*]")  > -1 
+				|| smsTxtArea.indexOf("[*1*]") > -1
+				|| smsTxtArea.indexOf("[*2*]") > -1
+				|| smsTxtArea.indexOf("[*3*]") > -1
+				|| smsTxtArea.indexOf("[*4*]") > -1){
+			
+			fnReplCell();
+			
+		}else{
+			
+			//결제 금액 구하기
+		    totalPriceSum(totRows);
+		}
+	}
+}
+
+/* 파일사이즈 가져오기 */
+function getStrFileSize(filesize){
+	var sizeStr="";
+	var sizeKB = filesize/1024;
+	if(parseInt(sizeKB) > 1024){
+	    var sizeMB = sizeKB/1024;
+	    sizeStr = sizeMB.toFixed(2)+" MB";
+	}else{
+	    sizeStr = sizeKB.toFixed(2)+" KB";
+	}
+	return sizeStr;
+}
+
+//발송금액 단가표시
+function SetPriceWrapOpen() {
+	var loginVO = '${LoginVO}';
+	//로그인 체크
+	if(loginVO == "" || loginVO == null){
+	}
+	else {
+		// 발송금액 가격안내
+		$("#myPriceWrap").show();		
+	}
+}
+
 //선거 후보자 등록 알림 메세지 처리
 function fn_candidateChk(){
 	alert("선거 후보자를 등록이 되어야 문자 발송이 가능합니다. 후보자 등록을 해주세요.");
@@ -1900,7 +1285,6 @@
 function fnByteString(contents){
 	
 	var totalByte = 0; 
-	//var content = contents;
 	var adverYn = $("input[name='send_adYn']:checked").val();
 	var adTxtLeng = conByteLeng($('.ad_txt').text());
 	var denyTxtLeng = 0;
@@ -1908,11 +1292,9 @@
 	
 	//선거문자 하단 문구 줄바꿈 처리하기
 	if(typeof denyTxt !='undefined' && denyTxt != null){
-		
 		denyTxt = denyTxt.replaceAll("<br>","\n");
 		denyTxt = denyTxt.replaceAll("<br/>","\n");
 		denyTxtLeng = conByteLeng(denyTxt);
-		
 	}
 	
 	
@@ -1957,8 +1339,6 @@
 		$('.put_left').css("display","block");  // 내용 입력 박스에 클래스 삽입
 		$('.msg_title').addClass('active');
 		
-		//document.getElementById("mmsSubject").disabled = false;
-		
 	}else{
 		
 		if(conLeng > 90){
@@ -1974,8 +1354,6 @@
 			$('.put_left').addClass("long");  // 내용 입력 박스에 클래스 삽입
 			$('.msg_title').addClass('active');
 			
-			//document.getElementById("mmsSubject").disabled = false;
-			
 		}else{
 			
 			$('#msgLeng').html(conLeng + " / ");
@@ -1990,29 +1368,14 @@
 			$('#mmsSubject').val("");
 			$('#title_y').prop('checked',false);
 			$('#title_n').prop('checked',true);
-			
-			//제목 비활성화로 내용 지워주기
-			/* $('#mmsSubject').val("");
-			document.getElementById("mmsSubject").disabled = true; */
-			
 		}
-		
 	}
 	
-	
 	// 미리보기 데이터 입력해 주기 , 줄바꿈 문자 변환해주기
-	//var repContent = "";
-	//repContent = content.replace(/(?:\r\n|\r|\n)/g, '<br/>');
-	
-	
 	if(conLeng > 0){
-		
 		$('.none_txt').text("");
-		
 	}else{
-		
 		$('.none_txt').text("내용을 입력해주세요.");
-		
 	}
 	
 	//미리보기에 내용 입력해 주기
@@ -2074,7 +1437,6 @@
     var popup_top =(window.screen.height / 2) - (popup_ht / 2);
 
     window.open('<c:url value='/web/mjon/msgcampain/openImageEditorPopup.do'/>', 'a', 'width=' + popup_wid +', height='+ popup_ht +', left=' + popup_left + ', top='+ popup_top + ', scrollbar=no' );
-
 }
 
 //그림샘플 이미지 선택시 문자 내용에 입력 처리
@@ -2230,8 +1592,6 @@
 				+ '<button type="button" class="file_close_on"><img src="/publish/images/content/thumb_del_on.png" alt="첨부파일 삭제"></button>'
 				+ '</li>';
 				
-				
-		/* "<li class=\"delLi\"><p>" + imgPath + "</p><button type=\"button\" class=\"file_close\"><img class=\"delImg\" src=\"/publish/images/content/file_close.png\" alt=\"첨부파일 삭제\"></button></li>" */
 	$('.liOnImg').append(liPath);	
 		
 	//미리보기 보여주기
@@ -2245,20 +1605,14 @@
 		$('.photo_num_01').show();
 		$('.photo_num_02').hide();
 		$('.photo_num_03').hide();
-		//$(".thumb_wrap li:eq(0)").addClass("on");
-		
 	}else if($("#imgCnt").val() == 2){
 		$('.preViewShort').append(imgPath);
 		$('.photo_num_02').show();
 		$(".thumb_wrap li").removeClass("on");
-		//$(".thumb_wrap li:eq(1)").addClass("on");
-		
 	}else if($("#imgCnt").val() == 3){
 		$('.preViewShort').append(imgPath);
 		$('.photo_num_03').show();
 		$(".thumb_wrap li").removeClass("on");
-		//$(".thumb_wrap li:eq(2)").addClass("on");
-		
 	}
 	
 	// 배열에 선택한 이미지 경로 저장해주기
@@ -2280,12 +1634,8 @@
 
 
 $(document).on('click', '.symbolButton, .changeWord', function (){
-	//var smsTxtArea = $('#smsTxtArea').val();
-	//$('#smsTxtArea').val(smsTxtArea + $(this).attr("value"));
-	
 	// 커서 위치에 삽입
 	setCursorInsertText("smsTxtArea", $(this).attr("value"));
-	
 	fnByteString($('#smsTxtArea').val());
 });
 
@@ -2294,10 +1644,8 @@
 	var recommId = $('#recommId').val();
 	
 	if(recommId == ''){
-		
 		alert("추천인 ID를 입력해 주세요.");
 		return false;
-		
 	}
 	
 	var data = new FormData(document.msgForm);
@@ -2321,12 +1669,10 @@
 					
 					alert("추천인 아이디가 확인 되었습니다.");
 					return false;
-					
 				}else{
 					
 					alert("존재하지 않는 추천인 아이디 입니다.");
 					return false;
-					
 				}
 				
 			} else if(status== 'fail'){
@@ -2335,8 +1681,502 @@
 		},
         error: function (e) { alert("추천인 확인에 실패하였습니다."); console.log("ERROR : ", e); }
     });
-	
 });
+
+//주소록 불러오기 그룹명 검색 기능처리
+function fnAddrGrpSearch(){
+	
+	var form = document.searchAddrGrpForm;
+	form.searchKeyword.value = form.searchGrpKeyword.value;
+	form.searchCondition.value = "";
+	
+	var sendData = $(document.searchAddrGrpForm).serializeArray();
+	
+	$("#addrGroupLoad").load("/web/mjon/msgcampain/selectAddrGroupListAjax.do", sendData ,function(response, status, xhr){
+		//리스트 스크롤 처리해주기
+		$(".adr_pop_list").mCustomScrollbar({
+			axis: 'y',
+			scrollbarPosition: "outside",
+			theme: "dark",
+			autoHideScrollbar: false
+		});
+	});
+}
+
+//주소록 불러오기 팝업의 그룹 선택시 우측에 주소록 불러오기
+function fnSelectAddrList(type,addrGrpId,item){
+	
+	// 주소록 그룹 열림, 닫힘 폴더이미지 초기화
+	$(".adr_pop_list div p").each(function (index, item) {
+		$(item).find("img").attr("src", "/publish/images/content/close_folder2.png");
+		$(item).find("img").attr("alt", "폴더 닫힘");
+	});
+	
+	var form = document.searchAddrGrpForm;
+	form.type.value = type;
+	form.searchAddrGrpId.value = addrGrpId;
+	form.searchKeyword.value = "";
+	form.searchCondition.value = form.searchAddrCondition.value;
+	
+	//왼쪽 그룹리스트의 그룸명을 선택시 검색어를 초기화해준다.
+	form.searchAddrKeyword.value="";
+	   
+	$(item).find("img").attr("src", "/publish/images/content/open_folder2.png");
+	$(item).find("img").attr("alt", "폴더 열림");
+	
+	loadAddrList();
+}
+
+// 주소록 불러오기 팝업 검색 이벤트
+function fnAddrSearch(){
+	var form = document.searchAddrGrpForm;
+	form.searchKeyword.value = form.searchAddrKeyword.value;
+	form.searchCondition.value = form.searchAddrCondition.value;
+	loadAddrList();
+}
+
+//주소록 불러오기 팝업 검색 리스트 조회
+function loadAddrList(){
+
+	/* serialize 를 사용할때는 processData, contentType 옵션 제가할것 */
+	var data = $("#searchAddrGrpForm").serialize();
+	var url = "/web/mjon/msgcampain/selectMsgAddrListAjax.do";
+	
+	$.ajax({
+        type: "POST",
+        url: url,
+        data: data,
+        dataType:'json',
+        async: true,
+        cache: false,
+        success: function (returnData, status) {
+			if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
+				
+				if(returnData.result == "success"){
+					
+					var addrList = returnData.resultAddrList;
+					var tableData = [];
+					
+					if(addrList.length == 0){
+						
+						alert("주소록 정보가 없습니다.");
+						tableAddr.setData(tableData);
+						return false;
+					}
+					
+					//받는사람 리스트를 담아둔 배열에 신규 추가 데이터를 추가해 준다.
+					for(var i=0; i < addrList.length; i++){
+						tableData.push({
+							addrGroupNm: addrList[i].addrGrpNm
+							, addrPhone: removeDash(addrList[i].addrPhoneNo)
+							, addrName: addrList[i].addrNm
+							, addrRep1: addrList[i].addrInfo1
+							, addrRep2: addrList[i].addrInfo2
+							, addrRep3: addrList[i].addrInfo3
+							, addrRep4: addrList[i].addrInfo4
+						});
+					}
+					
+					//우측 주소록 리스트 Tabulator에 입력해주기
+					tableAddr.setData(tableData);
+					
+				}else{
+					alert(returnData.message);
+					return false;
+				}
+				
+			} else if(status== 'fail'){
+				alert("주소록 불러오기에 실패하였습니다. !!");
+			}
+		},
+        error: function (e) { 
+        	alert("주소록 불러오기에 실패하였습니다."); console.log("ERROR : ", e); 
+        },
+		beforeSend : function(xmlHttpRequest) {
+        	//로딩창 show
+        	$('.loading_layer').addClass('active');				
+		},	        	        
+        complete : function(xhr, textStatus) {
+        	//로딩창 hide
+        	$('.loading_layer').removeClass('active');
+		}
+    });
+}
+
+//주소록 불러오기에서 수신자 리스트 추가해 주기
+function addrToList(){
+	
+	var selectedData = tableAddr.getSelectedRows();
+	var tableData = [];
+	
+	if(selectedData == "" || selectedData == null){
+		
+		alert("주소록을 선택해 주세요.");
+		return false;
+	
+	}else{ // 선택한 Row 데이터 저장해주기
+		
+		for(var i=0; i < selectedData.length; i++){
+			
+			//좌측 받는사람 리스트를 담아둔 배열에 데이터를 추가해 준다.
+			tableData.push({phone: removeDash(selectedData[i].getData().addrPhone), 
+				name: selectedData[i].getData().addrName, 
+				rep1: selectedData[i].getData().addrRep1, 
+				rep2: selectedData[i].getData().addrRep2, 
+				rep3: selectedData[i].getData().addrRep3, 
+				rep4: selectedData[i].getData().addrRep4}
+			);
+		
+		}
+	
+		//선택한 데이터 받는사람 리스트에 추가해 주기
+		addPhoneInfo(tableData);
+		$(".closeAddr").trigger("click");
+		
+		//주소록 레이어 팝업의 Tabulator 데이터 지워주기
+		tableAddr.clearData();
+	}
+}
+
+//주소록 팝업 닫기 기능
+function addrClose(){
+	$(".closeAddr").trigger("click");
+	
+	//주소록 레이어 팝업의 Tabulator 데이터 지워주기
+	tableAddr.clearData();
+}
+
+//내문자함 선택시 저장된 내용 문자 입력영역에 처리해주기
+function fnMyMsgAdd(msgId){
+	
+	var form = document.addMyMsgForm;
+	form.msgId.value = msgId;
+	form.pageType.value = "myMsg";
+	
+	var url = "/web/mjon/msgcampain/selectMsgAddInfoAjax.do";
+	var data = new FormData(document.addMyMsgForm);
+	
+	$.ajax({
+        type: "POST",
+        url: url,
+        data: data,
+        dataType:'json',
+        async: false,
+        processData: false,
+        contentType: false,
+        cache: false,
+        success: function (returnData, status) {
+			if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
+				
+				if(returnData.result == "success"){
+					
+					var msgData = returnData.resultMsgInfo;
+					var fileData = returnData.resultMsgAddPhotoInfo;
+					
+					var smsTxt = msgData.smsTxt;
+					var subject = msgData.subject;
+					var fileId = "";
+					var filePath = "";
+					var len = fileData.length;
+					
+					//기존 내용 지워주기
+					//$(".btnReset").trigger("click");
+					$('.delLi').each(function(){
+						$(this).remove();
+					});
+					
+					$('.preBoxF').each(function(){
+						$(this).remove();
+					});
+
+					$('#imgCnt').val(0);
+					
+					//기존 imgFileId, imgFilePath 배열에 있는 내용 초기화 해주기
+					imgFilePath = [];
+					imgFileId = [];
+					
+					//내문자함 텍스트 내용 입력해주기
+					$('#smsTxtArea').val(smsTxt);
+					
+					//첨부 이미지가 있는경우 이미지 처리해주기
+					if(len > 0){
+						
+						for(var i=0; i < len; i++){
+							
+							var num = i + 1;
+							var imgId = fileData[i].atchFileId;
+							var imgSn = fileData[i].fileSn;
+							var fileStreCours = fileData[i].fileStreCours;
+							var streFileNm = fileData[i].streFileNm;
+							var fileExtsn = fileData[i].fileExtsn;
+							
+							/* var imgSrc = fileStreCours + "/" + streFileNm + "." + fileExtsn; */
+							var imgSrc = '/cmm/fms/getImage2.do?atchFileId=' + imgId + '&fileSn=' + imgSn;
+							myMsgImageControl(imgSrc, "edit_n", "Template", imgId);
+						}
+						
+						fnByteString(smsTxt);
+						
+					}else{
+						fnByteString(smsTxt);
+					}
+					
+					//내 문자함 가져오기에서 글자길이 계산을 다시한다.
+					$("#smsTxtArea").trigger("keyup");
+					
+					// 문자전송 상단으로 이동
+					var sendOfT=$('.send_top').offset().top;
+					$('html,body').stop().animate({'scrollTop':sendOfT-60},250);					
+				}else{
+					alert("내문자함 내용을 불러오지 못하였습니다.");
+					return false;
+				}
+				
+			} else if(status== 'fail'){
+				alert("내문자함 내용 입력에 실패하였습니다. !!");
+			}
+		},
+        error: function (e) { alert("내문자함 내용 입력에 실패하였습니다."); console.log("ERROR : ", e); }
+    });
+}
+
+// 후보자 이메일 등록 시 도메인 선택 이벤트(1: 직접입력, 2: 도메인 선택 시)
+function emailChange(email){
+	var emailTxt =  $("input[name=emailDomain]");
+	
+	if(email.value == '1'){
+		$("input[name=emailDomain]").attr('readonly', false);
+		emailTxt.val('');
+	}else{
+		emailTxt.val(email.value);
+		$("input[name=emailDomain]").attr('readonly', true);
+	}
+}
+
+// 후보자 등록 / 수정 이벤트
+function fnCandidateUpt(dataType){
+	
+	var form = document.candiForm;
+	form.dataType.value = dataType;
+	
+	if(form.candidateNm.value == ""){
+		alert("후보자 이름을 입력해 주세요.");
+		return false;
+	}
+	
+	if(form.regidentNo1.value == ""){
+		alert("후보자 주민등록번호 앞자리를 입력해 주세요.");
+		return false;
+	}else if(!Number(form.regidentNo1.value)){
+		alert("후보자 주민등록번호 앞자리를 정확히 입력해 주세요.");
+		return false;
+	}
+	
+	if(form.regidentNo2.value == ""){
+		alert("후보자 주민등록번호 뒷자리를 입력해 주세요.");
+		return false;
+	}else if(!Number(form.regidentNo2.value)){
+		alert("후보자 주민등록번호 뒷자리를 정확히 입력해 주세요.");
+		return false;
+	}
+	
+	if(form.candidateAddr.value == ""){
+		alert("후보자 주소를 입력해 주세요.");
+		return false;
+	}
+	
+	if(form.managerNm.value == ""){
+		alert("담당자 이름을 입력해 주세요.");
+		return false;
+	}
+	
+	if(form.phoneNo.value == ""){
+		alert("담당자 휴대폰 번호를 입력해 주세요.");
+		return false;
+	}else if(!checkHpNum(removeDash(form.phoneNo.value))){
+		alert("정확한 휴대폰 번호를 입력해 주세요.");
+		return false;
+	}
+	
+	var emailChk = form.email.value + "@" + form.emailDomain.value;
+	
+	if(emailChk == ""){
+		alert("이메일을 입력해 주세요.");
+		return false;
+	}else if(!checkEmail(emailChk)){
+		alert("정확한 이메일을 입력해 주세요.");
+		return false;
+	}
+	
+	var msg = "";
+	
+	if(dataType == 'Upt'){
+		msg="후보자 정보를 수정하시겠습니까?";
+	}else{
+		msg="후보자를 등록 하시겠습니까?";
+	}
+	
+	if(confirm(msg)){
+		
+		//XSS 취약점 제거
+		form.candidateNm.value = XSSCheck(form.candidateNm.value);
+		form.regidentNo1.value = XSSCheck(form.regidentNo1.value);
+		form.regidentNo2.value = XSSCheck(form.regidentNo2.value);
+		form.candidateAddr.value = XSSCheck(form.candidateAddr.value);
+		form.managerNm.value = XSSCheck(form.managerNm.value);
+		form.phoneNo.value = XSSCheck(form.phoneNo.value);
+		form.email.value = XSSCheck(form.email.value);
+		form.emailDomain.value = XSSCheck(form.emailDomain.value);
+		
+		var url = "/web/mjon/msgcampain/insertCandidateDataInfoAjax.do";
+		var data = new FormData(document.candiForm);
+		
+		$.ajax({
+	        type: "POST",
+	        url: url,
+	        data: data,
+	        dataType:'json',
+	        async: false,
+	        processData: false,
+	        contentType: false,
+	        cache: false,
+	        success: function (returnData, status) {
+				if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
+					if(returnData.result == "loginFail"){
+						alert(returnData.message);
+						return false;
+					}else if(returnData.result == "success"){
+						alert(returnData.message);
+						location.reload();
+					}else{
+						alert(returnData.message);
+						return false;
+					}
+					
+				} else if(status== 'fail'){
+					alert("후보자 등록에 실패하였습니다. !!");
+				}
+			},
+	        error: function (e) { alert("후보자 등록에 실패하였습니다."); console.log("ERROR : ", e); }
+	    });
+	}
+}
+
+//후보자 등록 시 로그인 여부 체크
+function fn_candidateLoginChk(){
+	alert("후보자 등록은 로그인 후 이용 가능합니다.");
+	return false;
+}
+
+// 후보자 등록 시 회원여부 체크
+function fn_mberDeptChk(){
+	alert("선거문자는 개인 회원만 이용 가능합니다.");
+	return false;
+}
+
+// 선거문자 맞춤제작 팝업 열기
+function goToCustom(){
+	var form = document.goToCustomForm;
+	form.submit();
+}
+
+// 발송규정 윈도우 팝업 열기
+function infoPop(pageUrl){
+	document.popForm.pageType.value = pageUrl;
+	document.popForm.action = "/web/pop/infoPop.do";
+	document.popForm.method = "post"; 
+	window.open("about:blank", 'infoPop', 'width=790, height=1500, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=yes');
+	document.popForm.target = "infoPop";
+	document.popForm.submit();
+}
+
+// 주소록에 등록 버튼 레이어팝업 오픈 이벤트
+$(document).on('click', '.addressregi_btn', function() {
+	var tableData = tableL.getRows();
+	var dataLen = tableL.getRows().length;
+	if(dataLen == 0){
+		alert("연락처 정보를 등록해 주세요.");
+		return false;
+	}else{
+		$('.addressregi_layer').css({'width':'680px','display':'block','left':'50%','top':'50%','transform':'translate(-50%,-50%)'});
+		setTimeout(function(){
+			$('.addressregi_layer').css({'opacity':'1'});
+		},150);
+		$('.mask').addClass('on');
+		getAddrGroupList();
+	}
+});
+
+// 주소록에 등록 레이어팝업 종료 이벤트
+$(document).on('click', '.addressregi_layer .tooltip-close', function() {
+	$('.addressregi_layer').attr('style','');
+	$("#addrGrpNm").val("");
+});
+
+//주소록에 등록 레이어팝업 그룹 선택 이벤트
+$(document).on('change', '#addrGrpIdInfo', function() {
+	if ($("#addrGrpIdInfo option:selected").val() != "NEW") {
+		$("#addrGrpNm").val(""); //	새그룹명 Clear;
+	}
+});
+
+//주소록 그룹정보 불러오기
+function getAddrGroupList() {
+ $.ajax({
+     type : "POST",
+     async : false,
+     url : "/web/mjon/addr/addrGroupListAjax.do",
+     data : {},
+     dataType:'json',
+     success : function(data) {
+		// Show Html
+		getAddrGroupListShow(data.addrGroupList);
+     },
+     error : function(xhr, status, error) {
+         alert(error);
+         return false;
+     }
+ });	    	
+}
+
+//Show Html
+function getAddrGroupListShow(jsonList) {
+	var sHtml = "";
+	sHtml += "<option value='NEW'>그룹추가</option>";
+	sHtml += "<option value='0'>그룹미지정</option>";
+	sHtml += "<option value='bookmark'>자주보내는 번호</option>";
+	for (var j = 0; j < jsonList.length; j++) {
+		sHtml += "	<option value='" + $.trim(jsonList[j].addrGrpId) + "' />" + $.trim(jsonList[j].addrGrpNm) + "</option>";
+	}
+	    	
+	$("#addrGrpIdInfo").html(sHtml);
+}
+
+//주소록 그룹 중복체크
+function getAddrGroupDuplCheckAjax() {
+	var isReturn = true;
+	
+	$.ajax({
+		url : "<c:url value='/web/addr/getAddrGroupDuplCheckAjax.do' />", 
+		type : 'POST', 
+		data : {"addrGrpNm" : $("#addrGrpNm").val()},
+		dataType:'json',
+		async: false,			// 동기
+		success : function(data, status){
+			if(data.isSuccess == true) {
+				if(data.isDupl == true) {
+					//alert("중복된 그룹명입니다.");
+					isReturn = false;
+				}
+			} 
+		},
+		error: function (e) {
+			//alert("주소록 중복체크에 실패했습니다.");
+		}
+	});
+	
+	return isReturn;	
+}
 
 //문자발송 받는사람 목록 주소록에 등록하기 기능 처리
 $('.registAddr').click(function(){
@@ -2366,12 +2206,10 @@
 				
 				alert("수신 목록에 핸드폰 번호가 없는 항목이 있습니다.");
 				return false;
-				
 			}else if(!checkHpNum(phone)){
 				
 				alert("수신 목록에 잘 못된 핸드폰 번호가 있습니다. 핸드폰 번호 : " + phone + " 입니다.");
 				return false;
-				
 			}
 			
 			
@@ -2406,43 +2244,6 @@
 			}else{
 				rep4List[i] = rep4.replaceAll(",","§");
 			}
-			
-			/* if(name == "" || name == null){
-				
-				alert("수신 목록에 이름이 없는 항목이 있습니다. 이름을 입력해 주세요");
-				return false;
-				
-			}else{
-				
-				nameList[i] = name;
-				phoneNum[i] = phone;
-				
-				if(rep1 == "" || rep1 == null){
-					rep1List[i] = "-";
-				}else{
-					rep1List[i] = rep1;
-				}
-				
-				if(rep2 == "" || rep2 == null){
-					rep2List[i] = "-";
-				}else{
-					rep2List[i] = rep2;
-				}
-				
-				if(rep3 == "" || rep3 == null){
-					rep3List[i] = "-";
-				}else{
-					rep3List[i] = rep3;
-				}
-				
-				if(rep4 == "" || rep4 == null){
-					rep4List[i] = "-";
-				}else{
-					rep4List[i] = rep4;
-				}
-				
-			} */
-			
 		}
 		
 		//주소록 정보를 Form에 넣어준다.
@@ -2538,636 +2339,10 @@
 		
 		alert("연락처 정보를 등록해 주세요.");
 		return false;
-		
-	}
-	
-	
-});
-
-//주소록 불러오기 그룹명 검색 기능처리
-function fnAddrGrpSearch(){
-	
-	var form = document.searchAddrGrpForm;
-	form.searchKeyword.value = form.searchGrpKeyword.value;
-	form.searchCondition.value = "";
-	
-	var sendData = $(document.searchAddrGrpForm).serializeArray();
-	
-	$("#addrGroupLoad").load("/web/mjon/msgcampain/selectAddrGroupListAjax.do", sendData ,function(response, status, xhr){
-		//리스트 스크롤 처리해주기
-		$(".adr_pop_list").mCustomScrollbar({
-			axis: 'y',
-			scrollbarPosition: "outside",
-			theme: "dark",
-			autoHideScrollbar: false
-		});
-	});
-	
-}
-
-//주소록 불러오기 팝업의 그룹 선택시 우측에 주소록 불러오기
-function fnSelectAddrList(type,addrGrpId,item){
-	
-	// 주소록 그룹 열림, 닫힘 폴더이미지 초기화
-	$(".adr_pop_list div p").each(function (index, item) {
-		$(item).find("img").attr("src", "/publish/images/content/close_folder2.png");
-		$(item).find("img").attr("alt", "폴더 닫힘");
-	});
-	
-	var form = document.searchAddrGrpForm;
-	form.type.value = type;
-	form.searchAddrGrpId.value = addrGrpId;
-	form.searchKeyword.value = "";
-	form.searchCondition.value = form.searchAddrCondition.value;
-	
-	//왼쪽 그룹리스트의 그룸명을 선택시 검색어를 초기화해준다.
-	form.searchAddrKeyword.value="";
-	
-	/*
-	$(item).toggleClass("open");
-	if ($(item).hasClass("open") === true) {
-		$(item).find("img").attr("src", "/publish/images/content/open_folder2.png");
-		$(item).find("img").attr("alt", "폴더 열림");
-	}
-	else {
-		$(item).find("img").attr("src", "/publish/images/content/close_folder2.png");
-		$(item).find("img").attr("alt", "폴더 닫힘");
-	}
-	*/
-	   
-	$(item).find("img").attr("src", "/publish/images/content/open_folder2.png");
-	$(item).find("img").attr("alt", "폴더 열림");
-	
-	loadAddrList();
-	
-}
-
-function fnAddrSearch(){
-	
-	var form = document.searchAddrGrpForm;
-	form.searchKeyword.value = form.searchAddrKeyword.value;
-	form.searchCondition.value = form.searchAddrCondition.value;
-	
-	loadAddrList();
-	
-}
-
-function loadAddrList(){
-
-	/*
-		serialize 를 사용할때는 processData, contentType 옵션 제가할것
-	*/
-	var data = $("#searchAddrGrpForm").serialize();
-	
-	var url = "/web/mjon/msgcampain/selectMsgAddrListAjax.do";
-	
-	$.ajax({
-        type: "POST",
-        url: url,
-        data: data,
-        dataType:'json',
-        async: true,
-        cache: false,
-        success: function (returnData, status) {
-			if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
-				
-				if(returnData.result == "success"){
-					
-					var addrList = returnData.resultAddrList;
-					var tableData = [];
-					
-					if(addrList.length == 0){
-						
-						alert("주소록 정보가 없습니다.");
-						tableAddr.setData(tableData);
-						return false;
-					}
-					
-					//받는사람 리스트를 담아둔 배열에 신규 추가 데이터를 추가해 준다.
-					for(var i=0; i < addrList.length; i++){
-						
-						tableData.push({addrGroupNm: addrList[i].addrGrpNm, addrPhone: removeDash(addrList[i].addrPhoneNo) , addrName: addrList[i].addrNm, addrRep1: addrList[i].addrInfo1, addrRep2: addrList[i].addrInfo2, addrRep3: addrList[i].addrInfo3, addrRep4: addrList[i].addrInfo4});
-						
-					}
-					
-					//우측 주소록 리스트 Tabulator에 입력해주기
-					tableAddr.setData(tableData);
-					
-				}else{
-					
-					alert(returnData.message);
-					return false;
-					
-				}
-				
-			} else if(status== 'fail'){
-				alert("주소록 불러오기에 실패하였습니다. !!");
-			}
-		},
-        error: function (e) { 
-        	alert("주소록 불러오기에 실패하였습니다."); console.log("ERROR : ", e); 
-        },
-		beforeSend : function(xmlHttpRequest) {
-        	//로딩창 show
-        	$('.loading_layer').addClass('active');				
-		},	        	        
-        complete : function(xhr, textStatus) {
-        	//로딩창 hide
-        	$('.loading_layer').removeClass('active');
-		}
-    });
-	
-}
-
-//주소록 불러오기에서 수신자 리스트 추가해 주기
-function addrToList(){
-	
-	var selectedData = tableAddr.getSelectedRows();
-	var tableData = [];
-	
-	if(selectedData == "" || selectedData == null){
-		
-		alert("주소록을 선택해 주세요.");
-		return false;
-	
-	}else{ // 선택한 Row 데이터 저장해주기
-		
-		for(var i=0; i < selectedData.length; i++){
-			
-			//좌측 받는사람 리스트를 담아둔 배열에 데이터를 추가해 준다.
-			tableData.push({phone: removeDash(selectedData[i].getData().addrPhone), 
-				name: selectedData[i].getData().addrName, 
-				rep1: selectedData[i].getData().addrRep1, 
-				rep2: selectedData[i].getData().addrRep2, 
-				rep3: selectedData[i].getData().addrRep3, 
-				rep4: selectedData[i].getData().addrRep4}
-			);
-		
-		}
-	
-		//선택한 데이터 받는사람 리스트에 추가해 주기
-		addPhoneInfo(tableData);
-		$(".closeAddr").trigger("click");
-		
-		//주소록 레이어 팝업의 Tabulator 데이터 지워주기
-		tableAddr.clearData();
-
-	}
-	
-}
-
-//주소록 팝업 닫기 기능
-function addrClose(){
-	
-	$(".closeAddr").trigger("click");
-	
-	//주소록 레이어 팝업의 Tabulator 데이터 지워주기
-	tableAddr.clearData();
-	
-}
-
-//내문자함 선택시 저장된 내용 문자 입력영역에 처리해주기
-function fnMyMsgAdd(msgId){
-	
-	var form = document.addMyMsgForm;
-	form.msgId.value = msgId;
-	form.pageType.value = "myMsg";
-	
-	var url = "/web/mjon/msgcampain/selectMsgAddInfoAjax.do";
-	var data = new FormData(document.addMyMsgForm);
-	
-	$.ajax({
-        type: "POST",
-        url: url,
-        data: data,
-        dataType:'json',
-        async: false,
-        processData: false,
-        contentType: false,
-        cache: false,
-        success: function (returnData, status) {
-			if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
-				
-				if(returnData.result == "success"){
-					
-					var msgData = returnData.resultMsgInfo;
-					var fileData = returnData.resultMsgAddPhotoInfo;
-					
-					var smsTxt = msgData.smsTxt;
-					var subject = msgData.subject;
-					var fileId = "";
-					var filePath = "";
-					var len = fileData.length;
-					
-					//기존 내용 지워주기
-					//$(".btnReset").trigger("click");
-					$('.delLi').each(function(){
-						$(this).remove();
-					});
-					
-					$('.preBoxF').each(function(){
-						$(this).remove();
-					});
-
-					$('#imgCnt').val(0);
-					
-					//기존 imgFileId, imgFilePath 배열에 있는 내용 초기화 해주기
-					imgFilePath = [];
-					imgFileId = [];
-					
-					//내문자함 텍스트 내용 입력해주기
-					$('#smsTxtArea').val(smsTxt);
-					
-					//첨부 이미지가 있는경우 이미지 처리해주기
-					if(len > 0){
-						
-						for(var i=0; i < len; i++){
-							
-							var num = i + 1;
-							var imgId = fileData[i].atchFileId;
-							var imgSn = fileData[i].fileSn;
-							var fileStreCours = fileData[i].fileStreCours;
-							var streFileNm = fileData[i].streFileNm;
-							var fileExtsn = fileData[i].fileExtsn;
-							
-							/* var imgSrc = fileStreCours + "/" + streFileNm + "." + fileExtsn; */
-							var imgSrc = '/cmm/fms/getImage2.do?atchFileId=' + imgId + '&fileSn=' + imgSn;
-							myMsgImageControl(imgSrc, "edit_n", "Template", imgId);
-							
-						}
-						
-						fnByteString(smsTxt);
-						
-					}else{
-						
-						fnByteString(smsTxt);
-						
-					}
-					
-					//내 문자함 가져오기에서 글자길이 계산을 다시한다.
-					$("#smsTxtArea").trigger("keyup");
-					
-					// 문자전송 상단으로 이동
-					var sendOfT=$('.send_top').offset().top;
-					$('html,body').stop().animate({'scrollTop':sendOfT-60},250);					
-				}else{
-					
-					alert("내문자함 내용을 불러오지 못하였습니다.");
-					return false;
-					
-				}
-				
-			} else if(status== 'fail'){
-				alert("내문자함 내용 입력에 실패하였습니다. !!");
-			}
-		},
-        error: function (e) { alert("내문자함 내용 입력에 실패하였습니다."); console.log("ERROR : ", e); }
-    });
-	
-}
-
-function emailChange(email){
-	var emailTxt =  $("input[name=emailDomain]");
-	
-	if(email.value == '1'){
-		$("input[name=emailDomain]").attr('readonly', false);
-		emailTxt.val('');
-	}else{
-		emailTxt.val(email.value);
-		$("input[name=emailDomain]").attr('readonly', true);
-	}
-	
-}
-
-function fnCandidateUpt(dataType){
-	
-	var form = document.candiForm;
-	form.dataType.value = dataType;
-	
-	if(form.candidateNm.value == ""){
-		
-		alert("후보자 이름을 입력해 주세요.");
-		return false;
-		
-	}
-	
-	if(form.regidentNo1.value == ""){
-		
-		alert("후보자 주민등록번호 앞자리를 입력해 주세요.");
-		return false;
-		
-	}else if(!Number(form.regidentNo1.value)){
-		
-		alert("후보자 주민등록번호 앞자리를 정확히 입력해 주세요.");
-		return false;
-		
-	}
-	
-	if(form.regidentNo2.value == ""){
-		
-		alert("후보자 주민등록번호 뒷자리를 입력해 주세요.");
-		return false;
-		
-	}else if(!Number(form.regidentNo2.value)){
-		
-		alert("후보자 주민등록번호 뒷자리를 정확히 입력해 주세요.");
-		return false;
-		
-	}
-	
-	if(form.candidateAddr.value == ""){
-	
-		alert("후보자 주소를 입력해 주세요.");
-		return false;
-		
-	}
-	
-	if(form.managerNm.value == ""){
-		
-		alert("담당자 이름을 입력해 주세요.");
-		return false;
-		
-	}
-	
-	if(form.phoneNo.value == ""){
-		
-		alert("담당자 휴대폰 번호를 입력해 주세요.");
-		return false;
-		
-	}else if(!checkHpNum(removeDash(form.phoneNo.value))){
-		
-		alert("정확한 휴대폰 번호를 입력해 주세요.");
-		return false;
-		
-	}
-	
-	var emailChk = form.email.value + "@" + form.emailDomain.value;
-	
-	if(emailChk == ""){
-		
-		alert("이메일을 입력해 주세요.");
-		return false;
-		
-	}else if(!checkEmail(emailChk)){
-		
-		alert("정확한 이메일을 입력해 주세요.");
-		return false;
-		
-	}
-	
-	var msg = "";
-	
-	if(dataType == 'Upt'){
-		
-		msg="후보자 정보를 수정하시겠습니까?";
-		
-	}else{
-		
-		msg="후보자를 등록 하시겠습니까?";
-		
-	}
-	
-	if(confirm(msg)){
-		
-		//XSS 취약점 제거
-		form.candidateNm.value = XSSCheck(form.candidateNm.value);
-		form.regidentNo1.value = XSSCheck(form.regidentNo1.value);
-		form.regidentNo2.value = XSSCheck(form.regidentNo2.value);
-		form.candidateAddr.value = XSSCheck(form.candidateAddr.value);
-		form.managerNm.value = XSSCheck(form.managerNm.value);
-		form.phoneNo.value = XSSCheck(form.phoneNo.value);
-		form.email.value = XSSCheck(form.email.value);
-		form.emailDomain.value = XSSCheck(form.emailDomain.value);
-		
-		var url = "/web/mjon/msgcampain/insertCandidateDataInfoAjax.do";
-		var data = new FormData(document.candiForm);
-		
-		$.ajax({
-	        type: "POST",
-	        url: url,
-	        data: data,
-	        dataType:'json',
-	        async: false,
-	        processData: false,
-	        contentType: false,
-	        cache: false,
-	        success: function (returnData, status) {
-				if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
-					
-					if(returnData.result == "loginFail"){
-						
-						alert(returnData.message);
-						return false;
-						
-						
-					}else if(returnData.result == "success"){
-						
-						alert(returnData.message);
-						location.reload();
-// 						return false;
-						
-					}else{
-						
-						alert(returnData.message);
-						return false;
-						
-					}
-					
-				} else if(status== 'fail'){
-					alert("후보자 등록에 실패하였습니다. !!");
-				}
-			},
-	        error: function (e) { alert("후보자 등록에 실패하였습니다."); console.log("ERROR : ", e); }
-	    });
-		
-	}
-	
-}
-
-function fnCandidateDel(){
-	
-	var form = document.candiForm;
-	
-	
-	if(confirm("후보자를 삭제 하시겠습니까?")){
-		
-		//XSS 취약점 제거
-		form.candidateNm.value = XSSCheck(form.candidateNm.value);
-		form.regidentNo1.value = XSSCheck(form.regidentNo1.value);
-		form.regidentNo2.value = XSSCheck(form.regidentNo2.value);
-		form.candidateAddr.value = XSSCheck(form.candidateAddr.value);
-		form.managerNm.value = XSSCheck(form.managerNm.value);
-		form.phoneNo.value = XSSCheck(form.phoneNo.value);
-		form.email.value = XSSCheck(form.email.value);
-		form.emailDomain.value = XSSCheck(form.emailDomain.value);
-		
-		var url = "/web/mjon/msgcampain/deleteCandidateDataInfoAjax.do";
-		var data = new FormData(document.candiForm);
-		
-		$.ajax({
-	        type: "POST",
-	        url: url,
-	        data: data,
-	        dataType:'json',
-	        async: false,
-	        processData: false,
-	        contentType: false,
-	        cache: false,
-	        success: function (returnData, status) {
-				if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
-					
-					if(returnData.result == "loginFail"){
-						
-						alert(returnData.message);
-						return false;
-						
-						
-					}else if(returnData.result == "success"){
-						
-						alert(returnData.message);
-						location.reload();
-// 						return false;
-						
-					}else{
-						
-						alert(returnData.message);
-						return false;
-						
-					}
-					
-				} else if(status== 'fail'){
-					alert("후보자 삭제에 실패하였습니다. !!");
-				}
-			},
-	        error: function (e) { alert("후보자 삭제에 실패하였습니다."); console.log("ERROR : ", e); }
-	    });
-		 debugger;
-	}
-}
-
-function fn_candidateLoginChk(){
-	
-	alert("후보자 등록은 로그인 후 이용 가능합니다.");
-	return false;
-	
-}
-
-function fn_mberDeptChk(){
-	
-	alert("선거문자는 개인 회원만 이용 가능합니다.");
-	return false;
-	
-}
-
-
-function goToCustom(){
-	var form = document.goToCustomForm;
-	form.submit();
-}
-//최초 문자샘플 탭 리스트 데이터 불러오기
-//fnLetterListAjax();
-
-/* 윈도우팝업 열기 */
-function infoPop(pageUrl){
-	document.popForm.pageType.value = pageUrl;
-	document.popForm.action = "/web/pop/infoPop.do";
-	document.popForm.method = "post"; 
-	window.open("about:blank", 'infoPop', 'width=790, height=1500, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=yes');
-	document.popForm.target = "infoPop";
-	document.popForm.submit();
-}
-
-$(document).on('click', '.addressregi_btn', function() {
-	var tableData = tableL.getRows();
-	var dataLen = tableL.getRows().length;
-	if(dataLen == 0){
-		alert("연락처 정보를 등록해 주세요.");
-		return false;
-	}else{
-		$('.addressregi_layer').css({'width':'680px','display':'block','left':'50%','top':'50%','transform':'translate(-50%,-50%)'});
-		setTimeout(function(){
-			$('.addressregi_layer').css({'opacity':'1'});
-		},150);
-		$('.mask').addClass('on');
-		getAddrGroupList();
 	}
 });
 
-$(document).on('click', '.addressregi_layer .tooltip-close', function() {
-	$('.addressregi_layer').attr('style','');
-	$("#addrGrpNm").val("");
-});
-
-$(document).on('change', '#addrGrpIdInfo', function() {
-	if ($("#addrGrpIdInfo option:selected").val() != "NEW") {
-		$("#addrGrpNm").val(""); //	새그룹명 Clear;
-	}
-});
-
-//주소록 그룹정보 불러오기
-function getAddrGroupList() {
- $.ajax({
-     type : "POST",
-     async : false,
-     url : "/web/mjon/addr/addrGroupListAjax.do",
-     data : {},
-     dataType:'json',
-     success : function(data) {
-		//alert(JSON.stringify(data.addrGroupList));
-
-		// Show Html
-		getAddrGroupListShow(data.addrGroupList);
-     },
-     error : function(xhr, status, error) {
-         alert(error);
-         return false;
-     }
- });	    	
-}
-
-//Show Html
-function getAddrGroupListShow(jsonList) {
-	var sHtml = "";
-	sHtml += "<option value='NEW'>그룹추가</option>";
-	sHtml += "<option value='0'>그룹미지정</option>";
-	sHtml += "<option value='bookmark'>자주보내는 번호</option>";
-	for (var j = 0; j < jsonList.length; j++) {
-		sHtml += "	<option value='" + $.trim(jsonList[j].addrGrpId) + "' />" + $.trim(jsonList[j].addrGrpNm) + "</option>";
-	}
-	    	
-	$("#addrGrpIdInfo").html(sHtml);
-}
-
-//주소록 그룹 중복체크
-function getAddrGroupDuplCheckAjax() {
-	var isReturn = true;
-	
-	$.ajax({
-		url : "<c:url value='/web/addr/getAddrGroupDuplCheckAjax.do' />", 
-		type : 'POST', 
-		data : {"addrGrpNm" : $("#addrGrpNm").val()},
-		dataType:'json',
-		async: false,			// 동기
-		success : function(data, status){
-			if(data.isSuccess == true) {
-				if(data.isDupl == true) {
-					//alert("중복된 그룹명입니다.");
-					isReturn = false;
-				}
-			} 
-			else {
-				//alert("Message : " + msg);
-			}			
-		},
-		error: function (e) {
-			//alert("주소록 중복체크에 실패했습니다.");
-		}
-	});
-	
-	return isReturn;	
-}
-
-/* 테스트발송 열기 */
+ //테스트발송 열기
 function fnTestSend(){
 	
 	if(!checkConf()){	//문자온 conf-check
@@ -3186,12 +2361,6 @@
 		alert("문자발송 서비스는 로그인 후 이용 가능합니다.");
 		return false;
 	}
-	
-	//MJ_MSG_GROUP_DATA 누락데이터 체크
-	//if (getMsgGroupDataErrorCheck() == false) {
-	//	alert("고객님께서 발송한 최근문자가 발송결과에 표시되지않아, 문자발송이 임시로 차단되었습니다.\n문자온 고객센터에 문의해주세요.");
-	//	return false;	 	
-	//}
 	
 	//문자내용에 이모지가 있는지 체크
 	var strCont = msgForm.smsTxtArea.value;
@@ -3252,28 +2421,20 @@
 			},
 	        error: function (e) { alert("시스템 오류가 발생하였습니다."); console.log("ERROR : ", e); return false;}
 	    });
-		
 	}
 
 
 	//단문 장문 그림(몇장인지) 판별하기 - 발송금액 계산
-
 	if($('#nowMsgType').text() == "그림"){
 		
 		msgType = 'P';
 		
 		if(imgFilePath.length == 1) {
-		
 			form.eachPrice.value = '<c:out value="${picturePrice}" />';
-		
 		} else if(imgFilePath.length == 2) {
-		
 			form.eachPrice.value = '<c:out value="${picture2Price}" />';
-		
 		} else if(imgFilePath.length == 3) {
-		
 			form.eachPrice.value = '<c:out value="${picture3Price}" />';
-		
 		}
 		
 		//제목 사용한 경우
@@ -3286,7 +2447,6 @@
 	}else if($('#nowMsgType').text() == "장문"){
 		
 		msgType = 'L';
-		
 		form.eachPrice.value = '<c:out value="${longPrice}" />';
 		
 		//제목 사용한 경우
@@ -3297,22 +2457,13 @@
 		}
 		
 	}else{
-		
 		msgType = 'S';
-		
 		form.eachPrice.value = '<c:out value="${shortPrice}" />';
-		
 		form.mmsSubject.value = ""; // 장문/그림 제목 초기화
 	}
 	
 	form.msgType.value = msgType;
 	
-	/* 
-	var phoneIn = $(".send_right .phone").html();
-	//팝업으로 보내기 전에 realtime class 삭제 - 스크립트 제외
-	phoneIn = phoneIn.replace(' class="realtime"',"");
-	form.msgpreview.value = phoneIn;
-	 */
 	//발신번호 세팅
 	form.callFrom.value = callFrom;
 	
@@ -3326,6 +2477,12 @@
 	form.submit();
 }
 
+//발신번호 선택
+function setCandidatePhone() {
+	advMsgInsert();
+}
+
+//선택 발신번호를 이용한 문자내용 설정
 function advMsgInsert(){
 	var callFrom = $("#callFromList option:selected").val();
 	
@@ -3370,10 +2527,6 @@
 	
 }
 
-function setCandidatePhone() {
-	advMsgInsert();
-}
-
 //이벤트 잔액 로그인 체크
 $(".btn_event_cash").off().on("click", function(){
 	var loginVO = '${LoginVO}';
@@ -3383,6 +2536,7 @@
 	}
 });	
 
+// 분활전송 수량 체크
 function checkNumber(event) {
 	var divideCnt = $('#divideCnt').val();
 	if(!(event.key >= 0 && event.key <= 9)) {
@@ -3391,13 +2545,10 @@
 	
 	var totCnt = divideCnt + "" + event.key;
 	if(Number(totCnt) > 5000){
-		
 		alert("분할전송 건수는 5,000건을 초과할 수 없습니다.");
 		$('#divideCnt').val("20");
 		return false;
-		
 	}
-  
   return true;
 }
 
@@ -3413,9 +2564,7 @@
 }
 
 $(document).on('click', '#hdnLink', function() {
-	
 	location.href="/web/mjon/msgcampain/huge/selectMsgHGDataView.do";
-	
 })
 
 </script>
@@ -3425,697 +2574,662 @@
 		<div class="text">Loading</div>
 	</div>
 </div>
-
-	<form id="sentListForm" name="sentListForm" method="post">
-		<input type="hidden" name="pageType"  value=""/>
-		<input type="hidden" name="pageIndex" value=""/>
-		<input type="hidden" name="msgSentType" value=""/>
-		<input type="hidden" name="searchSortCnd" value="" />
-		<input type="hidden" name="searchSortOrd" value="" />		
-	</form>
 	
-	<!-- 2023 10 16 재전송 : 상세내용 팝업 -->
-	<div class="tooltip-wrap" style="z-index:110;">
-		<div class="popup-com adr_layer rev_popup01" tabindex="0" data-tooltip-con="rev_popup01"
-			data-focus="rev_popup01" data-focus-prev="rev_popup01-close" style="width: 440px;">
-			<div class="popup_heading">
-				<p>문자내용</p>
-				<button type="button" class="tooltip-close" data-focus="rev_popup01-close"><img
-						src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
-			</div>
-			<div class="layer_in" id="msgSentDetailPopLoad" style="padding-bottom: 0px;">
-			</div>
-			<div class="popup_btn_wrap2" style="justify-content: center; margin-bottom: 30px;">
-				<button type="button" class="tooltip-close" data-focus="rev_popup01-close" data-focus-next="rev_popup01">닫기</button>
-			</div>
+<!-- 2023 10 16 재전송 : 상세내용 팝업 -->
+<div class="tooltip-wrap" style="z-index:110;">
+	<div class="popup-com adr_layer rev_popup01" tabindex="0" data-tooltip-con="rev_popup01"
+		data-focus="rev_popup01" data-focus-prev="rev_popup01-close" style="width: 440px;">
+		<div class="popup_heading">
+			<p>문자내용</p>
+			<button type="button" class="tooltip-close" data-focus="rev_popup01-close"><img
+					src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
+		</div>
+		<div class="layer_in" id="msgSentDetailPopLoad" style="padding-bottom: 0px;">
+		</div>
+		<div class="popup_btn_wrap2" style="justify-content: center; margin-bottom: 30px;">
+			<button type="button" class="tooltip-close" data-focus="rev_popup01-close" data-focus-next="rev_popup01">닫기</button>
 		</div>
 	</div>
-	<!--// 2023 10 16  재전송 : 상세내용 팝업 -->	
+</div>
+<!--// 2023 10 16  재전송 : 상세내용 팝업 -->	
 	
-	<!-- 2023 10 16  재전송 팝업 -->  
-	<div class="tooltip-wrap">
-		<div class="popup-com import_layer popup05" tabindex="0" data-tooltip-con="popup05" data-focus="popup05" data-focus-prev="popup05-close" style="width: 900px;">
-			<div class="popup_heading">
-				<p><span>전송내역</p>
-				<button type="button" class="tooltip-close" data-focus="popup05-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
-			</div>
-			<div class="layer_in" id="mjMsgSentListAllLoad" style="padding-bottom: 0px; min-height:428px;">
-			</div>
-			<div class="popup_btn_wrap2" style="margin-bottom: 30px;">
-				<button type="button" class="tooltip-close" data-focus="popup05-close"  data-focus-next="popup05">닫기</button>                      
-			</div>			
+<!-- 2023 10 16  재전송 팝업 -->  
+<div class="tooltip-wrap">
+	<div class="popup-com import_layer popup05" tabindex="0" data-tooltip-con="popup05" data-focus="popup05" data-focus-prev="popup05-close" style="width: 900px;">
+		<div class="popup_heading">
+			<p><span>전송내역</p>
+			<button type="button" class="tooltip-close" data-focus="popup05-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
 		</div>
+		<div class="layer_in" id="mjMsgSentListAllLoad" style="padding-bottom: 0px; min-height:428px;">
+		</div>
+		<div class="popup_btn_wrap2" style="margin-bottom: 30px;">
+			<button type="button" class="tooltip-close" data-focus="popup05-close"  data-focus-next="popup05">닫기</button>                      
+		</div>			
 	</div>
-	<!--// 2023 10 16  재전송 팝업 -->
+</div>
+<!--// 2023 10 16  재전송 팝업 -->
 	
-	<!-- 후보자등록 팝업 data-tooltip:candidate_popup01 -->
-	<div class="tooltip-wrap">
-		<div class="popup-com candidate_layer candidate_popup01" tabindex="0" data-tooltip-con="candidate_popup01" data-focus="candidate_popup01" data-focus-prev="candidate_popup01-close" style="width: 620px;">
-			<div class="popup_heading">
-				<p>후보자 등록</p>
-				<button type="button" class="tooltip-close" data-focus="candidate_popup01-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
+<!-- 후보자등록 팝업 data-tooltip:candidate_popup01 -->
+<div class="tooltip-wrap">
+	<div class="popup-com candidate_layer candidate_popup01" tabindex="0" data-tooltip-con="candidate_popup01" data-focus="candidate_popup01" data-focus-prev="candidate_popup01-close" style="width: 620px;">
+		<div class="popup_heading">
+			<p>후보자 등록</p>
+			<button type="button" class="tooltip-close" data-focus="candidate_popup01-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
+		</div>
+		
+		<form id="candiForm" name="candiForm" method="post">
+			<input type="hidden" id="dataType" name="dataType" value="Reg"/>
+		
+			<div class="layer_in">
+                <p class="adr_pop_title">선거문자는 반드시 <span class="c_002c9a">후보자 등록</span>을 하셔야만 이용 가능합니다. <br/>입력하신 내용은 세금계산서 발행을 위한 정보로만 사용됩니다.</p>
+				<div class="candidate_table">
+                    <p>후보자</p>
+                    <table>
+                        <caption>후보자 등록을 위한 성명, 주민등록번호, 주소를 입력하는 표</caption>
+                        <colgroup>
+                            <col style="width: 125px;">
+                            <col style="width: auto;">
+                        </colgroup>
+                        <tbody>
+                            <tr>
+                                <th scope="row">성명</th>
+                                <td>
+                                    <label for="candidateNm" class="label"></label>
+                                    <input type="text" id="candidateNm" name="candidateNm" value="<c:out value='${mjonCandidateVO.candidateNm}'/>" placeholder="후보자 성명 입력" onfocus="this.placeholder=''" onblur="this.placeholder='후보자 성명 입력'" class="inputLight">
+                                </td>
+                            </tr>
+                            <tr class="residentNum">
+                                <th scope="row">주민등록번호</th>
+                                <td>
+                                    <label for="regidentNo1" class="label"></label>
+                                    <input type="text" id="regidentNo1" name="regidentNo1" value="<c:out value='${mjonCandidateVO.regidentNo1}'/>" maxlength="6" placeholder="주민등록번호 앞 6자리" onfocus="this.placeholder=''" onblur="this.placeholder='주민등록번호 앞 6자리'" class="inputLight">
+                                    <span>-</span>
+                                    <label for="regidentNo2" class="label"></label>
+                                    <input type="password" id="regidentNo2" name="regidentNo2" value="<c:out value='${mjonCandidateVO.regidentNo2}'/>" maxlength="7" placeholder="주민등록번호 뒤 7자리" onfocus="this.placeholder=''" onblur="this.placeholder='주민등록번호 뒤 7자리'" class="inputLight">
+                                </td>
+                            </tr>
+                            <tr>
+                                <th scope="row">주소</th>
+                                <td>
+                                    <label for="candidateAddr" class="label"></label>
+                                    <input type="text" id="candidateAddr" name="candidateAddr" value="<c:out value='${mjonCandidateVO.candidateAddr}'/>">
+                                </td>
+                            </tr>
+                        </tbody>
+                    </table>
+                </div>
+                <div class="candidate_table" style="margin-top: 40px;">
+                    <p>담당자</p>
+                    <table>
+                        <caption>후보자 등록을 위한 성명, 주민등록번호, 주소를 입력하는 표</caption>
+                        <colgroup>
+                            <col style="width: 125px;">
+                            <col style="width: auto;">
+                        </colgroup>
+                        <tbody>
+                            <tr>
+                                <th scope="row">성명</th>
+                                <td>
+                                    <label for="managerNm" class="label"></label>
+                                    <input type="text" id="managerNm" name="managerNm" value="<c:out value='${mjonCandidateVO.managerNm}'/>" placeholder="담당자 성명 입력" onfocus="this.placeholder=''" onblur="this.placeholder='담당자 성명 입력'" class="inputLight">
+                                </td>
+                            </tr>
+                            <tr>
+                                <th scope="row">휴대폰</th>
+                                <td>
+                                    <label for="phoneNo" class="label"></label>
+                                    <input type="text" id="phoneNo" name="phoneNo" value="<c:out value='${mjonCandidateVO.phoneNo}'/>" placeholder="‘-’ 없이 숫자만 입력" onfocus="this.placeholder=''" onblur="this.placeholder='‘-’ 없이 숫자만 입력'" class="inputLight">
+                                </td>
+                            </tr>
+                            <tr class="emailWrap3">
+                                <th scope="row">이메일</th>
+                                <td>
+                                    <label for="email" class="label"></label>
+                                    <input type="text" id="email" name="email" value="<c:out value='${mjonCandidateVO.email}'/>">
+                                    <span>@</span>
+                                    <label for="emailDomain" class="label"></label>
+                                    <input type="text" id="emailDomain" name="emailDomain" value="<c:out value='${mjonCandidateVO.emailDomain}'/>">
+                                    <label for="" class="label">이메일 선택</label>
+                                    <select class="list_selType1" id="taxEmailSelect" onchange="emailChange(this)">
+                                        <c:forEach var="result" items="${emailCode}" varStatus="status">
+											<c:if test="${status.index eq 0 }">
+												<option value="1">${result.codeNm}</option>
+											</c:if>
+											<c:if test="${status.index ne 0 }">
+												<option value="${result.codeDc}">${result.codeNm}</option>
+											</c:if>
+										</c:forEach>
+                                    </select>
+                                </td>
+                            </tr>
+                        </tbody>
+                    </table>
+                </div>
+                <div class="popup_btn_wrap2">
+                	<c:choose>
+                		<c:when test="${not empty mjonCandidateVO.candidateNm}">
+		                    <button type="button" onclick="javascript:fnCandidateUpt('Upt'); return false;">수정</button>
+                		</c:when>
+                		<c:otherwise>
+                			<button type="button" onclick="javascript:fnCandidateUpt('Reg'); return false;">등록</button>
+                		</c:otherwise>
+                	</c:choose>
+                    <button type="button" class="tooltip-close" data-focus="candidate_popup01-close" data-focus-next="candidate_popup01">닫기</button>                      
+                </div>
 			</div>
 			
-			<form id="candiForm" name="candiForm" method="post">
-				<input type="hidden" id="dataType" name="dataType" value="Reg"/>
-			
-				<div class="layer_in">
-	                <p class="adr_pop_title">선거문자는 반드시 <span class="c_002c9a">후보자 등록</span>을 하셔야만 이용 가능합니다. <br/>입력하신 내용은 세금계산서 발행을 위한 정보로만 사용됩니다.</p>
-					<div class="candidate_table">
-	                    <p>후보자</p>
-	                    <table>
-	                        <caption>후보자 등록을 위한 성명, 주민등록번호, 주소를 입력하는 표</caption>
-	                        <colgroup>
-	                            <col style="width: 125px;">
-	                            <col style="width: auto;">
-	                        </colgroup>
-	                        <tbody>
-	                            <tr>
-	                                <th scope="row">성명</th>
-	                                <td>
-	                                    <label for="candidateNm" class="label"></label>
-	                                    <input type="text" id="candidateNm" name="candidateNm" value="<c:out value='${mjonCandidateVO.candidateNm}'/>" placeholder="후보자 성명 입력" onfocus="this.placeholder=''" onblur="this.placeholder='후보자 성명 입력'" class="inputLight">
-	                                </td>
-	                            </tr>
-	                            <tr class="residentNum">
-	                                <th scope="row">주민등록번호</th>
-	                                <td>
-	                                    <label for="regidentNo1" class="label"></label>
-	                                    <input type="text" id="regidentNo1" name="regidentNo1" value="<c:out value='${mjonCandidateVO.regidentNo1}'/>" maxlength="6" placeholder="주민등록번호 앞 6자리" onfocus="this.placeholder=''" onblur="this.placeholder='주민등록번호 앞 6자리'" class="inputLight">
-	                                    <span>-</span>
-	                                    <label for="regidentNo2" class="label"></label>
-	                                    <input type="password" id="regidentNo2" name="regidentNo2" value="<c:out value='${mjonCandidateVO.regidentNo2}'/>" maxlength="7" placeholder="주민등록번호 뒤 7자리" onfocus="this.placeholder=''" onblur="this.placeholder='주민등록번호 뒤 7자리'" class="inputLight">
-	                                </td>
-	                            </tr>
-	                            <tr>
-	                                <th scope="row">주소</th>
-	                                <td>
-	                                    <label for="candidateAddr" class="label"></label>
-	                                    <input type="text" id="candidateAddr" name="candidateAddr" value="<c:out value='${mjonCandidateVO.candidateAddr}'/>">
-	                                </td>
-	                            </tr>
-	                        </tbody>
-	                    </table>
-	                </div>
-	                <div class="candidate_table" style="margin-top: 40px;">
-	                    <p>담당자</p>
-	                    <table>
-	                        <caption>후보자 등록을 위한 성명, 주민등록번호, 주소를 입력하는 표</caption>
-	                        <colgroup>
-	                            <col style="width: 125px;">
-	                            <col style="width: auto;">
-	                        </colgroup>
-	                        <tbody>
-	                            <tr>
-	                                <th scope="row">성명</th>
-	                                <td>
-	                                    <label for="managerNm" class="label"></label>
-	                                    <input type="text" id="managerNm" name="managerNm" value="<c:out value='${mjonCandidateVO.managerNm}'/>" placeholder="담당자 성명 입력" onfocus="this.placeholder=''" onblur="this.placeholder='담당자 성명 입력'" class="inputLight">
-	                                </td>
-	                            </tr>
-	                            <%-- <tr>
-	                                <th scope="row">직위</th>
-	                                <td>
-	                                    <label for="office" class="label"></label>
-	                                    <input type="text" id="office" name="office" value="<c:out value='${mjonCandidateVO.office}'/>" placeholder="직위 입력" onfocus="this.placeholder=''" onblur="this.placeholder='직위 입력'" class="inputLight">
-	                                </td>
-	                            </tr> --%>
-	                            <tr>
-	                                <th scope="row">휴대폰</th>
-	                                <td>
-	                                    <label for="phoneNo" class="label"></label>
-	                                    <input type="text" id="phoneNo" name="phoneNo" value="<c:out value='${mjonCandidateVO.phoneNo}'/>" placeholder="‘-’ 없이 숫자만 입력" onfocus="this.placeholder=''" onblur="this.placeholder='‘-’ 없이 숫자만 입력'" class="inputLight">
-	                                </td>
-	                            </tr>
-	                            <tr class="emailWrap3">
-	                                <th scope="row">이메일</th>
-	                                <td>
-	                                    <label for="email" class="label"></label>
-	                                    <input type="text" id="email" name="email" value="<c:out value='${mjonCandidateVO.email}'/>">
-	                                    <span>@</span>
-	                                    <label for="emailDomain" class="label"></label>
-	                                    <input type="text" id="emailDomain" name="emailDomain" value="<c:out value='${mjonCandidateVO.emailDomain}'/>">
-	                                    <label for="" class="label">이메일 선택</label>
-	                                    <select class="list_selType1" id="taxEmailSelect" onchange="emailChange(this)">
-	                                        <c:forEach var="result" items="${emailCode}" varStatus="status">
-												<c:if test="${status.index eq 0 }">
-													<option value="1">${result.codeNm}</option>
-												</c:if>
-												<c:if test="${status.index ne 0 }">
-													<option value="${result.codeDc}">${result.codeNm}</option>
-												</c:if>
-											</c:forEach>
-	                                    </select>
-	                                </td>
-	                            </tr>
-	                        </tbody>
-	                    </table>
-	                </div>
-	                <div class="popup_btn_wrap2">
-	                	<c:choose>
-	                		<c:when test="${not empty mjonCandidateVO.candidateNm}">
-			                    <button type="button" onclick="javascript:fnCandidateUpt('Upt'); return false;">수정</button>
-			                    <%-- <button type="button" onclick="javascript:fnCandidateDel(); return false;">삭제</button> --%>
-	                		</c:when>
-	                		<c:otherwise>
-	                			<button type="button" onclick="javascript:fnCandidateUpt('Reg'); return false;">등록</button>
-	                		</c:otherwise>
-	                	</c:choose>
-	                    <button type="button" class="tooltip-close" data-focus="candidate_popup01-close" data-focus-next="candidate_popup01">닫기</button>                      
-	                </div>
-				</div>
-				
-			 	<!-- Workaround to avoid corrupted XHR2 request body in IE10 / IE11 -->
-			 	<input type="hidden" name="_dontcare">				
-			</form>
-		</div>
+		 	<!-- Workaround to avoid corrupted XHR2 request body in IE10 / IE11 -->
+		 	<input type="hidden" name="_dontcare">				
+		</form>
 	</div>
-	<!--// 후보자등록 팝업 -->
+</div>
+<!--// 후보자등록 팝업 -->
 	
-	<!-- 주소록 불러오기 -->
-	<div class="tooltip-wrap">
-		<div class="popup-com import_layer popup06" tabindex="0" data-tooltip-con="popup06" data-focus="popup06" data-focus-prev="popup06-close" style="width: 1000px">
-			<div class="popup_heading">
-				<p><span>주소록 불러오기</p>
-				<button type="button" onClick="javascript:addrClose(); return false;">
-				<img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
+<!-- 주소록 불러오기 -->
+<div class="tooltip-wrap">
+	<div class="popup-com import_layer popup06" tabindex="0" data-tooltip-con="popup06" data-focus="popup06" data-focus-prev="popup06-close" style="width: 1000px">
+		<div class="popup_heading">
+			<p><span>주소록 불러오기</p>
+			<button type="button" onClick="javascript:addrClose(); return false;">
+			<img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
+		</div>
+		<div class="layer_in">
+			<div class="titBox titBox_pad">
+				<p>- 주소록 수정 및 변경은 <span>[주소록 관리]</span>에서만 가능합니다.</p>
+				<button type="button" class="adr_admin" onClick="location.href='/web/mjon/addr/selectAddrList.do'">주소록 관리</button>
 			</div>
-			<div class="layer_in">
-				<div class="titBox titBox_pad">
-					<p>- 주소록 수정 및 변경은 <span>[주소록 관리]</span>에서만 가능합니다.</p>
-					<button type="button" class="adr_admin" onClick="location.href='/web/mjon/addr/selectAddrList.do'">주소록 관리</button>
-				</div>
-				<div class="adr_wrap">
-					<form id="searchAddrGrpForm" name="searchAddrGrpForm" method="post" style="display: flex; justify-content: space-between;">
-						<input type="hidden" id="searchAddrGrpId" name="searchAddrGrpId" value=""/>
-						<input type="hidden" id="type" name="type" value="all"/>
-						<input type="hidden" id="searchKeyword" name="searchKeyword" value=""/>
-						<input type="hidden" name="searchCondition" id="searchCondition" value="0" />
-						<div class="adr_pop_left">
-							<div class="adr_left_search">
-								<label for="searchKeyword" class="label">그룹명 검색</label>
-								<input type="text" name="searchGrpKeyword" id="searchGrpKeyword"  placeholder="그룹명 검색" onfocus="this.placeholder=''" onblur="this.placeholder='그룹명 검색'" class="inputLight">
-								<button type="button" onClick="javascrit:fnAddrGrpSearch(); return false;"><img src="/publish/images/popup/search.png" alt="검색"></button>
-							</div>
-							<div class="adr_pop_box">
-								<div id="addrGroupLoad">
-								</div>
-							</div>
-							<!-- <div class="popup_btn">
-								<button type="button" class="btnType" onClick="javascript:fnSelectAddrGrpList(); return false;">선택 그룹 추가</button>
-							</div> -->
+			<div class="adr_wrap">
+				<form id="searchAddrGrpForm" name="searchAddrGrpForm" method="post" style="display: flex; justify-content: space-between;">
+					<input type="hidden" id="searchAddrGrpId" name="searchAddrGrpId" value=""/>
+					<input type="hidden" id="type" name="type" value="all"/>
+					<input type="hidden" id="searchKeyword" name="searchKeyword" value=""/>
+					<input type="hidden" name="searchCondition" id="searchCondition" value="0" />
+					<div class="adr_pop_left">
+						<div class="adr_left_search">
+							<label for="searchKeyword" class="label">그룹명 검색</label>
+							<input type="text" name="searchGrpKeyword" id="searchGrpKeyword"  placeholder="그룹명 검색" onfocus="this.placeholder=''" onblur="this.placeholder='그룹명 검색'" class="inputLight">
+							<button type="button" onClick="javascrit:fnAddrGrpSearch(); return false;"><img src="/publish/images/popup/search.png" alt="검색"></button>
 						</div>
-						<div class="adr_pop_right">
-							<div class="clearfix">
-								<div class="btnWrap_last">
-									<label for="searchAddrCondition" class="label">카테고리 선택</label>
-									<select id="searchAddrCondition" name="searchAddrCondition" class="selType2">
-										<option value='0'>전체</option>
-										<option value='1'>그룹명</option>
-										<option value='2'>이름</option>
-										<option value='3'>핸드폰번호</option>
-									</select>
-									<label for="searchAddrKeyword" class="label">검색어 입력</label>
-									<input type="text" id="searchAddrKeyword" name="searchAddrKeyword" placeholder="검색어를 입력하세요"  onfocus="this.placeholder=''" onblur="this.placeholder='검색어를 입력하세요'" >
-									<button type="button" class="btnType btnType17"  onClick="javascrit:fnAddrSearch(); return false;">검색</button>
-								</div>
-								<!-- table -->
-								<div class="adr_excel adr_pop_list2 callAddr_box">
-								</div>
-								<!--// table -->
+						<div class="adr_pop_box">
+							<div id="addrGroupLoad">
 							</div>
-							<div class="popup_btn_wrap2">
-								<button type="button" onClick="javascript:addrToList(); return false;">추가</button>
-								<button type="button" onClick="javascript:addrClose(); return false;">닫기</button>
-							</div>
-							<%-- 주소록 레이어 팝업 닫기 실행 코드 --%>
-							<input type="hidden" name="btnAddrClose" id="btnAddrClose" class="tooltip-close closeAddr" data-focus="popup06-close" />     
 						</div>
-					</form>
+						<!-- <div class="popup_btn">
+							<button type="button" class="btnType" onClick="javascript:fnSelectAddrGrpList(); return false;">선택 그룹 추가</button>
+						</div> -->
+					</div>
+					<div class="adr_pop_right">
+						<div class="clearfix">
+							<div class="btnWrap_last">
+								<label for="searchAddrCondition" class="label">카테고리 선택</label>
+								<select id="searchAddrCondition" name="searchAddrCondition" class="selType2">
+									<option value='0'>전체</option>
+									<option value='1'>그룹명</option>
+									<option value='2'>이름</option>
+									<option value='3'>핸드폰번호</option>
+								</select>
+								<label for="searchAddrKeyword" class="label">검색어 입력</label>
+								<input type="text" id="searchAddrKeyword" name="searchAddrKeyword" placeholder="검색어를 입력하세요"  onfocus="this.placeholder=''" onblur="this.placeholder='검색어를 입력하세요'" >
+								<button type="button" class="btnType btnType17"  onClick="javascrit:fnAddrSearch(); return false;">검색</button>
+							</div>
+							<!-- table -->
+							<div class="adr_excel adr_pop_list2 callAddr_box">
+							</div>
+							<!--// table -->
+						</div>
+						<div class="popup_btn_wrap2">
+							<button type="button" onClick="javascript:addrToList(); return false;">추가</button>
+							<button type="button" onClick="javascript:addrClose(); return false;">닫기</button>
+						</div>
+						<%-- 주소록 레이어 팝업 닫기 실행 코드 --%>
+						<input type="hidden" name="btnAddrClose" id="btnAddrClose" class="tooltip-close closeAddr" data-focus="popup06-close" />     
+					</div>
+				</form>
+			</div>
+		</div>
+	</div>
+</div>
+<!--// 주소록 불러오기 -->
+	
+<!-- 엑셀 불러오기 -->
+<form id="excelForm" name="excelForm" method="post">
+	<div class="tooltip-wrap">
+		<div class="popup-com adr_layer popup02" tabindex="0" data-tooltip-con="popup02" data-focus="popup02" data-focus-prev="popup02-close" style="width: 1000px;">
+			<%@include file="/WEB-INF/jsp/web/msgcampain/include/msgDataIncludeExcel.jsp" %>
+		</div>
+	</div>
+</form>
+<!--// 엑셀 불러오기 -->
+	
+<!-- 전송내역 팝업 -->
+<div class="tooltip-wrap">
+	<div class="popup-com history_layer popup03" tabindex="0" data-tooltip-con="popup03" data-focus="popup03" data-focus-prev="popup03-close">
+		<div class="popup_heading">
+			<p><span>전송내역</p>
+			<button type="button" class="tooltip-close" data-focus="popup03-close" id="btnLatestAddPhoneClose"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
+		</div>
+		<div class="layer_in">
+			<!-- tab button -->
+			<ul class="tabType6"> 
+				<li class="tab active"><button type="button" onclick="TabType(this,'1');">최근 전송내역</button></li>
+				<li class="tab"><button type="button" onclick="TabType(this,'2');">자주보내는 번호</button></li>
+			</ul><!--// tab button -->
+			<!-- 최근 전송내역 -->
+			<div class="history_cont hascont current">
+				<div class="histroy_trans latestMsgArea" id="latestMsgArea">
+					<ul id="latestMsgUl">
+						<c:choose>
+							<c:when test="${not empty resultLatestMsgList}">
+								<c:forEach var="latestMsgList" items="${resultLatestMsgList}" varStatus="status">
+									<li id="latestLi">
+										<input type="checkbox" id="addrChk_${status.count}" name="latAddrChk" value="<c:out value='${latestMsgList.callTo}'/>">
+										<label for="addrChk_${status.count}" class="label">최근 전송내역</label>
+										<p><c:out value="${latestMsgList.callTo}"/></p>
+										<button type="button" id="latestAddrDel"><img src="/publish/images/popup/close3.png"  alt="전화번호 삭제"></button>
+									</li>
+								</c:forEach>
+							</c:when>
+							<c:otherwise>
+								<li>
+									<p>최근 발송 내역이 없습니다.</p>
+								</li>
+							</c:otherwise>
+						</c:choose>
+					</ul>
+				</div>
+				<div class="popup_btn_wrap2 hisroy_btn" style="width: 230px;">
+					<button type="button" id="latestAddPhoneAll">전체추가</button>
+					<button type="button" id="latestAddPhone">선택추가</button>
+					<button type="button" id="latestCancelPhone">선택취소</button>                      
 				</div>
 			</div>
+			<!--// 최근 전송내역 -->
+			<!-- 자주보내는 번호 -->
+			<div class="history_cont hascont">
+				<div class="histroy_trans" id="bookMarkMsgArea">
+					<ul id="bookMsgUl">
+						<c:choose>
+							<c:when test="${not empty resultBookMarkMsgList}">
+								<c:forEach var="bookMarkMsgList" items="${resultBookMarkMsgList}" varStatus="status">
+									<li id="bookMarkLi">
+										<input type="checkbox" id="bokAddrChk_${status.count}" name="bookAddrChk" value="<c:out value='${bookMarkMsgList.addrPhoneNo}'/>">
+										<label for="addrChk_${status.count}" class="label">최근 전송내역</label>
+										<p><c:out value="${bookMarkMsgList.addrPhoneNo}"/></p>
+										<button type="button" id="bookMarkAddrDel"><img src="/publish/images/popup/close3.png"  alt="전화번호 삭제"></button>
+									</li>
+								</c:forEach>
+							</c:when>
+							<c:otherwise>
+								<li>
+									<p>등록된 자주 보내는 번호 내역이 없습니다.</p>
+								</li>
+							</c:otherwise>
+						</c:choose>
+					</ul> 
+				</div>
+				<div class="popup_btn_wrap2 hisroy_btn" style="width: 230px;">
+					<button type="button" id="bookMarkAddPhoneAll">전체추가</button>
+					<button type="button" id="bookMarkAddPhone">선택추가</button>
+					<button type="button" id="bookMarkCancelPhone">선택취소</button>                      
+				</div>
+			</div>
+			<!--// 자주보내는 번호  -->         
 		</div>
 	</div>
-	<!--// 주소록 불러오기 -->
+</div>
+<!--// 전송내역 팝업 -->
 	
-	<!-- 엑셀 불러오기 -->
-	<form id="excelForm" name="excelForm" method="post">
-		<div class="tooltip-wrap">
-			<div class="popup-com adr_layer popup02" tabindex="0" data-tooltip-con="popup02" data-focus="popup02" data-focus-prev="popup02-close" style="width: 1000px;">
-				<%@include file="/WEB-INF/jsp/web/msgcampain/include/msgDataIncludeExcel.jsp" %>
-			</div>
+<!-- 주소록에 등록 data-tooltip:duplication_layer -->
+<div class="tooltip-wrap">
+	<div class="popup-com addressregi_layer" tabindex="0" data-tooltip-con="addressregi_layer" data-focus="addressregi_layer" data-focus-prev="addressregi_layer-close" style="width: 680px;">
+		<div class="popup_heading">
+			<p>주소록에 등록</p>
+			<button type="button" class="tooltip-close" data-focus="addressregi_layer-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
 		</div>
-	</form>
-	<!--// 엑셀 불러오기 -->
-	
-	<!-- 전송내역 팝업 -->
-	<div class="tooltip-wrap">
-		<div class="popup-com history_layer popup03" tabindex="0" data-tooltip-con="popup03" data-focus="popup03" data-focus-prev="popup03-close">
-			<div class="popup_heading">
-				<p><span>전송내역</p>
-				<button type="button" class="tooltip-close" data-focus="popup03-close" id="btnLatestAddPhoneClose"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
-			</div>
-			<div class="layer_in">
-				<!-- tab button -->
-				<ul class="tabType6"> 
-					<li class="tab active"><button type="button" onclick="TabType(this,'1');">최근 전송내역</button></li>
-					<li class="tab"><button type="button" onclick="TabType(this,'2');">자주보내는 번호</button></li>
-				</ul><!--// tab button -->
-				<!-- 최근 전송내역 -->
-				<div class="history_cont hascont current">
-					<div class="histroy_trans latestMsgArea" id="latestMsgArea">
-						<ul id="latestMsgUl">
-							<c:choose>
-								<c:when test="${not empty resultLatestMsgList}">
-									<c:forEach var="latestMsgList" items="${resultLatestMsgList}" varStatus="status">
-										<li id="latestLi">
-											<input type="checkbox" id="addrChk_${status.count}" name="latAddrChk" value="<c:out value='${latestMsgList.callTo}'/>">
-											<label for="addrChk_${status.count}" class="label">최근 전송내역</label>
-											<p><c:out value="${latestMsgList.callTo}"/></p>
-											<button type="button" id="latestAddrDel"><img src="/publish/images/popup/close3.png"  alt="전화번호 삭제"></button>
-										</li>
-									</c:forEach>
-								</c:when>
-								<c:otherwise>
-									<li>
-										<p>최근 발송 내역이 없습니다.</p>
-									</li>
-								</c:otherwise>
-							</c:choose>
-						</ul>
-					</div>
-					<div class="popup_btn_wrap2 hisroy_btn" style="width: 230px;">
-						<button type="button" id="latestAddPhoneAll">전체추가</button>
-						<button type="button" id="latestAddPhone">선택추가</button>
-						<button type="button" id="latestCancelPhone">선택취소</button>                      
-					</div>
-				</div><!--// 최근 전송내역 -->
-				<!-- 자주보내는 번호 -->
-				<div class="history_cont hascont">
-					<div class="histroy_trans" id="bookMarkMsgArea">
-						<ul id="bookMsgUl">
-							<c:choose>
-								<c:when test="${not empty resultBookMarkMsgList}">
-									<c:forEach var="bookMarkMsgList" items="${resultBookMarkMsgList}" varStatus="status">
-										<li id="bookMarkLi">
-											<input type="checkbox" id="bokAddrChk_${status.count}" name="bookAddrChk" value="<c:out value='${bookMarkMsgList.addrPhoneNo}'/>">
-											<label for="addrChk_${status.count}" class="label">최근 전송내역</label>
-											<p><c:out value="${bookMarkMsgList.addrPhoneNo}"/></p>
-											<button type="button" id="bookMarkAddrDel"><img src="/publish/images/popup/close3.png"  alt="전화번호 삭제"></button>
-										</li>
-									</c:forEach>
-								</c:when>
-								<c:otherwise>
-									<li>
-										<p>등록된 자주 보내는 번호 내역이 없습니다.</p>
-									</li>
-								</c:otherwise>
-							</c:choose>
-						</ul> 
-					</div>
-					<div class="popup_btn_wrap2 hisroy_btn" style="width: 230px;">
-						<button type="button" id="bookMarkAddPhoneAll">전체추가</button>
-						<button type="button" id="bookMarkAddPhone">선택추가</button>
-						<button type="button" id="bookMarkCancelPhone">선택취소</button>                      
-					</div>
-				</div><!--// 자주보내는 번호  -->         
+		<div class="layer_in" style="padding: 30px 20px;">
+			<table class="layer_tType1">
+				<caption>주소록 그룹선택 표</caption>
+					<colgroup>
+						<col style="width: 95px">
+						<col style="width: auto">
+					</colgroup>
+				<tbody>
+					<tr>
+						<th>그룹 선택</th>
+						<td>
+							<label for="" class="label">그룹 선택</label>
+							<select id="addrGrpIdInfo" name="addrGrpIdInfo">
+							</select>
+							<label for="" class="label">그룹명 입력</label>
+							<input type="text" id="addrGrpNm" name="addrGrpNm" placeholder="새 그룹명을 입력해주세요." onfocus="this.placeholder=''" onblur="this.placeholder='새 그룹명을 입력해주세요.'"class="inputLight" style="width: 300px;">
+<!-- 							<input type="file" id="excelFile" accept=".xls, .xlsx, .txt" onchange="excelExport(event); return false;" style="display:none"/> -->
+						</td>
+					</tr>
+				</tbody>
+			</table>
+			<div class="popup_btn_wrap2">
+				<button type="button" class="registAddr">등록</button>
+				<button type="button" class="tooltip-close" data-focus="addressregi_layer-close" data-focus-next="addressregi_layer">닫기</button>
 			</div>
 		</div>
 	</div>
-	<!--// 전송내역 팝업 -->
+</div>
+<!--// 주소록에 등록 팝업 -->
 	
-	<!-- 주소록에 등록 data-tooltip:duplication_layer -->
-	<div class="tooltip-wrap">
-		<div class="popup-com addressregi_layer" tabindex="0" data-tooltip-con="addressregi_layer" data-focus="addressregi_layer" data-focus-prev="addressregi_layer-close" style="width: 680px;">
-			<div class="popup_heading">
-				<p>주소록에 등록</p>
-				<button type="button" class="tooltip-close" data-focus="addressregi_layer-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
-			</div>
-			<div class="layer_in" style="padding: 30px 20px;">
-				<table class="layer_tType1">
-					<caption>주소록 그룹선택 표</caption>
-						<colgroup>
-							<col style="width: 95px">
-							<col style="width: auto">
-						</colgroup>
+<!--선거문자 이용안내 팝업  -->
+<div class="tooltip-wrap">
+	<div class="popup-com ad_layer candidate_popup03" tabindex="0" data-tooltip-con="candidate_popup03" data-focus="candidate_popup03" data-focus-prev="candidate_popup03-close" style="width: 795px">
+		<div class="popup_heading">
+			<p>선거문자 안내</p>
+			<button type="button" class="tooltip-close" data-focus="candidate_popup03-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
+		</div>
+		<div class="layer_in">
+			<img src="/publish/images/content/candidatePop_banner.png" alt="선거문자 이용안내 배너" class="candidate_banner">
+			<ul class="info_list">
+	    		<li>- 90byte 초과 시, 자동으로 장문으로 전환됩니다.  장문 문자는 최대 2,000byte까지만 작성할 수 있습니다.</li>
+	    		<li>- 그림문자 1건당 최대 3장까지 이미지 첨부 가능  [권장 사이즈 : <strong>640 x 960</strong>픽셀 / 최대용량 : <strong>10MB</strong> 이내]</li>
+	    		<li>- 선거문자는 반드시 발송규정을 사전 확인 후 발송해 주시기 바랍니다.</li>
+	    	</ul>
+			<!-- 이용방법/혜택 -->
+			<div class="cdpop_cont current" id="listTab2_1">
+				<div>
+					<p class="cdpop_title">
+						<i class="cdpop_title_icon1"></i>선거문자 이용방법
+						<span class="customReq">
+							<button type="button" onclick="goToCustom();"><i></i>선거문자 맞춤제작</button>
+						</span>
+					</p>
+					<ul class="cdpop_info">
+						<li>
+							<i class="info_step1"></i>
+							<div>
+								<p>회원가입</p>
+							</div>
+						</li>
+						<li>
+							<i class="info_step2"></i>
+							<div>
+								<p>후보자등록</p>
+							</div>
+						</li>
+						<li>
+							<i class="info_step3"></i>
+							<div>
+								<p>전용계좌</p>
+							</div>
+						</li>
+						<li>
+							<i class="info_step4"></i>
+							<div>
+								<p>발신번호 인증</p>
+							</div>
+						</li>
+						<li>
+							<i class="info_step5"></i>
+							<div>
+								<p>문자전송</p>
+							</div>
+						</li>
+						<li>
+							<i class="info_step6"></i>
+							<div>
+								<p>세금계산서</p>
+							</div>
+						</li>
+					</ul>
+				</div>
+				<div>
+					<p class="cdpop_title"><i class="cdpop_title_icon2"></i>문자온 선거문자만의 장점 및 혜택</p>
+					<ul class="cdpop_benefit">
+						<li>
+							<div>
+								<i class="benefit1"></i>
+								<p>한 번에 대량으로 보내야 한다면?<span>10만건까지 동시 전송 가능</span></p>
+							</div>
+							<p>문자온의 대량전송(엑셀·TXT) 모듈을 통해
+								10만건의 대량문자도 쉽고 빠르게 전송 가능합니다.</p>
+						</li>
+						<li>
+							<div>
+								<i class="benefit2"></i>
+								<p>수신거부 번호가 필요하세요?<span>080 수신거부 번호 무료제공</span></p>
+							</div>
+							<p>선거문자 발송규정 준수를 위해
+								080 수신거부 번호를 무료로 제공해 드립니다.</p>
+						</li>
+						<li>
+							<div>
+								<i class="benefit3"></i>
+								<p>주소록 등록이 번거로우신가요?<span>주소록 등록 무료대행</span></p>
+							</div>
+							<p>주소록 등록파일(엑셀·TXT)을 문자온에 제공해
+								주시면 무료로 빠르고 신속하게 등록해 드립니다.</p>
+						</li>
+						<li>
+							<div>
+								<i class="benefit4"></i>
+								<p>홍보효과를 높이고 싶다면?<span>후보자만의 그림문자 맞춤제작</span></p>
+							</div>
+							<p>선거공약, 인사말, 후보자 사진 등을 넣어 그림문자를
+								맞춤 제작하여 홍보효과를 극대화할 수 있습니다.</p>
+						</li>
+						<li>
+							<div>
+								<i class="benefit5"></i>
+								<p>오류·실패건의 문자를 보상받고 싶다면?<span>오류·실패건 문자 100% 환불</span></p>
+							</div>
+							<p>번호오류, 수신거부, 수신실패 등으로 인해 문자전송이
+								실패한 경우 100% 환불(자동충전)해 드립니다.</p>
+						</li>
+						<li>
+							<div>
+								<i class="benefit6 "></i>
+								<p>전송결과가 궁금하다면?<span>실시간 전송결과 확인 가능</span></p>
+							</div>
+							<p>전송결과 및 실패사유를 실시간으로 제공해드립니다.</p>
+						</li>
+						<li>
+							<div>
+								<i class="benefit7"></i>
+								<p>20건씩 나눠서 보내야한다면?<span>20건씩 분할 예약 전송 가능</span></p>
+							</div>
+							<p>누구나 쉽고 편리하게 20건씩 나눠서 분할 전송이 가능합니다.</p>
+						</li>
+						<li>
+							<div>
+								<i class="benefit8"></i>
+								<p>필요한 서류가 있다면?<span>문자온에서 간편하게 신청 가능</span></p>
+							</div>
+							<p>문자온에서 발송내역서 출력이 가능하며,
+								세금계산서는 메일로 자동으로 발행됩니다.</p>
+						</li>
+					</ul>
+				</div>
+			</div><!--// 이용방법/혜택 -->
+		</div>
+		<div class="popup_btn_wrap2" style="margin: 0 auto 30px auto;">
+			<button type="button" class="tooltip-close" data-focus="candidate_popup03-close"  data-focus-next="candidate_popup03">닫기</button>                      
+		</div>
+	</div>
+</div>
+<!--// 선거문자 이용안내 팝업 -->
+	
+<!-- 이벤트 잔여 캐시 정보 표시 팝업 -->
+<div class="tooltip-wrap">
+	<div class="popup-com event_cash_popup popup07" tabindex="0" data-tooltip-con="popup07" data-focus="popup07" data-focus-prev="popup07-close">
+		<div class="popup_heading">
+			<p>이벤트 잔액</p>
+			<button type="button" class="tooltip-close" data-focus="popup07-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
+		</div>
+		<div class="layer_in">
+			<div class="table_wrap">
+				<div class="table_top">
+					<p class="popup_title_18">첫 결제 이벤트 잔액(캐시)</p>
+					<p><span class="c_e40000 fwBold"><fmt:formatNumber value="${eventRemainCash}" pattern="#,###.#"/></span>원</p>
+				</div>
+				<table class="popup_table_type2">
+					<colgroup>
+						<col style="width: 25%;">
+						<col style="width: auto;">
+					</colgroup>
 					<tbody>
 						<tr>
-							<th>그룹 선택</th>
-							<td>
-								<label for="" class="label">그룹 선택</label>
-								<select id="addrGrpIdInfo" name="addrGrpIdInfo">
-								</select>
-								<label for="" class="label">그룹명 입력</label>
-								<input type="text" id="addrGrpNm" name="addrGrpNm" placeholder="새 그룹명을 입력해주세요." onfocus="this.placeholder=''" onblur="this.placeholder='새 그룹명을 입력해주세요.'"class="inputLight" style="width: 300px;">
-								<input type="file" id="excelFile" accept=".xls, .xlsx, .txt" onchange="excelExport(event); return false;" style="display:none"/>
-							</td>
+							<th>단문(<fmt:formatNumber value="${eventMberInfo.eventShortPrice}" pattern="#,###.#"/>)</th>
+							<td><span class="c_002c9a fwBold"><fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventShortPrice) - ((eventRemainCash / eventMberInfo.eventShortPrice) % 1) }" pattern="#,###"/></span>건</td>
+						</tr>
+						<tr>
+							<th>장문(<fmt:formatNumber value="${eventMberInfo.eventLongPrice}" pattern="#,###.#"/>)</th>
+							<td><span class="c_002c9a fwBold"><fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventLongPrice) - ((eventRemainCash / eventMberInfo.eventLongPrice) % 1)}" pattern="#,###"/></span>건</td>
+						</tr>
+						<tr>
+							<th>그림 1장(<fmt:formatNumber value="${eventMberInfo.eventPicturePrice}" pattern="#,###.#"/>)</th>
+							<td><span class="c_002c9a fwBold"><fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventPicturePrice) - ((eventRemainCash / eventMberInfo.eventPicturePrice) % 1)}" pattern="#,###"/></span>건</td>
+						</tr>
+						<tr>
+							<th>그림 2장(<fmt:formatNumber value="${eventMberInfo.eventPicture2Price}" pattern="#,###.#"/>)</th>
+							<td><span class="c_002c9a fwBold"><fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventPicture2Price) - ((eventRemainCash / eventMberInfo.eventPicture2Price) % 1)}" pattern="#,###"/></span>건</td>
+						</tr>
+						<tr>
+							<th>그림 3장(<fmt:formatNumber value="${eventMberInfo.eventPicture3Price}" pattern="#,###.#"/>)</th>
+							<td><span class="c_002c9a fwBold"><fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventPicture3Price) - ((eventRemainCash / eventMberInfo.eventPicture3Price) % 1)}" pattern="#,###"/></span>건</td>
 						</tr>
 					</tbody>
 				</table>
-				<div class="popup_btn_wrap2">
-					<button type="button" class="registAddr">등록</button>
-					<button type="button" class="tooltip-close" data-focus="addressregi_layer-close" data-focus-next="addressregi_layer">닫기</button>
-				</div>
+			</div>
+			<div class="popup_btn_wrap2">
+				<button type="button" class="tooltip-close" data-focus="popup07-close"  data-focus-next="popup07">닫기</button>
 			</div>
 		</div>
 	</div>
-	<!--// 주소록에 등록 팝업 -->
+</div>
 	
-	<!--선거문자 이용안내 팝업  -->
-	<div class="tooltip-wrap">
-		<div class="popup-com ad_layer candidate_popup03" tabindex="0" data-tooltip-con="candidate_popup03" data-focus="candidate_popup03" data-focus-prev="candidate_popup03-close" style="width: 795px">
-			<div class="popup_heading">
-				<p>선거문자 안내</p>
-				<button type="button" class="tooltip-close" data-focus="candidate_popup03-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
-			</div>
-			<div class="layer_in">
-				<img src="/publish/images/content/candidatePop_banner.png" alt="선거문자 이용안내 배너" class="candidate_banner">
-				<ul class="info_list">
-		    		<li>- 90byte 초과 시, 자동으로 장문으로 전환됩니다.  장문 문자는 최대 2,000byte까지만 작성할 수 있습니다.</li>
-		    		<li>- 그림문자 1건당 최대 3장까지 이미지 첨부 가능  [권장 사이즈 : <strong>640 x 960</strong>픽셀 / 최대용량 : <strong>10MB</strong> 이내]</li>
-		    		<li>- 선거문자는 반드시 발송규정을 사전 확인 후 발송해 주시기 바랍니다.</li>
-		    	</ul>
-				<!-- 이용방법/혜택 -->
-				<div class="cdpop_cont current" id="listTab2_1">
-					<div>
-						<p class="cdpop_title">
-							<i class="cdpop_title_icon1"></i>선거문자 이용방법
-							<span class="customReq">
-								<button type="button" onclick="goToCustom();"><i></i>선거문자 맞춤제작</button>
-							</span>
-						</p>
-						<ul class="cdpop_info">
-							<li>
-								<i class="info_step1"></i>
-								<div>
-									<p>회원가입</p>
-								</div>
-							</li>
-							<li>
-								<i class="info_step2"></i>
-								<div>
-									<p>후보자등록</p>
-								</div>
-							</li>
-							<li>
-								<i class="info_step3"></i>
-								<div>
-									<p>전용계좌</p>
-								</div>
-							</li>
-							<li>
-								<i class="info_step4"></i>
-								<div>
-									<p>발신번호 인증</p>
-								</div>
-							</li>
-							<li>
-								<i class="info_step5"></i>
-								<div>
-									<p>문자전송</p>
-								</div>
-							</li>
-							<li>
-								<i class="info_step6"></i>
-								<div>
-									<p>세금계산서</p>
-								</div>
-							</li>
-						</ul>
-					</div>
-					<div>
-						<p class="cdpop_title"><i class="cdpop_title_icon2"></i>문자온 선거문자만의 장점 및 혜택</p>
-						<ul class="cdpop_benefit">
-							<li>
-								<div>
-									<i class="benefit1"></i>
-									<p>한 번에 대량으로 보내야 한다면?<span>10만건까지 동시 전송 가능</span></p>
-								</div>
-								<p>문자온의 대량전송(엑셀·TXT) 모듈을 통해
-									10만건의 대량문자도 쉽고 빠르게 전송 가능합니다.</p>
-							</li>
-							<li>
-								<div>
-									<i class="benefit2"></i>
-									<p>수신거부 번호가 필요하세요?<span>080 수신거부 번호 무료제공</span></p>
-								</div>
-								<p>선거문자 발송규정 준수를 위해
-									080 수신거부 번호를 무료로 제공해 드립니다.</p>
-							</li>
-							<li>
-								<div>
-									<i class="benefit3"></i>
-									<p>주소록 등록이 번거로우신가요?<span>주소록 등록 무료대행</span></p>
-								</div>
-								<p>주소록 등록파일(엑셀·TXT)을 문자온에 제공해
-									주시면 무료로 빠르고 신속하게 등록해 드립니다.</p>
-							</li>
-							<li>
-								<div>
-									<i class="benefit4"></i>
-									<p>홍보효과를 높이고 싶다면?<span>후보자만의 그림문자 맞춤제작</span></p>
-								</div>
-								<p>선거공약, 인사말, 후보자 사진 등을 넣어 그림문자를
-									맞춤 제작하여 홍보효과를 극대화할 수 있습니다.</p>
-							</li>
-							<li>
-								<div>
-									<i class="benefit5"></i>
-									<p>오류·실패건의 문자를 보상받고 싶다면?<span>오류·실패건 문자 100% 환불</span></p>
-								</div>
-								<p>번호오류, 수신거부, 수신실패 등으로 인해 문자전송이
-									실패한 경우 100% 환불(자동충전)해 드립니다.</p>
-							</li>
-							<li>
-								<div>
-									<i class="benefit6 "></i>
-									<p>전송결과가 궁금하다면?<span>실시간 전송결과 확인 가능</span></p>
-								</div>
-								<p>전송결과 및 실패사유를 실시간으로 제공해드립니다.</p>
-							</li>
-							<li>
-								<div>
-									<i class="benefit7"></i>
-									<p>20건씩 나눠서 보내야한다면?<span>20건씩 분할 예약 전송 가능</span></p>
-								</div>
-								<p>누구나 쉽고 편리하게 20건씩 나눠서 분할 전송이 가능합니다.</p>
-							</li>
-							<li>
-								<div>
-									<i class="benefit8"></i>
-									<p>필요한 서류가 있다면?<span>문자온에서 간편하게 신청 가능</span></p>
-								</div>
-								<p>문자온에서 발송내역서 출력이 가능하며,
-									세금계산서는 메일로 자동으로 발행됩니다.</p>
-							</li>
-						</ul>
-					</div>
-				</div><!--// 이용방법/혜택 -->
-			</div>
-			<div class="popup_btn_wrap2" style="margin: 0 auto 30px auto;">
-				<button type="button" class="tooltip-close" data-focus="candidate_popup03-close"  data-focus-next="candidate_popup03">닫기</button>                      
-			</div>
-		</div>
-	</div>
-	<!--// 선거문자 이용안내 팝업 -->
-	
-	<!-- 이벤트 잔여 캐시 정보 표시 팝업 -->
-	<div class="tooltip-wrap">
-		<div class="popup-com event_cash_popup popup07" tabindex="0" data-tooltip-con="popup07" data-focus="popup07" data-focus-prev="popup07-close">
-			<div class="popup_heading">
-				<p>이벤트 잔액</p>
-				<button type="button" class="tooltip-close" data-focus="popup07-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
-			</div>
-			<div class="layer_in">
-				<div class="table_wrap">
-					<div class="table_top">
-						<p class="popup_title_18">첫 결제 이벤트 잔액(캐시)</p>
-						<p><span class="c_e40000 fwBold"><fmt:formatNumber value="${eventRemainCash}" pattern="#,###.#"/></span>원</p>
-					</div>
-					<table class="popup_table_type2">
-						<colgroup>
-							<col style="width: 25%;">
-							<col style="width: auto;">
-						</colgroup>
-						<tbody>
-							<tr>
-								<th>단문(<fmt:formatNumber value="${eventMberInfo.eventShortPrice}" pattern="#,###.#"/>)</th>
-								<td><span class="c_002c9a fwBold"><fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventShortPrice) - ((eventRemainCash / eventMberInfo.eventShortPrice) % 1) }" pattern="#,###"/></span>건</td>
-							</tr>
-							<tr>
-								<th>장문(<fmt:formatNumber value="${eventMberInfo.eventLongPrice}" pattern="#,###.#"/>)</th>
-								<td><span class="c_002c9a fwBold"><fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventLongPrice) - ((eventRemainCash / eventMberInfo.eventLongPrice) % 1)}" pattern="#,###"/></span>건</td>
-							</tr>
-							<tr>
-								<th>그림 1장(<fmt:formatNumber value="${eventMberInfo.eventPicturePrice}" pattern="#,###.#"/>)</th>
-								<td><span class="c_002c9a fwBold"><fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventPicturePrice) - ((eventRemainCash / eventMberInfo.eventPicturePrice) % 1)}" pattern="#,###"/></span>건</td>
-							</tr>
-							<tr>
-								<th>그림 2장(<fmt:formatNumber value="${eventMberInfo.eventPicture2Price}" pattern="#,###.#"/>)</th>
-								<td><span class="c_002c9a fwBold"><fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventPicture2Price) - ((eventRemainCash / eventMberInfo.eventPicture2Price) % 1)}" pattern="#,###"/></span>건</td>
-							</tr>
-							<tr>
-								<th>그림 3장(<fmt:formatNumber value="${eventMberInfo.eventPicture3Price}" pattern="#,###.#"/>)</th>
-								<td><span class="c_002c9a fwBold"><fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventPicture3Price) - ((eventRemainCash / eventMberInfo.eventPicture3Price) % 1)}" pattern="#,###"/></span>건</td>
-							</tr>
-						</tbody>
-					</table>
-				</div>
-				<div class="popup_btn_wrap2">
-					<button type="button" class="tooltip-close" data-focus="popup07-close"  data-focus-next="popup07">닫기</button>
-				</div>
-			</div>
-		</div>
-	</div>
-	
-    <form id="msgForm" name="msgForm" method="post">
-		<input type="hidden" id="msgType" name="msgType" value="4" /><!-- 문자 종류 : 단문 - 4, 장문/그림 - 6 -->
-		<input type="hidden" id="imgFilePath" name="imgFilePath" value="" /><!-- 선택 이미지 파일 경로 정보 , 로 구분 최대 3장까지 -->
-		<input type="hidden" id="imgFileId" name="imgFileId" value="" /><!-- 선택 이미지 파일 아이디 정보 , 로 구분 최대 3장까지 -->
-		<input type="hidden" id="fileCnt" name="fileCnt" value="0" /><!-- 첨부파일 추가 갯수 -->
-		<input type="hidden" id="callToList" name="callToList" value=""/><!-- 수신자 전화번호 리스트 -->
-		<input type="hidden" id="callFrom" name="callFrom" value=""/> <!-- 발신자 전화번호 -->
-		<input type="hidden" id="eachPrice" name="eachPrice" value="0"/> <!-- 문자 개별 단가 금액 -->
-		<input type="hidden" id="totPrice" name="totPrice" value="0"/> <!-- 총 결제 금액 -->
-		<input type="hidden" id="smsLen" name="smsLen" value="0"/> <!-- 문자 길이 정보 -->
-		<input type="hidden" id="reserveYn" name="reserveYn" value="N"/> <!-- 즉시/예약 선택여부 -->
-		<input type="hidden" id="reqDate" name="reqDate" value=""/> <!-- 예약문자 날짜 -->
-		<input type="hidden" id="imgCnt" value="0" />
-		<input type="hidden" id="smsTxt" name="smsTxt" value=""/><!-- 문자발송 문자 내용 -->
-		<input type="hidden" id="nameList" name="nameList" value=""/><!-- 문자발송 문자 이름 리스트 -->
-		<input type="hidden" id="rep1List" name="rep1List" value=""/><!-- 문자발송 문자 치환1 리스트 -->
-		<input type="hidden" id="rep2List" name="rep2List" value=""/><!-- 문자발송 문자 치환2 리스트 -->
-		<input type="hidden" id="rep3List" name="rep3List" value=""/><!-- 문자발송 문자 치환3 리스트 -->
-		<input type="hidden" id="rep4List" name="rep4List" value=""/><!-- 문자발송 문자 치환4 리스트 -->
-		<input type="hidden" name="templateYn" />
-		<input type="hidden" id="sPrice" name="sPrice" value="<c:out value="${shortPrice}"/>"/><!-- 단문문자 단가 -->
-		<input type="hidden" id="mPrice" name="mPrice" value="<c:out value="${longPrice}"/>"/><!-- 장문문자 단가 -->
-		<input type="hidden" id="pPrice" name="pPrice" value="<c:out value="${picturePrice}"/>"/><!-- 그림문자 단가 -->
-		<input type="hidden" id="p2Price" name="p2Price" value="<c:out value="${picture2Price}"/>"/><!-- 그림2장문자 단가 -->
-		<input type="hidden" id="p3Price" name="p3Price" value="<c:out value="${picture3Price}"/>"/><!-- 그림3장문자 단가 -->
-		<input type="hidden" id="myPrice" name="myPrice" value="<c:out value="${userMoney}"/>"/>
-		<input name="msgKind" type="hidden" value="C"/><!-- 문자종류 일반:N , 광고:A , 선거:C -->
-		<input type="hidden" id="txtReplYn" name="txtReplYn" value="N"/><!-- 변환문자 유무 -->
-		<input type="hidden" id="shortMsgCnt" name="shortMsgCnt" value="0"/><!-- 단문 변환문자 건수  -->
-		<input type="hidden" id="longMsgCnt" name="longMsgCnt" value="0"/><!-- 장문 변환문자 건수 -->
+<form id="msgForm" name="msgForm" method="post">
+	<input type="hidden" id="msgType" name="msgType" value="4" /><!-- 문자 종류 : 단문 - 4, 장문/그림 - 6 -->
+	<input type="hidden" id="imgFilePath" name="imgFilePath" value="" /><!-- 선택 이미지 파일 경로 정보 , 로 구분 최대 3장까지 -->
+	<input type="hidden" id="imgFileId" name="imgFileId" value="" /><!-- 선택 이미지 파일 아이디 정보 , 로 구분 최대 3장까지 -->
+	<input type="hidden" id="fileCnt" name="fileCnt" value="0" /><!-- 첨부파일 추가 갯수 -->
+	<input type="hidden" id="callToList" name="callToList" value=""/><!-- 수신자 전화번호 리스트 -->
+	<input type="hidden" id="callFrom" name="callFrom" value=""/> <!-- 발신자 전화번호 -->
+	<input type="hidden" id="eachPrice" name="eachPrice" value="0"/> <!-- 문자 개별 단가 금액 -->
+	<input type="hidden" id="totPrice" name="totPrice" value="0"/> <!-- 총 결제 금액 -->
+	<input type="hidden" id="smsLen" name="smsLen" value="0"/> <!-- 문자 길이 정보 -->
+	<input type="hidden" id="reserveYn" name="reserveYn" value="N"/> <!-- 즉시/예약 선택여부 -->
+	<input type="hidden" id="reqDate" name="reqDate" value=""/> <!-- 예약문자 날짜 -->
+	<input type="hidden" id="imgCnt" value="0" />
+	<input type="hidden" id="smsTxt" name="smsTxt" value=""/><!-- 문자발송 문자 내용 -->
+	<input type="hidden" id="nameList" name="nameList" value=""/><!-- 문자발송 문자 이름 리스트 -->
+	<input type="hidden" id="rep1List" name="rep1List" value=""/><!-- 문자발송 문자 치환1 리스트 -->
+	<input type="hidden" id="rep2List" name="rep2List" value=""/><!-- 문자발송 문자 치환2 리스트 -->
+	<input type="hidden" id="rep3List" name="rep3List" value=""/><!-- 문자발송 문자 치환3 리스트 -->
+	<input type="hidden" id="rep4List" name="rep4List" value=""/><!-- 문자발송 문자 치환4 리스트 -->
+	<input type="hidden" name="templateYn" />
+	<input type="hidden" id="sPrice" name="sPrice" value="<c:out value="${shortPrice}"/>"/><!-- 단문문자 단가 -->
+	<input type="hidden" id="mPrice" name="mPrice" value="<c:out value="${longPrice}"/>"/><!-- 장문문자 단가 -->
+	<input type="hidden" id="pPrice" name="pPrice" value="<c:out value="${picturePrice}"/>"/><!-- 그림문자 단가 -->
+	<input type="hidden" id="p2Price" name="p2Price" value="<c:out value="${picture2Price}"/>"/><!-- 그림2장문자 단가 -->
+	<input type="hidden" id="p3Price" name="p3Price" value="<c:out value="${picture3Price}"/>"/><!-- 그림3장문자 단가 -->
+	<input type="hidden" id="myPrice" name="myPrice" value="<c:out value="${userMoney}"/>"/>
+	<input name="msgKind" type="hidden" value="C"/><!-- 문자종류 일반:N , 광고:A , 선거:C -->
+	<input type="hidden" id="txtReplYn" name="txtReplYn" value="N"/><!-- 변환문자 유무 -->
+	<input type="hidden" id="shortMsgCnt" name="shortMsgCnt" value="0"/><!-- 단문 변환문자 건수  -->
+	<input type="hidden" id="longMsgCnt" name="longMsgCnt" value="0"/><!-- 장문 변환문자 건수 -->
 
-		<!-- 주소록 등록 -->
-		<input type="hidden" id="addrGrpId" name="addrGrpId" value=""/>
-		<input type="hidden" id="addrGrpNm" name="addrGrpNm" value=""/>		
-		
-		<!-- 이벤트 관련 변수 -->
-		<input type="hidden" id="eventStatus" name="eventStatus" value="<c:out value='${eventMberInfo.eventStatus}'/>"/>
-		<input type="hidden" id="eventRemainCash" name="eventRemainCash" value="<c:out value='${eventRemainCash}'/>"/>
-		<input type="hidden" id="eventYn" name="eventYn" value="N"/>
-		
-		<!-- 스팸문자 관련 변수 -->
-		<input type="hidden" id="spamKeyword" name="spamKeyword"/>
-		<input type="hidden" id="spamStatus" name="spamStatus"/>
-		<input type="hidden" id="exceptSpamYn" name="exceptSpamYn" value="<c:out value='${exceptSpamYn}'/>"/>
-		
-		<!-- 이벤트 캐시 부족시 일반캐시로 계산을 위해 저장, 우영두 2023.03.28 -->
-		<input type="hidden" id="norsPrice" name="norsPrice" value="<c:out value="${norShortPrice}"/>"/><!-- 단문문자 단가(이벤트 단가 제외) -->
-		<input type="hidden" id="normPrice" name="normPrice" value="<c:out value="${norLongPrice}"/>"/><!-- 장문문자 단가(이벤트 단가 제외) -->
-		<input type="hidden" id="norpPrice" name="norpPrice" value="<c:out value="${norPicturePrice}"/>"/><!-- 그림문자 단가(이벤트 단가 제외) -->
-		<input type="hidden" id="norp2Price" name="norp2Price" value="<c:out value="${norPicture2Price}"/>"/><!-- 그림2장문자 단가(이벤트 단가 제외) -->
-		<input type="hidden" id="norp3Price" name="norp3Price" value="<c:out value="${norPicture3Price}"/>"/><!-- 그림3장문자 단가(이벤트 단가 제외) -->	
-		<input type="hidden" id="evnPhoneNumCnt" name="evnPhoneNumCnt" value="0"/><!-- 치환 이벤트 발송 수신자 갯수 -->
-		<input type="hidden" id="evnShortMsgCnt" name="evnShortMsgCnt" value="0"/><!-- 치환 이벤트 단문 건수 -->
-		<input type="hidden" id="evnLongMsgCnt" name="evnLongMsgCnt" value="0"/><!-- 치환 이벤트 장문 건수 -->
+	<!-- 주소록 등록 -->
+	<input type="hidden" id="addrGrpId" name="addrGrpId" value=""/>
+	<input type="hidden" id="addrGrpNm" name="addrGrpNm" value=""/>		
+	
+	<!-- 이벤트 관련 변수 -->
+	<input type="hidden" id="eventStatus" name="eventStatus" value="<c:out value='${eventMberInfo.eventStatus}'/>"/>
+	<input type="hidden" id="eventRemainCash" name="eventRemainCash" value="<c:out value='${eventRemainCash}'/>"/>
+	<input type="hidden" id="eventYn" name="eventYn" value="N"/>
+	
+	<!-- 스팸문자 관련 변수 -->
+	<input type="hidden" id="spamKeyword" name="spamKeyword"/>
+	<input type="hidden" id="spamStatus" name="spamStatus"/>
+	<input type="hidden" id="exceptSpamYn" name="exceptSpamYn" value="<c:out value='${exceptSpamYn}'/>"/>
+	
+	<!-- 이벤트 캐시 부족시 일반캐시로 계산을 위해 저장, 우영두 2023.03.28 -->
+	<input type="hidden" id="norsPrice" name="norsPrice" value="<c:out value="${norShortPrice}"/>"/><!-- 단문문자 단가(이벤트 단가 제외) -->
+	<input type="hidden" id="normPrice" name="normPrice" value="<c:out value="${norLongPrice}"/>"/><!-- 장문문자 단가(이벤트 단가 제외) -->
+	<input type="hidden" id="norpPrice" name="norpPrice" value="<c:out value="${norPicturePrice}"/>"/><!-- 그림문자 단가(이벤트 단가 제외) -->
+	<input type="hidden" id="norp2Price" name="norp2Price" value="<c:out value="${norPicture2Price}"/>"/><!-- 그림2장문자 단가(이벤트 단가 제외) -->
+	<input type="hidden" id="norp3Price" name="norp3Price" value="<c:out value="${norPicture3Price}"/>"/><!-- 그림3장문자 단가(이벤트 단가 제외) -->	
+	<input type="hidden" id="evnPhoneNumCnt" name="evnPhoneNumCnt" value="0"/><!-- 치환 이벤트 발송 수신자 갯수 -->
+	<input type="hidden" id="evnShortMsgCnt" name="evnShortMsgCnt" value="0"/><!-- 치환 이벤트 단문 건수 -->
+	<input type="hidden" id="evnLongMsgCnt" name="evnLongMsgCnt" value="0"/><!-- 치환 이벤트 장문 건수 -->
 
-	<!-- <div class="top_content current" id="tab1_1"> -->
-	    <div class="heading">
-	        <h2>선거 문자전송</h2>
-	        <div class="election_btnWrap">
-	        	<button type="button" class="button2 info" onclick="infoPop('selectMsgDataView2');">발송규정</button>
-	        	<button type="button" class="button2 info" data-tooltip="candidate_popup03">사용안내</button>
-	        	<c:choose>
-	        		<c:when test="${empty LoginVO}">
-						<button type="button" class="btnType" onclick="javascript:fn_candidateLoginChk(); return false;"><i class="election_btn1"></i>후보자 등록</button>	        		
-	        		</c:when>
-	        		<c:when test="${not empty mberManageVO && mberManageVO.dept eq 'c'}">
-	        			<button type="button" class="btnType" onclick="javascript:fn_mberDeptChk(); return false;"><i class="election_btn1"></i>후보자 등록</button>
-	        		</c:when>
-	        		<c:otherwise>
-	        			<button type="button" class="btnType" data-tooltip="candidate_popup01"><i class="election_btn1"></i>후보자 등록</button>	
-	        		</c:otherwise>
-	        	</c:choose>
-                <button type="button" class="btnType" onclick="location.href='/web/member/pay/BillPub.do'"><i class="election_btn2"></i>세금계산서</button>
-                <button type="button" class="btnType" onclick="location.href='/web/mjon/msgsent/selectMsgSentView.do'"><i class="election_btn3"></i>발송결과 출력하기</button>
-            </div>
-	    </div>
-	    <%-- <div class="titBox">
-            <p>- 90byte 초과 시, 장문으로 전환됩니다. 장문 문자는 최대 2,000byte까지 작성할 수  있습니다.</p>
-			<p>- 그림문자 1건에 포토 최대 3장 첨부가능  [권장 사이즈 : <span class="c_222 fwRg">640 x 960</span>픽셀 / 최대용량 : <span class="c_222 fwRg">10MB</span>이내]</p>
-            <p>- 광고성 메시지는 반드시 유의사항 확인 후 발송해 주시기 바랍니다. <span><a href="#" data-tooltip="candidate_popup02">[선거문자 관련규정 안내]</a></span></p>
-        </div> --%>
-	    <div class="send_general">
-	        <div class="send_left">
-	        	<%-- <dl class="myprice_view">
-	        		<dt>나의 요금제</dt>
-	        		<dd>
-	        			<ul>
-							<li><span class="type">단문</span><span class="price"><c:out value="${shortPrice}"/></span>원</li>
-							<li><span class="type">장문</span><span class="price"><c:out value="${longPrice}"/></span>원</li>
-							<li><span class="type">그림</span><span class="price"><c:out value="${picturePrice}"/></span>원 <span class="count">(2장 : <c:out value="${picture2Price}"/>원 / 3장 : <c:out value="${picture3Price}"/>원)</span></li>
-						</ul>
-	        		</dd>
-	        	</dl> --%>
-	            <table class="tType1">
-	                <caption>일반 문자보내기 분류 번호 내용 등을 입력하는 표</caption>
-	                <colgroup>
-	                    <col style="width: 100px;">
-	                    <col style="width: auto;">
-	                </colgroup>
-	                <tbody>
-	                    <tr>
-							<!-- <th scope="row">문자분류</th>
-							<td class="send_cf">
-	                            <input id="send_adYnY" type="radio" name="send_adYn" value="Y" checked="checked">
-	                            <label for="send_adYnY">선거</label>
-	                        </td> -->
-	                        <input type="hidden" id="send_adYnY" name="send_adYn" value="Y">
-	                        <td colspan="2" class="ele_te">※ 자동동보문자를 <span>한번에 20,000건 이상 보내실 경우에는 꼭 고객센터(1551-8011)</span>로 연락주시어 발송 요청 후 진행해 주시길 바랍니다<span id="hdnLink">.</span></td>
-	                    </tr>
-	                    <tr>
-                            <th scope="row">발신번호</th>
-                            <td class="put_num">
-                                <label for="callFrom" class="label"></label>
-                                <select id="callFromList" name="callFromList" class="sel_number" onchange="setCandidatePhone();">
-                                	<c:choose>
-                                		<c:when test="${not empty resultPhonList}">
-                                			<c:forEach var="phonList" items="${resultPhonList}" varStatus="status">
-												<option value="${phonList}">${phonList}</option>
-											</c:forEach>
-                                		</c:when>
-                                		<c:otherwise>
-                                			<option value="">등록된 발신 번호가 없습니다.</option>
-                                		</c:otherwise>
-                                	</c:choose>
-								</select>
-                                <button type="button" class="btnType btnType6" onclick="location.href='/web/user/sendNumberManage.do'">번호등록</button>
-                            </td>
-                        </tr>
-						<tr class="msg_title">
-                            <th scope="row">제목</th>
-                            <td>
-                           		<ul class="title_wrap">
-                           			<li>
-                           				<input id="title_y" type="radio"name="title_status" value="Y" onchange="titleStatus(this);">
-			                            <label for="title_y">사용</label>
-			                            <input id="title_n" type="radio" name="title_status" value="N" onchange="titleStatus(this);" checked="checked">
-			                            <label for="title_n">사용안함</label>
-                           			</li>
-                           			<li class="textbox">
-                           				<label for="mmsSubject" class="label"></label>
-										<input type="text" size="20" id="mmsSubject" name="mmsSubject" class="w100" maxlength="20" placeholder=""  onfocus="this.placeholder=''" >
-                           			</li>
-                           		</ul>
-                            </td>
-                        </tr>
-						<!-- 문자 내용 영역 -->
-						<tr>
-                            <th scope="row" class="vTop">내용</th>
+    <div class="heading">
+        <h2>선거 문자전송</h2>
+        <div class="election_btnWrap">
+        	<button type="button" class="button2 info" onclick="infoPop('selectMsgDataView2');">발송규정</button>
+        	<button type="button" class="button2 info" data-tooltip="candidate_popup03">사용안내</button>
+        	<c:choose>
+        		<c:when test="${empty LoginVO}">
+					<button type="button" class="btnType" onclick="javascript:fn_candidateLoginChk(); return false;"><i class="election_btn1"></i>후보자 등록</button>	        		
+        		</c:when>
+        		<c:when test="${not empty mberManageVO && mberManageVO.dept eq 'c'}">
+        			<button type="button" class="btnType" onclick="javascript:fn_mberDeptChk(); return false;"><i class="election_btn1"></i>후보자 등록</button>
+        		</c:when>
+        		<c:otherwise>
+        			<button type="button" class="btnType" data-tooltip="candidate_popup01"><i class="election_btn1"></i>후보자 등록</button>	
+        		</c:otherwise>
+        	</c:choose>
+               <button type="button" class="btnType" onclick="location.href='/web/member/pay/BillPub.do'"><i class="election_btn2"></i>세금계산서</button>
+               <button type="button" class="btnType" onclick="location.href='/web/mjon/msgsent/selectMsgSentView.do'"><i class="election_btn3"></i>발송결과 출력하기</button>
+           </div>
+    </div>
+    <div class="send_general">
+        <div class="send_left">
+            <table class="tType1">
+                <caption>일반 문자보내기 분류 번호 내용 등을 입력하는 표</caption>
+                <colgroup>
+                    <col style="width: 100px;">
+                    <col style="width: auto;">
+                </colgroup>
+                <tbody>
+					<tr>
+						<input type="hidden" id="send_adYnY" name="send_adYn" value="Y">
+	                    <td colspan="2" class="ele_te">※ 자동동보문자를 <span>한번에 20,000건 이상 보내실 경우에는 꼭 고객센터(1551-8011)</span>로 연락주시어 발송 요청 후 진행해 주시길 바랍니다<span id="hdnLink">.</span></td>
+                    </tr>
+                    <tr>
+						<th scope="row">발신번호</th>
+						<td class="put_num">
+							<label for="callFrom" class="label"></label>
+							<select id="callFromList" name="callFromList" class="sel_number" onchange="setCandidatePhone();">
+								<c:choose>
+									<c:when test="${not empty resultPhonList}">
+										<c:forEach var="phonList" items="${resultPhonList}" varStatus="status">
+											<option value="${phonList}">${phonList}</option>
+										</c:forEach>
+									</c:when>
+									<c:otherwise>
+										<option value="">등록된 발신 번호가 없습니다.</option>
+									</c:otherwise>
+								</c:choose>
+							</select>
+							<button type="button" class="btnType btnType6" onclick="location.href='/web/user/sendNumberManage.do'">번호등록</button>
+						</td>
+					</tr>
+					<tr class="msg_title">
+					    <th scope="row">제목</th>
+					    <td>
+					   		<ul class="title_wrap">
+					   			<li>
+					   				<input id="title_y" type="radio"name="title_status" value="Y" onchange="titleStatus(this);">
+					             <label for="title_y">사용</label>
+					             <input id="title_n" type="radio" name="title_status" value="N" onchange="titleStatus(this);" checked="checked">
+					             <label for="title_n">사용안함</label>
+					   			</li>
+					   			<li class="textbox">
+					   				<label for="mmsSubject" class="label"></label>
+									<input type="text" size="20" id="mmsSubject" name="mmsSubject" class="w100" maxlength="20" placeholder=""  onfocus="this.placeholder=''" >
+					   			</li>
+					   		</ul>
+						</td>
+					</tr>
+					<!-- 문자 내용 영역 -->
+					<tr>
+						<th scope="row" class="vTop">내용</th>
                             <td class="putText">
                                 <div class="clearfix">
                                     <div class="put_left short">
@@ -4125,394 +3239,377 @@
                                         <label for="smsTxtArea" class="label"></label>
                                         <textarea id="smsTxtArea" name="smsTxtArea" class="put_text" placeholder="내용을 입력해주세요.
 -90btye 초과 시 LMS 자동전환
--파일첨부 시 MMS 자동전환"></textarea>
-                                        <div class="text_length">
-											<div name="afterDeny">
-                                            	<p>
-                                             	<span class="fwMd" id="msgLeng">0 /</span>
-                                             	<span class="c_002c9a fwMd" id="limitLeng"> 90</span>byte
-                                            	</p>
-                                            	<span class="msg_com msg_short">단문</span>
-											</div>
-                                        </div>
-                                    </div>
-                                    <div class="put_right">
-                                        <div class="btn_popup_wrap spc_wrap">
-                                        	<button type="button" class="btnType btnType7" onclick="miniPopup(this);">특수문자</button>
-											<div class="send_miniPop spc_character">
-												<div class="tab_character">
-													<a href="#none" class="on">특수문자</a>
-													<a href="#none">웃음</a>
-													<a href="#none">슬픔</a>
-													<a href="#none">분노</a>
-													<a href="#none">사랑</a>
-													<a href="#none">그외</a>
-												</div>
-												<!-- 특수문자 부분 -->
-												<div class="cnt_character on">
-													<div class="box_character">
-														<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
-															<c:if test="${symbolList.symbolType == 'D'}">
-																<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}"><c:out value="${symbolList.symbol}"/></a>
-															</c:if>
-														</c:forEach>
-													</div>
-												</div>
-												<!-- 웃음 -->
-												<div class="cnt_character emt_character">
-													<div class="box_character">
-														<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
-															<c:if test="${symbolList.symbolType == 'S'}">
-																<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a>
-															</c:if>
-														</c:forEach>
-													</div>
-												</div>
-												<!-- //웃음 -->
-												<!-- 슬픔 -->
-												<div class="cnt_character emt_character">
-													<div class="box_character">
-														<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
-															<c:if test="${symbolList.symbolType == 'C'}">
-																<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a>
-															</c:if>
-														</c:forEach>
-													</div>
-												</div>
-												<!-- //슬픔 -->
-												<!-- 분노 -->
-												<div class="cnt_character emt_character">
-													<div class="box_character">
-														<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
-															<c:if test="${symbolList.symbolType == 'A'}">
-																<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a>
-															</c:if>
-														</c:forEach>
-													</div>
-												</div>
-												<!-- //분노 -->
-												<!-- 사랑 -->
-												<div class="cnt_character emt_character">
-													<div class="box_character">
-														<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
-															<c:if test="${symbolList.symbolType == 'L'}">
-																<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a>
-															</c:if>
-														</c:forEach>
-													</div>
-												</div>
-												<!-- //사랑 -->
-												<!-- 그외 -->
-												<div class="cnt_character emt_character emt_etc ">
-													<div class="box_character">
-														<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
-															<c:if test="${symbolList.symbolType == 'E'}">
-																<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a>
-															</c:if>
-														</c:forEach>
-													</div>
-												</div>
-												<!-- //그외 -->
-												<button type="button" class="btn_close" onclick="miniPopup(this);">닫기</button>
-											</div>
+-파일첨부 시 MMS 자동전환">
+</textarea>
+									<div class="text_length">
+										<div name="afterDeny">
+											<p>
+												<span class="fwMd" id="msgLeng">0 /</span>
+												<span class="c_002c9a fwMd" id="limitLeng"> 90</span>byte
+											</p>
+											<span class="msg_com msg_short">단문</span>
 										</div>
-										<div class="btn_popup_wrap convers_wrap">
-									        <button type="button" class="btnType btnType7" onclick="miniPopup(this)">특정문구 일괄변환<i class="qmMark"></i></button>
-											<div class="send_miniPop convers">
-												<div>
-													<div class="convers_top">
-														<span>특정문구 일괄변환이란?</span>
-														<p>주소록, 엑셀에 입력된 내용을 이용해 수신자마다 다른 내용의<br> 메시지를 발송하는 기능</p>
-													</div>
-													<div class="convers_middle"><a href="javascript:void(0)" class="changeWord" value="[*이름*]">[*이름*]</a></div>
-													<div class="convers_bottom">
-														<a href="javascript:void(0)" class="changeWord" value="[*1*]">[*1*]</a>
-														<a href="javascript:void(0)" class="changeWord" value="[*2*]">[*2*]</a>
-														<a href="javascript:void(0)" class="changeWord" value="[*3*]">[*3*]</a>
-														<a href="javascript:void(0)" class="changeWord" value="[*4*]">[*4*]</a>
-													</div>
-												</div>
-												<button type="button" class="btn_close" onclick="miniPopup(this);">닫기</button>
+									</div>
+								</div>
+								<div class="put_right">
+									<div class="btn_popup_wrap spc_wrap">
+                                     	<button type="button" class="btnType btnType7" onclick="miniPopup(this);">특수문자</button>
+										<div class="send_miniPop spc_character">
+											<div class="tab_character">
+												<a href="#none" class="on">특수문자</a>
+												<a href="#none">웃음</a>
+												<a href="#none">슬픔</a>
+												<a href="#none">분노</a>
+												<a href="#none">사랑</a>
+												<a href="#none">그외</a>
 											</div>
+											<!-- 특수문자 부분 -->
+											<div class="cnt_character on">
+												<div class="box_character">
+													<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
+														<c:if test="${symbolList.symbolType == 'D'}">
+															<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}"><c:out value="${symbolList.symbol}"/></a>
+														</c:if>
+													</c:forEach>
+												</div>
+											</div>
+											<!-- 웃음 -->
+											<div class="cnt_character emt_character">
+												<div class="box_character">
+													<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
+														<c:if test="${symbolList.symbolType == 'S'}">
+															<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a>
+														</c:if>
+													</c:forEach>
+												</div>
+											</div>
+											<!-- //웃음 -->
+											<!-- 슬픔 -->
+											<div class="cnt_character emt_character">
+												<div class="box_character">
+													<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
+														<c:if test="${symbolList.symbolType == 'C'}">
+															<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a>
+														</c:if>
+													</c:forEach>
+												</div>
+											</div>
+											<!-- //슬픔 -->
+											<!-- 분노 -->
+											<div class="cnt_character emt_character">
+												<div class="box_character">
+													<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
+														<c:if test="${symbolList.symbolType == 'A'}">
+															<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a>
+														</c:if>
+													</c:forEach>
+												</div>
+											</div>
+											<!-- //분노 -->
+											<!-- 사랑 -->
+											<div class="cnt_character emt_character">
+												<div class="box_character">
+													<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
+														<c:if test="${symbolList.symbolType == 'L'}">
+															<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a>
+														</c:if>
+													</c:forEach>
+												</div>
+											</div>
+											<!-- //사랑 -->
+											<!-- 그외 -->
+											<div class="cnt_character emt_character emt_etc ">
+												<div class="box_character">
+													<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
+														<c:if test="${symbolList.symbolType == 'E'}">
+															<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a>
+														</c:if>
+													</c:forEach>
+												</div>
+											</div>
+											<!-- //그외 -->
+											<button type="button" class="btn_close" onclick="miniPopup(this);">닫기</button>
 										</div>
-                                        <button type="button" class="btnType btnType7" onclick="javascript:fnGoMyMsg(); return false;">내문자함</button>
-                                        <button type="button" class="btnType btnType8" onclick="openPhotoEditor();">이미지 불러오기</button>
-	                                    <div class="send_btnWrap">
-	                                        <button type="button" class="btnType btnType9" onclick="javascript:fn_saveMyMsg(); return false;">문자저장</button>
-	                                        <button type="button" class="btnType btnType9 btnReset">초기화</button>
-	                                    </div>
-                                	</div>
+									</div>
+									<div class="btn_popup_wrap convers_wrap">
+										<button type="button" class="btnType btnType7" onclick="miniPopup(this)">특정문구 일괄변환<i class="qmMark"></i></button>
+										<div class="send_miniPop convers">
+											<div>
+												<div class="convers_top">
+													<span>특정문구 일괄변환이란?</span>
+													<p>주소록, 엑셀에 입력된 내용을 이용해 수신자마다 다른 내용의<br> 메시지를 발송하는 기능</p>
+												</div>
+												<div class="convers_middle"><a href="javascript:void(0)" class="changeWord" value="[*이름*]">[*이름*]</a></div>
+												<div class="convers_bottom">
+													<a href="javascript:void(0)" class="changeWord" value="[*1*]">[*1*]</a>
+													<a href="javascript:void(0)" class="changeWord" value="[*2*]">[*2*]</a>
+													<a href="javascript:void(0)" class="changeWord" value="[*3*]">[*3*]</a>
+													<a href="javascript:void(0)" class="changeWord" value="[*4*]">[*4*]</a>
+												</div>
+											</div>
+											<button type="button" class="btn_close" onclick="miniPopup(this);">닫기</button>
+										</div>
+									</div>
+									<button type="button" class="btnType btnType7" onclick="javascript:fnGoMyMsg(); return false;">내문자함</button>
+									<button type="button" class="btnType btnType8" onclick="openPhotoEditor();">이미지 불러오기</button>
+									<div class="send_btnWrap">
+	                                    <button type="button" class="btnType btnType9" onclick="javascript:fn_saveMyMsg(); return false;">문자저장</button>
+	                                	<button type="button" class="btnType btnType9 btnReset">초기화</button>
+	                            	</div>
                             	</div>
-                            	<p>* 현재 [<span id="nowMsgType">단문</span>] <span class="c_e40000 fwBold nowMsgCnt">0</span>건 발송 가능합니다.</p>
-                         	</td>
-                        </tr>
-	                    <tr>
-                            <th scope="row" class="vTop">받는사람</th>
-                            <td class="putText">
-                                <div class="clearfix receipt_num">
-									<div class="receipt_num_top">
-										<label for="callTo" class="label">받는 번호입력</label>
-										<input type="text" id="callTo" name="callTo"  placeholder="번호를 입력하세요" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');" onfocus="this.placeholder=''" onblur="this.placeholder='번호를 입력하세요'" style="width:340px;">
-										<button type="button" class="btnType btnType6 addCallToF">번호추가</button>
-										<span><span class="vMiddle">*</span> 중복번호는 한번만 발송됩니다.</span>
-									</div>
-                                    <div class="receipt_num_midde">
-                                        <div class="listType list01 callList_box" id="callList_box">
-											<div class="list_table list_head">
-												<div class="cb_wrap">
-													<label for="" class="label"></label>
-													<input type="checkbox">
-												</div>
-												<div class="list_table_num">
-													<p>번호</p>
-													<img src="/publish/images/sortUp.png">
-													<img src="/publish/images/sortDown.png">
-												</div>
-												<div class="list_table_name">
-													<p>이름</p>
-													<img src="/publish/images/sortUp.png">
-													<img src="/publish/images/sortDown.png">
-												</div>
+                            </div>
+                        	<p>* 현재 [<span id="nowMsgType">단문</span>] <span class="c_e40000 fwBold nowMsgCnt">0</span>건 발송 가능합니다.</p>
+						</td>
+					</tr>
+					<tr>
+						<th scope="row" class="vTop">받는사람</th>
+						<td class="putText">
+							<div class="clearfix receipt_num">
+								<div class="receipt_num_top">
+									<label for="callTo" class="label">받는 번호입력</label>
+									<input type="text" id="callTo" name="callTo"  placeholder="번호를 입력하세요" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');" onfocus="this.placeholder=''" onblur="this.placeholder='번호를 입력하세요'" style="width:340px;">
+									<button type="button" class="btnType btnType6 addCallToF">번호추가</button>
+									<span><span class="vMiddle">*</span> 중복번호는 한번만 발송됩니다.</span>
+								</div>
+								<div class="receipt_num_midde">
+									<div class="listType list01 callList_box" id="callList_box">
+										<div class="list_table list_head">
+											<div class="cb_wrap">
+												<label for="" class="label"></label>
+												<input type="checkbox">
 											</div>
-										</div>
-										<div class="put_right">
-											<div class="btn_popup_wrap spc_wrap">
-												<button type="button" data-tooltip="popup06"  class="btnType btnType7 popupAddr">주소록 불러오기</button>
+											<div class="list_table_num">
+												<p>번호</p>
+												<img src="/publish/images/sortUp.png">
+												<img src="/publish/images/sortDown.png">
 											</div>
-											<div class="btn_popup_wrap">
-												<button type="button" data-tooltip="popup02"  class="btnType btnType7">엑셀 불러오기</button>
-											</div>
-											<div class="btn_popup_wrap">
-												<button type="button" data-tooltip="popup03" class="btnType btnType7 tab1">최근 전송내역</button>
-											</div>
-											<div class="btn_popup_wrap">
-												<button type="button" data-tooltip="popup03" class="btnType btnType7 tab2">자주 보내는 번호</button>
-											</div>
-											<div class="btn_popup_wrap">
-												<button type="button" data-tooltip="popup05" class="btnType btnType7 tab2" onclick="getMjMsgSentListAll('1');">재전송</button>
-											</div>
-											<div class="btn_popup_wrap check_validity_wrap">
-												<button type="button" class="btnType btnType7 check_validity">오류 검사 <i class="qmMark"></i></button>
-												<div class="error_hover_cont send_hover_cont">
-													<p>휴대폰 번호 입력 시 해당 휴대폰 번호에 대한 형식이 어긋나거나 휴대폰 번호에 오류가 있는지 등을 검사하는 기능</p>
-													<span>(예시) 010-1234-0001(O) / 010-12345-0001(X)</span>
-												</div>
+											<div class="list_table_name">
+												<p>이름</p>
+												<img src="/publish/images/sortUp.png">
+												<img src="/publish/images/sortDown.png">
 											</div>
 										</div>
 									</div>
-									<div class="list_bottom clearfix">
-										<div class="remove_btnWrap">
-											<button type="button" class="btnType15 all_del"><i class="remove_img"></i>전체삭제</button>
-											<button type="button" class="btnType15 select_del"><i class="remove_img"></i>선택삭제</button>
+									<div class="put_right">
+										<div class="btn_popup_wrap spc_wrap">
+											<button type="button" data-tooltip="popup06"  class="btnType btnType7 popupAddr">주소록 불러오기</button>
 										</div>
-										<div class="list_bottom_right">
-											<p>총 <span class="c_e40000" id="rowTotCnt">0</span>건 / 중복 <span class="c_002c9a" id="rowDupCnt">0</span>건</p>
-											<%--<button type="button" class="address_reg2 registAddr">주소록에 등록</button>--%>
-											<button type="button" class="address_reg2 addressregi_btn">주소록에 등록</button>
+										<div class="btn_popup_wrap">
+											<button type="button" data-tooltip="popup02"  class="btnType btnType7">엑셀 불러오기</button>
+										</div>
+										<div class="btn_popup_wrap">
+											<button type="button" data-tooltip="popup03" class="btnType btnType7 tab1">최근 전송내역</button>
+										</div>
+										<div class="btn_popup_wrap">
+											<button type="button" data-tooltip="popup03" class="btnType btnType7 tab2">자주 보내는 번호</button>
+										</div>
+										<div class="btn_popup_wrap">
+											<button type="button" data-tooltip="popup05" class="btnType btnType7 tab2" onclick="getMjMsgSentListAll('1');">재전송</button>
+										</div>
+										<div class="btn_popup_wrap check_validity_wrap">
+											<button type="button" class="btnType btnType7 check_validity">오류 검사 <i class="qmMark"></i></button>
+											<div class="error_hover_cont send_hover_cont">
+												<p>휴대폰 번호 입력 시 해당 휴대폰 번호에 대한 형식이 어긋나거나 휴대폰 번호에 오류가 있는지 등을 검사하는 기능</p>
+												<span>(예시) 010-1234-0001(O) / 010-12345-0001(X)</span>
+											</div>
 										</div>
 									</div>
-                                </div>
-                            </td>
-                        </tr>
-                        <tr>
-                            <th colspan="2" class="billingAmount">
-                            	<div>
-	                                <div class="final_pay">
-	                                    <div class="pay_info_list">
-	                                    	<p>발송금액 :</p>
-	                                    	<div class="info" id="repPriceTxt">
-	                                    		단문 : <strong>20</strong>건<span>/</span>장문 : <strong>150</strong>건<span>/</span>그림문자 : <strong>30</strong>건
-	                                    	</div>
-	                                    </div>
-	                                    <p class="price" ><span id="totalPriceTxt">0</span>원<span>(부가세 포함)</span></p>
-	                                </div>
-	                                <c:if test="${eventRemainCash > 0  && eventMberInfo.eventStatus eq 'Y'}">
-	                                	<p style="text-align: right; font-size: 14px; color: #666; margin: -10px 0 15px 0; font-weight: 300;">* 이벤트회원의 발송금액은 이벤트단가를 적용하여 계산된 금액이므로 실제 발송금액과 다를 수 있습니다.</p>
-	                                </c:if>
-	                                <div class="pay_type clearfix">
-	                                	<fmt:formatNumber type="number" maxFractionDigits="3" value="${userMoney}" var="commaPrice" />
-										<div>
-											<input type="radio" id="radio_bill_1" name="radio_bill" checked="checked">
-											<label for="radio_bill_1">보유잔액</label>
-											<%-- <label for="radio_bill_1">내 충전금 (<span id="spUserMoney">
-												<c:choose>
-													<c:when test="${not empty userMoney}">
-														<c:out value="${commaPrice}"/>
-													</c:when>
-													<c:otherwise>
-														0
-													</c:otherwise>
-												</c:choose>
-											</span>원)</label> --%>
-											<label for="userMoney" class="label">보유잔액</label>
-											<input type="text" id="userMoney" name="userMoney" value="<c:out value='${commaPrice}'/>" readonly>
-											<span class="won">원</span>
-											<button type="button" class="btnType btnType21" onclick="location.href='/web/member/pay/PayView.do'">충전</button>
-										</div>
-										<c:if test="${eventRemainCash > 0  && eventMberInfo.eventStatus eq 'Y'}">
-												<div><button type="button" data-tooltip="popup07" class="btnType btnType3 btn_event_cash">이벤트 잔액</button></div>
-										</c:if>
+								</div>
+								<div class="list_bottom clearfix">
+									<div class="remove_btnWrap">
+										<button type="button" class="btnType15 all_del"><i class="remove_img"></i>전체삭제</button>
+										<button type="button" class="btnType15 select_del"><i class="remove_img"></i>선택삭제</button>
 									</div>
+									<div class="list_bottom_right">
+										<p>총 <span class="c_e40000" id="rowTotCnt">0</span>건 / 중복 <span class="c_002c9a" id="rowDupCnt">0</span>건</p>
+										<button type="button" class="address_reg2 addressregi_btn">주소록에 등록</button>
+									</div>
+								</div>
+							</div>
+						</td>
+					</tr>
+					<tr>
+						<th colspan="2" class="billingAmount">
+							<div>
+								<div class="final_pay">
+									<div class="pay_info_list">
+	                                   	<p>발송금액 :</p>
+	                                   	<div class="info" id="repPriceTxt">
+	                                   		단문 : <strong>20</strong>건<span>/</span>장문 : <strong>150</strong>건<span>/</span>그림문자 : <strong>30</strong>건
+	                                   	</div>
+									</div>
+									<p class="price" ><span id="totalPriceTxt">0</span>원<span>(부가세 포함)</span></p>
+								</div>
+								<c:if test="${eventRemainCash > 0  && eventMberInfo.eventStatus eq 'Y'}">
+									<p style="text-align: right; font-size: 14px; color: #666; margin: -10px 0 15px 0; font-weight: 300;">* 이벤트회원의 발송금액은 이벤트단가를 적용하여 계산된 금액이므로 실제 발송금액과 다를 수 있습니다.</p>
+								</c:if>
+								<div class="pay_type clearfix">
+	                                <fmt:formatNumber type="number" maxFractionDigits="3" value="${userMoney}" var="commaPrice" />
+									<div>
+										<input type="radio" id="radio_bill_1" name="radio_bill" checked="checked">
+										<label for="radio_bill_1">보유잔액</label>
+										<label for="userMoney" class="label">보유잔액</label>
+										<input type="text" id="userMoney" name="userMoney" value="<c:out value='${commaPrice}'/>" readonly>
+										<span class="won">원</span>
+										<button type="button" class="btnType btnType21" onclick="location.href='/web/member/pay/PayView.do'">충전</button>
+									</div>
+									<c:if test="${eventRemainCash > 0  && eventMberInfo.eventStatus eq 'Y'}">
+										<div><button type="button" data-tooltip="popup07" class="btnType btnType3 btn_event_cash">이벤트 잔액</button></div>
+									</c:if>
+								</div>
 									
-									<!--발송금액 아래 등급별 가격안내 추가-->
-									<div class="my_price_wrap" id="myPriceWrap" style="display: none;">
-										<div class="center-line"></div>
-										<ul>
-											<li class="title">
-												<img src="/publish/images/content/icon_mypage_message.png" alt="">나의 단가 &nbsp;<span>:</span> &nbsp;
-											</li>
-											<li class="price_line">
-												<span class="type">단문</span>
-												<span class="price"><fmt:formatNumber value="${shortPrice}" pattern="###.#" /></span>원
-												<span class="line">/ &nbsp;</span>
-											</li>
-											<li class="price_line">
-												<span class="type">장문</span>
-												<span class="price"><fmt:formatNumber value="${longPrice}" pattern="###.#" /></span>원
-												<span class="line">/ &nbsp;</span>
-											</li>
-											<li class="price_line">
-												<span class="type">그림</span>
-												<span class="price"><fmt:formatNumber value="${picturePrice}" pattern="###.#" /></span>원 
-												(2장 : <fmt:formatNumber value="${picture2Price}" pattern="###.#" />원 / 3장 : <fmt:formatNumber value="${picture3Price}" pattern="###.#" />원)
-											</li>
-										</ul>
-									</div>	
-									<!-- End -->									
-									
-                                </div>
-                            </th>
-                        </tr>
-                        <%-- <tr>
-                            <th scope="row">추천인 ID</th>
-                            <td class="check_num">
-                                <input id="radio5" type="radio"name="recom" checked="checked">
-                                <label for="radio5">없음</label>
-                                <input id="radio6" type="radio" name="recom">
-                                <label for="radio6">있음</label>
-                                <div>
-                                    <label for="recommId" class="label"></label>
-                                    <input type="text" size="20" id="recommId" name="recommId" value="" placeholder="추천인 아이디 입력" onfocus="this.placeholder=''" onblur="this.placeholder='추천인 아이디 입력'">
-                                    <button type="button" class="btnType btnType9" id="recommBtn">추천인 확인</button>
-                                </div>
-                            </td>
-                        </tr> --%>            
-                    </tbody>
-                </table>
-            </div>
-            <div class="send_right">
-                <div class="phone">
-                   	<div class="phoneIn">
-						<div>
-							<p><img src="/publish/images/search.png">미리보기</p>
-							<div class="text_length2 clearfix preShort">
-								<span class="msg_com msg_short">단문</span>
-								<div>
-									<span>글자크기</span>
-									<button type="button" class="fontPlus"><img src="/publish/images/content/font_plus.png"></button>
-									<button type="button" class="fontMinus"><img src="/publish/images/content/font_minus.png"></button>
-								</div>
+								<!--발송금액 아래 등급별 가격안내 추가-->
+								<div class="my_price_wrap" id="myPriceWrap" style="display: none;">
+									<div class="center-line"></div>
+									<ul>
+										<li class="title">
+											<img src="/publish/images/content/icon_mypage_message.png" alt="">나의 단가 &nbsp;<span>:</span> &nbsp;
+										</li>
+										<li class="price_line">
+											<span class="type">단문</span>
+											<span class="price"><fmt:formatNumber value="${shortPrice}" pattern="###.#" /></span>원
+											<span class="line">/ &nbsp;</span>
+										</li>
+										<li class="price_line">
+											<span class="type">장문</span>
+											<span class="price"><fmt:formatNumber value="${longPrice}" pattern="###.#" /></span>원
+											<span class="line">/ &nbsp;</span>
+										</li>
+										<li class="price_line">
+											<span class="type">그림</span>
+											<span class="price"><fmt:formatNumber value="${picturePrice}" pattern="###.#" /></span>원 
+											(2장 : <fmt:formatNumber value="${picture2Price}" pattern="###.#" />원 / 3장 : <fmt:formatNumber value="${picture3Price}" pattern="###.#" />원)
+										</li>
+									</ul>
+								</div>	
+								<!-- End -->									
 							</div>
-							<div class="text_length2 clearfix prePhoto">
-								<span class="msg_com msg_photo">포토</span>
-								<ul class="photo_msg_num">
-									<li class="photo_num_01" onclick="imgClick(0);"><a href="#none">1</a></li>
-									<li class="photo_num_02" onclick="imgClick(1);"><a href="#none">2</a></li>
-									<li class="photo_num_03" onclick="imgClick(2);"><a href="#none">3</a></li>
-								</ul>
-								<div>
-									<span>글자크기</span>
-									<button type="button" class="fontPlus"><img src="/publish/images/content/font_plus.png"></button>
-									<button type="button" class="fontMinus"><img src="/publish/images/content/font_minus.png"></button>
-								</div>
+						</th>
+					</tr>
+				</tbody>
+			</table>
+		</div>
+		<div class="send_right">
+			<div class="phone">
+				<div class="phoneIn">
+					<div>
+						<p><img src="/publish/images/search.png">미리보기</p>
+						<div class="text_length2 clearfix preShort">
+							<span class="msg_com msg_short">단문</span>
+							<div>
+								<span>글자크기</span>
+								<button type="button" class="fontPlus"><img src="/publish/images/content/font_plus.png"></button>
+								<button type="button" class="fontMinus"><img src="/publish/images/content/font_minus.png"></button>
 							</div>
-							<!-- 텍스트 미리보기 -->
-							<div class="text_preview">
-								<div class="preiew_img preViewShort"></div>
-								<div class="preview_auto">
-									<p class="none_txt">내용을 입력해주세요.222222</p>
-									<pre class="realtime">adfasfdasdf</pre>
-								</div>
+						</div>
+						<div class="text_length2 clearfix prePhoto">
+							<span class="msg_com msg_photo">포토</span>
+							<ul class="photo_msg_num">
+								<li class="photo_num_01" onclick="imgClick(0);"><a href="#none">1</a></li>
+								<li class="photo_num_02" onclick="imgClick(1);"><a href="#none">2</a></li>
+								<li class="photo_num_03" onclick="imgClick(2);"><a href="#none">3</a></li>
+							</ul>
+							<div>
+								<span>글자크기</span>
+								<button type="button" class="fontPlus"><img src="/publish/images/content/font_plus.png"></button>
+								<button type="button" class="fontMinus"><img src="/publish/images/content/font_minus.png"></button>
 							</div>
-							<!-- //텍스트 미리보기 -->
+						</div>
+						<!-- 텍스트 미리보기 -->
+						<div class="text_preview">
+							<div class="preiew_img preViewShort"></div>
+							<div class="preview_auto">
+								<p class="none_txt">내용을 입력해주세요.</p>
+								<pre class="realtime"></pre>
+							</div>
+						</div>
+						<!-- //텍스트 미리보기 -->
+					</div>
+				</div>
+				<p class="addText">※ 단말기 설정에 따라 다르게 보일 수 있습니다</p>
+			</div>
+			<div class="phone_bottom">
+				<div class="send_rev">
+					<div class="send_content">
+						<div class="rev_radio">
+							<ul>
+								<li><input type="radio" id="reserYnN" name="reserYn" value="N" checked="checked"><label for="reserYnN">즉시</label></li>
+								<li><input type="radio" id="reserYnY" name="reserYn" value="Y"><label for="reserYnY">예약</label></li>
+							</ul>
+						</div>
+						<div class="send_btn">
+							<button type="button" class="btnType btnType11" onclick="javascript:fn_sendMsgData(); return false;">발송하기</button>
+							<button type="button" class="btnType btnType10" onclick="javascript:fnTestSend(); return false;">테스트발송</button>
 						</div>
 					</div>
-                       <p class="addText">※ 단말기 설정에 따라 다르게 보일 수 있습니다</p>
-				</div>
-				<div class="phone_bottom">
-                    <div class="send_rev">
-                    	<div class="send_content">
-		                    <div class="rev_radio">
-		                    	<ul>
-		                    		<li><input type="radio" id="reserYnN" name="reserYn" value="N" checked="checked"><label for="reserYnN">즉시</label></li>
-		                    		<li><input type="radio" id="reserYnY" name="reserYn" value="Y"><label for="reserYnY">예약</label></li>
-		                    	</ul>
-		                    </div>
-		                    <div class="send_btn">
-		                        <button type="button" class="btnType btnType11" onclick="javascript:fn_sendMsgData(); return false;">발송하기</button>
-		                        <button type="button" class="btnType btnType10" onclick="javascript:fnTestSend(); return false;">테스트발송</button>
-		                    </div>
-	                    </div>
-                        <div class="rev_selected">
-                            <div class="rev_top">
-               		            <span>날짜 :</span>
-               		            <div class="calendar_wrap">
-									<input type="text" class="startDate2 inp resDate calendar02" title="검색 시작일" id="startDate2" name="startDate2" value="" data-datecontrol="true">
-								</div>
-               		            <label for="msgResHour" class="label">시 선택</label>
-								<div class="selBox">
-		       		            	<select class="selType1" id="msgResHour" name="msgResHour">
-		       		            		<c:forEach  var="hour"  begin="0" end="23" step="1" varStatus="status">
-		       		            			<c:choose>
-		       		            				<c:when test="${hour < 10}">
+					<div class="rev_selected">
+						<div class="rev_top">
+               		        <span>날짜 :</span>
+							<div class="calendar_wrap">
+								<input type="text" class="startDate2 inp resDate calendar02" title="검색 시작일" id="startDate2" name="startDate2" value="" data-datecontrol="true">
+							</div>
+							<label for="msgResHour" class="label">시 선택</label>
+							<div class="selBox">
+								<select class="selType1" id="msgResHour" name="msgResHour">
+		       		            	<c:forEach  var="hour"  begin="0" end="23" step="1" varStatus="status">
+		       		            		<c:choose>
+		       		            			<c:when test="${hour < 10}">
 		         		            			<option value="0${hour}">0${hour}시</option>
-		       		            				</c:when>
-		       		            				<c:otherwise>
-		       		            					<option value="${hour}">${hour}시</option>
-		       		            				</c:otherwise>
-		       		            			</c:choose>
-		       		            		</c:forEach>
-		       		            	</select>
-		       		            	<label for="msgResMin" class="label">분 선택</label>
-		       		            	<select class="selType1" id="msgResMin" name="msgResMin">
-		       		            		<c:forEach var="min" begin="0" end="55" step="5">
-		       		            			<c:choose>
-		       		            				<c:when test="${min < 10}">
+		       		            			</c:when>
+		       		            			<c:otherwise>
+		       		            				<option value="${hour}">${hour}시</option>
+		       		            			</c:otherwise>
+		       		            		</c:choose>
+		       		            	</c:forEach>
+		       		            </select>
+		       		            <label for="msgResMin" class="label">분 선택</label>
+		       		            <select class="selType1" id="msgResMin" name="msgResMin">
+		       		            	<c:forEach var="min" begin="0" end="55" step="5">
+		       		            		<c:choose>
+		       		            			<c:when test="${min < 10}">
 		         		            			<option value="0${min}">0${min}분</option>
-		       		            				</c:when>
-		       		            				<c:otherwise>
-		       		            					<option value="${min}">${min}분</option>
-		       		            				</c:otherwise>
-		       		            			</c:choose>
-		       		            		</c:forEach>
-		       		            	</select>
-								</div>
-               		        </div>
-                           	<div class="rev_bottom">
-             		            <input type="checkbox" id="divideChk" name="divideChk">
-             		            <label for="divideChk">분할전송</label>
-             		            <input type="text" class="dividType1" id="divideCnt" name="divideCnt" value="20" onkeypress='return checkNumber(event)' maxlength="4"/>
-     		            		<label for="divideCnt">건씩</label>
-             		            <select class="selType1" id="divideTime" name="divideTime">
-             		                <option value="1">01분</option>
-		        		            <option value="2">02분</option>
-		        		            <option value="3">03분</option>
-		        		            <option value="4">04분</option>
-             		                <option value="5">05분</option>
-             		                <option value="10">10분</option>
-             		                <option value="15">15분</option>
-             		                <option value="20">20분</option>
-             		                <option value="30">30분</option>
-             		            </select>
-             		            <label for="divideTime">간격</label>
-             		        </div>
-                        </div>
-                    </div>
-                </div>
-             </div>
-        </div>
+		       		            			</c:when>
+		       		            			<c:otherwise>
+		       		            				<option value="${min}">${min}분</option>
+		       		            			</c:otherwise>
+		       		            		</c:choose>
+		       		            	</c:forEach>
+		       		            </select>
+							</div>
+               		    </div>
+						<div class="rev_bottom">
+							<input type="checkbox" id="divideChk" name="divideChk">
+							<label for="divideChk">분할전송</label>
+							<input type="text" class="dividType1" id="divideCnt" name="divideCnt" value="20" onkeypress='return checkNumber(event)' maxlength="4"/>
+							<label for="divideCnt">건씩</label>
+							<select class="selType1" id="divideTime" name="divideTime">
+								<option value="1">01분</option>
+								<option value="2">02분</option>
+								<option value="3">03분</option>
+								<option value="4">04분</option>
+								<option value="5">05분</option>
+								<option value="10">10분</option>
+								<option value="15">15분</option>
+								<option value="20">20분</option>
+								<option value="30">30분</option>
+							</select>
+							<label for="divideTime">간격</label>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
 </form>
 
+<form id="sentListForm" name="sentListForm" method="post">
+	<input type="hidden" name="pageType"  value=""/>
+	<input type="hidden" name="pageIndex" value=""/>
+	<input type="hidden" name="msgSentType" value=""/>
+	<input type="hidden" name="searchSortCnd" value="" />
+	<input type="hidden" name="searchSortOrd" value="" />		
+</form>
+	
 <form id="latestMsgForm" name="latestMsgForm" method="post">
 	<input type="hidden" id="userId" name="userId" value="${LoginVO.id}"/>
 </form>
src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataView.jsp
--- src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataView.jsp
@@ -202,21 +202,20 @@
 	document.location.href = "/web/mjon/msgcampain/selectMsgDataView.do";
 }
 
+// 문자
 function listMsgDataView(){
 	
 	var sendData = $(document.searchForm).serializeArray() ;
 	$(".contentArea").load("/web/mjon/msgcampain/selectMsgDataSMLViewAjax.do", sendData ,function(response, status, xhr){
 		
-		//문자 재전송 처리를 위해 사용
-		$("#msgForm").ready(function(){	//문자 내용 폼이 로드된 후 실행
+		//문자 내용 폼이 로드된 후 실행
+		$("#msgForm").ready(function(){	
 			
 			var msgResendFlag = '${reSendMsgVO.msgResendFlag}';
 			var msgSeqList = [];
 			msgSeqList = '${reSendMsgVO.msgSeqList}';
 			if(msgSeqList.length > 0){
-					
 				fnMsgResend(msgResendFlag, msgSeqList);
-				
 			}
 
 			//주소록에서 주소를 전송한 경우 처리
@@ -227,6 +226,7 @@
 				fnAddrSet(moveAddrFlag, addrIdList);
 			}		
 			
+			
 			// 문자 재전송 New
 			if (msgResendAllFlag == "Y") {
 				if (msgResendAllReplaceYn != "Y") {
@@ -236,10 +236,9 @@
 
 				// 문자 상세정보 => 재전송용
 				getMjMsgListByResend();
-			}	
+			}
 			
-		});	
-		
+		});
 		
 	}).slideDown();
 }
@@ -379,77 +378,17 @@
 						//수신자 처리 변수
 						var callToList = [];	//수신자 처리 리스트
 						var tableData = [];		//수신자 tabulator 처리 변수
-						
-						//var subject = data.resultList[0].subject;	//제목
-						//var smsTxt = data.resultList[0].smsTxt;		//문자내용
-						//var fileCnt = data.resultList[0].fileCnt;		//그림문자 이미지 갯수
-						//var filePath1 = data.resultList[0].fileType1;	//이미지1 파일 경로
-						//var filePath2 = data.resultList[0].fileType2;	//이미지2 파일 경로
-						//var filePath3 = data.resultList[0].fileType3;	//이미지3 파일 경로
 						var atchFileId1 = photoInfo.atchFileId1;		//이미지1 파일 번호
 						var atchFileId2 = photoInfo.atchFileId2;		//이미지2 파일 번호
 						var atchFileId3 = photoInfo.atchFileId3;		//이미지3 파일 번호
 						
-						/* if(smsTxt != null){
-							
-							$("#smsTxtArea").val(smsTxt);
-							fnByteString(smsTxt);
-							
-						}
-						
-						if(subject != null){
-							
-							$("#mmsSubject").val(subject);
-							
-						}
-						
-						if(fileCnt > 0){ //문자 내용 이미지 처리해주기
-							
-							for(var i=0; i < fileCnt; i++){
-								
-								var imgId = "";
-								var imgSrc = "";
-								
-								if(i == 0){
-									
-									imgSrc = filePath1.replace("/usr/local/tomcat_mjon/webapps/mjon","");
-									imgId = atchFileId1;
-									
-								}else if(i == 1){
-									
-									imgSrc = filePath2.replace("/usr/local/tomcat_mjon/webapps/mjon","");
-									imgId = atchFileId2;
-									
-								}else{
-									
-									imgSrc = filePath3.replace("/usr/local/tomcat_mjon/webapps/mjon","");
-									imgId = atchFileId3;
-									
-								}
-								
-								myMsgImageControl(imgSrc, "edit_n", "Template", imgId);
-								
-							}
-							
-						} */
-						
 						for(var i = 0; i < listCnt; i++){ // 수신자 리스트 Tabulator에 입력해 주기
-							
 							callToList[i] = data.resultList[i].callTo;
 							tableData.push({phone: removeDash(callToList[i])});
-							
 						}
 						
 						if(tableData.length > 0){
-							
 							tableL.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기
-							
-							//totRows = tableL.getRows().length; 
-							//updateTotCnt(totRows); //전체 데이터 갯수 구하기
-							
-							//결제 금액 구하기
-						    //totalPriceSum(totRows); 
-							
 						}
 						
 						return false;
@@ -462,9 +401,7 @@
 			},
 	        error: function (e) { alert("문자 재전송 번호 등록에 실패하였습니다."); console.log("ERROR : ", e); }
 	    });
-		
 	}
-	
 }
 
 function fnLetterListAjax(index){
@@ -589,43 +526,23 @@
 }
 
 function fnMyMsgSearchListAjax(index){
-	
 	document.myMsgForm.pageIndex.value = index;
 	var sendData = $(document.myMsgForm).serializeArray();
 	$("#myMsgLoad").load("/web/mjon/msgcampain/selectMyMsgDataListAjax.do", sendData ,function(response, status, xhr){
-		
-		/* $(".msg_cont").mCustomScrollbar({
-			axis: 'y',
-			scrollbarPosition: "inside",
-			theme: "dark",
-			autoHideScrollbar: false
-		}); */
-		
 	});
-	
 }
 
+// 엑셀문자텝 보기
 function fnMsgExcelDataView(){
-	
-	/* var sendData = $(document.searchForm).serializeArray() ;
-	
-	//엑셀 문자 탭 활성화 시키기
-	TabType1($('.tabType1 li').eq(1), '2');
-	
-	$(".contentExcelArea").load("/web/mjon/msgcampain/selectMsgExcelDataViewAjax.do", sendData ,function(response, status, xhr){
-	}); */
-	
 	location.href="/web/mjon/msgcampain/excel/selectMsgExcelDataView.do";
-	
 }
 
 function fnMsgTWDataView(){
-	
 	location.href="/web/mjon/msgcampain/selectMsgTWDataView.do";
-	
 }
 
-function fn_saveMyMsg(){ // 내 문자 보관함 저장
+//내 문자 보관함 저장
+function fn_saveMyMsg(){
 	
 	var form = document.msgForm;
 	var myImgFileId = [];			//신규 이미지 추가 파일 Id 저장 변수
@@ -670,11 +587,7 @@
 				async: false,
 				success: function (returnData, status) {
 					if(status == 'success'){
-						// imgFilePath 에 배열로 담아주기(이미지 순서대로)
-						//console.log(imgFilePath);
-						//imgFilePath.push(returnData.filefullPath);
 						myImgFileId.push(returnData.atchFileId);
-						
 					} else if(status== 'fail'){
 						alert(returnData.message);
 					}
@@ -873,32 +786,12 @@
 	var spamStatus = false;
 	var exceptSpamYn = $("#exceptSpamYn").val(); //금지어 필터링 예외 여부 - N 일 경우만 스팸 검사를 진행
 	
-/* 	//이벤트 진행중 회원의 경우 이벤트 잔여금액 비교 처리 필요.
-	var eventStatus = form.eventStatus.value;
-	var eventRemainCash = parseFloat(form.eventRemainCash.value);
-	
-	if(eventStatus == 'Y'){
-		
-		if(parseFloat(eventRemainCash) < parseFloat(totPriceOnly)){
-			
-			alert("고객님의 이벤트 캐시 잔액은 " + eventRemainCash + "원으로 입력하신 수량의 문자를 전부 발송할 수 없습니다. 잔액 이하로 발송건수를 재설정하시기 바랍니다.");
-			return false;
-		}
-		
-	} */
-	
 	if(loginVO == "" || loginVO == null){
 		
 		alert("문자발송 서비스는 로그인 후 이용 가능합니다.");
 		return false;
 		
 	}
-	
-	//MJ_MSG_GROUP_DATA 누락데이터 체크
-	//if (getMsgGroupDataErrorCheck() == false) {
-	//	alert("고객님께서 발송한 최근문자가 발송결과에 표시되지않아, 문자발송이 임시로 차단되었습니다.\n문자온 고객센터에 문의해주세요.");
-	//	return false;	 	
-	//}
 	
 	if(form.callFromList.value == ""){
 		
@@ -940,19 +833,6 @@
 		alert("입력하신 문구 중 \" " + rtnStr + " \" 는 일부 휴대폰에서 표기되지 않을 수 있습니다.");
 		
 	}
-	
-	//문자내용 첫글자에 특수기호 포함 여부 체크
-	/* var strCont = form.smsTxtArea.value;
-	var repStr = strFirstCharCheck(strCont);
-	
-	if(repStr.length > 0){
-		
-		alert("문자 내용 첫 글자는 특수기호가 들어갈 수 없습니다.");
-		$('#smsTxtArea').val(strCont.replace(repStr, ""));
-		fnByteString(strCont.replace(repStr, ""));
-		return false;
-		
-	} */
 	
 	if(imgFilePath.length == 0){ // 그림문자일 경우 내용이 없어도 됨 , 장문 문자일 경우만 문자내용 체크함
 		
@@ -1066,11 +946,8 @@
 					}
 					rep4List[i] = rep4.replaceAll(",","§");
 				}
-				
 			}
-			
 		}
-	
 	}
 	
 	var reserYn = $("input[name=reserYn]:checked").val(); // 예약 발송 여부 확인
@@ -1813,15 +1690,6 @@
 		var sendData =  $(document.myMsgForm).serializeArray();
 		
 		$("#myMsgLoad").load("/web/mjon/msgcampain/deleteMyMsgDataListAjax.do", sendData ,function(response, status, xhr){
-			
-			//문자 내용 스크롤 적용
-			/* $(".msg_cont").mCustomScrollbar({
-				axis: 'y',
-				scrollbarPosition: "inside",
-				theme: "dark",
-				autoHideScrollbar: false
-			}); */
-			
 		});
 		
 	}else{
@@ -1911,7 +1779,6 @@
 
 function msgSpamClose(obj){
 	$(obj).closest('.pop_msg_spam').attr('style','');
-	//location.href="/web/uat/uia/actionLogout.do";
 }
 
 function msgResultLink(){
@@ -2112,12 +1979,6 @@
 			<div class="bottom_content" id="tab2_2">
 				<div class="area_tabs">
 					<div class="top_tab">
-						<!-- <div class="tab_depth1 tDep2_mType">
-							<a href="#none" class="on" value="">전체</a>
-							<a href="#none" value="B">기업</a>
-							<a href="#none" class="on" value="P">개인</a>
-							<div class="on_active">전체</div>
-						</div> -->
 						<div class="tab_depth2 tDep2_letType">
 							<a href="#none" class="on" value="P">그림문자</a>
 						</div>
@@ -2323,6 +2184,7 @@
 	</div>
 	<!--// 맞춤제작 요청 레이어 팝업 -->		
 </div>
+
 <form id="msgResendForm" name="msgResendForm" method="post">
 	<input name="msgResendFlag" type="hidden" value="N"/>
 	<input name="msgSeqList" type="hidden" value=""/>
src/main/webapp/WEB-INF/jsp/web/msgcampain/include/msgDataIncludeExcel.jsp
--- src/main/webapp/WEB-INF/jsp/web/msgcampain/include/msgDataIncludeExcel.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgcampain/include/msgDataIncludeExcel.jsp
@@ -69,9 +69,6 @@
 	    },
 	});
 	
-	
-    
-	
 	// 타뷸레이터 width값 변경 시 위에 select width 값 변경
 	var titleArray = ["No","A","B","C","D","E","F"];
 
@@ -83,7 +80,6 @@
 			$('.select_adr_hd>div').eq(titleIndex).css('width', column._column.width);
 		}else{
 			$('.select_adr_hd>div').eq(0).css('width', column._column.width);
-			
 		}
 	});
 
@@ -96,9 +92,6 @@
 		$(".tabulator-tableholder").scrollLeft($(this).scrollLeft());
 	});
 
-	
-	
-
     $("#excelFile").on("change", function(event) {
     	var fileInfo =  event.target.files;
         if(fileInfo.length > 0){
@@ -108,25 +101,27 @@
             setTimeout(() => { $(this).val(''); }, 0);  // 파일 선택 초기화
         }
     });
-	
 
-
+	// 대량등록 팝업닫기
     $(document).on('click', '#btnAddrMassClose', function() {
-
-    	$('.field-selector').each(function() { $(this).val(''); });
     	setAddrMassClose();
     });
-    
-
+	
+    // 대량등록 팝업닫기
     $(document).on('click', '#closeBtn', function() {
-    	// 대량등록 닫기
     	setAddrMassClose();
     });
-    
 
+ 	// excel 오류정보 테스트
+	$(document).on('click', '#errorExcelBtn', function() {
+		if($tableError.getDataCount()<1){
+			alert('오류 정보가 없습니다.');
+			return false;
+		}
+		$tableError.download("xlsx", "error_data.xlsx");
+	});
     
-
- // 엑셀등록 닫기
+ 	// 엑셀등록 초기화 값 설정
 	function setAddrMassClose() {
 		$tableExcel.clearData();
 		$("#excelRowTotCnt").text(0); //총건수 수정
@@ -135,6 +130,7 @@
 		dupliPhoneDataRealList.length = 0;	// 중복 휴대폰번호 초기화
 		addrMassDupliSaveList = null;
 		
+		$('#excelFile').val(''); //첨부파일 값 초기화
 		
 		// popup 영역
 		$tableError.clearData();
@@ -144,49 +140,43 @@
 		$("#errorPopErrorCnt").text(0);
 		// 
 		$("#errorPopTotCnt").text(0);
-
-		
+		// select 선택값 초기화
+		$('.field-selector').each(function() { $(this).val(''); });
 	}
     
-  //#############################################################################################
-  //파일업로드 드래그앤 드롭
-  //#############################################################################################
-  var objDragAndDrop = $(".upload_area");
-  $(document).on("dragenter",".upload_area",function(e){
-    e.stopPropagation();
-    e.preventDefault();
-    //$(this).css('border', '2px solid #0B85A1');
-  });
-  $(document).on("dragover",".upload_area",function(e){
-    e.stopPropagation();
-    e.preventDefault();
-  });
-  $(document).on("drop",".upload_area",function(e){
-  	fn_loadAddActive();
-  	e.preventDefault();
-  	var files = e.originalEvent.dataTransfer.files;
-  	excelFileChange(files[0]);
-  });
-
-  $(document).on('dragenter', function (e){
-    e.stopPropagation();
-    e.preventDefault();
-  });
-  $(document).on('dragover', function (e){
-  	e.stopPropagation();
-  	e.preventDefault();
-  //objDragAndDrop.css('border', '2px dotted #0B85A1');
-  });
-  $(document).on('drop', function (e){
-    e.stopPropagation();
-    e.preventDefault();
-  });
-  //파일 드래그앤드롭 종료
+	//#############################################################################################
+	//파일업로드 드래그앤 드롭
+	//#############################################################################################
+	var objDragAndDrop = $(".upload_area");
+	$(document).on("dragenter",".upload_area",function(e){
+		e.stopPropagation();
+		e.preventDefault();
+	});
+	$(document).on("dragover",".upload_area",function(e){
+		e.stopPropagation();
+		e.preventDefault();
+	});
+	$(document).on("drop",".upload_area",function(e){
+		fn_loadAddActive();
+		e.preventDefault();
+		var files = e.originalEvent.dataTransfer.files;
+		excelFileChange(files[0]);
+	});
 	
-	
-	
-	
-
+	$(document).on('dragenter', function (e){
+		e.stopPropagation();
+		e.preventDefault();
+	});
+	$(document).on('dragover', function (e){
+		e.stopPropagation();
+		e.preventDefault();
+	});
+	$(document).on('drop', function (e){
+		e.stopPropagation();
+		e.preventDefault();
+	});
+  	//파일 드래그앤드롭 종료
+  
 	//타이틀 select 선택 이벤트
 	 $('.field-selector').on('change', function() {
 		fn_loadAddActive();
@@ -215,8 +205,7 @@
 					selectedFields.push(selectedField);
 				}
 			});
-	
-	
+			
 			// 
 			updateTableFields($tableExcel);
 			
@@ -228,44 +217,42 @@
 
 		}, 0); // 지연 없이 즉시 실행되도록 0ms 지연을 설정
 		
-		
 	});
 	
-  
+	//받는사람 전체삭제 버튼 처리
+	$('#allDel').click(function(){
+		var data = $tableExcel.getRows();	
+		$tableExcel.clearData();
+		$("#excelRowTotCnt").text(0); //총건수 수정
+		$("#excelRowDupCnt").text(0); //중복건수 수정
+		dupliPhoneDataRealList.length = 0;	// 중복 휴대폰번호 초기화
+		
+		// select box 초기화
+		$('.field-selector').each(function() { $(this).val(''); });
+		
+	});
 
 	// 받는사람 선택삭제 버튼 처리해주기
 	$('#in_select_del').click(function(){
 		
 		if($tableExcel == null || $tableExcel == ""){
-			
 			alert("받는사람을 추가해 주세요.");
 			return false;
-		
 		}
 		
 		var selectedData = $tableExcel.getSelectedRows();
 		
 		if(selectedData == "" || selectedData == null){
-			
 			alert("삭제할 연락처를 선택해주세요.");
 			return false;
-		
 		}else{ // 선택한 Row 데이터 삭제하기
-			
 			if(confirm("선택하신 받는 사람을 삭제하시겠습니까?")){
-				
 				// 선택 데이터 삭제
 			    selectedData.forEach(row => row.delete());
-			    
-			    
 				totRows = $tableExcel.getRows().length;
 			    $("#excelRowTotCnt").text(totRows);
-			    
-				
 			}
-
 		}
-		
 	});
 
 	// 추가버튼
@@ -282,16 +269,12 @@
 		
 		
 		// tableExcel 그룹의 select 요소들을 확인
-//	 	var isPhoneSelected = false;
-//	 	var isNameSelected = false;
 		var columns = $tableExcel.getColumns();
 		var isAddrPhoneNoSelected = columns.some(column => column.getField() === 'addrPhoneNo');
 
 		if (!isAddrPhoneNoSelected) {
-//			    isPhoneSelected = true;
 			alert('휴대폰이 선택되지 않았습니다.');
 			return false;
-
 		} 
 		
 		var addrData = $tableExcel.getData().map((row, index) => ({
@@ -303,20 +286,12 @@
 		    rep4: row.addrInfo4,
 		}));
 
-		
-		
-		
-		
-
 		// 기존 tableL의 데이터를 가져옵니다.
 		var existingData = tableL.getData();
 		// 기존 데이터와 새로운 데이터를 합칩니다.
 		var combinedData = existingData.concat(addrData);
 		// 합쳐진 데이터를 tableL에 설정합니다.
 		tableL.setData(combinedData);
-		
-		// 미리보기 버튼 활성화
-		updateButtons(0);
 		
 		var totRows = tableL.getRows().length; 
 		updateTotCnt(totRows); //전체 데이터 갯수 구하기
@@ -334,34 +309,13 @@
 			
 			//결제 금액 구하기
 		    totalPriceSum(totRows);
-			
 		} 
 		
 		setAddrMassClose();
 		$('.field-selector').each(function() { $(this).val(''); });
 		$('#closeBtn').click();
 	});
-		
-  
-
-	//받는사람 전체삭제 버튼 처리
-	$('#allDel').click(function(){
-		var data = $tableExcel.getRows();	
-		$tableExcel.clearData();
-		$("#excelRowTotCnt").text(0); //총건수 수정
-		$("#excelRowDupCnt").text(0); //중복건수 수정
-		dupliPhoneDataRealList.length = 0;	// 중복 휴대폰번호 초기화
-		
-		// select box 초기화
-		$('.field-selector').each(function() { $(this).val(''); });
-		
-	});
-	
-  
-  
 });
-
-
 
 function excelFileChange(file) {
 	if (file) {
@@ -404,26 +358,20 @@
 
 // 엑셀 데이터 처리 함수
 function processExcelData(data) {
- var keys = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
- var tableData = [];
- var totalRows = data.length - 2; // 전체 데이터 수 (1, 2행 제외)
-
-
- // 3번째 행부터 입력 
- data.slice(0).forEach((row, index) => {
-     var rowData = {};
-     keys.forEach((key, idx) => { // index 변수명 변경 (내부와 외부에서 사용되므로 충돌 방지)
-//      console.log('row[idx] : ', row[idx]);
-//          rowData[key] = row[idx] ? row[idx].trim() : ""; // 각 컬럼에 대해 기본값을 설정
-         rowData[key] = (typeof row[idx] === 'string') ? row[idx].trim() : row[idx];
-     });
-     tableData.push(rowData);
-
- });
-
- updateTable(tableData);
+	var keys = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
+	var tableData = [];
+	
+	data.slice(0).forEach((row, index) => {
+		var rowData = {};
+		keys.forEach((key, idx) => { // index 변수명 변경 (내부와 외부에서 사용되므로 충돌 방지)
+			rowData[key] = (typeof row[idx] === 'string') ? row[idx].trim() : row[idx];
+		});
+		
+		tableData.push(rowData);
+	});
+	
+	updateTable(tableData);
 }
-
 
 // 텍스트 데이터 처리 함수
 function processTextData(text) {
@@ -437,6 +385,7 @@
 		keys.forEach((key, index) => {
 			rowData[key] = row[index] ? row[index].trim() : ""; // 각 컬럼에 대해 기본값을 설정
 		});
+		
 		tableData.push(rowData);
 	});
 	
@@ -448,7 +397,7 @@
 	$tableExcel.setColumns([ //Define Table Columns
  		{formatter:"rowSelection", titleFormatter:"rowSelection",clipboard:false, headerHozAlign:"center", hozAlign:"center", headerSort:false, cellClick:function(e, cell){
  	        cell.getRow().toggleSelect();
-	 		}
+			}
 	 	}, 
 		{formatter:"rownum", align:"center" ,title:"No", hozAlign:"center", headerHozAlign:"center", width:60},
 	 	{title:"A", field:"A", hozAlign:"center", headerHozAlign: "center", width:140, validator:["maxLength:100", "string"]},
@@ -695,249 +644,186 @@
 		<div class="popup_btn_wrap2" style="margin-top: 0px;">
 			<button type="button" class="tooltip-close" data-focus="addrMassDupli_layer-close" data-focus-next="addrMassDupli_layer">닫기</button>
 		</div>		
-		
 	</div>		
 </div>
 
 
 <!-- 주소록 상세 결과 팝업 data-tooltip:adr_popup14 -->
-	<div class="tooltip-wrap">
-		<div class="popup-com adr_layer adr_popup14" tabindex="0" data-tooltip-con="adr_popup14" data-focus="adr_popup14" data-focus-prev="adr_popu14-close" style="width: 450px;">
-			<div class="popup_heading">
-				<p>주소록 상세 결과</p>
-				<button type="button" class="tooltip-close" data-focus="adr_popup14-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
+<div class="tooltip-wrap">
+	<div class="popup-com adr_layer adr_popup14" tabindex="0" data-tooltip-con="adr_popup14" data-focus="adr_popup14" data-focus-prev="adr_popu14-close" style="width: 450px;">
+		<div class="popup_heading">
+			<p>주소록 상세 결과</p>
+			<button type="button" class="tooltip-close" data-focus="adr_popup14-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
+		</div>
+		<div class="layer_in" style="padding:30px 20px;">
+			<div class="table_top">
+				<p>
+				총 <span class="c_e40000" id="errorPopTotCnt">0</span>건 
+				/ 중복 <span class="c_002c9a" id="errorPopDupCnt">0</span>건
+				/ 오류 <span class="c_002c9a" id="errorPopErrorCnt">0</span>건</p>
+				<button type="button" class="excel_btn btnType" id="errorExcelBtn"><i class="downroad"></i>엑셀 다운로드</button>
 			</div>
-			<div class="layer_in" style="padding:30px 20px;">
-				<div class="table_top">
-					<p>
-						총 <span class="c_e40000" id="errorPopTotCnt">0</span>건 
-						/ 중복 <span class="c_002c9a" id="errorPopDupCnt">0</span>건
-						/ 오류 <span class="c_002c9a" id="errorPopErrorCnt">0</span>건</p>
-						<button type="button" class="excel_btn btnType" id="errorExcelBtn"><i class="downroad"></i>엑셀 다운로드</button>
-				</div>
-				<div class="tb_wrap adr_list" id="tabulator_error">
+			<div class="tb_wrap adr_list" id="tabulator_error">
 				<!-- $tableError 참고  -->
-                </div>
-                <ul class="cf_text_ul">
-                    <li>*중복번호는 하나의 번호만 등록됩니다.</li>
-                    <li>*휴대폰 형식에 맞지 않는 데이터는 삭제 후 업로드 됩니다.</li>
-                    <li>ex) 발송불가 특수문자, 자릿수 오류 등</li>
-                </ul>
-                <div class="popup_btn_wrap2">
-<!--                     <button type="button">저장</button> -->
-                    <button type="button" class="tooltip-close" data-focus="adr_popup14-close" data-focus-next="adr_popup14">닫기</button>                      
-                </div>
+			</div>
+			<ul class="cf_text_ul">
+				<li>*중복번호는 하나의 번호만 등록됩니다.</li>
+				<li>*휴대폰 형식에 맞지 않는 데이터는 삭제 후 업로드 됩니다.</li>
+				<li>ex) 발송불가 특수문자, 자릿수 오류 등</li>
+			</ul>
+			<div class="popup_btn_wrap2">
+				<button type="button" class="tooltip-close" data-focus="adr_popup14-close" data-focus-next="adr_popup14">닫기</button>                      
 			</div>
 		</div>
 	</div>
+</div>
 
-<!--// 중복전화번호 팝업 -->
-				<div class="popup_heading">
-					<p>엑셀 불러오기</p>
-					<button type="button" class="tooltip-close" id="closeBtn" data-focus="popup02-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
-			   </div>
-				<div class="layer_in" style="padding: 25px 30px;">
-<!-- 					<div class="list_tab_wrap2"> -->
-						<!-- tab button -->
-<!-- 						<ul class="list_tab" id="tbTabl">  -->
-<!-- 							<li class="tab active" data-tabul="tableExcel"><button type="button" onclick="popupTab(this,'1'); fn_tabToggle('1');">엑셀입력</button></li> -->
-<!-- 							<li class="tab" data-tabul="tableClip"><button type="button" onclick="popupTab(this,'2'); fn_tabToggle('2');">붙여넣기</button></li> -->
-<!-- 							<li class="tab" data-tabul="tableSelf"><button type="button" onclick="popupTab(this,'3'); fn_tabToggle('3');">직접입력</button></li> -->
-<!-- 						</ul>// tab button -->
-<!-- 					</div> -->
-					<!-- 엑셀입력 -->
-					<div class="popCont current pop_more_cont" id="popCont_1">
-						<div class="titBox">
-							<p>- 주소록은 한 번에 최대 30만건까지 등록(EXCEL파일, 최대용량 20MB) 가능합니다. </p>
-							<p>- 엑셀 파일에 비밀번호 설정, 제한된 보기, 수식 등이 설정되어 있는 경우 업로드가 불가합니다.</p>
-							<p>- 구분선(|), 역슬래시(\, ₩), 큰따옴표(") 등 발송불가 특수문자는 저장되지 않습니다.</p>
-							<p>- 이름 200byte, [*1*]~[*4*] 200byte, 메모 250byte까지 입력 가능합니다.</p>
-							<p>- 주소록 등록이 어려우신 경우에는 <a href="<c:url value='/web/mjon/addragency/selectAddrAgencyList.do'/>" style="font-weight: bold; color: blue;">주소록 입력대행</a> 메뉴를 이용하실 수 있습니다. </p>
-						</div>
-						<div class="pop_more_wrap">
-								<button type="button" class="pop_more" onclick="popMore(this);">더보기<i></i></button>
-						</div>
-					</div><!--// 엑셀입력 -->
+<div class="popup_heading">
+	<p>엑셀 불러오기</p>
+	<button type="button" class="tooltip-close" id="closeBtn" data-focus="popup02-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
+</div>
+<div class="layer_in" style="padding: 25px 30px;">
 
-					<!-- 공통 -->
-					<div>
-		                <table class="layer_tType1">
-		                    <caption>엑셀입력 표</caption>
-		                    <colgroup>
-		                        <col style="width: 95px">
-		                        <col style="width: auto">
-		                    </colgroup>
-		                    <tbody>
-		                        <tr>
-		                            <!-- <th>그룹 선택</th>
-		                            <td>
-		                                <label for="" class="label">그룹 선택</label>
-		                                <select id="addrGrpIdInfo" name="addrGrpIdInfo">
-		                                </select>
-	                                    <label for="" class="label">그룹명 입력</label>
-	                                    <input type="text" id="addrGrpNm" name="addrGrpNm" placeholder="새 그룹명을 입력해주세요." onfocus="this.placeholder=''" onblur="this.placeholder='새 그룹명을 입력해주세요.'"class="inputLight" style="width: 300px;">
-		                                <input type="file" id="excelFile" accept=".xls, .xlsx, .txt" style="display:none"/>
-		                                <button type="button" class="excel_btn2 btnType c3"><i class="uproad"></i>엑셀, TXT파일 업로드</button>
-		                            </td> -->
-		                            <td colspan="2" style="padding:20px 0;">
-		                            	<div class="file_upload_wrap" style="width:100%;display:flex;">
-						                	<div class="file_add upload_area">
-												<p><img src="/publish/images/content/file_add.png" alt="파일 붙여넣기">마우스로 엑셀, TXT파일을 여기에 끌어다 놓으세요</p>
-											</div>
-											<input type="file" id="excelFile" accept=".xls, .xlsx, .txt" style="display:none"/>
-					                        <button type="button" class="excel_btn2 btnType c3"><i class="uproad"></i>엑셀, TXT파일 업로드</button>
-						                </div>
-		                            </td>
-		                        </tr>
-		                    </tbody>
-		                </table>
-	                </div>
-	                
-					
-					<div class="excel_middle2">
-						<p>
-							총 <span class="c_e40000 fwBold" id="excelRowTotCnt">0</span>건 
-							/ 중복 <span class="c_002c9a fwBold" id="excelRowDupCnt">0</span>건
-							/ 오류 <span class="c_002c9a fwBold" id="excelRowErrorCnt">0</span>건
-							<button type="button" class="btn_list_detail" data-tooltip="adr_popup14"><img src="/publish/images/search.png"></button>
-						</p>
-<!-- 							&nbsp;  -->
-<!-- 							<button type="button" class="btnType btnType6" data-tooltip="addrMassDupli_layer" id="tableExcelDupliBtn">중복번호</button> -->
-<!-- 							&nbsp; -->
-<!-- 							<button type="button" class="btnType btnType6" data-tooltip="addrMassSaveDupli_layer" onclick="GetAddrMassSaveDupli()" id="btnAddrMassSaveDupli">중복번호</button> -->
-						</p>
-<!-- 						<button type="button" class="btnType btnType6 addCallToF">번호추가</button> -->
-					</div>
-					
-					
-					
+	<!-- 엑셀입력 -->
+	<div class="popCont current pop_more_cont" id="popCont_1">
+		<div class="titBox">
+			<p>- 주소록은 한 번에 최대 30만건까지 등록(EXCEL파일, 최대용량 20MB) 가능합니다. </p>
+			<p>- 엑셀 파일에 비밀번호 설정, 제한된 보기, 수식 등이 설정되어 있는 경우 업로드가 불가합니다.</p>
+			<p>- 구분선(|), 역슬래시(\, ₩), 큰따옴표(") 등 발송불가 특수문자는 저장되지 않습니다.</p>
+			<p>- 이름 200byte, [*1*]~[*4*] 200byte, 메모 250byte까지 입력 가능합니다.</p>
+			<p>- 주소록 등록이 어려우신 경우에는 <a href="<c:url value='/web/mjon/addragency/selectAddrAgencyList.do'/>" style="font-weight: bold; color: blue;">주소록 입력대행</a> 메뉴를 이용하실 수 있습니다. </p>
+		</div>
+		<div class="pop_more_wrap">
+			<button type="button" class="pop_more" onclick="popMore(this);">더보기<i></i></button>
+		</div>
+	</div>
+	<!--// 엑셀입력 -->
 
-					<div class="adr_excel" style="margin-top: 13px; overflow-x:auto;">
-<!--                     <div class="adr_excel" style="margin-top: 13px;"> -->
-                        <!-- thead -->
-                        <div class="adr_hd select_adr_hd msg" data-group="tableExcel">
-                        	<div style="width: 100px;"></div>
-                            <div style="width: 100px;"></div>
-                            <div style="width: 140px;">
-                            	<label for="" class="label"></label>
-								<select class="field-selector">
-									<option value="">선택하기</option>
-									<option value="addrNm">이름</option>
-									<option value="addrPhoneNo">휴대폰</option>
-									<option value="addrInfo1">[*1*]</option>
-									<option value="addrInfo2">[*2*]</option>
-									<option value="addrInfo3">[*3*]</option>
-									<option value="addrInfo4">[*4*]</option>
-<!-- 									<option value="addrComment">메모</option> -->
-								</select>
-                            </div>
-                            <div style="width: 140px;">
-                                <label for="" class="label"></label>
-								<select class="field-selector">
-									<option value="">선택하기</option>
-									<option value="addrNm">이름</option>
-									<option value="addrPhoneNo">휴대폰</option>
-									<option value="addrInfo1">[*1*]</option>
-									<option value="addrInfo2">[*2*]</option>
-									<option value="addrInfo3">[*3*]</option>
-									<option value="addrInfo4">[*4*]</option>
-<!-- 									<option value="addrComment">메모</option> -->
-								</select>
-                            </div>
-                            <div style="width: 140px;">
-                                <label for="" class="label"></label>
-								<select class="field-selector">
-									<option value="">선택하기</option>
-									<option value="addrNm">이름</option>
-									<option value="addrPhoneNo">휴대폰</option>
-									<option value="addrInfo1">[*1*]</option>
-									<option value="addrInfo2">[*2*]</option>
-									<option value="addrInfo3">[*3*]</option>
-									<option value="addrInfo4">[*4*]</option>
-<!-- 									<option value="addrComment">메모</option> -->
-								</select>
-                            </div>
-                            <div style="width: 140px;">
-                                <label for="" class="label"></label>
-								<select class="field-selector">
-									<option value="">선택하기</option>
-									<option value="addrNm">이름</option>
-									<option value="addrPhoneNo">휴대폰</option>
-									<option value="addrInfo1">[*1*]</option>
-									<option value="addrInfo2">[*2*]</option>
-									<option value="addrInfo3">[*3*]</option>
-									<option value="addrInfo4">[*4*]</option>
-<!-- 									<option value="addrComment">메모</option> -->
-								</select>
-                            </div>
-                            <div style="width: 140px;">
-                                <label for="" class="label"></label>
-								<select class="field-selector">
-									<option value="">선택하기</option>
-									<option value="addrNm">이름</option>
-									<option value="addrPhoneNo">휴대폰</option>
-									<option value="addrInfo1">[*1*]</option>
-									<option value="addrInfo2">[*2*]</option>
-									<option value="addrInfo3">[*3*]</option>
-									<option value="addrInfo4">[*4*]</option>
-<!-- 									<option value="addrComment">메모</option> -->
-								</select>
-                            </div>
-                            <div style="width: 140px;">
-                                <label for="" class="label"></label>
-								<select class="field-selector">
-									<option value="">선택하기</option>
-									<option value="addrNm">이름</option>
-									<option value="addrPhoneNo">휴대폰</option>
-									<option value="addrInfo1">[*1*]</option>
-									<option value="addrInfo2">[*2*]</option>
-									<option value="addrInfo3">[*3*]</option>
-									<option value="addrInfo4">[*4*]</option>
-<!-- 									<option value="addrComment">메모</option> -->
-								</select>
-                            </div>
-                            <!-- <div style="width: 125px;">
-                                <label for="" class="label"></label>
-								<select class="field-selector">
-									<option value="">선택하기</option>
-									<option value="addrNm">이름</option>
-									<option value="addrPhoneNo">휴대폰</option>
-									<option value="addrInfo1">[*1*]</option>
-									<option value="addrInfo2">[*2*]</option>
-									<option value="addrInfo3">[*3*]</option>
-									<option value="addrInfo4">[*4*]</option>
-									<option value="addrComment">메모</option>
-								</select>
-                            </div> -->
-                        </div>
-                     </div>					
-					
-					<div class="drag_drop_wrap callList_includ_box" id="tabulator_excel">
-<!-- 						<img src="/publish/images/content/excel.jpg" style="width: 100%;"> -->
-					</div>
-					<div class="excel_middle">
-						<div class="select_btnWrap clearfix">
-							<div>
-								<button type="button" id="allDel"><i class="remove_img"></i>전체삭제</button>
-								<button type="button" id="in_select_del"><i class="remove_img"></i>선택삭제</button>
+	<!-- 공통 -->
+	<div>
+		<table class="layer_tType1">
+			<caption>엑셀입력 표</caption>
+			<colgroup>
+				<col style="width: 95px">
+				<col style="width: auto">
+			</colgroup>
+			<tbody>
+				<tr>
+					<td colspan="2" style="padding:20px 0;">
+						<div class="file_upload_wrap" style="width:100%;display:flex;">
+							<div class="file_add upload_area">
+								<p><img src="/publish/images/content/file_add.png" alt="파일 붙여넣기">마우스로 엑셀, TXT파일을 여기에 끌어다 놓으세요</p>
 							</div>
-	
+							<input type="file" id="excelFile" accept=".xls, .xlsx, .txt" style="display:none"/>
+							<button type="button" class="excel_btn2 btnType c3"><i class="uproad"></i>엑셀, TXT파일 업로드</button>
 						</div>
-					</div><!--// 공통 -->     
+					</td>
+				</tr>
+			</tbody>
+		</table>
+	</div>
+            
+	<div class="excel_middle2">
+		<p>
+			총 <span class="c_e40000 fwBold" id="excelRowTotCnt">0</span>건 
+			/ 중복 <span class="c_002c9a fwBold" id="excelRowDupCnt">0</span>건
+			/ 오류 <span class="c_002c9a fwBold" id="excelRowErrorCnt">0</span>건
+			<button type="button" class="btn_list_detail" data-tooltip="adr_popup14"><img src="/publish/images/search.png"></button>
+		</p>
+	</div>
+	<div class="adr_excel" style="margin-top: 13px; overflow-x:auto;">
+		<!-- thead -->
+		<div class="adr_hd select_adr_hd msg" data-group="tableExcel">
+			<div style="width: 100px;"></div>
+			<div style="width: 100px;"></div>
+			<div style="width: 140px;">
+				<label for="" class="label"></label>
+				<select class="field-selector">
+					<option value="">선택하기</option>
+					<option value="addrNm">이름</option>
+					<option value="addrPhoneNo">휴대폰</option>
+					<option value="addrInfo1">[*1*]</option>
+					<option value="addrInfo2">[*2*]</option>
+					<option value="addrInfo3">[*3*]</option>
+					<option value="addrInfo4">[*4*]</option>
+				</select>
+			</div>
+			<div style="width: 140px;">
+				<label for="" class="label"></label>
+				<select class="field-selector">
+					<option value="">선택하기</option>
+					<option value="addrNm">이름</option>
+					<option value="addrPhoneNo">휴대폰</option>
+					<option value="addrInfo1">[*1*]</option>
+					<option value="addrInfo2">[*2*]</option>
+					<option value="addrInfo3">[*3*]</option>
+					<option value="addrInfo4">[*4*]</option>
+				</select>
+			</div>
+			<div style="width: 140px;">
+				<label for="" class="label"></label>
+				<select class="field-selector">
+					<option value="">선택하기</option>
+					<option value="addrNm">이름</option>
+					<option value="addrPhoneNo">휴대폰</option>
+					<option value="addrInfo1">[*1*]</option>
+					<option value="addrInfo2">[*2*]</option>
+					<option value="addrInfo3">[*3*]</option>
+					<option value="addrInfo4">[*4*]</option>
+				</select>
+			</div>
+			<div style="width: 140px;">
+				<label for="" class="label"></label>
+				<select class="field-selector">
+					<option value="">선택하기</option>
+					<option value="addrNm">이름</option>
+					<option value="addrPhoneNo">휴대폰</option>
+					<option value="addrInfo1">[*1*]</option>
+					<option value="addrInfo2">[*2*]</option>
+					<option value="addrInfo3">[*3*]</option>
+					<option value="addrInfo4">[*4*]</option>
+				</select>
+			</div>                              
+			<div style="width: 140px;">         
+				<label for="" class="label"></label>
+				<select class="field-selector">
+					<option value="">선택하기</option>
+					<option value="addrNm">이름</option>
+					<option value="addrPhoneNo">휴대폰</option>
+					<option value="addrInfo1">[*1*]</option>
+					<option value="addrInfo2">[*2*]</option>
+					<option value="addrInfo3">[*3*]</option>
+					<option value="addrInfo4">[*4*]</option>
+				</select>
+			</div>
+			<div style="width: 140px;">
+				<label for="" class="label"></label>
+				<select class="field-selector">
+					<option value="">선택하기</option>
+					<option value="addrNm">이름</option>
+					<option value="addrPhoneNo">휴대폰</option>
+					<option value="addrInfo1">[*1*]</option>
+					<option value="addrInfo2">[*2*]</option>
+					<option value="addrInfo3">[*3*]</option>
+					<option value="addrInfo4">[*4*]</option>
+				</select>
+			</div>
+		</div>
+	</div>					
+	<div class="drag_drop_wrap callList_includ_box" id="tabulator_excel"></div>
+	<div class="excel_middle">
+		<div class="select_btnWrap clearfix">
+			<div>
+				<button type="button" id="allDel"><i class="remove_img"></i>전체삭제</button>
+				<button type="button" id="in_select_del"><i class="remove_img"></i>선택삭제</button>
+			</div>
+
+		</div>
+	</div>
+	<!--// 공통 -->     
 	
-					<!-- 붙여놓기 설명 -->
-<!-- 	                <div class="req_area"> -->
-<!-- 	                  	<div class="text_box"> -->
-<!-- 	                    	- 휴대폰 번호가 입력된 txt 파일을 열어 복사(Ctrl+c) + 붙여넣기(Ctrl+v)로도 입력하실 수 있습니다.<br> -->
-<!-- 							- 휴대폰 번호는 필수입력 항목입니다.<br> -->
-<!-- 							- 이름,휴대폰 번호,[*1*],[*2*],[*3*],[*4*],메모 순서대로 입력해주세요.(예 : 010-1234-5678,홍길동,변수1…메모)<br> -->
-<!-- 							- 이름은 24byte, [*1*]~[*4*] 40byte, 메모는 250byte까지 입력 가능합니다.<br> -->
-<!-- 							- '오류 검사'를 통해 등록된 데이터에 전화번호 입력 오류를 확인하실 수 있습니다. -->
-<!-- 						</div> -->
-<!-- 	                </div> -->
-					<div class="popup_btn_wrap2" style="margin: 0 auto 30px auto;">
-						<button type="button" id="btnAddrMassReg">추가</button>
-						<button type="button" id="btnAddrMassClose" class="tooltip-close" data-focus="adr_popup01-close"  data-focus-next="popup02">닫기</button>                      
-					</div>
-				
-				</div>
(No newline at end of file)
+	<div class="popup_btn_wrap2" style="margin: 0 auto 30px auto;">
+		<button type="button" id="btnAddrMassReg">추가</button>
+		<button type="button" id="btnAddrMassClose" class="tooltip-close" data-focus="adr_popup01-close"  data-focus-next="popup02">닫기</button>                      
+	</div>
+</div>
(No newline at end of file)
Add a comment
List