function startsWith(s, sub) {
  return ( s.substring(0, sub.length)==sub );
}

function endsWith(s, sub) {
  return ( s.substring(s.length-sub.length, s.length)==sub );
}

function showhide(divname) {
  var elements = document.getElementsByTagName('div');
  for (var i = 0; i<elements.length; i++) {
    if ( !startsWith(elements[i].id, divname) ) continue;
    var style = elements[i].style;
    if ( style.display=='block' || style.display=='' ) style.display='none';
    else style.display='block';
  }
}

function toggle_expand(name) {
  showhide(name);
  var id = name + '_img';
  var s = 'expand_opened.png';
  var src = document[id].src;
  if ( endsWith(src, s) ) document[id].src = 'expand_closed.png';
  else document[id].src = 'expand_opened.png';
}
