function showhideblocks(link,action) {
  var disp = (action == 'hide') ? 'none' : 'block';
  var blockelements = new Array('ul','ol','dl','table','p');
  for (k = 0;k < blockelements.length;k++) {
    var type = blockelements[k];
    var el   = link.getElementsByTagName(type);
    if (el.length > 0) {
      for (j=0;j < el.length; j++) {
        el[j].style.display = disp;
      }
    }
  }
}

function hideAll(list,tag,allid) {
  if (typeof(list)  == 'undefined') list  = 'list';
  if (typeof(tag)   == 'undefined') tag   = 'div';
  if (typeof(allid) == 'undefined') allid = 'showhideall';
  var link = document.getElementById(list).getElementsByTagName(tag);
  for (i=0;i<link.length;i++) {
    var lid = link[i].id;
    var linka = link[i].getElementsByTagName('h3')[0].getElementsByTagName('a')[0];
    var linko = linka.href;
    linka.href = 'javascript:showHide(\'' + lid + '\',\'show\');';
    linka.target = '_self';
    showhideblocks(link[i],'hide');
  }
  if (document.getElementById(allid)) {
    document.getElementById(allid).innerHTML='[+] Show All';
    document.getElementById(allid).href='javascript:showAll(\''+list+'\',\''+tag+'\',\''+allid+'\');';
  }
}

function showAll(list,tag,allid) {
  if (typeof(list)  == 'undefined') list = 'list';
  if (typeof(tag)   == 'undefined') tag  = 'div';
  if (typeof(allid) == 'undefined') allid = 'showhideall';
  var link = document.getElementById(list).getElementsByTagName(tag);
  for (i=0;i<link.length;i++) {
    var lid = link[i].id;
    var linka = link[i].getElementsByTagName('h3')[0].getElementsByTagName('a')[0];
    var linko = linka.href;
    linka.href = 'javascript:showHide(\'' + lid + '\',\'hide\');';
    linka.target = '_self';
    showhideblocks(link[i],'show');
  }
  if (document.getElementById(allid)) {
    document.getElementById(allid).innerHTML='[-] Hide All';
    document.getElementById(allid).href='javascript:hideAll(\''+list+'\',\''+tag+'\',\''+allid+'\');';
  }
}
function showHide(id,action) {
  var link = document.getElementById(id);
  var linka = link.getElementsByTagName('h3')[0].getElementsByTagName('a')[0];
  var toggle = (action == 'hide') ? 'show' : 'hide'
  linka.href = 'javascript:showHide(\'' + id + '\',\''+ toggle+'\');';
  showhideblocks(link,action);
}
