function $(id)
{
	return document.getElementById(id);
}

function delegate(method, context, args)
{
	if ( !args )
	{
		args = [];
	}

	return function ()
	{
		var a = [];
		if ( arguments.length > 0 )
		{
			for ( var i = 0; i < arguments.length; i++ )
			{
				a.push(arguments[i]);
			}
		}
		return method.apply( context, args.concat(a) );
	}
}

function delegateEventListener(method, context)
{
	return function( e )
	{
		return method.call( context, window.event || e );
	}
}

function aEvent(obj, event, handler)
{
	if (obj.addEventListener)
	{
		obj.addEventListener(event, handler, false);
	}
	else if ( obj.attachEvent )
	{
		obj.attachEvent("on" + event, handler);
	}
    else
    {
        obj[event] = handler;
    }
}

function dEvent(obj, event, handler)
{
	if (obj.removeEventListener)
	{
		obj.removeEventListener(event, handler, false);
	}
	else
	{
		obj.detachEvent("on" + event, handler);
	}
}
