
/*
	class eventer
	{
		private events = {};

		public eventer(document)
		public forceEvent(name, parameters);
		public addListener(eventName);
		public removeListener(eventName, listener);
	}
	
*/

	function eventListener(handler, parameters)
	{
		this.handler = handler;
		this.parameters = parameters;
	}

	eventListener.prototype.handler;
	eventListener.prototype.parameters;

	eventListener.prototype.callHandler = function(parameters)
	{
		if(this.parameters != undefined)
			for(var key in this.parameters)
				parameters[key] = this.parameters[key];
			
		return this.handler(parameters);
	}


	function eventer()
	{
		this.events = {};
	}

	eventer.prototype.events;

	eventer.prototype.forceEvent = function(eventName, parameters)
	{
		var result = true;
		
		if(this.events[eventName] != undefined)
			for(var i = 0; i < this.events[eventName].length; i++)
				if(this.events[eventName][i].callHandler(parameters) == false) result = false;
			
		return result;
	}

	eventer.prototype.addListener = function(eventName, handler, parameters)
	{
		var listener = new eventListener(handler, parameters);
		if(this.events[eventName] == undefined) this.events[eventName] = new Array();
		this.events[eventName].push(listener);
		return listener;
	}

	eventer.prototype.removeListener = function(eventName, listener)
	{
		// TODO
	}

	document.eventer = new eventer();

