{"version":3,"sources":["node_modules/browser-pack/_prelude.js","assets/scripts/main.js","assets/scripts/modules/aggregatedReviewsMap.js","assets/scripts/modules/contactUs.js","assets/scripts/modules/locationSearchForm.js","assets/scripts/modules/markerclusterer.js","assets/scripts/modules/quote.js","assets/scripts/modules/serviceCentreDetailMap.js","assets/scripts/modules/serviceCentreMap.js","assets/scripts/modules/serviceCentreSearch.js","assets/scripts/modules/siteSearch.js","assets/scripts/modules/storesToolboxMap.js","assets/scripts/modules/subscribeForm.js","assets/scripts/modules/toolbox.js","assets/scripts/vendors/modernizr/modernizr-custom.js"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i .grid-section > div > .container > .row\").each(function () {\r\n // // Wrap any rows with multple columns in a page containers\r\n // $(\"> .column:not(.col-md-12) > div\", this).each(function () {\r\n // $(this).parents('.container').addClass(\"multi-column\");\r\n // });\r\n //});\r\n\r\n $('.c-banner-carousel').slick({\r\n autoplay: true,\r\n autoplaySpeed: 4000,\r\n dots: true,\r\n 'arrows': false\r\n });\r\n\r\n $('.c-featured-service-reviews-carousel').slick({\r\n 'prevArrow': '',\r\n 'nextArrow': ''\r\n });\r\n\r\n function slickCustomNav(slickSlideShow, slideCustomNav) {\r\n\r\n slickSlideShow = $(slickSlideShow);\r\n slideCustomNav = $(slideCustomNav);\r\n\r\n slideCustomNav.click(function (e) {\r\n e.preventDefault();\r\n var slideIndex = $(this).index();\r\n console.log(slideIndex);\r\n slickSlideShow.slick('slickGoTo', slideIndex);\r\n });\r\n\r\n slickSlideShow.on('setPosition', function () {\r\n var currentSlide = slickSlideShow.slick('slickCurrentSlide');\r\n slideCustomNav.removeClass(\"active\");\r\n slideCustomNav.filter(function (index) {\r\n return index === currentSlide;\r\n }).addClass(\"active\");\r\n });\r\n }\r\n\r\n slickCustomNav(\".c-banner-carousel\", \".carousel-navigation .banner\");\r\n\r\n $(\".c-tertiary-navigation__toggle\").on(\"click\", function () {\r\n $(this).parents(\".c-primary-navigation__item\").addClass(\"open\");\r\n });\r\n\r\n $(\".c-secondary-navigation__toggle\").on(\"click\", function () {\r\n $(this).parents(\".c-primary-navigation__item\").removeClass(\"open\");\r\n });\r\n\r\n $(\".dropdown-toggle\").on(\"click\", function () {\r\n var parent = $(this).parent();\r\n parent.siblings().removeClass(\"open\");\r\n parent.toggleClass(\"open\");\r\n });\r\n\r\n $(\".sub-toggle\").on(\"click\", function () {\r\n var parent = $(this).parents(\".dropdown-menu\");\r\n parent.siblings().removeClass(\"open\");\r\n parent.toggleClass(\"open\");\r\n $(this).next(\".dropdown-submenu\").toggleClass(\"open\");\r\n });\r\n\r\n $(\".c-primary-navigation .back-btn\").on(\"click\", function () {\r\n $(\".c-tertiary-navigation\").removeClass(\"open\");\r\n var closest = $(this).closest(\".open\");\r\n closest.siblings().removeClass(\"open\");\r\n closest.removeClass(\"open\");\r\n });\r\n\r\n});\r\n\r\nvar inputs = document.querySelectorAll('.input-file');\r\nArray.prototype.forEach.call(inputs, function (input) {\r\n var label = input.nextElementSibling,\r\n labelVal = label.innerHTML;\r\n\r\n input.addEventListener('change', function (e) {\r\n var fileName = '';\r\n if (this.files && this.files.length > 1)\r\n fileName = (this.getAttribute('data-multiple-caption') || '').replace('{count}', this.files.length);\r\n else\r\n fileName = e.target.value.split('\\\\').pop();\r\n\r\n if (fileName)\r\n label.querySelector('.input').innerHTML = fileName;\r\n else\r\n label.innerHTML = labelVal;\r\n });\r\n});\r\n\r\n\r\n// Begin From Master.cshtml\r\n$(function () {\r\n $(\".global-site-selector .dropdown-toggle\").click(function (e) {\r\n e.preventDefault();\r\n $(\".global-site-selector\").toggleClass(\"open\");\r\n });\r\n\r\n $(document).click(function (e) {\r\n if (!$(e.target).closest(\".global-site-selector .dropdown-toggle\").length) {\r\n $('.global-site-selector').removeClass('open');\r\n }\r\n });\r\n\r\n\r\n if (!Modernizr.objectfit) {\r\n\r\n $(\"div[class^='image-container']\").each(function () {\r\n\r\n var $container = $(this);\r\n\r\n $container.find('img').css('opacity', '0');\r\n $container.addClass('compat-object-fit');\r\n });\r\n }\r\n\r\n window.serviceCentreSearch();\r\n window.toolbox();\r\n window.contactUs();\r\n window.subscribeForm();\r\n\r\n $(\".c-search-form\").submit(function () {\r\n if ($(\"#search-collapse\").val() === \"\" && $(\"#search\").val() === \"\" && ($(\"#keywords\").val() !== undefined && $(\"#keywords\").val() === \"\")) {\r\n return false;\r\n }\r\n });\r\n\r\n $(\".c-site-search-form\").submit(function () {\r\n if ($(\"#search-collapse\").val() === \"\" && $(\"#search\").val() === \"\" && ($(\"#keywords\").val() !== undefined && $(\"#keywords\").val() === \"\")) {\r\n return false;\r\n }\r\n });\r\n});\r\n\r\n// Begin HomeHero\r\n$(function () {\r\n window.quote();\r\n\r\n\r\n $.validator.messages.required = 'Required';\r\n $.validator.messages.max = 'Invalid';\r\n $.validator.messages.min = 'Invalid';\r\n $.validator.messages.number = 'Invalid';\r\n $.validator.messages.digits = 'Invalid';\r\n $.validator.messages.maxlength = 'Invalid';\r\n $.validator.messages.minlength = 'Invalid';\r\n $.validator.messages.rangelength = 'Invalid';\r\n $.validator.messages.range = 'Invalid';\r\n\r\n if (window.loginLinksSelectorSnippet)\r\n return;\r\n\r\n window.loginLinksSelectorSnippet = {};\r\n\r\n $(\".login-links-selector-dropdown-button\").click(function (e) {\r\n e.preventDefault();\r\n $(\".login-links-selector-dropdown\").toggleClass(\"open\");\r\n });\r\n\r\n $(document).click(function (e) {\r\n if (!$(e.target).closest(\".login-links-selector-dropdown-button\").length) {\r\n $('.login-links-selector-dropdown').removeClass('open');\r\n }\r\n });\r\n\r\n\r\n $('.global-an-close').click(function () {\r\n document.cookie = \"global-an-covid19=x;path=/;secure;samesite=strict\";\r\n\r\n $('#global-an-covid19').remove();\r\n });\r\n});\r\n// End HomeHero\r\n\r\n// End From Master.cshtml","var loadAggregatedReviewsMapMarkers = function (markers) {\r\n\tjQuery(document).ready(function () {\r\n\t\t//The variables that will be used within the map configuration options.\r\n\t\tvar aggregatedReviewsMap; //The variable for the main map itself\r\n\t\tvar aggregatedReviewsMapCenter = new google.maps.LatLng(window.mapHeroLat, window.mapHeroLon); //The latitude and longitude of the center of the map.\r\n\t\tvar aggregatedReviewsMapZoom = window.mapZoomLevel; //The degree to which the map is zoomed in. This can range from 0 (least zoomed) to 21 and above (most zoomed).\r\n\t\tvar aggregatedReviewsMapZoomMin = 4; //The min zoom levels that is allowed.\r\n\t\tvar aggregatedReviewsMapZoomMax = 16; //The min zoom levels that is allowed.\r\n\t\tvar aggregatedReviewsMapIcon = '/assets/img/map-marker.png';\r\n\r\n\t\t//These options configure the setup of the map.\r\n\t\tvar aggregatedReviewsMapOptions = {\r\n\t\t\tcenter: aggregatedReviewsMapCenter,\r\n\t\t\tzoom: aggregatedReviewsMapZoom,\r\n\t\t\tminZoom: aggregatedReviewsMapZoomMin,\r\n\t\t\tmaxZoom: aggregatedReviewsMapZoomMax,\r\n\t\t\ticon: aggregatedReviewsMapIcon,\r\n\t\t\tpanControl: false,\r\n\t\t\tmapTypeControl: false,\r\n\t\t\tscrollwheel: false\r\n\t\t};\r\n\r\n\t\tloadAggregatedReviewsMap(markers);\r\n\r\n\t\t//Function that loads the map.\r\n\t\tfunction loadAggregatedReviewsMap(markers) {\r\n\t\t\taggregatedReviewsMap = new google.maps.Map(document.getElementById(\"map\"), aggregatedReviewsMapOptions);\r\n\r\n\t\t\tvar createdMarkers = [];\r\n\r\n\t\t var style = \r\n\t\t [\r\n\t\t {\r\n\t\t url: '/assets/img/reviews/m3.png',\r\n\t\t height: 66,\r\n\t\t width: 66,\r\n\t\t textColor: '#FFFFFF'\r\n\t\t }\r\n\t\t \r\n\t\t ];\r\n\r\n\t\t\tif (markers) {\r\n\t\t\t\tfor (var i = 0; i < markers.length; i++) {\r\n\t\t\t\t\tvar rm = markers[i];\r\n\t\t\t\t\tvar lat = parseFloat(rm.Latitude);\r\n\t\t\t\t\tvar long = parseFloat(rm.Longitude);\r\n\r\n\t\t\t\t\tif (lat != NaN && long != NaN) {\r\n\t\t\t\t\t\tvar markerLatLng = { lat: rm.Latitude, lng: rm.Longitude };\r\n\t\t\t\t\t\tvar marker = new google.maps.Marker({\r\n\t\t\t\t\t\t\tposition: markerLatLng,\r\n\t\t\t\t\t\t\tmap: aggregatedReviewsMap,\r\n\t\t\t\t\t\t\ticon: aggregatedReviewsMapIcon\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tcreatedMarkers.push(marker);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t var markerCluster = new MarkerClusterer(aggregatedReviewsMap,\r\n\t\t\t createdMarkers,\r\n\t\t\t {\r\n\t\t\t styles: style,\r\n\t\t\t imagePath: '/assets/img/reviews/m'\r\n\t\t\t });\r\n\t\t\t\t\t\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\nmodule.exports = loadAggregatedReviewsMapMarkers;","var contactUs = function () {\r\n\r\n $(function () {\r\n\r\n $(\"#contactUsServiceCentre\").autocomplete({\r\n source: function (request, response) {\r\n\r\n $(\"#contactUsServiceCentreEmail\").val(\"\");\r\n\r\n $.ajax({\r\n url: \"/umbraco/surface/contactuspage/getservicecentres\",\r\n type: \"GET\",\r\n dataType: \"json\",\r\n data: {\r\n filter: request.term\r\n },\r\n success: function (data) {\r\n\r\n // Populate the array that will be passed to the response callback.\r\n var autocompleteObjects = [];\r\n for (var i = 0; i < data.length; i++) {\r\n var object =\r\n {\r\n // Used by jQuery Autocomplete to show\r\n // autocomplete suggestions as well as\r\n // the text in yourInputTextBox upon selection.\r\n // Assign them to a value that you want the user to see.\r\n value: data[i].Name,\r\n label: data[i].Name,\r\n\r\n // Put our own custom id here.\r\n // If you want to, you can even put the result object.\r\n id: data[i].Email\r\n };\r\n\r\n autocompleteObjects.push(object);\r\n }\r\n\r\n response(autocompleteObjects);\r\n }\r\n });\r\n },\r\n minLength: 2,\r\n select: function (event, ui) {\r\n $(\"#contactUsServiceCentreEmail\").val(ui.item.id);\r\n }\r\n });\r\n\r\n function adjustFormControls() {\r\n var selectedValue = $(\"#EnquiryType\").val();\r\n\r\n var freeFreightConsultationValue = \"Free Freight Consultation\";\r\n var careerOpportunitiesValue = \"Career Opportunities\";\r\n var feedbackValue = \"Feedback\";\r\n var franchiseOpportunitiesValue = \"Franchise Opportunities\";\r\n var nationalLogisticsSolutionsValue = \"National Logistics Solutions\";\r\n\r\n if (selectedValue === \"Warranty Claim\") {\r\n $(\"#EnquiryDescWarrantyClaim\").show();\r\n $(\"#EnquiryDetailsWarrantyClaim\").show();\r\n } else {\r\n $(\"#EnquiryDescWarrantyClaim\").hide();\r\n $(\"#EnquiryDetailsWarrantyClaim\").hide();\r\n }\r\n\r\n if (selectedValue === \"Contact Local Service Centre\") {\r\n $(\"#EnquiryDetailsContactLocalServiceCentre\").show();\r\n } else {\r\n $(\"#EnquiryDetailsContactLocalServiceCentre\").hide();\r\n }\r\n\r\n if (selectedValue === freeFreightConsultationValue) {\r\n $(\"#EnquiryDetailsFreeFreight\").show();\r\n\r\n } else {\r\n $(\"#EnquiryDetailsFreeFreight\").hide();\r\n }\r\n\r\n if (selectedValue === nationalLogisticsSolutionsValue ||\r\n selectedValue === freeFreightConsultationValue) {\r\n $(\"#CompanyRow\").show();\r\n } else {\r\n $(\"#CompanyRow\").hide();\r\n }\r\n\r\n if (selectedValue === \"Feedback\") {\r\n $(\"#EnquiryDetailsFeedback\").show();\r\n } else {\r\n $(\"#EnquiryDetailsFeedback\").hide();\r\n }\r\n\r\n if (selectedValue === freeFreightConsultationValue ||\r\n selectedValue === careerOpportunitiesValue ||\r\n selectedValue === feedbackValue) {\r\n $(\"#postcode-row\").show();\r\n } else {\r\n $(\"#postcode-row\").hide();\r\n }\r\n\r\n if (selectedValue === franchiseOpportunitiesValue) {\r\n $(\"#franchise-opportunities-row\").show();\r\n $(\"#name-row\").hide();\r\n $(\"#email-phone-row\").hide();\r\n $(\"#submit-button\").hide();\r\n $(\"#enquiry-details-row\").hide();\r\n } else {\r\n $(\"#franchise-opportunities-row\").hide();\r\n $(\"#name-row\").show();\r\n $(\"#email-phone-row\").show();\r\n $(\"#submit-button\").show();\r\n $(\"#enquiry-details-row\").show();\r\n }\r\n }\r\n\r\n\r\n\r\n $(\"#EnquiryType\").change(function () {\r\n adjustFormControls();\r\n });\r\n\r\n adjustFormControls();\r\n\r\n if ($(\"#ContactUsForm\").length > 0) {\r\n $(\"#ContactUsForm\").validate({\r\n\t\t\t\tdebug: true,\r\n\t\t\t\tsubmitHandler: function () {\r\n\r\n\t\t\t\t\tvar formData = new FormData($(this)[0].currentForm);\r\n\r\n\t\t\t\t\t$.ajax({\r\n\t\t\t\t\t\ttype: \"POST\",\r\n\t\t\t\t\t\turl: \"/umbraco/surface/contactuspage/contactuspage\",\r\n\t\t\t\t\t\tdata: formData,\r\n\t\t\t\t\t\tcontentType: false,\r\n\t\t\t\t\t\tprocessData: false,\r\n\t\t\t\t\t\tsuccess: function (data) {\r\n\r\n\t\t\t\t\t\t\tif (data.indexOf(\"fail\") !== -1) {\r\n\t\t\t\t\t\t\t\t$(\"#FormErrorResponse\").removeClass(\"hidden\");\r\n\t\t\t\t\t\t\t\t$(\"#FormErrorResponse p\").text(data);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t$(\"#FormResponse\").removeClass(\"hidden\");\r\n\t\t\t\t\t\t\t\t$(\"#FormResponse p\").text(data);\r\n\t\t\t\t\t\t\t\t$(\"#ContactUsForm\").addClass(\"hidden\");\r\n\t\t\t\t\t\t\t\t$(window).scrollTop(0);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n}\r\n\r\nmodule.exports = contactUs;","var locationSearchForm = function () {\r\n $(function () {\r\n var tempSiteLocatorSelectedPlaceId = null;\r\n\r\n var $locationSearchKeywords = $(\"#locationSearchKeywords\");\r\n var $siteLocatorSelectedPlaceId = $(\"#site-locator-selected-place-id\");\r\n var $siteLocatorSearchButton = $(\"#site-locator-search-button\");\r\n\r\n $locationSearchKeywords.autocomplete({\r\n source: function (request, response) {\r\n\r\n $locationSearchKeywords.addClass(\"loadinggif\");\r\n\r\n $.ajax({\r\n url: \"/umbraco/surface/calculatequote/getcountryplaces\",\r\n type: \"GET\",\r\n dataType: \"json\",\r\n data: {\r\n placeId: 31638,//AU\r\n filter: request.term,\r\n excludePoBoxes: true\r\n },\r\n success: function (data) {\r\n var results = JSON.parse(data);\r\n // Populate the array that will be passed to the response callback.\r\n var autocompleteObjects = [];\r\n for (var i = 0; i < results.length; i++) {\r\n var object =\r\n {\r\n // Used by jQuery Autocomplete to show\r\n // autocomplete suggestions as well as\r\n // the text in yourInputTextBox upon selection.\r\n // Assign them to a value that you want the user to see.\r\n value: results[i].name,\r\n label: results[i].name,\r\n\r\n // Put our own custom id here.\r\n // If you want to, you can even put the result object.\r\n id: results[i].placeId\r\n };\r\n\r\n autocompleteObjects.push(object);\r\n }\r\n\r\n $locationSearchKeywords.removeClass(\"loadinggif\");\r\n\r\n response(autocompleteObjects);\r\n }\r\n });\r\n },\r\n minLength: 2,\r\n select: function (event, ui) {\r\n $siteLocatorSelectedPlaceId.val(ui.item.id);\r\n tempSiteLocatorSelectedPlaceId = ui.item.id;\r\n setTimeout(function () {\r\n $siteLocatorSearchButton.click();\r\n }, 5);\r\n },\r\n open: function (event, ui) {\r\n $('.ui-autocomplete').off('menufocus hover mouseover mouseenter');\r\n }\r\n });\r\n\r\n $locationSearchKeywords.blur(function () {\r\n if (!tempSiteLocatorSelectedPlaceId) {\r\n $siteLocatorSelectedPlaceId.val(\"\");\r\n $locationSearchKeywords.val(\"\");\r\n }\r\n tempSiteLocatorSelectedPlaceId = null;\r\n });\r\n\r\n if ($(\"#location-search-form\").length > 0) {\r\n $(\"#location-search-form\").validate({\r\n submitHandler: function () {\r\n if (!$siteLocatorSelectedPlaceId.val()) {\r\n return;\r\n }\r\n var path = window.location.protocol + \"//\" + window.location.hostname;\r\n if (window.location.port.length !== 0)\r\n path = path + \":\" + window.location.port;\r\n path = path + \"/couriers-\" + $(\"#locationSearchKeywords\").val().replace(/[^a-z0-9 ]/ig, '').trim().replace(new RegExp(\" \", \"g\"), \"-\") + \"/\";\r\n path = path + \"?p=\" + $siteLocatorSelectedPlaceId.val();\r\n window.location = path.toLowerCase();\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\nmodule.exports = locationSearchForm;","// ==ClosureCompiler==\r\n// @compilation_level ADVANCED_OPTIMIZATIONS\r\n// @externs_url http://closure-compiler.googlecode.com/svn/trunk/contrib/externs/maps/google_maps_api_v3_3.js\r\n// ==/ClosureCompiler==\r\n\r\n/**\r\n * @name MarkerClusterer for Google Maps v3\r\n * @version version 1.0.1\r\n * @author Luke Mahe\r\n * @fileoverview\r\n * The library creates and manages per-zoom-level clusters for large amounts of\r\n * markers.\r\n *
\r\n * This is a v3 implementation of the\r\n * v2 MarkerClusterer.\r\n */\r\n\r\n/**\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n\r\n/**\r\n * A Marker Clusterer that clusters markers.\r\n *\r\n * @param {google.maps.Map} map The Google map to attach to.\r\n * @param {Array.=} opt_markers Optional markers to add to\r\n * the cluster.\r\n * @param {Object=} opt_options support the following options:\r\n * 'gridSize': (number) The grid size of a cluster in pixels.\r\n * 'maxZoom': (number) The maximum zoom level that a marker can be part of a\r\n * cluster.\r\n * 'zoomOnClick': (boolean) Whether the default behaviour of clicking on a\r\n * cluster is to zoom into it.\r\n * 'averageCenter': (boolean) Wether the center of each cluster should be\r\n * the average of all markers in the cluster.\r\n * 'minimumClusterSize': (number) The minimum number of markers to be in a\r\n * cluster before the markers are hidden and a count\r\n * is shown.\r\n * 'styles': (object) An object that has style properties:\r\n * 'url': (string) The image url.\r\n * 'height': (number) The image height.\r\n * 'width': (number) The image width.\r\n * 'anchor': (Array) The anchor position of the label text.\r\n * 'textColor': (string) The text color.\r\n * 'textSize': (number) The text size.\r\n * 'backgroundPosition': (string) The position of the backgound x, y.\r\n * @constructor\r\n * @extends google.maps.OverlayView\r\n */\r\nfunction MarkerClusterer(map, opt_markers, opt_options) {\r\n\t// MarkerClusterer implements google.maps.OverlayView interface. We use the\r\n\t// extend function to extend MarkerClusterer with google.maps.OverlayView\r\n\t// because it might not always be available when the code is defined so we\r\n\t// look for it at the last possible moment. If it doesn't exist now then\r\n\t// there is no point going ahead :)\r\n\tthis.extend(MarkerClusterer, google.maps.OverlayView);\r\n\tthis.map_ = map;\r\n\r\n\t/**\r\n\t * @type {Array.}\r\n\t * @private\r\n\t */\r\n\tthis.markers_ = [];\r\n\r\n\t/**\r\n\t * @type {Array.}\r\n\t */\r\n\tthis.clusters_ = [];\r\n\r\n\tthis.sizes = [53, 56, 66, 78, 90];\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tthis.styles_ = [];\r\n\r\n\t/**\r\n\t * @type {boolean}\r\n\t * @private\r\n\t */\r\n\tthis.ready_ = false;\r\n\r\n\tvar options = opt_options || {};\r\n\r\n\t/**\r\n\t * @type {number}\r\n\t * @private\r\n\t */\r\n\tthis.gridSize_ = options['gridSize'] || 60;\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tthis.minClusterSize_ = options['minimumClusterSize'] || 2;\r\n\r\n\r\n\t/**\r\n\t * @type {?number}\r\n\t * @private\r\n\t */\r\n\tthis.maxZoom_ = options['maxZoom'] || null;\r\n\r\n\tthis.styles_ = options['styles'] || [];\r\n\r\n\t/**\r\n\t * @type {string}\r\n\t * @private\r\n\t */\r\n\tthis.imagePath_ = options['imagePath'] ||\r\n\t\tthis.MARKER_CLUSTER_IMAGE_PATH_;\r\n\r\n\t/**\r\n\t * @type {string}\r\n\t * @private\r\n\t */\r\n\tthis.imageExtension_ = options['imageExtension'] ||\r\n\t\tthis.MARKER_CLUSTER_IMAGE_EXTENSION_;\r\n\r\n\t/**\r\n\t * @type {boolean}\r\n\t * @private\r\n\t */\r\n\tthis.zoomOnClick_ = true;\r\n\r\n\tif (options['zoomOnClick'] != undefined) {\r\n\t\tthis.zoomOnClick_ = options['zoomOnClick'];\r\n\t}\r\n\r\n\t/**\r\n\t * @type {boolean}\r\n\t * @private\r\n\t */\r\n\tthis.averageCenter_ = false;\r\n\r\n\tif (options['averageCenter'] != undefined) {\r\n\t\tthis.averageCenter_ = options['averageCenter'];\r\n\t}\r\n\r\n\tthis.setupStyles_();\r\n\r\n\tthis.setMap(map);\r\n\r\n\t/**\r\n\t * @type {number}\r\n\t * @private\r\n\t */\r\n\tthis.prevZoom_ = this.map_.getZoom();\r\n\r\n\t// Add the map event listeners\r\n\tvar that = this;\r\n\tgoogle.maps.event.addListener(this.map_, 'zoom_changed', function () {\r\n\t\t// Determines map type and prevent illegal zoom levels\r\n\t\tvar zoom = that.map_.getZoom();\r\n\t\tvar minZoom = that.map_.minZoom || 0;\r\n\t\tvar maxZoom = Math.min(that.map_.maxZoom || 100,\r\n\t\t\t\t\t\t\t that.map_.mapTypes[that.map_.getMapTypeId()].maxZoom);\r\n\t\tzoom = Math.min(Math.max(zoom, minZoom), maxZoom);\r\n\r\n\t\tif (that.prevZoom_ != zoom) {\r\n\t\t\tthat.prevZoom_ = zoom;\r\n\t\t\tthat.resetViewport();\r\n\t\t}\r\n\t});\r\n\r\n\tgoogle.maps.event.addListener(this.map_, 'idle', function () {\r\n\t\tthat.redraw();\r\n\t});\r\n\r\n\t// Finally, add the markers\r\n\tif (opt_markers && (opt_markers.length || Object.keys(opt_markers).length)) {\r\n\t\tthis.addMarkers(opt_markers, false);\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * The marker cluster image path.\r\n *\r\n * @type {string}\r\n * @private\r\n */\r\nMarkerClusterer.prototype.MARKER_CLUSTER_IMAGE_PATH_ = '../images/m';\r\n\r\n\r\n/**\r\n * The marker cluster image path.\r\n *\r\n * @type {string}\r\n * @private\r\n */\r\nMarkerClusterer.prototype.MARKER_CLUSTER_IMAGE_EXTENSION_ = 'png';\r\n\r\n\r\n/**\r\n * Extends a objects prototype by anothers.\r\n *\r\n * @param {Object} obj1 The object to be extended.\r\n * @param {Object} obj2 The object to extend with.\r\n * @return {Object} The new extended object.\r\n * @ignore\r\n */\r\nMarkerClusterer.prototype.extend = function (obj1, obj2) {\r\n\treturn (function (object) {\r\n\t\tfor (var property in object.prototype) {\r\n\t\t\tthis.prototype[property] = object.prototype[property];\r\n\t\t}\r\n\t\treturn this;\r\n\t}).apply(obj1, [obj2]);\r\n};\r\n\r\n\r\n/**\r\n * Implementaion of the interface method.\r\n * @ignore\r\n */\r\nMarkerClusterer.prototype.onAdd = function () {\r\n\tthis.setReady_(true);\r\n};\r\n\r\n/**\r\n * Implementaion of the interface method.\r\n * @ignore\r\n */\r\nMarkerClusterer.prototype.draw = function () { };\r\n\r\n/**\r\n * Sets up the styles object.\r\n *\r\n * @private\r\n */\r\nMarkerClusterer.prototype.setupStyles_ = function () {\r\n\tif (this.styles_.length) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tfor (var i = 0, size; size = this.sizes[i]; i++) {\r\n\t\tthis.styles_.push({\r\n\t\t\turl: this.imagePath_ + (i + 1) + '.' + this.imageExtension_,\r\n\t\t\theight: size,\r\n\t\t\twidth: size\r\n\t\t});\r\n\t}\r\n};\r\n\r\n/**\r\n * Fit the map to the bounds of the markers in the clusterer.\r\n */\r\nMarkerClusterer.prototype.fitMapToMarkers = function () {\r\n\tvar markers = this.getMarkers();\r\n\tvar bounds = new google.maps.LatLngBounds();\r\n\tfor (var i = 0, marker; marker = markers[i]; i++) {\r\n\t\tbounds.extend(marker.getPosition());\r\n\t}\r\n\r\n\tthis.map_.fitBounds(bounds);\r\n};\r\n\r\n\r\n/**\r\n * Sets the styles.\r\n *\r\n * @param {Object} styles The style to set.\r\n */\r\nMarkerClusterer.prototype.setStyles = function (styles) {\r\n\tthis.styles_ = styles;\r\n};\r\n\r\n\r\n/**\r\n * Gets the styles.\r\n *\r\n * @return {Object} The styles object.\r\n */\r\nMarkerClusterer.prototype.getStyles = function () {\r\n\treturn this.styles_;\r\n};\r\n\r\n\r\n/**\r\n * Whether zoom on click is set.\r\n *\r\n * @return {boolean} True if zoomOnClick_ is set.\r\n */\r\nMarkerClusterer.prototype.isZoomOnClick = function () {\r\n\treturn this.zoomOnClick_;\r\n};\r\n\r\n/**\r\n * Whether average center is set.\r\n *\r\n * @return {boolean} True if averageCenter_ is set.\r\n */\r\nMarkerClusterer.prototype.isAverageCenter = function () {\r\n\treturn this.averageCenter_;\r\n};\r\n\r\n\r\n/**\r\n * Returns the array of markers in the clusterer.\r\n *\r\n * @return {Array.} The markers.\r\n */\r\nMarkerClusterer.prototype.getMarkers = function () {\r\n\treturn this.markers_;\r\n};\r\n\r\n\r\n/**\r\n * Returns the number of markers in the clusterer\r\n *\r\n * @return {Number} The number of markers.\r\n */\r\nMarkerClusterer.prototype.getTotalMarkers = function () {\r\n\treturn this.markers_.length;\r\n};\r\n\r\n\r\n/**\r\n * Sets the max zoom for the clusterer.\r\n *\r\n * @param {number} maxZoom The max zoom level.\r\n */\r\nMarkerClusterer.prototype.setMaxZoom = function (maxZoom) {\r\n\tthis.maxZoom_ = maxZoom;\r\n};\r\n\r\n\r\n/**\r\n * Gets the max zoom for the clusterer.\r\n *\r\n * @return {number} The max zoom level.\r\n */\r\nMarkerClusterer.prototype.getMaxZoom = function () {\r\n\treturn this.maxZoom_;\r\n};\r\n\r\n\r\n/**\r\n * The function for calculating the cluster icon image.\r\n *\r\n * @param {Array.} markers The markers in the clusterer.\r\n * @param {number} numStyles The number of styles available.\r\n * @return {Object} A object properties: 'text' (string) and 'index' (number).\r\n * @private\r\n */\r\nMarkerClusterer.prototype.calculator_ = function (markers, numStyles) {\r\n\tvar index = 0;\r\n\tvar count = markers.length;\r\n\tvar dv = count;\r\n\twhile (dv !== 0) {\r\n\t\tdv = parseInt(dv / 10, 10);\r\n\t\tindex++;\r\n\t}\r\n\r\n\tindex = Math.min(index, numStyles);\r\n\treturn {\r\n\t\ttext: count,\r\n\t\tindex: index\r\n\t};\r\n};\r\n\r\n\r\n/**\r\n * Set the calculator function.\r\n *\r\n * @param {function(Array, number)} calculator The function to set as the\r\n * calculator. The function should return a object properties:\r\n * 'text' (string) and 'index' (number).\r\n *\r\n */\r\nMarkerClusterer.prototype.setCalculator = function (calculator) {\r\n\tthis.calculator_ = calculator;\r\n};\r\n\r\n\r\n/**\r\n * Get the calculator function.\r\n *\r\n * @return {function(Array, number)} the calculator function.\r\n */\r\nMarkerClusterer.prototype.getCalculator = function () {\r\n\treturn this.calculator_;\r\n};\r\n\r\n\r\n/**\r\n * Add an array of markers to the clusterer.\r\n *\r\n * @param {Array.} markers The markers to add.\r\n * @param {boolean=} opt_nodraw Whether to redraw the clusters.\r\n */\r\nMarkerClusterer.prototype.addMarkers = function (markers, opt_nodraw) {\r\n\tif (markers.length) {\r\n\t\tfor (var i = 0, marker; marker = markers[i]; i++) {\r\n\t\t\tthis.pushMarkerTo_(marker);\r\n\t\t}\r\n\t} else if (Object.keys(markers).length) {\r\n\t\tfor (var marker in markers) {\r\n\t\t\tthis.pushMarkerTo_(markers[marker]);\r\n\t\t}\r\n\t}\r\n\tif (!opt_nodraw) {\r\n\t\tthis.redraw();\r\n\t}\r\n};\r\n\r\n\r\n/**\r\n * Pushes a marker to the clusterer.\r\n *\r\n * @param {google.maps.Marker} marker The marker to add.\r\n * @private\r\n */\r\nMarkerClusterer.prototype.pushMarkerTo_ = function (marker) {\r\n\tmarker.isAdded = false;\r\n\tif (marker['draggable']) {\r\n\t\t// If the marker is draggable add a listener so we update the clusters on\r\n\t\t// the drag end.\r\n\t\tvar that = this;\r\n\t\tgoogle.maps.event.addListener(marker, 'dragend', function () {\r\n\t\t\tmarker.isAdded = false;\r\n\t\t\tthat.repaint();\r\n\t\t});\r\n\t}\r\n\tthis.markers_.push(marker);\r\n};\r\n\r\n\r\n/**\r\n * Adds a marker to the clusterer and redraws if needed.\r\n *\r\n * @param {google.maps.Marker} marker The marker to add.\r\n * @param {boolean=} opt_nodraw Whether to redraw the clusters.\r\n */\r\nMarkerClusterer.prototype.addMarker = function (marker, opt_nodraw) {\r\n\tthis.pushMarkerTo_(marker);\r\n\tif (!opt_nodraw) {\r\n\t\tthis.redraw();\r\n\t}\r\n};\r\n\r\n\r\n/**\r\n * Removes a marker and returns true if removed, false if not\r\n *\r\n * @param {google.maps.Marker} marker The marker to remove\r\n * @return {boolean} Whether the marker was removed or not\r\n * @private\r\n */\r\nMarkerClusterer.prototype.removeMarker_ = function (marker) {\r\n\tvar index = -1;\r\n\tif (this.markers_.indexOf) {\r\n\t\tindex = this.markers_.indexOf(marker);\r\n\t} else {\r\n\t\tfor (var i = 0, m; m = this.markers_[i]; i++) {\r\n\t\t\tif (m == marker) {\r\n\t\t\t\tindex = i;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (index == -1) {\r\n\t\t// Marker is not in our list of markers.\r\n\t\treturn false;\r\n\t}\r\n\r\n\tmarker.setMap(null);\r\n\r\n\tthis.markers_.splice(index, 1);\r\n\r\n\treturn true;\r\n};\r\n\r\n\r\n/**\r\n * Remove a marker from the cluster.\r\n *\r\n * @param {google.maps.Marker} marker The marker to remove.\r\n * @param {boolean=} opt_nodraw Optional boolean to force no redraw.\r\n * @return {boolean} True if the marker was removed.\r\n */\r\nMarkerClusterer.prototype.removeMarker = function (marker, opt_nodraw) {\r\n\tvar removed = this.removeMarker_(marker);\r\n\r\n\tif (!opt_nodraw && removed) {\r\n\t\tthis.resetViewport();\r\n\t\tthis.redraw();\r\n\t\treturn true;\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n};\r\n\r\n\r\n/**\r\n * Removes an array of markers from the cluster.\r\n *\r\n * @param {Array.} markers The markers to remove.\r\n * @param {boolean=} opt_nodraw Optional boolean to force no redraw.\r\n */\r\nMarkerClusterer.prototype.removeMarkers = function (markers, opt_nodraw) {\r\n\tvar removed = false;\r\n\r\n\tfor (var i = 0, marker; marker = markers[i]; i++) {\r\n\t\tvar r = this.removeMarker_(marker);\r\n\t\tremoved = removed || r;\r\n\t}\r\n\r\n\tif (!opt_nodraw && removed) {\r\n\t\tthis.resetViewport();\r\n\t\tthis.redraw();\r\n\t\treturn true;\r\n\t}\r\n};\r\n\r\n\r\n/**\r\n * Sets the clusterer's ready state.\r\n *\r\n * @param {boolean} ready The state.\r\n * @private\r\n */\r\nMarkerClusterer.prototype.setReady_ = function (ready) {\r\n\tif (!this.ready_) {\r\n\t\tthis.ready_ = ready;\r\n\t\tthis.createClusters_();\r\n\t}\r\n};\r\n\r\n\r\n/**\r\n * Returns the number of clusters in the clusterer.\r\n *\r\n * @return {number} The number of clusters.\r\n */\r\nMarkerClusterer.prototype.getTotalClusters = function () {\r\n\treturn this.clusters_.length;\r\n};\r\n\r\n\r\n/**\r\n * Returns the google map that the clusterer is associated with.\r\n *\r\n * @return {google.maps.Map} The map.\r\n */\r\nMarkerClusterer.prototype.getMap = function () {\r\n\treturn this.map_;\r\n};\r\n\r\n\r\n/**\r\n * Sets the google map that the clusterer is associated with.\r\n *\r\n * @param {google.maps.Map} map The map.\r\n */\r\nMarkerClusterer.prototype.setMap = function (map) {\r\n\tthis.map_ = map;\r\n};\r\n\r\n\r\n/**\r\n * Returns the size of the grid.\r\n *\r\n * @return {number} The grid size.\r\n */\r\nMarkerClusterer.prototype.getGridSize = function () {\r\n\treturn this.gridSize_;\r\n};\r\n\r\n\r\n/**\r\n * Sets the size of the grid.\r\n *\r\n * @param {number} size The grid size.\r\n */\r\nMarkerClusterer.prototype.setGridSize = function (size) {\r\n\tthis.gridSize_ = size;\r\n};\r\n\r\n\r\n/**\r\n * Returns the min cluster size.\r\n *\r\n * @return {number} The grid size.\r\n */\r\nMarkerClusterer.prototype.getMinClusterSize = function () {\r\n\treturn this.minClusterSize_;\r\n};\r\n\r\n/**\r\n * Sets the min cluster size.\r\n *\r\n * @param {number} size The grid size.\r\n */\r\nMarkerClusterer.prototype.setMinClusterSize = function (size) {\r\n\tthis.minClusterSize_ = size;\r\n};\r\n\r\n\r\n/**\r\n * Extends a bounds object by the grid size.\r\n *\r\n * @param {google.maps.LatLngBounds} bounds The bounds to extend.\r\n * @return {google.maps.LatLngBounds} The extended bounds.\r\n */\r\nMarkerClusterer.prototype.getExtendedBounds = function (bounds) {\r\n\tvar projection = this.getProjection();\r\n\r\n\t// Turn the bounds into latlng.\r\n\tvar tr = new google.maps.LatLng(bounds.getNorthEast().lat(),\r\n\t\tbounds.getNorthEast().lng());\r\n\tvar bl = new google.maps.LatLng(bounds.getSouthWest().lat(),\r\n\t\tbounds.getSouthWest().lng());\r\n\r\n\t// Convert the points to pixels and the extend out by the grid size.\r\n\tvar trPix = projection.fromLatLngToDivPixel(tr);\r\n\ttrPix.x += this.gridSize_;\r\n\ttrPix.y -= this.gridSize_;\r\n\r\n\tvar blPix = projection.fromLatLngToDivPixel(bl);\r\n\tblPix.x -= this.gridSize_;\r\n\tblPix.y += this.gridSize_;\r\n\r\n\t// Convert the pixel points back to LatLng\r\n\tvar ne = projection.fromDivPixelToLatLng(trPix);\r\n\tvar sw = projection.fromDivPixelToLatLng(blPix);\r\n\r\n\t// Extend the bounds to contain the new bounds.\r\n\tbounds.extend(ne);\r\n\tbounds.extend(sw);\r\n\r\n\treturn bounds;\r\n};\r\n\r\n\r\n/**\r\n * Determins if a marker is contained in a bounds.\r\n *\r\n * @param {google.maps.Marker} marker The marker to check.\r\n * @param {google.maps.LatLngBounds} bounds The bounds to check against.\r\n * @return {boolean} True if the marker is in the bounds.\r\n * @private\r\n */\r\nMarkerClusterer.prototype.isMarkerInBounds_ = function (marker, bounds) {\r\n\treturn bounds.contains(marker.getPosition());\r\n};\r\n\r\n\r\n/**\r\n * Clears all clusters and markers from the clusterer.\r\n */\r\nMarkerClusterer.prototype.clearMarkers = function () {\r\n\tthis.resetViewport(true);\r\n\r\n\t// Set the markers a empty array.\r\n\tthis.markers_ = [];\r\n};\r\n\r\n\r\n/**\r\n * Clears all existing clusters and recreates them.\r\n * @param {boolean} opt_hide To also hide the marker.\r\n */\r\nMarkerClusterer.prototype.resetViewport = function (opt_hide) {\r\n\t// Remove all the clusters\r\n\tfor (var i = 0, cluster; cluster = this.clusters_[i]; i++) {\r\n\t\tcluster.remove();\r\n\t}\r\n\r\n\t// Reset the markers to not be added and to be invisible.\r\n\tfor (var i = 0, marker; marker = this.markers_[i]; i++) {\r\n\t\tmarker.isAdded = false;\r\n\t\tif (opt_hide) {\r\n\t\t\tmarker.setMap(null);\r\n\t\t}\r\n\t}\r\n\r\n\tthis.clusters_ = [];\r\n};\r\n\r\n/**\r\n *\r\n */\r\nMarkerClusterer.prototype.repaint = function () {\r\n\tvar oldClusters = this.clusters_.slice();\r\n\tthis.clusters_.length = 0;\r\n\tthis.resetViewport();\r\n\tthis.redraw();\r\n\r\n\t// Remove the old clusters.\r\n\t// Do it in a timeout so the other clusters have been drawn first.\r\n\twindow.setTimeout(function () {\r\n\t\tfor (var i = 0, cluster; cluster = oldClusters[i]; i++) {\r\n\t\t\tcluster.remove();\r\n\t\t}\r\n\t}, 0);\r\n};\r\n\r\n\r\n/**\r\n * Redraws the clusters.\r\n */\r\nMarkerClusterer.prototype.redraw = function () {\r\n\tthis.createClusters_();\r\n};\r\n\r\n\r\n/**\r\n * Calculates the distance between two latlng locations in km.\r\n * @see http://www.movable-type.co.uk/scripts/latlong.html\r\n *\r\n * @param {google.maps.LatLng} p1 The first lat lng point.\r\n * @param {google.maps.LatLng} p2 The second lat lng point.\r\n * @return {number} The distance between the two points in km.\r\n * @private\r\n*/\r\nMarkerClusterer.prototype.distanceBetweenPoints_ = function (p1, p2) {\r\n\tif (!p1 || !p2) {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tvar R = 6371; // Radius of the Earth in km\r\n\tvar dLat = (p2.lat() - p1.lat()) * Math.PI / 180;\r\n\tvar dLon = (p2.lng() - p1.lng()) * Math.PI / 180;\r\n\tvar a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +\r\n\t Math.cos(p1.lat() * Math.PI / 180) * Math.cos(p2.lat() * Math.PI / 180) *\r\n\t Math.sin(dLon / 2) * Math.sin(dLon / 2);\r\n\tvar c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\r\n\tvar d = R * c;\r\n\treturn d;\r\n};\r\n\r\n\r\n/**\r\n * Add a marker to a cluster, or creates a new cluster.\r\n *\r\n * @param {google.maps.Marker} marker The marker to add.\r\n * @private\r\n */\r\nMarkerClusterer.prototype.addToClosestCluster_ = function (marker) {\r\n\tvar distance = 40000; // Some large number\r\n\tvar clusterToAddTo = null;\r\n\tvar pos = marker.getPosition();\r\n\tfor (var i = 0, cluster; cluster = this.clusters_[i]; i++) {\r\n\t\tvar center = cluster.getCenter();\r\n\t\tif (center) {\r\n\t\t\tvar d = this.distanceBetweenPoints_(center, marker.getPosition());\r\n\t\t\tif (d < distance) {\r\n\t\t\t\tdistance = d;\r\n\t\t\t\tclusterToAddTo = cluster;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (clusterToAddTo && clusterToAddTo.isMarkerInClusterBounds(marker)) {\r\n\t\tclusterToAddTo.addMarker(marker);\r\n\t} else {\r\n\t\tvar cluster = new Cluster(this);\r\n\t\tcluster.addMarker(marker);\r\n\t\tthis.clusters_.push(cluster);\r\n\t}\r\n};\r\n\r\n\r\n/**\r\n * Creates the clusters.\r\n *\r\n * @private\r\n */\r\nMarkerClusterer.prototype.createClusters_ = function () {\r\n\tif (!this.ready_) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// Get our current map view bounds.\r\n\t// Create a new bounds object so we don't affect the map.\r\n\tvar mapBounds = new google.maps.LatLngBounds(this.map_.getBounds().getSouthWest(),\r\n\t\tthis.map_.getBounds().getNorthEast());\r\n\tvar bounds = this.getExtendedBounds(mapBounds);\r\n\r\n\tfor (var i = 0, marker; marker = this.markers_[i]; i++) {\r\n\t\tif (!marker.isAdded && this.isMarkerInBounds_(marker, bounds)) {\r\n\t\t\tthis.addToClosestCluster_(marker);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n\r\n/**\r\n * A cluster that contains markers.\r\n *\r\n * @param {MarkerClusterer} markerClusterer The markerclusterer that this\r\n * cluster is associated with.\r\n * @constructor\r\n * @ignore\r\n */\r\nfunction Cluster(markerClusterer) {\r\n\tthis.markerClusterer_ = markerClusterer;\r\n\tthis.map_ = markerClusterer.getMap();\r\n\tthis.gridSize_ = markerClusterer.getGridSize();\r\n\tthis.minClusterSize_ = markerClusterer.getMinClusterSize();\r\n\tthis.averageCenter_ = markerClusterer.isAverageCenter();\r\n\tthis.center_ = null;\r\n\tthis.markers_ = [];\r\n\tthis.bounds_ = null;\r\n\tthis.clusterIcon_ = new ClusterIcon(this, markerClusterer.getStyles(),\r\n\t\tmarkerClusterer.getGridSize());\r\n}\r\n\r\n/**\r\n * Determins if a marker is already added to the cluster.\r\n *\r\n * @param {google.maps.Marker} marker The marker to check.\r\n * @return {boolean} True if the marker is already added.\r\n */\r\nCluster.prototype.isMarkerAlreadyAdded = function (marker) {\r\n\tif (this.markers_.indexOf) {\r\n\t\treturn this.markers_.indexOf(marker) != -1;\r\n\t} else {\r\n\t\tfor (var i = 0, m; m = this.markers_[i]; i++) {\r\n\t\t\tif (m == marker) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn false;\r\n};\r\n\r\n\r\n/**\r\n * Add a marker the cluster.\r\n *\r\n * @param {google.maps.Marker} marker The marker to add.\r\n * @return {boolean} True if the marker was added.\r\n */\r\nCluster.prototype.addMarker = function (marker) {\r\n\tif (this.isMarkerAlreadyAdded(marker)) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tif (!this.center_) {\r\n\t\tthis.center_ = marker.getPosition();\r\n\t\tthis.calculateBounds_();\r\n\t} else {\r\n\t\tif (this.averageCenter_) {\r\n\t\t\tvar l = this.markers_.length + 1;\r\n\t\t\tvar lat = (this.center_.lat() * (l - 1) + marker.getPosition().lat()) / l;\r\n\t\t\tvar lng = (this.center_.lng() * (l - 1) + marker.getPosition().lng()) / l;\r\n\t\t\tthis.center_ = new google.maps.LatLng(lat, lng);\r\n\t\t\tthis.calculateBounds_();\r\n\t\t}\r\n\t}\r\n\r\n\tmarker.isAdded = true;\r\n\tthis.markers_.push(marker);\r\n\r\n\tvar len = this.markers_.length;\r\n\tif (len < this.minClusterSize_ && marker.getMap() != this.map_) {\r\n\t\t// Min cluster size not reached so show the marker.\r\n\t\tmarker.setMap(this.map_);\r\n\t}\r\n\r\n\tif (len == this.minClusterSize_) {\r\n\t\t// Hide the markers that were showing.\r\n\t\tfor (var i = 0; i < len; i++) {\r\n\t\t\tthis.markers_[i].setMap(null);\r\n\t\t}\r\n\t}\r\n\r\n\tif (len >= this.minClusterSize_) {\r\n\t\tmarker.setMap(null);\r\n\t}\r\n\r\n\tthis.updateIcon();\r\n\treturn true;\r\n};\r\n\r\n\r\n/**\r\n * Returns the marker clusterer that the cluster is associated with.\r\n *\r\n * @return {MarkerClusterer} The associated marker clusterer.\r\n */\r\nCluster.prototype.getMarkerClusterer = function () {\r\n\treturn this.markerClusterer_;\r\n};\r\n\r\n\r\n/**\r\n * Returns the bounds of the cluster.\r\n *\r\n * @return {google.maps.LatLngBounds} the cluster bounds.\r\n */\r\nCluster.prototype.getBounds = function () {\r\n\tvar bounds = new google.maps.LatLngBounds(this.center_, this.center_);\r\n\tvar markers = this.getMarkers();\r\n\tfor (var i = 0, marker; marker = markers[i]; i++) {\r\n\t\tbounds.extend(marker.getPosition());\r\n\t}\r\n\treturn bounds;\r\n};\r\n\r\n\r\n/**\r\n * Removes the cluster\r\n */\r\nCluster.prototype.remove = function () {\r\n\tthis.clusterIcon_.remove();\r\n\tthis.markers_.length = 0;\r\n\tdelete this.markers_;\r\n};\r\n\r\n\r\n/**\r\n * Returns the center of the cluster.\r\n *\r\n * @return {number} The cluster center.\r\n */\r\nCluster.prototype.getSize = function () {\r\n\treturn this.markers_.length;\r\n};\r\n\r\n\r\n/**\r\n * Returns the center of the cluster.\r\n *\r\n * @return {Array.} The cluster center.\r\n */\r\nCluster.prototype.getMarkers = function () {\r\n\treturn this.markers_;\r\n};\r\n\r\n\r\n/**\r\n * Returns the center of the cluster.\r\n *\r\n * @return {google.maps.LatLng} The cluster center.\r\n */\r\nCluster.prototype.getCenter = function () {\r\n\treturn this.center_;\r\n};\r\n\r\n\r\n/**\r\n * Calculated the extended bounds of the cluster with the grid.\r\n *\r\n * @private\r\n */\r\nCluster.prototype.calculateBounds_ = function () {\r\n\tvar bounds = new google.maps.LatLngBounds(this.center_, this.center_);\r\n\tthis.bounds_ = this.markerClusterer_.getExtendedBounds(bounds);\r\n};\r\n\r\n\r\n/**\r\n * Determines if a marker lies in the clusters bounds.\r\n *\r\n * @param {google.maps.Marker} marker The marker to check.\r\n * @return {boolean} True if the marker lies in the bounds.\r\n */\r\nCluster.prototype.isMarkerInClusterBounds = function (marker) {\r\n\treturn this.bounds_.contains(marker.getPosition());\r\n};\r\n\r\n\r\n/**\r\n * Returns the map that the cluster is associated with.\r\n *\r\n * @return {google.maps.Map} The map.\r\n */\r\nCluster.prototype.getMap = function () {\r\n\treturn this.map_;\r\n};\r\n\r\n\r\n/**\r\n * Updates the cluster icon\r\n */\r\nCluster.prototype.updateIcon = function () {\r\n\tvar zoom = this.map_.getZoom();\r\n\tvar mz = this.markerClusterer_.getMaxZoom();\r\n\r\n\tif (mz && zoom > mz) {\r\n\t\t// The zoom is greater than our max zoom so show all the markers in cluster.\r\n\t\tfor (var i = 0, marker; marker = this.markers_[i]; i++) {\r\n\t\t\tmarker.setMap(this.map_);\r\n\t\t}\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (this.markers_.length < this.minClusterSize_) {\r\n\t\t// Min cluster size not yet reached.\r\n\t\tthis.clusterIcon_.hide();\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar numStyles = this.markerClusterer_.getStyles().length;\r\n\tvar sums = this.markerClusterer_.getCalculator()(this.markers_, numStyles);\r\n\tthis.clusterIcon_.setCenter(this.center_);\r\n\tthis.clusterIcon_.setSums(sums);\r\n\tthis.clusterIcon_.show();\r\n};\r\n\r\n\r\n/**\r\n * A cluster icon\r\n *\r\n * @param {Cluster} cluster The cluster to be associated with.\r\n * @param {Object} styles An object that has style properties:\r\n * 'url': (string) The image url.\r\n * 'height': (number) The image height.\r\n * 'width': (number) The image width.\r\n * 'anchor': (Array) The anchor position of the label text.\r\n * 'textColor': (string) The text color.\r\n * 'textSize': (number) The text size.\r\n * 'backgroundPosition: (string) The background postition x, y.\r\n * @param {number=} opt_padding Optional padding to apply to the cluster icon.\r\n * @constructor\r\n * @extends google.maps.OverlayView\r\n * @ignore\r\n */\r\nfunction ClusterIcon(cluster, styles, opt_padding) {\r\n\tcluster.getMarkerClusterer().extend(ClusterIcon, google.maps.OverlayView);\r\n\r\n\tthis.styles_ = styles;\r\n\tthis.padding_ = opt_padding || 0;\r\n\tthis.cluster_ = cluster;\r\n\tthis.center_ = null;\r\n\tthis.map_ = cluster.getMap();\r\n\tthis.div_ = null;\r\n\tthis.sums_ = null;\r\n\tthis.visible_ = false;\r\n\r\n\tthis.setMap(this.map_);\r\n}\r\n\r\n\r\n/**\r\n * Triggers the clusterclick event and zoom's if the option is set.\r\n */\r\nClusterIcon.prototype.triggerClusterClick = function () {\r\n\tvar markerClusterer = this.cluster_.getMarkerClusterer();\r\n\r\n\t// Trigger the clusterclick event.\r\n\tgoogle.maps.event.trigger(markerClusterer, 'clusterclick', this.cluster_);\r\n\r\n\tif (markerClusterer.isZoomOnClick()) {\r\n\t\t// Zoom into the cluster.\r\n\t\tthis.map_.fitBounds(this.cluster_.getBounds());\r\n\t}\r\n};\r\n\r\n\r\n/**\r\n * Adding the cluster icon to the dom.\r\n * @ignore\r\n */\r\nClusterIcon.prototype.onAdd = function () {\r\n\tthis.div_ = document.createElement('DIV');\r\n\tif (this.visible_) {\r\n\t\tvar pos = this.getPosFromLatLng_(this.center_);\r\n\t\tthis.div_.style.cssText = this.createCss(pos);\r\n\t\tthis.div_.innerHTML = this.sums_.text;\r\n\t}\r\n\r\n\tvar panes = this.getPanes();\r\n\tpanes.overlayMouseTarget.appendChild(this.div_);\r\n\r\n\tvar that = this;\r\n\tgoogle.maps.event.addDomListener(this.div_, 'click', function () {\r\n\t\tthat.triggerClusterClick();\r\n\t});\r\n};\r\n\r\n\r\n/**\r\n * Returns the position to place the div dending on the latlng.\r\n *\r\n * @param {google.maps.LatLng} latlng The position in latlng.\r\n * @return {google.maps.Point} The position in pixels.\r\n * @private\r\n */\r\nClusterIcon.prototype.getPosFromLatLng_ = function (latlng) {\r\n\tvar pos = this.getProjection().fromLatLngToDivPixel(latlng);\r\n\tpos.x -= parseInt(this.width_ / 2, 10);\r\n\tpos.y -= parseInt(this.height_ / 2, 10);\r\n\treturn pos;\r\n};\r\n\r\n\r\n/**\r\n * Draw the icon.\r\n * @ignore\r\n */\r\nClusterIcon.prototype.draw = function () {\r\n\tif (this.visible_) {\r\n\t\tvar pos = this.getPosFromLatLng_(this.center_);\r\n\t\tthis.div_.style.top = pos.y + 'px';\r\n\t\tthis.div_.style.left = pos.x + 'px';\r\n\t}\r\n};\r\n\r\n\r\n/**\r\n * Hide the icon.\r\n */\r\nClusterIcon.prototype.hide = function () {\r\n\tif (this.div_) {\r\n\t\tthis.div_.style.display = 'none';\r\n\t}\r\n\tthis.visible_ = false;\r\n};\r\n\r\n\r\n/**\r\n * Position and show the icon.\r\n */\r\nClusterIcon.prototype.show = function () {\r\n\tif (this.div_) {\r\n\t\tvar pos = this.getPosFromLatLng_(this.center_);\r\n\t\tthis.div_.style.cssText = this.createCss(pos);\r\n\t\tthis.div_.style.display = '';\r\n\t}\r\n\tthis.visible_ = true;\r\n};\r\n\r\n\r\n/**\r\n * Remove the icon from the map\r\n */\r\nClusterIcon.prototype.remove = function () {\r\n\tthis.setMap(null);\r\n};\r\n\r\n\r\n/**\r\n * Implementation of the onRemove interface.\r\n * @ignore\r\n */\r\nClusterIcon.prototype.onRemove = function () {\r\n\tif (this.div_ && this.div_.parentNode) {\r\n\t\tthis.hide();\r\n\t\tthis.div_.parentNode.removeChild(this.div_);\r\n\t\tthis.div_ = null;\r\n\t}\r\n};\r\n\r\n\r\n/**\r\n * Set the sums of the icon.\r\n *\r\n * @param {Object} sums The sums containing:\r\n * 'text': (string) The text to display in the icon.\r\n * 'index': (number) The style index of the icon.\r\n */\r\nClusterIcon.prototype.setSums = function (sums) {\r\n\tthis.sums_ = sums;\r\n\tthis.text_ = sums.text;\r\n\tthis.index_ = sums.index;\r\n\tif (this.div_) {\r\n\t\tthis.div_.innerHTML = sums.text;\r\n\t}\r\n\r\n\tthis.useStyle();\r\n};\r\n\r\n\r\n/**\r\n * Sets the icon to the the styles.\r\n */\r\nClusterIcon.prototype.useStyle = function () {\r\n\tvar index = Math.max(0, this.sums_.index - 1);\r\n\tindex = Math.min(this.styles_.length - 1, index);\r\n\tvar style = this.styles_[index];\r\n\tthis.url_ = style['url'];\r\n\tthis.height_ = style['height'];\r\n\tthis.width_ = style['width'];\r\n\tthis.textColor_ = style['textColor'];\r\n\tthis.anchor_ = style['anchor'];\r\n\tthis.textSize_ = style['textSize'];\r\n\tthis.backgroundPosition_ = style['backgroundPosition'];\r\n};\r\n\r\n\r\n/**\r\n * Sets the center of the icon.\r\n *\r\n * @param {google.maps.LatLng} center The latlng to set as the center.\r\n */\r\nClusterIcon.prototype.setCenter = function (center) {\r\n\tthis.center_ = center;\r\n};\r\n\r\n\r\n/**\r\n * Create the css text based on the position of the icon.\r\n *\r\n * @param {google.maps.Point} pos The position.\r\n * @return {string} The css style text.\r\n */\r\nClusterIcon.prototype.createCss = function (pos) {\r\n\tvar style = [];\r\n\tstyle.push('background-image:url(' + this.url_ + ');');\r\n\tvar backgroundPosition = this.backgroundPosition_ ? this.backgroundPosition_ : '0 0';\r\n\tstyle.push('background-position:' + backgroundPosition + ';');\r\n\r\n\tif (typeof this.anchor_ === 'object') {\r\n\t\tif (typeof this.anchor_[0] === 'number' && this.anchor_[0] > 0 &&\r\n\t\t\tthis.anchor_[0] < this.height_) {\r\n\t\t\tstyle.push('height:' + (this.height_ - this.anchor_[0]) +\r\n\t\t\t\t'px; padding-top:' + this.anchor_[0] + 'px;');\r\n\t\t} else {\r\n\t\t\tstyle.push('height:' + this.height_ + 'px; line-height:' + this.height_ +\r\n\t\t\t\t'px;');\r\n\t\t}\r\n\t\tif (typeof this.anchor_[1] === 'number' && this.anchor_[1] > 0 &&\r\n\t\t\tthis.anchor_[1] < this.width_) {\r\n\t\t\tstyle.push('width:' + (this.width_ - this.anchor_[1]) +\r\n\t\t\t\t'px; padding-left:' + this.anchor_[1] + 'px;');\r\n\t\t} else {\r\n\t\t\tstyle.push('width:' + this.width_ + 'px; text-align:center;');\r\n\t\t}\r\n\t} else {\r\n\t\tstyle.push('height:' + this.height_ + 'px; line-height:' +\r\n\t\t\tthis.height_ + 'px; width:' + this.width_ + 'px; text-align:center;');\r\n\t}\r\n\r\n\tvar txtColor = this.textColor_ ? this.textColor_ : 'black';\r\n\tvar txtSize = this.textSize_ ? this.textSize_ : 11;\r\n\r\n\tstyle.push('cursor:pointer; top:' + pos.y + 'px; left:' +\r\n\t\tpos.x + 'px; color:' + txtColor + '; position:absolute; font-size:' +\r\n\t\ttxtSize + 'px; font-family:Arial,sans-serif; font-weight:bold');\r\n\treturn style.join('');\r\n};\r\n\r\n\r\n// Export Symbols for Closure\r\n// If you are not going to compile with closure then you can remove the\r\n// code below.\r\nwindow['MarkerClusterer'] = MarkerClusterer;\r\nMarkerClusterer.prototype['addMarker'] = MarkerClusterer.prototype.addMarker;\r\nMarkerClusterer.prototype['addMarkers'] = MarkerClusterer.prototype.addMarkers;\r\nMarkerClusterer.prototype['clearMarkers'] =\r\n MarkerClusterer.prototype.clearMarkers;\r\nMarkerClusterer.prototype['fitMapToMarkers'] =\r\n MarkerClusterer.prototype.fitMapToMarkers;\r\nMarkerClusterer.prototype['getCalculator'] =\r\n MarkerClusterer.prototype.getCalculator;\r\nMarkerClusterer.prototype['getGridSize'] =\r\n MarkerClusterer.prototype.getGridSize;\r\nMarkerClusterer.prototype['getExtendedBounds'] =\r\n MarkerClusterer.prototype.getExtendedBounds;\r\nMarkerClusterer.prototype['getMap'] = MarkerClusterer.prototype.getMap;\r\nMarkerClusterer.prototype['getMarkers'] = MarkerClusterer.prototype.getMarkers;\r\nMarkerClusterer.prototype['getMaxZoom'] = MarkerClusterer.prototype.getMaxZoom;\r\nMarkerClusterer.prototype['getStyles'] = MarkerClusterer.prototype.getStyles;\r\nMarkerClusterer.prototype['getTotalClusters'] =\r\n MarkerClusterer.prototype.getTotalClusters;\r\nMarkerClusterer.prototype['getTotalMarkers'] =\r\n MarkerClusterer.prototype.getTotalMarkers;\r\nMarkerClusterer.prototype['redraw'] = MarkerClusterer.prototype.redraw;\r\nMarkerClusterer.prototype['removeMarker'] =\r\n MarkerClusterer.prototype.removeMarker;\r\nMarkerClusterer.prototype['removeMarkers'] =\r\n MarkerClusterer.prototype.removeMarkers;\r\nMarkerClusterer.prototype['resetViewport'] =\r\n MarkerClusterer.prototype.resetViewport;\r\nMarkerClusterer.prototype['repaint'] =\r\n MarkerClusterer.prototype.repaint;\r\nMarkerClusterer.prototype['setCalculator'] =\r\n MarkerClusterer.prototype.setCalculator;\r\nMarkerClusterer.prototype['setGridSize'] =\r\n MarkerClusterer.prototype.setGridSize;\r\nMarkerClusterer.prototype['setMaxZoom'] =\r\n MarkerClusterer.prototype.setMaxZoom;\r\nMarkerClusterer.prototype['onAdd'] = MarkerClusterer.prototype.onAdd;\r\nMarkerClusterer.prototype['draw'] = MarkerClusterer.prototype.draw;\r\n\r\nCluster.prototype['getCenter'] = Cluster.prototype.getCenter;\r\nCluster.prototype['getSize'] = Cluster.prototype.getSize;\r\nCluster.prototype['getMarkers'] = Cluster.prototype.getMarkers;\r\n\r\nClusterIcon.prototype['onAdd'] = ClusterIcon.prototype.onAdd;\r\nClusterIcon.prototype['draw'] = ClusterIcon.prototype.draw;\r\nClusterIcon.prototype['onRemove'] = ClusterIcon.prototype.onRemove;\r\n\r\nObject.keys = Object.keys || function (o) {\r\n\tvar result = [];\r\n\tfor (var name in o) {\r\n\t\tif (o.hasOwnProperty(name))\r\n\t\t\tresult.push(name);\r\n\t}\r\n\treturn result;\r\n};","var quote = function () {\r\n\t$(function () {\r\n\r\n\t\tvar originPlaceTemp = null;\r\n\t\tvar destinationPlaceTemp = null;\r\n\r\n\t\tif ($(\"#calculate-quote-form\").length > 0) {\r\n\r\n\t\t\t$(\"#calculate-quote-form\").validate({\r\n\t\t\t\tignore: \":disabled\",\r\n\t\t\t\tmessages: {\r\n\t\t\t\t\tOriginPlaceHomeHero: \"Start typing and select from list\",\r\n\t\t\t\t\tDestinationPlaceHomeHero: \"Start typing and select from list\",\r\n\t\t\t\t\tOriginPlace: \"Start typing and select from list\",\r\n\t\t\t\t\tDestinationPlace: \"Start typing and select from list\"\r\n\t\t\t\t},\r\n\t\t\t\tsubmitHandler: function () {\r\n\r\n\t\t\t\t\tvar formData = new FormData($(this)[0].currentForm);\r\n\t\t\t\t\tvar isMobileSafari = /iP(ad|hone|od).+Version\\/[\\d\\.]+.*Safari/i.test(navigator.userAgent);\r\n\r\n\t\t\t\t\tvar newTab = isMobileSafari ? window.quoteNewTab : null;\r\n\r\n\t\t\t\t\tif (isMobileSafari && newTab) {\r\n\t\t\t\t\t\tnewTab.close();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tnewTab = window.open(\"\", \"_getquote\");\r\n\r\n\t\t\t\t\tif (isMobileSafari)\r\n\t\t\t\t\t\twindow.quoteNewTab = newTab;\r\n\r\n\t\t\t\t\t$.ajax({\r\n\t\t\t\t\t\ttype: \"POST\",\r\n\t\t\t\t\t\turl: \"/umbraco/surface/calculatequote/calcquote\",\r\n\t\t\t\t\t\tdata: formData,\r\n\t\t\t\t\t\tcontentType: false,\r\n\t\t\t\t\t\tprocessData: false,\r\n\t\t\t\t\t\tsuccess: function (calculateQuoteUrl) {\r\n\t\t\t\t\t\t\tif (calculateQuoteUrl.length !== 0) {\r\n\t\t\t\t\t\t\t\tnewTab.location = calculateQuoteUrl;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$(\"#AddPackages\").val(\"false\");\r\n\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t},\r\n\t\t\t\thighlight: function (element) {\r\n\r\n\t\t\t\t\tif (element.id === \"HiddenOriginPlaceHomeHero\") {\r\n\t\t\t\t\t\t$($(this)[0].currentForm).find(\"#OriginPlaceHomeHero\").addClass(\"error\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (element.id === \"HiddenDestinationPlaceHomeHero\") {\r\n\t\t\t\t\t\t$($(this)[0].currentForm).find(\"#DestinationPlaceHomeHero\").addClass(\"error\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t$(element).parent().addClass(\"error\");\r\n\t\t\t\t\t$(element).addClass(\"error\");\r\n\t\t\t\t},\r\n\t\t\t\tunhighlight: function (element) {\r\n\r\n\t\t\t\t\tif (element.id === \"OriginPlaceHomeHero\" && $($(this)[0].currentForm).find(\"#HiddenOriginPlaceHomeHero\").hasClass(\"error\")) {\r\n\t\t\t\t\t} else if (element.id === \"DestinationPlaceHomeHero\" && $($(this)[0].currentForm).find(\"#HiddenDestinationPlaceHomeHero\").hasClass(\"error\")) {\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$(element).parent().removeClass(\"error\");\r\n\t\t\t\t\t\t$(element).removeClass(\"error\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t$(\".quote-form-from-place\").blur(function () {\r\n\r\n\t\t\tvar form = $(this).closest(\"form\");\r\n\t\t\tif (originPlaceTemp != null) {\r\n\t\t\t\t$(form).find(\"#HiddenOriginPlaceHomeHero\").val(originPlaceTemp);\r\n\t\t\t}\r\n\t\t\telse if ($(form).find(\"#HiddenOriginPlaceHomeHero\")[0].value !== \"\") {\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t$(form).find(\"#HiddenOriginPlaceHomeHero\").val(null);\r\n\t\t\t\t$(form).find(\"#OriginPlaceHomeHero\").val(\"\");\r\n\t\t\t\t$(form).find(\"#OriginPlaceHomeHero\").valid();\r\n\t\t\t}\r\n\r\n\t\t\toriginPlaceTemp = null;\r\n\t\t});\r\n\r\n\t\t$(\".quote-form-from-place\").on('click', function (e) {\r\n\r\n\t\t\tvar form = $(this).closest(\"form\");\r\n\r\n\t\t\t$(form).find(\"#HiddenOriginPlaceHomeHero\").val(null);\r\n\t\t\t$(form).find(\"#OriginPlaceHomeHero\").val(\"\");\r\n\t\t\t$(form).find(\"#OriginPlaceHomeHero\").valid();\r\n\r\n\t\t\toriginPlaceTemp = null;\r\n\t\t});\r\n\r\n\t\t$(\".quote-form-to-place\").blur(function () {\r\n\r\n\t\t\tvar form = $(this).closest(\"form\");\r\n\t\t\tif (destinationPlaceTemp != null) {\r\n\t\t\t\t$(form).find(\"#HiddenDestinationPlaceHomeHero\").val(destinationPlaceTemp);\r\n\t\t\t}\r\n\t\t\telse if ($(form).find(\"#HiddenDestinationPlaceHomeHero\")[0].value !== \"\") {\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t$(form).find(\"#HiddenDestinationPlaceHomeHero\").val(null);\r\n\t\t\t\t$(form).find(\"#DestinationPlaceHomeHero\").val(\"\");\r\n\t\t\t\t$(form).find(\"#DestinationPlaceHomeHero\").valid();\r\n\t\t\t}\r\n\r\n\t\t\tdestinationPlaceTemp = null;\r\n\t\t});\r\n\r\n\t\t$(\".quote-form-to-place\").on('click', function () {\r\n\r\n\t\t\tvar form = $(this).closest(\"form\");\r\n\r\n\t\t\t$(form).find(\"#HiddenDestinationPlaceHomeHero\").val(null);\r\n\t\t\t$(form).find(\"#DestinationPlaceHomeHero\").val(\"\");\r\n\t\t\t$(form).find(\"#DestinationPlaceHomeHero\").valid();\r\n\r\n\t\t\tdestinationPlaceTemp = null;\r\n\t\t});\r\n\r\n\t\t$(\".quote-form-from-country\").change(function () {\r\n\r\n\t\t\tvar form = $(this).closest(\"form\");\r\n\t\t\tvar $originPlace = $(form).find(\"#OriginPlaceHomeHero\");\r\n var $hiddenOriginPlace = $(form).find(\"#HiddenOriginPlaceHomeHero\");\r\n\r\n $originPlace.removeClass('error').next('label.error').remove();\r\n $hiddenOriginPlace.removeClass('error').next('label.error').remove();\r\n\r\n\t\t\tif (this.value.indexOf(\"True\") !== -1) {\r\n\r\n\t\t\t\t$originPlace.val(null);\r\n\t\t\t\t$originPlace.attr(\"disabled\", false);\r\n\t\t\t\t$originPlace.attr(\"placeholder\", \"Suburb or Postcode\");\r\n $hiddenOriginPlace.val(null);\r\n $hiddenOriginPlace.attr(\"disabled\", false);\r\n\t\t\t} else {\r\n $originPlace.val(null);\r\n $originPlace.attr(\"disabled\", true);\r\n $originPlace.attr(\"placeholder\", \"Not Required\");\r\n $hiddenOriginPlace.val(null);\r\n $hiddenOriginPlace.attr(\"disabled\", true);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\t$(\".quote-form-to-country\").change(function () {\r\n\r\n\t\t\tvar form = $(this).closest(\"form\");\r\n\r\n\t\t\tvar $destinationPlace = $(form).find(\"#DestinationPlaceHomeHero\");\r\n\t\t\tvar $hiddenDestinationPlace = $(form).find(\"#HiddenDestinationPlaceHomeHero\");\r\n\r\n\r\n $destinationPlace.removeClass(\"error\").next(\"label.error\").remove();\r\n $hiddenDestinationPlace.removeClass(\"error\").next(\"label.error\").remove();\r\n\r\n\t\t\tif (this.value.indexOf(\"True\") !== -1) {\r\n $destinationPlace.val(null);\r\n\t\t\t\t$destinationPlace.attr(\"disabled\", false);\r\n $destinationPlace.attr(\"placeholder\", \"Suburb or Postcode\");\r\n $hiddenDestinationPlace.val(null);\r\n $hiddenDestinationPlace.attr(\"disabled\", false);\r\n\t\t\t} else {\r\n $destinationPlace.val(null);\r\n\t\t\t\t$destinationPlace.attr(\"disabled\", true);\r\n $destinationPlace.attr(\"placeholder\", \"Not Required\");\r\n $hiddenDestinationPlace.val(null);\r\n $hiddenDestinationPlace.attr(\"disabled\", true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$(\".quote-form-from-place\").autocomplete({\r\n\t\t\tsource: function (request, response) {\r\n\r\n\t\t\t\tvar form = $(this.element).closest(\"form\");\r\n\r\n\t\t\t\t$(form).find(\"#OriginPlaceHomeHero\").addClass(\"loadinggif\");\r\n\r\n\t\t\t\t$.ajax({\r\n\t\t\t\t\turl: \"/umbraco/surface/calculatequote/getcountryplaces\",\r\n\t\t\t\t\ttype: \"GET\",\r\n\t\t\t\t\tdataType: \"json\",\r\n\t\t\t\t\tdata: {\r\n\t\t\t\t\t\tplaceId: $(form).find(\"#OriginCountryHomeHero\").val(), filter: request.term\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsuccess: function (data) {\r\n\r\n\t\t\t\t\t\tvar results = JSON.parse(data);\r\n\r\n\t\t\t\t\t\t// Populate the array that will be passed to the response callback.\r\n\t\t\t\t\t\tvar autocompleteObjects = [];\r\n\t\t\t\t\t\tfor (var i = 0; i < results.length; i++) {\r\n\t\t\t\t\t\t\tvar object =\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t// Used by jQuery Autocomplete to show\r\n\t\t\t\t\t\t\t\t// autocomplete suggestions as well as\r\n\t\t\t\t\t\t\t\t// the text in yourInputTextBox upon selection.\r\n\t\t\t\t\t\t\t\t// Assign them to a value that you want the user to see.\r\n\t\t\t\t\t\t\t\tvalue: results[i].name,\r\n\t\t\t\t\t\t\t\tlabel: results[i].name,\r\n\r\n\t\t\t\t\t\t\t\t// Put our own custom id here.\r\n\t\t\t\t\t\t\t\t// If you want to, you can even put the result object.\r\n\t\t\t\t\t\t\t\tid: results[i].placeId\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\tautocompleteObjects.push(object);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t$(form).find(\"#OriginPlaceHomeHero\").removeClass(\"loadinggif\");\r\n\r\n\t\t\t\t\t\tresponse(autocompleteObjects);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\tminLength: 2,\r\n\t\t\tselect: function (event, ui) {\r\n\r\n\t\t\t\tvar form = $(this).closest(\"form\");\r\n\r\n\t\t\t\t$(form).find(\"#HiddenOriginPlaceHomeHero\").val(ui.item.id);\r\n\r\n\t\t\t\toriginPlaceTemp = ui.item.id;\r\n\r\n\t\t\t\t$(form).find('#OriginPlaceHomeHero').removeClass('error').next('label.error').remove();\r\n\t\t\t\t$(form).find('#HiddenOriginPlaceHomeHero').removeClass('error').next('label.error').remove();\r\n\t\t\t},\r\n\t\t\topen: function (event, ui) {\r\n\t\t\t\t$('.ui-autocomplete').off('menufocus hover mouseover mouseenter');\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$(\".quote-form-to-place\").autocomplete({\r\n\t\t\tsource: function (request, response) {\r\n\r\n\t\t\t\tvar form = $(this.element).closest(\"form\");\r\n\r\n\t\t\t\t$(form).find(\"#DestinationPlaceHomeHero\").addClass(\"loadinggif\");\r\n\r\n\t\t\t\t$.ajax({\r\n\t\t\t\t\turl: \"/umbraco/surface/calculatequote/getcountryplaces\",\r\n\t\t\t\t\ttype: \"GET\",\r\n\t\t\t\t\tdataType: \"json\",\r\n\t\t\t\t\tdata: {\r\n\t\t\t\t\t\tplaceId: $(form).find(\"#DestinationCountryHomeHero\").val(), filter: request.term\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsuccess: function (data) {\r\n\r\n\t\t\t\t\t\tvar results = JSON.parse(data);\r\n\r\n\t\t\t\t\t\t// Populate the array that will be passed to the response callback.\r\n\t\t\t\t\t\tvar autocompleteObjects = [];\r\n\t\t\t\t\t\tfor (var i = 0; i < results.length; i++) {\r\n\t\t\t\t\t\t\tvar object =\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t// Used by jQuery Autocomplete to show\r\n\t\t\t\t\t\t\t\t// autocomplete suggestions as well as\r\n\t\t\t\t\t\t\t\t// the text in yourInputTextBox upon selection.\r\n\t\t\t\t\t\t\t\t// Assign them to a value that you want the user to see.\r\n\t\t\t\t\t\t\t\tvalue: results[i].name,\r\n\t\t\t\t\t\t\t\tlabel: results[i].name,\r\n\r\n\t\t\t\t\t\t\t\t// Put our own custom id here.\r\n\t\t\t\t\t\t\t\t// If you want to, you can even put the result object.\r\n\t\t\t\t\t\t\t\tid: results[i].placeId\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\tautocompleteObjects.push(object);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t$(form).find(\"#DestinationPlaceHomeHero\").removeClass(\"loadinggif\");\r\n\r\n\t\t\t\t\t\tresponse(autocompleteObjects);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\tminLength: 2,\r\n\t\t\tselect: function (event, ui) {\r\n\r\n\t\t\t\tvar form = $(this).closest(\"form\");\r\n\r\n\t\t\t\t$(form).find(\"#HiddenDestinationPlaceHomeHero\").val(ui.item.id);\r\n\r\n\t\t\t\tdestinationPlaceTemp = ui.item.id;\r\n\r\n\t\t\t\t$(form).find(\"#DestinationPlaceHomeHero\").removeClass(\"error\").next(\"label.error\").remove();\r\n\t\t\t\t$(form).find(\"#HiddenDestinationPlaceHomeHero\").removeClass(\"error\").next(\"label.error\").remove();\r\n\t\t\t},\r\n\t\t\topen: function (event, ui) {\r\n\t\t\t\t$('.ui-autocomplete').off('menufocus hover mouseover mouseenter');\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$(document).on(\"click\", \".add_row\",\r\n\t\t\tfunction (s) {\r\n\r\n\t\t\t\tvar form = $(this).closest(\"form\");\r\n\t\t\t\tvar itemCount = $(form).find('.dimensions').length + 1;\r\n\r\n\t\t\t\tvar clickedItemId = $(s.currentTarget).parentsUntil(\".row\").parent().data(\"item-number\");\r\n\t\t\t\tvar nextItemId = (parseInt(clickedItemId) + 1);\r\n\r\n\t\t\t\tvar items = $(s.currentTarget).parentsUntil(\".package-items\").parent();\r\n\r\n\t\t\t\t$(s.currentTarget).parentsUntil(\".row\").find(\".delete_row\").show();\r\n\t\t\t\t$(s.currentTarget).parentsUntil(\".row\").find(\".add_row\").hide();\r\n\r\n\t\t\t\t$($(items).find(\"#item-\" + nextItemId)[0]).html(\"
\" +\r\n\t\t\t\t\t\"
\" +\r\n\t\t\t\t\t\"\" +\r\n\t\t\t\t\t\"\" +\r\n\t\t\t\t\t\"
\" +\r\n\t\t\t\t\t\" \" +\r\n\t\t\t\t\t\"
\" +\r\n\t\t\t\t\t\"
\" +\r\n\t\t\t\t\t\" \" +\r\n\t\t\t\t\t\"
\" +\r\n\t\t\t\t\t\"
\" +\r\n\t\t\t\t\t\" \" +\r\n\t\t\t\t\t\"
\" +\r\n\t\t\t\t\t\"
\" +\r\n\t\t\t\t\t\" \" +\r\n\t\t\t\t\t\"
\" +\r\n\t\t\t\t\t\"
\" +\r\n\t\t\t\t\t\" \" +\r\n\t\t\t\t\t\"
\" +\r\n\t\t\t\t\t\"
\" +\r\n\t\t\t\t\t\" -\" +\r\n\t\t\t\t\t\"
\" +\r\n\t\t\t\t\t\"
\" +\r\n\t\t\t\t\t\" +\" +\r\n\t\t\t\t\t\"
\" +\r\n\t\t\t\t\t\"
\" +\r\n\t\t\t\t\t\"
\");\r\n\r\n\t\t\t\t$($(items)[0]).append(\"
\");\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\t$(document).on(\"click\", \".delete_row\",\r\n\t\t\tfunction (s) {\r\n\r\n\t\t\t\tvar form = $(this).closest(\"form\");\r\n\r\n\t\t\t\tvar clickedItemId = $(s.currentTarget).parentsUntil(\".row\").parent().data(\"item-number\");\r\n\r\n\t\t\t\t$(s.currentTarget).parentsUntil(\".row\").parent().remove();\r\n\r\n\t\t\t\tif (clickedItemId === $(form).find('.package-items').find('.row').length) {\r\n\t\t\t\t\t$(form).find('.dimensions').last().find('.add_row').show();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ($(form).find('.dimensions').length === 1) {\r\n\t\t\t\t\t$(form).find('.dimensions').find(\".delete_row\").hide();\r\n\t\t\t\t\t$(form).find('.dimensions').find(\".add_row\").show();\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$(form).find('.package-items').find('.row').each(function (rowIndex) {\r\n\t\t\t\t\t$(this).attr('id', 'item-' + (rowIndex + 1));\r\n\t\t\t\t\t$(this).attr('data-item-number', (rowIndex + 1));\r\n\t\t\t\t});\r\n\r\n\r\n\t\t\t\t$(form).find('.dimensions').each(function (rowIndex) {\r\n\r\n\t\t\t\t\t$(this).find('.item-sequence').attr('name', 'Items[' + rowIndex + '].Sequence');\r\n\t\t\t\t\t$(this).find('.item-sequence').attr('id', 'Items[' + rowIndex + '].Sequence');\r\n\t\t\t\t\t$(this).find('.item-sequence').attr('value', (rowIndex + 1));\r\n\r\n\t\t\t\t\t$(this).find('.c-calculate-quote-form__label').each(function () {\r\n\t\t\t\t\t\t$(this).text('Item ' + (rowIndex + 1));\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$(this).find('.c-calculate-quote-form__input').each(function () {\r\n\t\t\t\t\t\t$(this).attr('id', 'Items[' + rowIndex + '].' + $(this).data('label'));\r\n\t\t\t\t\t\t$(this).attr('name', 'Items[' + rowIndex + '].' + $(this).data('label'));\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\t$(\".ready-to-send, .larger-goods, .unpacked-goods, .excess-baggage\").on('click', function () {\r\n\t\t\tsetQuoteTypeParams($(this).data(\"formid\"));\r\n\t\t});\r\n\r\n\t\tfunction setQuoteTypeParams(formId) {\r\n\r\n\t\t\tvar validator = $(\"#calculate-quote-form\").validate();\r\n\t\t\tvalidator.resetForm();\r\n\r\n\t\t\tswitch (formId) {\r\n\t\t\t\tcase \"rts\":\r\n\t\t\t\t\t$(\"#IsExcessBaggage\").val(\"false\");\r\n\t\t\t\t\t$(\"#PackedQuoteYes\").prop(\"checked\", true);\r\n\t\t\t\t\t$(\"#FormId\").val(formId);\r\n\r\n\t\t\t\t\t$(\"#contentsCol\").removeClass(\"col-md-9\");\r\n\t\t\t\t\t$(\"#contentsCol\").addClass(\"col-md-5\");\r\n\r\n\t\t\t\t\t$(\"#packedCol\").show();\r\n\r\n\t\t\t\t\t$(\"#contentsFormField\").removeClass(\"description-long\");\r\n\t\t\t\t\t$(\"#contentsFormField\").addClass(\"description\");\r\n\r\n\t\t\t\t\t$(\"#DescriptionQuoteToolbox\").prop(\"required\", true);\r\n\t\t\t\t\t$(\"#SubmitQuoteBtn\").html(\"Get Quote\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"lg\":\r\n\t\t\t\t\t$(\"#IsExcessBaggage\").val(\"false\");\r\n\t\t\t\t\t$(\"#PackedQuoteYes\").prop(\"checked\", true);\r\n\t\t\t\t\t$(\"#FormId\").val(formId);\r\n\r\n\t\t\t\t\t$(\"#contentsCol\").removeClass(\"col-md-5\");\r\n\t\t\t\t\t$(\"#contentsCol\").addClass(\"col-md-9\");\r\n\r\n\t\t\t\t\t$(\"#packedCol\").hide();\r\n\r\n\t\t\t\t\t$(\"#contentsFormField\").removeClass(\"description\");\r\n\t\t\t\t\t$(\"#contentsFormField\").addClass(\"description-long\");\r\n\r\n\t\t\t\t\t$(\"#DescriptionQuoteToolbox\").prop(\"required\", false);\r\n\t\t\t\t\t$(\"#SubmitQuoteBtn\").html(\"Submit\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"ug\":\r\n\t\t\t\t\t$(\"#IsExcessBaggage\").val(\"false\");\r\n\t\t\t\t\t$(\"#PackedQuoteNo\").prop(\"checked\", true);\r\n\t\t\t\t\t$(\"#FormId\").val(formId);\r\n\r\n\t\t\t\t\t$(\"#contentsCol\").removeClass(\"col-md-5\");\r\n\t\t\t\t\t$(\"#contentsCol\").addClass(\"col-md-9\");\r\n\r\n\t\t\t\t\t$(\"#packedCol\").hide();\r\n\r\n\t\t\t\t\t$(\"#contentsFormField\").removeClass(\"description\");\r\n\t\t\t\t\t$(\"#contentsFormField\").addClass(\"description-long\");\r\n\r\n\t\t\t\t\t$(\"#DescriptionQuoteToolbox\").prop(\"required\", false);\r\n\t\t\t\t\t$(\"#SubmitQuoteBtn\").html(\"Submit\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"eb\":\r\n\t\t\t\t\t$(\"#IsExcessBaggage\").val(\"true\");\r\n\t\t\t\t\t$(\"#PackedQuoteNo\").prop(\"checked\", true);\r\n\t\t\t\t\t$(\"#FormId\").val(formId);\r\n\r\n\t\t\t\t\t$(\"#contentsCol\").removeClass(\"col-md-5\");\r\n\t\t\t\t\t$(\"#contentsCol\").addClass(\"col-md-9\");\r\n\r\n\t\t\t\t\t$(\"#packedCol\").hide();\r\n\r\n\t\t\t\t\t$(\"#contentsFormField\").removeClass(\"description\");\r\n\t\t\t\t\t$(\"#contentsFormField\").addClass(\"description-long\");\r\n\r\n\t\t\t\t\t$(\"#DescriptionQuoteToolbox\").prop(\"required\", false);\r\n\t\t\t\t\t$(\"#SubmitQuoteBtn\").html(\"Submit\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\nmodule.exports = quote;","var loadServiceCentreDetailMapMarkers = function (markers) {\r\n\tif (markers) {\r\n\r\n\t\tjQuery(document).ready(function () {\r\n\t\t\t//The variables that will be used within the map configuration options.\r\n\t\t\tvar serviceCentreMap; //The variable for the main map itself\r\n\t\t\tvar serviceCentreMapCenter = new google.maps.LatLng(parseFloat(markers[0].Latitude), parseFloat(markers[0].Longitude)); //The latitude and longitude of the center of the map.\r\n\t\t\tvar serviceCentreMapZoom = 18; //The degree to which the map is zoomed in. This can range from 0 (least zoomed) to 21 and above (most zoomed).\r\n\t\t\tvar serviceCentreMapZoomMin = 4; //The min zoom levels that is allowed.\r\n\t\t\tvar serviceCentreMapIcon = '/assets/img/map-marker.png';\r\n\r\n\t\t\t//These options configure the setup of the map.\r\n\t\t\tvar serviceCentreMapOptions = {\r\n\t\t\t\tcenter: serviceCentreMapCenter,\r\n\t\t\t\tzoom: serviceCentreMapZoom,\r\n\t\t\t\tminZoom: serviceCentreMapZoomMin,\r\n\t\t\t\ticon: serviceCentreMapIcon,\r\n\t\t\t\tpanControl: false,\r\n\t\t\t\tmapTypeControl: false,\r\n\t\t\t\tscrollwheel: false\r\n\t\t\t};\r\n\r\n\t\t\tloadServiceCentreDetailMap(markers);\r\n\r\n\t\t\t//Function that loads the map.\r\n\t\t\tfunction loadServiceCentreDetailMap(markers) {\r\n\t\t\t\tserviceCentreMap = new google.maps.Map(document.getElementById(\"map\"), serviceCentreMapOptions);\r\n\t\t\t\tvar infoWindow = new google.maps.InfoWindow({ content: '' });\r\n var infoWindowContent = '';\r\n\r\n\t\t\t\tfor (var i = 0; i < markers.length; i++) {\r\n\t\t\t\t\tvar sc = markers[i];\r\n\t\t\t\t\tvar lat = parseFloat(sc.Latitude);\r\n\t\t\t\t\tvar long = parseFloat(sc.Longitude);\r\n\r\n\t\t\t\t\tif (lat != NaN && long != NaN) {\r\n\t\t\t\t\t\tvar markerLatLng = { lat: sc.Latitude, lng: sc.Longitude };\r\n\t\t\t\t\t\tvar marker = new google.maps.Marker({\r\n\t\t\t\t\t\t\tposition: markerLatLng,\r\n\t\t\t\t\t\t\tmap: serviceCentreMap,\r\n\t\t\t\t\t\t\ticon: serviceCentreMapIcon,\r\n\t\t\t\t\t\t\ttitle: sc.ServiceCentreName.replace('amp;', '')\r\n\t\t\t\t\t\t});\r\n\r\n // google.maps.event.addListener(marker, 'click', (function (serviceCentreMap, marker, infoWindow, infoWindowContent, sc) {\r\n\t\t\t\t\t\t//\treturn function () {\r\n\t\t\t\t\t\t//\t\tinfoWindow.close();\r\n // var phoneTrimmed = sc.Phone.replace(/(\\d)\\s+(?=\\d)/g, '$1');\r\n\t // var LocationLink = 'https://www.google.com/maps/search/'+sc.ServiceCentreName+'/@'+sc.Latitude+','+sc.Longitude+',17z';\r\n // infoWindow.setContent(infoWindowContent\r\n // .replace(/\\{Name\\}/g, sc.ServiceCentreName)\r\n // .replace(/\\{Address\\}/g, sc.FullAddress)\r\n // .replace(/\\{Email\\}/g, sc.Email)\r\n // .replace(/\\{Phone\\}/g, sc.Phone)\r\n // .replace(/\\{Url\\}/g, sc.ServiceCentreUrl)\r\n // .replace(/\\{Location\\}/g, LocationLink)\r\n // .replace(/\\{PhoneTrim\\}/g, phoneTrimmed));\r\n\t\t\t\t\t\t//\t\tinfoWindow.open(serviceCentreMap, marker);\r\n\t\t\t\t\t\t//\t}\r\n\t\t\t\t\t\t//})(serviceCentreMap, marker, infoWindow, infoWindowContent, sc));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nmodule.exports = loadServiceCentreDetailMapMarkers;","var loadServiceCentreMapMarkers = function (markers) {\r\n if (markers) {\r\n\r\n jQuery(document).ready(function () {\r\n //The variables that will be used within the map configuration options.\r\n var serviceCentreMap; //The variable for the main map itself\r\n var serviceCentreMapCenter = new google.maps.LatLng(window.mapHeroLat, window.mapHeroLon); //The latitude and longitude of the center of the map.\r\n var serviceCentreMapZoom = window.mapZoomLevel; //The degree to which the map is zoomed in. This can range from 0 (least zoomed) to 21 and above (most zoomed).\r\n var serviceCentreMapZoomMin = 4; //The min zoom levels that is allowed.\r\n var serviceCentreMapIcon = '/assets/img/map-marker.png';\r\n\r\n //These options configure the setup of the map.\r\n var serviceCentreMapOptions = {\r\n center: serviceCentreMapCenter,\r\n zoom: serviceCentreMapZoom,\r\n minZoom: serviceCentreMapZoomMin,\r\n icon: serviceCentreMapIcon,\r\n panControl: false,\r\n mapTypeControl: false,\r\n scrollwheel: false\r\n };\r\n\r\n\r\n loadServiceCentreMap(markers);\r\n\r\n //Function that loads the map.\r\n function loadServiceCentreMap(markers) {\r\n serviceCentreMap = new google.maps.Map(document.getElementById(\"map\"), serviceCentreMapOptions);\r\n var infoWindow = new google.maps.InfoWindow({content: '', maxWidth: 350});\r\n var infoWindowContent = '';\r\n\r\n for (var i = 0; i < markers.length; i++) {\r\n var sc = markers[i];\r\n var lat = parseFloat(sc.Latitude);\r\n var long = parseFloat(sc.Longitude);\r\n\r\n if (lat != NaN && long != NaN) {\r\n\r\n var markerLatLng = {lat: sc.Latitude, lng: sc.Longitude};\r\n var marker = new google.maps.Marker({\r\n position: markerLatLng,\r\n map: serviceCentreMap,\r\n icon: serviceCentreMapIcon,\r\n title: sc.ServiceCentreName.replace('amp;', '')\r\n });\r\n //Customization of infowindow\r\n google.maps.event.addListener(marker, 'mouseover', (function (serviceCentreMap, marker, infoWindow, infoWindowContent, sc) {\r\n return function () {\r\n infoWindow.close();\r\n var phoneTrimmed = sc.Phone.replace(/(\\d)\\s+(?=\\d)/g, '$1');\r\n var LocationLink = 'https://www.google.com/maps/search/'+sc.ServiceCentreName+'/@'+sc.Latitude+','+sc.Longitude+',17z';\r\n infoWindow.setContent(infoWindowContent\r\n .replace(/\\{Name\\}/g, sc.ServiceCentreName)\r\n .replace(/\\{Address\\}/g, sc.FullAddress)\r\n .replace(/\\{Email\\}/g, sc.Email)\r\n .replace(/\\{Phone\\}/g, sc.Phone)\r\n .replace(/\\{Url\\}/g, sc.ServiceCentreUrl)\r\n .replace(/\\{Location\\}/g, LocationLink)\r\n .replace(/\\{PhoneTrim\\}/g, phoneTrimmed));\r\n infoWindow.open(serviceCentreMap, marker);\r\n }\r\n })(serviceCentreMap, marker, infoWindow, infoWindowContent, sc));\r\n\r\n google.maps.event.addListener(infoWindow, 'domready', (function () {\r\n return function () {\r\n // Reference to the DIV that wraps the bottom of infowindow\r\n var iwOuter = $('.gm-style-iw');\r\n /* Since this div is in a position prior to .gm-div style-iw.\r\n * We use jQuery and create a iwBackground variable,\r\n * and took advantage of the existing reference .gm-style-iw for the previous div with .prev().\r\n */\r\n var iwBackground = iwOuter.prev();\r\n // Removes background shadow DIV\r\n iwBackground.children(':nth-child(2)').css({'display': 'none'});\r\n // Removes white background DIV\r\n iwBackground.children(':nth-child(4)').css({'display': 'none'});\r\n // Changes the desired tail shadow color.\r\n iwBackground.children(':nth-child(3)').find('div').children().css({\r\n 'box-shadow': 'rgba(72, 181, 233, 0.6) 0px 1px 6px',\r\n 'z-index': '1',\r\n 'background': '#0057a7'\r\n });\r\n // Reference to the div that groups the close button elements.\r\n var iwCloseBtn = iwOuter.next();\r\n // Apply the desired effect to the close button\r\n iwCloseBtn.css({\r\n opacity: '1',\r\n right: '68px',\r\n top: '33px'\r\n });\r\n\r\n // If the content of infowindow not exceed the set maximum height, then the gradient is removed.\r\n if ($('.iw-content').height() < 140) {\r\n $('.iw-bottom-gradient').css({display: 'none'});\r\n }\r\n\r\n // The API automatically applies 0.7 opacity to the button after the mouseout event. This function reverses this event to the desired value.\r\n iwCloseBtn.mouseout(function () {\r\n $(this).css({opacity: '1'});\r\n });\r\n }\r\n })(serviceCentreMap, infoWindow));\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n });\r\n }\r\n}\r\n\r\nmodule.exports = loadServiceCentreMapMarkers;","var serviceCentreSearch = function () {\r\n\t$(function() {\r\n\r\n\t\t$(\"#location-search-form\").submit(function (e) {\r\n\t\t\t$(\"#serviceCentreLoader\").show();\r\n\t\t\te.preventDefault();\r\n\t\t});\r\n\t\t$(\"#serviceCentreSearchAction\").click(function () {\r\n\r\n\t\t\t$(\"#locationSearchResultsModalContent\").html(\"\");\r\n\r\n\t\t\t$.ajax({\r\n\t\t\t\ttype: \"POST\",\r\n\t\t\t\turl: \"/umbraco/surface/servicecentre/search\",\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tfilter: $(\"#stores-search\").val()\r\n\t\t\t\t},\r\n\t\t\t\tsuccess: function(data) {\r\n\t\t\t\t\tif (data.result === \"1\") {\r\n\t\t\t\t\t\t$(\"#serviceCentreLoader\").hide();\r\n\t\t\t\t\t\t$(\"#locationSearchResultsModalContent\").html(data.viewHtml);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$(\"#serviceCentreLoader\").hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\terror: function () {\r\n\t\t\t\t\t$(\"#serviceCentreLoader\").hide();\r\n\t\t\t\t\talert(\"An error has occured while searching. Please try again.\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n}\r\n\r\nmodule.exports = serviceCentreSearch;","var siteSearch = function () {\r\n\t$(function () {\r\n\r\n\t\tvar PAS = PAS || {};\r\n\t\tPAS.siteSearch = (function ($) {\r\n\r\n\t\t return {\r\n\t\t\t\tresults: null,\r\n\t\t\t\tinit: function () {\r\n\t\t\t\t this.initForm();\r\n\t\t\t},\r\n\t\t\tinitForm: function () {\r\n\r\n\t\t\t // On first load get results.\r\n\t\t\t PAS.siteSearch.search();\r\n\r\n\t\t\t},\r\n\t\t\tsearch: function () {\r\n\r\n\t\t\t // Perform and ajax search\r\n\t\t\t $.ajax({\r\n\t\t\t url: '/umbraco/api/sitesearch/sitesearch?keywords=' + $('#keywords').val().replace(/[^a-z0-9 ]/ig, '').trim() + '&page=' + $('#page').val(),\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\ttraditional: true,\r\n\t\t\t\tsuccess: PAS.siteSearch.loadResults,\r\n\t\t\t\terror: function (result) {\r\n\t\t\t\t console.log(result);\r\n\t\t\t\t console.log(\"An error occurred when searching.\");\r\n\t\t\t\t}\r\n\t\t\t });\r\n\t\t\t},\r\n\t\t\tloadResults: function (jsonData) {\r\n\r\n\t\t\t\t$('#results').empty();\r\n\t\t\t\t$('#searchResultCount').empty();\r\n\t\t\t\t$('#pagination').empty();\r\n\t\t\t\t$('#pager').empty();\r\n\r\n\t\t\t\t$('#searchResultCount').append(jsonData.totalResultCount);\r\n\r\n\t\t\t\t$.each(jsonData.results, function (i, result) {\r\n\t\t\t\t\t$('#results')\r\n\t\t\t\t\t.append($('
')\r\n\t\t\t\t\t.append($('
').append($('').append(result.path)))\r\n\t\t\t\t\t.append($('
').append($('').attr('href', result.url).append($('').append(result.heading))))\r\n\t\t\t\t\t.append($('
').append(result.content)));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tfor (var i = 1; i <= parseInt(jsonData.totalPages) ; i++) {\r\n\t\t\t\t\tif (i === parseInt($('#page').val())) {\r\n\t\t\t\t\t $('#pagination').append($('
  • ').append($('').attr('href', '/search?keywords=' + $('#keywords').val().replace(/[^a-z0-9 ]/ig, '').trim() + '&page=' + i).append(i)));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t $('#pagination').append($('
  • ').append($('').attr('href', '/search?keywords=' + $('#keywords').val().replace(/[^a-z0-9 ]/ig, '').trim() + '&page=' + i).append(i)));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar previousDisabled = '';\r\n\t\t\t\tvar nextDisabled = '';\r\n\t\t\t\tif (parseInt($('#page').val()) === 1)\r\n\t\t\t\t\tpreviousDisabled = 'class=\\'disabled\\'';\r\n\r\n\t\t\t\tif (parseInt(jsonData.totalPages) === 0 || parseInt($('#page').val()) === parseInt(jsonData.totalPages))\r\n\t\t\t\t\tnextDisabled = 'class=\\'disabled\\'';\r\n\r\n\t\t\t\t$('#pager').append($('
  • ').append($('').attr('href', '/search?keywords=' + $('#keywords').val().replace(/[^a-z0-9 ]/ig, '').trim() + '&page=' + parseInt(parseInt($('#page').val()) - 1)).append($('').append('Previous'))));\r\n\t\t\t\t$('#pager').append($('
  • ').append($('').attr('href', '/search?keywords=' + $('#keywords').val().replace(/[^a-z0-9 ]/ig, '').trim() + '&page=' + parseInt(parseInt($('#page').val()) + 1)).append($('').append('Next'))));\r\n\t\t\t}\r\n\t\t };\r\n\r\n\t\t})(jQuery);\r\n\r\n\t\t$(function () {\r\n\t\t PAS.siteSearch.init();\r\n\t\t});\r\n\t});\r\n}\r\n\r\nmodule.exports = siteSearch;\r\n","var loadStoresToolboxMap = function (markers) {\r\n\tif (markers) {\r\n\r\n\t\tjQuery(document).ready(function () {\r\n\t\t\t//The variables that will be used within the map configuration options.\r\n\t\t\tvar serviceCentreMap; //The variable for the main map itself\r\n\t\t\tvar serviceCentreMapCenter = new google.maps.LatLng(parseFloat(markers[0].Latitude), parseFloat(markers[0].Longitude)); //The latitude and longitude of the center of the map.\r\n\t\t\tvar serviceCentreMapZoom = 18; //The degree to which the map is zoomed in. This can range from 0 (least zoomed) to 21 and above (most zoomed).\r\n\t\t\tvar serviceCentreMapZoomMin = 4; //The min zoom levels that is allowed.\r\n\t\t\tvar serviceCentreMapIcon = '/assets/img/map-marker.png';\r\n\r\n\t\t\t//These options configure the setup of the map.\r\n\t\t\tvar serviceCentreMapOptions = {\r\n\t\t\t\tcenter: serviceCentreMapCenter,\r\n\t\t\t\tzoom: serviceCentreMapZoom,\r\n\t\t\t\tminZoom: serviceCentreMapZoomMin,\r\n\t\t\t\ticon: serviceCentreMapIcon,\r\n\t\t\t\tpanControl: false,\r\n\t\t\t\tmapTypeControl: false,\r\n\t\t\t\tscrollwheel: false\r\n\t\t\t};\r\n\r\n\t\t\tloadStoresToolboxMap(markers);\r\n\r\n\t\t\t//Function that loads the map.\r\n\t\t\tfunction loadStoresToolboxMap(markers) {\r\n\t\t\t\tserviceCentreMap = new google.maps.Map(document.getElementById(\"store-map\"), serviceCentreMapOptions);\r\n\t\t\t\tvar infoWindow = new google.maps.InfoWindow({ content: '' });\r\n var infoWindowContent = '';\r\n\r\n\t\t\t\tfor (var i = 0; i < markers.length; i++) {\r\n\t\t\t\t\tvar sc = markers[i];\r\n\t\t\t\t\tvar lat = parseFloat(sc.Latitude);\r\n\t\t\t\t\tvar long = parseFloat(sc.Longitude);\r\n\r\n\t\t\t\t\tif (lat != NaN && long != NaN) {\r\n\t\t\t\t\t\tvar markerLatLng = { lat: sc.Latitude, lng: sc.Longitude };\r\n\t\t\t\t\t\tvar marker = new google.maps.Marker({\r\n\t\t\t\t\t\t\tposition: markerLatLng,\r\n\t\t\t\t\t\t\tmap: serviceCentreMap,\r\n\t\t\t\t\t\t\ticon: serviceCentreMapIcon,\r\n\t\t\t\t\t\t\ttitle: sc.ServiceCentreName.replace('amp;', '')\r\n\t\t\t\t\t\t});\r\n\r\n //Customization of infowindow\r\n //google.maps.event.addListener(marker, 'mouseover', (function (serviceCentreMap, marker, infoWindow, infoWindowContent, sc) {\r\n // return function () {\r\n // infoWindow.close();\r\n // var phoneTrimmed = sc.Phone.replace(/(\\d)\\s+(?=\\d)/g, '$1');\r\n\t\t\t\t\t // var LocationLink = 'https://www.google.com/maps/search/'+sc.ServiceCentreName+'/@'+sc.Latitude+','+sc.Longitude+',17z';\r\n // infoWindow.setContent(infoWindowContent\r\n // .replace(/\\{Name\\}/g, sc.ServiceCentreName)\r\n // .replace(/\\{Address\\}/g, sc.FullAddress)\r\n // .replace(/\\{Email\\}/g, sc.Email)\r\n // .replace(/\\{Phone\\}/g, sc.Phone)\r\n // .replace(/\\{Url\\}/g, sc.ServiceCentreUrl)\r\n // .replace(/\\{Location\\}/g, LocationLink)\r\n // .replace(/\\{PhoneTrim\\}/g, phoneTrimmed));\r\n // infoWindow.open(serviceCentreMap, marker);\r\n // }\r\n //})(serviceCentreMap, marker, infoWindow, infoWindowContent, sc));\r\n\r\n //google.maps.event.addListener(infoWindow, 'domready', (function () {\r\n // return function () {\r\n // // Reference to the DIV that wraps the bottom of infowindow\r\n // var iwOuter = $('.gm-style-iw');\r\n\t\t\t\t\t\t//\t\t/* Since this div is in a position prior to .gm-div style-iw.\r\n\t\t\t\t\t\t//\t\t * We use jQuery and create a iwBackground variable,\r\n\t\t\t\t\t\t//\t\t * and took advantage of the existing reference .gm-style-iw for the previous div with .prev().\r\n\t\t\t\t\t\t//\t\t */\r\n // var iwBackground = iwOuter.prev();\r\n // // Removes background shadow DIV\r\n // iwBackground.children(':nth-child(2)').css({'display': 'none'});\r\n // // Removes white background DIV\r\n // iwBackground.children(':nth-child(4)').css({'display': 'none'});\r\n // // Changes the desired tail shadow color.\r\n // iwBackground.children(':nth-child(3)').find('div').children().css({\r\n // 'box-shadow': 'rgba(72, 181, 233, 0.6) 0px 1px 6px',\r\n // 'z-index': '1',\r\n // 'background': '#0057a7'\r\n // });\r\n // // Reference to the div that groups the close button elements.\r\n // var iwCloseBtn = iwOuter.next();\r\n // // Apply the desired effect to the close button\r\n // iwCloseBtn.css({\r\n // opacity: '1',\r\n // right: '68px',\r\n // top: '33px'\r\n // });\r\n\r\n // // If the content of infowindow not exceed the set maximum height, then the gradient is removed.\r\n // if ($('.iw-content').height() < 140) {\r\n // $('.iw-bottom-gradient').css({display: 'none'});\r\n // }\r\n\r\n // // The API automatically applies 0.7 opacity to the button after the mouseout event. This function reverses this event to the desired value.\r\n // iwCloseBtn.mouseout(function () {\r\n // $(this).css({opacity: '1'});\r\n // });\r\n // }\r\n //})(serviceCentreMap, infoWindow));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nmodule.exports = loadStoresToolboxMap;","var subscribeForm = function () {\r\n\t$(function () {\r\n\t\tif ($(\"#subscribe-form\").length > 0) {\r\n\t\t\t$(\"#subscribe-form\").validate({\r\n\t\t\t\tsubmitHandler: function () {\r\n\r\n\t\t\t\t\t$.ajax({\r\n\t\t\t\t\t\ttype: \"POST\",\r\n\t\t\t\t\t\turl: \"/umbraco/surface/hubspot/addcontact\",\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\temailAddress: $(\"#subscribe\").val()\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tsuccess: function (data) {\r\n\t\t\t\t\t\t\tdebugger;\r\n\r\n\t\t\t\t\t\t\tif (data.result === \"1\") {\r\n\t\t\t\t\t\t\t\t$(\"#subscribe-form\").html(\"\");\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse if (data.result === \"0\") {\r\n\t\t\t\t\t\t\t\t$(\"#subscribe-form\").html(\"\");\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\terror: function () {\r\n\t\t\t\t\t\t\talert(\"An error has occured while signing up. Please try again.\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n}\r\n\r\nmodule.exports = subscribeForm;","var toolbox = function () {\r\n\t$(function () {\r\n\t\tif ($(\"#track-form\").length > 0) {\r\n\t\t\t$(\"#track-form\").validate({\r\n\t\t\t\tmessages: {\r\n\t\t\t\t\ttrackingnumber: \"Required\"\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\tif ($(\"#CalculateQuoteFormToolbox\").length > 0) {\r\n\t\t\t$(\"#CalculateQuoteFormToolbox\").validate({\r\n\t\t\t\tignore: \":disabled\",\r\n\t\t\t\tmessages: {\r\n\t\t\t\t\twidth: \"Invalid\",\r\n\t\t\t\t\tlength: \"Invalid\",\r\n\t\t\t\t\theight: \"Invalid\",\r\n\t\t\t\t\tweight: \"Invalid\",\r\n\t\t\t\t\tvalue: \"Invalid\",\r\n\t\t\t\t\tOriginPlaceToolbox: \"Required\",\r\n\t\t\t\t\tDestinationPlaceToolbox: \"Required\",\r\n\t\t\t\t\tdescription: \"Required\"\r\n\t\t\t\t},\r\n\t\t\t\tsubmitHandler: function () {\r\n\r\n\t\t\t\t\tvar formData = new FormData($(this)[0].currentForm);\r\n var newtab = window.open('', '_getquote');\r\n\r\n\t\t\t\t\t$.ajax({\r\n\t\t\t\t\t\ttype: \"POST\",\r\n\t\t\t\t\t\turl: \"/umbraco/surface/calculatequote/calcquote\",\r\n\t\t\t\t\t\tdata: formData,\r\n\t\t\t\t\t\tcontentType: false,\r\n\t\t\t\t\t\tprocessData: false,\r\n\t\t\t\t\t\tsuccess: function (calculateQuoteUrl) {\r\n\t\t\t\t\t\t\tif (calculateQuoteUrl.length !== 0) {\r\n\t\t\t\t\t\t\t\tnewtab.location = calculateQuoteUrl;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t$(\"#OriginCountryToolbox\").change(function () {\r\n\r\n\t\t\tif (this.value.indexOf(\"True\") !== -1) {\r\n\t\t\t\t$(\"#OriginPlaceToolbox\").prop(\"disabled\", false);\r\n\t\t\t} else {\r\n\t\t\t\t$(\"#OriginPlaceToolbox\").val(\"\");\r\n\t\t\t\t$(\"#OriginPlaceToolbox\").prop(\"disabled\", true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$(\"#DestinationCountryToolbox\").change(function () {\r\n\r\n\t\t\tif (this.value.indexOf(\"True\") !== -1) {\r\n\t\t\t\t$(\"#DestinationPlaceToolbox\").prop(\"disabled\", false);\r\n\t\t\t} else {\r\n\t\t\t\t$(\"#DestinationPlaceToolbox\").val(\"\");\r\n\t\t\t\t$(\"#DestinationPlaceToolbox\").prop(\"disabled\", true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$(\"#OriginPlaceToolbox\").autocomplete({\r\n\t\t\tsource: function (request, response) {\r\n\r\n\t\t\t\t$.ajax({\r\n\t\t\t\t\turl: \"/umbraco/surface/calculatequote/getcountryplaces\",\r\n\t\t\t\t\ttype: \"GET\",\r\n\t\t\t\t\tdataType: \"json\",\r\n\t\t\t\t\tdata: {\r\n\t\t\t\t\t\tplaceId: $(\"#OriginCountryToolbox\").val(), filter: request.term\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsuccess: function (data) {\r\n\r\n\t\t\t\t\t\tvar results = JSON.parse(data);\r\n\r\n\t\t\t\t\t\t// Populate the array that will be passed to the response callback.\r\n\t\t\t\t\t\tvar autocompleteObjects = [];\r\n\t\t\t\t\t\tfor (var i = 0; i < results.length; i++) {\r\n\t\t\t\t\t\t\tvar object =\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t// Used by jQuery Autocomplete to show\r\n\t\t\t\t\t\t\t\t// autocomplete suggestions as well as\r\n\t\t\t\t\t\t\t\t// the text in yourInputTextBox upon selection.\r\n\t\t\t\t\t\t\t\t// Assign them to a value that you want the user to see.\r\n\t\t\t\t\t\t\t\tvalue: results[i].name,\r\n\t\t\t\t\t\t\t\tlabel: results[i].name,\r\n\r\n\t\t\t\t\t\t\t\t// Put our own custom id here.\r\n\t\t\t\t\t\t\t\t// If you want to, you can even put the result object.\r\n\t\t\t\t\t\t\t\tid: results[i].placeId\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\tautocompleteObjects.push(object);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tresponse(autocompleteObjects);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\tminLength: 2,\r\n\t\t\tselect: function (event, ui) {\r\n\t\t\t\t$(\"#HiddenOriginPlaceToolbox\").val(ui.item.id);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$(\"#DestinationPlaceToolbox\").autocomplete({\r\n\t\t\tsource: function (request, response) {\r\n\r\n\t\t\t\t$.ajax({\r\n\t\t\t\t\turl: \"/umbraco/surface/calculatequote/getcountryplaces\",\r\n\t\t\t\t\ttype: \"GET\",\r\n\t\t\t\t\tdataType: \"json\",\r\n\t\t\t\t\tdata: {\r\n\t\t\t\t\t\tplaceId: $(\"#DestinationCountryToolbox\").val(), filter: request.term\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsuccess: function (data) {\r\n\r\n\t\t\t\t\t\tvar results = JSON.parse(data);\r\n\r\n\t\t\t\t\t\t// Populate the array that will be passed to the response callback.\r\n\t\t\t\t\t\tvar autocompleteObjects = [];\r\n\t\t\t\t\t\tfor (var i = 0; i < results.length; i++) {\r\n\t\t\t\t\t\t\tvar object =\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t// Used by jQuery Autocomplete to show\r\n\t\t\t\t\t\t\t\t// autocomplete suggestions as well as\r\n\t\t\t\t\t\t\t\t// the text in yourInputTextBox upon selection.\r\n\t\t\t\t\t\t\t\t// Assign them to a value that you want the user to see.\r\n\t\t\t\t\t\t\t\tvalue: results[i].name,\r\n\t\t\t\t\t\t\t\tlabel: results[i].name,\r\n\r\n\t\t\t\t\t\t\t\t// Put our own custom id here.\r\n\t\t\t\t\t\t\t\t// If you want to, you can even put the result object.\r\n\t\t\t\t\t\t\t\tid: results[i].placeId\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\tautocompleteObjects.push(object);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tresponse(autocompleteObjects);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\tminLength: 2,\r\n\t\t\tselect: function (event, ui) {\r\n\t\t\t\t$(\"#HiddenDestinationPlaceToolbox\").val(ui.item.id);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif ($(\"#ToolboxEnquireForm\").length > 0) {\r\n\t\t\t$(\"#ToolboxEnquireForm\").validate({\r\n\t\t\t\tdebug: true,\r\n\t\t\t\tsubmitHandler: function () {\r\n\r\n\t\t\t\t\tvar formData = new FormData($(this)[0].currentForm);\r\n\r\n\t\t\t\t\t$.ajax({\r\n\t\t\t\t\t\ttype: \"POST\",\r\n\t\t\t\t\t\turl: \"/umbraco/surface/enquire/enquire\",\r\n\t\t\t\t\t\tdata: formData,\r\n\t\t\t\t\t\tcontentType: false,\r\n\t\t\t\t\t\tprocessData: false,\r\n\t\t\t\t\t\tsuccess: function (data) {\r\n\t\t\t\t\t\t\t$(\"#EnquiryFormResponse\").removeClass(\"hidden\");\r\n\t\t\t\t\t\t\t$(\"#EnquiryFormResponse p\").text(data);\r\n\t\t\t\t\t\t\t$(\"#ToolboxEnquireForm\").addClass(\"hidden\");\r\n\t\t\t\t\t\t\t$(window).scrollTop(0);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t});\r\n}\r\n\r\nmodule.exports = toolbox;","/*! modernizr 3.5.0 (Custom Build) | MIT *\r\n * https://modernizr.com/download/?-objectfit-setclasses !*/\r\n!function(e,n,t){function r(e,n){return typeof e===n}function o(){var e,n,t,o,i,s,a;for(var l in C)if(C.hasOwnProperty(l)){if(e=[],n=C[l],n.name&&(e.push(n.name.toLowerCase()),n.options&&n.options.aliases&&n.options.aliases.length))for(t=0;tc;c++)if(m=e[c],y=P.style[m],l(m,\"-\")&&(m=s(m)),P.style[m]!==t){if(i||r(o,\"undefined\"))return f(),\"pfx\"==n?m:!0;try{P.style[m]=o}catch(h){}if(P.style[m]!=y)return f(),\"pfx\"==n?m:!0}return f(),!1}function g(e,n,t,o,i){var s=e.charAt(0).toUpperCase()+e.slice(1),a=(e+\" \"+b.join(s+\" \")+s).split(\" \");return r(n,\"string\")||r(n,\"undefined\")?y(a,n,o,i):(a=(e+\" \"+j.join(s+\" \")+s).split(\" \"),u(a,n,t))}var h=[],C=[],S={_version:\"3.5.0\",_config:{classPrefix:\"\",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,n){var t=this;setTimeout(function(){n(t[e])},0)},addTest:function(e,n,t){C.push({name:e,fn:n,options:t})},addAsyncTest:function(e){C.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=S,Modernizr=new Modernizr;var _=n.documentElement,w=\"svg\"===_.nodeName.toLowerCase(),x=\"Moz O ms Webkit\",b=S._config.usePrefixes?x.split(\" \"):[];S._cssomPrefixes=b;var E=function(n){var r,o=prefixes.length,i=e.CSSRule;if(\"undefined\"==typeof i)return t;if(!n)return!1;if(n=n.replace(/^@/,\"\"),r=n.replace(/-/g,\"_\").toUpperCase()+\"_RULE\",r in i)return\"@\"+n;for(var s=0;o>s;s++){var a=prefixes[s],l=a.toUpperCase()+\"_\"+r;if(l in i)return\"@-\"+a.toLowerCase()+\"-\"+n}return!1};S.atRule=E;var j=S._config.usePrefixes?x.toLowerCase().split(\" \"):[];S._domPrefixes=j;var z={elem:a(\"modernizr\")};Modernizr._q.push(function(){delete z.elem});var P={style:z.elem.style};Modernizr._q.unshift(function(){delete P.style}),S.testAllProps=g;var N=S.prefixed=function(e,n,t){return 0===e.indexOf(\"@\")?E(e):(-1!=e.indexOf(\"-\")&&(e=s(e)),n?g(e,n,t):g(e,\"pfx\"))};Modernizr.addTest(\"objectfit\",!!N(\"objectFit\"),{aliases:[\"object-fit\"]}),o(),i(h),delete S.addTest,delete S.addAsyncTest;for(var T=0;T