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

function get_element_value( elt ) {
  var attribute = get_element_value_attribute( elt );
  switch ( attribute ) {
    case "value":
      return elt.value;
      break;
    case "innerHTML": 
      return elt.innerHTML; 
      break;
    case "checked": 
      // radiobuttons / checkboxen
      if (elt.type=='checkbox') {
        return (elt.checked) ? "T" : "F";
      } else {
        // Radiobuttons zijn speciaal geval. We zoeken de checked optie, daarvan moeten we de waarde hebben.
        // Niet checked opties moeten we negeren, dan retourneren we false.
        // Op de plek waar get_element_value() aangeroepen wordt dient dit op de juiste manier afgehandeld te worden.
        return (elt.checked) ? elt.getAttribute("value") : false;
      }
      break;
    case "selectedIndex":
      // selectbox
      return elt.options[elt.selectedIndex].value;
    default: 
      return elt.value;
  }
}
function get_element_value_attribute( elt ) {
   switch ( elt.nodeName.toLowerCase() ) {
    case "span" :
    case "div"  :  return "innerHTML"; break;
    case "input" :
      switch ( elt.getAttribute( "type" ) ) {
        case "radio"    :
        case "checkbox" : 
          return "checked"; 
          break;
        default         : 
          return "value"; 
          break;
      }
    case "select":
      return "selectedIndex";
      break;
    default : return "value"; break;
  }
}

// ---------------------------------------------------------------------------------------------------------------------------------------------
function set_element_value( elt, value ) {
  var attribute = get_element_value_attribute( elt );
  switch ( attribute ) {
    case "value": 
      elt.value = value; 
      break;
    case "innerHTML": 
      elt.innerHTML = value; 
      break;
    case "checked": 
      // checkbox kan niet omgaan met T/F --> wijzigen in true/false
      if (elt.type=='checkbox') {
        elt.checked = (value.toLowerCase()=='f') ? false : (value.toLowerCase()=='t') ? true : value;
      } else {
        // Radiobutton
        elt.checked = (elt.getAttribute("value")==value);
      }
      break;
    case "selectedIndex":
      for (var i=0; i<elt.options.length;i++) {
        if (elt.options[i].value == value) {
          elt.options[i].selected = true;
          break;
        }
      }
      break;      
    default          : elt.setAttribute( attribute, value );
  }
}

function getRandomNr (min, max) {
  var randomnr;
  if (min == max) {
    return min;
  }
  randomnr = parseInt((max - min + 1) * Math.random() )
  return min + randomnr;
}

function getObj(id){
  return document.getElementById(id);
}

function showHide(elt, showHide) {
  if (showHide=='show') {
    elt.style.display = 'block';
    elt.style.visibility = 'visible';
  } else {
    elt.style.display = 'none';
    elt.style.visibility = 'hidden';
  }
}

function popup( url, pagetitle ) {
  w=window.open( url, pagetitle,'toolbar=0,scrollbars=0,location=0,statusbar=1,menubar=0,resizable=0,width=750,height=600');
  w.window.focus();
}

// returns the array number of the selected radio button or -1 if no button is selected
function getSelectedRadio(buttonGroup) {
   if (buttonGroup[0]) { // if the button group is an array (one button is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            return i
         }
      }
   } else {
      if (buttonGroup.checked) { return 0; } // if the one button is checked, return zero
   }
   // if we get to this point, no radio button is selected
   return -1;
}

function getSelectedRadioValue(buttonGroup) {
   // returns the value of the selected radio button or "" if no button is selected
   var i = getSelectedRadio(buttonGroup);
   if (i == -1) {
      return "";
   } else {
      if (buttonGroup[i]) { // Make sure the button group is an array (not just one button)
         return buttonGroup[i].value;
      } else { // The button group is just the one button, and it is checked
         return buttonGroup.value;
      }
   }
}

