﻿// checks node names like h1, h2 if the tag node, say h2 is lower in hierarchy than the test node, e.g. a h1 node.
function isSameOrBiggerHeadline(test,tag) {
	if (test.indexOf("H") == 0 && tag.indexOf("H") == 0) {
		if (parseInt(test.substr(test.length - 1,1)) <= parseInt(tag.substr(tag.length - 1,1))) return true;
	}
	return false;
}


function collapseAndExpand(node) {
	var myTag = node.nodeName;

	var displaying = "block";

	node = node.nextSibling;
	while (node != null && node.nodeType == 3) node = node.nextSibling;
		
	if (node.style.display == "block") displaying = "none";

	weAreInAHiddenArticle=false;
	hiddenArticleTag="";
	while (node != null && node.nodeName != myTag && !isSameOrBiggerHeadline(node.nodeName,myTag)) {
		if (node.style) {
		
//			if (node.id == "a" || node.id == "b") alert("we are at "+node.id+": weAreInAHiddenArticle "+weAreInAHiddenArticle+" isSameOrBiggerHeadline("+node.nodeName+","+hiddenArticleTag+") "+isSameOrBiggerHeadline(node.nodeName,hiddenArticleTag));
			// if we are in "hidden" mode and encounter something higher (in hierarchy) or 
			// at the same level, change to normal.
			if ( weAreInAHiddenArticle && isSameOrBiggerHeadline(node.nodeName,hiddenArticleTag) ) {
				weAreInAHiddenArticle=false;
				hiddenArticleTag="";
			}

			// so only change visibility if we are not in hidden mode
			if ( ! weAreInAHiddenArticle ) node.style.display = displaying;

			// if we encounter the "hidden" keyword, skip changing for all following <p>s
			if (node.className == "hidden") {
				weAreInAHiddenArticle=true;
				hiddenArticleTag=node.nodeName;
			}
		}
		node = node.nextSibling;		
	}
}

