mjon_git/src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp

3629 lines
132 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<%@ 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="<c:url value='/js/txtSpecialReplace.js?date=202304250001'/>"></script>
<!-- 주소록 유효성 체크 공통유틸로 인해 추가 -->
<script type="text/javascript" src="<c:url value='/js/web/addr/cmn.js?date=202409021440'/>"></script>
<% pageContext.setAttribute("newLineChar", "\r\n"); %>
<script type="text/javascript">
var tableErrorData = [];
var totRows = 0; // 좌측 받는사람 총 갯수
/* 파일등록 */
var _fileIdx = 0;
var _fileForm2 = new Array();
var fileExt = ""; // 첨부파일 확장자
var excelAddr = []; //엑셀 불러오기에서 내용 저장하는 배열 변수
$(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 처리
//Tabulator AJAX Data Loading
tableL = new Tabulator(".callList_box", {
height:"255px",
layout:"fitColumns",
headerHozAlign:"center",
validationMode:"highlight",
placeholder:"복사(Ctrl+C)한 내용을 여기에 붙여넣기(Ctrl+V) 해주세요.", //fit columns to width of table (optional)
resizableColumns:false,
columnDefaults:{ // 공통설정
hozAlign: "center",
headerHozAlign: "center",
editor: "input",
editor: false
},
columns:[ //Define Table Columns
{formatter:"rowSelection", headerHozAlign:"center", titleFormatter:"rowSelection",clipboard:false, hozAlign:"center", width:5, headerSort:false, cellClick:function(e, cell){
cell.getRow().toggleSelect();
}},
{formatter:"rownum", align:"center" ,title:"No", hozAlign:"center", headerHozAlign:"center", width:40},
{title:"이름", field:"name", editor:false, validator:["maxLength:12"], cellEdited:function(cell){
fnReplCell();
}},
{title:"휴대폰", field:"phone", width:100, editor:false, validator:["required","minLength:10", "maxLength:12"]},
{title:"[*1*]", field:"rep1", minWidth:60, editor:false, validator:["maxLength:40"], cellEdited:function(cell){
fnReplCell();
}},
{title:"[*2*]", field:"rep2", minWidth:60, editor:false, validator:["maxLength:40"], cellEdited:function(cell){
fnReplCell();
}},
{title:"[*3*]", field:"rep3", minWidth:60, editor:false, validator:["maxLength:40"], cellEdited:function(cell){
fnReplCell();
}},
{title:"[*4*]", field:"rep4", minWidth:60, editor:false, validator:["maxLength:40"], cellEdited:function(cell){
fnReplCell();
}},
],
validationFailed:function(cell, value, parameters){ // 유효성 체크 함수 - 아직 잘 모르겠음
//take action on validation fail
var valid = cell.isValid();
var fieldNm = cell.getField();
var cellVal = cell.getValue();
var returnVal = "";
if(!valid){
if(fieldNm == "name"){
alert("받는사람 이름은 최대 12글자까지만 입력 가능합니다.");
cell.setValue(strMaxLengthSubstring(cellVal, 11)); //스크립트 함수가 0부터 시작이므로 원하는 글자수 -1을 해줘야한다.
cell.clearValidation();
}else if(fieldNm == "phone"){
alert("휴대폰번호는 하이픈(-)을 제외한 숫자만 정확히 입력해 주세요.");
}else{
alert("치환문자를 정확히 입력해 주세요. 40글자 이내로 입력 가능합니다.");
cell.setValue(strMaxLengthSubstring(cellVal, 39));
cell.clearValidation();
}
}
return value % parameters.phone;
},
});
// 주소록 불러오기 Tabulator 초기화
tableAddr = new Tabulator(".callAddr_box", {
height: "255px",
layout: "fitColumns",
headerHozAlign: "center",
validationMode: "highlight",
placeholder: "주소록 그룹을 선택해 주세요.",
resizableColumns: false,
progressiveLoad:"scroll",
columns: [
{formatter:"rowSelection", headerHozAlign:"center", titleFormatter:"rowSelection",clipboard:false, hozAlign:"center", width:5, headerSort:false, cellClick:function(e, cell){
cell.getRow().toggleSelect();
}},
{formatter: "rownum", align: "center", title: "No", hozAlign: "center", headerHozAlign: "center", width: 60},
{title: "그룹명", hozAlign: "center", field: "groupNm", editor: false, width: 100, validator: ["required", "minLength:2", "maxLength:40"]},
{title: "이름", hozAlign: "center", field: "name", editor: false, width: 100, validator: ["maxLength:12"]},
{title: "휴대폰번호", hozAlign: "center", field: "phone", editor: false, width: 100, validator: ["required", "minLength:10", "maxLength:11"]},
{title: "[*1*]", hozAlign: "center", field: "rep1", editor: false, width: 84, validator: ["maxLength:40"]},
{title: "[*2*]", hozAlign: "center", field: "rep2", editor: false, width: 84, validator: ["maxLength:40"]},
{title: "[*3*]", hozAlign: "center", field: "rep3", editor: false, width: 84, validator: ["maxLength:40"]},
{title: "[*4*]", hozAlign: "center", field: "rep4", editor: false, width: 84, validator: ["maxLength:40"]},
],
validationFailed: function(cell, value, parameters) {
var valid = cell.isValid();
var fieldNm = cell.getField();
if (!valid) {
if (fieldNm == "addrName") {
alert("받는사람 이름은 최대 12글자까지만 입력 가능합니다.");
} else if (fieldNm == "addrPhone") {
alert("휴대폰번호는 하이픈(-)을 제외한 숫자만 정확히 입력해 주세요.");
} else if (fieldNm == "addrGroupNm") {
alert("그룹명을 정확히 입력해 주세요. 2 ~ 40글자 이내로 입력 가능합니다.");
} else {
alert("치환문자를 정확히 입력해 주세요. 100글자 이내로 입력 가능합니다.");
}
cell.setValue("");
}
console.log('parameters : ', parameters);
return value % parameters.addrPhone;
},
});
//핸드폰 번호 Tabulator에서 수정시 중복 체크
function fnDuplPhone(){
var recTableData = tableL.getRows(); // 받는사람 리스트의 전체 목록을 저장
var tableData = [];
//기존 받는사람 리스트를 배열에 미리 담아둔다.
if(recTableData.length > 0){
for(var j=0; j < recTableData.length; j++){
tableData.push({phone: removeDash(recTableData[j].getData().phone.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("동일한 휴대폰 번호가 받는사람 목록에 등록되어 있습니다. 중복 번호를 삭제하시겠습니까?")){
//수신목록에서 중복 휴대폰 번호 삭제해주기
tableL.clearData(); //기존 받는사람 목록을 삭제.
tableL.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기
_fileForm2 = []; //form file data 초기화
_fileIdx = 0; //form file idx 초기화
totRows = tableL.getRows().length;
updateTotCnt(totRows); //전체 데이터 갯수 구하기
}
}
}
//받는사람 목록에 복사/붙여넣기 기능 처리
$('.callList_box').on('paste', function (e) {
var element = e.originalEvent.clipboardData.getData('text'); // 클립보드에 복사한 데이터 가져오기
var elmSplit= [];
elmSplit = element.split("\n");
var elmLen = elmSplit.length;
if(elmLen < 0){
alert("붙여넣을 연락처를 복사해주세요.");
return false;
}else{
tableErrorData.length = 0; // 오류 번호 배열 초기화
var splitData = [];
var realPhone = [];
for(var i=0; i < elmLen; i++){
var splitStr = elmSplit[i];
var tabData = [];
var comData = [];
if(splitStr.indexOf('\t') != -1){
splitData = splitStr.split('\t'); //탭 구분으로 데이터 분할
}else if(splitStr.indexOf(',') != -1){
splitData = splitStr.split(','); //콤마 구분으로 데이터 분할
}else{
splitData = splitStr.split(' ');
}
if(splitData.length == 0){// 데이터가 없는경우
alert("탭으로 구분하여 데이터를 복사해 주세요.");
return false;
}else if(splitData.length == 1){// 데이터가 탭으로 구분이 없는 경우
for(var j=0; j < splitData.length; j++){
if(checkHpNum(splitData[j].trim())){//핸드폰 양식이 맞는지 확인
//배열 끝에 데이터 추가해 주기
realPhone.push({phone: removeDash(splitData[j].trim()), name: ""});
}
else {
if (splitData[j].trim() != '' && splitData[j].trim() != null && splitData[j].trim() != undefined) {
tableErrorData.push(splitData[j].trim());
}
}
}
}else{//데이터가 탭으로 구분되어 이름, 연락처로 구분된 경우
var phone = ""; //핸드폰번호
var name = ""; //이름
var rep1 = ""; //치환문자1
var rep2 = ""; //치환문자2
var rep3 = ""; //치환문자3
var rep4 = ""; //치환문자4
var isPhoneValid = false;
for(var j=0; j < splitData.length; j++){
if(j == 0){
name = splitData[j].trim();
}
if(j == 1){
if(checkHpNum(splitData[j].trim())){//핸드폰 양식이 맞는지 확인
phone = removeDash(splitData[j].trim());
isPhoneValid = true;
}else{
if (splitData[j].trim() != '' && splitData[j].trim() != null && splitData[j].trim() != undefined) {
tableErrorData.push(splitData[j].trim());
}
}
}
if(j == 2){ //치환문자1
rep1 = splitData[j].trim();
}
if(j == 3){ //치환문자2
rep2 = splitData[j].trim();
}
if(j == 4){ //치환문자3
rep3 = splitData[j].trim();
}
if(j == 5){ //치환문자4
rep4 = splitData[j].trim();
}
}
if (isPhoneValid == true) {
//배열 끝에 데이터 추가해 주기
realPhone.push({phone: phone, name: name, rep1 : rep1, rep2 : rep2, rep3 : rep3, rep4 : rep4 });
}
}//else end
}
var recTableData = tableL.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});
}
}
//중복 연락처 1개만 남기고 삭제하기
var removeDuplPhone = dupliPhoneData(tableData);
//수신자 리스트에 전화번호 추가해주기
tableL.setData(removeDuplPhone);
totRows = tableL.getRows().length;
updateTotCnt(totRows); //전체 데이터 갯수 구하기
var smsTxtArea = $('#smsTxtArea').val();
//일괄변환 문구 결제금액 처리
if(smsTxtArea.indexOf("[*이름*]") > -1
|| smsTxtArea.indexOf("[*1*]") > -1
|| smsTxtArea.indexOf("[*2*]") > -1
|| smsTxtArea.indexOf("[*3*]") > -1
|| smsTxtArea.indexOf("[*4*]") > -1){
fnReplCell();
}else{
//결제 금액 구하기
totalPriceSum(totRows);
}
if (tableErrorData.length > 0) {
alert("올바르지 않은 휴대폰 번호가 "+ tableErrorData.length +" 건 있습니다.");
}
}
});
//받는사람 번호 버튼 클릭시 Tabulator에 데이터 넣어주기
$('.addCallToF').click(function(){
var callToNum = $('#callTo').val();
if(callToNum == null || callToNum == ""){
alert("받는사람 번호를 입력해 주세요.");
return false;
}else if(!checkHpNum(callToNum)){
alert("올바른 전화번호를 입력해 주세요.");
$('#callTo').val("");
return false;
}
//핸드폰 번호에 '-' 문자 제거하기
callToNum = removeDash(callToNum);
//기존 받는사람 연락처 모두 불러오기
var data = tableL.getRows();
var tableData = [];
var dpCnt = 0;
for(var i=0; i < tableL.getRows().length; i++){
if(callToNum == data[i].getData().phone){
dpCnt++;
}
}
if(dpCnt > 0){
alert("받는사람 리스트에 동일한 연락처가 있습니다.");
$('#callTo').val("");
return false;
}else{
tabledata = [{phone: callToNum},];
//빈 row 데이터 삭제하기
var befData = tableL.getRows();
var totLen = tableL.getRows().length;
for(var i=0; i < totLen; i++){
tableData.push({phone: data[i].getData().phone.trim(), name: data[i].getData().name});
}
//연락처 추가해 주기
addPhoneInfo(tabledata);
$('#callTo').val("");
}
});
//받는사람 전체삭제 버튼 처리
$('.all_del').click(function(){
var data = tableL.getRows();
if(data == null || data == ""){
alert("받는사람을 추가해 주세요.");
return false;
}else{
if(confirm("받는사람 목록을 모두 삭제하시겠습니까?")){
tableL.clearData();
$("#rowTotCnt").text(0); //총건수 수정
$("#rowDupCnt").text(0); //중복건수 수정
totalPriceSum(0); //결제 금액 수정
}
}
});
// 받는사람 선택삭제 버튼 처리해주기
$('.select_del').click(function(){
if(tableL == null || tableL == ""){
alert("받는사람을 추가해 주세요.");
return false;
}
var selectedData = tableL.getSelectedRows();
if(selectedData == "" || selectedData == null){
alert("삭제할 연락처를 선택해주세요.");
return false;
}else{ // 선택한 Row 데이터 삭제하기
if(confirm("선택하신 받는 사람을 삭제하시겠습니까?")){
for(var i=0; i < selectedData.length; i++){
selectedData[i].delete();
}
totRows = tableL.getRows().length;
updateTotCnt(totRows);
var smsTxtArea = $('#smsTxtArea').val();
//일괄변환 문구 결제금액 처리
if(smsTxtArea.indexOf("[*이름*]") > -1
|| smsTxtArea.indexOf("[*1*]") > -1
|| smsTxtArea.indexOf("[*2*]") > -1
|| smsTxtArea.indexOf("[*3*]") > -1
|| smsTxtArea.indexOf("[*4*]") > -1){
fnReplCell();
}else{
//결제 금액 구하기
totalPriceSum(totRows);
}
}
}
});
//주소록 불러오기 버튼 클릭시
$('.popupAddr').click(function(){
var login = '${LoginVO.id}';
if(login == null || login == ''){
alert("로그인 후 이용이 가능합니다.");
return false;
}
$("#addrGroupLoad").load("/web/mjon/msgcampain/selectAddrGroupListAjax.do", "" ,function(response, status, xhr){
//리스트 스크롤 처리해주기
$(".adr_pop_list").mCustomScrollbar({
axis: 'y',
scrollbarPosition: "outside",
theme: "dark",
autoHideScrollbar: false
});
});
});
//엑섹불러오기 버튼 클릭시 파일 첨부 실행
$('.c3').click(function(){ // 엑셀파일 불러오기 선택 시
$("#excelFile").click();
});
//최근전송내역 팝업 선택추가 버튼 처리(체크내역 받는사람 리스트로 추가해주기)
$(document).on('click', '#latestAddPhone', function (){
var addPhoneList = []; //신규로 추가할 전화번호 저장변수
$("input:checkbox[name='latAddrChk']:checked").each(function(index){
var chkPhone = $(this).val();
if(!checkHpNum(chkPhone)){
alert("올바른 전화번호가 아닙니다.");
return false;
}else{
addPhoneList.push({phone: removeDash(chkPhone.trim())});
}
});
if(addPhoneList.length > 0){
//연락처 추가해 주기
addPhoneInfo(addPhoneList);
$("#btnLatestAddPhoneClose").trigger("click");
}
else {
alert("연락처를 선택해주세요.");
return false;
}
});
//최근전송내역 팝업 전체추가 버튼 처리
$(document).on('click', '#latestAddPhoneAll', function (){
var addPhoneList = []; //신규로 추가할 전화번호 저장변수
$("input:checkbox[name='latAddrChk']").each(function(index){
var chkPhone = $(this).val();
if(!checkHpNum(chkPhone)){
alert("올바른 전화번호가 아닙니다.");
return false;
}else{
addPhoneList.push({phone: removeDash(chkPhone.trim())});
}
});
if(addPhoneList.length > 0){
//연락처 추가해 주기
addPhoneInfo(addPhoneList);
$("#btnLatestAddPhoneClose").trigger("click");
}
else {
alert("연락처가 없습니다.");
return false;
}
});
//최근전송내역 팝업 선택 취소 버튼 처리
$(document).on('click', '#latestCancelPhone', function (){
$("input[name=latAddrChk]").prop("checked", false);
});
//최근전송내역 팝업 삭제 버튼 처리
$(document).on('click', '#latestAddrDel', function (){
$(this).parent("#latestLi").remove();
});
//자주보내는 번호 팝업 선택추가 버튼 처리(체크내역 받는사람 리스트로 추가해주기)
$(document).on('click', '#bookMarkAddPhone', function (){
var addPhoneList = []; //신규로 추가할 전화번호 저장변수
$("input:checkbox[name='bookAddrChk']:checked").each(function(index){
var chkPhone = $(this).val();
if(!checkHpNum(chkPhone)){
alert("올바른 전화번호가 아닙니다.");
return false;
}else{
addPhoneList.push({phone: removeDash(chkPhone.trim())});
}
});
if(addPhoneList.length > 0){
//연락처 추가해 주기
addPhoneInfo(addPhoneList);
$("#btnLatestAddPhoneClose").trigger("click");
}
else {
alert("연락처를 선택해주세요.");
return false;
}
});
//자주보내는 번호 팝업 선택추가 버튼 처리(체크내역 받는사람 리스트로 추가해주기)
$(document).on('click', '#bookMarkAddPhoneAll', function (){
var addPhoneList = []; //신규로 추가할 전화번호 저장변수
$("input:checkbox[name='bookAddrChk']").each(function(index){
var chkPhone = $(this).val();
if(!checkHpNum(chkPhone)){
alert("올바른 전화번호가 아닙니다.");
return false;
}else{
addPhoneList.push({phone: removeDash(chkPhone.trim())});
}
});
if(addPhoneList.length > 0){
//연락처 추가해 주기
addPhoneInfo(addPhoneList);
$("#btnLatestAddPhoneClose").trigger("click");
}
else {
alert("연락처가 없습니다.");
return false;
}
});
//자주보내는 번호 팝업 선택 취소 버튼 처리
$(document).on('click', '#bookMarkCancelPhone', function (){
$("input[name=bookAddrChk]").prop("checked", false);
});
//자주보내는 번호 팝업 삭제 버튼 처리
$(document).on('click', '#bookMarkAddrDel', function (){
$(this).parent("#bookMarkLi").remove();
});
//오류 검사 버튼 처리
$('.check_validity').click(function(){
var invalid = tableL.getInvalidCells(); //오류 데이터 체크
var dataLen = tableL.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;
}
}
if(errMsg == "" || errMsg == null){
alert("내용에 오류가 있습니다.");
return false;
}else{
alert(errMsg + "의 내용에 오류가 있습니다.");
return false;
}
}else{
alert("오류 데이터가 없습니다.");
return false;
}
}else{
alert("연락처를 입력해 주세요.");
return false;
}
});
//문자입력창의 첨부된 이미지 순서를 바꿀 때
$(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 = tableL.getRows().length;
updateTotCnt(totRows); //전체 데이터 갯수 구하기
//일괄변환 문구 결제금액 처리
if(contents.indexOf("[*이름*]") > -1
|| contents.indexOf("[*1*]") > -1
|| contents.indexOf("[*2*]") > -1
|| contents.indexOf("[*3*]") > -1
|| contents.indexOf("[*4*]") > -1){
fnReplCell();
}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").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){
fnReplCell();
}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').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 = ""; //해시태그 검색 시 카테고리 제거
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();
//2줄보기, 4줄보기 초기화
$("#LPageUnit option:eq(0)").prop("selected", true);
$("#PhPageUnit option:eq(0)").prop("selected", true);
$("#msgPageUnit option:eq(0)").prop("selected", true);
$('.bottom_content .area_total_count').hide();
//문자 리스트 불러오기
if(tabIndex == 0) {
formL.letterType.value="S";
formL.pageUnit.value = "10";
formL.searchKeyword.value="";
fnLetterListAjax(1);
}
//그림 문자 리스트 불러오기
if(tabIndex == 1) {
formL.letterType.value="P";
formL.pageUnit.value = "10";
formL.searchKeyword.value="";
fnPhotoListAjax(1);
}
//내문자함 리스트 불러오기
if(tabIndex == 3) {
formL.pageUnit.value = "10";
formM.searchKeyword.value = "";
fnMyMsgListAjax(1);
}
});
/*
단문 / 장문 탭 옵션 선택시 실행
**/
$('.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.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();
});
$('.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 updateTotCnt(data){
var rowTotCnt = data;
$("#rowTotCnt").text(numberWithCommas(rowTotCnt));
}
//주소록 불러오기에서 수신자 리스트 tabulator에 데이터 추가해주기
function addPhoneInfo(data){
if(data == null){
alert("연락처 정보가 없습니다.");
return;
}else{
var idx = 0;
var newData = data;//중복 연락처는 하나만 남기고 모두 제거
var recTableData = tableL.getRows(); // 받는사람 리스트의 전체 목록을 저장
var tableData = [];
//기존 받는사람 리스트를 배열에 미리 담아둔다.
if(recTableData.length > 0){
for(var j=0; j < recTableData.length; j++){
tableData.push({phone: removeDash(recTableData[j].getData().phone) , name: recTableData[j].getData().name, rep1: recTableData[j].getData().rep1, rep2: recTableData[j].getData().rep2, rep3: recTableData[j].getData().rep3, rep4: recTableData[j].getData().rep4});
}
}
//받는사람 리스트를 담아둔 배열에 신규 추가 데이터를 추가해 준다.
for(var i=0; i < newData.length; i++){
tableData.push({phone: removeDash(newData[i].phone) , name: newData[i].name, rep1: newData[i].rep1, rep2: newData[i].rep2, rep3: newData[i].rep3, rep4: newData[i].rep4});
}
//var temp = tableData.length;
//기존 수신 리스트를 지워준 후 신규 전체 리스트를 추가해준다.
tableL.clearData(); //기존 받는사람 목록을 삭제.
//tableL.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기
tableL.addData(getSpupDupliPhoneDataChk(tableData)); // 속도 개선된 중복 검사 호출
_fileForm2 = []; //form file data 초기화
_fileIdx = 0; //form file idx 초기화
totRows = tableL.getRows().length;
updateTotCnt(totRows); //전체 데이터 갯수 구하기
var smsTxtArea = $('#smsTxtArea').val();
//일괄변환 문구 결제금액 처리
if(smsTxtArea.indexOf("[*이름*]") > -1
|| smsTxtArea.indexOf("[*1*]") > -1
|| smsTxtArea.indexOf("[*2*]") > -1
|| smsTxtArea.indexOf("[*3*]") > -1
|| smsTxtArea.indexOf("[*4*]") > -1){
fnReplCell();
}else{
//결제 금액 구하기
totalPriceSum(totRows);
}
}
}
/* 파일사이즈 가져오기 */
function getStrFileSize(filesize){
var sizeStr="";
var sizeKB = filesize/1024;
if(parseInt(sizeKB) > 1024){
var sizeMB = sizeKB/1024;
sizeStr = sizeMB.toFixed(2)+" MB";
}else{
sizeStr = sizeKB.toFixed(2)+" KB";
}
return sizeStr;
}
//발송금액 단가표시
function SetPriceWrapOpen() {
var loginVO = '${LoginVO}';
//로그인 체크
if(loginVO == "" || loginVO == null){
}
else {
// 발송금액 가격안내
$("#myPriceWrap").show();
}
}
//선거 후보자 등록 알림 메세지 처리
function fn_candidateChk(){
alert("선거 후보자를 등록이 되어야 문자 발송이 가능합니다. 후보자 등록을 해주세요.");
return false;
}
//문자 바이트수 계산하기 함수
function fnByteString(contents){
var totalByte = 0;
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); // 내용 문자 입력 바이트 수 계산하기
console.log(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');
}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');
}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);
}
}
// 미리보기 데이터 입력해 주기 , 줄바꿈 문자 변환해주기
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){
fnReplCell();
}else{
var totalPrice = totalPriceSum(totRows);
$('#totalPrice').text(totalPrice);
$('#txtReplYn').val("N");
}
}
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/msgcampain/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>';
$('.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();
}else if($("#imgCnt").val() == 2){
$('.preViewShort').append(imgPath);
$('.photo_num_02').show();
$(".thumb_wrap li").removeClass("on");
}else if($("#imgCnt").val() == 3){
$('.preViewShort').append(imgPath);
$('.photo_num_03').show();
$(".thumb_wrap li").removeClass("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 (){
// 커서 위치에 삽입
setCursorInsertText("smsTxtArea", $(this).attr("value"));
fnByteString($('#smsTxtArea').val());
});
$(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/msgcampain/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 fnAddrGrpSearch(){
var form = document.searchAddrGrpForm;
form.searchKeyword.value = form.searchGrpKeyword.value;
form.searchCondition.value = "";
var sendData = $(document.searchAddrGrpForm).serializeArray();
$("#addrGroupLoad").load("/web/mjon/msgcampain/selectAddrGroupListAjax.do", sendData ,function(response, status, xhr){
//리스트 스크롤 처리해주기
$(".adr_pop_list").mCustomScrollbar({
axis: 'y',
scrollbarPosition: "outside",
theme: "dark",
autoHideScrollbar: false
});
});
}
//주소록 불러오기 팝업의 그룹 선택시 우측에 주소록 불러오기
function fnSelectAddrList(type,addrGrpId,item){
// 주소록 그룹 열림, 닫힘 폴더이미지 초기화
$(".adr_pop_list div p").each(function (index, item) {
$(item).find("img").attr("src", "/publish/images/content/close_folder2.png");
$(item).find("img").attr("alt", "폴더 닫힘");
});
var form = document.searchAddrGrpForm;
form.type.value = type;
form.searchAddrGrpId.value = addrGrpId;
form.searchKeyword.value = "";
form.searchCondition.value = form.searchAddrCondition.value;
//왼쪽 그룹리스트의 그룸명을 선택시 검색어를 초기화해준다.
form.searchAddrKeyword.value="";
$(item).find("img").attr("src", "/publish/images/content/open_folder2.png");
$(item).find("img").attr("alt", "폴더 열림");
loadAddrList();
}
// 주소록 불러오기 팝업 검색 이벤트
function fnAddrSearch(){
var form = document.searchAddrGrpForm;
form.searchKeyword.value = form.searchAddrKeyword.value;
form.searchCondition.value = form.searchAddrCondition.value;
loadAddrList();
}
//주소록 불러오기 팝업 검색 리스트 조회
function loadAddrList(){
/* serialize 를 사용할때는 processData, contentType 옵션 제가할것 */
var data = $("#searchAddrGrpForm").serialize();
var url = "/web/mjon/msgcampain/selectMsgAddrListAjaxQ.do";
$.ajax({
type: "POST",
url: url,
data: data,
dataType:'json',
async: true,
cache: false,
success: function (data) {
console.log('data : ', data);
if(data.status == "OK"){
var addrList = data.object;
if(addrList.length == 0){
alert("주소록 정보가 없습니다.");
return false;
}
//우측 주소록 리스트 Tabulator에 입력해주기
tableAddr.setData(addrList);
} else if(status== 'fail'){
alert("주소록 불러오기에 실패하였습니다. !!");
}
},
error: function (e) {
alert("주소록 불러오기에 실패하였습니다."); console.log("ERROR : ", e);
},
beforeSend : function(xmlHttpRequest) {
//로딩창 show
$('.loading_layer').addClass('active');
},
complete : function(xhr, textStatus) {
//로딩창 hide
$('.loading_layer').removeClass('active');
}
});
}
//주소록 불러오기에서 수신자 리스트 추가해 주기
function addrToList_advc(type){
var tableSize = tableAddr.getDataCount();
var tableData = [];
if(tableSize < 1){
alert("주소록을 선택해 주세요.");
return false;
}else{ // 선택한 Row 데이터 저장해주기
// 기존 tableL의 데이터를 가져옵니다.
var existingData = tableL.getData();
var addrData;
if(type == 'all'){
addrData = tableAddr.getData();
}else{
addrData = tableAddr.getSelectedData();
}
// 기존 데이터와 새로운 데이터를 합칩니다.
var combinedData = existingData.concat(addrData);
// 합쳐진 데이터를 tableL에 설정합니다.
tableL.setData(combinedData);
//일괄변환 문구 결제금액 처리
totRows = tableL.getRows().length;
updateTotCnt(totRows); //전체 데이터 갯수 구하기
var smsTxtArea = $('#smsTxtArea').val();
if(smsTxtArea.indexOf("[*이름*]") > -1
|| smsTxtArea.indexOf("[*1*]") > -1
|| smsTxtArea.indexOf("[*2*]") > -1
|| smsTxtArea.indexOf("[*3*]") > -1
|| smsTxtArea.indexOf("[*4*]") > -1){
fnReplCell();
}else{
//결제 금액 구하기
totalPriceSum(totRows);
}
$(".closeAddr").trigger("click");
//주소록 레이어 팝업의 Tabulator 데이터 지워주기
tableAddr.clearData();
}
}
//주소록 팝업 닫기 기능
function addrClose(){
$(".closeAddr").trigger("click");
//주소록 레이어 팝업의 Tabulator 데이터 지워주기
tableAddr.clearData();
}
//내문자함 선택시 저장된 내용 문자 입력영역에 처리해주기
function fnMyMsgAdd(msgId){
var form = document.addMyMsgForm;
form.msgId.value = msgId;
form.pageType.value = "myMsg";
var url = "/web/mjon/msgcampain/selectMsgAddInfoAjax.do";
var data = new FormData(document.addMyMsgForm);
$.ajax({
type: "POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success: function (returnData, status) {
if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
if(returnData.result == "success"){
var msgData = returnData.resultMsgInfo;
var fileData = returnData.resultMsgAddPhotoInfo;
var smsTxt = msgData.smsTxt;
var subject = msgData.subject;
var fileId = "";
var filePath = "";
var len = fileData.length;
//기존 내용 지워주기
//$(".btnReset").trigger("click");
$('.delLi').each(function(){
$(this).remove();
});
$('.preBoxF').each(function(){
$(this).remove();
});
$('#imgCnt').val(0);
//기존 imgFileId, imgFilePath 배열에 있는 내용 초기화 해주기
imgFilePath = [];
imgFileId = [];
//내문자함 텍스트 내용 입력해주기
$('#smsTxtArea').val(smsTxt);
//첨부 이미지가 있는경우 이미지 처리해주기
if(len > 0){
for(var i=0; i < len; i++){
var num = i + 1;
var imgId = fileData[i].atchFileId;
var imgSn = fileData[i].fileSn;
var fileStreCours = fileData[i].fileStreCours;
var streFileNm = fileData[i].streFileNm;
var fileExtsn = fileData[i].fileExtsn;
/* var imgSrc = fileStreCours + "/" + streFileNm + "." + fileExtsn; */
var imgSrc = '/cmm/fms/getImage2.do?atchFileId=' + imgId + '&fileSn=' + imgSn;
myMsgImageControl(imgSrc, "edit_n", "Template", imgId);
}
fnByteString(smsTxt);
}else{
fnByteString(smsTxt);
}
//내 문자함 가져오기에서 글자길이 계산을 다시한다.
$("#smsTxtArea").trigger("keyup");
// 문자전송 상단으로 이동
var sendOfT=$('.send_top').offset().top;
$('html,body').stop().animate({'scrollTop':sendOfT-60},250);
}else{
alert("내문자함 내용을 불러오지 못하였습니다.");
return false;
}
} else if(status== 'fail'){
alert("내문자함 내용 입력에 실패하였습니다. !!");
}
},
error: function (e) { alert("내문자함 내용 입력에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
// 후보자 이메일 등록 시 도메인 선택 이벤트(1: 직접입력, 2: 도메인 선택 시)
function emailChange(email){
var emailTxt = $("input[name=emailDomain]");
if(email.value == '1'){
$("input[name=emailDomain]").attr('readonly', false);
emailTxt.val('');
}else{
emailTxt.val(email.value);
$("input[name=emailDomain]").attr('readonly', true);
}
}
// 후보자 등록 / 수정 이벤트
function fnCandidateUpt(dataType){
var form = document.candiForm;
form.dataType.value = dataType;
if(form.candidateNm.value == ""){
alert("후보자 이름을 입력해 주세요.");
return false;
}
if(form.regidentNo1.value == ""){
alert("후보자 주민등록번호 앞자리를 입력해 주세요.");
return false;
}else if(!Number(form.regidentNo1.value)){
alert("후보자 주민등록번호 앞자리를 정확히 입력해 주세요.");
return false;
}
if(form.regidentNo2.value == ""){
alert("후보자 주민등록번호 뒷자리를 입력해 주세요.");
return false;
}else if(!Number(form.regidentNo2.value)){
alert("후보자 주민등록번호 뒷자리를 정확히 입력해 주세요.");
return false;
}
if(form.candidateAddr.value == ""){
alert("후보자 주소를 입력해 주세요.");
return false;
}
if(form.managerNm.value == ""){
alert("담당자 이름을 입력해 주세요.");
return false;
}
if(form.phoneNo.value == ""){
alert("담당자 휴대폰 번호를 입력해 주세요.");
return false;
}else if(!checkHpNum(removeDash(form.phoneNo.value))){
alert("정확한 휴대폰 번호를 입력해 주세요.");
return false;
}
var emailChk = form.email.value + "@" + form.emailDomain.value;
if(emailChk == ""){
alert("이메일을 입력해 주세요.");
return false;
}else if(!checkEmail(emailChk)){
alert("정확한 이메일을 입력해 주세요.");
return false;
}
var msg = "";
if(dataType == 'Upt'){
msg="후보자 정보를 수정하시겠습니까?";
}else{
msg="후보자를 등록 하시겠습니까?";
}
if(confirm(msg)){
//XSS 취약점 제거
form.candidateNm.value = XSSCheck(form.candidateNm.value);
form.regidentNo1.value = XSSCheck(form.regidentNo1.value);
form.regidentNo2.value = XSSCheck(form.regidentNo2.value);
form.candidateAddr.value = XSSCheck(form.candidateAddr.value);
form.managerNm.value = XSSCheck(form.managerNm.value);
form.phoneNo.value = XSSCheck(form.phoneNo.value);
form.email.value = XSSCheck(form.email.value);
form.emailDomain.value = XSSCheck(form.emailDomain.value);
var url = "/web/mjon/msgcampain/insertCandidateDataInfoAjax.do";
var data = new FormData(document.candiForm);
$.ajax({
type: "POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success: function (returnData, status) {
if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
if(returnData.result == "loginFail"){
alert(returnData.message);
return false;
}else if(returnData.result == "success"){
alert(returnData.message);
location.reload();
}else{
alert(returnData.message);
return false;
}
} else if(status== 'fail'){
alert("후보자 등록에 실패하였습니다. !!");
}
},
error: function (e) { alert("후보자 등록에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
}
//후보자 등록 시 로그인 여부 체크
function fn_candidateLoginChk(){
alert("후보자 등록은 로그인 후 이용 가능합니다.");
return false;
}
// 후보자 등록 시 회원여부 체크
function fn_mberDeptChk(){
alert("선거문자는 개인 회원만 이용 가능합니다.");
return false;
}
// 선거문자 맞춤제작 팝업 열기
function goToCustom(){
var form = document.goToCustomForm;
form.submit();
}
// 발송규정 윈도우 팝업 열기
function infoPop(pageUrl){
document.popForm.pageType.value = pageUrl;
document.popForm.action = "/web/pop/infoPop.do";
document.popForm.method = "post";
window.open("about:blank", 'infoPop', 'width=790, height=1500, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=yes');
document.popForm.target = "infoPop";
document.popForm.submit();
}
// 주소록에 등록 버튼 레이어팝업 오픈 이벤트
$(document).on('click', '.addressregi_btn', function() {
var tableData = tableL.getRows();
var dataLen = tableL.getRows().length;
if(dataLen == 0){
alert("연락처 정보를 등록해 주세요.");
return false;
}else{
$('.addressregi_layer').css({'width':'680px','display':'block','left':'50%','top':'50%','transform':'translate(-50%,-50%)'});
setTimeout(function(){
$('.addressregi_layer').css({'opacity':'1'});
},150);
$('.mask').addClass('on');
getAddrGroupList();
}
});
// 주소록에 등록 레이어팝업 종료 이벤트
$(document).on('click', '.addressregi_layer .tooltip-close', function() {
$('.addressregi_layer').attr('style','');
$("#addrGrpNm").val("");
});
//주소록에 등록 레이어팝업 그룹 선택 이벤트
$(document).on('change', '#addrGrpIdInfo', function() {
if ($("#addrGrpIdInfo option:selected").val() != "NEW") {
$("#addrGrpNm").val(""); // 새그룹명 Clear;
}
});
//주소록 그룹정보 불러오기
function getAddrGroupList() {
$.ajax({
type : "POST",
async : false,
url : "/web/mjon/addr/addrGroupListAjax.do",
data : {},
dataType:'json',
success : function(data) {
// Show Html
getAddrGroupListShow(data.addrGroupList);
},
error : function(xhr, status, error) {
alert(error);
return false;
}
});
}
//Show Html
function getAddrGroupListShow(jsonList) {
var sHtml = "";
sHtml += "<option value='NEW'>그룹추가</option>";
sHtml += "<option value='0'>그룹미지정</option>";
sHtml += "<option value='bookmark'>자주보내는 번호</option>";
for (var j = 0; j < jsonList.length; j++) {
sHtml += " <option value='" + $.trim(jsonList[j].addrGrpId) + "' />" + $.trim(jsonList[j].addrGrpNm) + "</option>";
}
$("#addrGrpIdInfo").html(sHtml);
}
//주소록 그룹 중복체크
function getAddrGroupDuplCheckAjax() {
var isReturn = true;
$.ajax({
url : "<c:url value='/web/addr/getAddrGroupDuplCheckAjax.do' />",
type : 'POST',
data : {"addrGrpNm" : $("#addrGrpNm").val()},
dataType:'json',
async: false, // 동기
success : function(data, status){
if(data.isSuccess == true) {
if(data.isDupl == true) {
//alert("중복된 그룹명입니다.");
isReturn = false;
}
}
},
error: function (e) {
//alert("주소록 중복체크에 실패했습니다.");
}
});
return isReturn;
}
//문자발송 받는사람 목록 주소록에 등록하기 기능 처리
$('.registAddr').click(function(){
var tableData = tableL.getRows();
var dataLen = tableL.getRows().length;
var nameList = []; //치환문자 이름
var phoneNum = []; //받는사람
var rep1List = []; //치환문자1
var rep2List = []; //치환문자2
var rep3List = []; //치환문자3
var rep4List = []; //치환문자4
if(dataLen > 0){
for(var i=0; i < dataLen; i++){
var name = tableData[i].getData().name;
var phone = removeDash(tableData[i].getData().phone);
var rep1 = tableData[i].getData().rep1;
var rep2 = tableData[i].getData().rep2;
var rep3 = tableData[i].getData().rep3;
var rep4 = tableData[i].getData().rep4;
if(phone == "" || phone == null){
alert("수신 목록에 핸드폰 번호가 없는 항목이 있습니다.");
return false;
}else if(!checkHpNum(phone)){
alert("수신 목록에 잘 못된 핸드폰 번호가 있습니다. 핸드폰 번호 : " + phone + " 입니다.");
return false;
}
phoneNum[i] = phone;
if(name == "" || name == null){
nameList[i] = "";
}else{
nameList[i] = name.replaceAll(",","§");
}
if(rep1 == "" || rep1 == null){
rep1List[i] = "-";
}else{
rep1List[i] = rep1.replaceAll(",","§");
}
if(rep2 == "" || rep2 == null){
rep2List[i] = "-";
}else{
rep2List[i] = rep2.replaceAll(",","§");
}
if(rep3 == "" || rep3 == null){
rep3List[i] = "-";
}else{
rep3List[i] = rep3.replaceAll(",","§");
}
if(rep4 == "" || rep4 == null){
rep4List[i] = "-";
}else{
rep4List[i] = rep4.replaceAll(",","§");
}
}
//주소록 정보를 Form에 넣어준다.
var form = document.msgForm;
form.callToList.value = phoneNum;
form.nameList.value = nameList;
form.rep1List.value = rep1List;
form.rep2List.value = rep2List;
form.rep3List.value = rep3List;
form.rep4List.value = rep4List;
form.addrGrpId.value = $("#addrGrpIdInfo").val();
form.addrGrpNm.value = $("#addrGrpNm").val();
if ($("#addrGrpIdInfo option:selected").val() == "NEW" && ($("#addrGrpNm").val() == "" || $("#addrGrpNm").val() == null || $("#addrGrpNm").val() == undefined)) {
alert("저장할 그룹을 선택하거나 새 그룹명을 입력해주세요.");
return false;
}else if ($("#addrGrpIdInfo option:selected").val() == "NEW" && $("#addrGrpNm").val() != "") {
//주소록 중복체크
if (getAddrGroupDuplCheckAjax() == false) {
alert("중복된 그룹명입니다. 새 그룹명을 입력해주세요.");
return false;
}
}
if(confirm("연락처 정보를 주소록에 등록 하시겠습니까?")){
var data = new FormData(form);
var url = "/web/mjon/msgdata/insertMsgAddrListAjax.do";
$.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.result == "success"){
var alertMsg = "총 " + returnData.resultCnt + "건의 " +returnData.message;
if(returnData.dupliCnt > 0) {
alertMsg += "\n"+numberWithCommas(returnData.dupliCnt) + "건은 이미 등록되어있는 번호입니다.";
}
alert(alertMsg);
$("#addrGrpNm").val("");
$('.addressregi_layer').attr('style','');
$('.mask').removeClass('on');
return false;
}else if(returnData.result == "allDupl") {
alert("요청하신 "+returnData.dupliCnt+"건의 번호가 주소록에 이미 등록되어있습니다.");
$("#addrGrpNm").val("");
$('.addressregi_layer').attr('style','');
$('.mask').removeClass('on');
return false;
}else{
alert(returnData.message);
$("#addrGrpNm").val("");
$('.addressregi_layer').attr('style','');
$('.mask').removeClass('on');
return false;
}
} else if(status== 'fail'){
alert("주소록 등록에 실패하였습니다. !!");
}
},
error: function (e) {
alert("주소록 등록에 실패하였습니다.");
console.log("ERROR : ", e);
},
beforeSend : function(xmlHttpRequest) {
//로딩창 show
$('.loading_layer').addClass('active');
},
complete : function(xhr, textStatus) {
//로딩창 hide
$('.loading_layer').removeClass('active');
}
});
}
}else{
alert("연락처 정보를 등록해 주세요.");
return false;
}
});
//테스트발송 열기
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;
}
//문자내용에 이모지가 있는지 체크
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 = ""; //초기화
}
}else{
msgType = 'S';
form.eachPrice.value = '<c:out value="${shortPrice}" />';
form.mmsSubject.value = ""; // 장문/그림 제목 초기화
}
form.msgType.value = msgType;
//발신번호 세팅
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 setCandidatePhone() {
advMsgInsert();
}
//선택 발신번호를 이용한 문자내용 설정
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/>불법수집정보 신고번호 : 선거관리위원회 ☎1390<br/>무료거부 0808800858</div>';
var preAdvStr = '<p class="ad_tit">(선거운동정보)</p>';
var preAdvDenyStr = '<p class="deny_receipt">후보자전화번호 ' + callFrom + '<br>불법수집정보 신고번호 : 선거관리위원회 ☎1390<br>무료거부 0808800858</p>';
//광고 및 무료수신거부 텍스트 추가
if ($("#send_adYnY").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());
}
//이벤트 잔액 로그인 체크
$(".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;
}
//문자 발송목록
function getMjMsgSentListAll(pageNo) {
document.sentListForm.pageIndex.value = pageNo;
document.sentListForm.msgSentType.value = "02"; // 01:문자전송, 02:선거문자
var sendData= $(document.sentListForm).serializeArray();
$("#mjMsgSentListAllLoad").load("/web/mjon/msgdata/selectMjMsgSentListAjax.do", sendData ,function(response, status, xhr){
});
}
$(document).on('click', '#hdnLink', function() {
location.href="/web/mjon/msgcampain/huge/selectMsgHGDataView.do";
})
</script>
<div class="loading_layer">
<div class="loading_container">
<div class="bar"></div>
<div class="text">Loading</div>
</div>
</div>
<!-- 2023 10 16 재전송 : 상세내용 팝업 -->
<div class="tooltip-wrap" style="z-index:110;">
<div class="popup-com adr_layer rev_popup01" tabindex="0" data-tooltip-con="rev_popup01"
data-focus="rev_popup01" data-focus-prev="rev_popup01-close" style="width: 440px;">
<div class="popup_heading">
<p>문자내용</p>
<button type="button" class="tooltip-close" data-focus="rev_popup01-close"><img
src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
</div>
<div class="layer_in" id="msgSentDetailPopLoad" style="padding-bottom: 0px;">
</div>
<div class="popup_btn_wrap2" style="justify-content: center; margin-bottom: 30px;">
<button type="button" class="tooltip-close" data-focus="rev_popup01-close" data-focus-next="rev_popup01">닫기</button>
</div>
</div>
</div>
<!--// 2023 10 16 재전송 : 상세내용 팝업 -->
<!-- 2023 10 16 재전송 팝업 -->
<div class="tooltip-wrap">
<div class="popup-com import_layer popup05" tabindex="0" data-tooltip-con="popup05" data-focus="popup05" data-focus-prev="popup05-close" style="width: 900px;">
<div class="popup_heading">
<p><span>전송내역</p>
<button type="button" class="tooltip-close" data-focus="popup05-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
</div>
<div class="layer_in" id="mjMsgSentListAllLoad" style="padding-bottom: 0px; min-height:428px;">
</div>
<div class="popup_btn_wrap2" style="margin-bottom: 30px;">
<button type="button" class="tooltip-close" data-focus="popup05-close" data-focus-next="popup05">닫기</button>
</div>
</div>
</div>
<!--// 2023 10 16 재전송 팝업 -->
<!-- 후보자등록 팝업 data-tooltip:candidate_popup01 -->
<div class="tooltip-wrap">
<div class="popup-com candidate_layer candidate_popup01" tabindex="0" data-tooltip-con="candidate_popup01" data-focus="candidate_popup01" data-focus-prev="candidate_popup01-close" style="width: 620px;">
<div class="popup_heading">
<p>후보자 등록</p>
<button type="button" class="tooltip-close" data-focus="candidate_popup01-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
</div>
<form id="candiForm" name="candiForm" method="post">
<input type="hidden" id="dataType" name="dataType" value="Reg"/>
<div class="layer_in">
<p class="adr_pop_title">선거문자는 반드시 <span class="c_002c9a">후보자 등록</span>을 하셔야만 이용 가능합니다. <br/>입력하신 내용은 세금계산서 발행을 위한 정보로만 사용됩니다.</p>
<div class="candidate_table">
<p>후보자</p>
<table>
<caption>후보자 등록을 위한 성명, 주민등록번호, 주소를 입력하는 표</caption>
<colgroup>
<col style="width: 125px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th scope="row">성명</th>
<td>
<label for="candidateNm" class="label"></label>
<input type="text" id="candidateNm" name="candidateNm" value="<c:out value='${mjonCandidateVO.candidateNm}'/>" placeholder="후보자 성명 입력" onfocus="this.placeholder=''" onblur="this.placeholder='후보자 성명 입력'" class="inputLight">
</td>
</tr>
<tr class="residentNum">
<th scope="row">주민등록번호</th>
<td>
<label for="regidentNo1" class="label"></label>
<input type="text" id="regidentNo1" name="regidentNo1" value="<c:out value='${mjonCandidateVO.regidentNo1}'/>" maxlength="6" placeholder="주민등록번호 앞 6자리" onfocus="this.placeholder=''" onblur="this.placeholder='주민등록번호 앞 6자리'" class="inputLight">
<span>-</span>
<label for="regidentNo2" class="label"></label>
<input type="password" id="regidentNo2" name="regidentNo2" value="<c:out value='${mjonCandidateVO.regidentNo2}'/>" maxlength="7" placeholder="주민등록번호 뒤 7자리" onfocus="this.placeholder=''" onblur="this.placeholder='주민등록번호 뒤 7자리'" class="inputLight">
</td>
</tr>
<tr>
<th scope="row">주소</th>
<td>
<label for="candidateAddr" class="label"></label>
<input type="text" id="candidateAddr" name="candidateAddr" value="<c:out value='${mjonCandidateVO.candidateAddr}'/>">
</td>
</tr>
</tbody>
</table>
</div>
<div class="candidate_table" style="margin-top: 40px;">
<p>담당자</p>
<table>
<caption>후보자 등록을 위한 성명, 주민등록번호, 주소를 입력하는 표</caption>
<colgroup>
<col style="width: 125px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th scope="row">성명</th>
<td>
<label for="managerNm" class="label"></label>
<input type="text" id="managerNm" name="managerNm" value="<c:out value='${mjonCandidateVO.managerNm}'/>" placeholder="담당자 성명 입력" onfocus="this.placeholder=''" onblur="this.placeholder='담당자 성명 입력'" class="inputLight">
</td>
</tr>
<tr>
<th scope="row">휴대폰</th>
<td>
<label for="phoneNo" class="label"></label>
<input type="text" id="phoneNo" name="phoneNo" value="<c:out value='${mjonCandidateVO.phoneNo}'/>" placeholder="- 없이 숫자만 입력" onfocus="this.placeholder=''" onblur="this.placeholder='- 없이 숫자만 입력'" class="inputLight">
</td>
</tr>
<tr class="emailWrap3">
<th scope="row">이메일</th>
<td>
<label for="email" class="label"></label>
<input type="text" id="email" name="email" value="<c:out value='${mjonCandidateVO.email}'/>">
<span>@</span>
<label for="emailDomain" class="label"></label>
<input type="text" id="emailDomain" name="emailDomain" value="<c:out value='${mjonCandidateVO.emailDomain}'/>">
<label for="" class="label">이메일 선택</label>
<select class="list_selType1" id="taxEmailSelect" onchange="emailChange(this)">
<c:forEach var="result" items="${emailCode}" varStatus="status">
<c:if test="${status.index eq 0 }">
<option value="1">${result.codeNm}</option>
</c:if>
<c:if test="${status.index ne 0 }">
<option value="${result.codeDc}">${result.codeNm}</option>
</c:if>
</c:forEach>
</select>
</td>
</tr>
</tbody>
</table>
</div>
<div class="popup_btn_wrap2">
<c:choose>
<c:when test="${not empty mjonCandidateVO.candidateNm}">
<button type="button" onclick="javascript:fnCandidateUpt('Upt'); return false;">수정</button>
</c:when>
<c:otherwise>
<button type="button" onclick="javascript:fnCandidateUpt('Reg'); return false;">등록</button>
</c:otherwise>
</c:choose>
<button type="button" class="tooltip-close" data-focus="candidate_popup01-close" data-focus-next="candidate_popup01">닫기</button>
</div>
</div>
<!-- Workaround to avoid corrupted XHR2 request body in IE10 / IE11 -->
<input type="hidden" name="_dontcare">
</form>
</div>
</div>
<!--// 후보자등록 팝업 -->
<!-- 주소록 불러오기 -->
<div class="tooltip-wrap">
<div class="popup-com import_layer popup06" tabindex="0" data-tooltip-con="popup06" data-focus="popup06" data-focus-prev="popup06-close" style="width: 1000px">
<div class="popup_heading">
<p><span>주소록 불러오기</p>
<button type="button" onClick="javascript:addrClose(); return false;">
<img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
</div>
<div class="layer_in">
<div class="titBox titBox_pad">
<p>- 주소록 수정 및 변경은 <span>[주소록 관리]</span>에서만 가능합니다.</p>
<button type="button" class="adr_admin" onClick="location.href='/web/mjon/addr/selectAddrList.do'">주소록 관리</button>
</div>
<div class="adr_wrap">
<form id="searchAddrGrpForm" name="searchAddrGrpForm" method="post" style="display: flex; justify-content: space-between;">
<input type="hidden" id="searchAddrGrpId" name="searchAddrGrpId" value=""/>
<input type="hidden" id="type" name="type" value="all"/>
<input type="hidden" id="searchKeyword" name="searchKeyword" value=""/>
<input type="hidden" name="searchCondition" id="searchCondition" value="0" />
<div class="adr_pop_left">
<div class="adr_left_search">
<label for="searchKeyword" class="label">그룹명 검색</label>
<input type="text" name="searchGrpKeyword" id="searchGrpKeyword" placeholder="그룹명 검색" onfocus="this.placeholder=''" onblur="this.placeholder='그룹명 검색'" class="inputLight">
<button type="button" onClick="javascrit:fnAddrGrpSearch(); return false;"><img src="/publish/images/popup/search.png" alt="검색"></button>
</div>
<div class="adr_pop_box">
<div id="addrGroupLoad">
</div>
</div>
<!-- <div class="popup_btn">
<button type="button" class="btnType" onClick="javascript:fnSelectAddrGrpList(); return false;">선택 그룹 추가</button>
</div> -->
</div>
<div class="adr_pop_right">
<div class="clearfix">
<div class="btnWrap_last">
<label for="searchAddrCondition" class="label">카테고리 선택</label>
<select id="searchAddrCondition" name="searchAddrCondition" class="selType2">
<option value='0'>전체</option>
<option value='1'>그룹명</option>
<option value='2'>이름</option>
<option value='3'>핸드폰번호</option>
</select>
<label for="searchAddrKeyword" class="label">검색어 입력</label>
<input type="text" id="searchAddrKeyword" name="searchAddrKeyword" placeholder="검색어를 입력하세요" onfocus="this.placeholder=''" onblur="this.placeholder='검색어를 입력하세요'" >
<button type="button" class="btnType btnType17" onClick="javascrit:fnAddrSearch(); return false;">검색</button>
</div>
<!-- table -->
<div class="adr_excel adr_pop_list2 callAddr_box">
</div>
<!--// table -->
</div>
<div class="popup_btn_wrap2">
<button type="button" onClick="javascript:addrToList_advc('all'); return false;">전체추가</button>
<button type="button" onClick="javascript:addrToList_advc('select'); return false;">선택추가</button>
<button type="button" onClick="javascript:addrClose(); return false;">닫기</button>
</div>
<%-- 주소록 레이어 팝업 닫기 실행 코드 --%>
<input type="hidden" name="btnAddrClose" id="btnAddrClose" class="tooltip-close closeAddr" data-focus="popup06-close" />
</div>
</form>
</div>
</div>
</div>
</div>
<!--// 주소록 불러오기 -->
<!-- 엑셀 불러오기 -->
<form id="excelForm" name="excelForm" method="post">
<div class="tooltip-wrap">
<div class="popup-com adr_layer popup02" tabindex="0" data-tooltip-con="popup02" data-focus="popup02" data-focus-prev="popup02-close" style="width: 1000px;">
<%@include file="/WEB-INF/jsp/web/msgcampain/include/msgDataIncludeExcel.jsp" %>
</div>
</div>
</form>
<!--// 엑셀 불러오기 -->
<!-- 전송내역 팝업 -->
<div class="tooltip-wrap">
<div class="popup-com history_layer popup03" tabindex="0" data-tooltip-con="popup03" data-focus="popup03" data-focus-prev="popup03-close">
<div class="popup_heading">
<p><span>전송내역</p>
<button type="button" class="tooltip-close" data-focus="popup03-close" id="btnLatestAddPhoneClose"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
</div>
<div class="layer_in">
<!-- tab button -->
<ul class="tabType6">
<li class="tab active"><button type="button" onclick="TabType(this,'1');">최근 전송내역</button></li>
<li class="tab"><button type="button" onclick="TabType(this,'2');">자주보내는 번호</button></li>
</ul><!--// tab button -->
<!-- 최근 전송내역 -->
<div class="history_cont hascont current">
<div class="histroy_trans latestMsgArea" id="latestMsgArea">
<ul id="latestMsgUl">
<c:choose>
<c:when test="${not empty resultLatestMsgList}">
<c:forEach var="latestMsgList" items="${resultLatestMsgList}" varStatus="status">
<li id="latestLi">
<input type="checkbox" id="addrChk_${status.count}" name="latAddrChk" value="<c:out value='${latestMsgList.callTo}'/>">
<label for="addrChk_${status.count}" class="label">최근 전송내역</label>
<p><c:out value="${latestMsgList.callTo}"/></p>
<button type="button" id="latestAddrDel"><img src="/publish/images/popup/close3.png" alt="전화번호 삭제"></button>
</li>
</c:forEach>
</c:when>
<c:otherwise>
<li>
<p>최근 발송 내역이 없습니다.</p>
</li>
</c:otherwise>
</c:choose>
</ul>
</div>
<div class="popup_btn_wrap2 hisroy_btn" style="width: 230px;">
<button type="button" id="latestAddPhoneAll">전체추가</button>
<button type="button" id="latestAddPhone">선택추가</button>
<button type="button" id="latestCancelPhone">선택취소</button>
</div>
</div>
<!--// 최근 전송내역 -->
<!-- 자주보내는 번호 -->
<div class="history_cont hascont">
<div class="histroy_trans" id="bookMarkMsgArea">
<ul id="bookMsgUl">
<c:choose>
<c:when test="${not empty resultBookMarkMsgList}">
<c:forEach var="bookMarkMsgList" items="${resultBookMarkMsgList}" varStatus="status">
<li id="bookMarkLi">
<input type="checkbox" id="bokAddrChk_${status.count}" name="bookAddrChk" value="<c:out value='${bookMarkMsgList.addrPhoneNo}'/>">
<label for="addrChk_${status.count}" class="label">최근 전송내역</label>
<p><c:out value="${bookMarkMsgList.addrPhoneNo}"/></p>
<button type="button" id="bookMarkAddrDel"><img src="/publish/images/popup/close3.png" alt="전화번호 삭제"></button>
</li>
</c:forEach>
</c:when>
<c:otherwise>
<li>
<p>등록된 자주 보내는 번호 내역이 없습니다.</p>
</li>
</c:otherwise>
</c:choose>
</ul>
</div>
<div class="popup_btn_wrap2 hisroy_btn" style="width: 230px;">
<button type="button" id="bookMarkAddPhoneAll">전체추가</button>
<button type="button" id="bookMarkAddPhone">선택추가</button>
<button type="button" id="bookMarkCancelPhone">선택취소</button>
</div>
</div>
<!--// 자주보내는 번호 -->
</div>
</div>
</div>
<!--// 전송내역 팝업 -->
<!-- 주소록에 등록 data-tooltip:duplication_layer -->
<div class="tooltip-wrap">
<div class="popup-com addressregi_layer" tabindex="0" data-tooltip-con="addressregi_layer" data-focus="addressregi_layer" data-focus-prev="addressregi_layer-close" style="width: 680px;">
<div class="popup_heading">
<p>주소록에 등록</p>
<button type="button" class="tooltip-close" data-focus="addressregi_layer-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
</div>
<div class="layer_in" style="padding: 30px 20px;">
<table class="layer_tType1">
<caption>주소록 그룹선택 표</caption>
<colgroup>
<col style="width: 95px">
<col style="width: auto">
</colgroup>
<tbody>
<tr>
<th>그룹 선택</th>
<td>
<label for="" class="label">그룹 선택</label>
<select id="addrGrpIdInfo" name="addrGrpIdInfo">
</select>
<label for="" class="label">그룹명 입력</label>
<input type="text" id="addrGrpNm" name="addrGrpNm" placeholder="새 그룹명을 입력해주세요." onfocus="this.placeholder=''" onblur="this.placeholder='새 그룹명을 입력해주세요.'"class="inputLight" style="width: 300px;">
<!-- <input type="file" id="excelFile" accept=".xls, .xlsx, .txt" onchange="excelExport(event); return false;" style="display:none"/> -->
</td>
</tr>
</tbody>
</table>
<div class="popup_btn_wrap2">
<button type="button" class="registAddr">등록</button>
<button type="button" class="tooltip-close" data-focus="addressregi_layer-close" data-focus-next="addressregi_layer">닫기</button>
</div>
</div>
</div>
</div>
<!--// 주소록에 등록 팝업 -->
<!--선거문자 이용안내 팝업 -->
<div class="tooltip-wrap">
<div class="popup-com ad_layer candidate_popup03" tabindex="0" data-tooltip-con="candidate_popup03" data-focus="candidate_popup03" data-focus-prev="candidate_popup03-close" style="width: 795px">
<div class="popup_heading">
<p>선거문자 안내</p>
<button type="button" class="tooltip-close" data-focus="candidate_popup03-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
</div>
<div class="layer_in">
<img src="/publish/images/content/candidatePop_banner.png" alt="선거문자 이용안내 배너" class="candidate_banner">
<ul class="info_list">
<li>- 90byte 초과 시, 자동으로 장문으로 전환됩니다. 장문 문자는 최대 2,000byte까지만 작성할 수 있습니다.</li>
<li>- 그림문자 1건당 최대 3장까지 이미지 첨부 가능 [권장 사이즈 : <strong>640 x 960</strong>픽셀 / 최대용량 : <strong>10MB</strong> 이내]</li>
<li>- 선거문자는 반드시 발송규정을 사전 확인 후 발송해 주시기 바랍니다.</li>
</ul>
<!-- 이용방법/혜택 -->
<div class="cdpop_cont current" id="listTab2_1">
<div>
<p class="cdpop_title">
<i class="cdpop_title_icon1"></i>선거문자 이용방법
<span class="customReq">
<button type="button" onclick="goToCustom();"><i></i>선거문자 맞춤제작</button>
</span>
</p>
<ul class="cdpop_info">
<li>
<i class="info_step1"></i>
<div>
<p>회원가입</p>
</div>
</li>
<li>
<i class="info_step2"></i>
<div>
<p>후보자등록</p>
</div>
</li>
<li>
<i class="info_step3"></i>
<div>
<p>전용계좌</p>
</div>
</li>
<li>
<i class="info_step4"></i>
<div>
<p>발신번호 인증</p>
</div>
</li>
<li>
<i class="info_step5"></i>
<div>
<p>문자전송</p>
</div>
</li>
<li>
<i class="info_step6"></i>
<div>
<p>세금계산서</p>
</div>
</li>
</ul>
</div>
<div>
<p class="cdpop_title"><i class="cdpop_title_icon2"></i>문자온 선거문자만의 장점 및 혜택</p>
<ul class="cdpop_benefit">
<li>
<div>
<i class="benefit1"></i>
<p>한 번에 대량으로 보내야 한다면?<span>10만건까지 동시 전송 가능</span></p>
</div>
<p>문자온의 대량전송(엑셀·TXT) 모듈을 통해
10만건의 대량문자도 쉽고 빠르게 전송 가능합니다.</p>
</li>
<li>
<div>
<i class="benefit2"></i>
<p>수신거부 번호가 필요하세요?<span>080 수신거부 번호 무료제공</span></p>
</div>
<p>선거문자 발송규정 준수를 위해
080 수신거부 번호를 무료로 제공해 드립니다.</p>
</li>
<li>
<div>
<i class="benefit3"></i>
<p>주소록 등록이 번거로우신가요?<span>주소록 등록 무료대행</span></p>
</div>
<p>주소록 등록파일(엑셀·TXT)을 문자온에 제공해
주시면 무료로 빠르고 신속하게 등록해 드립니다.</p>
</li>
<li>
<div>
<i class="benefit4"></i>
<p>홍보효과를 높이고 싶다면?<span>후보자만의 그림문자 맞춤제작</span></p>
</div>
<p>선거공약, 인사말, 후보자 사진 등을 넣어 그림문자를
맞춤 제작하여 홍보효과를 극대화할 수 있습니다.</p>
</li>
<li>
<div>
<i class="benefit5"></i>
<p>오류·실패건의 문자를 보상받고 싶다면?<span>오류·실패건 문자 100% 환불</span></p>
</div>
<p>번호오류, 수신거부, 수신실패 등으로 인해 문자전송이
실패한 경우 100% 환불(자동충전)해 드립니다.</p>
</li>
<li>
<div>
<i class="benefit6 "></i>
<p>전송결과가 궁금하다면?<span>실시간 전송결과 확인 가능</span></p>
</div>
<p>전송결과 및 실패사유를 실시간으로 제공해드립니다.</p>
</li>
<li>
<div>
<i class="benefit7"></i>
<p>20건씩 나눠서 보내야한다면?<span>20건씩 분할 예약 전송 가능</span></p>
</div>
<p>누구나 쉽고 편리하게 20건씩 나눠서 분할 전송이 가능합니다.</p>
</li>
<li>
<div>
<i class="benefit8"></i>
<p>필요한 서류가 있다면?<span>문자온에서 간편하게 신청 가능</span></p>
</div>
<p>문자온에서 발송내역서 출력이 가능하며,
세금계산서는 메일로 자동으로 발행됩니다.</p>
</li>
</ul>
</div>
</div><!--// 이용방법/혜택 -->
</div>
<div class="popup_btn_wrap2" style="margin: 0 auto 30px auto;">
<button type="button" class="tooltip-close" data-focus="candidate_popup03-close" data-focus-next="candidate_popup03">닫기</button>
</div>
</div>
</div>
<!--// 선거문자 이용안내 팝업 -->
<!-- 이벤트 잔여 캐시 정보 표시 팝업 -->
<div class="tooltip-wrap">
<div class="popup-com event_cash_popup popup07" tabindex="0" data-tooltip-con="popup07" data-focus="popup07" data-focus-prev="popup07-close">
<div class="popup_heading">
<p>이벤트 잔액</p>
<button type="button" class="tooltip-close" data-focus="popup07-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
</div>
<div class="layer_in">
<div class="table_wrap">
<div class="table_top">
<p class="popup_title_18">첫 결제 이벤트 잔액(캐시)</p>
<p><span class="c_e40000 fwBold"><fmt:formatNumber value="${eventRemainCash}" pattern="#,###.#"/></span>원</p>
</div>
<table class="popup_table_type2">
<colgroup>
<col style="width: 25%;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>단문(<fmt:formatNumber value="${eventMberInfo.eventShortPrice}" pattern="#,###.#"/>)</th>
<td><span class="c_002c9a fwBold"><fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventShortPrice) - ((eventRemainCash / eventMberInfo.eventShortPrice) % 1) }" pattern="#,###"/></span>건</td>
</tr>
<tr>
<th>장문(<fmt:formatNumber value="${eventMberInfo.eventLongPrice}" pattern="#,###.#"/>)</th>
<td><span class="c_002c9a fwBold"><fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventLongPrice) - ((eventRemainCash / eventMberInfo.eventLongPrice) % 1)}" pattern="#,###"/></span>건</td>
</tr>
<tr>
<th>그림 1장(<fmt:formatNumber value="${eventMberInfo.eventPicturePrice}" pattern="#,###.#"/>)</th>
<td><span class="c_002c9a fwBold"><fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventPicturePrice) - ((eventRemainCash / eventMberInfo.eventPicturePrice) % 1)}" pattern="#,###"/></span>건</td>
</tr>
<tr>
<th>그림 2장(<fmt:formatNumber value="${eventMberInfo.eventPicture2Price}" pattern="#,###.#"/>)</th>
<td><span class="c_002c9a fwBold"><fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventPicture2Price) - ((eventRemainCash / eventMberInfo.eventPicture2Price) % 1)}" pattern="#,###"/></span>건</td>
</tr>
<tr>
<th>그림 3장(<fmt:formatNumber value="${eventMberInfo.eventPicture3Price}" pattern="#,###.#"/>)</th>
<td><span class="c_002c9a fwBold"><fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventPicture3Price) - ((eventRemainCash / eventMberInfo.eventPicture3Price) % 1)}" pattern="#,###"/></span>건</td>
</tr>
</tbody>
</table>
</div>
<div class="popup_btn_wrap2">
<button type="button" class="tooltip-close" data-focus="popup07-close" data-focus-next="popup07">닫기</button>
</div>
</div>
</div>
</div>
<form id="msgForm" name="msgForm" method="post">
<input type="hidden" id="msgType" name="msgType" value="4" /><!-- 문자 종류 : 단문 - 4, 장문/그림 - 6 -->
<input type="hidden" id="imgFilePath" name="imgFilePath" value="" /><!-- 선택 이미지 파일 경로 정보 , 로 구분 최대 3장까지 -->
<input type="hidden" id="imgFileId" name="imgFileId" value="" /><!-- 선택 이미지 파일 아이디 정보 , 로 구분 최대 3장까지 -->
<input type="hidden" id="fileCnt" name="fileCnt" value="0" /><!-- 첨부파일 추가 갯수 -->
<input type="hidden" id="callToList" name="callToList" value=""/><!-- 수신자 전화번호 리스트 -->
<input type="hidden" id="callFrom" name="callFrom" value=""/> <!-- 발신자 전화번호 -->
<input type="hidden" id="eachPrice" name="eachPrice" value="0"/> <!-- 문자 개별 단가 금액 -->
<input type="hidden" id="totPrice" name="totPrice" value="0"/> <!-- 총 결제 금액 -->
<input type="hidden" id="smsLen" name="smsLen" value="0"/> <!-- 문자 길이 정보 -->
<input type="hidden" id="reserveYn" name="reserveYn" value="N"/> <!-- 즉시/예약 선택여부 -->
<input type="hidden" id="reqDate" name="reqDate" value=""/> <!-- 예약문자 날짜 -->
<input type="hidden" id="imgCnt" value="0" />
<input type="hidden" id="smsTxt" name="smsTxt" value=""/><!-- 문자발송 문자 내용 -->
<input type="hidden" id="nameList" name="nameList" value=""/><!-- 문자발송 문자 이름 리스트 -->
<input type="hidden" id="rep1List" name="rep1List" value=""/><!-- 문자발송 문자 치환1 리스트 -->
<input type="hidden" id="rep2List" name="rep2List" value=""/><!-- 문자발송 문자 치환2 리스트 -->
<input type="hidden" id="rep3List" name="rep3List" value=""/><!-- 문자발송 문자 치환3 리스트 -->
<input type="hidden" id="rep4List" name="rep4List" value=""/><!-- 문자발송 문자 치환4 리스트 -->
<input type="hidden" name="templateYn" />
<input type="hidden" id="sPrice" name="sPrice" value="<c:out value="${shortPrice}"/>"/><!-- 단문문자 단가 -->
<input type="hidden" id="mPrice" name="mPrice" value="<c:out value="${longPrice}"/>"/><!-- 장문문자 단가 -->
<input type="hidden" id="pPrice" name="pPrice" value="<c:out value="${picturePrice}"/>"/><!-- 그림문자 단가 -->
<input type="hidden" id="p2Price" name="p2Price" value="<c:out value="${picture2Price}"/>"/><!-- 그림2장문자 단가 -->
<input type="hidden" id="p3Price" name="p3Price" value="<c:out value="${picture3Price}"/>"/><!-- 그림3장문자 단가 -->
<input type="hidden" id="myPrice" name="myPrice" value="<c:out value="${userMoney}"/>"/>
<input name="msgKind" type="hidden" value="C"/><!-- 문자종류 일반:N , 광고:A , 선거:C -->
<input type="hidden" id="txtReplYn" name="txtReplYn" value="N"/><!-- 변환문자 유무 -->
<input type="hidden" id="shortMsgCnt" name="shortMsgCnt" value="0"/><!-- 단문 변환문자 건수 -->
<input type="hidden" id="longMsgCnt" name="longMsgCnt" value="0"/><!-- 장문 변환문자 건수 -->
<!-- 주소록 등록 -->
<input type="hidden" id="addrGrpId" name="addrGrpId" value=""/>
<input type="hidden" id="addrGrpNm" name="addrGrpNm" value=""/>
<!-- 이벤트 관련 변수 -->
<input type="hidden" id="eventStatus" name="eventStatus" value="<c:out value='${eventMberInfo.eventStatus}'/>"/>
<input type="hidden" id="eventRemainCash" name="eventRemainCash" value="<c:out value='${eventRemainCash}'/>"/>
<input type="hidden" id="eventYn" name="eventYn" value="N"/>
<!-- 스팸문자 관련 변수 -->
<input type="hidden" id="spamKeyword" name="spamKeyword"/>
<input type="hidden" id="spamStatus" name="spamStatus"/>
<input type="hidden" id="exceptSpamYn" name="exceptSpamYn" value="<c:out value='${exceptSpamYn}'/>"/>
<!-- 이벤트 캐시 부족시 일반캐시로 계산을 위해 저장, 우영두 2023.03.28 -->
<input type="hidden" id="norsPrice" name="norsPrice" value="<c:out value="${norShortPrice}"/>"/><!-- 단문문자 단가(이벤트 단가 제외) -->
<input type="hidden" id="normPrice" name="normPrice" value="<c:out value="${norLongPrice}"/>"/><!-- 장문문자 단가(이벤트 단가 제외) -->
<input type="hidden" id="norpPrice" name="norpPrice" value="<c:out value="${norPicturePrice}"/>"/><!-- 그림문자 단가(이벤트 단가 제외) -->
<input type="hidden" id="norp2Price" name="norp2Price" value="<c:out value="${norPicture2Price}"/>"/><!-- 그림2장문자 단가(이벤트 단가 제외) -->
<input type="hidden" id="norp3Price" name="norp3Price" value="<c:out value="${norPicture3Price}"/>"/><!-- 그림3장문자 단가(이벤트 단가 제외) -->
<input type="hidden" id="evnPhoneNumCnt" name="evnPhoneNumCnt" value="0"/><!-- 치환 이벤트 발송 수신자 갯수 -->
<input type="hidden" id="evnShortMsgCnt" name="evnShortMsgCnt" value="0"/><!-- 치환 이벤트 단문 건수 -->
<input type="hidden" id="evnLongMsgCnt" name="evnLongMsgCnt" value="0"/><!-- 치환 이벤트 장문 건수 -->
<div class="heading">
<h2>선거 문자전송</h2>
<div class="election_btnWrap">
<button type="button" class="button2 info" onclick="infoPop('selectMsgDataView2');">발송규정</button>
<button type="button" class="button2 info" data-tooltip="candidate_popup03">사용안내</button>
<c:choose>
<c:when test="${empty LoginVO}">
<button type="button" class="btnType" onclick="javascript:fn_candidateLoginChk(); return false;"><i class="election_btn1"></i>후보자 등록</button>
</c:when>
<c:when test="${not empty mberManageVO && mberManageVO.dept eq 'c'}">
<button type="button" class="btnType" onclick="javascript:fn_mberDeptChk(); return false;"><i class="election_btn1"></i>후보자 등록</button>
</c:when>
<c:otherwise>
<button type="button" class="btnType" data-tooltip="candidate_popup01"><i class="election_btn1"></i>후보자 등록</button>
</c:otherwise>
</c:choose>
<button type="button" class="btnType" onclick="location.href='/web/member/pay/BillPub.do'"><i class="election_btn2"></i>세금계산서</button>
<button type="button" class="btnType" onclick="location.href='/web/mjon/msgsent/selectMsgSentView.do'"><i class="election_btn3"></i>발송결과 출력하기</button>
</div>
</div>
<div class="send_general">
<div class="send_left">
<table class="tType1">
<caption>일반 문자보내기 분류 번호 내용 등을 입력하는 표</caption>
<colgroup>
<col style="width: 100px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<input type="hidden" id="send_adYnY" name="send_adYn" value="Y">
<td colspan="2" class="ele_te">※ 자동동보문자를 <span>한번에 20,000건 이상 보내실 경우에는 꼭 고객센터(1551-8011)</span>로 연락주시어 발송 요청 후 진행해 주시길 바랍니다<span id="hdnLink">.</span></td>
</tr>
<tr>
<th scope="row">발신번호</th>
<td class="put_num">
<label for="callFrom" class="label"></label>
<select id="callFromList" name="callFromList" class="sel_number" onchange="setCandidatePhone();">
<c:choose>
<c:when test="${not empty resultPhonList}">
<c:forEach var="phonList" items="${resultPhonList}" varStatus="status">
<option value="${phonList}">${phonList}</option>
</c:forEach>
</c:when>
<c:otherwise>
<option value="">등록된 발신 번호가 없습니다.</option>
</c:otherwise>
</c:choose>
</select>
<button type="button" class="btnType btnType6" onclick="location.href='/web/user/sendNumberManage.do'">번호등록</button>
</td>
</tr>
<tr class="msg_title">
<th scope="row">제목</th>
<td>
<ul class="title_wrap">
<li>
<input id="title_y" type="radio"name="title_status" value="Y" onchange="titleStatus(this);">
<label for="title_y">사용</label>
<input id="title_n" type="radio" name="title_status" value="N" onchange="titleStatus(this);" checked="checked">
<label for="title_n">사용안함</label>
</li>
<li class="textbox">
<label for="mmsSubject" class="label"></label>
<input type="text" size="20" id="mmsSubject" name="mmsSubject" class="w100" maxlength="20" placeholder="" onfocus="this.placeholder=''" >
</li>
</ul>
</td>
</tr>
<!-- 문자 내용 영역 -->
<tr>
<th scope="row" class="vTop">내용</th>
<td class="putText">
<div class="clearfix">
<div class="put_left short">
<!-- 업로드한 이미지의 썸네일 영역 -->
<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>
<tr>
<th scope="row" class="vTop">받는사람</th>
<td class="putText">
<div class="clearfix receipt_num">
<div class="receipt_num_top">
<label for="callTo" class="label">받는 번호입력</label>
<input type="text" id="callTo" name="callTo" placeholder="번호를 입력하세요" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');" onfocus="this.placeholder=''" onblur="this.placeholder='번호를 입력하세요'" style="width:340px;">
<button type="button" class="btnType btnType6 addCallToF">번호추가</button>
<span><span class="vMiddle">*</span> 중복번호는 한번만 발송됩니다.</span>
</div>
<div class="receipt_num_midde">
<div class="listType list01 callList_box" id="callList_box">
<div class="list_table list_head">
<div class="cb_wrap">
<label for="" class="label"></label>
<input type="checkbox">
</div>
<div class="list_table_num">
<p>번호</p>
<img src="/publish/images/sortUp.png">
<img src="/publish/images/sortDown.png">
</div>
<div class="list_table_name">
<p>이름</p>
<img src="/publish/images/sortUp.png">
<img src="/publish/images/sortDown.png">
</div>
</div>
</div>
<div class="put_right">
<div class="btn_popup_wrap spc_wrap">
<button type="button" data-tooltip="popup06" class="btnType btnType7 popupAddr">주소록 불러오기</button>
</div>
<div class="btn_popup_wrap">
<button type="button" data-tooltip="popup02" class="btnType btnType7">엑셀 불러오기</button>
</div>
<div class="btn_popup_wrap">
<button type="button" data-tooltip="popup03" class="btnType btnType7 tab1">최근 전송내역</button>
</div>
<div class="btn_popup_wrap">
<button type="button" data-tooltip="popup03" class="btnType btnType7 tab2">자주 보내는 번호</button>
</div>
<div class="btn_popup_wrap">
<button type="button" data-tooltip="popup05" class="btnType btnType7 tab2" onclick="getMjMsgSentListAll('1');">재전송</button>
</div>
<div class="btn_popup_wrap check_validity_wrap">
<button type="button" class="btnType btnType7 check_validity">오류 검사 <i class="qmMark"></i></button>
<div class="error_hover_cont send_hover_cont">
<p>휴대폰 번호 입력 시 해당 휴대폰 번호에 대한 형식이 어긋나거나 휴대폰 번호에 오류가 있는지 등을 검사하는 기능</p>
<span>(예시) 010-1234-0001(O) / 010-12345-0001(X)</span>
</div>
</div>
</div>
</div>
<div class="list_bottom clearfix">
<div class="remove_btnWrap">
<button type="button" class="btnType15 all_del"><i class="remove_img"></i>전체삭제</button>
<button type="button" class="btnType15 select_del"><i class="remove_img"></i>선택삭제</button>
</div>
<div class="list_bottom_right">
<p>총 <span class="c_e40000" id="rowTotCnt">0</span>건 / 중복 <span class="c_002c9a" id="rowDupCnt">0</span>건</p>
<button type="button" class="address_reg2 addressregi_btn">주소록에 등록</button>
</div>
</div>
</div>
</td>
</tr>
<tr>
<th colspan="2" class="billingAmount">
<div>
<div class="final_pay">
<div class="pay_info_list">
<p>발송금액 :</p>
<div class="info" id="repPriceTxt">
단문 : <strong>20</strong>건<span>/</span>장문 : <strong>150</strong>건<span>/</span>그림문자 : <strong>30</strong>건
</div>
</div>
<p class="price" ><span id="totalPriceTxt">0</span>원<span>(부가세 포함)</span></p>
</div>
<c:if test="${eventRemainCash > 0 && eventMberInfo.eventStatus eq 'Y'}">
<p style="text-align: right; font-size: 14px; color: #666; margin: -10px 0 15px 0; font-weight: 300;">* 이벤트회원의 발송금액은 이벤트단가를 적용하여 계산된 금액이므로 실제 발송금액과 다를 수 있습니다.</p>
</c:if>
<div class="pay_type clearfix">
<fmt:formatNumber type="number" maxFractionDigits="3" value="${userMoney}" var="commaPrice" />
<div>
<input type="radio" id="radio_bill_1" name="radio_bill" checked="checked">
<label for="radio_bill_1">보유잔액</label>
<label for="userMoney" class="label">보유잔액</label>
<input type="text" id="userMoney" name="userMoney" value="<c:out value='${commaPrice}'/>" readonly>
<span class="won">원</span>
<button type="button" class="btnType btnType21" onclick="location.href='/web/member/pay/PayView.do'">충전</button>
</div>
<c:if test="${eventRemainCash > 0 && eventMberInfo.eventStatus eq 'Y'}">
<div><button type="button" data-tooltip="popup07" class="btnType btnType3 btn_event_cash">이벤트 잔액</button></div>
</c:if>
</div>
<!--발송금액 아래 등급별 가격안내 추가-->
<div class="my_price_wrap" id="myPriceWrap" style="display: none;">
<div class="center-line"></div>
<ul>
<li class="title">
<img src="/publish/images/content/icon_mypage_message.png" alt="">나의 단가 &nbsp;<span>:</span> &nbsp;
</li>
<li class="price_line">
<span class="type">단문</span>
<span class="price"><fmt:formatNumber value="${shortPrice}" pattern="###.#" /></span>원
<span class="line">/ &nbsp;</span>
</li>
<li class="price_line">
<span class="type">장문</span>
<span class="price"><fmt:formatNumber value="${longPrice}" pattern="###.#" /></span>원
<span class="line">/ &nbsp;</span>
</li>
<li class="price_line">
<span class="type">그림</span>
<span class="price"><fmt:formatNumber value="${picturePrice}" pattern="###.#" /></span>원
(2장 : <fmt:formatNumber value="${picture2Price}" pattern="###.#" />원 / 3장 : <fmt:formatNumber value="${picture3Price}" pattern="###.#" />원)
</li>
</ul>
</div>
<!-- End -->
</div>
</th>
</tr>
</tbody>
</table>
</div>
<div class="send_right">
<div class="phone">
<div class="phoneIn">
<div>
<p><img src="/publish/images/search.png">미리보기</p>
<div class="text_length2 clearfix preShort">
<span class="msg_com msg_short">단문</span>
<div>
<span>글자크기</span>
<button type="button" class="fontPlus"><img src="/publish/images/content/font_plus.png"></button>
<button type="button" class="fontMinus"><img src="/publish/images/content/font_minus.png"></button>
</div>
</div>
<div class="text_length2 clearfix prePhoto">
<span class="msg_com msg_photo">포토</span>
<ul class="photo_msg_num">
<li class="photo_num_01" onclick="imgClick(0);"><a href="#none">1</a></li>
<li class="photo_num_02" onclick="imgClick(1);"><a href="#none">2</a></li>
<li class="photo_num_03" onclick="imgClick(2);"><a href="#none">3</a></li>
</ul>
<div>
<span>글자크기</span>
<button type="button" class="fontPlus"><img src="/publish/images/content/font_plus.png"></button>
<button type="button" class="fontMinus"><img src="/publish/images/content/font_minus.png"></button>
</div>
</div>
<!-- 텍스트 미리보기 -->
<div class="text_preview">
<div class="preiew_img preViewShort"></div>
<div class="preview_auto">
<p class="none_txt">내용을 입력해주세요.</p>
<pre class="realtime"></pre>
</div>
</div>
<!-- //텍스트 미리보기 -->
</div>
</div>
<p class="addText">※ 단말기 설정에 따라 다르게 보일 수 있습니다</p>
</div>
<div class="phone_bottom">
<div class="send_rev">
<div class="send_content">
<div class="rev_radio">
<ul>
<li><input type="radio" id="reserYnN" name="reserYn" value="N" checked="checked"><label for="reserYnN">즉시</label></li>
<li><input type="radio" id="reserYnY" name="reserYn" value="Y"><label for="reserYnY">예약</label></li>
</ul>
</div>
<div class="send_btn">
<button type="button" class="btnType btnType11" onclick="javascript:fn_sendMsgData(); return false;">발송하기</button>
<button type="button" class="btnType btnType10" onclick="javascript:fnTestSend(); return false;">테스트발송</button>
</div>
</div>
<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>
</form>
<form id="sentListForm" name="sentListForm" method="post">
<input type="hidden" name="pageType" value=""/>
<input type="hidden" name="pageIndex" value=""/>
<input type="hidden" name="msgSentType" value=""/>
<input type="hidden" name="searchSortCnd" value="" />
<input type="hidden" name="searchSortOrd" value="" />
</form>
<form id="latestMsgForm" name="latestMsgForm" method="post">
<input type="hidden" id="userId" name="userId" value="${LoginVO.id}"/>
</form>
<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="goToCustomForm" id="goToCustomForm" method="post" action="/web/mjon/custom/selectMsgCustomView.do">
<input type="hidden" id="pageType3" name="pageType" value="msgcampain"/>
</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>