/* easytoggle2.js
   - Simon Willison, 5th November 2003
   - See http://simon.incutio.com/archive/2003/11/06/easytoggle
*/

addEvent(window, 'load', et_init);

var et_toggleElements = [];


/* Initialisation */
function et_init() {
	et_toggleElements.length = 0;
	var i, link, id, target, select_index = 0;
	for (i = 0; (link = document.links[i]); i++) {
		if (/\btoggle\b/.exec(link.className)) {
			if (/\bactive\b/.exec(link.className)) {
				select_index = i;
				break;
			}
		}
	}
	for (i = 0; (link = document.links[i]); i++) {
		if (/\btoggle\b/.exec(link.className)) {
			id = link.href.split('#')[1];
			target = document.getElementById(id);
			et_toggleElements[et_toggleElements.length] = target;
			if (i == select_index) {
				if (!(/\bactive\b/.exec(link.className))) {
 					link.className = link.className + ' active';
				}
				target.style.display = 'block';
			} else {
				target.style.display = 'none';
				link.className = link.className.replace(' active', '');
			}
			link.onclick = et_toggle;
		}
	}
}

function et_toggle(e) {
	/* Adapted from http://www.quirksmode.org/js/events_properties.html */
	if (typeof e == 'undefined') {
		var e = window.event;
	}
	var source;
	if (typeof e.target != 'undefined') {
		source = e.target;
	} else if (typeof e.srcElement != 'undefined') {
		source = e.srcElement;
	} else {
		return true;
	}
	/* For most browsers, targ would now be a link element; Safari however
	   returns a text node so we need to check the node type to make sure */
	if (source.nodeType == 3) {
		source = source.parentNode;
	}
	var id = source.href.split('#')[1];
	var elem;
	for (var i = 0; (elem = et_toggleElements[i]); i++) {
		if (elem.id != id) {
			elem.style.display = 'none';
		} else {
			elem.style.display = 'block';
		}
	}
	/* Now go through and add 'active' to the current link, remove it from the non-current */
	for (i = 0; (link = document.links[i]); i++) {
		if (/\btoggle\b/.exec(link.className)) {
			link.className = link.className.replace(' active', '');
		}
	}
	source.className = source.className + ' active';
	return false;
}

/* Thanks to Scott Andrew */
function addEvent(obj, evType, fn){
	if (obj.addEventListener) {
		obj.addEventListener(evType, fn, true);
		return true;
	} else if (obj.attachEvent) {
		var r = obj.attachEvent("on"+evType, fn);
		return r;
	} else {
		return false;
	}
}

function editObject(type) {
	var obj = document.getElementById("item_" + type + "_id");
	document.location="/" + type + "s/edit/" + obj.value;
}

function showObject(type) {
	var obj = document.getElementById("item_" + type + "_id");
	document.location="/" + type + "s/show/" + obj.value;
}

function setObjectVisibility(type) {
	var obj = document.getElementById("item_" + type + "_id");
	document.location="/" + type + "s/setvisibility/" + obj.value;
}
