// name:        isEmpty
// description: function determines whether value is NULL or blank
// returns:     True or False
function isEmpty(value) {
   return (value == null || value == "");
}

// name:        optionSelected
// description: function determines whether any of a SELECT object's OPTIONs are selected
// returns:     True or False
function optionSelected(object) {
   var i, s;
   for (i=0; i<object.length; i++) {
      if (object[i].checked) {
         s = object[i].value;
         break;
      }
   }
   if (s == null) {
      return false;
   }
   return true;
}

// name:        validZIPCode
// description: function determines whether the value is a valid ZIP code
// returns:     True or False
function validZIPCode(value) {
   var regex = /^[0-9]{5}(\-[0-9]{4})?$/;
   return regex.test(value);
}

// name:        validPostalCode
// description: function determines whether the value is a valid Canadian postal code
// returns:     True or False
function validPostal(value) {
   var regex = /^[a-zA-Z][0-9][a-zA-Z] [0-9][a-zA-Z][0-9]$/;
   return regex.test(value);
}

// name:        getSelectOptions
// description: function 
// returns:     
function getSelectOptions(obj) {
   switch(obj.type) {
      case 'select-one':
      case 'select-multiple':
         if (obj.options == null) { return null; }
         var s = "";
         for (var i=0; i<obj.options.length; i++) {
            s = s + ((s == "") ? "" : ",") + obj.options[i].value.toString();
         }
         return s;
   }
   return null;
}

// name:        validEmailAddress
// description: function 
// returns:     
function validEmailAddress(value) {
   var regex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/;
   return regex.test(value);
}
