File indexing completed on 2026-04-09 07:58:27
0001 GMaps.prototype.on = function(event_name, handler) {
0002 return GMaps.on(event_name, this, handler);
0003 };
0004
0005 GMaps.prototype.off = function(event_name) {
0006 GMaps.off(event_name, this);
0007 };
0008
0009 GMaps.custom_events = ['marker_added', 'marker_removed', 'polyline_added', 'polyline_removed', 'polygon_added', 'polygon_removed', 'geolocated', 'geolocation_failed'];
0010
0011 GMaps.on = function(event_name, object, handler) {
0012 if (GMaps.custom_events.indexOf(event_name) == -1) {
0013 if(object instanceof GMaps) object = object.map;
0014 return google.maps.event.addListener(object, event_name, handler);
0015 }
0016 else {
0017 var registered_event = {
0018 handler : handler,
0019 eventName : event_name
0020 };
0021
0022 object.registered_events[event_name] = object.registered_events[event_name] || [];
0023 object.registered_events[event_name].push(registered_event);
0024
0025 return registered_event;
0026 }
0027 };
0028
0029 GMaps.off = function(event_name, object) {
0030 if (GMaps.custom_events.indexOf(event_name) == -1) {
0031 if(object instanceof GMaps) object = object.map;
0032 google.maps.event.clearListeners(object, event_name);
0033 }
0034 else {
0035 object.registered_events[event_name] = [];
0036 }
0037 };
0038
0039 GMaps.fire = function(event_name, object, scope) {
0040 if (GMaps.custom_events.indexOf(event_name) == -1) {
0041 google.maps.event.trigger(object, event_name, Array.prototype.slice.apply(arguments).slice(2));
0042 }
0043 else {
0044 if(event_name in scope.registered_events) {
0045 var firing_events = scope.registered_events[event_name];
0046
0047 for(var i = 0; i < firing_events.length; i++) {
0048 (function(handler, scope, object) {
0049 handler.apply(scope, [object]);
0050 })(firing_events[i]['handler'], scope, object);
0051 }
0052 }
0053 }
0054 };