/* 에이빌더 전용 jquery 프로그램 */
// 에이빌더 게시판용
var cmt_modify_idx = '';
var cmt_reply_idx = '';
var as_interval = /*as_confirm = */null;
//if (typeof(designer_box_url) !== 'undefined') return; // 디자이너에서 실행되지 않도록 하는 회피용 샘풀
// This hotfix makes older versions of jQuery UI drag-and-drop work in IE9
(function($){var a=$.ui.mouse.prototype._mouseMove;$.ui.mouse.prototype._mouseMove=function(b){if($.browser.msie&&document.documentMode>=9){b.button=1};a.apply(this,[b]);}}(jQuery));
jQuery.fn.extend({ renameAttr: function(name, newName, removeData) { var val; return this.each(function() { val = jQuery.attr(this, name); jQuery.attr(this, newName, val); jQuery.removeAttr(this, name); }); } });
$(function() {
$('body').on('change', 'form', function() { submit_is_ing = 'N'; });
/*$(window).on('pageshow', function(e) {if (e.originalEvent.persisted) {window.location.reload();}}); // 뒤로가기(브라우저 캐시로 로딩)할 때 강제로 새로고침 시키는 코드*/
$.fn.unveil=function(a,b){function i(){var a=g.filter(function(){var a=$(this);if(!a.is(":hidden")){var b=c.scrollTop(),e=b+c.height(),f=a.offset().top,g=f+a.height();return g>=b-d&&f<=e+d}});h=a.trigger("unveil"),g=g.not(h)}var h,c=$(window),d=a||0,e=window.devicePixelRatio>1,f=e?"data-src-retina":"data-src",g=this;return this.one("unveil",function(){var a=this.getAttribute(f);a=a||this.getAttribute("data-src"),a&&(this.setAttribute("src",a),"function"==typeof b&&b.call(this))}),c.on("scroll.unveil resize.unveil lookup.unveil",i),i(),this};
$(".unveil img").unveil(200);
// 로딩중표시기 (viewer.inc.php 로 이동)
if ($('#loading_img').length <= 0) $('
').appendTo('body');
// 마우스 좌표 얻음
__mouse_xy = new Array();
$(this).bind('mousemove',function(e) {
__mouse_xy[0] = e.pageX;
__mouse_xy[1] = e.pageY;
__mouse_xy[2] = e.screenX;
__mouse_xy[3] = e.screenY;
});
// 날짜입력상자
now = new Date();
// 드래그객체
$('.draggable').draggable({ scroll: true });
// 버튼 커서모양 변경
$('body').on('mouseover', 'img[id*=_btn_],p[id*=_btn_],span[id*=_btn_],img[id*=-btn-],p[id*=-btn-],span[id*=-btn-]', function(e) { $(this).css('cursor', 'pointer'); });
// 링크주소 #; 제거/복원
$('body').on('click', 'a', function(e) {
if ($(this).attr('href') == '#;' || $(this).attr('href') == '#') $(this).attr('tmp', $(this).attr('href')).removeAttr('href').css('cursor', 'pointer');
if ($(this).hasClass('AB-btn-rec-chk')) {
var chk_idxs = [];
var form = $(this).parents('form');
$('input[name="list_select[]"]', form).each(function(i) { if ($(this).is(':checked')) chk_idxs.push($(this).val()); });
if (chk_idxs.length > 0) {
if ($(this).attr('data-wl') !== 'N') { // exec-func="evt,click,#xxxx" 로 클릭 시키는 경우 window.location 으로 해야 진행됨 (엑셀 다운로드 등)
window.location = $(this).attr('href') + '&chk=' + chk_idxs.join(',');
return false;
} else $(this).attr('href', $(this).attr('href') + '&chk=' + chk_idxs.join(','));
} else {
alert($(this).attr('data-msg'));
return false;
}
}
});
$('body').on('mouseout', 'a', function(e) { if ($(this).attr('href') == null && $(this).attr('tmp') != null) $(this).attr('href', $(this).attr('tmp')).removeAttr('tmp'); });
// 버튼클릭전에 메시지 띄우기
$('*[data-cf-msg]').each(function(i) {
var tn = $(this).prop('tagName');
var oc = $(this).attr('onclick');
if (oc === undefined || oc.indexOf('confirm(') < 0) {
var msg = $(this).attr('data-cf-msg');
if (msg != '') {
if (tn == 'BUTTON') $(this).attr('onclick', "if(!confirm('" + msg + "')) {return false;} else {" + oc + "}");
else if (tn == 'A') $(this).attr('onclick', "if(!confirm('" + msg + "')) {return false;} else {document.location.href='" + $(this).attr('href') + "'}");
else if (tn == 'INPUT') {
if ($(this).attr('type') === 'button') $(this).attr('onclick', "if(!confirm('" + msg + "')) {return false;} else {" + oc + "}");
else $(this).attr('onclick', "if(!confirm('" + msg + "')) {return false;} else { }");
}
}
}
});
// 개별 입력상자 값 검증 결과 메시지를 보여주는 함수
$.fn.real_time_verify_msg = function(vars) {
var oms;
var obj_this = $(this);
if (vars.result === true) vars.result = 'Y';
if (vars.msc === undefined) vars.msc = 'admin-help-in';
if (obj_this.attr('msg') !== undefined) vars.msg = obj_this.attr('msg');
oms_html = obj_this.attr('oms-html');
oms = obj_this.next('span.' + vars.msc);
if (oms.length === 0) {
oms = obj_this.next('span.realtime-msg.' + vars.cn);
if (oms.length === 0) {
obj_this.after('' + vars.msg + '');
oms = obj_this.next('span.realtime-msg.' + vars.cn);
}
} else {
if (oms_html === undefined && !oms.hasClass('realtime-msg')) obj_this.attr('oms-html', oms.html());
}
oms.removeClass('rtvm-Y').removeClass('rtvm-N');
if (obj_this.val() != '') {
if (vars.result !== 'Y') {
oms.html(vars.msg);
oms.addClass('rtvm-N');
} else {
oms.html('ok');
oms.addClass('rtvm-Y');
}
} else {
if (oms_html === undefined) oms.html('');
else oms.html(oms_html);
}
}
$('body').on('keyup', 'input[pattern]', function(e) {
if ($(this).attr('name') !== 'passwd_re') {
var msg = $(this).attr('msg');
if (msg === undefined) return false;
var patt = new RegExp($(this).attr('pattern'));
var result = patt.test($(this).val());
$(this).real_time_verify_msg({'msg':$(this).attr('msg'), 'result':result, 'cn':'join-key', 'msc':(_VM_ === 'p' ? 'admin-help-in' : 'admin-help-in')});
}
});
$('body').on('keyup', 'input[type="password"][name$="_re"]', function(e) {
var result = 'N';
var other_name = $(this).attr('name').substr(0, $(this).attr('name').length - 3);
var obj_other = $('input[type="password"][name=' + other_name + ']');
if ($(this).val() === obj_other.val()) result = 'Y';
$(this).real_time_verify_msg({'msg':'패스워드를 동일하게 입력하세요.', 'result':result, 'cn':'join-key', 'msc':(_VM_ === 'p' ? 'admin-help-in' : 'admin-help-in')});
});
$('body').on('keyup', 'input[name="chk_person"]', function() {
var obj_this = $(this);
var rel = obj_this.attr('rel');
if (rel === undefined) return false;
$.get(obj_this.attr('rel') + '?pcv=' + obj_this.val(), function(d) {
obj_this.real_time_verify_msg({'msg':'스팸방지코드를 정확히 입력하세요.', 'result':d, 'cn':'spam-key', 'msc':(_VM_ === 'p' ? 'admin-help-in' : 'admin-help-in')});
});
});
// 게시판 폼 설정에서 로딩개수를 선택하면 viewer.inc.php 에서 자동 실행함
// 로딩 개수는 게시물 노출수의 배수 여야 함
$.fn.evt_load_record = function(vars) {
//console.log(this);
var ing = 'N';
var conn = '?';
var obj_this = this;
var obj_idx = obj_this.attr('id') + '-evt-load';
var data_area = $(obj_this.attr('data-area')); // 데이터 영역 선택자 (viewer.inc.php 에서 설정됨)
data_area.after('
'); // 이벤트 발생 위치용 마크업, 데이터영역 바로 다음에 위치
var url_head = obj_this.attr('url');
if (url_head.indexOf('?') > -1) conn = '&';
var tpl = obj_this.attr('tpl'); // 로딩 개수 : 한번 로딩시 가져올 게시물 수
var ttg = parseInt(obj_this.attr('ttg')) - 1; // 로딩 회수
var more_btn = $('.' + obj_this.attr('id') + '-evt-load-btn'); // 더보기 버튼 찾기 (없으면 스크롤 이벤트 자동 등록)
var pla = $(obj_this.attr('pla')); // 페이지링크 영역 (모두 로딩 후 노출)
var debug = obj_this.attr('debug');
if (isNaN(ttg) || ttg == 0) {
more_btn.css('display', 'none');
return;
} else {
pla.css('display', 'none');
more_btn.css('display', '');
if (more_btn.length > 0) {
more_btn.on('click', function(e) { loading(); });
} else {
var controller = new ScrollMagic.Controller();
var scene = new ScrollMagic.Scene({triggerElement: '#' + obj_idx, duration:obj_this.attr('dur')}).addTo(controller).triggerHook('onEnter').on('enter', function(e) { loading(); });
if (debug === 'Y') scene.addIndicators() // add indicators (requires plugin)
}
}
var ttp = obj_this.attr('ttp');
if (ttp === undefined || ttp == '') ttp = 0;
var start_page = (parseInt(obj_this.attr('curp')) - 1) * parseInt(ttp) + 1; // ttp : ceil($form_config['tpa'] / $form_config['tpl'])
function loading(callback) {
if (ttg === 1) { pla.css('display', ''); more_btn.css('display', 'none'); } // 마지막 페이지 일 때
if (ttg === 0 || ing === 'Y') return false; // 로딩 회수 종료 또는 진행중인
ing = 'Y'; start_page++;
$('#loading_img').center();
$('#loading_img').css('display', '');
var url = url_head + conn + obj_this.attr('tpln') + '=' + tpl + '&' + obj_this.attr('pvn') + '=' + start_page + '&AJAX=Y&SCROLLLOADING=Y';
$.get(url, {}, function(data) {
var trs = $(data_area.selector, $(data)).html(); // 데이터 영역의 html 얻음
$('#loading_img').css('display', 'none');
data_area.append(trs); // 추가
if (obj_this.attr('qt') === 'R') data_area.cmt_markup();
ing = 'N'; ttg--;
if (debug === 'Y') { console.log(url); console.log(obj_this.attr('qt')); console.log(ttg); }
if (callback !== undefined) callback();
});
}
}
// ajax 링크 처리
// ajax_area : 불러온 내용을 넣을 영역(속성이 없으면 AB_contents로 지정됨, return_area : 페이지에서 불러올 영역(속성이 없으면 ajax_area 값으로 지정 됨)
$('body').on('click', 'a[ajax=Y]', function(e) {
var load_infos = [];
var href = $(this).attr('href');
if (href !== undefined) { // #; 인 경우 tmp 로 옮겨갔다가 복원됨 이때 href 는 제거 되므로 undefined 상태
var cfm = $(this).attr('data-acf-msg');
if (cfm !== undefined && !confirm(cfm)) return false; // 메시지 취소시 중지
if ($(this).hasClass('-hide')) return false; // 토글이 닫기시 중지
if ($(this).attr('data-fl') === 'N') { // 강제로딩이 아닐때 값이 있으면 중지
var wrap_aa = $('#' + $(this).attr('ajax_area'));
if (wrap_aa.length <= 0) wrap_aa = $('#---' + $(this).attr('ajax_area') + '---');
if (wrap_aa.length > 0 && wrap_aa.html() != '') return false;
}
var doc = eval($(this).attr('doc') === undefined ? 'window' : $(this).attr('doc'));
doc.$('#loading_img').center();
doc.$('#loading_img').css('display', '');
var load_first = "{\"load_url\":\"" + href + "\",\"ajax_area\":\"" + $(this).attr('ajax_area') + "\",\"return_area\":\"" + $(this).attr('return_area') + "\",\"anchor\":\"" + $(this).attr('anchor') + "\",\"dialog\":\"" + $(this).attr('dialog') + "\",\"as\":\"" + $(this).attr('as') + "\",\"mode\":\"" + $(this).attr('mode') + "\"}";
load_infos.push(jQuery.parseJSON(load_first));
var load_info = $(this).attr('load_info');
if (load_info !== undefined) $.each(jQuery.parseJSON(load_info), function(idx, str) { load_infos.push(str); });
$.load_urls(load_infos, doc, $(this));
return false;
}
});
// 줄바꿈 안되게 처리
$.each($('textarea.AB-no-enter'), function() { $(this).on('keypress', function(e) { if (event.which == 13) e.preventDefault(); }); });
// 롤오버버튼처리
$.fn.set_img_rlv = function(vars) {
$.each($('img[data-rlv=Y]'), function(key, val) {
var oo = 'N';
var san = 'src';
if ($(this).attr('data-src') !== undefined) san = 'data-src';
var o_src = $(this).attr(san);
if ($(this).attr('data-rlv-src') === undefined) {
var exp_o_src = o_src.split('.');
var f_name = exp_o_src[exp_o_src.length-2];
if (f_name.substr(f_name.lastIndexOf('_')) !== '_over') {
exp_o_src[exp_o_src.length-2] = f_name + '_over'
} else {
exp_o_src[exp_o_src.length-2] = f_name.substr(0, f_name.length-5)
oo = 'Y';
}
var r_src = exp_o_src.join('.');
} else {
var r_src = $(this).attr('data-rlv-src');
}
if (oo === 'N' && $(this).attr('data-rlv-d') === 'O') $(this).attr('src', r_src);
if ($(this).attr('data-rlv-d') !== 'O' || $(this).attr('data-rlv-r') === 'Y') {
if ($(this).attr('data-rlv-d') === 'O' && $(this).attr('data-rlv-r') !== 'Y') var T_src = r_src, r_src = o_src, o_src = T_src;
$(this).off('mouseover mouseout');
$(this).on('mouseover', function(e) { if (!$(this).hasClass('except')) $(this).attr('src', r_src); });
$(this).on('mouseout', function(e) { if (!$(this).hasClass('except')) $(this).attr('src', o_src); });
}
});
}
// 숫자용 입력상자 처리
$('body').on('change blur', 'input[type=text].-number', function(e) { $(this).set_number_box(e); });
$.fn.set_number_box = function(e, vars) {
var nn = this.attr('nn');
if (nn !== undefined && this.val() == '') this.val(nn);
var min = this.attr('min');
if (min === undefined) min = 1;
var val = ck_number(this[0], parseInt(min), parseInt(this.attr('max')), this.attr('msg'), 'R');
if (val !== undefined) {
this.val(val);
} else {
val = nn;
if (val === undefined) val = min;
if (val === undefined) val = 1;
this.val(val).change();
}
//if (isNaN(parseInt(this.val()))) this.val(min);
}
// 여러 객체중 최대 높이로 높이를 통일 시킴
$.fn.set_height_max = function(vars) {
var heights = new Array;
if (vars === undefined) {
var vars = {};
vars.ah = 0;
}
this.each(function(i) { heights.push($(this).height()); });
this.height(heights.reduce(function(pv, cr) { return pv > cr ? pv:cr; }) + vars.ah);
}
// 커버를 씌워 클릭할 수 없도록 함
$.fn.set_cover = function(vars) {
var obj_this = this;
obj_this.each(function(i) {
if ($('.click-disable-cover', $(this)).length <= 0) {
var msg = '';
var offset = $(this).offset();
obj_this.css('position', 'relative');
if ($(this).attr('msg') !== undefined) msg = ' onclick=\"alert(\'' + $(this).attr('msg') + '\')\"';
$(this).append('');
}
});
}
// 체크상자 클릭시 같은 범위(div)내 다른 입력상자 및 태그를 en/disable 시킴
// 사용예 : $('.AB-dis-tog').enable_toggle({wt:'div',wteq:0,dc:'AB-disabled',box:'input,select,textarea',tag:'div,span'});
$.fn.enable_toggle = function(vars) {
var obj_this = this;
obj_this.on('click', function(e) {
var obj_parent = $(this).parents(vars.wt).eq(vars.wteq);
var obj_targs_tag = $(vars.tag, obj_parent);
var obj_targs_box = $(vars.box, obj_parent);
if ($(this).is(':checked') === true) {
$(this).removeAttr('dsbl');
obj_parent.removeAttr('dsbl');
obj_targs_tag.removeAttr('dsbl');
obj_targs_box.prop('disabled', false);
obj_targs_box.removeClass(vars.dc);
} else {
$(this).attr('dsbl', 'dsbl');
obj_parent.attr('dsbl', 'dsbl');
obj_targs_tag.attr('dsbl', 'dsbl');
obj_targs_box.prop('disabled', true);
obj_targs_box.addClass(vars.dc);
}
obj_this.prop('disabled', false);
});
}
// 여러 입력상자(그룹)중 하나만 활성화 시키는 함수
// 하나의 입력상자를 정하고 id="AB-sit-box" grp-box="["입력상자1-1이름,입력상자1-2이름","입력상자2이름",...]" dis-cls="AB-disabled" 을 마크업(따옴표 안에 콤마로 구분된 입력상자들은 하나의 그룹을 의미) 하고
// disabled 된 입력상자들이 아예 보이지 않도록 하기 위해서는 감싸는 div 또는 li 등에 obe-none="AB-sit-box-test1-1,test1-2" 와 같은 형식으로 마크업
// $('#AB-sit-box').one_box_enable(); 를 실행
$.fn.one_box_enable = function(vars) {
var obj_this = this;
var dis_cls = obj_this.attr('dis-cls');
if (dis_cls === undefined) dis_cls = 'AB-disabled';
var grp_boxs = eval(obj_this.attr('grp-box'));
var omi = 'obe-mark-' + obj_this.attr('id');
var form = obj_this.parents('form');
var obj_fmf = form.children('input[name=force_modify_fld]');
if (obj_fmf.length <= 0) { // 존재하지 않는 필수입력상자 체크 패스 준비
form.prepend('');
obj_fmf = form.children('input[name=force_modify_fld]');
}
set_obe();
form.on('focusout change', '*[' + omi + '=Y]', function(e) { set_obe(); });
function set_obe() {
var grp_sv, all_sv = '';
var force_modify_fld = new Array;
for (var i=0, cnt_i=grp_boxs.length; i 0) obj_box_multi.attr(omi, 'Y');
}
force_modify_fld.push(exp_grp_box[j]);
obj_box.attr(omi, 'Y');
}
if (grp_sv != '' && grp_sv !== undefined) all_sv = exp_grp_box;
}
var onn = obj_this.attr('id') + '-';
if (all_sv != '') {
$('*[' + omi + '=Y]', form).addClass(dis_cls);
$('*[' + omi + '=Y]', form).attr('disabled', 'disabled');
$('*[obe-none*="' + onn + '"]', form).css('display', 'none');
$('*[obe-none*="' + onn + all_sv.join(',') + '"]', form).css('display', '');
for (var i=0, cnt_i=all_sv.length; i 0) {
obj_box_multi.removeClass(dis_cls);
obj_box_multi.removeAttr('disabled');
}
}
}
} else {
$('*[' + omi + '=Y]', form).removeAttr('disabled');
$('*[' + omi + '=Y]', form).removeClass(dis_cls);
$('*[obe-none*="' + onn + '"]', form).css('display', '');
}
force_modify_fld = array_unique(force_modify_fld);
obj_fmf.val(force_modify_fld.join(','));
form.attr('chk_exist_box', 'N');
}
}
// 클릭시 지정한 url qs 변경하기
// 향후 라디오나 체크상자를 사용할 경우가 생기면 .val() 활용
$.fn.set_query_string = function(vars) {
var to = $(vars.targ);
var tu = parse_url(to.attr('href'));
var tu_qs_arr = split_to_array(tu['query']);
this.each(function(idx) {
$(this).on('click', function(e) {
var qs = $(this).attr('value');
var qs_arr = split_to_array(qs);
//console.log(qs_arr);
Object.keys(qs_arr).forEach(function(key) { tu_qs_arr[key] = qs_arr[key]; });
var nq = $.param(tu_qs_arr);
if (nq != '') nq = '?' + nq;
var nh = tu['path'] + nq;
to.attr('href', nh);
});
});
}
// 특정 이벤트 발생시 다른 입력상자에 값 넣기
$('body').on('click focusout change', '.AB-set-value', function(e) {
var exec_pass = $(this).get_evt_pass(e);
if (exec_pass === 'N') {
var obj_this = $(this);
var form = $(this).parents('form');
if (form.length <= 0) form = $('body');
var data_mdf = jQuery.parseJSON($(this).attr('data-mdf'));
$.each(data_mdf, function(key, val) {
var mdf_box = $('*[name=' + key + ']', form);
if (e.type === 'change' && obj_this.prop('checked') || e.type === 'focusout' && obj_this.val() != '' || e.type === 'click') mdf_box.val(val);
else mdf_box.val(mdf_box.prop('defaultValue'));
});
}
});
// 특정 이벤트 발생시 마크업된 함수를 실행
// 함수 실행 전 마크업 된 값을 지정하는 등의 처리를 선행 함
$('body').on('click focusout change keypress', '*[exec-func]', function(e) {
if (e.type === 'keypress' && e.which !== 13) return;
var exec_pass = $(this).get_evt_pass(e);
if (exec_pass === 'N') {
//console.log(e);
var form = $(this).parents('form');
var data_mdf = $(this).attr('data-mdf');
if (data_mdf !== undefined) {
var modify_flds = jQuery.parseJSON(data_mdf);
$.each(modify_flds, function(key, val) { // 수정할 값 처리 ==> 태그에 값을 넣을 때 .val() 함수 vs .append() + value 속성 사용에 차이가 있음을 주의 (아래 hidden 추가 참고)
if (typeof(val) !== 'string') val = JSON.stringify(val);
if (form.find('input[name=' + key + ']').length > 0) form.find('input[name=' + key + ']').val(val);
else if (form.find('select[name=' + key + ']').length > 0) form.find('select[name=' + key + ']').val(val);
else if (form.find('textarea[name=' + key + ']').length > 0) form.find('textarea[name=' + key + ']').val(val);
else form.append(''); // 입력상자 없으면 hidden 으로 생성
});
}
if ($(this).attr('chk-me') === 'Y') { // 본인 레코드를 체크 하는 옵션
$('input[name="list_select[]"]', form).prop('checked', false);
$(this).parents('tr:has(input[name="list_select[]"]),ul:has(input[name="list_select[]"])').find('input[name="list_select[]"]').prop('checked', true);
}
var exec_func = $(this).attr('exec-func');
if (exec_func.substring(0, 4) === 'evt,') {
var exp_ef = exec_func.split(',');
$(exp_ef[2]).trigger(exp_ef[1]);
} else {
if (exec_func === 'submit') exec_func = form.attr('submit-func').replace(/\([^\)]+\)/ig, '(this, \'text\')');
if (exec_func.substring(0, 7) !== 'return ') eval(exec_func);
else if (eval(exec_func.substring(7)) === false) return false;
}
if (e.type === 'keypress' && e.which === 13) e.preventDefault(); // 엔터 이벤트 실행 후 종료
}
});
$.fn.get_evt_pass = function(e) {
var exec_pass = 'N';
if (e.type === 'click' && !$(this).is('a,button,input[type=submit],input[type=image],input[type=button],button')) exec_pass = 'Y'; // 링크나 버튼이 아니면 click 무시
if ((e.type === 'focusout' || (e.type === 'keypress' && $(this).is('input[type=text]'))) && !$(this).is('input[type=text],textarea') && !$(this).hasClass('AB_datepicker')) exec_pass = 'Y'; // focusout, keypress 무시
if (e.type === 'change' && !$(this).is('select,input[type=radio],input[type=checkbox],input[type=text][exec-func]/*이 셀렉터를 빼면 스캠 과목에 선수추가 안됨,이벤트중복실행이 발생되면 다른 방법찾기*/') && !$(this).hasClass('AB_datepicker')) exec_pass = 'Y'; // 선택상자, 라디오, 체크상자 아닌 것은 change 무시
if (e.type === 'focusout' && $(this).val() == $(this).prop('defaultValue')) exec_pass = 'Y'; // 값이 없는 입력상자는 이벤트 무시
return exec_pass;
}
// 풀다운 메뉴 마크업 항목 클릭 시 실행
$('body').on('click', 'p[id^=ABP-btn-fdmenu-],span[id^=ABP-btn-fdmenu-],img[id^=ABP-btn-fdmenu-]', function(e) {
var fd_btn_id = $(this).attr('id');
var fd_btn_exp = fd_btn_id.split('-');
var fd_btn_idx = $(this).attr('id').replace('ABP-btn-fdmenu-', '');
var link_tail = '&fd_btn_idx=' + fd_btn_idx;
var link = $(this).attr('link');
if (!link) link = './insiter.php?design_file=member_fulldown.php' + link_tail;
else link = link + link_tail;
var fd_menu_id = 'ABP-fdmenu-' + fd_btn_idx;
var obj_fd_menu = document.getElementById(fd_menu_id);
$('div[id^=ABP-fdmenu-]').css('display', 'none');
if (!obj_fd_menu) {
$.get(link, {}, function(data) {
if (data == '') return false;
var alert_msg = get_alert_msg_in_result(data);
if (alert_msg == 'null') {
$('#' + fd_btn_id).after(data);
$('#' + fd_menu_id).position({my: "left+30 center",of: "#" + fd_btn_id});
}
else after_submit_cancel(alert_msg);
});
} else {
if (obj_fd_menu.style.display == '') obj_fd_menu.style.display = 'none';
else {
obj_fd_menu.style.display = '';
$('#' + fd_menu_id).position({my: "left+30 center",of: "#" + fd_btn_id});
}
}
return false;
});
// 풀다운 메뉴 닫기
$('body').on('mouseleave', 'div.ABA-full-down-menu', function(e) { $(this).css('display', 'none'); });
// 클릭한 div 를 감추고 그와 매핑되는 div 를 보여줌
// 사용처 : 상태 변경을 위해 출력값을 즉시수정 버튼들로 변경 할 때 등
// load_url 속성이 있는 경우 해당 url 을 hidden 영역에 load() 함
$('body').on('click', 'div[id^=AB_dbclick_view_]', function(e) {
var dbclick_idx = $(this).attr('id').substr(Number($(this).attr('id').lastIndexOf('_')) + 1);
$(this).css('display', 'none');
var hidden_area = $('div[id=AB_dbclick_hidden_' + dbclick_idx + ']');
hidden_area.html('').css('display','');
var load_url = $(this).attr('load_url');
if (load_url != undefined) {
var q_str = r_url = '';
var bd = $(this).attr('bd');
var form = $(this).parents('form');
if (bd === undefined || bd == '') bd = form.children('input[name=board]').val();
if (load_url.indexOf('q_str') < 0) {
q_str = urlencode(form.children('input[name=Q_STRING]').val());
if (q_str === 'undefined') q_str = '';
}
if (load_url.indexOf('r_url') < 0) {
r_url = urlencode(form.children('input[name=return_url]').val());
if (r_url === 'undefined') r_url = '';
}
if (form.length > 0) load_url += '&fn=' + form.attr('id') + '&bd=' + bd + '&m_val=' + urlencode($(this).attr('m_val')) + '&q_str=' + q_str + '&r_url=' + r_url;
hidden_area.load(ajax_url_filter(load_url), function(d) { });
}
});
// 더블클릭으로 두 개의 div 를 번갈아 나오도록 함
// 사용법 : $('.dblclick-wrap').dblclick_chg({evt:'dblclick',mode:'MC'});
// 두개의 div 를 함수를 실행할 div로 감싸고 안쪽의 두 div에 dblclick-inner 클래스를 마크업 한다.
// 출석할 명단과 체크상자를 두고 체크하면 출석으로 체크된 후 더블클릭하면 같은 영역에 보이지 않던 입력상자가 나오도록 하는 기능 등에 활용
// mode : MC(보이지 않는 입력상자가 폼 밖으로 빠져나감, 같은 이름의 입력상자가 함께 존재해도 됨), TC(같은 공간에 번갈아가며 보이도록 함)
// MC 인 경우 두개중 하나의 div에 style display:none을 마크업하고 TC인 경우 class AB-hidden을 마크업 한다.
$.fn.dblclick_chg = function(vars) {
var obj_this = this;
$('.dblclick-inner').off('dblclick');
if (vars.mode === 'TC') { // 폼안에 display 속성만 번걸아 바뀜, inner에 class="AB-hidden" 마크업
obj_this.on(vars.evt, '.dblclick-inner', function(e) {
var obj_parent = $(this).parents(obj_this.selector);
$('.dblclick-inner', obj_parent).toggleClass('AB-hidden');
});
} else { // 가려질 영역을 폼 밖으로 이동했다가 복원 inner에 style="display:none;" 마크업
obj_this.each(function(idx) {
var oih = $('.dblclick-inner:hidden', $(this));
var oih_id = $(this).attr('id') + '-hid';
$('#' + oih_id).remove();
oih.attr('id', oih_id);
$('body').append(oih);
});
obj_this.on(vars.evt, '.dblclick-inner', function(e) {
$(this).css('display', 'none');
var obj_parent = $(this).parents(obj_this.selector);
var idx_inner = obj_parent.attr('id') + '-hid';
obj_parent.append($('#' + idx_inner));
$('#' + idx_inner).css('display', '').removeAttr('id');
$(this).attr('id', idx_inner);
$('body').append($(this));
});
}
}
// 로딩중 표시기 노출
$('body').on('click', '.loading-img', function(e) {
$('#loading_img').css('display', '');
$('#loading_img').center();
});
// 정렬 버튼 클릭시 실행
$('body').on('click', 'a[id^=AB_sort_]', function(e) {
var doc = eval($(this).attr('doc') === undefined ? 'window' : $(this).attr('doc'));
doc.$('#loading_img').css('display', '');
doc.$('#loading_img').css('top', __mouse_xy[1]);
var sort_link = $(this).attr('href');
//document.location.href = sort_link;
//return;
//var doc = $(this).attr('doc');
var dialog = $(this).attr('dialog');
var refresh = $(this).attr('refresh');
var ajax_area = $(this).attr('ajax_area');
var return_area = $(this).attr('return_area');
var anchor = $(this).attr('anchor');
var callback = $(this).attr('callback');
var load_info = $(this).attr('load_info');
var move_url = $(this).attr('move_url');
$.get(sort_link, {}, function(data) {
console.log(data);
var alert_msg = get_alert_msg_in_result(data); // 경고 메시지 있으면 출력
if (alert_msg != 'null') after_submit_cancel(alert_msg);
if (data.indexOf('history.go(') < 0) { // 뒤로 이동 인 경우 load 안함
if (move_url === undefined) move_url = get_move_url_in_result(data); // 이동할 url
//console.log(move_url);
after_submit_load($(e.target), move_url, doc, ajax_area, return_area, anchor, load_info, dialog, refresh);
}
});
return false;
});
// 코멘트 상자 노출용 토글 버튼
$('body').on('click', 'p[id*=btn]', function(e) {
var cmt_box_toggle_idx = $(this).attr('id').substr(Number($(this).attr('id').lastIndexOf('_')) + 1);
$('#AB_board_comment_set_' + cmt_box_toggle_idx).toggle();
});
// 코멘트 저장(_COMMENT_), 수정저장(_MODIFY_), 답글저장(_REPLY_) 버튼 클릭시 실행
$('body').on('click', '.AB_cmt_btn_submit', function(e) {
var form = $(this).parents('form');
var submit_action = form.attr('action');
var submit_function = form.attr('submit-func');
var T_submit_function = submit_function.substring(7);
if (submit_action.indexOf('modify.php') < 0 || submit_action.indexOf('reply.php') < 0) {
var cmt_list = $(this).parents('div.-CL');
_afo_['cmt_proc_num'] = cmt_list.attr('idx');
var cmt_list_wrap = $(this).parents('div.ABA-cmt-list-wrap');
_afo_['cmt_proc_num_parent'] = cmt_list_wrap.attr('ab_p_article_num');
if (submit_action.indexOf('modify.php') < 0) cmt_modify_idx = _afo_['cmt_proc_num'];
else if (submit_action.indexOf('reply.php') < 0) cmt_reply_idx = _afo_['cmt_proc_num'];
}
form.removeAttr('action', 'submit-func');
if (eval(T_submit_function)) {
$('#loading_img').css('display', '');
$('#loading_img').css('top', __mouse_xy[1]);
$.post(submit_action, form.serialize(), function(data) {
console.log(data);
var alert_msg = get_alert_msg_in_result(data); // 경고 메시지 있으면 출력
if (alert_msg != 'null') after_submit_cancel(alert_msg);
if (data.indexOf('history.go(') < 0) { // 뒤로 이동 인 경우 load 안함
_afo_['cmt_proc_num'] = get_get_var('process_num', get_move_url_in_result(data)); // 처리된 댓글 번호 파악하여 url 에 추가 (댓글 쓰기인 경우 저장 후 번호 생성 되므로 이곳에서 세팅 됨)
var move_url = set_url_tail(get_ajax_reload_url('Y'), 'cmt_proc_num=' + _afo_['cmt_proc_num']); // 이동할 url (무조건 현재 페이지)
if (move_url != 'null') after_submit_load(form, move_url, eval(form.attr('doc') === undefined ? 'window' : form.attr('doc')), form.attr('ajax_area'), form.attr('return_area'), form.attr('anchor'), form.attr('callback'), form.attr('load_info'), form.attr('dialog'), form.attr('refresh'));
}
submit_is_ing = 'N';
});
}
form.attr('submit-func', submit_function);
form.attr('action', submit_action);
return false;
});
// 코멘트 수정 버튼 클릭시
$('body').on('click', 'a[id^=AB_cmt_btn_modify_]', function(e) {
var chk_pw = $(this).attr('AB_chk_pw');
if (cmt_modify_idx == '' || chk_pw == 'Y') {
cmt_modify_idx = $(this).attr('id').substr(Number($(this).attr('id').lastIndexOf('_')) + 1);
cmt_comment_1 = $('#AB_cmt_comment_1_' + cmt_modify_idx).html();
var cmt_list_wrap = $(this).parents('div.ABA-cmt-list-wrap');
var targ_url = 'insiter.php?design_file=' + cmt_list_wrap.attr('ab_page_m') + '&article_num=' + cmt_modify_idx + '&parent_board_name=' + cmt_list_wrap.attr('ab_p_board') + '&board_name=' + cmt_list_wrap.attr('ab_board') + '&AJAX=Y';
if (chk_pw == 'Y') { // 패스워드확인 버튼인 경우
SYSTEM_on_passwd_input(targ_url, '', '#AB_cmt_comment_1_' + cmt_modify_idx, {reload_url:''}); // 패스워드 창으로 분기
} else {
$('#AB_cmt_comment_1_' + cmt_modify_idx).load(set_url_tail(targ_url, 'AJAX=Y'), function(data) {
var abcibc = $('#AB_cmt_input_box_comment_1_' + cmt_modify_idx);
if (abcibc.length > 0) {
var cnt_line_array = abcibc.val().split('\n');
var cnt_line = cnt_line_array.length;
if (cnt_line < 3) cnt_line = 52;
else cnt_line = cnt_line * 17;
abcibc.css('width', '100%').css('height', cnt_line).autosize();
}
});
}
} else {
$('#AB_cmt_comment_1_' + cmt_modify_idx).html(cmt_comment_1);
cmt_modify_idx = '';
}
});
// 코멘트 답글 버튼 클릭시 노출되는 코멘트 답글쓰기 폼
$('body').on('click', 'a[id^=AB_cmt_btn_reply_]', function(e) {
if (cmt_modify_idx != '') { // 열려 있는 수정입력 상자 제거
$('#AB_cmt_comment_1_' + cmt_modify_idx).html(cmt_comment_1);
cmt_modify_idx = '';
}
if ($(this).attr('onclick') == null) { // 로그인 메시지 등 마크업에 이벤트 없을 때만 분기
var cmt_list_wrap = $(this).parents('div.ABA-cmt-list-wrap');
var abpan = cmt_list_wrap.attr('ab_p_article_num');
var vn_cmt_reply = 'cmt_reply' + abpan;
var vn_cmt_reply_btn = 'cmt_reply_btn' + abpan;
cmt_reply_idx = $(this).attr('id').substr(Number($(this).attr('id').lastIndexOf('_')) + 1);
if (!in_array(cmt_reply_idx, _afo_[vn_cmt_reply])) {
$.get('insiter.php?design_file=' + cmt_list_wrap.attr('ab_page_r') + '&parent_article_num=' + abpan + '&article_num=' + cmt_reply_idx + '&parent_board_name=' + cmt_list_wrap.attr('ab_p_board') + '&board_name=' + cmt_list_wrap.attr('ab_board') + '&fid=' + $(this).attr('fid') + '&thread=' + $(this).attr('thread') + '&AJAX=Y', {}, function(data) {
$('#AB_cmt_list_' + cmt_reply_idx).after(data);
$('#AB_cmt_reply_form_' + cmt_reply_idx).addClass($('a[id^=AB_cmt_btn_reply_' + cmt_reply_idx + ']').attr('AB_thread')); // 답글 아이콘 표시
var abcibc = $('#AB_cmt_input_box_comment_1_' + cmt_modify_idx);
if (abcibc.length > 0) abcibc.val('').autosize(); // 입력상자 기본값 제거
if (_afo_['cmt_proc_num'] != '') $('#AB_cmt_list_' + _afo_['cmt_proc_num']).addClass('current');
if (_afo_[vn_cmt_reply_btn].length > 0) $(_afo_[vn_cmt_reply_btn].shift()).click();
});
} else {
$('#AB_cmt_list_' + cmt_reply_idx).next('.cmt-reply-wrap').remove();
_afo_[vn_cmt_reply].splice(_afo_[vn_cmt_reply].indexOf(cmt_reply_idx), 1);
}
}
});
// 코멘트 삭제 버튼 클릭시
$('body').on('click', 'a[id^=AB_cmt_btn_delete_]', function(e) {
var T_pu_host = location.href.replace('http://', '');
T_pu_host = T_pu_host.replace('https://', '');
T_pu_host = T_pu_host.replace('www.', '');
pu_host = T_pu_host.split('/');
var cmt_list_wrap = $(this).parents('div.ABA-cmt-list-wrap');
var board_name = cmt_list_wrap.attr('ab_board');
var chk_pw = $(this).attr('AB_chk_pw');
var targ_url = '/board/article_delete.php';
var reload_url = get_ajax_reload_url('Y');
var cmt_delete_idx = $(this).attr('id').substr(Number($(this).attr('id').lastIndexOf('_')) + 1);
if (chk_pw == 'Y') {
SYSTEM_on_passwd_input(targ_url, '', '#AB_contents', {article_num:cmt_delete_idx, board:board_name, flag:pu_host[0], reload_url:reload_url});
} else {
if (confirm('삭제하시겠습니까?')) {
$('#loading_img').css('display', '');
$('#loading_img').css('top', __mouse_xy[1]);
_afo_['cmt_proc_num_parent'] = cmt_list_wrap.attr('ab_p_article_num');
$.post(targ_url, {article_num:cmt_delete_idx, board:board_name, flag:pu_host[0]}, function(data) {
//console.log(data);
var alert_msg = get_alert_msg_in_result(data);
//console.log($(e.target));
if (alert_msg == 'null') after_submit_load($(e.target), reload_url, eval($(this).attr('doc') === undefined ? 'window' : $(this).attr('doc')), $(this).attr('ajax_area'), $(this).attr('return_area'), $(this).attr('anchor'), $(this).attr('callback'), $(this).attr('load_info'), $(this).attr('dialog'), $(this).attr('refresh'));
else after_submit_cancel(alert_msg);
});
}
}
});
// 코멘트 목록 마크업 처리 함수
$.fn.cmt_markup = function(callback) {
$('.-CL:not(".complete")', this).each(function(index) {
var board_name = $(this).parents('div.ABA-cmt-list-wrap').attr('ab_board');
$(this).attr('id', 'AB_cmt_list_' + $(this).attr('idx'));
$('.AB-rep-id', $(this)).attr('id', 'ABP-btn-fdmenu-board-' + board_name + '-' + $(this).attr('idx'));
$('a.-R', $(this)).attr({'id':'AB_cmt_btn_reply_'+$(this).attr('idx')});
$('a.-M', $(this)).attr({'id':'AB_cmt_btn_modify_'+$(this).attr('idx')});
$('a.-D', $(this)).attr({'id':'AB_cmt_btn_delete_'+$(this).attr('idx')});
var record_idx = $(this).attr('idx');
var vp = $('a.-VP', $(this));
var vm = $('a.-VM', $(this));
if (user_level === '99') {
if ($('span', vp).html() == '') {
vp.remove();
} else {
vp.addClass('AB-rep-up');
$(this).on('click', 'a.-VP', function(e) { alert(lang_core[1]) });
}
if ($('span', vm).html() == '') {
vm.remove();
} else {
vm.addClass('AB-rep-down');
$(this).on('click', 'a.-VM', function(e) { alert(lang_core[1]) });
}
} else {
if ($('span', vp).html() == '') {
vp.remove();
} else {
vp.addClass('AB-rep-up');
$(this).on('click', 'a.-VP', function(e) { return SYSTEM_vote_article(e.target, document.realtime_frm, board_name, record_idx, '', 'v_dup_check=Y,v_point=+1', '%PSELF%', $(this).attr('m-aft'), '', $(this).attr('m-alt')); });
}
if ($('span', vm).html() == '') {
vm.remove();
} else {
vm.addClass('AB-rep-down');
$(this).on('click', 'a.-VM', function(e) { return SYSTEM_vote_article(e.target, document.realtime_frm, board_name, record_idx, '', 'v_dup_check=Y,v_point=-1', '%PSELF%', $(this).attr('m-aft'), '', $(this).attr('m-alt')); });
}
}
$('a.-D', $(this)).attr({'id':'AB_cmt_btn_delete_'+$(this).attr('idx')});
$('.AB-cmt', $(this)).attr('id', 'AB_cmt_comment_1_'+$(this).attr('idx'));
$(this).addClass('complete');
});
if (callback !== undefined) callback();
}
$('body').on('click', '.AB_btn_edit_program', function(e) {
var href = $(this).attr('href');
if ($(this).attr('href-s') === undefined) $(this).attr('href-s', href)
var href_s = $(this).attr('href-s');
var dir_name = $(this).attr('dir-name');
var file_name = $('#' + $(this).attr('file-box-id')).val();
if (file_name === undefined || file_name == '') {
alert(lang_core[2]);
e.stopImmediatePropagation();
return false;
}
$(this).attr('href', href_s + '&file_name=' + urlencode(dir_name + file_name));
});
// ajax dialog
// ..
$('body').on('click', '*[class*=AB_btn_dialog_]', function(e) {
var load_url, method, rt;
var doc = eval($(this).attr('doc') === undefined ? 'window' : $(this).attr('doc'));
var size = $(this).attr('rel').split(',');
if ($(this).attr('idx') !== undefined) {
dialog_idx = $(this).attr('idx');
} else {
var dialog_idx = 'global_dialog';
var my_dialog = $('div[id^="' + dialog_idx + '"]', $(this).parents('div'));
if (my_dialog.length > 0) {
var my_idx = my_dialog.attr('id').substring(14);
if (my_idx == '') my_idx = '0';
var new_idx = parseInt(my_idx) + 1;
dialog_idx = dialog_idx + '_' + new_idx.toString();
}
}
var obj_global_dialog = doc.$('#' + dialog_idx);
if (obj_global_dialog.length <= 0) {
doc.$('body').append('');
obj_global_dialog = doc.$('#' + dialog_idx);
} else {
if (obj_global_dialog.css('display') != 'none') obj_global_dialog.dialog('close');
}
obj_global_dialog.addClass('sitecook-dialog');
if ($(this).attr('u-href') !== undefined) {
load_url = $(this).attr('u-href');
rt = 'X';
}
if (load_url === undefined) load_url = $(this).attr('href');
if (load_url !== undefined) {
var title, url_tail = '', is_modal = 'true', refresh_force = 'Y', ifrm = 'N', rm = 'N';
if (size[2] !== undefined) title = size[2];
else title = $(this).attr('title');
if (size[3] !== undefined && size[3] != '') url_tail = size[3];
if (size[4] !== undefined) is_modal = eval(size[4]);
if (size[5] !== undefined) refresh_force = size[5];
if (size[6] !== undefined) ifrm = size[6];
if (size[8] !== undefined) rm = size[8];
if (refresh_force !== 'N') obj_global_dialog.html('');
method = $(this).attr('method');
if (method === undefined) method = 'get';
ifrm !== 'Y' ? obj_global_dialog.removeClass('ifrm') : obj_global_dialog.addClass('ifrm');
load_url = set_url_tail(load_url + url_tail, (ifrm !== 'Y' ? 'DLG=Y' : 'IFRM=Y&DLG=Y'), 'Y', ifrm, 'X');
var sch_kw_info = $(this).attr('data-schkw');
if (sch_kw_info !== undefined) {
var pfrm = $(this).parents('form');
var exp_ski = sch_kw_info.split(',');
if (exp_ski[2] !== undefined) pfrm = $('#' + exp_ski[2]);
load_url = set_url_tail(load_url, exp_ski[0] + '=' + urlencode($('*[name="' + exp_ski[1] + '"]', pfrm).val()), 'N', '', 'X', '');
}
//console.log(load_url);
//console.log($(this).attr('rel'));
if (method === 'get') {
//console.log(load_url);
if (ifrm === 'Y') {
obj_global_dialog.html('');
obj_global_dialog.append('');
} else {
obj_global_dialog.load(load_url);
}
} else {
var pass;
var form_jq = $('#' + $(this).attr('frm'));
var chk_box = $('*[name="' + $(this).attr('chk-name') + '"]');
if (chk_box.prop('tagName') === 'INPUT') {
if ((chk_box.attr('type') == 'checkbox' || chk_box.attr('type') == 'radio') && submit_radio_check(form_jq[0], $(this).attr('chk-name'))) pass = 'Y';
else pass = 'N';
}
if (pass === undefined) {
if (chk_box.val() != '') pass = 'Y';
else pass = 'N';
}
if (pass === 'N') {
alert($(this).attr('err-msg'));
return false;
}
var pv = $(this).attr('pv');
if (pv !== undefined) {
var exp_pv = pv.split(',');
$('input,select,textarea', form_jq).each(function(idx) {
if (!in_array($(this).attr('name'), exp_pv)) $(this).addClass('real-time-disabled').attr('disabled', 'disabled');
});
}
var post_var = form_jq.serialize();
$.post(load_url, post_var, function(data) {
obj_global_dialog.html(data);
if (pv !== undefined) $('.real-time-disabled').removeAttr('disabled').removeClass('real-time-disabled');
});
}
var pos = $(this).attr('data-pos');
if (pos === undefined) pos = '{my:"center",at:"center",of:window}';
pos = eval('(' + pos + ')');
obj_global_dialog.dialog({
modal: is_modal,
title: title,
width: size[0],
height: size[1],
position:pos,
focus: function(e, ui) {/**/},
open: function(e, ui) {$('html').css('overflow-y', 'hidden');},
close: function(e, ui) {$('html').css('overflow-y', 'scroll');if (rm === 'Y') $(this).dialog("destroy").remove();}
}, function() {
var dialog_link = $('*[dialog-link=Y]', $(this));
dialog_link.attr('href', dialog_link.attr('onclick')).removeAttr('onclick');
});
$(this).attr('clicked', 'Y');
} else {
alert(lang_core[3]);
}
if (rt !== 'X') return false;
/*e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
return false;*/
});
/*//
$.fn.load_method = function(v) {
if (v.method === 'get') {
this.load(v.load_url);
} else {
var form_jq = v.obj_btn.parents('form');
//console.log(form_jq);
$.post(v.load_url, v.form.serialize(), function(data) { this.html(data);});
}
}*/
/*//