function wp_navbar_folding(menubarid, navtree, options, styleOptions)
{
	var me = this;

	me.options={'bExpandCurrentPage':true};
	if( options )
	{	me.options = WpNavBar.mergeOptions( me.options, options );}
	me.styleOptions={"m_iMaxStyleLevel":1};
	if( styleOptions )
	{	me.styleOptions = WpNavBar.mergeOptions( me.styleOptions, styleOptions ); }

	var myDIV = document.getElementById( menubarid );
	if( myDIV === null || navtree === null || navtree.childArray === null )
	{
		document.write('&nbsp;');
		return;
	}

	me.WriteMenu = function(level, parentelem, navtreemenu)
	{
		var bIncludesCurrentPage = false;
		var iStyleLevel = Math.min( level, this.styleOptions.m_iMaxStyleLevel );
		var classname = 'level' + iStyleLevel;
		var limitFn = function(event) { wp_navbar_folding.limitEvent(event); return true; };
	
		var myUL = document.createElement('UL');
		parentelem.appendChild(myUL);
		myUL.className = classname;
		myUL.onclick = limitFn;
		if( level !== 0 )
		{	
			myUL.style.display='none';//closed by default
		}
	
		for( var index = 0; index < navtreemenu.length; index++ )
		{
			var navbaritem = navtreemenu[index];
			var haschildren = navbaritem.childArray && (navbaritem.childArray.length > 0);
			var sTarget = navbaritem.sTarget ? navbaritem.sTarget : '_self';
	
			if( navbaritem.bSeparator )
			{
				var mySeparatorLI = document.createElement('LI');
				myUL.appendChild(mySeparatorLI);
				mySeparatorLI.style.listStyleImage='none';//never want list images on separators
				mySeparatorLI.style.listStyleType='none';
				mySeparatorLI.className = classname + ' ' + classname + '_separator';
				var myHR = document.createElement('HR');
				mySeparatorLI.appendChild(myHR);
				myHR.style.display='block';
				myHR.className = classname + ' ' + classname + '_separator';
			}
			var myLI = document.createElement('LI');
			myLI.className = classname;
			myUL.appendChild(myLI);
			if( haschildren )
			{
				myLI.className += " " + classname + "_hassubmenu"; 
			}
			if( navbaritem.bIsCurrentPage )
			{
				bIncludesCurrentPage = true;
				myLI.className += " " + classname + "_currentpage";
			}
			
			var myText = document.createTextNode(navbaritem.sTitle);
			if( !navbaritem.sUrl )
			{
				myLI.className += " " + classname + "_nolink"; 
				var mySPAN = document.createElement('SPAN');
				myLI.appendChild(mySPAN);
				mySPAN.onclick = limitFn;
				mySPAN.className = myLI.className;
				mySPAN.appendChild(myText);
			}
			else
			{
				var myAnchor = document.createElement('A');
				myLI.appendChild(myAnchor);
				myAnchor.onclick = limitFn;
				myAnchor.className = myLI.className; //classname;
				myAnchor.href = navbaritem.sUrl;
				myAnchor.sTarget = sTarget;
	
				myAnchor.appendChild(myText);
			}
	
			if( haschildren )
			{
				myLI.onclick = function(event) { wp_navbar_folding.limitEvent(event); wp_navbar_folding.toggle(this); return true; };
				myLI.onselectstart = function () { return false; }; // ie
				myLI.onmousedown = function () { return false; }; // moz
			}
	
			if( haschildren )
			{	//Add child items
				myLI.className += " " + classname + "_closed"; 
				var bChildIncludesCurrentPage = this.WriteMenu( level+1, myLI, navbaritem.childArray);
				if( bChildIncludesCurrentPage )
				{
					bIncludesCurrentPage = bChildIncludesCurrentPage;
				}
				if( bChildIncludesCurrentPage || (navbaritem.bIsCurrentPage && this.options.bExpandCurrentPage) )
				{	//Either	(a) the current page is a child of this page; or
					//			(b) this is the current page and we want to expand the current page
					wp_navbar_folding.toggle(myLI);
				}
			}
			else
			{
				myLI.onclick = limitFn;
				myLI.className += " " + classname + "_nomenu";
			}
		}
		return bIncludesCurrentPage;
	};


	me.WriteMenu(0, myDIV, navtree.childArray, menubarid);
}


wp_navbar_folding.toggle = function(me)
{
	for( var child = me.firstChild; child; child=child.nextSibling )
	{
		if( child.tagName == 'UL' )
		{
			if( me.className.indexOf("closed") != -1 )
			{
				me.className = me.className.replace( "closed", "open" );
				child.style.display = 'block';
			}
			else 
			{
				me.className = me.className.replace( "open", "closed" );
				child.style.display = 'none';
			}
		}
	}
};

wp_navbar_folding.limitEvent = function(e) {
    if (!e && window.event) {//IE
        window.event.cancelBubble = true;
    } else if (e && e.stopPropagation) {
        e.stopPropagation();
    }
};


