var IsValidMsg=  {
		ID	: [/^[a-zA-Z0-9_]{1}[a-zA-Z0-9_]{3,12}$/,"¿µ¹®+¼ýÀÚÇü½ÄÀÇ 4~12ÀÚ¸®","disabled"],
		PWD : [/^[a-zA-Z0-9_]{1}[a-zA-Z0-9_]{3,12}$/,"¿µ¹®+¼ýÀÚÇü½ÄÀÇ 4~12ÀÚ¸®","disabled"],
		EMAIL	: [/^[a-zA-Z]{1,}[0-9a-zA-Z_-]{1,}[.]{0,1}[0-9a-zA-Z_-]{1,}[@][0-9a-zA-Z_-]{1,}[.][0-9a-zA-Z_-]{1,}[.]*[0-9a-zA-Z_-]{1,}$/,"0000@000.com","disabled"],
		TEL : [/^0\d{1,3}[-]{1}\d{3,4}[-]{1}\d{4}$/,"000-0000-0000","disabled"],
		HP : [/^01[016789][-]{1}\d{3,4}[-]{1}\d{4}$/,"000-0000-0000","disabled"],
		STR : ["","","active"],
		RADIO : ["","","auto"],
		CHECKBOX : ["","","auto"],
		FILE : ["","","auto"],
		SELECT : ["","","auto"],
		ALPHA : [/^[A-Za-z]{1,}$/,"A~z ¾ËÆÄºª¸¸ ÀÔ·Â°¡´É","disabled"],
		ESTR : [/^[\w|!@#$%^&*\(\)\?\<\>\[\]\{\}\_\-\:\,\.\/.0-9a-zA-Z_-]{0,}(\b.*\b|){0,}$/,"¿µ¹®,¼ýÀÚ,Æ¯¼ö¹®ÀÚ","disabled"],
		NUM : [/^\d{1,}$/,"0~9 ¼ýÀÚ¸¸ ÀÔ·Â°¡´É","disabled"],
		DATE : [/^(19|20)\d{2}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[0-1])$/,"0000-00-00","disabled"],
		MDATE : ["","","disabled"],
		POST : [/^[0-9]{3}[-]{1}[0-9]{3}$/,"","disabled"]

	}



String.prototype.IsValid = function(TY,NNull,MaxLen,MinLen) {

	thisStr = this.replace(/^\s*(\b.*\b|)\s*$/, "$1");




	if(NNull == "true" && thisStr == "")
		return false;

	if(NNull == "false" && thisStr == "")
		return true;


	if(TY == undefined)
		return true;

	var ExpStr = "";
	try{
	var ExpStr = IsValidMsg[TY][0];
	}catch(e0){}

	if(MinLen != "")
	{
		if (thisStr.length < MinLen  )
			return false;
	}
	if(MaxLen != "")
	{
		if ( thisStr.length > MaxLen )
			return false;
	}


	if(ExpStr == "")
		return true;

	return ExpStr.test(thisStr);

}
var IsValidFunction = function ()
{
	var rtnValue = { rtn:false ,msg:''};
	var IsValidStr = getProperty(this,"IsValidStr","");
	var NNullStr = getProperty(this,"NNull","");
	var MaxL = getProperty(this,"MaxL","");
	var MinL = getProperty(this,"MinL","");
	var LabelStr = getProperty(this,"LabelStr","Á¤º¸ÀÔ·Â");
	var FORNM = getProperty(this,"FORNM","");
	var ForObj;
	if (FORNM != "")
		ForObj = document.all[FORNM];

	if(typeof ForObj == "object")
	{
		if(getProperty(ForObj,"type","") == "checkbox" || getProperty(ForObj,"type","") == "radio" )
		{
			var FORFN = getProperty(this,"FORFN","checked");
			var FORVL = getProperty(this,"FORVL","true");
 
			if(eval("ForObj." + FORFN) != eval(FORVL))
			{
				rtnValue.rtn = true;
				rtnValue.msg =  "";
				return rtnValue;
			}
		}
		else
		{
			var FORFN = getProperty(this,"FORFN","value");
			var FORVL = getProperty(this,"FORVL",this.value);
			if(eval("ForObj." + FORFN) != FORVL)
			{
				rtnValue.rtn = true;
				rtnValue.msg =  "";
				return rtnValue;
			}
		}
	}

	var thisStr = this.value.replace(/^\s*(\b.*\b|)\s*$/, "$1");

	if(IsValidStr =="CHECKBOX" || IsValidStr =="RADIO" )
	{
						
		if(NNullStr == "false")
		{
			rtnValue.rtn = true;
			rtnValue.msg =  "";
			return rtnValue;
		}
		var ObjArray = this.form[this.name];
		var ObjArrayCkcount = 0;
		var objCount = (typeof ObjArray.length == "number") ? ObjArray.length : 1;


		if(objCount > 1)
		{
			for(var J= 0;J< objCount;J++)
			{
				if(ObjArray[J].checked)
					ObjArrayCkcount++;
			}
		}
		else
		{
				if(ObjArray.checked)
					ObjArrayCkcount++;
		}
		if(MinL != "")
		{
			if(ObjArrayCkcount < MinL)
			{
				rtnValue.rtn = false;
				rtnValue.msg =  LabelStr + "¸¦(À») Á¤È®È÷ ÀÔ·ÂÇÏ¼¼¿ä\n\n " + MinL  + "°³ ÀÌ»óÀ¸·Î ¼±ÅÃ ÇÏ¼Å¾ßÇÕ´Ï´Ù.\n" ;
				return rtnValue;
			}
		}
		if(MaxL != "")
		{
			if(ObjArrayCkcount > MaxL)
			{
				rtnValue.rtn = false;
				rtnValue.msg =  LabelStr + "¸¦(À») Á¤È®È÷ ÀÔ·ÂÇÏ¼¼¿ä\n\n " + MaxL  + "°³ ÀÌÇÏ·Î ¼±ÅÃ ÇÏ¼Å¾ßÇÕ´Ï´Ù.\n" ;
				return rtnValue;
			}
		}
		if(MinL == "")
		{
			if(ObjArrayCkcount == 0)
			{
				rtnValue.rtn = false;
				rtnValue.msg =  LabelStr + "¸¦(À») ¼±ÅÃ ÇÏ¼Å¾ßÇÕ´Ï´Ù." ;
				return rtnValue;
			}
		}
		rtnValue.rtn = true;
		rtnValue.msg =  "";
		return rtnValue;
	}
	else
	{
		if(NNullStr == "true" && thisStr == "")
		{
			rtnValue.rtn = false;
			rtnValue.msg =  LabelStr + "¸¦(À») Á¤È®È÷ ÀÔ·ÂÇÏ¼¼¿ä\n\n" + LabelStr + "´Â(Àº) ÇÊ¼ö ÀÔ·Â»çÇ×ÀÔ´Ï´Ù.\n" ;
			return rtnValue;
		}

		if(NNullStr == "false" && thisStr == "")
		{
			rtnValue.rtn = true;
			rtnValue.msg =  "";
			return rtnValue;
		}

		if(IsValidStr == "")
		{
			rtnValue.rtn = true;
			rtnValue.msg =  "";
			return rtnValue;
		}

		var ExpStr = "";
		try{
		var ExpStr = IsValidMsg[IsValidStr][0];
		}catch(e0){}
		if(IsValidStr != "DATE" && IsValidStr != "MDATE" && IsValidStr != "RADIO" && IsValidStr != "CHECKBOX" )
		{
			if(MinL != "")
			{
				if (thisStr.length < MinL  )
				{
					rtnValue.rtn = false;
					rtnValue.msg =  LabelStr + "¸¦(À») Á¤È®È÷ ÀÔ·ÂÇÏ¼¼¿ä\n\n " + MinL  + "ÀÚ¸® ÀÌ»óÀ¸·Î ÀÔ·Â ÇÏ¼Å¾ßÇÕ´Ï´Ù.\n" ;
					return rtnValue;
				}
			}
			if(MaxL != "")
			{
				if ( thisStr.length > MaxL )
				{
					rtnValue.rtn = false;
					rtnValue.msg =  LabelStr + "¸¦(À») Á¤È®È÷ ÀÔ·ÂÇÏ¼¼¿ä\n\n " + MaxL  + "ÀÚ¸® ÀÌÇÏ·Î ÀÔ·Â ÇÏ¼Å¾ßÇÕ´Ï´Ù.\n" ;
					return rtnValue;
				}
			}
		}

		if(ExpStr == "")
		{
			rtnValue.rtn = true;
			rtnValue.msg = "" ;
			return rtnValue;
		}

		if(!ExpStr.test(thisStr))
		{
			if(this.tagName == "SELECT")
				alertStr = LabelStr + "¸¦(À») Á¤È®È÷ ¼±ÅÃÇÏ¼¼¿ä\n" ;
			else
				alertStr = LabelStr + "¸¦(À») Á¤È®È÷ ÀÔ·ÂÇÏ¼¼¿ä\n" ;

			if(IsValidMsg[IsValidStr][1] != "")
				alertStr += "\nex)" + IsValidMsg[IsValidStr][1] +"\n" ;


			if(( MaxL != "" || MinL != "" ) && IsValidStr != "DATE" && IsValidStr != "MDATE" && IsValidStr != "RADIO" && IsValidStr != "CHECKBOX")
			{
				if(MaxL == MinL)
					alertStr += "\nÀÔ·ÂÁ¦ÇÑÀº" +  MaxL +"ÀÚ¸®\n" ;
				else
					alertStr += "\nÀÔ·ÂÁ¦ÇÑÀº " + MinL  + "~" +  MaxL +"ÀÚ¸®\n" ;
			}
			else if(( MaxL != "" || MinL != "" ) && (IsValidStr == "DATE" || IsValidStr == "MDATE"))
			{
				if(MaxL == MinL)
					alertStr += "\n³¯Â¥ ¼±ÅÃÀº " +  MaxL +"°³ °¡´ÉÇÕ´Ï´Ù.\n" ;
				else
					alertStr += "\n³¯Â¥ ¼±ÅÃÀº " + MinL  + "~" +  MaxL +"±îÁö °¡´ÉÇÕ´Ï´Ù.\n" ;
			}
			else if(( MaxL != "" || MinL != "" ) && (IsValidStr == "RADIO" || IsValidStr == "CHECKBOX"  ))
			{
				if(MaxL == MinL)
					alertStr += "¼±ÅÃÀº " + MinL  + "~" +  MaxL +"±îÁö °¡´ÉÇÕ´Ï´Ù.\n" ;
				else
					alertStr += "¼±ÅÃÀº " +  MaxL +"¸¦ ¼±ÅÃÇÏ¼Å¾ß ÇÕ´Ï´Ù.\n" ;
			}
			if (NNullStr == "true")
				alertStr += "\n" + LabelStr + "´Â(Àº) ÇÊ¼ö ÀÔ·Â»çÇ×ÀÔ´Ï´Ù.\n" ;

			rtnValue.rtn = false;
			rtnValue.msg = alertStr ;
			return rtnValue;
		}
		else
		{
			rtnValue.rtn = true;
			rtnValue.msg = "" ;
			return rtnValue;
		}
	}
}


function SetIsValid()
{
	var isreadOnly=false;
	for (var j =0; j < document.forms.length ;j++ )
	{

		var f = document.forms[j];
		for(var i =0; i< f.all.length;i++)
		{
			var obj = f.all[i];
			if(typeof obj == "object")
			{

				var MaxL = getProperty(obj,"MaxL","");
				if (MaxL != "")
				setProperty(obj,"maxLength",MaxL);


				
				if(getProperty(obj,"IsValidStr","") != "")
				{
					setProperty(obj,"IsValid",IsValidFunction);
					isreadOnly =  obj.readOnly;

					if (isreadOnly)
						obj.readOnly = false;

					obj.style.imeMode=IsValidMsg[getProperty(obj,"IsValidStr","")][2];
					if (isreadOnly)
						obj.readOnly = true;
					if(getProperty(obj,"IsValidStr","") == "MDATE")
					{
						obj.readOnly = true;
						try{
						obj.attachEvent("onclick",MclickCalendars);
						}catch(e){}
					}
					if(getProperty(obj,"IsValidStr","") == "DATE")
					{
						try{
						obj.attachEvent("onclick",clickCalendars);
						}catch(e){}

						try{
						obj.attachEvent("onkeydown",function (){
							var Ob = event.srcElement;
							var kc = event.keyCode;

							if ((kc>=48) && (kc<=57) )
								event.returnValue = true;
							else if ((kc==46) || (kc==8)  || (kc==189)  || (kc==109)  || (kc==9) || (kc==37) || (kc==38) || (kc==39) || (kc==40))
								event.returnValue = true;
							else
								event.returnValue = false;

							}
						);
						}catch(e){}

						returnValue = true;
					}
					if(getProperty(obj,"IsValidStr","") == "NUM")
					{
						try{
						obj.attachEvent("onkeydown",function (){

							var Ob = event.srcElement;
							var kc = event.keyCode;

							if ((kc>=48) && (kc<=57) )
								event.returnValue = true;
							else if ((kc==46) || (kc==8)  || (kc==9) || (kc==37) || (kc==38) || (kc==39) || (kc==40) || (kc==189)  || (kc==109))
								event.returnValue = true;
							else if ((kc>=96) && (kc<=105) )
								event.returnValue = true;
							else
								event.returnValue = false;

							}
						);
						}catch(e){}
						returnValue = true;
					}
					if(getProperty(obj,"IsValidStr","") == "ALPHA")
					{
						try{
						obj.attachEvent("onkeydown",function (){
						try{
							var Ob = event.srcElement;
							var kc = event.keyCode;

							if ((kc>=65) && (kc<=90) )
								event.returnValue = true;
							else if ((kc==46) || (kc==8)  || (kc==9) || (kc==37) || (kc==38) || (kc==39) || (kc==40) || (kc==189)  || (kc==109))
								event.returnValue = true;
							else
								event.returnValue = false;
							}catch(e){}
							}
						);
						}catch(e){}
						returnValue = true;
					}

					obj.attachEvent("onmouseover",function (){
						try{
						var Ob = event.srcElement;
						if (getProperty(Ob,"IsValidStr","") != "")
						{
							Ob.style.FocusborderColor= Ob.style.borderColor;
							Ob.style.FocusborderStyle= Ob.style.borderStyle;
							Ob.style.borderColor= "#8787E9";
							Ob.style.borderStyle= "dashed";
						}
						try{
						if(getProperty(Ob,"IsValidStr","") != "DATE" || getProperty(Ob,"IsValidStr","") != "MDATE" )
							_showTooltip(Ob);
						}catch(e){}


						if(getProperty(Ob,"IsValidStr","") == "DATE")
							setProperty(Ob,"Backvalue",Ob.value);
						}catch(e){}
						returnValue = true;

					});

					obj.attachEvent("onmouseout",function (){
						var Ob = event.srcElement;
						try{
							if (getProperty(Ob,"IsValidStr","") != "")
							{
							Ob.style.borderColor= Ob.style.FocusborderColor;
							Ob.style.borderStyle= Ob.style.FocusborderStyle;
							}
						_hideTooltip();
						}catch(e){}
						returnValue = true;

					});
					obj.attachEvent("onblur",function (){
						var Ob = event.srcElement;

						try{
						if(getProperty(Ob,"IsValidStr","") == "DATE")
						invlDate();
						}catch(e){}
						returnValue = true;

					});

				}

			}
		}
	}
	returnValue = true;
}
function IsValidList(f)
{
	var IsValue;

	for(var i =0; i< f.all.length;i++)
	{
		if(f.all[i].IsValid != undefined)
		{
			IsValue = f.all[i].IsValid();
			if(!IsValue.rtn)
			{
				alert(IsValue.msg);
				try{
				f.all[i].focus();
				}catch(e){}
				return false;
			}
		}
	}
	return true;
}
window.attachEvent("onload",SetIsValid);