{"version":3,"sources":["partnerships.js"],"names":["BDM","partnerships","results","partnerData","settings","dataurl","shownumber","$el","finder","$","filters","mobileopen","mobileclose","filterwindow","template","loadmore","tabs","select","updateFilters","offset","top","each","index","element","find","length","type","attr","value","val","forEach","partner","available","filter","isNaN","parseInt","indexOf","filterpartner","push","showResults","reset","$temp","displayResults","html","show","splice","hide","result","clone","text","name","url","wrapAll","image","imagealt","featured","removeClass","addClass","append","init","ajax","dataType","error","data","success","on","event","preventDefault","change","window"],"mappings":"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","file":"partnerships.min.js","sourcesContent":["/*globals $*/\r\n(function(BDM, partnerships) {\r\n 'use strict';\r\n\r\n var settings = {\r\n dataurl: \"partnerships.json\",\r\n shownumber: 10 /// Number of results to reveal initially and after load more\r\n },\r\n\r\n $el = { //stored elements\r\n finder: $('.partnerships'),\r\n filters: $('.partnerships__filter'),\r\n mobileopen: $('.partnerships__mobilebutton'),\r\n mobileclose: $('.partnerships__close'),\r\n filterwindow: $('.partnerships__filters'),\r\n results: $('.partnerships__results'),\r\n template: $('.partnerships__template .partnerships__result'),\r\n loadmore: $('.partnerships__loadmore'),\r\n tabs: $('.partnerships__filter .nav > li'),\r\n select: $('.partnerships__filter select')\r\n },\r\n\r\n filters = [],\r\n\r\n results,\r\n\r\n scrollPos = null,\r\n\r\n partnerData;\r\n /**\r\n * Helper Methods\r\n **/\r\n\r\n\r\n\r\n\r\n /// Setup Events\r\n function updateFilters() {\r\n scrollPos = $('.partnerships').offset().top;\r\n $el.filters.each(function(index, element) {\r\n if ($(element).find('select').length) {\r\n filters[index] = {'type': $(element).attr('data-type'), 'value': $(element).find('select').val()};\r\n }\r\n if ($(element).find('.nav').length) {\r\n filters[index] = {'type': $(element).attr('data-type'), 'value': $(element).find('li.active').attr('data-value')};\r\n }\r\n });\r\n filterResults();\r\n showResults(true);\r\n }\r\n\r\n function filterpartner(partner) {\r\n var available = true,\r\n value;\r\n filters.forEach(function(filter) {\r\n value = filter.value;\r\n if (!isNaN(parseInt(value, 10))) {\r\n value = parseInt(filter.value, 10);\r\n }\r\n if (filter.value !== 'all' && partner[filter.type].indexOf(value) === -1) {\r\n available = false;\r\n }\r\n });\r\n return available;\r\n }\r\n\r\n function filterResults() {\r\n results = [];\r\n partnerData.forEach(function(partner) {\r\n if (filterpartner(partner)) {\r\n results.push(partner);\r\n }\r\n });\r\n }\r\n\r\n function showResults(reset) {\r\n var $temp, displayResults;\r\n if (reset) {\r\n $el.results.html('');\r\n }\r\n if (results.length > 7) {\r\n $el.loadmore.show();\r\n displayResults = results.splice(0, 7);\r\n } else {\r\n $el.loadmore.hide();\r\n displayResults = results;\r\n }\r\n displayResults.forEach(function(result) {\r\n $temp = $el.template.clone();\r\n $temp.find('.partnerships__name').text(result.name);\r\n if (result.url) {\r\n $temp.find('.partnerships__name, .partnerships__image').wrapAll('');\r\n }\r\n $temp.find('.partnerships__image').attr('src', result.image);\r\n $temp.find('.partnerships__image').attr('alt', result.imagealt);\r\n if (result.featured === true) {\r\n $temp.removeClass('col-sm-3');\r\n $temp.addClass('col-sm-6');\r\n }\r\n \r\n $el.results.append($temp);\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 showResults(false);\r\n });\r\n }\r\n if ($el.tabs.length) {\r\n $el.tabs.on(\"click\",function(event) {\r\n event.preventDefault();\r\n updateFilters();\r\n });\r\n }\r\n if ($el.select.length) {\r\n $el.select.change(function(event) {\r\n event.preventDefault();\r\n updateFilters();\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 });\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 });\r\n }\r\n }\r\n\r\n /**\r\n * Public Methods\r\n **/\r\n\r\n partnerships.init = function() {\r\n if ($el.finder.length) {\r\n settings.dataurl = $el.finder.attr('data-partnersurl') || settings.dataurl;\r\n scrollPos = $('.partnerships').offset().top;\r\n $.ajax({\r\n type: 'GET',\r\n url: settings.dataurl,\r\n dataType: 'json',\r\n error: function(data) {\r\n },\r\n success: function(data) {\r\n partnerData = data.partnerships;\r\n updateFilters();\r\n }\r\n });\r\n bindEvents();\r\n }\r\n };\r\n})(\r\n window.BDM = window.BDM || {},\r\n window.BDM.partnerships = window.BDM.partnerships || {}\r\n);\r\n\r\n//load when ready\r\n$(function() {\r\n window.BDM.partnerships.init();\r\n});\r\n"]}