{"version":3,"sources":["locationFinder.js"],"names":["BDM","locationFinder","reset","programData","settings","dataurl","shownumber","$el","finder","$","filters","onlineCard","mobileopen","mobileclose","filterwindow","results","template","loadmore","tabs","searchField","distanceField","searchButton","select","loading","resultsLoaded","showResults","$temp","displayResults","show","html","length","splice","hide","forEach","result","clone","find","text","title","attr","image","alt","address","distance","href","append","on","event","preventDefault","window","location","this","removeClass","setTimeout","addClass","loadData","hasClass","ajax","type","url","data","val","zipcode","dataType","success","locations","init","offset","top","forms","bindValidation","change","first","focus","validateAll","keydown","keyCode"],"mappings":"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","file":"locationFinder.min.js","sourcesContent":["/*globals $*/\r\n(function(BDM, locationFinder) {\r\n 'use strict';\r\n\r\n var settings = {\r\n dataurl: \"locations.json\",\r\n shownumber: 6 /// Number of results to reveal initially and after load more\r\n },\r\n\r\n $el = { //stored elements\r\n finder: $('.location-finder'),\r\n filters: $('.degree-finder__filter'),\r\n onlineCard: $('.location-finder__online'),\r\n mobileopen: $('.degree-finder__mobilebutton'),\r\n mobileclose: $('.degree-finder__close'),\r\n filterwindow: $('.degree-finder__filters'),\r\n results: $('.degree-finder__results'),\r\n template: $('.degree-finder__template .location-finder__result'),\r\n loadmore: $('.degree-finder__loadmore'),\r\n tabs: $('.degree-finder__filter .nav > li'),\r\n searchField: $('#zipcode-finder'),\r\n distanceField: $('#distance'),\r\n searchButton: $('.degree-finder__filter .btn'),\r\n select: $('.degree-finder__filter select'),\r\n loading: $('.icon__loading')\r\n },\r\n\r\n filters = [],\r\n\r\n reset,\r\n\r\n focusElements = 'select, input, textarea, button, a',\r\n\r\n resultsLoaded = true,\r\n\r\n scrollPos = null,\r\n\r\n programData;\r\n /**\r\n * Helper Methods\r\n **/\r\n\r\n\r\n function showResults() {\r\n var $temp,\r\n displayResults = [],\r\n show = settings.shownumber;\r\n if (resultsLoaded === false) {\r\n resultsLoaded = true;\r\n if (reset) {\r\n $el.results.html($el.onlineCard);\r\n show -= 1;\r\n }\r\n reset = false;\r\n if (programData.length > show) {\r\n $el.loadmore.show();\r\n displayResults = programData.splice(0, show);\r\n } else {\r\n $el.loadmore.hide();\r\n if (programData) {\r\n displayResults = programData;\r\n }\r\n }\r\n if (displayResults.length) {\r\n displayResults.forEach(function(result) {\r\n $temp = $el.template.clone();\r\n $temp.find('.card__title h3').text(result.title);\r\n $temp.find('.card__image img').attr('src', result.image);\r\n $temp.find('.card__image img').attr('alt', result.alt);\r\n $temp.find('.card__address address').text(result.address);\r\n if (result.distance != -1) {\r\n $temp.find('.card__distance distance').text(result.distance + \" miles away\");\r\n }\r\n $temp.find('a').attr('aria-label', 'Link to ' + result.title);\r\n $temp.find('a').attr('href', result.href);\r\n $el.results.append($temp);\r\n bindClick();\r\n });\r\n }\r\n $el.results.removeClass('fadeout');\r\n setTimeout(function() {\r\n $el.results.addClass('fadein');\r\n $el.loading.removeClass('fadein').addClass('fadeout');\r\n }, 100);\r\n }\r\n }\r\n\r\n function bindClick() {\r\n if ($('.degree-finder__result').length) {\r\n $('.degree-finder__result').on(\"click\",function(event) {\r\n event.preventDefault();\r\n window.location.href = $(this).attr('data-href');\r\n });\r\n }\r\n }\r\n\r\n function loadData() {\r\n if ($el.results.hasClass('fadein')) {\r\n $el.results.addClass('fadeout').removeClass('fadein');\r\n }\r\n $el.loading.addClass('fadein').removeClass('fadeout');\r\n $.ajax({\r\n type: 'POST',\r\n url: settings.dataurl,\r\n data: { distance: $el.distanceField.val(), zipcode: $el.searchField.val() },\r\n dataType: 'json',\r\n success: function(data) {\r\n programData = data.locations;\r\n reset = true;\r\n resultsLoaded = false;\r\n showResults();\r\n }\r\n });\r\n }\r\n\r\n /// Setup Events\r\n function bindEvents() {\r\n if ($el.loadmore.length) {\r\n $el.loadmore.on(\"click\",function(event) {\r\n event.preventDefault();\r\n resultsLoaded = false;\r\n showResults();\r\n });\r\n }\r\n if ($el.select.length) {\r\n $el.select.change(function(event) {\r\n event.preventDefault();\r\n loadData();\r\n });\r\n }\r\n if ($el.mobileopen.length) {\r\n $el.mobileopen.on(\"click\",function(event) {\r\n event.preventDefault();\r\n $el.filterwindow.addClass('open');\r\n $el.filterwindow.find(focusElements).first().focus();\r\n });\r\n }\r\n if ($el.mobileclose.length) {\r\n $el.mobileclose.on(\"click\",function(event) {\r\n event.preventDefault();\r\n $el.filterwindow.removeClass('open');\r\n $el.mobileopen.focus();\r\n });\r\n }\r\n if ($el.results.length) {\r\n $el.results.on('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(event) {\r\n if (resultsLoaded === false) {\r\n showResults();\r\n }\r\n });\r\n }\r\n if ($el.searchButton.length) {\r\n $el.searchButton.on(\"click\",function(event) {\r\n event.preventDefault();\r\n if (window.BDM.forms.validateAll($el.searchField)) {\r\n loadData();\r\n }\r\n });\r\n $el.searchField.keydown(function(event) {\r\n if (event.keyCode === 13) {\r\n event.preventDefault();\r\n if (window.BDM.forms.validateAll($el.searchField)) {\r\n loadData();\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Public Methods\r\n **/\r\n\r\n locationFinder.init = function() {\r\n if ($el.finder.length) {\r\n settings.dataurl = $el.finder.attr('data-programsurl') || settings.dataurl;\r\n scrollPos = $el.finder.offset().top;\r\n if ($el.searchField.length) {\r\n window.BDM.forms.bindValidation($el.searchField);\r\n if ($el.searchField.val()) {\r\n loadData();\r\n }\r\n }\r\n bindEvents();\r\n }\r\n };\r\n})(\r\n window.BDM = window.BDM || {},\r\n window.BDM.locationFinder = window.BDM.locationFinder || {}\r\n);\r\n\r\n//load when ready\r\n$(function() {\r\n window.BDM.locationFinder.init();\r\n});"]}