<!--

/*********************************************
* ÆÄÀÏ¸í: lib.validate.js
* ±â´É: À¯¿¬ÇÑ ÀÚµ¿ Æû °Ë»ç±â
* ¸¸µçÀÌ: °ÅÄ£¸¶·ç <comfuture@maniacamp.com>
* ¼ö  Á¤: Àü¿µ±Ô <jeon@needok.com>
* ³¯Â¥: 2002-10-01
* == change log ==
* 2003-10-02 ¿©·¯Ä­À¸·Î ³ª´²Áø Ç×¸ñ¿¡ ´ëÇÑ °Ë»ç±â´É Ãß°¡
* 2003-10-02 ÆÐ½º¿öµåµî µÎ°³ Ç×¸ñ¿¡ ´ëÇÑ ºñ±³ ±â´É Ãß°¡
* 2003-10-03 jeon. ±æÀÌÁ¦ÇÑ¹æ¹ý º¯°æ, ÆÐÅÏÃ¼Å© º¯°æ
**********************************************/

	/// ¿¡·¯¸Þ½ÃÁö Æ÷¸ä Á¤ÀÇ ///
	var NO_BLANK = "{name+Àº´Â} ÇÊ¼öÇ×¸ñÀÔ´Ï´Ù.";
	var NO_BLANK1 = "{name+Àº´Â}";
	var NO_BLANK2 = "{name+ÀÇÀÇ}";
	var NOT_VALID = "{name+ÀÌ°¡} ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.";

	/// ½ºÆ®¸µ °´Ã¼¿¡ ¸Þ¼Òµå Ãß°¡ ///
	String.prototype.trim = function(str)
	{
		str = this != window ? this : str;
		return str.replace(/^\s+/g,'').replace(/\s+$/g,'');
	}

	String.prototype.hasFinalConsonant = function(str)
	{
		str = this != window ? this : str;
		var strTemp = str.substr(str.length-1);
		return ((strTemp.charCodeAt(0)-16)%28!=0);
	}

	String.prototype.bytes = function(str)
	{
		str = this != window ? this : str;
		var len = 0; //bug. ÀÌ ÇÑÁÙ¶§¹®¿¡ °í»ýÀ».. ³Ö¾îÁÖ¼¼¿ä. -_-;;
		for(j=0; j<str.length; j++)
		{
			var chr = str.charAt(j);
			len += (chr.charCodeAt() > 128) ? 2 : 1
		}
		return len;
	}


	function validate(form,hide,edit)
	{
		// À§Áö¿÷½Ã ÆíÁýÈ­¸éÀÇ ÀÔ·Â°ªÀ» ÅØ½ºÆ®¹Ú½º¿¡ Àü´Þ
		if(edit == "edit")
		{
			if(TextEditView.style.display == "inline") document.frm.Contents.value = Content.document.body.innerHTML;
		}

		for (i = 0; i < form.elements.length; i++ )
		{
			var el = form.elements[i];
			if (el.tagName == "FIELDSET") continue;
			el.value = el.value.trim();

			var fs = el.getAttribute("FS");
			var minbyte = null;
			var maxbyte = null;
			var option = el.getAttribute("OPTION");
			var match = el.getAttribute("MATCH");
			var glue = el.getAttribute("GLUE");

			if(fs != null)
			{
				minbyte = fs.split("_")[0];
				maxbyte = fs.split("_")[1];
			}
			if (el.getAttribute("REQUIRED") != null)
			{
				if ( (el.value == null || el.value == "") ) return doError(el,NO_BLANK);

				if (minbyte != null) {
					if (el.value.bytes() < parseInt(minbyte)) return doError(el,"{name+Àº´Â} ÃÖ¼Ò "+minbyte+"¹ÙÀÌÆ® ÀÌ»ó ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù.");
				}

				if (maxbyte != null && el.value != "")
				{
					var len = 0;
					if (el.value.bytes() > parseInt(maxbyte)) return doError(el,"{name}ÀÇ ±æÀÌ´Â ÃÖ´ë "+maxbyte+"¹ÙÀÌÆ® ÀÔ´Ï´Ù.");
				}
			}

			// Ã¼Å©¹Ú½º, ¶óÀÌ¿À¹Ú½º ÇÊ¼ö
			if(el.getAttribute("CHK") != null)
			{
				if (el.getAttribute('SPAN') == null) el.getAttribute('SPAN') = 1;

				k = 0;
				for (span=0; span<el.getAttribute('SPAN');span++ )
				{
					if(form.elements[i+span].checked == true) break;
					k++;
				}

				if(k == el.getAttribute('SPAN'))	return doError(el,NO_BLANK);
			}

			if (match && (el.value != form.elements[match].value)) return doError(el,"ÀÔ·ÂÇÏ½Å {name+ÀÌ°¡} ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù.");

			if (option != null && el.value != "")
			{
				if (el.getAttribute('SPAN') != null)
				{
					var _value = new Array();
					for (span=0; span<el.getAttribute('SPAN');span++ ) _value[span] = form.elements[i+span].value;

					var value = _value.join(glue == null ? '' : glue);
					if (!funcs[option](el,value)) return false;
				}
				else
				{
					if (!funcs[option](el)) return false;
				}
			}
		}

		// È®ÀÎ¹öÆ° °¨Ãß±â À§ÇÑ Á¦¾î¹®
		if(hide == "hide")
		{
			document.getElementsByName("block")[0].style.display = "none";
			document.getElementsByName("block")[1].style.display = "block";
		}
		if(form.name=='login_form'){
			login_cookie_check();
		}
		return true;
//		return false;
	}


	function josa(str,tail)
	{
		return (str.hasFinalConsonant()) ? tail.substring(0,1) : tail.substring(1,2);
	}

	function doError(el,type,action)
	{
		RegExp.$1 = "";
		RegExp.$2 = "";
		var pattern = /{([a-zA-Z0-9_]+)\+?([°¡-Èþ]{2})?}/;
		var name = (hname = el.getAttribute("HNAME")) ? hname : el.getAttribute("NAME");
		pattern.exec(type);

		var tail = (RegExp.$2) ? josa(eval(RegExp.$1),RegExp.$2) : "";
		alert(type.replace(pattern,eval(RegExp.$1) + tail));

		var check = el.getAttribute("nofocus");	//PHPSCHOOL.COM Tip&Tech TarauS´ÔÀÇ selectBox.htcÀû¿ë½Ã ¼¿·ºÆ®¹Ú½º¿¡ focus()°¡ Àû¿ë¾ÈµÊ.
		if(check != "select")
		{
			if (action == "sel") el.select();
			else if (action == "del") el.value = "";
			el.focus();
		}
		return false;
	}

	/// Æ¯¼ö ÆÐÅÏ °Ë»ç ÇÔ¼ö ¸ÅÇÎ ///
	/// Id, Num, Eng, Han.
	var funcs = new Array();

	funcs['Id']			= onlyId;						//    /^[a-zA-Z]{1}[a-zA-Z0-9_]+$/_
	funcs['Num']			= onlyNum;						//    /^[0-9]+$/
	funcs['Num_']			= onlyNum_;						//    /^[0-9.]+$/
	funcs['Eng']			= onlyEng;						//    /^[a-zA-Z]+$/
	funcs['EngNum']		= onlyEngNum;					//    /^[a-zA-Z0-9]+$/
	funcs['EngNum_']		= onlyEngNum_;					//		/^[a-zA-Z0-9_]+$/
	funcs['Han']			= onlyHan;						//    /^[°¡-ÆR]+$/
	funcs['HanEng']		= onlyHanEng;					//    /^[°¡-ÆRa-zA-Z]+$/
	funcs['HanEngNum']   = onlyHanEngNum;				//    /^[°¡-ÆRa-zA-Z0-9]+$/
	funcs['HanNum']		= onlyHanNum;					//    /^[°¡-ÆR0-9]+$/
	funcs['Han1']			= onlyHan1;						//    ¹Ýµå½Ã ÇÑ±Û Æ÷ÇÔ

	funcs['email']			= isValidEmail;
	funcs['email_']		= isValidEmail_;
	funcs['phone']			= isValidPhone;
	funcs['hphone']		= isValidHPhone;

	funcs['bizno_jumin']			= isValidBizJuninNo;		// »ç¾÷ÀÚ ¶Ç´Â ÁÖ¹Î¹øÈ£

	funcs['jumin']			= isValidJumin;
	funcs['bizno']			= isValidBizNo;
	funcs['domain']		= isValidDomain;
	funcs['date']			= isValidDate;

	/// ÆÐÅÏ °Ë»ç ÇÔ¼öµé ///
	function onlyId(el)
	{
		neverID = "media root bin daemon adm lp sync shutdown halt mail news uucp operator games gopher ftp nobody vcsa mailnull rpm rpc xfs rpcuser nfsnobody nscd ident radvd named pcap mysql postgres oracle dba sa administrator master webmaster operator admin sysadmin test guest anonymous sysop moderator www";
		temp = neverID.match(el.value);
		if(temp != null) return doError(el,"\""+el.value+"\"Àº(´Â) »ç¿ëÇÒ ¼ö ¾ø´Â ´Ü¾îÀÔ´Ï´Ù.","sel");

//		var pattern = /^[a-zA-Z]{1}[a-zA-Z0-9]+$/;
		var pattern = /^[a-zA-Z0-9-]+$/;
		return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¿µ¹®/¼ýÀÚ¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.","sel");
	}

	function onlyNum(el)
	{
		var pattern = /^[0-9]+$/;
		return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¹Ýµå½Ã ¼ýÀÚ·Î¸¸ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù.","sel");
	}

	function onlyNum_(el)
	{
		var pattern = /^[0-9.]+$/;
		return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¹Ýµå½Ã ¼ýÀÚ¿Í ÄÞ¸¶·Î¸¸ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù.","sel");
	}

	function onlyEng(el)
	{
		var pattern = /^[a-zA-Z]+$/;
		return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¹Ýµå½Ã ¿µ¹®ÀÚ·Î¸¸ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù.","sel");
	}

	function onlyEngNum(el)
	{
		var pattern = /^[a-zA-Z0-9]+$/;
		return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¹Ýµå½Ã ¿µ¹®ÀÚ,¼ýÀÚ·Î¸¸ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù.","sel");
	}

	function onlyEngNum_(el)
	{
		var pattern = /^[a-zA-Z0-9_]+$/;
		return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¹Ýµå½Ã ¿µ¹®ÀÚ,¼ýÀÚ,_(¾ð´õ¹Ù)·Î¸¸ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù.","sel");
	}

	function onlyHan(el)
	{
		var pattern = /^[°¡-ÆR]+$/;
		return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¹Ýµå½Ã ÇÑ±Û·Î ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù.","sel");
	}

	function onlyHanEng(el)
	{
		var pattern = /^[°¡-ÆRa-zA-Z]+$/;
		return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¹Ýµå½Ã ÇÑ±Û,¿µ¹®ÀÚ·Î¸¸ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù.","sel");
	}

	function onlyHanEngNum(el)
	{
		var pattern = /^[°¡-ÆRa-zA-Z0-9]+$/;
		return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¹Ýµå½Ã ÇÑ±Û,¿µ¹®ÀÚ,¼ýÀÚ·Î¸¸ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù.","sel");
	}

	function onlyHanNum(el)
	{
		var pattern = /^[°¡-ÆR0-9]+$/;
		return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¹Ýµå½Ã ÇÑ±Û,¼ýÀÚ·Î¸¸ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù.","sel");
	}

	function onlyHan1(el)
	{
		var pattern = /[°¡-Èþ]/;
		return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¹Ýµå½Ã ÇÑ±ÛÀ» Æ÷ÇÔÇØ¾ß ÇÕ´Ï´Ù.","sel");
	}

	function isValidEmail(el,value)
	{
		var value = value ? value : el.value;
		var pattern = /^[_a-zA-Z0-9-\.]+@[\.a-zA-Z0-9-]+\.[a-zA-Z]+$/;

		// ¹Ìµð¾îÀâ¿¡ ¸ÂÃß±â À§ÇÑ ºÎºÐ
		var len = value.length;
		var string = value.indexOf("@");
		//if(value.substr(string+1,len) == "hanmail.net" || value.substr(string+1,len) == "daum.net" )
		//{
		//	alert("hanmail/daum.net ÀÔ·ÂºÒ°¡");
		//	f.mail2.value = "";
		//	changeEmail2("nothing");
		//	return false;
		//}
		// ¹Ìµð¾îÀâ¿¡ ¸ÂÃß±â À§ÇÑ ºÎºÐ

		return (pattern.test(value)) ? true : doError(el,NOT_VALID,"sel");
	}

	function isValidEmail_(el,value)
	{
		var value = value ? value : el.value;
		var pattern = /^[_a-zA-Z0-9-\.]+@[\.a-zA-Z0-9-]+\.[a-zA-Z]+$/;

		return (pattern.test(value)) ? true : doError(el,NOT_VALID,"sel");
	}
	function isValidPhone(el,value)
	{
		var pattern = /^([0-9]{2,4})-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/;
		var num = value ? value : el.value;
		if (pattern.exec(num))
		{
/*			if(RegExp.$1 == "010" || RegExp.$1 == "011" || RegExp.$1 == "016" || RegExp.$1 == "017" || RegExp.$1 == "018" || RegExp.$1 == "019")
			{
				if (!el.getAttribute('SPAN')) el.value = RegExp.$1 + "-" + RegExp.$2 + "-" + RegExp.$3;
			}
*/			return true;
		}
		else
		{
			if(el.type == "select-one") return doError(el,NOT_VALID);
			else return doError(el,NOT_VALID,"sel");
		}
	}

	function isValidHPhone(el,value)
	{
		var pattern = /^([0]{1}[1]{1}[016789]{1})-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/;
		var num = value ? value : el.value;
		if (pattern.exec(num))
		{
/*			if(RegExp.$1 == "010" || RegExp.$1 == "011" || RegExp.$1 == "016" || RegExp.$1 == "017" || RegExp.$1 == "018" || RegExp.$1 == "019")
			{
				if (!el.getAttribute('SPAN')) el.value = RegExp.$1 + "-" + RegExp.$2 + "-" + RegExp.$3;
			}
*/			return true;
		}
		else return doError(el,NOT_VALID,"sel");
	}

	function isValidJumin(el,value)
	{
		var pattern = /^([0-9]{6})-?([0-9]{7})$/;
		var num = value ? value : el.value;
		if(num != "0000000000000")
		{
			if (!pattern.test(num)) return doError(el,NOT_VALID,"sel");
			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 doError(el,NOT_VALID,"sel");
				sum += (num.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 0x30);
			}
			var mod = sum % 11;
			return ((11 - mod) % 10 == last) ? true : doError(el,NOT_VALID,"sel");
		}
		return true;
	}

	function isValidBizNo(el, value)
	{
		var pattern = /([0-9]{3})-?([0-9]{2})-?([0-9]{5})/;
		var num = value ? value : el.value;
		if (!pattern.test(num)) return doError(el,NOT_VALID,"sel");
		num = RegExp.$1 + RegExp.$2 + RegExp.$3;
		var cVal = 0;
		for (var i=0; i<8; i++)
		{
			var cKeyNum = parseInt(((_tmp = i % 3) == 0) ? 1 : ( _tmp  == 1 ) ? 3 : 7);
			cVal += (parseFloat(num.substring(i,i+1)) * cKeyNum) % 10;
		}
		var li_temp = parseFloat(num.substring(i,i+1)) * 5 + '0';
		cVal += parseFloat(li_temp.substring(0,1)) + parseFloat(li_temp.substring(1,2));
		return (parseInt(num.substring(9,10)) == (10-(cVal%10))%10) ? true : doError(el,NOT_VALID,"sel");
	}


	//2010-01-20 ADD[JAESOO]
	function isValidBizJuninNo(el, value)		// »ç¾÷ÀÚ ¶Ç´Â ÁÖ¹Î¹øÈ£
	{
		//ÆÐÅÏÁ¤ÀÇ ¹× º¯¼ö
		var pattern = /^([0-9]{3})-?([0-9]{2})-?([0-9]{5})$/;
		var pattern2 = /^([0-9]{6})-?([0-9]{7})$/;
		var num = value ? value : el.value;

		//»ç¾÷ÀÚ¹øÈ£
		if (!pattern.test(num)) {

			//»ç¾÷ÀÚ¹øÈ£ ¾Æ´Ñ°æ¿ì ÁÖ¹Î¹øÈ£ ÆÐÅÏÀ» °Ë»çÇØ º»´Ù.
			if(num != "0000000000000")
			{
				if (!pattern2.test(num)) return doError(el,NOT_VALID,"sel");
				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 doError(el,NOT_VALID,"sel");
					sum += (num.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 0x30);
				}
				var mod = sum % 11;
				return ((11 - mod) % 10 == last) ? true : doError(el,NOT_VALID,"sel");
			}
			return true;			//ÁÖ¹Î¹øÈ£ ÆÐÅÏ ÀÏÄ¡ÇÏ¸é ³Ñ¾î°£´Ù.
		}
		num = RegExp.$1 + RegExp.$2 + RegExp.$3;
		var cVal = 0;
		for (var i=0; i<8; i++)
		{
			var cKeyNum = parseInt(((_tmp = i % 3) == 0) ? 1 : ( _tmp  == 1 ) ? 3 : 7);
			cVal += (parseFloat(num.substring(i,i+1)) * cKeyNum) % 10;
		}
		var li_temp = parseFloat(num.substring(i,i+1)) * 5 + '0';
		cVal += parseFloat(li_temp.substring(0,1)) + parseFloat(li_temp.substring(1,2));
		return (parseInt(num.substring(9,10)) == (10-(cVal%10))%10) ? true : doError(el,NOT_VALID,"sel");
	}


	function isValidDomain(el)
	{
//		var pattern = /^.+(\.[a-zA-Z]{2,3})$/;
//		return (pattern.test(el.value)) ? true : doError(el,NOT_VALID,"sel");
        return true;
	}

	function isValidDate(el, value)
	{
		var value = value ? value : el.value;
		if(value.substring(4,6) > 12 || value.substring(6,8) > 31) return doError(el,NOT_VALID,"sel");
		var pattern = /^\d{4}-?\d{1,2}-?\d{1,2}$/;
		return (pattern.test(value)) ? true : doError(el,NOT_VALID,"sel");
	}
//-->
