
function add_event_to_object(obj, event_type, callback) {
	if (obj.addEventListener) obj.addEventListener(event_type, callback, true)
	else if (obj.attachEvent) obj.attachEvent("on"+event_type, callback)
}

function stop_event(evt) {
	if (evt.preventDefault) evt.preventDefault();
	else evt.returnValue = false;
}

function initialize_features() {
	var tabs = tab_elements();
	for (var i=0, len=tabs.length; i < len; i++) {
		add_event_to_object(tabs[i], "click", set_clicked_tab_as_active);
	}
	set_active_tab(get_tab_name(tabs[0]));
}

function tab_elements() {
	return document.getElementById("features_selector").getElementsByTagName("li");
}

function set_active_tab(active_tab_name) {
	var tab_name, tabs=tab_elements(), feature, is_active;
	for (var i=0, len=tabs.length; i < len; i++) {
		tab_name = get_tab_name(tabs[i]);
		is_active = tab_name == active_tab_name;
		feature = document.getElementById(tab_name);
		tabs[i].className = is_active ? "active" : "";
		feature.style.display = is_active ? "block" : "none";
	}
}

function set_clicked_tab_as_active(evt) {
	if (!evt) evt = window.event;
	var element = (evt.target) ? evt.target : evt.srcElement;
	var tab = element.parentNode;
	set_active_tab(get_tab_name(tab));
	stop_event(evt);
}

function get_tab_name(tab) {
	var link = tab.getElementsByTagName("a")[0];
	return link.href.substr(link.href.indexOf('#')+1);
}

add_event_to_object(window, "load", initialize_features);
