( function() {
if (typeof window.addEvent == 'undefined'){
	// Name der lokalen Eventhandlerliste des Objektes
	var evtHnd = '__EVT__HANDLER__';

	window.addEvent = function () {
		var obj, name, func;
		// Parameterauswertung
		var args = arguments;
		if( args.length == 1 && typeof args[0] == 'object') {
			// Der Parameter ist ein Objekt
			obj = args[0]['obj']; name = args[0]['evt']; func = args[0]['func'];
		} else {
			// Parameterliste
			obj = args[0]; name = args[1]; func = args[2];
		}
		// Defaultwerte
		if(!obj) obj = window;
		if(!name) name = 'load';
		if( typeof func != 'function') return alert('Keine Funktionsreferenz!');

		// Die Objekte, die die Handler aufnehmen vorbereiten.
		if(!obj[evtHnd]) obj[evtHnd] = {};
		if(!obj[evtHnd][name]) obj[evtHnd][name] = [];
		// Die Funktion abgespeichern.
		obj[evtHnd][name].push( func );

		// Den Handler des Objektes registrieren
		// Der Rückgabewert des events ist immer der Rückgabewert der
		// zuletzt registrierten Funktion

		if(!obj['on' + name])  obj['on' + name] = function(e){
			if(!e) e = window.event;
			if(!obj[evtHnd] || !obj[evtHnd][name]) return false;

			var ret = false;
			for(var i = 0; i < obj[evtHnd][name].length;i++)  ret = obj[evtHnd][name][i].call(obj, e);

			return ret;
		};

		return true;
	};
	window.removeEvent = function (o, n, f) {
		if(o[evtHnd] && o[evtHnd][n]) {
			for(var i = 0; i < o[evtHnd][n].length;i++)
				if(o[evtHnd][n][i])  {
					o[evtHnd][n].splice(i, 1);
					return true;
				}
			}
		}
	}; // ENDE --> if (typeof addEvent == 'undefined')
}())