  /**
   * 폼 데이터 유효성을 체크한다.
   *
   * @param	form
   * @return boolean
   */
  var isKorean = true;
  function validate(form) {
    var menuID;
    if ( document.getElementById("menuID") != null && document.getElementById("menuID").value.length >= 3 ) {
      menuID = document.getElementById("menuID").value;
      if ( menuID.substring(0, 3) == "002" ) { //사이트번호가 002 일경우 영문사이트
        isKorean = false;
      }
    }
    var inputs = document.getElementsByTagName("input");
    var textareaArray = document.getElementsByTagName("textarea");
    for (var i = 0; i < inputs.length; i++) {
      if(!validateObj(form, inputs[i])) return false;
    }
    for( var j = 0; j < textareaArray.length; j++ ){
      if(!validateObj(form, textareaArray[j])) return false;
    }
    return	true;
  }

  /**
   * 폼 내 특정 오브젝트의 데이터 유효성을 체크한다.
   *
   * @param form
   * @param	obj
   * @return boolean
   */
  function validateObj(form, obj) {
      // 해당 element가 disabled 되었을 경우 항상 true를 리턴함
      if(obj.disabled) return true;

      var caption;
      var dataType;
      var minValue;
      var maxValue;
      var isValid;
      var value;

      var example = "";

      if( obj.type != 'file' ){
        obj.value = trim(obj.value);
      }
      
      caption = obj.getAttribute("caption");
      dataType = obj.getAttribute("dataType");
      minValue = obj.getAttribute("minValue");
      maxValue = obj.getAttribute("maxValue");
      len = obj.getAttribute("len");
      value = obj.value;

      //   alert(obj.name + ";");
      if (caption == null) {
          caption = obj.name;
      }

      // 필수 입력 항목 체크
      if (obj.getAttribute("notEmpty") != null) {
          isValid = false;

          if (obj.type == "radio" || obj.type == "checkbox") {
              if (document.getElementsByName(obj.name).length) {
                  for (var j = 0; j < document.getElementsByName(obj.name).length; j++) {
                      if (document.getElementsByName(obj.name)[j].checked) {
                          isValid = true;
                          break;
                      }
                  }
              } else {
                  if (obj.checked) {
                      isValid = true;
                  }
              }
          } else {
              if (value != "") {
                  isValid = true;
              }
          }

          if (!isValid) {
              if ( isKorean ) {
                alert(caption + "은(는) 필수 입력 항목 입니다.");
              } else {
                alert(caption + " is essential input item.");
              }
              obj.focus();
              selectTextField(obj);
              if (window.event) {
                  window.event.returnValue = false;
              }
              return	false;
          }
      }

      // 데이터 길이 체크
      if (len != null && value != "") {
          if (value.length != eval(len)) {
              alert(caption + "은(는) " + len + "자리를 입력해야 합니다.");
              obj.focus();
              selectTextField(obj);
                if (window.event) {
                    window.event.returnValue = false;
                }
              return	false;
          }
      }

      if (obj.type == "text" || obj.type == "password") {
          // 데이터 타입 체크
          if ((value != "") && (dataType != null)) {
              isValid = true;
              checkValue = false;

              if (dataType == "date") {
                  value = deleteDateFormatStr(value);
                  isValid = isDate(value);
                  checkValue = true;
              } else if (dataType == "month") {
                  value = deleteMonthFormatStr(value);
                  isValid = isDate(value + "01");
                  checkValue = true;
              } else if (dataType == "email") {
                  isValid = isEmail(value);
              } else if (dataType == "float") {
                  value = deleteCommaStr(value);
                  isValid = isFloat(value);
                  checkValue = true;
              } else if (dataType == "integer") {
                  value = deleteCommaStr(value);
                  isValid = isInteger(value);
                  checkValue = true;
              } else if (dataType == "number") {
                  value = deleteCommaStr(value);
                  isValid = isNumber(value);
                  checkValue = true;
              } else if (dataType == "phone") {
                  isValid = isValidPhone(value);
                  example = "\n ex) 02-929-8272";
              } else if (dataType == "phone3") {	//-가 없는 형태 체크
                  value = deleteHyphen(value);
                  isValid = isValidPhone3(value);
                  example = "\n ex) 029298272";
              } else if (dataType == "phone1") {
                  isValid = isValidPhone1(value); //지역번호만 체크
                  example = "\n ex) 02";
              } else if (dataType == "pcs") {
                  isValid = isValidPcs(value); //휴대폰 번호 체크
                  example = "\n ex) 011"; 
              } else if (dataType == "pcs3") {
                  value = deleteHyphen(value);                    
                  isValid = isValidPcs3(value); //휴대폰 번호 체크
                  example = "\n ex) 01199275956";                   
              } else if (dataType == "pcs1") {
                  isValid = isValidPcs1(value); //휴대폰 이통사 번호만 체크
                  example = "\n ex) 011";
              } else if (dataType == "jumin") {
                  value = deleteHyphen(value);
                  isValid = isValidJumin(value);
                  example = "";
              } else if (dataType == "office") {
                  value = deleteHyphen(value);
                  isValid = isValidOfficeNum(value);
                  example = "";
              } else if (dataType == "juffice") {
                  value = deleteHyphen(value);
                  isValid = isValidJuffice(value);
                  example = "";
              } else if ( dataType == "zip") {
                  value = deleteHyphen(value);
                  isValid = isValidZip(value);
                  example = "\n ex) 100100";
              } else if ( dataType == "24hr") {
                  value = deleteSemicolon(value);
                  isValid = isValid24hr(value);
                  example = "\n ex) 1300";
              }

              if (!isValid) {
                if ( isKorean ) {
                  alert(caption + "이(가) 올바르지 않습니다." + example);
                } else {
                  alert(caption + " is invalid." + example);
                }
                  /*
                  if (dataType == "float" || dataType == "integer" || dataType == "number") {
                      obj.value = "0";
                  }
                  */
                  obj.focus();
                  obj.select();
                  selectTextField(obj);
                  if (window.event) {
                      window.event.returnValue = false;
                  }
                  return	false;
              }
              if (checkValue) {
                  if (minValue != null) {
                      if (eval(minValue) > eval(value)) {
                          alert(caption + " 값이 최소값(" + minValue + ") 미만입니다.");
                          obj.focus();
                          selectTextField(obj);
                          if (window.event) {
                              window.event.returnValue = false;
                          }
                          return	false;
                      }
                  }
                  if (isValid && (maxValue != null)) {
                      if (eval(maxValue) < eval(value)) {
                          alert(caption + " 값이 최대값(" + maxValue + ")을 초과합니다.");
                          obj.focus();
                          selectTextField(obj);
                          if (window.event) {
                              window.event.returnValue = false;
                          }
                          return	false;
                      }
                  }
              }
          }
      }
      return	true;
  }

  /**
   * Form element object중 <input type="text" || "password" > 일 경우 select를 수행한다.
   *
   * @param obj
   * @retrun
   */
  function selectTextField(obj){
      if(obj.tagName == "INPUT" && (obj.type == "text" || obj.type == "password")){
          obj.select();
      }
  }
  
  /**
   * trim
   *
   * @param	text
   * @return	string
   */
  function trim(text) {
      if (text == "" || text==null) {
          return	text;
      }

      var len = text.length;
      var st = 0;

      while ((st < len) && (text.charAt(st) <= ' ')) {
          st++;
      }

      while ((st < len) && (text.charAt(len - 1) <= ' ')) {
          len--;
      }

      return	((st > 0) || (len < text.length)) ? text.substring(st, len) : text;
  }

      /**
     * 날짜에서 "/"를 없앤다.
     *
     * @param	str
     */
    function deleteDateFormatStr(str) {
        var temp = '';

        for (var i = 0; i < str.length; i++) {
            if (str.charAt(i) == '/' || str.charAt(i) == '-') {
                continue;
            } else {
                temp += str.charAt(i);
            }
        }

        return	temp;
    }

    /**
     * 월분에 "/"를 붙인다.
     *
     * @param	obj
     */
    function addMonthFormat(obj) {
        var value = trim(obj.value);

        if (value == "") {
            return;
        }

        value = deleteMonthFormatStr(value);

        if ( !isNumber(value) || value.length != 6 || !isValidMonth(value.substring(4, 6))) {
            caption = obj.getAttribute("caption");

            if (caption == null) {
                caption = "";
            }

            alert(caption + " 형식이 올바르지 않거나, 올바른 월이 아닙니다.\n( 예, 200201 )");
            obj.focus();

            return;
        }

        obj.value = addMonthFormatStr(value);
    }

    /**
     * 월분에 "/"를 붙인다.
     */
    function addMonthFormat2() {
        var obj = window.event.srcElement;
        addMonthFormat(obj);
    }

    /**
     * 날짜에 "/"를 붙인다.
     *
     * @param	str
     */
    function addMonthFormatStr(str) {
        return	str.substring(0, 4) + "-" + str.substring(4, 6);
    }

    /**
     * 날짜에서 "/"를 없앤다.
     *
     * @param	obj
     */
    function deleteMonthFormat(obj) {
        obj.value = deleteMonthFormatStr(obj.value);
    }

    /**
     * 날짜에서 "/"를 없앤다.
     */
    function deleteMonthFormat2() {
        var obj = window.event.srcElement;
        deleteMonthFormat(obj);
        obj.select();
    }

    /**
     * 날짜에서 "/"를 없앤다.
     *
     * @param	str
     */
    function deleteMonthFormatStr(str) {
        var temp = '';

        for (var i = 0; i < str.length; i++) {
            if (str.charAt(i) == '-') {
                continue;
            } else {
                temp += str.charAt(i);
            }
        }

        return	temp;
    }


	/*************************************************************************
	/**
     * 전화번호에 "-"를 붙인다.
     *
     * @param	obj
     */
    function addPhoneFormat(obj) {
        var value = trim(obj.value);

        if (value == "") return;

        value = deleteHyphen(value);

        if ( !isValidPhone3(value)) {
            caption = obj.getAttribute("caption");

            if (caption == null) caption = "";

            alert(caption + " 형식이 올바르지 않은 전화번호 입니다 예)029291661");
            obj.focus();

        }else{
            setPhoneHyphen(obj);
        }
    }
    
    /**
     *  전화번호에  '-'넣기
     */
     function setPhoneHyphen(obj) {
        var str = deleteHyphen(obj.value);

        if(str.substring(0, 2) == '02') {	// 02-9999-1212
            if(str.length == 10) {
	            str = str.substring(0, 2) + "-" + str.substring(2,6)+ "-" + str.substring(6);
	        }else if(str.length == 9) {
	            str = str.substring(0, 2) + "-" + str.substring(2,5)+ "-" + str.substring(5);
			}
        }else{ // 번호 3-2-5
            if(str.length == 11) {
	            str = str.substring(0, 3) + "-" + str.substring(3,7)+ "-" + str.substring(7);
	        }else if(str.length == 10) {
	            str = str.substring(0, 3) + "-" + str.substring(3,6)+ "-" + str.substring(6);
			}
        }

         obj.value = str;
     }

	/**
     * 전화번호에 "-"를 붙인다.
     */
    function addPhoneFormat2() {
        var obj = window.event.srcElement;
        addPhoneFormat(obj);	//add
    }

    /**
     * 전화번호에 "-"를 없앤다.
     */
    function deletePhoneFormat2() {
        var obj = window.event.srcElement;
        obj.value = deleteHyphen(obj.value);
        obj.select();
    }
    
    
/**
     * pcs에 "-"를 붙인다.
     *
     * @param	obj
     */
    function addPcsFormat(obj) {
        var value = trim(obj.value);

        if (value == "") return;

        value = deleteHyphen(value);

        if ( !isValidPcs3(value)) {
            caption = obj.getAttribute("caption");

            if (caption == null) caption = "";

            alert(caption + " 형식이 올바르지 않은 휴대폰 번호입니다 예)01129291661");
            obj.focus();

        }else{
            setPcsHyphen(obj);
        }
    }
    
    /**
     *  pcs에 '-'넣기
     */
     function setPcsHyphen(obj) {
        var str = deleteHyphen(obj.value);

            if(str.length == 11) {
	            str = str.substring(0, 3) + "-" + str.substring(3,7)+ "-" + str.substring(7);
	        }else if(str.length == 10) {
	            str = str.substring(0, 3) + "-" + str.substring(3,6)+ "-" + str.substring(6);
			}
         obj.value = str;
     }    
    
    /**
     * pcs에 "-"를 붙인다.
     */
    function addPcsFormat2() {
        var obj = window.event.srcElement;
        addPcsFormat(obj);	//add
    }

    /**
     * pcs에 "-"를 없앤다.
     */
    function deletePcsFormat2() {
        var obj = window.event.srcElement;
        obj.value = deleteHyphen(obj.value);
        obj.select();
    }

/*************************************************************************

    /**
     * 주민등록번호에 "-"를 붙인다.
     *
     * @param	obj
     */
    function addJuminFormat(obj) {
        var value = trim(obj.value);

        if (value == "") return;

        value = deleteHyphen(value);

        if ( !isValidJumin(value)) {
            caption = obj.getAttribute("caption");

            if (caption == null) caption = "";

            alert(caption + " 형식이 올바르지 않거나, 올바른 주민등록번호가 아닙니다.");
            obj.focus();

        }else{
            setJuminHyphen(obj);
        }
    }

    /**
     * 주민등록번호에 "-"를 붙인다.
     */
    function addJuminFormat2() {
        var obj = window.event.srcElement;
        addJuminFormat(obj);
    }

    /**
     * 주민등록번호에서 "-"를 없앤다.
     */
    function deleteJuminFormat2() {
        var obj = window.event.srcElement;
        obj.value = deleteHyphen(obj.value);
        obj.select();
    }


    /**
     * 사업자등록번호에 "-"를 붙인다.
     *
     * @param	obj
     */
    function addOfficeFormat(obj) {
        var value = trim(obj.value);

        if (value == "") return;

        value = deleteHyphen(value);

        if ( !isValidOfficeNum(value)) {
            caption = obj.getAttribute("caption");

            if (caption == null) caption = "";

            alert(caption + " 형식이 올바르지 않거나, 올바른 사업자등록번호가 아닙니다.");
            obj.focus();

        }else{
            setJuminHyphen(obj);
        }
    }

    /**
     * 사업자등록번호에 "-"를 붙인다.
     */
    function addOfficeFormat2() {
        var obj = window.event.srcElement;
        addOfficeFormat(obj);
    }

    /**
     * 사업자등록번호에서 "-"를 없앤다.
     */
    function deleteOfficeFormat2() {
        var obj = window.event.srcElement;
        obj.value = deleteHyphen(obj.value);
        obj.select();
    }

    /**
     * 24hr시간에 ":"를 붙인다.
     *
     * @param	obj
     */
    function add24hrFormat(obj) {
        var value = trim(obj.value);

        if (value == "") return;

        value = deleteSemicolon(value);

        if ( !isValid24hr(value)) {
            caption = obj.getAttribute("caption");

            if (caption == null) caption = "";

            alert(caption + " 형식이 올바르지 않거나, 올바른 시간(24시간)이 아닙니다.");
            obj.focus();

        }else{
            set24hrSemicolon(obj);
        }
    }

    /**
     * 24hr시간에 ":"를 붙인다.
     */
    function add24hrFormat2() {
        var obj = window.event.srcElement;
        add24hrFormat(obj);
    }

    /**
     * 24hr시간에서 ":"를 없앤다.
     */
    function delete24hrFormat2() {
        var obj = window.event.srcElement;
        obj.value = deleteSemicolon(obj.value);
        obj.select();
    }

    /**
     * 사업자번호 혹은 주민등록번호 혹은 법인등록번호에 "-"를 붙인다.
     *
     * @param	obj
     */
    function addJufficeFormat(obj) {
        var value = trim(obj.value);

        if (value == "") return;

        value = deleteHyphen(value);

        if ( !isValidJuffice(value)) {
            caption = obj.getAttribute("caption");

            if (caption == null) caption = "";

            alert(caption + " 형식이 올바르지 않거나, 올바른 (주민/사업자/법인)등록번호 (이)가 아닙니다.");
            obj.focus();

        }else{

            setJuminHyphen(obj);
        }
    }

    /**
     * 사업자번호 혹은 주민등록번호에 "-"를 붙인다.
     */
    function addJufficeFormat2() {
        var obj = window.event.srcElement;
        addJufficeFormat(obj);
    }

    /**
     * 사업자번호 혹은 주민등록번호에서 "-"를 없앤다.
     */
    function deleteJufficeFormat2() {
        var obj = window.event.srcElement;


        obj.value = deleteHyphen(obj.value);
        obj.select();
    }

    /**
     * 우편번호에 "-"를 붙인다.
     *
     * @param	obj
     */
    function addZipFormat(obj) {
        var value = trim(obj.value);

        if (value == "") return;

        value = deleteHyphen(value);

        if ( !isValidZip(value)) {
            caption = obj.getAttribute("caption");

            if (caption == null) caption = "";

            alert(caption + " 형식이 올바르지 않거나, 올바른 우편번호가 아닙니다.");
            obj.focus();

        }else{
            setZipHyphen(obj);
        }
    }

    /**
     * 우편번호에 "-"를 붙인다.
     */
    function addZipFormat2() {
        var obj = window.event.srcElement;
       addZipFormat(obj);
    }

    /**
     * 우편번호에서 "-"를 없앤다.
     */
    function deleteZipFormat2() {
        var obj = window.event.srcElement;
        obj.value = deleteHyphen(obj.value);
        obj.select();
    }


    /**
     * 자리수 체크 후 자리수 일치하면 다음 객체로 focusing
     *
     * @param chkObj
     * @param dstObj
     * @param intLen
     */
    function passFocus(chkObj, dstObj, intLen){
        var str = chkObj.value;

        if(str.length == intLen) dstObj.focus();
        else return;
    }

    /**
     * 발생된 이벤트의 keycode가 "13" 일 경우 target 객체로 focus를 이동한다.
     * 엔터키 후 포커스 이동
     * @param o_target
     */
    function focus_to_obj(o_target){
        var e = window.event;
        if(!e) return;
        if(e.keyCode != "13" ) return;

        e.returnValue = false;
        o_target.focus();
    }




    /**
     *
     * 특정 form의 element들을 tabIndex 속성값에 따라 정렬하여 전역 Array에 담아 리턴한다..
     *
     * @param objForm
     */
    function sortFormByTabIndex(objForm){
        if(!objForm.elements ) return null;

        var arrTarget = new Array();
        var idx =0;
        for(var i=0; i<objForm.elements.length; i++){
            objForm.elements(i).setAttribute("_idx", i);
            if( objForm.elements(i).type != "hidden" && !objForm.elements(i).readOnly
                && objForm.elements(i).tabIndex != 0 && objForm.elements(i).tagName != "TEXTAREA"
                && objForm.style.display != "none" && !objForm.elements(i).disabled){
                arrTarget[idx] = objForm.elements(i);
                idx++;
            }
        }

        var temp;
        for(var i=0; i<arrTarget.length - 1; i++){
            for(var j=0; j<arrTarget.length -1; j++){
                if(arrTarget[j].tabIndex > arrTarget[j+1].tabIndex){
                    temp = arrTarget[j];
                    arrTarget[j] = arrTarget[j+1]
                    arrTarget[j+1] = temp;
                }
            }
        }
        return arrTarget;
    }

    /**
     * 날짜 체크
     *
     * @param	date
     * @return	boolean
     */
    function isDate(date) {
        if (date == null || date.length != 8) {
            return	false;
        }

        if (!isNumber(date)) {
            return	false;
        }

        var year = eval(date.substring(0, 4));
        var month = eval(date.substring(4, 6));
        var day = eval(date.substring(6, 8));

        if ( month > 12 || month < 1 ) {
            return	false;
        }
        if ( day > 31 || day < 1){
            return	false;
        }

        var totalDays;

        switch (eval(month)){

            case 1 :
                totalDays = 31;
                break;
            case 2 :
                if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
                    totalDays = 29;
                else
                    totalDays = 28;
                break;
            case 3 :
                totalDays = 31;
                break;
            case 4 :
                totalDays = 30;
                break;
            case 5 :
                totalDays = 31;
                break;
            case 6 :
                totalDays = 30;
                break;
            case 7 :
                totalDays = 31;
                break;
            case 8 :
                totalDays = 31;
                break;
            case 9 :
                totalDays = 30;
                break;
            case 10 :
                totalDays = 31;
                break;
            case 11 :
                totalDays = 30;
                break;
            case 12 :
                totalDays = 31;
                break;
        }

        if (day > totalDays) {
            return	false;
        }

        return	true;
    }

    /**
     * 주민등록번호 체크
     *
     * @param obj
     * @return boolean
     */
    function isValidJuminObj(obj) {
        var str = deleteHyphen(obj.value);	// 필드에 있는 주민번호에서 '-'제거

        if( !isValidJumin(str) ) {
            alert(" 유효하지 않은 주민등록번호입니다. ");
            obj.focus();
            if (window.event) {
                window.event.returnValue = false;
            }
            return	false;
        }
        obj.value = str;
        return	true;
    }

    /**
     * 사업자번호 혹은 주민등록번호 혹은 법인등록번호 체크
     *
     * @param obj
     * @return boolean
     */
    function isValidJufficeObj(obj) {
        var str = deleteHyphen(obj.value);	// 필드에 있는 주민번호에서 '-'제거
        if( !isValidJuffice(str)){
            alert("유효하지 않은 번호입니다.");
            if(obj.getAttribute('type') == "text"){
            	obj.focus();
            }
            if (window.event) {
                window.event.returnValue = false;
            }
            return	false;
        }
        obj.value = str;
     
        return	true;
    }

    /**
     * 사업자번호 혹은 주민등록번호 혹은 법인등록번호 체크
     *
     * @param str '-'를 뺀 번호
     * @return boolean
     */
    function isValidJuffice(str) {
        if(isValidJumin(str) || isValidOfficeNum(str) || isValidBubinNum(str)){
            return true;
        }else{
            return false;
        }
    }

    /**
     * 주민등록번호 체크
     *
     * @param	str '-'를 뺀 주민등록번호
     * @return boolean
     */
    function isValidJumin(str) {
        var tmp = 0;
        var sex = str.substring(6, 7);
        var birthday;

        if (str.length != 13) {
            return	false;
        }

        if (sex == 1 || sex == 2) {
            birthday = "19" + str.substring(0, 6);
        } else if (sex == 3  || sex == 4) {
            birthday = "20" + str.substring(0, 6);
        } else {
            return	false;
        }

        if (!isDate(birthday)) {
            return	false;
        }

        for (var i = 0; i < 12 ; i++) {
            tmp = tmp + ((i%8+2) * parseInt(str.substring(i,i+1)));
        }

        tmp = 11 - (tmp %11);
        tmp = tmp % 10;

        if (tmp != str.substring(12, 13)) {
            return	false;
        }

        return	true;
    }

    /**
     * 주민등록번호 앞자리체크
     *
     * @param	str '-'를 뺀 주민등록번호
     * @return boolean
     */
    function isValidJumin2(str) {
    	var tmp = 0;
    	var birthday1;
    	var birthday2;
    	
    	if (str.length != 6) {
    		return	false;
    	}
    	birthday1 = "19" + str.substring(0, 6);
    	birthday2 = "20" + str.substring(0, 6);
    	if (!isDate(birthday1)&& !isDate(birthday2)) {
    		return false;
    	} 
    	
    	return	true;
    }

    /**
     *  사업자번호 체크.
     *
     * @param  tempStr '-'를 뺀 사업자 번호
     * @return boolean
     */
    function isValidOfficeNum(tmpStr)
    {
        tmpSum			= new Number(0);
        tmpMod			= new Number(0);
        resValue		= new Number(0);
        var intOffNo 	= new Array(0,0,0,0,0,0,0,0,0,0);
        var strChkNum 	= new Array(1,3,7,1,3,7,1,3,5);

        for(var i = 0 ; i < 10 ; i ++){
            intOffNo[i] = new Number(tmpStr.substring(i, i+1));
        }

        for(var i = 0 ; i < 9 ; i ++){
            tmpSum = tmpSum + (intOffNo[i]*strChkNum[i]);
        }

        tmpSum = tmpSum + ((intOffNo[8]*5)/10);

        tmpMod = parseInt(tmpSum%10, 10);

        if(tmpMod == 0){
            resValue = 0;
        }
        else{
            resValue = 10 - tmpMod;
        }

        if(resValue == intOffNo[9]){
            return true;

        }
        else{
            return false;
        }
    }
    
    /**
     *  법인등록번호 유효성 체크.
     *
     * @param  tempStr '-'를 뺀 법인등록 번호
     * @return boolean
     */
    function isValidBubinNum(tmpStr)
    {
        var format = /^(\d{6})(-{0,1})(\d{7})$/;
        if(isValidFormat(tmpStr, format)){

            var n_chk = 0;
        
        	var n1  = tmpStr.substring(0,1);
        	var n2  = tmpStr.substring(1,2);
        	var n3  = tmpStr.substring(2,3);
        	var n4  = tmpStr.substring(3,4);
        	var n5  = tmpStr.substring(4,5);
        	var n6  = tmpStr.substring(5,6);
        	var n7  = tmpStr.substring(6,7);
        	var n8  = tmpStr.substring(7,8);
        	var n9  = tmpStr.substring(8,9);
        	var n10 = tmpStr.substring(9,10);
        	var n11 = tmpStr.substring(10,11);
        	var n12 = tmpStr.substring(11,12);
        	var n13 = tmpStr.substring(12,13);
            
        	n_chk += n1 * 1;
        	n_chk += n2 * 2;
        	n_chk += n3 * 1;
        	n_chk += n4 * 2;
        	n_chk += n5 * 1;
        	n_chk += n6 * 2;
        	n_chk += n7 * 1;
        	n_chk += n8 * 2;
        	n_chk += n9 * 1;
        	n_chk += n10 * 2;
        	n_chk += n11 * 1;
        	n_chk += n12 * 2;
        	n_chk = n_chk % 10;
        	n_chk = 10 - n_chk;
        	
        	if(n_chk > 9 ){n_chk = 10 - n_chk;}      	
        	n_chk = Math.abs(n_chk);
        	if(n_chk == n13){
        		return true;
        	}else{
        		return false;
        	}
        	
        
        }else{
        	return false;
        }
    }

    /**
     * 유효한 우편번호인지 체크
     * @param str '-'을 뺀 우편번호
     * @return boolean
     */
    function isValidZip(str){
        re = /^(\d{6})$/;
        if (re.test(str)) {
            return	true;
        }
        return	false;
    }

    /**
     * 유효한 24hr 시간임을 체크
     * @param str ':'을 뺀 24hr - 예)0100
     * @return boolean
     */
    function isValid24hr(str){
        re = /^(\d{4})$/;
        return (isValidFormat(str,re) && isValidHour(str.substring(0,2)) && isValidMin(2,4));
    }

    /**
     * 오직 숫자로만 이루어져 있는지 체크
     *
     * @param	num 임의의 문자열
     * @return boolean
     */
    function isNumber(num) {
        re = /^[0-9]*[0-9]$/;

        if (re.test(num)) {
            return	true;
        }

        return	false;
    }

    /**
     * 정수 체크
     *
     * 1. +, - 부호를 생략하거나 넣을 수 있다 : ^[\+-]?
     * 2. 0에서 9까지 숫자가 0번 이상 올 수 있다 : [0-9]*
     * 3. 마지막은 숫자로 끝나야 한다 : [0-9]$
     *
     * @param	num 임의의 문자열
     * @return	boolean
     */
    function isInteger(num) {
        re = /^[\+-]?[0-9]*[0-9]$/;

        if (re.test(num)) {
            return	true;
        }

        return	false;
    }

    /**
     * 부동소수 체크
     *
     * 1. +, - 부호를 생략하거나 넣을 수 있다 : ^[\+-]?
     * 2. 0에서 9까지 숫자가 0번 이상 올 수 있다 : [0-9]*
     * 3. 소수점을 넣을 수 있다 : [.]?
     * 4. 소수점 이하 자리에 0에서 9까지 숫자가 올 수 있다 : [0-9]*
     * 5. 마지막은 숫자로 끝나야 한다 : [0-9]$
     *
     * @param	num 임의의 문자열
     * @return	boolean
     */
    function isFloat(num) {
        re = /^[\+-]?[0-9]*[.]?[0-9]*[0-9]$/;

        if (re.test(num)) {
            return	true;
        }

        return	false;
    }

    /**
     * 이메일 체크
     * 2009.09.23 
     * 현재 예약에서만 사용하므로 applicantEmail1으로 focus픽스되어있음. 추후 제거
     * @param	email
     * @return	boolean
     *
     * Deprecated at 2003/10/27
     */
    function isEmail2(email) {

        re = /[^@]+@[A-Za-z0-9_-]+[.]+[A-Za-z]+/;

        if (re.test(email)) {
            return	true;
        } else {
          alert("올바른 이메일주소가 아닙니다.");
          document.getElementById("applicantEmail1").focus();
          return	false;
        }
    }

    /**
     * 이메일 체크
     *
     * @param	strEmail 임의의 문자열
     * @return	boolean
     */
    function isEmail (strEmail) {

        var checkTLD=1;
        var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
        var emailPat=/^(.+)@(.+)$/;
        var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
        var validChars="\[^\\s" + specialChars + "\]";
        var quotedUser="(\"[^\"]*\")";
        var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
        var atom=validChars + '+';
        var word="(" + atom + "|" + quotedUser + ")";
        var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
        var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
        var matchArray=strEmail.match(emailPat);

        if (matchArray==null) {
        //alert("이메일 주소가 정확하지 않습니다 (체크 @ and .'s)");
        return false;
        }
        var user=matchArray[1];
        var domain=matchArray[2];
        for (i=0; i<user.length; i++) {
        if (user.charCodeAt(i)>127) {
        //alert("잘못된 이메일 주소를 입력 하셨습니다.");
        return false;
           }
        }
        for (i=0; i<domain.length; i++) {
        if (domain.charCodeAt(i)>127) {
        //alert("도메인 이름이 잘못 기제 되었습니다.");
        return false;
           }
        }

        if (user.match(userPat)==null) {
        //alert("이메일 조소가 아닙니다.");
        return false;
        }
        var IPArray=domain.match(ipDomainPat);
        if (IPArray!=null) {

        for (var i=1;i<=4;i++) {
        if (IPArray[i]>255) {
        //alert("IP주소가 틀립니다!");
        return false;
           }
        }
        return true;
        }

        var atomPat=new RegExp("^" + atom + "$");
        var domArr=domain.split(".");
        var len=domArr.length;
        for (i=0;i<len;i++) {
        if (domArr[i].search(atomPat)==-1) {
        //alert("도메인 이 존재 하지 않습니다.");
        return false;
           }
        }

        if (checkTLD && domArr[domArr.length-1].length!=2 &&
        domArr[domArr.length-1].search(knownDomsPat)==-1) {
        //alert("알려진 형식으로 끝이 나야합니다." + "country.");
        return false;
        }

        if (len<2) {
        //alert("Hostname이 틀립니다. !");
        return false;
        }

        return true;
    }

  /**
     * 한글로만 이루어져 있는지 체크 한다.
     *
     * @param	han
     * @return	boolean
     */
  function isHangul(han) {
        var inText = han.value;
        var ret;

        ret = inText.charCodeAt();
        if (ret > 31 && ret < 127) {
            //alert("한글만 입력 가능합니다.");
            han.value = "";
            han.focus();
            return false;
        }
        return true;
    }
  /**
   * 빈문자열 검증
   * @param inputStr
   * @return boolean
   */
function isEmpty(inputStr){ 
	if ( null == inputStr || "" == inputStr ) { 
		return true;
	} 
	return false; 
}

    /**
     * 영문자 검증
     * @param str
     * @return boolean
     */
    function isAlpha(obj){
        var str = obj.value;
        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;
    }

    /**
     * 숫자에 comma를 붙인다.
     *
     * @param	obj
     */
    function addComma(obj) {
        var value = trim(obj.value);

        if (value == "") {
            return;
        }
        value = deleteCommaStr(value);

        if (!isFloat(value)) {
            caption = obj.getAttribute("caption");

            if (caption == null) {
                caption = "";
            }
	
            alert(caption + " 형식이 올바르지 않습니다.");
            //obj.value = "0";
            //obj.focus();
            obj.select();
            if (window.event) {
                window.event.returnValue = false;
            }
            return;
        }

        obj.value = addCommaStr(value);
    }

    /**
     * 숫자에 comma를 붙인다.
     */
    function addComma2() {
        var obj = window.event.srcElement;
        addComma(obj);
    }

    /**
     * 숫자에 comma를 붙인다.
     *
     * @param	str
     */
    function addCommaStr(str) {
        var num = "";
        var sign = "";

        if (str.charAt(0) == "+" || str.charAt(0) == "-") {
            sign = str.charAt(0);
            str = str.substr(1);
        }

        var index = str.indexOf('.');

        if (index != -1) {
            num = str.substr(index);
        } else {
            index = str.length;
        }

        for (var i = index - 3; i > 0; ) {
            num = ',' + str.substr(i, 3) + num;
            index = i;
            i -= 3;
        }

        num = sign + str.substr(0, index) + num;

        return	num;
    }

    /**
     * 숫자에서 comma를 없앤다.
     *
     * @param	obj
     */
    function deleteComma(obj) {
        obj.value = deleteCommaStr(obj.value);
    }

    /**
     * 숫자에서 comma를 없앤다.
     */
    function deleteComma2() {
        var obj = window.event.srcElement;
        deleteComma(obj);
        obj.select();
    }

    /**
     * 숫자에서 comma를 없앤다.
     *
     * @param	str
     */
    function deleteCommaStr(str) {
        var temp = '';

        for (var i = 0; i < str.length; i++) {
            if (str.charAt(i) == ',') {
                continue;
            } else {
                temp += str.charAt(i);
            }
        }

        return	temp;
    }

    /**
     * 날짜에 "/"를 붙인다.
     *
     * @param	obj
     */
    function addDateFormat(obj) {
        var value = trim(obj.value);

        if (value == "") {
            return;
        }

        value = deleteDateFormatStr(value);

        if (!isDate(value)) {
            caption = obj.getAttribute("caption");

            if (caption == null) {
                caption = "";
            }

            alert(caption + " 형식이 올바르지 않거나, 올바른 날짜가 아닙니다.\n( 예, 20020101 )");
            obj.focus();

            return;
        }

        obj.value = addDateFormatStr(value);
    }


    /**
     * 날짜에 "/"를 붙인다.
     */
    function addDateFormat2() {
        var obj = window.event.srcElement;
        addDateFormat(obj);
    }

    /**
     * 날짜에 "/"를 붙인다.
     *
     * @param	str
     */
    function addDateFormatStr(str) {
        return	str.substring(0, 4) + "/" + str.substring(4, 6) + "/" + str.substring(6, 8);
    }

    /**
     * 날짜에서 "/"를 없앤다.
     *
     * @param	obj
     */
    function deleteDateFormat(obj) {
        obj.value = deleteDateFormatStr(obj.value);
    }

    /**
     * 날짜에서 "/"를 없앤다.
     */
    function deleteDateFormat2() {
        var obj = window.event.srcElement;
        deleteDateFormat(obj);
        obj.select();
    }
    


    




    /**
     * 이메일 체크
     *
     * @param	email
     * @return	boolean
     *
     * Deprecated at 2003/10/27
     */
     /*
    function isEmail(email) {

        re = /[^@]+@[A-Za-z0-9_-]+[.]+[A-Za-z]+/;

        if (re.test(email)) {
            return	true;
        }

        return	false;
    }
    */



    /**
      * 숫자만 입력
      *
      */
    function checkDouble(){
      var key = event.keyCode;
      if(!(key==8||key==9||key==13||key==37||key==39||key==46||key==144||(key>=48&&key<=57)||(key>=96&&key<=105)||key==110||key==190)){
      event.returnValue = false;
      }
    }
    /**
      * 문자 바이트 체크
      *
      */
    function char_length(obj, iSize, sId) {
      var tmpStr;
      var temp=0;
      var onechar;
      var tcount;
      tcount = 0;
      aquery = obj.value;
      tmpStr = new String(aquery);
      temp = tmpStr.length;
      
      for (k=0;k<temp;k++)
      {
        onechar = tmpStr.charAt(k);
        if (escape(onechar) =='%0D') { } else if (escape(onechar).length > 4) { tcount += 2; } else { tcount++; }
      }
      
      document.getElementById(sId).innerHTML = tcount;
      
      if(tcount>iSize) {
        reserve = tcount-iSize;
        alert(iSize+"바이트 이상 입력할 수 없습니다.");
        cutText(obj, iSize, sId);
        return;
      }
    }
    function cutText(obj, iSize, sId)
    {
      var tmpStr;
      var temp=0;
      var onechar;
      var tcount;
      tcount = 0;
      aquery = obj.value;
      tmpStr = new String(aquery);
      temp = tmpStr.length;
      
      for(k=0;k<temp;k++)
      {
        onechar = tmpStr.charAt(k);
        
        if(escape(onechar).length > 4) {
          tcount += 2;
        } else {
          // 엔터값이 들어왔을때 값(\r\n)이 두번실행되는데 첫번째 값(\n)이 들어왔을때 tcount를 증가시키지 않는다.
          if(escape(onechar)=='%0A') {
          } else {
            tcount++;
          }
        }
      
        if(tcount>iSize) {
          tmpStr = tmpStr.substring(0,k);
          break;
        }
      }
      obj.value = tmpStr;
      char_length(obj, iSize, sId);
    }
    
    /**
     * 문자에서 Hyphen을 없앤다.
     *
     * @param str
     */
    function deleteHyphen(str) {

        var temp = '';
        if(str == "") return temp;
        for (var i = 0; i < str.length; i++) {
            if (str.charAt(i) == '-') {
                continue;
            } else {
                temp += str.charAt(i);
            }
        }
        return temp;
    }

    /**
     * 입력값이 사용자가 정의한 포맷 형식인지 체크
     * 자세한 format 형식은 자바스크립트의 'regular expression'을 참조
     */
    function isValidFormat(inputStr,re) {
         //alert ('re:'+re);
         if (re.test(inputStr)) {
              //alert ('true:');
              return true; //올바른 포맷 형식
         }
         //alert ('false:');
         return false;
    }
    
