// menu.js
// Controls left nav elements

// Handle click on menu outer item
function menuclick(element)
{
	// If we are the'open' item, hide the kids
	if(element==IFC_mainopen)
	{
		element.next().select('.navsub').each(
			function(sub)
			{
				sub.hide();
			}
		)
		IFC_mainopen=0;
		element.down().src='images/downarrow.png';
		return 0;
	}

	// Oherwise close the one that IS open
	if(IFC_mainopen)
	{
		other_el=$(IFC_mainopen);
		other_el.next().select('.navsub').each(
			function(sub)
			{
				sub.hide();
			}
		)
		other_el.down().src='images/downarrow.png';
		IFC_mainopen=0;
	}

	// Otherwise show them off proudly
	// If we are the'open' item, hide the kids
	element.next().select('.navsub').each(

		function(sub_element)
		{
			Effect.SlideDown(sub_element, { duration: 0.1 })
		}
	)
	element.down().src='images/uparrow.png';
	IFC_mainopen=element;
	return 0;
}

// Generic function to add a class handler to every element of a given class
// Eg: IFC_addClassEventHandler("telno","mouseover",function(){grow(this)});
function IFC_addClassEventHandler(_class,_event,_handler)
{
	_class="." + _class;
	_elArray=$$(_class);
	_elArray.each(
		function(_item){
			_item.observe(_event, _handler.bindAsEventListener(_item) );
		}
	)
}

// Code to load the click events
function domenuhandlers(pagename)
{
	IFC_mainopen=false;
	$$('.navsub').each( function(el) { el.hide(); } );
	IFC_addClassEventHandler('navmain','click', function() { menuclick(this) } );
	IFC_addClassEventHandler('navlink','click', function() {   } );
	IFC_addClassEventHandler('navmain','mouseover', function() { this.toggleClassName('navmain');  this.toggleClassName('navmain_h'); } );
	IFC_addClassEventHandler('navmain','mouseout',  function() { this.toggleClassName('navmain');  this.toggleClassName('navmain_h'); } );
	IFC_addClassEventHandler('navlink','mouseover', function() { this.toggleClassName('navlink');  this.toggleClassName('navlink_h'); } );
	IFC_addClassEventHandler('navlink','mouseout',  function() { this.toggleClassName('navlink');  this.toggleClassName('navlink_h'); } );

	// Now look for the parent of the navsub element matching the current page (pagename is included in the HTML of that element)
	// First look for a match on a main element
	matched=false;
	$$('.navmain').each( function(el)
	{
		matched=el.innerHTML.match(pagename);
		if(matched)
		{
			try {
				el.next().select('.navsub').each(function(subel){
					subel.show();
				})
			} 
			catch (err) { return 0;
			}
			return 0;
		}
	} );

	// Otherwise look for a match on a sub element
	$$('.navsub').each( function(el)
	{
		matched=el.innerHTML.match(pagename);
		if(matched)
		{
			el.up().select('.navsub').each ( function(subel) { subel.show(); } )
			return 0;
		}
	} );


}


// Bookmarks
 function create_bookmark(url, title) {
	if (window.sidebar) { // Mozilla Firefox Bookmark
		window.sidebar.addPanel(title, url,"");
		return true;
	} else if( window.external ) { // IE Favorite
		window.external.AddFavorite( url, title);
		return true; }
	else if(window.opera && window.print) { // Opera Hotlist
		return true; }
	return false;
 }
