<!--//--><![CDATA[//><!--

function setupFold() {
  var textDiv = document.getElementById("text");
  setFoldClickListeners(textDiv);
  if (document.getElementById("bm1")) {
    uniAddListener(document.getElementById("bm1"), "click", switchBookmark);
    uniAddListener(document.getElementById("bm2"), "click", switchBookmark);
    document.getElementById("bm1").className = "active";
    document.getElementById("bm2").className = "inactive";
  }
}


function setFoldClickListeners(textDiv) {
  var foldingDivs = getChildHavingClass(textDiv, "folding", "array");
  for (var i = 0; i < foldingDivs.length; i++) {
    var foldingHeader = getChildHavingClass(foldingDivs[i], "foldingHeader", "");
    uniAddListener(foldingHeader, "click", fold);
  }
}


function switchBookmark(evt) {
  var bm = (evt.target == null) ? evt.srcElement : evt.target;
  var otherBmId = (bm.id == "bm1") ? "bm2" : "bm1";
  if (bm.className == "inactive") {
    // change bookmarks class
    bm.className = "active";
    document.getElementById(otherBmId).className = "inactive";
    // show/hide text
    document.getElementById(bm.id + "text").style.display = "block";
    document.getElementById(otherBmId + "text").style.display = "none";
  }
}


function fold(evt) {
  //evt = evt || event;  // wtf is this?
  var foldingHeader = (evt.target == null) ? evt.srcElement : evt.target;
  var foldingDiv  = foldingHeader.parentNode;
  var foldingText = getChildHavingClass(foldingDiv, "foldingText", "");
  // show/hide text
  if (foldingText.style.display != "block") {
    foldingText.style.display = "block";
    foldingHeader.className = "foldingHeaderActive";
  } else {
    foldingText.style.display = "none";
    foldingHeader.className = "foldingHeader";
  }
  foldingHeader.blur();
}


function getChildHavingClass(node, className, returnType) {
  var children = new Array();
  for (var i = 0; i < node.childNodes.length; i++) {
    if (node.childNodes[i].className == className) {
      // if only one node required
      if (returnType != "array") {
        return node.childNodes[i];
      }
      // if array of nodes required
      children.push(node.childNodes[i]);
    }
  }
  return children;
}


function uniAddListener(object, event, handler) {
  if (typeof object.addEventListener != 'undefined') {
    object.addEventListener(event, handler, false);
  } else if (typeof object.attachEvent != 'undefined') {
    object.attachEvent('on' + event, handler);
  } else {
    throw "Incompatible browser";
  }
}

//--><!]]>
