var wrestMsg = "";
var wrestFld = null;
var arrAttr  = new Array ("required", "email", "number");

// id로 객체화
function fn_e(s) {return document.getElementById(s);}

// name으로 객체화
function fn_name(s) {return document.getElementsByName(s);}

// subject 속성값을 얻어 return, 없으면 tag의 name을 넘김
function wrestItemname(fld)
{
	var itemname = fld.getAttribute("itemname");
	if (itemname != null && itemname != "")
		return itemname;
	else
		return fld.name;
}

// 양쪽 공백 없애기
function wrestTrim(fld) 
{
	var pattern = /(^\s*)|(\s*$)/g; // \s 공백 문자
	fld.value = fld.value.replace(pattern, "");
	return fld.value;
}

// 필수 입력 검사(text,file,select,textarea)
function wrestRequired(fld)
{
	if (wrestTrim(fld) == "")
	{
		if (wrestFld == null)
		{
			if(fld.type == "select-one")
				wrestMsg = wrestItemname(fld) + "を選択してください。\n";
			else
				wrestMsg = wrestItemname(fld) + "は、必須項目です。\n";

			wrestFld = fld;
		}
	}
}

// 필수 입력 검사(text,file,select,textarea)
function wrestRadioBox(fld)
{
	var obj = fn_name(fld.name);
	var k,sum = 0;

	for (k = 0; k < obj.length; k++)
	{
		if(obj[k].checked == true)
			sum ++;
	}

	if(sum < 1)
	{
		if (wrestFld == null)
		{
			if(fld.type == "radio")
				wrestMsg = wrestItemname(fld) + "を選択してください。\n";
			else
				wrestMsg = wrestItemname(fld) + "を選択してください。\n";

			wrestFld = fld;
		}
	}
}

// 전자메일주소 형식 검사
function wrestEmail(fld) 
{
	if (!wrestTrim(fld)) return;

	var pattern = /([0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)\.([0-9a-zA-Z_-]+)/;
	if (!pattern.test(fld.value))
	{
		if (wrestFld == null)
		{
			wrestMsg = wrestItemname(fld) + "メールアドレスに不正な文字が入力されています。入力しなおしてください。\n";
			fld.value = '';
			wrestFld = fld;
		}
	}
}

// 숫자 입력검사
function wrestNumber(fld) 
{
	var pattern = /([^0-9])/;
	if (pattern.test(fld.value))
	{
		if (wrestFld == null)
		{
			wrestMsg = wrestItemname(fld) + "는(은) 숫자만 입력가능합니다.\n";
			fld.value = '';
			wrestFld = fld;
		}
	}
}

function submit_check(f) {
	var fLen = f.length;
	var i,j;

	// 해당폼에 대한 요소의 갯수만큼 반복
	for (i = 0; i < fLen; i++)
	{
		// Input tag 의 type 이 text, file, select, textarea 일때,
		if (f.elements[i].type == "text" || 
			f.elements[i].type == "file" || 
			f.elements[i].type == "select-one" || 
			f.elements[i].type == "textarea")
		{
			// arrAttr배열의 길이만큼 반복.
			for (j = 0; j < arrAttr.length; j++) {
				// 배열에 정의한 속성과 비교해서 속성이 있거나 값이 있다면
				if (f.elements[i].getAttribute(arrAttr[j]) != null)
				{
					switch (arrAttr[j])
					{
						case "required":
							wrestRequired(f.elements[i]);
							break;
						case "email":
							wrestEmail(f.elements[i]);
							break;
						case "number":
							wrestNumber(f.elements[i]);
							break;
						default:
							break;
					} // switch
				} // if
			} // for
		}//if

		// input tag 의 type 이 radio, checkbox 일때,
		if(f.elements[i].type == "radio" || f.elements[i].type == "checkbox")
		{
			// 속성이 required일때,
			if(f.elements[i].getAttribute('required') != null) {
				wrestRadioBox(f.elements[i]);
			}
		}

	} // for

	// 경고문 띄우기.
	if (wrestFld != null) {
		alert(wrestMsg);
		wrestFld.focus();
		// 다음 빈값체크를 위해 값초기화.
		wrestMsg = "";
		wrestFld = null;
		return false;
	}

	return true;
}
