function isLength(element) {
  var len = element.getAttribute('maxlength');
  if(!len)
      return true;
  if(isEmpty(element))
      return true;

  var ch;
  var cnt = 0;
  var data = element.value;

  for(var i = 0; i < data.length; i++ ) {
      ch = data.charCodeAt(i);
      if (ch >= 12593) {
          cnt+=2;
      } else {
          cnt++;
      }
  }

  return len < cnt ? false:true;
}

function isLength2(element) {
  var len = element.getAttribute('maxlength');
  if(!len)
      return true;
  if(isEmpty(element))
      return true;

  var ch;
  var cnt = 0;
  var data = element.value;

  for(var i = 0; i < data.length; i++ ) {
      ch = data.charCodeAt(i);
      if (ch >= 12593) {
          cnt+=2;
      } else {
          cnt++;
      }
  }

  return len==cnt ? false:true;
}

function isChecked(element) {
  var elements = document.getElementsByName(element.name);
  for(var i = 0; i < elements.length; i++) {
      if(elements(i).checked)
          return true;
  }
  return false;
}

function isEmpty(element, bool) {
  var ret = element.value.length == 0 || /^\s+$/.test(element.value);
  if(bool && ret) {
      element.style.backgroundColor = "yellow";
      var msg = "필수 입력 입니다.";
      if(element.getAttribute("field"))
        msg += " - " + element.getAttribute("field");
      alert(msg);
      if(element.focus && element.type != 'hidden')
        element.focus();
  }
  return ret;
}

function isNumber(element) {
  if(isEmpty(element))
      return true;

  var nMode = element.getAttribute("number");
  var filter = "";
  if(nMode) {
      var firstNum = nMode.substring(1,nMode.indexOf(","));
      var lastNum = nMode.substring(nMode.indexOf(",")+1, nMode.indexOf(")"));
      var intNum = eval(firstNum) - eval(lastNum);
      if(element.value.indexOf(".") != -1)
          filter = "\\d{1," + intNum + "}\\.\\d{0," + lastNum + "}";
      else
          filter = "\\d{1," + intNum + "}";
  } else {
      filter = "[0-9]{0,}";
  }
  var re = new RegExp('^' + filter + '$');
  return re.test(element.value);
}

function isMoney(element) {
  if(isEmpty(element))
      return true;

  return /^[-+]?(?:(?:[1-9]\d{0,2}(?:\,\d\d\d)*)|0)$/.test(element.value);
}

function isInt(element) {
  if(isEmpty(element))
      return true;

  return /^(\-)?[0-9]+$/.test(element.value);
}

function isFloat(element) {
  if(isEmpty(element))
      return true;

  return /^(\+|-)?\d+\.?\d*$/.test(element.value);
}

function isMail(element) {
  if(isEmpty(element))
      return true;

  var r1 = new RegExp('(@.*@)|(\\.\\.)|(@\\.)|(^\\.)');
  var r2 = new RegExp('^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$');
  return (!r1.test(element.value) && r2.test(element.value));
}

function isTel(element) {
  if(isEmpty(element))
      return true;

  return /^(02|0[\d]{2,3})-[\d]{3,4}-[\d]{4,4}$/.test(element.value);
}

function isJumin(element) {
  if(isEmpty(element))
      return true;

  var data = element.value.replace(/[^\d]/g,'');
  var total = 0;
  var temp = new Array(13);

  for(var i = 1; i <= 13; i++)
      temp[i] = data.charAt(i-1);

  for(var i = 1; i <= 12; i++) {
      k = i + 1;
      if(k >= 10)
          k = k % 10 + 2;
      total += (temp[i] * k);
  }

  var mm = temp[3] + temp[4];
  var dd = temp[5] + temp[6];
  var totalmod = total % 11;
  var chd = 11 - totalmod;

  if(chd >= 10)
      chd = chd - 10;
  if(chd == temp[13] && mm < '13' && dd < '32' && (temp[7] == '1' || temp[7] == '2' || temp[7] == '3' || temp[7] == '4'))
      return true;
  else
      return false;
}

function isCorp(element) {
  if(isEmpty(element))
      return true;

  var data = element.value.replace(/[^\d]/g,'');

  if(data.length != 10)
      return false;

  var comp = new Array(9);
  var stnd = new Array(8);
  var strStnd = '137137135';

  for(var i = 0; i < 10; i++)
    comp[i] = data.substring(i,i+1);
  for(var i = 0; i < 9; i++)
    stnd[i] = strStnd.substring(i,i+1);

  for(var sum=0, i = 0; i < 9; i++)
    sum += comp[i] * stnd[i];

  sum = sum + parseInt((data.substring(8, 9) * 5) / 10);

  var mod =  10 - (sum % 10);

  if(mod>=10) mod-=10;
  return mod == comp[9] ? true:false;
}

function isDate(element) {
  if(isEmpty(element))
      return true;

  var sdate = element.value.replace(/[^\d]/g,'');
  var y = Number(sdate.substr(0,4));
  var m = Number(sdate.substr(4,2)) - 1;
  var d = Number(sdate.substr(6,2));

  var end = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
  if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) {
    end[1] = 29;
  }

  return (d >= 1 && d <= end[m]);
}

function isMask(element) {
  if(isEmpty(element))
      return true;

  var mask = element.getAttribute("mask");
  if(mask) {
      var filter = mask.replace(/9/g ,'\\d');
      filter = filter.replace(/a/g,'[a-z]');
      filter = filter.replace(/A/g,'[A-Z]');
      filter = filter.replace(/x/g,'[a-zA-Z0-9]');
  }
  var re = new RegExp('^' + filter + '$');
  return re.test(element.value);
}

function isFilter(element) {
  if(isEmpty(element))
      return true;

  var filter = element.getAttribute("filter");
  if(filter) {
      filter = filter + '{0,}';
  }
  var re = new RegExp('^' + filter + '$');
  return re.test(element.value);
}

function toMoney(element) {
  var minus = false;
  if(element.value.indexOf('-') != -1)
      minus = true;

  var sMoney = element.value.replace(/(,|-)/g,'');
  var tMoney = '';
  var len = sMoney.length;

  if(sMoney.length <= 3) return sMoney;

  for(i = 0; i < len; i++){
      if(i != 0 && ( i % 3 == len % 3)) tMoney += ',';
      if(i < len ) tMoney += sMoney.charAt(i);
  }
  if(minus) tMoney = '-' + tMoney;

  element.value = tMoney;
}

function toDate(element) {
  if(element.getAttribute('mask') == null)
    element.setAttribute('mask', '9999-99-99');

  this.toMask(element);
}

function toTel(element) {
  var data = element.value.replace(/[^\d]/g,'');
  var mask = '';
  if(data.substr(0,2) == '02') {
    mask = data.length == 9 ? '99-999-9999':'99-9999-9999';
  } else {
    mask = data.length == 10 ? '999-999-9999':(data.length == 11 ? '999-9999-9999':'9999-9999-9999');
  }
  element.setAttribute('mask', mask);
  this.toMask(element);
}
function toTel2(val) {
  var data = val.replace(/[^\d]/g,'');
  var mask = '';
  var j = 0;
  var result = "";
  if(data.substr(0,2) == '02') {
    mask = data.length == 9 ? '99-999-9999':'99-9999-9999';
  } else {
    mask = data.length == 10 ? '999-999-9999':(data.length == 11 ? '999-9999-9999':'9999-9999-9999');
  }
  for(i = 0; i < data.length; i++) {
      result  += data.charAt(i);
      j++;
      if(j < mask.length && "()-".indexOf(mask.charAt(j)) != -1){
        result  += mask.charAt(j++);
      }
  }
  return result;
}

function toMask(element) {
  var data = element.value.replace(/[^a-z|^A-Z|^\d]/g,'');
  var mask = element.getAttribute('mask');
  var len = data.length;
  var result = '';
  var j = 0;

  for(var i = 0; i < len; i++){
    result += data.charAt(i);
    j++;
    if (j < mask.length && '-:|/'.indexOf(mask.charAt(j)) != -1 ) result += mask.charAt(j++);
  }
  element.value = result;
}

function toFormat(element) {
  if(element.getAttribute('money') != null)
    this.toMoney(element);
  else if(element.getAttribute('date') != null)
    this.toDate(element);
  else if(element.getAttribute('tel') != null)
    this.toTel(element);
  else if(element.getAttribute('mask') != null)
    this.toMask(element);
}

function toUnformat(element) {
  if(element.getAttribute('money') != null ||
     element.getAttribute('tel') != null ||
     element.getAttribute('jumin') != null ||
     element.getAttribute('corp') != null ||
     element.getAttribute('date') != null ||
     element.getAttribute('mask') != null) {
     element.value = element.value.replace(/[^a-z|^A-Z|^\d|^.]/g,'');
  }
}

function go_page(frm,tgt,loc) {
  if(tgt == '' || tgt == null) {
      frm.target = '_self';
  } else {
      frm.target = tgt;
  }

  frm.method = 'post';
  frm.action = loc;
  frm.submit();
}

function do_action(frm,tgt,loc) {
  if(tgt == '' || tgt == null) {
      frm.target = '_self';
  } else {
      frm.target = tgt;
  }

  frm.method = 'post';
  frm.action = loc;
  var ret = frm.onsubmit();
  return ret;
}

function openWin(loc,popname,width,height,left,top) {
  var args = openWin.arguments;

  if(args.length < 3) {
    width = document.body.clientWidth / 2;
    height = document.body.clientHeight / 2;
  }
  if(args.length < 5) {
    left = (screen.width - width) / 2;
    top = (screen.height - height) / 2;
  }

  var status = "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,width=" + width + ",height=" + height + ",top=" + top + ",left=" + left;
  openw = window.open(loc==''?'':(loc),popname,status);
}

function openPop(loc, args, width, height) {
  if(!args)
    args = new Object();

  var ret = window.showModalDialog(loc, args, "dialogWidth:"+width+"px;dialogHeight:"+height+"px;scroll:no;status:no");
  args.returnValue = ret;
  return args;
}

function moveTab(thisObj,nextObj) {
    var len = thisObj.getAttribute('maxlength');
    if(len) {
        if(thisObj.value.length == parseInt(len)) {
            nextObj.focus() ;
            return;
        }
    }
}

function setCookie(name, value, expire, path) {
    //일주일
    //var expire = new Date();
    //expire.setHours(expire.getHours() + 7 * 24)
    document.cookie = name + "=" + escape(value) + "; " + ((path == null)? "" : ("path=" + path + "; ")) + ((expire == null) ? "" : ("expires=" + expire.toGMTString()));
}

function getCookie(Name) {
    var search = Name + "=";
    if(document.cookie.length > 0) {
        offset = document.cookie.indexOf(search);
        if(offset != -1) {
            offset += search.length;
            end = document.cookie.indexOf(";", offset);
            if(end == -1)
                end = document.cookie.length;
            return unescape(document.cookie.substring(offset, end));
        }
    }
    return "";
}

function chkField(obj1, obj2) {
    if(isEmpty(obj1))
      obj2.value = "";
}

function alerMsg(sgid, param) {
    var args = alertMsg.arguments;
    var msg = lang[msgid];
    if(args.length > 1 && typeof(param) == "object") {
        for(var i = 0; i < param.length; i++) {
            var pos = msg.indexOf("%s");
            msg = msg.substring(0,pos) + param[i] + msg.substring(pos + 2);
        }
    }
    alert(msg);
}

//iType에 따른 입력값이 유효한지 체크
function isValid()
{
    var args = isValid.arguments;
    if (args.length == 0)
       theObj = this;
    else
       theObj = args[0];

    var data = theObj.value;
    var sFilter = "";

    switch(theObj.iType) {
        case TYPE_MASK :
            var mask = theObj.getAttribute("mask");
            if(mask) {
                var sFilter = mask.replace(/(\$|\^|\*|\s|\(|\)|\+|\.|\/|\?|\\|\{|\}|\||\[|\]|\-|:)/g,"\\$1");
                sFilter = sFilter.replace(/9/g ,"\\d");
                sFilter = sFilter.replace(/a/g,"[a-z]");
                sFilter = sFilter.replace(/A/g,"[A-Z]");
                sFilter = sFilter.replace(/x/g,"[a-zA-Z0-9]");
            }
            break;
        case TYPE_NUMBER :
            var nMode = theObj.getAttribute("number");
            if( nMode ) {
                var FirstNum = nMode.substring(1,nMode.indexOf(","));
                var LastNum = nMode.substring(nMode.indexOf(",")+1, nMode.indexOf(")"));
                var IntNum = eval(FirstNum) - eval(LastNum);
                if(data.indexOf(".") != -1)
                    sFilter = "\\d{1," + IntNum + "}\\.\\d{0," + LastNum + "}";
                else
                    sFilter = "\\d{1," + IntNum + "}";
            } else {
                sFilter = "[0-9]{0,}";
            }
            break;
        default :
            if(theObj.getAttribute("filter"))
                sFilter = theObj.getAttribute("filter") + "{0,}";
    }

    if(isBlank(theObj) || !sFilter) return true;
    var re = new RegExp("^" + sFilter + "$");
    if(!re.test(data)) return false;

    return true;
}
//maxlegnth길이에 따른 tabindex이동
function nextTab(element){
  if(isLength2(element))  return;
  if(!element.tabIndex) return;

  var tmp = null;

  for (j = 0; j < element.form.length; j++){
    tmp = element.form.elements[j];
    if (tmp.tabIndex == element.tabIndex+1 || tmp.tabIndex > element.tabIndex+1 ){
      break;
    }
    tmp = null;
  }

  if(!tmp)  return;

  tmp.focus();

}

//영.숫자 혼합 체크
function IsAlphaNumeric2(str) {
     //res1 = (/[a-zA-Z]/i).test(str); //영문이 있는지
     res1 = (/[a-z]/i).test(str); //영문이 있는지
     res2 = (/[0-9]/).test(str); //숫자가 있는지
     res3 = (/^[0-9a-z]*$/i).test(str); //영문, 숫자 이외엔 없는지

     if(res1&&res2&&res3){
        return true;
     }else{
        return false;
     }
     //영문이 있고, 숫자가 있으며, 영문과 숫자 이외엔 없으면 'true'
}

//admin문자존재여부, grpc시작여부 체크
function IsAlphaNumeric4(str)
{
    var check1 = "admin";
    var check2 = "grpc";
    var smstr = str.toLowerCase();

    if (smstr.indexOf(check1)!=-1) return false;
    if (smstr.substring(0,4)==check2) return false;
    return (true);
}
document.onselectstart = f_onselectstart;  //마우스로 긁는(select) 것 방지
document.ondragstart = f_ondragstart;      //클릭하여 마우스로 드래그 방지
document.oncontextmenu = f_oncontextmenu;  //마우스 오른쪽 버튼 방지

function f_ondragstart() {
  return false;
}
function f_onselectstart() {
  return false;
}
function f_oncontextmenu() {
  return false;
}

function f_checkMsg(gubun){
    var url = ""
    var status = "toolbar=no,directories=no,scrollbars=no,resizable=no,status=no,menubar=no,width= 640, height= 480, top=0,left=20";
    if(gubun == 1 ){
        return true;
    }if(gubun == 2 || gubun == 3){
        url = "/jsp/help/realNmChkError.jsp?gubun=1";
    }else if(gubun == 50){
        url = "/jsp/help/realNmChkError.jsp?gubun=2";
    }else if(gubun == 4 || gubun == 10 || gubun == 11 || gubun == 12 || gubun == 13 || gubun == 63
           ||gubun == 14 || gubun == 15 || gubun == 21 || gubun == 24 || gubun == 61 || gubun == 62){
        alert("실명 인증 기관 시스템에 장애가 발생 했습니다.\n잠시 후 다시 시도해 주시기 바랍니다.");
        return;
    }else if(gubun == 5){
        alert("입력하신 주민등록 번호 오류입니다.\n주민등록 번호를 확인 후 다시 시도해 주시기 바랍니다.");
        return;
    }else if(gubun == 6){
        alert("귀하는 성인인증에 필요한 연령이 아닙니다.");
        return;
    }else if(gubun == 9){
        alert("입력한 항목 중 주민등록번호, 성명 중 입력하지 않은 데이터가 있습니다.\n확인 후 다시 시도해 주시기 바랍니다.");
        return;
    }

    if(url != ''){
        window.open(url,"",status);
        return;
    }
}
