
var column = ''; 
function dupChk(flg, type) {
	var CheckExp = /[$\\@\\\#\\%\^\&\*\(\)\[\]\+\_\{\}\`\~\+\-\,\!\?\.\&\<\>\=\|]/;
	if (flg == 'UID') {
		column = 'uid_check';
		document.frm.Uid.focus();
		var id = document.frm.Uid.value;
		// alert(document.frm.Uid.value);
		if (id == '') {
			alert('Please enter your ID first.');
			document.frm.Uid.focus();
			return;
		}
		if ( (id.length < 4) || (id.length > 10) ) {
			alert ("ID must be 4 – 10 characters");
			document.frm.Uid.focus();
			return;
		}
		if (id.search(CheckExp) != -1){
			alert("No special character available on your ID");
			document.frm.Uid.focus();
			return;
		}
		dupChkProcess('UID', id);
	} else if (flg == 'USSN') {
		column = 'ussn_check';
		var USSN1 = document.frm.USSN_1.value;
		var USSN2 = document.frm.USSN_2.value;
		var USSN3 = document.frm.USSN_3.value;
		if (USSN3 != '') USSN3 = '-' + USSN3;
		
		var USSN = (USSN1+"-"+USSN2+USSN3).replace(/ /g,"");
		
		var msg = "";
		if (type == "P") { msg = "주민등록번호를 입력해주십시오."; } else { msg = "사업자 번호를 입력해주십시오."; } 
		if (USSN1 == '') { alert(msg); document.frm.USSN_1.focus(); return; }
		if (USSN2 == '') { alert(msg); document.frm.USSN_2.focus(); return; }
		if (type == "C") { if (USSN3 == '') { alert(msg); document.frm.USSN_2.focus(); return; }}
		if (USSN  == '') { alert('올바른 사업자 번호를 입력해주십시오.'); document.frm.USSN_1.focus(); return; }
		
if (type == "P") {
     if (USSN1.length != 6) {   // 앞번호가 6개 아니라면
        alert("주민번호 앞자리는 6자여야 합니다."); 
        document.frm.USSN_1.focus(); //커서를 주민번호 앞자리에 놓는다.
		return;
     }
	 if (USSN2.length != 7) {  //뒷자리가 7개가 아니라면
        alert("주민번호 뒷자리는 7자여야 합니다.");  
        document.frm.USSN_2.focus();  //커서를 주민번호 뒷자리에 놓는다. 
		return;
     }
        var digit=0  
        for (var i=0;i < USSN1.length;i++) {   //주민번호 앞자리의 길이만큼 for문을 돌린다.
            var strdigit = USSN1.substring(i,i+1);  //앞자리중 i번째와 i+i번째 문자를 변수에 담는다.
            if (strdigit<'0' || strdigit>'9') {   //strdigit 의 값이 0보다 작거나 9보다 크면
                digit=digit+1   //digit에 1을 더한다.
            }
        }
        if ( digit != 0 ) {   //digit가 0이 아니라면
            alert('주민등록번호에는 0에서 9까지의 숫자만 적을 수 있습니다.\n\n다시 확인하고 입력해 주세요.');  
            document.frm.USSN_1.focus();   
            return;  
        }
        var digit1=0   
        for (var i=0;i < USSN2.length;i++) { // 주민번호 뒷자리의 길이만큼 for문을 돌린다.
            var strdigit1 = USSN2.substring(i,i+1);   
            if (strdigit1<'0' || strdigit1>'9') {  
               digit1=digit1+1   
            }
        }
        if ( digit1 != 0 ) {   
            alert('주민등록번호에는 0에서 9까지의 숫자만 적을 수 있습니다.\n\n다시 확인하고 입력해 주세요.'); 
            document.frm.USSN_2.focus();   
            return;   
        }
        if (USSN1.substring(2,3) > 1) {   //주민번호 월 부분의 첫째 숫자가 1보다 클경우
            alert('잘못될 \'월\'을 입력했습니다.\n\n다시 확인하고 입력해 주세요.');
            document.frm.USSN_1.focus();   
            return;
        }
        if (USSN1.substring(4,5) > 3) { //주민번호 일 부분의 첫째 숫자가 3보다 클경우   
            alert('잘못된 \'일\'을 입력했습니다.\n\n다시 확인하고 입력해 주세요.');
            document.frm.USSN_1.focus();   
            return;   
        } 
        if (USSN2.substring(0,1) > 4 || USSN2.substring(0,1) == 0) {  //주민번호 뒷자리의 첫째숫자가 4보다 클경우
            alert('주민등록번호에서 성별을 나타내는 숫자는 1에서 4까지입니다.\n\n다시 확인하고 입력해 주세요.');
            document.frm.USSN_2.focus();   
            return;   
        }
        var a1=USSN1.substring(0,1)   //주민번호 계산법
        var a2=USSN1.substring(1,2)          
        var a3=USSN1.substring(2,3)
        var a4=USSN1.substring(3,4)
        var a5=USSN1.substring(4,5)
        var a6=USSN1.substring(5,6)
        var checkdigit=a1*2+a2*3+a3*4+a4*5+a5*6+a6*7
        var b1=USSN2.substring(0,1)
        var b2=USSN2.substring(1,2)
        var b3=USSN2.substring(2,3)
        var b4=USSN2.substring(3,4)
        var b5=USSN2.substring(4,5)
        var b6=USSN2.substring(5,6)
        var b7=USSN2.substring(6,7)
        var checkdigit=checkdigit+b1*8+b2*9+b3*2+b4*3+b5*4+b6*5 
        checkdigit = checkdigit%11
        checkdigit = 11 - checkdigit
        checkdigit = checkdigit%10
        if (checkdigit != b7) {   
           alert('잘못된 주민등록번호입니다.\n\n다시 확인하고 입력해 주세요.'); 
           USSN1 = " ";
           USSN2 = " ";
           document.frm.USSN_1.focus();   
           return;
        } 
	}
		
		dupChkProcess('USSN', USSN);
	}	
}

function dupChkProcess(col, key) {
	// alert(col+', '+key);
	http_request = false;

	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request) {
		alert('Can’t generate XMLHTTP instance.');
		return false;
	}
	http_request.onreadystatechange = dupChkResult;
	http_request.open('POST', '/Common/dupChkP.asp', true);
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');
	http_request.send('COL='+ col +'&KEY='+ key);
}


function dupChkResult() {
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			var rslt = http_request.responseText;
			switch(rslt) {
				case 'DUP':	alert('Duplicated ID exists. \nPlease re-enter correct ID.'); eval('document.frm.'+column).value = 'DUP'; break;
				case 'ERR':	alert('On error occurred. \nPlease re-enter.'); eval('document.frm.'+column).value = 'ERR'; break;
				case 'OK':  alert('You can use this ID.\nThank you.'); eval('document.frm.'+column).value = 'OK'; break;
			}
		} else if (http_request.status == 500) {
			alert('[ERROR] An error occurred on the server page.\nPlease try again.');
		} else if (http_request.status == 404) {
			alert('[ERROR] An error occurred on the network.\nPlease try again.');
		} else {
			alert('[ERROR] On error occurred.\nPlease try again.');
		}
	}
}