// JavaScript Document
RegEx=
{
	Email : /^[a-zA-Z_0-9-'\+~]+(\.[a-zA-Z_0-9-'\+~]+)*@([a-zA-Z_0-9-]+\.)+[a-zA-Z]{2,7}$/,
	Alpha : /^[A-Za-z'.\s]*$/,
	AlphaNumeric : /^[A-Za-z0-9-#'.\s]*$/	
}


function validate(form_id)
{
	try {
		var form = document.getElementById(form_id)
		var children = form.elements;
		var msg="";
		
		var tab = "     - ";
		
		
		for(var i=0; i<children.length; i++)
		{
			var input = children[i];
			
			var type = input.tagName.toUpperCase();
			
			// Skip non-input elements
			if(type != 'INPUT' && type != 'SELECT') continue;
			
			var name = input.name;
			var value = input.value;
			
			
			switch(name)
			{
				case 'fistname':
					if(value.length < 1)
					{
						msg += tab+"First name is a required field.\n";
					}
					else if(!value.match(RegEx.Alpha))
					{
						msg += tab+"Your first name can only contain letters.\n";
					}
				break;
				
				case 'lastname':
					if(value.length < 1)
					{
						msg += tab+"Last name is a required field.\n";
					}
					else if(!value.match(RegEx.Alpha))
					{
						msg += tab+"Your last name can only contain letters.\n";
					}
				break;
				
				case 'email':
					if(value.length < 1)
					{
						msg += tab+"Your email address is a required field.\n";
					}
					else if(!value.match(RegEx.Email))
					{
						msg += tab+"The email address you have entered either contains invalid characters or is improperly formatted.\n";
					}
				break;
				
				case 'address':
					if(value.length < 1)
					{
						msg += tab+"Address is a required field.\n";
					}
					else if(!value.match(RegEx.AlphaNumeric))
					{
						msg += tab+"The address field can only contain letters and numbers.\n";
					}
				break;
				
				case 'city':
					if(value.length < 1)
					{
						msg += tab+"City is a required field.\n";
					}
					else if(!value.match(RegEx.Alpha))
					{
						msg += tab+"The city field can only contain letters.\n";
					}
				break;
				
				case 'province':
					if(value.length < 1)
					{
						msg += tab+"A province must be selected.\n";
					}
				break;
			}
		}
				
		if(msg.length > 0) {
			alert("The following errors were found in the form:\n"+msg);
			return false;
		}
		
		
	} catch(e) { 
		alert(e.message);
		return false;		
	}
		
	return true;
}

function getElementsByTagName(node, tagName)
{
	tagName = tagName.toUpperCase();
	
	var elements = new Array();
	
	if(node.elements)
	{
		node = node.elements;
	}
	
	for(var element in node)
	{
		if(node[element] && tagName == node[element].tagName)
		{
			elements.push(node[element]);
		}
	}
	
	return elements;
}
