//Utility function - Whitespace checker
function isBlank(str)
{
	for (var i=0; i < str.length; i++)
	{
		var c = str.charAt(i);
		if ((c != ' ') && (c != '\n') && (c != '')) return false;
	}
	return true;
}

//Utility function - display errors
function displayErrors(empties,errors)
{
	if (empties.length == 0 && errors.length == 0)
	{
		return true;
	}

	var msg = "";

	msg+="_______________________________________\n"
	msg+="The following problems were found when \n"
	msg+="attempting to submit your enquiry:\n\n"
	if (empties.length > 0)
	{
		msg+=" - Required field(s) are empty:" + empties + "\n";
	}
	if (errors.length > 0)
	{
		msg+="\n" + errors
	}

	msg+="\n_______________________________________"
	alert(msg);
	return false;
}

//Verifier for form fields
function verify(form)
{
	var eFields = "";
	var errors = "";

	for (var i=0; i < form.length; i++)
	{
		var elem = form.elements[i];
		if (((elem.type == "text") || (elem.type == "textarea")) && !elem.optional)
		{
			if ((elem.value == null) || (elem.value == "") || isBlank(elem.value))
			{
				eFields += "\n	" + elem.name;
				continue;
			}
		}

		if (elem.numeric || (elem.min != null) || (elem.max != null))
		{
			var elemVal = parseFloat(elem.value);
			if (isNaN(elemVal)
				|| ((elem.min != null) && (elemVal < elem.min))
				|| ((elem.max != null) && (elemVal > elem.max)))
			{
				errors += "- The field " + elem.name + " must be a number";
				if (elem.min != null)
				{
					errors += " that is greater than " + elem.min;
				}
				if (elem.max != null && elem.min != null)
				{
					errors += " and less than " + elem.max;
				}
				else if (elem.max != null)
				{
					errors += " that is less than " + elem.max;
				}
				errors += ".\n";
			}
		}
	}

	if (!emailAddressMatch(form))
	{
		errors += "Email addresses do not match!\n";
	}

	var wantgroup = document.getElementsByName("wantgroup");

	for (var w=0; w < wantgroup.length; w++)
	{
		if (wantgroup[w].checked)
		{
			if (wantgroup[w].value == "yes")
			{
				document.getElementById("nogroup").value = "";
				var names = document.getElementsByName("gname");
				var found = false;
				for (var n=0; n < names.length; n++)
				{
					if (names[n].checked == true)
					{
						found = true;
						document.getElementById(names[n].value).value = names[n].value;
					}
					else
					{						document.getElementById(names[n].value).value = "";
					}
				}
				if (found == false)
				{					errors += "Need to specify at least one group to contact.\n";
				}			}
			else
			{				document.getElementById("nogroup").value = "sam";
			}
			break;
		}
	}

	if (displayErrors(eFields, errors))
	{
		return true;
	}
	return false;
}

function emailAddressMatch(form)
{
	if (!form.email_address_confirmed)
	{
		return true;
	}
	if (!form.email_address)
	{
		return true;
	}
	return form.email_address_confirmed.value==form.email_address.value;
}