if (__include_Validator__ == null)
{
	var __include_Validator__ = true;
	//###########################################################################
	//# Validator.js
	//###########################################################################
	//# ÆûÀÇ °ªµéÀÌ Á¤´çÇÑÁö Å×½ºÆ® ÇÑ´Ù.
	//# Yangkun  <yangkun7@kornet.net>
	//# version 1.0
	//# 2004-04-05
	//###########################################################################
	/******************************************************************************
	- Usage
		1. INPUT ÅÂ±×¿¡ »ç¿ëÇÒ validation attribute ¸¦ ¸í½Ã ÇÑ´Ù.
		2. Æû °Ë»ç ÇÔ¼ö¿¡¼­ °Ë»çÇÒ form object ¸¦ ÀÎÀÚ·Î Validator °´Ã¼¸¦ ¸¸µç´Ù.
		2. Validator.test ¸¦ È£ÃâÇÑ´Ù. Æû °ªµéÀÌ Á¤´çÇÏ¸é true, ¾Æ´Ï¸é false ¸¦ ¸®ÅÏÇÑ´Ù.

		* ¿¹1.

		<script language='javascript' src='js.Validator.js'></script>
		<script language='javascript'>
		function frmCheck(f)
		{
			var validator = new Validator(f);
			return v.test();
		}
		</script>
		<form .... onSubmit='return frmCheck(this);'>
			<input type='..' ... validation attribute>
			<input type='..' ... validation attribute>
			<input type='submit'>
		</form>

	- Available attribute list
		
		notnull						: ¹Ýµå½Ã °ªÀ» ÀÔ·ÂÇØ¾ß ÇÑ´Ù.
		number						: ¼ýÀÚ°ª¸¸ ÀÔ·Â
		min="number"				: °¡´ÉÇÑ ÃÖ¼Ò°ª
		max="number"				: °¡´ÉÇÑ ÃÖ´ë°ª
		min="number" max="number"	: °¡´ÉÇÑ °ªÀÇ ¹üÀ§
		desc="string"				: ÇØ´ç ÄÁÆ®·ÑÀÇ ÀÌ¸§À» ¸í½Ã. ¿¡·¯¸¦ Ç¥½ÃÇÒ¶§ »ç¿ëÇÑ´Ù.
		todefault					: ÇØ´ç ÄÁÆ®·Ñ¿¡ ¿¡·¯°¡ ³µÀ»¶§ value ¼Ó¼º¿¡ ¸í½ÃµÈ °ªÀ¸·Î º¹¿øÇÑ´Ù.
		alpha						: ¿µ¹®¸¸ÀÔ·Â°¡´ÉÇÏµµ·Ï ÇÑ´Ù.
		alphanum					: ¿µ¹®°ú ¼ýÀÚ¸¸ ÀÔ·Â°¡´ÉÇÏµµ·Ï ÇÑ´Ù.
		equal="object_name"			: equal ¿¡ ¸í½ÃÇÑ ÄÁÆ®·ÑÀÇ °ª°ú °°¾Æ¾ß ÇÑ´Ù.
		minlength="number"			: ÀÔ·Â°ªÀÇ ±æÀÌ°¡ number º¸´Ù ±æ¾î¾ß ÇÑ´Ù.
		maxbyte = "number"          : ÀÔ·Â°ªÀÇ Byte ±æÀÌ°¡ number º¸´Ù ÀÛ¾Æ¾ß ÇÑ´Ù.
		email						: ÀÔ·ÂµÇ´Â °ªÀÌ email Çü½Ä¿¡ ¸Â¾Æ¾ß ÇÑ´Ù.
		url							: ÀÔ·ÂµÇ´Â °ªÀÌ URL Çü½Ä¿¡ ¸Â¾Æ¾ß ÇÑ´Ù.
		minselect="number"			: °°Àº ÀÌ¸§À» °¡Áö´Â Ã¼Å©¹Ú½º¿¡ ´ëÇØ¼­ ÃÖ¼Ò ¼±ÅÃ¼ö ÁöÁ¤, Ã¼Å© ¹Ú½ºµé Áß¿¡ ÇÏ³ª¿¡¸¸ ¼³Á¤ÇÑ´Ù.
		maxselect="number"			: °°Àº ÀÌ¸§À» °¡Áö´Â Ã¼Å©¹Ú½º¿¡ ´ëÇØ¼­ ÃÖ´ë ¼±ÅÃ¼ö ÁöÁ¤, Ã¼Å© ¹Ú½ºµé Áß¿¡ ÇÏ³ª¿¡¸¸ ¼³Á¤ÇÑ´Ù.
		mobile						: ÇÚµåÆù ¹øÈ£ Çü½Ä¿¡ ¸Âµµ·Ï ÇÑ´Ù.
		reg="string"				: ÀÔ·Â°ªÀº string ¿¡ ÁöÁ¤ÇÑ Á¤±Ô½Ä¿¡ ºÎÇÕÇØ¾ß ÇÑ´Ù.
		upper						: ´ë¹®ÀÚ¸¸ ÀÔ·Â °¡´É
		lower						: ¼Ò¹®ÀÚ¸¸ ÀÔ·Â °¡´É

	- Available public function
		
		setBgColor("color value")	: ¿¡·¯ ³µÀ»¶§, ÄÁÆ®·Ñ ¹è°æÀ» Ã¤¿ï »öÀ» ¼³Á¤
										ÀÌÇÔ¼ö°¡ ºÒ¸®Áö ¾Ê´Â´Ù¸é »öÀ» Ã¤¿ìÁö ¾Ê´Â´Ù.
		setShowError(boolean)		: ¿¡·¯°¡ ³µÀ»¶§ window.alert ·Î ¸Þ½ÃÁö¸¦ º¸¿©ÁÙÁö ¿©ºÎ

		string getErrorMessage()	: ¿¡·¯°¡ ³µÀ»¶§ ¿¡·¯¸Þ½ÃÁö¸¦ ¸°ÅÏ.
		object getErrorObject()		: ¿¡·¯°¡ ³µÀ»¶§ ÇØ´ç ¿¡·¯°¡ ³­ ÄÁÆ®·ÑÀ» ¸®ÅÏ.
	******************************************************************************/
	/**
	* Constructor
	* 
	* obj_form : °Ë»ç¸¦ ¼öÇàÇÒ form object
	*/
	Validator = function(obj_form)
	{
		// properties
		this.form = obj_form;
		this.error_msg = "";
		this.error_object = null;
		this.bgcolor = "";
		this.is_change_bgcolor = false;
		this.is_alert_error = true;
		this.error_pannel = false;
	}
	/**
	* set function
	*/
	Validator.prototype.setBgColor = function(color){this.bgcolor = color; this.is_change_bgcolor = true;}
	Validator.prototype.setShowError = function(flag){this.is_alert_error = flag;}
	/**
	* get function
	*/
	Validator.prototype.getErrorMessage = function(){return this.error_msg;}
	Validator.prototype.getErrorObject = function(){return this.error_object;}
	/**
	* ¿¡·¯ÆÐ³Î ¼³Á¤
	*/
	Validator.prototype.setErrorPannel = function(obj)
	{
		this.error_pannel = obj;
	}
	/**
	* ÆûÀÇ ±¸¼º¿ä¼ÒµéÀ» validation attribute ¿¡ ÀÇÇØ °Ë»çÇÑ´Ù.
	* 
	* return : ¸ðµÎ Á¤´çÇÑ °ªÀÌ¸é true, ¾Æ´Ï¸é false
	*/
	Validator.prototype.test = function()
	{
		if (this.error_pannel != false)
		{
			this.error_pannel.style.display = 'none';
			this.error_pannel.innerHTML = "";
		}

		var sepc_control = false;
		
		if (arguments[0]) sepc_control = arguments[0];
		var els = this.form.elements;
		
		for (var i=0; i<els.length; i++)
		{
			var el = this.form.elements[i];
			if (el.tagName == 'EMBED' || el.tagName == 'embed') continue;
			if (sepc_control && sepc_control != el.name) continue;
			// embed tag µµ formÀÇ element ·Î ÀÎ½ÄÇØ¼­ ¹®Á¦°¡ »ý±ä´Ù.

			var classname = el.className;
			var classes = classname.split(' ');
			var ch = 0;
			var pname="";
			for(k=0; k<classes.length; k++)
			{
				var tmps = classes[k].split(':');
				var cname = tmps[0];
				if (cname=="notnull") if (!this.check_notnull(el)) return false;
				if (cname=="number") if (!this.check_number(el)) return false;
				if (cname=="min" || cname=="max")
				{
					if(pname!=cname)
					{
						ch++;
						pname = cname;
					}
					if(ch==2)
					{
						if (!this.check_range(el)) return false;
					}
				}
				if (cname=="min") if (!this.check_min(el)) return false;
				if (cname=="max") if (!this.check_max(el)) return false;
				if (cname=="alpha") if (!this.check_alpha(el)) return false;
				if (cname=="upper") if (!this.check_upper(el)) return false;
				if (cname=="lower") if (!this.check_lower(el)) return false;
				if (cname=="alphanum") if (!this.check_alphanum(el)) return false;
				if (cname=="alphaupper") if (!this.check_alphaupper(el)) return false;
				if (cname=="equal") if (!this.check_equal(el)) return false;
				if (cname=="minlength") if (!this.check_minlength(el)) return false;
				if (cname=="email") if (!this.check_email(el)) return false;
				if (cname=="url") if (!this.check_url(el)) return false;
				if (cname=="reg") if (!this.check_reg(el)) return false;
				if (cname=="mobile") if (!this.check_mobile(el)) return false;
				if (cname=="maxbyte") if (!this.check_maxbyte(el)) return false;
				if (cname=="filename") if (!this.check_filename(el)) return false;
				if (cname=="minselect") if (!this.check_min_select(el)) return false;
				if (cname=="maxselect") if (!this.check_max_select(el)) return false;
			}
			
			if (el.getAttribute("notnull")!=null) if (!this.check_notnull(el)) return false;
			if (el.getAttribute("number")!=null) if (!this.check_number(el)) return false;
			if (el.getAttribute("min")!=null && el.getAttribute("max")!=null) if (!this.check_range(el)) return false;
			if (el.getAttribute("min")!=null) if (!this.check_min(el)) return false;
			if (el.getAttribute("max")!=null) if (!this.check_max(el)) return false;
			if (el.getAttribute("alpha")!=null) if (!this.check_alpha(el)) return false;
			if (el.getAttribute("upper")!=null) if (!this.check_upper(el)) return false;
			if (el.getAttribute("lower")!=null) if (!this.check_lower(el)) return false;
			if (el.getAttribute("alphanum")!=null) if (!this.check_alphanum(el)) return false;
			if (el.getAttribute("alphaupper")!=null) if (!this.check_alphaupper(el)) return false;
			if (el.getAttribute("equal")!=null) if (!this.check_equal(el)) return false;
			if (el.getAttribute("minlength")!=null) if (!this.check_minlength(el)) return false;
			if (el.getAttribute("email")!=null) if (!this.check_email(el)) return false;
			if (el.getAttribute("url")!=null) if (!this.check_url(el)) return false;
			if (el.getAttribute("reg")!=null) if (!this.check_reg(el)) return false;
			if (el.getAttribute("mobile")!=null) if (!this.check_mobile(el)) return false;
			if (el.getAttribute("maxbyte")!=null) if (!this.check_maxbyte(el)) return false;
			if (el.getAttribute("filename")!=null) if (!this.check_filename(el)) return false;
			if (el.getAttribute("minselect")!=null) if (!this.check_min_select(el)) return false;
			if (el.getAttribute("maxselect")!=null) if (!this.check_max_select(el)) return false;
		}
		return true;
	}
	
	/**
	* ÇØ´ç ÄÁÆ®·ÑÀÇ °ªÀÌ ºñ¾îÀÖ´ÂÁö °Ë»çÇÏ°í ¿¡·¯¸¦ Ã³¸®.
	*/
	Validator.prototype.check_notnull = function(obj)
	{
		if (obj.type == "text" || obj.type == "password" || obj.type == "textarea" || obj.type == "file")
		{
			var str = obj.value;
			if (str.trim() == "") return this.invalid(obj, "notnull");
		}
		return true;
	}
	/**
	* ÇØ´ç ÄÁÆ®·ÑÀÇ °ªÀÌ ¼ýÀÚÀÎÁö °Ë»çÇÑ´Ù. ¼ýÀÚ°¡ ¾Æ´Ï¸é ¿¡·¯.
	*/
	Validator.prototype.check_number = function(obj)
	{
		if (obj.value.trim() == "") return true;
		if (!this.is_number(obj.value)) return this.invalid(obj, "number");
		return true;
	}
	/**
	* ÇØ´ç ÄÁÆ®·ÑÀÇ °ªÀÌ ÆÄÀÏÀÌ¸§ÀÎÁö °Ë»çÇÑ´Ù. ÆÄÀÏÀÌ¸§ÀÌ ¾Æ´Ï¸é ¿¡·¯.
	*/
	Validator.prototype.check_filename = function(obj)
	{
		if (obj.value.trim() == "") return true;
		var filename = /^[a-zA-Z0-9_\.\-\+]+$/;
		var val = obj.value.trim();
		if (!filename.test(val)) return this.invalid(obj, "filename");
		return true;
	}
	/*
	* ÄÁÆ®·ÑÀÇ °ªÀÌ ¿µ¹®À¸·Î¸¸ µÇ¾ú´ÂÁö °Ë»ç
	*/
	Validator.prototype.check_alpha = function(obj)
	{
		if (obj.value.trim() == "") return true;
		var alpha = /^[a-zA-Z_]*$/;
		var val = obj.value.trim();
		if (!alpha.test(val)) return this.invalid(obj, "alpha");
		return true;
	}
	/**
	* ÄÁÆ®·ÑÀÇ °ªÀÌ ¿µ¹® ´ë¹®ÀÚ·Î¸¸ µÇ¾ú´ÂÁö °Ë»ç
	*/
	Validator.prototype.check_alphaupper = function(obj)
	{
		if (!this.check_alpha(obj)) return false;
		if (!this.check_upper(obj)) return false;
		return true;
	}
	/*
	* ÄÁÆ®·ÑÀÇ °ªÀÌ ¿µ¹® ´ë¹®ÀÚ·Î¸¸ µÇ¾ú´ÂÁö °Ë»ç
	*/
	Validator.prototype.check_upper = function(obj)
	{
		if (obj.value.trim() == "") return true;
		var alpha = /^[A-Z_]*$/;
		var val = obj.value.trim();
		if (!alpha.test(val)) return this.invalid(obj, "upper");
		return true;
	}
	/*
	* ÄÁÆ®·ÑÀÇ °ªÀÌ ¿µ¹® ¼Ò¹®ÀÚ·Î¸¸ µÇ¾ú´ÂÁö °Ë»ç
	*/
	Validator.prototype.check_lower = function(obj)
	{
		if (obj.value.trim() == "") return true;
		var alpha = /^[a-z_]*$/;
		var val = obj.value.trim();
		if (!alpha.test(val)) return this.invalid(obj, "lower");
		return true;
	}
	/*
	* ÄÁÆ®·Î¸£ÀÌ °ªÀÌ ¿µ¹® È¤Àº ¼ýÀÚ·Î¸¸ µÇ¾ú´ÂÁö °Ë»ç
	*/
	Validator.prototype.check_alphanum = function(obj)
	{
		if (obj.value.trim() == "") return true;
		var alphanum = /^[a-zA-Z0-9_]*$/;
		var val = obj.value.trim();
		if (!alphanum.test(val)) return this.invalid(obj, "alphanum");
		return true;
	}
	/**
	* ÇØ´ç ÄÁÆ®·ÑÀÇ °ªÀÌ ÇØ´ç ¹üÀ§¿¡ ¼ÓÇÏ´ÂÁö °Ë»ç
	*/
	Validator.prototype.check_range = function(obj)
	{
		if (obj.value.trim() == '') return true;

		var min_value = obj.getAttribute("min");
		var max_value = obj.getAttribute("max");

		var classname = obj.className;
		var classes = classname.split(' ');
		var ch = 0;
		for(i=0; i<classes.length; i++)
		{
			var tmps = classes[i].split(':');
			var cname = tmps[0];
			if(cname=='min')
			{
				min_value = tmps[1];
			}
			if(cname=='max')
			{
				max_value = tmps[1];
			}
		}

		if (!this.is_number(obj.value) || !this.is_number(min_value) || !this.is_number(max_value))
		{
			var name = obj.name;
			if (obj.getAttribute("desc")) name = obj.getAttribute("desc");
			if (obj.getAttribute("title"))	name = obj.getAttribute("title");
			alert("[" + name + "] ¿¡´Â min max ¼Ó¼ºÀÌ ¼³Á¤ µÇ¾î ÀÖ½À´Ï´Ù. min °ª, max °ª, ÀÔ·Â°ªÀº ¼ýÀÚ¿©¾ß ÇÕ´Ï´Ù.");
			return false;
		}

		min_value = parseInt(min_value);
		max_value = parseInt(max_value);

		var val = parseInt(obj.value);
		if (val < min_value || val > max_value) return this.invalid(obj, "range", min_value, max_value);
		return true;
	}
	/**
	* ÇØ´ç ÄÁÆ®·ÑÀÇ °ªÀÌ ÇØ´ç ¼ýÀÚº¸´Ù Å«Áö °Ë»ç
	*/
	Validator.prototype.check_min = function(obj)
	{
		if (obj.value == '') return true;

		var min_value = obj.getAttribute("min");

		var classname = obj.className;
		var classes = classname.split(' ');
		var ch = 0;
		for(i=0; i<classes.length; i++)
		{
			var tmps = classes[i].split(':');
			var cname = tmps[0];
			if(cname=='min')
			{
				min_value = tmps[1];
			}
		}

		if (!this.is_number(obj.value) || !this.is_number(min_value))
		{
			var name = obj.name;
			if (obj.getAttribute("desc")) name = obj.getAttribute("desc");
			if (obj.getAttribute("title"))	name = obj.getAttribute("title");
			alert("[" + name + "] ¿¡´Â min ¼Ó¼ºÀÌ ¼³Á¤ µÇ¾î ÀÖ½À´Ï´Ù. min °ª°ú ÀÔ·Â°ªÀº ¼ýÀÚ¿©¾ß ÇÕ´Ï´Ù.");
			return false;
		}
		min_value = parseInt(min_value);
		var val = parseInt(obj.value);
		if (val < min_value) return this.invalid(obj, "min", min_value);
		return true;
	}
	/**
	* ÇØ´ç ÄÁÆ®·ÑÀÇ °ªÀÌ ÇØ´ç ¼ýÀÚº¸´Ù Å«Áö °Ë»ç
	*/
	Validator.prototype.check_max = function(obj)
	{
		if (obj.value == '') return true;

		var max_value = obj.getAttribute("max");

		var classname = obj.className;
		var classes = classname.split(' ');
		var ch = 0;
		for(i=0; i<classes.length; i++)
		{
			var tmps = classes[i].split(':');
			var cname = tmps[0];
			if(cname=='max')
			{
				max_value = tmps[1];
			}
		}

		if (!this.is_number(obj.value) || !this.is_number(max_value))
		{
			var name = obj.name;
			if (obj.getAttribute("desc")) name = obj.getAttribute("desc");
			if (obj.getAttribute("title"))	name = obj.getAttribute("title");
			alert("[" + name + "] ¿¡´Â max ¼Ó¼ºÀÌ ¼³Á¤ µÇ¾î ÀÖ½À´Ï´Ù. max °ª°ú ÀÔ·Â°ªÀº ¼ýÀÚ¿©¾ß ÇÕ´Ï´Ù.");
			return false;
		}
		max_value = parseInt(max_value);
		var val = parseInt(obj.value);
		if (val > max_value) return this.invalid(obj, "max", max_value);
		return true;
	}
	/*
	* ´Ù¸¥ ÄÁÆ®·Ñ°ú °ªÀÌ °°ÀºÁö ºñ±³
	*/
	Validator.prototype.check_equal = function(obj)
	{
		var another_name = obj.getAttribute("equal");

		var classname = obj.className;
		var classes = classname.split(' ');
		var ch = 0;
		for(i=0; i<classes.length; i++)
		{
			var tmps = classes[i].split(':');
			var cname = tmps[0];
			if(cname=='equal')
			{
				another_name = tmps[1];
			}
		}

		eval("var another = this.form." + another_name + ";");
		var val1 = obj.value.trim();
		var val2 = another.value.trim();
		if (val1 != val2) return this.invalid(obj, "equal", another_name);
		return true;
	}
	/*
	* ÄÁÆ®·Ñ¿¡ ÀÔ·ÂµÈ °©ÀÇ ±æÀÌ°¡ Æ¯Á¤ °ª ÀÌ»óÀÌ¾î¾ß ÇÑ´Ù.
	*/
	Validator.prototype.check_minlength = function(obj)
	{
		if (obj.value.trim() == "") return true;

		var require_length = obj.getAttribute("minlength");

		var classname = obj.className;
		var classes = classname.split(' ');
		for(i=0; i<classes.length; i++)
		{
			var tmps = classes[i].split(':');
			var cname = tmps[0];
			if(cname=='minlength')
			{
				require_length = tmps[1];
			}
		}

		var len = obj.value.length;
		if (len < require_length) return this.invalid(obj, "minlength", require_length);
		return true;
	}
	/*
	* ÄÁÆ®·Ñ¿¡ ÀÔ·ÂµÈ ¹ÙÀÌÆ® ±æÀÌ°¡ maxbyte º¸´Ù ÀÛ¾Æ¾ß ÇÑ´Ù.
	*/
	Validator.prototype.check_maxbyte = function(obj)
	{
		if (obj.value.trim() == "") return true;
		var max_length = obj.getAttribute("maxbyte");

		var classname = obj.className;
		var classes = classname.split(' ');
		for(i=0; i<classes.length; i++)
		{
			var tmps = classes[i].split(':');
			var cname = tmps[0];
			if(cname=='maxbyte')
			{
				max_length = tmps[1];
			}
		}

		if (obj.value.get_string_byte_length() > max_length) return this.invalid(obj, "maxbyte", max_length);
		return true;
	}
	/*
	* ÄÁÆ®·Ñ¿¡ ÀÔ·ÂµÈ °©Àº ÀÌ¸ÞÀÏ Çü½Ä¿¡ ¸Â¾Æ¾ß ÇÑ´Ù.
	*/
	Validator.prototype.check_email = function(obj)
	{
		if (obj.value.trim() == "") return true;
		var regEmail = new RegExp("([xA1-xFEa-z0-9_-]+@[xA1-xFEa-z0-9-]+\.[a-z0-9-]+)","gi");
		//var filter=/^(\w+(?:\.\w+)*)@((?:\w+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
		if (!regEmail.test(obj.value.trim())) return this.invalid(obj, "email");
		return true;
	}
	/*
	* ÄÁÆ®·Ñ¿¡ ÀÔ·ÂµÈ °©Àº URL Çü½Ä¿¡ ¸Â¾Æ¾ß ÇÑ´Ù.
	*/
	Validator.prototype.check_url = function(obj)
	{
		if (obj.value.trim() == "") return true;
		var regURL = new RegExp("(http|https|ftp|telnet|news|irc)://([-/.a-zA-Z0-9_~#%$?&=:200-377();|°¡-ÆR]+)","gi");
		if (!regURL.test(obj.value.trim())) return this.invalid(obj, "url");
		return true;
	}
	/*
	* ÄÁÆ®·Ñ¿¡ ÀÔ·Â °¡´ÉÇÑ Á¤±Ô½ÄÀ» Ã¼Å©ÇÑ´Ù.
	*/
	Validator.prototype.check_reg = function(obj)
	{
		if (obj.value.trim() == "") return true;
		var reg_str = obj.getAttribute("reg");

		var classname = obj.className;
		var classes = classname.split(' ');
		for(i=0; i<classes.length; i++)
		{
			var tmps = classes[i].split(':');
			var cname = tmps[0];
			if(cname=='reg')
			{
				reg_str = tmps[1];
			}
		}

		var reg = new RegExp(reg_str, "g");
		if (!reg.test(obj.value.trim())) return this.invalid(obj, "reg", reg_str);
		return true;
	}
	/*
	* ÄÁÆ®·Ñ¿¡ ÀÔ·ÂÇÑ °ªÀÌ ÇÚµåÆù ¹øÈ£ Çü½Ä¿¡ ¸Â´ÂÁö °Ë»çÇÑ´Ù.
	*/
	Validator.prototype.check_mobile = function(obj)
	{
		if (obj.value.trim() == "") return true;
		var reg = new RegExp("^01[016789]\-[0-9]{3,4}\-[0-9]{4}$", "g");
		if (!reg.test(obj.value.trim())) return this.invalid(obj, "mobile");
		return true;
	}
	/*
	* Ã¼Å© ¹Ú½ºÀÇ ÃÖ¼Ò ¼±ÅÃ Ç×¸ñÀ» Á¦ÇÑÇÑ´Ù.
	*/
	Validator.prototype.check_min_select = function(obj)
	{
		var name = obj.name;
		var check_count = 0;
		var min_check = obj.getAttribute("minselect");

		var classname = obj.className;
		var classes = classname.split(' ');
		for(i=0; i<classes.length; i++)
		{
			var tmps = classes[i].split(':');
			var cname = tmps[0];
			if(cname=='minselect')
			{
				min_check = tmps[1];
			}
		}

		var els = this.form.elements;

		for (var i=0; i<els.length; i++)
		{
			var el = els[i];
			if (el.name == name)
			{
				if (el.checked) check_count++;
			}
		}
		if (check_count < min_check) return this.invalid(obj, "minselect", min_check);
		return true;
	}
	/*
	* Ã¼Å© ¹Ú½ºÀÇ ÃÖ´ë ¼±ÅÃ Ç×¸ñÀ» Á¦ÇÑÇÑ´Ù.
	*/
	Validator.prototype.check_max_select = function(obj)
	{
		var name = obj.name;
		var check_count = 0;
		var max_check = obj.getAttribute("maxselect");

		var classname = obj.className;
		var classes = classname.split(' ');
		for(i=0; i<classes.length; i++)
		{
			var tmps = classes[i].split(':');
			var cname = tmps[0];
			if(cname=='maxselect')
			{
				max_check = tmps[1];
			}
		}

		var els = this.form.elements;

		for (var i=0; i<els.length; i++)
		{
			var el = els[i];
			if (el.name == name)
			{
				if (el.checked) check_count++;
			}
		}
		if (check_count > max_check) return this.invalid(obj, "maxselect", max_check);
		return true;
	}
	/**
	* Æû ÄÁÆ®·Ñ¿¡ ¿¡·¯°¡ ³µÀ»¶§ ¿¡·¯¸¦ Ã³¸®
	* 
	* obj : ¿¡·¯°¡ ¹ß»ýÇÑ ÄÁÆ®·Ñ
	* mode : ¿¡·¯ °Ë»ç ¹æ¹ý
	* 
	* return : Ç×»ó false
	*/
	Validator.prototype.invalid = function(obj, mode, add1, add2)
	{
		var msg = "";
		var name = "";
		// desc attribute ·Î ÄÁÆ®·Ñ ÀÌ¸§À» ¼³Á¤, ¾øÀ¸¸é name ¼Ó¼º »ç¿ë
		if (obj != null)
		{
			name = obj.name;
			if (obj.getAttribute("desc")) name = obj.getAttribute("desc");
			if (obj.getAttribute("title"))	name = obj.getAttribute("title");
		}

		msg = obj.getAttribute("message");
		var classname = obj.className;
		var classes = classname.split(' ');
		for(i=0; i<classes.length; i++)
		{
			var tmps = classes[i].split(':');
			var cname = tmps[0];
			if(cname=='message')
			{
				msg = tmps[1];
			}
		}
		if (obj != null && msg)
		{
			msg = msg;
		}
		else
		{
			if (mode == "notnull")	// not empty
			{
				msg = "[" + name + "] ¿¡´Â ¹Ýµå½Ã ³»¿ëÀ» ÀÔ·ÂÇÏ¼Å¾ß ÇÕ´Ï´Ù.";
			}
			else if (mode == "number")
			{
				msg = "[" + name + "] ¿¡´Â ¼ýÀÚ¸¸ ÀÔ·ÂÇÏ¼Å¾ß ÇÕ´Ï´Ù.";
			}
			else if (mode == "range")
			{
				msg = "[" + name + "] ÀÇ °ªÀº " + add1 + " ~ " + add2 + " »çÀÌÀÇ °ªÀÌ¾î¾ß ÇÕ´Ï´Ù.";
			}
			else if (mode == "min")
			{
				msg = "[" + name + "] ÀÇ °ªÀº " + add1 + "º¸´Ù ÀÛÀ» ¼ö ¾ø½À´Ï´Ù.";
			}
			else if (mode == "max")
			{
				msg = "[" + name + "] ÀÇ °ªÀº " + add1 + "º¸´Ù Å¬ ¼ö ¾ø½À´Ï´Ù.";
			}
			else if (mode == "alphanum")
			{
				msg = "[" + name + "] ¿¡´Â ¿µ¹®°ú ¼ýÀÚ¸¸ ÀÔ·ÂÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.(°ø¹éÀÌ Æ÷ÇÔµÉ ¼ö ¾ø½À´Ï´Ù.)";
			}
			else if (mode == "alpha")
			{
				msg = "[" + name + "] ¿¡´Â ¿µ¹®¸¸ ÀÔ·ÂÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.";
			}
			else if (mode == "equal")
			{
				msg = "[" + name + "] ¿Í [" + name + " È®ÀÎ] ÀÇ °ªÀº °°¾Æ¾ßÇÕ´Ï´Ù.";
			}
			else if (mode == "minlength")
			{
				msg = "[" + name + "] ¿¡ ÀÔ·ÂµÇ´Â °ªÀÌ ±æÀÌ´Â " + add1 + "ÀÚ ÀÌ»óÀÌ¾î¾ß ÇÕ´Ï´Ù.";
			}
			else if (mode == "email")
			{
				msg = "[" + name + "] ¿¡ ÀÔ·ÂÇÑ °ªÀÌ ÀÌ¸ÞÀÏ Çü½Ä¿¡ ¸ÂÁö ¾Ê½À´Ï´Ù.";
			}
			else if (mode == "url")
			{
				msg = "[" + name + "] ¿¡ ÀÔ·ÂÇÑ °ªÀÌ URL Çü½Ä¿¡ ¸ÂÁö ¾Ê½À´Ï´Ù. http:// °¡ ºüÁöÁö ¾Ê¾Ò³ª È®ÀÎÇØÁÖ¼¼¿ä";
			}
			else if (mode == "reg")
			{
				msg = "[" + name + "] ¿¡ ÀÔ·ÂÇÑ °ªÀÌ ÁöÁ¤µÈ Çü½Ä¿¡ ¸ÂÁö ¾Ê½À´Ï´Ù. ´ÙÀ½ Çü½Ä¿¡ ¸Â¾Æ¾ß ÇÕ´Ï´Ù. Format : " + add1;
			}
			else if (mode == "minselect")
			{
				msg = "[" + name + "] ¿¡ ´ëÇØ¼­ " + add1 + "°³ ÀÌ»óÀ» ¼±ÅÃÇÏ¼¼¿ä.";
			}
			else if (mode == "maxselect")
			{
				msg = "[" + name + "] ¿¡ ´ëÇØ¼­ " + add1 + "°³ ±îÁö ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù.";
			}
			else if (mode == "mobile")
			{
				msg = "[" + name + "] ¿¡´Â ÇÚµåÆù ¹øÈ£¸¸ ÀÔ·ÂÇÏ¼Å¾ß ÇÕ´Ï´Ù. ¿¹)016-1234-4567";
			}
			else if (mode == "maxbyte")
			{
				msg = "[" + name + "] ¿¡´Â " + add1 + " Bytes ±îÁö ÀÔ·ÂÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.";
			}
			else if (mode == "upper")
			{
				msg = "[" + name + "] ¿¡´Â ¿µ¾î ´ë¹®ÀÚ¸¸ ÀÔ·ÂÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.";
			}
			else if (mode == "lower")
			{
				msg = "[" + name + "] ¿¡´Â ¿µ¾î ¼Ò¹®ÀÚ¸¸ ÀÔ·ÂÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.";
			}
			else if (mode == "filename")
			{
				msg = "[" + name + "] ¿¡´Â ÆÄÀÏÀÌ¸§¸¸ ¿Ã ¼ö ÀÖ½À´Ï´Ù. ( / ' \" ( ) ~ : , < > [ ] { } * °ø¹é) µîÀº ÆÄÀÏÀÌ¸§¿¡ Æ÷ÇÔµÉ ¼ö ¾ø½À´Ï´Ù.";
			}

			///// ±âÅ¸ ¸ðµå
			else if (mode == "nouser")
			{
				msg = "[" + add1 + "] ´Â(Àº) µî·ÏµÈ »ç¿ëÀÚ°¡ ¾Æ´Õ´Ï´Ù.";
			}
			else if (mode == "nomatchpassword")
			{
				msg = "ºñ¹Ð¹øÈ£°¡ ¸ÂÁö ¾Ê½À´Ï´Ù.";
			}

			// else
			else
			{
				msg = mode;
			}
		}

		if (obj != null)
		{
			// ¿ø·¡°ªÀ¸·Î º¹¿ø
			if (obj.getAttribute("todefault")) this.toDefault(obj);
			var classname = obj.className;
			var classes = classname.split(' ');
			for(i=0; i<classes.length; i++)
			{
				var tmps = classes[i].split(':');
				var cname = tmps[0];
				if(cname=='todefault')
				{
					this.toDefault(obj);
				}
			}

			// ¹è°æ»ö º¯°æ
			if (this.is_change_bgcolor)
			{
				obj.style.backgroundColor = this.bgcolor;
			}
			// Å° ÀÔ·ÂÀÌ ÀÖÀ»¶§, ÇØ´ç ¹è°æ»öÀ¸·Î Áö¿ìµµ·Ï ÇÑ´Ù.
			// ¿¡·¯ÆÐ³Î ¼û±è
			if (this.error_pannel != false) obj.error_pannel = this.error_pannel;
			obj.onkeydown = function()
			{
				if (this.error_pannel)
				{
					this.error_pannel.style.display = 'none';
					this.error_pannel.innerHTML = "";
				}
				this.style.backgroundColor = '';
				this.onkeydown = null;
			}
			// ÄÁÆ®·Ñ¿¡ Æ÷Ä¿½º ÁÖ°í
			obj.focus();
		}
		// ¿¡·¯ Ç¥½Ã
		if (this.error_pannel != false)
		{
			this.error_pannel.style.display = 'inline';
			this.error_pannel.innerHTML = "¡Ø " + msg;
		}
		else
		{
			if (this.is_alert_error) window.alert(msg);
		}
		// property ¼³Á¤
		this.error_msg = msg;
		if (obj != null) this.error_object = obj;
		return false;
	}
	/**
	* ÄÁÆ®·ÑÀÇ °ªÀ» ¿ø·¡ °ªÀ¸·Î º¹¿ø.
	* 
	* obj : ´ë»ó ÄÁÆ®·Ñ
	*/
	Validator.prototype.toDefault = function(obj)
	{
		if (obj.type == "text")
		{
			obj.value = obj.defaultValue;
		}
	}
	/*
	* ÄÁÆ®·Ñ¿¡ ÀÔ·ÂµÈ °ªÀÌ. ¼ýÀÚÀÎÁö °Ë»ç
	*/
	Validator.prototype.is_number = function(val)
	{
		var anum = /^(\-|\+)?\d+(\.\d+)?$/;
		return anum.test(val);
	}
	/**
	* ±âÅ¸ ÇÔ¼öµé
	* from lib.validate.js by jstoy project
	*/
	String.prototype.trim = function(str) {
		str = this != window ? this : str;
		return str.ltrim().rtrim();
	}
	String.prototype.ltrim = function(str) {
		str = this != window ? this : str;
		return str.replace(/^\s+/g,"");
	}
	String.prototype.rtrim = function(str) {
		str = this != window ? this : str;
		return str.replace(/\s+$/g,"");
	}
	String.prototype.get_string_byte_length = function(Str)
	{
		Str = this != window ? this : Str;
		var add_len = 0;
		for (var i=1; i<Str.length; i++)
		{
			if ((Str.charCodeAt(i) < 0) || (Str.charCodeAt(i) > 127)) add_len = add_len + 1;
		}
		return (Str.length + add_len);
	}
}
