/**
 *  Contents
 *    verifyFields(form, fields)
 *    verifyForm(form)
 */

/**
 *  Checks specified form fields. Fails on blank fields: alert window w/ error
 *  message; puts focus on offending field.
 *
 *  @param  {HTMLformElement} form    HTMLformElement
 *  @param  {Array}           fields  array of required fields
 *  @return {boolean}         if fields have values then true else false
 */
function verifyFields(form, fields)
{
  var nodeName;
  var els = form.elements;
  var title;
  var errormsg = "A required field is blank or contains only spaces.\n" +
    "Please enter a value for: ";
  
  for (var i = 0; i < fields.length; i++) {
    nodeName = els[fields[i]].nodeName;

    // test non-select elements
    if (nodeName.indexOf("SELECT") == -1) {
      // test for blank or all white space
      if (els[fields[i]].value === "" ||
          !(/\S+/.test(els[fields[i]].value))) {
        if (els[fields[i]].title) {
          title = els[fields[i]].title;
        }
        else {
          title = els[fields[i]].name;
        }
        alert(errormsg + title);
        els[fields[i]].value = "";
        els[fields[i]].focus();
        return false;
      }
    }
    // test select element
    else {
      if (els[fields[i]].value == "-1" || els[fields[i]].value == "") {
        if (els[fields[i]].title) {
          title = els[fields[i]].title;
        }
        else {
          title = els[fields[i]].name;
        }
        alert(errormsg + title);
        els[fields[i]].focus();
        return false;
      }
    }
  }
  return true;
}

/**
 *  Checks essential update form fields and alerts on ommissions. Set the
 *  class of the element to 'noverify' to skip verification.
 *
 *  @param  {HTMLFormElement} form   form to be verified
 *  @return {boolean}         If checked fields have values then true else false
 */
function verifyForm(form)
{
  var els = form.elements;
  var type;
  var errormsg = "A required field is blank or contains only spaces.\n"
  errormsg += "Please enter info for ";

  for (var i = 0; i < els.length; i++) {
    type = els[i].type;

    // test non-select elements
    if (type.indexOf("select") == -1) {
      // test for blank or all white space
      if ((els[i].value === "" ||
          !(/\S+/.test(els[i].value))) &&
          els[i].className.indexOf("noverify") == -1) {
        alert(errormsg + els[i].name);
        els[i].value = "";
        els[i].focus();
        return false;
      }
    }
    // test select element
    else {
      if (els[i].value == "-1" &&
          els[i].className.indexOf("noverify") == -1) {
        alert(errormsg + els[i].name);
        els[i].focus();
        return false;
      }
    }
  }
  return true;
}

