// Pierre A. I. Wijkman 2004-05-21
// http://dsv.su.se/~pierre/
// pierre@dsv.su.se

// ##############################################################
// ## Patch since IE does not support DOM 2 events yet
// ##############################################################

ie = (document.all) ? true:false; // ie4+
dom2 = ((document.getElementById)&&(!ie))?true:false; // mozilla, netscape 6+ osv.

function setEventByObject(ob, ev, fu) {
  if(dom2) {
    ob.addEventListener(ev, fu, false);
  }
  if(ie) {
    ob.attachEvent('on' + ev, fu);
  }
}

function removeEventByObject(ob, ev, fu) {
  if(dom2) {
    ob.removeEventListener(ev, fu, false);
  }
  if(ie) {
    ob.detachEvent('on' + ev, fu);
  }
}

function setEventById(id, ev, fu) {
  if(dom2) {
    document.getElementById(id).addEventListener(ev, fu, false);
  }

  if(ie) {
    document.getElementById(id).attachEvent("on" + ev, fu);
  }
}

function removeEventById(id, ev, fu) {
  if(dom2) {
    document.getElementById(id).removeEventListener(ev, fu, false);
  }

  if(ie) {
    document.getElementById(id).detachEvent("on" + ev, fu);
  }
}

function setEventByElement(el, ev, fu) {
  if(dom2) {
    el.addEventListener(ev, fu, false);
  }

  if(ie) {
    el.attachEvent("on" + ev, fu);
  }
}

function removeEventByElement(el, ev, fu) {
  if(dom2) {
    el.removeEventListener(ev, fu, false);
  }

  if(ie) {
    el.detachEvent("on" + ev, fu);
  }
}

function getSrc(ev) {
  if(dom2) {
    return ev.currentTarget;
  }
  if(ie) {
    return ev.srcElement;
  }
}

function stopEvent(ev) {
  if(dom2) {
    ev.preventDefault();
  }
  return false;
}

function getXMLHTTPRequestObject() {
  if(dom2) {
    return new XMLHttpRequest();
  }
  if(ie) {
    return new ActiveXObject("Microsoft.XMLHTTP");
  }
}