/********************************************************************
*
* Form °ü·Ã ½ºÅ©¸³Æ® ÇÔ¼ö ¸ðÀ½
*
*******************************************************************/
// Æû °ËÁõ ÇÔ¼ö
function checkForm(f) {
	var fLen = f.elements.length;
	var fObj;	// Æû ¿ä¼Ò
	var fTyp;	// Æû ¿ä¼Ò Type
	var fVal;	// Æû ¿ä¼Ò Value
	var fMsg;	// °æ°í ¸Þ½ÃÁö ¼Ó¼º
	var fNum;	// ¼ýÀÚ¸¸ ÀÔ·Â ¼Ó¼º
	var fMax;	// ÃÖ´ë ±æÀÌ ÁöÁ¤
	var fMin;	// ÃÖ¼Ò ±æÀÌ ÁöÁ¤
	var fMxN;	// ÃÖ´ë°ª ÁöÁ¤
	var fMnN;	// ÃÖ¼Ò°ª ÁöÁ¤
	var fMal;	// ¸ÞÀÏ FORMAT
	var fHan;	// ÇÑ±ÛÃ¼Å©
	var fEng;	// ¿µ¾îÃ¼Å©

	for (i=0;i<fLen;i++) {
		fObj = f.elements[i];
		fTyp = toUpperCase(fObj.getAttribute("type"));
		fVal = fObj.getAttribute("value");
		fMsg = fObj.getAttribute("msg");		// °æ°í ¸Þ½ÃÁö
		fNum = fObj.getAttribute("chknum");		// ¼ýÀÚ¸¸ ±âÀÔ °¡´ÉÇÏµµ·Ï
		fMax = fObj.getAttribute("maxlen");		// ÃÖ´ë ÀÔ·Â±ÛÀÚ¼ö Á¦ÇÑ
		fMin = fObj.getAttribute("minlen");		// ÃÖ¼Ò ÀÔ·Â±ÛÀÚ¼ö Á¦ÇÑ
		fMxN = fObj.getAttribute("maxnum");		// ÃÖ´ë ¼ýÀÚ Á¦ÇÑ
		fMnN = fObj.getAttribute("minnum");		// ÃÖ¼Ò ¼ýÀÚ Á¦ÇÑ
		fMal = fObj.getAttribute("chkmail");	// ÀÌ¸ÞÀÏ Ã¼Å©
		fHan = fObj.getAttribute("chkhan");	// ÇÑ±Û Ã¼Å©
		fEng = fObj.getAttribute("chkeng");	// ¿µ¾î Ã¼Å©
		fEngNum = fObj.getAttribute("chkengnum");	// ¿µ¾î Ã¼Å©

		if (fMsg != null && (fTyp == "TEXT" || fTyp == "HIDDEN" || fTyp == "TEXTAREA" || fTyp == "PASSWORD") && fVal.replace(/ /gi,"") == "") {
			alert(fMsg + " ÀÔ·ÂÇØ ÁÖ¼¼¿ä");
			if (fTyp != "HIDDEN") {fObj.focus();}
			return false;
		}
		if (fMsg != null && (fTyp == "SELECT-ONE" || fTyp == "SELECT-MULTIPLE") && fVal =="") {
			alert(fMsg + " ¼±ÅÃÇØ ÁÖ¼¼¿ä");
			fObj.focus(); return false;
		}
		if (fMsg != null && (fTyp == "RADIO" || fTyp == "CHECKBOX") && checkChecked(fObj) == false) {
			alert(fMsg + " ¼±ÅÃÇØ ÁÖ¼¼¿ä");
			fObj.focus(); return false;
		}
		if (fNum != null && isNaN(fVal)) {
			alert("¼ýÀÚ·Î¸¸ ÀÔ·ÂÇØ ÁÖ¼¼¿ä");
			fObj.focus(); return false;
		}
		if (fHan != null && func_hasHangul(fVal)) {
			alert("ÇÑ±Û·Î¸¸ ÀÔ·ÂÇØ ÁÖ¼¼¿ä");
			fObj.focus(); return false;
		}
		if (fEng != null && func_alphaOnly(fVal)) {
			alert("¿µ¾î·Î¸¸ ÀÔ·ÂÇØ ÁÖ¼¼¿ä");
			fObj.focus(); return false;
		}
		if (fEngNum != null && func_alphanumOnly(fVal)) {
			alert("¿µ¾î¿Í ¼ýÀÚ·Î¸¸ ÀÔ·ÂÇØ ÁÖ¼¼¿ä");
			fObj.focus(); return false;
		}
		if (fMax != null && fMax < getLen(fVal)) {
			alert("ÀÔ·ÂµÈ ±ÛÀÚ¼ö°¡ "+fMax+"ÀÚº¸´Ù ÀÛ¾Æ¾ßÇÕ´Ï´Ù.\n(¿µ¹® "+fMax+"ÀÚ, ÇÑ±Û "+Math.floor(fMax/2)+"ÀÚ ±îÁö °¡´ÉÇÕ´Ï´Ù.)");
			fObj.focus(); return false;
		}
		if (fMin != null && fMin > getLen(fVal)) {
			alert("ÀÔ·ÂµÈ ±ÛÀÚ¼ö°¡ "+fMin+"ÀÚº¸´Ù Ä¿¾ßÇÕ´Ï´Ù.");
			fObj.focus(); return false;
		}
		if (fMxN != null && parseInt(fMxN) < parseInt(fVal)) {
			alert("ÀÔ·ÂµÈ ¼ýÀÚ´Â "+fMxN+"º¸´Ù ÀÛ¾Æ¾ßÇÕ´Ï´Ù.");
			fObj.focus(); return false;
		}
		if (fMnN != null && parseInt(fMnN) > parseInt(fVal)) {
			alert("ÀÔ·ÂµÈ ¼ýÀÚ´Â "+fMnN+"º¸´Ù Ä¿¾ßÇÕ´Ï´Ù.");
			fObj.focus(); return false;
		}
		if (fMal != null && checkEmail(fVal) == false && fVal != "") {
			alert("ÀÌ¸ÞÀÏ ÁÖ¼Ò°¡ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù");
			fObj.focus(); return false;
		}
	}
	return true;
}

// Æû¿¡ ÇØ´çÇÏ´Â ÄÁÆ®·ÑµéÀÇ ±âº»°ª ½±°Ô ¼ÂÆÃÇØ ÁÖ±â
function initForm(f)	{
	var nLen;	// form ¿ä¼ÒÀÇ °¹¼ö
	var ival;	// °¢ ¿ä¼ÒÀÇ default value °ª Áï! ÃÊ±âÈ­ÇÏ°íÀÚ ÇÏ´Â°ª
	var fTyp;	// form ¿ä¼ÒÀÇ Å¸ÀÔ(select, radio, checkbox...)

	for (var i = 0; i < f.elements.length; i++) {
		fTyp = toUpperCase(f.elements[i].type);
		ival = f.elements[i].ival;

		if (ival && fTyp == "SELECT-ONE") {
			nLen = f.elements[i].options.length;
			for (var j = 0; j < nLen; j++) {
				if (f.elements[i].options[j].value == ival)
				f.elements[i].options[j].selected = true;
			}
		}
		if (fTyp == "SELECT-MULTIPLE") {
			nLen = f.elements[i].options.length;
			for (var j = 0; j < nLen; j++) {
				if (f.elements[i].options[j].value == f.elements[i].options[j].ival)
				f.elements[i].options[j].selected = true;
			}
		}
		if (ival && (fTyp == "RADIO" || fTyp == "CHECKBOX")) {
			if (f.elements[i].value == ival)
			f.elements[i].checked = true;
		}
	}
	return true;
}
// ¹è¿­ ¿ä¼ÒÀÏ °æ¿ì checked µÈ°ÍÀÌ ÀÖ´ÂÁö È®ÀÎ
function checkChecked(obj) {
	var objnm = obj.name;
	var oElem = eval("document.all."+objnm);
	var ret = false;
	if (typeof(oElem.length) == "undefined") {
		if (oElem.checked) {
			ret = true;
		}
	} else {
		for (var i=0;i<oElem.length;i++) {
			if (oElem[i].checked) {
				ret = true;
			}
		}
	}
	return ret;
}
// ÀÌ¸ÞÀÏ À¯È¿¼º Ã¼Å©
function checkEmail(str){
	var reg = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;
	if (str.search(reg) != -1) {
		return true;
	}
	return false;
}
// ¹®ÀÚ ±æÀÌ ¹ÝÈ¯ (¿µ¹® 1byte, ÇÑ±Û 2byte °è»ê)
function getLen(str) {
	var len;
	var temp;

	len = str.length;
	var tot_cnt = 0;

	for(k=0;k < len;k++){
		temp = str.charAt(k);
		if(escape(temp).length > 4)
		tot_cnt += 2;
		else
		tot_cnt++;
	}
	return tot_cnt;
}
// ´ë¹®ÀÚ º¯È¯ ex) toUpperCase(¹®ÀÚ)
function toUpperCase(str) {
	var ret;
	str != null ? ret = str.toUpperCase() : ret = "";
	return ret;
}

function func_hasHangul(str) {
	var pattern = /^[°¡-Èþ]+$/;
	return (pattern.test(str)) ? false : true;
}

function func_alphaOnly(str) {
	var pattern = /^[a-zA-Z]+$/;
	return (pattern.test(trim(str))) ? false : true;
}

function func_alphanumOnly(str) {
	var pattern = /^[0-9]+$/;
	return (pattern.test(trim(str))) ? false : true;
}
function func_isNumeric(str) {
	var pattern = /^[0-9]+$/;
	return (pattern.test(str)) ? false : true;
}

function func_isValidJumin(str) {
	var pattern = /^([0-9]{6})-?([0-9]{7})$/;
	var num = str;
	if (!pattern.test(num)) return true;
	num = RegExp.$1 + RegExp.$2;

	var sum = 0;
	var last = num.charCodeAt(12) - 0x30;
	var bases = "234567892345";
	for (var i=0; i<12; i++) {
		if (isNaN(num.substring(i,i+1))) return true;
		sum += (num.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 0x30);
	}
	var mod = sum % 11;
	return ((11 - mod) % 10 == last) ? false : true;
}
