/*********************************************************************************
    WebBizPlus.COM
    ⓒ2001 Korea Software Service Co, Ltd. All rights reserved.
    작성자 : dantwing@kssnet.co.kr
    작성일 : 2001.

    WebBizPlus.COM Validaton 함수
*********************************************************************************/

// DropDownList 입력값 Check
function f_dropDown_chk(a_array) {
	if(a_array[0].options[a_array[0].selectedIndex].value == "")
	{
		alert(a_array[1]+"을(를) 선택하세요"); 
		a_array[0].focus();
		return false;
	}
	else
		return true;
}

// null 입력값 Check
function f_null_chk(a_object, a_msg) {
    if (f_empty_chk(a_object.value)) {
        alert(a_msg + "을(를) 입력하십시요.");
        a_object.focus();
        return false;
    }
    return true;
}

// 폼 입력값 유효성체크function f_valid_chk(a_array) {
    if (a_array[3].indexOf("r") != -1) if (!f_req_chk   (a_array)) return false; // 필수 항목
    if (a_array[3].indexOf("l") != -1) if (!f_len_chk   (a_array)) return false; // 길이

    if (a_array[3].indexOf("d") != -1) if (!f_nalja_chk (a_array)) return false; // 날짜 (20040202)
    if (a_array[3].indexOf("y") != -1) if (!f_year_chk  (a_array)) return false; // 년    if (a_array[3].indexOf("w") != -1) if (!f_month_chk (a_array)) return false; // 월    if (a_array[3].indexOf("i") != -1) if (!f_day_chk   (a_array)) return false; // 일    
    if (a_array[3].indexOf("t") != -1) if (!f_sigan_chk (a_array)) return false; // 시간 (2401)
    if (a_array[3].indexOf("s") != -1) if (!f_si_chk    (a_array)) return false; // 시    if (a_array[3].indexOf("b") != -1) if (!f_bun_chk   (a_array)) return false; // 분    
    if (a_array[3].indexOf("n") != -1) if (!f_number_chk(a_array)) return false;  // 정수
    if (a_array[3].indexOf("u") != -1) if (!f_url_chk   (a_array)) return false;  // URL
    if (a_array[3].indexOf("e") != -1) if (!f_email_chk (a_array)) return false;  // email
    if (a_array[3].indexOf("p") != -1) if (!f_polder_chk (a_array)) return false; // 폴더
    
    return true;
}

/////////////////////////////////////////////////////////////////////////
// 필수항목 체크하는 함수
function f_req_chk(a_array) {
    if (f_empty_chk(a_array[0].value)) {
        alert("'" + a_array[1] + "' 항목을 입력하십시요.");
        a_array[0].focus();
        return false;      // 없애면 다음조건 계속체크해나감.
    }
    return true;
}

// 길이체크
function f_len_chk(a_array) {
    if (f_lenb(a_array[0].value) > a_array[2]) {
        alert("'" + a_array[1] + "' 항목이 허용 길이를 초과했습니다.\n영문 " + a_array[2] + "자, 한글 " + a_array[2] / 2 + "자 이내로 입력해주십시요.");
        a_array[0].focus();
        a_array[0].select();
        return false;      // 없애면 다음조건 계속체크해나감.
    }
    return true;
}


//////////////////////////////////////////////////////////////////////
// 날자체크	(20041212)
function f_nalja_chk(a_array) {
    if (!f_date_chk(a_array[0].value)) {
        alert("'" + a_array[1] + "' 항목의 날짜를 바르게 입력하십시요.(예:20000502)");
        a_array[0].focus();
        a_array[0].select();
        return false;      // 없애면 다음조건 계속체크해나감.
    }
    return true;
}

// 년체크function f_year_chk(a_array){
    if(!f_nyeon_chk(a_array[0].value)){
        alert("'" + a_array[1] + "'항목을 1900년부터 2041년 사이의 년도로 입력하십시요.");
        a_array[0].focus();
        a_array[0].select();
        return false;
    }
    return true;
}

// 월체크
function f_month_chk(a_array) {
    if (!f_weol_chk(a_array[0].value)) {
        alert("'" + a_array[1] + "' 항목의 1월부터 12월까지 바르게 입력하십시요.");
        a_array[0].focus();
        a_array[0].select();
        return false;     // 없애면 다음조건 계속체크해나감.
    }
    return true;
}

// 일체크
function f_day_chk(a_array) {
    if (!f_il_chk(a_array[0].value)) {
        alert("'" + a_array[1] + "' 항목의 1일부터 31일까지 바르게 입력하십시요.");
        a_array[0].focus();
        a_array[0].select();
        return false;     // 없애면 다음조건 계속체크해나감.
    }
    return true;
}


/////////////////////////////////////////////////////////////////////////
// 시간+분 체크 (2401)
function f_sigan_chk(a_array) {
    if (!f_time_chk(a_array[0].value)) {
        alert("'" + a_array[1] + "' 항목의 시간을 바르게 입력하십시요.");
        a_array[0].focus();
        a_array[0].select();
        return false;      // 없애면 다음조건 계속체크해나감.
    }
    return true;
}

// 시간 체크 (12)
function f_si_chk(a_array) {
    if (!f_time_si_chk(a_array[0].value)) {
        alert("'" + a_array[1] + "' 항목의 시간을 바르게 입력하십시요.");
        a_array[0].focus();
        a_array[0].select();
        return false;      // 없애면 다음조건 계속체크해나감.
    }
    return true;
}

// 분 체크 (59)
function f_bun_chk(a_array) {
    if (!f_time_bun_chk(a_array[0].value)) {
        alert("'" + a_array[1] + "' 항목의 시간을 바르게 입력하십시요.");
        a_array[0].focus();
        a_array[0].select();
        return false;      // 없애면 다음조건 계속체크해나감.
    }
    return true;
}


//////////////////////////////////////////////////////////////////////
// 정수체크
function f_number_chk(a_array) {
    if (!f_jeongsu_chk(a_array[0].value)) {
        alert("'" + a_array[1] + "' 항목의 숫자를 바르게 입력하십시요.");
        a_array[0].focus();
        a_array[0].select();
        return false;      // 없애면 다음조건 계속체크해나감.
    }
    return true;
}

// URL check 함수
function f_url_chk(a_array) {
    if (!f_valid_url(a_array[0].value)) {
        alert("홈페이지 주소는 'http://도메인'의 형태를 취해야 합니다.");
        a_array[0].focus();
        return false;       // 없애면 다음조건으로
    }
    return true;
}

// 이메일체크function f_email_chk(a_array) {
    if (!f_valid_email(a_array[0].value)) {
        alert("이메일은 '계정@호스트|도메인'의 형태여야 합니다.");
        a_array[0].focus();
        return false;      // 없애면 다음조건도 체크
    }
    return true;
}

// 파일명 체크
function f_polder_chk(a_array) {
	var name = a_array[0].value;

	if(name.indexOf("'") > -1 ||
	   name.indexOf("\\") > -1 ||
	   name.indexOf("/") > -1 ||
	   name.indexOf(":") > -1 ||
	   name.indexOf("*") > -1 ||
	   name.indexOf("?") > -1 ||
	   name.indexOf("\"") > -1 ||
	   name.indexOf("<") > -1 ||
	   name.indexOf(">") > -1 ||
	   name.indexOf("|") > -1
	   /*
	   name.indexOf("'") > -1 || 
	   name.indexOf("$") > -1 ||
	   name.indexOf("#") > -1 ||
	   name.indexOf("&") > -1
	   */
	) {

        //alert("' \" $ # < & * 등의 특수기호를 포함한 파일명은 첨부가 되지 않습니다. 파일명을 변경하신 다음 첨부해주세요.");
        alert("파일 이름에 다음 문자를 사용할 수 없습니다. \n' \\ / : * ? \" < > | ");
        a_array[0].focus();
        return false;      // 없애면 다음조건도 체크
    }
    return true;
}




//////////////////////////////////////////////////////////////////////
/// 기타

// 년도체크
function f_nyeon_chk(a_nyeon){
    if (!f_jeongsu_chk(a_nyeon)) return false;
    if (f_gongbaeg_chk(a_nyeon)) return false;
    if (parseInt(a_nyeon) < 1900) return false;
    if (parseInt(a_nyeon) > 2050) return false;
    return true;

}

/* 월체크 */
function f_weol_chk(a_weol) {
    //if (a_weol == '') return false;
    if (!f_jeongsu_chk(a_weol)) return false;
    if (f_gongbaeg_chk(a_weol)) return false;
    if (parseInt(a_weol) > 12) return false;
    return true;
}

/* 일체크 */
function f_il_chk(a_il) {
    //if (a_il == '') return false;
    if (!f_jeongsu_chk(a_il)) return false;
    if (f_gongbaeg_chk(a_il)) return false;
    if (parseInt(a_il,"10") > 31) return false;
    return true;
}

/* 날짜면 true */
function f_date_chk(a_date) {
    var result = true;
    if (a_date == '') return result;
    if (!(a_date.length == 8 || a_date.length == 0)) result = false;
    if (!f_jeongsu_chk(a_date)) result = false;
    if (f_gongbaeg_chk(a_date)) result = false;

    var nyeondo = a_date.substring(0, 4);
    var weol    = a_date.substring(4, 6);
    var il      = a_date.substring(6, 8);

    var mal_il
    mal_il = new f_baeyeol(12);
    mal_il[0] = 31;
    mal_il[1] = 28;
    mal_il[2] = 31;
    mal_il[3] = 30;
    mal_il[4] = 31;
    mal_il[5] = 30;
    mal_il[6] = 31;
    mal_il[7] = 31;
    mal_il[8] = 30;
    mal_il[9] = 31;
    mal_il[10] = 30;
    mal_il[11] = 31;

    if (parseInt(weol) == 2) {
        if (!f_mod(nyeondo, 4) && (f_mod(nyeondo, 100) || !f_mod(nyeondo, 400))) mal_il[1] = 29;
    }
    if (weol > 12 || weol < 1) { result = false; }
    if (il > mal_il[parseInt(weol) - 1] || il < 1) { result = false; }

    return result;
}

/* time이면 true 형식:00(시)00(분) */
function f_time_chk(a_time) {
   // if (a_time == '') return false;
    if (a_time.length != 4) return false;
    if (!f_jeongsu_chk(a_time)) return false;
    if (f_gongbaeg_chk(a_time)) return false;

    var si  = a_time.substring(0, 2);
    var bun = a_time.substring(2, 4);

    if (parseInt(si)  > 24) return false;
    if (parseInt(bun) > 60) return false;
    return true;
}

/* 시간 체크 */
function f_time_si_chk(a_time) {
    //if (a_time == '') return false;
    if (a_time.length != 2) return false;
    if (!f_jeongsu_chk(a_time)) return false;
    if (f_gongbaeg_chk(a_time)) return false;
    if (parseInt(a_time)  > 24) return false;
    return true;
}

/* 분체크 */
function f_time_bun_chk(a_time) {
    if (a_time == '') return false;
    if (a_time.length != 2) return false;
    if (!f_jeongsu_chk(a_time)) return false;
    if (f_gongbaeg_chk(a_time)) return false;
    if (parseInt(a_time) > 60) return false;
    return true;
}


// 주민번호 체크
function f_jumin_chk(a_obj) {
    var str_f_num = a_obj.value.substring(1, 6);
    var str_l_num = a_obj.value.substring(7, 7);

    var i3 = 0;
    for (var i = 0; i < str_f_num.length; i++) {
        var ch1 = str_f_num.substring(i, i + 1);
        if (ch1 < '0' || ch1 > '9') { i3 = i3 + 1; }
    }

    if ((str_f_num == '') || (i3 != 0)) {
        alert('주민등록번호가 잘못입력되었습니다.....');
        a_obj.focus();
        return false;
    }

    var i4 = 0;
    for (var i = 0; i < str_l_num.length; i++) {
        var ch1 = str_l_num.substring(i, i + 1);
        if (ch1 < '0' || ch1 > '9') { i4 = i4 + 1; }
    }
    if ((str_l_num == '') || ( i4 != 0 )) {
        alert('주민등록번호가 잘못입력되었습니다.....');
        a_obj.focus();
        return false;
    }

    if (str_l_num.substring(0, 1) > 2) {
        alert('주민등록번호가 잘못입력되었습니다.....');
        a_obj.focus();
        return false;
    }

    if ((str_f_num.length > 7) || (str_l_num.length > 8)) {
        alert('주민등록번호가 잘못입력되었습니다.....');
        a_obj.focus();
        return false;
    }

    var f1 = str_f_num.substring(0, 1);
    var f2 = str_f_num.substring(1, 2);
    var f3 = str_f_num.substring(2, 3);
    var f4 = str_f_num.substring(3, 4);
    var f5 = str_f_num.substring(4, 5);
    var f6 = str_f_num.substring(5, 6);
    var hap = f1 * 2 + f2 * 3 + f3 * 4 + f4 * 5 + f5 * 6 + f6 * 7;

    var l1 = str_l_num.substring(0, 1);
    var l2 = str_l_num.substring(1, 2);
    var l3 = str_l_num.substring(2, 3);
    var l4 = str_l_num.substring(3, 4);
    var l5 = str_l_num.substring(4, 5);
    var l6 = str_l_num.substring(5, 6);
    var l7 = str_l_num.substring(6, 7);
    hap = hap + l1 * 8 + l2 * 9 + l3 * 2 + l4 * 3 + l5 * 4 + l6 * 5;
    var rem = hap % 11;
    rem = (11 - rem) % 10;
    if (rem != l7) {
        alert('주민등록번호가 잘못입력되었습니다.....');
        a_obj.focus();
        return false;
    }
    return true;
}

// #05_1 이메일체크function f_valid_email(a_email) {
    if (f_empty_chk(a_email)) return true;
    if (a_email.search(/(\S+)@(\S+)\.(\S+)/) == -1) return false;
    return true;
}

// 바이트단위길이function f_lenb(a_str) {
    var j = a_str.length;
    var l = j;
    for (var i = 0; i < l; i++) if (a_str.charCodeAt(i) > 255) j++;
    return j;
}

/* 모두가 양수거나 길이가 0이면 true */
function f_jeongsu_chk(a_num) {
	numstr = "0123456789"; /* +- 넣어주기 */
	for (var i = 0; i < a_num.length; i++){
		if (numstr.indexOf(a_num.charAt(i)) == -1)
		    return false;
	}
	return true;
}

/* 모두가 공백이거나 길이가 0이면 true */
function f_empty_chk(a_data) {
    for (var i = 0; i < a_data.length; i++ ) {
        if (a_data.substring(i, i + 1) != " ")
            return false;
    }
    return true;
}

/* 공백이 하나라도 있으면 true */
function f_gongbaeg_chk(a_data) {
    if (a_data.indexOf(' ') == -1) return false;
    return true;
}

// URL 체크
function f_valid_url(a_url) {
    if (f_empty_chk(a_url)) return true;
    var re;
    re = /^http:\/\/(\S+)\.(\S+)/ig;
    if (!re.exec(a_url)) return false;
    return true;
}

/* 혹시 %로 충분한... 흑.. */
function f_mod(v_a, v_b) {
    var r
    r = v_a / v_b
    var d;
    var str_r;
    str_r = String(r)
    d = str_r.indexOf('.');
    if (d == -1) { return 0; }
    return str_r.substring(d, str_r.length) * v_b;
}

function f_baeyeol(a_size) {
    this.length = a_size;
    for (var i = 0; i < a_size; i++) {
        this[i] = 0;
    }
}

function returnfalse() { return ; }
