File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<script type="text/javascript" src="<c:url value='/publish/js/content.js'/>"></script>
<script type="text/javascript" src="https://oss.sheetjs.com/sheetjs/xlsx.full.min.js"></script>
<script type="text/javascript" src="<c:url value='/js/txtSpecialReplace.js?date=202304250001'/>"></script>
<script type="text/javascript">
var tableErrorData = [];
var totRows = 0; // 좌측 받는사람 총 갯수
/* 파일등록 */
var _fileIdx = 0;
var _fileForm2 = new Array();
var fileExt = ""; // 첨부파일 확장자
var excelAddr = []; //엑셀 불러오기에서 내용 저장하는 배열 변수
function handleFileUpload(files,obj) //업로드 function
{
_fileForm2 = []; //form file data 초기화
var limitsize = 50*1024*1024; //파일 제한 체크(50개, 50MB)
var limitcount = 1;//$("input[name=limitcount]").val()*1 ;
var fileNece = true; //첨부파일필수
if($('#fileNece').length > 0){
if('N'==$('#fileNece').val()){
fileNece = false;
}
}
//엑셀 및 TXT 파일만 업로드 할수 있도록 체크하기
var fileNm = files[0].name;
fileExt = fileNm.split('.').pop().toLowerCase();
if($.inArray(fileExt, ['txt','xls','xlsx']) == -1) {
alert('txt, xls, xlsx 파일만 업로드 할수 있습니다.');
return;
}
for (var i = 0; i < files.length; i++)
{
var fd = new FormData();
fd.append('file', files[i]);
var tmpObj = new Object();
tmpObj.name = "file_" + _fileIdx;
tmpObj.fileObj = files[i];
_fileForm2.push(tmpObj);
sendFileToServer(fd, obj, files[i], _fileIdx);
_fileIdx++;
var totalfileSize = 0;
$('.totalfileCount').text($('.item_file_size').length) ;
$('.item_file_size').each(function(){
totalfileSize += $(this).val()*1 ;
});
$('.totalfileSize').text(getStrFileSize(totalfileSize)) ;
}
}
//드래그앤 드롭 엑셀 및 텍스트 파일 서버 전송 함수
function sendFileToServer(formData, obj , fileObj, _fileIdx)
{
var msg;
msg = "해당 첨부파일을 수정하시겠습니까?";
var data = new FormData(document.msgForm);
_fileForm2.forEach(function(obj, idx) {
if (obj) data.append("file0", obj.fileObj);
});
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;
}
$.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(data != null){
var arr = []; // 넘어온 데이터를 받은 배열 변수
$.each(data, function(i, item){
arr.push({phone: item.phone, name: item.name, rep1: item.replace1, rep2: item.replace2, rep3: item.replace3, rep4: item.replace4});
});
addPhoneInfo(arr); // 연락처를 처리해줄 함수 호출
}
//메세지가 있는 경우 알려주기
if(message != '' && message != null) {
alert(returnData.message);
}
}else{
//첨부파일 오류시 배열 초기화
_fileForm2 = [];
_fileIdx = 0; //form file idx 초기화
alert(returnData.message);
return;
}
} 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 updateTotCnt(data){
var rowTotCnt = data;
$("#rowTotCnt").text(rowTotCnt);
}
//엑셀첨부파일에서 주소록 정보를 Tabulator에 추가해 주기
function addPhoneInfo(data){
if(data == null){
alert("연락처 정보가 없습니다.");
return;
}else{
var idx = 0;
var newData = data;//중복 연락처는 하나만 남기고 모두 제거
var recTableData = tableR.getRows(); // 받는사람 리스트의 전체 목록을 저장
var tableData = [];
//기존 받는사람 리스트를 배열에 미리 담아둔다.
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});
}
}
//받는사람 리스트를 담아둔 배열에 신규 추가 데이터를 추가해 준다.
for(var i=0; i < newData.length; i++){
tableData.push({phone: removeDash(newData[i].phone.trim()) , name: newData[i].name, rep1: newData[i].rep1, rep2: newData[i].rep2, rep3: newData[i].rep3, rep4: newData[i].rep4});
}
var temp = tableData.length;
//기존 수신 리스트를 지워준 후 신규 전체 리스트를 추가해준다.
tableR.clearData(); //기존 받는사람 목록을 삭제.
tableR.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기
_fileForm2 = []; //form file data 초기화
_fileIdx = 0; //form file idx 초기화
totRows = tableR.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){
fnReplCellExcel();
}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;
}
//seetJs 엑셀 파일 불러오기
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(""); // 첨부파일 명 초기화
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("");
}
$(document).ready(function (){
$('.preiew_img').hide();
$('.prePhoto').hide();
//최초 화면 문자열 길이 체크해주기
var strCon = $('#smsTxtArea').val();
fnByteString(strCon);
//선거문자 텍스트 내용 추가해주기
advMsgInsert();
//문자 내용 입력시 바이트수 계산하기
$('#smsTxtArea').keyup(function(e){
var contents = $(this).val();
fnByteString(contents);
});//문자 바이트수 계산하기 끝
//스프레드 시트 Tabulator 초기 셋팅
var tabledata = [];
//var selectRow;
//Tabulator AJAX Data Loading
tableR = new Tabulator(".callList_box", {
height:"255px",
width:"100%",
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)
columns:[ //Define Table Columns
{formatter:"rowSelection", titleFormatter:"rowSelection",clipboard:false, hozAlign:"center", 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
fnReplCellExcel();
}},
{title:"휴대폰", hozAlign:"center", field:"phone", editor:"input", 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
fnReplCellExcel();
}},
{title:"[*2*]", hozAlign:"center", field:"rep2", editor:"input", validator:["maxLength:40"], cellEdited:function(cell){
//cell - cell component
fnReplCellExcel();
}},
{title:"[*3*]", hozAlign:"center", field:"rep3", editor:"input", validator:["maxLength:40"], cellEdited:function(cell){
//cell - cell component
fnReplCellExcel();
}},
{title:"[*4*]", hozAlign:"center", field:"rep4", editor:"input", validator:["maxLength:40"], cellEdited:function(cell){
//cell - cell component
fnReplCellExcel();
}},
],
validationFailed:function(cell, value, parameters){ // 유효성 체크 함수
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에서 수정시 중복 체크
function fnDuplPhone(){
var recTableData = tableR.getRows(); // 받는사람 리스트의 전체 목록을 저장
var tableData = [];
//기존 받는사람 리스트를 배열에 미리 담아둔다.
if(recTableData.length > 0){
for(var j=0; j < recTableData.length; j++){
var tmpPhone = recTableData[j].getData().phone.trim();
if(tmpPhone.length > 0){
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("동일한 휴대폰 번호가 받는사람 목록에 등록되어 있습니다. 중복 번호를 삭제하시겠습니까?")){
//수신목록에서 중복 휴대폰 번호 삭제해주기
tableR.clearData(); //기존 받는사람 목록을 삭제.
tableR.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기
_fileForm2 = []; //form file data 초기화
_fileIdx = 0; //form file idx 초기화
}
}
totRows = tableR.getRows().length;
updateTotCnt(totRows); //전체 데이터 갯수 구하기
}
//받는 사람 리스트 영역에 클립보드 데이터 가져와보기
$('.callList_box').on('paste', function (e) {
var element = e.originalEvent.clipboardData.getData('text'); // 클립보드에 복사한 데이터 가져오기
var elmSplit= [];
elmSplit = element.split("\n");
var elmLen = elmSplit.length;
if(elmLen < 0){
alert("붙여넣을 연락처를 복사해주세요.");
return false;
}else{
tableErrorData.length = 0; // 오류 번호 배열 초기화
var splitData = [];
var realPhone = [];
for(var i=0; i < elmLen; i++){
var splitStr = elmSplit[i];
var tabData = [];
var comData = [];
if(splitStr.indexOf('\t') != -1){
splitData = splitStr.split('\t'); //탭 구분으로 데이터 분할
}else if(splitStr.indexOf(',') != -1){
splitData = splitStr.split(','); //콤마 구분으로 데이터 분할
}else{
splitData = splitStr.split(' ');
}
if(splitData.length == 0){// 데이터가 없는경우
alert("탭으로 구분하여 데이터를 복사해 주세요.");
return false;
}else if(splitData.length == 1){// 데이터가 탭으로 구분이 없는 경우
for(var j=0; j < splitData.length; j++){
if(checkHpNum(splitData[j].trim())){//핸드폰 양식이 맞는지 확인
//배열 끝에 데이터 추가해 주기
realPhone.push({phone: removeDash(splitData[j].trim()), name: ""});
}
else {
if (splitData[j].trim() != '' && splitData[j].trim() != null && splitData[j].trim() != undefined) {
tableErrorData.push(splitData[j].trim());
}
}
}
}else{//데이터가 탭으로 구분되어 이름, 연락처로 구분된 경우
var phone = ""; //핸드폰번호
var name = ""; //이름
var rep1 = ""; //치환문자1
var rep2 = ""; //치환문자2
var rep3 = ""; //치환문자3
var rep4 = ""; //치환문자4
var isPhoneValid = false;
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;
}else{
if (splitData[j].trim() != '' && splitData[j].trim() != null && splitData[j].trim() != undefined) {
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) {
//배열 끝에 데이터 추가해 주기
realPhone.push({phone: phone, name: name, rep1 : rep1, rep2 : rep2, rep3 : rep3, rep4 : rep4 });
}
}//else end
}
var recTableData = tableR.getRows(); // 받는사람 리스트의 전체 목록을 저장
var tableData = [];
//기존 받는사람 리스트를 배열에 미리 담아둔다.
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);
//수신자 리스트에 전화번호 추가해주기
//tableR.addData(removeDuplPhone);
tableR.setData(removeDuplPhone);
totRows = tableR.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){
fnReplCellExcel();
}else{
//결제 금액 구하기
totalPriceSum(totRows);
}
if (tableErrorData.length > 0) {
alert("올바르지 않은 휴대폰 번호가 "+ tableErrorData.length +" 건 있습니다.");
}
}
});
//tableR.setData(tabledata);
//받는사람 번호 버튼 클릭시 Tabulator에 데이터 넣어주기
$('.addCallToF').click(function(){
var recTableData = tableR.getRows(); // 받는사람 리스트의 전체 목록을 저장
var tableData = [];
//빈 Row 한줄을 상단에 먼저 추가해준다.
tableData.push({phone: ""});
//기존 받는사람 리스트를 배열에 미리 담아둔다.
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});
}
}
tableR.setData(tableData);
//전체 데이터 갯수 구하기
totRows = tableR.getRows().length;
updateTotCnt(totRows);
//결제 금액 구하기
totalPriceSum(totRows);
});
//받는사람 전체삭제 버튼 처리
$('.all_del').click(function(){
var data = tableR.getRows();
if(data == null || data == ""){
alert("받는사람을 추가해 주세요.");
return false;
}else{
if(confirm("받는사람 목록을 모두 삭제하시겠습니까?")){
tableR.clearData();
$("#rowTotCnt").text(0); //총건수 수정
$("#rowDupCnt").text(0); //중복건수 수정
totalPriceSum(0); //결제 금액 수정
}
}
});
// 받는사람 선택삭제 버튼 처리해주기
$('.select_del').click(function(){
if(tableR == null || tableR == ""){
alert("받는사람을 추가해 주세요.");
return false;
}
var selectedData = tableR.getSelectedRows();
if(selectedData == "" || selectedData == null){
alert("삭제할 연락처를 선택해주세요.");
return false;
}else{ // 선택한 Row 데이터 삭제하기
if(confirm("선택하신 받는 사람을 삭제하시겠습니까?")){
for(var i=0; i < selectedData.length; i++){
selectedData[i].delete();
}
totRows = tableR.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){
//변환단문 건수 Hidden 폼에 넣어주기//변환단문 건수 Hidden 폼에 넣어주기//변환단문 건수 Hidden 폼에 넣어주기//변환단문 건수 Hidden 폼에 넣어주기
fnReplCellExcel();
}else{
//결제 금액 구하기
totalPriceSum(totRows);
}
}
}
});
//받는사람 오류번호 삭제 처리해주기
$('.chkVali_del').click(function(){
//기존 연락처 모두 불러오기
var data = tableR.getRows();
var tableData = [];
var totLen = tableR.getRows().length;
var errCnt = 0;
if(totLen > 0){
if(confirm("올바르지 않은 연락처 정보를 삭제 하시겠습니까?")){
for(var i=0; i < totLen; i++){
var phone = data[i].getData().phone;
var valiCheck = checkHpNum(phone);
if(valiCheck){
tableData.push({phone: data[i].getData().phone.trim(), name: data[i].getData().name, rep1:data[i].getData().rep1, rep2:data[i].getData().rep2, rep3:data[i].getData().rep3, rep4:data[i].getData().rep4 });
}else{
errCnt++;
}
}
var removeDuplData = dupliPhoneData(tableData);
tableR.setData(removeDuplData);
//총 받는사람 수 계산
totRows = tableR.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){
fnReplCellExcel();
}else{
//결제 금액 구하기
totalPriceSum(totRows);
}
if(errCnt > 0){
alert(errCnt + " 건의 연락처를 삭제하였습니다.");
return false;
}else{
alert("오류가 있는 연락처가 없습니다.");
}
}
}else{
alert("연락처 정보를 입력해 주세요.");
return false;
}
});
$('.check_validity').click(function(){
var invalid = tableR.getInvalidCells(); //오류 데이터 체크
var dataLen = tableR.getRows().length; //연락처 데이터 갯수
var totLen = invalid.length; //오류 데이터 갯수
var errMsg = ""; //최종 alert에 표시할 메시지 저장 변수
if(dataLen > 0){ //연락처 정보가 있으면 수행
if(totLen > 0){ //내용에 오류가 있으면 수행
//오류 데이터 값 저장
for(var i=0; i < totLen; i++){
var cellValue = invalid[i].getValue();
if(i == 0){
errMsg = cellValue;
}else{
errMsg = errMsg +", "+ cellValue;
}
}
alert(errMsg + "의 내용에 오류가 있습니다.");
return false;
}else{
alert("오류 데이터가 없습니다.");
return false;
}
}else{
alert("연락처를 입력해 주세요.");
return false;
}
});
//대량문자 발송 수신목록 엑셀 다운로드
$('.addExcelDw').click(function(){
var data = tableR.getRows();
if(data.length > 0){
//인터넷 익스플로러를 이용하는 경우 Tabulator의 엑셀다운로드가 지원되지 않아서 별도로 처리함.
var agent = navigator.userAgent.toLowerCase();
if ((navigator.appName == 'Netscape' && navigator.userAgent.search('Trident') != -1) || (agent.indexOf("msie") != -1)) {
//수신번호 리스트 체크하기
var numCnt = 0;
var nameList = []; //치환문자 이름
var phoneNum = []; //받는사람
var rep1List = []; //치환문자1
var rep2List = []; //치환문자2
var rep3List = []; //치환문자3
var rep4List = []; //치환문자4
var selectedData = tableR.getRows();
if(selectedData == "" || selectedData == null){
alert("받는사람 주소를 한 건 이상 입력해주세요.");
return false;
}else{ // 수신목록 엑셀 다운로드 하기
if(confirm("수신목록을 다운로드 하시겠습니까?")){
for(var i=0; i < selectedData.length; i++){
//일괄변환 문자에 콤마(,)가 들어가있으면 배열로 넘길때 문제가 발생하여 특수문자(§)로 치환하여 넘겨주도록 한다.
var name = tableR.getRows()[i].getData().name;
var phone = removeDash(tableR.getRows()[i].getData().phone);
var rep1 = tableR.getRows()[i].getData().rep1;
var rep2 = tableR.getRows()[i].getData().rep2;
var rep3 = tableR.getRows()[i].getData().rep3;
var rep4 = tableR.getRows()[i].getData().rep4;
if(phone == ""){
alert("수신 목록에 핸드폰 번호가 없는 항목이 있습니다.");
return false;
}else if(!checkHpNum(phone)){
alert("수신 목록에 잘 못된 핸드폰 번호가 있습니다. 핸드폰 번호 : " + phone + " 입니다.");
return false;
}else{
if(typeof(name) != 'undefined' && name != null){
nameList[i] = name.replaceAll(",","§");
}else{
nameList[i] = " ";
}
phoneNum[i] = phone;
if(typeof(rep1) != 'undefined' && rep1 != null){
rep1List[i] = rep1.replaceAll(",","§");
}else{
rep1List[i] = " ";
}
if(typeof(rep2) != 'undefined' && rep2 != null){
rep2List[i] = rep2.replaceAll(",","§");
}else{
rep2List[i] = " ";
}
if(typeof(rep3) != 'undefined' && rep3 != null){
rep3List[i] = rep3.replaceAll(",","§");
}else{
rep3List[i] = " ";
}
if(typeof(rep4) != 'undefined' && rep4 != null){
rep4List[i] = rep4.replaceAll(",","§");
}else{
rep4List[i] = " ";
}
}
}
}
var form = document.excelDownForm;
form.callToList.value = phoneNum; //수신자번호 리스트 저장해주기
form.nameList.value = nameList; //수신자 이름 리스트
form.rep1List.value = rep1List; //치환문자 1 리스트
form.rep2List.value = rep2List; //치환문자 2 리스트
form.rep3List.value = rep3List; //치환문자 3 리스트
form.rep4List.value = rep4List; //치환문자 4 리스트
form.action="/web/mjon/msgdata/recieveCallToListExcelDownAjax.do";
form.submit();
}
}else{
//Tabulator 엑셀 다운로드 실행
if(confirm("수신목록을 다운로드 하시겠습니까?")){
tableR.download("xlsx", "recieveAddr.xlsx", {sheetName:"recieveAddr"});
}
}
}else{
alert("입력된 연락처 정보가 없습니다.");
return false;
}
});
//받는사람 중복 삭제
$('.duple_del').click(function(){
//기존 연락처 모두 불러오기
var data = tableR.getRows();
var tableData = [];
var dpCnt = 0;
var totLen = tableR.getRows().length;
for(var i=0; i < totLen; i++){
tableData.push({phone: data[i].getData().phone.trim(), name: data[i].getData().name});
}
var removeDuplData = dupliPhoneData(tableData);
tableR.setData(removeDuplData);
//총 받는사람 수 계산
totRows = tableR.getRows().length;
updateTotCnt(totRows);
//결제 금액 구하기
totalPriceSum(totRows);
});
//파일업로드 드래그앤 드롭
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){
//$(this).css('border', '2px dotted #0B85A1');
e.preventDefault();
var files = e.originalEvent.dataTransfer.files;
handleFileUpload(files,objDragAndDrop); //파일업로드
});
$(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();
});
//파일 드래그앤드롭 종료
//엑섹불러오기 버튼 클릭시 파일 첨부 실행
$('.c3').click(function(){ // 엑셀파일 불러오기 선택 시
$("#excelFile").click();
});
//최근 전송내역 불러오기
$(document).on('click', '#latestMsgList', function (){
var login = '${LoginVO.id}';
if(login == "" || login == null){
alert("로그인 후 이용이 가능합니다");
return false;
}
var sendData = $(document.latestMsgForm).serializeArray();
$("#latestMsgArea").load("/web/mjon/msgdata/selectLatestMsgListAjax.do", sendData, function(response, status, xhr){
/* 주소록 대량등록, 주소롟 불러오기 팝업에 있는 테이블 스크롤바 꾸미기 */
$("#latestMsgArea").mCustomScrollbar({
axis: 'y',
scrollbarPosition: "outside",
theme: "dark",
autoHideScrollbar: false
});
});
});
//최근전송내역 팝업 선택추가 버튼 처리(체크내역 받는사람 리스트로 추가해주기)
$(document).on('click', '#latestAddPhone', function (){
var addPhoneList = []; //신규로 추가할 전화번호 저장변수
$("input:checkbox[name='latAddrChk']:checked").each(function(index){
var chkPhone = $(this).val();
addPhoneList.push({phone: removeDash(chkPhone.trim())});
});
//중복연락처 제거
var removeDuplData = dupliPhoneData(addPhoneList);
//받는사람 목록에 추가
tableR.addData(removeDuplData);
//총 받는사람 수 계산
totRows = tableR.getRows().length;
updateTotCnt(totRows);
//결제 금액 구하기
totalPriceSum(totRows);
});
//최근전송내역 팝업 선택 취소 버튼 처리
$(document).on('click', '#latestDelPhone', function (){
$("input[name=latAddrChk]").prop("checked", false);
});
//최근전송내역 팝업 삭제 버튼 처리
$(document).on('click', '#latestAddrDel', function (){
$(this).parent("#latestLi").remove();
});
//문자입력창의 첨부된 이미지 순서를 바꿀 때
$(document).on('mouseup', '.thumb_wrap img', function (){
//미리보기 창의 이미지 순서를 변경한다
setTimeout(function() {
var previewHtml = "";
var imgCnt = $("#imgCnt").val();
//이미지 갯수만큼 for문 돌림
for(var i=0; i<imgCnt; i++) {
var imgTag = $(".thumb_wrap li:eq("+i+") div").html(); // 썸네일에 있는 이미지 태그 가져오기
previewHtml += '<div class="img_box preBoxF on_scroll_img" id="preBoxF'+(i+1)+'">'
previewHtml += imgTag;
previewHtml += '</div>'
}
$('.preViewShort div').remove(); //미리보기 영역에 있던 이미지 다 지우고
$('.preViewShort').append(previewHtml); //새로 sorting된 이미지 그려주기
}, 100);
});
//문자 샘플 탭, 그림문자 샘플 탭 선택시 옵션 초기화
$('.tab').click(function(){
var index = $(this).index();
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);
}
}
});
//이미지 선택시 그림문자 처리
$(document).on('click', '.photoOnImg', function(){
// 클릭 시 조회수 증가 로직
var letterId = $(this).attr('id');
var url = "/web/mjon/msgdata/updateSmsTemplateCntAjax.do";
$.ajax({
type: "POST",
url: url,
data: {'letterId':letterId},
dataType:'json',
async: false,
cache: false,
success: function (returnData, status) {
console.log("status : ", status);
},
error: function (e) {console.log("ERROR : ", e); }
});
// 클릭 시 조회수 증가 로직 끝
var imgId = $(this).parent().find("input").val();
imageControl($(this), "edit_n", "Template", imgId);
var contents = $('#smsTxtArea').val();
(contents);
totRows = tableR.getRows().length;
updateTotCnt(totRows); //전체 데이터 갯수 구하기
//일괄변환 문구 결제금액 처리
if(contents.indexOf("[*이름*]") > -1
|| contents.indexOf("[*1*]") > -1
|| contents.indexOf("[*2*]") > -1
|| contents.indexOf("[*3*]") > -1
|| contents.indexOf("[*4*]") > -1){
fnReplCellExcel();
}else{
//결제금액 표시해주기
var totalPrice = totalPriceSum(totRows);
$('#totalPrice').text(totalPrice);
$('#txtReplYn').val("N");
}
var sendOfT=$('.send_top').offset().top;
$('html,body').stop().animate({'scrollTop':sendOfT-60},250);
});
//그림문자 이미지 삭제 처리 - 동적으로 추가한 객체는 on 함수로 불러올 수 있다.
$(document).on('click', '.file_close', function(){
var delImgPath = ""; //삭제하려는 이미지 경로 받아오기
var index = $(this).parent().index(); // 현재 선택 된 객체 인덱스 번호 받아오기
var imgCnt = $("#imgCnt").val(); // 현재 첨부된 이미지의 갯수
var contents = $('#smsTxtArea').val();
//선택한 태그의 부모 이미지 li 객체 삭제
$(this).parent(".delLi").remove();
//미리보기 화면에서의 이미지 객체 삭제
//삭제하려는 이미지 경로 받아오기
delImgPath = $('.preBoxF').eq(index).find("img").attr("src");
$('.preBoxF').eq(index).remove();
// 삭제한 이미지 경로 배열에서 삭제해 주기
for(var i=0; i < imgFilePath.length; i++){
if(imgFilePath[i] == delImgPath){
imgFilePath.splice(i, 1); //이미지 경로 삭제
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{
//그림을 모두 삭제 했을때 단문으로 변경
$('.preShort').show();
$('.prePhoto').hide();
$('.msg_com').removeClass("msg_photo");
$('.msg_com').addClass("msg_short");
$('.put_left').removeClass("photo");
$('#msgType').val("4"); // 메세지 타입 설정
fnByteString(contents);
}
//수신목록 전체 데이터 갯수 구하기
updateTotCnt(totRows);
//일괄변환 문구 결제금액 처리
if(contents.indexOf("[*이름*]") > -1
|| contents.indexOf("[*1*]") > -1
|| contents.indexOf("[*2*]") > -1
|| contents.indexOf("[*3*]") > -1
|| contents.indexOf("[*4*]") > -1){
fnReplCellExcel();
}else{
//결제금액 표시해주기
var totalPrice = totalPriceSum(totRows);
$('#totalPrice').text(totalPrice);
$('#txtReplYn').val("N");
}
var scrollHei = $(".mCustomScrollBox").height();
if(scrollHei > 488) {
$(".img_box").removeClass("on_scroll_img");
}
});
// 초기화 버튼 처리
$('.btnReset').click(function(){
//일반문자 라이오 선택해 주기
$("#send_adYnN").prop("checked", true);
$('.delLi').each(function(){
$(this).remove();
});
$('.preBoxF').each(function(){
$(this).remove();
});
//그림 카운트 초기화
$('#imgCnt').val(0);
//그림을 모두 삭제 했을때 단문으로 변경
$('.preShort').show();
$('.prePhoto').hide();
$('.msg_com').removeClass("msg_photo");
$('.msg_com').addClass("msg_short");
$('#msgType').val("4"); // 메세지 타입 설정
//메세지 내용 초기화
$('#smsTxtArea').val("");
fnByteString("");
});
// 동적으로 추가해주기 때문에 on 사용
$(document).on('click', '.letterMsg', function(){ //문자 템플릿 선택시 상단 문자 내용에 입력해주기
// 클릭 시 조회수 증가 로직
var letterId = $(this).attr('id');
var url = "/web/mjon/msgdata/updateSmsTemplateCntAjax.do";
$.ajax({
type: "POST",
url: url,
data: {'letterId':letterId},
dataType:'json',
async: false,
cache: false,
success: function (returnData, status) {
console.log("status : ", status);
},
error: function (e) {console.log("ERROR : ", e); }
});
// 클릭 시 조회수 증가 로직 끝
/* var smsTxtArea = $(this).find('.msg_text').text(); */
var smsTxtArea = $(this).find('.msg_text').html();
smsTxtArea = smsTxtArea.replace(/(<br>|<br\/>|<br \/>)/g, '\n');
$('#smsTxtArea').val("");
$('#smsTxtArea').val(smsTxtArea);
fnByteString(smsTxtArea);
var sendOfT=$('.send_top').offset().top;
$('html,body').stop().animate({'scrollTop':sendOfT-60},250);
});
// 동적으로 추가해주기 때문에 on 사용
$(document).on('click', '.btnSearchF', function(){ // 검색 기능 실행
var formL = document.letterForm;
var formM = document.myMsgForm;
formL.categoryCode.value = ""; //해시태그 검색 시 카테고리 제거
formL.upperCateNo.value = ""; //해시태그 검색 시 카테고리 제거
/* if(form.searchKeyword.value == ""){
alert("검색어를 입력해 주세요.");
return false;
} */
var tabIndex = $(".selectedTab").children(".active").index();
//문자 리스트 불러오기
if(tabIndex == 0) {
formL.letterType.value="S";
fnLetterListAjax();
}
//그림 문자 리스트 불러오기
if(tabIndex == 1) {
formL.letterType.value="P";
fnPhotoListAjax();
}
//내문자함 리스트 불러오기
if(tabIndex == 3) {
formM.searchKeyword.value = formL.searchKeyword.value; //letterForm의 검색어를 문자함 검색어 부분에 입력해줌
fnMyMsgListAjax();
}
$('.bottom_content.current .area_total_count').show();
return false;
});
//탭 선택시에 검색자 초기화하여 검색하기
$(document).on('click', '.selectedTab', function(){
var formL = document.letterForm;
var formM = document.myMsgForm;
formL.categoryCode.value = ""; //탭 선택시 카테고리 제거
formL.upperCateNo.value = ""; //탭 선택시 카테고리 제거
var tabIndex = $(".selectedTab").children(".active").index();
$('.bottom_content .area_total_count').hide();
//문자 리스트 불러오기
if(tabIndex == 0) {
formL.letterType.value="S";
formL.searchKeyword.value="";
fnLetterListAjax(1);
}
//그림 문자 리스트 불러오기
if(tabIndex == 1) {
formL.letterType.value="P";
formL.searchKeyword.value="";
fnPhotoListAjax(1);
}
//내문자함 리스트 불러오기
if(tabIndex == 3) {
formM.searchKeyword.value = "";
fnMyMsgListAjax();
}
});
/*
단문 / 장문 탭 옵션 선택시 실행
**/
$('.tDep1_mType').click(function(){ // 전체,기업, 개인 선택 옵션 처리
var mType = $(this).find('.on').text();
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;
//문자 리스트 불러오기
fnLetterListAjax(1);
});
$('.tDep1_letType').click(function(){ // 단문, 장문 선택 시 옵션처리
var letterType = $(this).find('.on').attr("value");
var form = document.letterForm;
form.letterType.value = letterType;
//문자 리스트 불러오기
fnLetterListAjax(1);
});
$('.tDep1_cateCode').click(function(){ // 카테고리 선택 시 옵션 처리
var cateCode = $(this).find('.on').attr("value");
var form = document.letterForm;
if(cateCode == "all"){ //전체 선택시
cateCode = "";
} else {
//카테고리 코드 클릭 시 해쉬태그 초기화 후 전체 선택
form.hashTag.value="";
$('.tDep1_hashTag').find('.on').removeClass('on');
$('.tDep1_hashTag').find('.hashAll').addClass('on');
}
form.upperCateNo.value = "";
form.categoryCode.value = cateCode;
form.pageIndex.value = 1;
//카테고리 클릭 시 검색자 초기화
form.searchKeyword.value = "";
//문자 리스트 불러오기
fnLetterListAjax(1);
});
$('.tDep1_threeCateCode').click(function(){ // 하위 카테고리 선택 시 문자샘플 조회
var cateCode = $(this).find('.on').attr("value");
var form = document.letterForm;
var upperCateNo = $(this).siblings('div').find('.on').attr('value');
form.upperCateNo.value = upperCateNo;
form.categoryCode.value=cateCode;
//해쉬태그 검색자 초기화
form.searchKeyword.value = "";
form.pageIndex.value = 1;
//문자 리스트 불러오기
fnLetterListAjax(1);
});
$('.tDep1_hashTag').click(function(){ // 해시 태그 선택 시 옵션 처리
var hashTag = $(this).find('.on').attr("value");
var form = document.letterForm;
//해쉬태그 클릭 시 카테고리코드 초기화 후 전체 선택
form.categoryCode.value="";
$('.tDep1_cateCode').find('.on').removeClass('on');
$('.tDep1_cateCode').find('.cateAll').addClass('on');
//해쉬태그 클릭 시 검색자 초기화
form.searchKeyword.value = "";
form.hashTag.value = hashTag;
form.pageIndex.value = 1;
//문자 리스트 불러오기
fnLetterListAjax(1);
});
/*
그림문자 탭 옵션 선택시 사용
*/
$('.tDep2_mType').click(function(){ // 전체,기업, 개인 선택 옵션 처리
var mType = $(this).find('.on').text();
var form = document.letterForm;
if(mType == "전체"){
form.memberType.value = "";
}else if(mType == "기업"){
form.memberType.value = "B";
}else{
form.memberType.value = "P";
}
//문자 리스트 불러오기
form.letterType.value = "P";
form.categoryCode.value = "";
form.hashTag.value = "";
form.pageIndex.value = 1;
fnPhotoListAjax(1);
});
$('.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(){ // 그림 문자 카테고리 선택 시 옵션 처리
var cateCode = $(this).find('.on').attr("value");
var form = document.letterForm;
if(cateCode == "all"){ //전체 선택시
cateCode = "";
} else {
//카테고리 코드 클릭 시 해쉬태그 초기화 후 전체 선택
form.hashTag.value="";
$('.tDep2_hashTag').find('.on').removeClass('on');
$('.tDep2_hashTag').find('.hashAll').addClass('on');
}
form.upperCateNo.value = "";
form.categoryCode.value = cateCode;
form.pageIndex.value = 1;
//카테고리 클릭 시 검색자 초기화
form.searchKeyword.value = "";
//문자 리스트 불러오기
fnPhotoListAjax(1);
});
$('.tDep2_threeCateCode').click(function(){ // 하위 카테고리 선택 시 문자샘플 조회
var cateCode = $(this).find('.on').attr("value");
var form = document.letterForm;
var upperCateNo = $(this).siblings('div').find('.on').attr('value');
form.upperCateNo.value = upperCateNo;
form.categoryCode.value=cateCode;
//해쉬태그 검색자 초기화
form.searchKeyword.value = "";
form.pageIndex.value = 1;
//그림문자 리스트 불러오기
fnPhotoListAjax(1);
});
$('.tDep2_hashTag').click(function(){ // 그림문자 해시 태그 선택 시 옵션 처리
var hashTag = $(this).find('.on').attr("value");
var form = document.letterForm;
//해쉬태그 클릭 시 카테고리코드 초기화 후 전체 선택
form.categoryCode.value="";
$('.tDep2_cateCode').find('.on').removeClass('on');
$('.tDep2_cateCode').find('.cateAll').addClass('on');
//해쉬태그 클릭 시 검색자 초기화
form.searchKeyword.value = "";
form.hashTag.value = hashTag;
form.pageIndex.value = 1;
//문자 리스트 불러오기
fnPhotoListAjax(1);
});
$(".fontPlus").click(function () {
var currentSize = $(".preview_auto").css("fontSize");
var size = parseInt(currentSize, 10) * 1.2;
var unit = currentSize.slice(-2);
if(size > 65){
return false;
}
$(".preview_auto").css("fontSize", size+unit);
});
$(".fontMinus").click(function () {
var currentSize = $(".preview_auto").css("fontSize");
var size = parseInt(currentSize, 10) / 1.2;
var unit = currentSize.slice(-2);
if(size < 10){
return false;
}
$(".preview_auto").css("fontSize", size+unit);
});
//즉시, 예약 선택시 날짜 영역 초기 표시
var reYn = $("input[name=reserYn]:checked").val();
if(reYn == "N"){
$('.rev_selected').hide();
}else{
$('.rev_selected').show();
}
//즉시 발송 라디오 버튼 선택시 숨김처리
$("#reserYnN").on('click', function(){
$('.rev_selected').hide();
$('.send_rev .send_content').css('padding-bottom','108px');
$('.send_btn .btnType:first-child').html('발송하기');
});
//예약 발송 라디오 버튼 선택시 숨김 해제처리
$("#reserYnY").on('click', function(){
$('.rev_selected').show();
$('.send_rev .send_content').css('padding-bottom','0');
$('.send_btn .btnType:first-child').html('예약하기');
});
});
//선거 후보자 등록 알림 메세지 처리
function fn_candidateChk(){
alert("선거 후보자를 등록이 되어야 문자 발송이 가능합니다. 후보자 등록을 해주세요.");
return false;
}
//문자 바이트수 계산하기 함수
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;
var denyTxt = $('.deny_txt').html();
//선거문자 하단 문구 줄바꿈 처리하기
if(typeof denyTxt !='undefined' && denyTxt != null){
denyTxt = denyTxt.replaceAll("<br>","\n");
denyTxt = denyTxt.replaceAll("<br/>","\n");
denyTxtLeng = conByteLeng(denyTxt);
}
$('#msgLeng').html("");
$('#limitLeng').html("");
var conLeng = conByteLeng(contents); // 내용 문자 입력 바이트 수 계산하기
//일반문자, 광고문자에 따른 문자 길이 변경해주기
if(adverYn == "N"){
$('#msgLeng').text(conLeng);
//문자 길이 변수에 저장해주기
$('#smsLen').val(conLeng);
}else{
conLeng = adTxtLeng + conLeng + denyTxtLeng +2; // 상단 광고 텍스트 , 하단 080 문자내용 길이 더해주기 , +2는 엔터 적용
$('#msgLeng').text(conLeng);
//문자 길이 변수에 저장해주기
$('#smsLen').val(conLeng);
}
var photoSts = $('.delLi').length;
if(photoSts > 0){
$('#msgLeng').html(conLeng + " / ");
$('#limitLeng').html("2000");
$('.msg_com').html("그림");
$('#msgType').val("6"); // 메세지 타입 설정
$('.msg_com').removeClass("msg_short"); //단문 클래스 삭제하고
$('.put_left').removeClass("short"); //내용 입력 박스 클래스 삭제
$('.msg_com').removeClass("msg_long"); //장문 클래스 삭제하고
$('.put_left').removeClass("long"); //내용 입력 박스 클래스 삭제
$('.msg_com').addClass("msg_photo"); // 그림 클래스 삽입
$('.put_left').addClass("photo"); // 내용 입력 박스에 클래스 삽입
$('.put_left').css("display","block"); // 내용 입력 박스에 클래스 삽입
$('.msg_title').addClass('active');
//document.getElementById("mmsSubject").disabled = false;
}else{
if(conLeng > 90){
$('#msgLeng').html(conLeng + " / ");
$('#limitLeng').html("2000");
$('.msg_com').html("장문");
$('#msgType').val("6"); // 메세지 타입 설정
$('.msg_com').removeClass("msg_short"); //단문 클래스 삭제하고
$('.put_left').removeClass("short"); //내용 입력 박스 클래스 삭제
$('.msg_com').addClass("msg_long"); // 장문 클래스 삽입
$('.put_left').addClass("long"); // 내용 입력 박스에 클래스 삽입
$('.msg_title').addClass('active');
//document.getElementById("mmsSubject").disabled = false;
}else{
$('#msgLeng').html(conLeng + " / ");
$('#limitLeng').html("90");
$('.msg_com').html("단문");
$('#msgType').val("4"); // 메세지 타입 설정
$('.msg_com').removeClass("msg_long"); //단문 클래스 삭제하고
$('.put_left').removeClass("long"); //내용 입력 박스 클래스 삭제
$('.msg_com').addClass("msg_short"); // 장문 클래스 삽입
$('.put_left').addClass("short"); // 내용 입력 박스에 클래스 삽입
$('.msg_title, .title_wrap .textbox').removeClass('active');
$('#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("내용을 입력해주세요.");
}
$('.realtime').text(contents);
// 2000byte 초과시 메세지 알림
if(conLeng > 2000){
//2000바이트 초과시 문자열 잘라서 보여주기
var subUnderStr = strUnderLineSubstring(contents, 2000);
$('#smsTxtArea').val(subUnderStr);
//문자 바이트수 수정해주기
$('#msgLeng').text(conByteLeng(subUnderStr));
//문자 길이 변수에 저장해주기
$('#smsLen').val(conByteLeng(subUnderStr));
alert("문자 내용은 2000byte를 넘을 수 없습니다.");
return false;
}
//전체 데이터 갯수 구하기
updateTotCnt(totRows);
//일괄변환 문구 결제금액 처리
if(contents.indexOf("[*이름*]") > -1
|| contents.indexOf("[*1*]") > -1
|| contents.indexOf("[*2*]") > -1
|| contents.indexOf("[*3*]") > -1
|| contents.indexOf("[*4*]") > -1){
fnReplCellExcel();
}else{
var totalPrice = totalPriceSum(totRows);
$('#totalPrice').text(totalPrice);
}
}
function openPhotoEditor() {
var imgCnt = $("#imgCnt").val();
if(imgCnt >= 3) {
alert("메시지에 첨부할 수 있는 이미지는 최대 3장입니다.");
return;
}
//만들려는 팝업의 크기
var popup_wid = '1100';
var popup_ht = '851';
//중앙 정렬을 위해 윈도우 스크린의 width,height 구하는 변수 만듦
var popup_left = (window.screen.width / 2) - (popup_wid / 2);
var popup_top =(window.screen.height / 2) - (popup_ht / 2);
window.open('<c:url value='/web/mjon/msgdata/openImageEditorPopup.do'/>', 'a', 'width=' + popup_wid +', height='+ popup_ht +', left=' + popup_left + ', top='+ popup_top + ', scrollbar=no' );
}
function imageControl(obj, editYn, imageName, imgId) {
var imgCnt = $("#imgCnt").val(); // 현재 페이지에 첨부된 이미지 갯수
var imgSrc = obj.attr("src");
if(imgCnt >= 3){
alert("이미지는 3장만 선택할 수 있습니다.");
return false;
}
$('.preShort').hide();
$('.prePhoto').show();
if($('.msg_com').hasClass("msg_short") === true){
$('.msg_com').removeClass("msg_short"); //단문 클래스 삭제하고
$('.msg_com').addClass("msg_photo"); // 그림문자용 클래스 삽입
$('.put_left').removeClass("short");
$('.put_left').addClass("photo");
$('.msg_com').html("그림");
$('#msgType').val("6"); // 메세지 타입 설정
//제목 입력 항목 활성화
//document.getElementById("mmsSubject").disabled = false;
}else{
$('.msg_com').removeClass("msg_long"); //장문 클래스 삭제하고
$('.msg_com').addClass("msg_photo"); // 그림문자용 클래스 삽입
$('.put_left').removeClass("long");
$('.put_left').addClass("photo");
$('.msg_com').html("그림");
$('#msgType').val("6"); // 메세지 타입 설정
//제목 입력 항목 활성화
//document.getElementById("mmsSubject").disabled = false;
}
//이미지 카운트 증가시키기
//imgCnt ++;
$("#imgCnt").val(Number(imgCnt)+1);
//문자 내용 상단에 이미지 이름 영역 객체 추가해주기
var imgPath = '<img src="' + imgSrc + '" class="thumb_img '+ editYn +'" alt="thumb1"/>';
var liPath = '<li class="delLi '+imageName+'" id="delLi'+ imgCnt +'">'
+ '<div>'+ imgPath+ '</div>'
+ '<button type="button" class="file_close"><img src="/publish/images/content/thumb_del.png" alt="첨부파일 삭제"></button>'
+ '<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);
//미리보기 보여주기
$('.preiew_img').show();
var imgHtml = "";
var imgPath = "<div class=\"img_box preBoxF\" id=preBoxF"+ imgCnt +"><img src=\"" + imgSrc + "\" /></div>";
if($("#imgCnt").val() == 1){
$('.preViewShort').append(imgPath);
$('.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");
}
// 배열에 선택한 이미지 경로 저장해주기
imgFilePath.push(imgSrc);
// 배열에 선택한 이미지 아이디 저장해주기 - 내 문자 보관함 저장용으로 사용
if(typeof(imgId) != 'undefined' && imgId != null && editYn != 'edit_y'){
imgFileId.push(imgId);
}
//문자 길이 및 타입 변경해주기
var contents = $('#smsTxtArea').val();
fnByteString(contents);
var scrollHei = $(".mCustomScrollBox").height();
if(scrollHei > 488) {
$(".img_box").addClass("on_scroll_img");
}
}
//그림샘플 이미지 선택시 문자 내용에 입력 처리
function myMsgImageControl(imgSrc, editYn, imageName, imgId) {
var imgCnt = $("#imgCnt").val(); // 현재 페이지에 첨부된 이미지 갯수
var imgSrc = imgSrc;
if(imgCnt >= 3){
alert("이미지는 3장만 선택할 수 있습니다.");
return false;
}
$('.preShort').hide();
$('.prePhoto').show();
if($('.msg_com').hasClass("msg_short") === true){
$('.msg_com').removeClass("msg_short"); //단문 클래스 삭제하고
$('.msg_com').addClass("msg_photo"); // 그림문자용 클래스 삽입
$('.put_left').removeClass("short");
$('.put_left').addClass("photo");
$('.msg_com').html("그림");
$('#msgType').val("6"); // 메세지 타입 설정
//제목 입력 항목 활성화
//document.getElementById("mmsSubject").disabled = false;
}else{
$('.msg_com').removeClass("msg_long"); //장문 클래스 삭제하고
$('.msg_com').addClass("msg_photo"); // 그림문자용 클래스 삽입
$('.put_left').removeClass("long");
$('.put_left').addClass("photo");
$('.msg_com').html("그림");
$('#msgType').val("6"); // 메세지 타입 설정
//제목 입력 항목 활성화
//document.getElementById("mmsSubject").disabled = false;
}
//이미지 카운트 증가시키기
//imgCnt ++;
$("#imgCnt").val(Number(imgCnt)+1);
//문자 내용 상단에 이미지 이름 영역 객체 추가해주기
var imgPath = '<img src="' + imgSrc + '" class="thumb_img '+ editYn +'" alt="thumb1"/>';
var liPath = '<li class="delLi '+imageName+'" id="delLi'+ imgCnt +'">'
+ '<div>'+ imgPath+ '</div>'
+ '<button type="button" class="file_close"><img src="/publish/images/content/thumb_del.png" alt="첨부파일 삭제"></button>'
+ '<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);
//미리보기 보여주기
$('.preiew_img').show();
var imgHtml = "";
var imgPath = "<div class=\"img_box preBoxF\" id=preBoxF"+ imgCnt +"><img src=\"" + imgSrc + "\" /></div>";
if($("#imgCnt").val() == 1){
$('.preViewShort').append(imgPath);
$('.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");
}
// 배열에 선택한 이미지 경로 저장해주기
imgFilePath.push(imgSrc);
// 배열에 선택한 이미지 아이디 저장해주기 - 내 문자 보관함 저장용으로 사용
if(typeof(imgId) != 'undefined' && imgId != null){
imgFileId.push(imgId);
}
//문자 길이 및 타입 변경해주기
var contents = $('#smsTxtArea').val();
fnByteString(contents);
var scrollHei = $(".mCustomScrollBox").height();
if(scrollHei > 488) {
$(".img_box").addClass("on_scroll_img");
}
}
$(document).on('click', '.symbolButton, .changeWord', function (){
//var smsTxtArea = $('#smsTxtArea').val();
//$('#smsTxtArea').val(smsTxtArea + $(this).attr("value"));
// 커서 위치에 삽입
setCursorInsertText("smsTxtArea", $(this).attr("value"));
fnByteString($('#smsTxtArea').val());
});
//최초 문자샘플 탭 리스트 데이터 불러오기
//fnLetterListAjax();
$(document).on('click', '#recommBtn', function(){
var recommId = $('#recommId').val();
if(recommId == ''){
alert("추천인 ID를 입력해 주세요.");
return false;
}
var data = new FormData(document.msgForm);
var url = "/web/mjon/msgdata/selectRecommIdCheckAjax.do";
$.ajax({
type: "POST",
enctype: 'multipart/form-data',
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
//timeout: 600000,
success: function (returnData, status) {
if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
if(returnData.status == "success"){
alert("추천인 아이디가 확인 되었습니다.");
return false;
}else{
alert("존재하지 않는 추천인 아이디 입니다.");
return false;
}
} else if(status== 'fail'){
alert("추천인 확인에 실패하였습니다. !!");
}
},
error: function (e) { alert("추천인 확인에 실패하였습니다."); console.log("ERROR : ", e); }
});
});
//내문자함 선택시 저장된 내용 문자 입력영역에 처리해주기
function fnMyMsgAdd(msgId){
var form = document.addMyMsgForm;
form.msgId.value = msgId;
form.pageType.value = "myMsg";
var url = "/web/mjon/msgdata/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').text(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;
}
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/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 fn_candidateLoginChk(){
alert("후보자 등록은 로그인 후 이용 가능합니다.");
return false;
}
/* 윈도우팝업 열기 */
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();
}
/* 테스트발송 열기 */
function fnTestSend(){
if(!checkConf()){ //문자온 conf-check
alert("현재 문자 발송하기 기능 점검 중입니다.\n\n1분 후 다시 시도해주세요.");
return false;
}
var msgForm = document.msgForm;
var form = document.testSendForm;
var loginVO = '${LoginVO}';
var spamStatus = false;
var callFrom = $("#callFromList option:selected").val();
//로그인 체크
if(loginVO == "" || loginVO == null){
alert("문자발송 서비스는 로그인 후 이용 가능합니다.");
return false;
}
//MJ_MSG_GROUP_DATA 누락데이터 체크
//if (getMsgGroupDataErrorCheck() == false) {
// alert("고객님께서 발송한 최근문자가 발송결과에 표시되지않아, 문자발송이 임시로 차단되었습니다.\n문자온 고객센터에 문의해주세요.");
// return false;
//}
//문자내용에 이모지가 있는지 체크
var strCont = msgForm.smsTxtArea.value;
if(!emojiCheck(strCont)) return false;
// 발신번호 체크
if(callFrom == ""){
alert("발신번호를 입력해 주세요.");
return false;
}
//그림문자가 아닌데 본문 비어있는지 확인
if(imgFilePath.length == 0) {
if(msgForm.smsTxtArea.value == "") {
alert("문자 내용을 입력해 주세요.");
return false;
}
}else{//문자내용에 스팸 단어 포함여부 체크
var spmData = new FormData(msgForm);
url = "/web/mjon/msgdata/selectSpamTxtChkAjax.do";
$.ajax({
type: "POST",
url: url,
data: spmData,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success: function (returnData, status) {
if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
if("fail" == returnData.result){
alert(returnData.message);
return false;
}else if("loginFail" == returnData.result){
alert(returnData.message);
return false;
}else if("spams" == returnData.result){
// var spmFilterTxt = returnData.spmFilterTxt;
spamStatus = true;
//alert("문자 내용에 \"" + spmFilterTxt + "\"의 스팸문자가 포함되어 있습니다.");
alert("전송 문자내용 중 스팸문구로 의심되는 단어가 포함되어 있어 문자발송이 불가합니다.\n자세한 사항은 문자온 고객센터를 통해 문의주시기 바랍니다.");
return false;
}
} else if(status== 'fail'){
alert(returnData.message);
return false;
}
},
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}" />';
}
//제목 사용한 경우
if($("input[name=title_status]:checked").val() == 'Y') {
form.mmsSubject.value = msgForm.mmsSubject.value;
} else {
form.mmsSubject.value = ""; //초기화
}
}else if($('#nowMsgType').text() == "장문"){
msgType = 'L';
form.eachPrice.value = '<c:out value="${longPrice}" />';
//제목 사용한 경우
if($("input[name=title_status]:checked").val() == 'Y') {
form.mmsSubject.value = msgForm.mmsSubject.value;
} else {
form.mmsSubject.value = ""; //초기화
form.mmsSubject.value = ""; // 장문/그림 제목 초기화
}
}else{
msgType = 'S';
form.eachPrice.value = '<c:out value="${shortPrice}" />';
}
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;
//이미지 path 보내기
form.imgFilePath.value = imgFilePath;
form.action = "/web/pop/testSendPop.do";
form.method = "post";
window.open("about:blank", 'testSendPop', 'width=770, height=850, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=1');
form.target = "testSendPop";
form.submit();
}
function advMsgInsert(){
var callFrom = $("#callFromList option:selected").val();
var advStr = '<div class="ad_txt"><p>(선거운동정보)</p></div>';
var advDenyStr = '<div class="deny_txt">후보자전화번호 ' + callFrom + '<br/>불법수집정보 신고번호 118번<br/>무료거부 0808800858</div>';
var preAdvStr = '<p class="ad_tit">(선거운동정보)</p>';
var preAdvDenyStr = '<p class="deny_receipt">후보자전화번호 ' + callFrom + '<br>불법수집정보 신고번호 118번<br>무료거부 0808800858</p>';
//선거 및 무료수신거부 텍스트 추가
if ($('input[name=send_adYn]:checked').val() == 'Y'){
//문자내용 광고문자 삭제하기
$(".ad_txt").remove();
$(".deny_txt").remove();
//미리보기 광고 문자 삭제하기
$('.ad_tit').remove();
$('.deny_receipt').remove();
//문자 내용에 선거 문자 추가해주기
$(advStr).insertBefore('textarea[name=smsTxtArea]');
$(advDenyStr).insertBefore('div[name=afterDeny]');
//미리보기에 광고 문자 추가해주기
$(preAdvStr).insertBefore('.none_txt');
$(preAdvDenyStr).insertAfter('.realtime');
}else{ //선거 및 무료수신거부 텍스트 삭제
//문자내용 선거문자 삭제하기
$('.ad_txt').remove();
$('.deny_txt').remove();
//미리보기 광고 문자 삭제하기
$('.ad_tit').remove();
$('.deny_receipt').remove();
}
//문자 바이트수 계산하기
fnByteString($('#smsTxtArea').val());
}
function setCandidatePhone() {
advMsgInsert();
}
</script>
<div class="loading_layer">
<div class="loading_container">
<div class="bar"></div>
<div class="text">Loading</div>
</div>
</div>
<!-- 후보자등록 팝업 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>을 하셔야만 이용 가능합니다.</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="text" 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}">
<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>
</div>
</div><!--// 후보자등록 팝업 -->
<!-- 선거문자 발송규정 팝업 data-tooltip:candidate_popup02 -->
<div class="tooltip-wrap">
<div class="popup-com ad_layer candidate_popup02" tabindex="0" data-tooltip-con="candidate_popup02" data-focus="candidate_popup02" data-focus-prev="candidate_popup02-close" style="width: 795px">
<div class="popup_heading">
<p>선거문자 발송규정</p>
<button type="button" class="tooltip-close" data-focus="candidate_popup02-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
</div>
<div class="layer_in">
<div class="adpop_cont adpop3 current">
<div class="adpop1_top">
<div>
<p>선거문자 발송규정<span>을<br>준수해주세요</span></p>
<span>문자발송 전 반드시 공직선거법<br>
<span class="c_e40000 fwRg">제82조의5 “선거운동정보의 전송제한” 규정</span>을<br>
확인 후 전송해주시기 바랍니다.</span>
<div>
<p>선관위에 신고된 후보자 연락처로 발송</p>
<p>메시지 시작 부분에 (선거운동정보) 표기</p>
<p>후보자 전화번호 표기</p>
<p>불법수집정보 신고번호 118 표기</p>
<p>무료 수신거부 080 번호 표기</p>
</div>
</div>
</div>
<div class="adpop2_middle">
<p>- 규정 위반 시 공직선거법 제255조에 의거 법적 재재(1년 이하의 징역 또는 100만원 이하의 벌금)를 받을 수 있습니다.</p>
<p>- 문자온에서는 선거문자 전송 시 선관위 규정을 최대한 준수하여 서비스를 제공하고 있으나 미미한 점이 있을 수 있습니다.<br>
선거문자 전송 시 선관위 규정을 사전에 반드시 확인하시기 바라며, 미확인으로 인한 법적책임은 전송자 본인에게 있음을<br> 알려드립니다.</p>
</div>
<div class="adpop2_bottom">
<p class="adpop2_title"><i></i>선거문자 이용 시 참고 법률 안내</p>
<div>
<p>1. 선거문자 발송 건수 및 발신번호 등록</p>
<p>제59조-2<br>
문자메시지를 전송하는 방법으로 선거운동을 하는 경우. 이 경우 자동 동보통신의 방법(동시 수신대상자가 20명을
초과하거나 그 대상자가 20명 이하인 경우에도 프로그램을 이용하여 수신자를 자동으로 선택하여 전송하는 방식을
말한다. 이하 같다)으로 전송할 수 있는 자는 후보자와 예비후보자에 한하되, 그 횟수는 8회(후보자의 경우 예비후보자
로서 전송한 횟수를 포함한다)를 넘을 수 없으며, 중앙선거관리위원회규칙에 따라 신고한 1개의 전화번호만을
사용하여야 한다.</p>
</div>
<div>
<p>2. 선거문자 필수 입력사항</p>
<p>제82조의5<br>
예비후보자 또는 후보자가 제59조제2호ㆍ제3호에 따라 선거운동 목적의 정보(이하 “선거운동정보”라 한다)를 자동
동보통신의 방법으로 문자메시지로 전송하거나 전송대행업체에 위탁하여 전자우편으로 전송하는 때에는 다음 각 호의
사항을 선거운동정보에 명시하여야 한다.<br><br>
1. 선거운동정보에 해당하는 사실<br>
2. 문자메시지를 전송하는 경우 그의 전화번호<br>
3. 불법수집정보 신고 전화번호<br>
4. 수신거부의 의사표시를 쉽게 할 수 있는 조치 및 방법에 관한 사항</p>
</div>
<div>
<p>3. 선거문자 발송 시간 제한</p>
<p>제109조<br>
전화를 이용한 선거운동은 야간(오후 11시부터 다음 날 오전 6시까지를 말한다)에는 이를 할 수 없다.</p>
</div>
<div>
<p>4. 추가 참고 법률</p>
<p>공직선거법 제60조의3(예비후보자 등의 선거운동)<br>
공직선거법 제82조의4(정보통신망을 이용한 선거운동)<br>
공직선거법 제122조의2(선거비용의 보전 등)<br>
공직선거법 제255조(부정선거운동죄)<br>
공직선거법 제256조(각종제한규정위반죄) 제3항</p>
</div>
</div>
</div><!--// 선거문자 발송규정 안내 -->
</div>
<div style="margin: 0 auto 30px auto; text-align: center;">
<button type="button" class="election_btn"><i></i>선거관리위원회 바로가기</button>
</div>
</div>
</div><!--// 선거문자 발송규정 팝업 -->
<!-- 엑셀 불러오기 -->
<div class="tooltip-wrap">
<div class="popup-com import_layer popup02" tabindex="0" data-tooltip-con="popup02" data-focus="popup02" data-focus-prev="popup02-close">
<div class="popup_heading">
<p><span>엑셀</span> 불러오기</p>
<button type="button" class="tooltip-close" data-focus="popup02-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
</div>
<div class="layer_in">
<!-- 엑셀파일 불러오기 -->
<div class="hascont">
<div class="titBox">
<p>- 최대 2만 건까지 등록할 수 있습니다.</p>
<p>- [엑셀 불러오기]시 문서의 A, B, C, D열을 불러옵니다.(지원하는 파일 형식 : xls, xlsx)</p>
<p>- 이름 : 20byte, [*1*] [*2*] : 40byte까지 입력 가능합니다.</p>
<p>- 휴대폰 항목은 숫자, 하이픈(-)만 인식하며, 번호 앞에 0이 생략되어도 정상 등록됩니다.
</p>
<%-- <button type="button" class="excel_btn" onclick="location.href='/cmm/fms/FileDown.do?atchFileId=FILE_000000000011651&fileSn=1'"><i></i>샘플파일 다운로드</button> --%>
<button type="button" class="excel_btn" onclick="location.href='/download/msg/엑셀주소록_등록양식.xlsx'"><i class="downroad"></i>샘플파일 다운로드</button>
</div>
<div class="attachedFile">
<label for="" class="attachedFile_label">첨부파일</label>
<input type="text" id="excelNm" readonly>
<input type="file" id="excelFile" accept=".xls, .xlsx" onchange="excelExport(event); return false;" style="display:none"/>
<button type="button" class="btnType btnType6 c3">찾아보기</button>
<p><span class="vMiddle">*</span> 첨부된 파일은 <span class="c_e40000">[추가]버튼을 클릭</span>하셔야 받는 사람에 등록됩니다.</p>
</div>
</div><!--// 엑셀파일 불러오기 -->
<div class="popup_btn_wrap2">
<button type="button" class="tooltip-close" data-focus="popup02-close" data-focus-next="popup02" id="excelAdd">추가</button>
<button type="button" class="tooltip-close" data-focus="popup02-close" data-focus-next="popup02">닫기</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>- 여러 수신자에게 다른 내용의 메시지를 한번에 보낼 수 있습니다. <span>(최대 1만 건)</span></li>
<li>- 엑셀영역은 복사, 붙여넣기가 가능합니다.</p>
<li>- 엑셀파일로 주소록을 최대 10만건까지 등록하여 간편하게 발송 및 관리하실 수 있습니다.</li>
<li>- 반드시 샘플파일을 다운로드하여 작성방법을 확인하신 후 정해진 양식에 맞추어 주소록을 작성하셔야 합니다.</li>
<li>- 쉼표(,), 구분선(|), 역슬래시(\, ₩), 작은따옴표('), 큰따옴표(") 등 발송불가 특수문자는 저장되지 않습니다.</li>
<li>- 휴대폰 번호는 필수입력 항목입니다.</li>
<li>- 전화번호 형태는 010-1234-5678 또는 01012345678 모두 가능합니다. 단, 공백은 허용되지 않습니다.</li>
<li>- 엑셀 파일에 비밀번호 설정, 제한된 보기, 수식 등이 설정되어 있는 경우 업로드가 불가합니다.</li>
<li>- 이름 50byte, [*1*]~[*4*] 100byte 까지 입력 가능합니다.</li>
<li>- 첨부가능 파일 : xlsx, xls(최대용량 10MB)</li>
<li>- ‘오류 검사’를 통해 등록된 데이터에 전화번호 입력 오류를 확인하실 수 있습니다.</li>
<li>- 선거문자는 <span>반드시 발송규정을 사전 확인</span> 후 발송해 주시기 바랍니다.</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="location.href='/web/mjon/custom/selectMsgCustomView.do'"><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"/><!-- 장문 변환문자 건수 -->
<!-- 이벤트 관련 변수 -->
<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 get_excel" id="tab1_2"> -->
<div class="heading">
<h2>선거 단체문자 전송</h2>
<div class="election_btnWrap">
<button type="button" class="button2 info" onclick="infoPop('MsgExcelDataSMLView2');">발송규정</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: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>- 여러 수신자에게 다른 내용의 메시지를 한번에 보낼 수 있습니다<span>(최대 1만 건)</span></p>
<p>- 엑셀영역은 복사, 붙여넣기가 가능합니다.</p>
<p>- 엑셀파일로 주소록을 최대 10만건까지 등록하여 간편하게 발송 및 관리하실 수 있습니다.</p>
<p>- 반드시 샘플파일을 다운로드하여 작성방법을 확인하신 후 정해진 양식에 맞추어 주소록을 작성하셔야 합니다.</p>
<p>- 쉼표(,), 구분선(|), 역슬래시(\, ₩), 작은따옴표('), 큰따옴표(") 등 발송불가 특수문자는 저장되지 않습니다.</p>
<p>- 휴대폰 번호는 필수입력 항목입니다.</p>
<p>- 전화번호 형태는 010-1234-5678 또는 01012345678 모두 가능합니다. 단, 공백은 허용되지 않습니다.</p>
<p>- 엑셀 파일에 비밀번호 설정, 제한된 보기, 수식 등이 설정되어 있는 경우 업로드가 불가합니다.</p>
<p>- 이름 50byte, [*1*]~[*4*] 100byte 까지 입력 가능합니다.</p>
<p>- 첨부가능 파일 : xlsx, xls(최대용량 10MB)</p>
<p>- ‘오류 검사’를 통해 등록된 데이터에 전화번호 입력 오류를 확인하실 수 있습니다.</p>
<p>- 선거문자는 반드시 유의사항을 사전 확인 후 발송해 주시기 바랍니다. <span><a href="#">[선거문자 관련규정 안내]</a></span></p>
<button type="button" class="titBox_btn1"><i></i>사용안내</button>
</div>
--%>
<div class="send_general">
<!-- send left 문자 보내기 입력 -->
<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: 120px;">
<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>
</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">
<!-- 업로드한 이미지의 썸네일 영역 -->
<ul class="thumb_wrap liOnImg"></ul>
<!-- //업로드한 이미지의 썸네일 영역 -->
<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>
</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>
</div>
<p>* 현재 [<span id="nowMsgType">단문</span>] <span class="c_e40000 fwBold nowMsgCnt">0</span>건 발송 가능합니다.</p>
</td>
</tr>
</tbody>
</table>
</div><!-- send left 문자 보내기 입력 -->
<!-- send right 문자 보내기 미리보기 -->
<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>
<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><!--// send right 문자 보내기 미리보기 -->
</div>
<!-- excel 대량 불러오기 -->
<div class="excelWrap">
<div>
<div class="excel_selBox">
<div>
<button type="button" data-tooltip="popup02" class="excel_btn btnType"><i class="uproad"></i>엑셀 불러오기</button>
</div>
<div>
<%-- <button type="button" class="excel_btn" onclick="location.href='/cmm/fms/FileDown.do?atchFileId=FILE_000000000011960&fileSn=1'"><i class="downroad"></i>엑셀 샘플 다운로드</button> --%>
<button type="button" class="excel_btn" onclick="location.href='/download/msg/엑셀주소록_등록양식.xlsx'"><i class="downroad"></i>샘플파일 다운로드</button>
</div>
</div>
<div class="file_add upload_area">
<p><img src="/publish/images/content/file_add.png" alt="파일 붙여넣기">마우스로 엑셀 파일을 여기에 끌어다 놓으세요</p>
</div>
<div class="excel_middle2">
<p>총 <span class="c_e40000 fwBold" id="rowTotCnt">0</span>건 / 중복 <span class="c_002c9a fwBold" id="rowDupCnt">0</span>건</p>
<button type="button" class="btnType btnType6 addCallToF">번호추가</button>
</div>
<div class="drag_drop_wrap callList_box">
<img src="/publish/images/content/excel.jpg" style="width: 100%;">
</div>
<div class="excel_middle">
<div class="select_btnWrap clearfix">
<div>
<button type="button" class="all_del"><i class="remove_img"></i>전체삭제</button>
<button type="button" class="select_del"><i class="remove_img"></i>선택삭제</button>
<button type="button" class="chkVali_del"><i class="remove_img"></i>오류번호삭제</button>
<button type="button" class="check_validity">오류 검사 <i></i></button>
<div class="error_hover_cont send_hover_cont">
<p>휴대폰 번호 입력 시 해당 휴대폰 번호에 대한 형식이 어긋나거나 휴대폰 번호에 오류가 있는지 등을 검사하는 기능</p>
<span>(예시) 010-1234-0001(O) / 010-123-0001(X)</span>
</div>
</div>
<div>
<button type="button" class="excel_btn addExcelDw"><i class="downroad"></i>엑셀 다운로드</button>
</div>
</div>
</div>
</div>
</div>
<div class="send_general sec">
<div class="send_left">
<table class="tType1">
<caption>일반 문자보내기 분류 번호 내용 등을 입력하는 표</caption>
<colgroup>
<col style="width: 100px;">
<col style="width: auto;">
</colgroup>
<tbody>
<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>
<label for="radio_bill_1" class="label">충전 금액</label>
<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>
<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>
</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="id" class="label"></label>
<input type="text" size="20" id="recommId" name="recommId" 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="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}">
<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}">
<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>
<select class="selType1" id="divideCnt" name="divideCnt">
<option value="2">2</option>
<option value="10">10</option>
<option value="20">20</option>
<option value="30">30</option>
</select>
<label for="divideCnt">건</label>
<select class="selType1" id="divideTime" name="divideTime">
<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> --><!--// tab content2 -->
</form>
<form id="latestMsgForm" name="latestMsgForm" method="post">
<input type="hidden" id="userId" name="userId" value="${LoginVO.id}"/>
</form>
<form id="addMyMsgForm" name="addMyMsgForm" method="post">
<input type="hidden" id="msgId" name="msgId" value=""/>
<input type="hidden" id="pageType1" name="pageType" value=""/>
</form>
<form name="popForm" id="popForm" method="post">
<input type="hidden" id="pageType2" name="pageType" value=""/>
</form>
<form name="excelDownForm" id="excelDownForm" method="post">
<input type="hidden" name="callToList" id="exdCallToList" value=""/>
<input type="hidden" name="nameList" id="exdNameList" value=""/>
<input type="hidden" name="rep1List" id="exdRep1List" value=""/>
<input type="hidden" name="rep2List" id="exdRep2List" value=""/>
<input type="hidden" name="rep3List" id="exdRep3List" value=""/>
<input type="hidden" name="rep4List" id="exdRep4List" value=""/>
<input type="hidden" name="rep5List" id="exdRep5List" value=""/>
</form>
<form name="testSendForm" id="testSendForm" method="post">
<input type="hidden" name="msgKind" value="C"/>
<input type="hidden" name="msgpreview" value=""/>
<input type="hidden" name="mmsSubject" value=""/>
<input type="hidden" name="callFrom" value=""/>
<input type="hidden" name="imgFilePath" value=""/>
<input type="hidden" name="eachPrice" value=""/>
<input type="hidden" name="msgType" value=""/>
<input type="hidden" name="smsTxt" value=""/>
</form>