 
/*------------------------------------------------------------------* 
* 개 발 자 : 윤석규                                                     
*-------------------------------------------------------------------* 
* 이 메 일 : nanummp3@naver.com                                         
*-------------------------------------------------------------------* 
* 홈페이지 : http://www.ysksoft.com                                     
*-------------------------------------------------------------------* 
var YSK = new Object(); 
YSK.form = new Object(); 

/** 
* 폼값 script 체크 
* chk 값이 y 일경우 무조건 체크, n 일경우 값이 있으면 체크 
------------------------------------------------------------------------ 
* @obj_name    : 폼이름 
------------------------------------------------------------------------ 
* 사용법 
------------------------------------------------------------------------ 
<table border="1"> 
<form name="member_form" method="post" action="{%ACTION%}" encType ="multipart/form-data"  onsubmit="return YSK.form.script('member_form')"> 
<tr> 
    <td>비밀번호</td> 
    <td><input kind="password" name="passwd" chk="y" msg="비밀번호를" kind="eng+num" len="4-12"></td> 
</tr> 
</form> 
</table> 
**/ 


var DC = new Object(); 
DC.form = new Object(); 

DC.form.script = function(obj_name) { 
    //var obj            = document.forms[obj_name]; 
	var obj			= obj_name;
    var count        = obj.length; 
    var chk            = ''; 
    var msg            = ''; 
    var kind        = ''; 
    var from        = ''; 
    var item        = ''; 
    var len            = ''; 
    var ex_len        = ''; 
    var len_chk        = ''; 
    var len_text    = ''; 
    var min            = ''; 
    var max            = ''; 
    var result        = ''; 
    var first        = ''; 


    var ret_chk        = false; 

    for(var x=0; x<count; x++) { 
        item = obj.elements[x]; 
        if(item.name) { 
            if(item.getAttribute('chk')) { 
                chk        = item.getAttribute('chk'); 
                msg        = item.getAttribute('msg'); 
                kind    = item.getAttribute('kind'); 
                from    = item.getAttribute('from'); 
                len        = item.getAttribute('len'); 

				if (item.disabled == true)
				{
					continue;
				}

				var ilen = item.value.length;


                if(chk == 'y' || chk == 'Y' || ilen > 0) { 
                    first = "item.value == '' || ("; 
                } else { 
                    first = "item.value && ("; 
                } 
                if(len) { 
                    ex_len = len.split('-'); 
                    min = ex_len[0]; 
                    max = ex_len[1]; 
					//var ilen = item.value.length;
					var icount = 0;
					var one_ch="";
					var total2 = 0;
					var total3 = 0;

					for (i = 0; i < ilen ; i++){
						one_ch = item.value.charAt(i);    //한문자만 추출
						if (escape(one_ch).length > 4) {
							icount = icount + 2;   //한글
						}else {
							icount = icount + 1;   //영문
						}
					}

					total2 = Math.floor(min/2);
					total3 = Math.floor(max/2);

                    if(min == max) { 
                        len_chk = " || icount != "+min; 
                    } else { 
                        len_chk = " || icount < "+min+" || icount > "+max; 
                    } 

					if (kind=='kor' || kind=='eng+kor+num'){
						len_text = " [한글 "+total2+" ~ "+total3+" 글자,영문 "+min+" ~ "+max+"]"; 
					}else{
						len_text = " [영문 또는 숫자 "+min+" ~ "+max+"]"; 
					}

                    
                } 


                switch(kind) { 
                    case 'num': 
                        result  = "var num_pattern = /(^[0-9 ]+$)/gi;"; 
                        result += "if("+first+"!num_pattern.test(item.value)"+len_chk+")) {"; 
                        result += "alert('"+msg+"을(를) 숫자로만 정확히 입력하세요."+len_text+"');";
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
                        if(ret_chk == true) return false; 
                        break;
                    case 'num_comma': 
                        result  = "var num_pattern = /(^[0-9,]+$)/gi;"; 
                        result += "if("+first+"!num_pattern.test(item.value)"+len_chk+")) {"; 
                        result += "alert('"+msg+"을(를) 숫자로만 정확히 입력하세요."+len_text+"');";
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
                        if(ret_chk == true) return false; 
                        break; 
                    case 'num_dot': 
                        result  = "var num_pattern = /(^[0-9.]+$)/gi;"; 
                        result += "if("+first+"!num_pattern.test(item.value)"+len_chk+")) {"; 
                        result += "alert('"+msg+"을(를) 숫자로만 정확히 입력하세요."+len_text+"');";
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
                        if(ret_chk == true) return false; 
                        break; 
                    case 'eng': 
                        result  = "var eng_pattern = /(^[a-zA-Z ]+$)/gi;"; 
                        result += "if("+first+"!eng_pattern.test(item.value)"+len_chk+")) {"; 
                        result += "alert('"+msg+"을(를) 영어로만 정확히 입력하세요."+len_text+"');"; 
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
                        if(ret_chk == true) return false; 
                        break; 
                    case 'kor': 
                        result  = "var kor_pattern = /(^[가-힣 ]+$)/gi;"; 
                        result += "if("+first+"!kor_pattern.test(item.value)"+len_chk+")) {"; 
                        result += "alert('"+msg+"을(를) 한글로만 정확히 입력하세요."+len_text+"');";
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
                        if(ret_chk == true) return false; 
                        break; 
                    case 'like': 
                        result  = "var obj_from = document.getElementsByName('"+from+"')[0];"; 
                        result += "if(obj_from.value && (obj_from.value !== item.value"+len_chk+")) {"; 
                        result += "alert('"+msg+" 일치 하지 않습니다."+len_text+"');";
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
                        if(ret_chk == true) return false; 
                        break; 
                    case 'eng+kor+num': 
                        result  = "var eng_kor_num_pattern = /(^[a-zA-Z0-9가-힣,. /]+$)/gi;"; 
                        result += "if("+first+"!eng_kor_num_pattern.test(item.value)"+len_chk+")) {"; 
                        result += "alert('"+msg+"을(를) 영어,한글,숫자로만 정확히 입력하세요."+len_text+"');";
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
		
                        if(ret_chk == true) return false; 
                        break; 
                    case 'num+eng': 
                    case 'eng+num': 
                        result  = "var eng_num_pattern = /(^[a-zA-Z0-9 ]+$)/gi;"; 
                        result += "if("+first+"!eng_num_pattern.test(item.value)"+len_chk+")) {"; 
                        result += "alert('"+msg+"을(를) 숫자 및 영어로만 정확히 입력하세요."+len_text+"');";
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
                        if(ret_chk == true) return false; 
                        break; 
					case 'phone':
                        result  = "var phone_pattern = /^([0-9]{2,3})-?([0-9]{3,4})-?([0-9]{4})$/;"; 
                        result += "if("+first+"!phone_pattern.test(item.value)"+len_chk+")) {";
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "alert('"+msg+"을(를) 정확히 입력하세요.(031-123-4567)');"; 
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
                        if(ret_chk == true) return false; 
                        break; 
					case 'date':
                        result  = "var date_pattern = /^([0-9]{4})-?([0-9]{2})-?([0-9]{2})$/;"; 
                        result += "if("+first+"!date_pattern.test(item.value)"+len_chk+")) {";
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "alert('"+msg+"을(를) 정확히 입력하세요.(yyyy-mm-dd)');"; 
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
                        if(ret_chk == true) return false; 
                        break;  
                    case 'email': 
                        result  = "var email_pattern = /(^[a-zA-Z0-9]+@[a-zA-Z0-9]+[a-zA-Z0-9-]+[a-zA-Z0-9]+\.[a-zA-Z]+[.a-zA-Z]+$)/gi;"; 
                        result += "if("+first+"!email_pattern.test(item.value)"+len_chk+")) {";
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "alert('"+msg+"을(를) 정확히 입력하세요."+len_text+"');"; 
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
                        if(ret_chk == true) return false; 
                        break;                     
                    case 'jumin_number': 
                        var jumin_number_chk = false; 
                        var obj_from = document.getElementsByName(from)[0]; 
                        if(chk == 'y' || chk == 'Y') { 
                            jumin_number_chk = true; 
                        } else { 
                            if(obj_from.value || item.value) jumin_number_chk = true; 
                        } 
                        if(jumin_number_chk == true) { 
							//alert(obj_from.value+"-"+item.value);
                            result  = "var jumin_number_check = juminNumberChk('"+obj_from.value+"-"+item.value+"');"; 
                            result += "if(jumin_number_check == false"+len_chk+") {"; 
                            result += "alert('"+msg+"을(를) 정확히 입력하세요."+len_text+"');";
							result += "if (item) item.value = item.value.substr(0,total3);";
                            result += "if (item) item.focus();"; 
                            result += "ret_chk = true;"; 
                            result += "}"; 
                            evalExec(result); 
                            if(ret_chk == true) return false; 
                        } 
                        break; 
                    default: 
                        result  = "if("+first+"item.value == ''"+len_chk+")) {"; 
                        result += "alert('"+msg+"을(를) 정확히 입력하세요."+len_text+"');"; 
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
                        if(ret_chk == true) return false; 
                        break; 
                } 
            } 
        } 
        chk            = ''; 
        msg            = ''; 
        kind        = ''; 
        from        = ''; 
        item        = ''; 
        len            = ''; 
        ex_len        = ''; 
        len_chk        = ''; 
        len_text    = ''; 
        min            = ''; 
        max            = ''; 
        result        = ''; 
        first        = ''; 
        ret_chk        = false; 
    } 





	function evalExec(result){

		re = "try{"
		re += result
		re += "}catch(ex){ ret_chk = true; };"

		eval(re);
	}

    function juminNumberChk(jumin_number) { 

		var pattern = /^([0-9]{6})-?([0-9]{7})$/; 
		var num = jumin_number;
		if (!pattern.test(num)) return false; 
		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 false;
			sum += (num.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 0x30);
		}
		var mod = sum % 11;
		return ((11 - mod) % 10 == last) ? true : false;
    } 

}  





DC.el = function(obj_name) { 
    //var obj            = document.forms[obj_name]; 
	//var obj			= obj_name;
    var count        = 1; 
    var chk            = ''; 
    var msg            = ''; 
    var kind        = ''; 
    var from        = ''; 
    var item        = ''; 
    var len            = ''; 
    var ex_len        = ''; 
    var len_chk        = ''; 
    var len_text    = ''; 
    var min            = ''; 
    var max            = ''; 
    var result        = ''; 
    var first        = ''; 


    var ret_chk        = false; 

    for(var x=0; x<count; x++) { 
        item = obj_name
        if(item.name) { 
            if(item.getAttribute('chk')) { 
                chk        = item.getAttribute('chk'); 
                msg        = item.getAttribute('msg'); 
                kind    = item.getAttribute('kind'); 
                from    = item.getAttribute('from'); 
                len        = item.getAttribute('len'); 

				if (item.disabled == true)
				{
					return true;
				}

				var ilen = item.value.length;


                if(chk == 'y' || chk == 'Y' || ilen > 0) { 
                    first = "item.value == '' || ("; 
                } else { 
                    first = "item.value && ("; 
                } 
                if(len) { 
                    ex_len = len.split('-'); 
                    min = ex_len[0]; 
                    max = ex_len[1]; 
					//var ilen = item.value.length;
					var icount = 0;
					var one_ch="";
					var total2 = 0;
					var total3 = 0;

					for (i = 0; i < ilen ; i++){
						one_ch = item.value.charAt(i);    //한문자만 추출
						if (escape(one_ch).length > 4) {
							icount = icount + 2;   //한글
						}else {
							icount = icount + 1;   //영문
						}
					}

					total2 = Math.floor(min/2);
					total3 = Math.floor(max/2);

                    if(min == max) { 
                        len_chk = " || icount != "+min; 
                    } else { 
                        len_chk = " || icount > "+max; 
                    } 

					if (kind=='kor' || kind=='eng+kor+num'){
						len_text = " [한글 "+total2+" ~ "+total3+" 글자,영문 "+min+" ~ "+max+"]"; 
					}else{
						len_text = " [영문 또는 숫자 "+min+" ~ "+max+"]";
						total2 = min;
						total3 = max;
					}

					
                    
                } 


                switch(kind) { 
                    case 'num': 
                        result  = "var num_pattern = /(^[0-9 ]+$)/gi;"; 
                        result += "if("+first+"!num_pattern.test(item.value)"+len_chk+")) {"; 
                        result += "alert('"+msg+"을(를) 숫자로만 정확히 입력하세요."+len_text+"');";
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
                        if(ret_chk == true) return false; 
                        break;
                    case 'num_comma': 
                        result  = "var num_pattern = /(^[0-9,]+$)/gi;"; 
                        result += "if("+first+"!num_pattern.test(item.value)"+len_chk+")) {"; 
                        result += "alert('"+msg+"을(를) 숫자로만 정확히 입력하세요."+len_text+"');";
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
                        if(ret_chk == true) return false; 
                        break; 
                    case 'num_dot': 
                        result  = "var num_pattern = /(^[0-9.]+$)/gi;"; 
                        result += "if("+first+"!num_pattern.test(item.value)"+len_chk+")) {"; 
                        result += "alert('"+msg+"을(를) 숫자로만 정확히 입력하세요."+len_text+"');";
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
                        if(ret_chk == true) return false; 
                        break; 
                    case 'eng': 
                        result  = "var eng_pattern = /(^[a-zA-Z ]+$)/gi;"; 
                        result += "if("+first+"!eng_pattern.test(item.value)"+len_chk+")) {"; 
                        result += "alert('"+msg+"을(를) 영어로만 정확히 입력하세요."+len_text+"');"; 
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
                        if(ret_chk == true) return false; 
                        break; 
                    case 'kor': 
                        result  = "var kor_pattern = /(^[가-힣 ]+$)/gi;"; 
                        result += "if("+first+"!kor_pattern.test(item.value)"+len_chk+")) {"; 
                        result += "alert('"+msg+"을(를) 한글로만 정확히 입력하세요."+len_text+"');";
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
                        if(ret_chk == true) return false; 
                        break; 
                    case 'like': 
                        result  = "var obj_from = document.getElementsByName('"+from+"')[0];"; 
                        result += "if(obj_from.value && (obj_from.value !== item.value"+len_chk+")) {"; 
                        result += "alert('"+msg+" 일치 하지 않습니다."+len_text+"');";
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
                        if(ret_chk == true) return false; 
                        break; 
                    case 'eng+kor+num': 
                        result  = "var eng_kor_num_pattern = /(^[a-zA-Z0-9가-힣,. /]+$)/gi;"; 
                        result += "if("+first+"!eng_kor_num_pattern.test(item.value)"+len_chk+")) {"; 
                        result += "alert('"+msg+"을(를) 영어,한글,숫자로만 정확히 입력하세요."+len_text+"');";
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
		
                        if(ret_chk == true) return false; 
                        break; 
                    case 'num+eng': 
                    case 'eng+num': 
                        result  = "var eng_num_pattern = /(^[a-zA-Z0-9 ]+$)/gi;"; 
                        result += "if("+first+"!eng_num_pattern.test(item.value)"+len_chk+")) {"; 
                        result += "alert('"+msg+"을(를) 숫자 및 영어로만 정확히 입력하세요."+len_text+"');";
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
                        if(ret_chk == true) return false; 
                        break; 
					case 'phone':
                        result  = "var phone_pattern = /^([0-9]{2,3})-?([0-9]{3,4})-?([0-9]{4})$/;"; 
                        result += "if("+first+"!phone_pattern.test(item.value)"+len_chk+")) {";
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "alert('"+msg+"을(를) 정확히 입력하세요.(000-0000-0000)');"; 
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
                        if(ret_chk == true) return false; 
                        break; 
					case 'date':
                        result  = "var date_pattern = /^([0-9]{4})-?([0-9]{2})-?([0-9]{2})$/;"; 
                        result += "if("+first+"!date_pattern.test(item.value)"+len_chk+")) {";
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "alert('"+msg+"을(를) 정확히 입력하세요.(yyyy-mm-dd)');"; 
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
                        if(ret_chk == true) return false; 
                        break;  
                    case 'email': 
                        result  = "var email_pattern = /(^[a-zA-Z0-9]+@[a-zA-Z0-9]+[a-zA-Z0-9-]+[a-zA-Z0-9]+\.[a-zA-Z]+[.a-zA-Z]+$)/gi;"; 
                        result += "if("+first+"!email_pattern.test(item.value)"+len_chk+")) {";
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "alert('"+msg+"을(를) 정확히 입력하세요."+len_text+"');"; 
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
                        if(ret_chk == true) return false; 
                        break;                     
                    case 'jumin_number': 
                        var jumin_number_chk = false; 
                        var obj_from = document.getElementsByName(from)[0]; 
                        if(chk == 'y' || chk == 'Y') { 
                            jumin_number_chk = true; 
                        } else { 
                            if(obj_from.value || item.value) jumin_number_chk = true; 
                        } 
                        if(jumin_number_chk == true) { 
							//alert(obj_from.value+"-"+item.value);
                            result  = "var jumin_number_check = juminNumberChk('"+obj_from.value+"-"+item.value+"');"; 
                            result += "if(jumin_number_check == false"+len_chk+") {"; 
                            result += "alert('"+msg+"을(를) 정확히 입력하세요."+len_text+"');";
							result += "if (item) item.value = item.value.substr(0,total3);";
                            result += "if (item) item.focus();"; 
                            result += "ret_chk = true;"; 
                            result += "}"; 
                            evalExec(result); 
                            if(ret_chk == true) return false; 
                        } 
                        break; 
                    default: 
                        result  = "if("+first+"item.value == ''"+len_chk+")) {"; 
                        result += "alert('"+msg+"을(를) 정확히 입력하세요."+len_text+"');"; 
						result += "if (item) item.value = item.value.substr(0,total3);";
                        result += "if (item) item.focus();"; 
                        result += "ret_chk = true;"; 
                        result += "}"; 
                        evalExec(result); 
                        if(ret_chk == true) return false; 
                        break; 
                } 
            } 
        } 
        chk            = ''; 
        msg            = ''; 
        kind        = ''; 
        from        = ''; 
        item        = ''; 
        len            = ''; 
        ex_len        = ''; 
        len_chk        = ''; 
        len_text    = ''; 
        min            = ''; 
        max            = ''; 
        result        = ''; 
        first        = ''; 
        ret_chk        = false; 
    } 





	function evalExec(result){

		re = "try{"
		re += result
		re += "}catch(ex){ ret_chk = true; };"

		eval(re);
	}

    function juminNumberChk(jumin_number) { 

		var pattern = /^([0-9]{6})-?([0-9]{7})$/; 
		var num = jumin_number;
		if (!pattern.test(num)) return false; 
		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 false;
			sum += (num.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 0x30);
		}
		var mod = sum % 11;
		return ((11 - mod) % 10 == last) ? true : false;
    } 

}  

