var EventManager = (function() {
	var _listeners = {};
	return {
		addEventListener: function($name, $listener)
		{
			// check that listener is not in list
			if(_listeners[$name])
			{
				for (var i = 0; i < _listeners[$name].length; i++)
					if (_listeners[$name][i] == $listener) return;
			}else _listeners[$name]=[];
			// add listener to appropriate list
			_listeners[$name].push($listener);
		},
		removeEventListener: function($name, $listener)
		{
			// search for the listener method
			if(!_listeners[$name]) return;
			for (var i = 0; i < _listeners[$name].length; i++) {
				if (_listeners[$name][i] == $listener) {
					_listeners.splice(i,1);
					return;
				}
			}
		},
		dispatchEvent: function($name, $data)
		{
			if(!_listeners[$name]) return;
			for (var i = 0; i < _listeners[$name].length; i++)
				_listeners[$name][i]($data ? $data : null);
		}
	}
})();