/**
* 공통 JS
*/
//$(document).ajaxStart($.blockUI).ajaxStop($.unblockUI);
$(document).ajaxError(function(event, jqxhr, settings, thrownError) {
$.unblockUI();
// console.log(event, jqxhr, settings, thrownError);
});
/*
* 로딩
*/
//$(function() {
// jQuery('form').submit(function() {
// $.blockUI({baseZ:99999});
// });
//});
//BackSpace 키 방지 이벤트
//$(document).keydown(function(e){
// if(e.target.nodeName != "INPUT" && e.target.nodeName != "TEXTAREA"){
// if(e.keyCode === 8){
// if( confirm("이전 페이지로 이동 하시겠습니까?") ) {
// window.histroy.go(-1);
// } else {
// return false;
// }
// }
// }
//});
$(function() {
// 달력 선언
initDatePicker();
var $inputCheckbox = $('.inputCheckbox');
var $onlyNumber = $('.onlyNumber');
var $onlyStopPointNumber = $('.onlyStopPointNumber');
var $onlyApostrophePointNumber = $('.onlyApostrophePointNumber');
var $onlyNumberComma = $('.onlyNumberComma');
// 체크박스
if ($inputCheckbox.length > 0) {
$inputCheckbox.toggleCheckbox([
'',
''
]);
}
/* 숫자만 입력 */
if ($onlyNumber.length > 0) {
$onlyNumber.on('keydown keyup focusout', function() {
onlyNumber(this);
});
}
/* 숫자만 입력 */
if ($onlyStopPointNumber.length > 0) {
$onlyStopPointNumber.on('keydown keyup focusout', function() {
onlyStopPointNumber(this);
});
}
/* 숫자 . ' " 입력 */
if ($onlyApostrophePointNumber.length > 0) {
$onlyApostrophePointNumber.on('keydown keyup focusout', function() {
onlyApostrophePointNumber(this);
});
}
/* 숫자만 입력(세자리 콤마) */
if ($onlyNumberComma.length > 0) {
$onlyNumberComma.on('keydown keyup focusout', function() {
onlyNumberComma(this);
});
$onlyNumberComma.each(function() {
$(this).val(setComma($(this).val()));
});
}
// 권한 체크
fncAuthoChecker();
/**
* input 24Hours 시간 Mask
* class - inputTime
*/
initInputTimeMask();
});
//달력 선언
function initDatePicker() {
var $datepicker = $(".datepicker");
if ($datepicker.length < 1) {
return;
}
$datepicker.prop("autocomplete", "off").datepicker({
dateFormat: "yy-mm-dd",
changeYear: true,
changeMonth: true,
showMonthAfterYear: true,
selectOtherMonths: true,
showOtherMonths: true,
showButtonPanel: true,
nextText: '다음 달',
prevText: '이전 달',
dayNames: ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'],
dayNamesMin: ['일', '월', '화', '수', '목', '금', '토'],
monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'],
monthNames: ['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월'],
beforeShow: function() {
setTimeout(function(){
$('.ui-datepicker').css('z-index', 9999999);
}, 0);
}
}).inputmask("9999-99-99");
$datepicker.focusout(function(){
var date = $(this).val();
if(date != '') {
var year = date.split("-")[0].replace(/[^0-9]/g,"");
var month = date.split("-")[1].replace(/[^0-9]/g,"");
var day = date.split("-")[2].replace(/[^0-9]/g,"");
if(year != '') {
for(var i = year.length; i < 4; i++) {
year = "0" + year;
}
}
if(month != '') {
if(month > 12) {
month = "12";
}else if(month < 1) {
month = "01";
}
for(var i = month.length; i < 2; i++) {
month = "0" + month;
}
}else {
month = "01";
}
if(day != '') {
if(month == "01" || month == "03" || month == "05" || month == "07" || month == "08" || month == "10" || month == "12") {
if(day > 31) {
day = "31";
}else if(day < 1) {
day = "01";
}
}else if(month == "04" || month == "06" || month == "09" || month == "11") {
if(day > 30) {
day = "30";
}else if(day < 1) {
day = "01";
}
}else if(month == "02") {
if(day > 29) {
day = "28";
}else if(day < 1) {
day = "01";
}
}
for(var i = day.length; i < 2; i++) {
day = "0" + day;
}
}else {
day = "01";
}
date = year + "-" + month + "-" + day;
$(this).val(date);
}
});
}
// minDate, maxDate 필요할 때
// 시작일 셀렉터 : bgnde , 종료일 셀렉터 : endde, 시작 종료 상위 셀렉터 : groupTag
function initDatePickerMulti(start, end, groupTag) {
var $start = $(start);
var $end = $(end);
var $startEnd = $(start + "," + end);
if ($start.length < 1) {
return;
}
$start.prop("autocomplete", "off").datepicker({
dateFormat: "yy-mm-dd",
changeYear: true,
changeMonth: true,
showMonthAfterYear: true,
selectOtherMonths: true,
showOtherMonths: true,
showButtonPanel: true,
nextText: '다음 달',
prevText: '이전 달',
dayNames: ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'],
dayNamesMin: ['일', '월', '화', '수', '목', '금', '토'],
monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'],
monthNames: ['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월'],
beforeShow: function() {
setTimeout(function(){
$('.ui-datepicker').css('z-index', 9999999);
}, 0);
},
onClose: function (selectedDate) {
$(this).closest(groupTag).find(end).datepicker( "option", "minDate", selectedDate );
},
});
var minDate = $(start).closest(groupTag).find(start).val();
$end.prop("autocomplete", "off").datepicker({
dateFormat: "yy-mm-dd",
changeYear: true,
changeMonth: true,
showMonthAfterYear: true,
selectOtherMonths: true,
showOtherMonths: true,
showButtonPanel: true,
nextText: '다음 달',
prevText: '이전 달',
dayNames: ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'],
dayNamesMin: ['일', '월', '화', '수', '목', '금', '토'],
monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'],
monthNames: ['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월'],
beforeShow: function() {
setTimeout(function(){
$('.ui-datepicker').css('z-index', 9999999);
}, 0);
},
minDate: minDate
});
$startEnd.focusout(function(){
var date = $(this).val();
if(date != '') {
var year = date.split("-")[0].replace(/[^0-9]/g,"");
var month = date.split("-")[1].replace(/[^0-9]/g,"");
var day = date.split("-")[2].replace(/[^0-9]/g,"");
if(year != '') {
for(var i = year.length; i < 4; i++) {
year = "0" + year;
}
}
if(month != '') {
if(month > 12) {
month = "12";
}else if(month < 1) {
month = "01";
}
for(var i = month.length; i < 2; i++) {
month = "0" + month;
}
}else {
month = "01";
}
if(day != '') {
if(month == "01" || month == "03" || month == "05" || month == "07" || month == "08" || month == "10" || month == "12") {
if(day > 31) {
day = "31";
}else if(day < 1) {
day = "01";
}
}else if(month == "04" || month == "06" || month == "09" || month == "11") {
if(day > 30) {
day = "30";
}else if(day < 1) {
day = "01";
}
}else if(month == "02") {
if(day > 29) {
day = "28";
}else if(day < 1) {
day = "01";
}
}
for(var i = day.length; i < 2; i++) {
day = "0" + day;
}
}else {
day = "01";
}
date = year + "-" + month + "-" + day;
$(this).val(date);
}
});
}
// input 시간 마스크 설정
function initInputTimeMask() {
var $inputTime = $('.inputTime');
var $inputTimeSec = $('.inputTimeSec');
if ($inputTime.length < 1 && $inputTimeSec.length < 1) {
return;
}
$inputTime.inputmask('datetime',{'inputFormat':'HH:MM', 'hourFormat' : '24', 'showMaskOnHover' : false, 'placeholder' : "__:__"});
$inputTimeSec.inputmask('datetime',{'inputFormat':'HH:MM:ss', 'hourFormat' : '24', 'showMaskOnHover' : false, 'placeholder' : "__:__:__"});
//시간 자동 완성
$inputTime.focusout(function(){
var time = $(this).val();
if(time != "") {
var hour = time.split(":")[0];
var minute = time.split(":")[1];
if(hour != "") {
if(hour.replace(/[^0-9]/g,"") >= 24) {
hour = "";
}else{
var first = hour.substring(0,1).replace(/[^0-9]/g,"");
var second = hour.substring(1,2).replace(/[^0-9]/g,"");
if(first == "") {
first = 0;
}
if(second == "") {
second = 0;
}
hour = first + second;
}
}
if(minute.replace(/[^0-9]/g,"") != "") {
if(minute.replace(/[^0-9]/g,"") >= 60) {
minute = "";
}else{
var first = minute.substring(0,1).replace(/[^0-9]/g,"");
var second = minute.substring(1,2).replace(/[^0-9]/g,"");
if(first == "") {
first = 0;
}
if(second == "") {
second = 0;
}
minute = first + second;
}
}else {
if(hour != "") {
minute = "00";
}
}
$(this).val(hour + ":" + minute);
}
});
//시간 자동 완성 시:분:초
$inputTimeSec.focusout(function(){
var time = $(this).val();
if(time != "") {
var hour = time.split(":")[0];
var minute = time.split(":")[1];
var sec = time.split(":")[2];
if(hour != "") {
if(hour.replace(/[^0-9]/g,"") >= 24) {
hour = "";
}else{
var first = hour.substring(0,1).replace(/[^0-9]/g,"");
var second = hour.substring(1,2).replace(/[^0-9]/g,"");
if(first == "") {
first = 0;
}
if(second == "") {
second = 0;
}
hour = first + second;
}
}
if(minute.replace(/[^0-9]/g,"") != "") {
if(minute.replace(/[^0-9]/g,"") >= 60) {
minute = "";
}else{
var first = minute.substring(0,1).replace(/[^0-9]/g,"");
var second = minute.substring(1,2).replace(/[^0-9]/g,"");
if(first == "") {
first = 0;
}
if(second == "") {
second = 0;
}
minute = first + second;
}
}else {
if(hour != "") {
minute = "00";
}
}
if(sec.replace(/[^0-9]/g,"") != "") {
if(sec.replace(/[^0-9]/g,"") >= 60) {
sec = "";
}else{
var first = sec.substring(0,1).replace(/[^0-9]/g,"");
var second = sec.substring(1,2).replace(/[^0-9]/g,"");
if(first == "") {
first = 0;
}
if(second == "") {
second = 0;
}
sec = first + second;
}
}else {
if(minute != "") {
sec = "00";
}
}
$(this).val(hour + ":" + minute + ":" + sec);
}
});
}
/*
* 서브밋시 콤마제외
*/
function submitNummberComma() {
$('.onlyNumberComma').each(function() {
$(this).val($(this).val().replace(/[^0-9-]/g,""));
});
}
function submitNummberComma(str) {
var result = parseInt(str.replace(/[^0-9-]/g,""));
if(isNaN(result)){
result = null;
}
return result;
}
/*
* 숫자만 입력
*/
function onlyNumber(obj){
$(obj).val($(obj).val().replace(/[^0-9]/g,""));
}
/*
* 숫자만 입력
*/
function onlyStopPointNumber(obj){
$(obj).val($(obj).val().replace(/[^0-9.]/g,""));
}
function onlyApostrophePointNumber(obj){
$(obj).val($(obj).val().replace(/[^0-9.\"\'Φ/*]/g,""));
}
/*
* 숫자만 입력(세자리 콤마)
*/
function onlyNumberComma(obj){
$(obj).val(setComma($(obj).val().replace(/[^0-9-]/g,"")));
}
function setComma(number) {
// 정규표현식 : (+- 존재하거나 존재 안함, 숫자가 1개 이상), (숫자가 3개씩 반복)
var reg = /(^[+-]?\d+)(\d{3})/;
// 스트링변환
number += '';
while (reg.test(number)) {
// replace 정규표현식으로 3자리씩 콤마 처리
number = number.replace(reg,'$1'+','+'$2');
}
return number;
}
/*
* object의 name 속성을 재정의한다.(배열로 만들기 위함)
*/
function fncRename(obj, i) {
var names = $(obj).attr('name').split('.');
var rname = names[0] + '[' + i + '].' + names[1];
$(obj).attr('name', rname);
}
// formSerializeObject Json 변환
$.fn.serializeObject = function () {
"use strict";
var result = {};
var extend = function (i, element) {
var node = result[element.name];
if ('undefined' !== typeof node && node !== null) {
if ($.isArray(node)) {
node.push(element.value);
} else {
result[element.name] = [node, element.value];
}
} else {
result[element.name] = element.value;
}
};
$.each(this.serializeArray(), extend);
return result;
};
//-- 프린트 설정 시작
var beforePrint = function() {
// $('button').css('display', 'none');
$('#printSection button').css('display', 'none');
}
var afterPrint = function() {
// setTimeout(function() {
// if( this.opener != null ) {
// this.close();
// }
// $('button').css('display', '');
// }, 50);
setTimeout(function() {
if( this.opener != null ) {
this.close();
}
$('#printSection').remove();
}, 50);
// 인쇄 취소나 완료시 팝업창 닫기
}
// chrome 63이후 부터 onbeforeprint 이벤트가 지원됨에 따라 아래 주석
// firefox for android 빼고 모든 브라우저 지원
//if( window.matchMedia ) {
// var mQuery = window.matchMedia('print');
// mQuery.addListener(function(mql) {
// if( mql.matches ) {
// beforePrint();
// } else {
// afterPrint();
// }
// });
//}
window.onbeforeprint = beforePrint;
window.onafterprint = afterPrint;
//-- 프린트 설정 완료
//-- 팝업 프린트 영역 dom 생성
function printElement(elem) {
var domClone = elem.cloneNode(true);
var id = domClone.getAttribute('id');
$(domClone).removeAttr('id');
var $printSection = document.getElementById("printSection");
if (!$printSection) {
var $printSection = document.createElement("div");
$printSection.id = "printSection";
document.body.appendChild($printSection);
}
$printSection.innerHTML = "";
$printSection.appendChild(domClone);
window.print();
}
// Dom 데이터 초기화
function resetDomData(obj) {
obj.each(function() {
$(this).find('input[type="text"], textarea').val('');
});
}
function itoStr($num)
{
$num < 10 ? $num = '0'+$num : $num;
return $num.toString();
}
/*
* 엑셀다운로드
* tblId : $(tableId)
* fileNm : 다운로드 파일명
*/
function excelDownloads(tblId, fileNm) {
var dt = new Date();
var year = itoStr( dt.getFullYear() );
var month = itoStr( dt.getMonth() + 1 );
var day = itoStr( dt.getDate() );
var hour = itoStr( dt.getHours() );
var mins = itoStr( dt.getMinutes() );
var postfix = year + month + day + "_" + hour + mins;
var fileName = fileNm + postfix + ".xls";
TXLManager(tblId).exportTableToExcel(fileNm + postfix);
}
/* 이미지 preImgView
* img : img tag Id
* input : input file tag object
* hidden : hidden input Id
*/
function preImgView(img, input, hidden) {
var preview = document.getElementById(img);
var hiddenInput = document.getElementById(hidden);
var file = input.files[0];
var reader = new FileReader();
reader.addEventListener("load", function () {
preview.src = reader.result;
if( hiddenInput != null ) {
hiddenInput.innerHTML = reader.result;
}
}, false);
if (file) {
reader.readAsDataURL(file);
}
}
/*
* replaceALl 함수
* str 문자열
* searchStr 찾을문자열
* replaceStr 바꿀문자열
*/
function replaceAll(str, searchStr, replaceStr) {
return str.split(searchStr).join(replaceStr);
}
/*
* enter(\r\n)를 br로 치환
*/
function changeEnterBr(str) {
return replaceAll(str.replace(/(?:\r\n|\r|\n)/g, "
"), ' ', ' ')
}
/*
* br을 enter(\r\n)로 치환
*/
function changeBrEnter(str) {
return replaceAll(str, "
", "\r\n");
}
/*
* 팝업 프로그래스 바
* ctx 컨텍스트패스
* popupId 팝업ID
* url 리다이렉트할 url(한글파라메터시 encodeURI("한글", "UTF-8"))
*/
function popupProgress(ctx, popupId, url) {
var retVal;
retVal = window.open("", popupId, "width=1000, height=800, left=100, top=100");
var data = '';
data += '