// NEED TO MAKE VALIDATION MORE UNIVERSAL
function validateTextField() {
  var displayMessage = "";

  var name = stringTrim(document.TrioForm.NAME.value);
  var city = stringTrim(document.TrioForm.CITY.value);
  var state = stringTrim(document.TrioForm.STATE.value);
  var zip = stringTrim(document.TrioForm.ZIP.value);
  var email = stringTrim(document.TrioForm.EMAIL.value);
  // ***** Project Type Check Boxes ********************
  var letterhead = document.TrioForm.PROJECT_TYPE_Letterhead.checked;
  var envelopes = document.TrioForm.PROJECT_TYPE_Envelopes.checked;
  var postcards = document.TrioForm.PROJECT_TYPE_Postcards.checked;
  var brochures = document.TrioForm.PROJECT_TYPE_Brochures.checked;
  var logo = document.TrioForm.PROJECT_TYPE_Logo.checked;
  var other_project_type = document.TrioForm.OTHER_PROJECT_TYPE.value;
  // ***************************************************
//  var size = document.TrioForm.PROJECT_STANDARD_SIZE;
//  var sizeVal = validateInput(size, '', 'radioButton');
//  var other = document.TrioForm.OTHER_SIZE.value;
//  var photo = document.TrioForm.PROVIDING_ARTWORK_OR_PHOTOS;
//  var photoVal = validateInput(photo, '', 'radioButton');
//  var numPhoto = document.TrioForm.NUM_OF_ARTWORK_OR_PHOTOS.value;
  var needShip = document.TrioForm.NEED_SHIPPING_TO_OTHER_ADDRESS;
  var needShipVal = validateInput(needShip, '', 'radioButton');
  var otherAddress = document.TrioForm.OTHER_SHIPPING_ADDRESS.value;
  var description = stringTrim(document.TrioForm.DESCRIPTION_OF_PROJECT.value);
  var phone = stringTrim(document.TrioForm.PHONE_AREA_CODE.value) + stringTrim(document.TrioForm.PHONE_BOX1.value) + stringTrim(document.TrioForm.PHONE_BOX2.value);
  var fax = stringTrim(document.TrioForm.FAX_AREA_CODE.value) + stringTrim(document.TrioForm.FAX_BOX1.value) + stringTrim(document.TrioForm.FAX_BOX2.value);


  if (!validateInput(name, '', 'string')) displayMessage += "Please enter a NAME.\n";
  if (!validateInput(city, '', 'string')) displayMessage += "Please enter a CITY.\n";
  if (!validateInput(state, 2, 'string')) displayMessage += "Please enter a STATE.\n";
  if (!validateInput(zip, 5, 'number')) displayMessage += "Please enter a ZIP CODE.\n";
  if (phone.length != 0 && !validateInput(phone, '', 'phone')) displayMessage += "Please enter a valid 10-Digit PHONE NUMBER.\n";
  if (fax.length != 0 && !validateInput(fax, '', 'phone')) displayMessage += "Please enter a valid 10-Digit FAX NUMBER.\n";
  if (!validateInput(email, '', 'email')) displayMessage += "Please enter an EMAIL ADDRESS.\n";
  if (!letterhead && !envelopes && !postcards && !brochures && !logo && !validateInput(other_project_type, '', 'string')) displayMessage += "Please check a PROJECT TYPE.\n";
//  if (sizeVal == "NO" && !validateInput(other, '', 'string')) displayMessage += "Please enter the project size in the SIZE field.\n";
//  if (photoVal == "") displayMessage += "Please select YES or NO to Providing Artwork or Photos.\n";
//  if (photoVal == "YES" && !validateInput(numPhoto, '', 'number')) displayMessage += "Please enter the number of photos/artwork you will be providing.\n";
  if (needShipVal == '') displayMessage += "Please select YES or NO to Will you need shipping.\n";
  if (needShipVal == "YES" && !validateInput(otherAddress, '', 'string')) displayMessage += "Please enter a shipping address.\n";
  if (description == '') displayMessage += "Please enter a DESCRIPTION.\n";

  if (displayMessage != '')
    alert(displayMessage);
  else
    document.TrioForm.submit();
}

function validateInput(string, size, type) {
   size = (size == "" ? "1," : parseInt(size));
   switch (type) {
      case "string":
         var check = new RegExp("^.{" + size + "}$");
         return check.test(string);
      case "number":
         var check = new RegExp("^[0-9]{" + size + "}$");
         return check.test(string);
      case "phone":
         var check = /^(\d{3})(-|\*|\.| ){0,1}(\d{3})(-|\*|\.| ){0,1}(\d{4})$/;
         return check.test(string);
      case "email":
         var check = /(\w+)(\@)(\w+)(\.)(\w{3})/g;
         return check.test(string);
      case "radioButton":
         var check = "";
         var len = string.length;
         for(var i=0; i<len; i++) {
            if (string[i].checked) {
               check = string[i].value;
               break;
            }
         }
         return check;
      case "multipleSelection":
         var check = false;
         var len = string.length;
         var j=0;
         for (var i=0; i<len; i++) {
            if (string[i].selected)
               j++;
         }
         return (j == 0 ? false : true);
      default:
         return false;
   }
}

function stringTrimLeft(s) {return((typeof(s) != "string") ? null : s.replace(/^ +/, ""));}

function stringTrimRight(s) {return((typeof(s) != "string") ? null : s.replace(/ +$/, ""));}

function stringTrim(s) {return((typeof(s) != "string") ? null : stringTrimRight(stringTrimLeft(s)));}