function trim(s) {
      s = s.replace(/^\s+/,"");
      return s.replace(/\s+$/,"");
}

function require(form, spec) {
    for (i = 0; i < spec.length; i += 2) {
        name = spec[i];
	text = spec[i+1];

	field = eval("form." + name);
	//alert("require(): " + name + ".type = " + field.type);

	// radiobutton.type == undefined; so it falls through
	if (field.type) {

	    if (field.type == "checkbox") {
	      if (!field.checked) {
	        alert(text);
		return false; 
	      }

	    } else {
	        val = trim(field.value);

	        field.value = val;

	        if ("" == val) {
		    alert(text);
		    return false; 
	        }
            }

	} else {
	    // radiobutton
	    checked = false;
	    for (j = 0; j < field.length; j++) {
		cbox = field[j];
		//alert("cbox.checked = " + cbox.checked);
		if (cbox.checked) {
		    checked = true;
		    break;
		}
	    }
	    if (!checked) {
		alert(text);
		return false;
	    }
	}
    }
    return true;
}
