code: function setEventHandler(name, handler, dom, tag) {
  
    dom[name] = function(e) {
  
      var ptag = tag._parent,
        item = tag._item,
        el
  
      if (!item)
        while (ptag && !item) {
          item = ptag._item
          ptag = ptag._parent
        }
  
      // cross browser event fix
      e = e || window.event
  
      // override the event properties
      if (isWritable(e, 'currentTarget')) e.currentTarget = dom
      if (isWritable(e, 'target')) e.target = e.srcElement
      if (isWritable(e, 'which')) e.which = e.charCode || e.keyCode
  
      e.item = item
  
      // prevent default behaviour (by default)
      if (handler.call(tag, e) !== true && !/radio|check/.test(dom.type)) {
        if (e.preventDefault) e.preventDefault()
        e.returnValue = false
      }
  
      if (!e.preventUpdate) {
        el = item ? getImmediateCustomParentTag(ptag) : tag
        el.update()
      }
  
    }
  
  }
docs: Attach an event to a DOM node
  @param { String } name - event name
  @param { Function } handler - event callback
  @param { Object } dom - dom node
  @param { Tag } tag - tag instance