function validateform(myform)
{
	var error = false;
	var formObjs = $(myform).find(".validate");
	
	if (formObjs.length > 0)
	{
		for (i=0; i < formObjs.length; i++)
		{
			switch(formObjs[i].tagName)
			{
				case ("DL" || "UL"):
					var listObjs = formObjs[i].getElementsByTagName("input");
					if(listObjs)
					{
						var checklistvalid = false;
						for (l=0; l < listObjs.length; l++)
						{
							if(listObjs[l].checked)
							{
								checklistvalid = true;
							}
						}
						var title = getElementsByClassName(formObjs[i], "*", "listtitle")
						if(checklistvalid)
						{
							ValidEntry(title[0], true);
						}
						else
						{
							error = NotValidEntry(title[0], true);
						}
					}
				break;
				
				case "INPUT":
					switch(formObjs[i].type)
					{
						case "text":
							if(formObjs[i].value == "")
							{ 
								error = NotValidEntry(formObjs[i]);
							}
							else if(formObjs[i].name == "email" || formObjs[i].name == "mail")
							{
								if(checkEmail(formObjs[i].value))
									error = NotValidEntry(formObjs[i]);						
								else
									ValidEntry(formObjs[i]);	
							}
							else if(formObjs[i].name == "dateofbirth")
							{
								if(checkDOB(formObjs[i].value))
									error = NotValidEntry(formObjs[i]);						
								else
									ValidEntry(formObjs[i]);								
							}
							else
							{
									ValidEntry(formObjs[i]);		
							}
						break;
						
						case "checkbox":
							var title = getElementsByFor(myform, formObjs[i].id)
							if(!formObjs[i].checked)
							{
									error = NotValidEntry(title[0], true);
							}
							else
							{
									ValidEntry(title[0], true);							
							}
						break;
							
						case "password":
						
							if(formObjs[i].textLength < 6)
							{
									error = NotValidEntry(formObjs[i]);
							}
							else if(formObjs[i].name == "password2")
							{
								if(formObjs[i].value != myform.password.value)
									error = NotValidEntry(formObjs[i]);
								else
									ValidEntry(formObjs[i]);
							}
							else
							{
									ValidEntry(formObjs[i]);
							}
						break;
					}
				break;
						
				case "TEXTAREA":
					if(formObjs[i].value == "")
					{ 
						formObjs[i].style.borderColor = "#F00";
						error = true;
					}
					else
					{
							ValidEntry(formObjs[i]);
					}
				break;
						
			}
		}
	}
	
	if(error)
	{
		return false;
	}
	else
	{
		return true;
	}
}

function NotValidEntry(obj, text)
{
	if(text)
		obj.style.color = "#F00";
	else
		obj.style.borderColor = "#F00";
	return true;
}

function ValidEntry(obj, text)
{
	if(text)
		obj.style.color = "#333";
	else
	obj.style.borderColor = "#AAA";
}

function checkEmail (str) 
{
	var error = false;
	if (str == "") 
	{
	   error = true;
	}

    var emailFilter = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/ ;
    if (!(emailFilter.test(str))) 
	{ 
		error = true;
    }
    else 
	{
		//test email for illegal characters
		var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/;
		if (str.match(illegalChars))
		{
			error = true;
		}
    }
	return error;    
}

function checkDOB(str)
{
	error = false;
	if (str == "") 
	{
	   error = true;
	}
	
	var dateFilter = /^\d{1,2}\/\d{1,2}\/\d{4}$/ ;
    if (!(dateFilter.test(str))) 
	{ 
		error = true;
    }
	return error;
}

