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.bind = function(f, o) {
	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) {
			return fn.method;
		}
	}
	
	var fn = {
		fnct: f,
		obj: o,
		method: function() {
			f.apply(o, arguments);
		}
	};
	
	Function.bind.cache.push(fn);
	return fn.method;
};

Function.bind.cache = [];

if (!Event) {
	var Event = {};
}

Event.attach = function (o, t, f, fc, c) {
	var fn = Function.bind(f, (fc ? fc : o));
	var z = o["_on" + t];
	if (z) {
		o["_on" + t] = function() {
			z.apply(this, arguments);
			fn.apply(this, arguments);
		};
	} else {
		if (o.addEventListener) {
			o.addEventListener(t, fn, (c ? true : false));
		} else {
			o.attachEvent("on" + t, fn);
		}
	}
};
