function errorMessage(errtype)
{
  switch (errtype) {
    case 'int':
      return 'Please enter a number';
    case 'zipcode':
      return 'Please enter a valid 5-digit U.S. Zipcode';
    case 'text':
      return 'Please avoid the = character';
  }
}

function isEmpty(str)
{
  return (str == "" || str == null);
}

function isString(obj)
{
  return ((typeof obj == "string") || (obj.constructor == String));
}

function isInteger(str)
{
  result = true;
  for(var i=0; i < str.length; i++)
  {
    var ch = str.charAt(i);
    if (ch < "0" || ch > "9")
    {
      result = false;
    }
  }
  return result;
}

function hideInvalid(errtype, elemid)
{
  var errspan = document.getElementById(elemid);
  errspan.innerHTML = '';
  return true;
}

function showInvalid(errtype, elemid)
{
  var errspan = document.getElementById(elemid);
  errspan.innerHTML = errorMessage(errtype);
  return false;
}

function validateInt(evt, elemid, errorElemId) 
{ 
  evt = (evt) ? evt : window.event;
  var tbox = document.getElementById(elemid);
  valid = true;

  if (!isEmpty(tbox.value) && (!isInteger(tbox.value)))
  {
    valid = false;
  }
  valid ? hideInvalid('int', errorElemId) : showInvalid('int', errorElemId);
  return valid;
}

function validateText(evt, elemid, errorElemId)
{
  evt = (evt) ? evt : window.event;
  var tbox = document.getElementById(elemid);
  valid = true;

  invalid_chars = /[=]/;
  if (!isEmpty(tbox.value) && invalid_chars.test(tbox.value))
  {
    valid =  false;
  }
  valid ?  hideInvalid('text', errorElemId) : showInvalid('text', errorElemId);
  return valid;
}

function validateZipcode(evt, elemid, errorElemId)
{
  evt = (evt) ? evt : window.event;
  var tbox = document.getElementById(elemid);
  valid = true;

  if (!isEmpty(tbox.value) && ((tbox.value.length != 5) || (!isInteger(tbox.value))))
  {
    valid = false;
  }
  valid ? hideInvalid('zipcode', errorElemId) : showInvalid('zipcode', errorElemId);

  return valid;
}
