function ValidatorOnSubmit()
{
	var valid = true;
	var ctrlToValidate;
	var ctrlValidationFunction;
	var errorMessage = "";
	
	if ( Page_Validators == null )
		return true;

	var focusSet = false;
	
	for (var i = 0; i < Page_Validators.length; i++) {
		var validator = Page_Validators[i];
		
		if (validator == null) {
			alert("Null validator found.")
			break;
		}
		
	
		ctrlToValidateID = validator.getAttribute("ControlToValidate")
		ctrlToValidate = document.getElementById(ctrlToValidateID);
		
		if ( ctrlToValidate == null ) {
			alert("Unable to find control to validate " + ctrlToValidateID);
			return false;
		}

		validator.style.visibility = "hidden";
		validator.innerHTML = "";
		
		ctrlValidationFunction = validator.getAttribute("EvaluationFunction");
			
		if (typeof(ctrlValidationFunction) == "string")
		{
			eval("ctrlValidationFunction = " + ctrlValidationFunction + ";");
			if (!ctrlValidationFunction(ctrlToValidate))
			{
				validator.style.visibility = "visible";
				validator.style.display = "inline";
				
				var text = validator.getAttribute("Text");
				if ( text != null )
					validator.innerHTML = text;
				
				if ( !focusSet ) {
					ctrlToValidate.focus();
					focusSet = true;
				}
				
				var ctrlErrorMessage = validator.getAttribute("ErrorMessage");
				if ( ctrlErrorMessage != "" )
					errorMessage += "* " + ctrlErrorMessage + "\r\n";
				
				valid = false;			
			} else {
				validator.style.display = "none";
			}
		}
	}
	if ( errorMessage != "" ) {
		alert(errorMessage);
	}

	return valid;
}

function RequiredFieldValidatorEvaluateIsValidRadioField(radio)
{
// returns true if one of the radio buttons in the group
// with the name "radioName" is checked, false otherwise
	var oneChecked = false;
	var els = "";
	with(document.forms[0])
	{
		for(var i = 0; i < elements.length; i++)
		{
			if(elements[i].name == radio.name && elements[i].checked == true)
			{
				oneChecked = true;
				break;
			}
		}
	}	
	return oneChecked;
}


function RequiredFieldValidatorEvaluateIsValid(field)
{
	if ( field.type == "radio" || field.type == "checkbox" )
		return RequiredFieldValidatorEvaluateIsValidRadioField(field);
		
	var initalValue = field.getAttribute("InitalValue");
	if ( initalValue == null )
		initalValue = "";
		
	if (field.value == initalValue) 
	{
		// control is invalid
		return false;
	}
	// control is valid
	return true;
}

function EmailFieldValidatorEvaluateIsValid(field) {
	var emailAddress = field.value;
	
	var initalValue = field.getAttribute("InitalValue");
	if ( initalValue == null )
		initalValue = "";	
		
	if ( emailAddress == initalValue )
		return false;
	
	var foundAtSymbol = 0;
	var foundDot = 0;
	var md;

	// Go through each character in the email address.
	for (var x=0; x<emailAddress.length - 1; x++) {
		md = emailAddress.substr(x, 1);
	
		// Is the character an @ symbol?
		if (md == '@') foundAtSymbol++;
	
		// Count how many dots there are after the @ symbol.
		if (md == '.' && foundAtSymbol == 1) foundDot++;
	}

	// Is there only one @ symbol, and are there more than one dots?
	return (foundDot > 0 && foundAtSymbol == 1);
}

/*
function ValidationSubmit(ControlValidCallBack, VerifyControlsCallBack)
{
	if (VerifyControlsCallBack != null) 
	{
		var obj = VerifyControlsCallBack();
	}
	else 
	{
		var obj = Controls;
	}
	
	if (ControlsValid(obj))
	{
		if (ControlValidCallBack != null) ControlValidCallBack();
		return true;
	}
	return false;
}
*/
