function initTogglingList() {
	$$('dl.toggle').each(function(list) { new TogglingList(list, list.className.indexOf('single_mode') >= 0); });
}

var TogglingList = Class.create();

TogglingList.prototype = {
	initialize: function(list, closeActive) {
		this.list = $(list);
		this.active = null;
		this.closeActive = closeActive || false;
		this.list.addClassName('toggling');
		this.terms = $($A(this.list.getElementsByTagName('dt'))).each(this.initTerm);
		this.definitions = $($A(this.list.getElementsByTagName('dd')));
		this.definitions.each(function(def) { $(def).addClassName('hidden'); });
	},

	initTerm: function(term) {
		var link = HTMLDOMUtil.createElement('a', null, null, term.innerHTML.strip(), ['href', '#']);
		link.definition_list = this;

		link.onclick = function() {
			term = $(term);

			if (this.closeActive && this.definition_list.active != null && this.definition_list.active != term) {
				this.definition_list.active.nextSiblings()[0].toggleClassName('hidden');
				this.definition_list.active.toggleClassName('open');
			}

			term.nextSiblings()[0].toggleClassName('hidden');
			term.toggleClassName('open');
			if (this.definition_list.active == term) this.definition_list.active = null;
			this.definition_list.active = term;

			this.blur();
			return false;
		};

		Element.update(term);
		term.appendChild(link);
	}
};