{"version":3,"sources":["_accordion.js","_announcement-bar.js","_carousel.js","_cause-filters.js","_helper.js","_infinite_scroll.js","_map.js","_menu.js","_sponsor-detail.js","_sub-nav.js","_svg.js"],"names":["accordion","pub","init","$","click","event","preventDefault","$btn","this","accordionID","attr","document","find","slideToggle","toggleClass","announcementBar","updateNavBarPosition","barHeight","height","css","getUserClickedBars","bars","JSON","parse","localStorage","getItem","e","userClickedBars","on","newBarCodename","html","indexOf","newValue","push","setItem","stringify","remove","window","resize","target","addClass","getAnnouncementBar","type","codename","get","data","countDownTimer","clock","daysSpan","hoursSpan","minutesSpan","secondsSpan","timeinterval","endtime","text","updateClock","t","Date","seconds","Math","floor","minutes","hours","days","total","slice","clearInterval","setInterval","carousel","each","$carousel","slidesToShow","ev","slick","setTimeout","slideCount","options","hide","appendArrows","infinite","arrows","nextArrow","prevArrow","responsive","breakpoint","settings","max","swipeToSlide","setCarouselButtons","el","length","prepend","currentSlide","carouselMove","position","pos","parents","jQuery","causeFilters","skip","container","url","ajax","success","append","helper","SetLocalData","key","now","browserCacheExpiry","LocalDataExpired","expiry","parseInt","HTTP_GET","callback","xmlhttp","XMLHttpRequest","onreadystatechange","readyState","DONE","status","responseText","console","log","open","send","infiniteScroll","ready","path","loadCount","prefil","history","fetchOptions","headers","x-requested-with","prize_articles","let","googleMap","mapList","mapLegend","xPrizeMap","previousMarker","previousUniqueCluster","focusedStrokeWeight","focusedStrokeColor","focusedScale","unfocusedStrokeWeight","unfocusedScale","isFullScreen","InitialStateChanged","IsMarkerSelected","filteredPlace","mobileToggle","xPrizeStyles","featureType","stylers","color","elementType","visibility","MapLegendComponent","constructor","teams","legendItems","legendsTemplate","items","map","i","title","toUpperCase","getlegendItems","source","getElementContextById","innerHTML","Handlebars","compile","selectProps","props","obj","newObj","forEach","name","selectPropsList","arr","prop","prop2","prop3","reduce","a","d","includes","v","item","newArr","Map","values","filter","index","findIndex","GoogleMapViewComponent","markerList","markerCluster","detailsZoomLevel","loadInitialMap","getInstance","instance","teamsList","google","maps","getElementById","center","LatLng","zoom","minZoom","mapTypeId","MapTypeId","ROADMAP","styles","streetViewControl","mapTypeControl","zoomControlOptions","ControlPosition","RIGHT_BOTTOM","fullscreenControl","addListener","setOptions","scrollwheel","locationButton","LocateMe","renderer","controls","addEventListener","navigator","geolocation","getCurrentPosition","lat","coords","latitude","lng","longitude","marker","Marker","icon","SymbolPath","CIRCLE","scale","fillColor","fillOpacity","strokeWeight","getIcon","strokeColor","setIcon","setCenter","setZoom","handleLocationError","getCenter","infoWindow","render","count","label","String","fontSize","fontWeight","zIndex","Number","MAX_ZINDEX","markerClusterer","MarkerClusterer","onClusterClick","cluster","markers","previousCluster","uniqueMarkersList","value","self","getPosition","currentCluster","filterByClusterMarkers","panTo","defaultOnClusterClickHandler","loadMapMarkers","clearMapMarkers","setMap","addMapMarker","clearMarkers","addMarkers","getMapMarker","teamId","o","recenterMap","getMarkerColor","team","achievements","id","navigateToMarker","isMobile","markerMobileEventHandler","markerEventHandler","button","background","border","margin","text-transform","cursor","user-select","border-radius","width","box-shadow","overflow","right","setMapOnAll","removeStrokeFromMarker","currentMarker","previousIcon","MapListComponent","btnMapHeaderElement","btnDetailsElement","btnMapSearchElement","btnMapBackElement","mapTotalCountElement","mapElement","detailsElement","btnlistElement","btnMapElement","listOuterElement","listBodyElement","filterTeamBtn","filterDropdown","upChevron","downChevron","panelSearch","AddEventListeners","searchPanelState","showFilter","toggleEventHandler","teamDetailsToggleMobileEventHandler","filterMobileEventHandler","filterEventHandler","search","teamsDetailsMobileEventHandler","teamsDetailsEventHandler","filterMobileBasedOnPlaceEventHandler","dataset","place","filterBasedOnPlaceEventHandler","goBackMobileEventHandler","goBackEventHandler","resetMobileListEventHandler","resetListEventHandler","searchBoxClearEventHandler","mBtnMap","style","display","hideElement","showElement","showElementFlex","teamDetailsMobileState","caller","selectedTeam","getElementInnerHtmlByIdContext","listTeamClick","detailsToggle","mBtnDetailsElement","refreshPanelState","verifyPanelState","filteredTeams","address","toLowerCase","clearSearchInput","result","some","m","navigateBackToList","checkedValues","querySelectorAll","input","checked","listCount","listBody","resetBtn","filterTeams","ensureMobileListState","val","mapBtn","x","isFiltered","listHeader","totalTeams","totalFiltered","statuses","uniqueBy","location","solutions","uniqueListBy","uniqueObjectListBy","showElementInline","showElementBlock","markerDetailsClickEvent","teamResults","results","placesResults","p","places","Set","searchResultsTemplate","hasTeams","hasPlaces","hasResults","solutionsList","sol","split","ach","displayName","sortTeamsByLatestAchievement","sort","b","latestAchievementA","achievementDate","latestAchievementB","MapInit","StartUp","applyiOSSettings","ver","iOSversion","test","platform","match","screen","elemId","showBlockElement","pixels","detailHeight","listHeight","Document","prototype","arg","getElementContextByClassName","getElementsByClassName","queryContextSelectorAll","getElementInnerHtmlByClassNameContext","menu","$targets","$menuTriggers","$submenuitems","$causes","mql","handleMediaChange","mediaQueryList","matches","handleMouseover","off","handleClick","$cause","closest","$menuContent","removeClass","is","hasClass","call","onClose","modal","disableScroll","disableFocus","hasAnimation","$triggers","href","MicroModal","show","close","matchMedia","sponsorDetail","hideDetail","$sponsorCard","$sponsorCards","paddingBottom","not","subNav","$body","$subNav","$toggle","current","pathname","parent","trigger","svg","svg4everybody"],"mappings":"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","file":"theme.js","sourcesContent":["/**\r\n * Initialize accordion\r\n */\r\n\r\nvar accordion = (function() {\r\n var pub = {}; // public facing functions\r\n\r\n pub.init = function() {\r\n $('[data-accordion]').click(function(event) {\r\n event.preventDefault();\r\n var $btn = $(this);\r\n var accordionID = $btn.attr('data-accordion');\r\n var $accordion = $(document).find(accordionID);\r\n\r\n // Slide Toggle Accordion\r\n $accordion.slideToggle();\r\n $btn.toggleClass('is-expanded');\r\n });\r\n };\r\n\r\n return pub;\r\n})();\r\n","/**\r\n * Initialize Announcement Bar\r\n */\r\n\r\nvar announcementBar = (function() {\r\n\tvar pub = {}; // public facing functions\r\n\r\n\tpub.init = function () {\r\n\t\tannouncementBarListener();\r\n\t\t$('[data-close-announcement]').click(function(event) {\r\n\t\t event.preventDefault();\r\n\t\t var $btn = $(this);\r\n\t\t var target = $btn.attr('data-close-announcement');\r\n\t\t var $announcement = $(document).find(target);\r\n\t\t $announcement.addClass('is-collapsed');\r\n\t\t});\r\n\t};\r\n\r\n\tpub.getAnnouncementBar = function (type, codename) {\r\n\t\tif (!codename)\r\n\t\t\tcodename = \"\";\r\n\t\tvar userClickedBars = getUserClickedBars();\r\n\t\t$.get('/Pages/GetAnnouncementBar?type=' + type + '&relatedto=' + codename + '&userClickedBars=' + userClickedBars, function (data) {\r\n\t\t\t//Returned data is the partial view of the announcement bar if we need to show the bar, else returned data is empty\r\n\t\t\t$(\"#div_announcementBar\").html(data);\r\n\t\t\tupdateNavBarPosition();\r\n\t\t\tcountDownTimer(\"#div_announcementBar\");\r\n\t\t});\r\n\t};\r\n\r\n\tfunction updateNavBarPosition() {\r\n\t\tvar barHeight = $(\"#div_announcementBar\").height();\r\n\t\t$('.nav').css('top', barHeight + 'px');\r\n\t}\r\n\r\n\tfunction announcementBarListener() {\r\n\t\tvar userClickedBars = getUserClickedBars();\r\n\r\n\t\t//Click event for X button on announcement bar\r\n\t\t$(document).on('click', '.announcement-bar__close-btn', function (e) {\r\n\t\t\tvar newBarCodename = $('#announcementBar_codename').html();\r\n\t\t\tif (userClickedBars.indexOf(newBarCodename) < 0) {\r\n\t\t\t\tupdateUserClickedBars(newBarCodename);\r\n\t\t\t}\r\n\t\t\t$('.nav').css('top', '0px');\r\n\t\t\t$('#announcement-bar').remove();\r\n\t\t});\r\n\r\n\t\t$(window).resize(function (e) {\r\n\t\t\tupdateNavBarPosition();\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getUserClickedBars() {\r\n\t\tvar bars = [];\r\n\t\ttry {\r\n\t\t\tbars = JSON.parse(localStorage.getItem(\"hideAnnouncementBar\"));\r\n\t\t} catch (e) {\r\n\t\t\tbars = [];\r\n\t\t}\r\n\t\tif (bars === null)\r\n\t\t\tbars = [];\r\n\t\treturn bars;\r\n\t}\r\n\r\n\tfunction updateUserClickedBars(newValue) {\r\n\t\tvar bars = getUserClickedBars();\r\n\t\tbars.push(newValue);\r\n\t\tlocalStorage.setItem(\"hideAnnouncementBar\", JSON.stringify(bars));\r\n\t}\r\n\r\n\tfunction getTimeRemaining(endtime) {\r\n\t\tvar t = Date.parse(endtime) - Date.parse(new Date());\r\n\t\tvar seconds = Math.floor((t / 1000) % 60);\r\n\t\tvar minutes = Math.floor((t / 1000 / 60) % 60);\r\n\t\tvar hours = Math.floor((t / (1000 * 60 * 60)) % 24);\r\n\t\tvar days = Math.floor(t / (1000 * 60 * 60 * 24));\r\n\r\n\t\treturn {\r\n\t\t\ttotal: t,\r\n\t\t\tdays: days,\r\n\t\t\thours: hours,\r\n\t\t\tminutes: minutes,\r\n\t\t\tseconds: seconds\r\n\t\t};\r\n\t}\r\n\r\n\tfunction countDownTimer(target) {\r\n\t\tvar endtime = $(target).find(\".countdown\").text()\r\n\r\n\t\tif (endtime) {\r\n\t\t\tvar clock = $(target).find(\".announcement-bar__countdown\");\r\n\t\t\tvar daysSpan = clock.find('.days');\r\n\t\t\tvar hoursSpan = clock.find('.hours');\r\n\t\t\tvar minutesSpan = clock.find('.minutes');\r\n\t\t\tvar secondsSpan = clock.find('.seconds');\r\n\r\n\t\t\tfunction updateClock() {\r\n\t\t\t\tvar t = getTimeRemaining(endtime);\r\n\r\n\t\t\t\tdaysSpan.text(t.days);\r\n\t\t\t\thoursSpan.text(('0' + t.hours).slice(-2));\r\n\t\t\t\tminutesSpan.text(('0' + t.minutes).slice(-2));\r\n\t\t\t\tsecondsSpan.text(('0' + t.seconds).slice(-2));\r\n\r\n\t\t\t\tif (t.total <= 0) {\r\n\t\t\t\t\tclock.html(\"\");\r\n\t\t\t\t\tclearInterval(timeinterval);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tupdateClock();\r\n\t\t\tvar timeinterval = setInterval(updateClock, 1000);\r\n\t\t}\r\n\t}\r\n\r\n return pub;\r\n})();\r\n","/**\r\n * Initialize Carousel\r\n */\r\n\r\nvar carousel = (function() {\r\n var pub = {}; // public facing functions\r\n\r\n pub.init = function() {\r\n $('.carousel').each(function() {\r\n var $carousel = $(this);\r\n\t\tvar slidesToShow = $carousel.data('slides-to-show');\r\n\r\n\t\t$carousel.on('init', function (ev, slick) {\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tif (slick.slideCount <= slick.options.slidesToShow) {\r\n\t\t\t\t\t$carousel.find('#carouselBtnDiv').hide();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\r\n $carousel.find('.carousel__items').slick({\r\n appendArrows: $carousel,\r\n\t\tinfinite: false,\r\n\t\tarrows:false,\r\n nextArrow:\r\n '',\r\n prevArrow:\r\n '',\r\n responsive: [\r\n {\r\n breakpoint: 991,\r\n settings: { slidesToShow: Math.max(slidesToShow - 2, 1) }\r\n },\r\n {\r\n breakpoint: 767,\r\n settings: { slidesToShow: Math.max(slidesToShow - 3, 1) }\r\n },\r\n {\r\n breakpoint: 575,\r\n settings: { slidesToShow: Math.max(slidesToShow - 3, 1) }\r\n\t\t },\r\n\t\t {\r\n breakpoint: 450,\r\n settings: { slidesToShow: Math.max(slidesToShow - 4, 1) }\r\n\t\t },\r\n\t\t {\r\n\t\t\t breakpoint: 400,\r\n\t\t\t settings: { slidesToShow: Math.max(slidesToShow - 4, 1) }\r\n\t\t }\r\n ],\r\n slidesToShow: slidesToShow,\r\n swipeToSlide: true\r\n\t });\r\n\r\n\t window.setCarouselButtons = function (el) {\r\n\t\t if ($(el).find('.slick-list').find('#carouselBtnDiv').length === 0) {\r\n\t\t\t $(el).find('.slick-list').prepend('
');\r\n\t\t }\r\n\t }\r\n\r\n\t $carousel.find('.carousel__items').on('breakpoint', function (ev, slick, breakpoint) {\r\n\t\t window.setCarouselButtons($carousel.find('.carousel__items'));\r\n\t\t});\r\n\t\r\n\r\n\t $carousel.find('.carousel__items').on('afterChange', function (event, slick, currentSlide) {\r\n\t\t //var slidesToShow = slick.options.slidesToShow;\r\n\t\t //var totalSlides = slick.$slides.length;\r\n\t\t //var pointToDisableNextArrow = totalSlides - slidesToShow;\r\n\t\t //if (currentSlide == pointToDisableNextArrow) {\r\n\t\t\t // $(slick.$list).find('#btnCarouselNext').hide();\r\n\t\t //} else {\r\n\t\t\t // $(slick.$list).find('#btnCarouselNext').show();\r\n\t\t //}\r\n\t\t //if (currentSlide === 0) {\r\n\t\t\t // $(slick.$list).find('#btnCarouselPrev').hide();\r\n\t\t //} else {\r\n\t\t\t // $(slick.$list).find('#btnCarouselPrev').show();\r\n\t\t //}\r\n\t });\r\n\t window.setCarouselButtons(this);\r\n\t });\r\n\r\n\t\r\n\r\n\twindow.carouselMove = function (position, e) {\r\n\t\tvar pos = position === \"prev\" ? \"slickPrev\" : \"slickNext\";\r\n\t\t$(e.target).parents('.carousel__items').slick(pos);\r\n\t\t//console.log($(e.target).parents('.carousel__items').slick(\"slidesToShow\"))\r\n\t}\r\n };\r\n\r\n return pub;\r\n})(jQuery);\r\n","/**\r\n * Initialize filters and pagination for cause/{slug} page\r\n */\r\n\r\nvar causeFilters = (function () {\r\n var pub = {}; // public facing functions\r\n\r\n pub.init = function () {\r\n var skip = 10;\r\n var limit = 10;\r\n\r\n function loadMoreArticles() {\r\n var container = $('#cause-articles');\r\n var causeSlug = container.data('slug');\r\n\r\n // TODO: Add functionality to add articleType if something is seleted in the dropdown.\r\n var url = '/causes/' + causeSlug + '?skip=' + skip + '&limit=' + limit;\r\n\r\n $.ajax(url, {\r\n success: function (data) {\r\n if (data.length > 0)\r\n skip = skip + 10;\r\n\r\n container.append(data);\r\n }\r\n });\r\n }\r\n\r\n $('#load-more-articles').on('click', loadMoreArticles);\r\n }\r\n return pub;\r\n})();\r\n","/**\r\n * Initialize Helper\r\n */\r\n\r\nvar helper = (function () {\r\n\tvar browserCacheExpiry = 120;\r\n\r\n\tvar pub = {}; // public facing functions\r\n\r\n\tpub.init = function () {\r\n\t};\r\n\r\n\tpub.SetLocalData = function (key, data) {\r\n\t\tlocalStorage.setItem(key, data);\r\n\t\tsetBrowserCacheExpiryTime(function (newExpiryTime) {\r\n\t\t\tlocalStorage.setItem(key + \"_expiry\", $.now() + newExpiryTime);\r\n\t\t});\r\n\t};\r\n\r\n\tpub.LocalDataExpired = function (key) {\r\n\t\tvar expiry = localStorage.getItem(key + \"_expiry\");\r\n\t\tif (expiry !== undefined && expiry !== null && expiry !== \"\") {\r\n\t\t\tif (parseInt(expiry) > $.now())\r\n\t\t\t\treturn false;\r\n\t\t\telse\r\n\t\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t};\r\n\r\n\tpub.HTTP_GET = function (url, callback) {\r\n\t\t//Vanilla javascript way of doing ajax when jquery is not available\r\n\t\tvar xmlhttp = new XMLHttpRequest();\r\n\t\txmlhttp.onreadystatechange = function () {\r\n\t\t\tif (xmlhttp.readyState === XMLHttpRequest.DONE) { // XMLHttpRequest.DONE == 4\r\n\t\t\t\tif (xmlhttp.status === 200) {\r\n\t\t\t\t\tcallback(xmlhttp.responseText);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tconsole.log('There was an error in getting data from ' + url);\r\n\t\t\t\t\tcallback(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\txmlhttp.open(\"GET\", url, true);\r\n\t\txmlhttp.send();\r\n\t};\r\n\r\n\tfunction setBrowserCacheExpiryTime(callback) {\r\n\t\tcallback(browserCacheExpiry * 60 * 1000);\r\n\r\n\t//\tpub.HTTP_GET(\"/Pages/AppSettings\", function (response) {\r\n\t//\t\tvar data = JSON.parse(response);\r\n\t//\t\tcallback(data.browserCacheExpiry * 60 * 1000);\r\n\t//\t});\r\n\t}\r\n\r\n\treturn pub;\r\n})();\r\n","/**\r\n * Initialize infinite scroll for blog, podcast, and press pages\r\n */\r\n\r\nvar infiniteScroll = (function () {\r\n var pub = {};\r\n\r\n pub.init = function () {\r\n $(document).ready(function () {\r\n $('#blog-articles').infiniteScroll({\r\n path: function () {\r\n var skip = this.loadCount * 12;\r\n return '/pages/BlogArticles?skip=' + skip + '&limit=12';\r\n },\r\n prefil: true,\r\n append: '.article-card-class',\r\n status: '.page-load-status',\r\n history: false\r\n });\r\n\r\n $('#podcast-articles').infiniteScroll({\r\n path: function () {\r\n var skip = this.loadCount * 12;\r\n return '/pages/PodcastArticles?skip=' + skip + '&limit=12';\r\n },\r\n prefil: true,\r\n append: '.article-card-class',\r\n status: '.page-load-status',\r\n history: false\r\n });\r\n\r\n $('#press-articles').infiniteScroll({\r\n path: function () {\r\n var skip = this.loadCount * 12;\r\n return '/press?skip=' + skip + '&pageSize=12';\r\n },\r\n prefil: true,\r\n append: '.article-card-class',\r\n status: '.page-load-status',\r\n history: false,\r\n fetchOptions: {\r\n headers: {\r\n 'x-requested-with': 'XMLHttpRequest',\r\n },\r\n },\r\n });\r\n\r\n var prize_articles = $('#prize-articles');\r\n\r\n prize_articles.infiniteScroll({\r\n path: function () {\r\n var skip = this.loadCount * 12;\r\n return '/articles/more/?prizeCodename=' + prize_articles.attr('codename') + '&prizeSlug=' + prize_articles.attr('slug') + '&skip=' + skip + '&pageSize=12';\r\n },\r\n prefil: true,\r\n append: '.article-card-class',\r\n status: '.page-load-status',\r\n history: false\r\n });\r\n\r\n setTimeout(function () {\r\n // Load the initial set of cards\r\n $('#blog-articles').infiniteScroll('loadNextPage');\r\n $('#podcast-articles').infiniteScroll('loadNextPage');\r\n $('#press-articles').infiniteScroll('loadNextPage');\r\n $('#prize-articles').infiniteScroll('loadNextPage');\r\n }, 100);\r\n });\r\n };\r\n\r\n return pub;\r\n})();\r\n","let googleMap, mapList, mapLegend;\r\nlet xPrizeMap = {\r\n previousMarker: null,\r\n previousUniqueCluster: null,\r\n focusedStrokeWeight: 3,\r\n focusedStrokeColor: \"#fff\",\r\n focusedScale: 10,\r\n unfocusedStrokeWeight: 0.8,\r\n unfocusedScale: 6.5,\r\n isFullScreen: false,\r\n InitialStateChanged: false,\r\n IsMarkerSelected: false,\r\n filteredPlace: null,\r\n mobileToggle: false\r\n};\r\nlet xPrizeStyles = [{\r\n \"featureType\": \"water\",\r\n \"stylers\": [{\r\n \"color\": \"#484848\"\r\n }]\r\n}, {\r\n \"featureType\": \"landscape\",\r\n \"stylers\": [{\r\n \"color\": \"#151515\"\r\n }]\r\n}, {\r\n \"featureType\": \"administrative.land_parcel\",\r\n \"elementType\": \"labels.text\",\r\n \"stylers\": [{\r\n \"color\": \"#484848\"\r\n }]\r\n}, {\r\n \"featureType\": \"administrative.land_parcel\",\r\n \"elementType\": \"labels.text.stroke\",\r\n \"stylers\": [{\r\n \"color\": \"#000\"\r\n }]\r\n}, {\r\n \"featureType\": \"administrative.land_parcel\",\r\n \"elementType\": \"labels.text.fill\",\r\n \"stylers\": [{\r\n \"color\": \"#000\"\r\n }]\r\n}, {\r\n \"featureType\": \"road\",\r\n \"stylers\": [{\r\n \"visibility\": \"off\"\r\n }]\r\n}, {\r\n \"featureType\": \"poi\",\r\n \"stylers\": [{\r\n \"visibility\": \"off\"\r\n }]\r\n}, {\r\n \"featureType\": \"transit\",\r\n \"stylers\": [{\r\n \"visibility\": \"off\"\r\n }]\r\n}, {\r\n \"featureType\": \"administrative.country\",\r\n \"elementType\": \"geometry.stroke\",\r\n \"stylers\": [{\r\n \"visibility\": \"off\"\r\n }]\r\n}, {\r\n \"featureType\": \"administrative.province\",\r\n \"elementType\": \"geometry.stroke\",\r\n \"stylers\": [{\r\n \"visibility\": \"off\"\r\n }]\r\n},{\r\n \"featureType\": \"administrative.country\",\r\n \"elementType\": \"labels.text.fill\",\r\n \"stylers\": [{\r\n \"color\": \"#484848\"\r\n }]\r\n}, {\r\n \"featureType\": \"administrative.country\",\r\n \"elementType\": \"labels.text.stroke\",\r\n \"stylers\": [{\r\n \"color\": \"#232323\"\r\n }]\r\n\r\n}, {\r\n \"featureType\": \"administrative.land_parcel\",\r\n \"elementType\": \"labels.text.fill\",\r\n \"stylers\": [{\r\n \"color\": \"#484848\"\r\n }]\r\n}, {\r\n \"featureType\": \"administrative.land_parcel\",\r\n \"elementType\": \"labels.text.stroke\",\r\n \"stylers\": [{\r\n \"color\": \"#232323\"\r\n }]\r\n}, {\r\n \"featureType\": \"administrative.locality\",\r\n \"elementType\": \"labels.text.fill\",\r\n \"stylers\": [{\r\n \"color\": \"#484848\"\r\n }]\r\n}, {\r\n \"featureType\": \"administrative.locality\",\r\n \"elementType\": \"labels.text.stroke\",\r\n \"stylers\": [{\r\n \"color\": \"#232323\"\r\n }]\r\n}, {\r\n \"featureType\": \"administrative.neighborhood\",\r\n \"elementType\": \"labels.text.fill\",\r\n \"stylers\": [{\r\n \"color\": \"#484848\"\r\n }]\r\n}, {\r\n \"featureType\": \"administrative.neighborhood\",\r\n \"elementType\": \"labels.text.stroke\",\r\n \"stylers\": [{\r\n \"color\": \"#232323\"\r\n }]\r\n}, {\r\n \"featureType\": \"administrative.province\",\r\n \"elementType\": \"labels.text.fill\",\r\n \"stylers\": [{\r\n \"color\": \"#484848\"\r\n }]\r\n}, {\r\n \"featureType\": \"administrative.province\",\r\n \"elementType\": \"labels.text.stroke\",\r\n \"stylers\": [{\r\n \"color\": \"#232323\"\r\n }]\r\n}\r\n];\r\n\r\n\r\nclass MapLegendComponent {\r\n constructor(teams, legendItems) {\r\n this.legendsTemplate(teams, legendItems);\r\n }\r\n\r\n legendsTemplate(teams, legendItems) {\r\n\r\n var items = (legendItems != null)\r\n ? legendItems.map(i => {\r\n var item = {\r\n text: i.title.toUpperCase(),\r\n color: i.color\r\n };\r\n\r\n return item;\r\n })\r\n : this.getlegendItems(teams);\r\n\r\n $('#legend-wrapper').html('');\r\n let source = document.getElementContextById(\"legendTemplate\").innerHTML;\r\n let template = Handlebars.compile(source);\r\n let context = {\r\n legendItems: items\r\n };\r\n let html = template(context);\r\n $('#legend-wrapper').html(html);\r\n }\r\n\r\n selectProps(...props) {\r\n return function (obj) {\r\n const newObj = {};\r\n props.forEach(name => {\r\n newObj[name] = obj[name];\r\n });\r\n return newObj;\r\n }\r\n }\r\n\r\n selectPropsList(arr, prop, prop2, prop3) {\r\n return arr.reduce((a, d) => {\r\n if (d[prop] != null && !a.includes(d[prop][prop2])) {\r\n if (d[prop].length > 0) {\r\n d[prop].forEach(function (v) {\r\n if (!a.includes(v[prop2])) {\r\n var item = {\r\n text: v[prop2],\r\n color: v[prop3]\r\n }\r\n a.push(item)\r\n }\r\n })\r\n }\r\n }\r\n return a;\r\n }, []);\r\n }\r\n\r\n getlegendItems(teams) {\r\n\r\n var legendItems = [];\r\n\r\n //Teams\r\n let newArr = teams.map(this.selectProps(\"status\", \"color\"));\r\n const teamColors = [...new Map(newArr.map(item => [item['status'], item])).values()];\r\n\r\n teamColors.forEach(function (v) {\r\n legendItems.push({\r\n text: v.status.toUpperCase(),\r\n color: v.color\r\n });\r\n })\r\n\r\n //Achievements\r\n const achievementColors = this.selectPropsList(teams, \"achievements\", \"displayName\", \"color\");\r\n achievementColors.forEach(function (v) {\r\n legendItems.push({\r\n text: v.text.toUpperCase(),\r\n color: v.color\r\n });\r\n })\r\n\r\n return legendItems.filter(\r\n (obj, index) => legendItems.findIndex((item) => item.text === obj.text) === index\r\n );\r\n }\r\n}\r\nclass GoogleMapViewComponent {\r\n map;\r\n markerList = [];\r\n markerCluster;\r\n detailsZoomLevel = 5;\r\n\r\n constructor(teams) {\r\n this.loadInitialMap(teams);\r\n }\r\n static getInstance(teams) {\r\n if (!this.instance) {\r\n this.instance = new GoogleMapViewComponent(teams);\r\n }\r\n return this.instance;\r\n }\r\n /*** Load all or filtered teams on the map. */\r\n loadInitialMap(teamsList) {\r\n\r\n this.map = new google.maps.Map(document.getElementById('map'), {\r\n center: new google.maps.LatLng(0, 0),\r\n zoom: 2,\r\n minZoom: 2,\r\n mapTypeId: google.maps.MapTypeId.ROADMAP,\r\n styles: xPrizeStyles,\r\n streetViewControl: false,\r\n mapTypeControl: false,\r\n zoomControlOptions: {\r\n position: google.maps.ControlPosition.RIGHT_BOTTOM,\r\n },\r\n fullscreenControl: true\r\n });\r\n\r\n google.maps.event.addListener(map, 'mouseover', function (event) {\r\n this.setOptions({\r\n scrollwheel: true\r\n });\r\n });\r\n var locationButton = this.LocateMe();\r\n this.map.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push(locationButton);\r\n if (teamsList === teams) {\r\n xPrizeMap.InitialStateChanged = false;\r\n } else {\r\n xPrizeMap.InitialStateChanged = true;\r\n }\r\n locationButton.addEventListener(\"click\", () => {\r\n // Try HTML5 geolocation.\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(\r\n (position) => {\r\n const pos = {\r\n lat: position.coords.latitude,\r\n lng: position.coords.longitude,\r\n };\r\n let marker = new google.maps.Marker({\r\n position: new google.maps.LatLng(pos.lat, pos.lng),\r\n icon: {\r\n path: google.maps.SymbolPath.CIRCLE,\r\n scale: xPrizeMap.focusedScale,\r\n fillColor: '#1da1f2',\r\n fillOpacity: 1,\r\n strokeWeight: xPrizeMap.focusedStrokeWeight\r\n },\r\n map: map\r\n });\r\n let icon = marker.getIcon();\r\n icon.fillColor = icon.fillColor;\r\n icon.path = google.maps.SymbolPath.CIRCLE;\r\n icon.scale = xPrizeMap.focusedScale;\r\n icon.strokeColor = xPrizeMap.focusedStrokeColor;\r\n icon.strokeWeight = xPrizeMap.focusedStrokeWeight;\r\n marker.setIcon(icon);\r\n this.map.setCenter(marker.position);\r\n this.map.setZoom(10);\r\n },\r\n () => {\r\n handleLocationError(true, map.getCenter());\r\n });\r\n } else {\r\n // Browser doesn't support Geolocation\r\n handleLocationError(false, infoWindow, map.getCenter());\r\n }\r\n });\r\n\r\n const renderer = {\r\n render: ({ count, position }) =>\r\n\r\n new google.maps.Marker({\r\n label: { text: String(count), color: \"#ffffff\", fontSize: \"14px\", fontWeight: \"600\" },\r\n icon: {\r\n path: google.maps.SymbolPath.CIRCLE,\r\n scale: 10.5,\r\n fillColor: \"#DD00F0\",\r\n fillOpacity: 0.7,\r\n strokeWeight: 0.4\r\n },\r\n position,\r\n // adjust zIndex to be above other markers\r\n zIndex: Number(google.maps.Marker.MAX_ZINDEX) + count,\r\n })\r\n\r\n };\r\n\r\n\r\n const onClusterClickHandler = function (e, cluster, map) {\r\n\r\n if (cluster.markers !== null && cluster.markers.length >= 2) {\r\n\r\n let uniqueMarkersList = cluster.markers.filter((value, index, self) =>\r\n index === self.findIndex((t) => (\r\n t.getPosition().lat() === value.getPosition().lat() && t.getPosition().lng() === value.getPosition().lng()\r\n ))\r\n );\r\n\r\n if (uniqueMarkersList.length === 1) {\r\n\r\n var previousCluster = xPrizeMap.previousUniqueCluster;\r\n var currentCluster = uniqueMarkersList[0];\r\n\r\n //Stops the ability to click the same cluster twice.\r\n if (previousCluster !== null && currentCluster != null) {\r\n if (currentCluster.getPosition().lat() === previousCluster.getPosition().lat() && currentCluster.getPosition().lng() === previousCluster.getPosition().lng()) {\r\n return;\r\n }\r\n }\r\n \r\n xPrizeMap.previousUniqueCluster = currentCluster;\r\n mapList.filterByClusterMarkers(cluster.markers);\r\n\r\n map.setZoom(12);\r\n map.panTo(currentCluster.getPosition());\r\n\r\n return;\r\n\r\n }\r\n }\r\n\r\n markerClusterer.defaultOnClusterClickHandler(e, cluster, map);\r\n }\r\n\r\n \r\n this.markerCluster = new markerClusterer.MarkerClusterer\r\n (\r\n {\r\n map: this.map,\r\n renderer: renderer,\r\n onClusterClick: onClusterClickHandler\r\n }\r\n );\r\n\r\n this.loadMapMarkers(teamsList); \r\n }\r\n //Google Methods\r\n clearMapMarkers() {\r\n\r\n for (let i = 0; i < this.markerList.length; i++) {\r\n this.markerList[i].setMap(null);\r\n }\r\n this.markerList = [];\r\n\r\n }\r\n loadMapMarkers(teamsList) {\r\n this.clearMapMarkers();\r\n for (let i = 0; i < teamsList.length; i++) {\r\n this.addMapMarker(teamsList[i], i);\r\n }\r\n\r\n this.markerCluster.clearMarkers();\r\n this.markerCluster.addMarkers(this.markerList);\r\n }\r\n getMapMarker(teamId) {\r\n return this.markerList.filter(o => o.teamId === teamId)[0]\r\n }\r\n recenterMap() {\r\n var lat = (xPrizeMap.isFullScreen) ? 300 : 0;\r\n this.map.setCenter(new google.maps.LatLng(0, lat))\r\n this.map.setZoom(2);\r\n }\r\n\r\n getMarkerColor(team) {\r\n if (team.achievements) {\r\n\r\n //team.achievements.sort(function (a, b) {\r\n // return new Date(b.createDate) - new Date(a.createDate);\r\n //});\r\n\r\n return team.achievements[0].color;\r\n } else {\r\n return team.color;\r\n }\r\n }\r\n\r\n addMapMarker(team, index) {\r\n var self = this;\r\n let marker = new google.maps.Marker({\r\n position: new google.maps.LatLng(team.latitude, team.longitude),\r\n icon: {\r\n path: google.maps.SymbolPath.CIRCLE,\r\n scale: xPrizeMap.unfocusedScale,\r\n fillColor: this.getMarkerColor(team),\r\n fillOpacity: 1,\r\n strokeWeight: xPrizeMap.unfocusedStrokeWeight\r\n },\r\n teamId: team.id\r\n });\r\n\r\n this.markerList.push(marker); // add each marker to array\r\n\r\n google.maps.event.addListener(marker, 'click', (function (marker, i) {\r\n return function () {\r\n if (xPrizeMap.previousMarker !== marker) {\r\n self.navigateToMarker(marker);\r\n }\r\n if (isMobile()) {\r\n mapList.markerMobileEventHandler(marker, team.id);\r\n } else {\r\n //calls map instances for update\r\n mapList.markerEventHandler(marker, team.id);\r\n }\r\n }\r\n })(marker, index));\r\n }\r\n LocateMe() {\r\n let button = $('');\r\n button.css({\r\n \"background\": \"none rgb(255, 255, 255)\",\r\n \"border\": \"0px\",\r\n \"margin\": \"10px\",\r\n \"text-transform\": \"none\",\r\n \"cursor\": \"pointer\",\r\n \"user-select\": \"none\",\r\n \"border-radius\": \"2px\",\r\n \"height\": \"40px\",\r\n \"width\": \"40px\",\r\n \"box-shadow\": \"rgb(0 0 0 / 30%) 0px 1px 4px -1px\",\r\n \"overflow\": \"hidden\",\r\n \"right\": \"0px\"\r\n });\r\n let locationButton = $('
').append(button);\r\n return locationButton.get(0);\r\n }\r\n setMapOnAll() {\r\n for (let i = 0; i < this.markerList.length; i++) {\r\n this.markerList[i].setMap(this.map);\r\n }\r\n }\r\n removeStrokeFromMarker() {\r\n let icon = xPrizeMap.previousMarker.getIcon();\r\n icon.path = google.maps.SymbolPath.CIRCLE;\r\n icon.scale = xPrizeMap.unfocusedScale;\r\n icon.strokeColor = icon.fillColor;\r\n icon.strokeWeight = xPrizeMap.unfocusedStrokeWeight;\r\n xPrizeMap.previousMarker.setIcon(icon);\r\n return icon;\r\n }\r\n navigateToMarker(currentMarker) {\r\n //remove stroke from previously clicked icon\r\n if (xPrizeMap.previousMarker != null) {\r\n var previousIcon = this.removeStrokeFromMarker();\r\n xPrizeMap.previousMarker.setIcon(previousIcon);\r\n }\r\n\r\n if (currentMarker) {\r\n //setup icon\r\n let icon = currentMarker.getIcon();\r\n icon.fillColor = icon.fillColor;\r\n icon.path = google.maps.SymbolPath.CIRCLE;\r\n icon.scale = xPrizeMap.focusedScale;\r\n icon.strokeColor = xPrizeMap.focusedStrokeColor;\r\n icon.strokeWeight = xPrizeMap.focusedStrokeWeight;\r\n currentMarker.setIcon(icon);\r\n //set zoom and go to marker\r\n this.map.setZoom(this.detailsZoomLevel);\r\n this.map.panTo(currentMarker.getPosition());\r\n //set current marker as previous xPrizeMap object\r\n xPrizeMap.previousMarker = currentMarker;\r\n xPrizeMap.InitialStateChanged = true;\r\n }\r\n }\r\n}\r\nclass MapListComponent {\r\n btnMapHeaderElement = \"map-header-map-btn\";\r\n btnDetailsElement = \"map-header-details-btn\";\r\n btnMapSearchElement = \"map-search-btn\";\r\n btnMapBackElement = \"map-back-btn\";\r\n mapTotalCountElement = \"map-list-total-count-section\";\r\n mapElement = \"map\";\r\n detailsElement = \"detailsPane\";\r\n btnMapSearchElement = \"map-search-btn\"\r\n btnlistElement = \"mobile-list-btn\";\r\n btnMapElement = \"mobile-map-btn\";\r\n listOuterElement = \"list-body\";\r\n listBodyElement = \"list-body\";\r\n filterTeamBtn = \"filterTeamBtn\"\r\n filterDropdown = \"filterDropdown\";\r\n upChevron = \"filterArrowUp\";\r\n downChevron = \"filterArrowDown\";\r\n panelSearch = \"panel-search\";\r\n teams;\r\n constructor(teams) {\r\n this.teams = teams;\r\n this.mapList(teams, false);\r\n this.AddEventListeners();\r\n }\r\n static getInstance(teams) {\r\n if (!this.instance) {\r\n this.instance = new MapListComponent(teams);\r\n }\r\n return this.instance;\r\n }\r\n AddEventListeners() {\r\n var self = this;\r\n $(document).on('click', '#map-search-btn', function () {\r\n self.searchPanelState();\r\n });\r\n $(document).on('click', '#filterTeamBtn', function () {\r\n self.showFilter();\r\n });\r\n $(document).on('click', '#mobile-list-btn', function () {\r\n self.toggleEventHandler();\r\n });\r\n $(document).on('click', '#mobile-map-btn', function () {\r\n self.toggleEventHandler();\r\n });\r\n $(document).on('click', '#map-header-map-btn', function () {\r\n self.teamDetailsToggleMobileEventHandler();\r\n });\r\n $(document).on('click', '#map-header-details-btn', function () {\r\n self.teamDetailsToggleMobileEventHandler();\r\n });\r\n $(document).on('change', '#filterDropdown', function () {\r\n if (isMobile()) {\r\n self.filterMobileEventHandler();\r\n } else {\r\n self.filterEventHandler();\r\n }\r\n });\r\n $(document).on('keyup', '#panel-search', function () {\r\n self.search();\r\n });\r\n $(document).on('click', '.list-item', function () {\r\n //TODO: Refactor\r\n if (isMobile()) {\r\n self.teamsDetailsMobileEventHandler(parseInt(this.id), 'list');\r\n } else {\r\n self.teamsDetailsEventHandler(parseInt(this.id), 'list');\r\n }\r\n });\r\n $(document).on('click', '.result-item-teams', function () {\r\n //TODO: Refactor\r\n if (isMobile()) {\r\n self.teamsDetailsMobileEventHandler(parseInt(this.id), 'list');\r\n } else {\r\n self.teamsDetailsEventHandler(parseInt(this.id), 'list');\r\n }\r\n });\r\n $(document).on('click', '.result-item-place', function () {\r\n\r\n if (isMobile()) {\r\n self.filterMobileBasedOnPlaceEventHandler(this.dataset.place);\r\n }\r\n else {\r\n self.filterBasedOnPlaceEventHandler(this.dataset.place);\r\n } \r\n });\r\n $(document).on('click', '#map-back-btn', function () {\r\n if (isMobile()) {\r\n self.goBackMobileEventHandler();\r\n } else {\r\n self.goBackEventHandler();\r\n }\r\n });\r\n $(document).on('click', '#clear-btn', function () {\r\n if (isMobile()) {\r\n self.resetMobileListEventHandler();\r\n } else {\r\n self.resetListEventHandler();\r\n }\r\n });\r\n $(document).on('search', '#search-box', function () {\r\n self.searchBoxClearEventHandler();\r\n });\r\n }\r\n\r\n toggleEventHandler() {\r\n let mBtnMap = document.getElementById(this.btnMapElement);\r\n if (mBtnMap.style.display === \"none\" || mBtnMap.style.display === \"\") {\r\n hideElement(this.btnlistElement)\r\n showElement(this.listOuterElement);\r\n showElement(this.btnMapElement);\r\n hideElement(this.mapElement);\r\n xPrizeMap.mobileToggle = true;\r\n } else {\r\n xPrizeMap.mobileToggle = false;\r\n showElementFlex(this.btnlistElement);\r\n hideElement(this.listOuterElement);\r\n hideElement(this.btnMapElement);\r\n showElement(this.mapElement);\r\n }\r\n }\r\n\r\n // TODO: it seems like this \"marker\" thing isn't being used\r\n markerEventHandler(marker, teamId) {\r\n this.teamsDetailsEventHandler(teamId, 'marker');\r\n }\r\n\r\n markerMobileEventHandler(marker, teamId) {\r\n this.markerEventHandler(marker, teamId);\r\n this.teamDetailsMobileState();\r\n }\r\n\r\n teamsDetailsEventHandler(teamId, caller) {\r\n $('#list-body').html('');\r\n let selectedTeam = teams.filter(obj => {\r\n return obj.id === teamId\r\n });\r\n let source = document.getElementInnerHtmlByIdContext(\"detailsTemplate\");\r\n let template = Handlebars.compile(source);\r\n let context = {\r\n selectedTeam: selectedTeam\r\n };\r\n let html = template(context);\r\n $('#list-body').html(html);\r\n // $('#list-header').hide();\r\n if (caller !== \"marker\") {\r\n this.listTeamClick(teamId);\r\n }\r\n xPrizeMap.IsMarkerSelected = false;\r\n\r\n hideElement(this.filterTeamBtn);\r\n hideElement(this.btnMapSearchElement);\r\n hideElement(this.mapTotalCountElement);\r\n showElementFlex(this.btnMapBackElement);\r\n hideElement(this.panelSearch);\r\n detailsToggle(50);\r\n }\r\n\r\n teamsDetailsMobileEventHandler(teamId, caller) {\r\n this.teamsDetailsEventHandler(teamId, caller);\r\n this.teamDetailsMobileState();\r\n }\r\n\r\n teamDetailsMobileState() {\r\n let mBtnDetailsElement = document.getElementContextById(this.btnDetailsElement);\r\n\r\n if (mBtnDetailsElement !== null) {\r\n if (mBtnDetailsElement.style.display === \"none\") {\r\n showElement(this.btnMapHeaderElement); //show map btn\r\n hideElement(this.mapElement); //hide map\r\n hideElement(this.btnDetailsElement); //hide details btn\r\n showElement(this.detailsElement); //show details pane\r\n } else {\r\n hideElement(this.btnMapHeaderElement); //hide map btn\r\n showElement(this.mapElement); //show map\r\n showElement(this.btnDetailsElement); //show details btn\r\n hideElement(this.detailsElement); //hide details pane\r\n }\r\n xPrizeMap.IsMarkerSelected = true;\r\n }\r\n }\r\n\r\n teamDetailsToggleMobileEventHandler() {\r\n let mBtnMap = document.getElementContextById(this.btnMapHeaderElement);\r\n if (mBtnMap.style.display === \"inherit\" || mBtnMap.style.display === \"\") {\r\n hideElement(this.btnMapElement); //hide map btn\r\n hideElement(this.detailsElement); //hide details pane\r\n hideElement(this.btnMapHeaderElement); //hide map btn\r\n showElement(this.mapElement); //show map\r\n showElement(this.btnDetailsElement); //show details btn\r\n } else {\r\n showElement(this.btnMapElement); //show map btn\r\n hideElement(this.mapElement); //hide map\r\n hideElement(this.btnDetailsElement); //hide details btn\r\n showElement(this.detailsElement); //show details pane\r\n showElement(this.btnMapHeaderElement); //show map btn\r\n }\r\n }\r\n\r\n goBackEventHandler() {\r\n\r\n this.filterEventHandler();\r\n this.refreshPanelState();\r\n hideElement(this.btnMapElement);\r\n hideElement(this.btnlistElement);\r\n googleMap.recenterMap();\r\n\r\n\r\n showElementFlex(this.filterTeamBtn);\r\n showElementFlex(this.btnMapSearchElement);\r\n showElementFlex(this.mapTotalCountElement);\r\n hideElement(this.btnMapBackElement);\r\n detailsToggle(100);\r\n xPrizeMap.previousUniqueCluster = null;\r\n }\r\n\r\n goBackMobileEventHandler() {\r\n this.goBackEventHandler();\r\n this.verifyPanelState();\r\n }\r\n\r\n filterBasedOnPlaceEventHandler(place) {\r\n var teams = this.teams;\r\n const filteredTeams = teams.filter(o => o.address.toLowerCase().includes(place.toLowerCase()));\r\n if (filteredTeams.length === 1) {\r\n this.teamsDetailsEventHandler(filteredTeams[0].id, '');\r\n } else {\r\n this.mapList(filteredTeams, true);\r\n this.listTeamClick(filteredTeams[0].id);\r\n xPrizeMap.filteredPlace = place;\r\n }\r\n showElementFlex('clear-btn');\r\n this.clearSearchInput();\r\n hideElement(this.panelSearch);\r\n }\r\n\r\n filterMobileBasedOnPlaceEventHandler(place) {\r\n this.filterBasedOnPlaceEventHandler(place);\r\n this.teamDetailsMobileState();\r\n }\r\n\r\n filterByClusterMarkers(markers) { \r\n let result = this.teams.filter(t => markers.some(m => t.id === m.teamId));\r\n this.navigateBackToList();\r\n this.mapList(result, true); //rebuild team list\r\n showElementFlex('clear-btn');\r\n }\r\n\r\n filterEventHandler() {\r\n var teams = this.teams;\r\n\r\n const checkedValues = [...document.querySelectorAll('.listFilter')].filter(input => input.checked).map(input => input.value);\r\n if (checkedValues.length === 0) { // if no checkboxes selected\r\n this.listCount(this.teams, false);\r\n this.listBody(this.teams, false); //rebuild team list\r\n googleMap.loadMapMarkers(this.teams) // load map w/ inital teams\r\n this.resetBtn();\r\n } else {\r\n const filteredTeams = this.filterTeams(teams, checkedValues);\r\n this.listCount(filteredTeams, true);\r\n this.listBody(filteredTeams, true);\r\n googleMap.loadMapMarkers(filteredTeams);\r\n showElementFlex('clear-btn');\r\n }\r\n }\r\n\r\n filterMobileEventHandler() {\r\n this.filterEventHandler();\r\n this.ensureMobileListState();\r\n }\r\n\r\n searchBoxClearEventHandler() {\r\n if ($('#search-box').val().length <= 0) {\r\n this.clearSearchInput();\r\n $('#search-results').html('');\r\n }\r\n }\r\n\r\n ensureMobileListState() {\r\n\r\n var mapBtn = document.getElementById(this.btnMapElement).style.display;\r\n\r\n if (mapBtn !== \"none\" && mapBtn !== \"\") {\r\n var listOuter = document.getElementById(this.listOuterElement).style.display;\r\n if (listOuter === \"\") {\r\n showElement(this.listOuterElement);\r\n }\r\n }\r\n }\r\n\r\n searchPanelState() {\r\n hideElement(this.filterDropdown);\r\n let x = document.getElementContextById(\"panel-search\");\r\n if (x.style.display === \"none\") {\r\n x.style.display = \"block\";\r\n } else {\r\n this.refreshPanelState();\r\n }\r\n }\r\n\r\n refreshPanelState() {\r\n hideElement(this.panelSearch);\r\n this.clearSearchInput();\r\n $('#search-results').html('');\r\n }\r\n\r\n clearSearchInput() {\r\n document.getElementById(\"search-box\").value = '';\r\n }\r\n\r\n mapList(teamsList, isFiltered) {\r\n this.listHeader(teamsList, isFiltered); \r\n this.listBody(teamsList, isFiltered);\r\n this.verifyPanelState();\r\n }\r\n\r\n navigateBackToList() {\r\n var isDetailPane = $('#details').css('display');\r\n if (isDetailPane !== \"none\") {\r\n $('#map-back-btn').click();\r\n }\r\n }\r\n\r\n verifyPanelState() {\r\n if (isMobile()) {\r\n if (!xPrizeMap.mobileToggle) {\r\n showElementFlex(this.btnlistElement);\r\n hideElement(this.btnMapElement);\r\n } else {\r\n showElementFlex(this.btnMapElement);\r\n hideElement(this.btnlistElement);\r\n }\r\n }\r\n }\r\n\r\n listBody(teamsList, isFiltered) {\r\n var listBody = \"#list-body\";\r\n $(listBody).html('');\r\n let source = document.getElementById(\"listBodyTemplate\").innerHTML;\r\n let template = Handlebars.compile(source);\r\n let context = {\r\n teams: teamsList,\r\n totalTeams: teams.length,\r\n totalFiltered: teamsList.length,\r\n isFiltered: isFiltered\r\n };\r\n let html = template(context);\r\n $(listBody).html(html);\r\n }\r\n\r\n listHeader(teamsList, isFiltered) {\r\n var listHeader = \"#list-header\";\r\n $(listHeader).html('');\r\n let source = document.getElementInnerHtmlByIdContext(\"listHeaderTemplate\");\r\n let template = Handlebars.compile(source);\r\n let context = {\r\n statuses: this.uniqueBy(teams, \"status\"),\r\n location: this.uniqueBy(teams, \"location\"),\r\n solutions: this.uniqueListBy(teams, \"solutions\"),\r\n achievements: this.uniqueObjectListBy(teams, \"achievements\", \"displayName\"),\r\n totalTeams: teams.length,\r\n totalFiltered: teamsList.length,\r\n isFiltered: isFiltered\r\n };\r\n\r\n let html = template(context);\r\n $(listHeader).html(html);\r\n }\r\n\r\n listCount(teamsList, isFiltered) {\r\n\r\n var listCount = \"#map-list-total-count-section\";\r\n $(listCount).html('');\r\n let source = document.getElementInnerHtmlByIdContext(\"listCountTemplate\");\r\n let template = Handlebars.compile(source);\r\n let context = {\r\n totalTeams: teams.length,\r\n totalFiltered: teamsList.length,\r\n isFiltered: isFiltered\r\n };\r\n let html = template(context);\r\n $(listCount).html(html);\r\n }\r\n\r\n uniqueBy(arr, prop) {\r\n return arr.reduce((a, d) => {\r\n if (!a.includes(d[prop]) && d[prop] !== null) {\r\n a.push(d[prop]);\r\n }\r\n return a;\r\n }, []);\r\n }\r\n uniqueListBy(arr, prop) {\r\n return arr.reduce((a, d) => {\r\n if (!a.includes(d[prop])) {\r\n if (d[prop].length > 0) {\r\n d[prop].forEach(function (v) {\r\n if (!a.includes(v)) {\r\n a.push(v)\r\n }\r\n })\r\n }\r\n }\r\n return a;\r\n }, []);\r\n }\r\n\r\n uniqueObjectListBy(arr, prop, prop2) {\r\n return arr.reduce((a, d) => {\r\n if (d[prop] != null && !a.includes(d[prop][prop2])) {\r\n if (d[prop].length > 0) {\r\n d[prop].forEach(function (v) {\r\n if (!a.includes(v[prop2])) {\r\n a.push(v[prop2])\r\n }\r\n })\r\n }\r\n }\r\n return a;\r\n }, []);\r\n }\r\n\r\n\r\n\r\n /* When the user clicks on the button,\r\n toggle between hiding and showing the dropdown content */\r\n showFilter() {\r\n if (document.getElementContextById(this.upChevron).style.display === \"none\") { //up arrow hidden\r\n hideElement(this.downChevron);\r\n showElementInline(this.upChevron);\r\n showElementBlock(this.filterDropdown);\r\n } else { // down arrow shown\r\n showElementInline(this.downChevron);\r\n hideElement(this.upChevron);\r\n hideElement(this.filterDropdown);\r\n }\r\n hideElement(this.panelSearch);\r\n }\r\n\r\n\r\n resetBtn() {\r\n this.refreshPanelState();\r\n this.listBody(this.teams, false);\r\n this.listCount(this.teams, false);\r\n googleMap.loadMapMarkers(this.teams);\r\n $('#filterDropdown input:checkbox').prop('checked', false);\r\n hideElement('clear-btn');\r\n xPrizeMap.filteredPlace = null;\r\n googleMap.recenterMap();\r\n }\r\n\r\n resetListEventHandler() {\r\n this.resetBtn();\r\n \r\n }\r\n\r\n resetMobileListEventHandler() {\r\n this.resetListEventHandler();\r\n this.ensureMobileListState();\r\n }\r\n\r\n\r\n markerDetailsClickEvent(currentMarker) {\r\n\r\n googleMap.navigateToMarker(currentMarker);\r\n }\r\n /**\r\n * Navigates to marker based on team clicked from list\r\n */\r\n listTeamClick(teamId) {\r\n let currentMarker = googleMap.getMapMarker(teamId);\r\n this.markerDetailsClickEvent(currentMarker);\r\n xPrizeMap.previousUniqueCluster = currentMarker;\r\n }\r\n search() {\r\n hideElement(this.filterDropdown);\r\n let x = document.getElementContextById(\"search-box\").value;\r\n if (x !== '') {\r\n x = x.toLowerCase();\r\n let teamResults = teams.filter(o => o.name.toLowerCase().includes(x));\r\n let placesResults = teams.filter(o => {\r\n let result = null;\r\n if (o.address !== null) {\r\n result = o.address.toLowerCase().includes(x);\r\n }\r\n return result;\r\n }).map(p => p.address);\r\n let results = {\r\n places: [...new Set(placesResults)],\r\n teams: teamResults\r\n };\r\n this.searchResultsTemplate(results);\r\n } else {\r\n $('.search-results').html('');\r\n }\r\n }\r\n searchResultsTemplate(results) {\r\n $('.search-results').html('');\r\n let source = document.getElementInnerHtmlByIdContext(\"searchResultsTemplate\");\r\n let template = Handlebars.compile(source);\r\n let context = {\r\n teams: results.teams,\r\n places: results.places,\r\n hasTeams: (results.teams.length > 0) ? true : false,\r\n hasPlaces: (results.places.length > 0) ? true : false,\r\n hasResults: (results.teams.length > 0 || results.places.length) ? true : false\r\n };\r\n let html = template(context);\r\n $('.search-results').html(html);\r\n }\r\n\r\n filterTeams(teams, values) {\r\n\r\n let filteredTeams = teams;\r\n\r\n var solutionsList = this.uniqueListBy(teams, \"solutions\");\r\n var hasSolutions = values.some(sol => solutionsList.includes(sol.split(\" \")[0]));\r\n\r\n if (hasSolutions === true) {\r\n\r\n // Step 1: Filter teams by solutions\r\n filteredTeams = filteredTeams.filter(({ solutions }) => {\r\n return values.some(sol => solutions.includes(sol)) || values.some(sol => solutions.includes(sol.split(\" \")[0]));\r\n });\r\n }\r\n\r\n var achievementsList = this.uniqueObjectListBy(teams, \"achievements\", \"displayName\")\r\n var hasAchievements = achievementsList.some(x => values.some(ach => ach == x));\r\n\r\n if (hasAchievements === true) {\r\n\r\n // Step 2: Filter the previously filtered teams by achievements\r\n filteredTeams = filteredTeams.filter(({ achievements }) => {\r\n return achievements !== null && achievements.some(x => values.some(ach => ach == x.displayName));\r\n });\r\n }\r\n\r\n return this.sortTeamsByLatestAchievement(filteredTeams);\r\n }\r\n\r\n sortTeamsByLatestAchievement(teams) {\r\n return teams.sort((a, b) => {\r\n const latestAchievementA = (a.achievements != null && a.achievements.length > 0) ? new Date(a.achievements[0].achievementDate) : null;\r\n const latestAchievementB = (b.achievements != null && b.achievements.length > 0) ? new Date(b.achievements[0].achievementDate) : null;\r\n\r\n if (latestAchievementA && latestAchievementB) {\r\n return latestAchievementB - latestAchievementA;\r\n }\r\n\r\n if (latestAchievementA) {\r\n return -1;\r\n }\r\n\r\n if (latestAchievementB) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n });\r\n}\r\n\r\n\r\n}\r\n\r\n\r\n\r\nclass MapInit {\r\n constructor() { }\r\n\r\n StartUp(teams, legendItems) {\r\n mapLegend = new MapLegendComponent(teams, legendItems);\r\n mapList = MapListComponent.getInstance(teams);\r\n googleMap = GoogleMapViewComponent.getInstance(teams);\r\n this.applyiOSSettings();\r\n }\r\n\r\n applyiOSSettings() { \r\n var ver = this.iOSversion();\r\n\r\n\r\n if (ver) {\r\n if (ver[0] === 14) {\r\n $('.fa').css(\"padding-left\", \"0.5em\");\r\n $('#filterArrowUp').attr('display', 'none');\r\n $('.fa-chevron-left').attr('style', 'margin-right:0.5em');\r\n }\r\n console.log(ver);\r\n }\r\n }\r\n\r\n iOSversion() {\r\n if (/iP(hone|od|ad)/.test(navigator.platform)) {\r\n var v = (navigator.appVersion).match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\r\n return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];\r\n }\r\n }\r\n\r\n\r\n}\r\n\r\nfunction isMobile() {\r\n return window.screen.width <= 780;\r\n}\r\n//Helpers\r\nfunction hideElement(elemId) {\r\n document.getElementContextById(elemId).style.display = \"none\";\r\n}\r\n\r\nfunction showElement(elemId) {\r\n document.getElementContextById(elemId).style.display = \"inherit\";\r\n}\r\n\r\nfunction showBlockElement(elemId) {\r\n document.getElementContextById(elemId).style.display = \"block\";\r\n}\r\n\r\nfunction showElementInline(elemId) {\r\n document.getElementContextById(elemId).style.display = \"inline\";\r\n}\r\n\r\nfunction showElementBlock(elemId) {\r\n document.getElementContextById(elemId).style.display = \"Block\";\r\n}\r\n\r\nfunction showElementFlex(elemId) {\r\n document.getElementContextById(elemId).style.display = \"flex\";\r\n}\r\n\r\nfunction detailsToggle(pixels) {\r\n\r\n\r\n var detailHeight = `calc(80vh - ${pixels}px)`;\r\n var listHeight = `${pixels}px auto`;\r\n\r\n $('#list-header').height(pixels);\r\n $('#details').height(detailHeight);\r\n $('#list').css(\"grid-template-rows\", listHeight);\r\n}\r\n\r\n//Document Context Extension Methods\r\n//Note: Extensions that help us evaluate between map full screen and map non-full screen context.\r\nDocument.prototype.getElementContextById = function (arg) {\r\n if (xPrizeMap.isFullScreen === true) {\r\n return $(`#${mapElement} #${arg}`)[0];\r\n } else {\r\n return document.getElementById(arg);\r\n }\r\n};\r\nDocument.prototype.getElementContextByClassName = function (arg) {\r\n if (xPrizeMap.isFullScreen === true) {\r\n return $(`#${mapElement} .${arg}`)[0];\r\n } else {\r\n return document.getElementsByClassName(arg);\r\n }\r\n};\r\nDocument.prototype.queryContextSelectorAll = function (arg) {\r\n if (xPrizeMap.isFullScreen === true) {\r\n return $(`#${mapElement} .${arg}`);\r\n } else {\r\n return document.querySelectorAll(arg);\r\n }\r\n};\r\nDocument.prototype.getElementInnerHtmlByIdContext = function (arg) {\r\n if (xPrizeMap.isFullScreen === true) {\r\n return $(`#${arg}`)[0].innerHTML;\r\n } else {\r\n return document.getElementById(arg).innerHTML;\r\n }\r\n};\r\nDocument.prototype.getElementInnerHtmlByClassNameContext = function (arg) {\r\n if (xPrizeMap.isFullScreen === true) {\r\n return $(`.${arg}`)[0].innerHTML;\r\n } else {\r\n return document.getElementsByClassName(arg).innerHTML;\r\n }\r\n};","/**\r\n * Initialize Menu\r\n */\r\n\r\nvar menu = (function() {\r\n var pub = {}; // public facing functions\r\n\r\n pub.init = function() {\r\n menuListeners();\r\n closeListeners();\r\n\tcauseListeners();\r\n };\r\n\r\n function menuListeners() {\r\n var options = {\r\n onClose: function(modal) {\r\n $(modal).removeClass('is-open');\r\n },\r\n disableScroll: true,\r\n disableFocus: true,\r\n hasAnimation: true\r\n };\r\n\r\n var $targets = $('[data-menu-target]');\r\n var $triggers = $('[data-menu-trigger]');\r\n var $menuTriggers = $('.menu').find($triggers);\r\n var $submenuitems = $('.submenuitem');\r\n\r\n $triggers.click(function() {\r\n var target = $(this).data('menu-trigger');\r\n \r\n if( target == 'act'){\r\n window.location.href = '/get-involved';\r\n }else{\r\n // set active class on target element\r\n $targets\r\n .removeClass('active')\r\n .filter('[data-menu-target=\"' + target + '\"]')\r\n .addClass('active');\r\n \r\n // set active class for nav items inside menu\r\n $menuTriggers\r\n .removeClass('active')\r\n .filter('[data-menu-trigger=\"' + target + '\"]')\r\n .addClass('active');\r\n \r\n $('[data-cause-codename]').removeClass('active');\r\n MicroModal.show('menu', options);\r\n }\r\n });\r\n\r\n // Close the menu if sub menu item links to anchor on the same page\r\n $submenuitems.click(function () {\r\n if ($(this).attr('href').indexOf('#') >= 0) {\r\n MicroModal.close('menu');\r\n }\r\n });\r\n }\r\n\r\n function closeListeners() {\r\n // Using data-micromodal-close wasn't working because the event target isn't always correct\r\n $('[data-menu-close]').click(function() {\r\n $('[data-cause-codename]').removeClass('active');\r\n MicroModal.close('menu');\r\n });\r\n }\r\n\r\n function causeListeners() {\r\n var $causes = $('[data-cause-codename]');\r\n\r\n // Set up an event listener to handle browser resizing\r\n var mql = window.matchMedia('(min-width: 1280px)');\r\n mql.addListener(handleMediaChange);\r\n handleMediaChange(mql);\r\n\r\n // Add or remove event listeners based on whether the media query is a match\r\n function handleMediaChange(mediaQueryList) {\r\n if (mediaQueryList.matches) {\r\n $causes.find('.menu__link').on('mouseover', handleMouseover);\r\n $causes.find('.menu__icon').off('click', handleClick);\r\n } else {\r\n $causes.find('.menu__link').off('mouseover', handleMouseover);\r\n $causes.find('.menu__icon').on('click', handleClick);\r\n }\r\n }\r\n\r\n // Add active class to the cause and load data if it's not already there\r\n function handleMouseover() {\r\n var $cause = $(this).closest($causes);\r\n var $menuContent = $cause.find('.menu__content');\r\n\r\n $causes.removeClass('active');\r\n $cause.addClass('active');\r\n\r\n if ($menuContent.is(':empty')) {\r\n $.ajax({\r\n url: '/menu/cause/' + $cause.data('cause-codename'),\r\n type: 'GET',\r\n success: function(data) {\r\n $menuContent.html(data);\r\n }\r\n });\r\n }\r\n }\r\n\r\n // If clicked and already active, just remove that class\r\n function handleClick() {\r\n var $cause = $(this).closest($causes);\r\n\r\n if ($cause.hasClass('active')) {\r\n $cause.removeClass('active');\r\n } else {\r\n handleMouseover.call(this);\r\n }\r\n }\r\n\t}\r\n\r\n return pub;\r\n})();\r\n","/**\r\n * Initialize sponsor detail\r\n */\r\n\r\nvar sponsorDetail = (function() {\r\n var pub = {}; // public facing functions\r\n\r\n pub.init = function() {\r\n var $sponsorCards = $('.sponsor-card,.partner-card');\r\n\r\n $sponsorCards.find('.sponsor-card__image,.partner-card__image').on(\"click\", function() {\r\n var $sponsorCard = $(this).closest('.sponsor-card,.partner-card');\r\n\r\n if ($sponsorCard.hasClass('is-active')) {\r\n hideDetail($sponsorCard);\r\n } else {\r\n showDetail($sponsorCard);\r\n }\r\n\r\n $sponsorCards\r\n .not($sponsorCard)\r\n .filter('.is-active')\r\n .each(function(i, el) {\r\n hideDetail($(el));\r\n });\r\n });\r\n\r\n $sponsorCards.find('.sponsor-detail__close').on(\"click\", function() {\r\n var $sponsorCard = $(this).closest('.sponsor-card,.partner-card');\r\n\r\n hideDetail($sponsorCard);\r\n });\r\n };\r\n\r\n function showDetail($sponsorCard) {\r\n var paddingBottom =\r\n $sponsorCard.find('.sponsor-detail').height() -\r\n ($sponsorCard.find('figcaption:visible').height() || 0) * 2;\r\n\r\n $sponsorCard.addClass('is-active');\r\n $sponsorCard.css('padding-bottom', paddingBottom);\r\n }\r\n\r\n function hideDetail($sponsorCard) {\r\n $sponsorCard.removeClass('is-active');\r\n $sponsorCard.css('padding-bottom', '');\r\n }\r\n\r\n return pub;\r\n})();\r\n","/**\r\n * Initialize Sub-Nav\r\n */\r\n\r\nvar subNav = (function () {\r\n var pub = {}; // public facing functions\r\n\r\n pub.init = function () {\r\n var $body = $('body');\r\n var $subNav = $('.sub-nav');\r\n var $toggle = $('.sub-nav__toggle');\r\n\r\n $toggle.click(function () {\r\n $body.toggleClass('no-scroll');\r\n $body.toggleClass('sub-nav-expanded');\r\n $subNav.toggleClass('is-expanded');\r\n });\r\n\r\n // Set .active on subnav links with .js-subnav-set-active \r\n // that link to the same page and are not anchors (#)\r\n $(function () {\r\n var current = location.pathname;\r\n $('.js-subnav-set-active').each(function () {\r\n // if theres a match, add .is-active to parent li\r\n if ($(this).attr('href').indexOf(current) !== -1) {\r\n $(this).parent('li').addClass('is-active');\r\n }\r\n })\r\n })\r\n\r\n $('a.sub-nav__link.btn').click(function () {\r\n if (/^#/.test($(this).attr('href')) && $subNav.hasClass('is-expanded')) {\r\n $toggle.trigger('click');\r\n }\r\n });\r\n\r\n $(document).on('click', 'li.sub-nav__item.is-active', function (e) {\r\n if (window.matchMedia('(max-width: 767px)').matches) {\r\n e.preventDefault();\r\n $toggle.trigger('click');\r\n } else {\r\n e.preventDefault();\r\n }\r\n });\r\n };\r\n\r\n return pub;\r\n})();","/**\r\n * Initialize SVG Polyfill\r\n */\r\n\r\nvar svg = (function() {\r\n var pub = {}; // public facing functions\r\n\r\n pub.init = function() {\r\n svg4everybody();\r\n };\r\n\r\n return pub;\r\n})();\r\n"]}