function ValidateRequiredField(fieldRef)
{
  switch (fieldRef.tagName.toLowerCase())
  {
  case "input":
    {
      switch(fieldRef.type)
      {
      case "text":
      case "password":
      case "file":
        {
          if (fieldRef.value != "")
          {
            return true;
          }
        }
        break;

      case "checkbox":
        {
          if (fieldRef.checked)
          {
            return true;
          }
        }
        break;

      case "radio":
        {
          var radioBtnGroup = eval("fieldRef.form." + fieldRef.name);

          for (var i = 0; i < radioBtnGroup.length; i++)
          {
            if (radioBtnGroup[i].checked)
            {
              return true;
            }
          }
        }
        break;
      }
    }
    break;

  case "select":
  case "textarea":
    {
      if (fieldRef.value != "")
      {
        return true;
      }
    }
    break;
  }

  alert("\"" + fieldRef.name.split("_").join(" ") + "\" is a required field.");
  fieldRef.focus();
  return false;
}

function SendFormInputs(formRef, funcRef)
{
  if ((funcRef != null) && !funcRef(formRef))
  {
    return false;
  }

  var mainFields = new Array();

  for (var i = 0; i < formRef.elements.length; i++)
  {
    var field = formRef.elements[i];

    if ((field.className.indexOf("RequiredField") != -1) && !ValidateRequiredField(field))
    {
      return false;
    }

    if (field.className.indexOf("SenderEmailField") != -1)
    {
      if ((field.value.indexOf("@") > 0) && (field.value.indexOf(".") > 2))
      {
        formRef.Sender.value = field.value;
      }
      else
      {
        alert("The email address you specified is not correct or has a typo.");
        field.focus();
        return false;
      }
    }

    if (field.className.indexOf("MainField") != -1)
    {
      mainFields[mainFields.length] = field.name;
    }
  }

  formRef.MainFields.value = mainFields.join("|");
  document.getElementById("FormSection").style.display = "none";
  document.getElementById("WaitSection").style.display = "block";
  return true;
}

function ReceiveServerOutputs(success)
{
  document.getElementById("WaitSection").style.display = "none";

  if (success)
  {
    document.getElementById("ThankYouSection").style.display = "block";
  }
  else
  {
    alert("SERVER ERROR: Please try to submit your form again.");
    document.getElementById("FormSection").style.display = "block";
  }

  document.getElementById("InternetIO").src = "about:blank";
}
