// © 2004-2008, Applied Geographics, Inc.  All rights reserved.

function WebEventHandler() { }

WebEventHandler.implement = function(controller) {
  controller.eventHandlers = [];
  
  controller.attachEvent = function(eventName, handler) {
    controller.eventHandlers.push({name: eventName, handler: handler});
  };
    
  controller.attachEventToElement = function(element, eventName, handler) {
    if (element.attachEvent) {
      element.attachEvent("on" + eventName, handler);
    }
    else {
      element.addEventListener(eventName == "mousewheel" ? "DOMMouseScroll" : eventName, handler, false);
    }
  };

  controller.dispatchEvent = function(eventName, sourceEvent, eventData) {
    if (!sourceEvent) {
      sourceEvent = {type: eventName};
    }
    
    sourceEvent.eventData = eventData;
    
    if (controller.element["on" + eventName]) {
      controller.attachEvent(eventName, controller.element["on" + eventName]);
      controller.element["on" + eventName] = null;
    }
    
    for (var i = 0; i < controller.eventHandlers.length; ++i) {
      if (controller.eventHandlers[i].name == eventName) {
        controller.eventHandlers[i].handler(sourceEvent);
      }
    }
  };
};
