var isSafari = (navigator.userAgent.toLowerCase().indexOf("applewebkit") > -1);
var isIE = (navigator.userAgent.toLowerCase().indexOf("msie") > -1);

// DOMEvent class

//----------------------------------------------------- constructor
function DOMEvent(){}

//----------------------------------------------------- addEventHandler
DOMEvent.addEventHandler = function(target, eventType, handler){
  if(target.addEventListener && !isSafari){
    target.addEventListener(eventType, handler, false);
  }
  else if(target.attachEvent){
    target.attachEvent("on" + eventType, handler);
  }
  else{
    target["on" + eventType] = handler;
  }
}
//----------------------------------------------------- removeEventHandler
DOMEvent.removeEventHandler = function(target, eventType, handler){
  if(target.removeEventListener && !isSafari){
    target.removeEventListener(eventType, handler, false);
  }
  else if(target.detachEvent){
    target.detachEvent("on" + eventType, handler);
  }
  else{ 
    target["on" + eventType] = null;
  }
}
//----------------------------------------------------- formatEvent
DOMEvent.formatEvent = function(event){
  if(isIE){
    event.charCode = (event.type == "keypress") ? event.keyCode : 0;
    event.eventPhase = 2;
    event.isChar = (event.charCode > 0);
    event.pageX = event.clientX + document.body.scrollLeft;
    event.pageY = event.clientY + document.body.scrollTop;
    event.preventDefault = function(){
      this.returnValue = false;
    }
    if(event.type == "mouseout"){
      event.relatedTarget = event.toElement;
    } else if(event.type == "mouseover"){
      event.relatedTarget = event.fromElement;
    }
    event.stopPropagation = function(){
      this.cancelBubble = true;
    }
    event.target = event.srcElement;
    event.time = (new Date).getTime();
  }
  return event;
}

