'use strict'; !(function (a, b) { 'object' == typeof exports ? (module.exports = b()) : 'function' == typeof define && define.amd ? define(['jquery', 'googlemaps!'], b) : (a.GMaps = b()); })(this, function () { var a = function (a, b) { var c; if (a === b) return a; for (c in b) void 0 !== b[c] && (a[c] = b[c]); return a; }, b = function (a, b) { var c, d = Array.prototype.slice.call(arguments, 2), e = [], f = a.length; if (Array.prototype.map && a.map === Array.prototype.map) e = Array.prototype.map.call(a, function (a) { var c = d.slice(0); return c.splice(0, 0, a), b.apply(this, c); }); else for (c = 0; c < f; c++) (callback_params = d), callback_params.splice(0, 0, a[c]), e.push(b.apply(this, callback_params)); return e; }, c = function (a) { var b, c = []; for (b = 0; b < a.length; b++) c = c.concat(a[b]); return c; }, d = function (a, b) { var c = a[0], d = a[1]; return b && ((c = a[1]), (d = a[0])), new google.maps.LatLng(c, d); }, f = function (a, b) { var c; for (c = 0; c < a.length; c++) a[c] instanceof google.maps.LatLng || (a[c].length > 0 && 'object' == typeof a[c][0] ? (a[c] = f(a[c], b)) : (a[c] = d(a[c], b))); return a; }, g = function (a, b) { var c = a.replace('.', ''); return 'jQuery' in this && b ? $('.' + c, b)[0] : document.getElementsByClassName(c)[0]; }, h = function (a, b) { var a = a.replace('#', ''); return 'jQuery' in window && b ? $('#' + a, b)[0] : document.getElementById(a); }, i = function (a) { var b = 0, c = 0; if (a.getBoundingClientRect) { var d = a.getBoundingClientRect(), e = -(window.scrollX ? window.scrollX : window.pageXOffset), f = -(window.scrollY ? window.scrollY : window.pageYOffset); return [d.left - e, d.top - f]; } if (a.offsetParent) do (b += a.offsetLeft), (c += a.offsetTop); while ((a = a.offsetParent)); return [b, c]; }, j = (function (b) { var c = document, d = function (b) { if ('object' != typeof window.google || !window.google.maps) return ( 'object' == typeof window.console && window.console.error && console.error( 'Google Maps API is required. Please register the following JavaScript library https://maps.googleapis.com/maps/api/js.' ), function () {} ); if (!this) return new d(b); (b.zoom = b.zoom || 15), (b.mapType = b.mapType || 'roadmap'); var e, f = function (a, b) { return void 0 === a ? b : a; }, j = this, k = [ 'bounds_changed', 'center_changed', 'click', 'dblclick', 'drag', 'dragend', 'dragstart', 'idle', 'maptypeid_changed', 'projection_changed', 'resize', 'tilesloaded', 'zoom_changed' ], l = ['mousemove', 'mouseout', 'mouseover'], m = ['el', 'lat', 'lng', 'mapType', 'width', 'height', 'markerClusterer', 'enableNewStyle'], n = b.el || b.div, o = b.markerClusterer, p = google.maps.MapTypeId[b.mapType.toUpperCase()], q = new google.maps.LatLng(b.lat, b.lng), r = f(b.zoomControl, !0), s = b.zoomControlOpt || { style: 'DEFAULT', position: 'TOP_LEFT' }, t = s.style || 'DEFAULT', u = s.position || 'TOP_LEFT', v = f(b.panControl, !0), w = f(b.mapTypeControl, !0), x = f(b.scaleControl, !0), y = f(b.streetViewControl, !0), z = f(z, !0), A = {}, B = { zoom: this.zoom, center: q, mapTypeId: p }, C = { panControl: v, zoomControl: r, zoomControlOptions: { style: google.maps.ZoomControlStyle[t], position: google.maps.ControlPosition[u] }, mapTypeControl: w, scaleControl: x, streetViewControl: y, overviewMapControl: z }; if ( ('string' == typeof b.el || 'string' == typeof b.div ? n.indexOf('#') > -1 ? (this.el = h(n, b.context)) : (this.el = g.apply(this, [n, b.context])) : (this.el = n), void 0 === this.el || null === this.el) ) throw 'No element defined.'; for ( window.context_menu = window.context_menu || {}, window.context_menu[j.el.id] = {}, this.controls = [], this.overlays = [], this.layers = [], this.singleLayers = {}, this.markers = [], this.polylines = [], this.routes = [], this.polygons = [], this.infoWindow = null, this.overlay_el = null, this.zoom = b.zoom, this.registered_events = {}, this.el.style.width = b.width || this.el.scrollWidth || this.el.offsetWidth, this.el.style.height = b.height || this.el.scrollHeight || this.el.offsetHeight, google.maps.visualRefresh = b.enableNewStyle, e = 0; e < m.length; e++ ) delete b[m[e]]; for (1 != b.disableDefaultUI && (B = a(B, C)), A = a(B, b), e = 0; e < k.length; e++) delete A[k[e]]; for (e = 0; e < l.length; e++) delete A[l[e]]; (this.map = new google.maps.Map(this.el, A)), o && (this.markerClusterer = o.apply(this, [this.map])); var D = function (a, b) { var c = '', d = window.context_menu[j.el.id][a]; for (var e in d) if (d.hasOwnProperty(e)) { var f = d[e]; c += '
  • ' + f.title + '
  • '; } if (h('gmaps_context_menu')) { var g = h('gmaps_context_menu'); g.innerHTML = c; var e, k = g.getElementsByTagName('a'), l = k.length; for (e = 0; e < l; e++) { var m = k[e], n = function (c) { c.preventDefault(), d[this.id.replace(a + '_', '')].action.apply(j, [b]), j.hideContextMenu(); }; google.maps.event.clearListeners(m, 'click'), google.maps.event.addDomListenerOnce(m, 'click', n, !1); } var o = i.apply(this, [j.el]), p = o[0] + b.pixel.x - 15, q = o[1] + b.pixel.y - 15; (g.style.left = p + 'px'), (g.style.top = q + 'px'); } }; (this.buildContextMenu = function (a, b) { if ('marker' === a) { b.pixel = {}; var c = new google.maps.OverlayView(); c.setMap(j.map), (c.draw = function () { var d = c.getProjection(), e = b.marker.getPosition(); (b.pixel = d.fromLatLngToContainerPixel(e)), D(a, b); }); } else D(a, b); var d = h('gmaps_context_menu'); setTimeout(function () { d.style.display = 'block'; }, 0); }), (this.setContextMenu = function (a) { window.context_menu[j.el.id][a.control] = {}; var b, d = c.createElement('ul'); for (b in a.options) if (a.options.hasOwnProperty(b)) { var e = a.options[b]; window.context_menu[j.el.id][a.control][e.name] = { title: e.title, action: e.action }; } (d.id = 'gmaps_context_menu'), (d.style.display = 'none'), (d.style.position = 'absolute'), (d.style.minWidth = '100px'), (d.style.background = 'white'), (d.style.listStyle = 'none'), (d.style.padding = '8px'), (d.style.boxShadow = '2px 2px 6px #ccc'), h('gmaps_context_menu') || c.body.appendChild(d); var f = h('gmaps_context_menu'); google.maps.event.addDomListener( f, 'mouseout', function (a) { (a.relatedTarget && this.contains(a.relatedTarget)) || window.setTimeout(function () { f.style.display = 'none'; }, 400); }, !1 ); }), (this.hideContextMenu = function () { var a = h('gmaps_context_menu'); a && (a.style.display = 'none'); }); var E = function (a, c) { google.maps.event.addListener(a, c, function (a) { void 0 == a && (a = this), b[c].apply(this, [a]), j.hideContextMenu(); }); }; google.maps.event.addListener(this.map, 'zoom_changed', this.hideContextMenu); for (var F = 0; F < k.length; F++) { var G = k[F]; G in b && E(this.map, G); } for (var F = 0; F < l.length; F++) { var G = l[F]; G in b && E(this.map, G); } google.maps.event.addListener(this.map, 'rightclick', function (a) { b.rightclick && b.rightclick.apply(this, [a]), void 0 != window.context_menu[j.el.id].map && j.buildContextMenu('map', a); }), (this.refresh = function () { google.maps.event.trigger(this.map, 'resize'); }), (this.fitZoom = function () { var a, b = [], c = this.markers.length; for (a = 0; a < c; a++) 'boolean' == typeof this.markers[a].visible && this.markers[a].visible && b.push(this.markers[a].getPosition()); this.fitLatLngBounds(b); }), (this.fitLatLngBounds = function (a) { var b, c = a.length, d = new google.maps.LatLngBounds(); for (b = 0; b < c; b++) d.extend(a[b]); this.map.fitBounds(d); }), (this.setCenter = function (a, b, c) { this.map.panTo(new google.maps.LatLng(a, b)), c && c(); }), (this.getElement = function () { return this.el; }), (this.zoomIn = function (a) { (a = a || 1), (this.zoom = this.map.getZoom() + a), this.map.setZoom(this.zoom); }), (this.zoomOut = function (a) { (a = a || 1), (this.zoom = this.map.getZoom() - a), this.map.setZoom(this.zoom); }); var H, I = []; for (H in this.map) 'function' != typeof this.map[H] || this[H] || I.push(H); for (e = 0; e < I.length; e++) !(function (a, b, c) { a[c] = function () { return b[c].apply(b, arguments); }; })(this, this.map, I[e]); }; return d; })(this); (j.prototype.createControl = function (a) { var b = document.createElement('div'); (b.style.cursor = 'pointer'), a.disableDefaultStyles !== !0 && ((b.style.fontFamily = 'Roboto, Arial, sans-serif'), (b.style.fontSize = '11px'), (b.style.boxShadow = 'rgba(0, 0, 0, 0.298039) 0px 1px 4px -1px')); for (var c in a.style) b.style[c] = a.style[c]; a.id && (b.id = a.id), a.title && (b.title = a.title), a.classes && (b.className = a.classes), a.content && ('string' == typeof a.content ? (b.innerHTML = a.content) : a.content instanceof HTMLElement && b.appendChild(a.content)), a.position && (b.position = google.maps.ControlPosition[a.position.toUpperCase()]); for (var d in a.events) !(function (b, c) { google.maps.event.addDomListener(b, c, function () { a.events[c].apply(this, [this]); }); })(b, d); return (b.index = 1), b; }), (j.prototype.addControl = function (a) { var b = this.createControl(a); return this.controls.push(b), this.map.controls[b.position].push(b), b; }), (j.prototype.removeControl = function (a) { var b, c = null; for (b = 0; b < this.controls.length; b++) this.controls[b] == a && ((c = this.controls[b].position), this.controls.splice(b, 1)); if (c) for (b = 0; b < this.map.controls.length; b++) { var d = this.map.controls[a.position]; if (d.getAt(b) == a) { d.removeAt(b); break; } } return a; }), (j.prototype.createMarker = function (b) { if (void 0 == b.lat && void 0 == b.lng && void 0 == b.position) throw 'No latitude or longitude defined.'; var c = this, d = b.details, e = b.fences, f = b.outside, g = { position: new google.maps.LatLng(b.lat, b.lng), map: null }, h = a(g, b); delete h.lat, delete h.lng, delete h.fences, delete h.outside; var i = new google.maps.Marker(h); if (((i.fences = e), b.infoWindow)) { i.infoWindow = new google.maps.InfoWindow(b.infoWindow); for (var j = ['closeclick', 'content_changed', 'domready', 'position_changed', 'zindex_changed'], k = 0; k < j.length; k++) !(function (a, c) { b.infoWindow[c] && google.maps.event.addListener(a, c, function (a) { b.infoWindow[c].apply(this, [a]); }); })(i.infoWindow, j[k]); } for ( var l = [ 'animation_changed', 'clickable_changed', 'cursor_changed', 'draggable_changed', 'flat_changed', 'icon_changed', 'position_changed', 'shadow_changed', 'shape_changed', 'title_changed', 'visible_changed', 'zindex_changed' ], m = ['dblclick', 'drag', 'dragend', 'dragstart', 'mousedown', 'mouseout', 'mouseover', 'mouseup'], k = 0; k < l.length; k++ ) !(function (a, c) { b[c] && google.maps.event.addListener(a, c, function () { b[c].apply(this, [this]); }); })(i, l[k]); for (var k = 0; k < m.length; k++) !(function (a, c, d) { b[d] && google.maps.event.addListener(c, d, function (c) { c.pixel || (c.pixel = a.getProjection().fromLatLngToPoint(c.latLng)), b[d].apply(this, [c]); }); })(this.map, i, m[k]); return ( google.maps.event.addListener(i, 'click', function () { (this.details = d), b.click && b.click.apply(this, [this]), i.infoWindow && (c.hideInfoWindows(), i.infoWindow.open(c.map, i)); }), google.maps.event.addListener(i, 'rightclick', function (a) { (a.marker = this), b.rightclick && b.rightclick.apply(this, [a]), void 0 != window.context_menu[c.el.id].marker && c.buildContextMenu('marker', a); }), i.fences && google.maps.event.addListener(i, 'dragend', function () { c.checkMarkerGeofence(i, function (a, b) { f(a, b); }); }), i ); }), (j.prototype.addMarker = function (a) { var b; if (a.hasOwnProperty('gm_accessors_')) b = a; else { if (!((a.hasOwnProperty('lat') && a.hasOwnProperty('lng')) || a.position)) throw 'No latitude or longitude defined.'; b = this.createMarker(a); } return ( b.setMap(this.map), this.markerClusterer && this.markerClusterer.addMarker(b), this.markers.push(b), j.fire('marker_added', b, this), b ); }), (j.prototype.addMarkers = function (a) { for (var b, c = 0; (b = a[c]); c++) this.addMarker(b); return this.markers; }), (j.prototype.hideInfoWindows = function () { for (var a, b = 0; (a = this.markers[b]); b++) a.infoWindow && a.infoWindow.close(); }), (j.prototype.removeMarker = function (a) { for (var b = 0; b < this.markers.length; b++) if (this.markers[b] === a) { this.markers[b].setMap(null), this.markers.splice(b, 1), this.markerClusterer && this.markerClusterer.removeMarker(a), j.fire('marker_removed', a, this); break; } return a; }), (j.prototype.removeMarkers = function (a) { var b = []; if (void 0 === a) { for (var c = 0; c < this.markers.length; c++) { var d = this.markers[c]; d.setMap(null), j.fire('marker_removed', d, this); } this.markerClusterer && this.markerClusterer.clearMarkers && this.markerClusterer.clearMarkers(), (this.markers = b); } else { for (var c = 0; c < a.length; c++) { var e = this.markers.indexOf(a[c]); if (e > -1) { var d = this.markers[e]; d.setMap(null), this.markerClusterer && this.markerClusterer.removeMarker(d), j.fire('marker_removed', d, this); } } for (var c = 0; c < this.markers.length; c++) { var d = this.markers[c]; null != d.getMap() && b.push(d); } this.markers = b; } }), (j.prototype.drawOverlay = function (a) { var b = new google.maps.OverlayView(), c = !0; return ( b.setMap(this.map), null != a.auto_show && (c = a.auto_show), (b.onAdd = function () { var c = document.createElement('div'); (c.style.borderStyle = 'none'), (c.style.borderWidth = '0px'), (c.style.position = 'absolute'), (c.style.zIndex = 100), (c.innerHTML = a.content), (b.el = c), a.layer || (a.layer = 'overlayLayer'); var d = this.getPanes(), e = d[a.layer], f = ['contextmenu', 'DOMMouseScroll', 'dblclick', 'mousedown']; e.appendChild(c); for (var g = 0; g < f.length; g++) !(function (a, b) { google.maps.event.addDomListener(a, b, function (a) { navigator.userAgent.toLowerCase().indexOf('msie') != -1 && document.all ? ((a.cancelBubble = !0), (a.returnValue = !1)) : a.stopPropagation(); }); })(c, f[g]); a.click && (d.overlayMouseTarget.appendChild(b.el), google.maps.event.addDomListener(b.el, 'click', function () { a.click.apply(b, [b]); })), google.maps.event.trigger(this, 'ready'); }), (b.draw = function () { var d = this.getProjection(), e = d.fromLatLngToDivPixel(new google.maps.LatLng(a.lat, a.lng)); (a.horizontalOffset = a.horizontalOffset || 0), (a.verticalOffset = a.verticalOffset || 0); var f = b.el, g = f.children[0], h = g.clientHeight, i = g.clientWidth; switch (a.verticalAlign) { case 'top': f.style.top = e.y - h + a.verticalOffset + 'px'; break; default: case 'middle': f.style.top = e.y - h / 2 + a.verticalOffset + 'px'; break; case 'bottom': f.style.top = e.y + a.verticalOffset + 'px'; } switch (a.horizontalAlign) { case 'left': f.style.left = e.x - i + a.horizontalOffset + 'px'; break; default: case 'center': f.style.left = e.x - i / 2 + a.horizontalOffset + 'px'; break; case 'right': f.style.left = e.x + a.horizontalOffset + 'px'; } (f.style.display = c ? 'block' : 'none'), c || a.show.apply(this, [f]); }), (b.onRemove = function () { var c = b.el; a.remove ? a.remove.apply(this, [c]) : (b.el.parentNode.removeChild(b.el), (b.el = null)); }), this.overlays.push(b), b ); }), (j.prototype.removeOverlay = function (a) { for (var b = 0; b < this.overlays.length; b++) if (this.overlays[b] === a) { this.overlays[b].setMap(null), this.overlays.splice(b, 1); break; } }), (j.prototype.removeOverlays = function () { for (var a, b = 0; (a = this.overlays[b]); b++) a.setMap(null); this.overlays = []; }), (j.prototype.drawPolyline = function (a) { var b = [], c = a.path; if (c.length) if (void 0 === c[0][0]) b = c; else for (var d, e = 0; (d = c[e]); e++) b.push(new google.maps.LatLng(d[0], d[1])); var f = { map: this.map, path: b, strokeColor: a.strokeColor, strokeOpacity: a.strokeOpacity, strokeWeight: a.strokeWeight, geodesic: a.geodesic, clickable: !0, editable: !1, visible: !0 }; a.hasOwnProperty('clickable') && (f.clickable = a.clickable), a.hasOwnProperty('editable') && (f.editable = a.editable), a.hasOwnProperty('icons') && (f.icons = a.icons), a.hasOwnProperty('zIndex') && (f.zIndex = a.zIndex); for ( var g = new google.maps.Polyline(f), h = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'], i = 0; i < h.length; i++ ) !(function (b, c) { a[c] && google.maps.event.addListener(b, c, function (b) { a[c].apply(this, [b]); }); })(g, h[i]); return this.polylines.push(g), j.fire('polyline_added', g, this), g; }), (j.prototype.removePolyline = function (a) { for (var b = 0; b < this.polylines.length; b++) if (this.polylines[b] === a) { this.polylines[b].setMap(null), this.polylines.splice(b, 1), j.fire('polyline_removed', a, this); break; } }), (j.prototype.removePolylines = function () { for (var a, b = 0; (a = this.polylines[b]); b++) a.setMap(null); this.polylines = []; }), (j.prototype.drawCircle = function (b) { (b = a({ map: this.map, center: new google.maps.LatLng(b.lat, b.lng) }, b)), delete b.lat, delete b.lng; for ( var c = new google.maps.Circle(b), d = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'], e = 0; e < d.length; e++ ) !(function (a, c) { b[c] && google.maps.event.addListener(a, c, function (a) { b[c].apply(this, [a]); }); })(c, d[e]); return this.polygons.push(c), c; }), (j.prototype.drawRectangle = function (b) { b = a({ map: this.map }, b); var c = new google.maps.LatLngBounds( new google.maps.LatLng(b.bounds[0][0], b.bounds[0][1]), new google.maps.LatLng(b.bounds[1][0], b.bounds[1][1]) ); b.bounds = c; for ( var d = new google.maps.Rectangle(b), e = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'], f = 0; f < e.length; f++ ) !(function (a, c) { b[c] && google.maps.event.addListener(a, c, function (a) { b[c].apply(this, [a]); }); })(d, e[f]); return this.polygons.push(d), d; }), (j.prototype.drawPolygon = function (d) { var e = !1; d.hasOwnProperty('useGeoJSON') && (e = d.useGeoJSON), delete d.useGeoJSON, (d = a({ map: this.map }, d)), 0 == e && (d.paths = [d.paths.slice(0)]), d.paths.length > 0 && d.paths[0].length > 0 && (d.paths = c(b(d.paths, f, e))); for ( var g = new google.maps.Polygon(d), h = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'], i = 0; i < h.length; i++ ) !(function (a, b) { d[b] && google.maps.event.addListener(a, b, function (a) { d[b].apply(this, [a]); }); })(g, h[i]); return this.polygons.push(g), j.fire('polygon_added', g, this), g; }), (j.prototype.removePolygon = function (a) { for (var b = 0; b < this.polygons.length; b++) if (this.polygons[b] === a) { this.polygons[b].setMap(null), this.polygons.splice(b, 1), j.fire('polygon_removed', a, this); break; } }), (j.prototype.removePolygons = function () { for (var a, b = 0; (a = this.polygons[b]); b++) a.setMap(null); this.polygons = []; }), (j.prototype.getFromFusionTables = function (a) { var b = a.events; delete a.events; var c = a, d = new google.maps.FusionTablesLayer(c); for (var e in b) !(function (a, c) { google.maps.event.addListener(a, c, function (a) { b[c].apply(this, [a]); }); })(d, e); return this.layers.push(d), d; }), (j.prototype.loadFromFusionTables = function (a) { var b = this.getFromFusionTables(a); return b.setMap(this.map), b; }), (j.prototype.getFromKML = function (a) { var b = a.url, c = a.events; delete a.url, delete a.events; var d = a, e = new google.maps.KmlLayer(b, d); for (var f in c) !(function (a, b) { google.maps.event.addListener(a, b, function (a) { c[b].apply(this, [a]); }); })(e, f); return this.layers.push(e), e; }), (j.prototype.loadFromKML = function (a) { var b = this.getFromKML(a); return b.setMap(this.map), b; }), (j.prototype.addLayer = function (a, b) { b = b || {}; var c; switch (a) { case 'weather': this.singleLayers.weather = c = new google.maps.weather.WeatherLayer(); break; case 'clouds': this.singleLayers.clouds = c = new google.maps.weather.CloudLayer(); break; case 'traffic': this.singleLayers.traffic = c = new google.maps.TrafficLayer(); break; case 'transit': this.singleLayers.transit = c = new google.maps.TransitLayer(); break; case 'bicycling': this.singleLayers.bicycling = c = new google.maps.BicyclingLayer(); break; case 'panoramio': (this.singleLayers.panoramio = c = new google.maps.panoramio.PanoramioLayer()), c.setTag(b.filter), delete b.filter, b.click && google.maps.event.addListener(c, 'click', function (a) { b.click(a), delete b.click; }); break; case 'places': if ( ((this.singleLayers.places = c = new google.maps.places.PlacesService(this.map)), b.search || b.nearbySearch || b.radarSearch) ) { var d = { bounds: b.bounds || null, keyword: b.keyword || null, location: b.location || null, name: b.name || null, radius: b.radius || null, rankBy: b.rankBy || null, types: b.types || null }; b.radarSearch && c.radarSearch(d, b.radarSearch), b.search && c.search(d, b.search), b.nearbySearch && c.nearbySearch(d, b.nearbySearch); } if (b.textSearch) { var e = { bounds: b.bounds || null, location: b.location || null, query: b.query || null, radius: b.radius || null }; c.textSearch(e, b.textSearch); } } if (void 0 !== c) return 'function' == typeof c.setOptions && c.setOptions(b), 'function' == typeof c.setMap && c.setMap(this.map), c; }), (j.prototype.removeLayer = function (a) { if ('string' == typeof a && void 0 !== this.singleLayers[a]) this.singleLayers[a].setMap(null), delete this.singleLayers[a]; else for (var b = 0; b < this.layers.length; b++) if (this.layers[b] === a) { this.layers[b].setMap(null), this.layers.splice(b, 1); break; } }); var k, l; return ( (j.prototype.getRoutes = function (b) { switch (b.travelMode) { case 'bicycling': k = google.maps.TravelMode.BICYCLING; break; case 'transit': k = google.maps.TravelMode.TRANSIT; break; case 'driving': k = google.maps.TravelMode.DRIVING; break; default: k = google.maps.TravelMode.WALKING; } l = 'imperial' === b.unitSystem ? google.maps.UnitSystem.IMPERIAL : google.maps.UnitSystem.METRIC; var c = { avoidHighways: !1, avoidTolls: !1, optimizeWaypoints: !1, waypoints: [] }, d = a(c, b); (d.origin = /string/.test(typeof b.origin) ? b.origin : new google.maps.LatLng(b.origin[0], b.origin[1])), (d.destination = /string/.test(typeof b.destination) ? b.destination : new google.maps.LatLng(b.destination[0], b.destination[1])), (d.travelMode = k), (d.unitSystem = l), delete d.callback, delete d.error; var e = []; new google.maps.DirectionsService().route(d, function (a, c) { if (c === google.maps.DirectionsStatus.OK) { for (var d in a.routes) a.routes.hasOwnProperty(d) && e.push(a.routes[d]); b.callback && b.callback(e, a, c); } else b.error && b.error(a, c); }); }), (j.prototype.removeRoutes = function () { this.routes.length = 0; }), (j.prototype.getElevations = function (d) { (d = a({ locations: [], path: !1, samples: 256 }, d)), d.locations.length > 0 && d.locations[0].length > 0 && (d.locations = c(b([d.locations], f, !1))); var e = d.callback; delete d.callback; var g = new google.maps.ElevationService(); if (d.path) { var h = { path: d.locations, samples: d.samples }; g.getElevationAlongPath(h, function (a, b) { e && 'function' == typeof e && e(a, b); }); } else delete d.path, delete d.samples, g.getElevationForLocations(d, function (a, b) { e && 'function' == typeof e && e(a, b); }); }), (j.prototype.cleanRoute = j.prototype.removePolylines), (j.prototype.renderRoute = function (b, c) { var d, e = 'string' == typeof c.panel ? document.getElementById(c.panel.replace('#', '')) : c.panel; (c.panel = e), (c = a({ map: this.map }, c)), (d = new google.maps.DirectionsRenderer(c)), this.getRoutes({ origin: b.origin, destination: b.destination, travelMode: b.travelMode, waypoints: b.waypoints, unitSystem: b.unitSystem, error: b.error, avoidHighways: b.avoidHighways, avoidTolls: b.avoidTolls, optimizeWaypoints: b.optimizeWaypoints, callback: function (a, b, c) { c === google.maps.DirectionsStatus.OK && d.setDirections(b); } }); }), (j.prototype.drawRoute = function (a) { var b = this; this.getRoutes({ origin: a.origin, destination: a.destination, travelMode: a.travelMode, waypoints: a.waypoints, unitSystem: a.unitSystem, error: a.error, avoidHighways: a.avoidHighways, avoidTolls: a.avoidTolls, optimizeWaypoints: a.optimizeWaypoints, callback: function (c) { if (c.length > 0) { var d = { path: c[c.length - 1].overview_path, strokeColor: a.strokeColor, strokeOpacity: a.strokeOpacity, strokeWeight: a.strokeWeight }; a.hasOwnProperty('icons') && (d.icons = a.icons), b.drawPolyline(d), a.callback && a.callback(c[c.length - 1]); } } }); }), (j.prototype.travelRoute = function (a) { if (a.origin && a.destination) this.getRoutes({ origin: a.origin, destination: a.destination, travelMode: a.travelMode, waypoints: a.waypoints, unitSystem: a.unitSystem, error: a.error, callback: function (b) { if ((b.length > 0 && a.start && a.start(b[b.length - 1]), b.length > 0 && a.step)) { var c = b[b.length - 1]; if (c.legs.length > 0) for (var d, e = c.legs[0].steps, f = 0; (d = e[f]); f++) (d.step_number = f), a.step(d, c.legs[0].steps.length - 1); } b.length > 0 && a.end && a.end(b[b.length - 1]); } }); else if (a.route && a.route.legs.length > 0) for (var b, c = a.route.legs[0].steps, d = 0; (b = c[d]); d++) (b.step_number = d), a.step(b); }), (j.prototype.drawSteppedRoute = function (a) { var b = this; if (a.origin && a.destination) this.getRoutes({ origin: a.origin, destination: a.destination, travelMode: a.travelMode, waypoints: a.waypoints, error: a.error, callback: function (c) { if ((c.length > 0 && a.start && a.start(c[c.length - 1]), c.length > 0 && a.step)) { var d = c[c.length - 1]; if (d.legs.length > 0) for (var e, f = d.legs[0].steps, g = 0; (e = f[g]); g++) { e.step_number = g; var h = { path: e.path, strokeColor: a.strokeColor, strokeOpacity: a.strokeOpacity, strokeWeight: a.strokeWeight }; a.hasOwnProperty('icons') && (h.icons = a.icons), b.drawPolyline(h), a.step(e, d.legs[0].steps.length - 1); } } c.length > 0 && a.end && a.end(c[c.length - 1]); } }); else if (a.route && a.route.legs.length > 0) for (var c, d = a.route.legs[0].steps, e = 0; (c = d[e]); e++) { c.step_number = e; var f = { path: c.path, strokeColor: a.strokeColor, strokeOpacity: a.strokeOpacity, strokeWeight: a.strokeWeight }; a.hasOwnProperty('icons') && (f.icons = a.icons), b.drawPolyline(f), a.step(c); } }), (j.Route = function (a) { (this.origin = a.origin), (this.destination = a.destination), (this.waypoints = a.waypoints), (this.map = a.map), (this.route = a.route), (this.step_count = 0), (this.steps = this.route.legs[0].steps), (this.steps_length = this.steps.length); var b = { path: new google.maps.MVCArray(), strokeColor: a.strokeColor, strokeOpacity: a.strokeOpacity, strokeWeight: a.strokeWeight }; a.hasOwnProperty('icons') && (b.icons = a.icons), (this.polyline = this.map.drawPolyline(b).getPath()); }), (j.Route.prototype.getRoute = function (a) { var b = this; this.map.getRoutes({ origin: this.origin, destination: this.destination, travelMode: a.travelMode, waypoints: this.waypoints || [], error: a.error, callback: function () { (b.route = e[0]), a.callback && a.callback.call(b); } }); }), (j.Route.prototype.back = function () { if (this.step_count > 0) { this.step_count--; var a = this.route.legs[0].steps[this.step_count].path; for (var b in a) a.hasOwnProperty(b) && this.polyline.pop(); } }), (j.Route.prototype.forward = function () { if (this.step_count < this.steps_length) { var a = this.route.legs[0].steps[this.step_count].path; for (var b in a) a.hasOwnProperty(b) && this.polyline.push(a[b]); this.step_count++; } }), (j.prototype.checkGeofence = function (a, b, c) { return c.containsLatLng(new google.maps.LatLng(a, b)); }), (j.prototype.checkMarkerGeofence = function (a, b) { if (a.fences) for (var c, d = 0; (c = a.fences[d]); d++) { var e = a.getPosition(); this.checkGeofence(e.lat(), e.lng(), c) || b(a, c); } }), (j.prototype.toImage = function (a) { var a = a || {}, b = {}; if ( ((b.size = a.size || [this.el.clientWidth, this.el.clientHeight]), (b.lat = this.getCenter().lat()), (b.lng = this.getCenter().lng()), this.markers.length > 0) ) { b.markers = []; for (var c = 0; c < this.markers.length; c++) b.markers.push({ lat: this.markers[c].getPosition().lat(), lng: this.markers[c].getPosition().lng() }); } if (this.polylines.length > 0) { var d = this.polylines[0]; (b.polyline = {}), (b.polyline.path = google.maps.geometry.encoding.encodePath(d.getPath())), (b.polyline.strokeColor = d.strokeColor), (b.polyline.strokeOpacity = d.strokeOpacity), (b.polyline.strokeWeight = d.strokeWeight); } return j.staticMapURL(b); }), (j.staticMapURL = function (a) { function b(a, b) { if ('#' === a[0] && ((a = a.replace('#', '0x')), b)) { if (((b = parseFloat(b)), 0 === (b = Math.min(1, Math.max(b, 0))))) return '0x00000000'; (b = (255 * b).toString(16)), 1 === b.length && (b += b), (a = a.slice(0, 8) + b); } return a; } var c, d = [], e = ('file:' === location.protocol ? 'http:' : location.protocol) + '//maps.googleapis.com/maps/api/staticmap'; a.url && ((e = a.url), delete a.url), (e += '?'); var f = a.markers; delete a.markers, !f && a.marker && ((f = [a.marker]), delete a.marker); var g = a.styles; delete a.styles; var h = a.polyline; if ((delete a.polyline, a.center)) d.push('center=' + a.center), delete a.center; else if (a.address) d.push('center=' + a.address), delete a.address; else if (a.lat) d.push(['center=', a.lat, ',', a.lng].join('')), delete a.lat, delete a.lng; else if (a.visible) { var i = encodeURI(a.visible.join('|')); d.push('visible=' + i); } var j = a.size; j ? (j.join && (j = j.join('x')), delete a.size) : (j = '630x300'), d.push('size=' + j), a.zoom || a.zoom === !1 || (a.zoom = 15); var k = !a.hasOwnProperty('sensor') || !!a.sensor; delete a.sensor, d.push('sensor=' + k); for (var l in a) a.hasOwnProperty(l) && d.push(l + '=' + a[l]); if (f) for (var m, n, o = 0; (c = f[o]); o++) { (m = []), c.size && 'normal' !== c.size ? (m.push('size:' + c.size), delete c.size) : c.icon && (m.push('icon:' + encodeURI(c.icon)), delete c.icon), c.color && (m.push('color:' + c.color.replace('#', '0x')), delete c.color), c.label && (m.push('label:' + c.label[0].toUpperCase()), delete c.label), (n = c.address ? c.address : c.lat + ',' + c.lng), delete c.address, delete c.lat, delete c.lng; for (var l in c) c.hasOwnProperty(l) && m.push(l + ':' + c[l]); m.length || 0 === o ? (m.push(n), (m = m.join('|')), d.push('markers=' + encodeURI(m))) : ((m = d.pop() + encodeURI('|' + n)), d.push(m)); } if (g) for (var o = 0; o < g.length; o++) { var p = []; g[o].featureType && p.push('feature:' + g[o].featureType.toLowerCase()), g[o].elementType && p.push('element:' + g[o].elementType.toLowerCase()); for (var q = 0; q < g[o].stylers.length; q++) for (var r in g[o].stylers[q]) { var s = g[o].stylers[q][r]; ('hue' != r && 'color' != r) || (s = '0x' + s.substring(1)), p.push(r + ':' + s); } var t = p.join('|'); '' != t && d.push('style=' + t); } if (h) { if (((c = h), (h = []), c.strokeWeight && h.push('weight:' + parseInt(c.strokeWeight, 10)), c.strokeColor)) { var u = b(c.strokeColor, c.strokeOpacity); h.push('color:' + u); } if (c.fillColor) { var v = b(c.fillColor, c.fillOpacity); h.push('fillcolor:' + v); } var w = c.path; if (w.join) for (var x, q = 0; (x = w[q]); q++) h.push(x.join(',')); else h.push('enc:' + w); (h = h.join('|')), d.push('path=' + encodeURI(h)); } var y = window.devicePixelRatio || 1; return d.push('scale=' + y), (d = d.join('&')), e + d; }), (j.prototype.addMapType = function (a, b) { if (!b.hasOwnProperty('getTileUrl') || 'function' != typeof b.getTileUrl) throw "'getTileUrl' function required."; b.tileSize = b.tileSize || new google.maps.Size(256, 256); var c = new google.maps.ImageMapType(b); this.map.mapTypes.set(a, c); }), (j.prototype.addOverlayMapType = function (a) { if (!a.hasOwnProperty('getTile') || 'function' != typeof a.getTile) throw "'getTile' function required."; var b = a.index; delete a.index, this.map.overlayMapTypes.insertAt(b, a); }), (j.prototype.removeOverlayMapType = function (a) { this.map.overlayMapTypes.removeAt(a); }), (j.prototype.addStyle = function (a) { var b = new google.maps.StyledMapType(a.styles, { name: a.styledMapName }); this.map.mapTypes.set(a.mapTypeId, b); }), (j.prototype.setStyle = function (a) { this.map.setMapTypeId(a); }), (j.prototype.createPanorama = function (a) { return ( (a.hasOwnProperty('lat') && a.hasOwnProperty('lng')) || ((a.lat = this.getCenter().lat()), (a.lng = this.getCenter().lng())), (this.panorama = j.createPanorama(a)), this.map.setStreetView(this.panorama), this.panorama ); }), (j.createPanorama = function (b) { var c = h(b.el, b.context); (b.position = new google.maps.LatLng(b.lat, b.lng)), delete b.el, delete b.context, delete b.lat, delete b.lng; for ( var d = ['closeclick', 'links_changed', 'pano_changed', 'position_changed', 'pov_changed', 'resize', 'visible_changed'], e = a({ visible: !0 }, b), f = 0; f < d.length; f++ ) delete e[d[f]]; for (var g = new google.maps.StreetViewPanorama(c, e), f = 0; f < d.length; f++) !(function (a, c) { b[c] && google.maps.event.addListener(a, c, function () { b[c].apply(this); }); })(g, d[f]); return g; }), (j.prototype.on = function (a, b) { return j.on(a, this, b); }), (j.prototype.off = function (a) { j.off(a, this); }), (j.prototype.once = function (a, b) { return j.once(a, this, b); }), (j.custom_events = [ 'marker_added', 'marker_removed', 'polyline_added', 'polyline_removed', 'polygon_added', 'polygon_removed', 'geolocated', 'geolocation_failed' ]), (j.on = function (a, b, c) { if (j.custom_events.indexOf(a) == -1) return b instanceof j && (b = b.map), google.maps.event.addListener(b, a, c); var d = { handler: c, eventName: a }; return (b.registered_events[a] = b.registered_events[a] || []), b.registered_events[a].push(d), d; }), (j.off = function (a, b) { j.custom_events.indexOf(a) == -1 ? (b instanceof j && (b = b.map), google.maps.event.clearListeners(b, a)) : (b.registered_events[a] = []); }), (j.once = function (a, b, c) { if (j.custom_events.indexOf(a) == -1) return b instanceof j && (b = b.map), google.maps.event.addListenerOnce(b, a, c); }), (j.fire = function (a, b, c) { if (j.custom_events.indexOf(a) == -1) google.maps.event.trigger(b, a, Array.prototype.slice.apply(arguments).slice(2)); else if (a in c.registered_events) for (var d = c.registered_events[a], e = 0; e < d.length; e++) !(function (a, b, c) { a.apply(b, [c]); })(d[e].handler, c, b); }), (j.geolocate = function (a) { var b = a.always || a.complete; navigator.geolocation ? navigator.geolocation.getCurrentPosition( function (c) { a.success(c), b && b(); }, function (c) { a.error(c), b && b(); }, a.options ) : (a.not_supported(), b && b()); }), (j.geocode = function (a) { this.geocoder = new google.maps.Geocoder(); var b = a.callback; a.hasOwnProperty('lat') && a.hasOwnProperty('lng') && (a.latLng = new google.maps.LatLng(a.lat, a.lng)), delete a.lat, delete a.lng, delete a.callback, this.geocoder.geocode(a, function (a, c) { b(a, c); }); }), 'object' == typeof window.google && window.google.maps && (google.maps.Polygon.prototype.getBounds || (google.maps.Polygon.prototype.getBounds = function (a) { for (var b, c = new google.maps.LatLngBounds(), d = this.getPaths(), e = 0; e < d.getLength(); e++) { b = d.getAt(e); for (var f = 0; f < b.getLength(); f++) c.extend(b.getAt(f)); } return c; }), google.maps.Polygon.prototype.containsLatLng || (google.maps.Polygon.prototype.containsLatLng = function (a) { var b = this.getBounds(); if (null !== b && !b.contains(a)) return !1; for (var c = !1, d = this.getPaths().getLength(), e = 0; e < d; e++) for (var f = this.getPaths().getAt(e), g = f.getLength(), h = g - 1, i = 0; i < g; i++) { var j = f.getAt(i), k = f.getAt(h); ((j.lng() < a.lng() && k.lng() >= a.lng()) || (k.lng() < a.lng() && j.lng() >= a.lng())) && j.lat() + ((a.lng() - j.lng()) / (k.lng() - j.lng())) * (k.lat() - j.lat()) < a.lat() && (c = !c), (h = i); } return c; }), google.maps.Circle.prototype.containsLatLng || (google.maps.Circle.prototype.containsLatLng = function (a) { return !google.maps.geometry || google.maps.geometry.spherical.computeDistanceBetween(this.getCenter(), a) <= this.getRadius(); }), (google.maps.Rectangle.prototype.containsLatLng = function (a) { return this.getBounds().contains(a); }), (google.maps.LatLngBounds.prototype.containsLatLng = function (a) { return this.contains(a); }), (google.maps.Marker.prototype.setFences = function (a) { this.fences = a; }), (google.maps.Marker.prototype.addFence = function (a) { this.fences.push(a); }), (google.maps.Marker.prototype.getId = function () { return this.__gm_id; })), Array.prototype.indexOf || (Array.prototype.indexOf = function (a) { if (null == this) throw new TypeError(); var b = Object(this), c = b.length >>> 0; if (0 === c) return -1; var d = 0; if ( (arguments.length > 1 && ((d = Number(arguments[1])), d != d ? (d = 0) : 0 != d && d != 1 / 0 && d != -(1 / 0) && (d = (d > 0 || -1) * Math.floor(Math.abs(d)))), d >= c) ) return -1; for (var e = d >= 0 ? d : Math.max(c - Math.abs(d), 0); e < c; e++) if (e in b && b[e] === a) return e; return -1; }), j ); }); //# sourceMappingURL=gmaps.min.js.map