// make sure that something in the option list is selected
function checkOption(elementName, labelName)
{
	var result = false;
	
	try
	{
		var element = document.getElementById(elementName);
		
		if (element)
		{
			if (element.selectedIndex > 0)
				result = true;
		}
	}
	catch (e) {}
	
	if (result == true)
	{
		setLabel(labelName, "fieldOK");
	}
	else
	{
		setLabel(labelName, "fieldProblem", "Please select an entry from the list");
	}
	
	return result;
}

function validateEmail(elementValue)
{
	var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
	return emailPattern.test(elementValue);
}

function validatePostCode(elementValue)
{
	var postCodePattern = /^[A-Pa-pR-Ur-uWwYyZz0-9][A-Ha-hK-Yk-y0-9][AaEeHhMmNnPpRrTtVvXxYy0-9]?[AaBbEeHhMmNnPpRrVvWwXxYy0-9]?\s*[0-9][AaBbD-Hd-hJjLlN-Un-uW-Zw-z]{2}|GIR\s0AA$/;
	return postCodePattern.test(elementValue);
}

function checkEmail(elementNames, labelNames)
{
	var names = elementNames.split(", ");
	var addresses = new Array(names.length);
	var addressesValid = true;
	var emailCount = names.length;
	var allSame = true;
	
	addresses[0] = document.getElementById(names[0]).value;
	addressesValid = validateEmail(addresses[0]);
	
	for (var emailCounter = 1; emailCounter < emailCount; emailCounter++)
	{
		try
		{
			addresses[emailCounter] = document.getElementById(names[emailCounter]).value;
			addressesValid = addressesValid && validateEmail(addresses[emailCounter]);
			if (addresses[emailCounter - 1] != addresses[emailCounter])
				allSame = false;
		}
		catch(e) {};
	}
	
	var labels = labelNames.split(", ");
	if (allSame && addressesValid)
	{
		setLabel(labels[0], "fieldOK");
		setLabel(labels[1], "fieldOK");
		return true;
	}
	else
	{
		setLabel(labels[0], "fieldProblem", "Please ensure that your email address is valid and both entries match");
		setLabel(labels[1], "fieldProblem", "Please ensure that your email address is valid and both entries match");
		return false;
	}
}

function checkText(elementName, minLength, labelName)
{
	try
	{
		var elementValue = document.getElementById(elementName).value;
		var trimmedValue = elementValue.replace(/^\s+|\s+$/g, '');
		if (trimmedValue.length >= minLength)
		{
			setLabel(labelName, "fieldOK");
			return true;
		}
		else
		{
			setLabel(labelName, "fieldProblem", "Your entry is too short; at least " + minLength + " characters are required");
			return false;
		}
	}
	catch(e) {}
	
	// if there's a problem, have to assume it's OK.
	setLabel(labelName, "fieldOK");
	return true;
}

function checkPostCode(elementName, labelName)
{
	try
	{
		var elementValue = document.getElementById(elementName).value;
		var trimmedValue = elementValue.replace(/^\s+|\s+$/g, '');
		if (validatePostCode(elementValue))
		{
			setLabel(labelName, "fieldOK");
			return true;
		}
		else
		{
			setLabel(labelName, "fieldProblem", "Please enter a valid post code, including a space.");
			return false;
		}
	}
	catch (e) {}
	
	// if there's a problem, have to assume it's OK.
	setLabel(labelName, "fieldOK");
	return true;
}

function checkNumeric(elementName, minLength, maxLength, startsWith, labelName)
{
//	var numeric=/(^[0]\d{9,11}$)|(^\([0]\d{2,4}\)\d{5,7}$)/; //|(^\d+\.\d+$)/
//	var numeric=/(^\d{9,11}$)|(^\(\d{2,4}\)\d{5,7}$)/; //|(^\d+\.\d+$)/
	
	var regExStartsWith = "";
	if (startsWith != "")
		for (var swCounter = 0; swCounter < startsWith.length; swCounter++)
			regExStartsWith += "[" + startsWith.substr(swCounter,1) + "]";
													   
	var numeric = new RegExp("(^" + regExStartsWith + "\\d{" + minLength + "," + maxLength + "}$)|(^\\(" + regExStartsWith + "\\d{2,4}\\)\\d{5,7}$)");
	
	try
	{
		var elementValue = document.getElementById(elementName).value;
		var trimmedValue = elementValue.replace(/^\s+|\s+$|\s/g, '');
		if (numeric.test(trimmedValue) && trimmedValue.length >= minLength)
		{
			setLabel(labelName, "fieldOK");
			return true;
		}
		else
		{
			setLabel(labelName, "fieldProblem", "Please enter a valid number" + (startsWith != "" ? " (starting with " + startsWith + ")" : ""));
			return false;
		}
	}
	catch(e) {}
}

function checkRadio(elementNames, labelName)
{
	var names = elementNames.split(", ");
	var optionList = new Array(names.length);
	var optionCount = optionList.length;
	for (var optionCounter = 0; optionCounter < optionCount; optionCounter++)
	{
		try
		{
			var element = document.getElementById(names[optionCounter]);
			if (element.checked)
			{
				setLabel(labelName, "fieldOK");
				return true;
			}
		}
		catch(e) {}
	}
	
	setLabel(labelName, "fieldProblem", "Please select an option from the list");
	return false;
}

function setLabel(labelName, labelClass, labelTitle)
{
	try
	{
		var label = document.getElementById(labelName);
		
		if (label)
		{
			label.className = labelClass;
			
			if (labelTitle != null && labelTitle != "")
				label.title = labelTitle;
			else
				label.title = "";
		}
	}
	catch(e) { alert(e.description); }
}