{"version":3,"sources":["common.js"],"names":["headerElementClickTracking","target","category","dataLayer","push","event","params","name","location","page_category","app","tacUrl","document","addEventListener","availableInChineseBanner","querySelector","length","window","e","classList","add","setTimeout","blockStripeArea","stripeBlocks","querySelectorAll","indexStripeBlocksMobile","indexStripeBlocksDesktop","validItemsDesktop","i","item","parentElement","closest","contains","vItem","$","termsAndConditionsUrl","$form","$input","find","template","html","data","url","element","Mustache","render","$label","parent","contents","last","remove","append","on","this","attr","resizeTextAreas","each","$txtContainer","currentHeight","height","lineHeight","parseFloat","css","numberOfLines","desiredHeight","text","resize","nextButton","currentStepElement","formTitleElement","currentStepNumber","textContent","formTitle","validation_form","form_name","step_index","submitButton","form_submitted","equalizeHeights","groupHeights","$element","groupName","heroFontSize","heroBlocks","heroBlock","heroBody","numWords","innerText","firstHeroBlock","highlightNumbersBlocks","el","container","fn","bicubicImgInterpolation","settings","getBackgroundColor","color","drawCanvas","can","imgW","imgH","src","callback","imgEl","crossOrigin","bgColor","ctx","getContext","img","Image","setAttribute","w","h","onload","can2","createElement","width","ctx2","fs","fillStyle","fillRect","drawImage","drawHighResolutionImgThumbnail","attrSrc","toDataURL","self","tagName","originalW","naturalWidth","originalH","naturalHeight","after","next","detectIE","ua","navigator","userAgent","msie","indexOf","parseInt","substring","trident","rv","selectors","forEach","sel","getElementById","isClickInside","click","loadVisibleBackgroundImages","elementIsInView","backgroundImageUrl","removeAttr","top","offsetTop","left","offsetLeft","offsetWidth","offsetHeight","offsetParent","scrollY","innerHeight","scrollX","innerWidth","body","toTopLink","scrY","documentElement","style","setProperty","caseStories","focusableElements","caseStory","closeModal","caseStoryModal","caseStoryOpener","focus","display","caseStoryModalInner","caseStoryClose","firstFocusableElement","focusableContent","lastFocusableElement","keyCode","isTabPressed","key","shiftKey","activeElement","preventDefault","map","googleMap","markerClusterer","selectedLocationId","markerIconURL","clusterIconPath","divisionFilters","locationTypeFilters","regionFilters","mapMarkers","dataForCounters","clusteredData","deferLoad","zoomLevelForLabels","clusteredMarkers","drawTriggers","base","zoomChanged","positionChanged","clusteringEnd","loadCallback","google","maps","Marker","prototype","setLabel","label","MarkerLabel","marker","geoId","get","bindTo","removeLabel","setMap","redrawLabel","reason","draw","call","getLabelElement","options","setValues","htmlElement","className","visibility","trigger","extend","OverlayView","onAdd","getPanes","overlayImage","appendChild","selfLabel","listeners","addListener","shouldShow","getZoom","shouldDraw","getBounds","isClustered","isMarkerInCluster","String","position","getProjection","fromLatLngToDivPixel","innerHTML","$el","x","y","mapElement","mapStyles","elementType","stylers","featureType","Map","zoom","center","lat","lng","streetViewControl","styles","mapTypeControl","fullscreenControl","markerData","showSpacer","applyFilters","addMarkerWithDetails","getDataWithId","zoomToFitVisibleMarkers","showLocationDetails","getVisibleMarkers","result","bounds","getPosition","getDataWithGeoId","filter","d","id","getMarkerIcon","fillColor","textColor","outlineColor","iconUrl","setUpMarkerClusterer","anchor","fontWeight","textSize","clearMarkers","clearInstanceListeners","MarkerClusterer","clusterer","clustered","clusters","getClusters","markers","getMarkers","apply","m","details","icon","setMarkerId","setMarkerDetails","filterMarkers","set","getMarkerId","getMarkerDetails","resetView","removeDuplicateMarkers","setCenter","setZoom","updateCounters","geoIds","matchingGeoId","g","findMarkerWithId","getMarkerLat","getMarkerLng","east","Math","max","west","min","north","south","fitBounds","sites","locations","detailsTemplate","detailsElement","addClass","contact","selectSite","closeLocationDetails","handleFilterChange","selectedDivisions","selectedTypes","selectedRegions","processCheckedValues","selector","targetArray","idx","input","prop","val","doNotResetView","divisionComparator","division","divisions","typeComparator","type","regionComparator","region","filterByDivisions","source","div","filterByTypes","types","filterByRegions","regions","filteredData","filteredByDivisions","filteredByTypes","slice","updateCheckboxes","dataSource","comparator","value","count","ids","idsToAdd","markerId","splice","siblings","address","email","phone","externalLink","externalLinkText","showInvoiceInformationLink","hasOwnProperty","updateToggleControl","showExpandOrCollapse","removeClass","filtersContainer","isVisible","is","slideToggle","Array","Object","defineProperty","predicate","TypeError","o","len","thisArg","arguments","k","kValue","configurable","writable","siteHeader","prevScrollpos","pageYOffset","onscroll","currentScrollPos","subscribeForms","subscribe","initialize","hasErrors","languages","languagesErrorMsg","informationTypes","informationTypesErrorMsg","requiredFields","handleValidation","submit","index","elem","infoTypeChecked","elVal","hasClass","trim","validateEmail","change","reg","test","isValid","setAttributes","attrs","toggleExpandable","toggler","togglerValue","getAttribute","expandable","expandableClass","doToggle","expandedClass","aria-expanded","onclick","onkeyup","expandCounter","expandTables","previousSibling","data-expand-table","role","aria-controls","tabindex","data-expandable","class","dataTogglers","j","$section","$indexElement","$contents","children","match","$heading","anchorName","$indexItem","$indexItemLink","$anchorElement","prepend","doFilters","locationVal","locationSelect","selectedIndex","divisionVal","divisionSelect","regionVal","regionSelect","vacancyItems","vacancyResults","undefined","title","date","dataset","noVacanciesFound","T","O","vacancyFilterSection","vacancyFilters","select"],"mappings":"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","file":"../common.js","sourcesContent":["var app = { tacUrl: \"\" };\ndocument.addEventListener('DOMContentLoaded', function () {\n var availableInChineseBanner = document.querySelector('.available-in-chinese-msg');\n if (availableInChineseBanner !== null && availableInChineseBanner.length > 0) {\n if (document.querySelector('.CybotCookiebotDialogActive') !== null) {\n window.addEventListener('CookiebotOnAccept', function (e) {\n availableInChineseBanner.classList.add('show');\n }, false);\n window.addEventListener('CookiebotOnDecline', function (e) {\n availableInChineseBanner.classList.add('show');\n }, false);\n } else {\n setTimeout(function () {\n availableInChineseBanner.classList.add('show');\n }, 2000);\n }\n }\n});\ndocument.addEventListener('DOMContentLoaded', function() {\n var blockStripeArea = document.querySelector('.block-stripes');\n\n if (blockStripeArea) {\n var stripeBlocks = blockStripeArea.querySelectorAll('.cta-page-block');\n var indexStripeBlocksMobile = 0;\n var indexStripeBlocksDesktop = 0;\n var validItemsDesktop = [];\n\n for (var i = 0; i < stripeBlocks.length; i++) {\n var item = stripeBlocks[i].parentElement;\n if (!item.closest('.article-content')) {\n indexStripeBlocksMobile++;\n item.classList.add('stripe-mobile');\n if (indexStripeBlocksMobile % 2 !== 0) {\n item.classList.add('stripe-mobile--odd');\n } else {\n item.classList.add('stripe-mobile--even');\n }\n }\n }\n\n for (var i = 0; i < stripeBlocks.length; i++) {\n var item = stripeBlocks[i];\n if (!item.closest('.article-content')) {\n if (item.parentElement.classList.contains('col-lg-6')) {\n validItemsDesktop.push(item.closest('.container'));\n } else {\n validItemsDesktop.push(item.parentElement);\n }\n }\n }\n\n for (var i = 0; i < validItemsDesktop.length; i++) {\n var vItem = validItemsDesktop[i];\n if (!item.closest('.article-content')) {\n indexStripeBlocksDesktop++;\n vItem.classList.add('stripe');\n if (indexStripeBlocksDesktop % 2 !== 0) {\n vItem.classList.add('stripe--odd');\n } else {\n vItem.classList.add('stripe--even');\n }\n }\n }\n }\n});\n$(function () {\n\n var termsAndConditionsUrl = app.tacUrl;\n if (!termsAndConditionsUrl) {\n return;\n }\n\n var $form = $(\"form[data-f-metadata='document-request-form']\");\n if (!$form.length) {\n return;\n }\n\n var $input = $form.find(\"input[value='accept-terms']\");\n if (!$input.length) {\n return;\n }\n\n var template = $(\"#terms-and-conditions-template\").html();\n\n var data = { url: termsAndConditionsUrl };\n var element = Mustache.render(template, data);\n\n var $label = $input.parent();\n $label.contents().last().remove();\n $label.append(element);\n\n});\ndocument.addEventListener('DOMContentLoaded', function () {\n $('.document-row').on('click', function () {\n /* Not too happy with this, but seems to be the easiest way to achieve this */\n window.location = $(this).find('[data-download-link]').attr('href');\n return false;\n });\n});\ndocument.addEventListener(\"DOMContentLoaded\", function (event) {\n \"use strict\";\n\n function resizeTextAreas() {\n $('[data-max-text-lines]').each(function () {\n var $txtContainer = $(this);\n\n var currentHeight = $txtContainer.height();\n var lineHeight = parseFloat($txtContainer.css('line-height'));\n var numberOfLines = parseFloat($txtContainer.attr('data-max-text-lines'));\n var desiredHeight = numberOfLines * (lineHeight - 1);\n\n $txtContainer.css('height', desiredHeight);\n\n if (currentHeight > desiredHeight) {\n $txtContainer \n .css('overflow', 'hidden')\n .attr('title', $txtContainer.text());\n }\n });\n }\n\n $(window).resize(function() {\n resizeTextAreas();\n });\n\n resizeTextAreas();\n});\nfunction headerElementClickTracking(target, category) {\n dataLayer.push({\n event: \"click\",\n params: {\n name: \"navigation\",\n location: \"menu\",\n target: target,\n page_category: category\n }, \n });\n}\n\ndocument.addEventListener('DOMContentLoaded', function () {\n var nextButton = document.querySelector('.Form__NavigationBar__Action.btnNext');\n var currentStepElement = document.querySelector('.Form__NavigationBar__ProgressBar__CurrentStep');\n var formTitleElement = document.querySelector('li[data-current-page-breadcrumb]');\n\n if (nextButton && currentStepElement && formTitleElement) {\n nextButton.addEventListener('click', function () {\n var currentStepNumber = currentStepElement.textContent;\n var formTitle = formTitleElement.textContent;\n dataLayer.push({\n event: \"support_form\",\n validation_form: {\n form_name: formTitle,\n step_index: currentStepNumber\n },\n });\n });\n }\n});\n\ndocument.addEventListener('DOMContentLoaded', function () {\n var submitButton = document.querySelector('.Form__Element.FormSubmitButton');\n var currentStepElement = document.querySelector('.Form__NavigationBar__ProgressBar__CurrentStep');\n var formTitleElement = document.querySelector('li[data-current-page-breadcrumb]');\n\n if (submitButton && currentStepElement && formTitleElement) {\n submitButton.addEventListener('click', function () {\n var currentStepNumber = currentStepElement.textContent;\n var formTitle = formTitleElement.textContent;\n dataLayer.push({\n event: \"support_form\",\n validation_form: {\n form_name: formTitle,\n step_index: currentStepNumber,\n form_submitted: \"TRUE\"\n },\n });\n });\n }\n});\ndocument.addEventListener('DOMContentLoaded', function () {\n function equalizeHeights() {\n var groupHeights = {};\n\n $('[data-eq-height-group]').each(function () {\n var $element = $(this);\n\n $element.css('height', '');\n \n var groupName = $element.attr('data-eq-height-group');\n var height = $element.height();\n\n if (!groupHeights[groupName]) {\n groupHeights[groupName] = 0;\n }\n\n groupHeights[groupName] = height > groupHeights[groupName] ? height : groupHeights[groupName];\n }).each(function () {\n var $element = $(this);\n var groupName = $element.attr('data-eq-height-group');\n $element.css('height', groupHeights[groupName] + 'px');\n });\n }\n\n $(window).on('resize', function() {\n equalizeHeights();\n });\n\n equalizeHeights();\n});\ndocument.addEventListener('DOMContentLoaded', function () {\n var heroBlocks = document.querySelectorAll('.hero-block');\n\n for (var i = 0; i < heroBlocks.length; i++) {\n var firstHeroBlock = heroBlocks[0];\n\n firstHeroBlock.classList.add('first-hero-block');\n }\n\n function heroFontSize() {\n for (var i = 0; i < heroBlocks.length; i++) {\n var heroBlock = heroBlocks[i];\n var heroBody = heroBlock.querySelector('.body');\n\n if (heroBody) {\n var numWords = heroBody.innerText.length;\n\n if ((numWords >= 1) && (numWords < 30)) {\n heroBody.classList.add(\"font-size-xxl\");\n }\n else if ((numWords >= 30) && (numWords < 40)) {\n heroBody.classList.add(\"font-size-xl\");\n }\n else if ((numWords >= 40) && (numWords < 55)) {\n heroBody.classList.add(\"font-size-l\");\n }\n else if ((numWords >= 55) && (numWords < 70)) {\n heroBody.classList.add(\"font-size-n\");\n }\n else {\n heroBody.classList.add(\"font-size-s\");\n }\n }\n }\n }\n\n heroFontSize();\n});\n(function() {\n var highlightNumbersBlocks = document.querySelectorAll('.block-highlight-numbers');\n for (var i = 0; i < highlightNumbersBlocks.length; i++) {\n var el = highlightNumbersBlocks[i];\n var container = el.closest('.row');\n if (!container.classList.contains('row-flex')) {\n container.classList.add('row-flex');\n }\n }\n}());\n//\n// https://github.com/sukhoi1, 25 Jan 2016\n// bicubic-img-interpolation v0.1.1 jQuery plugin\n\n$.fn.bicubicImgInterpolation = function (settings) {\n\n var self = this;\n $(self).each(function () {\n if (this.tagName === \"IMG\") {\n var src = $(this).attr('src');\n var imgW = this.width;\n var imgH = this.height;\n var originalW = this.naturalWidth;\n var originalH = this.naturalHeight;\n if (originalW == imgW && originalH == imgH) {\n return;\n }\n var bgColor = getBackgroundColor($(this));\n $(this).after(\"\");\n var can = $(this).next()[0];\n var callback = drawHighResolutionImgThumbnail;\n drawCanvas(can, imgW * 6, imgH * 6, src, callback, this, settings.crossOrigin, bgColor);\n }\n });\n\n function getBackgroundColor($element) {\n if ($element == null) {\n return null;\n }\n if ($element.length == 0) {\n return null;\n }\n var color = $element.css(\"backgroundColor\");\n if (color === \"transparent\") {\n return getBackgroundColor($element.parent());\n }\n return color;\n };\n\n function drawCanvas(can, imgW, imgH, src, callback, imgEl, crossOrigin, bgColor) {\n\n var ctx = can.getContext('2d');\n var img = new Image();\n if (crossOrigin) {\n img.setAttribute('crossOrigin', 'anonymous'); //tainted canvases may not be exported chrome, ie will also throw security error\n }\n\n var w = imgW;\n var h = imgH;\n\n img.onload = function () {\n\n // Step it down several times\n var can2 = document.createElement('canvas');\n can2.width = w;\n can2.height = h;\n var ctx2 = can2.getContext('2d');\n\n // Draw it at 1/2 size 3 times (step down three times)\n if (!!bgColor) {\n var fs = ctx2.fillStyle;\n ctx2.fillStyle = bgColor;\n ctx2.fillRect(0, 0, w / 2, h / 2);\n ctx2.fillStyle = fs;\n }\n ctx2.drawImage(img, 0, 0, w / 2, h / 2);\n ctx2.drawImage(can2, 0, 0, w / 2, h / 2, 0, 0, w / 4, h / 4);\n ctx2.drawImage(can2, 0, 0, w / 4, h / 4, 0, 0, w / 6, h / 6);\n ctx.drawImage(can2, 0, 0, w / 6, h / 6, 0, 0, w / 6, h / 6);\n if (callback) {\n callback(can, this.src, imgEl);\n }\n };\n\n img.src = src;\n };\n\n function drawHighResolutionImgThumbnail(can, attrSrc, imgEl) {\n $(imgEl).attr('src', can.toDataURL(\"image/png\"));\n $(imgEl).attr('data-src', attrSrc);\n };\n};\n\ndocument.addEventListener(\"DOMContentLoaded\", function (event) {\n \"use strict\";\n\n function detectIE() {\n var ua = window.navigator.userAgent;\n\n var msie = ua.indexOf('MSIE ');\n if (msie > 0) {\n // IE 10 or older => return version number\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n }\n\n var trident = ua.indexOf('Trident/');\n if (trident > 0) {\n // IE 11 => return version number\n var rv = ua.indexOf('rv:');\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n }\n\n // other browser\n return -1;\n };\n\n if (detectIE() < 9) {\n return;\n }\n\n var selectors = [\".abstract img\", \".body img\"];\n\n selectors.forEach(function (sel) {\n $(sel).bicubicImgInterpolation({\n crossOrigin: 'anonymous' //otherwise browser security error is triggered\n });\n });\n\n});\ndocument.addEventListener('DOMContentLoaded', function() {\n var el = document.getElementById('langSelectorArea');\n if (el) {\n document.addEventListener('click', function(event) {\n var isClickInside = el.contains(event.target);\n if (!isClickInside && (document.querySelector('#langSelector').classList.contains('in') || document.querySelector('#langSelector').classList.contains('show'))) {\n document.querySelector('[data-target=\"#langSelector\"]').click();\n }\n });\n }\n});\ndocument.addEventListener('DOMContentLoaded', function () {\n function loadVisibleBackgroundImages() {\n $('[data-lazy-background]').each(function () {\n if (elementIsInView(this)) {\n var backgroundImageUrl = $(this).attr('data-lazy-background');\n $(this).css('background-image', 'url(\"' + backgroundImageUrl + '\")');\n $(this).removeAttr('data-lazy-background');\n }\n });\n }\n\n function elementIsInView(el) {\n var top = el.offsetTop;\n var left = el.offsetLeft;\n var width = el.offsetWidth;\n var height = el.offsetHeight;\n\n while (el.offsetParent) {\n el = el.offsetParent;\n top += el.offsetTop;\n left += el.offsetLeft;\n }\n\n return (\n top < (window.scrollY + window.innerHeight) &&\n left < (window.scrollX + window.innerWidth) &&\n (top + height) > window.scrollY &&\n (left + width) > window.scrollX\n );\n }\n\n $(document).on('scroll', function () {\n loadVisibleBackgroundImages();\n });\n\n loadVisibleBackgroundImages();\n});\ndocument.addEventListener('DOMContentLoaded', function () {\n document.body.classList.add('loaded');\n\n var toTopLink = document.querySelector('.to-top-of-page__link');\n var scrY = window.scrollY;\n\n window.addEventListener('scroll', function () {\n scrY = window.scrollY;\n document.documentElement.style.setProperty('--scroll-y', (scrY + 'px'));\n\n if (scrY > 500) {\n toTopLink.classList.add('shown');\n } else {\n toTopLink.classList.remove('shown');\n }\n });\n});\n\ndocument.addEventListener('DOMContentLoaded', function() {\n var caseStories = document.querySelectorAll('.magazine-layover-block');\n var focusableElements = 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\n caseStories.forEach(function (caseStory) {\n var caseStoryOpener = caseStory.querySelector('.case-story__opener');\n var caseStoryModal = caseStory.querySelector('.case-story__modal');\n var caseStoryModalInner = caseStory.querySelector('.case-story__inner');\n var caseStoryClose = caseStory.querySelector('.case-story__close');\n\n caseStoryOpener.addEventListener('click', function () {\n var firstFocusableElement = caseStoryModal.querySelectorAll(focusableElements)[0];\n var focusableContent = caseStoryModal.querySelectorAll(focusableElements);\n var lastFocusableElement = focusableContent[focusableContent.length - 1];\n\n caseStoryModal.style.display = 'block';\n setTimeout(function () {\n caseStoryModal.classList.add('shown');\n document.body.classList.add('modal-open');\n firstFocusableElement.focus();\n }, 100);\n\n // trap focus to elements inside modal\n caseStoryModal.addEventListener('keydown', function(e) {\n var keyCode = e.keyCode;\n var isTabPressed = e.key === 'Tab' || keyCode === 9;\n\n if (keyCode === 27) {\n caseStoryClose.click();\n } else {\n if (!isTabPressed) {\n return;\n }\n\n if (e.shiftKey) {\n if (document.activeElement === firstFocusableElement) {\n lastFocusableElement.focus();\n e.preventDefault();\n }\n } else {\n if (document.activeElement === lastFocusableElement) {\n firstFocusableElement.focus();\n e.preventDefault();\n }\n }\n }\n });\n });\n\n caseStoryClose.addEventListener('click', function () {\n closeModal();\n });\n\n caseStoryModal.addEventListener('click', function (e) {\n if (!caseStoryModalInner.contains(e.target)) {\n closeModal();\n }\n });\n\n function closeModal () {\n caseStoryModal.classList.remove('shown');\n document.body.classList.remove('modal-open');\n caseStoryOpener.focus();\n setTimeout(function () {\n caseStoryModal.style.display = 'none';\n }, 600);\n }\n });\n});\n\"use strict\";\n\nvar map = {\n\n googleMap: null,\n markerClusterer: null,\n data: [],\n selectedLocationId: -1,\n\n markerIconURL: \"\",\n clusterIconPath: \"\",\n\n divisionFilters: [],\n locationTypeFilters: [],\n regionFilters: [],\n\n mapMarkers: [],\n\n dataForCounters: [],\n\n clusteredData: {},\n\n deferLoad: false,\n\n zoomLevelForLabels: 100,\n\n clusteredMarkers: [],\n\n drawTriggers: {\n base: \"base.draw\",\n zoomChanged: \"zoom_changed\",\n positionChanged: \"position_changed\",\n clusteringEnd: \"clustering_end\"\n },\n\n loadCallback: function () {\n\n if (this.data.length == 0) {\n this.deferLoad = true;\n return;\n }\n\n /// source: http://jsfiddle.net/6t3pyr94/\n google.maps.Marker.prototype.setLabel = function (label) {\n this.label = new MarkerLabel({\n map: this.map,\n marker: this,\n text: label,\n geoId: this.get(\"details\").geoId\n });\n this.label.bindTo('position', this, 'position');\n };\n\n google.maps.Marker.prototype.removeLabel = function () {\n this.label.setMap(null);\n this.label = null;\n };\n\n google.maps.Marker.prototype.redrawLabel = function (reason) {\n var label = this.label;\n try {\n label.draw.call(label,reason);\n }\n catch (e) { }\n };\n\n google.maps.Marker.prototype.getLabelElement = function () {\n return this.label.getLabelElement();\n };\n\n var MarkerLabel = function (options) {\n this.setValues(options);\n this.htmlElement = document.createElement('div');\n this.htmlElement.className = 'map-marker-label';\n this.htmlElement.style.visibility = \"hidden\";\n var self = this;\n $(this.htmlElement).on(\"click\", function () {\n google.maps.event.trigger(self.marker, \"click\");\n });\n };\n\n MarkerLabel.prototype = $.extend(new google.maps.OverlayView(), {\n onAdd: function () {\n this.getPanes().overlayImage.appendChild(this.htmlElement);\n var selfLabel = this;\n this.listeners = [\n google.maps.event.addListener(this, 'position_changed', function () {\n selfLabel.draw(map.drawTriggers.positionChanged);\n })\n ];\n },\n draw: function (reason) {\n if (typeof reason === \"undefined\") {\n reason = map.drawTriggers.base;\n }\n var shouldShow = this.map.getZoom() >= map.zoomLevelForLabels && !$(\".location-details\").length;\n var shouldDraw = (this.map.getZoom() >= (map.zoomLevelForLabels - 1)) && !$(\".location-details\").length;\n shouldDraw = shouldDraw && this.map.getBounds().contains(this.get('position'));\n var isClustered = false;\n if (shouldDraw) {\n isClustered = map.isMarkerInCluster(this.get('marker'));\n }\n shouldDraw = shouldDraw && !isClustered;\n shouldShow = shouldShow && shouldDraw;\n if (shouldDraw) {\n var text = String(this.get('text'));\n var position = this.getProjection().fromLatLngToDivPixel(this.get('position'));\n this.htmlElement.innerHTML = text;\n var $el = $(this.htmlElement);\n var left = (position.x + 20);\n var top = (position.y - (($el.height() / 2) + 25));\n this.htmlElement.style.left = left + 'px';\n this.htmlElement.style.top = top + 'px';\n }\n if (shouldShow) {\n this.htmlElement.style.visibility = \"visible\";\n } else {\n this.htmlElement.style.visibility = \"hidden\";\n }\n },\n getLabelElement: function () {\n return this.htmlElement;\n }\n });\n ///\n\n var mapElement = $(\"#map\");\n\n var mapStyles = [{ \"elementType\": \"geometry\", \"stylers\": [{ \"color\": \"#f5f5f5\" }] }, { \"elementType\": \"labels.icon\", \"stylers\": [{ \"visibility\": \"off\" }] }, { \"elementType\": \"labels.text.fill\", \"stylers\": [{ \"color\": \"#616161\" }] }, { \"elementType\": \"labels.text.stroke\", \"stylers\": [{ \"color\": \"#f5f5f5\" }] }, { \"featureType\": \"administrative.land_parcel\", \"elementType\": \"labels.text.fill\", \"stylers\": [{ \"color\": \"#bdbdbd\" }] }, { \"featureType\": \"poi\", \"elementType\": \"geometry\", \"stylers\": [{ \"color\": \"#eeeeee\" }] }, { \"featureType\": \"poi\", \"elementType\": \"labels.text.fill\", \"stylers\": [{ \"color\": \"#757575\" }] }, { \"featureType\": \"poi.park\", \"elementType\": \"geometry\", \"stylers\": [{ \"color\": \"#e5e5e5\" }] }, { \"featureType\": \"poi.park\", \"elementType\": \"labels.text.fill\", \"stylers\": [{ \"color\": \"#9e9e9e\" }] }, { \"featureType\": \"road\", \"elementType\": \"geometry\", \"stylers\": [{ \"color\": \"#ffffff\" }] }, { \"featureType\": \"road.arterial\", \"elementType\": \"labels.text.fill\", \"stylers\": [{ \"color\": \"#757575\" }] }, { \"featureType\": \"road.highway\", \"elementType\": \"geometry\", \"stylers\": [{ \"color\": \"#dadada\" }] }, { \"featureType\": \"road.highway\", \"elementType\": \"labels.text.fill\", \"stylers\": [{ \"color\": \"#616161\" }] }, { \"featureType\": \"road.local\", \"elementType\": \"labels.text.fill\", \"stylers\": [{ \"color\": \"#9e9e9e\" }] }, { \"featureType\": \"transit.line\", \"elementType\": \"geometry\", \"stylers\": [{ \"color\": \"#e5e5e5\" }] }, { \"featureType\": \"transit.station\", \"elementType\": \"geometry\", \"stylers\": [{ \"color\": \"#eeeeee\" }] }, { \"featureType\": \"water\", \"elementType\": \"geometry\", \"stylers\": [{ \"color\": \"#c9c9c9\" }] }, { \"featureType\": \"water\", \"elementType\": \"labels.text.fill\", \"stylers\": [{ \"color\": \"#9e9e9e\" }] }];\n\n this.googleMap = new google.maps.Map(mapElement.get(0), {\n zoom: 2,\n center: {\n lat: 0, lng: 0\n },\n streetViewControl: false,\n styles: mapStyles,\n mapTypeControl: false,\n fullscreenControl: false\n });\n\n var self = this;\n\n /*\n google.maps.event.addListener(this.googleMap, \"zoom_changed\", function () {\n self.mapMarkers.forEach(function (marker) {\n marker.redrawLabel(map.drawTriggers.zoomChanged);\n });\n });\n */\n\n for (var i = 0; i < this.data.length; i++) {\n var markerData = this.data[i];\n var geoId = markerData.geoId;\n if (!this.clusteredData[geoId]) {\n this.clusteredData[geoId] = [markerData];\n } else {\n markerData.showSpacer = true;\n this.clusteredData[geoId].push(markerData); \n }\n }\n\n this.dataForCounters = this.data;\n\n var selectedLocationId = this.selectedLocationId; \n\n if (this.divisionFilters.length > 0) {\n this.applyFilters();\n } else if (selectedLocationId > 0) {\n this.mapMarkers.push(this.addMarkerWithDetails(this.getDataWithId(selectedLocationId)));\n this.zoomToFitVisibleMarkers();\n this.showLocationDetails(selectedLocationId);\n this.applyFilters(true);\n }\n else {\n this.applyFilters();\n } \n },\n /*\n readjustMarkerLabels: function () {\n var shouldReadjust = (this.googleMap.getZoom() >= map.zoomLevelForLabels) && !$(\".location-details\").length;\n if (!shouldReadjust) {\n return;\n }\n var self = this;\n var visibleMarkers = self.getVisibleMarkers();\n var labels = visibleMarkers.map(function (m) { return m.getLabelElement(); });\n var bounds = labels.map(function (l, idx) {\n var $label = $(l);\n var offset = $label.offset();\n return {\n idx: idx,\n l: offset.left,\n t: offset.top,\n r: offset.left + $label.outerWidth(),\n b: offset.top + $label.outerHeight()\n };\n });\n /// source: https://stackoverflow.com/a/2752387\n var intersects = function (b1, b2) {\n return !(\n b2.l > b1.r ||\n b2.r < b1.l ||\n b2.t > b1.b ||\n b2.b < b1.t\n );\n };\n var clash = [];\n bounds.forEach(function (boundsObj) {\n var clashing = bounds.filter(function (b) {\n return boundsObj.idx != b.idx && intersects(boundsObj, b);\n }).map(function (b) {\n return b.idx;\n });\n if (clashing.length == 0) {\n return;\n }\n clashing.push(boundsObj.idx);\n clash.push(clashing);\n });\n var handled = [];\n clash.forEach(function (c) {\n var alreadyHandled = false;\n c.forEach(function (i) {\n if (handled.indexOf(i) < 0) {\n handled.push(i);\n } else {\n alreadyHandled = true;\n }\n });\n if (alreadyHandled) {\n return;\n }\n var adjustedLabels = labels.filter(function (l, idx) { return c.indexOf(idx) >= 0; });\n if (adjustedLabels.length == 1) {\n return;\n } else if (adjustedLabels.length == 2) {\n var $second = $(adjustedLabels[1]);\n var left = parseInt($second.css('left'), 10);\n left -= ($second.outerWidth() + 40);\n $second.css({ 'left': left + 'px' });\n } else if (adjustedLabels.length == 3) {\n\n }\n });\n },*/\n\n isMarkerInCluster: function (marker) {\n\n return this.clusteredMarkers.indexOf(marker.get(\"id\")) >= 0;\n\n },\n\n getVisibleMarkers: function () {\n var result = [];\n\n for (var i = this.mapMarkers.length, bounds = this.googleMap.getBounds(); i--;) {\n if (bounds.contains(this.mapMarkers[i].getPosition())) {\n result.push(this.mapMarkers[i]);\n }\n }\n\n return result;\n },\n\n\n getDataWithGeoId: function (geoId) {\n return this.data.filter(function (d) { return d.geoId == geoId; });\n },\n\n getDataWithId: function (id) {\n return this.data.find(function (d) { return d.id == id; });\n },\n\n getMarkerIcon: function (text, fillColor, textColor, outlineColor) {\n if (!!this.markerIconURL) {\n return this.markerIconURL;\n }\n if (!text) text = '•'; //generic map dot\n var iconUrl = \"https://chart.googleapis.com/chart?cht=d&chdp=mapsapi&chl=pin%27i\\\\%27[\" + text + \"%27-2%27f\\\\hv%27a\\\\]h\\\\]o\\\\\" + fillColor + \"%27fC\\\\\" + textColor + \"%27tC\\\\\" + outlineColor + \"%27eC\\\\Lauto%27f\\\\&ext=.png\";\n return iconUrl;\n },\n\n setUpMarkerClusterer: function () {\n var styles = [\n { url: this.clusterIconPath, height: 53, width: 53, anchor: [0,0], textColor: '#7AEA97', fontWeight: 'normal', textSize: 28 }\n ];\n if (!!this.markerClusterer) {\n this.markerClusterer.clearMarkers();\n google.maps.event.clearInstanceListeners(this.markerClusterer);\n }\n this.markerClusterer = new MarkerClusterer(this.googleMap, this.mapMarkers, {\n styles: styles\n });\n var self = this;\n google.maps.event.addListener(this.markerClusterer, 'clusteringend', function (clusterer) {\n\n var clustered = [];\n\n var clusters = clusterer.getClusters() || [];\n for (var i = 0; i < clusters.length; i++) {\n var markers = clusters[i].getMarkers() || [];\n if (markers.length > 1) {\n clustered.push.apply(clustered, markers.map(function (m) { return m.get(\"id\"); }));\n }\n }\n\n self.clusteredMarkers = clustered;\n\n self.mapMarkers.forEach(function (marker) {\n marker.redrawLabel(map.drawTriggers.clusteringEnd);\n });\n });\n },\n\n addMarkerWithDetails: function (details) {\n\n var data = this.getDataWithGeoId(details.geoId);\n var label = \"\";\n for (var i = data.length; i--;) {\n var d = data[i];\n label += '' + d.name + '' + (i > 0 ? '