function validateNumeric(object, text) {
   //alert("In validateNumeric(): value=" + object.value);
   if (isNaN(object.value)) {
      alert("Must enter a number for " + text + ".");
      object.select();
      object.focus();
      return false;
   }
   return true;
}

function validateContents(object, text) {
   //alert("In validateContents(): value=" + object.value);
   if (trimAll(object.value) == "") {
      alert("Must enter a value for " + text + ".");
      object.value == "";
      object.focus();
      return false;
   }
   return true;
}

function validateRange(object, min, max, text) {
   //alert("In validateRange(): value=" + object.value +
   //      "; min=" + min + "; max=" + max);
   if (!validateNumeric(object, text)) {
      return false;
   }
   if (object.value < min) {
      alert("Value for " + text + " is too small.\n" +
            "Minimum is " + min + ".");
      object.select();
      object.focus();
      return false;
   }
   if (object.value > max) {
      alert("Value for " + text + " is too large.\n" +
            "Maximum is " + max + ".");
      object.select();
      object.focus();
      return false;
   }
   return true;
}

function leftTrim(sString) {
   while (sString.substring(0,1) == ' ') {
      sString = sString.substring(1, sString.length);
   }
   return sString;
}

function rightTrim(sString) {
   while (sString.substring(sString.length-1, sString.length) == ' ') {
      sString = sString.substring(0,sString.length-1);
   }
   return sString;
}

function trimAll(sString) {
   while (sString.substring(0,1) == ' ') {
      sString = sString.substring(1, sString.length);
   }
   while (sString.substring(sString.length-1, sString.length) == ' ') {
      sString = sString.substring(0,sString.length-1);
   }
   return sString;
}