/*************************************************************************
* ÆÄÀÏ : user_common.js
* ¼³¸í : °øÅëÀûÀ¸·Î »ç¿ëÇÏ´Â Validation¿ë JavaScript ÇÔ¼ö ¸ðÀ½.
* ÀÛ¼ºÀÚ : ±èÁ¾È°
* ÀÛ¼ºÀÏ : 2004. 07. 1
***************************************************************************/

var isNN = (navigator.appName.indexOf("Netscape")!=-1);
function autoTab(input,len, e) {
	var keyCode = (isNN) ? e.which : e.keyCode; 
	var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
	if(input.value.length >= len && !containsElement(filter,keyCode)) {
		input.value = input.value.slice(0, len);
		input.form[(getIndex(input)+1) % input.form.length].focus();
	}

	function containsElement(arr, ele) {
	var found = false, index = 0;
	while(!found && index < arr.length)
	if(arr[index] == ele)
		found = true;
	else
		index++;
		return found;
	}

	function getIndex(input) {
	var index = -1, i = 0, found = false;
	while (i < input.form.length && index == -1)
	if (input.form[i] == input)index = i;
	else i++;
		return index;
	}
	return true;
}


function isNull(value)
{
	var chkstr = value + "";
	var result = true;

	if((chkstr == "") || (chkstr == null))
	{	return result;
	}
	for(j = 0; result && (j < value.length); j++)
	{	if(value.substring(j, j+1) != " ")
		{	result = false;
		}
	}
	return result;
}


function isNumber(value)
{

	if (isNull(value))
		return false;

	for(j = 0; j < value.length; j++)
	{
		if((value.substring(j, j+1) < "0") || (value.substring(j, j+1) > "9"))
		{
			return false;
		}
	}

	return true;
}


function checkSpace( str )
{
     if( str.indexOf(" ") != -1) {
         str = str.replace(/\s/gi, "" );    /* '\s' is white space regular expression */
         return str;
     }
     else {
         return "";
     }
}


function checkValue(keyCode) 
{
 	if ((keyCode > 47 && keyCode < 58) || (keyCode==46))
		event.returnValue = true;
	else
		event.returnValue = false;
}


function formatNumber(str) 
{
	number = numOffMask(str.value);

	if (isNaN(number))
		str.value = "";
	else
		str.value = numOnMask(number);
}


function checknumber(str){
	var anum=/(^\d+$)|(^\d+\.\d+$)/
	if (anum.text(str))
		return true
	else{
		return false
	}
}


function onlyNumber() //¼ýÀÚ¸¸À» ±âÀÔ¹Þ°Ô ÇÏ´Â ¹æ¹ý
{
	if((event.keyCode<45)||(event.keyCode>57))
	event.returnValue=false;
}


function RemoteWindow( url )
{
  window.open( url, 'PreviewWin','width=580,height=450,resizable=yes,scrollbars=yes,status=0');
}


function newwindow(URL,width,height) {
	var str,width,height;
	str="'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,";
	str=str+"width="+width;
	str=str+",height="+height+"'";
	window.open(URL,'user_imsi_pop',str);
}


//ÁÖ¹Îµî·Ï¹øÈ£ Ã¼Å©ÇÔ¼ö
function f_jumin_check(str1,str2) {
	if(str1 != "" && str2 != ""){
		var str = str1 + str2;

		if(str.length == 13) {	
			var a = str.substring(0,1) * 2;
			var b = str.substring(1,2) * 3;
			var c = str.substring(2,3) * 4;
			var d = str.substring(3,4) * 5;
			var e = str.substring(4,5) * 6;
			var f = str.substring(5,6) * 7;
			var g = str.substring(6,7) * 8;
			var h = str.substring(7,8) * 9;
			var i = str.substring(8,9) * 2;
			var j = str.substring(9,10) * 3;
			var k = str.substring(10,11) * 4;
			var l = str.substring(11,12) * 5;
			var m = str.substring(12,13);
		
			var sum = a + b + c + d + e + f + g + h + i + j + k + l;
			var modules = (sum % 11);
			var end_number = 11 - modules;

			if (end_number > 9) {
				end_number = (end_number % 10);
			}
	
			if (end_number != m || (g > 2 && g < 1)) {
				return false;
			}

		} else {
			return true;
		}
					
	} else {
		return false;
	}
}

//»ç¾÷ÀÚ¹øÈ£ Ã¼Å©ÇÔ¼ö
function f_comin_check(str1,str2,str3) {
	if(str1 != "" && str2 != "" && str3 != "") {	
		var str = str1 + str2 + str3;	// »ç¾÷ÀÚ¹øÈ£ 10ÀÚ¸®
		var chkRule = "137137135";		// »ç¾÷ÀÚ¹øÈ£ Ã¼Å© Çü½Ä		
		var step1, step2, step3, step4, step5, step6, step7;
		step1 = 0;						// ÃÊ±âÈ­
		
		for (i=0; i<7; i++) {
			step1 = step1 + (str.substring(i, i+1) * chkRule.substring(i, i+1));
		}
			step2 = step1 % 10;
			step3 = (str.substring(7, 8) * chkRule.substring(7, 8)) % 10;
			step4 = str.substring(8, 9) * chkRule.substring(8, 9);
			step5 = Math.round(step4 / 10 - 0.5);
			step6 = step4 - (step5 * 10);
			step7 = (10 - ((step2 + step3 + step5 + step6) % 10)) % 10;
	
		if (str.substring(9, 10) != step7) {	// °á°ú ºñ±³ ÆÇ´Ü
			return false;
		} else {
			return true;
		}
	} else {
		return false;
	}
}

//*********************
//ÁÖ¹Î¹øÈ£ Ã¼Å© ÇÔ¼ö
//*********************
function regnumcheck(ssn1,ssn2){ 
	if (ssn1.length != 6){ 
		return false;
	} 
	else if (ssn2.length != 7){ 
		return false;
	} 
	else { 
		var str_serial1 = ssn1; 
		var str_serial2 = ssn2; 
		var digit=0 
		
		for (var i=0;i<str_serial1.length;i++){ 
		var str_dig=str_serial1.substring(i,i+1); 
		
		if (str_dig<'0' || str_dig>'9'){ 
			digit=digit+1 
		} 
	} 
	
	if ((str_serial1 == '') || ( digit != 0 )){ 
		return false;   
	}
	 
	var digit1=0 
	
	for (var i=0;i<str_serial2.length;i++){ 
	var str_dig1=str_serial2.substring(i,i+1); 	
		if (str_dig1<'0' || str_dig1>'9'){ 
			digit1=digit1+1 
		} 
	}
	 
	if ((str_serial2 == '') || ( digit1 != 0 )){ 
		return false;   
	}
	
	 
	 
	if (str_serial1.substring(2,3) > 1){ 
		return false;   
	}
	
	if (str_serial1.substring(4,5) > 3){ 
		return false;   
	}
	 
	if (str_serial2.substring(0,1) > 4 || str_serial2.substring(0,1) == 0){ 
		
		
		var sum=0;

    var odd=0;
    
    
    fgnno = ssn1 + ssn2

    buf = new Array(13);

    for(i=0; i<13; i++) { buf[i]=parseInt(fgnno.charAt(i)); }

    odd = buf[7]*10 + buf[8];

    if(odd%2 != 0) { return false; }

    if( (buf[11]!=6) && (buf[11]!=7) && (buf[11]!=8) && (buf[11]!=9) ) {

            return false;

    }

    multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];

    for(i=0, sum=0; i<12; i++) { sum += (buf[i] *= multipliers[i]); }

    sum = 11 - (sum%11);

    if(sum >= 10) { sum -= 10; }

    sum += 2;

    if(sum >= 10) { sum -= 10; }

    if(sum != buf[12]) { return false }

    return true;
		
		
	}
	 
	var a1=str_serial1.substring(0,1) 
	var a2=str_serial1.substring(1,2) 
	var a3=str_serial1.substring(2,3) 
	var a4=str_serial1.substring(3,4) 
	var a5=str_serial1.substring(4,5) 
	var a6=str_serial1.substring(5,6) 
	var check_digit=a1*2+a2*3+a3*4+a4*5+a5*6+a6*7 
	var b1=str_serial2.substring(0,1) 
	var b2=str_serial2.substring(1,2) 
	var b3=str_serial2.substring(2,3) 
	var b4=str_serial2.substring(3,4) 
	var b5=str_serial2.substring(4,5) 
	var b6=str_serial2.substring(5,6) 
	var b7=str_serial2.substring(6,7) 
	var check_digit=check_digit+b1*8+b2*9+b3*2+b4*3+b5*4+b6*5 
	check_digit = check_digit%11 
	check_digit = 11 - check_digit 
	check_digit = check_digit%10 
	
	if (check_digit != b7)
	
	{ 
		var sum=0;

    var odd=0;
    
    
    fgnno = ssn1 + ssn2

    buf = new Array(13);

    for(i=0; i<13; i++) { buf[i]=parseInt(fgnno.charAt(i)); }

    odd = buf[7]*10 + buf[8];

    if(odd%2 != 0) { return false; }

    if( (buf[11]!=6) && (buf[11]!=7) && (buf[11]!=8) && (buf[11]!=9) ) {

            return false;

    }

    multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];

    for(i=0, sum=0; i<12; i++) { sum += (buf[i] *= multipliers[i]); }

    sum = 11 - (sum%11);

    if(sum >= 10) { sum -= 10; }

    sum += 2;

    if(sum >= 10) { sum -= 10; }

    if(sum != buf[12]) { return false }

    return true;
		
	} 
	else{ 
		
		return true;
	} 
	} 
} 


//»ç¾÷ÀÚ¹øÈ£ Ã¼Å©ÇÔ¼ö
function f_comin_check_min(str) {
	if(str != "") {	
		var chkRule = "137137135";		// »ç¾÷ÀÚ¹øÈ£ Ã¼Å© Çü½Ä		
		var step1, step2, step3, step4, step5, step6, step7;
		step1 = 0;						// ÃÊ±âÈ­
		
		for (i=0; i<7; i++) {
			step1 = step1 + (str.substring(i, i+1) * chkRule.substring(i, i+1));
		}
			step2 = step1 % 10;
			step3 = (str.substring(7, 8) * chkRule.substring(7, 8)) % 10;
			step4 = str.substring(8, 9) * chkRule.substring(8, 9);
			step5 = Math.round(step4 / 10 - 0.5);
			step6 = step4 - (step5 * 10);
			step7 = (10 - ((step2 + step3 + step5 + step6) % 10)) % 10;
	
		if (str.substring(9, 10) != step7) {	// °á°ú ºñ±³ ÆÇ´Ü
			return false;
		} else {
			return true;
		}
	} else {
		return false;
	}
}


function emailCheck (emailStr) {

	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);

	if (matchArray==null) {
		alert("ÀÌ¸ÞÀÏ ÁÖ¼Ò°¡ Àß¸ø ÀÔ·ÂµÇ¾ú½À´Ï´Ù.");
		return false;
	}

	var user=matchArray[1];
	var domain=matchArray[2];

	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
			alert("ÀÌ¸ÞÀÏ ÁÖ¼Ò°¡ Àß¸ø ÀÔ·ÂµÇ¾ú½À´Ï´Ù.");
			return false;
		}
	}
	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
			alert("ÀÌ¸ÞÀÏ ÁÖ¼Ò°¡ Àß¸ø ÀÔ·ÂµÇ¾ú½À´Ï´Ù..");
			return false;
	   }
	}

	if (user.match(userPat)==null) {
		alert("ÀÌ¸ÞÀÏ ÁÖ¼Ò°¡ Àß¸ø ÀÔ·ÂµÇ¾ú½À´Ï´Ù.");
		return false;
	}

	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				alert("ÀÌ¸ÞÀÏ ÁÖ¼Ò°¡ Àß¸ø ÀÔ·ÂµÇ¾ú½À´Ï´Ù.");
				return false;
		   }
		}
		return true;
	}

	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
			alert("ÀÌ¸ÞÀÏ ÁÖ¼Ò°¡ Àß¸ø ÀÔ·ÂµÇ¾ú½À´Ï´Ù.");
			return false;
	   }
	}

	if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {
		alert("ÀÌ¸ÞÀÏ ÁÖ¼Ò°¡ Àß¸ø ÀÔ·ÂµÇ¾ú½À´Ï´Ù.");
		return false;
	}	

	if (len<2) {
		alert("ÀÌ¸ÞÀÏ ÁÖ¼Ò°¡ Àß¸ø ÀÔ·ÂµÇ¾ú½À´Ï´Ù.");
		return false;
	}
	
	return true;
}