var tocShowText = "показать";
var tocHideText = "скрыть";

function MozSourceIndex(obj) {
  var i;
  var allElements = document.getElementsByTagName("*");
  for (i = 0; i < allElements.length; i++) {
    if (obj == allElements[i])
      return i;
  }
  return 0;
}

function showTocToggle(clnm) {
	if (document.createTextNode) {
		// Uses DOM calls to avoid document.write + XHTML issues
    
		var i, sindx, outerSpan, toggleLink, linkHolder;
		var toc = getElementsByClassName(clnm, 'div');
    
		for (i = 0; i < toc.length; i++) {
		  outerSpan = document.createElement('span');
		  outerSpan.className = 'toctoggle';
      
		  sindx = toc[i].sourceIndex;
		  // For Firefox
		  if (!sindx)
		    sindx = MozSourceIndex(toc[i]);
		  toggleLink = document.createElement('a');
		  toggleLink.id = 'togglelink';
		  toggleLink.className = 'internal';
		  toggleLink.href = 'javascript:toggleToc(' + sindx + ')';
		  toggleLink.appendChild(document.createTextNode(tocHideText));
      
		  outerSpan.appendChild(document.createTextNode('['));
		  outerSpan.appendChild(toggleLink);
		  outerSpan.appendChild(document.createTextNode(']'));

		  linkHolder = toc[i].previousSibling;
		  // For Gecko-based browsers
		  while (!linkHolder.tagName)
		    linkHolder = linkHolder.previousSibling;
		  linkHolder.appendChild(document.createTextNode(' '));
		  linkHolder.appendChild(outerSpan);
		  toggleToc(sindx);
    }
	}
}

function changeText(el, newText) {
	// Safari work around
	if (el.innerText) {
		el.innerText = newText;
	} else if (el.firstChild && el.firstChild.nodeValue) {
		el.firstChild.nodeValue = newText;
	}
}

function toggleToc(sindx) {
	var allElements = document.getElementsByTagName("*");
	var toc = allElements[sindx];
	if (toc.tagName != 'DIV')
	  toc = allElements[sindx+2];
	else
	  sindx -= 2;
	var toggleLink = allElements[sindx+1];
  
	if (toc && toggleLink && toc.style.display == 'none') {
		changeText(toggleLink, tocHideText);
		toc.style.display = 'block';
	} else {
		changeText(toggleLink, tocShowText);
		toc.style.display = 'none';
	}
}

