function addEvent2(obj, evType, fn) {
	if (obj.addEventListener) {
		obj.addEventListener(evType, fn, false); // useCapture = true ?
		return true;
	} 
	else if (obj.attachEvent) {
		var r = obj.attachEvent("on"+evType, fn);
		return r;
	} 
	else {
		elm['on' + evType] = fn;
	}
}

function addEventToId(id, evType, fn) {
  if (document.getElementById) {
    var obj = document.getElementById(id);
    if (obj) addEvent(obj, evType, fn);
    else alert("Object \""+obj+"\" does not exist");
  }
}

function getSrcElem(e) {
	var ret;
	if (!e) var e = window.event;
	if (e.target) ret = e.target;
	else if (e.srcElement) ret = e.srcElement;
	if (ret && ret.nodeType == 3) // defeat Safari bug
		ret = ret.parentNode;
	return ret;
}

/*
function stopEvent(ev) {
	ev || (ev = window.event);
	// if (Calendar.is_ie) {
		ev.cancelBubble = true;
		ev.returnValue = false;
	// } else {
		if (ev.preventDefault) ev.preventDefault();
		if (ev.stopPropagation) ev.stopPropagation();
	// }
	return false;
}
*/

function stopEvent(e) {
	// e instanceof Event bzw. proprietär
	if (e == null) {
		e = document.parentWindow.event;
	}
	if (e.stopPropagation) {
		e.stopPropagation();
		e.preventDefault();
	}
	/*@cc_on@*/
	/*@if(@_win32)
	e.cancelBubble = true;
	e.returnValue = false;
	/*@end@*/
	return false;
}
