File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
2023-06-22
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
2024-01-04
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("");
}
//발송금액 단가표시
function SetPriceWrapOpen() {
var loginVO = '${LoginVO}';
//로그인 체크
if(loginVO == "" || loginVO == null){
}
else {
// 발송금액 가격안내
$("#myPriceWrap").show();
}
}
//등급제 시행 ON/OFF 체크
function getMberSettingDetail() {
$.ajax({
type: "POST",
url: "/web/grd/mberSettDetailAjax.do",
data: {},
dataType:'json',
async: false,
success: function (data) {
if (data.isSuccess) {
// 발송금액 가격안내
$("#myPriceWrap").show();
}
else {
//alert("Msg : " + data.msg);
}
},
error: function (e) {
//alert("ERROR : " + JSON.stringify(e));
}
});
}
$(document).ready(function (){
// 발송금액 단가표시
SetPriceWrapOpen();
$('.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) {
console.log(' :: callList_box :: ');
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();
}
//이벤트 잔액 로그인 체크
$(".btn_event_cash").off().on("click", function(){
var loginVO = '${LoginVO}';
if(loginVO == "" || loginVO == null){
alert("로그인 후 이용이 가능합니다.");
return false;
}
});
function checkNumber(event) {
var divideCnt = $('#divideCnt').val();
if(!(event.key >= 0 && event.key <= 9)) {
return false;
}
var totCnt = divideCnt + "" + event.key;
if(Number(totCnt) > 5000){
alert("분할전송 건수는 5,000건을 초과할 수 없습니다.");
$('#divideCnt').val("20");
return false;
}
return true;
}
</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*]~[*4*] : 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-12345-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 class="my_price_wrap" id="myPriceWrap" style="display: none;">
<div class="center-line"></div>
<ul>
<li class="title">
<img src="/publish/images/content/icon_mypage_message.png" alt="">나의 단가 <span>:</span>
</li>
<li class="price_line">
<span class="type">단문</span>
<span class="price"><fmt:formatNumber value="${shortPrice}" pattern="###.#" /></span>원
<span class="line">/ </span>
</li>
<li class="price_line">
<span class="type">장문</span>
<span class="price"><fmt:formatNumber value="${longPrice}" pattern="###.#" /></span>원
<span class="line">/ </span>
</li>
<li class="price_line">
<span class="type">그림</span>
<span class="price"><fmt:formatNumber value="${picturePrice}" pattern="###.#" /></span>원
(2장 : <fmt:formatNumber value="${picture2Price}" pattern="###.#" />원 / 3장 : <fmt:formatNumber value="${picture3Price}" pattern="###.#" />원)
</li>
</ul>
</div>
<!-- End -->
</div>
</th>
</tr>
<%-- <tr>
<th scope="row">추천인 ID</th>
<td class="check_num">
<input id="radio5" type="radio"name="recom" checked="checked">
<label for="radio5">없음</label>
<input id="radio6" type="radio" name="recom">
<label for="radio6">있음</label>
<div>
<label for="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>
<input type="text" class="dividType1" id="divideCnt" name="divideCnt" value="20" onkeypress='return checkNumber(event)' maxlength="4"/>
<label for="divideCnt">건씩</label>
<select class="selType1" id="divideTime" name="divideTime">
<option value="1">01분</option>
<option value="2">02분</option>
<option value="3">03분</option>
<option value="4">04분</option>
<option value="5">05분</option>
<option value="10">10분</option>
<option value="15">15분</option>
<option value="20">20분</option>
<option value="30">30분</option>
</select>
<label for="divideTime">간격</label>
</div>
</div>
</div>
</div>
</div>
<!-- </div> --><!--// 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>