var visibleElement;
var lastElement;
var lastToggle;
var intervalID;


function accordianInit() {
  var acc = document.getElementById("accordion");
  setChildElements(acc, true);
  intervalID = window.setInterval("swapElements()",10);
}

function setChildElements(elem, addEvent) {
  if (elem.className == "element") {
    if (visibleElement == null) {
       visibleElement = elem;
    }
    if (elem.getAttribute("origHeight") == null) {
      elem.setAttribute("origHeight",elem.offsetHeight);
    }
    elem.style.height = "0px";
    elem.style.overflow = "hidden";
  }
  if (elem.className == "toggler") {
    elem.style.cursor = "pointer";
    if (addEvent) {
/* Removed +- from headings
      if (lastToggle == null) {
        elem.innerHTML = "[-]&nbsp;" + elem.innerHTML;
        lastToggle = elem;
      } else {
        elem.innerHTML = "[+]&nbsp;" + elem.innerHTML;
      }
*/
      if (elem.addEventListener) {
        elem.addEventListener("click",toggleClick, false);
      } else if (elem.attachEvent) {
        elem.attachEvent("onclick",toggleClick);
      } else {
        elem.onclick = toggleClick;
      }
    }
  }  

  for (var i = 0; i < elem.childNodes.length; i++) {
     setChildElements(elem.childNodes[i], addEvent);
  }
  
}

function toggleClick(e) {
  var clickElem;
  var parent;
  if (e.target) {
    clickElem = e.target;

  } else {
    clickElem = e.srcElement;
  }
/* removed +- from headings
  if (lastToggle != null) {
    lastToggle.innerHTML = lastToggle.innerHTML.replace("[-]","[+]");
  }
  lastToggle = clickElem;
  clickElem.innerHTML = clickElem.innerHTML.replace("[+]","[-]");
*/
  parent = clickElem.parentNode;
  for (var i = 0; i < parent.childNodes.length; i++) {
    if (parent.childNodes[i].className == "element") {
      lastElement = visibleElement;
      visibleElement = parent.childNodes[i];
      intervalID = window.setInterval("swapElements()",10);
    }
  } 
}

function swapElements() {
  var lastDone = false;
  var visDone = false;
  if(lastElement != null) {
    var lastHeight = parseInt(lastElement.style.height);
    lastHeight = lastHeight - 1;
    if (lastHeight > 0) {
      lastElement.style.height = lastHeight + "px";
    } else {
      lastElement.style.height = "0px";
      lastDone = true;
    }
  }

  if(visibleElement != null) {
    var elemHeight = parseInt(visibleElement.style.height);
    elemHeight = elemHeight + 1;
    if (elemHeight > visibleElement.getAttribute("origHeight")) {
      visibleElement.style.height = visibleElement.getAttribute("origHeight") + "px";
      visDone = true;
    } else {
      visibleElement.style.height = elemHeight + "px";
    } 
  }

  if (lastDone && visDone) {
    window.clearInterval(intervalID);
  }
}