/************************************************
    기능 : Form 요소 검증
    parameter : form object
*************************************************/
function verifyForm(f)
{
    var fLen = f.length;
    for (var i = 0; i < fLen; i++) {
        var e = f.elements[i];
        if (e.required) {
            if (e.type == "text" || e.type == "textarea" || e.type == "password" || e.type == "file") {
                if (e.value == null || e.value == "" || verifyBlank(e.value)) {
                    alert(e.required + " 입력해 주십시오.");
                    e.focus();
                    return false;
                }
            } else if (e.type == "select-one" && e.selectedIndex == 0 && (e.value == "" || e.value == 0)) {
                alert(e.required + " 선택해 주십시오.");
                e.focus();
                return false;
            } else if (e.type == "hidden" && (e.value == "" || e.value == 0)) {
                alert(e.required);
                return false;
            }
        }
        if (e.value) {
            if (e.digit && isNaN(e.value)) {
                alert("숫자만 입력하실 수 있습니다.");
                e.focus();
                return false;
            } else if (e.currency && e.value.match(/[^-0-9,]/g)) {
                alert("숫자만 입력하실 수 있습니다.");
                e.focus();
                return false;
            }
        }
        // 통화는 폼 제출 시 콤마를 제거한다.
        if (e.currency) {
            e.value = e.value.replace(/,/g, "");
        }
    }
    return true;
}

/************************************************
    기능 : 이메일 형식 검사
    수정일 :2007-03-07
    이메일 형식에 맞지 않으면 false
*************************************************/
function verifyEmail(str)
{
    var exp = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;
    return exp.test(str);
}

/************************************************
    기능 : 아이디 포멧
    영문자와 숫자면 true, 그 외 false
*************************************************/
function verifyIDChar(str)
{
    var exp = /[^a-zA-Z0-9]/;
    return !exp.test(str);
}

/************************************************
    기능 : 한글 검사
    한글있으면 true
*************************************************/
function verifyKorean(str)
{
    var exp = /[가-히ㄱ-ㅎ]/;
    return exp.test(str);
}

/************************************************
    기능 : 알파벳과 숫자인지 검사
*************************************************/
function verifyAlNum(str)
{
    var exp = /[^a-zA-Z0-9]/;
    return !(exp.test(str));
}

/************************************************
    기능 : 공백 검사
    공백이 없으면 true
*************************************************/
function verifyBlank(str)
{
    for (var i = 0; i < str.length; i++) {
        var chr = str.charAt(i);
        if (chr != " " && chr != "Wr" && chr != "\n" && chr != "\t") {
            return false;
        }
    }
    return true;

    /*
    var exp = /[\r\n\t ]/;
    return exp.test(str);
    */
}

/************************************************
    기능 : 주민등록번호 검사
    사용예 : <input type="text" name="jumin2" onblur="verifyJumin(this.form); />
*************************************************/
function verifyJumin(f)
{
    var a = new Array(6);
    var b = new Array(7);
    var total = 0, tmp = 0;

    for (var i = 0; i < 6; i++) {
        a[i] = f.jumin1.value.charAt(i);
        b[i] = f.jumin2.value.charAt(i);
    	if (i < 2) {
    	    tmp = Number(b[i]) * (i + 8);
    	} else {
    	    tmp = Number(b[i]) * ((i + 10) % 10);
    	}
    	total += Number(a[i]) * (i + 2) + tmp;
    }
    b[6] = f.jumin2.value.charAt(6);

    if (Number(b[6]) != ((11 - (total % 11)) % 10)) {
        alert("올바른 주민등록번호가 아닙니다.\n\n다시 입력해 주십시오.");
        f.jumin1.value = "";
        f.jumin2.value = "";
        f.jumin1.focus();
        return;
    }
}

/************************************************
    기능 : 사업자등록번호 검사
    사용예 : <input type="text" name="bizno3" onblur="verifyBizNo(this.form); />
*************************************************/
function verifyBizNo(f)
{
    var bizno = f.bizno1.value + f.bizno2.value + f.bizno3.value;
    var chkNum = "137137135";
    var total = 0, tmp = 0, chk = 0;

    if (bizno.length == 10) {
        for (var i = 0; i < 9; i++) {
            total += (parseInt(bizno.charAt(i)) * parseInt(chkNum.charAt(i)));
        }
        total = total + parseInt((bizno.charAt(8) * 5) / 10);
        tmp = total % 10;
        if (tmp == 0) {
            chk = 0;
        } else {
            chk = 10 - tmp;
        }
    
        if (chk != bizno.charAt(9)) {
            alert("올바른 사업자등록번호가 아닙니다.\n\n다시 입력해 주십시오.");
            f.bizno1.value = "";
            f.bizno2.value = "";
            f.bizno3.value = "";
            f.bizno1.focus();
            return;
        }
    }
}