﻿var MAX_VALIDATOR = 16; //유형검사의 최대값으로 설정합니다.
var MIN_VALIDATOR = 1;

function Validate() {
    var inputs = document.getElementsByTagName("INPUT");

    for (var i = 0; i < inputs.length; i++) {
        if (inputs[i].type == "text" || inputs[i].type == "password") {
            var type = inputs[i].getAttribute('VALTYPE');

            if (type != null && type != 'undefined') {
                
                for (var j = MIN_VALIDATOR;j<=MAX_VALIDATOR;j=j*2)
                {
                    if ((j & type) == j) {
                        switch (j.toString()) {
                            case '1': //exist
                                if (!valExist(inputs[i].value)) {
                                    alert(inputs[i].getAttribute('ERRMSG' + j.toString()));
                                    inputs[i].focus();
                                    return false;
                                }
                                break;
                            case '2': //length
                                if (!valLength(inputs[i].value, inputs[i].getAttribute('MINC'), inputs[i].getAttribute('MAXC'))) {
                                    alert(inputs[i].getAttribute('ERRMSG' + j.toString()));
                                    inputs[i].focus();
                                    return false;
                                }
                                break;
                            case '4': //number
                                if (!valNumber(inputs[i].value)) {
                                    alert(inputs[i].getAttribute('ERRMSG' + j.toString()));
                                    inputs[i].focus();
                                    return false;
                                }
                                break;
                            case '8'://english
                                if (!valEnglish(inputs[i].value)) {
                                    alert(inputs[i].getAttribute('ERRMSG' + j.toString()));
                                    inputs[i].focus();
                                    return false;
                                }
                                break;
                            case '16'://num && eng
                                if (!valEngAndNumber(inputs[i].value)) {
                                    alert(inputs[i].getAttribute('ERRMSG' + j.toString()));
                                    inputs[i].focus();
                                    return false;
                                }
                                break;
                        }
                    }
                }
            }
        }
    }
    return true;
}

function valExist(str) {
    if (str == null || str == 'undefined' || str.trim() == "") {
        return false;
    }
    else {
        return true;
    }
}

function valNumber(str) {
    var regNum = /^[0-9]+$/;
    var pattern = eval(regNum);
    if (!pattern.test(str)) {
        return false;
    } else {
        return true;
    }
}

function valEnglish(str) {
    var regNum = /(^[A-Za-z_-]+)$/;
    var pattern = eval(regNum);
    if (!pattern.test(str)) {
        return false;
    } else {
        return true;
    }  
}

function valEngAndNumber(str) {
    var regNum = /(^[0-9A-Za-z_-]+)$/;
    var pattern = eval(regNum);
    if (!pattern.test(str)) {
        return false;
    } else {
        return true;
    }
}



function valLength(str, min, max) {
    str = str == 'undefined' ? '' : str;
    if (str.trim().length >= min && str.trim().length <= max) {
        return true;
    }
    else {
        return false;
    }
}

function CheckInputKey(e) {
    /*
    * keyDown event keyCode
    * 상단 숫자키 : 48~57
    * Del키 : 46
    * 키패드 숫자키 : 96 ~ 105
    * 백스페이스 : 8
    * 방향키 : 37 ~ 40
    * 대쉬 : 상단대쉬 189, 숫자패드 109
    * 탭키 : 9
    * Ctrl키 : 17
    */

    //복사 및 잘라내기 허용
    if (e.ctrlKey && e.keyCode != 17 && (e.keyCode == 67 || e.keyCode == 88)) {
        return true;
    }
    else {
        var keynum = e.keyCode;
        if ((keynum >= 48 && keynum <= 57) ||
			(keynum >= 96 && keynum <= 105) ||
			(keynum >= 37 && keynum <= 40) ||
			keynum == 8 ||
			keynum == 46 ||
			keynum == 9) {
            return true;
        }
        else {
            return false;
        }
    }
}


