function FrontPage_Form1_Validator(theForm)
{

  if (theForm.realname.value == "")
  {
    alert("Please enter a value for the \"Full Name\" field.");
    theForm.realname.focus();
    return (false);
  }

  if (theForm.realname.value.length < 3)
  {
    alert("Please enter at least 3 characters in the \"Full Name\" field.");
    theForm.realname.focus();
    return (false);
  }

  var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzƒŠŒŽšœžŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ0123456789- \t\r\n\f";
  var checkStr = theForm.realname.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 whitespace characters in the \"Full Name\" field.");
    theForm.realname.focus();
    return (false);
  }

  if (theForm.email.value == "")
  {
    alert("Please enter a value for the \"E-mail Address\" field.");
    theForm.email.focus();
    return (false);
  }

  if (theForm.email.value.length < 6)
  {
    alert("Please enter at least 6 characters in the \"E-mail Address\" field.");
    theForm.email.focus();
    return (false);
  }

  var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzƒŠŒŽšœžŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ0123456789-@_-.";
  var checkStr = theForm.email.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 \"E-mail Address\" field.");
    theForm.email.focus();
    return (false);
  }

  if (theForm.Confirm_E_mail.value == "")
  {
    alert("Please enter a value for the \"Confirm E-mail Address\" field.");
    theForm.Confirm_E_mail.focus();
    return (false);
  }

  if (theForm.Confirm_E_mail.value.length < 6)
  {
    alert("Please enter at least 6 characters in the \"Confirm E-mail Address\" field.");
    theForm.Confirm_E_mail.focus();
    return (false);
  }

  var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzƒŠŒŽšœžŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ0123456789-@_-.";
  var checkStr = theForm.Confirm_E_mail.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 \"Confirm E-mail Address\" field.");
    theForm.Confirm_E_mail.focus();
    return (false);
  }

  if (theForm.Dialing_code.value == "")
  {
    alert("Please enter a value for the \"Dialing Code\" field.");
    theForm.Dialing_code.focus();
    return (false);
  }

  if (theForm.Dialing_code.value.length < 2)
  {
    alert("Please enter at least 2 characters in the \"Dialing Code\" field.");
    theForm.Dialing_code.focus();
    return (false);
  }

  var checkOK = "0123456789-";
  var checkStr = theForm.Dialing_code.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 \"Dialing Code\" field.");
    theForm.Dialing_code.focus();
    return (false);
  }

  if (theForm.Phone_number.value == "")
  {
    alert("Please enter a value for the \"Phone Number\" field.");
    theForm.Phone_number.focus();
    return (false);
  }

  if (theForm.Phone_number.value.length < 5)
  {
    alert("Please enter at least 5 characters in the \"Phone Number\" field.");
    theForm.Phone_number.focus();
    return (false);
  }

  var checkOK = "0123456789-";
  var checkStr = theForm.Phone_number.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 \"Phone Number\" field.");
    theForm.Phone_number.focus();
    return (false);
  }

  if (theForm.Country.selectedIndex < 0)
  {
    alert("Please select one of the \"Country of Residence\" options.");
    theForm.Country.focus();
    return (false);
  }

  if (theForm.Country.selectedIndex == 0)
  {
    alert("The first \"Country of Residence\" option is not a valid selection.  Please choose one of the other options.");
    theForm.Country.focus();
    return (false);
  }

  if (theForm.Number_of_divers.value == "")
  {
    alert("Please enter a value for the \"Number of Divers\" field.");
    theForm.Number_of_divers.focus();
    return (false);
  }

  if (theForm.Number_of_divers.value.length < 1)
  {
    alert("Please enter at least 1 characters in the \"Number of Divers\" field.");
    theForm.Number_of_divers.focus();
    return (false);
  }

  var checkOK = "0123456789-";
  var checkStr = theForm.Number_of_divers.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 \"Number of Divers\" field.");
    theForm.Number_of_divers.focus();
    return (false);
  }

  if (theForm.Number_of_non_divers.value == "")
  {
    alert("Please enter a value for the \"Number of Non Divers\" field.");
    theForm.Number_of_non_divers.focus();
    return (false);
  }

  if (theForm.Number_of_non_divers.value.length < 1)
  {
    alert("Please enter at least 1 characters in the \"Number of Non Divers\" field.");
    theForm.Number_of_non_divers.focus();
    return (false);
  }

  var checkOK = "0123456789-";
  var checkStr = theForm.Number_of_non_divers.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 \"Number of Non Divers\" field.");
    theForm.Number_of_non_divers.focus();
    return (false);
  }

  if (theForm.Tour_required.selectedIndex < 0)
  {
    alert("Please select one of the \"Tour Required\" options.");
    theForm.Tour_required.focus();
    return (false);
  }

  if (theForm.Tour_required.selectedIndex == 0)
  {
    alert("The first \"Tour Required\" option is not a valid selection.  Please choose one of the other options.");
    theForm.Tour_required.focus();
    return (false);
  }

  if (theForm.Tour_day.selectedIndex < 0)
  {
    alert("Please select one of the \"Preferred Tour Day\" options.");
    theForm.Tour_day.focus();
    return (false);
  }

  if (theForm.Tour_day.selectedIndex == 0)
  {
    alert("The first \"Preferred Tour Day\" option is not a valid selection.  Please choose one of the other options.");
    theForm.Tour_day.focus();
    return (false);
  }

  if (theForm.Tour_month.selectedIndex < 0)
  {
    alert("Please select one of the \"Preferred Tour Month\" options.");
    theForm.Tour_month.focus();
    return (false);
  }

  if (theForm.Tour_month.selectedIndex == 0)
  {
    alert("The first \"Preferred Tour Month\" option is not a valid selection.  Please choose one of the other options.");
    theForm.Tour_month.focus();
    return (false);
  }

  if (theForm.Tour_year.selectedIndex < 0)
  {
    alert("Please select one of the \"Preferred Tour Year\" options.");
    theForm.Tour_year.focus();
    return (false);
  }

  if (theForm.Tour_year.selectedIndex == 0)
  {
    alert("The first \"Preferred Tour Year\" option is not a valid selection.  Please choose one of the other options.");
    theForm.Tour_year.focus();
    return (false);
  }

  if (theForm.Payment_method.selectedIndex < 0)
  {
    alert("Please select one of the \"Payment Method\" options.");
    theForm.Payment_method.focus();
    return (false);
  }

  if (theForm.Payment_method.selectedIndex == 0)
  {
    alert("The first \"Payment Method\" option is not a valid selection.  Please choose one of the other options.");
    theForm.Payment_method.focus();
    return (false);
  }
  
  if (theForm.SpamCheck.value == "")
  {
    alert("Please enter the number to your right");
    theForm.SpamCheck.focus();
    return (false);
  }
  
  return (true);
}
