function $i(s, p) {
	if (!p) {
		p = document;
	}
	return p.getElementById(s);
}

function $t(t, p) {
	if (!t) {
		t = "*";
	}
	if (!p) {
		p = document;
	}
	return p.getElementsByTagName(t);
}

function $a(a) {
	var r = new Array();
	for (var i = 0, l = a.length; i < l; i++) {
		r.push(a[i]);
	}
	return r;
}

Function.bind = function(f, o) {
	var a;
	if (arguments.length > 0) {
		a = $a(arguments).slice(2, arguments.length);
	}
	
	for (var i = 0, l = Function.bind.cache.length; i < l; i++) {
		var fn = Function.bind.cache[i];
		if (fn.fnct == f && fn.obj == o && fn.args.length == a.length) {
			var t = true;
			for (var j = 0, a1, a2; (a1 = fn.args[j]) && (a2 = a[j]); j++) {
				t = a1 == a2;
				if (!t) {
					break;
				}
			}
			if (t) {
				return fn.method;
			}
		}
	}
	
	var fn = {
		fnct: f,
		obj: o,
		args: a,
		method: function() {
			f.apply(o, (a ? a.concat($a(arguments)) : arguments));
		}
	};
	
	Function.bind.cache.push(fn);
	return fn.method;
};

Function.bind.cache = [];
if (document.all) {
	var Event = {};
}

Event.attach = function (o, t, f, fc, c, a) {
	var fn = Function.bind(f, (fc || o));
	var z = o["_on" + t];
	if (z) {
		o["_on" + t] = function() {
			z.apply(this, arguments);
			fn.apply(this, arguments);
		};
	} else {
		var h = Function.bind(Event.handle, Event, fn, a);
		if (o.addEventListener) {
			o.addEventListener(t, h, (c ? true : false));
		} else {
			o.attachEvent("on" + t, h);
		}
	}
};

Event.detach = function(o, t, f, fc, c, a) {
	var fn = Function.bind(f, (fc || o));
	var z = o["_on" + t];
	if (!z) {
		var h = Function.bind(Event.handle, Event, fn, a);
		if (o.removeEventListener) {
			o.removeEventListener(t, h, (c ? true : false));
		} else {
			o.detachEvent("on" + t, h);
		}
	}
};

Event.handle = function(f, as, e) {
	if (!e) {
		e = window.event;
	}
	if (!e.preventDefault) {
		e.preventDefault = function() {
			this.returnValue = false;
		};
	}
	if (!e.stopPropagation) {
		e.stopPropagation = function() {
			this.cancelBubble = true;
		};
	}
	if (!e.target && e.srcElement) {
		e.target = e.srcElement;
		if (e.type == "onmouseout") {
			e.relatedTarget = e.toElement;
		} else if (e.type == "onmouseover") {
			e.relatedTarget = e.fromElement;
		}
	}
	if (!e.which && e.keyCode) {
		e.which = e.keyCode;
	}
	if (!e.detail && e.wheelDelta) {
		e.detail = e.wheelDelta * -1;
	}
	if (as) {
		for (var i = 0, a; a = as[i]; i++) {
			switch(a) {
				case Event.actions.PREVENTDEFAULT:
					e.preventDefault();
					break;
				
				case Event.actions.STOPPROPAGATION:
					e.stopPropagation();
					break;
			}
		}
	}
	f(e);
};

Event.actions = {
	PREVENTDEFAULT: 1,
	STOPPROPAGATION: 2
};

function Tabs(p, c) {
	this.parent = p;
	this.tabs = [];
	var ts = $t("a", p);
	var r = new RegExp("\\b" + c + "\\b");
	for (var i = 0, t; t = ts[i]; i++) {
		if (t.className.match(r)) {
			this.tabs.push(t);
			Event.attach(t, "click", this.click, this, null, [ Event.actions.PREVENTDEFAULT ]);
		}
	}
}

Tabs.prototype = {
	click: function(e) {
		if (e.target.blur) {
			e.target.blur();
		}
		for (var i = 0, t; t = this.tabs[i]; i++) {
			t.parentNode.className = (t == e.target ? "selected" : "");
		}
	}	
};

Event.attach(window, "load", function() { new Tabs($i("tabs"), "tab") });