// 정규식 확인 함수
function chkPatten(field, patten, msg)
{
	var regNum =/^[0-9]+$/;
	var regPinNum =/^[0-9]{4}$/;  // 숫자 4자리수 핀넘버
	var regPhone =/^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/;
	var regMail =/^(\S+)@(\S+)\.(\S+){2,4}$/;
	var regDomain =/^[^(www)\.](\S+)\.(\S+){2,4}$/;
	var regURL =/^[^(www)\.](\S+)\.(\S+){2,4}\/*(\S+)*$/;
	var regAlpha =/^[a-zA-Z]+$/;
	var regHost =/^[a-zA-Z-]+$/;
	var regHangul =/[가-히]/;
	var regHangulEng =/[가-히a-zA-Z]/;
	var regHangulOnly =/^[가-히]*$/;
	var regEngOnly =/^[a-zA-Z|\s]*$/;
	var regId = /^[a-zA-Z]{1}[a-zA-Z0-9_-]{3,15}$/;  // 3자 이상 15자 이하 아이디
	var regPass = /^([a-zA-Z]+[0-9]+[a-zA-Z0-9]*|[0-9]+[a-zA-Z]+[a-zA-Z0-9]*)$/;  //숫자 영문 혼합 비밀번호
	var regTextarea =/[(.*)]*/;

	patten = eval(patten);

	if(!patten.test(field.value))
	{
		alert(msg);
		field.focus();
		return false;
	}
	return true;
}

// TextArea 확인 함수
function chkTextArea(field, exe, limit, limitExe)
{
	var str = field.value.replace(/\n/gm, "");
	if(str.length < 1)
	{
		alert(exe);
		return false;
	}
	else if(limit)
	{
		if(str.length > limit)
		{
			alert(limitExe);
			return false;
		}
	}
	return true;
} 

// Text 폼 확인 함수
function chkText(field, exe)
{ 
	if(field.value.length < 1)
	{
		alert(exe); 
		field.focus(); 
		return false;
	}
	return true;
}

// hidden 폼 확인 함수
function chkHidden(field, exe, limit, limitExe)
{
	var str = field.value.replace(/\n/gm, "");
	if(str.length < 1)
	{
		alert(exe);
		return false;
	}
	else if(limit)
	{
		if(str.length > limit)
		{
			alert(limitExe);
			return false;
		}
	}
	return true;
}

// 4자리 핀넘버 확인 함수
function chkPinNum(passChk, passChk2, exe)
{
	if(passChk.value.length != 4) 
	{
		alert(exe);
		passChk.focus();
		return false;
	}

	if(passChk2.value.length != 4) 
	{
		alert(exe);
		passChk2.focus();
		return false;
	}

	if(passChk.value != passChk2.value) 
	{
		alert("패스워드를 확인해주세요");
		passChk2.focus();
		return false;
	}
	return true;
} 

// 비번 입력 여부 확인 함수
function chkSinglePasswd(passChk, exe)
{
	if(passChk.value.length < 6)
	{
		alert(exe);
		passChk.focus();
		return false;
	}
	return true;
}

// 비번 일치 여부 확인 함수
function chkDoublePasswd(passChk, passChk2, exe)
{
	if(passChk.value.length < 6)
	{
		alert(exe);
		passChk.focus();
		return false;
	}

	if(passChk2.value.length < 6) 
	{
		alert(exe);
		passChk2.focus();
		return false;
	}

	if(passChk.value != passChk2.value) 
	{
		alert("패스워드를 확인해주세요");
		passChk2.focus();
		return false;
	}
	return true;
}

// 체크박스 폼 확인 함수
function chkCheckbox(field, exe)
{
	if(field.checked != true)
	{
		alert(exe);
		field.focus();
		return false;
	}
	return true;
}

// 라디오 폼 확인 함수
function chkRadio()
{
	return true;
}

// Select 폼 확인 함수
function chkSelect(field, exe)
{
	if(field.value=="")
	{
		alert(exe);
		field.focus();
		return false;
	}
	return true;
}

// 팝업 띄우는 함수
function popUp(w, h, link, poptitle)
{
	x = (screen.availWidth - w) / 2;
	y = (screen.availHeight - h) / 2;
	window.open(link, 'popup', 'scrollbars=yes, width='+w+', height='+h+', left='+x+', top='+y);
}

// 주민번호 확인 함수
function chkJumin(str_jumin1, str_jumin2) 
{
	errfound = false;
	var str_jumin1;
	var str_jumin2;
	var checkImg='';

	var i3=0;
	for (var i=0;i<str_jumin1.length;i++) 
	{
		var ch1 = str_jumin1.substring(i,i+1);
		if (ch1<'0' || ch1>'9') { i3=i3+1 } 
	}
	if ((str_jumin1 == '') || ( i3 != 0 )) { return false; }

	var i4=0;
	for (var i=0;i<str_jumin2.length;i++) 
	{
		var ch1 = str_jumin2.substring(i,i+1);
		if (ch1<'0' || ch1>'9') { i4=i4+1 } 
	}

	if ((str_jumin2 == '') || ( i4 != 0 )) { return false; }

	if(str_jumin1.substring(0,1) < 4) { return false; }

	if(str_jumin2.substring(0,1) > 2) { return false; }

	if((str_jumin1.length > 7) || (str_jumin2.length > 8)) { return false; }

	if ((str_jumin1 == '72') || ( str_jumin2 == '18')) { return false; }

	var f1=str_jumin1.substring(0,1);
	var f2=str_jumin1.substring(1,2);
	var f3=str_jumin1.substring(2,3);
	var f4=str_jumin1.substring(3,4);
	var f5=str_jumin1.substring(4,5);
	var f6=str_jumin1.substring(5,6);
	var hap=f1*2+f2*3+f3*4+f4*5+f5*6+f6*7;
	var l1=str_jumin2.substring(0,1);
	var l2=str_jumin2.substring(1,2);
	var l3=str_jumin2.substring(2,3);
	var l4=str_jumin2.substring(3,4);
	var l5=str_jumin2.substring(4,5);
	var l6=str_jumin2.substring(5,6);
	var l7=str_jumin2.substring(6,7);
	hap=hap+l1*8+l2*9+l3*2+l4*3+l5*4+l6*5;
	hap=hap%11;
	hap=11-hap;
	hap=hap%10;

	if (hap != l7) { return false; }

	var i9=0

	if (!errfound) { return true; }
}

// 항목 체크 함수
function checkForm(form)
{
	var currEl; // 현재 element
	/* 공통부분이 아니므로 재사용이 불가능해짐 08.10.29 iHWAN
	if($(form).passwd1 && $(form).passwd2)
	{
		var passChk = $(form).passwd1; // 패스워드
		var passChk2 = $(form).passwd2; // 패스워드 확인
	}

	if($(form).jumin1 && $(form).jumin2)
	{	
		var jumin1 = $(form).jumin1 // 주민번 앞자리
		var jumin2 = $(form).jumin2 // 주민번 뒷자리
		
		if(!chkJumin(jumin1.value, jumin2.value))
		{
			alert( form.jumin1.getAttribute('exe') );
			jumin1.focus();
			return false;
		}
	}*/
	//alert($(form).elements.length);

	for(var i = 0; i < $(form).elements.length; i++)
	{
		currEl = $(form).elements[i];

		//필수 항목을 체크한다. 
		if (currEl.getAttribute('required') != null) 
		{
			if(currEl.tagName == "SELECT")
			{
				if(!chkSelect(currEl.options[currEl.selectedIndex],currEl.getAttribute('exe'))) return false; 
			}

			if(currEl.type == "checkbox")
			{
				if(!chkCheckbox(currEl,currEl.getAttribute('exe'))) return false; 
			}
			
			if(currEl.type == "text")
			{
				if(!chkText(currEl,currEl.getAttribute('exe'))) return false; 
			}

			if(currEl.type == "hidden")
			{
				if(!chkHidden(currEl,currEl.getAttribute('exe'),currEl.getAttribute('limit'),currEl.getAttribute('limitExe'))) return false; 
			}

			if(currEl.name == "file")
			{ 
				if(!chkText(currEl,currEl.getAttribute('exe'))) return false; 
			}
	
			if(currEl.type == "textarea")
			{
				if(!chkTextArea(currEl,currEl.getAttribute('exe'),currEl.getAttribute('limit'),currEl.getAttribute('limitExe'))) return false; 
			}

			if(currEl.type == "password")
			{
				if(currEl.getAttribute('mode')=="double")
				{
					if(passChk.value != "" && passChk2.value != "")
					{
						if(!chkDoublePasswd(passChk,passChk2,currEl.getAttribute('exe'))) return false;
					}
					else
					{
						if(!chkText(currEl,currEl.getAttribute('exe'))) return false; 
					}
				}
				if(currEl.getAttribute('mode')=="single")
				{
					if(!chkSinglePasswd(currEl,currEl.getAttribute('exe'))) return false;
				}
			}
		}//필수항목 IF문 끝

		//폼 값들중 옵션이 Null이 아니고 값이 들어있는것을 체크한다.
		if(currEl.getAttribute('check') != null && currEl.value.length > 0)
		{
			if(!chkPatten(currEl,currEl.getAttribute('check'),currEl.getAttribute('exe'))) return false;

			if(currEl.type == "password")
			{
				if(currEl.getAttribute('mode')=="double")
				{
					if(passChk.value != "" && passChk2.value != "")
					{
						if(!chkDoublePasswd(passChk,passChk2,currEl.getAttribute('exe'))) return false;
					}
					else
					{
						if(!chkText(currEl,currEl.getAttribute('exe'))) return false; 
					}
				}
				if(currEl.getAttribute('mode')=="single")
				{
					if(!chkSinglePasswd(currEl,currEl.getAttribute('exe'))) return false;
				}
			}
		}
	}//For문 끝
	return true;
}

// 필수 항목 확인 및 submit 함수
function checkSubmit(form)
{
	//if(checkForm(form)) { $(form).submit(); }

	if(checkForm(form)) 
	{
		return true; 
	}
	else { return false; }
}

// default input 값 넣는 함수
// 본 함수는 반드시 폼 아래쪽 혹은 onload에 이용해야 함
function defaultSelect(form)
{
	for(i = 0; i < form.elements.length; i++)
	{
		currEl = form.elements[i];

		if (currEl.getAttribute("default") != null) 
		{
			switch (currEl.type)
			{
				case "radio" :
				count = document.getElementsByName(currEl.name).length;
				for(x=0; x<count; x++)
				{
					if(document.getElementsByName(currEl.name)[x].value == currEl.getAttribute("default"))
					{ document.getElementsByName(currEl.name)[x].checked = true; }
				}
				break;
				
				case "checkbox" :
				if(currEl.value==input_value) { currEl.checked = true; }
				break;
				
				case "select-one" :
				currEl.value = currEl.getAttribute("default");
				
				if(currEl.value=='') { currEl.options[0].selected = true; }
				break;
				
				default :
			}
		}
	}//For문 끝 
}

// 글자 수 확인 함수
function textCounter(field, countfield, maxlimit)
{
	var str = field.value.replace(/\n/gm, "");
	countfield.value = maxlimit - str.length;
}

// 지원서 제출 함수
function verifySubmit(form, confirmMsg)
{
	if(checkForm(form))
	{
		if(confirm(confirmMsg))
		{ form.submit(); }
	}
	else
	{ return false; }
}

// 새 지원서 작성
function newApply(stat, form, name, thisURI)
{
	if(stat=="0")
	{
		alert('이메일 인증을 먼저 받으셔야 합니다.');
	}
	else if(stat=="3")
	{
		if(confirm("로그인하시겠습니까?"))
		{
			var next = encodeURIComponent(thisURI);
			location.href="http://www.checkone.org/login.chk?goto="+next;
		}
	}
	else
	{
		confirmMsg = name + "을(를) 지원하시겠습니까?";
		verifySubmit(form, confirmMsg);
	}
}

// 라디오 박스 선택 확인
function radio_check(formName)
{
	var radio_obj = new Array();
	var cnt = 0;
	var obj = $(formName).elements;

	for (var i = 0; i < $(formName).elements.length; i++)
	{
		if (obj[i].type == "radio")
		{
			if (radio_obj[cnt - 1] != obj[i].name)
			{
				radio_obj[cnt] = obj[i].name;
				cnt++;
			}
		}
	}

	// radio_obj
	for (var i = 0; i < radio_obj.length; i++)
	{
		var obj = document.getElementsByName(radio_obj[i]);
		for (var j = 0; j < obj.length; j++)
		{
			if (obj[j].checked == true) { break; }
			if ((j+1 == obj.length) && (obj[j].checked == false))
			{
				obj[0].focus();
				return false;
			}
		}
	}
	return true;
}

//datetime 확인
function checkDateTime(str)
{
	var regex= /^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
	
	if (regex.test(str))
	{
		return true;
	}
	else
	{
		return false;
	}
}

//date 확인 2008-01- 만 입력하면 체크못하는 버그있음 좀더 엄격한 정규식으로 교체필요
function checkDate(str)
{
	var regex= /^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9])?$/;
	
	if (regex.test(str))
	{
		return true;
	}
	else
	{
		return false;
	}
}
