/**************************************************************************************
        Nested list collapsing script written by Mark Wilton-Jones - 21/11/2003
Version 1.1 - this script takes existing HTML nested UL or OL lists, and collapses them
            Updated 13/02/2004 to allow links in robaseElementTagName2 of expanding branch
***************************************************************************************

Please see http://www.howtocreate.co.uk/jslibs/ for details and a demo of this script
Please see http://www.howtocreate.co.uk/jslibs/termsOfUse.html for terms of use
_________________________________________________________________________ */


var openLists = [];
var doOnce=0;

function compactMenu(baseListID,oAutAutoCollapse2,plusMinusText) {
	if( !document.getElementsByTagName || !document.childNodes || !document.createElement ) { return false; }
	var baseElement = document.getElementById( baseListID ); 
	if( !baseElement ) { return false; }
	compactChildren( baseElement, 0, baseListID, oAutAutoCollapse2, plusMinusText, baseElement.tagName.toUpperCase() );
	return true;
}

function compactChildren( baseListElement2, oLev, baseListID2, AutoCollapse2, plusMinusText2, baseElementTagName2 ) {
	if( !oLev ) { 
		baseListID2 = escape(baseListID2); 
		if( AutoCollapse2 ) { openLists[baseListID2] = []; } 
	}
    //alert("");
    if (1) {
    	baseListElement2.style.listStyleType = 'square';
   		baseListElement2.style.listStyleImage = 'url(/icons/leaf.gif)';
		baseListElement2.style.textIndent = '0';
		//baseListElement2.style.padding = '0';
		doOnce ++;
		//alert(doOnce);
    } else {return;}

	for( var x = 0, y = baseListElement2.childNodes; y[x]; x++ ) {
		if( y[x].tagName ) {
			//for each immediate LI child
			var theNextUL = y[x].getElementsByTagName( baseElementTagName2 )[0];
			if( theNextUL ) {
			    // remove normal list type only if no children
			    baseListElement2.style.listStyleType = 'none';
			    baseListElement2.style.listStyleImage = 'none';
			    baseListElement2.style.textIndent = '-2em';
			    //baseListElement2.style.padding = '-2em';

				//collapse the first UL/OL child
				theNextUL.style.display = 'none';
				//create a link for expanding/collapsing
				var newLink = document.createElement('A');
				newLink.className='tree2';
				newLink.setAttribute( 'href', '#' );
				newLink.onclick = new Function( 'clickSmack(this,' + oLev + ',\'' + baseListID2 + '\',' + AutoCollapse2 + ',\'' + escape(baseElementTagName2) + '\');switchit(this.parentNode.getElementsByTagName("IMG")[0]);return false;' );
				newLink.onmouseover = new Function('over(this.parentNode.getElementsByTagName("IMG")[0]);');
				newLink.onmouseout = new Function('out(this.parentNode.getElementsByTagName("IMG")[0]);');
				newLink.title = "Click to expand menu";
				
				
				//wrap everything upto the child U/OL in the link
				var theT = y[x].innerHTML.toUpperCase().indexOf('<'+baseElementTagName2);
				var theA = y[x].innerHTML.toUpperCase().indexOf('<A');
				var theHTML = y[x].innerHTML.substr(0, ( theA + 1 && theA < theT ) ? theA : theT );
				while( !y[x].childNodes[0].tagName || 
						( y[x].childNodes[0].tagName.toUpperCase() != baseElementTagName2 &&
							y[x].childNodes[0].tagName.toUpperCase() != 'A' ) ) {
					y[x].removeChild( y[x].childNodes[0] ); 
				}
				y[x].insertBefore(newLink,y[x].childNodes[0]);
				y[x].childNodes[0].innerHTML = plusMinusText2 + theHTML.replace(/^\s*|\s*$/g,'');
				compactChildren( theNextUL, oLev + 1, baseListID2, AutoCollapse2, plusMinusText2, baseElementTagName2 );
			} else {
				// y[x].childNodes[0].innerHTML = '&nbsp;- ' + y[x].innerHTML.replace(/^\s*|\s*$/g,'');
				compactChildren( y[x], oLev + 1, baseListID2, AutoCollapse2, plusMinusText2, baseElementTagName2 );
			    //y[x].style.listStyleType = 'square';
			   	//y[x].style.listStyleImage = 'url(/icons/leaf.gif)';
			   	baseListElement2.style.textIndent = '-6';
			}
		} 
	} 
}

function clickSmack( baseElementTagName2hisOb, oLevel, baseListID2, AutoCollapse2, baseElementTagName2 ) {
	// alert("clicksmack("+baseElementTagName2hisOb + ', ' + oLevel + ', ' + baseListID2 + ', ' + AutoCollapse2 + ', ' + baseElementTagName2 + ')');
	if (baseElementTagName2hisOb.title=="Click to expand menu") {
		baseElementTagName2hisOb.title="Click to collapse menu";
	} else {
		baseElementTagName2hisOb.title="Click to expand menu";
	}
	if( baseElementTagName2hisOb.blur ) { baseElementTagName2hisOb.blur(); }
	baseElementTagName2hisOb = baseElementTagName2hisOb.parentNode.getElementsByTagName( unescape(baseElementTagName2) )[0];
	if( AutoCollapse2 ) {
		for( var x = openLists[baseListID2].length - 1; x >= oLevel; x-=1 ) { 
			if( openLists[baseListID2][x] ) {
				openLists[baseListID2][x].style.display = 'none'; if( oLevel != x ) { openLists[baseListID2][x] = null; }
			}
		}
		if( baseElementTagName2hisOb == openLists[baseListID2][oLevel] ) { 
			openLists[baseListID2][oLevel] = null; 
		}
		else { 
			baseElementTagName2hisOb.style.display = 'block'; 
			openLists[baseListID2][oLevel] = baseElementTagName2hisOb;
		}
	} else { 
		baseElementTagName2hisOb.style.display = ( baseElementTagName2hisOb.style.display == 'block' ) ? 'none' : 'block'; }
}
