- Locations
- Appointments
- Coupons
- Services
Menu
Locations>
- Make Appointment
Special Offers>
Our Services>
- Careers
Contact>
Find A Location
View All Locations
Arizona
Colorado
Iowa
Nebraska
Texas
Wyoming
Or
Our Services
View All Services
Brakes
Brake Inspection
Brake Pads
Brake Rotors
Maintenance
Air Filter
Alignment
Batteries
Cooling System
Fuel Filter
Fuel System Cleaning
Headlights
Oil Change
Power Steering
Pre-Purchase Inspection
Scheduled Maintenance
Tire Rotation
Transmission
Tune-Up
Windshield Wipers
Repairs
Air Conditioning
clutch
Diagnostic
Exhaust
Radiator
Serpentine Belt
Contact
About Us
Contact Us
Privacy Policy
Warranty
Special Offers
Current Deals
Financing
Or
Or
'; } else { i += '
'; } i += '
'; if (r.location === FRANKFORD_LOC_ID) i += `
${r.name}
`; else i += `
${r.name}`; if (r.distance.length > 0) { i += `
${r.distance}`; if (r.distance != 'nearby') i += ' away'; i += '
'; } i += `
${r.addr1}
${r.city}, ${r.state} ${r.zip}
Location Hours:
` if (r.hours.IsWeekdaySame) { i += ` M-F: ${r.hours.Mon.toLowerCase()}
Sat: ${r.hours.Sat.toLowerCase()}
Sun: ${r.hours.Sun}
`; } else { i += ` Mon: ${r.hours.Mon.toLowerCase()}
Tue: ${r.hours.Tue.toLowerCase()}
Wed: ${r.hours.Wed.toLowerCase()}
Thu: ${r.hours.Thu.toLowerCase()}
Fri: ${r.hours.Fri.toLowerCase()}
Sat: ${r.hours.Sat.toLowerCase()}
Sun: ${r.hours.Sun}
` } if (r.holidaystext.length > 0) { i += `${r.holidaystext}`; } i += '
' i += '
'; if (r.location === FRANKFORD_LOC_ID) { i += '
'; i += '
'; } else { if (r.name.indexOf('Coming Soon') == -1) { i += `
Schedule Appointment
`; } i += `
Location Info
`; } i += '
'; i += '
'; let li = document.createElement('li'); li.className = 'loc-' + ind; li.innerHTML = i; return li; } function m247_FilterRetailers(resp) { m247_ClearRetailerList(); let data = JSON.parse(resp); let showAll = false; if (data.retailers) { let r = []; let maxLength = data.retailers.length > 10 ? 10 : data.retailers.length; for (let i = 0; i < maxLength; i++) { let id = data.retailers[i].id; let distance = data.retailers[i].distance; for (let j = 0; j < m247Retailers.length; j++) { if (m247Retailers[j].location == id) { m247Retailers[j].distance = distance; r.push(m247Retailers[j]); } } } if (r.length > 0) { m247_InitMap(r); m247_DisplayRetailerList(r); m247_ScrollToMap(); } else { m247_ShowError("We're sorry - there are no locations within your zip code. Please retry your search."); showAll = false; } } else { m247_ShowError("This zip code is invalid. Please enter a valid zip code to find your nearest location."); showAll = false; } if (showAll) { m247_InitMap(m247Retailers); m247_DisplayRetailerList(m247Retailers); } } function m247_ScrollToMap() { let isMobile = GlobalIsMobile.any(); const speed = isMobile ? 500 : 1000; const offsetTop = isMobile ? 90 : 100; if ($('div#m247-store-list')) { try { var t = $('div#m247-store-list').offset().top; if (t) { $('html, body').animate({ scrollTop: t - offsetTop }, speed); } } catch (e) { console.log('m247_ScrollToMap: ' + e); } } } function m247_SearchZip(resetSearch) { let zip = document.getElementById("m247-zip").value; if (zip && zip.length > 0) { if (resetSearch) m247_ResetForZipSearch(false); let select = document.getElementById("m247-radii"); if (select) { if (select.selectedIndex == 0) { m247_DetermineRetailers(zip); } else { const radius = select.options[select.selectedIndex].value; m247_DetermineRetailers(zip, radius); } } else { m247_DetermineRetailers(zip); } let l = window.location.href.replace(window.location.search, ''); let n = l + "?zip=" + encodeURIComponent(zip); history.pushState(null, null, n); $('.location-map h1').text('Find Your Nearest Location Around ' + zip); } } function m247_DetermineRetailers(zip, radius) { const r = radius || 20; try { $.ajax({ type: 'GET', url: `/App_Services/Retailers.ashx?method=retailers&validatezipcode=true&zip=${zip}&radius=${r}`, success: m247_FilterRetailers, error: function (err) { console.error('getNearestRetailerByZip', err); } }); } catch (err) { console.error('getNearestRetailerByZip', err); } } function m247_UseMyLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function (position) { const lat = position.coords.latitude; const lng = position.coords.longitude; let geoZip = ''; let geoCountry = ''; const latlng = new google.maps.LatLng(lat, lng); const geocoder = new google.maps.Geocoder(); let error = ''; geocoder.geocode({ 'latLng': latlng }, function (results, status) { if (status === google.maps.GeocoderStatus.OK) { if (results) { const arrAddress = results[0].address_components; arrAddress.forEach(function (address_component) { if (address_component.types[0] === "postal_code") { geoZip = address_component.long_name; } else if (address_component.types[0] === "country") { geoCountry = address_component.short_name; } }); } if (geoZip) { if (geoCountry == 'US') { m247_ResetForZipSearch(true); m247GeoLatLng = { lat: lat, lng: lng }; m247_DetermineRetailers(geoZip, 20); let l = window.location.href.replace(window.location.search, ''); let n = l + "?usemylocation=" + geoZip; history.pushState(null, null, n); $('.location-map h1').text('Find Your Nearest Location Around ' + geoZip); } else { error = 'Location outside of the US'; } } else { error = 'Cannot find location'; } } else { error = 'Geocoder failed due to: ' + status; } if (error) { m247_ShowError(error); } }); }, m247_GeoLocateErr); } else { m247_ShowError('Please enable device to detect your location'); } } function m247_GeoLocateErr(err) { if (err.code === 1) { m247_ShowError('Please enable device to detect your location'); } else { m247_ShowError('Geolcoation Error (' + err.code + '): ' + err.message); } } function m247_ShowError(err) { $('#m247-map-err').empty().text(err); } function m247_ClearError() { $('#m247-map-err').empty(); } function m247_LoadStates() { let states = []; for (let i = 0; i < m247Retailers.length; i++) { const r = m247Retailers[i]; let has = false; for (let j = 0; j < states.length; j++) { if (r.state === states[j].Abbr) { has = true; break; } } if (has === false) { states.push({ Full: r.statefull, Abbr: r.state }); } } let sortedStates = states.sort(m247_Sort("Full")); $.each(sortedStates, function (index, value) { $('#m247-storestates').append($('
', { value: value.Abbr, text: value.Full })); }); let paramS = m247_GetParam("state"); if (paramS.length > 0) { paramS = decodeURI(paramS.split('+').join(' ')).toUpperCase(); $("#m247-storestates option").filter(function () { return $(this).text().toUpperCase() === paramS; }).prop('selected', true); m247_LoadCities(paramS); } } function m247_LoadCities(sel) { let cities = []; let selectedState = sel || ''; if (selectedState.length > 0) { for (let i = 0; i < m247Retailers.length; i++) { const r = m247Retailers[i]; let has = false; for (let j = 0; j < cities.length; j++) { if (r.city === cities[j].City) { has = true; break; } } if (has === false) { if (selectedState.length > 0) { if (r.state.toUpperCase() === selectedState.toUpperCase() || r.statefull.toUpperCase() == selectedState.toUpperCase()) { cities.push({ City: r.city, State: r.State }); } } else { cities.push({ City: r.city, State: r.State }); } } } let sortedCities = cities.sort(m247_Sort("City")); $('#m247-storecities').empty().append('
'); if (sortedCities.length > 0) { $.each(sortedCities, function (index, value) { const op = new Option(value.City, value.City, false, false); $('#m247-storecities').append(op) }); } else { $('#m247-storecities').append('
'); } let paramC = decodeURIComponent(m247_GetParam("city")); if (paramC.length > 0) { let matchingValue = $('#m247-storecities option').filter(function () { return this.value.toLowerCase() === paramC; }).attr('value'); $('#m247-storecities').val(matchingValue).trigger('change'); } } else { $('#m247-storecities').empty().append('
').trigger("change"); } } function m247_ChangeStates() { const s = document.getElementById("m247-storestates"); let l = window.location.href.replace(window.location.search, ''); const i = s.selectedIndex; if (i > 0) { m247UseGeo = false; m247UseZip = false; const t = s.options[i].text; const v = s.options[i].value; const n = l + "?state=" + encodeURIComponent(t).toLowerCase(); history.pushState(null, null, n); m247_LoadCities(v); var r = m247_FilterByStateCity(); m247_InitMap(r); m247_DisplayRetailerList(r); $('.location-map h1').text('Find Your Nearest Location in ' + t); //m247_ScrollToMap(); } } function m247_ChangeCities() { let l = window.location.href.replace(window.location.search, ''); let n = ''; let started = false; const s = document.getElementById("m247-storestates"); let i = s.selectedIndex; let state = ''; let city = ''; if (i > 0) { m247UseGeo = false; m247UseZip = false; state = s.options[i].text; const p = encodeURI(state.toLowerCase().split(' ').join('+')); n = l + "?state=" + p; started = true; } let c = document.getElementById("m247-storecities"); i = c.selectedIndex; if (i > 0) { city = c.options[i].text; const p = encodeURI(city.toLowerCase().split(' ').join('+')); if (started) n += "&city=" + p; else n = l + "?city=" + p; } history.pushState(null, null, n); let r = m247_FilterByStateCity(); m247_InitMap(r); m247_DisplayRetailerList(r); m247_ScrollToMap(); $('.location-map h1').text('Find Your Nearest Location in ' + city + ', ' + state); } function m247_Reset() { const l = window.location.href.replace(window.location.search, ''); history.pushState(null, null, l); $("#m247-storestates").val("State"); $('#m247-storestates').trigger('change'); let z = document.getElementById("m247-zip"); if (z) z.value = ''; let r = document.getElementById('m247-radii'); if (r) r.selectedIndex = 0; for (let i = 0; i < m247Retailers.length; i++) { m247Retailers[i].distance = ''; } m247_LoadCities(); m247_InitMap(m247Retailers); m247_DisplayRetailerList(m247Retailers); $('.location-map h1').text('Find Your Nearest Location'); } function m247_ResetForZipSearch(fromUseMyLoc) { const l = window.location.href.replace(window.location.search, ''); history.pushState(null, null, l); let s = document.getElementById("m247-storestates"); if (s) s.selectedIndex = 0; $("#m247-storestates").select2("val", ""); if (fromUseMyLoc) { let z = document.getElementById("m247-zip"); if (z) z.value = ''; let r = document.getElementById('m247-radii'); if (r) r.selectedIndex = 0; } m247_LoadCities(); } function m247_Sort(prop) { return function (a, b) { if (a[prop] > b[prop]) return 1; else if (a[prop] < b[prop]) return -1; return 0; } } function m247_GetParam(name) { return decodeURIComponent((location.search.split(name + '=')[1] || '').split('&')[0]); } var resetBtn = document.getElementById('m247-reset'); if (resetBtn) { resetBtn.addEventListener("click", function () { m247GeoLatLng = null; m247_ClearError(); m247_Reset(); m247_ResetSearch(); }); } var searchZip = document.getElementById('m247-zip'); var searchStates = document.getElementById('m247-storestates'); var searchCities = document.getElementById('m247-storecities'); if (searchZip) searchZip.addEventListener('input', m247_ResetSearch); if (searchStates) searchStates.addEventListener('change', m247_ResetSearch); if (searchCities) searchCities.addEventListener('change', m247_ResetSearch); function m247_ResetSearch() { if (resetBtn) { if ((searchZip && searchZip.value) || (searchStates && searchStates.selectedIndex) || (searchCities && searchCities.selectedIndex)) { resetBtn.style = ''; // Show the reset button } else { resetBtn.style.display = 'none'; // Hide the reset button } } } var sbtn = document.getElementById("m247-search-btn"); if (sbtn) sbtn.addEventListener("click", function () { m247_ClearError(); m247UseGeo = false; m247UseZip = true; m247_SearchZip(true); }); var hbtn = document.getElementById('m247-use-home-btn'); if (hbtn) hbtn.addEventListener("click", function () { window.location = '/stores/?usemylocation'; }); var ubtn = document.getElementById("m247-use-btn"); if (ubtn) ubtn.addEventListener("click", function () { m247_ClearError(); m247UseGeo = true; m247UseZip = false; m247_UseMyLocation(); }); var zipHomeForm = document.getElementById('BP_homezipsearch'); var zipHomeError = document.getElementById('m247-error-home'); if (zipHomeForm) { zipHomeForm.addEventListener('submit', function (e) { e.preventDefault(); if (zipHomeForm.checkValidity()) { zipHomeError.textContent = ""; this.submit(); } else zipHomeError.textContent = "Please enter a zip code or Use My Location"; }); } $(document).ready(function () { $(document).on('keypress', function (e) { if (e.which == 13) { m247GeoLatLng = null; m247_ClearError(); m247UseGeo = false; m247UseZip = true; m247_SearchZip(true); } }); if (jQuery().select2) { $('#m247-storestates').select2({}); $('#m247-storestates').on('select2:select', function (e) { if ($(this)[0].selectedIndex > 0) { m247GeoLatLng = null; m247_ClearError(); m247_ChangeStates(); $('#m247-storecities').select2('open'); m247_ResetSearch(); } }); $('#m247-storecities').select2(); $('#m247-storecities').on('select2:select', function (e) { m247_ChangeCities(); m247_ResetSearch(); }); $(document).on('select2:open', () => { document.querySelector('.select2-search__field').focus(); }); } m247_ResetSearch(); });