var Plugin = {
	hooks: {},
	register: function(hook, func) {
		if (this.hooks[hook] == undefined)
			this.hooks[hook] = [];
		this.hooks[hook][this.hooks[hook].length] = func;
	},
	hook: function(hook, parameters) {
		if (this.hooks[hook] == undefined)
			this.hooks[hook] = [];
		for (var i = 0; i < this.hooks[hook].length; i++)
			this.hooks[hook][i](parameters);
	},
	exists: function(hook) {
		return this.hooks[hook] != undefined;
	},
	override: function(hook, parameters, fallback) {
		if (this.exists(hook)) {
			this.hook(hook, parameters);
			return true;
		}
		fallback();
		return false;
	}
};

