function isEmailAddress(val)
{
	if (val.match(/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+/))
	{
		return true;
	}
	else
	{
		return false;
	}	
}

function checkform(form)
{
	var elementParts = new Array();
	var processedList = "";
	var errors=''; 
	
	for(i = 0; i < form.length; i++)
	{
		var form_elem = form[i], re;
		var elementValue = "";
		
		switch (form_elem.type)
		{
			case "checkbox" : 
				if (form_elem.checked == false) { elementValue = ""; } else { elementValue = form_elem.checked; }  break;
			
			case "select-one" : 
				if (form_elem.selectedIndex == 0) 
				{ 
					elementValue = ""; 
				} 
				else 
				{ 
					elementValue = form_elem.options[form_elem.selectedIndex].value; 
				} 
				break;
			
			case "text" : 
				elementValue = form_elem.value; break;
			
			case "textarea" : 
				elementValue = form_elem.value; break;			
				
			case "radio" : 
				if (form_elem.checked == false) { elementValue = ""; } else { elementValue = form_elem.value; }  break;
				
			default: elementValue = form_elem.value; break;
		}
		
		//re = /\[\]/gi;
		//form_elem.name = form_elem.name.replace(re, "");
		elementParts = form_elem.name.split("--");
		
		if (elementParts.length == 4)
		{
			if (elementParts[3].indexOf("R") >= 0)
			{
				if (elementValue == '')
				{
					if (errors.indexOf(elementParts[1].replace(/\_/g, " ")) == -1 && processedList.indexOf(elementParts[1]) == -1)
					{
						errors = errors + elementParts[1].replace(/\_/g, " ") + " is required.\n";
					}
				}
				else				
				{
					processedList += elementParts[1];
					eval ('var regexp = /' + elementParts[1].replace(/\_/g, " ") + ' is required.\\n/gi;');
					errors = errors.replace(regexp, "");
				}
			}
			
			if (elementParts[3].indexOf("E") >= 0)
			{
				if (!isEmailAddress(elementValue))
				{
					if (errors.indexOf(elementParts[1].replace(/\_/g, " ")) == -1)
					{				
						errors = errors + "Invalid email: " + elementParts[1].replace(/\_/g, " ") + "\n";
					}
				}
			}
			
			if (elementParts[3].indexOf("N") >= 0)
			{
				if (isNaN(elementValue))
				{
					if (errors.indexOf(elementParts[1].replace(/\_/g, " ")) == -1)
					{				
						errors = errors + "Number required for " + elementParts[1].replace(/\_/g, " ") + "\n";
					}
				}
			}
		}
	}
	
	if (errors != '')
	{
		alert("Incomplete or invalid information:\n\n" + errors);
	}

	document.returnValue = (errors == '');
}

// checks/submits a form and disables the trigger element is all is ok;
function doSend(el,theForm,inStr)
{
	checkform(theForm);
	if (document.returnValue)
	{
		if (inStr) el.innerHTML =   inStr + " ...";
		el.disabled = true;
		theForm.submit();
	}
}