//  ---------------------------------------------------------------------------
//  Last Modified : 2007-07-16
//  Author: Dr. Detlef Groth
//  Modified by: Dr. Horst Walther
//  Event Utilities 
//  ---------------------------------------------------------------------------

//  ---------------------------------------------------------------------------
function evtGetTarget(evt) {
  var elem ;
  if (evt.target) {
      elem = (evt.target.nodeType == 3) ? evt.target.parentNode : evt.target ;
  } else {
      elem = evt.srcElement ;
  }
  return elem ;
}

//  ---------------------------------------------------------------------------
//  more efficient to construct the functions ones, thanks to Dean Edwards http://dean.edwards.name/
//  ---------------------------------------------------------------------------
if (document.addEventListener) var evtAdd = function(element, type, handler) {element.addEventListener(type, handler, null)}; // ; traceln (element.id+', '+element.innerHTML+', '+element.onmouseover)};
else 
  if (document.attachEvent) var evtAdd = function(element, type, handler) {element.attachEvent("on" + type, handler)};
  else 
    alert("evtAdd: Your browser is not supported!");

//  --- John Resig: http://ejohn.org/projects/flexible-javascript-events/  ----
//  ---------------------------------------------------------------------------
function addEvent( obj, type, fn ) {
  if ( obj.attachEvent ) {
    obj['e'+type+fn] = fn;
    obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
    obj.attachEvent( 'on'+type, obj[type+fn] );
  } else
    obj.addEventListener( type, fn, false );
}

//  ---------------------------------------------------------------------------
function removeEvent( obj, type, fn ) {
  if ( obj.detachEvent ) {
    obj.detachEvent( 'on'+type, obj[type+fn] );
    obj[type+fn] = null;
  } else
    obj.removeEventListener( type, fn, false );
}
