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 || elementParts[3].indexOf("NR") >= 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 || elementParts[3].indexOf("NR") >= 0)
			{
				if (isNaN(elementValue))
				{
					if (errors.indexOf(elementParts[1].replace(/\_/g, " ")) == -1)
					{
						errors = errors + "Number required for " + elementParts[1].replace(/\_/g, " ") + "\n";
					}
				}
			}
		}

	}//end of loop

	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();
	}
}