//addEvent seems to cause conflicts; when disabled everything looks fine, yet ...
//hotfix for 32770
/*
function addEvent(obj, evType, fn) {
	if (obj.addEventListener) {
		obj.addEventListener(evType, fn, true);
		return true;
	} else if (obj.attachEvent) {
		var r = obj.attachEvent("on" + evType, fn);
		return r;
	} else {
		return false;
	}
}
*/

/**
 * get the source node of an event
 * 
 * workaround for microsofts event model and safari returning the textnode
 * contained in a link instead of the link
 */
function getEventSource(e) {
	e = getEvent(e);
	var source;
	if (typeof e.target != 'undefined') {
		source = e.target;
	} else if (typeof e.srcElement != 'undefined') {
		source = e.srcElement;
	}

	/**
	 * safari workaround, safari returns the textnode contained in a link
	 * element a event source instead of the linkelement
	 */
	if (source.nodeType == 3) {
		source = source.parentNode;
	}

	return source;
}

/**
 * get the event itself
 * 
 * workaround for microsofts event model
 */
function getEvent(e) {
	if (typeof e == 'undefined') {
		var e = window.event;
	}

	return e;
}

function getClickedLink(event) {
	var srcElement = getEventSource(event);

	while ((srcElement.parentNode) && (document != srcElement)
			&& ('a' != srcElement.tagName.toLowerCase())) {
		srcElement = srcElement.parentNode;
	}

	if (document == srcElement) {
		srcElement = null;
	}

	return srcElement;
}