YNICTE/FO/js/site.js

1482 lines
52 KiB
JavaScript

$(window).on("keydown", function (e) {
if (e.keyCode == 116 /*|| e.keyCode == 123*/) {
prv(); return false;
}
if (e.keyCode == 119 && typeof (save) == "function" && $("#layermessage:visible").length < 1) {
save();
}
else if (e.keyCode == 115 && typeof (del) == "function" && $("#layermessage:visible").length < 1) {
del();
}
else if (e.keyCode == 13 && $("#confirmbox:visible").length > 0) {
confirmok();
}
else if (e.keyCode == 27 && $("#confirmbox:visible").length > 0) {
confirmtoggle();
}
else if (e.keyCode == 27 && $("#layermessage:visible").length > 0) {
$(_focusitem).focus();
hidelayermsg();
}
});
$(document).ready(function () {
$("body").on("keydown", ".int, .intdot", function (e) {
}).on("keyup", ".int, .intdot, input.mobile,input[type='text'],input[type='password']", function (e) {
if (($(this).hasClass("int") || $(this).hasClass("intdot") || $(this).hasClass("mobile")) && $(this).val() !== null && $(this).val() !== '' && e.keyCode != 8 && e.keyCode != 109 && e.keyCode != 189 && e.keyCode != 46 && e.keyCode != 190 && e.keyCode != 110 && e.keyCode != 109 && e.keycode != 189 && e.keyCode != 13
&& !(e.keyCode > 47 && e.keyCode < 58) && !(e.keyCode > 95 && e.keyCode < 106)) {
$(this).val($(this).val().replace(/[^0-9.-]/g, ''));
if ($(this).hasClass("int") && isNaN(parseInt($(this).val(), 10))) {
if (!$(this).hasClass("datazero")) {
$(this).val("");
}
else {
$(this).val(0);
}
}
else if ($(this).hasClass("double") && isNaN(parseFloat($(this).val()))) {
if (!$(this).hasClass("datazero")) {
$(this).val("");
}
else {
$(this).val(0);
}
}
}
if ($(this).val() == "") {
if (($(this).attr("id") || "") != "" && ($(this).attr("placeholder") || "") != "" && $("#ph_" + $(this).attr("id")).length < 1) {
var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
if (msie < 0) {
msie = ua.indexOf("Trident/");
}
if (msie > -1) {
$("label.phplaceholder").remove();
$("<label class=\"phplaceholder\" id=\"ph_" + $(this).attr("id") + "\">" + $(this).attr("placeholder") + "<label>").insertAfter($(this));
$("#ph_" + $(this).attr("id")).css("top", ($(this).position().top + 10) + 'px');
}
}
} else {
$("label.phplaceholder").remove();
}
}).on("change", ".int, .intdot, .email, .mobile, .mobilefmt, .telfmt", function () {
if ($(this).hasClass("email")) {
$("#" + $(this).attr("data-bind")).val(vals($(this).parent().find(".emaildata" + $(this).attr("data-bind")), '@'));
}
else if ($(this).hasClass("mobile")) {
$("#" + $(this).attr("data-bind")).val(vals($(this).parent().find(".mobiledata" + $(this).attr("data-bind"))));
}
else if ($(this).hasClass("mobilefmt")) {
$(this).val(formatmobile($(this).val()));
}
else if ($(this).hasClass("telfmt")) {
$(this).val(formattel($(this).val()));
}
else if ($(this).hasClass("int") && isNaN(parseInt($(this).val(), 10))) {
if (!$(this).hasClass("datazero")) {
$(this).val("");
}
else {
$(this).val(0);
}
}
else if ($(this).hasClass("intdot") && isNaN(parseFloat($(this).val()))) {
if (!$(this).hasClass("datazero")) {
$(this).val("");
}
else {
$(this).val(0);
}
}
}).on("click", ".int, .intdot", function () {
$(this)[0].select();
}).on("focus", ".int, .intdot, input[type='text'], input[type='password']", function () {
if ($(this).hasClass("int") || $(this).hasClass("intdot")) {
$(this).val($(this).val().replace(/,/gi, ''));
}
if (($(this).attr("id") || "") != "" && ($(this).attr("placeholder") || "") != "" && $("#ph_" + $(this).attr("id")).length < 1 && $(this).val() == "") {
var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
if (msie < 0) {
msie = ua.indexOf("Trident/");
}
if (msie > -1) {
$("label.phplaceholder").remove();
$("<label class=\"phplaceholder\" id=\"ph_" + $(this).attr("id") + "\">" + $(this).attr("placeholder") + "<label>").insertAfter($(this));
$("#ph_" + $(this).attr("id")).css("top", ($(this).position().top + 10) + 'px');
}
}
}).on("focusout", "input.datepicker-input", function () {
var v = $(this).val().replace(/[^0-9]/g, '');
if (v.length != 8) {
$(this).val("");
} else {
$(this).val(v.substr(0, 4) + "-" + v.substr(4, 2) + "-" + v.substr(6));
}
}).on("focusout", ".int, .intdot, input[type='text'], input[type='password']", function () {
$("label.phplaceholder").remove();
});
$('#breadcrumb dd > span').click(function () {
if ($(this).is('.on')) {
$(this).next().slideUp(300);
$(this).removeClass('on');
} else {
$('#breadcrumb dd > ul').slideUp(300);
$('#breadcrumb dd > span').removeClass('on');
$(this).addClass('on');
$(this).next().slideDown(300);
}
});
$(document).on("click", "a", function () {
if ($(this).attr("href") == "#") {
prv();
}
});
$("body").on("keydown", "input[type=text], input[type=password]", function (e) {
if (e.keyCode == 13) {
var index = $('input[type=text], input[type=password]').index(this) + 1;
$('input[type=text], input[type=password]').eq(index).focus();
if ($(this).closest("form").length == 1) {
if ($(this).closest("form").find("input[type=text]").length == 1) {
prv();
}
}
if (($(this).attr("data-eval") || "") != "") {
eval($(this).attr("data-eval"));
}
}
}).on("click", "a.btnpage", function () {
if (!$(this).hasClass("on")) {
if ($(this).hasClass("first")) {
eval($(this).closest(".paging").attr("data-method") + "('F')");
}
else if ($(this).hasClass("prev")) {
eval($(this).closest(".paging").attr("data-method") + "('P')");
}
else if ($(this).hasClass("next")) {
eval($(this).closest(".paging").attr("data-method") + "('N')");
}
else if ($(this).hasClass("last")) {
eval($(this).closest(".paging").attr("data-method") + "('L')");
}
else {
eval($(this).closest(".paging").attr("data-method") + "('" + $(this).text()+"')");
}
}
});
$('.popClose').click(function () {
$('.popWrap').css('display', 'none');
$('html, body').removeClass('lock');
});
document.oncontextmenu = disableit;
});
var _uploadeditorimageitem;
var _uploadeditorimagecallback;
var _uploadeditorimagertn;
function checkpop() {
var cpop = open("", "checkpop", '');
if (cpop == null) {
alert("팝업이 차단되어 있습니다. 차단을 해제해 주세요.");
return false;
} else {
cpop.close();
return true;
}
}
function mpgPopClose(selector) {
$(selector || '.mpgPop').hide();
$('html, body').removeClass('lock');
}
function cbeditorupload() {
if (_uploadeditorimagertn.code == 1000) {
$(_uploadeditorimageitem).summernote('editor.insertImage', _uploadeditorimagertn.obj.uri);
}
}
function uploadeditorimage(files, el, fdata, _callback, _url) {
_url = _url || '/fcommon/UploadEditorImageUrl';
_uploadeditorimagecallback = _callback;
_uploadeditorimageitem = el;
$.ajax({
data: fdata,
type: "POST",
url: _url,
cache: false,
contentType: false,
processData: false,
success: function (result) {
_uploadeditorimagertn = result;
eval(_uploadeditorimagecallback.substr(_uploadeditorimagecallback.length - 1, 1) == ")" ? _uploadeditorimagecallback : (_uploadeditorimagecallback + "()"));
}
});
}
function gologin(url, returnurl) {
url = url || '/Account/Index';
if ((returnurl || "") != "") {
url += "?ru=" + returnurl;
}
location.href = url;
}
function gopage(fid, pid, pno, a) {
fid = fid || "mform";
pid = pid || "pagenum";
$("#" + fid).find("#" + pid).val(pno);
bglayer();
$("#"+fid).submit();
}
var _vc_cmino = 0;
var _vc_istaste = false;
var _vc_lectno = 0;
var _vc_pseq = 0;
var _vcwin;
var _vcistaste = false;
function viewcontents(cmino, istaste, lectno, pseq) {
lectno = lectno || 0;
pseq = getint(pseq);
_vc_cmino = cmino;
_vc_istaste = istaste;
_vc_lectno = lectno;
_vc_pseq = pseq;
_vcistaste = istaste;
if (ismobile()) {
confirmtoggle(true, "사용 중인 요금제에 따라 데이터 요금이 발생할 수 있습니다.", "viewcontentsok()");
} else {
viewcontentsok();
}
}
function viewcontentsok() {
if (!_vcistaste) {
//로그인체크
capp("/focommon/isauth", {}, "cbviewcontents");
} else {
cbviewcontents();
}
}
var _cdmsisopenning = 0;
// 팝업 창 참조를 전역으로 유지
let globalPopup = null;
function cbviewcontents() {
if (_vcistaste || capResult.code == 1000) {
// 백그라운드 레이어 숨기기
$("#bglayer").hide();
_cdmsisopenning = 1;
const url = `/CDMS/Play${_vc_istaste ? "Taste" : ""}?cmino=${_vc_cmino}&ismobile=${ismobile() ? '1' : '0'}&lectno=${_vc_lectno}&pseq=${_vc_pseq}`;
// 팝업 옵션
const nWidth = 1080;
const nHeight = screen.availHeight - 100;
const nLeft = Math.round((screen.availWidth - nWidth) / 2);
const nTop = Math.round((screen.availHeight - nHeight) / 2);
const popOption = `
width=${nWidth},
height=${nHeight},
top=${nTop},
left=${nLeft},
toolbar=no,
menubar=no,
location=no,
resizable=yes,
status=yes,
scrollbars=yes`.replace(/\s+/g, '');
// 이미 팝업이 열려 있는지 확인
if (globalPopup && !globalPopup.closed) {
try {
// 1초 딜레이 적용
setTimeout(() => {
globalPopup.location.href = url; // URL 업데이트 (필요에 따라)
globalPopup.focus(); // 이미 열린 팝업 창 활성화
}, 1000);
} catch (e) {
console.error("기존 팝업 접근 실패: ", e);
globalPopup = null; // 접근 실패 시 참조 정리
}
} else {
globalPopup = window.open(url, 'contentsview', popOption);
if (!globalPopup) {
msg("팝업이 차단되어 있습니다. 차단을 해제해 주세요.");
} else {
try {
globalPopup.focus(); // 포커스 이동
} catch (e) {
console.error("팝업 포커스 실패: ", e);
}
}
}
} else {
location.href = "/Account/Index?ru=" + location.href.replace(/#/gi, '');
}
}
function poppaging(id, ptc, pno) {
$("#" + id).attr("data-lastpage", 1);
if (ptc > 10) {
if (pno > 10) {
$("#" + id).append("<a href=\"#\" class=\"btnpage first\">맨앞</a>");
}
if (pno > 1) {
$("#" + id).append("<a href=\"#\" class=\"btnpage prev\">이전</a>");
}
var __lastpno = (getint(ptc / 10) + (ptc % 10 > 0 ? 1 : 0));
$("#" + id).attr("data-lastpage", __lastpno);
var pstart = getint((pno - 1) / 10) * 10 + 1;
var __paging = "<ul>";
for (var i = pstart; i < pstart + 10; i++) {
__paging += "<li class=\"" + (pno == i ? "on" : "") + "\"><a href=\"#\" class=\"btnpage \">" + i + "</a></li>";
if (i == __lastpno) {
break;
}
}
$("#" + id).append(__paging + "</ul>");
if (pno < __lastpno) {
$("#" + id).append("<a class=\"btnpage next\">다음</a>");
$("#" + id).append("<a class=\"btnpage last\">맨뒤</a>");
}
}
}
function mobilefmt(phoneNum) {
var regExp = /(01[016789])([1-9]{1}[0-9]{2,3})([0-9]{4})$/;
var myArray;
if (regExp.test(phoneNum)) {
myArray = regExp.exec(phoneNum);
return true;
}
regExp = /(01[016789])-([1-9]{1}[0-9]{2,3})-([0-9]{4})$/;
if (regExp.test(phoneNum)) {
myArray = regExp.exec(phoneNum);
return true;
}
return false;
}
function formatmobile(phoneNum) {
phoneNum = phoneNum.replace(/-/gi, '');
if (mobilefmt(phoneNum)) {
var rtnNum;
var regExp = /(01[016789])([1-9]{1}[0-9]{2,3})([0-9]{4})$/;
var myArray;
if (regExp.test(phoneNum)) {
myArray = regExp.exec(phoneNum); rtnNum = myArray[1] + '-' + myArray[2] + '-' + myArray[3]; return rtnNum;
} else { return phoneNum; }
} else { return phoneNum; }
}
function telfmt(phoneNum) {
var regExp;
var myArray;
if (phoneNum.length == 8) {
regExp = /([1-9]{1}[0-9]{3})([0-9]{4})$/;
if (regExp.test(phoneNum)) {
myArray = regExp.exec(phoneNum);
return true;
}
regExp = /([1-9]{1}[0-9]{3})-([0-9]{4})$/;
if (regExp.test(phoneNum)) {
myArray = regExp.exec(phoneNum);
return true;
}
} else if (phoneNum.length == 9) {
regExp = /([0]{1}[2]{1})([1-9]{1}[0-9]{2})([0-9]{4})$/;
if (regExp.test(phoneNum)) {
myArray = regExp.exec(phoneNum);
return true;
}
regExp = /([0]{1}[2]{1})-([1-9]{1}[0-9]{2})-([0-9]{4})$/;
if (regExp.test(phoneNum)) {
myArray = regExp.exec(phoneNum);
return true;
}
} else if (phoneNum.length == 10) {
if (phoneNum.substr(0, 2) == "02") {
regExp = /([0]{1}[2]{1})([1-9]{1}[0-9]{3})([0-9]{4})$/;
if (regExp.test(phoneNum)) {
myArray = regExp.exec(phoneNum);
return true;
}
regExp = /([0]{1}[2]{1})-([1-9]{1}[0-9]{3})-([0-9]{4})$/;
if (regExp.test(phoneNum)) {
myArray = regExp.exec(phoneNum);
return true;
}
} else {
regExp = /([0]{1}[3-9]{1}[0-9]{1})([1-9]{1}[0-9]{2})([0-9]{4})$/;
if (regExp.test(phoneNum)) {
myArray = regExp.exec(phoneNum);
return true;
}
regExp = /([0]{1}[3-9]{1}[0-9]{1})-([1-9]{1}[0-9]{2})-([0-9]{4})$/;
if (regExp.test(phoneNum)) {
myArray = regExp.exec(phoneNum);
return true;
}
}
} else {
regExp = /([0]{1}[3-9]{1}[0-9]{1})([1-9]{1}[0-9]{3})([0-9]{4})$/;
if (regExp.test(phoneNum)) {
myArray = regExp.exec(phoneNum);
return true;
}
regExp = /([0]{1}[3-9]{1}[0-9]{1})-([1-9]{1}[0-9]{3})-([0-9]{4})$/;
if (regExp.test(phoneNum)) {
myArray = regExp.exec(phoneNum);
return true;
}
}
return false;
}
function formattel(phoneNum) {
phoneNum = phoneNum.replace(/-/gi, '');
if (telfmt(phoneNum)) {
var rtnNum;
var regExp;
var myArray;
if (phoneNum.length == 8) {
regExp = /([1-9]{1}[0-9]{3})([0-9]{4})$/;
} else if (phoneNum.length == 9) {
regExp = /([0]{1}[2]{1})([1-9]{1}[0-9]{2})([0-9]{4})$/;
} else if (phoneNum.length == 10) {
if (phoneNum.substr(0, 2) == "02") {
regExp = /([0]{1}[2]{1})([1-9]{1}[0-9]{3})([0-9]{4})$/;
} else {
regExp = /([0]{1}[3-9]{1}[0-9]{1})([1-9]{1}[0-9]{2})([0-9]{4})$/;
}
} else {
regExp = /([0]{1}[3-9]{1}[0-9]{1})([1-9]{1}[0-9]{3})([0-9]{4})$/;
}
if (regExp.test(phoneNum)) {
myArray = regExp.exec(phoneNum);
if (phoneNum.length == 8) {
return myArray[1] + '-' + myArray[2];
} else {
return myArray[1] + '-' + myArray[2] + '-' + myArray[3];
}
}
}
return phoneNum;
}
function bindComma(v) {
var fv = v.toString().replace(/,/gi, '');
var fv2 = "";
if (fv.indexOf('.') > -1) {
if (fv.split('.')[0].length > 3) {
for (var fvi = fv.split('.')[0].length - 1; fvi > -1; fvi--) {
fv2 = fv.split('.')[0].substr(fvi, 1) + (fv2 != "" && (fv2.replace(/,/gi, '').length % 3) < 1 ? "," : "") + fv2;
}
fv = fv2 + "." + fv.split('.')[1];
}
}
else if (fv.length > 3) {
for (var fvi2 = fv.length - 1; fvi2 > -1; fvi2--) {
fv2 = fv.substr(fvi2, 1) + (fv2 != "" && (fv2.replace(/,/gi, '').length % 3) < 1 ? "," : "") + fv2;
}
fv = fv2;
}
return fv;
}
function gourl(url) {
location.href = url;
}
function disableit() {return false;}
function refresh() {
bglayer();
location.href = location.href.replace('#', '');
}
function getnull(v) {
return v || "";
}
function getdb(v, norpspliter, nullto) {
nullto = nullto || "";
if ((norpspliter || false)) {
return v=="0" ? "0" : (v || nullto).toString();
}
return v == "0" ? v : (v || nullto).toString().replace(/:/gi, '').replace(/;/gi, '');
}
function getint(v) {
v = v == null ? 0 : v;
v = v.toString();
v = v.replace(/,/gi, '');
if (isNaN(parseInt(v, 10)))
return 0;
return parseInt(v, 10);
}
function prv() { try { if (event.preventDefault) { event.preventDefault(); } } catch (ex) { try { ffEvent.preventDefault(); } catch (ex2) { var exceptionmsg = ex2; } } return false; }
function gomenu(pno, ptype, url, a, no, no2) {
no = no || 0;
setv("menupageno", pno);
setv("menupagedatakey", no);
setv("menupagedatakey2", no2);
if (ptype == 3) {
if (no > 0) {
$("#menuform").attr("action", "/Board/View").submit();
} else {
$("#menuform").attr("action", "/Board/List").submit();
}
} else if (ptype == 5) {
eval(url);
} else {
bglayer();
location.href = (url == '' ? '/Home/Html' : url) + ((url == '' ? '/Home/Html' : url).indexOf('?') > -1 ? '' : '?') + 'menupageno=' + pno + '&menupagedatakey=' + no + '&menupagedatakey2=' + no2;
//$("#menuform").attr("action", url == '' ? "/Home/Html" : url).submit();
}
}
function viewlayer(pno, a, title) {
$("#mainpoptitle").text(title);
capp("/focommon/Html", { pno: pno }, "cbhtmlget");
}
function cbhtmlget() {
$("#mainpopcont").html(capResult.obj.pagehtml);
$(".mainpopwrap").show();
}
function breadcrumb(a) {
$("#ulm1 li").addClass("hidden");
$("#ulm1 li.m" + $(a).closest("li").attr("data-pno")).removeClass("hidden");
$("#ul0span").next().slideUp(300);
$("#ul0span").removeClass('on');
$("#ul0span").text($(a).text());
$("#ul1span").text('-');
$("#ul1span").addClass('on');
$("#ul1span").next().slideDown(300);
}
function val(id) {
if ($("#" + id).length < 1) {
return "";
}
return $.trim($("#" + id).val());
}
function vals(els, sepa) {
sepa = sepa || "";
var rtn = "";
$.each(els, function (i, r) {
rtn += sepa + ($(r).val() || "");
});
return rtn == "" ? rtn : rtn.substr(sepa.length);
}
function focus(id, isel) {
isel = isel || false;
id = id || "";
if (id != "") {
if (isel) {
$(id).focus();
$([document.documentElement, document.body]).animate({
scrollTop: $(id).offset().top - (ismobile() ? 80 : 120)
}, 700);
} else {
$("#" + id).focus();
$([document.documentElement, document.body]).animate({
scrollTop: $("#" + id).offset().top - (ismobile() ? 80 : 120)
}, 700);
}
}
}
var _jsislayer2, isAutoMsg, _bging, _callback, capResult, capOK, isCaping, _hideBG, _noerror;
function cap(url, formid, callback, getpost, autoMsg, noBG, jsislayer2) {
_jsislayer2 = jsislayer2 || false;
if (!isCaping) {
isAutoMsg = autoMsg || false;
_bging = noBG || false;
if (!_bging) {
ajaxing();
}
if (_jsislayer2) {
bglayer2();
}
_callback = callback;
capResult = null;
capOK = false;
isCaping = true;
clearComma();
$.ajax({
type: getpost || "post",
url: url,
data: $("#" + formid).serialize(),
success: function (r) {
isCaping = false;
capResult = r;
setcap();
}, error: function (e) {
isCaping = false;
console.log(e.responseText);
if (_jsislayer2) {
msg2("잠시 후 다시 요청해주세요.");
}
else {
msg("잠시 후 다시 요청해주세요.");
}
}, complete: function () {
ajaxing(false);
}
});
}
else {
console.log("다른 작업을 처리중입니다. 잠시후 다시 작업해주세요.");
}
}
function capp(url, p, callback, getpost, autoMsg, noBG, jsislayer2, hideBG, noerror, sync) {
_jsislayer2 = jsislayer2 || false;
_noerror = noerror || false;
_hideBG = hideBG || false;
// 동기식 요청은 권장되지 않지만, 기존 코드 호환성을 위해 유지
// 단, 경고 메시지 출력
_async = !(sync || false);
if (sync) {
console.warn("동기식 Ajax 요청은 권장되지 않으며 iOS에서 문제를 일으킬 수 있습니다.");
}
if (!isCaping) {
isAutoMsg = autoMsg || false;
_bging = noBG || false;
if (!_bging) {
ajaxing();
}
if (_jsislayer2) {
bglayer2();
}
_callback = callback;
capResult = null;
capOK = false;
isCaping = true;
// 기존 함수 호출 유지, 존재 확인 후 실행
if (typeof clearComma === 'function') {
try {
clearComma();
} catch (e) {
console.error("clearComma 함수 실행 오류:", e);
}
}
// Ajax 요청 설정
const ajaxSettings = {
type: getpost || "post",
url: url,
data: p,
async: _async,
timeout: _async ? 30000 : undefined, // 비동기 요청만 타임아웃 설정
success: function (r) {
isCaping = false;
capResult = r;
// iOS 호환성을 위한 추가 처리
setTimeout(function () {
setcap();
}, 0);
},
error: function (xhr, status, error) {
isCaping = false;
console.log("Ajax 오류:", status, error);
if (xhr.responseText) {
console.log("응답 내용:", xhr.responseText);
}
// 타임아웃 오류 별도 처리
if (status === "timeout") {
if (_jsislayer2) {
alert("요청 시간이 초과되었습니다. 다시 시도해 주세요.");
} else {
alert("요청 시간이 초과되었습니다. 다시 시도해 주세요.");
}
}
else if (!_noerror) {
if (_jsislayer2) {
alert("잠시 후 다시 요청해주세요.");
}
else {
alert("잠시 후 다시 요청해주세요.");
}
}
},
complete: function () {
// iOS에서의 지연 문제 방지를 위한 setTimeout 사용
setTimeout(function () {
ajaxing(false);
}, 0);
}
};
// iOS 특정 버전에서의 캐시 문제 방지
if (navigator.userAgent.match(/(iPad|iPhone|iPod)/g)) {
ajaxSettings.cache = false;
// URL에 타임스탬프 추가하여 캐시 방지
const timestamp = new Date().getTime();
ajaxSettings.url = ajaxSettings.url +
(ajaxSettings.url.indexOf('?') >= 0 ? '&' : '?') +
'_t=' + timestamp;
}
$.ajax(ajaxSettings);
}
else if (!_noerror) {
console.log("다른 작업을 처리중입니다. 잠시후 다시 작업해주세요.");
}
}
function capfile(url, data, callback, noeval, setBG, jsislayer2) {
// 로딩바 표시 추가
showLoadingImage();
noeval = noeval || false;
_jsislayer2 = jsislayer2 || false;
_setBG = setBG || false;
// 백그라운드 레이어 표시
if (_setBG) {
bglayer();
}
if (_jsislayer2) {
bglayer2();
}
// iOS 호환성을 위한 처리
// FormData 객체 확인 및 필요시 수정
if (data instanceof FormData) {
// iOS에서 FormData 디버깅을 위한 로그 (개발 중에만 사용)
console.log("FormData 항목 수:", [...data.entries()].length);
}
// 콜백 함수 실행 헬퍼
function executeCallback(result) {
// 로딩바 숨김 추가
hideLoadingImage();
if (_setBG) {
$("#bglayer").hide();
}
if (noeval) {
// 함수 객체로 직접 호출
if (typeof callback === 'function') {
callback(result);
}
}
else {
// 기존 방식 유지 (eval 사용)
// 보안상 권장되지 않지만 기존 코드 호환성 유지
try {
window.capResult = result; // 전역 변수로 결과 저장
if (typeof callback === 'string') {
if (callback.substr(callback.length - 1, 1) == ")") {
eval(callback);
} else {
eval(callback + "()");
}
}
} catch (e) {
console.error("콜백 실행 오류:", e);
}
}
}
var ajaxRequest = $.ajax({
type: "POST",
url: url,
contentType: false,
processData: false,
data: data,
timeout: 60000,
xhr: function () {
var xhr = $.ajaxSettings.xhr();
// 업로드 진행 상황 모니터링 (iOS에서 파일 업로드 진행 확인)
if (xhr.upload) {
xhr.upload.addEventListener('progress', function (e) {
if (e.lengthComputable) {
var percent = Math.round((e.loaded / e.total) * 100);
console.log("업로드 진행률: " + percent + "%");
}
}, false);
}
return xhr;
}
});
// 에러 처리
ajaxRequest.fail(function (jqXHR, textStatus, errorThrown) {
console.error("Ajax 요청 실패:", textStatus, errorThrown);
// 타임아웃인 경우 별도 처리
if (textStatus === "timeout") {
alert("요청 시간이 초과되었습니다. 다시 시도해 주세요.");
// 로딩바 숨김 추가 (타임아웃 시)
hideLoadingImage();
}
else {
// 기존 에러 처리 로직 유지 (하지만 에러 시 다른 처리를 권장)
executeCallback({
code: -1,
message: "요청 처리 중 오류가 발생했습니다",
error: textStatus
});
}
});
ajaxRequest.done(function (data) {
if (data && data.code == 1000) {
executeCallback(data);
}
else {
console.warn("서버 응답 코드가 1000이 아닙니다:", data);
executeCallback(data);
}
});
}
function capfileform(url, fid, callback, iseval, getpost, autoMsg, noBG, jsislayer2) {
_jsislayer2 = jsislayer2 || false;
if (!isCaping) {
// 로딩바 표시 추가
showLoadingImage();
isAutoMsg = autoMsg || false;
_bging = noBG || false;
if (!_bging) { ajaxing(); }
if (_jsislayer2) { bglayer2(); }
_callback = callback;
capResult = null;
capOK = false;
isCaping = true;
// 폼 요소 직접 참조
const form = document.getElementById(fid);
// iOS 호환성을 위한 FormData 생성 방식 개선
let formData;
try {
// 기본 FormData 생성 시도
formData = new FormData(form);
// iOS 호환성 검사 - 파일 입력 필드 확인
const fileInputs = form.querySelectorAll('input[type="file"]');
let hasFiles = false;
fileInputs.forEach(input => {
if (input.files && input.files.length > 0) {
hasFiles = true;
// 파일 입력 필드 값이 제대로 FormData에 들어갔는지 확인
const fieldName = input.name || 'file';
if (!formData.has(fieldName)) {
console.log(`iOS 호환성: 수동으로 ${fieldName} 추가`);
// 수동으로 파일 추가
for (let i = 0; i < input.files.length; i++) {
formData.append(fieldName, input.files[i]);
}
}
}
});
// 디버깅용 로그
console.log('FormData 생성 완료:', hasFiles ? '파일 포함' : '파일 없음');
} catch (error) {
console.error('FormData 생성 오류:', error);
// 대체 방식으로 FormData 생성
formData = new FormData();
// 폼 필드 수동 추가
const formElements = form.elements;
for (let i = 0; i < formElements.length; i++) {
const field = formElements[i];
const name = field.name;
if (!name) continue;
if (field.type === 'file') {
for (let j = 0; j < field.files.length; j++) {
formData.append(name, field.files[j]);
}
}
else if (field.type !== 'submit' && field.type !== 'button') {
formData.append(name, field.value);
}
}
}
// 네트워크 요청 타임아웃 설정
const ajaxTimeout = 60000; // 60초
$.ajax({
type: getpost || "post",
url: url,
data: formData,
contentType: false,
processData: false,
timeout: ajaxTimeout,
success: function (r) {
isCaping = false;
capResult = r;
setcap();
// 로딩바 숨김 추가
hideLoadingImage();
},
error: function (e) {
isCaping = false;
console.log('Ajax 오류:', e.status, e.statusText);
console.log(e.responseText);
if (e.status === 0 && e.statusText === 'timeout') {
alert("요청 시간이 초과되었습니다. 다시 시도해주세요.");
}
else if (_jsislayer2) {
alert("개발담당자에게 문의해주세요");
}
else {
alert("개발담당자에게 문의해주세요.");
}
// 로딩바 숨김 추가
hideLoadingImage();
},
complete: function () {
ajaxing(false);
// complete에도 로딩바 숨김 추가 (중복 호출 방지를 위해 다른 방법 고려 가능)
hideLoadingImage();
}
});
}
else {
console.log("다른 작업을 처리중입니다. 잠시후 다시 작업해주세요.");
}
}
function setcap() {
// 결과가 없는 경우 예외 처리
if (!capResult) {
console.error("capResult가 정의되지 않았습니다");
return;
}
if (capResult.code === 1000) {
capOK = true;
capResultObj = capResult.obj;
capResultMsg = capResult.msg;
}
// 인증 관련 오류 처리
if (capResult.code == 9991) {
alert("인증시간이 초과되어 로그아웃되었습니다.");
setTimeout(function () {
location.href = '/Account/Error?code=9991';
}, 100); // iOS에서 alert 후 즉시 리디렉션 문제 방지
}
else if (capResult.code == 9992) {
alert("로그인 정보가 일치하지 않아 다시 로그인을 진행하셔야 합니다.\n(다른 디바이스에 로그인 또는 Cookie정보를 확인할 수 없습니다.)");
setTimeout(function () {
location.href = '/Account/Error?code=9992';
}, 100); // iOS에서 alert 후 즉시 리디렉션 문제 방지
}
else {
// 자동 메시지 처리
if (isAutoMsg) {
switch (capResult.code) {
case 1000: showOK(); break;
case 9999: alert("서버접속이 원활하지 않습니다"); break;
case 9998: alert("권한이 없는 요청입니다"); break;
case 9997: alert("권한(로그인)이 없는 요청입니다"); break;
case 9996: alert("검색된 데이터가 없습니다"); break;
case 9995: alert("적용된 데이터가 없습니다"); break;
default:
// 개발 모드에서만 상세 로그 출력
console.log("응답 코드:", capResult.code);
console.log("응답 메시지:", capResult.msg);
if (capResult.obj) console.log("응답 데이터:", capResult.obj);
break;
}
}
else {
capResultMsg = capResult.code + ": " + capResult.msg;
}
// 콜백 함수 실행
if (_callback) {
try {
if (typeof _callback === "function") {
_callback(capResult);
}
else if (typeof _callback === "string") {
// 문자열 콜백 처리 - eval 사용을 최소화
if (_callback.indexOf(")") > -1) {
// 이미 괄호가 포함된 경우
window.setTimeout(function () {
try {
eval(_callback);
} catch (e) {
console.error("콜백 실행 오류:", e);
}
}, 0);
}
else {
// 괄호 추가 필요
window.setTimeout(function () {
try {
eval(_callback + "()");
} catch (e) {
console.error("콜백 실행 오류:", e);
}
}, 0);
}
}
} catch (e) {
console.error("콜백 실행 중 오류 발생:", e);
}
}
}
}
/** 로딩이미지 보여주기 */
function showLoadingImage() {
// 이미 존재하는 경우 중복 생성 방지
if (document.getElementById('custom-loading-overlay')) {
return;
}
// 로딩 이미지 요소 생성
const loadingDiv = document.createElement('div');
loadingDiv.id = 'custom-loading-overlay';
// 인라인 스타일 대신 클래스 사용을 위한 스타일 추가
const style = document.createElement('style');
style.textContent = `
#custom-loading-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
display: flex;
justify-content: center;
align-items: center;
z-index: 9999;
}
#custom-loading-spinner {
width: 40px;
height: 40px;
background-color: #fff;
border-radius: 100%;
-webkit-animation: sk-scaleout 1.0s infinite ease-in-out;
animation: sk-scaleout 1.0s infinite ease-in-out;
}
@-webkit-keyframes sk-scaleout {
0% { -webkit-transform: scale(0) }
100% { -webkit-transform: scale(1.0); opacity: 0; }
}
@keyframes sk-scaleout {
0% { transform: scale(0); -webkit-transform: scale(0); }
100% { transform: scale(1.0); -webkit-transform: scale(1.0); opacity: 0; }
}
/* 애니메이션 미지원 브라우저용 대체 스타일 */
.no-animation #custom-loading-spinner {
background-color: #3498db;
border: 5px solid #f3f3f3;
}
`;
document.head.appendChild(style);
// 브라우저 애니메이션 지원 확인
const supportsAnimation = 'AnimationEvent' in window ||
'WebKitAnimationEvent' in window ||
'MozAnimationEvent' in window ||
'msAnimationEvent' in window ||
'OAnimationEvent' in window;
// 기본 로딩 스피너
const spinnerDiv = document.createElement('div');
spinnerDiv.id = 'custom-loading-spinner';
// 애니메이션을 지원하지 않는 브라우저에는 정적 스타일 적용
if (!supportsAnimation) {
loadingDiv.className = 'no-animation';
}
loadingDiv.appendChild(spinnerDiv);
document.body.appendChild(loadingDiv);
}
/** 로딩이미지 제거 */
function hideLoadingImage() {
const loadingDiv = document.getElementById('custom-loading-overlay');
if (loadingDiv) {
// 스타일 요소도 정리
const style = document.querySelector('style[id^="custom-loading-style"]');
if (style) {
document.head.removeChild(style);
}
document.body.removeChild(loadingDiv);
}
}
function ajaxing(tf) {
if (!_jsislayer2) {
bglayer(false);
$("#bgprogress").hide();
if (tf == null || tf === true) {
bglayer();
$("#bgprogress").show();
}
}
else {
bglayer2(false);
if (tf == null || tf === true) {
bglayer();
}
}
}
function bglayer(tf) {
if (tf == null || tf === true || (_bging && !_hideBG)) {
$("#bglayer").show();
}
else {
$("#bglayer").hide();
}
}
function bglayer2(tf) {
if (tf == null || tf === true) {
$("#bglayer2").show();
}
else {
$("#bglayer2").hide();
}
}
function clearComma() {
$.each($("input.int, input.double"), function (i, c) {
$(c).val($(c).val().replace(/,/gi, ''));
});
}
var _focusitem;
var _focusitem2;
var _okm;
function msg(m, t, bging, fi, okm, okmt, hidebtn) {
okmt = okmt || 0;
hidebtn = hidebtn || false;
_okm = okm || "";
fi = fi || "";
if (fi == "x") {
_focusitem = "";
} else {
_focusitem = fi == "" ? $("input:focus, select:focus, textarea:focus") : $(fi);
}
if (hidebtn) {
$("#layermessage a.mainokbutton").hide();
}
else {
$("#layermessage a.mainokbutton").unbind("click");
$("#layermessage a.mainokbutton").on("click", function () {
if (_okm == "" && _focusitem != "") {
$(_focusitem).focus();
}
else {
eval(_okm);
}
});
}
if (okm != "" && okmt > 0) {
setTimeout(function () {
eval(_okm);
}, okmt);
}
t = t || 10;
bging = bging || false;
if ($("#layermessage a.mainokbutton").length > 0) {
$("#layermessage a.mainokbutton").focus();
}
setTimeout(function () {
bglayer();
msglayer(m, bging);
}, t);
}
function msg2(m, t, fi) {
_focusitem2 = (fi || "") == "" ? $("input:focus, select:focus, textarea:focus") : $(fi);
$("#layermessage2 a.mainokbutton2").on("click", function () {
$(_focusitem2).focus();
});
t = t || 0;
if ($("#layermessage2 a.mainokbutton2").length > 0) {
$("#layermessage2 a.mainokbutton2").focus();
}
setTimeout(function () {
bglayer2();
msglayer2(m);
}, t);
}
function msglayer(msg, bging) {
_bging = bging;
$("#layermessage div").html(msg);
$("#bglayer, #layermessage").show();
$("#layermessage a.mainokbutton").focus();
}
function msglayer2(msg) {
$("#layermessage2 div").html(msg);
$("#bglayer2, #layermessage2").show();
$("#layermessage2 a.mainokbutton2").focus();
}
function hidelayermsg() {
ajaxing(_bging);
$("#layermessage").hide();
if (!_bging) {
$("#bglayer").hide();
}
else {
$("#bgprogress").hide();
}
}
function hidelayermsg2() {
$("#layermessage2").hide();
$("#bglayer2").hide();
}
function popup(pop) {
$('.popWrap#' + pop).css('display', 'block');
$('html, body').addClass('lock');
}
function checkInt(id, focus, m) {
m = m || "";
if ($("#" + id).length < 1 || $.trim($("#" + id).val()) == "" || getBytes($.trim($("#" + id).val())) < 1 || getint(val(id)) == 0) {
if ($("#" + (id || focus)).length > 0) {
$("#" + (id || focus)).focus();
}
if (m != "") {
msg(m);
}
return true;
}
return false;
}
function check(id, focusid, m, ism2) {
ism2 = ism2 || false;
m = m || "";
if ($("#" + id).length < 1 || $.trim($("#" + id).val()) == "" || $.trim($("#" + id).val()) == "0" || getBytes($.trim($("#" + id).val())) < 1) {
if ($("#" + (focusid || id)).length > 0) {
if ($("#" + (focusid || id)).hasClass("datepicker-input")) {
$("#" + (focusid || id)).next("i").focus();
$("#" + (focusid || id)).next("i")[0].scrollIntoView(false);
}
else {
focus($("#" + (focusid || id)), true);
}
}
if (m != "") {
if (ism2) {
msg2(m);
}
else {
msg(m);
}
}
return true;
}
return false;
}
function checkn(id, focus, m) {
m = m || "";
if ($("#" + id).length < 1 || $.trim($("#" + id).val()) === "" || getBytes($.trim($("#" + id).val())) < 1 || getint(getv(id)) < 1) {
if ($("#" + (id || focus)).length > 0) {
$("#" + (id || focus)).focus();
}
if (m != "") {
msg(m);
}
return true;
}
return false;
}
function checkrv(name) {
if ($("input[name='" + name + "']:checked").length < 1) {
$("input[name='" + name + "']").first().focus();
return true;
}
return false;
}
function setrv(name, val) {
$("input[name='" + name + "'][value='" + val + "']").prop("checked", true);
}
function setv(id, val) {
$("#" + id).val(val);
}
function sett(id, text) {
$("#" + id).text(text);
}
function submit(fid, t, remainpage) {
remainpage = remainpage || false;
if (!remainpage) {
$("#PageNum").val(1);
}
t = t || 10;
setTimeout(function () {
bglayer();
$("#" + (fid || "mform")).submit();
}, t);
}
function msgadmin(t) {
setTimeout('msg("운영자에게 문의해주세요.")', t || 10);
}
function isid(v) {
//영문숫자-_ , 나머지입력시 오류반환
var regExp = /^[A-Za-z0-9-_]*$/i;
var regExp2 = /[\,.=~!@#$%^&*()\[\]+|<>?:{}]/;
if (regExp.test(v) && !regExp2.test(v)) {
return true;
}
return false;
}
function isemail(v) {
//이메일 검사
var regExp = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;
if (regExp.test(v)) {
return true;
}
return false;
}
function isemail2(v) {
//이메일 검사
var regExp = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
if (regExp.test(v)) {
return true;
}
return false;
}
function ispassword(v) {
var r = /^(?=.*[a-zA-Z])(?=.*[!@#$%^&~*+=-])(?=.*[0-9]).{8,20}$/;
return r.test(v);
}
function getBytes(v, nocrtrim) {
nocrtrim = nocrtrim == undefined || nocrtrim == null ? false : nocrtrim;
if (v == null) {
return 0;
}
v = $.trim(v);
if (!nocrtrim) {
v = v.replace(/[\r\n]/gi, '').replace(/[\n]/gi, '');
}
var stringByteLength = 0;
stringByteLength = (function (s, b, i, c) {
for (b = i = 0; c = s.charCodeAt(i++); b += c >> 11 ? 2 : c >> 7 ? 2 : 1);
return b
})(v);
return stringByteLength;
}
function isRepeatedString(str) {
// 반복 문자열 검증
const len = str.length;
for (let i = 1; i < len; i++) {
if (len % i === 0) {
const pattern = str.slice(0, i).repeat(len / i);
if (pattern === str) {
return true;
}
}
}
return false;
}
function confirmtoggle(b, m, cb, cbcancel) {
b = b || false;
if (b) {
_confirmokcb = "";
_confirmokcbcancel = "";
_confirmokcb = cb || "confirmokpage()";
_confirmokcbcancel = cbcancel || "";
$("#confirmboxmsg").html(m);
setTimeout(function () {
bglayer(); $("#confirmbox").show();
}, 30);
}
else {
_bging = false;
bglayer(false); $("#confirmbox").hide();
if (_confirmokcbcancel != "") {
if (_confirmokcbcancel.substr(_confirmokcbcancel.length - 1, 1) != ';' &&
_confirmokcbcancel.substr(_confirmokcbcancel.length - 1, 1) != ')' &&
_confirmokcbcancel.indexOf('(') < 0 &&
_confirmokcbcancel.indexOf(')') < 0) {
_confirmokcbcancel += "()";
}
eval(_confirmokcbcancel);
}
}
}
var _confirmokcb;
var _confirmokcbcancel;
function confirmok() {
$("#confirmbox").hide();
if (_confirmokcb != "" &&
_confirmokcb.substr(_confirmokcb.length - 1, 1) != ';' &&
_confirmokcb.substr(_confirmokcb.length - 1, 1) != ')' &&
_confirmokcb.indexOf('(') < 0 &&
_confirmokcb.indexOf(')') < 0) {
_confirmokcb += "()";
}
eval(_confirmokcb);
}
window.ismobile = function () {
var check = false;
(function (a) { if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) check = true; })(navigator.userAgent || navigator.vendor || window.opera);
return check;
};
function fillzero(v, padleft, len) {
v = (v || "").toString();
var v2 = v;
if (v2.length < len) {
while (v2.length < len) {
v2 = padleft ? ('0' + v2) : (v2 + '0');
}
}
return v2;
}
function ismobilenumber(v) {
//모바일 검사
v = v.replace(/-/gi, '');
if (v.search(/[0-9]/g) < 0 || !/^[0-9]{10,11}$/.test(v)) {
return false;
}
return true;
}
function istelnumber(v) {
//일반전화 검사
return telfmt(v.replace(/-/gi, ''));
}
function getcheckv(name) {
var rtn = "";
$.each($("input[name='" + name + "']"), function (i, c) {
if ($(c).prop("checked")) {
rtn += "," + $(c).val();
}
});
return rtn == "" ? "" : rtn.substr(1);
}
function commaset(v) {
var fv = v.toString().replace(/,/gi, '');
var fv2 = "";
if (fv.indexOf('.') > -1) {
if (fv.split('.')[0].length > 3) {
for (var fvi = fv.split('.')[0].length - 1; fvi > -1; fvi--) {
fv2 = fv.split('.')[0].substr(fvi, 1) + (fv2 != "" && (fv2.replace(/,/gi, '').length % 3) < 1 ? "," : "") + fv2;
}
fv = fv2 + "." + fv.split('.')[1];
}
}
else if (fv.length > 3) {
for (var fvi = fv.length - 1; fvi > -1; fvi--) {
fv2 = fv.substr(fvi, 1) + (fv2 != "" && (fv2.replace(/,/gi, '').length % 3) < 1 ? "," : "") + fv2;
}
fv = fv2;
}
return fv;
}
function goremote() {
//var winl = (screen.width - 840) / 2;
//var wint = (screen.height - 410) / 2;
//var opt = 'height=410, width=840, top=' + wint + ', left=' + winl + ', scrollbars=no, location=no, noresizable';
window.open("http://939.co.kr/yicte", "_blank");
}
function checkall(c, cssclass) {
$("input[type=checkbox]." + cssclass).prop("checked", $(c).prop("checked"));
}
function strEnConvert(str) {
let rslt = str.replace(/&#/gi, "%26%23");
return rslt;
}