function show(divid) {
  d=document;
  d.getElementById("cat1").style.display="none";
  d.getElementById("cat2").style.display="none";
  d.getElementById("cat3").style.display="none";
  d.getElementById("cat4").style.display="none";
  d.getElementById("cat5").style.display="none";
  d.getElementById("cat6").style.display="none";
  d.getElementById("cat7").style.display="none";
  d.getElementById("cat8").style.display="none";
  d.getElementById("cat9").style.display="none";
  d.getElementById("cat10").style.display="none";
  d.getElementById("cat11").style.display="none";
  d.getElementById("cat12").style.display="none";
  d.getElementById("cat13").style.display="none";

  d.getElementById(divid).style.display="inline";
}

function init() {
  // Button texts:
  var show='Show details';
  var hide='Hide details';
  var show_all='Show all';
  var hide_all='Hide all';

  function toggle(cur_item, toggle_method) {
    var div=cur_item.parentNode.getElementsByTagName('div')[0];
    if(toggle_method=='show') { div.style.display='block'; }
    else if(toggle_method=='hide') { div.style.display='none'; }
  }

  function sync(toggle_method) {
    var show_all=document.getElementById('show_all');
    var hide_all=document.getElementById('hide_all');

    if(toggle_method=='show') {
      show_all.disabled=true;
      hide_all.disabled=false;
      for(var i=0; i<h2.length; i++) {
      if(h2[i].parentNode.getElementsByTagName('div')[0].style.display=='none') {
        show_all.disabled=false;
        hide_all.disabled=true;
      }
      else if(h2[i].parentNode.getElementsByTagName('div')[0].style.display=='block') {
        h2[i].lastChild.previousSibling.disabled=true;
        h2[i].lastChild.disabled=false;
        }
      }
    }
    else if(toggle_method=='hide') {
      show_all.disabled=false;
      hide_all.disabled=true;
      for(var i=0; i<h2.length; i++) {
        if(h2[i].parentNode.getElementsByTagName('div')[0].style.display=='block') {
          show_all.disabled=true;
          hide_all.disabled=false;
        }
        else if(h2[i].parentNode.getElementsByTagName('div')[0].style.display=='none') {
          h2[i].lastChild.previousSibling.disabled=false;
          h2[i].lastChild.disabled=true;
        }
      }
    }
  }

  var toggleall=document.getElementById('toggleall');
  var h2=document.getElementsByTagName('h2');

  //show all
  var show_all_button=document.createElement('input');
  show_all_button.type='image';
  show_all_button.src='../upload/bullets/plus.gif';
  show_all_button.value=show_all;
  show_all_button.id='show_all';
  toggleall.appendChild(show_all_button);

  show_all_button.onclick=function() {
    for(var i=0; i<h2.length; i++) {
      if(h2[i].className=='toggle') {
        toggle(h2[i], 'show');
        this.disabled=true;
        document.getElementById('hide_all').disabled=false;
      }
    }
    sync('show');
  }

  // hide all
  var hide_all_button=document.createElement('input');
  hide_all_button.type='image';
  hide_all_button.src='../upload/bullets/minus.gif';
  hide_all_button.value=hide_all;
  hide_all_button.id='hide_all';
  hide_all_button.disabled=true;
  toggleall.appendChild(hide_all_button);

  hide_all_button.onclick=function() {
    for(var i=0; i<h2.length; i++) {
      if(h2[i].className=='toggle') {
        toggle(h2[i], 'hide');
        this.disabled=true;
        document.getElementById('show_all').disabled=false;
      }
    }
    sync('hide');
  }

  // toggle selected
  for(var i=0; i<h2.length; i++) {
    if(h2[i].className=='toggle') {
      h2[i].parentNode.getElementsByTagName('div')[0].style.display='none';

      var show_button=document.createElement('input');
      show_button.type='image';
      show_button.src='../upload/bullets/plus.gif';
      show_button.value=show;
      h2[i].appendChild(show_button);
      var hide_button=document.createElement('input');
      hide_button.type='image';
      hide_button.src='../upload/bullets/minus.gif';
      hide_button.value=hide;
      hide_button.disabled=true;
      h2[i].appendChild(hide_button);

      show_button.onclick=function() {
        this.disabled=true;
        this.nextSibling.disabled=false;
        toggle(this.parentNode, 'show');
        sync('show');
      }

      hide_button.onclick=function() {
        this.disabled=true;
        this.previousSibling.disabled=false;
        toggle(this.parentNode, 'hide');
        sync('hide');
      }
    }
  }
}
