function bind_onchange_to_elems(elts, onchange_handler) {
  for (var i=0; i<elts.length; i++){
    var elt = elts[i];
    elt.onchange = onchange_handler;
  }
}

function has(a, elt) {
  for (var i=0; i<a.length; i++) {
    if (elt == a[i]) {
      return true;
    }
  }
  return false;
}

function show_hide_field_on_dropdown_condition(form_name, dropdown_name, values_that_show, field_id) {
  /*
  If the value of the field having the id field_id is in values_that_show, the field is shown.
  Otherwise, it is hidden.
  The value that values_that_show mathces against comes from the dropdown with name dropdown_name,
  on form with form_name
  */
  var form = document.forms[form_name];
  var dropdown = form.elements[dropdown_name];
  var selected_value = dropdown.options[dropdown.selectedIndex].value;
  var field = document.getElementById(field_id);
  if (has(values_that_show, selected_value)) {
    field.style.display = 'block';
  }
  else {
    field.style.display = 'none';
  }
}

function store_input_values(inputs) {
  var store = Array(inputs.length);
  for (var i=0; i<inputs.length; i++){
    var input = inputs[i];
    store[i] = input.value;
  }
  return store;
}

function get_selected_radio_button(radio_buttons){
  var is_selected = false;
  for (var i=0; i<radio_buttons.length; i++){
    var radio_button = radio_buttons[i];
    if (radio_button.checked){
      is_selected = true;
      break;
    }
  }
  if (is_selected) return radio_button.value;
  else return null;
}

function confirmedSubmit(questionText, form_id) {
  var confAnswer = confirm(questionText);
  if (!confAnswer) {
    return false;
  }
  else {
    document.forms[form_id].submit();
  }
}

function sum_inputs(input_elems) {
  var summ = 0.0;
  for (var i in input_elems) {
    var input_elem = input_elems[i];
    var v = parseFloat(input_elem.value);
    if ( !isNaN(v) ) {
      summ += v;
    }
  }
  return summ;
}

function get_n_words(sentence, n){
    var words = Array();
    var words_and_spaces = sentence.split(' ');
    for (var j = 0; j < words_and_spaces.length; j++) {
	var word = words_and_spaces[j];
	// word is not whitespace
        if ( word != '' && word != ' ' ) {  
	    words.push(word);
	    if ( words.length == n ) {
		break;
	    }
        }
    }
    return words.join(' ');
}