// cross-browser add-remove event to object
EventManager =
{
	addEvent: function(obj, e, func)
	{
		//W3C, Mozilla
		if(obj.addEventListener)
		{
			obj.addEventListener(e, func, false);
		}
		//IE
		else if(obj.attachEvent)
		{
			obj.attachEvent("on"+e, func);
		}
		//others
		else
		{
			obj["on"+e] = func;
		}
	},
	
	removeEvent: function(obj, e, func)
	{
		if(obj.removeEventListener)
		{
			obj.removeEventListener(e, func, false);
		}
		else if(obj.detachEvent)
		{
			obj.detachEvent("on"+e, func);
		}
		else
		{
			obj["on"+e] = null;
		}
	},
	
	delegate: function(o, f)
	{
		var a = new Array();
		for(var i=2; i<arguments.length; i++) a.push(arguments[i]);
		return function()
		{
			f.apply(o, arguments.concat(a)); //suma a los valores retornados por la funcion por defecto los definidos por el usuario
		}
	}
};