{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/scripts/util/StorageUtils.js","webpack:///./src/scripts/services/serviceProvider.js","webpack:///./src/scripts/modules/ui/find-a-dentist.js","webpack:///./src/scripts/services/FindADentistService/index.js","webpack:///./src/scripts/util/events.js","webpack:///./src/scripts/util/countryNameMap.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","2","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","hasLocalStorage","localStorage","setItem","removeItem","e","hasSessionStorage","sessionStorage","setCookie","writeCookie","getCookie","deleteCookie","inName","PATTERN","COOKIES","REGISTRATION","TOKEN","STATUS","SITE_NOTICE_BAR","SITE_MSG","DOWNTIME","FIND_A_DENTIST","LAST_LOGIN","CART_COUNT","USER_GUID","ORDER_GUID","TOOTHPASTE_PROMO","cookieData","settings","hostname","location","subdomainPattern","extend","expires","domain","test","replace","path","exDate","Date","setMinutes","getMinutes","toUTCString","param","cookieString","keyArr","pattern","reKey","RegExp","split","pair","join","addKeyValue","cookie","params","document","unescape","$1","conf","SVC_ORIGIN","services","supports","CORS","XMLHttpRequest","_objectAssign2","default","Events","register","servicePath","methods","Error","xhr","axios","baseURL","timeout","withCredentials","headers","Content-Type","Cache-Control","Pragma","throw","message","_promise2","resolve","reject","console","error","request","svcName","payload","indexOf","host","this","TypeError","_keys2","method","_stringify2","then","res","_StorageUtils","markersArray","infos","gMap","init","scope","mapDiv","getElementById","userLocation","countryName","countryNameMap","documentElement","getAttribute","map","updateAttempts","smartZoomCount","oms","hasAcceptedTerms","promptTerms","updateDentistsOnMap","google","maps","Map","zoom","disableDefaultUI","fullscreenControl","styles","featureType","stylers","visibility","clearOverlays","setMap","loadOMS","zoomControlsDiv","createElement","style","display","justifyContent","alignContent","marginRight","marginBottom","DecreaseZoomControl","IncreaseZoomControl","controls","ControlPosition","RIGHT_BOTTOM","geocoder","Geocoder","gMapInfoWindow","InfoWindow","$","show","initializeMap","on","initOms","OverlappingMarkerSpiderfier","markersWontMove","markersWontHide","basicFormatEvents","upi","loadScriptAsync","id","onLoad","self","find","each","index","el","googleEventListener","getFromUserGeolocation","geoCodeAddress","val","which","hide","removeClass","addEventListener","acceptTerms","cancelTerms","off","fadeOut","fadeIn","addClass","getMapBounds","bounds","getBounds","NE","getNorthEast","SW","getSouthWest","north","lat","east","lng","south","west","showResults","eventName","addListener","handleMapBoundsError","err","warn","setTimeout","FindADentist","getDentists","setZoom","isTouchevents","Modernizr","touchevents","dentist","address1","address2","city","state","zipCode","phoneNumber","productsOffered","latitude","longitude","dentistHTML","features","ALLOW_PRODUCTS_FIND_DENTIST","productsOfferedHTML","dentistInfoWindow","content","iconImage","url","optimized","scaledSize","Size","marker","Marker","position","title","icon","clickable","event","infoWindow","closeInfos","setContent","open","undefined","_omsData","trigger","addMarker","set","close","products","CONTACT_OFFICE_LABEL","i18n","getTextFromKey","HTML","product","toUpperCase","coloredBlockHTML","color","navigator","geolocation","getCurrentPosition","pos","coords","setCenter","address","log","handleLocationError","getCenter","geocode","results","status","geometry","alert","browserHasGeoLocation","setPosition","controlDiv","controlUI","classList","add","padding","marginLeft","borderRadius","appendChild","controlText","fontWeight","fontSize","innerHTML","provider","ServiceProvider","paths","FindADentistAPI","userView","_create2","jQuery","arguments","unbind","one","au","cn","cz","dk","eu","fi","fr","de","it","jp","la","my","nl","no","pl","sg","za","es","se","th","tr","en-us"],"mappings":"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","file":"find-a-dentist.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t2: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/js/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([224,0]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","const PATTERN = '\\\\^(.*?)(\\\\||$)';\r\n\r\n/**\r\n * Cookie Constants\r\n * These values provide both the cookie.name and RegExp pattern to use to extract the appropriate cookie value\r\n * Use with getCookie and parseCookieValue\r\n */\r\nexport const COOKIES = {\r\n // Cookie Names\r\n REGISTRATION: {\r\n name: 'upi_reg',\r\n TOKEN: {name: 'regToken'},\r\n // Cookie key=value pairs\r\n STATUS: {name: 'status'}\r\n },\r\n SITE_NOTICE_BAR: {\r\n name: 'upi_notice',\r\n\r\n SITE_MSG: {name: 'sitemsg'},\r\n DOWNTIME: {name: 'downtime'}\r\n },\r\n FIND_A_DENTIST: {\r\n name: 'find_a_dentist_prompt'\r\n },\r\n LAST_LOGIN: {name: 'LastLogin1'},\r\n CART_COUNT: {name: 'CartItemsCount1'},\r\n USER_GUID: {name: 'UserGuid1'},\r\n ORDER_GUID: {name: 'OrderGuid1'},\r\n TOOTHPASTE_PROMO: {name: 'ToothpastePromo'}\r\n};\r\n\r\n/**\r\n * @param cookie string returned from get_cookie\r\n * @param cookie.key\r\n * usage: parse_cookie_value( get_cookie( COOKIES.REGISTRATION ), COOKIES.REGISTRATION.STATUS )\r\n */\r\nfunction parseCookieValue( cookieValue, param ) {\r\n var pattern = param.pattern || PATTERN,\r\n reCookie = new RegExp( param.name + pattern, 'g' );\r\n if ( reCookie.test( cookieValue ) ) {\r\n return unescape( RegExp.$1 );\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * @param {Object} cookie key=pattern identifier\r\n * @param {String} existing cookies string\r\n * @type private\r\n */\r\nfunction addKeyValue( param, cookieString ) {\r\n var keyArr = [],\r\n pattern = param.key.pattern || PATTERN,\r\n //pattern to sniff for key within current cookieString\r\n reKey = new RegExp( param.key.name + pattern );\r\n\r\n //if cookie has exisitng key values preserve them\r\n if ( cookieString ) {\r\n keyArr = cookieString.split( '|' );\r\n }\r\n\r\n //sniff for existing key=value pair and update it, otherwise create new key and append to existing value\r\n if ( keyArr.length > 0 && reKey.test( cookieString ) ) {\r\n for ( var i = 0; i < keyArr.length; i++ ) {\r\n var pair = keyArr[i].split( '~' );\r\n if ( pair[0] === param.key.name ) {\r\n pair[1] = param.value;\r\n keyArr[i] = pair.join( '~' );\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n keyArr.push( param.key.name + '~' + param.value );\r\n }\r\n return keyArr.join( '|' );\r\n}\r\n\r\n/********************************\r\n * EXPORTS\r\n */\r\n\r\n\r\nexport function hasLocalStorage() {\r\n try {\r\n localStorage.setItem( 'localtest', 'localtest' );\r\n localStorage.removeItem( 'localtest' );\r\n return true;\r\n }\r\n catch ( e ) {\r\n return false;\r\n }\r\n}\r\n\r\nexport function hasSessionStorage() {\r\n try {\r\n sessionStorage.setItem( 'sessiontest', 'sessiontest' );\r\n sessionStorage.removeItem( 'sessiontest' );\r\n return true;\r\n }\r\n catch ( e ) {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * .setCookie\r\n * @param {Object} params\r\n * @param {Object} setting e.g. :expires, :domain, :path\r\n *\r\n * NOTE: must use interface defined by COOKIES for methods below\r\n * !!this method is only meant to work with cookies that are stored under concantenated set of values.\r\n * In order to save a single cookie value this method will need to be adjusted for this scenario\r\n */\r\nexport function setCookie( cookieData, settings ) {\r\n var hostname = location.hostname,\r\n subdomainPattern = /^.*?\\./;\r\n //extend default params\r\n cookieData = cookieData || {};\r\n //{:cookie, :key, :value}\r\n settings = Object.extend( {\r\n value: '',\r\n expires: 60 * 24 * 365, // expiry set in minutes\r\n domain: subdomainPattern.test( hostname ) ? hostname.replace( subdomainPattern, '.' ) : '', // default .domain.com can be read from\r\n path: '/'\r\n }, settings );\r\n\r\n //convert expires to UTCString\r\n var exDate = new Date();\r\n exDate.setMinutes( exDate.getMinutes() + settings.expires );\r\n settings.expires = exDate.toUTCString();\r\n\r\n // if a cookie.key is provided store as key=value pairs, otherwise store as single value\r\n settings.value =\r\n (cookieData.key) ?\r\n addKeyValue( cookieData, getCookie( cookieData.cookie ) ) :\r\n cookieData.value;\r\n\r\n return writeCookie( cookieData.cookie, settings );\r\n}\r\n\r\nexport function writeCookie( cookie, params = {} ) {\r\n const {name} = cookie,\r\n {domain, value, expires, path} = params;\r\n\r\n if ( name ) {\r\n document.cookie = `${name}=${value}; expires=${expires}; domain=${domain}; path=${path}`;\r\n return params;\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * @param {Object} param [:name]\r\n * @returns {String} separated values\r\n * usage: get_cookie( COOKIES.REGISTRATION ) re\r\n */\r\nexport function getCookie( param ) {\r\n const reCookie = new RegExp( param.name + '=(.*?)(;|$)', 'g' );\r\n if ( reCookie.test( document.cookie ) ) {\r\n return unescape( RegExp.$1 );\r\n }\r\n return false;\r\n}\r\n\r\nexport function deleteCookie( inName ) {\r\n if ( getCookie( inName ) ) {\r\n setCookie( inName, null, -(60 * 24 * 365) );\r\n }\r\n}\r\n","'use strict';\r\n\r\nimport axios from 'axios';\r\nimport assign from 'object-assign';\r\nimport Events from '../util/events';\r\n\r\nconst conf = {\r\n SVC_ORIGIN: ''\r\n};\r\n\r\nconst noop = () => {};\r\n\r\nlet services = {},\r\n supports = {\r\n CORS () {\r\n return 'withCredentials' in new XMLHttpRequest();\r\n }\r\n };\r\n\r\nexport default assign( {}, Events, {\r\n\r\n register ( servicePath, methods ) {\r\n if ( !servicePath ) {\r\n throw Error( 'ServiceProvider: \"servicePath\" cannot be undefined' );\r\n }\r\n\r\n services[servicePath] = assign( {}, services[servicePath], methods );\r\n\r\n let xhr = axios.create( {\r\n baseURL: conf.SVC_ORIGIN + servicePath,\r\n timeout: 20000,\r\n withCredentials: true,\r\n headers: {\r\n 'Content-Type': 'application/json; charset=utf-8',\r\n 'Cache-Control': 'no-cache', // Caching of Paymetric token caused cart to fail\r\n 'Pragma': 'no-cache'\r\n }\r\n } );\r\n\r\n return {\r\n throw ( message ) {\r\n return new Promise( ( resolve, reject ) => {\r\n console.error( message );\r\n reject( Error( message ) );\r\n } );\r\n },\r\n request ( svcName, payload ) {\r\n // check if making CORS requests and ensure support\r\n if ( conf.SVC_ORIGIN.indexOf( window.location.host ) === -1 && !supports.CORS() ) {\r\n return this.throw( 'CORS not fully supported' );\r\n }\r\n\r\n let url = servicePath + svcName,\r\n data, params;\r\n // make sure valid service name provided\r\n if ( typeof svcName !== 'string' ) {\r\n throw new TypeError( `${servicePath}: svcName is not a string, received \"${svcName}\" instead ` );\r\n }\r\n\r\n if ( !methods[svcName] ) {\r\n throw new TypeError( `${servicePath}: service \"${svcName}\" not recognized in service list: ${Object.keys(\r\n services[servicePath] )}` );\r\n }\r\n\r\n // return this._request( url, methods[ svcName ].method, payload ).request();\r\n let method = methods[svcName].method;\r\n\r\n if ( payload ) {\r\n // check if it's a function\r\n switch ( method ) {\r\n case 'post':\r\n // pass payload in request body\r\n data = JSON.stringify( payload );\r\n break;\r\n\r\n default:\r\n // pass payload as query string\r\n // (default) method === GET\r\n params = payload;\r\n }\r\n }\r\n\r\n return xhr.request( svcName, {method, data, params} ).then( res => {\r\n let result = res;\r\n /* if ( result && result. === 'fail' ) {\r\n throw Error( result.Reason );\r\n }*/\r\n\r\n return res;\r\n } )\r\n }\r\n };\r\n }\r\n} );\r\n\r\n\r\n\r\n\r\n","import FindADentist from '@services/FindADentistService';\r\nimport {COOKIES, getCookie, setCookie} from '@util/StorageUtils';\r\nimport countryNameMap from '@util/countryNameMap';\r\n\r\nvar markersArray = [];\r\nvar infos = [];\r\n\r\nconst gMap = {\r\n init ( scope ) {\r\n const mapDiv = document.getElementById( 'map' );\r\n\r\n if ( !mapDiv ) {\r\n return;\r\n }\r\n\r\n this.userLocation;\r\n this.countryName = countryNameMap[document.documentElement.getAttribute( 'lang' )] || null;\r\n // note -> Change map variable to something like googleMap or mapApi\r\n this.map = null;\r\n this.updateAttempts = 0;\r\n this.smartZoomCount = 0;\r\n this.oms = null;\r\n this.hasAcceptedTerms = getCookie( COOKIES.FIND_A_DENTIST );\r\n\r\n this.promptTerms = this.promptTerms.bind( this );\r\n this.updateDentistsOnMap = this.updateDentistsOnMap.bind( this )\r\n\r\n // Initialize a new Google Map Object\r\n this.map = new google.maps.Map( mapDiv, {\r\n // center: {lat: 40.7608, lng: -111.8910},\r\n zoom: 4,\r\n disableDefaultUI: true,\r\n fullscreenControl: true,\r\n styles: [\r\n {\r\n featureType: 'poi',\r\n stylers: [{visibility: 'off'}]\r\n }\r\n ]\r\n } );\r\n\r\n google.maps.Map.prototype.clearOverlays = function () {\r\n for ( var i = 0; i < markersArray.length; i++ ) {\r\n markersArray[i].setMap( null );\r\n }\r\n markersArray.length = 0;\r\n };\r\n\r\n this.loadOMS();\r\n\r\n // Create the custom zoom controls\r\n var zoomControlsDiv = document.createElement( 'div' );\r\n zoomControlsDiv.style.display = 'flex';\r\n zoomControlsDiv.style.justifyContent = 'space-around';\r\n zoomControlsDiv.style.alignContent = 'center';\r\n zoomControlsDiv.style.marginRight = '25px';\r\n zoomControlsDiv.style.marginBottom = '25px';\r\n\r\n this.DecreaseZoomControl( zoomControlsDiv, this.map );\r\n this.IncreaseZoomControl( zoomControlsDiv, this.map );\r\n\r\n this.map.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push( zoomControlsDiv );\r\n this.geocoder = new google.maps.Geocoder();\r\n // Initialize the Marker, InfoWindow, and geoCoder Objects.\r\n this.gMapInfoWindow = new google.maps.InfoWindow;\r\n\r\n if ( !this.hasAcceptedTerms ) {\r\n $( '#address' ).on( 'focus', this.promptTerms );\r\n }\r\n else {\r\n $( '#map-placeholder' ).show();\r\n this.initializeMap( $( '#page-container' ) );\r\n }\r\n },\r\n\r\n initOms () {\r\n this.oms = new OverlappingMarkerSpiderfier( this.map, {\r\n markersWontMove: true,\r\n markersWontHide: true,\r\n basicFormatEvents: true\r\n } );\r\n },\r\n\r\n loadOMS () {\r\n window.upi.loadScriptAsync(\r\n 'https://cdnjs.cloudflare.com/ajax/libs/OverlappingMarkerSpiderfier/1.0.3/oms.min.js',\r\n {\r\n id: 'omsScript',\r\n onLoad: this.initOms.bind( this )\r\n } )\r\n },\r\n\r\n initializeMap ( scope, userLocation ) {\r\n const self = this;\r\n scope.find( '#map-container' ).each( ( index, el ) => {\r\n\r\n // $( '#inner-map-container' ).removeClass( 'hidden' );\r\n\r\n this.googleEventListener( 'dragend', self.map );\r\n this.googleEventListener( 'zoom_changed', self.map );\r\n\r\n this.getFromUserGeolocation( this.gMapInfoWindow, this.map );\r\n\r\n $( '#submit' ).on( 'click', function () {\r\n self.geoCodeAddress( self.geocoder, self.map, $( '#address' ).val() );\r\n } );\r\n $( '#address' ).on( 'keypress', function ( e ) {\r\n if ( e.which === 13 ) {\r\n self.geoCodeAddress( self.geocoder, self.map, $( '#address' ).val() );\r\n }\r\n } );\r\n\r\n } );\r\n },\r\n\r\n promptTerms () {\r\n $( '#map-placeholder' ).hide();\r\n $( '#fADTerms' ).removeClass( 'hidden' );\r\n document.getElementById( 'agreeTerms' ).addEventListener( 'click', this.acceptTerms.bind( this ) );\r\n document.getElementById( 'backToMap' ).addEventListener( 'click', this.cancelTerms.bind( this ) );\r\n },\r\n\r\n acceptTerms () {\r\n setCookie( {\r\n cookie: COOKIES.FIND_A_DENTIST,\r\n key: {name: 'acceptTerms'},\r\n value: 'yes'\r\n } );\r\n\r\n $( '#address' ).off( 'focus', this.promptTerms );\r\n $( '#fADTerms' ).fadeOut( 'fast' );\r\n $( '#map-placeholder' ).show();\r\n this.initializeMap( $( '#page-container' ) );\r\n },\r\n\r\n cancelTerms () {\r\n $( '#map-placeholder' ).fadeIn( 'fast' );\r\n $( '#fADTerms' ).addClass( 'hidden' );\r\n },\r\n\r\n getMapBounds ( map ) {\r\n var bounds = map.getBounds();\r\n\r\n var NE = bounds.getNorthEast();\r\n var SW = bounds.getSouthWest();\r\n return {\r\n north: NE.lat(),\r\n east: NE.lng(),\r\n south: SW.lat(),\r\n west: SW.lng()\r\n };\r\n },\r\n\r\n showResults () {\r\n $( '#map-placeholder' ).fadeOut( 'fast' );\r\n $( '#inner-map-container' ).removeClass( 'hidden' );\r\n },\r\n\r\n googleEventListener ( eventName, map ) {\r\n map.addListener( eventName, this.updateDentistsOnMap );\r\n },\r\n\r\n handleMapBoundsError ( err ) {\r\n this.updateAttempts++;\r\n console.warn( '[GoogleMap Error] map.getBounds not accessible, trying again...', err );\r\n\r\n if ( this.updateAttempts <= 5 ) {\r\n setTimeout( this.updateDentistsOnMap, 200 );\r\n }\r\n else {\r\n setTimeout( () => {\r\n this.updateAttempts = 0;\r\n }, 2000 );\r\n }\r\n },\r\n\r\n updateDentistsOnMap () {\r\n this.map.clearOverlays();\r\n let userLocation = null;\r\n\r\n try {\r\n userLocation = this.getMapBounds( this.map );\r\n }\r\n catch ( err ) {\r\n this.handleMapBoundsError( err );\r\n return;\r\n }\r\n\r\n this.updateAttempts = 0;\r\n\r\n $( '#loading' ).removeClass( 'hidden' );\r\n var self = this;\r\n\r\n FindADentist.getDentists( userLocation )\r\n .then( ( {data} ) => {\r\n\r\n if ( data.length < 5 && self.smartZoomCount < 2 ) {\r\n self.smartZoomCount++;\r\n self.map.setZoom( self.map.zoom - 1 );\r\n }\r\n\r\n if ( data.length === 51 ) {\r\n $( '#filter-warning' ).fadeIn();\r\n }\r\n else {\r\n $( '#filter-warning' ).fadeOut();\r\n }\r\n\r\n $( '#loading' ).addClass( 'hidden' );\r\n\r\n $( '#map-container' ).addClass( 'loading-dentist' );\r\n\r\n const isTouchevents = Modernizr.touchevents;\r\n\r\n for ( let dentist of data ) {\r\n const {\r\n name,\r\n address1,\r\n address2,\r\n city,\r\n state,\r\n zipCode,\r\n phoneNumber,\r\n productsOffered,\r\n latitude,\r\n longitude\r\n } = dentist;\r\n\r\n var dentistHTML = '';\r\n\r\n if ( upi.conf.features.ALLOW_PRODUCTS_FIND_DENTIST ) {\r\n dentistHTML += `${self.productsOfferedHTML( productsOffered )}`;\r\n }\r\n\r\n dentistHTML += `\r\n
${CONTACT_OFFICE_LABEL}
`;\r\n }\r\n\r\n let HTML = '';\r\n\r\n $( products ).each( ( i, product ) => {\r\n switch ( product.toUpperCase() ) {\r\n case 'OPALESCENCE HOME ADVANCED':\r\n HTML += this.coloredBlockHTML( '#8ab2de' );\r\n break;\r\n case 'OPALESCENCE GO':\r\n HTML += this.coloredBlockHTML( '#00a252' );\r\n break;\r\n case 'OPALESCENCE PF':\r\n HTML += this.coloredBlockHTML( '#00a3e0' );\r\n break;\r\n case 'OPALESCENCE BOOST':\r\n HTML += this.coloredBlockHTML( '#af272f' );\r\n break;\r\n case 'SPECIALTY WHITENING':\r\n HTML += this.coloredBlockHTML( '#762f96' );\r\n break;\r\n case 'SENSITIVITY RELIEF GEL':\r\n HTML += this.coloredBlockHTML( '#96be40' );\r\n break;\r\n case 'OPALESCENCE WHITENING TOOTHPASTE':\r\n HTML += this.coloredBlockHTML( '#00b2a9' );\r\n break;\r\n }\r\n } );\r\n return HTML;\r\n },\r\n\r\n coloredBlockHTML ( color ) {\r\n return `\r\n \r\n `\r\n },\r\n\r\n getFromUserGeolocation ( infoWindow, map ) {\r\n if ( navigator.geolocation ) {\r\n\r\n // Get user position\r\n navigator.geolocation.getCurrentPosition(\r\n position => {\r\n this.showResults();\r\n\r\n var pos = {\r\n lat: position.coords.latitude,\r\n lng: position.coords.longitude\r\n };\r\n\r\n map.setCenter( pos );\r\n map.setZoom( 15 );\r\n }, () => {\r\n const address = $( '#address' ).val();\r\n // note -> If the user has already entered a value then ignore the request to block\r\n if ( address.length > 1 ) {\r\n console.log( 'Blocked location request' );\r\n this.geoCodeAddress( this.geocoder, map, address );\r\n }\r\n else {\r\n this.handleLocationError( true, infoWindow, map, map.getCenter() );\r\n }\r\n } );\r\n }\r\n else {\r\n // Browser does not support Geolocation\r\n this.handleLocationError( false, infoWindow, map, map.getCenter() );\r\n }\r\n },\r\n\r\n geoCodeAddress ( geocoder, map, address ) {\r\n\r\n this.smartZoomCount = 0;\r\n\r\n // Append the country to the address if it's a postal code\r\n if ( /^\\d+$/.test( address ) && this.countryName ) {\r\n address += ', ' + this.countryName;\r\n }\r\n\r\n geocoder.geocode( {'address': address}, ( results, status ) => {\r\n if ( status === 'OK' ) {\r\n this.showResults();\r\n\r\n // Coordinates returned is an object with Latitude, and Longitude of address provided by user.\r\n var {location} = results[0].geometry;\r\n\r\n this.map.clearOverlays();\r\n\r\n map.setCenter( location );\r\n map.setZoom( 15 );\r\n }\r\n else {\r\n alert( 'Geocode was not successful for the following reason: ' + status );\r\n }\r\n } );\r\n },\r\n\r\n handleLocationError ( browserHasGeoLocation, infoWindow, map, pos ) {\r\n infoWindow.setPosition( pos );\r\n infoWindow.setContent( browserHasGeoLocation ?\r\n 'Please enter an address to find dentists carrying Opalescence near you!' :\r\n 'Error: Your browser doesn\\'t support geolocation.' );\r\n infoWindow.open( map );\r\n },\r\n\r\n IncreaseZoomControl ( controlDiv, map ) {\r\n var controlUI = document.createElement( 'div' );\r\n controlUI.classList.add( 'button', 'small' );\r\n controlUI.style.padding = '0.25rem 0.75rem';\r\n controlUI.style.marginLeft = '5px';\r\n controlUI.style.borderRadius = '0';\r\n controlDiv.appendChild( controlUI );\r\n\r\n var controlText = document.createElement( 'div' );\r\n controlText.style.fontWeight = 'bold';\r\n controlText.style.fontSize = '40px';\r\n controlText.innerHTML = '+';\r\n controlUI.appendChild( controlText );\r\n\r\n controlUI.addEventListener( 'click', () => {\r\n map.setZoom( map.zoom + 1 );\r\n } );\r\n },\r\n\r\n DecreaseZoomControl ( controlDiv, map ) {\r\n var controlUI = document.createElement( 'div' );\r\n controlUI.classList.add( 'button', 'small' );\r\n controlUI.style.padding = '0.25rem 0.75rem';\r\n controlUI.style.marginRight = '5px';\r\n controlUI.style.borderRadius = '0';\r\n controlDiv.appendChild( controlUI );\r\n\r\n var controlText = document.createElement( 'div' );\r\n controlText.style.fontWeight = 'bold';\r\n controlText.style.fontSize = '40px';\r\n controlText.innerHTML = '−';\r\n controlUI.appendChild( controlText );\r\n\r\n controlUI.addEventListener( 'click', () => {\r\n map.setZoom( map.zoom - 1 );\r\n } );\r\n }\r\n};\r\n\r\nexport default gMap;\r\n","import ServiceProvider from '@services/serviceProvider';\r\nimport assign from 'object-assign';\r\n\r\nconst\r\n FIND_A_DENTIST = 'FindADentistAPI';\r\n\r\nvar provider = ServiceProvider.register(\r\n upi.paths.SVC_ORIGIN, {\r\n [FIND_A_DENTIST]: {method: 'get'}\r\n } );\r\n\r\nexport default assign( {}, provider, {\r\n getDentists ( userView ) {\r\n if ( !userView ) {\r\n this.throw( 'FindADentist.getDentists: userView is a required parameter' );\r\n }\r\n\r\n return this.request( FIND_A_DENTIST, userView );\r\n }\r\n} );","import assign from 'object-assign'\r\n\r\nexport var Events = Object.create({\r\n bind() {\r\n if ( !this.el ) {\r\n this.el = jQuery( {} );\r\n }\r\n\r\n this.el.bind.apply( this.el, arguments );\r\n },\r\n unbind() {\r\n if ( !this.el ) {\r\n this.el = jQuery( {} );\r\n }\r\n\r\n this.el.unbind.apply( this.el, arguments );\r\n },\r\n one() {\r\n if ( !this.el ) {\r\n this.el = jQuery( {} );\r\n }\r\n\r\n this.el.one.apply( this.el, arguments );\r\n },\r\n trigger() {\r\n if ( !this.el ) {\r\n this.el = jQuery( {} );\r\n }\r\n\r\n this.el.trigger.apply( this.el, arguments );\r\n }\r\n});\r\n","const countryNameMap = {\r\n 'au': 'Australia',\r\n 'cn': 'China',\r\n 'cz': 'Czech Republic',\r\n 'dk': 'Denmark',\r\n 'eu': 'Europe',\r\n 'fi': 'Finland',\r\n 'fr': 'France',\r\n 'de': 'Germany',\r\n 'it': 'Italy',\r\n 'jp': 'Japan',\r\n 'la': 'Latin America',\r\n 'my': 'Malaysia',\r\n 'nl': 'Netherlands',\r\n 'no': 'Norway',\r\n 'pl': 'Poland',\r\n 'sg': 'Singapore',\r\n 'za': 'South Africa',\r\n 'es': 'Spain',\r\n 'se': 'Sweden',\r\n 'th': 'Thailand',\r\n 'tr': 'Turkiye',\r\n 'en-us': 'United States',\r\n};\r\n\r\nexport default countryNameMap;\r\n"],"sourceRoot":""}