function H_getText(el) {
  var text = "";
  for (var i = el.firstChild; i != null; i = i.nextSibling) {
    if (i.nodeType == 3 /* Node.TEXT_NODE, IE doesn't speak constants */)
      text += i.data;
    else if (i.firstChild != null)
      text += H_getText(i);
  }
  return text;
}

function TOC_EL(el, text, level) {
  this.element = el;
  this.text = text;
  this.level = level;
}

function getHeadlines(el) {
  var l = new Array;
  var rx = /[hH]([3])/;
  // internal recursive function that scans the DOM tree
  var rec = function (el) {
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
        if (rx.exec(i.tagName))
          l[l.length] = new TOC_EL(i, H_getText(i), parseInt(RegExp.$1));
        rec(i);
      }
    }
  }
  rec(el);
  return l;
}

function generate_TOC(block_id, list_id) {
  var tocBlock = document.getElementById(block_id);
  var tocList  = document.getElementById(list_id);
  if (tocBlock && tocList) {
    var items = tocList.childNodes;
    for (i = 0; i < items.length; i++){
      tocList.removeChild(items[i]);
    }
    var hs = getHeadlines(document.getElementsByTagName("body")[0]);
    if (hs.length > 1) {
      for (var i = 0; i < hs.length; ++i) {
        var hi = hs[i];
        var d = document.createElement("li");
        if (hi.element.id == "")
          hi.element.id = "gen" + i;
        var a = document.createElement("a");
        a.href = "#" + hi.element.id;
        a.appendChild(document.createTextNode(hi.text));
        d.appendChild(a);
        d.className = "toc level" + hi.level;
        tocList.appendChild(d);
      }
      tocBlock.style.display = 'block';
    }
  }
}

function printSubcatenrol() {
  if (document.getElementById('printSubcatenrol').value == 1) {
    document.getElementById('subcatenrol').style.display = 'block';
  }
}

function suppressImages() {
  if (document.getElementById('parentPage').value == 1) {
    for (var i=0; i < document.getElementsByName('toc-block').length; i++) {
      document.getElementsByName('toc-block')[i].style.display = 'none';
    }
  }
}

function clearDefault(el) {
  if (el.defaultValue==el.value) el.value = ""
}

function voting_info_menu_select(sel) {
  var target = sel.value;
  if(target) {
    var suffix = "";
    if(document.location.pathname.indexOf('.html') > -1) {
        suffix = '.html';
    }
    document.location.hash = '';
    document.location.pathname = '/voting/voting-info/' + target + suffix;
  }
}

