function validateSTNs() {
  var allok = true;
  var focuson = 0;
  var allstns = (arguments.length > 0) ? arguments[0] : '';
  
  for (var i = 1; i <= 10; i++) {
    var stn = document.getElementById('input-stn' + i);
    if (stn) {
      var firstname = document.getElementById('input-firstname' + i);
      var lastname = document.getElementById('input-lastname' + i);
	
      var errmsg = '';
      if ( /\S/.test(stn.value) ) {
	if (stn.value.length != 9) {
	  errmsg = 'The STN entered contains fewer than 9 characters';
	} else if ( ! /^[a-z\d]\d\d\d\d\d\d\d\d$/i.test(stn.value) ) {
	  errmsg = 'STN is invalid - please check the record and try again';
	} else {
	  var re = new RegExp('\\b' + stn.value + '\\b');
	  if (re.test(allstns)) {
	    errmsg = 'This STN has already been entered';
	  }
	}
      } else if ((/\S/.test(firstname.value)) || (/\S/.test(lastname.value))) {
	errmsg = 'STN is required, names without STNs will not be saved';
	focuson = i;
      }
      if (errmsg.length > 0) {
	allok = false;
	stn.style.backgroundColor = 'red';
	document.getElementById('span-name' + i).style.display = 'none';
	document.getElementById('span-stnerror' + i).innerHTML = errmsg;
	document.getElementById('span-stnerror' + i).style.display = '';
      } else {
	stn.style.backgroundColor = '';
	document.getElementById('span-name' + i).style.display = '';
	document.getElementById('span-stnerror' + i).style.display = 'none';
      }
      allstns += stn.value + " ";
    }
  }
  document.getElementById('div-whyyoucantsave').style.display = (allok) ? 'none' : '';
  document.getElementById('submit-save').disabled = ! allok;
  document.getElementById('submit-saveandadd').disabled = ! allok;
  isdatas = document.getElementsByName('isdata');
  for (lcv = 0; lcv < isdatas.length; lcv++) { isdatas[lcv].value = (allok) ? 'yes' : ''; }

  if (focuson > 0) {
    var stn = document.getElementById('input-stn' + focuson);
    stn.focus();
  }
}
