본문 바로가기

JavaScript

[javascript] [스크랩] JavaScript 모음



자바스크립트 모음  

// 캐릭터 타입 검증 'H'-한글, 'E'-영문, 'N'-숫자, 'Z'-기타
function getCharType(pValue){
 var bHan = false;
 var bAlp = false;
 var bNum = false;
 var bEtc = false;
 
 var retStr="";
 
 if(isEmpty(pValue)){
  return "";
 }
 
 for(var idx=0; idx < pValue.length; idx++){
  if (isAlpha(pValue[idx])) {
   bAlp = true;
  }
  else if (isNum(pValue[idx])) {
   bNum = true;
  }
  else if (isHangul(pValue[idx])) {
   bHan = true;
  }
  else {
   bEtc = true;
  }
  
  if (bHan) retStr = retStr + "H";
  if (bAlp) retStr = retStr + "E";
  if (bNum) retStr = retStr + "N";
  if (bEtc) retStr = retStr + "Z";
 }
 
 return retStr;
}
 
//새창 여는 함수
function uf_newWin( url, winName, sizeW, sizeH)
{
 var nLeft  = screen.width/2 - sizeW/2 ;
 var nTop  = screen.height/2 - sizeH/2 ;
 
 opt = ",toolbar=no,menubar=no,location=no,scrollbars=yes,status=no";
 window.open(url, winName, "left=" + nLeft + ",top=" +  nTop + ",width=" + sizeW + ",height=" + sizeH  + opt );
 
}
 

//새창 사이즈 정함
function uf_reSize ( sizeW, sizeH)
{
 window.resizeTo( sizeW, sizeH );
 
}
 
//옵션이 있는경우
 
function selDataChange(form) {
  var DataIndex=form.url.selectedIndex;
  if (form.url.options[DataIndex].value != null) {
       location=form.url.options[DataIndex].value;
  }
}
 
function selDataChange2(form) {
  var DataIndex=form.url2.selectedIndex;
  if (form.url2.options[DataIndex].value != null) {
       location=form.url2.options[DataIndex].value;
  }
}
 
/**
 * 입력값이 NULL인지 체크
 */
function isNull(input) {
    if (input.value == null || input.value == "") {
        return true;
    }
    return false;
}
 
/**
 * 입력값에 스페이스 이외의 의미있는 값이 있는지 체크
 * ex) if (isEmpty(form.keyword)) {
 *         alert("검색조건을 입력하세요.");
 *     }
 */
function isEmpty(input) {
    if (input.value == null || input.value.replace(/ /gi,"") == "") {
        return true;
    }
    return false;
}
 
/**
 * 입력값에 특정 문자(chars)가 있는지 체크
 * 특정 문자를 허용하지 않으려 할 때 사용
 * ex) if (containsChars(form.name,"!,*&^%$#@~;")) {
 *         alert("이름 필드에는 특수 문자를 사용할 수 없습니다.");
 *     }
 */
function containsChars(input,chars) {
    for (var inx = 0; inx < input.value.length; inx++) {
       if (chars.indexOf(input.value.charAt(inx)) != -1)
           return true;
    }
    return false;
}
 
/**
 * 입력값이 특정 문자(chars)만으로 되어있는지 체크
 * 특정 문자만 허용하려 할 때 사용
 * ex) if (!containsCharsOnly(form.blood,"ABO")) {
 *         alert("혈액형 필드에는 A,B,O 문자만 사용할 수 있습니다.");
 *     }
 */
function containsCharsOnly(input,chars) {
    for (var inx = 0; inx < input.value.length; inx++) {
       if (chars.indexOf(input.value.charAt(inx)) == -1)
           return false;
    }
    return true;
}
function isStartWith(input,chars) {
    for (var inx = 0; inx < chars.length; inx++) {
       if (chars.indexOf(input.value.charAt(0)) == -1)
           return false;
    }
    return true;
}
/**
 * 입력값이 알파벳인지 체크
 * 아래 isAlphabet() 부터 isNumComma()까지의 메소드가
 * 자주 쓰이는 경우에는 var chars 변수를
 * global 변수로 선언하고 사용하도록 한다.
 * ex) var uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 *     var lowercase = "abcdefghijklmnopqrstuvwxyz";
 *     var number    = "0123456789";
 *     function isAlphaNum(input) {
 *         var chars = uppercase + lowercase + number;
 *         return containsCharsOnly(input,chars);
 *     }
 */
function isAlphabet(input) {
    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ";
    return containsCharsOnly(input,chars);
}
 
/**
 * 입력값이 알파벳 대문자인지 체크
 */
function isUpperCase(input) {
    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ ";
    return containsCharsOnly(input,chars);
}
 
/**
 * 입력값이 알파벳 소문자인지 체크
 */
function isLowerCase(input) {
    var chars = "abcdefghijklmnopqrstuvwxyz ";
    return containsCharsOnly(input,chars);
}
 
/**
 * 입력값에 숫자만 있는지 체크
 */
function isNumber(input) {
    var chars = "0123456789";
    return containsCharsOnly(input,chars);
}
 
/**
 * 입력값이 알파벳,숫자로 되어있는지 체크
 */
function isAlphaNum(input) {
    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 ";
    return containsCharsOnly(input,chars);
}
 
function isBigAlphaNum(input) {
    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ";
    return containsCharsOnly(input,chars);
}
/**
 * 입력값이 숫자,대시(-)로 되어있는지 체크
 */
function isNumDash(input) {
    var chars = "-0123456789";
    return containsCharsOnly(input,chars);
}
 
/**
 * 입력값이 숫자,콤마(,)로 되어있는지 체크
 */
function isNumComma(input) {
    var chars = ",0123456789";
    return containsCharsOnly(input,chars);
}
 
/**
 * 입력값이 사용자가 정의한 포맷 형식인지 체크
 * 자세한 format 형식은 자바스크립트의 'regular expression'을 참조
 */
function isValidFormat(input,format) {
    if (input.value.search(format) != -1) {
        return true; //올바른 포맷 형식
    }
    return false;
}
 
/**
 * 입력값이 이메일 형식인지 체크
 * ex) if (!isValidEmail(form.email)) {
 *         alert("올바른 이메일 주소가 아닙니다.");
 *     }
 */
function isValidEmail(input) {
//    var format = /^(\S+)@(\S+)\.([A-Za-z]+)$/;
    var format = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;
    return isValidFormat(input,format);
}
 
/**
 * 입력값이 전화번호 형식(숫자-숫자-숫자)인지 체크
 */
function isValidPhone(input) {
    var format = /^(\d+)-(\d+)-(\d+)$/;
    return isValidFormat(input,format);
}
 
/**
 * 입력값의 바이트 길이를 리턴
 * ex) if (getByteLength(form.title) > 100) {
 *         alert("제목은 한글 50자(영문 100자) 이상 입력할 수 없습니다.");
 *     }
 */
function getByteLength(input) {
    var byteLength = 0;
    for (var inx = 0; inx < input.value.length; inx++) {
        var oneChar = escape(input.value.charAt(inx));
        if ( oneChar.length == 1 ) {
            byteLength ++;
        } else if (oneChar.indexOf("%u") != -1) {
            byteLength += 2;
        } else if (oneChar.indexOf("%") != -1) {
            byteLength += oneChar.length/3;
        }
    }
    return byteLength;
}
 
/**
 * 입력값에서 콤마를 없앤다.
 */
function removeComma(input) {
    return input.value.replace(/,/gi,"");
}
 
/**
 * 선택된 라디오버튼이 있는지 체크
 */
function hasCheckedRadio(input) {
    if (input.length > 1) {
        for (var inx = 0; inx < input.length; inx++) {
            if (input[inx].checked) return true;
        }
    } else {
        if (input.checked) return true;
    }
    return false;
}
 
/**
 * 선택된 체크박스가 있는지 체크
 */
function hasCheckedBox(input) {
    return hasCheckedRadio(input);
}
 

/**
 * 선택된 체크박스가  몇개인지  그 개수를 반환
 */
function hasMultiCheckedRadio(input) {
var kkkk = 0;
    if (input.length > 1) {
        for (var inx = 0; inx < input.length; inx++) {
            if (input[inx].checked) {
   kkkk++;
   }
        }
    } else {
   if (input.checked) kkkk=1;
 }
    return kkkk;
}
 
/**
 * 유효한(존재하는) 월(月)인지 체크
 */
function isValidMonth(mm) {
    var m = parseInt(mm,10);
    return (m >= 1 && m <= 12);
}
 
/**
 * 유효한(존재하는) 일(日)인지 체크
 */
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]);
}
 
/**
 * 유효한(존재하는) 시(時)인지 체크
 */
function isValidHour(hh) {
    var h = parseInt(hh,10);
    return (h >= 1 && h <= 24);
}
 
/**
 * 유효한(존재하는) 분(分)인지 체크
 */
function isValidMin(mi) {
    var m = parseInt(mi,10);
    return (m >= 1 && m <= 60);
}
 
/**
 * Time 형식인지 체크(느슨한 체크)
 */
function isValidTimeFormat(time) {
    return (!isNaN(time) && time.length == 12);
}
 
/**
 * 유효하는(존재하는) Time 인지 체크
 * ex) var time = form.time.value; //'200102310000'
 *     if (!isValidTime(time)) {
 *         alert("올바른 날짜가 아닙니다.");
 *     }
 */
function isValidTime(time) {
    var year  = time.substring(0,4);
    var month = time.substring(4,6);
    var day   = time.substring(6,8);
    var hour  = time.substring(8,10);
    var min   = time.substring(10,12);
 
    if (parseInt(year,10) >= 1900  && isValidMonth(month) &&
        isValidDay(year,month,day) && isValidHour(hour)   &&
        isValidMin(min)) {
        return true;
    }
    return false;
}
 
/**
 * Time 스트링을 자바스크립트 Date 객체로 변환
 * parameter time: Time 형식의 String
 */
function toTimeObject(time) { //parseTime(time)
    var year  = time.substr(0,4);
    var month = time.substr(4,2) - 1; // 1월=0,12월=11
    var day   = time.substr(6,2);
    var hour  = time.substr(8,2);
    var min   = time.substr(10,2);
 
    return new Date(year,month,day,hour,min);
}
 
/**
 * 자바스크립트 Date 객체를 Time 스트링으로 변환
 * parameter date: JavaScript Date Object
 */
function toTimeString(date) { //formatTime(date)
    var year  = date.getFullYear();
    var month = date.getMonth() + 1; // 1월=0,12월=11이므로 1 더함
    var day   = date.getDate();
    var hour  = date.getHours();
    var min   = date.getMinutes();
 
    if (("" + month).length == 1) { month = "0" + month; }
    if (("" + day).length   == 1) { day   = "0" + day;   }
    if (("" + hour).length  == 1) { hour  = "0" + hour;  }
    if (("" + min).length   == 1) { min   = "0" + min;   }
 
    return ("" + year + month + day + hour + min)
}
 
/**
 * Time이 현재시각 이후(미래)인지 체크
 */
function isFutureTime(time) {
    return (toTimeObject(time) > new Date());
}
 
/**
 * Time이 현재시각 이전(과거)인지 체크
 */
function isPastTime(time) {
    return (toTimeObject(time) < new Date());
}
 
/**
 * 주어진 Time 과 y년 m월 d일 h시 차이나는 Time을 리턴
 * ex) var time = form.time.value; //'20000101000'
 *     alert(shiftTime(time,0,0,-100,0));
 *     => 2000/01/01 00:00 으로부터 100일 전 Time
 */
function shiftTime(time,y,m,d,h) { //moveTime(time,y,m,d,h)
    var date = toTimeObject(time);
 
    date.setFullYear(date.getFullYear() + y); //y년을 더함
    date.setMonth(date.getMonth() + m);       //m월을 더함
    date.setDate(date.getDate() + d);         //d일을 더함
    date.setHours(date.getHours() + h);       //h시를 더함
 
    return toTimeString(date);
}
 
/**
 * 두 Time이 몇 개월 차이나는지 구함
 * time1이 time2보다 크면(미래면) minus(-)
 */
function getMonthInterval(time1,time2) { //measureMonthInterval(time1,time2)
    var date1 = toTimeObject(time1);
    var date2 = toTimeObject(time2);
 
    var years  = date2.getFullYear() - date1.getFullYear();
    var months = date2.getMonth() - date1.getMonth();
    var days   = date2.getDate() - date1.getDate();
 
    return (years * 12 + months + (days >= 0 ? 0 : -1) );
}
 
/**
 * 두 Time이 며칠 차이나는지 구함
 * time1이 time2보다 크면(미래면) minus(-)
 */
function getDayInterval(time1,time2) {
    var date1 = toTimeObject(time1);
    var date2 = toTimeObject(time2);
    var day   = 1000 * 3600 * 24; //24시간
 
    return parseInt((date2 - date1) / day, 10);
}
 
/**
 * 두 Time이 몇 시간 차이나는지 구함
 * time1이 time2보다 크면(미래면) minus(-)
 */
function getHourInterval(time1,time2) {
    var date1 = toTimeObject(time1);
    var date2 = toTimeObject(time2);
    var hour  = 1000 * 3600; //1시간
 
    return parseInt((date2 - date1) / hour, 10);
}
 
/**
 * 현재 시각을 Time 형식으로 리턴
 */
function getCurrentTime() {
    return toTimeString(new Date());
}
 
/**
 * 현재 시각과 y년 m월 d일 h시 차이나는 Time을 리턴
 */
function getRelativeTime(y,m,d,h) {
 
    return shiftTime(getCurrentTime(),y,m,d,h);
}
 
/**
 * 현재 年을 YYYY형식으로 리턴
 */
function getYear() {
 
    return getCurrentTime().substr(0,4);
}
 
/**
 * 현재 月을 MM형식으로 리턴
 */
function getMonth() {
 
    return getCurrentTime().substr(4,2);
}
 
/**
 * 현재 日을 DD형식으로 리턴
 */
function getDay() {
 
    return getCurrentTime().substr(6,2);
}
 
/**
 * 현재 時를 HH형식으로 리턴
 */
function getHour() {
 
    return getCurrentTime().substr(8,2);
}
 
/**
 * 오늘이 무슨 요일이야?
 * ex) alert('오늘은 ' + getDayOfWeek() + '요일입니다.');
 */
function getDayOfWeek() {
    var now = new Date();
 
    var day = now.getDay(); //일요일=0,월요일=1,...,토요일=6
    var week = new Array('일','월','화','수','목','금','토');
 
    return week[day];
}
 

/**
 * 특정날짜의 요일을 구한다.
 */
function getDayOfWeek(time) {
    var now = toTimeObject(time);
 
    var day = now.getDay(); //일요일=0,월요일=1,...,토요일=6
    var week = new Array('일','월','화','수','목','금','토');
 
    return week[day];
}
 
 
 
/**
*   문자열의 오른쪽 끝에서 부터 지정된 개수만큼의 문자들을 리턴한다.
*/
 
function substrInverse(str, num)
{
 var len;
 
 len = str.length;
 
 return str.substr(len - num, num);
}
 
/**
*  문자열로의 특정위치로부터 지정된 개수의 문자들을 리턴한다.
*/
function substrMid(str, idx, num)
{
 return str.substr( idx-1, num);
}
 

/**
* Cookie설정하기
*/
 
function setCookie(name, value, expire) {
          document.cookie = name + "=" + escape(value)
          + ( (expire) ? "; expires=" + expire.toGMTString() : "")
}
 
/**
* Cookie 구하기
*/
 

function getCookie(uName) {
 
 var flag = document.cookie.indexOf(uName+'=');
 if (flag != -1) {
  flag += uName.length + 1
  end = document.cookie.indexOf(';', flag)
 
  if (end == -1) end = document.cookie.length
  return unescape(document.cookie.substring(flag, end))
 }
}
 
    function Half2Full(HalfVal)
 {
         var arg;
         arg = myHalf2Full(HalfVal);
  return arg;
 }
 
 function myHalf2Full(HalfVal)
 {
   var FullChar = [
                " ", "!",""","#","$","%","&","'","(",     //33~
         ")","*","+",",","-",".","/","0","1","2",      //41~
         "3","4","5","6","7","8","9",":",";","<",      //51~
         "=",">","?","@","A","B","C","D","E","F",      //61~
         "G","H","I","J","K","L","M","N","O","P",      //71~
         "Q","R","S","T","U","V","W","X","Y","Z",      //81~
         "[","₩","]","^","_","`","A","B","C","D",      //91~
         "E","F","G","H","I","J","K","L","M","N",      //101~
         "O","P","Q","R","S","T","U","V","W","X",      //111~
         "Y","Z","{","|","}","~"                         //121~
         ];
  var stFinal = "";
         var ascii;
         for( i = 0; i < HalfVal.length; i++)
         {
                 ascii = HalfVal.charCodeAt(i);
                 if( (31 < ascii && ascii < 128))
                 {
                   stFinal += FullChar[ascii-32];
                 }
                 else
                 {
                   stFinal += HalfVal.charAt(i);
                 }
         }
         return stFinal;
 }
function frmMoney(input){
 input.value = putComma(input);
}
function unFrmMoney(input){
 input.value = replace(input.value,",","");
}
function frmDate(input){
 if(input.value=="") return
 input.value = input.value.substring(0,4) + "-" + input.value.substring(4,6) + "-" + input.value.substring(6,8);
}
function unFrmDate(input){
 input.value = replace(input.value,"-","");
}
function frmTime(input){
 input.value = input.value.substring(0,2) + ":" + input.value.substring(2,4) + ":" + input.value.substring(4,6);
}
function unFrmTime(input){
 input.value = replace(input.value,":","");
}
function frmAcct(input){
 input.value = input.value.substring(0,3) + "-" + input.value.substring(3,9) + "-" + input.value.substring(9,14);
}
function unFrmAcct(input){
 input.value = replace(input.value,"-","");
}
 
function setSelect(input,str) {
 for(i=0;i<input.options.length;i++){
  if(input.options[i].value == str)
   input.options[i].selected=true;
 }
}
// 외환에서 특정 통화일때 소수점이하 금액없애기
function Curr(str1, str2){
 obj1 = eval("frm."+str1+".value")
 obj2 = eval("frm."+str2+".style")
 if(obj1=="JPY"||obj1=="ITL"||obj1=="BEF"||obj1=="KRW"){
  obj2.display = "none"
 }else{
  obj2.display = ""
 }
}
function Curr2(str1, str2, str3){
 obj1 = eval("frm."+str1+".value")
 obj2 = eval("frm."+str2+".style")
 obj3 = eval("frm."+str3+".style")
 if(obj1=="JPY"||obj1=="ITL"||obj1=="BEF"||obj1=="KRW"){
  obj2.display = "none"
  obj3.display = "none"
 }else{
  obj2.display = ""
  obj3.display = ""
 }
}
 
   ////////////////////////////////////////////////////////////////
   // 데이터 전송형태 관련
   ////////////////////////////////////////////////////////////////
   
    // get 방식의 파라미터를 해당폼에 input hidden 객체로 생성한다.
    function get2post(frm,sSearch){ 
     if (sSearch.length > 0) {
     
      var asKeyValues = sSearch.split('&');
      var asKeyValue  = '';
        
      for (var i = 0; i < asKeyValues.length; i++) {
       
       asKeyValue = asKeyValues[i].split('=');
       var e = document.createElement("input");
       e.setAttribute("type","hidden");
       e.setAttribute("name",asKeyValue[0]);
       e.setAttribute("value",asKeyValue[1]);
       e.setAttribute("_temp","true");
       
    //   alert("[" + e.name +"]:[" + e.value +"]");
       
       frm.appendChild(e);
      }
      } 
    //  alert("form 객체 갯수" + frm.elements.length);
    }  
    
    // get2post로 생성한 임시 객체를 파괴한다.  
    function removeTempAttribute(frm){ 
     var idx=0;
     while (idx<frm.elements.length) {
      var obj = frm.elements[idx];
      
      if( obj.getAttribute("_temp") != null && obj.getAttribute("_temp") == "true"){
       frm.removeChild(obj);
       continue;
      }
      idx++;
     }
    }  
    
    
 
   ////////////////////////////////////////////////////////////////
   // checkbox 관련
   ////////////////////////////////////////////////////////////////
   
    // check 한 개수를 리턴한다.
    function getCheckedCount( aElem ) {
     
     var elem = document.all;
     var cnt = 0;
     
     for ( var i=0; i<document.all.length; i++ ) {
      if ( ( elem[i].type == "checkbox" ) && ( elem[i].checked ) && ( elem[i].name == aElem ) ) cnt = cnt + 1;
     }
     
     return cnt;
    }
    
    
    // 지정한 이름을 가진 모든 checkbox를 check 한다.
    function checkAll( aElem ) {
     
     var elem = document.all;
     var cnt = 0;
     
     for ( var i=0; i<document.all.length; i++ ) {
      if ( ( elem[i].type == "checkbox" ) && ( elem[i].name == aElem ) ) elem[i].checked = true;
     }
    }
    
    
    // 지정한 이름을 가진 모든 checkbox의 checked 값을 반전 한다.
    function invertCheck( aElem ) {
     
     var elem = document.all;
     var cnt = 0;
     
     for ( var i=0; i<document.all.length; i++ ) {
      if ( ( elem[i].type == "checkbox" ) && ( elem[i].name == aElem ) ) {
       if ( elem[i].checked ) {
        elem[i].checked = false;
       }
       else{
        elem[i].checked = true;
       }
      }
     }
    }   
    
 
    
 

    
 

    
       ////////////////////////////////
   // UTIL 함수
   ////////////////////////////////
   
    var isDivEvent = false;
    
    function hideOneNav(){
     if (!isDivEvent) {
      window.account.style.visibility='hidden';
     }
     else{
      isDivEvent = false;
     }
    }
    
    
    function showOneNav(obj){
     isDivEvent = true;
     window.account.style.left = getLeftPos(obj);
     window.account.style.top = getTopPos(obj) + obj.offsetHeight - 8;
     window.account.style.visibility='visible';
     return false;
    }
    
    function getLeftPos(obj){
     var parentObj = null;
     var clientObj = obj;
     var left = obj.offsetLeft + document.body.clientLeft;
     
     while((parentObj=clientObj.offsetParent) != null){
      left = left + parentObj.offsetLeft;
      clientObj = parentObj;
     }
     
     return left;
    }
    
    function getTopPos(obj){
     var parentObj = null;
     var clientObj = obj;
     var top = obj.offsetTop + document.body.clientTop;
     
     while((parentObj=clientObj.offsetParent) != null){
      top = top + parentObj.offsetTop;
      clientObj = parentObj;
     }
     
     return top;
    }
 
    /**
    *  문자열에 있는 특정문자패턴을 다른 문자패턴으로 바꾸는 함수.
    */
    
    function replace(targetStr, searchStr, replaceStr)
    {
     var len, i, tmpstr;
    
     len = targetStr.length;
     tmpstr = "";
    
     for ( i = 0 ; i < len ; i++ ) {
      if ( targetStr.charAt(i) != searchStr ) {
       tmpstr = tmpstr + targetStr.charAt(i);
      }
      else {
       tmpstr = tmpstr + replaceStr;
      }
     }
     return tmpstr;
    }
   
    /**
    *  문자열에서 좌우 공백제거
    */
    
    function trim(str)
    {
     return replace(str," ","");
    }
 
    /**
    * 콤마설정.
    */
    
    function putComma(input) {
     var num = input;
     
     if (num < 0) {
      num *= -1;
      var minus = true
     }else{
      var minus = false
     }
     
     var dotPos = (num+"").split(".")
     var dotU = dotPos[0]
     var dotD = dotPos[1]
     var commaFlag = dotU.length%3
    
     if(commaFlag) {
      var out = dotU.substring(0, commaFlag)
      if (dotU.length > 3) out += ","
     }
     else var out = ""
    
     for (var i=commaFlag; i < dotU.length; i+=3) {
      out += dotU.substring(i, i+3)
      if( i < dotU.length-3) out += ","
     }
    
     if(minus) out = "-" + out
     if(dotD) return out + "." + dotD
     else return out
    }
 
   
    //월의 끝 일자 얻기
    function getEndDate(datestr){
     
     //널인지? 
     if(isEmpty(datestr)){
      return null;
     }
     
     //숫자인지?
     if(!isNum(datestr)){
      return null;
     }
     
     //길이가 8자리?
     if(datestr.length != 6){
      return null;
     }
     
     var yy = Number(datestr.substring(0,4));
     var mm = Number(datestr.substring(4,6));
     
     //윤년 검증
     var boundDay = "";
   
     if(mm != 2){
      var mon=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
      boundDay = mon[mm-1];
     }
     else{
      if (yy%4 == 0 && yy%100 != 0 || yy%400 == 0){
       boundDay = 29;
      }
      else{
       boundDay = 28;
      }
     }
     
     return boundDay;  
    }
   
    // Left 빈자리 만큼 padStr 을 붙인다.
    function lpad(src, len, padStr){
     var retStr = "";
     var padCnt = Number(len) - String(src).length;
     for(var i=0;i<padCnt;i++) retStr += String(padStr);
     return retStr+src;
    }
   
    // Right 빈자리 만큼 padStr 을 붙인다.
    function rpad(src, len, padStr){
     var retStr = "";
     var padCnt = Number(len) - String(src).length;
     for(var i=0;i<padCnt;i++) retStr += String(padStr);
     return src+retStr;
    }
   
   
    // 전화번호 국번검증
    function isValidDDDPhoneNum(dddphonenum)
    {
    
     // 널인가?
     if (isEmpty(dddphonenum)) {
      return null;
     }
     
       
     if ( dddphonenum != "02" && dddphonenum != "031" && dddphonenum != "032" && dddphonenum != "033" && dddphonenum != "041" &&
          dddphonenum != "042" && dddphonenum != "043" && dddphonenum != "051" && dddphonenum != "052" && dddphonenum != "053" &&
          dddphonenum != "054" && dddphonenum != "055" && dddphonenum != "061" && dddphonenum != "062" && dddphonenum != "063" &&
          dddphonenum != "064" && dddphonenum != "011" && dddphonenum != "016" && dddphonenum != "017" && dddphonenum != "018" && dddphonenum != "019" )
     {
      
      ERR_MSG = "잘못된 전화번호 국번입니다.";
      return false;
     }
     
     return true;
     
    }
   
   
    // 대문자변환
    function toUpperCase(str){ 
     
     if(isEmpty(str)) return str;
     return str.toUpperCase();
    }
   
    
    // 숫자검증
    function isNum(str){ 
     
     if(isEmpty(str)) return false;
     
     for(var idx=0;idx < str.length;idx++){
      if(str.charAt(idx) < '0' || str.charAt(idx) > '9'){
       return false;
      }
     }
     return true;
    }
   
   
    // 영문자검증
    function isAlpha(str){
     
     if(isEmpty(str)) return false;
     
     for(var idx=0;idx < str.length;idx++){
      if(!((str.charAt(idx) >='a' && str <= 'z') || (str.charAt(idx) >= 'A' && str <= 'Z'))){
       return false;
      }
     }
     return true;
    }
   
   
    // 한글검증
    function isHangul(str){
     
     if(isEmpty(str)) return false;
     
     for(var idx=0;idx < str.length;idx++){
          var c = escape(str.charAt(idx));
          if ( c.indexOf("%u") == -1 ) {
       return false;
      }
     }
     return true;  
    } 
   
    
    // 실제길이 반환( 한글 2byte 계산 ) 
    function getByteLength(s){
     
       var len = 0;
       if ( s == null ) return 0;
       for(var i=0;i<s.length;i++){
          var c = escape(s.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;
    }
    
    
    // 빈값인지 리턴한다.
    function isEmpty(pValue){
     
     if( (pValue == "") || (pValue == null) ){
      return true;
     }
     return false;
    }
    
    
 
   
    //검색날짜 유효기간
    function getBoundDate1(yy,mm,dd,stdDate)
    {
     var today = new Date();
     today.setYear(stdDate.substring(0,4));
     today.setMonth(stdDate.substring(4,6)-1);
     today.setDate(stdDate.substring(6,8));
     today.setHours(today.getHours());
     today.setMinutes(today.getMinutes());
     today.setSeconds(today.getSeconds());
     
     yy = Number(yy);
     mm = Number(mm);
     dd = Number(dd);
     
     var date = new Date();
     
     var DAY = 24 * 60 * 60 * 1000;
     
     if ( yy != 0 ){
      date.setTime(today.getTime() + DAY * 365 * yy);
     }
   
     if ( mm != 0 ){
      date.setTime(today.getTime() + DAY * 30 * mm);
     }
     
     if ( dd != 0 ){
      date.setTime(today.getTime() + DAY * dd);
     }
     
     return lpad(new String(date.getYear()),4,'0') + lpad(new String(date.getMonth() + 1),2,'0') + lpad(new String(date.getDate()),2,'0');    
    }   
 
 
 
    function getBoundDate(yy, mm, dd) {
     yy = Number(yy);
     mm = Number(mm);
     dd = Number(dd);
     
     var date = new Date();
     
     var DAY = 24 * 60 * 60 * 1000;
 
     
     if ( yy != 0 ){
      date.setTime(datToday.getTime() + DAY * 365 * yy);
     }
   
     if ( mm != 0 ){
      date.setTime(datToday.getTime() + DAY * 30 * mm);
     }
     
     if ( dd != 0 ){
      date.setTime(datToday.getTime() + DAY * dd);
     }
     
     return lpad(new String(date.getYear()),4,'0') + lpad(new String(date.getMonth() + 1),2,'0') + lpad(new String(date.getDate()),2,'0');
    }   
     
   
    //검색날짜 체크
    function isVaildTerm(obj,yy,mm,dd)
    {
     var datestr = obj.value;
     
     
     //널인지? 
     if(isEmpty(datestr)){
      return null;
     }
     
     // 날짜 포맷제거
     obj_removeformat(obj);
     
     //8자리인지?
     if (getByteLength(datestr) != 8) {
      alert("날짜는 '-'를 제외한 8자리 숫자로 입력하십시오.");
      return false;
      
     }
   
     
     
     // yy,mm,dd,fromto가 없을 경우
     if (yy == null) yy = 0;
     if (mm == null) mm = 0;
     if (dd == null) dd = 0;
     
     // 검색날짜 유효기간 가져오기
     var boundDate = getBoundDate(yy,mm,dd);
     
     if (yy < 0  || mm < 0  || dd < 0) {
      if ( boundDate > datestr) {
       alert("유효하지 않은 검색날짜입니다.\n유효한 날짜는" + boundDate.substring(0,4) + "년 " + boundDate.substring(4,6) + "월 " + boundDate.substring(6) + "일부터 입니다.");
       obj.select();
       return false;
      }
     } else {
      if ( boundDate < datestr) {
       alert("유효하지 않은 검색날짜입니다.\n유효한 날짜는" + boundDate.substring(0,4) + "년 " + boundDate.substring(4,6) + "월 " + boundDate.substring(6) + "일까지 입니다.");
       obj.select();
       return false;
      }    
     }
      
   
     return true;
    
    }
   
   
   
    //오늘날짜
    function getToDay()
    {
   
        var date = datToday;
   
        var year  = date.getFullYear();
        var month = date.getMonth() + 1; // 1월=0,12월=11이므로 1 더함
        var day   = date.getDate();
    
        if (("" + month).length == 1) { month = "0" + month; }
        if (("" + day).length   == 1) { day   = "0" + day;   }
        
        return ("" + year + month + day)
    
    }
    
    
   
   
 
    
    function selectComboBox(targt, optValue)
    {
     last = targt.length;
     for(var i=0; i<last; i++){
      if(targt.options[i].value == optValue){
       targt.selectedIndex = i;
       targt.options[i].selected;
      }
     }
    }
    
    
    function isExistsComboBoxValue(targt, optValue)
    {
     last = targt.length;
     for(var i=0; i<last; i++){
      if(targt.options[i].value == optValue){
       return true;
      }
     }
     return false;
    }
 
    
    function getCal(aFrm, aObj){
      window.open('/kor/ib/common/msg/cal.jsp?objName=window.opener.'+ aFrm.name +'.' + aObj.name +'&schdate='+ aFrm.name +'.' + aObj.name ,"Window2","status=no,height=150,width=120,resizable=no,left="+x+",top="+y+",scrollbars=no");
    } 
    
    function getCalMonth(aFrm, aObj){
      window.open("/kor/ib/common/msg/calendar_month.jsp?frmName="+aFrm.name + "&obj=" + aObj.name,"calMonth","status=no,height=146,width=255,resizable=no,left="+x+",top="+y+",scrollbars=no");
    } 
 
     
/*
* 전화번호
* 앞에 '0'을 채운다
* by 황상훈 2002-10-23 11:26오후
**/
 
function fill_zero(obj, is4){
 var temp="";
 
 if(obj.value == null || obj.value.length < 1 ) {
  return false;
 }
 
 if (is4 == 'Y' ) {
  return true;
 } else {
  if(obj.value.length != 4 ) {
   for(i=0;i<(4-obj.value.length);i++){
    temp +="0";
   }
   obj.value = temp+obj.value;
  }else{
   obj.value = obj.value;
  }
 
  return true;
 }
}