function FrontPage_Form1_Validator(theForm)
{

	var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzƒŠŒŽšœžŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ \t\r\n\f";
	var checkStr = theForm.Title.value;
	var allValid = true;
	var validGroups = true;
	for (i = 0; i < checkStr.length; i++)
	{
		ch = checkStr.charAt(i);
		for (j = 0; j < checkOK.length; j++)
			if (ch == checkOK.charAt(j))
				break;
		if (j == checkOK.length)
		{
			allValid = false;
			break;
		}
	}
	if (!allValid)
	{
		alert("Please enter only letter and whitespace characters in the \"Title\" field.");
		theForm.Title.focus();
		return (false);
	}

	if (theForm.First_name.value == "")
	{
		alert("Please enter a value for the \"First name\" field.");
		theForm.First_name.focus();
		return (false);
	}

	var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzƒŠŒŽšœžŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ \t\r\n\f";
	var checkStr = theForm.First_name.value;
	var allValid = true;
	var validGroups = true;
	for (i = 0; i < checkStr.length; i++)
	{
		ch = checkStr.charAt(i);
		for (j = 0; j < checkOK.length; j++)
			if (ch == checkOK.charAt(j))
				break;
		if (j == checkOK.length)
		{
			allValid = false;
			break;
		}
	}
	if (!allValid)
	{
		alert("Please enter only letter and whitespace characters in the \"First name\" field.");
		theForm.First_name.focus();
		return (false);
	}

	if (theForm.Last_name.value == "")
	{
		alert("Please enter a value for the \"Last name\" field.");
		theForm.Last_name.focus();
		return (false);
	}

	if (theForm.Last_name.value.length < 2)
	{
		alert("Please enter at least 2 characters in the \"Last name\" field.");
		theForm.Last_name.focus();
		return (false);
	}

	if (theForm.Address_line_1.value == "")
	{
		alert("Please enter a value for the \"Address line 1\" field.");
		theForm.Address_line_1.focus();
		return (false);
	}

	if (theForm.Town_or_City.value == "")
	{
		alert("Please enter a value for the \"Town or City\" field.");
		theForm.Town_or_City.focus();
		return (false);
	}

	if (theForm.Country.selectedIndex < 0)
	{
		alert("Please select one of the \"Country\" options.");
		theForm.Country.focus();
		return (false);
	}

	if (theForm.Country.selectedIndex == 0)
	{
		alert("The first \"Country\" option is not a valid selection.  Please choose one of the other options.");
		theForm.Country.focus();
		return (false);
	}

	if (theForm.Postal_or_Zip_code.value == "")
	{
		alert("Please enter a value for the \"Postal or zip code\" field.");
		theForm.Postal_or_Zip_code.focus();
		return (false);
	}

	if (theForm.Postal_or_Zip_code.value.length > 10)
	{
		alert("Please enter at most 10 characters in the \"Postal or zip code\" field.");
		theForm.Postal_or_Zip_code.focus();
		return (false);
	}

	if (theForm.Email_address.value == "")
	{
		alert("Please enter a value for the \"Email address\" field.");
		theForm.Email_address.focus();
		return (false);
	}

	if (theForm.Email_address.value.length > 70)
	{
		alert("Please enter at most 70 characters in the \"Email address\" field.");
		theForm.Email_address.focus();
		return (false);
	}

	var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzƒŠŒŽšœžŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ0123456789--._@";
	var checkStr = theForm.Email_address.value;
	var allValid = true;
	var validGroups = true;
	for (i = 0; i < checkStr.length; i++)
	{
		ch = checkStr.charAt(i);
		for (j = 0; j < checkOK.length; j++)
			if (ch == checkOK.charAt(j))
				break;
		if (j == checkOK.length)
		{
			allValid = false;
			break;
		}
	}
	if (!allValid)
	{
		alert("Please enter only letter, digit and \"-._@\" characters in the \"Email address\" field.");
		theForm.Email_address.focus();
		return (false);
	}

	if (theForm.Annual_Subscription_Rate.selectedIndex < 0)
	{
		alert("Please select one of the \"Annual subscription\" options.");
		theForm.Annual_Subscription_Rate.focus();
		return (false);
	}

	if (theForm.Annual_Subscription_Rate.selectedIndex == 0)
	{
		alert("The first \"Annual subscription\" option is not a valid selection.  Please choose one of the other options.");
		theForm.Annual_Subscription_Rate.focus();
		return (false);
	}

	if (theForm.Total_Amount.value == "")
	{
		alert("Please enter a value for the \"Total_Amount\" field.");
		theForm.Total_Amount.focus();
		return (false);
	}

	var checkOK = "0123456789-";
	var checkStr = theForm.Total_Amount.value;
	var allValid = true;
	var validGroups = true;
	for (i = 0; i < checkStr.length; i++)
	{
		ch = checkStr.charAt(i);
		for (j = 0; j < checkOK.length; j++)
			if (ch == checkOK.charAt(j))
				break;
		if (j == checkOK.length)
		{
			allValid = false;
			break;
		}
	}
	if (!allValid)
	{
		alert("Please enter only digit characters in the \"Total_Amount\" field.");
		theForm.Total_Amount.focus();
		return (false);
	}

	if (theForm.Cardholder_name.value == "")
	{
		alert("Please enter a value for the \"Cardholder's name\" field.");
		theForm.Cardholder_name.focus();
		return (false);
	}

	if (theForm.Credit_card_type.selectedIndex < 0)
	{
		alert("Please select one of the \"Credit card type\" options.");
		theForm.Credit_card_type.focus();
		return (false);
	}

	if (theForm.Credit_card_type.selectedIndex == 0)
	{
		alert("The first \"Credit card type\" option is not a valid selection.  Please choose one of the other options.");
		theForm.Credit_card_type.focus();
		return (false);
	}

	if (theForm.Credit_card_number_1.value == "")
	{
		alert("Please enter a value for the \"Credit card number (part 1)\" field.");
		theForm.Credit_card_number_1.focus();
		return (false);
	}

	if (theForm.Credit_card_number_1.value.length < 3)
	{
		alert("Please enter at least 3 characters in the \"Credit card number (part 1)\" field.");
		theForm.Credit_card_number_1.focus();
		return (false);
	}

	if (theForm.Credit_card_number_1.value.length > 4)
	{
		alert("Please enter at most 4 characters in the \"Credit card number (part 1)\" field.");
		theForm.Credit_card_number_1.focus();
		return (false);
	}

	var checkOK = "0123456789-";
	var checkStr = theForm.Credit_card_number_1.value;
	var allValid = true;
	var validGroups = true;
	var decPoints = 0;
	var allNum = "";
	for (i = 0; i < checkStr.length; i++)
	{
		ch = checkStr.charAt(i);
		for (j = 0; j < checkOK.length; j++)
			if (ch == checkOK.charAt(j))
				break;
		if (j == checkOK.length)
		{
			allValid = false;
			break;
		}
		allNum += ch;
	}
	if (!allValid)
	{
		alert("Please enter only digit characters in the \"Credit card number (part 1)\" field.");
		theForm.Credit_card_number_1.focus();
		return (false);
	}

	if (theForm.Credit_card_number_2.value == "")
	{
		alert("Please enter a value for the \"Credit card number (part 2)\" field.");
		theForm.Credit_card_number_2.focus();
		return (false);
	}

	if (theForm.Credit_card_number_2.value.length < 3)
	{
		alert("Please enter at least 3 characters in the \"Credit card number (part 2)\" field.");
		theForm.Credit_card_number_2.focus();
		return (false);
	}

	if (theForm.Credit_card_number_2.value.length > 4)
	{
		alert("Please enter at most 4 characters in the \"Credit card number (part 2)\" field.");
		theForm.Credit_card_number_2.focus();
		return (false);
	}

	var checkOK = "0123456789-";
	var checkStr = theForm.Credit_card_number_2.value;
	var allValid = true;
	var validGroups = true;
	var decPoints = 0;
	var allNum = "";
	for (i = 0; i < checkStr.length; i++)
	{
		ch = checkStr.charAt(i);
		for (j = 0; j < checkOK.length; j++)
			if (ch == checkOK.charAt(j))
				break;
		if (j == checkOK.length)
		{
			allValid = false;
			break;
		}
		allNum += ch;
	}
	if (!allValid)
	{
		alert("Please enter only digit characters in the \"Credit card number (part 2)\" field.");
		theForm.Credit_card_number_2.focus();
		return (false);
	}

	if (theForm.Credit_card_number_3.value == "")
	{
		alert("Please enter a value for the \"Credit card number (part 3)\" field.");
		theForm.Credit_card_number_3.focus();
		return (false);
	}

	if (theForm.Credit_card_number_3.value.length < 3)
	{
		alert("Please enter at least 3 characters in the \"Credit card number (part 3)\" field.");
		theForm.Credit_card_number_3.focus();
		return (false);
	}

	if (theForm.Credit_card_number_3.value.length > 4)
	{
		alert("Please enter at most 4 characters in the \"Credit card number (part 3)\" field.");
		theForm.Credit_card_number_3.focus();
		return (false);
	}

	var checkOK = "0123456789-";
	var checkStr = theForm.Credit_card_number_3.value;
	var allValid = true;
	var validGroups = true;
	var decPoints = 0;
	var allNum = "";
	for (i = 0; i < checkStr.length; i++)
	{
		ch = checkStr.charAt(i);
		for (j = 0; j < checkOK.length; j++)
			if (ch == checkOK.charAt(j))
				break;
		if (j == checkOK.length)
		{
			allValid = false;
			break;
		}
		allNum += ch;
	}
	if (!allValid)
	{
		alert("Please enter only digit characters in the \"Credit card number (part 3)\" field.");
		theForm.Credit_card_number_3.focus();
		return (false);
	}

	if (theForm.Credit_card_number_4.value == "")
	{
		alert("Please enter a value for the \"Credit card number (part 4)\" field.");
		theForm.Credit_card_number_4.focus();
		return (false);
	}

	if (theForm.Credit_card_number_4.value.length < 3)
	{
		alert("Please enter at least 3 characters in the \"Credit card number (part 4)\" field.");
		theForm.Credit_card_number_4.focus();
		return (false);
	}

	if (theForm.Credit_card_number_4.value.length > 8)
	{
		alert("Please enter at most 8 characters in the \"Credit card number (part 4)\" field.");
		theForm.Credit_card_number_4.focus();
		return (false);
	}

	var checkOK = "0123456789-";
	var checkStr = theForm.Credit_card_number_4.value;
	var allValid = true;
	var validGroups = true;
	var decPoints = 0;
	var allNum = "";
	for (i = 0; i < checkStr.length; i++)
	{
		ch = checkStr.charAt(i);
		for (j = 0; j < checkOK.length; j++)
			if (ch == checkOK.charAt(j))
				break;
		if (j == checkOK.length)
		{
			allValid = false;
			break;
		}
		allNum += ch;
	}
	if (!allValid)
	{
		alert("Please enter only digit characters in the \"Credit card number (part 4)\" field.");
		theForm.Credit_card_number_4.focus();
		return (false);
	}

	if (theForm.Expiry_month.selectedIndex < 0)
	{
		alert("Please select one of the \"Expiry month\" options.");
		theForm.Expiry_month.focus();
		return (false);
	}

	if (theForm.Expiry_month.selectedIndex == 0)
	{
		alert("The first \"Expiry month\" option is not a valid selection.  Please choose one of the other options.");
		theForm.Expiry_month.focus();
		return (false);
	}

	if (theForm.Expiry_year.selectedIndex < 0)
	{
		alert("Please select one of the \"Expiry year\" options.");
		theForm.Expiry_year.focus();
		return (false);
	}

	if (theForm.Expiry_year.selectedIndex == 0)
	{
		alert("The first \"Expiry year\" option is not a valid selection.  Please choose one of the other options.");
		theForm.Expiry_year.focus();
		return (false);
	}

	if (theForm.Security_Number.value == "")
	{
		alert("Please enter a value for the \"Cardholder's name\" field.");
		theForm.Security_Number.focus();
		return (false);
	}

	if (theForm.Security_Number.value.length < 3)
	{
		alert("Please enter at least 3 characters in the \"Cardholder's name\" field.");
		theForm.Security_Number.focus();
		return (false);
	}

	if (theForm.Security_Number.value.length > 3)
	{
		alert("Please enter at most 3 characters in the \"Cardholder's name\" field.");
		theForm.Security_Number.focus();
		return (false);
	}

	var checkOK = "0123456789-";
	var checkStr = theForm.Security_Number.value;
	var allValid = true;
	var validGroups = true;
	for (i = 0; i < checkStr.length; i++)
	{
		ch = checkStr.charAt(i);
		for (j = 0; j < checkOK.length; j++)
			if (ch == checkOK.charAt(j))
				break;
		if (j == checkOK.length)
		{
			allValid = false;
			break;
		}
	}
	if (!allValid)
	{
		alert("Please enter only digit characters in the \"Cardholder's name\" field.");
		theForm.Security_Number.focus();
		return (false);
	}
	return (true);
}
