function validateEmail(addr)
  {
    //TEST WHETHER SUBMISSION IS A VALID SINGLE EMAIL ADDRESS
    var is_valid = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i.test(addr); //'
    
    //RETURN A VERDICT TO THE CALLING FUNCTION
    if (is_valid)
      return true;
    else return false;
  }


function validatePhone(num)
  {
    //TEST WHETHER SUBMISSION CONSISTS OF NUMBERS, DASHES, PERIODS, AND/OR PARENTHESES
    var is_valid = /^[0-9\(][0-9]{2}([0-9\.\-]|\s)[0-9\)]([0-9\)]|\s)[0-9]([0-9\.\-]|\s)?([0-9]|\s)?([0-9\-\.]|\s)?([0-9]|\s){0,4}?$/.test(num); //'
    
    //RETURN A VERDICT TO THE CALLING FUNCTION
    if (is_valid)
      return true;
    else return false;
  }
  
  
function validateNotEmpty(name)
  {
    //TEST WHETHER SUBMISSION CONTAINS ALPHANUMERIC TEXT
    var is_valid = /^\w+/.test(name);
    //alert("field validity is " + is_valid);
    
    //RETURN A VERDICT TO THE CALLING FUNCTION
    if (is_valid)
      return true;
    else return false;
  }

  
function insertWarning(field,warn_msg)
  {
    field.prev().append(" <span class='warning' style='color:red; background:yellow; font-size:75%;'>" + warn_msg + "</span>");
    
    //...SELECT THE TEXT IN THE FIELD...
    field.select();
  }

function armForms()
  {
      $('input:first').select();

      //WHEN THE FORM IS SUBMITTED...
      $('#send-button').click
        (
          function()
            {
              //REMOVE ANY EXISTING WARNINGS ABOUT INVALID INPUT
              $('.warning').remove();
              
              //ENSURE THAT EITHER EMAIL OR PHONE FIELD IS FILLED OUT
              if ($("input[name='email']").val() == '' && $("input[name='phone']").val() == '')
                {
                  insertWarning($("input[name='email']"), '<br />You must provide either<br />an email address or a phone number.');
                }
                
              //EXAMINE EACH INPUT FIELD
              $('input').each
                (
                  function ()
                    {
                      
                      //alert("evaluating the " + $(this).attr('name') + " field");
                      switch ($(this).attr('name'))
                        {
                           //ENSURE NAME FIELD IS NOT BLANK
                          case 'name':
                            if (!validateNotEmpty($(this).val())) insertWarning($(this), 'You must provide a valid name.');
                            break;
                    
                          
                          //VALIDATE THE EMAIL FIELD
                          case 'email':
                            if ($(this).val() == '') break; //OKAY FOR EMAIL TO BE BLANK
                            if (!validateEmail($(this).val())) insertWarning($(this), 'Invalid email address.  Please re-enter.');
                            break; 

                          //VALIDATE THE PHONE FIELD
                          case 'phone':
                            if ($(this).val() == '') break; //OKAY FOR PHONE TO BE BLANK
                            if (!validatePhone($(this).val())) insertWarning($(this), 'Invalid phone number.  Please re-enter.');
                            break; 
                            
                         }   
                    }
                );
                
              //IF ANY WARNING MESSAGES EXIST...
              if ($('*').is('.warning'))
                //...DON'T SUBMIT THE FORM.
                return false;
                //OTHERWISE, DO SUBMIT THE FORM.
              else;
                $('form').submit();
            }
        );
        
  }