// 차트 시리즈 색상 var chartColors = ["#007bc3", "#76b800","#ffae00", "#ef4c00", "#a419b7", "#fd2664", "#91a6fd", "#00ddc2", "#fe91c8", "#ec1a25", "#f0ff00", "#49ff00", "#d89300", "#21557d", "#595b5a", "#00ffb5", "#f7fcae", "#f35f6d", "#add2db", "#8000ff", "#408080", "#3140cc", "#008000", "#35099d", "#cfd744", ]; var imgExtList = ['jpg', 'jpeg', 'png', 'gif', 'bmp']; var xlsExtList = ['xls', 'xlsx']; //browser detect var browser = (function() { var _ua = navigator.userAgent; var rv = -1; //IE 11,10,9,8 var trident = _ua.match(/Trident\/(\d.\d)/i); if( trident != null ) { if( trident[1] == "7.0" ) return { name: "msie"}; //rv = "IE" + 11; if( trident[1] == "6.0" ) return { name: "msie"}; //rv = "IE" + 10; if( trident[1] == "5.0" ) return { name: "msie"}; //rv = "IE" + 9; if( trident[1] == "4.0" ) return { name: "msie"}; //rv = "IE" + 8; } //IE 7... if( navigator.appName == 'Microsoft Internet Explorer' ) return { name: "msie"}; //rv = "IE" + 7; //other var agt = _ua.toLowerCase(); if (agt.indexOf("chrome") != -1) return { name: 'Chrome'}; if (agt.indexOf("opera") != -1) return { name: 'Opera'}; if (agt.indexOf("staroffice") != -1) return { name: 'Star Office'}; if (agt.indexOf("webtv") != -1) return { name: 'WebTV'}; if (agt.indexOf("beonex") != -1) return { name: 'Beonex'}; if (agt.indexOf("chimera") != -1) return { name: 'Chimera'}; if (agt.indexOf("netpositive") != -1) return { name: 'NetPositive'}; if (agt.indexOf("phoenix") != -1) return { name: 'Phoenix'}; if (agt.indexOf("firefox") != -1) return { name: 'Firefox'}; if (agt.indexOf("safari") != -1) return { name: 'Safari'}; if (agt.indexOf("skipstone") != -1) return { name: 'SkipStone'}; if (agt.indexOf("netscape") != -1) return { name: 'Netscape'}; if (agt.indexOf("mozilla/5.0") != -1) return { name: 'Mozilla'}; }()); $.ajaxSetup({ error : function(x, status, error){ if (x.status == 401) { redirect("/session_expire.do?requestCurrentAction="+location.href.substring(location.href.indexOf(location.host)+location.host.length, location.href.length)); return false; } else if (x.responseText && !isNull(x.responseText)) { showNotificationErr(notification,"오류",x.responseText); } else { showNotificationErr(notification,"오류","처리 중 오류가 발생하였습니다.
관리자에게 문의하세요."); } } }); function redirect(url) { if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { var referLink = document.createElement('a'); referLink.href = url; document.body.appendChild(referLink); referLink.click(); } else { location.href = url; } } function fn_submit(obj, action, method) { obj.action = action; obj.method = method; obj.submit(); } function fn_header(url,menu) { var form = document.frm; if(url == '') return; else { form.menuCd.value = menu; fn_submit(form,url,'post'); } } function isValue(obj, msg) { var objReg = /\s+/g; var objValue = obj.value.replace(objReg, ''); if (objValue == "" || objValue.length == 0) { alert(msg); obj.focus(); return false; } return true; } function showNotificationErr(notification,title,message) { notification.show({ title: title, message: message }, "error"); } function showNotificationSuccess(notification,message) { notification.show({ message: message }, "success"); } function limitCharacters(textid, limit){ var text = $('#'+textid).val(); var textlength = text.length; if(textlength > limit){ $('#'+textid).val(text.substr(0,limit)); return false; }else{ return true; } } function limitCharactersByte(textid, limit){ var text = $('#'+textid).val(); var textlength = getByteLen(text); if(textlength > limit){ while (getByteLen(text) > limit) { text = text.substr(0,text.length-1); } $('#'+textid).val(text); return false; }else{ return true; } } function getByteLen(str) { return (str.length + (escape(str) + "%u").match(/%u/g).length - 1); } function replaceAll(str, fromdelimiterStr, todelimiterStr) { if (fromdelimiterStr == "" || fromdelimiterStr == todelimiterStr) { return str; } while(str.indexOf(fromdelimiterStr) != -1) { str = str.replace(fromdelimiterStr, todelimiterStr); } return str; } var orgValue = ""; function setOrgValue(obj) { orgValue = obj.value; } function isValidDate8(obj) { date=new Date(); day=""; year=date.getFullYear(); month=date.getMonth()+1; smonth=""; if(month<10) smonth="0"+month; else smonth=month.toString(); obj.value = replaceAll(obj.value,"-",""); day = obj.value; var re = /^([12]\d{3}|0\d{1})[\.\\\/\s]?(\d{1,2})[\.\\\/\s]?(\d{1,2})$/; var ymd = trim(day); var m = re.exec(ymd); if(ymd == "") return true; var result = false; if(m != null && m.length == 4) { if(!isValidDay(m[1], m[2], m[3])) { alert("유효하지 않은 날짜를 사용하였습니다."); obj.value = ""; return false; } } else { if(confirm("날짜 형식이 일치 하지 앖습니다.\n'yyyy-mm-dd'과 같은 날짜 형식을 사용합니다.\n\n이전값으로 변경하시겠습니까?")) { obj.value = orgValue; } return false; } var yyyy = ((m[1] < 10)? "200":(m[1] < 50)? "20":(m[1] < 100)? "19":"") + parseInt(m[1], 10); var mm = ((m[2] < 10)? "0":"") + parseInt(m[2], 10); var dd = ((m[3] < 10)? "0":"") + parseInt(m[3], 10); obj.value = yyyy + "-" + mm + "-" + dd; return true; } function trim(tmp) { if (tmp == null) return ""; else return tmp.replace(/(^\s*)|(\s*$)/g, ""); } function isValidDay(yyyy, mm, dd) { var m = parseInt(mm,10) - 1; var d = parseInt(dd,10); if(isValidMonth(mm)) { var end = new Array(31,28,31,30,31,30,31,31,30,31,30,31); if ((yyyy % 4 == 0 && yyyy % 100 != 0) || yyyy % 400 == 0) end[1] = 29; return (d >= 1 && d <= end[m]); } else return false; } function isValidMonth(mm) { var m = parseInt(mm,10); return (m >= 1 && m <= 12); } /*===============================================================] * 기능 : 두 일자간의 차이 일수를 계산한다. * 인수 : strStrtId - 시작일자 element * strEnd - 종료일자 element 또는 'yyyyMMdd' 또는'yyyy-MM-dd' 형태로 표현된 일자, null일 경우 오늘날짜 * 리턴 : 숫자 형태의 차이일수(실패 시 null) ================================================================*/ function getDiffDate(stObj, edObj) { var strStrtDd = stObj.val(); var strEndDd = ""; if (isNull(edObj)) { strEndDd = getToday(); } else { if (typeof edObj == 'object') { strEndDd = edObj.val(); } else { strEndDd = edObj; } } strStrtDd = replaceAll(strStrtDd, "-", ""); strEndDd = replaceAll(strEndDd, "-", ""); if(!isDate(strStrtDd) || !isDate(strEndDd)) { return; } var strtDd = new Date(parseInt(strStrtDd.substring(0, 4), 10), parseInt(strStrtDd.substring(4, 6) - 1, 10), parseInt(strStrtDd.substring(6, 8), 10)); var endDd = new Date(parseInt(strEndDd.substring(0, 4), 10), parseInt(strEndDd.substring(4, 6) - 1, 10), parseInt(strEndDd.substring(6, 8), 10)); return parseInt(((endDd - strtDd) / (1000 * 60 * 60 * 24)),10); } /*=============================================================== * 기능 : 날짜 형식이 맞는지 확인 * 인수 : strDate - 'yyyyMMdd' 또는 'yyyy-MM-dd' 형태로 표현된 날짜 * 리턴 : 날짜 형식 여부 ================================================================*/ function isDate(strDate) { if(strDate.length == 0) return true; strDate = replaceAll(strDate, "-", ""); if(strDate.length != 8) return false; var numMonth = parseInt(strDate.substring(4, 6), 10); var numDate = parseInt(strDate.substring(6, 8), 10); if(numMonth < 1 || numMonth > 12) return false; if(numDate < 1 || numDate > getLastDate(strDate)) return false; return true; } /*=============================================================== * 기능 : 해당월의 마지막 날짜를 숫자로 구하기 * 인수 : strDate - yyyyMMdd형태의 날짜 ( 예 : "20121122" ) * 리턴 : 마지막 날짜 숫자값 ( 예 : 30 ) ================================================================*/ function getLastDate(strDate) { var numMonth, numLastDate; numMonth = parseInt(strDate.substr(4, 2), 10); if(numMonth == 1 || numMonth == 3 || numMonth == 5 || numMonth == 7 || numMonth == 8 || numMonth == 10 || numMonth == 12) numLastDate = 31; else if(numMonth == 2) { if(isLeapYear(strDate) == true) numLastDate = 29; else numLastDate = 28; } else numLastDate = 30; return numLastDate; } /*=============================================================== * 기능 : 윤년여부 확인 * 인수 : strDate - 'yyyyMMdd' 형태로 표현된 날짜 * 리턴 : 윤년여부(true : 윤년 false : 윤년아님 ================================================================*/ function isLeapYear(strDate) { var v_RVal; strDate = parseInt(strDate.substring(0, 4), 10); if((strDate % 4) == 0) { if((strDate % 100) != 0 || (strDate % 400) == 0) { v_RVal = true; } else { v_RVal = false; } } else { v_RVal = false; } return v_RVal; } /*===============================================================] * 기능 : 오늘날짜를 가져온다. * 리턴 : 'yyyy-MM-dd' 형태의 오늘날짜 ================================================================*/ function getToday() { var time = new Date(); var year = time.getFullYear(); var mon = (time.getMonth() + 1) > 9 ? '' + (time.getMonth() + 1) : '0' + (time.getMonth() + 1); var day = time.getDate() > 9 ? '' + time.getDate() : '0' + time.getDate(); var today = year + '-' + mon + '-' + day; return today; } /*=============================================================== * 기능 : Date Formatting 함수 * 인수 : time - Date 타입의 날짜 * strFormat - 포맷 형식. 지정하지 않으면 "####-##-##" 로 적용됨. * 리턴 : 변환된 날짜 ================================================================*/ function getDateFormat(time, strFormat) { if (isNull(time)) { return ""; } if (typeof time == "string" && isDate(time) && time.length == 10) { return time; } if (typeof time == "string" && !isDate(time)) { return time; } if (typeof time == "string" && isDate(time)) { time = new Date(getStrDateFormat(time)); } var year = time.getFullYear(); var mon = (time.getMonth() + 1) > 9 ? '' + (time.getMonth() + 1) : '0' + (time.getMonth() + 1); var day = time.getDate() > 9 ? '' + time.getDate() : '0' + time.getDate(); var strDate = year + mon + day; if(isNull(strFormat)) { strFormat = "####-##-##"; } var rtnForm = ""; var j = 0; for( var i = 0; i < strFormat.length; i++) { if(strFormat.charAt(i) == "#") { rtnForm += strDate.charAt(j); j++; } else { rtnForm += strFormat.charAt(i); } } return rtnForm; } function getStrDateFormat(strDate, strFormat) { if (isNull(strDate)) { return ""; } if(isNull(strFormat)) { strFormat = "####-##-##"; } var rtnForm = ""; var j = 0; for( var i = 0; i < strFormat.length; i++) { if(strFormat.charAt(i) == "#") { rtnForm += strDate.charAt(j); j++; } else { rtnForm += strFormat.charAt(i); } } return rtnForm; } function getAddDay(date,num) { var numValue = ''; if(num == '' || num == undefined || num == 'undefined'){ numValue = 1; }else{ numValue = num; } var selectDate = date.split("-"); var changeDate = new Date(); changeDate.setFullYear(selectDate[0], selectDate[1] - 1, parseInt(selectDate[2], 10) + parseInt(numValue,10)); var y = changeDate.getFullYear(); var m = changeDate.getMonth() + 1; var d = changeDate.getDate(); if(m < 10) { m = "0" + m; } if(d < 10) { d = "0" + d; } var resultDate = y + "-" + m + "-" + d; return resultDate; } function window_open(url, popupWidth, popupHeight, scroll, resize) { if(scroll == undefined) scroll = 'no'; if(resize == undefined) resize = 'no'; var popup_options = "top="+((screen.availHeight - popupWidth)/2)+", left="+((screen.availWidth - popupHeight)/2)+", width=" + popupWidth + ", height=" + popupHeight + ", status=yes, toolbar=no, menubar=no, location=no, scrollbars=" + scroll + ", resizable=" + resize; var target = "_blank"; window.open(url, target, popup_options); } function isNull(sValue) { if(new String(sValue).valueOf() == "undefined") return true; if(sValue == null) return true; var v_ChkStr = new String(sValue); var returnvalue = false; if(v_ChkStr == null) return true; if(v_ChkStr.toString().length == 0) return true; else return false; return false; } function isNullChk(sValue) { if(new String(sValue).valueOf() == "undefined" || sValue == null) { return ''; }else{ return sValue; } } function check_msglen(obj, limit_len, byte_nm) { var length = calculate_msglen($(obj).val()); if(length > limit_len) { $(obj).val(assert_msglen($(obj).val(),limit_len)); length = calculate_msglen($(obj).val()); if(byte_nm == "" || byte_nm == undefined) { showNotificationErr(notification,"오류","허용한 자리수를 초과하였습니다."); } } if(byte_nm != "") { $("#"+byte_nm).html("("+length+"/"+limit_len+") byte"); } } function calculate_msglen(message) { var nbytes = 0; for (i=0; i 4) { nbytes += 2; } else if (ch != '\r') { nbytes++; } } return nbytes; } function assert_msglen(message, maximum){ var inc = 0; var nbytes = 0; var msg = ""; var msglen = message.length; for (i=0; i 4) { inc = 2; } else if (ch == '\n') { if (message.charAt(i-1) != '\r') { inc = 1; } } else if (ch == '<' || ch == '>') { inc = 4; } else { inc = 1; } if ((nbytes + inc) > maximum) { break; } nbytes += inc; msg += ch; } return msg; } // 이미지 미리보기 function previewImage(targetObj, previewId, width, height) { $("#"+previewId+"").html(''); if (isNull(width)) { width = 140; } if (isNull(height)) { height = 160; } var preview = document.getElementById(previewId); //div id var ua = window.navigator.userAgent; if (ua.indexOf("MSIE") > -1) {//ie일때 targetObj.select(); try { var src = document.selection.createRange().text; // get file full path var img = document.createElement("img"); // 크롬은 div에 이미지가 뿌려지지 않는다. 그래서 자식Element를 만든다. img.src = src; img.style.width = width+'px'; img.style.height = height+'px'; preview.appendChild(img); var ie_preview_error = document .getElementById("ie_preview_error_" + previewId); if (ie_preview_error) { preview.removeChild(ie_preview_error); //error가 있으면 delete } var img = document.getElementById(previewId); //이미지가 뿌려질 곳 img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='scale')"; // 이미지 로딩, sizingMethod는 div에 맞춰서 사이즈를 자동조절 하는 역할 } catch (e) { if (!document.getElementById("ie_preview_error_" + previewId)) { var info = document.createElement("

"); info.id = "ie_preview_error_" + previewId; info.innerHTML = "a"; preview.insertBefore(info, null); } } } else { //ie가 아닐때 var files = targetObj.files; for ( var i = 0; i < files.length; i++) { var file = files[i]; var imageType = /image.*/; //이미지 파일일경우만.. 뿌려준다. if (!file.type.match(imageType)) continue; var prevImg = document.getElementById("prev_" + previewId); //이전에 미리보기가 있다면 삭제 if (prevImg) { preview.removeChild(prevImg); } var img = document.createElement("img"); // 크롬은 div에 이미지가 뿌려지지 않는다. 그래서 자식Element를 만든다. img.id = "prev_" + previewId; img.classList.add("obj"); img.file = file; img.style.width = width+'px'; //기본설정된 div의 안에 뿌려지는 효과를 주기 위해서 div크기와 같은 크기를 지정해준다. img.style.height = height+'px'; preview.appendChild(img); if (window.FileReader) { // FireFox, Chrome, Opera 확인. var reader = new FileReader(); reader.onloadend = (function(aImg) { return function(e) { aImg.src = e.target.result; }; })(img); reader.readAsDataURL(file); } else { // safari is not supported FileReader //alert('not supported FileReader'); if (!document.getElementById("sfr_preview_error_" + previewId)) { var info = document.createElement("p"); info.id = "sfr_preview_error_" + previewId; info.innerHTML = "not supported FileReader"; preview.insertBefore(info, null); } } } } } // 탭메뉴 클릭 이벤트 var changeTab; // callback 함수 function toggleTabs(targetClass) { $('.'+targetClass+' ul li a').click(function() { var container = $(this).parents('li').parents('ul'); var contents = $(".tab_contents").find('>ul').children('li'); $(container).children('li').each(function() { $(this).find('>a').removeClass('on').addClass('off'); $(contents.get($(this).index())).hide(); }); $(this).removeClass('off').addClass('on'); var selIdx = $(this).parents('li').index(); $(contents.get(selIdx)).show(); if (!isNull(changeTab) && typeof changeTab == "function") { changeTab(selIdx); } }); if($('.'+targetClass)) { $('.on').click(); } } function check_mail(email) { var aIndex = email.indexOf("@"); if (aIndex == 0) { showNotificationErr(notification,"오류","메일 입력형식이 올바르지 않습니다."); return false; } var dotIndex = email.indexOf('.'); var len = email.length; if (len == (dotIndex+1)) { showNotificationErr(notification,"오류","메일 입력형식이 올바르지 않습니다."); return false; } if (aIndex == -1 || dotIndex == -1 || aIndex >= (dotIndex-1)) { showNotificationErr(notification,"오류","메일 입력형식이 올바르지 않습니다."); return false; } return true; } function setComma(formName, inputName) { eval(inputName.value = cashReturn(replaceComma(inputName.value))); } function cashReturn(num) { var numValue = ""+num; var rxSplit = new RegExp('([0-9])([0-9][0-9][0-9][,.])'); var arrNumber = numValue.split('.'); arrNumber[0] += '.'; do { arrNumber[0] = arrNumber[0].replace(rxSplit, '$1,$2'); } while (rxSplit.test(arrNumber[0])); var com = ""; if (arrNumber.length > 1) { com = arrNumber.join(''); } else { com = arrNumber[0].split('.')[0]; } return com; } function returnExtension(fileNm){ var len = fileNm.length; var last = fileNm.lastIndexOf("."); //확장자 추출 if (last == -1){ //. 를 발견하지 못한다면 return false; //확장자가 없음 } //var ext = fileNm.substr(last, len - last ); //확장자 추출 (. 포함) var ext = fileNm.substring(last, len); //확장자 추출 (. 포함) ext = ext.toLowerCase(); //소문자로 return ext; //.jpg } function isValidExt(fileId, extList) { var fileName = $('#'+fileId).val(); var index = fileName.lastIndexOf('.'); var extName = fileName.substring(index+1, fileName.len); var isValidExt = false; for (var i in extList) { if (extList[i] == extName || extList[i].toUpperCase() == extName) { isValidExt = true; } } if (!isValidExt) { showNotificationErr(notification,"오류","파일은 "+extList.join(', ')+" 파일만 등록 가능 합니다."); if ($('#'+fileId).get(0).files == undefined && browser.name == 'msie') { $('#'+fileId).parent().html($('#'+fileId).parent().html()) } else { $('#'+fileId).val(''); } $('#'+fileId).change(); return false ; } return true; } function isValidFileSize(fileId, limit, sizeUnit) { var iSize = 0; if($('#'+fileId).get(0).files == undefined && browser.name == 'msie') { // IE8, 9는 서버에서 체크함. return true; } else { iSize = $('#'+fileId)[0].files[0].size; } var flag = false; var limitSize = limit; if (sizeUnit == 'MB') { limitSize = limit*1024; } if(iSize!=undefined){ if((iSize/1024)>limitSize){ flag = true; } } if(flag){ if (sizeUnit == 'MB') { iSize = ((iSize/1024)/1024).toFixed(1); } else { iSize = (iSize/1024).toFixed(1); } showNotificationErr(notification,"오류","제한용량 "+limit+sizeUnit+"를 초과 하였습니다.
[ 첨부파일용량 : "+iSize+sizeUnit+" ]"); if ($('#'+fileId).get(0).files == undefined && browser.name == 'msie') { $('#'+fileId).parent().html($('#'+fileId).parent().html()) } else { $('#'+fileId).val(''); } $('#'+fileId).change(); return false; } return true; } function itoStr($num) { $num < 10 ? $num = '0'+$num : $num; return $num.toString(); }