

/*
 * There are several CSS class names which are used in this script:
 *  .highlight         Is set on mouseOver for rows in tables.
 *  .tocHighlight      Is set on mouseOver entries in the tables of contents.
 *  .tocTopHighlight
 *  .cTocHighlight     The currently selected entry in the tables of contents.
 *  .aktKW
 */

var current = "";
var currentTop = false;
var cKW = "";
var base = document.URL.replace(/.*?[/\\]([-_A-Za-z0-9\.]+[^_\.])_?(ix|kwSelect|[0-9]+)\.(html|htm|xml|php|asp|aspx)\??.*/, "$1").replace(/_kw$/, "");

function init(){
	 current = 0;
	 setBoldCurrent();
}

function highlightToc(elem){
		var tr = elem;
		while (tr.nodeName != "TR"){
			tr = tr.parentNode;
		}
		tr.className = tr.className + " tocHighlight ";
}

function unhighlightToc(elem){
		var tr = elem;
		while (tr.nodeName != "TR"){
			tr = tr.parentNode;
		}
		tr.className = tr.className.replace(/tocHighlight/g, "");
}

function highlightCToc(elem){
			elem.className = elem.className + " cTocHighlight ";
}
function unhighlightCToc(elem){
	elem.className = elem.className.replace(/cTocHighlight/g, "");
}


function highlight(elem){
	elem.className = elem.className + " highlight ";
}
function unhighlight(elem){
	elem.className = elem.className.replace(/highlight/g, "");
}

function highlightTopToc(elem){
	elem.className = elem.className + " tocTopHighlight ";
}
function unhighlightTopToc(elem){
	elem.className = elem.className.replace(/tocTopHighlight/g, "");
}


function setBold(elem){
	current = elem.parentNode.parentNode;
	top.focus();
	highlightToc(elem);

        var tr = elem.parentNode;
        while (tr.nodeName != "TR") {
                tr = tr.parentNode;
        }
        hideOToc(tr);

}

function setBoldCurrent(){
	var cFrame = top.frames["content"];
	var iFrame = top.frames["index"];
	if (current){
		unhighlightToc(current);
	}
	var links = iFrame.document.getElementsByTagName("a");
	var loc = (cFrame.location + "").replace(/^.*\//, "");
	var done = false;
        var i;
	for (i = 0 ; i < links.length; i++){
		if (links[i].href.replace(/^.*\//, "") == loc){
			highlightToc(links[i].parentNode);
			current = links[i].parentNode.parentNode;
			if (!done){
				hideOToc(links[i].parentNode.parentNode);
			}
			done = true;
		} else {

			unhighlightToc(links[i].parentNode);
		}
	}
	if (!done){
		for (i = 0 ; i < links.length; i++){
			if (links[i].pathname.replace(/^.*[\/\\]/, "") == loc){
				highlightToc(links[i]);
				current = links[i];
			if (!done){
				hideOToc(links[i].parentNode.parentNode);
			}
				done = true;
				break;
			}
		}
	}

}

function hideOToc(tr){
	var myLevel = tr.className.replace(/.* ?l([0-9]+).*/, "$1");
	currentTop = false;
	hideOTocBefore(tr.previousSibling, myLevel, myLevel);
	hideOTocAfter(tr.nextSibling, myLevel, true);
}
function hideOTocBefore(tr, level, oLevel){
	if (tr != null) {
		if ( tr.nodeType == 1 && tr.className.match(/l[0-9]+/)){
			unhighlightToc(tr);
			var myLevel = tr.className.replace(/.* ?l([0-9]+).*/, "$1");
			if (myLevel > level){
				tr.style.display = "none";
			} else {
			/*table-row is not accepted by IE*/
				tr.style.display = "";
			}
			if (myLevel == 1 && !currentTop && myLevel < oLevel) {
				highlightTopToc(tr);
				currentTop = true;
			}
			if (myLevel < level){
				if (myLevel == 1) {
					currentTop = true;
				}
				if (!currentTop){
					highlightTopToc(tr);
				}
				hideOTocBefore(tr.previousSibling, myLevel, oLevel);
			} else {
				if (!currentTop){
					unhighlightTopToc(tr);
				}
				hideOTocBefore(tr.previousSibling, level, oLevel);
			}
		} else {
			hideOTocBefore(tr.previousSibling, level, oLevel);
		}
	}
}

function hideOTocAfter(tr, level, ext){
	if (tr != null) {
		if (tr.nodeType == 1 && tr.className.match(/l[0-9]+/)){
			unhighlightToc(tr);
			var myLevel = tr.className.replace(/.* ?l([0-9]+).*/, "$1");
			if (ext && myLevel > level){
				level = myLevel;
			}
			if (myLevel > level){
				tr.style.display = "none";
			} else {
				tr.style.display = "";
				unhighlightTopToc(tr);
			}
			if (myLevel < level){
				hideOTocAfter(tr.nextSibling, myLevel, false);
			} else {
				hideOTocAfter(tr.nextSibling, level, false);
			}
		} else {
			hideOTocAfter(tr.nextSibling, level, ext);
		}
	}
}		


	
