/*
<form name="ttt">
	<input type="text" required="이 값을 입력하세요!">
	<input type="text" min="2" minname="2자보다 길어야 합니다">
	<input type="text" required="�̸이메일필수!" option="regMail" oname="메일형식오류!">
	<input type="text" name="name" required="이름을 작성하여 주십시오." /><br>  두 필드의 value가 같은지 체크
	<input type="text" name="ncheck" sname="같지 않네요" scheck="name" required="이름을 확인하여 주십시오."/>
</form>
*/

function chkForm(form, button) {

	if(button) button.disabled = true;
	var i, currEl;
	for(i=0 ; i<form.elements.length ; i++) {

		currEl = form.elements[i];

		if (currEl.disabled != true) {

			//  포커스 이동이 불가능할 경우 시작
			if (currEl.getAttribute("nofocus") != null) {
				if(currEl.tagName.toLowerCase()=="textarea") {
					if(!nfchkText(currEl, currEl.getAttribute('hname'), form, button)) return false;
				}
			}
			// 포커스 이동이 불가능할 경우 끝

			//필수 항목을 체크한다.
			if (currEl.getAttribute("required") != null) {
				if(currEl.type.toLowerCase()=="text" || currEl.type.toLowerCase()=="file" || 
					currEl.tagName.toLowerCase()=="select" || currEl.tagName.toLowerCase()=="textarea") {
					if(!chkText(currEl, currEl.getAttribute('required'), form, button)) return false;
				}

				//포커스가 없어야 한다.
				else if(currEl.type.toLowerCase()=="hidden") {
					if(!chkHidden(currEl, currEl.getAttribute('required'), form, button)) return false;
				}
				
				else if (currEl.type.toLowerCase()=="password") {
					if(!chkText(currEl, currEl.getAttribute('required'), form, button)) return false;
				}
				
				else if (currEl.type.toLowerCase()=="checkbox") {
					if(!chkCheckbox(form, currEl, currEl.getAttribute('required'), button)) return false;
				}
				
				else if(currEl.type.toLowerCase()=="radio") {
					if(!chkRadio(form, currEl, currEl.getAttribute('required'), button)) return false;
				}
			}

			// 동일한 값인지 체크
			if (currEl.getAttribute("sname") != null) {
				if(!chkSame(form, currEl, currEl.getAttribute('scheck'), currEl.getAttribute('sname'), button)) return false;
			}

			// 주민등록번호 체크
			if (currEl.getAttribute("pnumber") != null) {
				if(!chkpnum(form, currEl, currEl.getAttribute('pcheck'), currEl.getAttribute('pnumber'), button)) return false;
			}

			// 사업자등록번호 체크
			if (currEl.getAttribute("cnumber") != null) {
				if(!chkcnum(form, currEl, currEl.getAttribute('cnumber'), button)) return false;
			}

			// 입력 페턴을 체크한다.
			if(currEl.getAttribute("option") != null && currEl.value.length > 0) {
				if(!chkPatten(currEl, currEl.getAttribute('option'), currEl.getAttribute('oname'), form, button)) return false;
			}
			
			//최소길이를 체크한다.
			if(currEl.getAttribute("min") != null && currEl.value.length > 0) {
				if(!chkMinimum(currEl, currEl.getAttribute('min'), currEl.getAttribute('minname'), form, button)) return false;
			}

			// 최대길이를 체크한다.
			if(currEl.getAttribute("max") != null && currEl.value.length > 0) {
				if(!chkMaximum(currEl, currEl.getAttribute('max'), currEl.getAttribute('maxname'), form, button)) return false;
			}
		}
	}

	return true;
}


function chkPatten(field, patten, name, form, button) {
	var regNum =/^[0-9]+$/;
	var regNum_1 =/^[0-9]+$/;
	var regPhone =/^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/;		// 형식 : 033-1234-5678
	var regMail =/^[._a-zA-Z0-9-]+@[._a-zA-Z0-9-]+\.[a-zA-Z]+$/;
	var regMail3 = /^[._a-zA-Z0-9-]+\.[a-zA-Z]+$/;
	var regMail2 =/^[.a-zA-Z][._a-zA-Z0-9-]+@[._a-zA-Z0-9-]+\.[a-zA-Z]+$/;
	var regDomain =/^[.a-zA-Z0-9-]+.[a-zA-Z]+$/;
	var regAlpha =/^[a-zA-Z]+$/;
	var regHost =/^[a-zA-Z-]+$/;
	var regHangul =/[가-힣]/;
	var regHangulEng =/[가-힣a-zA-Z]/;
	var regHangulOnly =/^[가-힣]*$/;
	//var regId = /^[a-zA-Z]{1}[a-zA-Z0-9_-]{6,18}$/;
	var regId = /^[a-zA-Z0-9_-]{6,18}$/;
	var regDate =/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/;				// 형식 : 2002-08-15
	
	patten = eval(patten);
	
	if(!patten.test(field.value)) {
		alert(name);
		field.focus();
		if(button) button.disabled = false;
		return false;
	}
	
	return true;
} 

// 주민등록번호 체크
function chkpnum(form, reg_num1, ptarget, errorMsg, button) {
	var reg_num2 = eval(form.name+"."+ptarget);
	var val=0;
	for ( var i=0 ; i<=5 ; i++ ) { val=val+((i%8+2)*parseInt(reg_num1.value.substring(i,i+1))); }
	for ( var i=6 ; i<=11 ; i++ ) { val=val+((i%8+2)*parseInt(reg_num2.value.substring(i-6, i-5))); }

	val = 11-(val%11);
	val = val%10;

	if(val!=reg_num2.value.substring(6,7)) {
		alert(errorMsg);
		reg_num1.focus();
		if(button) button.disabled = false;
		return false;
	}
	return true; 
}

//사업자등록번호 체크
function chkcnum(form, field, errorMSG, button) {
  var c1 = field.value.substring(0,1); 
  var c2 = field.value.substring(1,2); 
  var c3 = field.value.substring(2,3); 
  var c4 = field.value.substring(3,4); 
  var c5 = field.value.substring(4,5); 
  var c6 = field.value.substring(5,6); 
  var c7 = field.value.substring(6,7); 
  var c8 = field.value.substring(7,8); 
  var c9 = field.value.substring(8,9); 
  var c10 = field.value.substring(9,10); 
  
  var a1 = (c1*1)+(c2*3)+(c3*7)+(c4*1)+(c5*3)+(c6*7)+(c7*1); 
  var a2 = a1 % 10; 
  var a3 = (c8 * 3) % 10; 
  var a4 = c9 * 5; 
  var a5 = Math.round(a4/10-0.5); 
  var a6 = a4 - (a5*10); 
  var a7 = (a2+a3+a5+a6) % 10; 
  var a8 = (10 - a7) % 10; 

  if (a8 != c10)
	{
		alert(errorMSG);
		field.focus();
		if(button) button.disabled = false;
		return false;
	}
	return true; 
}

function chkMinimum(field, minimum, name, form, button)
{
	fieldvalue = field.value;
	if (fieldvalue.length <minimum)
	{
		alert(name);
		field.value = "";
		field.focus();
		if(button) button.disabled = false;
		return false;
	}
	return true; 
}

function chkMaximum(field, maximum, name, form, button)
{
	fieldvalue = field.value;
	if (fieldvalue.length > maximum)
	{
		alert(name);
		field.value = "";
		field.focus();
		if(button) button.disabled = false;
		return false;
	}
	return true;
}

function chkText(field, name, form, button)
{
	fieldvalue = field.value;
	fieldvalue = fieldvalue.split(" ");
	
	// 오라클 에러를 발생시키는 ' 를 제거한다.
	//var flag = "";
	//var eExp= /'/gi;
	
	//field.value = field.value.replace(eExp, flag);
	field.value = field.value.replace("'","‘");

	if(field.value.length + 1 == fieldvalue.length)
	{
		alert(name);
		field.value = "";
		field.focus();
		if(button) button.disabled = false;
		return false;
	}
	return true; 
}

function nfchkText(field, name, form, button)		// 포커스이동 제거
{
	fieldvalue = field.value;
	fieldvalue = fieldvalue.split(" ");
	
	//오라클 에러를 발생시키는 ' 를 제거한다.
	var flag = "";
	var eExp= /'/gi;
	
	field.value = field.value.replace(eExp, flag);
	
	if(field.value.length + 1 == fieldvalue.length)
	{
		alert(name);
		field.value = "";
		if(button) button.disabled = false;
		return false;
	}
	return true; 
}

function chkHidden(field, name, form, button)
{
	fieldvalue = field.value;
	fieldvalue = fieldvalue.split(" ");
	
	// 오라클 에러를 발생시키는 ' 를 제거한다.
	var flag = "";
	var eExp= /'/gi;
	
	field.value = field.value.replace(eExp, flag);
	
	if(field.value.length + 1 == fieldvalue.length)
	{
		alert(name);
		field.value = "";
		if(button) button.disabled = false;
		return false;
	}
	return true; 
}

function chkCheckbox(form, field, name, button)
{
	fieldname = document.getElementById(field.id);	
	if (!fieldname.checked)
	{
		alert(name);
		field.focus();
		if(button) button.disabled = false;
		return false;
	}
	return true; 
}

function chkRadio(form, field, errorMSG, button)
{
	fieldname = document.getElementById(field.id);	
	for (var i=0;i<fieldname.length;i++)
	{
		if (fieldname[i].checked) return true;
	}
	
	alert(errorMSG);
	field.focus();
	if(button) button.disabled = false;
	return false; 
}

//두개의 값이 같은지 체크
function chkSame(form, field, scheck, errorMSG, button)
{
	//var svalue = document.getElementById(scheck).value;
	var svalue = document.getElementById(scheck).value;
	if (field.value != svalue)
	{
		alert(errorMSG);
		field.focus();
		if(button) button.disabled = false;
		return false;
	}
	return true; 
}

//pattens : 입력가능한 패턴 문자열
//value   : 비교할 문자열
 function isEnableText(patten, value) {
	var isExist;
	var values = value.split('');
	var pattens = patten.split('');

	for(var i = 0; i < values.length; i++)
	{
		isExist = false;

		for(var j = 0; j < pattens.length; j++) {
			if (values[i] == pattens[j]) {
				 isExist = true;
				 break;
			}
	}

	if(!isExist)
		return false;
	}

	return isExist;
 }

