PageSourceSearch

https://www.gillettestadium.com/wp-content/plugins/modern-events-calendar/assets/js/googlemap.js?ver=7.17.1

js gillettestadium.com collected 2026-10-02 02:38:31 UTC 15,536 bytes, 411 lines download raw bytes

1// MEC GOOGLE MAPS PLUGIN
2(function ($) {
3    $.fn.mecGoogleMaps = function (options) {
4        // Default Options
5        var settings = $.extend({
6            // These are the defaults.
7            latitude: 0,
8            longitude: 0,
9            autoinit: true,
10            fullscreen_button: false,
11            zoom: 14,
12            icon: '../img/m-01.png',
13            markers: {},
14            sf: {},
15            geolocation: 0,
16            getDirection: 0,
17            directionOptions: {
18                form: '#mec_get_direction_form',
19                reset: '.mec-map-get-direction-reset',
20                addr: '#mec_get_direction_addr',
21                destination: {}
22            },
23            month_navigator: 0,
24            sf:{},
25        }, options);
26
27        var getMarkersLock = false;
28
29        // Initialize Month Navigator
30        if (settings.month_navigator) initMonthNavigator();
31
32        var bounds;
33        var map;
34        var infowindow;
35        var loadedMarkers = [];
36        var markerCluster;
37
38        var canvas = this;
39        var DOM = canvas[0];
40
41        // Init the Map
42        if (settings.autoinit) init();
43
44        function init() {
45            // Search Widget
46            if (settings.sf.container !== '' && false == $(settings.sf.container).hasClass('mec-skin-map-search-init') ) {
47
48                $(settings.sf.container).mecSearchForm({
49                    id: settings.id,
50                    atts: settings.atts,
51                    callback: function (atts) {
52                        settings.atts = atts;
53                        getMarkers();
54                    }
55                });
56
57                $(settings.sf.container).addClass('mec-skin-map-search-init');
58            }
59
60            if(typeof google === 'undefined') {
61                setTimeout(init, 1000);
62                return;
63            }
64
65            // Create the options
66            bounds = new google.maps.LatLngBounds();
67            var center = new google.maps.LatLng(settings.latitude, settings.longitude);
68
69            var mapOptions = {
70                scrollwheel: false,
71                mapTypeId: google.maps.MapTypeId.ROADMAP,
72                center: center,
73                zoom: settings.zoom,
74                styles: settings.styles,
75                fullscreenControl: settings.fullscreen_button
76            };
77
78            // Init map
79            map = new google.maps.Map(DOM, mapOptions);
80
81            // Init Infowindow
82            infowindow = new google.maps.InfoWindow({
83                pixelOffset: new google.maps.Size(0, -37)
84            });
85
86            // Load Markers
87            loadMarkers(settings.markers);
88
89            var clusterCalculator = function (markers, numStyles) {
90                var weight = 0;
91
92                for (var i = 0; i < markers.length; ++i) {
93                    weight += markers[i].weight;
94                }
95
96                return {
97                    text: weight,
98                    index: Math.min(String(weight).length, numStyles)
99                };
100            };
101
102            var markerClusterOptions = {
103                styles: [{
104                        height: 53,
105                        url: settings.clustering_images + '1.png',
106                        width: 53,
107                        textColor: '#fff'
108                    },
109                    {
110                        height: 56,
111                        url: settings.clustering_images + '2.png',
112                        width: 56,
113                        textColor: '#000'
114                    },
115                    {
116                        height: 66,
117                        url: settings.clustering_images + '3.png',
118                        width: 66,
119                        textColor: '#fff'
120                    },
121                    {
122                        height: 78,
123                        url: settings.clustering_images + '4.png',
124                        width: 78,
125                        textColor: '#fff'
126                    },
127                    {
128                        height: 90,
129                        url: settings.clustering_images + '5.png',
130                        width: 90,
131                        textColor: '#fff'
132                    }
133                ]
134            };
135
136            markerCluster = new MarkerClusterer(map, null, markerClusterOptions);
137
138            markerCluster.setCalculator(clusterCalculator);
139            markerCluster.addMarkers(loadedMarkers);
140
141            // Initialize get direction feature
142            if (settings.getDirection === 1) initSimpleGetDirection();
143            else if (settings.getDirection === 2) initAdvancedGetDirection();
144
145            // Geolocation focus.
146            var permission = false;
147
148            if(typeof navigator.permissions !== 'undefined')
149            {
150                navigator.permissions.query({
151                    name : 'geolocation'
152                }).then(function(result)
153                {
154                    if(!settings.geolocation_focus) permission = true;
155
156                    result.onchange = function()
157                    {
158                        if(result.state === 'granted') permission = true;
159                    }
160                });
161            }
162
163            // Geolocation
164            if((settings.geolocation !== 'undefined' && settings.geolocation) && navigator.geolocation)
165            {
166                navigator.geolocation.getCurrentPosition(function (position)
167                {
168                    if(permission)
169                    {
170                        var center = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
171                        var zoom = map.getZoom();
172
173                        if (zoom <= 6) zoom = zoom + 5;
174                        else if (zoom <= 10) zoom = zoom + 3;
175                        else if (zoom <= 14) zoom = zoom + 2;
176                        else if (zoom <= 18) zoom = zoom + 1;
177
178                        map.panTo(center);
179                        map.setZoom(zoom);
180                    }
181                });
182            }
183        }
184
185        function initMonthNavigator() {
186            // Remove the onclick event
187            $("#mec_skin_" + settings.id + " .mec-load-month").off("
187click");
188
189            // Add onclick event
190            $("#mec_skin_" + settings.id + " .mec-load-month").on("click", function () {
191                var year = $(this).data("mec-year");
192                var month = $(this).data("mec-month");
193
194                getMarkers(year, month);
195            });
196        }
197
198        function loadMarkers(markers) {
199            var f = 0;
200            for (var i in markers) {
201                f++;
202                var dataMarker = markers[i];
203
204                var marker = new RichMarker({
205                    position: new google.maps.LatLng(dataMarker.latitude, dataMarker.longitude),
206                    map: map,
207                    event_ids: dataMarker.event_ids,
208                    infowindow: dataMarker.infowindow,
209                    lightbox: dataMarker.lightbox,
210                    icon: (dataMarker.icon ? dataMarker.icon : settings.icon),
211                    content: '<div class="mec-marker-container"><span class="mec-marker-wrap"><span class="mec-marker">' + dataMarker.count + '</span><span class="mec-marker-pulse-wrap"><span class="mec-marker-pulse"></span></span></span></div>',
212                    shadow: 'none',
213                    weight: dataMarker.count
214                });
215
216                // Marker Info-Window
217                if (Math.max(document.documentElement.clientWidth, window.innerWidth || 0) > 960) {
218                google.maps.event.addListener(marker, 'mouseover', function (event) {
219                    infowindow.close();
220                    infowindow.setContent(this.infowindow);
221                    infowindow.open(map, this);
222                });
223
224                // Marker Lightbox
225                google.maps.event.addListener(marker, 'click', function (event) {
226                    lity(this.lightbox);
227                });
228                } else if (Math.max(document.documentElement.clientWidth, window.innerWidth || 0) <= 960){
229                    google.maps.event.addListener(marker, 'click', function (event) {
230                        infowindow.close();
231                        infowindow.setContent(this.infowindow);
232                        infowindow.open(map, this);
233                        lity(this.lightbox);
234                    });
235                }
236
237                // extend the bounds to include each marker's position
238                bounds.extend(marker.position);
239
240                // Added to Markers
241                loadedMarkers.push(marker);
242            }
243
244            if (f > 1) map.fitBounds(bounds);
245
246            // Set map center if only 1 marker found
247            if (f === 1) {
248                map.setCenter(new google.maps.LatLng(dataMarker.latitude, dataMarker.longitude));
249            }
250
251            $(document).trigger( 'mec_map_load_markers', [ markers, settings ] );
252        }
253
254        function renderMarkers(markers){
255                // Remove Markers
256                removeMarkers();
257
258                // Load Markers
259                loadMarkers(markers);
260
261                markerCluster.clearMarkers();
262                markerCluster.addMarkers(loadedMarkers, false);
263                markerCluster.redraw();
264        }
265
266        function getMarkers( year = null, month = null ) {
267
268            // Already Locked
269            if(getMarkersLock) return;
270
271            // Lock it
272            getMarkersLock = true;
273
274            // Add loader
275            $("#mec_googlemap_canvas" + settings.id).addClass("mec-loading");
276
277            // Add Loading Class
278            if($('.mec-modal-result').length === 0) $('.mec-wrap').append('<div class="mec-modal-result"></div>');
279            $('.mec-modal-result').addClass('mec-month-navigator-loading');
280
281            $.ajax({
282                url: settings.ajax_url,
283                data: "action=mec_map_get_markers&mec_year="+ year + "&mec_month=" + month + "&" + settings.atts,
284                dataType: "json",
285                type: "post",
286                success: function (response) {
287
288                    renderMarkers( response.markers );
289
290                    // Append Month
291                    $("#mec_skin_events_" + settings.id).append('<div class="mec-month-container" id="mec_monthly_view_month_' + settings.id + '_' + response.current_month + '" data-month-id="' + response.current_month + '">' + response.month + '</div>');
292
293                    // Append Month Navigator
294                    $("#mec_skin_" + settings.id + " .mec-skin-map-view-month-navigator-container").append('<div class="mec-month-navigator" id="mec_month_navigator_' + settings.id + '_' + response.current_month + '">' + response.navigator + '</div>');
295
296                    // Remove loader
297                    $("#mec_googlemap_canvas" + settings.id).removeClass("mec-loading");
298
299                    $('.mec-modal-result').removeClass('mec-month-navigator-loading');
300
301                    // Release the Lock
302                    getMarkersLock = false;
303                },
304                error: function () {
305                    // Remove loader
306                    $("#mec_googlemap_canvas" + settings.id).removeClass("mec-loading");
307                    $('.mec-modal-result').removeClass('mec-month-navigator-loading');
308
309                    // Release the Lock
310                    getMarkersLock = false;
311                }
312            });
313        }
314
315        function removeMarkers() {
316            bounds = new google.maps.LatLngBounds();
317
318            if (loadedMarkers) {
319                for (i = 0; i < loadedMarkers.length; i++) loadedMarkers[i].setMap(null);
320                loadedMarkers.length = 0;
321            }
322        }
323
324        var directionsDisplay;
325        var directionsService;
326        var startMarker;
327        var endMarker;
328
329        function initSimpleGetDirection() {
330            $(settings.directionOptions.form).on('submit', function (event) {
331                event.preventDefault();
332
333                var from = $(settings.directionOptions.addr).val();
334                var dest = new google.maps.LatLng(settings.directionOptions.destination.latitude, settings.directionOptions.destination.longitude);
335
336                // Reset the direction
337                if (typeof directionsDisplay !== 'undefined') {
338                    directionsDisplay.setMap(null);
339                    startMarker.setMap(null);
340                    endMarker.setMap(null);
341                }
342
343                // Fade Google Maps canvas
344                $(canvas).fadeTo(300, .4);
345
346                directionsDisplay = new google.maps.DirectionsRenderer({
347                    suppressMarkers: true
348                });
349                directionsService = new google.maps.DirectionsService();
350
351                var request = {
352                    origin: from,
353                    destination: dest,
354                    travelMode: google.maps.DirectionsTravelMode.DRIVING
355                };
356
357                directionsService.route(request, function (response, status) {
358                    if (status === google.maps.DirectionsStatus.OK) {
359                        directionsDisplay.setDirections(response);
360                        directionsDisplay.setMap(map);
361
362                        var leg = response.routes[0].legs[0];
363                        startMarker = new google.maps.Marker({
364                            position: leg.start_location,
365                            map: map,
366                            icon: settings.directionOptions.startMarker,
367                        });
368
369                        endMarker = new google.maps.Marker({
370                            position: leg.end_location,
371                            map: map,
372                            icon: settings.directionOptions.endMarker,
373                        });
374                    }
375
376                    // Fade Google Maps canvas
377                    $(canvas).fadeTo(300, 1);
378                });
379
380                // Show reset button
381                $(settings.directionOptions.reset).removeClass('mec-util-hidden');
382            });
383
384            $(settings.directionOptions.reset).on('click', function (event) {
385                $(settings.directionOptions.addr).val('');
386                $(settings.directionOptions.form).submit();
387
388                // Hide reset button
389                $(settings.directionOptions.reset).addClass('mec-util-hidden');
390            });
391        }
392
393        function initAdvancedGetDirection() {
394            $(settings.directionOptions.form).on('submit', function (event) {
395                event.preventDefault();
396
397                var from = $(settings.directionOptions.addr).val();
398                var url = 'https://maps.google.com/?saddr=' + encodeURIComponent(from) + '&daddr=' + settings.directionOptions.destination.latitude + ',' + settings.directionOptions.destination.longitude;
399
400                window.open(url);
401            });
402        }
403
404        return {
405            init: function () {
406                init();
407            }
408        };
409    };
410
411}(jQuery));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.