//--------------------------------------------------------------------------------
// Observe FAQ toggle links.
$$('dt a').each(function(link) {
	Event.observe(link, 'click', ToggleOpen);
});

//--------------------------------------------------------------------------------
// Observe FAQ close links.
$$('dd *.closer a').each(function(link) {
	Event.observe(link, 'click', CloseButtonClick);
});

//--------------------------------------------------------------------------------
// Close an FAQ item.
function CloseButtonClick(event) {
	// This is the link that was clicked.
	link = Event.element(event);

	// link.up = <dd>. definition.previous() = <dt>.
	definition = link.up(2);
	term       = definition.previous();

	// Close FAQ item.
	term.removeClassName('open');
	definition.removeClassName('open');

	// Terminate the event.
	Event.stop(event);
}

//--------------------------------------------------------------------------------
// Toggle a question's class.
function ToggleOpen(event) {
	// This is the link that was clicked.
	link = Event.element(event);
	if (link.hasClassName('plus-minus')) {
		link = link.up();
	}

	// link.up() = <dt>. link.up().next() = <dd>.
	term       = link.up();        // <dt>
	definition = link.up().next(); // <dd>

	// Toggle visibility.
	if (!definition.hasClassName('open')) {
		term.addClassName('open');
		term.down('.plus-minus').update('-');
		definition.addClassName('open');
	} else {
		term.removeClassName('open');
		term.down('.plus-minus').update('+');
		definition.removeClassName('open');
	}

	// Terminate the event.
	Event.stop(event);
}

//--------------------------------------------------------------------------------
// Open all FAQ items.
function OpenAll() {
	var pm;
	$$('dt').each(function(term) {
		definition = term.next(); // next = <dd>
		definition.addClassName('open');
		term.addClassName('open');
		pm = term.down('.plus-minus')
		if (pm) {
			pm.update('-');
		}
	});
}

//--------------------------------------------------------------------------------
// Close all FAQ items.
function CloseAll() {
	$$('dt').each(function(term) {
		definition = term.next(); // next = <dd>
		definition.removeClassName('open');
		term.removeClassName('open');
		pm = term.down('.plus-minus')
		if (pm) {
			pm.update('+');
		}
	});
}

//--------------------------------------------------------------------------------
// Show either all categories or one certain category.
function ShowCategory(category) {
	$$('*.category').each(function(element) {
		if ((element.identify() == category) || (category == 'all')) {
			element.setStyle({display: 'block'});
		} else {
			element.setStyle({display: 'none'});
		}
	});
}

