/** * alertMsg(ErrCode,ErrMsg) 입력받은 메세지 코드의 메세지를 alert으로 화면에 표시 * @param ErrMsg 앞에 붙일 메세지내용 * @param MsgCode 메세지 코드 * @return N/A * @histroy 2008.01.15 김정원 */ function alertMsg(ErrCode,ErrMsg){ if((ErrCode !='')&&(isNumber(ErrCode))){ //에러메시지가 숫자형 인지 확인한다. if(ErrCode == "50014"){ alert("데이타 로딩시 포멧에 오류가 있읍니다."); return; }else if(ErrCode == "50018"){ if((ErrMsg != null)&&(ErrMsg != "")){ // alert(ErrMsg+"은(는) 필수입력항목입니다."); alert(ErrMsg+" is required."); }else{ alert("필수입력항목을 모두 입력하십시오."); } return; }else if(ErrCode == "50019"){ alert("KEY값이 중복되었습니다."); return; }else if(ErrCode == "50030"){ alert("해당하는 ColumnID를 찾을 수 없읍니다."); return; }else{ alert(ErrCode); return; } } //에러코드의 타입을 구분한다. 1차로 에러 메시지와 코드를 분리한다. var codeMsgYN; var defYN; var msgRead = ""; //2차로 정의된 에러메시지 인지 구분한다. var defValue = ErrCode.split("_"); if(defValue[1] == null){ defYN = "N"; }else{ defYN = "Y"; } //정의된 에러 메시지 이면 정의된 항목을 가져와서 리턴한다. if(defYN == "Y"){ // var read1 = ErrMsg+" "+msg; // var read2 = msg+" "+ErrMsg; switch( ErrCode ){ case "NO_UPLOAD" : // msg = "업로드할 자료가 없습니다."; msg = "There is no data to upload."; break; case "SAVE_OK" : // msg = "성공적으로 저장되었습니다."; msg = "Save process is completed."; break; case "DELETE_OK" : // msg = "성공적으로 삭제되었습니다."; msg = "Process Deleted."; break; case "CANCEL_OK" : // msg = "성공적으로 취소되었습니다."; msg = "Process Canceled."; break; case "PROCESS_OK": // msg = "성공적으로 처리되었습니다."; msg = "Process Completed."; break; case "NO_ACCEPT": // msg = "허용하지 않는 문자열 입니다."; msg = "The code is not available."; break; case "AY_CREATE" : // msg = "기 등록 자료입니다."; msg = "already registered data."; break; case "AY_PROCESS": // msg = "기 처리 자료입니다."; msg = "already processed data."; break; case "QF_SAVE" : // msg = "조회후 저장하십시오."; msg = "Do you want to save?"; break; case "QF_UPDATE" : msg = "Do you want to update?"; break; case "QF_DELETE" : // msg = "조회후 삭제하십시오."; msg = "Do you want to delete?"; break; case "DPKEY_CHK" : // msg = "기본KEY가 중복되었습니다."; msg = "Primary key is overlap."; break; case "NO_DATA" : // msg = "조회할 자료가 없습니다."; msg = "Here's no data to search."; break; case "NO_UPDATE" : // msg = "수정할 자료가 없습니다."; msg = "There is no data to update."; break; case "NO_DELETE" : // msg = "삭제할 자료가 없습니다."; msg = "There is no data to delete."; break; case "NO_CHG" : // msg = "변경된 자료가 없습니다."; msg = "There is no data modified."; break; case "NO_SAVE" : // msg = "저장할 자료가 없습니다."; msg = "There is no data to save."; break; case "CRCODE_ERR": // msg = "코드생성에 실패했습니다."; msg = "There is no generated code."; break; case "NO_RIGHT" : // msg = "권한이 없습니다."; msg = "There is no Athority"; break; case "EXCEED_LIMIT": msg = "한도를 초과했습니다."; break; case "NOT_EXCEL": msg = "EXCEL출력 Tab이 아닙니다."; break; case "NO_SESSION": // msg = "세션이 종료되었습니다. 다시로그인해 주십시오."; msg = "세션이 종료되었습니다. Please, log in."; break; case "FT_PROCESS": msg = "를(을) 먼저 진행하십시오."; break; case "MUST_CHK" : // msg = "(은)는 필수 입력 항목입니다."; msg = " is required."; break; case "VALUE_CHK" : // msg = "가(이) 없습니다."; msg = "There is no "; break; case "PARAM_CHK" : // msg = "을(를) 입력하십시오."; msg = "Please, input "; break; case "SELECT_CHK" : msg = "Please, select "; break; case "PRINT_CHK" : // msg = "출력할데이타가 없습니다 "; msg = "no data to print."; break; case "CHANG_CHK" : // msg = "수정할수없습니다 "; msg = "You can not modified."; break; case "SUMMARY_CHK" : // msg = "입력한값의 합계가 큽니다. 다시확인해주세요"; msg = "The summary is larger than limit. Check once more."; break; case "IMPOSSIBLE" : // msg = ""; msg = "Mission Impossible... Please call to system manager."; break; case "SUM_INPUT" : // msg = "입력한값의 합계가 큽니다. 다시확인해주세요 "; msg = "The summary is larger than limit. Check once more."; break; default: msg = ErrCode; } }else{ msg = ErrCode; } // alert(ErrMsg+" "+msg); alert(msg+" "+ErrMsg); } /** * alertMsg(ErrCode,ErrMsg) 입력받은 메세지 코드의 메세지를 alert으로 화면에 표시 * @param ErrMsg 앞에 붙일 메세지내용 * @param ErrCode 뒤에 붙일 메세지내용 * @return N/A * @histroy 2008.01.21 ZardLover */ function alertMsg2(ErrCode,ErrMsg){ if((ErrCode !='')&&(isNumber(ErrCode))){ //에러메시지가 숫자형 인지 확인한다. if(ErrCode == "50014"){ alert("데이타 로딩시 포멧에 오류가 있읍니다."); return; }else if(ErrCode == "50018"){ if((ErrMsg != null)&&(ErrMsg != "")){ // alert(ErrMsg+"은(는) 필수입력항목입니다."); alert(ErrMsg+" is required."); }else{ alert("필수입력항목을 모두 입력하십시오."); } return; }else if(ErrCode == "50019"){ alert("KEY값이 중복되었습니다."); return; }else if(ErrCode == "50030"){ alert("해당하는 ColumnID를 찾을 수 없읍니다."); return; }else{ alert(ErrCode); return; } } switch( ErrCode ){ case ">=ZERO" : // msg = ""; msg = "must be greater than or equal to Zero."; break; case ">ZERO" : // msg = ""; msg = "must be greater than Zero."; break; case "<=ZERO" : // msg = ""; msg = ""; break; default: msg = ErrCode; } alert(ErrMsg + " " + msg); } /** * isNumber(numValue) 숫자 체크 루틴 * @param numValue 숫자 * @return allValid * @histroy 2008.01.15 김정원 */ function isNumber(numValue) { var checkOK = "-0123456789"; var checkStr = numValue; var allValid = true; var decPoints = 0; var allNum = ""; /* 숫자인가? */ for (i = 0; i < checkStr.length; i++) { ch = checkStr.charAt(i); for (j = 0; j < checkOK.length; j++) if (ch == checkOK.charAt(j)) break; if (j == checkOK.length) { allValid = false; break; } } return allValid; } /** * MCMS 엑셀다운로드시 헤드에 default로 붙는 값 */ var HMCS_MSG =""; //var HMCS_MSG ="Hanwha Material Control System Main Module for Version 1.0 "; function openWin(url, width, height, scroll) { var result = "false"; inWidth = width; inHeight = height; x = screen.availWidth; y = screen.availHeight; xtop = Number((y - inHeight)/2); xleft = Number((x - inWidth)/2); window.open(url, "search","top="+xtop+",left="+xleft+",width="+inWidth+",height="+inHeight+",SCROLLBARS=" + scroll); } /** * 객체의 tabIndex를 지정한다. * 파라미터로 받는 Array개체에 들어 오는 순서대로 tabIndex를 지정한다. * 사용예) * var f = document.form1; * var indexObj = [ f.ccc, f.ddd, f.bbb, f.aaa ]; * setTabIndex(indexObj); */ function setTabIndex(indexObj) { try { if( indexObj != null && indexObj.length != null ) { for( var i = 0 ; i < indexObj.length ; i++ ) { var obj = indexObj[i]; if( obj.length != null ) { for( var j = 0 ; j < obj.length ; j++ ) { obj[j].tabIndex = i + 1; } } else { obj.tabIndex = i + 1; } if( i == indexObj.length - 1 ) { obj.tabStop = true; } } indexObj[0].focus(); } } catch(errorObject) { showErrorDlg("common_js.setTabIndex()", errorObject); } } /** * 화면에서 help버튼을 클릭할때 도움말 화면을 보여준다. * 파라미터 ) 화면의 screen명 * 사용예 ) setHelpName("PURRFQList.screen"); */ function setHelpName(helpName) { try { if( document.all['HELP_NAME'] != null ) { document.all['HELP_NAME'].innerText = helpName; } else if( parent.document.all['HELP_NAME'] != null ) { parent.document.all['HELP_NAME'].innerText = helpName; } else if( parent.parent.document.all['HELP_NAME'] != null ) { parent.parent.document.all['HELP_NAME'].innerText = helpName; } else if( parent.parent.parent.document.all['HELP_NAME'] != null ) { parent.parent.parent.document.all['HELP_NAME'].innerText = helpName; } else if( parent.parent.parent.parent.document.all['HELP_NAME'] != null ) { parent.parent.parent.parent.document.all['HELP_NAME'].innerText = helpName; } else if( parent.parent.parent.parent.parent.document.all['HELP_NAME'] != null ) { parent.parent.parent.parent.parent.document.all['HELP_NAME'].innerText = helpName; } } catch(e) {} } /** * ############################################################################## * Event 관련 function */ /** * 객체에 Event에 지정되어 있는 함수에 Event를 추가한다. * 사용예) form.input_field.onblur = addEvent( form.input_field.onblur, "calAmt()"); * 설명 ) input_field 에 onblur event에 calAmt() 라는 함수를 추가한다. */ function addEvent(objEvent, addFunctionName) { if( objEvent == null ) objEvent = ""; var eventScript = objEvent + ""; if( eventScript == "" ) { eventScript = "\n" + addFunctionName + ";" + "\n"; } else if( eventScript.substring(0, 8) == "function" ) { var startIndex = eventScript.indexOf("{"); var endIndex = eventScript.lastIndexOf("}"); eventScript = eventScript.substring(startIndex + 1, endIndex - 1); eventScript += "\n" + addFunctionName + ";" + "\n"; } else { eventScript = ""; } return new Function( eventScript ); } /** * 정수 입력필도로 제어 * 사용예) */ function useNumberKey() { if( (event.keyCode < 48) || (event.keyCode > 57) ) { if((event.keyCode < 96) || (event.keyCode > 105) ){ event.returnValue = false; } } } /** * 소숫점 숫자 입력필드로 제어 * 사용예) */ function useFloatNumberKey(){ if( ( (event.keyCode < 48) || (event.keyCode > 57) ) && (event.keyCode != 46) ) { event.returnValue = false; } } /** * 팝업 원도우 ESC Key로 닫기 * 사용예)> document.onkeydown = closePopupWindow; */ function closePopupWindow(e) { if( event.keyCode == 27 ) { self.close(); } return true; } /** * ############################################################################## * FORM Field Array 관련 function */ /** * Array의 length구하기 * 파라미터)> obj: Array객체 * 사용예)> getObjLength(f.checkbox) */ function getObjLength(obj) { if( obj == null ) { return 0; } else { return obj.length == null ? 1 : obj.length; } } /** * index에 해당하는 Object를 리턴 * 파라미터)> obj: Array객체,index: Array 순번 * 사용예)> getObj(f.checkbox,i) */ function getObj(obj, index) { if( obj.length == null ) { return obj; } else { return obj[index]; } } /** * Array에 들어있는 값과 파라미터 값과 같은 값을 가지고 있는 객체를 리턴 * 파라미터)> obj: Array객체,value: Array안의 값과 비교될 값 * 사용예)> getObjByValue(f.checkbox,'aa') */ function getObjByValue(obj, value) { for( var i = 0 ; i < getObjLength(obj) ; i++ ) { if( getObj(obj, i).value == value ) { return getObj(obj, i); } } } /** * Array에 파라미터 값을 넣는다. * 파라미터)> obj: Array객체,value: Array안에 들어갈 값 * 사용예)> setObjValue(f.checkbox,'aa') */ function setObjValue(obj, value) { if( obj.length == null ) { obj.value = value; } else { for( var i = 0 ; i < obj.length ; i++ ) { obj[i].value = value; } } } /** * 중복되는 Value를 가지는지 여부를 리턴 * 리턴값 : null => 중복값 없음 * Object Array => 중복하는 객체 Array */ function getDuplicatedObjValue(obj) { if( obj.length == null ) { return null; } else { for( var i = 0 ; i < obj.length ; i++ ) { for( var j = i + 1 ; j < obj.length ; j++ ) { if( obj[i].value == obj[j].value ) { return new Array(obj[i], obj[j]);; } } } return null; } } /** * ############################################################################## * FORM 관련 function */ var IS_SUBMIT = false; function formSubmit( formObject, varShowLayer ) { var isShowLayer = false; if( varShowLayer != null && varShowLayer != false ) { isShowLayer = true; } try { if( isShowLayer ) { showFormSubmitLayer(); } //alert("formObject.isSubmit==> "+formObject.isSubmit); if( formObject.isSubmit == null ) formObject.issubmit = false; if( !formObject.isSubmit ) { formObject.issubmit = true; if( formObject.method.toLowerCase() == "get" ) formObject.action = getDummyUrl(formObject.action); formObject.submit(); } else { setWindowStatus(window, "전송중입니다. 잠시만 기다려 주십시요.", 5); } } catch(errorObject) { showErrorDlg(errorObject); } } /** * 전송중 메세지 이미지 레이어 나타나게 함. */ function showFormSubmitLayer(){ try { if( document.all.FormSendLayer != null ) { var xPos = document.body.clientWidth / 2 + document.body.scrollLeft - 145; var yPos = document.body.clientHeight / 2 + document.body.scrollTop - 44; document.all.FormSendLayer.style.posLeft = xPos; document.all.FormSendLayer.style.posTop = yPos; document.all.FormSendLayer.style.visibility = "visible"; document.all.FormSendLayer.style.zIndex = 100; } } catch(errorObject) { showErrorDlg(errorObject); } } /** * 폼전송시 중복 전송 방지기능 초기화 */ function resetFormSubmit(){ try { if( IS_SUBMIT ) { IS_SUBMIT = false; window.status = ""; hideFormSubmitLayer(); } } catch(errorObject) { showErrorDlg(errorObject); } } /** * 전송중 메세지 이미지 레이어 숨김. */ function hideFormSubmitLayer() { try { if( document.all.FormSendLayer != null ) { document.all.FormSendLayer.style.visibility = "hidden"; } } catch(errorObject) { showErrorDlg(errorObject); } } /** * Form안에 속하는 필수항목(Object)들이 모두 입력되었는지를 체크 * return true : 필수 항목이 입력되지 않은 항목이 존재 * return false : 필수 항목이 입력되지 않은 항목이 없음 */ function doValidFormRequired(formObject) { var firstValidatedElement = null; var isExistValidatedElement = false; var msg = "필수항목을 입력 바랍니다.\n\n항목명 : "; var ischk = ""; try { for( var i = 0 ; i < formObject.elements.length ; i++ ) { var formElement = formObject.elements[i]; var formElementValue = ""; switch(formElement.type) { case 'text' : formElementValue = formElement.value; ischk = doCheckMaxSize(formElement); break; case 'hidden' : case 'password' : case 'textarea' : formElementValue = formElement.value; break; case 'select-one' : formElementValue = getSelectedValue(formElement); break; case 'radio' : formElementValue = getCheckedValue(formElement); break; case 'checkbox' : formElementValue = isChecked(formElement); break; case 'select-multiple' : formElementValue = isSelected(formElement); break; } if( formElement.getAttribute("requiredChk") != '' && formElement.getAttribute("required") != null) { if( formElementValue == "" ){ isExistValidatedElement = true; msg = "필수항목을 입력 바랍니다.\n\n항목명 : "; if( formElement.desc == null ) msg += formElement.name; else msg += formElement.desc; alert(msg); formElement.focus(); return false; } } if(ischk != ""){ msg = "항목의 길이를 확인 바랍니다.\n\n항목명 : "; isExistValidatedElement = true; if( firstValidatedElement == null ) firstValidatedElement = formElement; if( formElement.desc == null ) msg += formElement.name; else msg += formElement.desc; msg += ischk; alert(msg); formElement.focus(); return false; } } return true; } catch(errorObject) { showErrorDlg("common_js.doValidFormRequired()", errorObject); } } function doCheckMaxSize(obj){ var max_length = obj.getAttribute("maxlength"); var real_length = doValidLength(obj.value); var msg = ""; if(real_length > max_length){ msg = "\n => 최대: " + max_length + "\n => 현재: " +real_length; } return msg; } /** * 한글, 영문 포함해서 byte수 계산 */ function doValidLength(str) { var i = 0; var li_byte = 0; var ls_one_char = ""; for(i=0 ; i 4) li_byte += 3; else li_byte += 1; } return li_byte; } /** * URL에 "dummy=[날짜 + 시간]"에 파라미터를 붙여서 리턴한다. */ function getDummyUrl(url) { var checkExt = [ ".screen?", ".jsp?" ]; var isExistParameter = false; for( var i = 0 ; i < checkExt.length ; i++ ) { if( url.indexOf(checkExt[i]) != -1 ) { isExistParameter = true; break; } } if( !isExistParameter ) url = url + "?dummy=" + getDateTime(); else url = url + "&dummy=" + getDateTime(); return url; } /** * ############################################################################## * WINDOW 관련 function */ function setWindowStatus(win, msg, timeout) { try { setTimeout("clearWindowStatus()", (timeout * 1000)); windowObject.status = msg; } catch(errorObject) { } } function clearWindowStatus() { window.status = ""; } /** * 윈도우를 띄울때 화면의 중앙에 위치시킨다. * 파라미터)> url: 주소, windowName: 윈도우 이름, windowWidth: 팝업 윈도우의 가로 크기, windowHeight: 팝업 윈도우의 세로 크기, windowFeatures: 상태값) * 사용예)> openWindowCenter( getDummyUrl("/cop/COPSPInputNewJipCodeForm.screen?dept_cd="+f.dept_cd.value), "compare_table_view", 410, 270, "toolbar=no,directories=no,status=no,scrollbars=no,resize=no,menubar=no" ); */ function openWindowCenter(url, windowName, windowWidth, windowHeight, windowFeatures) { try { if( windowFeatures == null || windowFeatures == "" ) windowFeatures = "toolbar=no,directories=no,status=no,scrollbars=yes,resize=no,menubar=no"; var xPos = (screen.availWidth - windowWidth) / 2; var yPos = (screen.availHeight - windowHeight) / 2; var win = window.open( url , windowName, "top=" + yPos + ",left=" + xPos + ",width=" + windowWidth + ",height=" + windowHeight + "," + windowFeatures); //win.moveTo(xPos, yPos); win.focus(); return win; } catch(errorObject) { showErrorDlg("common_js.opwnWindowCenter()", errorObject); } } /** * ############################################################################## * 날짜 관련 function */ /** * 년월일 시분초 를 얻는다. * 사용예)> var timeval = getDateTime(); */ function getDateTime() { return getDate() + "" + getTime(); } /** * 년월일을 얻는다. * 사용예)> var timeval = getDate(); */ function getDate() { var date = new Date(); var year = date.getYear(); var month = date.getMonth() + 1; var day = date.getDate(); if( year < 1000 ) { year += 1900; } if( month < 10 ) { month = "0" + month; } if( day < 10 ) { day = "0" + day; } return "" + year + month+ day; } /** * 현재 년을 얻는다. */ function get_year() { var date = new Date(); var year = date.getYear(); if( year < 1000 ) { year += 1900; } return year ; } /** * 현재 월을 얻는다. */ function get_month() { var date = new Date(); var month = date.getMonth() + 1; if( month < 10 ) { month = "0" + month; } return month ; } /** * 현재 일을 얻는다. */ function get_day() { var date = new Date(); var day = date.getDate(); if( day < 10 ) { day = "0" + day; } return day; } /** * 시분초를 얻는다. * 사용예)> var timeval = getDate(); */ function getTime() { var date = new Date(); var hour = date.getHours(); var minute = date.getMinutes(); var second = date.getSeconds(); if( hour < 10 ) hour = "0" + hour; if( minute < 10 ) minute = "0" + minute; if( second < 10 ) second = "0" + second; return "" + hour + minute + second; } /** * 날자를 입력받아 입력받은 포맷으로 바꿔준다. * 사용예)>getFormatDateTime(saveDate, "symbol") */ function getFormatDateTime(dateTime, format) { var KOREAN = [ "년 ", "월 ", "일 ", "시 ", "분 ", "초 " ]; var SYMBOL = [ "-", "-", " ", ":", ":", "" ]; var useArray; if( format.toUpperCase() == "KOREAN" ) useArray = KOREAN; else if( format.toUpperCase() == "SYMBOL" ) useArray = SYMBOL; var str = ""; if( dateTime.length == 8 || dateTime.length == 14 ) { str += dateTime.substring(0, 4) + useArray[0]; str += dateTime.substring(4, 6) + useArray[1]; str += dateTime.substring(6, 8) + useArray[2]; if( dateTime.length == 14 ) { str += dateTime.substring( 8, 10) + useArray[3]; str += dateTime.substring(10, 12) + useArray[4]; str += dateTime.substring(12, 14) + useArray[5]; } } return str; } /** * 해당 년월의 마지막 일자를 리턴 */ function getLastDay(year, month) { var Last_DAY = new Array( 31, // 1? 28, // 2? 31, // 3? 30, // 4? 31, // 5? 30, // 6? 31, // 7? 31, // 8? 30, // 9? 31, // 10? 30, // 11? 31 ); // 12? // 윤년 var a_leap_year; if( year % 4 == 0 && year % 100 != 0 ) a_leap_year = true; else a_leap_year = false; if( year % 1000 == 0 ) MONTH = true; // 2월의 값을 윤년여부에 따라 변환. Last_DAY[1] = (a_leap_year) ? 29 : 28 ; return Last_DAY[month]; } /** /** * ############################################################################## * 문자열 관련 function */ /** * Object의 문자열 byte 길이를 리턴. * 파라미터)> object: 객체이름 * 사용예)> getObjectByteLength(f.text) */ function getObjectByteLength(object) { var len = 0; if( object == null || object.value == null ) return 0; return getByteLength(object.value); } /**YMI 2007-09-19 추가 * Object의 문자열 byte 길이를 리턴. * 파라미터)> str: String 값 * 사용예)> getStringByteLength(str) */ function getStringByteLength(object) { var len = 0; if( object == null) return 0; return getByteLength(object); } /** * 문자열을 입력받아 byte 길이를 리턴. * 파라미터)> str: 문자열 * 사용예)> getByteLength("우리나라") */ function getByteLength(str) { var len = 0; for( var i = 0 ; i < str.length ; i++ ) { var c = escape(str.charAt(i)); if ( c.length == 1 ) len ++; else if( c.indexOf("%u") != -1 ) len += 2; else if( c.indexOf("%") != -1 ) len += c.length/3; } return len; } /** * 사업자번호를 입력받아 체크 * 파라미터)> str: 사업자번호 * 사용예)> chkVenderNum("123-81-23456") */ function chkVenderNum(str) { var strNumb = str; if( strNumb.length != 10 ) { return false; } sumMod = 0; sumMod += parseInt(strNumb.substring(0,1)); sumMod += parseInt(strNumb.substring(1,2)) * 3 % 10; sumMod += parseInt(strNumb.substring(2,3)) * 7 % 10; sumMod += parseInt(strNumb.substring(3,4)) * 1 % 10; sumMod += parseInt(strNumb.substring(4,5)) * 3 % 10; sumMod += parseInt(strNumb.substring(5,6)) * 7 % 10; sumMod += parseInt(strNumb.substring(6,7)) * 1 % 10; sumMod += parseInt(strNumb.substring(7,8)) * 3 % 10; sumMod += Math.floor(parseInt(strNumb.substring(8,9)) * 5 / 10); sumMod += parseInt(strNumb.substring(8,9)) * 5 % 10; sumMod += parseInt(strNumb.substring(9,10)); if( sumMod % 10 != 0 ) { return false; } return true; } /** * 주민등록번호 체크 */ function chkRegNum(str) { if( str.length != 13 ) { return false; } var reg_str = str.substring(0, 6) + "-" + str.substring( 6, 13); var sum = 0; var mod = 0; var yearIn = 0; var monthIn = 0; var sex = 0; var dateIn = 0; for( i = 0 ; i < 13 ; i++ ) { if( i == 0 ) yearIn += parseInt(reg_str.charAt(i)) * 10; if( i == 1 ) yearIn += parseInt(reg_str.charAt(i)); if( i == 2 ) monthIn += parseInt(reg_str.charAt(i)) * 10; if( i == 3 ) monthIn += parseInt(reg_str.charAt(i)); if( i == 4 ) dateIn += parseInt(reg_str.charAt(i)) * 10; if( i == 5 ) dateIn += parseInt(reg_str.charAt(i)); if( i == 7 ) sex = parseInt(reg_str.charAt(i)); if( i < 6 ) sum += parseInt(reg_str.charAt(i)) * (i + 2); if( i > 6 && i < 9 ) sum += parseInt(reg_str.charAt(i)) * (i + 1); if( i > 8 ) sum += parseInt(reg_str.charAt(i)) * (i - 7); } mod = 11 - (sum % 11); if( (11 - (sum % 11)) >= 10 ) { mod -= 10; } if( mod != parseInt(reg_str.charAt(13)) ) { return false; } if( monthIn < 1 || monthIn > 12 || dateIn < 1 || dateIn > 31 ) { return false; } if( (monthIn == 4 || monthIn == 6 || monthIn == 9 || monthIn == 11 ) && dateIn > 30 ) { return false; } if( monthIn == 2 && dateIn > 29 ) { return false; } if( sex != 1 && sex != 2 && sex != 3 && sex != 4 ) { // 1, 3:?? 2, 4:?? return false; } return true; } /** * 전화번호 필드의 숫자여부와 사이즈 체크 * 파라미터)> form1.tel_1: 객체이름, size: 체크될 size * 사용예) checkTel(form1.tel_1, 3); */ function checkTel(obj, size) { if( isDigitValue(obj.value) && getByteLength(obj.value) >= size ) return true; return false; } /** * Input 폼 필드의 내용이 비어 있는지 체크 * 파라미터)>obj: 객체이름 * 사용예) if( !isEmpty(form1.message) ) * Error 처리 */ function isEmpty( obj ) { var temp = obj.value; if( temp.trim() == "" ) { return true; } return false; } /** * String의 특성별 유효성 체크 * 파라미터)>str: 입력된 값, type: 유형 * 사용예) chkString( f.loginname.value, "ID") : 로그인아이디가 영문자/숫자만 입력되었는지 확인 * 사용예) chkString( f.age.value, "DIGIT") : 나이가 숫자로만 입력되었는지 확인 */ function chkString( str , type ) { if( str != "" ) { type = type.toUpperCase(); count = 0; roof = 0; if( type == "DIGIT" ) { cp_string = "1234567890"; roof = 10; } else if( type = "ID" ) { cp_string = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"; roof = 26 + 26 + 10; } for( i = 0 ; i < roof ; i++ ) { for( j = 0 ; j < str.length ; j++ ) { if( cp_string.charAt(i) == str.charAt(j) ) { count++; } } } if( count == str.length ) { return true; } else { return false; } } return false; } /** * Object의 value가 숫자로만 되어있는지 체크한다. * 파라미터)>obj: 객체이름 * 사용예) if( isDigitObject(form1.num) ) */ function isDigitObject(obj){ return isDigitValue(obj.value); } /** * value가 숫자로만 되어있는지 체크한다. * 파라미터)>value: 입력된 값 * 사용예) if( isDigitValue(form1.num.value) ) */ function isDigitValue(value) { try { inputStr = value; for( var i = 0 ; i < inputStr.length ; i++ ) { var oneChar = inputStr.charAt(i) if (oneChar < "0" || oneChar > "9") { return false; } } return true; } catch(errorObject) { showErrorDlg("common_js.isDigitValue()", errorObject); return false; } } /** * 메일형식 체크 * 파라미터)>strEmail: 입력된 메일 * 사용예) if( isDigitValue(form1.num.value) ) */ function checkEmail(strEmail) { var arrMatch = strEmail.match(/^(\".*\"|[A-Za-z0-9_-]([A-Za-z0-9_-]|[\+\.])*)@(\[\d{1,3}(\.\d{1,3}){3}]|[A-Za-z0-9][A-Za-z0-9_-]*(\.[A-Za-z0-9][A-Za-z0-9_-]*)+)$/); if( arrMatch == null ) { return false; } var arrIP = arrMatch[2].match(/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/); if( arrIP != null ) { for( var i = 1 ; i <= 4 ; i++ ) { if( arrIP[i] > 255 ) { return false; } } } return true; } /** * 전화번호 형식 체크 20040707 @monoeye : Submit용 전화번호 체크 루틴 * 파라미터)>strTelno: 입력된 전화번호 * 사용예) if( checkTelno(form1.telnum.value) ) */ function checkTelno(strTelno) { for (var i = 0 ; i < strTelno.length ; i++){ if(isNaN(parseInt(strTelno.charAt(i))) && strTelno.charAt(i)!='-'){ return false; } } return true; } /** * String이 한글로만 되어있는지 검사 * 파라미터)>str: 입력된 값 * if( isKoreanValue(form1.num.value) ) */ function isKoreanValue( str ) { if( str == null ) return false ; for( var i = 0 ; i < str.length ; i++ ) { var c = str.charCodeAt(i); //( 0xAC00 <= c && c <= 0xD7A3 ) 초중종성이 모인 한글자 //( 0x3131 <= c && c <= 0x318E ) 자음 모음 if( !( ( 0xAC00 <= c && c <= 0xD7A3 ) || ( 0x3131 <= c && c <= 0x318E ) ) ) { return false ; } } return true; } /** * String Object에 trim() 메서드 추가 * 사용예) str.trim(); */ String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); } String.prototype.bytes = function() { var str = this; var l = 0; for (var i=0; i 128) ? 2 : 1; return l; } function replaceStr(str,out,add) { var temp = "" + str; while (temp.indexOf(out)>-1) { pos= temp.indexOf(out); temp = "" + (temp.substring(0, pos) + add + temp.substring((pos + out.length), temp.length)); } return temp; } /** * 공백을 지워서 obj 값을 반환한다. * 파라미터)>obj: 객체이름 * 사용예) set_removeAllSpace(f.tel_no); */ function set_removeAllSpace(obj) { var position; position = obj.value.indexOf(" "); while (position != -1){ obj.value = obj.value.replace(" ", ""); position = obj.value.indexOf(" "); } return obj.value; } /** * 공백을 지워서 str 반환한다. * 파라미터)>str: 문자열 * 사용예) set_removeAllSpace("abc d"); */ function get_removeAllSpace(str) { var position; position = str.indexOf(" "); while (position != -1){ str = str.replace(" ", ""); position = str.indexOf(" "); } return str; } /*------------------------------------------------------------------------- parseInt_isNaN() Spec : parseInt?? NaN?? 0? ???? ??? ?? ???? Argument : ('123') Return : int Example : var intVal = parseInt_isNaN("1234"); -------------------------------------------------------------------------*/ function parseInt_isNaN(str) { if( isNaN( parseInt(str) ) ) { return 0; } else { return parseInt(str); } } /** * URLDecode * http://www.ietf.org/rfc/rfc2396.txt */ function URLDecode(encoded) { // Replace + with ' ' // Replace %xx with equivalent character // Put [ERROR] in output if %xx is invalid. var HEXCHARS = "0123456789ABCDEFabcdef"; var plaintext = ""; var i = 0; while (i < encoded.length) { var ch = encoded.charAt(i); if (ch == "+") { plaintext += " "; i++; } else if (ch == "%") { if (i < (encoded.length-2) && HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 && HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) { plaintext += unescape( encoded.substr(i,3) ); i += 3; } else { alert( 'Bad escape combination near ...' + encoded.substr(i) ); plaintext += "%[ERROR]"; i++; } } else { plaintext += ch; i++; } } // while return plaintext; } /** * ############################################################################## * 숫자 관련 */ /** * Float 숫자의 곱셈 처리에 JavaScript 버그를 피하기 위해서 사용하는 함수 * 파라미터)>num_1: 곱하게 될 수, num_2: 곱하게 될 수 * 사용예) multiplyFloat(0.1, 0.1); */ function multiplyFloat(num_1, num_2) { var f_num_1 = ""; var f_num_2 = ""; var l_num_1 = ""; var l_num_2 = ""; var r_num_1 = ""; var r_num_2 = ""; var dotIndex_1; var dotIndex_2; var point = 0; var result = ""; try { f_num_1 = parseFloat(num_1, 10) + ""; f_num_2 = parseFloat(num_2, 10) + ""; if( f_num_1 < 0 ) minus_1 = true; if( f_num_2 < 0 ) minus_2 = true; dotIndex_1 = f_num_1.indexOf('.'); dotIndex_2 = f_num_2.indexOf('.'); if( dotIndex_1 > 0 ) { l_num_1 = f_num_1.substring(0, dotIndex_1); r_num_1 = f_num_1.substring(dotIndex_1 + 1, f_num_1.length); } else { l_num_1 = f_num_1; } if( dotIndex_2 > 0 ) { l_num_2 = f_num_2.substring(0, dotIndex_2); r_num_2 = f_num_2.substring(dotIndex_2 + 1, f_num_2.length); } else { l_num_2 = f_num_2; } point = r_num_1.length + r_num_2.length; var temp = (parseInt(l_num_1 + r_num_1, 10) * parseInt(l_num_2 + r_num_2, 10)) + ""; /* alert(l_num_1 + r_num_1); alert(l_num_2 + r_num_2); alert(temp); alert(temp.length); alert(point); */ if( temp.length > point ) { result = parseFloat(temp.substring(0, temp.length - point) + "." + temp.substring(temp.length - point, temp.length), 10); } else if( temp.length == point ) { result = parseFloat("0." + temp, 10); } else { var size = point - temp.length; for( var i = 0 ; i < size ; i++ ) { temp = "0" + temp; } result = parseFloat("0." + temp, 10); } return result; } catch(errorObject) { showErrorDlg("common_js.multiplyFloat()", errorObject); return Nan; } } /** * 숫자를 한글로 변환한다. * 파라미터)>num: 숫자 * 사용예) numberToHangul(1234); */ function numberToHangul(num) { bigUnitArray = new Array( "", "?", "?", "?"); unitArray = new Array( "", "?", "?", "?"); hanArray = new Array( "", "?", "?", "?", "?", "?", "?", "?", "?", "?" ); splitedNum = new Array(); pos= num.length; idx = 0; while(true) { if( pos - 4 > 0 ) { splitedNum[idx] = num.substring(pos-4, pos); } else { splitedNum[idx] = num.substring(0, pos); break; } pos = pos-4; idx++; } han = ""; splietedNumSize = splitedNum.length; for( j = splietedNumSize -1 ; j >= 0 ; j-- ) { tmp = splitedNum[j]; tmplen = splitedNum[j].length; for( i = tmplen ; i > 0 ; i-- ) { n = tmp.charAt(tmplen - i); if( n == "0" ) continue; if( n == "1" && i != 1 && !(j == splietedNumSize-1 && i == tmplen) ) { han += unitArray[i-1]; } else { han += hanArray[n]+ unitArray[i-1]; } } if( eval(tmp) != 0 ) han += bigUnitArray[j]; } return han; } /** * 숫자를 반올림한다. * 파라미터)>num: 반올림할 숫자, pos:반올림 할 위치 * 사용예)> doRound(12.23,1); */ function doRound(num, pos) { var posV ; if ( pos == 0 ) { posV = 1 ; } else { posV = Math.pow(10, (pos ? pos : 3)) ; } return Math.round(multiplyFloat(num,posV))/posV; } function doFloor(num, pos) { var posV ; if ( pos == 0 ) { posV = 1 ; } else { posV = Math.pow(10, (pos ? pos : 3)) ; } return Math.floor(multiplyFloat(num,posV))/posV; } function addStr(s, cnt) { var i = 0; var rst = ""; while(++i <= cnt) { rst = rst+s; } return rst; } /** * ############################################################################## * 콤보박스 관련 function */ /** * ValueObject Binding * objects.js ?? */ function bindValueObject(obj, vo) { removeAllOptions(obj); for( var i = 0 ; i < vo.getSize() ; i++ ) { addOption(obj, vo.getKey(i), vo.getValue(i)); } } /** * 선택된 콤보박스의 값을 리턴한다. * 파라미터)>obj: 객체 이름 * 사용예)> getSelectedValue(f.selected); */ function getSelectedValue(obj) { if( obj != null && obj.options != null && obj.selectedIndex != -1 ) { return obj.options[obj.selectedIndex].value; } else { return ""; } } /** * 선택된 콤보박스의 Text를 리턴한다. * 파라미터)>obj: 객체 이름 * 사용예)> getSelectedText(f.selected); */ function getSelectedText(obj) { if( obj != null ) { return obj.options[obj.selectedIndex].text; } } /** * 콤보박스의 특정 Value를 선택 * 파라미터)>obj: 객체 이름, val:값 * 사용예)> setSelect(f.selected,'123'); */ function setSelect(obj, val) { if( obj != null && val != null ) { for( var i = 0 ; i < obj.length ; i++ ) { if( obj.options[i].value == val ) { obj.options[i].selected = true; fireEvent(obj, "change"); break; } } } } /** * 스크립트로 value변경시 이벤트 실행. * @param element object * @param event on을 제외한 이벤트 명 * @returns */ function fireEvent(element,event){ if (document.createEventObject){ // dispatch for IE var evt = document.createEventObject(); return element.fireEvent('on'+event,evt); } else{ // dispatch for firefox + others var evt = document.createEvent("HTMLEvents"); evt.initEvent(event, true, true ); // event type,bubbling,cancelable return !element.dispatchEvent(evt); } } /** * */ function addOption(obj, value, desc) { var option = new Option( desc , value , false ); obj.options[obj.options.length] = option; } /** * SELECTBOX?? TOOLTIP ?? */ function addOptionTooltip(obj, value, desc) { var option = new Option( desc , value , false ); option.title = value; obj.options[obj.options.length] = option; } /** * 콤보박스에 항목 입력 * 파라미터)>index:순번, obj:객체이름 , flag:구분 , min:최소 , max:최대 * 사용예)> putSelects(2,f.selected,'YEAR', '5','10'); */ function putSelects(index, obj , flag , min , max) { if( obj.length != null && obj.length != 0 ) { for( var i = 0 ; i < obj.length ; i++ ) { if( i == index ) { putSelect( obj[i] , flag , min , max ); } } } else { putSelect( obj , flag , min , max ); } } /** * 콤보박스에 항목 입력 * 파라미터)> obj:객체이름 , flag:구분 , min:최소 , max:최대 * 사용예)> putSelects(f.selected,'YEAR', '5','10'); */ function putSelect( obj , flag , min , max ) { if( obj == null ) return; var isType = false; if( obj.length == 0 ) { if( flag == "YEAR" ) { isType = true; } else if( flag == "MONTH" ) { min = 1; max = 12; isType = true; } else if( flag == "DAY" ) { min = 1; max = 31; isType = true; } obj.options[0] = new Option("", "", false); if( isType ) { var index = 1; for( var i = min ; i <= max ; i++ ) { var temp = i + ""; temp = ( temp.length == 1 ) ? "0" + temp : temp ; var option = new Option( temp , temp , false ); obj.options[index] = option; index++; } } } } /** * 선택된 항목만 읽게 * 파라미터)> obj:객체이름 * 사용예)> setReadOnlySelect(f.selected); */ function setReadOnlySelect(obj) { if( obj != null ) { var options = obj.options[obj.selectedIndex]; for( var i = obj.length - 1 ; i >= 0 ; i-- ) { obj.options[i] = null; } obj.options[0] = options; } } /** * 모든 항목을 삭제한다. * 파라미터)> obj:객체이름 * 사용예)> removeAllOptions(f.selected); */ function removeAllOptions(obj) { if( obj != null ) { for( var i = obj.length - 1 ; i >= 0 ; i-- ) { obj.options[i] = null; } } } /** * 최상위 항목 제외한 모든 항목을 삭제한다. * 파라미터)> obj:객체이름 * 사용예)> removeAllOptionsExceptTop(f.selected); */ function removeAllOptionsExceptTop(obj) { if( obj != null ) { for( var i = obj.length - 1 ; i >= 1 ; i-- ) { obj.options[i] = null; } } } /** * 선택된 항목을 삭제한다. * 파라미터)> obj:객체이름, val: 삭제될 순번 * 사용예)> removeOption(f.selected,5); */ function removeOption(obj, val) { if( obj != null && val != null ) { for( var i = 0 ; i < obj.length ; i++ ) { if( obj.options[i].value == val ) { obj.options[i] = null; break; } } } } function isSelected(obj) { if( obj != null ) { for( var i = 0 ; i < obj.length ; i++ ) { if( obj.options[i].selected == true ) { return true; } } } return false; } /** * 선택된 항목을 위로 이동시킨다. * 파라미터)> obj:객체이름 * 사용예)> moveUpOption(f.selected,5); */ function moveUpOption(obj) { if( obj.options.length == null ) return; for( var i = 0 ; i < obj.options.length ; i++ ) { obj.options[i].isSelected = obj.options[i].selected; if( obj.options[i].selected && obj.options[i] != "" && obj.options[i] != obj.options[0] ) { var tmpval = obj.options[i].value; var tmpval2 = obj.options[i].text; var tmpval3 = obj.options[i].isSelected; obj.options[i].value = obj.options[i - 1].value; obj.options[i].text = obj.options[i - 1].text obj.options[i].isSelected = obj.options[i - 1].isSelected obj.options[i-1].value = tmpval; obj.options[i-1].text = tmpval2; obj.options[i-1].isSelected = tmpval3; } } for( var i = 0 ; i < obj.options.length ; i++ ) { obj.options[i].selected = obj.options[i].isSelected; } } /** * 선택된 항목을 아래로 이동시킨다. * 파라미터)> obj:객체이름 * 사용예)> moveDownOption(f.selected); */ function moveDownOption(obj) { if( obj.options.length == null ) return; for( var i = obj.options.length - 1 ; i >= 0 ; i-- ) { obj.options[i].isSelected = obj.options[i].selected; if( obj.options[i].selected && obj.options[i] != "" && obj.options[i+1] != obj.options[obj.options.length] ) { var tmpval = obj.options[i].value; var tmpval2 = obj.options[i].text; var tmpval3 = obj.options[i].isSelected; obj.options[i].value = obj.options[i+1].value; obj.options[i].text = obj.options[i+1].text obj.options[i].isSelected = obj.options[i+1].isSelected obj.options[i+1].value = tmpval; obj.options[i+1].text = tmpval2; obj.options[i+1].isSelected = tmpval3; } } for( var i = 0 ; i < obj.options.length ; i++ ) { obj.options[i].selected = obj.options[i].isSelected; } } //############################################################################## // 라디오 버튼 관련 function /** * 선택된 라디오 버튼값을 리턴한다. * 파라미터)> obj:객체이름 * 사용예)> getCheckedValue(f.radiobt); */ function getCheckedValue(obj) { if( obj != null ) { for( var i = 0 ; i < obj.length ; i++ ) { if( obj[i].checked == true ) { return obj[i].value; } } return ""; } return ""; } /** * 라디오 버튼 선택한다. * 파라미터)> obj:객체이름, val:값 * 사용예)> getCheckedValue(f.radiobt,5); */ function setRadio(obj, val) { if( obj != null && val != null ) { for( var i = 0 ; i < obj.length ; i++ ) { if( obj[i].value == val ) { obj[i].checked = true; break; } } } } /** * 라디오 버튼 Disabled 속성 조정 * 파라미터)> obj:객체이름, val:값, disValue: true,false * 사용예)> setRadioDisabled(f.radiobt,5,true); */ function setRadioDisabled(obj, val, disValue) { if( obj != null && val != null ) { if( obj.length == null ) { if( obj.value == val ) obj.disabled = disValue; } else { for( var i = 0 ; i < obj.length ; i++ ) { if( obj[i].value == val ) { obj[i].disabled = disValue; } } } } } /** * 모든 라디오 버튼 Disabled 속성 조정 * 파라미터)> obj:객체이름, disValue: true,false * 사용예)> setRadioDisabledAll(f.radiobt,true); */ function setRadioDisabledAll(obj, disValue) { setCheckDisabledAll(obj, disValue); } function setInitRadio(obj) { if( obj != null) { for( var i = 0 ; i < obj.length ; i++ ) { obj[i].checked = false; } } } //############################################################################## // CheckBox 버튼 관련 function // CheckBox 버튼 선택 function setCheckBox(obj, arrayObj) { if( arrayObj != null && arrayObj.length != null ) { for( var i = 0 ; i < arrayObj.length ; i++ ) { for( var j = 0 ; j < obj.length ; j++ ) { if( obj[j].value == arrayObj[i] ) { obj[j].checked = true; break; } } } } } /** * check설정 * 파라미터)> obj:객체이름, isCheck: true,false * 사용예)> cvtCheckBox(f.checkbt,true); */ function cvtCheckBox(obj, isCheck) { if( obj != null ) { if( obj.length != null ) { for( var i = 0 ; i < obj.length ; i++ ) { if (!obj[i].disabled) obj[i].checked = isCheck; } } else { if (!obj.disabled) obj.checked = isCheck; } } } /** * 같은 체크박스를 타이틀별로 체크하거나 하는데 disabled은 무시한다. * 파라미터)> obj, row개수(화면상의 타이틀), row위치 * 사용예)> company/PURReqSupplyProductView.jsp참조하세요. */ function multi_cvtCheckBox(obj, row_cnt, row_position) { var remain; var chk = 0; var isCheck; for( var i = 0 ; i < getObjLength(obj) ; i++ ) { remain = i%row_cnt; if(row_position == remain) { if(getObj(obj, i).disabled == false) if(getObj(obj, i).checked == true) { chk++; } } } if(chk>0) isCheck = false; else isCheck = true; if( obj != null ) { for( var i = 0 ; i < getObjLength(obj) ; i++ ) { remain = i%row_cnt; if(row_position == remain) if(getObj(obj, i).disabled == false) getObj(obj, i).checked = isCheck; } } } /** * 체크박스에 체크된 항목이 있는지 여부를 리턴한다. * 파라미터)> obj, row개수(화면상의 타이틀), row위치 * 사용예)> isChecked(f.checked); */ function isChecked(obj) { try { if( obj == null ) return false; var isChecked = false; if( obj.length == null ) { isChecked = obj.checked; } else { for( var i = 0 ; i < obj.length ; i++ ) { if( obj[i].checked ) { isChecked = true; break; } } } return isChecked; } catch(errorObject) { showErrorDlg(errorObject); } } /** * 체크박스 Disabled 속성 조정 * 파라미터)> obj:객체이름, val:값 , disValue: true,false * 사용예)> isChecked(f.checked); */ function setCheckDisabled(obj, val, disValue) { if( obj != null && val != null ) { if( obj.length == null ) { if( obj.value == val ) obj.disabled = disValue; } else { for( var i = 0 ; i < obj.length ; i++ ) { if( obj[i].value == val ) { obj[i].disabled = disValue; break; } } } } } /** * 모든 체크박스 Disabled 속성 조정 * 파라미터)> obj:객체이름, disValue: true,false * 사용예)> setCheckDisabledAll(f.checked, true); */ function setCheckDisabledAll(obj, disValue) { if( obj != null ) { if( obj.length == null ) { obj.disabled = disValue; } else { for( var i = 0 ; i < obj.length ; i++ ) { obj[i].disabled = disValue; } } } } function copyTableRow(destTableID, srcTableID) { var destStr = "document.all." + destTableID; var srcStr = "document.all." + srcTableID; var destTableBody = eval(destStr + ".children[0]"); var srcTableBody = eval(srcStr + ".children[0].children[0]"); // ?? var srcCopy = eval(srcStr + ".innerHTML"); var size = eval(srcStr + ".children[0].children[0].children.length"); for( var i = 0 ; i < size ; i++ ) { destTableBody.appendChild(srcTableBody.children[0]); } eval(srcStr + ".innerHTML = srcCopy"); } //############################################################################## // 메세지전달 관련 function /** * 페이지를 이동하는 메세지창 * 파라미터)> msg:메시지, url:주소 * 사용예)> showMoveDlg("이동합니다.", "/com/calljsp.screen"); */ function showMoveDlg(msg, url) { if( confirm(msg) ) { self.location = url; } } /** * 메세지를 출력하고, Object로 focus를 돌려준다. * 파라미터)> obj:객체명, msg:메시지 * 사용예)> ErrMsg(f.gets, "전화번호를 입력하세요"); */ function ErrMsg( obj, msg ) { try { //alert( msg ); dlgAlert(msg); try { obj.focus(); } catch(errorObject) { } try { obj.select(); } catch(errorObject) { } return false; } catch(errorObject) { showErrorDlg("common_js.ErrMsg()", errorObject); } } // Explorer Exception 처리 function showErrorDlg(methodName, errorObject) { try { if( errorObject == null ) { errorObject = methodName; methodName = "unknowned method"; } var msg = ""; msg += "Method Name : " + methodName + "\n\n"; if( errorObject.description != null ) { msg += errorObject.description + "\n\n" + "Error Number : " + (errorObject.number>>16 & 0x1FFF) + "\n\n"; } else { msg += "Error Number : " + (errorObject.number>>16 & 0x1FFF) + "\n\n"; } alert(msg); } catch(eo) { alert(eo); } } //2004-05-13추가 sukjin chang /* 내 용 : 파라미터로 받은 일자의 요일 리턴 파라미터 : pDate - 일자 (8자리 숫자로 이루어진 문자열) Return값 : 요일 (일,월,화,수,목,금,토 => 0,1,2,3,4,5,6) */ function fGetDay(pDate) { try { var vDate = pDate.toString(); // var vDayArray = ["일", "월", "화", "수", "목", "금", "토"]; var vTempDate = new Date(); vTempDate.setYear(vDate.substring(0, 4)); vTempDate.setMonth(eval(vDate.substring(4, 6))-1); vTempDate.setDate(vDate.substring(6, 8)); var vDay = vTempDate.getDay(); return vDay; } catch(errorObject) { showErrorDlg(errorObject); } } /* 내 용 : 시작일자와 기간을 받아 종료일자를 리턴 파라미터 : pStartDate - 시작일자 pDateTerm - 기간 Return값 : 종료 일자 */ function fGetEndDate(pStartDate, pDateTerm) { try { // 파라미터로 받은 날짜로 Date 객체 초기화 var vStartDate = new Date(eval(pStartDate.toString(10).substring(0, 4)), eval(pStartDate.toString(10).substring(4, 6)) - 1, eval(pStartDate.toString(10).substring(6, 8))); // 파라미터로 받은 숫자만큼 이후 일자로 setting vStartDate.setDate(vStartDate.getDate() + eval(pDateTerm)); // 년도 문자열화 var vTempYear = vStartDate.getFullYear(); vTempYear = vTempYear.toString(10); // 월 문자열화 var vTempMonth = vStartDate.getMonth()+1; vTempMonth = vTempMonth.toString(10); // 일 문자열화 var vTempDate = vStartDate.getDate(); vTempDate = vTempDate.toString(10); if(vTempMonth.length == 1) vTempMonth = "0" + vTempMonth; if(vTempDate.length == 1) vTempDate = "0" + vTempDate; // 날짜 포맷으로 변환 var vReturnDate = vTempYear + vTempMonth + vTempDate; return vReturnDate; } catch(errorObject) { showErrorDlg(errorObject); } } //2004-05-28 추가 sukjin chang /*------------------------------------------------------------------------- fDisplayDiv() Spec : //파라미터로 받은 DIV 영역에 새로운 HTML Code 를 삽입 Example : fDisplayDiv(tdivid,html); -------------------------------------------------------------------------*/ function fDisplayDiv(pDivName, pHtml) { // 파라미터로 받은 DIV 영역에 새로운 HTML Code 를 삽입 //alert ('[' + parent.document.getElementById(pDivName).innerHTML + ']'); parent.document.getElementById(pDivName).innerHTML = pHtml; //pHtml = ""; // vHtml Clear } /*------------------------------------------------------------------------- f_chkJumin() Spec : //수량형식으로 변환한다. 12345 -> 12345.000 Example : formatQty(this); -------------------------------------------------------------------------*/ //수량형식으로 변환한다. 12345 -> 12345.000 function formatQty(obj){ obj.value = getQty(obj.value); } function getQty(str){ var value = str == ""? "0": str; var num1, num2; var len = value.length; var off = value.indexOf("."); if( off != -1){ num1 = value.substring(0, off); num2 = value.substring(off+1); if(num2.length<3){ num2 = rpad(num2, 3, '0'); } else { num2 = num2.substring(0, 3); } value = plusComma(num1.replace(/,/g, "")) + "." + num2; } else { value = plusComma(value.replace(/,/g, "")) +".000"; } return value; } /*------------------------------------------------------------------------- Spec : //수량형식으로 변환한다. 12345 -> 12345.0000 Example : formatQty4Hous(this); -------------------------------------------------------------------------*/ // Left 빈자리 만큼 padStr 을 붙인다. function lpad(src, len, padStr){ var retStr = ""; var padCnt = Number(len) - String(src).length; for(var i=0;i 12345.0000 function formatQty4Hous(obj){ obj.value = getQty4Hous(obj.value); } function getQty4Hous(str){ var value = str == ""? "0": str; var num1, num2; var len = value.length; var off = value.indexOf("."); if( off != -1){ num1 = value.substring(0, off); num2 = value.substring(off+1); if(num2.length<4){ num2 = rpad(num2, 4, '0')+""; } else { num2 = num2.substring(0, 4); } value = plusComma(num1.replace(/,/g, "")) + "." + num2; } else { value = plusComma(value.replace(/,/g, "")) +".0000"; } return value; } //수량형식으로 변환한다. 12345 -> 12345.000 function formatQty3Hous(obj){ obj.value = getQty4Hous(obj.value); } function getQty3Hous(str){ var value = str == ""? "0": str; var num1, num2; var len = value.length; var off = value.indexOf("."); if( off != -1){ num1 = value.substring(0, off); num2 = value.substring(off+1); if(num2.length<3){ num2 = rpad(num2, 3, '0')+""; } else { num2 = num2.substring(0, 3); } value = plusComma(num1.replace(/,/g, "")) + "." + num2; } else { value = plusComma(value.replace(/,/g, "")) +".000"; } return value; } /*------------------------------------------------------------------------- f_chkJumin() Spec : 주민등록번호 Check Argument : (document.form_name.input_name,document.form_name.input_name) Return : boolean Example : if(f_chkJumin(document.form.Jumin1,document.form.Jumin2) == false) return; -------------------------------------------------------------------------*/ function f_chkJumin(jumin1,jumin2) { var jumin_1 = jumin1.value; var jumin_2 = jumin2.value; var number = jumin_1 + jumin_2; var sum=0; var mod=0; var yearin=0; var monthin=0; var datein=0; // 외국인 일때.... //if((jumin_2.substring(0,1) == "7") || (jumin_2.substring(0,1) == "8")) { // if ((jumin_2.substring(1,2) == "1") || (jumin_2.substring(1,2) == "2") || // (jumin_2.substring(1,2) == "3") || (jumin_2.substring(1,2) == "4") // ) // return true; //} // 외국인 일때....2005.06.21수정 if((jumin_2.substring(0,1) == "5") || (jumin_2.substring(0,1) == "6")) { var fgsum = 0; var odd = 0; buf = new Array(13); for (i=0;i<13;i++ ) { buf[i] = parseInt(number.charAt(i)); } if ((buf[11]!=6) && (buf[11]!=7) && (buf[11]!=8) && (buf[11]!=9)) { ErrMsg2("","【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오."); jumin1.value = ""; jumin2.value = ""; jumin1.focus(); return false; } multipliers = [2,3,4,5,6,7,8,9,2,3,4,5]; for (i=0,fgsum=0;i<12;i++) { fgsum += (buf[i] *= multipliers[i]); } fgsum = 11-(fgsum%11); if (fgsum>=10) fgsum -= 10; fgsum += 2; if (fgsum>=10) fgsum -= 10; if (fgsum!=buf[12]) { ErrMsg2("","【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오."); jumin1.value = ""; jumin2.value = ""; jumin1.focus(); return false; } return true; } //내국인일때 else { for ( var i=0; i<12; i++ ) { if (i==0) yearin += parseInt(number.charAt(i),10)*10; if (i==1) yearin += parseInt(number.charAt(i),10); if (i==2) monthin += parseInt(number.charAt(i),10)*10; if (i==3) monthin += parseInt(number.charAt(i),10); if (i==4) datein += parseInt(number.charAt(i),10)*10; if (i==5) datein += parseInt(number.charAt(i),10); if (i<6) sum += parseInt(number.charAt(i),10)*(i+2); if (i>5&&i<8) sum += parseInt(number.charAt(i),10)*(i+2); if (i>7) sum += parseInt(number.charAt(i),10)*(i-6); } mod = 11 - (sum%11); if ((11-(sum%11)) >= 10) mod -= 10; if(mod!=parseInt(number.charAt(12),10)) { //alert("【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오."); ErrMsg2("","【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오."); jumin1.value = ""; jumin2.value = ""; jumin1.focus(); return false; } if(monthin < 1 || monthin > 12 || datein < 1 || datein > 31) { //alert("【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오."); ErrMsg2("","【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오."); jumin1.value = ""; jumin2.value = ""; jumin1.focus(); return false; } if((monthin ==4 || monthin == 6 || monthin == 9 || monthin ==11 ) && datein > 30) { //alert("【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오."); ErrMsg2("","【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오."); jumin1.value = ""; jumin2.value = ""; jumin1.focus(); return false; } if(monthin ==2 && datein > 29) { //alert("【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오."); ErrMsg2("","【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오."); jumin1.value = ""; jumin2.value = ""; jumin1.focus(); return false; } } return true; } /*------------------------------------------------------------------------- f_dayLaborChkJumin() Spec : 노무관리 - 일용직 주민등록번호 Check Argument : (document.form_name.input_name,document.form_name.input_name) Return : boolean Example : if(f_chkJumin(document.form.Jumin1,document.form.Jumin2) == false) return; -------------------------------------------------------------------------*/ function f_dayLaborChkJumin(jumin1,jumin2) { var jumin_1 = jumin1.value; var jumin_2 = jumin2.value; // 외국인 일때.... if((jumin_2.substring(0,1) == "7") || (jumin_2.substring(0,1) == "8")) { if ((jumin_2.substring(1,2) == "1") || (jumin_2.substring(1,2) == "2") || (jumin_2.substring(1,2) == "3") || (jumin_2.substring(1,2) == "4") ) return true; } var number = jumin_1 + jumin_2; var sum=0; var mod=0; var yearin=0; var monthin=0; var datein=0; for ( var i=0; i<12; i++ ) { if (i==0) yearin += parseInt(number.charAt(i),10)*10; if (i==1) yearin += parseInt(number.charAt(i),10); if (i==2) monthin += parseInt(number.charAt(i),10)*10; if (i==3) monthin += parseInt(number.charAt(i),10); if (i==4) datein += parseInt(number.charAt(i),10)*10; if (i==5) datein += parseInt(number.charAt(i),10); if (i<6) sum += parseInt(number.charAt(i),10)*(i+2); if (i>5&&i<8) sum += parseInt(number.charAt(i),10)*(i+2); if (i>7) sum += parseInt(number.charAt(i),10)*(i-6); } mod = 11 - (sum%11); if ((11-(sum%11)) >= 10) mod -= 10; if(mod!=parseInt(number.charAt(12),10)) { if ( ! dlgConfirm("규정에 맞지않는 주민등록번호입니다.
무시하고 그냥 입력하시겠습니까?") ) { jumin1.value = ""; jumin2.value = ""; jumin1.focus(); return false; } return true; } if(monthin < 1 || monthin > 12 || datein < 1 || datein > 31) { if ( ! dlgConfirm("규정에 맞지않는 주민등록번호입니다.
무시하고 그냥 입력하시겠습니까?") ) { jumin1.value = ""; jumin2.value = ""; jumin1.focus(); return false; } return true; } if((monthin ==4 || monthin == 6 || monthin == 9 || monthin ==11 ) && datein > 30) { if ( ! dlgConfirm("규정에 맞지않는 주민등록번호입니다.
무시하고 그냥 입력하시겠습니까?") ) { jumin1.value = ""; jumin2.value = ""; jumin1.focus(); return false; } return true; } if(monthin ==2 && datein > 29) { if ( ! dlgConfirm("규정에 맞지않는 주민등록번호입니다.
무시하고 그냥 입력하시겠습니까?") ) { jumin1.value = ""; jumin2.value = ""; jumin1.focus(); return false; } return true; } return true; } //2004-08-05 var vLastSelectedTabID = ""; // 마지막으로 선택된 탭 ID 를 저장할 전역변수 function fSelectTab(pDivID) { // 처음 display 되는 경우가 아니라면(기존에 선택된 탭이 있다면) display 영역의 내용을 해당 탭 영역에 저장 if(vLastSelectedTabID != "") document.getElementById(vLastSelectedTabID).innerHTML = document.all.tabDiv.innerHTML; // 새로 선택한 탭 영역의 내용을 display 영역에 copy document.all.tabDiv.innerHTML = document.getElementById(pDivID).innerHTML; // 코드중복방지를 위해 원본 소스를 삭제 document.getElementById(pDivID).innerHTML = ""; // 새로 선택한 탭 ID 를 전역변수에 저장 vLastSelectedTabID = pDivID; } //2004-08-24 sukjin chang /*----------------------------------------------------------------------------*/ /* FUNCTION ID : setEditMark */ /* 기 능 : */ /* 정해진 데이터 입력 형식(사업자번호, 주민등록번호, 날짜 등 */ /* 구분자)을 설정해서 사용자가 쉽게 데이터를 입력하게 한다. */ /* 인 수 : */ /* obj (문자) */ /* as_format(형식) */ /* 반 환 값 : */ /* 편집한 문자 */ /* 특 이 사 항 : */ /* ')"> */ /*----------------------------------------------------------------------------*/ function setEditMark(as_value, as_format) { /*------------------------------------------------------------------------*/ /* 변수선언 및 초기화. */ /*------------------------------------------------------------------------*/ var i = 0, j = 0, k = 0; /* Index */ var ls_value = ""; /* Value */ /*------------------------------------------------------------------------*/ /* 숫자만 입력가능하게 처리. */ /*------------------------------------------------------------------------*/ for(i = 0; i < as_value.value.length; i++) { /*--------------------------------------------------------------------*/ /* 숫자가 아닌것은 제거. */ /*--------------------------------------------------------------------*/ if (!IsDecimal(as_value.value.charAt(i))) { as_value.value = as_value.value.substring(0, i) + as_value.value.substring(i + 1, as_value.value.length); } } /*------------------------------------------------------------------------*/ /* 문자를 원하는 형식으로 편집. */ /*------------------------------------------------------------------------*/ for(i = 0; i < as_value.value.length; i++) { /*--------------------------------------------------------------------*/ /* 지정한 형식이 존재한 경우. */ /*--------------------------------------------------------------------*/ if (as_format.length > j) { /*----------------------------------------------------------------*/ /* 구분자가 아닌 경우. */ /*----------------------------------------------------------------*/ if ((as_format.substring(j, j + 1) >= "0") && (as_format.substring(j, j + 1) <= "9")) { /*------------------------------------------------------------*/ /* 문자 Edit. */ /*------------------------------------------------------------*/ ls_value = ls_value + as_value.value.substring(i, i + 1); } /*----------------------------------------------------------------*/ /* 구분자인 경우. */ /*----------------------------------------------------------------*/ else { /*------------------------------------------------------------*/ /* 구분자 추가. */ /*------------------------------------------------------------*/ ls_value = ls_value + as_format.substring(j, j + 1); j = j + 1; /*------------------------------------------------------------*/ /* 문자 Edit. */ /*------------------------------------------------------------*/ ls_value = ls_value + as_value.value.substring(i, i + 1); } } j = j + 1; } /*------------------------------------------------------------------------*/ /* 편집한 문자 Setting. */ /*------------------------------------------------------------------------*/ as_value.value = ls_value; return; } /*----------------------------------------------------------------------------*/ /* FUNCTION ID : IsDecimal */ /* 기 능 : */ /* 지정한 문자열이 유효한 숫자 값인지를 검사한다. */ /* 인 수 : */ /* ad_decimal(숫자) */ /* 반 환 값 : */ /* True or False */ /* 특 이 사 항 : */ /*----------------------------------------------------------------------------*/ function IsDecimal(ad_decimal) { /*------------------------------------------------------------------------*/ /* Decimal type validation check. */ /*------------------------------------------------------------------------*/ if ((ad_decimal >= 0) && (ad_decimal <= 9)) { return true; } else { return false; } } /*------------------------------------------------------------------------- onlyNumber() Spec : 숫자만 입력가능하게처리 Argument : (document.form_name.input_name, 6) Return : string Example : var val = onlyNumber(document.form.Jumin1,document.form.Jumin2); -------------------------------------------------------------------------*/ function onlyNumber(obj,default_value) { var i = 0, j = 0, k = 0; /* Index */ var ls_value = ""; /* Value */ /*------------------------------------------------------------------------*/ /* 숫자만 입력가능하게 처리. */ /*------------------------------------------------------------------------*/ for(i = 0; i < obj.value.length; i++) { /*--------------------------------------------------------------------*/ /* 숫자가 아닌것은 제거. */ /*--------------------------------------------------------------------*/ //alert(IsDecimal(obj.value.charAt(i))); //alert(obj.value.charAt(i)); if (IsDecimal(obj.value.charAt(i))) { ls_value += obj.value.substring(i, i+1); } } /*------------------------------------------------------------------------*/ /* 편집한 문자 Setting. */ /*------------------------------------------------------------------------*/ var position; position = ls_value.indexOf(" "); while (position != -1){ ls_value = ls_value.replace(" ", ""); position = ls_value.indexOf(" "); } if(ls_value == '') ls_value = default_value; obj.value = ls_value; return; } /*------------------------------------------------------------------------- f_chk_DDiff() Spec : 시작일자와 끝 일자를 비교하여 시작일자가 크면 true, 시작일자가 작으면 false를 리턴한다. Argument : (document.form_name.input_name, 6) Return : boolean Example : if( f_chk_DDiff("20050101","20050301") ); -------------------------------------------------------------------------*/ function f_chk_DDiff(Start,End) { //i_Start = removeMaskForString(Start.value); //i_End = removeMaskForString(End.value); i_Start = Start; i_End = End; if(i_End == "") i_End = 99999999; num = i_End - i_Start; if ( num < 0 ) return false; else return true; } //sukjin chang 2004-10-07 추가 /*------------------------------------------------------------------------- parseInt_isNaN() Spec : parseInt해서 NaN이면 0을 리턴하고 아니면 값을 리턴한다 Argument : ('123') Return : int Example : var intVal = parseInt_isNaN("1234"); -------------------------------------------------------------------------*/ function parseInt_isNaN(str) { if( isNaN( parseInt(str) ) ) { return 0; } else { return parseInt(str); } } //sukjin chang 2005-05-03 추가 /*------------------------------------------------------------------------- parseFloat_isNaN() Spec : parseFloat해서 NaN이면 0을 리턴하고 아니면 값을 리턴한다 Argument : ('123.12') Return : float Example : var floatVal = parseInt_isNaN("1234"); -------------------------------------------------------------------------*/ function parseFloat_isNaN(str) { if( isNaN( parseFloat(str) ) ) { return 0; } else { return parseFloat(str); } } //sukjin chang 2004-10-14 추가 /*------------------------------------------------------------------------- fDivScroll() Spec : 리스트에서 상단타이틀과 리스트 목록이 같이 이동 Scroll Argument : ('123.12') Return : float Example : fDivScroll(f.div1, f.div2) -------------------------------------------------------------------------*/ function fDivScroll( obj1, obj2 ) { // 스크롤바 따라가기 스크립트 // obj2 가 obj1 을 따라합니다. obj2.scrollLeft = obj1.scrollLeft; } //sukjin chang 2004-11-05 추가 /** * 문자길이를 체크 * 파라미터)> obj:객체이름, field_name:입력할 제목, max_len:허용할 최대길이 * 사용예)> if(f_check_len( obj, "필드명", 길이 ) == false) return; */ function f_check_len( obj, field_name, max_len ) { len = getObjectByteLength(obj); if (len > max_len) { dlgAlert(field_name + "는(은) 숫자 영문은" + max_len + "자 까지 한글은 " + max_len/2 + "자 까지 가능합니다."); obj.focus(); return false; } return true; } /** * YMI 2007-09-19 추가 * 문자길이를 체크(소수점표현식) -- 소수점 뒤는 DB에서 자동으로 해당 자릿수 만큼만 저장한다. * 파라미터)> obj:객체이름, field_name:입력할 제목, max_len:허용할 최대길이, str:소수점(.) 앞에 값 [ex: 123.432 -> str= 123] * 사용예)> if(f_check_len( obj, "필드명", 길이 ) == false) return; */ function f_float_len( obj, field_name, max_len, str) { len = getStringByteLength(str); if (len > max_len) { dlgAlert(field_name + "는(은) 소수점 앞자리는 " + max_len + "자 까지 가능합니다."); obj.focus(); return false; } return true; } //onblur /** * 문자길이를 체크 * 파라미터)> obj:객체이름, max_len:허용할 최대길이 * 사용예)> if(f_check_limit(this, this.maxLength) == false) return; */ function f_check_limit( obj, max_len ) { len = getObjectByteLength(obj); if (len > max_len) { dlgAlert("숫자 영문은" + max_len + "자 까지 한글은 " + max_len/2 + "자 까지 가능합니다."); obj.focus(); return false; } return true; } //onkeyup /** * 문자길이를 체크 * 파라미터)> obj:객체이름, max_len:허용할 최대길이 * 사용예)> if(f_check_limit2(this, this.maxLength) == false) return; */ function f_check_limit2(obj, max_len) { var strCount = 0; var tempStr, tempStr2; for(i = 0;i < obj.value.length;i++) { tempStr = obj.value.charAt(i); if(escape(tempStr).length > 4) strCount += 2; else strCount += 1 ; } if (strCount > max_len){ alert("숫자 영문은" + max_len + "자 까지 한글은 " + max_len/2 + "자 까지 가능합니다."); strCount = 0; tempStr2 = ""; for(i = 0; i < obj.value.length; i++) { tempStr = obj.value.charAt(i); if(escape(tempStr).length > 4) strCount += 2; else strCount += 1 ; if (strCount > max_len) { if(escape(tempStr).length > 4) strCount -= 2; else strCount -= 1 ; break; } else tempStr2 += tempStr; } obj.value = tempStr2; } //return true; } /*------------------------------------------------------------------------- function f_chkDate() Example : if(f_chkDate(obj, "필드명") == false) return; -------------------------------------------------------------------------*/ /** * 날자타입 체크 * 파라미터)> stObj:객체이름, alertMSG:에러 발생시 띄울 메시지 * 사용예)> if(f_check_limit2(this, this.maxLength) == false) return; */ function f_chkDate(stObj,alertMSG) { var st = removeMaskForString(stObj.value); var d_yy = st.substr(0,4); var d_mm = st.substr(4,2); var d_dd = st.substr(6,2); if ((st == "") || (st == null)) return true; if (st == "00000000" || st == "0000-00-00") { stObj.value = '' return true; } if (st.length != 8) { dlgAlert(alertMSG + "의 문자형식은 YYYYMMDD로 입력하여 주십시오."); stObj.focus(); return false; } if ((st.charAt(0) < "1") || (st.charAt(0) > "2")) { dlgAlert(alertMSG + "의 년도를 올바르게 입력하여 주십시오."); stObj.focus(); return false; } for(j=0; j < 3; j++) if ((st.charAt(j) < "0") || (st.charAt(j) > "9")) { dlgAlert(alertMSG + "의 년도를 숫자로 입력하여 주십시오."); stObj.focus(); return false; } for(j=4; j < 6; j++) if ((st.charAt(j) < "0") || (st.charAt(j) > "9")) { dlgAlert(alertMSG + "의 월을 숫자로 입력하여 주십시오."); stObj.focus(); return false; } for(j=6; j < 8; j++) if ((st.charAt(j) < "0") || (st.charAt(j) > "9")) { dlgAlert(alertMSG + "의 일자를 숫자로 입력하여 주십시오."); stObj.focus(); return false; } if (st.charAt(4) == "0") // parseInt가 "08"을 0으로 인식하여 할 수없이 자리수를 나누어 처리... d_mm = st.charAt(5); if (((parseInt(d_mm)) < 1) || ((parseInt(d_mm)) > 12)) { dlgAlert(alertMSG + "의 월은 01부터12까지 입니다"); stObj.focus(); return false; } if (st.substr(6,2) == "08") { d_dd = st.charAt(8); } if (st.substr(6,2) == "09") { d_dd = st.charAt(8); } num = Number(d_mm); if ((0 < num) && (num < 8)) { // 윤달체크 시작 year = Number(d_yy); if (parseInt(d_mm) == 2) { if (year%4 == 0) { if (((parseInt(d_dd)) < 0) || ((parseInt(d_dd)) > 29)) { dlgAlert(alertMSG + "의 일자는 01부터 29일까지 입니다."); stObj.focus(); return false; } }else { if (((parseInt(d_dd)) < 0) || ((parseInt(d_dd)) > 28)) { dlgAlert(alertMSG + "의 일자는 01부터 28일까지 입니다."); stObj.focus(); return false; } } } //윤달체크 끝. if (num%2 == 0) { if (((parseInt(d_dd)) < 1) || ((parseInt(d_dd)) > 30)) { dlgAlert(alertMSG + "의 일자는 01부터30까지 입니다."); stObj.focus(); return false; } } else { if (((parseInt(d_dd)) < 1) || ((parseInt(d_dd)) > 31)) { dlgAlert(alertMSG + "의 일자는 01부터31까지 입니다."); stObj.focus(); return false; } } } // 여기까지가 01-07월까지 일계산 입니다... else { if (num%2 == 0) { if (((parseInt(d_dd)) < 1) || ((parseInt(d_dd)) > 31)) { dlgAlert(alertMSG + "의 일자는 01부터31까지 입니다."); stObj.focus(); return false; } } else { if (((parseInt(d_dd)) < 1) || ((parseInt(d_dd)) > 30)) { dlgAlert(alertMSG + "의 일자는 01부터30까지 입니다."); stObj.focus(); return false; } } } return true; } /*------------------------------------------------------------------------- function upArrowClik(obj) Example : upArrowClik(obj); -------------------------------------------------------------------------*/ /** * obj의 값을 +1시킨다. * 파라미터)> Obj:객체이름 * 사용예)> upArrowClik(obj); */ function upArrowClik(obj){ obj.value = (obj.value*1)+1; } /*------------------------------------------------------------------------- function downArrowClik(obj) Example : downArrowClik(obj); -------------------------------------------------------------------------*/ /** * obj의 값을 -1시킨다. * 파라미터)> Obj:객체이름 * 사용예)> upArrowClik(obj); */ function downArrowClik(obj){ obj.value = (obj.value*1)-1; } /** * 자릿수에 따른 포맷형식 * 파라미터)> strDigit : 소수점 자릿수 * 설명)> Report Designer 에 자릿수 형식 표현을 위해 JSP 단에서 파라미터 값을 미리 형식변환 하여 보낸다. */ function getFormatDigit(strDigit){ // 자릿수에 따른 포맷형식 var strFormat = ""; if(strDigit == "0") strFormat = "#,###"; else if(strDigit == "1") strFormat = "#,###.#"; else if(strDigit == "2") strFormat = "#,###.##"; else if(strDigit == "3") strFormat = "#,###.###"; else if(strDigit == "4") strFormat = "#,###.####"; else if(strDigit == "5") strFormat = "#,###.#####"; else if(strDigit == "6") strFormat = "#,###.######"; return strFormat; } /** * Textarea 크기 조절 * 파라미터 ) imgObj: 사이즈 변화를 주고싶어 클릭할 image, textObj:사이즈 변화를 주고싶은 TEXTAREA, minRows:최저 Row 라인 갯수, maxRows:최대 Row 라인 갯수 * 사용예 )통지사항의 크기를 조절합니다. */ function toggleTextarea(imgObj, textObj, minRows, maxRows) { var maxImgSrc = "/img/buyer/icon/icon_minus.gif"; var minImgSrc = "/img/buyer/icon/icon_plus.gif"; try { if( textObj.rows >= maxRows ) { // 축소 imgObj.src = minImgSrc; textObj.rows = minRows; } else if( textObj.rows < maxRows ) { // 확대 imgObj.src = maxImgSrc; textObj.rows = maxRows; } } catch(errorObject) { } } /** * 두 날짜의 차이를 true false로 반환한다 (조회 종료일 - 조회 시작일) * 두 월의 차이를 true false로 반환한다 (조회 종료월 - 조회 시작월) * @param fromDate - 조회 시작일 or 조회 시작월 (날짜 ex.2002-01-01 or 2002-01) * @param toDate - 조회 종료일 or 조회 종료월 (날짜 ex.2002-01-01 or 2002-02) * @param delim - 날짜 구분자 * @param isMonth - 달체크 여부 true인 경우 달로 체크한다 * @param msgChk - 메시지 출력여부 ( true or false ) * @return boolean */ function compareDate( fromDate, toDate, delim, isMonth, msgChk ){ var delimeter = delim; var from_dt; var to_dt; if( msgChk == undefined || msgChk == null ){ msgChk = true; } // delimeter가 있는 경우 if( delimeter != null && delimeter != undefined && delimeter != "" ){ //년월일체크 if ( !isMonth && (fromDate.length != 10 || toDate.length != 10) ){ alert("올바른 날짜 값이 아닙니다.") return false; } //년월 체크 else if ( isMonth && (fromDate.length != 7 || toDate.length != 7) ){ alert("올바른 년월 값이 아닙니다.") return false; } if( fromDate.indexOf(delimeter) < 0 || toDate.indexOf(delimeter) < 0 ){ alert("날짜 구분자가 맞지 않습니다.") return false; } // 년도, 월, 일로 분리 var start_dt = fromDate.split(delimeter); var end_dt = toDate.split(delimeter); // 월 - 1(자바스크립트는 월이 0부터 시작하기 때문에...) // Number()를 이용하여 08, 09월을 10진수로 인식하게 함. start_dt[1] = (Number(start_dt[1]) - 1) + ""; end_dt[1] = (Number(end_dt[1]) - 1) + ""; //달체크인 경우 if( isMonth ){ from_dt = new Date(start_dt[0], start_dt[1], "01"); to_dt = new Date(end_dt[0], end_dt[1], "01"); } else{ from_dt = new Date(start_dt[0], start_dt[1], start_dt[2]); to_dt = new Date(end_dt[0], end_dt[1], end_dt[2]); } } // delimeter가 없지만 자릿수가 8자리인 경우 else if( fromDate.length == 8 && toDate.length == 8 ){ from_dt = new Date(fromDate.substring(0,4), fromDate.substring(4,6), fromDate.substring(6,8)); to_dt = new Date(toDate.substring(0,4), toDate.substring(4,6), toDate.substring(6,8)); } // delimeter가 없고 년월 체크이면서 자릿수가 6자리인 경우 else if( isMonth && (fromDate.length == 6 && toDate.length == 6) ){ from_dt = new Date(fromDate.substring(0,4), fromDate.substring(4,6), "01"); to_dt = new Date(toDate.substring(0,4), toDate.substring(4,6), "01"); } else{ alert("올바른 날짜 값이 아닙니다.") return false; } /* if( ( to_dt.getTime() - from_dt.getTime() ) == 0 ){ if( isMonth ){ alert("조회기간의 시작월과 종료월이 같습니다."); } else{ alert("조회기간의 시작날짜와 종료날짜가 같습니다."); } return false; } else */ if( ( to_dt.getTime() - from_dt.getTime() ) < 0 ){ if( isMonth && msgChk ){ alert("조회기간의 종료월이 시작월보다 작습니다."); }else if( msgChk ){ alert("조회기간의 종료날짜가 시작날짜보다 작습니다."); } return false; } else { return true; } } function doDownExcel(sheetObj){ sheetObj.SpeedDown2Excel(-1); } /** * 엑셀 다운로드 * 파라미터 > sheetObj 쉬트Object, exceltitle 엑셀 타이틀 * 사용예 > doDownExcel4sheet(document.all.sheet1,"Project NO") * 작성일자 > 2007-12-12 */ function doDownExcel4Sheet(sheetObj,exceltitle) { if (sheetObj.RowCount <= 0){ dlgAlert("There is no data to download."); return; } var param = "exceltitle=" + HMCS_MSG+"Project ["+sheetObj.UrlEncoding(exceltitle)+"]"; // 엑셀 다운로드 sheetObj.SpeedDown2Excel(-1, false, false, "", "/lib/excel_download.screen?"+param); } //현재 자식노드인 경우 부모노드의 Row를 반환한다. function getParentRow( childRow ){ var parentRow = 0; var sheetObj = document.all.sheet1; for ( var i = childRow; i > 0; i-- ) { if( sheetObj.RowLevel(i) == 0 ){ parentRow = i; break; } } return parentRow; } /** * PassWord Validation Check * 패스워드는 8~16자리 이내, 생일, 주민등록번호, 전화번호 같지 않게 ,영문혼용 사용, ID와 4자이상 중복, 연속된 문자, 순차적인 숫자 4개이상 입력 안됨. */ function doValidPassWord(Object) { var minLength = 6; //비밀번호 최소 자리수 var maxLength = 20; //비밀번호 최대 자리수 var msg = ""; try { if(Object.passwd01 != Object.passwd02){ msg = "입력하신 비밀번호가 다릅니다."; return msg; } if(Object.passwd01.length < minLength || Object.passwd01.length > maxLength){ msg = "비밀번호는 "+minLength+"자 이상 ~"+maxLength+" 자 이내로 입력하세요!"; return msg; } if(chkPassword(Object.passwd01) == false ){ msg = "비밀번호는 영문, 숫자의 조합으로 입력하세요!"; return msg; } if(chkNumber(Object.passwd01, Object.tel_no) == false ||chkNumber(Object.passwd01, Object.hand_tel) == false){ msg = "전화번호, 휴대폰번호 등은 비밀번호로 사용할 수 없습니다!" return msg; } var cnt=0,cnt2=1,cnt3=1; var temp=""; for(i=0;i < Object.user_id.length;i++){ temp_id =Object.user_id.charAt(i); for(j=0;j < Object.passwd01.length;j++){ if (cnt >0) j=tmp_pass_no+1; if (temp == "r"){ j=0; temp=""; } temp_pass = Object.passwd01.charAt(j); if (temp_id == temp_pass){ cnt = cnt + 1; tmp_pass_no = j; break; }else if(cnt > 0 && j > 0){ temp="r"; cnt = 0; }else cnt = 0; } //alert("4-cnt="+cnt); if (cnt > 3) break; } if (cnt > 3){ msg = "비밀번호가 ID와 4자 이상 중복되거나, \n연속된 문자나 순차적인 숫자를 4개이상 사용해서는 안됩니다."; return msg; } for(i=0;i < Object.passwd01.length;i++){ temp_pass1 = Object.passwd01.charAt(i); next_pass = (parseInt(temp_pass1.charCodeAt(0)))+1; temp_p = Object.passwd01.charAt(i+1); temp_pass2 = (parseInt(temp_p.charCodeAt(0))); if (temp_pass2 == next_pass) cnt2 = cnt2 + 1; else cnt2 = 1; if (temp_pass1 == temp_p) cnt3 = cnt3 + 1; else cnt3 = 1; if (cnt2 > 3) break; if (cnt3 > 3) break; } if (cnt2 > 3){ msg = "비밀번호에 연속된 문자나 순차적인 숫자를 4개이상 사용해서는 안됩니다."; return msg; } else if (cnt3 > 3){ msg = "비밀번호에 반복된 문자/숫자를 4개이상 사용해서는 안됩니다."; return msg; } } catch(errorObject) { showErrorDlg("common_js.doValidPassWord()", errorObject); return msg = errorObject ; } return msg; } function chkPassword(pass) { chk1 = /^[a-z\d]{6,20}$/i; //a-z와 0-9이외의 문자가 있는지 확인 chk2 = /[a-z]/i; //적어도 한개의 a-z 확인 chk3 = /\d/; //적어도 한개의 0-9 확인 return chk1.test(pass) && chk2.test(pass) && chk3.test(pass); } function chkNumber(pass, Num){ var check = false; var comp = Num.substring(Num.length-4); if(pass.match(comp)== null || Num == ""){ return true; } return check; } /** * Random PassWord Generator * 랜덤 패스워드 생성 */ function randomPassWord() { var pass = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234507890abcdefghijklmnopqrstuvwxyz"; var n = 0 ; var i = 0 ; var s = "" ; var len = 8; for(k=1; k<=len; k++){ n = Math.random()*62; i = Math.round(n); s += pass.charAt(i); } return s; } function changePasswd(Obj){ var url = "/sycs/user/ChangePwd.screen?user_id="+Obj.user_id.value; var argObj = new Object(); argObj.user_id = Obj.user_id.value; argObj.tel_no = Obj.tel_no.value; argObj.fax_no = Obj.fax_no.value; argObj.hand_tel = Obj.hand_tel.value; var result = window.showModalDialog(getDummyUrl(url), argObj ,'dialogWidth:430px;dialogHeight:140px; center:yes; help:no; status:no; scroll:no; resizable:no'); } function deciHistoryView(bizCode, linkTable, docGB, processStatus, keyId, chasu) { var url = "/common/his/DeciHistoryView.screen" + "?biz_code=" + bizCode + "&link_table=" + linkTable + "&doc_gb=" + docGB + "&process_status=" + processStatus + "&key_id=" + keyId; if(linkTable == "WEEK"){ url += "&chasu=" + chasu; } var dlgWidth = 980; var dlgHeight = 400; window.showModalDialog(getDummyUrl(url), this.window,'dialogWidth:' + dlgWidth + 'px;dialogHeight:' + dlgHeight + 'px; center:yes; help:no; status:no; scroll:yes; resizable:no'); } /* * Tab 이미지를 마우스 over/out에 따라 설정한다. */ function setTabImage(obj){ if(obj.style.backgroundImage == '' || obj.style.backgroundImage == 'url(/img/tab/tab_off.gif)'){ obj.style.backgroundImage = "url(/img/tab/tab_on.gif)"; obj.style.setAttribute("color", "white"); }else{ obj.style.backgroundImage = "url(/img/tab/tab_off.gif)"; obj.style.setAttribute("color", "#5e5e5e"); } } var isIE = (navigator.appName.indexOf("Microsoft") != -1) ? 1 : 0; function trueBody(){ return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement: document.body; } function trueBodyParent(){ return (parent.document.compatMode && parent.document.compatMode!="BackCompat")? parent.document.documentElement: parent.document.body; } //Layer Popup 오픈 function fLayerPop(layerID, htmlSrc, width, height, xPos, yPos, scroll) { fLayerPop(layerID, htmlSrc, width, height, xPos, yPos, scroll, '200'); } function fLayerPop(layerID, htmlSrc, argwidth, argheight, xPos, yPos, scroll, z_index){ var div1 = document.createElement("DIV"); div1.id = layerID; div1.style.display = "none"; div1.innerHTML = "
"; document.body.appendChild(div1); $('#'+layerID).width(argwidth); $('#'+layerID).height(argheight+25); $('#'+layerID+ '_divcontent').width(argwidth); $('#'+layerID+ '_divcontent').height(argheight+25); if(scroll== 'y' || scroll == 'yes' || scroll == 'YES'){ scroll = 'scrolling="yes"'; }else{ scroll = 'scrolling="no"'; } //테스트중 $('#'+layerID).bPopup({ modalClose: false, escClose: true, opacity: 0.5, iframeAttr: scroll, content:'iframe', //'ajax', 'iframe' or 'image' contentContainer:"#"+layerID+"_divcontent", loadUrl: htmlSrc //Uses jQuery.load() }); } function fLayerPopBack(layerID, htmlSrc, width, height, xPos, yPos, scroll, z_index) { var yScroll = document.all ? (!document.documentElement.scrollTop ? document.body.scrollTop : document.documentElement.scrollTop) : (window.pageYOffset ? window.pageYOffset : window.scrollY); if(yScroll xMax) iframe.style.left = xMax - parseInt(iframe.style.width) - 20; if(scroll == null || scroll.length == 0){ scroll = "yes" } iframe.id = layerID + "_iframe"; iframe.marginwidth = "0px"; iframe.marginheight = "0px"; iframe.scrolling = scroll; iframe.frameBorder = "0px"; iframe.src = htmlSrc; //document.body.appendChild(iframe); document.body.appendChild(div1); //document.body.appendChild(iframe); document.body.insertBefore(iframe, div1); $('#'+layerID).fadeIn(); } // Layer Popup 닫기 function fLayerPopClose(layerID) { var oNode = document.getElementById(layerID); if(oNode != null) { $('#'+layerID+ '_divcontent').empty(); $('#'+layerID).bPopup().close(); document.body.removeChild(oNode); } } //시간 호출 function dpTime(){ var now = new Date(); hours = now.getHours(); minutes = now.getMinutes(); seconds = now.getSeconds(); if (hours > 12){ hours -= 12; ampm = "오후 "; }else{ ampm = "오전 "; } if (hours < 10) hours = "0" + hours; if (minutes < 10) minutes = "0" + minutes; if (seconds < 10) seconds = "0" + seconds; document.getElementById("dpTime").innerHTML = ampm + hours + ":" + minutes + ":" + seconds; } // 숫자 3자리수마다 콤마(,) 찍기 function formatComma(num, pos) { if (!pos) pos = 0; //소숫점 이하 자리수 var re = /(-?\d+)(\d{3}[,.])/; var strNum = stripComma(num.toString()); var arrNum = strNum.split("."); if(arrNum.length > 1 && pos > 0){ arrNum[0] += "."; } while (re.test(arrNum[0])) { arrNum[0] = arrNum[0].replace(re, "$1,$2"); } if (arrNum.length > 1) { if (arrNum[1].length > pos) { arrNum[1] = arrNum[1].substr(0, pos); } return arrNum.join(""); } else { return arrNum[0].split(".")[0]; } } // 콤마(,) 제거 function stripComma(str) { var re = /,/g; return str.replace(re, ""); } /** * Sheet1 List 엑셀 다운로드 */ function sheetExcelDown(obj,Name){ var DownCol = ""; var ColEnd = "|"; for(var i=0;i < 99;i++){ var ColName = obj.ColSaveName(0, i); if(ColName == -1){ i = 100; }else{ if(obj.GetColHidden(ColName) == 0){ DownCol = DownCol + ColName + ColEnd; } } } DownCol = DownCol.substring(0,DownCol.length-1); var params = { FileName : Name+".xls", SheetName : Name, SheetDesign:1 , DownCols:DownCol , AutoSizeColumn : 1, Merge : 1} ; obj.Down2Excel(params); } //중복 요청을 막기 위하여 로딩바 추가 2019.08.23 function showLoadingBar() { var maskHeight = $(document).height(); var maskWidth = window.document.body.clientWidth; var mask = ""; var loadingImg = ''; loadingImg += ""; $('body').append(mask).append(loadingImg); $('#mask').css({ 'width' : maskWidth , 'height': maskHeight , 'opacity' : '0.3' }); $('#mask').show(); $('#loadingImg').show(); } //중복 요청을 막기 위하여 로딩바 추가 2019.08.23 function hideLoadingBar() { $('#mask, #loadingImg').hide(); $('#mask, #loadingImg').remove(); }