code: function dispatchEvent(event, eventObject) {
      var eventType = ('' + (typeof event === "string" ? event : event.type)).replace(/^on/, '');
      var list = eventsList[eventType];
      if (list) {
        // need to understand that there is one object of Event
        eventObject = typeof event === "string" ? eventObject : event;
        if (eventObject.target == null) {
          // need to override some of the properties of the Event object
          for(var props = ['target', 'currentTarget', 'srcElement', 'type']; event = props.pop();) {
            // use 'redefineProperty' to override the properties
            eventObject = redefineProperty(eventObject, event, {
              get: event === 'type' ? function() {
                return eventType;
              } : function() {
                return global;
              }
            });
          }
        }
        if (triggerEventsInWindowAttributes) {
          // run function defined in the attributes 'onpopstate/onhashchange' in the 'window' context
          ((eventType === 'popstate' ? global.onpopstate : global.onhashchange)
            || emptyFunction).call(global, eventObject);
        }
        // run other functions that are in the list of handlers
        for(var i = 0, len = list.length; i < len; i++) {
          list[i].call(global, eventObject);
        }
        return true;
      } else {
        return dispatch(event, eventObject);
      }
    }
docs: Wrapper for the methods 'dispatchEvent/fireEvent' in the context of the 'window'
  
  @param {Event|String} event Instance of Event or event type string if 'eventObject' used
  @param {*} [eventObject] For Internet Explorer 8 required event object on this argument
  @return {Boolean} If 'preventDefault' was called the value is false, else the value is true.