razsor
        .defineClass({
            "_className" : "EventBroker",
            "_package" : razsor.event,
            "_class" : {
                "_eventTopics" : [],

                "init" : function(allowedEventTopics) {
	                var topic;
	                for (topic in allowedEventTopics) {
		                if (allowedEventTopics.hasOwnProperty(topic)) {
			                this._eventTopics[allowedEventTopics[topic]] = [];
		                }
	                }
                },

                "fire" : function(eventType, eventData) {
	                var topic = this._eventTopics[eventType];
	                if (topic) {
		                var i;
		                var len;
		                for (i = 0, len = topic.length; i < len; i++) {
			                topic[i](eventData);
		                }
	                }
                },

                "add" : function(eventType, method) {
	                if (!this._eventTopics[eventType]) {
		                var e = new Error("Event type " + eventType
		                        + " not registered");
		                throw e;
	                }
	                this._eventTopics[eventType].push(method);
                }
            }
        });

