//functions to drive expandable table of contents

function ReverseMode(s) {
  //alternate visibility through class
  if (s=='sectionSubsH') {
    return 'sectionSubs';
  }
  return 'sectionSubsH';
}

function ReverseButt(s) {
  //alternate +/- image 
  if (s=='dropTocX') {
    return 'dropTocC';
  }
  return 'dropTocX';
}

function Ex_Coll(b) {
  //b is 'button' (+/-) clicked
  //d div for section below found through nodes
  d=b.nextSibling.nextSibling;
  while (d.className != 'sectionSubs' && d.className != 'sectionSubsH') {
    d=d.nextSibling;
  }
  d.className=ReverseMode(d.className);
  b.className=ReverseButt(b.className);
}

function doXC() {
  //intermediary function that can be set as onclick through script (no args)
  Ex_Coll(this);
}

function showAll(show) {
  //open/close all +/- branches
  var toAct;
  if (show == 1) {
    toAct = 'dropTocX';
  }
  else toAct = 'dropTocC';

  var theToc=document.getElementById('toc');
  var divs=theToc.getElementsByTagName('div');
  for (var i=0; i < divs.length; i++) {
    if (divs[i].className == toAct) {
      Ex_Coll(divs[i]);
    }
  }

}

function hideAll() {
  //hide all hidden divs
  var theToc=document.getElementById('toc');
  var divs=theToc.getElementsByTagName('div');
  for (var i=0; i < divs.length; i++) {
    if (divs[i].className == 'dropTocX') {
      divs[i].className = 'sectionSubs';
    }
  }

}

function setXC() {
  //set onclick for all +/- divs
  var theToc=document.getElementById('toc');
  var divs=theToc.getElementsByTagName('div');
  for (var i=0; i < divs.length; i++) {
    if (divs[i].className == 'dropTocX') {
      divs[i].onclick = doXC;
    }
  }
}

function setIEMargins() {
  //change top margin for expandable links in IE
  if (navigator.appName.indexOf('Microsoft') != -1) {
    var theToc=document.getElementById('toc');
    var pars=theToc.getElementsByTagName('p');
    for (var i=0; i < pars.length; i++) {
      if (pars[i].className == 'xc') {
        pars[i].className = 'xc_IE'
      }
    }
  }
}