function validate_form(type, checkThis, itemName, elementID) {

  var errorMessage = "";
  var currentInnerText = "";
  var newInnerText = "";

  for (var x=0; x < type.length; x++ ) {
    if (type[x] == 'email') {
      if (!(isValidEmail(checkThis[x]))) {
        errorMessage = "A valid email address is required";
        currentInnerText = document.getElementById(elementID[x]).innerHTML;
        setErrorText(currentInnerText, elementID[x], errorMessage, itemName[x]);
      } else {
        setValidText(currentInnerText, elementID[x], errorMessage, itemName[x]);
      }
    }

    if (type[x] == 'notNull') {
      if (checkThis[x].length == 0) {
        errorMessage = itemName[x] + " is required";
        currentInnerText = document.getElementById(elementID[x]).innerHTML;
        setErrorText(currentInnerText, elementID[x], errorMessage, itemName[x]);
      } else {
        setValidText(currentInnerText, elementID[x], errorMessage, itemName[x]);
      }
    }

    if (type[x] == 'numeric') {
      if (!(IsNumeric(checkThis[x]))) {
        errorMessage = itemName[x] + " is not a numeric value\n";
        currentInnerText = document.getElementById(elementID[x]).innerHTML;
        setErrorText(currentInnerText, elementID[x], errorMessage, itemName[x]);
      } else {
        setValidText(currentInnerText, elementID[x], errorMessage, itemName[x]);
      }
    }

    if (type[x] == 'radio') {

      var radio_array = checkThis[x];
      var isChecked = false;

      for (var i=0; i < radio_array.length; i++)  { 
        if (radio_array[i].checked)  {
          isChecked = true;
        } 
      } 

      if (isChecked) {
        setValidText(currentInnerText, elementID[x], errorMessage, itemName[x]);
      } else {
        errorMessage = itemName[x] + " has not been selected\n";
        currentInnerText = document.getElementById(elementID[x]).innerHTML;
        setErrorText(currentInnerText, elementID[x], errorMessage, itemName[x]);
      }

    }

    if (type[x] == 'validDate') {
      var dateRegExp = new RegExp(/^\d{4}\-\d{1,2}\-\d{1,2}$/);
      if (!(dateRegExp.test(checkThis[x]))) {
        errorMessage = itemName[x] + " is not a valid date\n";
        currentInnerText = document.getElementById(elementID[x]).innerHTML;
        setErrorText(currentInnerText, elementID[x], errorMessage, itemName[x]);
      } else {
        setValidText(currentInnerText, elementID[x], errorMessage, itemName[x]);
      }
    }
  }

  // Display an error message if any errors were found, also return false so onsubmit calls will fail
  if (errorMessage != "") {
    return false;
  } else {
    return true;
  }

}

function setErrorText(currentInnerText, elementID, errorMessage, itemName) {
  var newInnerText;

  newInnerText = "<img src=\"/images/tooltip.gif\" width=\"15\" height=\"14\" alt=\"" + errorMessage + "\" title=\"" + errorMessage + "\">";
  newInnerText = newInnerText + " <span class=\"warning\">";
  newInnerText = newInnerText + itemName + ":";
  newInnerText = newInnerText + "</span>";
  document.getElementById(elementID).innerHTML = newInnerText;
}

function setValidText(currentInnerText, elementID, errorMessage, itemName) {
  document.getElementById(elementID).innerHTML = itemName + ":";
}

function isValidEmail(strEmail){
  // Adapted from Design Place - http://www.designplace.org/scripts.php?page=1&c_id=22
  validRegExp = /^[^@]+@[^@]+.[a-z]{2,}$/i;
  if (strEmail.search(validRegExp) == -1) {
    return false;
  } else {
    return true;
  }
}


function IsNumeric(sText) {
  var ValidChars = "0123456789.";
  var IsNumber = true;
  var Char;

  for (i = 0; i < sText.length && IsNumber == true; i++) { 
    Char = sText.charAt(i); 
    if (ValidChars.indexOf(Char) == -1) {
      IsNumber = false;
    }
  }
  return IsNumber;
}

