function SetFormValue(f, n, v, sep) { var f = document.forms[f]; if(!f || !f[n]) return false; switch(f[n].type) { case 'text': case 'password': case 'hidden': f[n].value = v; break; case 'textarea': f[n].text = v; break; case 'checkbox': if(f[n].value == v) f[n].checked = true; break; case 'select-one': for(var i=0; i 0) { add = pattern.test(element.options[element.selectedIndex].text); head = element.options[0].value == "" ? element.options[0].text : ""; } element.options.length = 0; var j = 0; if(head) { element.options[0] = new Option(head, "", false); j++; } for (var i=year-num; i<=year+num; i++, j++) { element.options[j] = new Option(i + (add ? "년" : ""), i, false); if (i == year) element.options[j].selected = true; } } function in_array(needle, haystack, strict) { var found = false, key, strict = !!strict; for (key in haystack) { if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) { found = true; break; } } return found; } function removeAttr(formName, keys, type) { var f = document.forms[formName]; if(!f) return; type = !type ? "required" : type; var arr = keys.replace(/ +/g, "").split(","); for(var i=0; i 1) el = el[0]; el.removeAttribute(type); } } } function setAttr(formName, keys, type, value) { var f = document.forms[formName]; if(!f) return; var arr = keys.replace(/ +/g, "").split(","); for(var i=0; i 1) el = el[0]; el.setAttribute(type, value); //alert(el.name + ":::" + type + ":::" + el.getAttribute(type)); } } } /* ex) removeAttr("form1", "aa, ba, ca"); removeAttr("form1", "aa, ba, ca", "optino"); setAttr("form1", "aa, ba, ca", "required", "Y"); */ function setDisabled(element){ if(!element)return; switch(element.type) { case 'text': case 'textarea': element.className = "input_readonly"; element.readOnly = true; break; case 'radio': case 'checkbox': element.disabled = true; break; case "button": element.style.display = "none"; break; default: if(element.length){ for(var i=0; i 57) && (evCode < 96 || evCode > 105)&& (evCode < 37 || evCode > 40) && evCode != 8 && evCode != 9 && evCode != 13 && evCode != 46 ) { if (window.netscape) { Ev.preventDefault(); } else { window.event.returnValue = false; window.event.cancelBubble = true; try{ window.event.stopPropagation(); window.event.preventDefault(); }catch(err){/*IE11이하에서는 작동안됨*/} } } } /****************** 숫자만 입력하기 ******************/ function num_point_only(Ev){ var evCode = (window.netscape) ? Ev.which : event.keyCode; if((48 <= evCode && evCode <= 57 || 96 <= evCode && evCode <= 105 || evCode == 8 || evCode == 46) || evCode == 37 || evCode == 39 || evCode == 27 || evCode == 8 || evCode == 9 || evCode == 110 || evCode == 190) { return; }else { if (window.netscape) { Ev.preventDefault(); } else { window.event.returnValue = false; window.event.cancelBubble = true; try{ window.event.stopPropagation(); window.event.preventDefault(); }catch(err){/*IE11이하에서는 작동안됨*/} } } } /********************************* trim 기능 *********************************/ String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/gi, ""); } /********************************* replaceAll 기능 *********************************/ String.prototype.replaceAll = function(sVal1, sVal2) { return funcReplaceStrAll(this,sVal1,sVal2); } /********************************* replaceAll 기능 *********************************/ function funcReplaceStrAll( org_str, find_str, replace_str) { var pos = 0; pos = org_str.indexOf(find_str); while(pos != -1) { pre_str = org_str.substring(0, pos); post_str = org_str.substring(pos + find_str.length, org_str.length); org_str = pre_str + replace_str + post_str; pos = org_str.indexOf(find_str); } return org_str; } /************************* 유효한 월(月)인지 확인. Parameter : MM(월) Return : true / false *************************/ function isValidMonth(mm) { var m = parseInt(mm,10); return (m >= 1 && m <= 12); } /*************************************** 유효한 일(日)인지 확인. Parameter : YYYY, MM, DD(년, 월, 일) Return : true / false ***************************************/ function isValidDay(yyyy, mm, dd) { var m = parseInt(mm,10) - 1; var d = parseInt(dd,10); 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]); } /*************************************** 유효한 시간인지 확인. Parameter : hh(시간) Return : true / false ***************************************/ function isValidHour(hh) { var hour = parseInt(hh,10); if(hour < 24) return true; else return false; } /*************************************** 유효한 분인지 확인. Parameter : mm(분) Return : true / false ***************************************/ function isValidMin(mm) { var min = parseInt(mm,10); if(min < 60) return true; else return false; } /** * 숫자인지 체크 * true - 숫자 * false - 숫자가 아님 */ function isNum(objValue) { var str="0123456789" if (objValue=="") { return false; } for (i=0;i= 1900 && isValidMonth(month) && isValidDay(year, month, day)) return true; return false; } /* --- 날짜 형식 (onKeyUp 이벤트) --- */ function dateFormat(obj) { var str = obj.value.replace(/\-/gi, ""); var leng = str.length; switch (leng) { case 1 : case 2 : case 3 : case 4 : obj.value = str; break; case 5 : case 6 : obj.value = str.substring(0, 4) + "-" + str.substring(4); break; case 7 : case 8 : obj.value = str.substring(0, 4) + "-" + str.substring(4, 6) + "-" + str.substring(6); break; } } /****************************************** 인자로 입력된 값을 3자리 단위로 "," 추가 ******************************************/ function fnMakeComma() { if(event.keyCode == 37 || event.keyCode == 39) { return; } var num = event.srcElement.value; var sScale = ""; if(event.srcElement.getAttribute("scale") != null) { sScale = event.srcElement.getAttribute("scale"); } num = num.replaceAll(",",""); if(num.length > 0 && num.substring(0,1) == ".") { alert("소숫점을 처음부터 기입하실수 없습니다."); event.srcElement.value = ""; event.srcElement.Focus(); return; } if(num.split(".").length > 2) { alert("소수점은 1개까지만 허용됩니다."); event.srcElement.value = ""; event.srcElement.Focus(); return; } var sNum = ""; var sNum2 = ""; var aNum; if(num.indexOf(".") != -1) { var aNum = num.split("."); sNum = aNum[0]; sNum2 = aNum[1]; }else { sNum = num; } if(sNum2 && sNum2.length > 3) { alert("소수점은 3자리까지 입력가능합니다."); event.srcElement.value = ""; event.srcElement.Focus(); return; } sNum = fnMakeComma2(sNum); if(num.indexOf(".") != -1) { event.srcElement.value = sNum + "." + sNum2; }else { event.srcElement.value = sNum; } } /****************************************** 3자리 단위로 "," 추가 ******************************************/ function fnMakeComma2(val){ var aNum; var sNum = ""; var sNum2 = ""; if(val.indexOf(".") != -1) { aNum = val.split("."); sNum = aNum[0]; sNum2 = aNum[1]; }else { sNum = val; } var new_num = ""; for(i=0;i 0) { return new_num + "." + sNum2; }else { return new_num; } } function makeComma(obj){ var num = obj.value; num = num.replaceAll(",",""); var aNum = num.split("."); if ( aNum.length > 2 ) { alert("소수점은 1개까지만 허용됩니다."); obj.select(); return; } num = aNum[0]; new_num = ""; num = num + new_num; for(i=0;i 1){ obj.value = new_num + "." + aNum[1]; }else{ obj.value = new_num; } } /*************************** 버림 ***************************/ function getFloor(nVal, nLen) { var sVal = nVal + ""; var aNum; var sNum = ""; var sNum2 = ""; if(sVal.indexOf(".") != -1) { aNum = sVal.split("."); sNum = aNum[0]; sNum2 = aNum[1]; }else { sNum = sVal; } if(sNum2.length > nLen) { sNum2 = sNum2.substring(0,nLen); var nNum3 = Number("0."+sNum2); var sNum3 = (nNum3+"").replaceAll("0.",""); sNum2 = sNum3; } var sRtnVal = ""; sRtnVal = sNum; if(sNum2.length > 0) { sRtnVal = sRtnVal + "." + sNum2; } return Number(sRtnVal); } // 금액 입력시 한글로 표시 function fSetKoreanMoney(inputVal, displayClass) { var koreanMoney = ""; var numVal = trimComma(inputVal); if ( (numVal != "") && isIntNum(numVal) ) { koreanMoney = "一金 " + num2han(numVal) + "원整"; } //document.getElementById(displayId).innerHTML = koreanMoney; replaceInput(koreanMoney,displayClass,__html); return; } // 금액 입력시 한글로 표시 function fSetKoreanMoney2(inputVal, displayClass) { var koreanMoney = ""; var numVal = trimComma(inputVal); if ( (numVal != "") ) { koreanMoney = "一金 " + num2han2(numVal); } //document.getElementById(displayId).innerHTML = koreanMoney; replaceInput(koreanMoney,displayClass,__html); return; } /** * 숫자를 한글로 */ function num2han(num){ var i, j=0, k=0; var han1 = new Array("","일","이","삼","사","오","육","칠","팔","구"); var han2 = new Array("","만","억","조","경","해","시","양","구","간"); var han3 = new Array("","십","백","천"); var result="", hangul = num + "", pm = ""; var str = new Array(), str2=""; var strTmp = new Array(); if(parseInt(num)==0) return "영"; //입력된 숫자가 0일 경우 처리 if(hangul.substring(0,1) == "-"){ //음수 처리 pm = "감 "; hangul = hangul.substring(1, hangul.length); } if(hangul.length > han2.length*4) return "too much number"; //범위를 넘는 숫자 처리 자리수 배열 han2에 자리수 단위만 추가하면 범위가 늘어남. for(i=hangul.length; i > 0; i=i-4){ str[j] = hangul.substring(i-4,i); //4자리씩 끊는다. for(k=str[j].length;k>0;k--){ strTmp[k] = (str[j].substring(k-1,k))?str[j].substring(k-1,k):""; strTmp[k] = han1[parseInt(strTmp[k])]; if(strTmp[k]) strTmp[k] += han3[str[j].length-k]; str2 = strTmp[k] + str2; } str[j] = str2; //if(str[j]) result = str[j]+han2[j]+result; //4자리마다 한칸씩 띄워서 보여주는 부분. 우선은 주석처리 //result = (str[j])? " "+str[j]+han2[j]+result : " " + result; result = (str[j])? " "+str[j]+han2[j]+result : " " + result; j++; str2 = ""; } return pm + result; //부호 + 숫자값 } /** * 숫자를 한글로 */ function num2han2(num){ var i, j=0, k=0; var han1 = new Array("","일","이","삼","사","오","육","칠","팔","구"); var han4 = new Array("영","일","이","삼","사","오","육","칠","팔","구"); var han2 = new Array("","만","억","조","경","해","시","양","구","간"); var han3 = new Array("","십","백","천"); var result="", hangul = num + "", pm = "" , sosu = ""; var str = new Array(), str2="", str3 = new Array(), str4 = ""; var strTmp = new Array(); if(parseInt(num)==0) return "영"; //입력된 숫자가 0일 경우 처리 if(hangul.substring(0,1) == "-"){ //음수 처리 pm = "감 "; hangul = hangul.substring(1, hangul.length); } if(hangul.length > han2.length*4) return "too much number"; //범위를 넘는 숫자 처리 자리수 배열 han2에 자리수 단위만 추가하면 범위가 늘어남. var digit = hangul.indexOf('.'); if(digit > 0){ sosu = hangul.substring(digit, hangul.length); hangul = hangul.substring(0, digit); } for(i=hangul.length; i > 0; i=i-4){ str[j] = hangul.substring(i-4,i); //4자리씩 끊는다. for(k=str[j].length;k>0;k--){ strTmp[k] = (str[j].substring(k-1,k))?str[j].substring(k-1,k):""; strTmp[k] = han1[parseInt(strTmp[k])]; if(strTmp[k]) strTmp[k] += han3[str[j].length-k]; str2 = strTmp[k] + str2; } str[j] = str2; //if(str[j]) result = str[j]+han2[j]+result; //4자리마다 한칸씩 띄워서 보여주는 부분. 우선은 주석처리 //result = (str[j])? " "+str[j]+han2[j]+result : " " + result; result = (str[j])? " "+str[j]+han2[j]+result : " " + result; j++; str2 = ""; } if(sosu.length > 0 ){ for(i= sosu.length; i > 1; i--){ str3[j] = sosu.substring(i-1, i); for(k=str3[j].length; k>0 ;k--){ strTmp[k] = (str3[j].substring(k-1,k))?str3[j].substring(k-1,k):""; str4 = han4[parseInt(strTmp[k])] + str4 ; } } str4 = "점"+ str4; } return pm + result + str4; //부호 + 숫자값 } // 금액인지 function isIntNum(objValue) { var str="-0123456789" if (objValue=="") { return false; } for (i=0;i 을 찾아 내용 가져오기 function searchStyle(sIn) { var v_regExp = new RegExp("]*>(.*?)"); if(v_regExp.test(sIn)) { var v_result = v_regExp.exec(sIn); if(v_result != null) return v_result[0]; } return ""; } /** * 보안 필터에 적용받지 않도록 문자열 변환 */ function fConvertSecuStr(sHtmlString) { var sContents = sHtmlString; sContents = sContents.replaceAll("\n", "
"); return sContents; } /** * class이름을 가지고 있는 객체의 값을 input 값으로 변경한다. * * @param inputObj 값을 입력한 객체 * @param targetClass class ID * @param node 검색범위 (생략하면 document가 기본값 * @return 대상건이 있으면 true 없으면 false */ function replaceInput(inputObj, targetClass, node) { var t; var inputVal; //alert(typeof(inputObj)); if(typeof(inputObj) == "object") inputVal = inputObj.value; else if(typeof(inputObj) == "string") inputVal = inputObj; if(node == null) t = getElementsByClass(targetClass); else t = getElementsByClass(targetClass, node); for(var i=0; i/gi,"\r\n"); //t[i].value = inputVal; } } if(t.length > 0) return 1; else return 0; } // 같은 클래스명을 가진 객체를 모두 찾아낸다. function getElementsByClass(searchClass,node,tag) { var classElements = new Array(); if ( node == null ) node = document; if ( tag == null ) tag = '*' ; var els = node.getElementsByTagName(tag); var elsLen = els.length; //var pattern = new RegExp("(^|s)" +searchClass+"(s|$)"); var pattern = new RegExp("(^| )" +searchClass+"( |$)"); for (i = 0, j = 0; i < elsLen; i++) { if( pattern.test(els[i].className) ) { classElements[j] = els[i]; j++; } } return classElements; } function tabView(index) { // 최대 6개의 sub 양식까지만 for(var i=0; i<=6; i++) { if(i == index) { document.getElementById("tab_"+i).className = 'tab_on'; document.getElementById("__html_"+i).style.display = ''; } else { if(document.getElementById("tab_"+i) != null) { document.getElementById("tab_"+i).className = 'tab_off'; document.getElementById("__html_"+i).style.display = 'none'; } } } } // 문서를 배열 컨트롤로 만든다. function splitHtml(f, ctrName, bRemoveInput, fileCount) { for(var i=0; i 0 && num.substring(0,1) == ".") { alert("소숫점을 처음부터 기입하실수 없습니다."); event.srcElement.value = ""; event.srcElement.focus(); return; } if(num.split(".").length > 2) { alert("소수점은 1개까지만 허용됩니다."); event.srcElement.value = ""; event.srcElement.focus(); return; } var sNum = ""; var sNum2 = ""; var aNum; if(num.indexOf(".") != -1) { var aNum = num.split("."); sNum = aNum[0]; sNum2 = aNum[1]; }else { sNum = num; } if(sNum2 && sNum2.length > sosuNum) { alert("소수점은 "+ sosuNum +"자리까지 입력가능합니다."); event.srcElement.value = ""; event.srcElement.focus(); return; } sNum = fnMakeComma2(sNum); if(num.indexOf(".") != -1) { event.srcElement.value = sNum + "." + sNum2; }else { event.srcElement.value = sNum; } } /*===================================================*/ /* * 기준금액의 퍼센트 금액을 set한다. * sAmt = 기준금액 * rate = % * targetClass= 대상 class */ function fSetPersentAmt2(sAmt, rate, targetClass, sosuNum){ if(sAmt == "" || rate == ""){ replaceInput("", targetClass,__html); return; } if(sAmt == 0 && rate == 0 ){ replaceInput("0", targetClass,__html); return; } sAmt = sAmt.replaceAll(",",""); //var cVal = Number(sAmt) * (Number(rate)/100); 2016.9.21 1349000*70/100 계산오류로 수정 var cVal = Number(sAmt) * Number(rate)/100 ; cVal = getFloor(cVal,sosuNum); replaceInput(fnMakeComma2(cVal+""),targetClass, __html ); }