function isWithinRange(pValue, pMinimum, pMaximum) {
 if (pValue.length == 0)                     return false;
 if (pMinimum != null && pValue < pMinimum)  return false;
 if (pMaximum != null && pValue > pMaximum)  return false;
 return true;
}

function isDigits(pValue) {
 if (pValue.length == 0)  return false;
 var digit_chars = ' 0123456789';
 var xx;
 for (var i=0; i < pValue.length; i++) {
  xx = digit_chars.indexOf(pValue.charAt(i))
  if (xx < 0) return false;
 }
 return true
}

function indexOfCharSet(pValue,pCharSet,pStartAt) {
 var result;
 var start;
 if ( pStartAt != null )
  start = pStartAt
 else
  start = 0;
 for (var i=0; i < pCharSet.length; i++) {
  result = pValue.indexOf(pCharSet.charAt(i),start);
  if ( result >= 0 )
   break;
 }
 return result;
}

function fieldHasAValue(fld) {
 if ( fld.type == 'text' || fld.type == 'password' ) {
  if ( fld.value.length > 0 )
   return true;
 }
 else if ( fld.type == 'select' ) {
  for (var i=0; i < fld.length; i++) {
   if ( fld.options[i].selected ) return true;
  }
 }
 else if ( fld.type == 'radio' || fld.type == 'checkbox' ) {
  for (var i=0; i < fld.length; i++ ) {
   if ( fld[i].checked )  return true;
  }
 }
 return false;	
}

function validRequired(fld) {
 if (fieldHasAValue(fld))  return true;
 alert( '\nSorry.\n'+ 'A value is missing from a required field. ('+ fld.name+ ')\n' );
 fld.focus();
 return false;	
}

