﻿// 이메일 정규식 체크 리턴
function isEmail(str)
{	
	var reg=/^[_0-9a-zA-Z-]+(\.[_0-9a-zA-Z]+)*@[0-9a-zA-Z-]+(\.[0-9a-zA-Z]+)+$/g;	
	if(str.match(reg)==null) {return false;}
}

// URL 정규식 체크 리턴
function isUrl(str)
{	
	var reg=/(http|https)\:\/\/[a-zA-z]+(\.[a-zA-Z0-9]+)*(\.[a-zA-Z0-9]+)/;
	if(str.match(reg)==null) {return false;}
}

//한글 전용 정규식 체크 리턴
function isKorean(str){
	var reg = /[가-힣]+$/;
	if(!str.match(reg)){
		return false;
	}
		return true;
}

// 전화번호 정규식 체크 리턴
function isPhone(str)
{	
	var reg=/^\d{2,3}-\d{3,4}-\d{4}$/g;	
	if(str.match(reg)==null) {return false;}
}

// 날짜 정규식 체크 리턴
function isDate(str)
{
	var reg=/^\d{4}-\d{2}-\d{2}$/
	if(str.match(reg)==null) {return false;}
}

// 해당 문자열이 공백인지 리턴
function isBlank(str)
{
	var arrStr=str.split(" ")
	if (str.length+1==arrStr.length)
		return true;
	return false;
}

//공백 확인
function isSpace(str) 
{
  var chkstr = str + "";
  var is_space = false ;
  for ( j = 0 ; j < chkstr.length  ; j++)
  {
    if( chkstr.substring( j , j+1 ) == " " )
      is_space = true ;
  }
  return ( is_space );
}

// 해당 문자열이 특정 길이를 넘어가는지 리턴
function isOverLen(str,len)
{
	if (getStrLen(str)>len)
		return true;
	else
		return false;
}

// 별명 정규식 체크 리턴
function isNickName(str)
{
	var reg = /[가-힣0-9a-zA-Z]+$/;
	if(str.match(reg)==null) {return false;}
	return true;
}


// id 체크
function chkId(obj)
{
	var obj_id = obj.value;
	reg = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	for (i=0;i<obj_id.length;i++)
    {
		if(reg.indexOf(obj_id.substring(i,i+1))==-1) {
			alert("아이디는 영문,숫자 4~15자 로 이루어져야 합니다");
			obj.select();
			obj.focus();
			return true;
		}
	}
	if(obj_id.length < 4)
	{
		alert("아이디는 4자 이상이어야 합니다");
		obj.select();
		obj.focus();
		return true
	}
	if(obj_id.length > 15)
	{
		alert("아이디는 15자 이하이어야 합니다");
		obj.select();
		obj.focus();
		return true
	}
	return false;
}

// 닉네임 체크
function chkNickName(obj){
	if(!obj){return false;}
	if(!isNickName(obj.value))
	{
		alert("닉네임은 한글,영문,숫자로 이루어져야 합니다");	
		obj.select();
		obj.focus();
		return true;
	}
	if(isSpace(obj.value))
	{
		alert("닉네임은 한글,영문,숫자로 이루어져야 합니다");	
		obj.select();
		obj.focus();
		return true;
	}
	if(LenStr(obj.value)<4)
	{
		alert("닉네임는 4자 이상이어야 합니다");
		obj.select();
		obj.focus();
		return true;
	}
	if(LenStr(obj.value)>16)
	{
		alert("닉네임는 한글8자(영문16자) 이하이어야 합니다");
		obj.select();
		obj.focus();
		return true
	}
	return false;
}

// 사용자 정의 정규식 체크
function chkReg(obj,reg,str)
{
	if(!obj){return false;}
	if(obj.value.match(reg)==null)
	{
		if(str) {alert(str);}
		try{obj.focus();}catch(e){}
		return false;
	}
	return true;
}

// 해당 문자열이 공백인지
function chkBlank(obj,str)
{
	if(!obj){return false;}
	if(isBlank(obj.value))
	{
		if(str) {alert(str);}
		try{obj.focus();}catch(e){}		
		return false;
	}
	return true;
}
function chkZero(obj,str)
{
	if(!obj){return false;}
	if(obj.value==0)
	{
		if(str) {alert(str);}
		try{obj.focus();}catch(e){}		
		return false;
	}
	return true;
}

// 이름 검사
function chkName(obj){
	if(!obj){return false;}
	if(isBlank(obj.value) || obj.value.length < 2) { 
		alert("이름을 입력해 주세요");
		try{obj.focus();}catch(e){}		
		return false;
	}
	if(!isKorean(obj.value) || isSpace(obj.value)) {
		alert("이름을 정확히 입력해 주세요");
		try{obj.focus();}catch(e){}		
		return false;
	}
	return true;
}

// 숫자 검사
function chkNumber(obj,str)
{
	if(!obj){return false;}
	if(isBlank(obj.value) || isNaN(obj.value))
	{
		if(str) {alert(str);}
		obj.value="";
		try{obj.focus();}catch(e){}		
		return false;
	}
	return true;
}

// 비밀번호 검사 - 확인 비밀번호가 있을경우
function chkPassword(obj1,obj2)
{
	if(isBlank(obj1.value))
	{
		alert("비밀번호를 입력하세요");
		try{obj1.focus();}catch(e){}		
		return false;
	}
	if(obj1.value.length<6 || obj1.value.length>12){
		alert("비밀번호는 6자~12자 이내의 영문과 숫자를 입력해주세요");
		try{obj1.focus();}catch(e){}		
		return false;
	}
	if(isBlank(obj2.value))
	{
		alert("비밀번호 확인을 입력하세요");
		try{obj2.focus();}catch(e){}		
		return false;
	}
	if(obj1.value!=obj2.value)
	{
		alert('비밀번호와 비밀번호 확인이 서로 일치하지 않습니다.');
		return false;
	}
	return true;
}

// 이메일 검사
function chkEmail(obj,str,objFocus)
{
	if(!obj){return false;}
	if(!objFocus){objFocus=obj;}
	if(isEmail(obj.value)==false)
	{
		if(str) {alert(str);} else {alert("바른 이메일 주소를 넣어주세요");}
		try{objFocus.focus();}catch(e){}
		return false;
	}
	return true;
}

// URL 검사
function chkUrl(obj,str,objFocus)
{
	if(!obj){return false;}
	if(!objFocus){objFocus=obj;}
	if(isUrl(obj.value)==false)
	{
		if(str) {alert(str);} else {alert("바른 URL 주소를 넣어주세요");}
		try{objFocus.focus();}catch(e){}
		return false;
	}
	return true;
}

// 전화번호 검사
function chkPhone(obj,str)
{
	if(!obj){return false;}
	if(isPhone(obj.value)==false)
	{
		if(str) {alert(str);}
		obj.value="";
		try{obj.focus();}catch(e){}		
		return false;
	}
	return true;
}

// 날짜형식 체크
function chkDate(obj,str)
{
	if(!obj){return false;}
	if(isDate(obj.value)==false)
	{
		if(str) {alert(str);} else {alert("날짜 형식에 맞게 입력해 주세요\n\n예)2000-01-01");}
		obj.value="";
		try{obj.focus();}catch(e){}		
		return false;
	}
	return true;
}

// 옵션 버튼 체크 
function chkOption(obj,str)
{
	if(!obj){return false;}
	var chkValue;
	for(var i=0;i<obj.length;i++)
	{
		if(!obj[i]){continue;}
		if(obj[i].checked) {chkValue=obj[i].value;break;}
	}
	if(!chkValue)
	{
		if(str) {alert(str);}
		return false;
	}
	return true;
}

// 주민등록번호 검사
function chkJumin(obj1,obj2)
{
	var chksum=0
	var sex=obj2.value.substring(0,1)

	// 주민번호 앞자리 검사
	if (obj1.value.length!=6)
	{
		alert("주민등록번호 앞자리 6자리를 제대로 입력해주세요.");
		try{obj1.focus();}catch(e){}		
		return false;
	}
	
	// 주민번호 뒷자리 검사
	if (obj2.value.length!=7)
	{
		alert("주민등록번호 뒷자리 7자리를 제대로 입력해주세요.");
		try{obj2.focus();}catch(e){}
		return false;
	}
	
	// 주민 번호 규칙 검사
	for (var i=0;i<=5;i++)
	{
		chksum+=((i%8+2)*parseInt(obj1.value.substring(i,i+1)))
	}
	for (var i=6;i<=11;i++) 
	{
		chksum+=((i%8+2)*parseInt(obj2.value.substring(i-6,i-5)))
	}
	chksum=11-(chksum%11) 
	chksum=chksum%10
	if (chksum!=obj2.value.substring(6,7))
	{ 
	    alert ("잘못된 주민등록번호입니다."); 
		try{obj1.focus();}catch(e){}	    
	    return false; 
	}
	return true;
}

// 문자열 길이 리턴
function getStrLen(str)
{
	var nbytes=0;
	for (i=0; i<str.length; i++)
	{
		var ch=str.charAt(i);
		if(escape(ch).length > 4) {nbytes += 1;}
		else if (ch=='\n')
			{if (str.charAt(i-1)!='\r') {nbytes += 1;}}
		else if (ch=='<' || ch=='>') {nbytes += 4;}
		else {nbytes += 1;}
	}
	return nbytes;
}

/* 요약 내용 글자수 체크 */
function chkRemain(maxLen,obj,str)
{
	if(!obj) {return false;}
	var remainbyte = document.getElementById(str);
	var length=getStrLen(obj.value);
	remainbyte.innerHTML=length;

	if (length>maxLen)
	{
		alert("최대 " + maxLen + "자이므로 초과된 글자수는 자동으로 삭제됩니다.");
		obj.value=obj.value.replace(/\r\n$/, "");
		obj.value=cutStr(obj.value,maxLen-1);
		chkRemain(maxLen,obj,str);
	}
}

function cutStr(value,maxLen)
{
	var nbytes=0;
	var result="";
	var length=value.length;

	for (i=0;i<length;i++)
	{
		var ch=value.charAt(i);
		if(escape(ch).length > 4) {nbytes += 1;} // 한글입력시
		else if(escape(ch).length == 1) {nbytes += 1;} // 영문입력시
		else if (ch=='\n') {if (value.charAt(i-1) != '\r') {nbytes+=1;}}
		else if (ch=='<' || ch=='>') {nbytes+=4;}
		else {nbytes+=1;}
		if (nbytes>maxLen+1) {break;}
		result+=ch;
	}
	return result;
}

function LenStr(value){
	var nbytes=0;
	var length=value.length;

	for (i=0;i<length;i++)
	{
		var ch=value.charAt(i);
		if(escape(ch).length > 4) {nbytes += 2;} // 한글입력시
		else if(escape(ch).length == 1) {nbytes += 1;} // 영문입력시
		else {nbytes+=1;}
	}
	return nbytes;
}