//=================================================================================================
// 프로젝트 : 10억홈피 WCMS
// 파 일 명 : /common/js/checkForm.js
// 처리내용 : 폼체크
// 작 성 자 : 2009-07-07 이성준
//=================================================================================================
function checkForm(pForm, pFields) 
{
  if (null != pFields && "" != pFields)
  {
    var lah = new checking(pForm,pFields);
    var wmf = lah.go();
    if (wmf == false) { alert(lah.getErrorMessage()); }
    return wmf;
  }
  else
  {
    return true;
  }
};

checking = function(pForm,pFields) 
{
  this.FUNC_MAP = { url         : "this.func_url"        ,
                    email       : "this.func_email"      ,
                    korean      : "this.func_korean"     ,
                    engonly     : "this.func_engonly"    ,
                    num         : "this.func_num"        ,
                    decnum      : "this.func_decnum"     ,
                    residentno  : "this.func_residentno" ,
                    idcode      : "this.func_idcode"     ,
                    foreignerno : "this.func_foreignerno",
                    bizno       : "this.func_bizno"      ,
                    phone       : "this.func_phone"      ,
                    homephone   : "this.func_homephone"  ,
                    mobile      : "this.func_mobile"     ,
                    userid      : "this.func_userid"     ,
                    nick        : "this.func_nick"       ,
                    filename    : "this.func_filename"   ,
                    domain      : "this.func_domain"     ,
                    MultDomain  : "this.func_MultDomain" ,
                    domainEng   : "this.func_domainEng"  ,
                    domainHan   : "this.func_domainHan"  ,
                    date        : "this.func_date"       ,
                    month       : "this.func_month"      
  };
  this.ERR_MSG = { system     : "checking Error: ",
                   required   : "입력해 주십시요.",
                   requirenum : "이 항목들 중에 {requirenum}개 이상의 항목이 입력되어야 합니다.",
                   notequal   : "입력된 내용이 일치하지 않습니다.",
                   invalid    : "입력된 내용이 형식에 맞지않습니다.",
                   minbyte    : "{minbyte}글자 이상 입력해주십시요.",
                   maxbyte    : "{maxbyte}글자 이하로 입력해주십시요.",
                   mincheck   : "{mincheck}개 이상의 항목을 선택해주십시요.",
                   maxcheck   : "{maxcheck}개 이하의 항목을 선택해주십시요.",
                   minselect  : "{minselect}개 이상의 항목을 선택해주십시요.",
                   maxselect  : "{maxselect}개 이하의 항목을 선택해주십시요.",
                   imageonly  : "이미지 파일만 첨부할 수 있습니다."
  };
  this.ERR_DO = { text   : "select focus",
                  select : "focus",
                  check  : "focus",
                  radio  : "focus",
                  file   : "focus",
                  hidden : ""
  };
  this.ERR_SYS = '_SYSERR_';
  this.chkFields = pFields;
  this.form      = pForm;
  this.fields    = pForm.elements;
  this.errMsg    = ""; // 에러메시지
};

//---------------------------------------------------------------------------------------
// 함수명 : go
// 기  능 : 항목체크(MAIN)
// --------------------------------------------------------------------------------------
checking.prototype.go = function() 
{
  var len = this.chkFields.length;
  
  for (var loopA=0; loopA<len; loopA++) 
  {
    var arrField = this.chkFields[loopA];

    var el = this.form.elements[arrField[3]];
    if (!this.isValidElement(el)) { continue; }

    var elType     = this.getType(el);
    /* 0           1              2        3          4            5         6        7        8      9          10         11       12       13       14       */
    /* 필수       /명칭          /체크타입/필드명    /크리어여부 /포커스여부/최소입력/최대입력/trim  /이미지ONLY/비교필드명/최소체크/최대체크/최소선택/최대선택 */
    var required   = (null == arrField[0] || "" == arrField[0])     ? ""   : arrField[0];               // 필수입력구분(req:필수)
    var field_name = (null == arrField[1] || "" == arrField[1])     ? ""   : arrField[1];               // 필드명칭
    var option     = (null == arrField[2] || "" == arrField[2])     ? ""   : arrField[2];               // 체크타입
    var field      = (null == arrField[3] || "" == arrField[3])     ? ""   : arrField[3];               // 필드명
    var clear_kbn  = (true == arrField[4] )                         ? true : false;                     // 크리어여부(true:크리어)
    var focus_kbn  = (true == arrField[5] )                         ? true : false;                     // 포커스이동여부(true:크리어)
    var minbyte    = (null == arrField[6] || 0 == arrField[6])      ? 0    : parseInt(arrField[6],10);  // 최소입력(0:체크안함)
    var maxbyte    = (null == arrField[7] || 0 == arrField[7])      ? 0    : parseInt(arrField[7],10);  // 최대입력(0:체크안함)
    var trim_kbn   = (null == arrField[8] || "" == arrField[8])     ? ""   : arrField[8];               // 공백제거여부("":제거안함)
    var imageonly  = (true == arrField[9] )                         ? true : false;                     // 아미지파일여부(true:이미지파일인지체크) file 일경우만체크
    var match      = (null == arrField[10] || "" == arrField[10])   ? ""   : arrField[10];              // 비교필드
    var mincheck   = (null == arrField[11] || 0 == arrField[11])    ? 0    : parseInt(arrField[11],10); // 최소체크수(0:체크안함)
    var maxcheck   = (null == arrField[12] || 0 == arrField[12])    ? 0    : parseInt(arrField[12],10); // 최대체크수(0:체크안함)
    var minselect  = (null == arrField[13] || 0 == arrField[13])    ? 0    : parseInt(arrField[13],10); // 최소선택수(0:체크안함)
    var maxselect  = (null == arrField[14] || 0 == arrField[14])    ? 0    : parseInt(arrField[14],10); // 최대선택수(0:체크안함)

    // 공백제거 -----------------------------------------------------
    if ( "" != trim_kbn && ("text" == elType || "hidden" == elType) ) 
    {
      switch (trim_kbn) 
      {
        case "trim"    : el.value = el.value.replace(/^\s+/, "").replace(/\s+$/, ""); break;
        case "compress": el.value = el.value.replace(/\s+/ , "");                     break;
        case "ltrim"   : el.value = el.value.replace(/^\s+/, "");                     break;
        case "rtrim"   : el.value = el.value.replace(/\s+$/, "");                     break;
      }
    }

    // 입력 또는 선택된 값이 있는지 확인 ----------------------------
    var elEmpty = this.isEmpty(el, elType); 

    // 필수입력항목체크 ---------------------------------------------
    if ("required" == required ) 
    {
      if (elEmpty) { return this.raiseError(el,"required",field_name,clear_kbn,focus_kbn,""); }
    } 

    // 최소입력글자,최대입력글자 체크 -------------------------------
    if ((minbyte > 0 || maxbyte > 0) && ("text" == elType || "hidden" == elType)) 
    {
      var _tmp = el.value;
      var _len = el.value.length;
      for (loopJ=0; loopJ<_tmp.length; loopJ++) 
      {
        if (_tmp.charCodeAt(loopJ) > 128) { _len++; }
      }
      if (minbyte > 0 && _len < minbyte) { return this.raiseError(el, "minbyte",field_name,clear_kbn,focus_kbn,minbyte); }
      if (maxbyte > 0 && _len > maxbyte) { return this.raiseError(el, "maxbyte",field_name,clear_kbn,focus_kbn,maxbyte); }
    }
    
    // 체크타입별 정합성체크 ----------------------------------------
    if ("" != option && !elEmpty && "file" != elType)
    {
      var _options = option.split(" ");
      for (var loopJ in _options) 
      {
        var _func = eval(this.FUNC_MAP[_options[loopJ]]);
        try       { var _result = _func(el); } 
        catch (e) { return this.raiseError(this.ERR_SYS,  "function map '"+ _options[loopJ] +"' is not exist.",field_name,clear_kbn,focus_kbn,""); }
        if (_result !== true) { return this.raiseError(el, _result,field_name,clear_kbn,focus_kbn,""); }
      }
    }

    // 메칭필드값확인 (비밀번호) ------------------------------------
    if ( "" != match && "file" != elType ) 
    {
      if      (typeof this.form.elements[match] == "undefined") { return this.raiseError(this.ERR_SYS, "Element '"+ match +"' is not found.",field_name,clear_kbn,focus_kbn,""); }
      else if (el.value != this.form.elements[match].value    ) { return this.raiseError(el, "notequal",field_name,clear_kbn,focus_kbn,""); }
    }

    // check 항목 선택갯수 체크 -------------------------------------
    if ((mincheck > 0 || maxcheck > 0) && "check" == elType ) 
    {
      var _checks = this.form.elements[el.name];
      var _num = 0;
      if (typeof _checks.length != "undefined") 
      {
        for (var loopJ=0; loopJ<_checks.length; loopJ++) 
        {
          if (_checks[loopJ].checked) { _num++; }
        }
      } 
      else 
      {
        if (_checks.checked) { _num++; }
      }
      if (mincheck > 0 && _num < mincheck) { return this.raiseError(el, "mincheck",field_name,clear_kbn,focus_kbn,mincheck); }
      if (maxcheck > 0 && _num > maxcheck) { return this.raiseError(el, "maxcheck",field_name,clear_kbn,focus_kbn,maxcheck); }
    }

    // select 항목 선택갯수 체크 ------------------------------------
    if ((minselect > 0 || maxselect > 0) && "multiselect" == elType ) 
    {
      var _num = 0;
      for (var loopJ=0; loopJ<el.options.length; loopJ++) 
      {
        if (el.options[loopJ].selected) { _num++; }
      }
      if (minselect > 0 && _num < minselect) { return this.raiseError(el, "minselect",field_name,clear_kbn,focus_kbn,minselect); }
      if (maxselect > 0 && _num > maxselect) { return this.raiseError(el, "maxselect",field_name,clear_kbn,focus_kbn,maxselect); }
    }

    // 이미지파일인지 체크 ------------------------------------------
    if ( imageonly && "file" == elType ) 
    {
      var fn = el.value;
      if (fn != "") 
      {
        var dotIndex = fn.lastIndexOf(".");
        var ext = fn.substring(dotIndex+1).toLowerCase();
        if(ext != "jpg" && ext != "jpeg" && ext != "gif" && ext != "png")
        {
          return this.raiseError(el, "imageonly",field_name,clear_kbn,focus_kbn,"");
        }
      }
    }
  }
  return true;
};

// --------------------------------------------------------------------------------------
// 함수명 : isValidElement
// 기  능 : 체크해야할 항목인지 확인
// --------------------------------------------------------------------------------------
checking.prototype.isValidElement = function(pEl) 
{
  return pEl.name && pEl.tagName.match(/^input|select|textarea$/i) && !pEl.disabled;
};

//---------------------------------------------------------------------------------------
// 함수명 : isEmpty
// 기  능 : 입력 또는 선택된 항목이 있는지 확인
// --------------------------------------------------------------------------------------
checking.prototype.isEmpty = function(pEl, pType) 
{
  switch (pType) 
  {
    case "file": case "text": case "hidden":
      if (pEl.value == null || pEl.value == "") { return true; }
      break;
    case "select": case "multiselect":
      if (pEl.selectedIndex == -1 || pEl[pEl.selectedIndex].value == null || pEl[pEl.selectedIndex].value == "")
      {
        return true;
      }
      break;
    case "check": case "radio":
      var elCheck   = this.form.elements[pEl.name];
      var elChecked = false;
      if (typeof elCheck.length != "undefined") 
      {
        for (var loop=0; loop<elCheck.length; loop++) 
        {
          if (elCheck[loop].checked == true) { elChecked = true; }
        }
      } 
      else 
      {
        if (elCheck.checked == true) { elChecked = true; }
      }
      if (elChecked == false) { return true; }
      break;
  }
  return false;
};

// --------------------------------------------------------------------------------------
// 함수명 : getType
// 기  능 : 필드 타입 체크
// --------------------------------------------------------------------------------------
checking.prototype.getType = function(pEl) 
{
  switch (pEl.tagName.toLowerCase()) 
  {
    case "select"  : 
      return (pEl.multiple == true) ? "multiselect" : "select";
      break;
    case "textarea": 
      return "text";
      break;
    case "input":
      switch (pEl.type.toLowerCase()) 
      {
        case "radio":                 return "radio";
        case "checkbox":              return "check";
        case "file":                  return "file";
        case "text": case "password": return "text";
        case "hidden":                return "hidden";
      }
      break;
  }
};

//---------------------------------------------------------------------------------------
// 함수명 : raiseError
// 기  능 : 에러발생시 에러내용생성
// --------------------------------------------------------------------------------------
checking.prototype.raiseError = function( pEl, pType, pElName, pClearKbn, pFocusKbn,pMsg ) 
{
  if (pEl == this.ERR_SYS) 
  {
    this.errMsg = this.ERR_MSG["system"] + pType;
    return false;
  }
  var pattern = /\{([a-zA-Z0-9_]+)\}/i;
  var msg     = this.ERR_MSG[pType] ? this.ERR_MSG[pType] : pType;
  var elType  = this.getType(pEl);
  var pElName = pElName ? pElName : this.getName(pEl);
  var errDo   = this.ERR_DO[elType];
  var _errDos = errDo ? errDo.split(" ") : [];

  if ( pattern.test(msg) == true) 
  {
    while (pattern.exec(msg)) 
    {
      msg = msg.replace(pattern, pMsg);
    }
  }

  if ( pClearKbn )  { pEl.value = ""; }  // 삭제여부
  if ( !pEl.readOnly )
  {
    for (var loopA in _errDos)
    {
      switch (_errDos[loopA]) 
      {
        case "select" : pEl.select(); break;
        case "focus"  : pEl.focus();  break;
      }
    }
  }

  this.errMsg = "["+ pElName +"] "+ msg +"\n";
  return false;
};

// --------------------------------------------------------------------------------------
// 함수명 : getErrorMessage
// 기  능 : 에러메시지취득
// --------------------------------------------------------------------------------------
checking.prototype.getErrorMessage = function() 
{
  return this.errMsg;
};

// --------------------------------------------------------------------------------------
// 함수명 : getName
// 기  능 : 필드 명칭취득
// --------------------------------------------------------------------------------------
checking.prototype.getName = function(pEl) 
{
  return (pEl.getAttribute("TITLE") == null || pEl.getAttribute("TITLE") == "") ? pEl.name : pEl.getAttribute("TITLE");
};

// --------------------------------------------------------------------------------------
// 함수명 : func_url
// 기  능 : URL 체크
// --------------------------------------------------------------------------------------
checking.prototype.func_url = function(pEl,pValue) 
{
  var value   = pValue ? pValue : pEl.value;
  var pattern = /^[\/\:\.가-힣a-zA-Z0-9_-]+\.[a-zA-Z]+$/;
  return pattern.test(value) ? true : "invalid";
};

// --------------------------------------------------------------------------------------
// 함수명 : func_email
// 기  능 : 이메일 체크
// --------------------------------------------------------------------------------------
checking.prototype.func_email = function(pEl,pValue) 
{
  var value = pValue ? pValue : pEl.value;
  var pattern = /^[_a-zA-Z0-9-\.]+@[\.a-zA-Z0-9-]+\.[a-zA-Z]+$/;
  return pattern.test(value) ? true : "invalid";
};

// --------------------------------------------------------------------------------------
// 함수명 : func_korean
// 기  능 : 한글입력체크
// --------------------------------------------------------------------------------------
checking.prototype.func_korean = function(pEl) 
{
  var pattern = /^[가-힣]+$/;
  return pattern.test(pEl.value) ? true : "한글만 입력해주십시요.";
};

// --------------------------------------------------------------------------------------
// 함수명 : func_engonly
// 기  능 : 영문입력체크
// --------------------------------------------------------------------------------------
checking.prototype.func_engonly = function(pEl) 
{
  var pattern = /^[a-zA-Z]+$/;
  return pattern.test(pEl.value) ? true : "invalid";
};

// --------------------------------------------------------------------------------------
// 함수명 : func_num
// 기  능 : 숫자입력체크
// --------------------------------------------------------------------------------------
checking.prototype.func_num = function(pEl) 
{
  var pattern = /^[0-9\,]+$/;
  return pattern.test(pEl.value) ? true : "숫자만 입력해주십시요.";
};

// --------------------------------------------------------------------------------------
// 함수명 : func_decnum
// 기  능 : 숫자입력체크
// --------------------------------------------------------------------------------------
checking.prototype.func_decnum = function(pEl) 
{
  var pattern = /^[0-9\.\,]+$/;
  return pattern.test(pEl.value) ? true : "실수와 정수로만 입력해주십시요.";
};

// --------------------------------------------------------------------------------------
// 함수명 : func_residentno
// 기  능 : 
// --------------------------------------------------------------------------------------
checking.prototype.func_residentno = function(pEl,pValue) 
{
  var pattern = /^(\d{6})-?(\d{5}(\d{1})\d{1})$/;
  var num     = pValue ? pValue : pEl.value;
  if (!pattern.test(num)) { return "invalid"; }
  num = RegExp.$1 + RegExp.$2;
  if (RegExp.$3 == 7 || RegExp.$3 == 8 || RegExp.$4 == 9)
  {
    if ((num[7]*10 + num[8]) %2) { return "invalid"; }
  }

  var sum   = 0;
  var last  = num.charCodeAt(12) - 0x30;
  var bases = "234567892345";
  for (var loop=0; loop<12; loop++) 
  {
    if (isNaN(num.substring(loop,loop+1))) { return "invalid"; }
    sum += (num.charCodeAt(loop) - 0x30) * (bases.charCodeAt(loop) - 0x30);
  }
  var mod = sum % 11;
  if(RegExp.$3 == 7 || RegExp.$3 == 8 || RegExp.$4 == 9) { return (11 - mod + 2) % 10 == last ? true : "invalid"; }
  else                                                   { return (11 - mod) % 10     == last ? true : "invalid"; }
};

// --------------------------------------------------------------------------------------
// 함수명 : func_idcode
// 기  능 : 주민번호체크
// --------------------------------------------------------------------------------------
checking.prototype.func_idcode = function(pEl,pValue) 
{
  var pattern = /^([0-9]{6})-?([0-9]{7})$/;
  var num     = pValue ? pValue : pEl.value;
  if (!pattern.test(num)) { return "invalid"; }
  num = RegExp.$1 + RegExp.$2;

  var sum   = 0;
  var last  = num.charCodeAt(12) - 0x30;
  var bases = "234567892345";
  for (var loop=0; loop<12; loop++) 
  {
    if (isNaN(num.substring(loop,loop+1))) { return "invalid"; }
    sum += (num.charCodeAt(loop) - 0x30) * (bases.charCodeAt(loop) - 0x30);
  }
  var mod = sum % 11;
  return (11 - mod) % 10 == last ? true : "invalid";
};

// --------------------------------------------------------------------------------------
// 함수명 : func_idcode
// 기  능 : 주민번호체크
// --------------------------------------------------------------------------------------
checking.prototype.func_foreignerno = function(pEl,pValue) 
{
  var pattern = /^(\d{6})-?(\d{5}[7-9]\d{1})$/;
  var num     = pValue ? pValue : pEl.value;
  if (!pattern.test(num)) { return "invalid"; }
  num = RegExp.$1 + RegExp.$2;
  if ((num[7]*10 + num[8]) %2) { return "invalid"; }

  var sum = 0;
  var last = num.charCodeAt(12) - 0x30;
  var bases = "234567892345";
  for (var loop=0; loop<12; loop++) 
  {
    if (isNaN(num.substring(loop,loop+1))) { return "invalid"; }
    sum += (num.charCodeAt(loop) - 0x30) * (bases.charCodeAt(loop) - 0x30);
  }
  var mod = sum % 11;
  return (11 - mod + 2) % 10 == last ? true : "invalid";
};

// --------------------------------------------------------------------------------------
// 함수명 : func_bizno
// 기  능 : 사업자번호체크
// --------------------------------------------------------------------------------------
checking.prototype.func_bizno = function(pEl,pValue) 
{
  /*
  var pattern = /([0-9]{3})-?([0-9]{2})-?([0-9]{5})/;
  var num     = pValue ? pValue : pEl.value;
  if (!pattern.test(num)) { return "invalid"; }
  num = RegExp.$1 + RegExp.$2 + RegExp.$3;
  var cVal = 0;
  for (var loop=0; loop<8; loop++) 
  {
    var cKeyNum = parseInt(((_tmp = loop % 3) == 0) ? 1 : ( _tmp  == 1 ) ? 3 : 7);
    cVal += (parseFloat(num.substring(loop,loop+1)) * cKeyNum) % 10;
  }
  var li_temp = parseFloat(num.substring(loop,loop+1)) * 5 + "0";
  cVal += parseFloat(li_temp.substring(0,1)) + parseFloat(li_temp.substring(1,2));
  return parseInt(num.substring(9,10)) == 10-(cVal % 10)%10 ? true : "invalid";
  */

  var pattern = /([0-9]{3})-?([0-9]{2})-?([0-9]{5})/;
  var num     = pValue ? pValue : pEl.value;
  if (!pattern.test(num)) { return "invalid"; }

  var sumMod  = 0; 
  sumMod += parseInt(num.substring(0,1)); 
  sumMod += parseInt(num.substring(1,2)) * 3 % 10; 
  sumMod += parseInt(num.substring(2,3)) * 7 % 10; 
  sumMod += parseInt(num.substring(3,4)) * 1 % 10; 
  sumMod += parseInt(num.substring(4,5)) * 3 % 10; 
  sumMod += parseInt(num.substring(5,6)) * 7 % 10; 
  sumMod += parseInt(num.substring(6,7)) * 1 % 10; 
  sumMod += parseInt(num.substring(7,8)) * 3 % 10; 
  sumMod += Math.floor(parseInt(num.substring(8,9)) * 5 / 10); 
  sumMod += parseInt(num.substring(8,9)) * 5 % 10; 
  sumMod += parseInt(num.substring(9,10)); 
   
  if ( 0 != sumMod % 10 ) 
  { 
    return "invalid"; 
  } 
  else
  {
    return true; 
  }

};

// --------------------------------------------------------------------------------------
// 함수명 : func_phone
// 기  능 : 전화번호체크
// --------------------------------------------------------------------------------------
checking.prototype.func_phone = function(pEl,pValue) 
{
  var pattern     = /^(0[2-8][0-5]?|01[01346-9])-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/;
  var pattern15xx = /^(1544|1566|1577|1588|1644|1688)-?([0-9]{4})$/;
  var num = pValue ? pValue : pEl.value;
  return pattern.exec(num) || pattern15xx.exec(num) ? true : "invalid";
};

// --------------------------------------------------------------------------------------
// 함수명 : func_homephone
// 기  능 : 집전화번호체크
// --------------------------------------------------------------------------------------
checking.prototype.func_homephone = function(pEl,pValue) 
{
  var pattern     = /^(0[2-8][0-5]?)-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/;
  var pattern15xx = /^(1544|1566|1577|1588|1644|1688)-?([0-9]{4})$/;
  var num = pValue ? pValue : pEl.value;
  return pattern.exec(num) || pattern15xx.exec(num) ? true : "invalid";
};

// --------------------------------------------------------------------------------------
// 함수명 : func_mobile
// 기  능 : 휴대폰번호체크
// --------------------------------------------------------------------------------------
checking.prototype.func_mobile = function(pEl,pValue) 
{
  var pattern = /^(01[01346-9])-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/;
  var num     = pValue ? pValue : pEl.value;
  return pattern.exec(num) ? true : "invalid";
};

// --------------------------------------------------------------------------------------
// 함수명 : func_userid
// 기  능 : 아이디체크
// --------------------------------------------------------------------------------------
checking.prototype.func_userid = function(pEl,pValue) 
{
  var pattern = /^[a-zA-Z0-9\_]{4,12}$/;
  var id      = pValue ? pValue : pEl.value;
  return pattern.exec(id) ? true : "4자이상 12자 미만으로 입력해주십시요.\n  [영문], [숫자], [ _ ] 문자만 사용할 수 있습니다";
};

// --------------------------------------------------------------------------------------
// 함수명 : func_nick
// 기  능 : 닉네임체크
// --------------------------------------------------------------------------------------
checking.prototype.func_nick = function(pEl,pValue) 
{
  var pattern = /^[가-힣a-zA-Z0-9]{3,15}$/;
  var nick    = pValue ? pValue : pEl.value;
  return pattern.exec(nick) ? true : "3자이상 15자 미만으로 입력하십시오.\n  [한글] [영문] [숫자] 문자만 사용할 수 있습니다";
};

// --------------------------------------------------------------------------------------
// 함수명 : func_filename
// 기  능 : 파일명체크
// --------------------------------------------------------------------------------------
checking.prototype.func_filename = function(pEl,pValue) 
{
  var pattern  = /^[\.가-힝a-zA-Z0-9_-]{1,100}$/;
  var filename = pValue ? pValue : pEl.value;
  return pattern.exec(filename) ? true : "1자이상 100자 미만으로 입력해주십시요.\n  [한글] [영문] [숫자] [ _ ] [ - ] 문자만 사용할 수 있습니다";
};

// --------------------------------------------------------------------------------------
// 함수명 : func_date
// 기  능 : 날자체크
// --------------------------------------------------------------------------------------
checking.prototype.func_date = function(pEl,pValue) 
{
  var pattern = /^[12][0-9]{3}\-[01]?[0-9]\-[0-3]?[0-9]$/;
  var date    = pValue ? pValue : pEl.value;
  return pattern.exec(date) ? true : "년-월-일(2008-01-01) 형식으로 입력해주십시요.";
};

// --------------------------------------------------------------------------------------
// 함수명 : func_month
// 기  능 : 년월체크
// --------------------------------------------------------------------------------------
checking.prototype.func_month = function(pEl,pValue) 
{
  var pattern = /^[12][0-9]{3}\-[01]?[0-9]$/;
  var month   = pValue ? pValue : pEl.value;
  return pattern.exec(month) ? true : "년-월(2008-01) 형식으로 입력해주십시요.";
};

checking.prototype.func_domainEng = function(pEl,pValue) 
{
  var value = pValue ? pValue : pEl.value;
  var pattern = /^[a-zA-Z0-9\-]{1,63}$/;
  return pattern.test(value) ? true : "영문 도메인은 [영문] [숫자] [-] 문자만 사용 가능합니다.";
}

checking.prototype.func_domainHan = function(pEl,pValue) 
{
  var value = pValue ? pValue : pEl.value;
  var pattern = /^[가-힝0-9\-]{1,63}$/;
  return pattern.test(value) ? true : "한글 도메인은 [한글] [숫자] [-] 문자만 사용 가능합니다.";
}

checking.prototype.func_domain = function(pEl,pValue) 
{
  var value = pValue ? pValue : pEl.value;
  var pattern = /^[가-힝a-zA-Z0-9\-]{1,63}$/;
  return pattern.test(value) ? true : "도메인은 [영문] [한글] [숫자] [-] 문자만 사용 가능합니다.";
}

checking.prototype.func_MultDomain = function(pEl,pValue) 
{
  var value = pValue ? pValue : pEl.value;
  var pattern = /^[가-힣a-zA-Z0-9-\.]+\.[a-zA-Z]+$/;
  return pattern.test(value) ? true : "도메인은 [영문] [한글] [숫자] [-] [.] 문자만 사용 가능합니다.";
}
