function validateAll()
// validates all inputs
// first argument - header string to show in case of an error
// string arguments; if at least one of the strings is not zero-length 
// function shows an alert dialog containing header string and all non-zero-length
// srings
// returns false on error and true if all strings are zero-length
{
  if (validateAll.arguments.length<1) 
  {
    alert("Incorrect function usage");
	return false;
  }
  else
  {
    s = validateAll.arguments[0];
	b = false;
	for (i=1; i<validateAll.arguments.length; i++)
	{
	  if (validateAll.arguments[i]!="") 
	  {
	    b = true;
		s += "\n  - "+validateAll.arguments[i];
	  }
	}
	if (b) 
	{
	  alert(s);
	  return false;
	}
  }
  return true;
}

function validateNumberDigs(field,minDig,maxDig)
// validates a number with required number of digits
// input:
//   field - string to validate
//   minDig - minimum number of digits
//   maxDig - maximum number of digits
// returns:
//   0 - valid field
//   1 - invalid number of digits
//   2 - invalid format (non-digits in field)
{
  if (field.length<minDig || field.length>maxDig)
  {
    return 1;
  }
  for (var i = 0; i < field.length; i++) 
  {
    var ch = field.substring(i, i + 1);
    if (ch < "0" || "9" < ch)
    {
      return 2;
    }
  }
  return 0;
}

function validateZIP(field) 
// validates a 5-digit ZIP code
// input:
//   field - string to validate
// UI: shows alert on error
// returns:
//   string with an error
//   empty string if ZIP is valid
{
  var res = validateNumberDigs(field,5,5);
  if (res==1)
  {
    return "Please enter your 5 digit ZIP code";
  }
  else if (res==2)
  {
    return "Invalid characters in your ZIP code";
  }
  else return "";
}

function validateRequiredString(field,aName)
// validates a required string
// input:
//   field - string to validate
//   aName - name of the field (for alert message)
// UI: shows alert on error
// result:
//   true - field is valid
//   false - field is invalid
{
  if (field.length!=0) return "";
  return "Please enter "+aName;
}

function validateNumber(field,minVal,maxVal,aName)
// validates a number
// input:
//   field - string to validate
//   minVal - minimum value of the field
//   maxVal - maximum value of the field
//   aName - name of the field (for alert message)
// UI: shows alert on error
// result:
//   true - field is valid
//   false - field is invalid
{
  var valid = "0123456789";
  var hyphencount = 0;
  if (field.length==0) 
  {
    return "Please enter "+aName;
  }
  for (var i=0; i < field.length; i++) 
  {
    temp = "" + field.substring(i, i+1);
    if (valid.indexOf(temp) == "-1") 
    {
      return "Invalid characters in "+aName;
    }
  }
  tmp = 0+field;
  if (tmp<minVal || tmp>maxVal)
  {
    return "Your "+aName+" is not in range";
  }
  return "";
}

function validatePhoneNumber(areaCode,phNumber1,phNumber2,extension)
// validates a phone number (with non-required extension)
// input:
//   areaCode - area code string
//   phNumber1 - first three digits of phone number
//   phNumber2 - next four digits of phone number
//   extension - extension number
// UI: shows alert on error
// result:
//   true - if phone is valid
//   false - if phone is invalid
{
  var res = validateNumberDigs(areaCode,3,3);
  if (res==1)
  {
    return "The area code requires three digits";
  }
  else if (res==2)
  {
    return "The area code field only accepts digits '0-9'";
  }
  res = validateNumberDigs(phNumber1,3,3);
  if (res==1)
  {
    return "The phone prefix requires three digits";
  }
  else if (res==2)
  {
    alert("\n.\n\nPlease re-enter your phone prefix.");
    return "The phone prefix field only accepts digits '0-9'";
  }
  res = validateNumberDigs(phNumber2,4,4);
  if (res==1)
  {
    return "The phone number requires four digits";
  }
  else if (res==2)
  {
    return "The phone number field only accepts digits '0-9'";
  }
  res = validateNumberDigs(phNumber2,0,4);
  if (res==1)
  {
    return "The extension requires zero to four digits";
  }
  else if (res==2)
  {
    return "The phone number field only accepts digits '0-9'";
  }
  return "";   
}

