// JavaScript Document
function autoInit_trees() {
	var possibletrees = document.getElementsByTagName('ul');
	for(var i=0;i<possibletrees.length;i++) {
		if(possibletrees[i].className && possibletrees[i].className.indexOf('tree') != -1) {
			initTree(possibletrees[i]);
			possibletrees[i].className = possibletrees[i].className.replace(/ ?unformatted ?/, ' ');
		}
	}
var divh = document.getElementById('bar').offsetHeight;
var newDivh=divh-20
var x = document.getElementById('middlebar').style.height=newDivh +"px";
}


function initTree(el) {
	var i,j;	var spanA, spanB, spanC;	var startP, stopP, childUL;
	for(i=0;i<el.childNodes.length;i++) {
		if(el.childNodes[i].tagName && el.childNodes[i].tagName.toLowerCase() == 'li') {
			var li = el.childNodes[i];
			spanA = document.createElement('span');			
			spanB = document.createElement('span');			
			spanC = document.createElement('span');
			spanA.appendChild(spanB);			
			spanB.appendChild(spanC);
			spanA.className = 'a ' + li.className.replace('closed','spanClosed');
			spanA.onMouseOver = function() {}
			spanB.className = 'b';			
			spanB.onclick = treeToggle;
			spanC.className = 'c';
			stopP = li.childNodes.length;
			startP = 0;			
			childUL = null;
			for(j=0;j<li.childNodes.length;j++) {
				if(li.childNodes[j].tagName && li.childNodes[j].tagName.toLowerCase() == 'div') {
					startP = j + 1;
					continue;				}
				if(li.childNodes[j].tagName && li.childNodes[j].tagName.toLowerCase() == 'ul') {
					childUL = li.childNodes[j];
					stopP = j;
					break;					
				}
			}
			for(j=startP;j<stopP;j++) {
				spanC.appendChild(li.childNodes[startP]);
			}
			if(li.childNodes.length > startP) li.insertBefore(spanA, li.childNodes[startP]);
			else li.appendChild(spanA);
			if(childUL != null) {
				if(initTree(childUL)) {
					addClass(li, 'children', 'closed');
					addClass(spanA, 'children', 'spanClosed');
				}
			}
		}
	}
	
	if(li) {
		// li and spanA will still be set to the last item
		addClass(li, 'last', 'closed');
		addClass(spanA, 'last', 'spanClosed');
		return true;
	} else {
		return false;
	}
}

function treeToggle(el, force) {
	el = this;

	while(el != null && (!el.tagName || el.tagName.toLowerCase() != "li")) el = el.parentNode;
	
var childSet = findChildWithTag(el, 'ul');
	var topSpan = findChildWithTag(el, 'span');
	//closeAllSiblings (el, 'li' ); //alert('test');
	if( force != null ){
		if( force == "open"){
	treeOpen( topSpan, el )
		}
		else if( force == "close" ){
			treeClose( topSpan, el )
		}
	}
	else if( childSet != null) {
		if(!el.className.match(/(^| )closed($| )/)) {		
			treeClose( topSpan, el )
		} else {			
closeAllSiblings (el, 'li' );
			treeOpen( topSpan, el );		}	}

var divh = document.getElementById('bar').offsetHeight;
var newDivh=divh-20
var x = document.getElementById('middlebar').style.height=newDivh +"px";
}

function closeAllSiblings(el, tag) 
{
	theParent = el.parentNode;	//alert (theParent.innerHTML);
	for(var i=0;i<theParent.childNodes.length;i++) 
	{
		if(theParent.childNodes[i].tagName == "LI" ) 
		{
			thischild = theParent.childNodes[i];
			for(var z=0;z<thischild.childNodes.length;z++) 
			{
				if(thischild.childNodes[z].tagName == "SPAN") 
				{	
addClass(thischild.childNodes[z],'spanClosed');
addClass(theParent.childNodes[i],'closed');
				}				}		}		}}

function treeOpen( a, b ){
	removeClass(a,'spanClosed');
	removeClass(b,'closed');
}
function treeClose( a, b ){
	addClass(a,'spanClosed');
	addClass(b,'closed');
}

function findChildWithTag(el, tag) {
	for(var i=0;i<el.childNodes.length;i++) {
		if(el.childNodes[i].tagName != null && el.childNodes[i].tagName.toLowerCase() == tag) return el.childNodes[i];
	}
	return null;
}
function addClass(el, cls, forceBefore) {
	if(forceBefore != null && el.className.match(new RegExp('(^| )' + forceBefore))) {
		el.className = el.className.replace(new RegExp("( |^)" + forceBefore), '$1' + cls + ' ' + forceBefore);
	} else if(!el.className.match(new RegExp('(^| )' + cls + '($| )'))) {
		el.className += ' ' + cls;
		el.className = el.className.replace(/(^ +)|( +$)/g, '');
	}
}

function removeClass(el, cls) {
	var old = el.className;
	var newCls = ' ' + el.className + ' ';
	newCls = newCls.replace(new RegExp(' (' + cls + ' +)+','g'), ' ');
	el.className = newCls.replace(/(^ +)|( +$)/g, '');
} 
 _LOADERS = Array();
function callAllLoaders() {
	var i, loaderFunc;
	for(i=0;i<_LOADERS.length;i++) {
		loaderFunc = _LOADERS[i];
		if(loaderFunc != callAllLoaders) loaderFunc();
	}
}
function appendLoader(loaderFunc) {
	if(window.onload && window.onload != callAllLoaders)
		_LOADERS[_LOADERS.length] = window.onload;
	window.onload = callAllLoaders;
	_LOADERS[_LOADERS.length] = loaderFunc;
}

