Files
cm-ggotmaeule-backend/assets/js/common.js

385 lines
14 KiB
JavaScript

if (typeof(COMMON_JS) === 'undefined') {
var COMMON_JS = true;
$(document).on('click', '.btn-history-back', function() {
history.back();
});
$(document).on('click', '.alertclose' , function() {
$(this).closest('.alert').hide();
});
$(document).ready(function(){
window.setTimeout(function() {
$('.alert-auto-close').hide();
}, 2500);
});
$(document).on('click', '#chkall', function() {
var chk = document.getElementsByName('chk[]');
for (i = 0; i < chk.length; i++)
chk[i].checked = this.checked;
});
$(document).ready(function() {
$('.datepicker').datepicker({
format: 'yyyy-mm-dd',
language: 'kr',
autoclose: true,
todayHighlight: true
});
});
function trim(s) {
var t = '';
var from_pos = to_pos = 0;
for (i = 0; i < s.length; i++) {
if (s.charAt(i) === ' ') {
continue;
} else {
from_pos = i;
break;
}
}
for (i = s.length; i >= 0; i--) {
if (s.charAt(i-1) === ' ') {
continue;
} else {
to_pos = i;
break;
}
}
t = s.substring(from_pos, to_pos);
return t;
}
function select_submit(f, acttype, actpage) {
var str = '';
if ($("input[name='chk[]']:checked", f).length < 1) {
alert('자료를 하나 이상 선택하세요.');
return;
}
if (acttype === 'delete' && ! confirm('선택한 자료를 정말 삭제 하시겠습니까?')) return;
f.action = actpage;
f.submit();
}
function deletecheck(){
if (confirm('정말 삭제하시겠습니까? 삭제하신 후에는 복구가 불가능합니다')) {
return true;
} else {
return false;
}
}
$(document).on('click', '.btn-list-reserve-update', function() {
if($('#reserve_publish_date').val() == '') {
alert('예약시간을 설정하세요');
return false;
} else {
select_submit(document.flist, 'update', $(this).attr('data-list-update-url'));
}
});
$(document).on('click', '.btn-list-update', function() {
select_submit(document.flist, 'update', $(this).attr('data-list-update-url'));
});
$(document).on('click', '.btn-list-delete', function() {
select_submit(document.flist, 'delete', $(this).attr('data-list-delete-url'));
});
$(document).on('click', '.btn-one-delete', function() {
if (confirm("한번 삭제한 자료는 복구할 방법이 없습니다.\n\n정말 삭제하시겠습니까?")) {
document.location.href= $(this).attr('data-one-delete-url');
return true;
} else {
return false;
}
});
$(document).on('click', '.list-chkbox, #chkall', function() {
var $checkedCheckboxes = $('.list-chkbox:checked');
var $checkboxes = $('.list-chkbox');
if ($checkedCheckboxes.length) {
$('.btn-list-update , .btn-list-selected').removeClass('disabled');
} else {
$('.btn-list-update , .btn-list-selected').addClass('disabled');
}
});
function makeSerializable(elem) {
return $(elem).prop('elements', $('*', elem).andSelf().get());
}
// 쿠키 입력
function set_cookie(name, value, expirehours, domain) {
var today = new Date();
today.setTime(today.getTime() + (60*60*1000*expirehours));
document.cookie = cookie_prefix + name + '=' + escape( value) + '; path=/; expires=' + today.toGMTString() + ';';
if (domain) {
document.cookie += 'domain=' + domain + ';';
}
}
// 쿠키 얻음
function get_cookie(cookie_name) {
var find_sw = false;
var start, end;
var i = 0;
name = cookie_prefix + cookie_name
for (i = 0; i <= document.cookie.length; i++) {
start = i;
end = start + name.length;
if (document.cookie.substring(start, end) == name) {
find_sw = true
break
}
}
if (find_sw === true) {
start = end + 1;
end = document.cookie.indexOf(';', start);
if (end < start) {
end = document.cookie.length;
}
return document.cookie.substring(start, end);
}
return '';
}
// 쿠키 지움
function delete_cookie(name) {
var today = new Date();
today.setTime(today.getTime() - 1);
var value = get_cookie(name);
if (value) {
document.cookie = cookie_prefix + name + '=' + value + '; path=/; expires=' + today.toGMTString();
}
}
// 숫자에 , 를 출력
function number_format(data) {
var tmp = '';
var number = '';
var cutlen = 3;
var comma = ',';
var i;
var sign = data.match(/^[\+\-]/);
if (sign) {
data = data.replace(/^[\+\-]/, '');
}
len = data.length;
mod = (len % cutlen);
k = cutlen - mod;
for (i = 0; i < data.length; i++) {
number = number + data.charAt(i);
if (i < data.length - 1) {
k++;
if ((k % cutlen) === 0) {
number = number + comma;
k = 0;
}
}
}
if (sign !== null) {
number = sign+number;
}
return number;
}
function escapeHtml (string) {
return String(string).replace(/[&<>"'`=\/]/g, function (s) {
return entityMap[s];
});
}
// 글자수 검사
function check_byte(content, target) {
var cont = $('#' + content).val();
// 숫자를 출력
$('#' + target).text(cont.length);
return cont.length;
}
function resize_textarea(id,mode) {
if (mode === 'down') {
$('#' + id).height($('#' + id).height() + 50);
} else if (mode === 'up') {
$('#' + id).height($('#' + id).height() - 50);
} else {
$('#' + id).height(mode);
}
}
$(document).on('click', '.url-qrcode', function () {
var toggled = $(this).attr('data-toggled');
if (toggled == 'on'){
$("#qrcode-content").hide('fast');
$('.url-qrcode').attr('data-toggled','off');
} else {
$("body").append("<div id='qrcode-content'></div>");
var url = $(this).attr("data-qrcode-url");
var x = $(this).offset().top;
var y = $(this).offset().left;
$("#qrcode-content").hide();
$("#qrcode-content").css("top", x + 20).css("left", y);
$("#qrcode-content").html("<div class='qrcode_code'><img src='https://chart.googleapis.com/chart?cht=qr&chld=H|2&chs=100&chl="+url+"'></div><div class='qrcode_info'>모바일로 QR코드를 스캔하면 해당 링크에 바로 접속할 수 있습니다.</div>").show("fast");
$('.url-qrcode').attr('data-toggled','off');
$(this).attr('data-toggled','on');
}
});
/**
* 우편번호 창
**/
var win_zip = function(frm_name, frm_zipcode, frm_address1, frm_address2, frm_address3, frm_address4) {
if (typeof daum === 'undefined') {
alert('다음 juso.js 파일이 로드되지 않았습니다.');
return false;
}
var zip_case = 1; //0이면 레이어, 1이면 페이지에 끼워 넣기, 2이면 새창
var complete_fn = function(data){
// 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분.
// 각 주소의 노출 규칙에 따라 주소를 조합한다.
// 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 이를 참고하여 분기 한다.
var fullAddr = ''; // 최종 주소 변수
var extraAddr = ''; // 조합형 주소 변수
// 사용자가 선택한 주소 타입에 따라 해당 주소 값을 가져온다.
if (data.userSelectedType === 'R') { // 사용자가 도로명 주소를 선택했을 경우
fullAddr = data.roadAddress;
} else { // 사용자가 지번 주소를 선택했을 경우(J)
fullAddr = data.jibunAddress;
}
// 사용자가 선택한 주소가 도로명 타입일때 조합한다.
if (data.userSelectedType === 'R'){
//법정동명이 있을 경우 추가한다.
if (data.bname !== ''){
extraAddr += data.bname;
}
// 건물명이 있을 경우 추가한다.
if (data.buildingName !== ''){
extraAddr += (extraAddr !== '' ? ', ' + data.buildingName : data.buildingName);
}
// 조합형주소의 유무에 따라 양쪽에 괄호를 추가하여 최종 주소를 만든다.
extraAddr = (extraAddr !== '' ? ' (' + extraAddr + ')' : '');
}
// 우편번호와 주소 정보를 해당 필드에 넣고, 커서를 상세주소 필드로 이동한다.
var of = document[frm_name];
of[frm_zipcode].value = data.zonecode;
of[frm_address1].value = fullAddr;
of[frm_address3].value = extraAddr;
if (of[frm_address4] !== undefined){
of[frm_address4].value = data.userSelectedType;
}
of[frm_address2].focus();
};
switch(zip_case) {
case 1 : //iframe을 이용하여 페이지에 끼워 넣기
var daum_pape_id = 'daum_juso_page' + frm_zipcode,
element_wrap = document.getElementById(daum_pape_id),
currentScroll = Math.max(document.body.scrollTop, document.documentElement.scrollTop);
if (element_wrap === null) {
element_wrap = document.createElement('div');
element_wrap.setAttribute('id', daum_pape_id);
element_wrap.style.cssText = 'display:none;border:1px solid;left:0;width:100%;height:300px;margin:5px 0;position:relative;-webkit-overflow-scrolling:touch;';
element_wrap.innerHTML = '<img src="//i1.daumcdn.net/localimg/localimages/07/postcode/320/close.png" id="btnFoldWrap" style="cursor:pointer;position:absolute;right:0px;top:-21px;z-index:1" class="close_daum_juso" alt="접기 버튼">';
jQuery('form[name="' + frm_name + '"]').find('input[name="' + frm_address1 + '"]').before(element_wrap);
jQuery('#' + daum_pape_id).off('click', '.close_daum_juso').on('click', '.close_daum_juso', function(e){
e.preventDefault();
jQuery(this).parent().hide();
});
}
new daum.Postcode({
oncomplete: function(data) {
complete_fn(data);
// iframe을 넣은 element를 안보이게 한다.
element_wrap.style.display = 'none';
// 우편번호 찾기 화면이 보이기 이전으로 scroll 위치를 되돌린다.
document.body.scrollTop = currentScroll;
},
// 우편번호 찾기 화면 크기가 조정되었을때 실행할 코드를 작성하는 부분.
// iframe을 넣은 element의 높이값을 조정한다.
onresize : function(size) {
element_wrap.style.height = size.height + 'px';
},
width : '100%',
height : '100%'
}).embed(element_wrap);
// iframe을 넣은 element를 보이게 한다.
element_wrap.style.display = 'block';
break;
case 2 : //새창으로 띄우기
new daum.Postcode({
oncomplete: function(data) {
complete_fn(data);
}
}).open();
break;
default : //iframe을 이용하여 레이어 띄우기
var rayer_id = 'daum_juso_rayer' + frm_zipcode,
element_layer = document.getElementById(rayer_id);
if (element_layer === null) {
element_layer = document.createElement('div');
element_layer.setAttribute('id', rayer_id);
element_layer.style.cssText = 'display:none;border:5px solid;position:fixed;width:300px;height:460px;left:50%;margin-left:-155px;top:50%;margin-top:-235px;overflow:hidden;-webkit-overflow-scrolling:touch;z-index:10000';
element_layer.innerHTML = '<img src="//i1.daumcdn.net/localimg/localimages/07/postcode/320/close.png" id="btnCloseLayer" style="cursor:pointer;position:absolute;right:-3px;top:-3px;z-index:1" class="close_daum_juso" alt="닫기 버튼">';
document.body.appendChild(element_layer);
jQuery('#' + rayer_id).off('click', '.close_daum_juso').on('click', '.close_daum_juso', function(e){
e.preventDefault();
jQuery(this).parent().hide();
});
}
new daum.Postcode({
oncomplete: function(data) {
complete_fn(data);
// iframe을 넣은 element를 안보이게 한다.
element_layer.style.display = 'none';
},
width : '100%',
height : '100%'
}).embed(element_layer);
// iframe을 넣은 element를 보이게 한다.
element_layer.style.display = 'block';
}
}
}