function createMethodReference(object, method)
{
	if(!(method instanceof Function))
		method = object[method];

	return function()
	{
		method.apply(object, arguments);   //Array of arguments
	}
};

function createEventListenerMethodReference(object, method)
{
	if(!(method instanceof Function))
		method = object[method];

	return function(event)
	{
		method.call(object, event || window.event);    //Only one argument (event object)
	}
};





Function.prototype.bind = function (object) {
    var method = this;
    var oldArguments = entries(arguments).slice(1);
    return function () {
        var newArguments = entries(arguments);
        return method.apply(object, oldArguments.concat(newArguments));
    };
}

Function.prototype.bindEventListener = function (object) {
    var method = this;
    var oldArguments = entries(arguments).slice(1);
    return function (event) {
        return method.apply(object, event || window.event, oldArguments);
    };
}