function valid(name, obj)
{
	var error;
	var message;
	var reg;
	for(var i=0; i<name.length; i++)
	{
		if(name[i] == 'req')
		{
			if(obj.type == 'select-one')
			{
				error = (obj.selectedIndex == 0 || obj.selectedIndex == "") ? true:false;
			}
			else
			{
				error = (obj.value == "") ? true:false;
			}
			
			if(error)
			{
				message = obj.title + " is a required field!";
			}
		}
		
		if(!error)
		{
		if(name[i] == 'anum')
		{
			reg = new RegExp("^[a-zA-Z0-9.-]+$");
			error = obj.value.match(reg) ? false:true;
			if(error)
			{
				message = obj.title + " can only contain Letters and Numbers.";
			}
		}
		}

		if(!error)
		{
		if(name[i] == 'email')
                {
                        reg = new RegExp("^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$");
			error = obj.value.match(reg) ? false:true;
			if(error)
			{
	                        message = obj.title + " is not a valid email address.";
			}
                }
		}
					
	}
	
	if(error)
	{
		showError(obj, message);
		return false;
	}
	else
	{
		removeError(obj, message);
		return true;
	}
}


function showError(obj, msg)
{
	var par =  obj.parentNode;
	var span = document.createElement("span");
	var text = document.createTextNode(msg);
	
	removeError(obj);
	span.appendChild(text);
	span.className = "error";
	par.appendChild(span);
}

function removeError(obj)
{
	var par =  obj.parentNode;
	var set = par.getElementsByTagName("span");
	if(set.length >= 1)
        {
                for(var i=0; i<set.length; i++)
                {
                        par.removeChild(set[i]);
                }
        }

}

function validate()
{
	var forms = document.getElementsByTagName("form");
	var form;
	var type;
	var obj;
	for(var j=0; j<forms.length; j++)
	{
		form = forms[j];
		form.onsubmit = function()
		{
			var obj;
			var type;
			var error;
			for(var i=0; i<this.length;i++)
			{
				obj = this[i];
                        	type = obj.type;
				var name = obj.className.split(' ');
                        	switch(type)
                        	{
                        	        case 'text':
                        	        case 'textarea':
                        	        case 'select-one':
                                        	if(!valid(name,obj) && !error)
						{
							error = true;
						}
                                        break;
                        	}
			}
			return (error == true) ? false:true;
		}
		
		for(var i=0; i<form.length;i++)
		{
			obj = form[i];
			type = obj.type;
			
			switch(type)
			{
				case 'text':
				case 'textarea':
				case 'select-one':				
					obj.onblur = function(){
						var name = this.className.split(' ');
						valid(name,this);
					}
					obj.onchange = function(){
	                                        var name = this.className.split(' ');
	                                        valid(name,this);
	                                }
					break;
			}
		}
	}
}

window.onload = function(){
	validate();
}

