{"version":3,"sources":["map.js"],"names":["Vendd","Scripts","load","$wrapper","$","length","$container","$anchor","testDriveForm","get","interestForm","click","$thisAnchor","this","$tabIndex","attr","$sectionToScroll","$headerHeight","height","window","width","hasClass","removeClass","addClass","animate","scrollTop","offset","top","scroll","_","throttle","resetAnchors","e","preventDefault","model","brand","$this","formExternalService","find","reset","handleErrors","updateModel","updateBrand","updateType","val","trigger","fancybox","open","src","type","stopPropagation","first"],"mappings":"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","file":"newModelDetail.js","sourcesContent":["Vendd.Scripts.load(function () {\n\n var run = function () {\n $('.x-control.x-map[data-control=\"map\"]').each(function (i, wrapper) {\n var $wrapper = $(wrapper);\n\n var config = {};\n\n wrapper.mapOpts = {\n zoom: 15,\n scrollwheel: false,\n mapTypeId: google.maps.MapTypeId.ROADMAP,\n streetViewControl: false,\n mapTypeControl: false\n };\n\n wrapper.infoWinOpts = {\n maxWidth: 440\n };\n\n wrapper.markerOpts = {\n title: LhApp.Context.Site.Name,\n icon: $wrapper.data('marker')\n };\n\n wrapper.map = null;\n\n wrapper.markers = [];\n\n wrapper.markerCluster = null;\n\n wrapper.create = function (coordinates) {\n var coords = [];\n\n $(coordinates).each(function (c, cc) {\n var existsCoord = _.find(coords, function (x) { return x.lat === cc.lat && x.lng == cc.lng });\n if (!existsCoord)\n coords.push(cc);\n });\n\n if (coords.length == 0)\n throw new Error('no coordinates');\n\n var firstLatLng = coords[0];\n\n var mapOpts = {};\n $.extend(true, mapOpts, wrapper.mapOpts, {\n div: '#' + $wrapper.attr('id'),\n lat: firstLatLng.lat,\n lng: firstLatLng.lng\n });\n\n wrapper.map = new GMaps(mapOpts);\n\n wrapper.addMarkers(coords);\n };\n\n wrapper.reinit = function (coordinates) {\n var coords = [];\n\n $(coordinates).each(function (c, cc) {\n var existsCoord = _.find(coords, function (x) { return x.lat === cc.lat && x.lng == cc.lng });\n if (!existsCoord)\n coords.push(cc);\n });\n\n wrapper.addMarkers(coords);\n };\n\n wrapper.setCenter = function () {\n if (wrapper.markers.length == 0) {\n wrapper.map.setZoom(3);\n return;\n }\n\n if ($(\".contact-page\").length > 0 && wrapper.markers.length == 1) {\n wrapper.map.setZoom(15);\n return;\n }\n\n var bounds = new google.maps.LatLngBounds();\n for (i = 0; i < wrapper.markers.length; i++) {\n bounds.extend(wrapper.markers[i].getPosition());\n }\n wrapper.map.fitBounds(bounds);\n\n if (wrapper.markers.length == 1) {\n wrapper.map.setZoom(17);\n }\n }\n\n wrapper.getMarker = function (coordinates) {\n var marker = _.find(wrapper.markers, function (x) { return x.position.toString() === new google.maps.LatLng(coordinates.lat, coordinates.lng).toString() });\n return marker;\n };\n\n function find_closest_marker(lat1, lon1) {\n var pi = Math.PI;\n var R = 6371; //equatorial radius\n var distances = [];\n var closest = -1;\n\n for (i = 0; i < wrapper.markers.length; i++) {\n var lat2 = wrapper.markers[i].position.lat();\n var lon2 = wrapper.markers[i].position.lng();\n\n var chLat = lat2 - lat1;\n var chLon = lon2 - lon1;\n\n var dLat = chLat * (pi / 180);\n var dLon = chLon * (pi / 180);\n\n var rLat1 = lat1 * (pi / 180);\n var rLat2 = lat2 * (pi / 180);\n\n var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(rLat1) * Math.cos(rLat2);\n var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n var d = R * c;\n\n distances[i] = d;\n if (closest == -1 || d < distances[closest]) {\n closest = i;\n }\n }\n\n return wrapper.markers[closest];\n }\n\n wrapper.findMarker = function (search, country, callback) {\n var geocoder = new google.maps.Geocoder();\n geocoder.geocode({ 'address': search + ', ' + (country || 'GR') }, function (results, status) {\n if (status == google.maps.GeocoderStatus.OK) {\n var latLng = results[0].geometry.location;\n var closestMarker = find_closest_marker(latLng.lat(), latLng.lng());\n callback(closestMarker, null);\n } else {\n callback(null, new Error('closest marker not found'));\n }\n });\n };\n\n wrapper.removeMarkers = function () {\n wrapper.markerCluster.clearMarkers();\n wrapper.map.removeMarkers();\n wrapper.markers = [];\n };\n\n wrapper.addMarkers = function (coords) {\n\n var openedInfoWindow;\n\n $(coords).each(function (i, spot) {\n var infoWindow = null;\n if (spot.html && spot.html != '') {\n var infoWindowOpts = {};\n $.extend(true, infoWindowOpts, wrapper.infoWinOpts, {\n content: spot.html\n });\n infoWindow = new google.maps.InfoWindow(infoWindowOpts);\n }\n\n var markerOpts = {};\n $.extend(true, markerOpts, wrapper.markerOpts, {\n lat: spot.lat,\n lng: spot.lng,\n infoWindow: infoWindow\n });\n\n var marker = wrapper.map.addMarker(markerOpts);\n wrapper.markers.push(marker);\n\n if ($('.x-store-locator').length > 0) {\n google.maps.event.addListener(marker, 'click', function () {\n if (typeof openedInfoWindow != 'undefined' && openedInfoWindow) {\n openedInfoWindow.close();\n openedInfoWindow = null;\n }\n wrapper.map.setZoom(17);\n wrapper.map.map.panTo(marker.getPosition());\n wrapper.map.map.setCenter(marker.getPosition());\n wrapper.map.panBy(0, -70);\n setTimeout(function () { infoWindow.open(wrapper.map.map, marker); }, 500);\n openedInfoWindow = infoWindow;\n });\n }\n\n if ($(\".contact-page\").length > 0) {\n infoWindow.open(wrapper.map.map, marker);\n wrapper.map.panBy(0, -120);\n }\n\n });\n\n if ($('.x-store-locator').length > 0) {\n var clusterStyles = [\n {\n url: '/themes/templatetheme/images/marker.png',\n height: 65,\n width: 44,\n textSize: 16,\n textHeight: 47,\n textColor: 'black'\n },\n\n ];\n\n mcOptions = { gridSize: 70, maxZoom: 10, styles: clusterStyles };\n\n wrapper.markerCluster = new MarkerClusterer(wrapper.map.map, wrapper.markers, mcOptions);\n }\n\n wrapper.setCenter();\n };\n\n wrapper.open = function (marker) {\n google.maps.event.trigger(marker, 'click');\n };\n });\n };\n\n Vendd.MessageBus.subscribe(Vendd.Plugins.Messages.GoogleMapsLoaded, 'mapControl', run);\n\n var gMapsMarkersAccessFix = setInterval(function () {\n if ($('.x-google-map .gm-style').length > 0) {\n $('img', $('.x-google-map')).each(function () {\n $(this).attr('alt', 'marker');\n });\n clearInterval(gMapsMarkersAccessFix);\n }\n }, 1000);\n});"]}