function ValidForm(frm)
{
	for (i=0; i<frm.elements.length; i++)
	{
		var obj = frm.elements[i];
		if ( (obj.getAttribute('required')=="1") || (obj.getAttribute('test')=="notempty") )
		{
			if (obj.value.length==0)
			{
				alert(obj.getAttribute('msg'));
				obj.focus()
				return(false);
			}
		}
		
		if ( (obj.value.length>0) && (obj.getAttribute('test')!=null) && (obj.getAttribute('test')!="notempty") )
		{		
			var pattern;
			if (obj.getAttribute('test')=="alphanumeric")
				pattern = /^[a-zA-Z0-9\-\.]*$/
			if (obj.getAttribute('test')=="domain")
				pattern = /^[a-zA-Z0-9\-]*$/
			if (obj.getAttribute('test')=="numeric")
				pattern = /^[0-9]*$/
			if (obj.getAttribute('test')=="directory")
				pattern = /^[a-zA-Z0-9\-\.\/]*$/
			if (obj.getAttribute('test')=="url")
				pattern = /^(http|https|ftp)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?\/?([a-zA-Z0-9\-\._\?\,\'\/\\\+&%\$#\=~])*$/
			if (obj.getAttribute('test')=="email")
				pattern = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
			if (obj.getAttribute('test')=="ip")
				pattern = /^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/
			if (!pattern.test(obj.value))
			{
				alert(obj.getAttribute('msg'));
				obj.focus();
				return(false);
			}
			if (obj.getAttribute('test')=="numeric")
			{
				if (obj.getAttribute('min')!=null)
					if (obj.value<obj.getAttribute('min'))
					{
						if (obj.getAttribute('msgborne')!=null)
							alert(obj.getAttribute('msgborne'))
						else
							alert(obj.getAttribute('msg'))
						return(false);
					}
				if (obj.getAttribute('max')!=null)
					if (obj.value>obj.getAttribute('max'))
					{
						if (obj.getAttribute('msgborne')!=null)
							alert(obj.getAttribute('msgborne'))
						else
							alert(obj.getAttribute('msg'))
						return(false);
					}
			}
		}
	}
	return (true);
}