var EventHandler = new Class({
	eventListeners : null,

	initialize : function() {
		this.eventListeners = new Object();
	},

	hook : function(sourceItem, destinationItem, event, action, isParentFrame) {
		//alert(sourceItem.getName()+"."+destinationItem.getName()+"."+event+"."+action);
		if (!this.eventListeners[sourceItem.getName()]) { this.eventListeners[sourceItem.getName()] = new Object(); }
		if (!this.eventListeners[sourceItem.getName()][destinationItem.getName()]) { this.eventListeners[sourceItem.getName()][destinationItem.getName()] = new Object(); }
		this.eventListeners[sourceItem.getName()][destinationItem.getName()][event] = new Object();
		this.eventListeners[sourceItem.getName()][destinationItem.getName()][event].action = action;
		this.eventListeners[sourceItem.getName()][destinationItem.getName()][event].obj = destinationItem;
		this.eventListeners[sourceItem.getName()][destinationItem.getName()][event].target = (isParentFrame ? "parent" : null);
	},

	fireEvent : function(me, eventName, parameters) {
		//alert(eventName+"/"+parameters);
		var name = me.getName();
		//alert(name);
		for (var i in this.eventListeners[name]) {
			//alert(this.eventListeners[name][i][eventName].action);
			if (this.eventListeners[name][i][eventName]) {
				switch (this.eventListeners[name][i][eventName].action) {
					case 1: {
							this.eventListeners[name][i][eventName].obj.refresh(parameters);
						break;
					}
					case 2: { 
							this.eventListeners[name][i][eventName].obj.show(parameters);
						break;
					}
					case 3: {
							this.eventListeners[name][i][eventName].obj.hide();
						break;
					}
					case 4: {
							this.eventListeners[name][i][eventName].obj.loadDefault();
						break;
					}
					case 5: {
							this.eventListeners[name][i][eventName].obj.unselect();
						break;
					}
				}
			}
		}
	}
});

