{"version":3,"sources":["dealer-locator/dealer-locator-geo.js"],"names":["getQueryVariable","variable","geoDebug","window","location","search","substring","clearStorage","split","i","vars","length","query","pair","dl_CallRestService","request","callback","$","ajax","url","dataType","jsonp","success","r","dl_onApiSuccess","error","e","console","log","statusText","dl_onApiError","dl_loadMapScenario","onLoad","options","maxResults","addressSuggestions","autoDetectLocation","Microsoft","Maps","AutosuggestManager","attachAutosuggest","selectedData","type","data","dl_getSuggestionData","mapData","address","indexOf","errorDealerBox","show","postalCode","zipcodeUpdate","CustomEvent","detail","dispatchEvent","lat","Storage","lon","localStorageSetItemCommon","dl_getPinCode","res","dl","centerMap","onError","message","loadModule","errorCallback","credentials","bingMapsAPIKey","formattedSuggestion","latitude","longitude","bingMapsAPIKey_AutoComplete","resourceSets","estimatedTotal","resources","dl_getLatLon","zip","dl_getLatLonFromQuery","geocodePoints","coordinates","encodeURIComponent","resource","entityType","countryRegion","updateZip","ngScope","loadDealers","dealergeolocation","document","ready","suggestionInterval","on","hide","$input","lastSuggestion","this","setInterval","msMap","find","resultCount","Math","mm","min","suggestion","text","clearInterval","dgl","val","country","keyCode","blur","click"],"mappings":"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","file":"dealer-locator-geo.min.js","sourcesContent":["// geoDebug \r\nvar geoDebug = false;\r\nvar clearStorage = false;\r\n\r\nfunction getQueryVariable(variable) {\r\n var query = window.location.search.substring(1);\r\n var vars = query.split(\"&\");\r\n for (var i = 0; i < vars.length; i++) {\r\n var pair = vars[i].split(\"=\");\r\n if (pair[0] == variable) {\r\n return pair[1];\r\n }\r\n }\r\n return (false);\r\n}\r\nif (getQueryVariable(\"debug\") == 1) {\r\n geoDebug = true;\r\n //clearStorage = true;\r\n //clearStorage && localStorage.clear();\r\n geoDebug && console.log(\"geoDebug= \" + geoDebug + \" && clearStorage= \" + clearStorage);\r\n}\r\n\r\n\r\n\r\nclass dealergeolocation {\r\n\r\n constructor() {\r\n\r\n\r\n\r\n $(document).ready(function() {\r\n\r\n var suggestionInterval;\r\n $('#input-search-location').on('focus', function() {\r\n $('.input-search-location-error').hide();\r\n var $input = $(this);\r\n var lastSuggestion = '';\r\n suggestionInterval = setInterval(function() {\r\n\r\n var msMap = $('.MicrosoftMap').find('ul li');\r\n\r\n var resultCount = msMap.length;\r\n\r\n if (resultCount > 0) {\r\n for (var i = 0; i < Math.min(3, resultCount); i++) {\r\n var mm = $(msMap[i]);\r\n var suggestion = mm.find('.line1').text() + ', ' + mm.find('.line2').text();\r\n if (suggestion != lastSuggestion && suggestion.indexOf('United States') >= 0) {\r\n $input.data('suggestion', suggestion);\r\n break;\r\n }\r\n }\r\n } else {\r\n $input.data('suggestion', '');\r\n }\r\n }, 60);\r\n });\r\n $('#input-search-location').on('blur', function() {\r\n clearInterval(suggestionInterval);\r\n });\r\n }); //document ready END\r\n } //constructor() END\r\n} // class geolocation END\r\nvar dgl = new dealergeolocation();\r\n\r\n\r\n/*\r\n * *************************************\r\n * BING MAP START\r\n * BING map code will be here \r\n * ************************************* \r\n */\r\n\r\nfunction dl_CallRestService(request, callback) {\r\n $.ajax({\r\n url: request,\r\n dataType: \"jsonp\",\r\n jsonp: \"jsonp\",\r\n success: function(r) {\r\n callback(r);\r\n dl_onApiSuccess && dl_onApiSuccess();\r\n },\r\n error: function(e) {\r\n geoDebug && console.log(e.statusText);\r\n dl_onApiError();\r\n }\r\n });\r\n} //dl_CallRestService END\r\n\r\nfunction dl_loadMapScenario() {\r\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\r\n callback: onLoad,\r\n errorCallback: onError,\r\n credentials: bingMapsAPIKey\r\n });\r\n\r\n function onLoad() {\r\n var options = {\r\n maxResults: 5,\r\n addressSuggestions: false,\r\n autoDetectLocation: true\r\n //userLocation: new Microsoft.Maps.Location(40.679553, -96.807385)\r\n };\r\n var manager = new Microsoft.Maps.AutosuggestManager(options);\r\n manager.attachAutosuggest('#input-search-location', '.input-search-location-container', function(selectedData, type) {\r\n var data = dl_getSuggestionData(selectedData);\r\n mapData = data;\r\n\r\n if ((mapData.address || \"\").indexOf('United States') < 0) {\r\n errorDealerBox.show();\r\n return;\r\n }\r\n\r\n $('#input-search-location').data('suggestion', ''); //user has seleted location. remove the saved first-suggestion\r\n\t\t\t\r\n\t\t\tif (selectedData.address.postalCode) {\r\n //global\r\n\t\t\t const zipcodeUpdate = new CustomEvent('zipcodeUpdate', {\r\n\t\t\t\tdetail: selectedData.address.postalCode,\r\n\t\t\t });\r\n\t\t\t window.dispatchEvent(zipcodeUpdate);\r\n }\r\n\t\t\t\r\n\t\t\t\r\n\r\n // document.getElementsByClassName('printoutPanel')[type-1].innerHTML =\r\n geoDebug && console.log(\r\n // 'Suggestion: ' + data.address +\r\n 'Lat: ' + data.lat +\r\n 'Lon: ' + data.lon\r\n );\r\n\r\n // check if browser supports localStorage\r\n if (typeof(Storage) !== \"undefined\" && (data.lat != null && data.lon != null)) {\r\n // set temp. lat/long\r\n localStorageSetItemCommon(\"_GeoTempLat\", data.lat);\r\n localStorageSetItemCommon(\"_GeoTempLong\", data.lon);\r\n }\r\n\r\n\r\n //When Autosuggest location is selected, click Go\r\n // setTimeout(function() {\r\n\r\n // $('.input-search-location-go').trigger('click');\r\n\r\n // }, 1000);\r\n dl_getPinCode(data.lat, data.lon, function(res, lat, lon) {\r\n dl.centerMap(lat, lon);\r\n ngScope().loadDealers(lat, lon, res);\r\n });\r\n });\r\n\r\n }\r\n\r\n function onError(message) {\r\n console.error('error:', message);\r\n }\r\n\r\n //selectedSuggestion END\r\n\r\n}\r\n\r\n//calls when item is selected from suggestion\r\nvar mapData;\r\n\r\n//function onSuggestionSelected(selectedData) {\r\n// onSuggestionSelectedCommon(selectedData, 1)\r\n//}\r\n//function onSuggestionSelected2(selectedData) {\r\n// onSuggestionSelectedCommon(selectedData, 2)\r\n//}\r\n\r\n//function onSuggestionSelectedCommon(selectedData, type) {\r\n// var data = dl_getSuggestionData(selectedData);\r\n// mapData = data;\r\n\r\n// // document.getElementsByClassName('printoutPanel')[type-1].innerHTML =\r\n// geoDebug && console.log(\r\n// // 'Suggestion: ' + data.address +\r\n// 'Lat: ' + data.lat +\r\n// 'Lon: ' + data.lon\r\n// );\r\n\r\n// // check if browser supports localStorage\r\n// if (typeof (Storage) !== \"undefined\" && (data.lat != null && data.lon != null)) {\r\n// // set temp. lat/long\r\n// dlLocalStorageSetItemCommon(\"_GeoTempLat\", data.lat);\r\n// dlLocalStorageSetItemCommon(\"_GeoTempLong\", data.lon);\r\n// }\r\n\r\n\r\n//}\r\n\r\n//returns the data in proper format\r\nfunction dl_getSuggestionData(selectedData) {\r\n if (selectedData == null) {\r\n return;\r\n }\r\n geoDebug && console.log(selectedData);\r\n\r\n var res = {\r\n address: selectedData.formattedSuggestion\r\n };\r\n\r\n if (selectedData.location) {\r\n res.lat = selectedData.location.latitude;\r\n res.lon = selectedData.location.longitude;\r\n }\r\n return res;\r\n}\r\n\r\nfunction dl_getPinCode(lat, lon, callback) {\r\n\r\n dl_CallRestService('https://dev.virtualearth.net/REST/v1/Locations/' + lat + ',' + lon + '?key=' + bingMapsAPIKey_AutoComplete,\r\n\r\n function(res) {\r\n //geoDebug && console.log('dl_getPinCode:', res);\r\n if (res.resourceSets[\"0\"].estimatedTotal > 0 && res.resourceSets[0].resources[0].address.postalCode != null) {\r\n callback && callback(res.resourceSets[0].resources[0].address.postalCode, lat, lon);\r\n dl_onApiSuccess();\r\n } else {\r\n geoDebug && console.log('dl_getPinCode: Not match found!');\r\n //callback(null, lat, lon);\r\n dl_onApiError();\r\n }\r\n })\r\n}\r\n\r\nfunction dl_getLatLon(zip, callback) {\r\n\r\n dl_CallRestService('https://dev.virtualearth.net/REST/v1/Locations?postalCode=' + zip + '&key=' + bingMapsAPIKey_AutoComplete,\r\n\r\n function(res) {\r\n //geoDebug && console.log('dl_getLatLon:', res);\r\n if (res.resourceSets[\"0\"].estimatedTotal > 0) {\r\n callback(res.resourceSets[0].resources[0].geocodePoints[0].coordinates[0],\r\n res.resourceSets[0].resources[0].geocodePoints[0].coordinates[1], zip);\r\n dl_onApiSuccess();\r\n } else {\r\n geoDebug && console.log('dl_getLatLon: Not match found!');\r\n //callback();\r\n dl_onApiError();\r\n }\r\n })\r\n}\r\n\r\nfunction dl_getLatLonFromQuery(query, callback) {\r\n geoDebug && console.log('query:', query);\r\n dl_CallRestService('https://dev.virtualearth.net/REST/v1/Locations?q=' + encodeURIComponent(query) + '&key=' + 'Ap0AObt84NcDaUThCeWOj52ZqUHv6k4TJhjLibR-DghC-semgoj-0uPbIi8r0E4j',\r\n\r\n function(res) {\r\n //geoDebug && console.log('dl_getLatLonFromQuery:', res);\r\n console.log(res);\r\n if (res.resourceSets[\"0\"].estimatedTotal > 0) {\r\n //if any resource has entityType:postalcode1 then use that else use first \r\n var resources = res.resourceSets[\"0\"].resources;\r\n var resource;\r\n for (var i = 0; i < resources.length; i++) {\r\n\r\n if (resources[i].entityType.indexOf('Postcode') >= 0) {\r\n resource = resources[i];\r\n break;\r\n }\r\n }\r\n\r\n if (resource == null) {\r\n resource = resources[\"0\"];\r\n }\r\n\r\n callback(resource.geocodePoints[\"0\"].coordinates[\"0\"],\r\n resource.geocodePoints[\"0\"].coordinates[\"1\"], resource.address.countryRegion);\r\n dl_onApiSuccess();\r\n } else {\r\n geoDebug && console.log('dl_getLatLonFromQuery: Not match found!');\r\n //callback();\r\n dl_onApiError();\r\n }\r\n })\r\n}\r\n\r\n\r\nfunction dl_onApiError() {\r\n geoDebug && console.log('No data from API or some API error!');\r\n errorDealerBox.show();\r\n}\r\n\r\nfunction dl_onApiSuccess() {\r\n //errorDealerBox.hide();\r\n}\r\n\r\nvar errorDealerBox = new function() {\r\n //var errorRes = $('.geo-input-error-title span');\r\n\r\n this.show = function() {\r\n $('.input-search-location-error').show();\r\n }\r\n this.hide = function() {\r\n $('.input-search-location-error').hide();\r\n }\r\n }\r\n /* BING MAP END */\r\n\r\n\r\n$(function() {\r\n $('.input-search-location-go').on('click', function() {\r\n\r\n $('.input-search-location-error').hide();\r\n\r\n var $input = $('#input-search-location');\r\n\r\n // Validate: is there val() in input\r\n if ($input.val()) {\r\n\r\n dl_getLatLonFromQuery($input.data('suggestion') || $input.val(), function(lat, lon, country) {\r\n\r\n if (country !== \"United States\") {\r\n $('.input-search-location-error').show();\r\n return;\r\n }\r\n\r\n\r\n dl_getPinCode(lat, lon, function(res, lat, lon) {\r\n geoDebug && console.log('Go: Zip:' + res);\r\n\r\n dl.centerMap(lat, lon);\r\n ngScope().loadDealers(lat, lon, res);\r\n\r\n //setZip.updateAll(res, lat, lon);\r\n\r\n // if btn on nav is clicked hide it\r\n //if (_elements.$nav_right.hasClass('active')) {\r\n // _elements.$nav_right.toggleClass(\"active\");\r\n //\r\n //} else {\r\n // //\r\n //}\r\n\r\n });\r\n\r\n });\r\n\t\t\t\r\n\t\t\t//global\r\n\t\t const zipcodeUpdate = new CustomEvent('zipcodeUpdate', {\r\n\t\t\tdetail: $input.val(),\r\n\t\t });\r\n\t\t window.dispatchEvent(zipcodeUpdate);\r\n\r\n\r\n\r\n } else {\r\n //input is empty - no val in input \r\n $input.addClass('form-error')\r\n\r\n }\r\n\r\n\r\n\r\n //dl_getPinCode(localStorage.getItem(\"_GeoTempLat\"), localStorage.getItem(\"_GeoTempLong\"), function (zip, lat, lon) {\r\n // console.log(zip, lat, lon);\r\n // //geoDebug && console.log('zip: ' + res);\r\n // // document.getElementsByClassName('printoutPanel')[type - 1].innerHTML += \"
PostalCode:\" + res;\r\n // dl.centerMap(lat, lon);\r\n // ngScope().loadDealers(lat, lon, zip);\r\n //});\r\n\t\t\r\n });\r\n\r\n $('#input-search-location').on('keydown', function(e) {\r\n if (e.keyCode == 13) {\r\n\r\n $(this).blur();\r\n\r\n $('.input-search-location-go').click();\r\n }\r\n })\r\n\r\n});\r\n\r\n\r\nfunction updateZip(zip) {\r\n dl_getLatLon(zip,\r\n function(lat, lon, zip) {\r\n dl.centerMap(lat, lon);\r\n\r\n ngScope().loadDealers(lat, lon, zip);\r\n\r\n });\r\n}"]}