// validate.js
// general validation functions
// version 1.0
// written by Scott Earnest (searnest at vocellipizza dot com)

function valid_nonblank (chkval) {
  if (chkval == "") {
	return false;
  } else {
  	return true;
  }
}

// validate a ###-###-#### phone number

function valid_phone (chkval) {

  var v;

  // test length
  if (chkval.length != 12) {
  	return false;
  }
  // test first triplet
  v = chkval.substr(0,3);
  v = parseInt(v,10);
  if (isNaN(v)) {
  	return false;
  }
  // test second triplet
  v = chkval.substr(4,3);
  v = parseInt(v,10);
  if (isNaN(v)) {
  	return false;
  }
  // test ending quad
  v = chkval.substr(8,4);
  v = parseInt(v,10);
  if (isNaN(v)) {
  	return false;
  }
  if ((chkval.charAt(3)!='-')&&(chkval.charAt(7)!='-')) {
	return false;
  }
  
  return true;
  
}

// validate an e-mail address (fairly generic)

function valid_email (chkval) {

  var epat = /.+@[a-zA-Z0-9\-\.]+\.[a-zA-Z0-9\-\.]+/;

  if (chkval.match(epat) == null) {
  	return false;
  }

  return true;

}

// validate that a radio option is selected

function valid_radio (chkval) {

  for (i = 0; i < chkval.length; i++) {
    if (chkval[i].checked) {
	  return true;
    }
  }

  return false;

}

// validate that a number is a pure integer

function valid_isnumber (chkval) {

  var npat = /\d/;
  
  for (var i=0; i < chkval.length; i++) {

    if (chkval.match(npat) == null) {
	  return false;
    }
  }
  
  return true;
  
}

// validate that a number is an integer within a specified range

function valid_number (chkval, low, high) {

  if (!valid_isnumber(chkval)) {
  	return false;
  }
  if ((chkval < low)||(chkval > high)) {
  	return false;
  }

  return true;
  
}
