

var form = {

	submit: function(f, textconfirm)
	{
		if(this.validate(f))
		{
			if(textconfirm){
				if(confirm(textconfirm)){
					f.submit();
				}
			}else
				f.submit();
		}
	},
	validate:function(f)
	{
		
		for(i=0;i<f.elements.length;i++)
		{
			var elem = f.elements[i];
			var strval = elem.getAttribute('validate');
			$(elem).removeClass('invalid');
			//alert(elem.name + "=="+ strval);
			if(strval!=null)
			{
				
				if(!this.validate_field(elem,strval))
				{
					$(elem).addClass('invalid');
					if( err_alert = elem.getAttribute('alert'))
					{
						alert(err_alert);
					}
					elem.focus();
					return false;
				}
			}
		}
		return true;
	},
	get_param:function(n,subject,deff)
	{
		var reg = new RegExp(n+"\=([\\w\-\.]+)","ig")
		if (reg.exec(subject))
		{
			if(isNaN(RegExp.$1))
				return deff;
			else
				return parseFloat(RegExp.$1);
		}
		return deff;
	},
	validate_field:function(elem,strval)
	{
		
		if(elem.tagName=='SELECT')
		{
			if(elem.selectedIndex==0) return false;
		}
		if(!elem.value.match (/\S/))
			return false;
		
		var reg = /(text|email|number)(\(+|$)/i//g
		
		if (reg.exec(strval))
		{
			switch(RegExp.$1)
			{
				case 'text':
					//alert(strval);
					var maxlen = this.get_param('maxlength',strval,2147483647);
					var minlen = this.get_param('minlength',strval,0);
					var retval = (elem.value.length >= minlen &&  elem.value.length<=maxlen);
					//alert(elem.value.length);
					if(retval)
					{
						if(elem.type=='password')
						{
							strong = this.get_param('strong',strval,0);
							if (strong==1){
								retval = elem.value.match( /\W/);
							}
						}
					}
					return retval;
				case 'number':
					if(isNaN(elem.value))return false;
					var max = this.get_param('max',strval,Number.MAX_VALUE);
					var min = this.get_param('min',strval,Number.MIN_VALUE);
					return (elem.value >= min &&  elem.value<= max);
				case 'email':
					
					var reg2 = /^[0-9a-zA-Z]+@[0-9a-zA-Z]+[\.]{1}[0-9a-zA-Z]+[\.]?[0-9a-zA-Z]+$/ 
					return reg2.test(elem.value); 
			}
		}
		return true;
	}
}

$(document).ready(function(){

	$('form').each(function()
	{
		var elem = $(this);
		this.onsubmit=function()
		{
			
			return form.validate(this);
		}
	});
	
});

