
/****************
*
* 
* Author: Ben West
* Alexa Internet
* Requires: 
*  - prototype.js
*  - behaviour.js 
****************/


// Execute onload but try not to clobber namespace.
Event.observe(window, "load", init_navbar_behaviors);

function init_navbar_behaviors(event) {
	// get the current page
	var page = document.getElementsByTagName('body')[0].id + '_nav';
	// get navbar divs
	var elements = $A(document.getElementsBySelector('#siteSideNav div.navbar'));
	// loop through them
	var side_bar_title;
	elements.each( function (element) {
		side_bar_title = find_sidebar_title(element);
		// attach event
		Event.observe(side_bar_title, 'click', toggle_sidebar);
		if(element.id != page) {
			toggle_sidebar(false, side_bar_title);
		} else {
			toggle_sidebar(false, side_bar_title);
			toggle_sidebar(false, side_bar_title);
		}
	});
		
}

function find_sidebar_title(element) {
	var title_element = element;
	while( title_element && title_element.nodeName != 'H2' ) {
		if( !title_element.previousSibling ) {
			title_element = null;
			break;
		}
		title_element = title_element.previousSibling;
	}
	/*
	if(title_element && title_element.nodeName == 'H2') {
		title_element = title_element.getElementsByTagName('A')[0];
	}
	*/
	return title_element;
}

function toggle_sidebar(event, title) {
	var target;
	var element;
	if(event) {
		target = Event.findElement(event, 'H2');
	}
	if(title) {
		target = title;
	} 
	element = target.nextSibling;
	while( element.nextSibling ) {
	if(element.nodeType != 3) {
		if( element.nodeType != 3 && Element.hasClassName(element, 'navbar')) break;
	}
		element = element.nextSibling;
	}
	if(Element.hasClassName(target, 'closed')) {
		Element.removeClassName(target, 'closed');
		Element.addClassName(target, 'open');
		Element.removeClassName(element, 'hide_nav');
	} else {
		Element.removeClassName(target, 'open');
		Element.addClassName(target, 'closed');
		Element.addClassName(element, 'hide_nav');

	}
	if(event) {
		Event.stop(event);
	}
	return false;
}



