{"version":3,"sources":["Map.js","RetailerSearch.js"],"names":["GMap","mapHolder","self","this","$mapHolder","$","hasPosition","showroom","init","startingPosition","lat","lng","data","map","google","maps","Map","zoom","center","styles","mapStyle","disableDefaultUI","zoomControl","showRoomMarkerImage","MarkerImage","noAfMarkerImage","Marker","position","icon","setZoom","elementType","stylers","color","featureType","RetailerSearch","context","list","mapObject","bindMarker","item","marker","event","addListener","e","console","log","getBoundingClientRect","window","scroll","top","left","behavior","addClass","setTimeout","removeClass","sortListByDistance","a","b","markerA","markerB","distance","sortByDistance","countryName","countryCenter","LatLng","directionsService","DirectionsService","directionsDisplay","DirectionsRenderer","markers","addMarkers","on","preventDefault","address","find","val","findLocation","findByCurrentPosition","id","filter","length","gMarker","setCenter","navigator","geolocation","getCurrentPosition","pos","coords","latitude","longitude","latLng","ShowMarkerNCalcDistance","findNear","index","setVisible","latlng","geometry","spherical","computeDistanceBetween","locationSearchObject","geocoder","Geocoder","info","geocode","results","status","GeocoderStatus","OK","searchLocation","location","sort","sortedMarkers","slice","circ","Circle","setRadius","fitBounds","getBounds","markersWithShowRoom","markersWithoutShowRoom","i","Showroom","push","merge","sortList","warn","alert","items","each","key","getMarkerById","attr","parent","detach","append","markerData","title","hasOwnProperty"],"mappings":"AAAA,IAAIA,KAAO,SAAcC,GAGxB,IAAIC,EAAOC,KACPC,EAAaC,EAAEJ,GACbK,GAAc,EACdC,GAAW,EAEdL,EAAKM,KAAO,WAER,IAAIC,EAAmB,CAAEC,IAAK,UAAWC,IAAK,YAoB9C,GAjBIP,EAAWQ,KAAK,cAChBH,EAAmBL,EAAWQ,KAAK,YACnCN,GAAc,EACVF,EAAWQ,KAAK,cAChBL,GAAW,IAInBL,EAAKW,IAAM,IAAIC,OAAOC,KAAKC,IAAIf,EAAU,GACrC,CACIgB,KAAM,EACNC,OAAQT,EACRU,OAAQC,SACRC,kBAAkB,EAClBC,aAAa,IAGjBhB,EAAa,CAEb,IAAIiB,EAAsB,IAAIT,OAAOC,KAAKS,YAAY,gCAAiC,KAAM,KAAM,MAC/FC,EAAkB,IAAIX,OAAOC,KAAKS,YAAY,+BAAgC,KAAM,KAAM,MAE9F,IAAIV,OAAOC,KAAKW,OAAO,CACnBC,SAAUlB,EACVI,IAAKX,EAAKW,IACVe,KAAMrB,EAAWgB,EAAsBE,IAG3CvB,EAAKW,IAAIgB,QAAQ,MAI5B3B,EAAKM,QAGFY,SAAW,CACb,CACEU,YAAe,WACfC,QAAW,CACT,CACEC,MAAS,aAIf,CACCF,YAAe,gBACdC,QAAW,CACT,CACEC,MAAS,aAIf,CACCF,YAAe,kBACdC,QAAW,CACT,CACEC,MAAS,aAIf,CACEF,YAAe,mBACfC,QAAW,CACT,CACEC,MAAS,aAIf,CACEF,YAAe,qBACfC,QAAW,CACT,CACEC,MAAS,aAIf,CACEC,YAAe,iBACfH,YAAe,kBACfC,QAAW,CACT,CACEC,MAAS,aAIf,CACEC,YAAe,6BACfH,YAAe,kBACfC,QAAW,CACT,CACEC,MAAS,aAIf,CACEC,YAAe,6BACfH,YAAe,mBACfC,QAAW,CACT,CACEC,MAAS,aAIf,CACEC,YAAe,oBACfH,YAAe,WACfC,QAAW,CACT,CACEC,MAAS,aAIf,CACEC,YAAe,MACfH,YAAe,WACfC,QAAW,CACT,CACEC,MAAS,aAIf,CACEC,YAAe,MACfH,YAAe,mBACfC,QAAW,CACT,CACEC,MAAS,aAIf,CACEC,YAAe,WACfH,YAAe,gBACfC,QAAW,CACT,CACEC,MAAS,aAIf,CACEC,YAAe,WACfH,YAAe,mBACfC,QAAW,CACT,CACEC,MAAS,aAIf,CACEC,YAAe,OACfH,YAAe,WACfC,QAAW,CACT,CACEC,MAAS,aAIf,CACEC,YAAe,gBACfH,YAAe,WACfC,QAAW,CACT,CACEC,MAAS,aAIf,CACEC,YAAe,eACfH,YAAe,WACfC,QAAW,CACT,CACEC,MAAS,aAIf,CACEC,YAAe,eACfH,YAAe,kBACfC,QAAW,CACT,CACEC,MAAS,aAIf,CACEC,YAAe,iCACfH,YAAe,WACfC,QAAW,CACT,CACEC,MAAS,aAIf,CACEC,YAAe,iCACfH,YAAe,kBACfC,QAAW,CACT,CACEC,MAAS,aAIf,CACEC,YAAe,aACfH,YAAe,mBACfC,QAAW,CACT,CACEC,MAAS,aAIf,CACEC,YAAe,eACfH,YAAe,WACfC,QAAW,CACT,CACEC,MAAS,aAIf,CACEC,YAAe,eACfH,YAAe,mBACfC,QAAW,CACT,CACEC,MAAS,aAIf,CACEC,YAAe,eACfH,YAAe,qBACfC,QAAW,CACT,CACEC,MAAS,aAIf,CACEC,YAAe,kBACfH,YAAe,WACfC,QAAW,CACT,CACEC,MAAS,aAIf,CACEC,YAAe,QACfH,YAAe,gBACfC,QAAW,CACT,CACEC,MAAS,aAIf,CACEC,YAAe,QACfH,YAAe,mBACfC,QAAW,CACT,CACEC,MAAS,cAKbE,eAAiB,SAAwBC,EAASC,EAAMC,GAE3D,IAAInC,EAAOC,KAuMX,SAASmC,EAAWC,EAAMC,GACzB1B,OAAOC,KAAK0B,MAAMC,YAAYF,EAAQ,QAAS,SAAUG,GAE/CC,QAAQC,IAAIN,EAAK,GAAGO,yBAE1BC,OAAOC,OAAO,CACJC,IAAKV,EAAK,GAAGO,wBAAwBG,IAAM,GACjDC,KAAM,EACNC,SAAU,WAGjBZ,EAAKa,SAAS,SAEXC,WAAW,WACHd,EAAKe,YAAY,UAClB,QAOZ,SAASC,EAAmBC,EAAGC,GAC9B,IAAIC,EAAUF,EAAE5C,KAAK,UACX+C,EAAUF,EAAE7C,KAAK,UAE3B,OAAwB,MAApB8C,EAAQE,SACE,EAEgB,MAApBD,EAAQC,UACH,EAGRF,EAAQE,SAAWD,EAAQC,SACpB,EAEFF,EAAQE,UAAYD,EAAQC,SAC1B,GAGC,EAIhB,SAASC,EAAeL,EAAGC,GACvB,OAAkB,MAAdD,EAAEI,SACK,EAGO,MAAdH,EAAEG,UACM,EAGRJ,EAAEI,SAAWH,EAAEG,SACR,EAEFJ,EAAEI,UAAYH,EAAEG,SACd,GAGC,EAlQhB1D,EAAKiC,QAAU9B,EAAE8B,GACjBjC,EAAKkC,KAAO/B,EAAE+B,GACdlC,EAAKW,IAAMwB,EAEXnC,EAAK4D,YAAgB,UACrB5D,EAAK6D,cAAkB,IAAIjD,OAAOC,KAAKiD,OAAO,UAAW,YACzD9D,EAAK+D,kBAAqB,IAAInD,OAAOC,KAAKmD,kBACvChE,EAAKiE,kBAAqB,IAAIrD,OAAOC,KAAKqD,mBAE1ClE,EAAKM,KAAO,WAGc,MAAlBuC,OAAOsB,SACPnE,EAAKoE,aAGTpE,EAAKiC,QAAQoC,GAAG,SACZ,SAAS5B,GACLA,EAAE6B,iBAEF,IAAIC,EAAUvE,EAAKiC,QAAQuC,KAAK,SAASC,MAAQ,KAAOzE,EAAK4D,YAE7D5D,EAAK0E,aAAa,CAAEH,QAAWA,MAIvCvE,EAAK2E,wBAEL3E,EAAKkC,KAAKmC,GAAG,QAAS,uCAClB,SAAS5B,GACLA,EAAE6B,iBAEF,IAAIM,EAAKzE,EAAEF,MAAMS,KAAK,MAClBwB,EAAOW,OAAOsB,QAAQU,OAAO,SAASxC,GACtC,OAAQA,EAAKuC,IAAMA,IAGvB,GAAI1C,EAAK4C,OAAQ,CACb,IAAIxC,EAASJ,EAAK,GAAG6C,QACrB/E,EAAKW,IAAIqE,UAAU1C,EAAOb,UAC1BzB,EAAKW,IAAIgB,QAAQ,IAEjBkB,OAAOC,OAAO,CACVC,IAAK,EACLC,KAAM,EACNC,SAAU,eAMjCjD,EAAK2E,sBAAwB,WAExBM,UAAUC,aAEbD,UAAUC,YAAYC,mBAAmB,SAAU1D,GAClD,IAAI2D,EAAM,IAAIxE,OAAOC,KAAKiD,OAAOrC,EAAS4D,OAAOC,SAAU7D,EAAS4D,OAAOE,WAC3EvF,EAAK0E,aAAa,CAAEc,OAAUJ,OAKjCpF,EAAKyF,wBAA0B,SAASC,GAEvC,IAAKC,MAAQ,EAAGA,MAAQ9C,OAAOsB,QAAQW,OAAQa,QAAS,CAC9C,IAAIrD,EAASO,OAAOsB,QAAQwB,OAMrC,GAHArD,EAAOyC,QAAQa,YAAW,GAGL,MAAjBtD,EAAOuD,OAAgB,CAC1B,IAAInC,EAAW9C,OAAOC,KAAKiF,SAASC,UAAUC,uBAAuBN,EAAUpD,EAAOuD,QACtFvD,EAAOoB,SAAWA,OAGlBpB,EAAOoB,SAAW,OAKrB1D,EAAK0E,aAAe,SAASuB,GAC5B,IAAIC,EAAW,IAAItF,OAAOC,KAAKsF,SAC/BzD,QAAQ0D,KAAK,qBAAsBH,GAEhCC,EAASG,QAAQJ,EAAsB,SAAUK,EAASC,GAEtD,GAAIA,GAAU3F,OAAOC,KAAK2F,eAAeC,GAAI,CAEzC,IAAIC,EAAiBJ,EAAQ,GAAGR,SAASa,SAEzC3G,EAAKyF,wBAAwBiB,GAG7BvC,QAAQyC,KAAKjD,GAGb,IAAIkD,EAAgB1C,QAAQ2C,MAAM,EAAG,GAEjCC,EAAO,IAAInG,OAAOC,KAAKmG,OAC3BD,EAAKE,UAAUJ,EAAcA,EAAc/B,OAAS,GAAGpB,UACvDqD,EAAK/B,UAAU0B,GACf1G,EAAKW,IAAIqE,UAAU0B,GACnB1G,EAAKW,IAAIuG,UAAUH,EAAKI,aAExB,IAAIC,EAAsB,GACtBC,EAAyB,GAE7B,IAAKC,EAAI,EAAGA,EAAIT,EAAc/B,OAAQwC,IAClChF,OAASuE,EAAcS,GACnBhF,OAAOiF,SACPH,EAAoBI,KAAKlF,QAEzB+E,EAAuBG,KAAKlF,QAIpCuE,EAAgB1G,EAAEsH,MAAML,EAAqBC,GAE7CrH,EAAK0H,gBAGRhF,QAAQiF,KAAK,wBAAyBpB,GACnCqB,MAAM,2CAKf5H,EAAK0H,SAAW,WAEZ,IAAIG,EAAQ,GAEZ7H,EAAKkC,KAAKsC,KAAK,+BAA+BsD,KAAK,SAASC,EAAK1F,GAE7D,IAAIC,EAAStC,EAAKgI,cAAc7H,EAAEkC,GAAM4F,KAAK,OAC/B,MAAV3F,GAAoC,IAAlBA,EAAOwC,QACzBpC,QAAQC,IAAI,4BAA8BxC,EAAEkC,GAAM4F,KAAK,MAAQ,MAGnE9H,EAAEkC,GAAM6F,SAASxH,KAAK,SAAU4B,GAChCuF,EAAML,KAAKrH,EAAEkC,GAAM6F,SAASC,YAGhCN,EAAMjB,KAAKvD,GAEXrD,EAAKkC,KAAKsC,KAAK,0BAA0B4D,OAAOP,IAGpD7H,EAAKgI,cAAgB,SAASpD,GAC1B,IAAK,IAAIe,KAAS9C,OAAOsB,QAAS,CAC9B,IAAI7B,EAASO,OAAOsB,QAAQwB,GAC5B,GAAIrD,EAAOsC,IAAMA,EACb,OAAOtC,EAIf,OAAO,MAGXtC,EAAKoE,WAAa,WAEd,IAAI/C,EAAsB,IAAIT,OAAOC,KAAKS,YAAY,gCAAiC,KAAM,KAAM,MAC/FC,EAAkB,IAAIX,OAAOC,KAAKS,YAAY,+BAAgC,KAAM,KAAM,MAC9FoB,QAAQC,IAAIE,OAAOsB,SACnB,IAAK,IAAIwB,EAAQ,EAAGA,EAAQ9C,OAAOsB,QAAQW,OAAQa,IAAS,CAExD,IAAIrD,EAASO,OAAOsB,QAAQwB,GAG5BrD,EAAOuD,OAAS,IAAIjF,OAAOC,KAAKiD,OAAOxB,EAAOgD,SAAUhD,EAAOiD,WAG/D,IAAI8C,EAAa,CACb5G,SAAUa,EAAOuD,OACjBlF,IAAKX,EAAKW,IACV2H,MAAOhG,EAAOgG,OAIdhG,EAAOiG,eAAe,aAAejG,EAAOjC,SAC5CgI,EAAW3G,KAAOL,EAElBgH,EAAW3G,KAAOH,EAItB,IAAIwD,EAAU,IAAInE,OAAOC,KAAKW,OAAO6G,GAGrC/F,EAAOyC,QAAUA,EAGjBA,EAAQsD,WAAa/F,EAErBF,EAAWpC,EAAKkC,KAAKsC,KAAK,IAAMlC,EAAOsC,IAAKG,KAwBvD/E,EAAKM","sourcesContent":["var GMap = function GMap(mapHolder){\r\n\r\n\r\n\tvar self = this;\r\n\tvar $mapHolder = $(mapHolder);\r\n \tvar hasPosition = false;\r\n \tvar showroom = false;\r\n\r\n self.init = function() {\r\n\r\n var startingPosition = { lat: 63.113077, lng: 16.6372206 };\r\n\r\n\r\n if ($mapHolder.data('position')) {\r\n startingPosition = $mapHolder.data('position');\r\n hasPosition = true;\r\n if ($mapHolder.data('showroom')) {\r\n showroom = true;\r\n }\r\n }\r\n\r\n self.map = new google.maps.Map(mapHolder[0],\r\n {\r\n zoom: 4,\r\n center: startingPosition,\r\n styles: mapStyle,\r\n disableDefaultUI: true,\r\n zoomControl: true\r\n });\r\n\r\n if (hasPosition) {\r\n\r\n var showRoomMarkerImage = new google.maps.MarkerImage('/ui/default/img/pin-black.png', null, null, null);\r\n var noAfMarkerImage = new google.maps.MarkerImage('/ui/default/img/pin-grey.png', null, null, null);\r\n\r\n new google.maps.Marker({\r\n position: startingPosition,\r\n map: self.map,\r\n icon: showroom ? showRoomMarkerImage : noAfMarkerImage\r\n });\r\n\r\n self.map.setZoom(14);\r\n }\r\n };\r\n\r\n\tself.init();\r\n};\r\n\r\nvar mapStyle = [\r\n {\r\n \"elementType\": \"geometry\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#e5e5e5\"\r\n }\r\n ]\r\n },\r\n {\r\n \t\"elementType\": \"geometry.fill\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#eeeeee\"\r\n }\r\n ]\r\n },\r\n {\r\n \t\"elementType\": \"geometry.stroke\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#a7a7a7\"\r\n }\r\n ]\r\n },\r\n {\r\n \"elementType\": \"labels.text.fill\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#523735\"\r\n }\r\n ]\r\n },\r\n {\r\n \"elementType\": \"labels.text.stroke\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#f5f1e6\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"administrative\",\r\n \"elementType\": \"geometry.stroke\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#c9b2a6\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"administrative.land_parcel\",\r\n \"elementType\": \"geometry.stroke\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#dcd2be\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"administrative.land_parcel\",\r\n \"elementType\": \"labels.text.fill\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#ae9e90\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"landscape.natural\",\r\n \"elementType\": \"geometry\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#e6e2db\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"poi\",\r\n \"elementType\": \"geometry\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#e6e2db\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"poi\",\r\n \"elementType\": \"labels.text.fill\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#93817c\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"poi.park\",\r\n \"elementType\": \"geometry.fill\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#bbc3af\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"poi.park\",\r\n \"elementType\": \"labels.text.fill\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#447530\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"road\",\r\n \"elementType\": \"geometry\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#a4a39c\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"road.arterial\",\r\n \"elementType\": \"geometry\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#ffffff\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"road.highway\",\r\n \"elementType\": \"geometry\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#d0c6b6\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"road.highway\",\r\n \"elementType\": \"geometry.stroke\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#bdb09e\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"road.highway.controlled_access\",\r\n \"elementType\": \"geometry\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#d0c6b6\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"road.highway.controlled_access\",\r\n \"elementType\": \"geometry.stroke\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#d0c6b6\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"road.local\",\r\n \"elementType\": \"labels.text.fill\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#a4a39c\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"transit.line\",\r\n \"elementType\": \"geometry\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#a4a39c\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"transit.line\",\r\n \"elementType\": \"labels.text.fill\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#8f7d77\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"transit.line\",\r\n \"elementType\": \"labels.text.stroke\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#ebe3cd\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"transit.station\",\r\n \"elementType\": \"geometry\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#e6e2db\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"water\",\r\n \"elementType\": \"geometry.fill\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#bac5d4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"water\",\r\n \"elementType\": \"labels.text.fill\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#92998d\"\r\n }\r\n ]\r\n }\r\n];","var RetailerSearch = function RetailerSearch(context, list, mapObject)\r\n{\r\n\tvar self = this;\r\n\tself.context = $(context);\r\n\tself.list = $(list);\r\n\tself.map = mapObject;\r\n\r\n\tself.countryName \t\t= \"sverige\";\t\r\n\tself.countryCenter \t\t= new google.maps.LatLng(63.113077, 16.6372206);\r\n\tself.directionsService \t= new google.maps.DirectionsService();\r\n self.directionsDisplay \t= new google.maps.DirectionsRenderer();\r\n\r\n self.init = function() {\r\n\r\n // Add all markers from backend list\r\n if (window.markers != null) {\r\n self.addMarkers();\r\n }\r\n\r\n self.context.on('submit',\r\n function(e) {\r\n e.preventDefault();\r\n\r\n var address = self.context.find(\"input\").val() + ', ' + self.countryName;\r\n\r\n self.findLocation({ 'address': address });\r\n });\r\n\r\n // Auto target current physical position\r\n self.findByCurrentPosition();\r\n\r\n self.list.on('click', '.partial-reseller-page .card-title a',\r\n function(e) {\r\n e.preventDefault();\r\n //var id = $(this).parents('.reseller:first').attr('id');\r\n var id = $(this).data('id');\r\n var list = window.markers.filter(function(item) {\r\n return (item.id == id);\r\n });\r\n\r\n if (list.length) {\r\n var marker = list[0].gMarker;\r\n self.map.setCenter(marker.position);\r\n self.map.setZoom(14);\r\n\r\n window.scroll({\r\n top: 0,\r\n left: 0,\r\n behavior: 'smooth'\r\n });\r\n }\r\n });\r\n };\t\r\n\r\n\tself.findByCurrentPosition = function() {\r\n\r\n\t\tif (navigator.geolocation) {\r\n\r\n\t\t\tnavigator.geolocation.getCurrentPosition(function (position) {\r\n\t\t\t\tvar pos = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);\r\n\t\t\t\tself.findLocation({ 'latLng': pos });\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tself.ShowMarkerNCalcDistance = function(findNear) {\r\n\r\n\t\tfor (index = 0; index < window.markers.length; index++) {\r\n var marker = window.markers[index];\r\n\t\t \r\n\t\t\t//Visar alla markers\r\n\t\t\tmarker.gMarker.setVisible(true);\r\n\r\n\t\t\t//Mäter på hur långt återförsäljaren är från den inmatade adressen.\r\n\t\t\tif (marker.latlng != null) {\r\n\t\t\t\tvar distance = google.maps.geometry.spherical.computeDistanceBetween(findNear, marker.latlng);\r\n\t\t\t\tmarker.distance = distance;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tmarker.distance = null;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tself.findLocation = function(locationSearchObject) {\r\n\t\tvar geocoder = new google.maps.Geocoder();\r\n\t\tconsole.info(\"Google looking for\", locationSearchObject)\r\n\r\n\t geocoder.geocode(locationSearchObject, function (results, status) {\r\n\r\n\t if (status == google.maps.GeocoderStatus.OK) {\r\n\r\n\t var searchLocation = results[0].geometry.location;\r\n\r\n\t self.ShowMarkerNCalcDistance(searchLocation);\r\n\r\n\t // Sort to distance\r\n\t markers.sort(sortByDistance);\r\n\r\n\t // Copy the nearest 3, this is a global variable all opther methods works with, so lets keep it intact, and workaround the index problems later\r\n\t var sortedMarkers = markers.slice(0, 2);\r\n\r\n\t var circ = new google.maps.Circle();\r\n\t circ.setRadius(sortedMarkers[sortedMarkers.length - 1].distance);\r\n\t circ.setCenter(searchLocation);\r\n\t self.map.setCenter(searchLocation);\r\n\t self.map.fitBounds(circ.getBounds());\r\n\r\n\t var markersWithShowRoom = [];\r\n\t var markersWithoutShowRoom = [];\r\n\r\n\t for (i = 0; i < sortedMarkers.length; i++) {\r\n\t marker = sortedMarkers[i];\r\n\t if (marker.Showroom) {\r\n\t markersWithShowRoom.push(marker);\r\n\t } else {\r\n\t markersWithoutShowRoom.push(marker);\r\n\t }\r\n\t }\r\n\r\n\t sortedMarkers = $.merge(markersWithShowRoom, markersWithoutShowRoom);\r\n\r\n\t self.sortList();\r\n\t }\r\n\t else {\r\n\t \tconsole.warn(\"Google GeocoderStatus\", status)\r\n\t alert(\"Kunde inte hitta den angivna platsen\");\r\n\t }\r\n\t });\r\n\t}\r\n\r\n self.sortList = function() {\r\n\r\n var items = [];\r\n\r\n self.list.find('.card.partial-reseller-page').each(function(key, item) {\r\n\r\n var marker = self.getMarkerById($(item).attr('id'));\r\n if (marker == null || marker.length === 0) {\r\n console.log('No marker found with id \"' + $(item).attr('id') + '\"!');\r\n }\r\n\r\n $(item).parent().data('marker', marker);\r\n items.push($(item).parent().detach());\r\n });\r\n\r\n items.sort(sortListByDistance);\r\n\r\n self.list.find('.sub-page-listing .row').append(items);\r\n };\r\n\r\n self.getMarkerById = function(id) {\r\n for (var index in window.markers) {\r\n var marker = window.markers[index];\r\n if (marker.id == id) {\r\n return marker;\r\n }\r\n }\r\n\r\n return null;\r\n };\r\n\r\n self.addMarkers = function() {\r\n\r\n var showRoomMarkerImage = new google.maps.MarkerImage('/ui/default/img/pin-black.png', null, null, null);\r\n var noAfMarkerImage = new google.maps.MarkerImage('/ui/default/img/pin-grey.png', null, null, null);\r\n console.log(window.markers)\r\n for (var index = 0; index < window.markers.length; index++) {\r\n // Fetch marker from list\r\n var marker = window.markers[index];\r\n\r\n // Convert positon to google maps latlng\r\n marker.latlng = new google.maps.LatLng(marker.latitude, marker.longitude);\r\n\r\n // Setup marker data with positon and map\r\n var markerData = {\r\n position: marker.latlng,\r\n map: self.map,\r\n title: marker.title\r\n };\r\n\r\n // Determine if marker is showroom\r\n if (marker.hasOwnProperty('showroom') && marker.showroom) {\r\n markerData.icon = showRoomMarkerImage;\r\n } else {\r\n markerData.icon = noAfMarkerImage;\r\n }\r\n\r\n // Create google maps marker object with data\r\n var gMarker = new google.maps.Marker(markerData);\r\n\r\n // Save marker\r\n marker.gMarker = gMarker;\r\n\r\n // Two way binding\r\n gMarker.markerData = marker;\r\n \r\n bindMarker(self.list.find('#' + marker.id), gMarker);\r\n }\r\n };\r\n\r\n\tfunction bindMarker(item, marker){\r\n\t\tgoogle.maps.event.addListener(marker, 'click', function (e) {\r\n\r\n console.log(item[0].getBoundingClientRect());\r\n\r\n\t\t window.scroll({\r\n top: item[0].getBoundingClientRect().top - 50,\r\n\t\t left: 0,\r\n\t\t behavior: 'smooth'\r\n\t\t });\r\n\r\n\t\t\titem.addClass('flash');\r\n\r\n\t\t setTimeout(function() {\r\n\t\t item.removeClass('flash');\r\n\t\t }, 2500);\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tself.init();\r\n\r\n\tfunction sortListByDistance(a, b) {\r\n\t\tvar markerA = a.data('marker');\r\n var markerB = b.data('marker');\r\n \r\n\t\tif (markerA.distance == null) {\r\n\t return 1;\r\n\t }\r\n if (markerB.distance == null) {\r\n\t return -1;\r\n\t }\r\n\r\n\t if (markerA.distance > markerB.distance) {\r\n\t return 1;\r\n\t }\r\n\t else if (markerA.distance == markerB.distance) {\r\n\t return 0;\r\n\t }\r\n\t else {\r\n\t return -1;\r\n\t }\r\n\t}\r\n\r\n\tfunction sortByDistance(a, b) {\r\n\t if (a.distance == null) {\r\n\t return 1;\r\n }\r\n\r\n\t if (b.distance == null) {\r\n\t return -1;\r\n\t }\r\n\r\n\t if (a.distance > b.distance) {\r\n\t return 1;\r\n\t }\r\n\t else if (a.distance == b.distance) {\r\n\t return 0;\r\n\t }\r\n\t else {\r\n\t return -1;\r\n\t }\r\n\t}\r\n}"],"file":"retailer-map.js"}