function xe_add(obj,type,fn,capture) {
  if (obj.addEventListener) {
    obj.addEventListener(type,fn,capture);
    return true;
  } else if (obj.attachEvent) {
    var r = obj.attachEvent("on" + type,fn);
    return r;
  } else {
    alert("Handler could not be attached");
    return false;
  }
}

function xe_remove(obj,type,fn,capture) {
  if (obj.removeEventListener) {
    obj.removeEventListener(type,fn,capture);
    return true;
  } else if (obj.detachEvent) {
    var r = obj.detachEvent("on" + type,fn);
    return r;
  } else {
    alert("Handler could not be removed");
    return false;
  }
}

function xe_target(e) {
    return (e.target) ? e.target : e.srcElement;
}
