function FrontPage_Form1_Validator(theForm)
{

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

  var numSelected = 0;
  var i;
  for (i = 0;  i < theForm.source_language.length;  i++)
  {
    if (theForm.source_language.options[i].selected)
        numSelected++;
  }
  if (numSelected < 1)
  {
    alert("Please select at least 1 of the \"source_language\" options.");
    theForm.source_language.focus();
    return (false);
  }

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

  var numSelected = 0;
  var i;
  for (i = 0;  i < theForm.desired_languages.length;  i++)
  {
    if (theForm.desired_languages.options[i].selected)
        numSelected++;
  }
  if (numSelected < 1)
  {
    alert("Please select at least 1 of the \"desired_languages\" options.");
    theForm.desired_languages.focus();
    return (false);
  }

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

  var numSelected = 0;
  var i;
  for (i = 0;  i < theForm.additional_services.length;  i++)
  {
    if (theForm.additional_services.options[i].selected)
        numSelected++;
  }
  if (numSelected < 1)
  {
    alert("Please select at least 1 of the \"additional_services\" options.");
    theForm.additional_services.focus();
    return (false);
  }

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

  var numSelected = 0;
  var i;
  for (i = 0;  i < theForm.additional_services0.length;  i++)
  {
    if (theForm.additional_services0.options[i].selected)
        numSelected++;
  }
  if (numSelected < 1)
  {
    alert("Please select at least 1 of the \"additional_services0\" options.");
    theForm.additional_services0.focus();
    return (false);
  }

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

  var numSelected = 0;
  var i;
  for (i = 0;  i < theForm.additional_services1.length;  i++)
  {
    if (theForm.additional_services1.options[i].selected)
        numSelected++;
  }
  if (numSelected < 1)
  {
    alert("Please select at least 1 of the \"additional_services1\" options.");
    theForm.additional_services1.focus();
    return (false);
  }

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

  if (theForm.number_of_words.value.length < 2)
  {
    alert("Please enter at least 2 characters in the \"Number of Words\" field.");
    theForm.number_of_words.focus();
    return (false);
  }

  if (theForm.number_of_words.value.length > 20)
  {
    alert("Please enter at most 20 characters in the \"Number of Words\" field.");
    theForm.number_of_words.focus();
    return (false);
  }

  var checkOK = "0123456789-.,";
  var checkStr = theForm.number_of_words.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;
    }
    if (ch == ".")
    {
      allNum += ".";
      decPoints++;
    }
    else if (ch == "," && decPoints != 0)
    {
      validGroups = false;
      break;
    }
    else if (ch != ",")
      allNum += ch;
  }
  if (!allValid)
  {
    alert("Please enter only digit characters in the \"Number of Words\" field.");
    theForm.number_of_words.focus();
    return (false);
  }

  if (decPoints > 1 || !validGroups)
  {
    alert("Please enter a valid number in the \"number_of_words\" field.");
    theForm.number_of_words.focus();
    return (false);
  }

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

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

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

  var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzƒŠŒŽšœžŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ \t\r\n\f";
  var checkStr = theForm.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 \"name\" field.");
    theForm.name.focus();
    return (false);
  }

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

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

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

  var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzƒŠŒŽšœžŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ \t\r\n\f";
  var checkStr = theForm.job_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 \"job_title\" field.");
    theForm.job_title.focus();
    return (false);
  }

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

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

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

  var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzƒŠŒŽšœžŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ \t\r\n\f";
  var checkStr = theForm.company_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 \"company_name\" field.");
    theForm.company_name.focus();
    return (false);
  }

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

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

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

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

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

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

  var checkOK = "0123456789-.";
  var checkStr = theForm.phone.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;
    }
    if (ch == ".")
    {
      allNum += ".";
      decPoints++;
    }
    else
      allNum += ch;
  }
  if (!allValid)
  {
    alert("Please enter only digit characters in the \"phone\" field.");
    theForm.phone.focus();
    return (false);
  }

  if (decPoints > 1 || !validGroups)
  {
    alert("Please enter a valid number in the \"phone\" field.");
    theForm.phone.focus();
    return (false);
  }

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

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

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

  var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzƒŠŒŽšœžŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ \t\r\n\f";
  var checkStr = theForm.city.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 \"city\" field.");
    theForm.city.focus();
    return (false);
  }

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

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

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

  var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzƒŠŒŽšœžŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ \t\r\n\f";
  var checkStr = theForm.state.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 \"state\" field.");
    theForm.state.focus();
    return (false);
  }
  return (true);
}
