function validate_form(form) {
  var fields = Form.getElements(form);
  var is_form_ok = true;
  var range_regex = /^range\-(\d+)\-(\d+)$/;
  for (var i=0; i <= fields.length; i++) {
    var the_field = $(fields[i]);
    if (the_field) {
        var type_of_required_value = the_field.getAttribute('required');
        if (type_of_required_value == 'notempty') {
            hide_error_message(the_field);
            if (is_empty(the_field)) {
                is_form_ok = false;
                show_error_message(the_field,
                                   "This field is required");
            }
        }
        else if (range_regex.test(type_of_required_value)) {
            hide_error_message(the_field);
            var range_values = range_regex.exec(type_of_required_value);
            var lower_range = Number(range_values[1]);
            var upper_range = Number(range_values[2]);
            var test_value = $(the_field).value;
            if (test_value < lower_range) {
                is_form_ok = false;
                error_string = "value must be greater than " + lower_range;
                show_error_message(the_field, error_string);
            }
            else if (test_value > upper_range) {
                is_form_ok = false;
                error_string = "value must be less than " + upper_range;
                show_error_message(the_field, error_string);
            }
        }
        // other checks here
    }
  }
  return is_form_ok;
}

function is_empty(field) {
   if (($(field).value.length == 0) || ($(field).value == null)) {
      return true;
   } else {
      return false;
   }
}	

function show_error_message(offending_field, message) {
  var error_message_id = offending_field.id + "_error_message";

  // only fill in with the error message if there isn't one there already
  // (i.e. from CMS)
  if (! $(error_message_id).innerHTML)
    $(error_message_id).innerHTML = message;

  Element.show(error_message_id);
  Element.show('form_errors'); // general error ilm
}

function hide_error_message(offending_field) {
  var error_message_id = $(offending_field).id + "_error_message";
  Element.hide($(error_message_id));
  Element.hide('form_errors'); // general error ilm
}
