function has_id(id){try{var tmp=document.getElementById(id).value;}catch(e){return false;}
return true;}
function has_name(nm){try{var tmp=cfrm.nm.type;}catch(e){return false;}
return true;}
function $$(id){if(!has_id(id)&&!has_name(id)){alert("Field "+id+" does not exist!\n Form validation configuration error.");return false;}
if(has_id(id)){return document.getElementById(id).value;}else{return;}}
function $val(id){return document.getElementById(id);}
function trim(id)	{
	$val(id).value=$val(id).value.replace(/^\s+/,'').replace(/\s+$/,'');
}

var required= {
				field:[],
				add:function(name,type,mess)	{
					this.field[this.field.length]=[name,type,mess];
				},
				out:function()	{
					return this.field;
				},
				clear:function()	{
					this.field=[];
				}
			};
var validate=	{
		check:function(cform)	{
			var error_message='Please fix the following errors:\n\n';
			var mess_part='';
			var to_focus='';
			var tmp=true;
			for(var i=0;i<required.field.length;i++)	{
				if(	this.checkit(required.field[i][0],required.field[i][1],cform) )	{
				
				}else	{
					error_message=error_message+required.field[i][2]+' is invalid\n';
					if(	has_id(required.field[i][0])&&
						to_focus.length===0)	{
						to_focus=required.field[i][0];
					}
					tmp=false;
				}
			}
			if(!tmp)	{
				alert(error_message);
			}
			if(to_focus.length>0)	{	
				document.getElementById(to_focus).focus();
			}
			return tmp;
		},
		checkit:function(cvalue,ctype,cform)	{
			if(ctype=="NOT_EMPTY")	{
				if(this.trim($$(cvalue)).length<1)	{
					return false;
				}	else	{
					return true;
				}
			}
			else if(ctype=="EMAIL")	{
				exp=/^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
				if($$(cvalue).match(exp)==null)	{
					return false;
				}
				else	{
					return true;
				}
			}
		},
		trim:function(s)	{
			if(s.length>0)	{
				return s.replace(/^\s+/,'').replace(/\s+$/,'');
			}
			else	{
				return s;
			}
		}
	};
