var cats = {

	ctrls: [],

	init: function() {
		var root = $('sub-menu').getElementsByTagName('ul')[0];
		if (root /* && (!document.all || window.opera) */) {
			var ctrl = document.createElement('span');
			ctrl.href = '#';
			ctrl.className = 'ctrl off';
			ctrl.appendChild(document.createTextNode(' '))
			var li, lis = root.getElementsByTagName('li');
			for (var i = 0; i < lis.length; i++) {
				li = lis[i];
				if (li.getElementsByTagName('ul').length > 0) {
					ctrl2 = ctrl.cloneNode(true);
					ctrl2.onclick = function() {
						cats.toggle(this);
						return false;
					};
					li.insertBefore(ctrl2, li.firstChild);
					cats.setOff(ctrl2);
					li.ctrl = ctrl2;
					cats.ctrls.push(ctrl2);
				}
			}
			var current;
			for (var i = 0; i < lis.length; i++) {
				li = lis[i]
				if (ClassName.has(li, 'current')) {
					current = li;
					break;
				}
			}
			if (!current) {
				var link, links = root.getElementsByTagName('a');
				for (var i = 0; i < links.length; i++) {
					link = links[i]
					if (ClassName.has(link, 'current')) {
						current = link.parentNode;
						break;
					}
				}
			}

			if (current) {

				for (el = current; el.tagName == 'LI'; el = el.parentNode.parentNode) {
					if (el.ctrl) {
						cats.setOn(el.ctrl);
					}
				}
			}
			/* $('set-all-off').onclick = function() {
				cats.setAll(cats.setOff);
			}
			$('set-all-on').onclick = function() {
				cats.setAll(cats.setOn);
			} */
		}
	},

	toggle: function(ctrl) {
		if (ctrl.isOn) {
			cats.setOff(ctrl);
		} else {
			cats.setOn(ctrl);
		}
	},

	setAll: function(how) {
		for (var i = 0; i < cats.ctrls.length; i++) {
			how(cats.ctrls[i]);
		}
	},

	setOn: function(ctrl) {
		if (ctrl.parentNode.getElementsByTagName('ul').length == 0) {

		}
		ctrl.isOn = true;
		ClassName.remove(ctrl.parentNode, 'off');
		ctrl.firstChild.data = '-';
	},

	setOff: function(ctrl) {
		ctrl.isOn = false;
		ClassName.add(ctrl.parentNode, 'off');
		ctrl.firstChild.data = '+';
	}


}


cats.init();

