function numbersonly(myfield, e, dec) {
  var key;
  var keychar;

  if (window.event)
    key = window.event.keyCode;
  else if (e)
    key = e.which;
  else
    return true;

  keychar = String.fromCharCode(key);

  if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) )   // CONTROL KEYS
    return true;

  else if ((("0123456789").indexOf(keychar) > -1))   // NUMBERS
    return true;
  else
    return false;
}

var whitespace = " \t\n\r";   // WHITESPACE CHARACTERS

function isEmpty(s) {   // CHECK WHETHER STRING S IS EMPTY.
  return ((s == null) || (s.length == 0))
}

function isWhitespace (s) {
  var i;

  if (isEmpty(s))   // IS S EMPTY?
    return true;

  // SEARCH THROUGH STRING'S CHARACTERS ONE BY ONE UNTIL WE FIND A NON-WHITESPACE CHARACTER.  WHEN WE DO, RETURN FALSE; IF WE DON'T, RETURN TRUE.
  for (i = 0; i < s.length; i++) {   // CHECK THAT CURRENT CHARACTER ISN'T WHITESPACE.
    var c = s.charAt(i);
    if (whitespace.indexOf(c) == -1) return false;
  }

  return true;   // ALL CHARACTERS ARE WHITESPACE.
}

function ForceEntry(val) {
  var strInput = new String(val.value);

  if (isWhitespace(strInput))
    return true;
  else
    return false;
}

function isValidEmail(email, required) {
  if (required==undefined)   // IF NOT SPECIFIED, ASSUME IT'S REQUIRED
    required=true;

  if (email==null) {
    if (required) {
      return false; }
    return true; }

  if (email.length==0) {  
    if (required) {
      return false; }
    return true; }

  if (! allValidChars(email))   // CHECK TO MAKE SURE ALL CHARACTERS ARE VALID
    return false;

  if (email.indexOf("@") < 1)   // MUST CONTAIN @, AND IT MUST NOT BE THE FIRST CHARACTER
    return false;
  else if (email.lastIndexOf(".") <= email.indexOf("@"))   // LAST DOT MUST BE AFTER THE @
    return false;
  else if (email.indexOf("@") == email.length)   // @ MUST NOT BE THE LAST CHARACTER
    return false;

  return true;
}

function allValidChars(email) {
  var parsed = true;
  var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-";

  for (var i=0; i < email.length; i++) {
    var letter = email.charAt(i).toLowerCase();
    if (validchars.indexOf(letter) != -1)
      continue;
    parsed = false;
    break; }

  return parsed;
}

function ValidateIarSubscribe() {
  if (ForceEntry(document.forms[0].first_name)) {
    alert("Please enter your first name.");
    document.forms[0].first_name.focus();
    return false; }
  else if (ForceEntry(document.forms[0].last_name)) {
    alert("Please enter your last name.");
    document.forms[0].last_name.focus();
    return false; }
  else if (ForceEntry(document.forms[0].email)) {
    alert("Please enter your e-mail address.");
    document.forms[0].email.focus();
    return false; }
  else if (document.forms[0].first_name.value == document.forms[0].last_name.value) {
    alert("The first and last names can not match.");
    return false; }
  else if (document.forms[0].verify_email.value != document.forms[0].email.value) {
    alert("The e-mail addresses do not match.");
    document.forms[0].email.focus();
    return false; }

  if (document.forms[0].typeSub.selectedIndex==1) {  // ######### MAIL A PRINT COPY TO THE ADDRESS BELOW #############
	  if (document.forms[0].country.selectedIndex==0) {  // ######### UNITED STATES #############
	    if (ForceEntry(document.forms[0].company)) {
	      alert("Please enter your company/organization.");
	      return false; }
	    if (ForceEntry(document.forms[0].address1)) {
	      alert("Please enter your street address.");
	      return false; }
	    if (ForceEntry(document.forms[0].city)) {
	      alert("Please enter your city.");
	      return false; }
	    if (document.forms[0].state.selectedIndex==0) {
	      alert("Please select your state.");
	      return false; }
	    if (ForceEntry(document.forms[0].zip)) {
	      alert("Please enter your zip code.");
	      return false; }
	    if (document.forms[0].phone1.value.replace('0','1') < 100) {
	      alert("Please enter your phone number (### ### ####).");
	      return false; }
	    if (document.forms[0].phone2.value.replace('0','1') < 100) {
	      alert("Please enter your phone number (### ### ####).");
	      return false; }
	    if (document.forms[0].phone3.value.replace('0','1') < 1000) {
	      alert("Please enter your phone number (### ### ####).");
	      return false; } }
	  else {                                            // ######### INTERNATIONAL ##############
	    if (document.forms[0].int_country.selectedIndex==0) {
	      alert("Please select your country.");
	      return false; }
	    if (ForceEntry(document.forms[0].int_company)) {
	      alert("Please enter your company/organization.");
	      return false; }
	    if (ForceEntry(document.forms[0].int_address1)) {
	      alert("Please enter your street address.");
	      return false; }
	    if (ForceEntry(document.forms[0].int_city)) {
	      alert("Please enter your town/city.");
	      return false; }
	    if (ForceEntry(document.forms[0].int_state)) {
	      alert("Please enter your state/county.");
	      return false; }
	    if (ForceEntry(document.forms[0].int_zip)) {
	      alert("Please enter your postal code.");
	      return false; }
	    if (ForceEntry(document.forms[0].int_phone)) {
	      alert("Please enter your phone number.");
	      return false; } } }

  return true;
}