/*
<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, disable) {

	if(disable == 'no') {

		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.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.required, form, button)) return false;
				}

				//포커스가 없어야 한다.
				else if(currEl.type.toLowerCase()=="hidden") {
					if(!chkHidden(currEl, currEl.required, form, button)) return false;
				}
				
				else if (currEl.type.toLowerCase()=="password") {
					if(!chkText(currEl, currEl.required, form, button)) return false;
				}
				
				else if (currEl.type.toLowerCase()=="checkbox") {
					if(!chkCheckbox(form, currEl, currEl.required, button)) return false;
				}
				
				else if(currEl.type.toLowerCase()=="radio") {
					if(!chkRadio(form, currEl, currEl.required, button)) return false;
				}
			}

			// 동일한 값인지 체크
			if (currEl.getAttribute("sname") != null) {
				if(!chkSame(form, currEl, currEl.scheck, currEl.sname, button)) return false;
			}

			// 사업자등록번호 체크
			if (currEl.getAttribute("cnumber") != null) {
				if(!chkcnum(form, currEl, currEl.cnumber, button)) return false;
			}

			// 입력 페턴을 체크한다.
			if(currEl.getAttribute("option") != null && currEl.value.length > 0) {
				if(!chkPatten(currEl, currEl.option, currEl.oname, form, button)) return false;
			}
			
			//최소길이를 체크한다.
			if(currEl.getAttribute("min") != null && currEl.value.length > 0) {
				if(!chkMinimum(currEl, currEl.min, currEl.minname, form, button)) return false;
			}

			// 최대길이를 체크한다.
			if(currEl.getAttribute("max") != null && currEl.value.length > 0) {
				if(!chkMaximum(currEl, currEl.max, currEl.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 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_-]{4,10}$/;
	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 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);
	
	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 = eval(form.name+'.'+field.name);	
	if (!fieldname.checked)
	{
		alert(name);
		field.focus();
		if(button) button.disabled = false;
		return false;
	}
	return true; 
}

function chkRadio(form, field, errorMSG, button)
{
	fieldname = eval(form.name+"."+field.name);
	//fieldname = document.getElementById(field.name);	
	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= eval(form.name+"."+scheck+".value");
	if (field.value != svalue)
	{
		alert(errorMSG);
		field.focus();
		if(button) button.disabled = false;
		return false;
	}
	return true; 
}

function inputNum(){  // 숫자만 입력 받습니다.  onkeypress="inputNum()"
	if ((event.keyCode<48)||(event.keyCode>57)) event.returnValue=false;
}

function inputNotSC(){ // 특수문자를 받지 않습니다. onkeypress="inputNotSC()"
	if ((event.keyCode >= 33 && event.keyCode <= 47) || (event.keyCode >= 58 && event.keyCode <= 64) || (event.keyCode >= 91 && event.keyCode <= 96) || (event.keyCode >= 123 && event.keyCode <= 126)) event.returnValue=false;
}

