/******************************************************************************/
/* ÆÄ ÀÏ ¸í: /common/checkForm.js
/* ÀÛ¾÷³»¿ë: ÆûÀÔ·ÂÃ¼Å©
/* ÀÛ¼ºÀÏÀÚ: 2007-07-02
/* ÀÛ ¼º ÀÚ: (ÁÖ)EXIÀÎÅÍ³Ý±×·ì ÀÌ¼ºÁØ
/******************************************************************************/

//-----------------------------------------------------------------------------
// Æû¿¡¼­ ÀÔ·ÂµÈ ³»¿ëÀÇ À¯È¿¼ºÀ» Ã¼Å©ÇÏ´Â ½ºÅ©¸³Æ®
// »ç¿ë½Ã Form Àý¿¡¼­ onsubmitÀ¸·Î Ã¼Å©¸¦ ½ÃÀÛÇÏ¸ç
// ÇØ´çÀÔ·ÂÇ×¸ñ¿¡¼­ ÀÓÀ¸·Î µî·ÏµÈ ÇÁ·ÎÆÛÆ¼µéÀÌ ÀÖ°í °¢ ÇÁ·ÎÆÛÆ¼º°·Î ´ÙÀ½°ú°°ÀÌ
// ¼³Á¤À» ÇÕ´Ï´Ù.
// required=""  required ÀÌ¸é ÇÊ¼öÀÔ·ÂÀ¸·Î Ã¼Å©ÇÔ
// trim=""      trim ÀÌ¸é ¹®ÀÚ¿­ÀÇ °ø¹éÀ» »èÁ¦
// hname=''     ÀÔ·ÂÇ×¸ñÀÇ ÇÑ±ÛÀÌ¸§
// option=''    Ã¼Å©Ç×¸ñÀÇ Á¾·ù¸¦ ³ªÅ¸³¿(FUNC_MAPÂüÁ¶)
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// Æû¿¡ ÀÔ·ÂµÈ ³»¿ëÀ» È®ÀÎ(MAIN)
//-----------------------------------------------------------------------------
function gf_CheckForm(form, fields) {
    var lah = new FormChecker(form);
    if (fields) { lah.setCheckFields(fields); }
    var wmf = lah.go();
    if (wmf == false) {
		alert(lah.getErrorMessage());
		//LayerFile.style.visibility = 'hidden';
	}
    return wmf;
}

//-----------------------------------------------------------------------------
// Ã¼Å©¿¡ÇÊ¿äÇÑ ¸Þ½ÃÁö ¼±¾ð
//-----------------------------------------------------------------------------
FormChecker = function(form) {
    this.FUNC_MAP = {
        url       : "this.f_url",
		email     : "this.f_email",
        hangul    : "this.f_hangul",
        engonly   : "this.f_engonly",
        num       : "this.f_num",
		decnum    : "this.f_decnum",
        residentno: "this.f_residentno",
        jumin     : "this.f_jumin",
        foreignerno:"this.f_foreignerno",
        bizno     : "this.f_bizno",
        phone     : "this.f_phone",
        homephone : "this.f_homephone",
        handphone : "this.f_handphone",
        userid    : "this.f_userid",
		filename  : "this.f_filename"
    }
    this.ERR_MSG = {
        system   : "FormChecker Error: ",
		required : "ÇÊ¼ö »çÇ× ÀÔ´Ï´Ù.",
        requirenum:"ÀÌ Ç×¸ñµé Áß¿¡ {requirenum}°³ ÀÌ»óÀÇ Ç×¸ñÀÌ ÀÔ·ÂµÇ¾î¾ß ÇÕ´Ï´Ù.",
        notequal : "ÀÔ·ÂµÈ ³»¿ëÀÌ ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù.",
        invalid  : "ÀÔ·ÂµÈ ³»¿ëÀÌ Çü½Ä¿¡ ¾î±ß³³´Ï´Ù.",
        minbyte  : "ÀÔ·ÂµÈ ³»¿ëÀÇ ±æÀÌ°¡ {minbyte}Byte ÀÌ»óÀÌ¾î¾ß ÇÕ´Ï´Ù.",
        maxbyte  : "ÀÔ·ÂµÈ ³»¿ëÀÇ ±æÀÌ°¡ {maxbyte}Byte¸¦ ÃÊ°úÇÒ ¼ö ¾ø½À´Ï´Ù.",
        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.fields = form.elements;
    this.form = form;
    this.errMsg = "";
}

//-----------------------------------------------------------------------------
// ÆûÁöÁ¤
//-----------------------------------------------------------------------------
FormChecker.prototype.setForm = function(form) {
    this.form = form;
}

//-----------------------------------------------------------------------------
// Ã¼Å©ÇÒÇÔ¼ö¸¦ ÁöÁ¤
//-----------------------------------------------------------------------------
FormChecker.prototype.setFunc = function(map, func) {
    if (typeof(this.FUNC_MAP[map]) == "string") { return; }
    this.FUNC_MAP[map] = func;
}

//-----------------------------------------------------------------------------
// Ã¼Å©ÇÒ ÇÊµå¸¦ ÁöÁ¤
//-----------------------------------------------------------------------------
FormChecker.prototype.setCheckFields = function(fields) {
    this.fields = [];
    if(typeof(fields) == 'string') {
        this.fields = [this.form.elements[fields]];
	}
    else {
        for(var i=0, s=fields.length; i<s; i++) {
            this.fields[this.fields.length] = this.form.elements[fields[i]];
		}
	}
}

//-----------------------------------------------------------------------------
// ÇÊµåÃ¼Å©ÈÄ ¼±ÅÃº¯°æ
//-----------------------------------------------------------------------------
FormChecker.prototype.setUnCheckFields = function(fields) {
    this.fields = [];
    var _isUnCheckEl;

    if(typeof(fields) == 'string') {
        fields = [fields];
	}
    for (var i=0, s=this.form.elements.length; i<s; i++) {
        _isUnCheckEl = false;
        for (var j=0, t=fields.length; j<t; j++) {
            if (this.form.elements[i] == this.form.elements[fields[j]]) {
                _isUnCheckEl = true;
                break;
            }
        }
        if (!_isUnCheckEl) { this.fields[this.fields.length] = this.form.elements[i]; }
    }
}

//-----------------------------------------------------------------------------
// ÀÎ¼öÁöÁ¤
//-----------------------------------------------------------------------------
FormChecker.prototype.setParam = function(el, name, value) {
    el.setAttribute(name, value);
}

//-----------------------------------------------------------------------------
// ÀÎ¼ö»èÁ¦
//-----------------------------------------------------------------------------
FormChecker.prototype.delParam = function(el, name) {
    el.removeAttribute(name);
}

//-----------------------------------------------------------------------------
// ÀÔ·ÂÇ×¸ñº°·Î ÀÔ·Â¿©ºÎ,Á¤ÇÕ¼ºÃ¼Å©
//-----------------------------------------------------------------------------
FormChecker.prototype.go = function() {
    for (var i=0,s=this.fields.length; i<s; i++) {
        var el = this.fields[i];
        if (!this.isValidElement(el)) { continue; }

        var elType = this.getType(el);
        var trim = el.getAttribute("TRIM");
        var required = el.getAttribute("REQUIRED");
        var requirenum = el.getAttribute("REQUIRENUM");
        var minbyte = parseInt(el.getAttribute("MINBYTE"),10);
        var maxbyte = parseInt(el.getAttribute("MAXBYTE"),10);
        var mincheck = parseInt(el.getAttribute("MINCHECK"),10);
        var maxcheck = parseInt(el.getAttribute("MAXCHECK"),10);
        var minselect = parseInt(el.getAttribute("MINSELECT"),10);
        var maxselect = parseInt(el.getAttribute("MAXSELECT"),10);
        var option = el.getAttribute("OPTION");
        var match = el.getAttribute("MATCH");
        var span = el.getAttribute("SPAN");
        var glue = el.getAttribute("GLUE");
        var pattern = el.getAttribute("PATTERN");
        var imageonly = el.getAttribute("IMAGEONLY");

        if (trim != null && (elType == "text" || elType == "hidden")) {
            switch (trim) {
            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 != null) {
            if (required == "required") {
                if (elEmpty) { return this.raiseError(el, "required"); }
            } 
			else {
                requirenum = parseInt(requirenum, 10);
                var _num = 0;
                var _name = [];
                if (requirenum > 0) {
                    for (var j=0; j<this.form.elements.length; j++) {
                        var _el = this.form.elements[j];
                        if (required == _el.getAttribute("REQUIRED")) {
                            if(!this.isEmpty(_el, this.getType(_el))) { _num++; }
                            _name[_name.length] = this.getName(_el);
                        }
                    }
                    if(_num < requirenum) {
                        return this.raiseError(el, "requirenum", _name.join(", "));
					}
                }
            }
        }
        if ((minbyte > 0 || maxbyte > 0) && (elType == "text" || elType == "hidden")) {
            var _tmp = el.value;
            var _len = el.value.length;
            for (j=0; j<_tmp.length; j++) {
                if (_tmp.charCodeAt(j) > 128) { _len++; }
            }
            if (minbyte > 0 && _len < minbyte) { return this.raiseError(el, "minbyte"); }
            if (maxbyte > 0 && _len > maxbyte) { return this.raiseError(el, "maxbyte"); }
        }
        if (match != null && elType != "file") {
            if (typeof this.form.elements[match] == "undefined") {
                return this.raiseError(this.ERR_SYS, "Element '"+ match +"' is not found.");
			}
            else if (el.value != this.form.elements[match].value) {
                return this.raiseError(el, "notequal");
			}
        }
        if (option != null && !elEmpty && elType != "file") {
            var _options = option.split(" ");
            for (var j in _options) {
                var _func = eval(this.FUNC_MAP[_options[j]]);
                if (span != null) {
                    var _value = [];
                    for (var k=0; k<parseInt(span,10); k++) {
                        try       { _value[k] = this.fields[i+k].value; }
						catch (e) { return this.raiseError(this.ERR_SYS,  (i+k) +"th Element is not found."); }
                    }
                    try       { var _result = _func(el, _value.join(glue == null ? "" : glue)); } 
					catch (e) { return this.raiseError(this.ERR_SYS,  "function map '"+ _options[j] +"' is not exist."); }
                    if (_result !== true) { return this.raiseError(el, _result); }
                } 
				else {
                    try       { var _result = _func(el); } 
					catch (e) { return this.raiseError(this.ERR_SYS,  "function map '"+ _options[j] +"' is not exist."); }
                    if (_result !== true) { return this.raiseError(el, _result); }
                }
            }
        }
        if (pattern != null && !elEmpty && elType != "file") {
            try       { pattern = new RegExp(pattern); }
			catch (e) { return this.raiseError(this.ERR_SYS, "Invalid Regular Expression '"+ pattern +"'"); }
            if (!pattern.test(el.value)) { return this.raiseError(el, "invalid"); }
        }
        if ((mincheck > 0 || maxcheck > 0) && elType == "check") {
            var _checks = this.form.elements[el.name];
            var _num = 0;
            if (typeof _checks.length != "undefined") {
                for (var j=0; j<_checks.length; j++) {
                    if (_checks[j].checked) { _num++; }
                }
            } 
			else {
                if (_checks.checked) { _num++; }
            }
            if (mincheck > 0 && _num < mincheck) { return this.raiseError(el, "mincheck"); }
            if (maxcheck > 0 && _num > maxcheck) { return this.raiseError(el, "maxcheck"); }
        }
        if ((minselect > 0 || maxselect > 0) && elType == "multiselect") {
            var _num = 0;
            for (var j=0; j<el.options.length; j++) {
                if (el.options[j].selected) { _num++; }
            }
            if (minselect > 0 && _num < minselect) { return this.raiseError(el, "minselect"); }
            if (maxselect > 0 && _num > maxselect) { return this.raiseError(el, "maxselect"); }
        }
        if (imageonly != null && elType == "file") {
            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");
				}
            }
        }
    }
    return true;
}

//-----------------------------------------------------------------------------
// ÀÔ·ÂÇ×¸ñÀÎÁö È®ÀÎ
//-----------------------------------------------------------------------------
FormChecker.prototype.isValidElement = function(el) {
    return el.name && el.tagName.match(/^input|select|textarea$/i) && !el.disabled;
}

//-----------------------------------------------------------------------------
// ÀÔ·ÂÇ×¸ñÀÌ ºñ¾ú´ÂÁö È®ÀÎ
//-----------------------------------------------------------------------------
FormChecker.prototype.isEmpty = function(el, type) {
    switch (type) {
    case "file": case "text": case "hidden":
        if (el.value == null || el.value == "") { return true; }
        break;
    case "select": case "multiselect":
        if (el.selectedIndex == -1 || el[el.selectedIndex].value == null || el[el.selectedIndex].value == "") {
            return true;
		}
        break;
    case "check": case "radio":
        var elCheck = this.form.elements[el.name];
        var elChecked = false;
        if (typeof elCheck.length != "undefined") {
            for (var j=0; j<elCheck.length; j++) {
                if (elCheck[j].checked == true) { elChecked = true; }
            }
        } else {
            if (elCheck.checked == true) { elChecked = true; }
        }
        if (elChecked == false) { return true; }
        break;
    }
    return false;
}

//-----------------------------------------------------------------------------
// ÀÔ·ÂÇ×¸ñÀÇ Å¸ÀÔ Ãëµæ
//-----------------------------------------------------------------------------
FormChecker.prototype.getType = function(el) {
    switch (el.tagName.toLowerCase()) {
    case "select":
        return el.multiple == true ? "multiselect" : "select";
    case "textarea": return "text";
    case "input":
        switch (el.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;
    }
}

//-----------------------------------------------------------------------------
// ÀÔ·Â°ªÁß¿¡ ÀÔ·Â¿ä°Ç¿¡ ¸ÂÁö ¾Ê´Â°ÍÀÌ ÀÖ´Â°æ¿ì Ã³¸®
//-----------------------------------------------------------------------------
FormChecker.prototype.raiseError = function(el, type, elName) {
    if (el == this.ERR_SYS) {
        this.errMsg = this.ERR_MSG["system"] + type;
        return false;
    }
    var pattern = /\{([a-zA-Z0-9_]+)\}/i;
    var msg = this.ERR_MSG[type] ? this.ERR_MSG[type] : type;
    var elType = this.getType(el);
    var elName = elName ? elName : this.getName(el);
    var errDo = el.getAttribute("ERRDO") ? el.getAttribute("ERRDO") : this.ERR_DO[elType];
    var _errDos = errDo ? errDo.split(" ") : [];

    if (el.getAttribute("ERRMSG") != null) { msg = el.getAttribute("ERRMSG"); }
    if (pattern.test(msg) == true) {
        while (pattern.exec(msg)) {
			msg = msg.replace(pattern, el.getAttribute(RegExp.$1));
		}
    }
    for (var i in _errDos) {
        switch (_errDos[i]) {
        case "delete": el.value = ""; break;
        case "select": el.select(); break;
        case "focus":  el.focus(); break;
        }
    }
    this.errMsg = "\'"+ elName +"\'Àº(´Â) "+ msg +"\n";
    return false;
}

//-----------------------------------------------------------------------------
// ¿¡·¯¸Þ½ÃÁö Ãëµæ
//-----------------------------------------------------------------------------
FormChecker.prototype.getErrorMessage = function() {
    return this.errMsg;
}

//-----------------------------------------------------------------------------
// ÇÊµå¸í Ãëµæ
//-----------------------------------------------------------------------------
FormChecker.prototype.getName = function(el) {
    return el.getAttribute("HNAME") == null || el.getAttribute("HNAME") == "" ? el.name : el.getAttribute("HNAME");
}

//-----------------------------------------------------------------------------
// URL Ã¼Å©
//-----------------------------------------------------------------------------
FormChecker.prototype.f_url = function(el,value) {
    var value = value ? value : el.value;
    var pattern = /^[\/\:\.°¡-ÆRa-zA-Z0-9_-]+\.[a-zA-Z]+$/;
    return pattern.test(value) ? true : "invalid";
}

//-----------------------------------------------------------------------------
// ÀÌ¸ÞÀÏÁÖ¼Ò Ã¼Å©
//-----------------------------------------------------------------------------
FormChecker.prototype.f_email = function(el,value) {
    var value = value ? value : el.value;
    var pattern = /^[_a-zA-Z0-9-\.]+@[\.a-zA-Z0-9-]+\.[a-zA-Z]+$/;
    return pattern.test(value) ? true : "invalid";
}

//-----------------------------------------------------------------------------
// ÇÑ±ÛÆ÷ÇÔ Ã¼Å©
//-----------------------------------------------------------------------------
FormChecker.prototype.f_hangul = function(el) {
    var pattern = /[°¡-Èþ]/;
    return pattern.test(el.value) ? true : "¹Ýµå½Ã ÇÑ±ÛÀ» Æ÷ÇÔÇØ¾ß ÇÕ´Ï´Ù";
}

//-----------------------------------------------------------------------------
// ¿µ¹® Ã¼Å©
//-----------------------------------------------------------------------------
FormChecker.prototype.f_engonly = function(el) {
    var pattern = /^[a-zA-Z]+$/;
    return pattern.test(el.value) ? true : "invalid";
}

//-----------------------------------------------------------------------------
// ¼ýÀÚ Ã¼Å©
//-----------------------------------------------------------------------------
FormChecker.prototype.f_num = function(el) {
    var pattern = /^[0-9]+$/;
    return pattern.test(el.value) ? true : "¹Ýµå½Ã ¼ýÀÚ·Î¸¸ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù";
}

//-----------------------------------------------------------------------------
// ½Ç¼ö¿ÍÁ¤¼ö Ã¼Å©
//-----------------------------------------------------------------------------
FormChecker.prototype.f_decnum = function(el) {
    var pattern = /^[0-9\.]+$/;
    return pattern.test(el.value) ? true : "¹Ýµå½Ã ½Ç¼ö¿Í Á¤¼ö·Î¸¸ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù";
}

//-----------------------------------------------------------------------------
// 
//-----------------------------------------------------------------------------
FormChecker.prototype.f_residentno = function(el,value) {
    var pattern = /^(\d{6})-?(\d{5}(\d{1})\d{1})$/;
    var num = value ? value : el.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 i=0; i<12; i++) {
        if (isNaN(num.substring(i,i+1))) { return "invalid"; }
        sum += (num.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 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";
	}
}

//-----------------------------------------------------------------------------
// ÁÖ¹Î¹øÈ£ Ã¼Å©
//-----------------------------------------------------------------------------
FormChecker.prototype.f_jumin = function(el,value) {
    var pattern = /^([0-9]{6})-?([0-9]{7})$/;
    var num = value ? value : el.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 i=0; i<12; i++) {
        if (isNaN(num.substring(i,i+1))) { return "invalid"; }
        sum += (num.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 0x30);
    }
    var mod = sum % 11;
    return (11 - mod) % 10 == last ? true : "invalid";
}

//-----------------------------------------------------------------------------
// ¿Ü±¹ÀÎµî·Ï¹øÈ£ Ã¼Å©
//-----------------------------------------------------------------------------
FormChecker.prototype.f_foreignerno = function(el,value) {
    var pattern = /^(\d{6})-?(\d{5}[7-9]\d{1})$/;
    var num = value ? value : el.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 i=0; i<12; i++) {
        if (isNaN(num.substring(i,i+1))) { return "invalid"; }
        sum += (num.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 0x30);
    }
    var mod = sum % 11;
    return (11 - mod + 2) % 10 == last ? true : "invalid"; 
}

//-----------------------------------------------------------------------------
// »ç¾÷ÀÚ¹øÈ£ Ã¼Å©
//-----------------------------------------------------------------------------
FormChecker.prototype.f_bizno = function(el,value) {
    var pattern = /([0-9]{3})-?([0-9]{2})-?([0-9]{5})/;
    var num = value ? value : el.value;
    if (!pattern.test(num)) { return "invalid"; }
    num = RegExp.$1 + RegExp.$2 + RegExp.$3;
    var cVal = 0;
    for (var i=0; i<8; i++) {
        var cKeyNum = parseInt(((_tmp = i % 3) == 0) ? 1 : ( _tmp  == 1 ) ? 3 : 7);
        cVal += (parseFloat(num.substring(i,i+1)) * cKeyNum) % 10;
    }
    var li_temp = parseFloat(num.substring(i,i+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";
}

//-----------------------------------------------------------------------------
// ÀÏ¹ÝÀüÈ­¹øÈ£ Ã¼Å©
//-----------------------------------------------------------------------------
FormChecker.prototype.f_phone = function(el,value) {
    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 = value ? value : el.value;
    return pattern.exec(num) || pattern15xx.exec(num) ? true : "invalid";
} 

//-----------------------------------------------------------------------------
// ÁýÀüÈ­¹øÈ£ Ã¼Å©
//-----------------------------------------------------------------------------
FormChecker.prototype.f_homephone = function(el,value) {
    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 = value ? value : el.value;
    return pattern.exec(num) || pattern15xx.exec(num) ? true : "invalid";
}

//-----------------------------------------------------------------------------
// ÈÞ´ëÆù¹øÈ£ Ã¼Å©
//-----------------------------------------------------------------------------
FormChecker.prototype.f_handphone = function(el,value) {
    var pattern = /^(01[01346-9])-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/;
    var num = value ? value : el.value;
    return pattern.exec(num) ? true : "invalid";
}

//-----------------------------------------------------------------------------
// ¾ÆÀÌµð Ã¼Å©
//-----------------------------------------------------------------------------
FormChecker.prototype.f_userid = function(el,value) {
    var pattern = /^[a-zA-Z]{1}[a-zA-Z0-9_]{3,19}$/;
    return pattern.test(el.value) ? true : "4ÀÚÀÌ»ó 16ÀÚ ¹Ì¸¸À¸·Î ÀÔ·ÂÇÏ½Ê½Ã¿À.\n  [¿µ¹®], [¼ýÀÚ], [ _ ] ¹®ÀÚ¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù";
}

//-----------------------------------------------------------------------------
// ÆÄÀÏ¸íÃ¼Å©
//-----------------------------------------------------------------------------
FormChecker.prototype.f_filename = function(el,value) {
    var pattern = /^[\.°¡-Èþa-zA-Z0-9_-]{1,40}$/;
    return pattern.test(el.value) ? true : "1ÀÚÀÌ»ó 20ÀÚ ¹Ì¸¸À¸·Î ÀÔ·ÂÇÏ½Ê½Ã¿À.\n  [ÇÑ±Û] [¿µ¹®] [¼ýÀÚ] [ _ ] [ - ] ¹®ÀÚ¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù";
}
