if(de == null) var de = {};
if(de.digitalspirit == null) de.digitalspirit = {};
if(de.digitalspirit.dsframework == null) de.digitalspirit.dsframework = {};
if(de.digitalspirit.dsframework.eventing == null) de.digitalspirit.dsframework.eventing = {};

de.digitalspirit.dsframework.eventing.EventHandler = {
	_eventHandlers: null,
	_handlers: function(eventType) {
		if(this._eventHandlers == null) {
			var win = window;
			while ((win.parent != null) && (win.parent != win)) {
			    try {
			        // Provoke security exception
			        var test = win.parent.location.href; 
				    win = win.parent;
				} catch(e) {
				    break;
				}
		   	}
		   	
		   	if(win.__event_handlers == null) {
				win.__event_handlers = {};
			}
			this._eventHandlers = win.__event_handlers;
		}
		if(this._eventHandlers[eventType] == null) {
			this._eventHandlers[eventType] = {};
		}
		return this._eventHandlers[eventType];
	},
	
    registerHandler: function(eventType, name, handler) {
	    this._handlers(eventType)[name] = handler;
    },

    unregisterHandler: function(eventType, name) {
		this._handlers(eventType)[name] = null;
    },
    
	raiseEvent: function(event) {
		var handlers = this._handlers(event.eventType);
		for (var i in handlers) {
			try {
				if(handlers[i]) {
					handlers[i](event);
				}
			} catch(e) {
				alert(e);
			}
		}
	}
}

de.digitalspirit.dsframework.eventing.Event = function(eventType) {
	this.eventType = eventType;
}


