/**
 * Trigger Event
 * @param {string} type of event
 * @param {object} associated DOM-Object
 */
function fireEvent (eventType, elem) {

	if (document.createEvent) {
		var e = document.createEvent("Events");
		e.initEvent(eventType, true, true);
        elem.dispatchEvent(e);
	}

	else if (document.createEventObject) {
		var e = document.createEventObject();
		elem.fireEvent("on" + eventType, e);
	}
}

/**
 * Add Eventhandler
 * @param {object} DOM Object to which event gets attached
 * @param {string} type of event
 * @param {function} called function upon event
 */
function addEvent(obj, type, fn) {
	if (obj.addEventListener) {
		obj.addEventListener(type, fn, false);
	}
	else if (obj.attachEvent) {
		obj.attachEvent("on"+type, obj["e"+type+fn] = fn);
	}
}

/**
 * Remove Eventhandler
 * @param {object} DOM Object to which event is attached
 * @param {string} type of event
 * @param {function} called function upon event
 */
function removeEvent(obj, type, fn) {
	if (obj.removeEventListener) {
		obj.removeEventListener(type, fn, false);
	}
	else if (obj.detachEvent) {
		obj.detachEvent("on"+type, obj["e"+type+fn]);
		obj["e"+type+fn] = null;
		delete obj["e"+type+fn];
	}
}
