{"version":3,"file":"script.js","sources":["0"],"sourcesContent":["/* ==========================================================================\n * RACQ\n * ========================================================================== */\n\nimport '../css/style.scss';\n\n$(\".bnk_fgrid\").on(\"done.equalHeights\",function(){\n\tvar currentHeight = $(this).children().height()\n\tvar currentWidth = $(this).children().width()\n\tif(currentHeight < currentWidth) {\n\t\t$(this).children().css('height',currentWidth + 'px')\n\t}\n\n\t// $(this).children().css('height', (currentHeight * 1.5) + 'px')\n})\n\n$(window).on('resize',function(){\n\t$(\".fn_reinit-onresize\").each(function(){\n\t\tvar className = $(this).attr('class').split(' ')\n\t\tvar _self = $(this)\n\t\tfor(var i in className) {\n\t\t\tswitch(className[i]) {\n\t\t\t\tcase 'fn_equalHeights':\n\t\t\t\t\t_self.trigger('update.equalHeights')\n\t\t\t\t\tconsole.log('reinit!')\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t})\n})\n\nwindow.RACQ_JS = window.RACQ_JS || {};\nRACQ_JS.IS_DEBUG = true;\nRACQ_JS.IS_EDIT = RACQ_JS.IS_EDIT || false;\n\n// The IS_RESPONSIVE constant has a default of TRUE, unless already set.\n// This will be set to false by util.js if the browser is IE8 or older.\nif (typeof RACQ_JS.IS_RESPONSIVE === 'undefined') {\n\tRACQ_JS.IS_RESPONSIVE = true;\n}\n\n/* Initiate .net variables incase they aren't initiated */\nif (typeof Page_Validators=== 'undefined') {\n\tPage_Validators = [];\n}\n\n/* Stop console.log errors */\nif (typeof console === 'undefined') {\n\twindow.console = {};\n\tconsole.log = console.error = console.info = console.debug = console.warn = console.trace = console.dir = console.dirxml = console.group = console.groupEnd = console.time = console.timeEnd = console.assert = console.profile = function() {};\n}\n\nif (!RACQ_JS.IS_DEBUG) {\n\tconsole.log = function () {};\n\tconsole.warn = function () {};\n}\n\n/* Additional helper prototypes */\nString.prototype.isNumber = function() {\n\treturn !isNaN(this);\n};\n\nif(RACQ_JS.IS_DEBUG === true) {\n\tvar ArgsMock = function(){\n\t\tthis.IsValid = false;\n\t};\n}\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.INIT = {\n\t\t// The following functions are run on every page\n\t\t// Aim to have minimal functions in this section\n\t\tcommon: {\n\t\t\tinit: function() {\n\t\t\t\t// Delegate .transition() calls to .animate() if the browser can't do CSS transitions.\n\t\t\t\tif (!Modernizr.csstransitions) {\n\t\t\t\t\t$.fn.transition = $.fn.animate;\n\t\t\t\t}\n\n\t\t\t\tif (NAMESPACE.IS_DEBUG || window.location.hostname === '0.0.0.0' || window.location.hostname === 'localhost' || window.location.hostname === 'racq.donlineclients.com') {\n\t\t\t\t\tNAMESPACE.mockSysObject.init();\n\t\t\t\t}\n\n\t\t\t\t//helpers\n\t\t\t\tNAMESPACE.util.helpers();\n\t\t\t\tNAMESPACE.util.identifyUserAgent();\n\t\t\t\tNAMESPACE.util.responsiveTelNumbers();\n\t\t\t\tNAMESPACE.util.fixFixedOnIOS();\n\n\t\t\t\t//navigation\n\t\t\t\tNAMESPACE.nav.init();\n\t\t\t\tNAMESPACE.utilityLinks.init();\n\t\t\t\tNAMESPACE.headerBigLinks.init();\n\t\t\t\tNAMESPACE.contactUsDropdown.init();\n\n\t\t\t\t//image loader\n\t\t\t\tNAMESPACE.imageLoader.init();\n\t\t\t\tNAMESPACE.imagefill.init();\n\n\t\t\t\t//components\n\t\t\t\tNAMESPACE.iframe();\n\t\t\t\tNAMESPACE.flexslider.init();\n\t\t\t\tNAMESPACE.forms.dynamicSelect();\n\t\t\t\tNAMESPACE.forms.multipleSelect();\n\t\t\t\tNAMESPACE.complexTooltip();\n\t\t\t\tNAMESPACE.forms.simpleSelect();\n\t\t\t\tNAMESPACE.forms.simpleRadio();\n\t\t\t\tNAMESPACE.forms.inputMask();\n\t\t\t\tNAMESPACE.forms.radioExtra();\n\t\t\t\tNAMESPACE.forms.autotab();\n\t\t\t\tNAMESPACE.forms.submitOnChange();\n\t\t\t\tNAMESPACE.forms.hideOnClick();\n\t\t\t\tNAMESPACE.forms.showOnClick();\n\t\t\t\tNAMESPACE.forms.hideOnChange();\n\t\t\t\tNAMESPACE.forms.radioBlock();\n\t\t\t\tNAMESPACE.forms.radioGrid();\n\t\t\t\tNAMESPACE.forms.fieldTypeTransformation();\n\t\t\t\tNAMESPACE.forms.discountSummary();\n\t\t\t\tNAMESPACE.forms.rangeSlider();\n\t\t\t\tNAMESPACE.formRows();\n\t\t\t\tNAMESPACE.datePicker();\n\t\t\t\tNAMESPACE.accordion.init(); //order matters, make sure this is before expandCollapse.init()\n\t\t\t\tNAMESPACE.equalHeights.init();\n\t\t\t\tNAMESPACE.tabsController();\n\t\t\t\tNAMESPACE.tabs.init();\n\t\t\t\tNAMESPACE.lifestyleCalculator.init();\n\t\t\t\tNAMESPACE.columns();\n\t\t\t\tNAMESPACE.slider();\n\t\t\t\t// NAMESPACE.responsiveTable.init();\n\t\t\t\tNAMESPACE.expandCollapse.init();\n\t\t\t\tNAMESPACE.expandCollapseShowHide.init();\n\t\t\t\tNAMESPACE.moduleInitInTabs.init();\n\t\t\t\tNAMESPACE.ajaxPageFragment.init();\n\t\t\t\tNAMESPACE.triggerFirstLinkOnClick();\n\t\t\t\tNAMESPACE.mirrorValue();\n\t\t\t\tNAMESPACE.liveTotal();\n\t\t\t\tNAMESPACE.headerOverlay.init();\n\t\t\t\tNAMESPACE.linkBlocks();\n\t\t\t\tNAMESPACE.dropdown.init();\n\t\t\t\tNAMESPACE.displayFormChange.init();\n\t\t\t\tNAMESPACE.membershipBenefits.init();\n\t\t\t\tNAMESPACE.tables.init();\n\t\t\t\tNAMESPACE.banner.init();\n\t\t\t\tNAMESPACE.accountPreferences.init();\n\t\t\t\tNAMESPACE.roadsideUpgrade.init();\n\n\t\t\t\t//if you need modals on page load - put this higher\n\t\t\t\tNAMESPACE.modal.init();\n\n\t\t\t\t// don't run modules when inside Sitecore Experience Editor\n\t\t\t\tif ( !$('body.page-editor').length ) {\n\t\t\t\t\tNAMESPACE.responsiveTable.init();\n\t\t\t\t\tNAMESPACE.tooltip();\n\t\t\t\t}\n\n\t\t\t},\n\t\t\tconclude: function() {\n\t\t\t\t// Functions here are run on every page after all the other functions - put non-visual functions here\n\t\t\t\t// NAMESPACE.tooltip();\n\t\t\t\tNAMESPACE.mqad.init();\n\t\t\t\tNAMESPACE.autocomplete();\n\t\t\t\tNAMESPACE.predictive();\n\t\t\t\tNAMESPACE.videoPlayerPage.init();\n\n\t\t\t\tNAMESPACE.util.print();\n\t\t\t\tNAMESPACE.util.scrollPage();\n\t\t\t\tNAMESPACE.util.showElement();\n\t\t\t\tNAMESPACE.gatedContent.init();\n\n\t\t\t\tNAMESPACE.videoPlayer.init();\n\t\t\t\tNAMESPACE.socialShare();\n\n\t\t\t}\n\t\t},\n\t\t// The following functions are only run on specific pages, based on the data-controller and data-action parameters\n\t\tcontent: {\n\t\t\tinit: function() {\n\n\t\t\t},\n\t\t\tcontent: function() {\n\t\t\t\tNAMESPACE.formShowHide.init();\n\t\t\t},\n\t\t\tmustDos: function() {\n\t\t\t\tNAMESPACE.formShowHide.init();\n\t\t\t},\n\t\t\tcarReviews: function() {\n\t\t\t\tNAMESPACE.formShowHide.init();\n\t\t\t},\n\t\t\tholidays: function() {\n\t\t\t},\n\t\t\tsearch: function() {\n\t\t\t},\n\t\t\tdiscountsLanding: function() {\n\t\t\t},\n\t\t\tnewsAndCommunitySummary: function() {\n\t\t\t},\n\t\t\tapprovedRepairers: function() {\n\t\t\t},\n\t\t\tfuelFinder: function() {\n\t\t\t\tNAMESPACE.fairFuelPrice.init();\n\t\t\t},\n\t\t\taccountOverview: function() {\n\t\t\t},\n\t\t\tpaymentOptions: function() {\n\t\t\t\tNAMESPACE.formShowHide.init();\n\t\t\t\tNAMESPACE.forms.radioBlock();\n\t\t\t\tNAMESPACE.forms.radioCheckbox();\n\t\t\t}\n\t\t},\n\t\tforms: {\n\t\t\tinit: function() {\n\t\t\t\tNAMESPACE.formShowHide.init();\n\t\t\t\tNAMESPACE.formShowHideSimple.init();\n\t\t\t\tNAMESPACE.formShowHideTarget.init();\n\t\t\t\t//NAMESPACE.forms.passwordStrength.init();\n\t\t\t\tNAMESPACE.characterCounter.init();\n\t\t\t},\n\t\t\tmultistep: function() {\n\t\t\t\tNAMESPACE.multiStepForm.init();\n\t\t\t\tNAMESPACE.multiStepFormProgressIndicator.init();\n\t\t\t\tNAMESPACE.sticky();\n\t\t\t}\n\t\t}\n\t};\n\n\t/* Standard Garber-Irish Implementation */\n\tNAMESPACE.exec = function (controller, action) {\n\t\tvar ns = NAMESPACE.INIT;\n\n\t\tif (action === undefined) {\n\t\t\taction = 'init';\n\t\t}\n\n\t\tif (controller !== '' && ns[controller] && typeof ns[controller][action] === 'function') {\n\t\t\tns[controller][action]();\n\t\t}\n\t};\n\n\tNAMESPACE.init = function () {\n\t\t$(document).ready(function(){\n\t\t\tvar body = document.body,\n\t\t\tcontroller = body.getAttribute('data-controller'),\n\t\t\taction = body.getAttribute('data-action');\n\n\t\tNAMESPACE.exec('common');\n\t\tNAMESPACE.exec(controller);\n\t\tNAMESPACE.exec(controller, action);\n\t\tNAMESPACE.exec('common', 'conclude');\n\t\tNAMESPACE.triggerReady();\n\t\t})\n\t\t\n\n\t};\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * HELPER UTILITIES\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.util = (function(){\n\t\tvar noscroll,\n\t\t\thelpers,\n\t\t\tscrollPageTo,\n\t\t\tscrollPage,\n\t\t\tplaceholder,\n\t\t\tformatter,\n\t\t\tprefixed,\n\t\t\tisDevice,\n\t\t\tidentifyUserAgent,\n\t\t\tresponsiveTelNumbers,\n\t\t\tprint,\n\t\t\tajax,\n\t\t\tfixFixedOnIOS,\n\t\t\tgetParameterByName,\n\t\t\taddQueryStringToPath,\n\t\t\taddQueryStringToReturnUrl,\n\t\t\taddHashToReturnUrl,\n\t\t\tshowElement,\n\t\t\tisNumber,\n\t\t\tisAustralianPostcode,\n\t\t\tgetCookie,\n\t\t\tsetCookie,\n\t\t\tfixWidthToViewport,\n\t\t\tgetScreenData;\n\n\t\tnoscroll = (function() {\n\t\t\tvar add,\n\t\t\t\tremove;\n\n\t\t\tadd = function() {\n\t\t\t\tif ($('body').hasClass('no-scroll') === false) {\n\t\t\t\t\tvar scrollTop = $(document).scrollTop();\n\n\t\t\t\t\t$('body').addClass('no-scroll').css({\n\t\t\t\t\t\ttop: -scrollTop\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tremove = function() {\n\t\t\t\tvar top = parseInt($('body').css('top'), 10);\n\n\t\t\t\t$('body').css({\n\t\t\t\t\ttop: ''\n\t\t\t\t}).removeClass('no-scroll');\n\n\t\t\t\t$(document).scrollTop(-top);\n\t\t\t};\n\n\t\t\treturn {\n\t\t\t\tadd: add,\n\t\t\t\tremove: remove\n\t\t\t};\n\t\t}());\n\n\t\t/* Adds classes for IE to support pseudo elements */\n\t\thelpers = function() {\n\t\t\tif ($('.click-to-chat-trigger').length > 0) {\n\t\t\t\t$('html').addClass('supports-click-to-chat-trigger');\n\t\t\t}\n\n\t\t\tif ($('.lt-ie9').length > 0) {\n\t\t\t\tNAMESPACE.IS_RESPONSIVE = false;\n\n\t\t\t\t$('li:last-child, th:last-child, td:last-child, tr:last-child, .section-link:last-child, .btn-holder .cta:last-child, .cols > .col:last-child').addClass('last-child');\n\t\t\t\t$('li:nth-last-child(2), th:nth-last-child(2), td:nth-last-child(2), tr:nth-last-child(2), .section-link:nth-last-child(2)').addClass('second-last-child');\n\t\t\t\t$('tr:nth-child(even), .section-link:nth-child(even), .modules-item:nth-child(even)').addClass('even');\n\t\t\t\t$('tr:nth-child(odd), .section-link:nth-child(odd), .modules-item:nth-child(odd)').addClass('odd');\n\t\t\t}\n\n\t\t\tif (!Modernizr.input.placeholder) {\n\t\t\t\tvar $inputs = $('input, textarea');\n\t\t\t\tif($inputs.length > 0) {\n\t\t\t\t\t$inputs.not('.dont-use-placeholder-polyfill').placeholder();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ($('.supports-no-cssgradients').length > 0) {\n\t\t\t\t$('.text-module').append('');\n\t\t\t}\n\n\t\t\t$(\"input[type=email].fn_prevent_paste\").on('cut copy paste contextmenu',function(e){\n\t\t\t\te.preventDefault()\n\t\t\t})\n\t\t};\n\n\t\t/* Scrolls page */\n\t\tscrollPageTo = function(top, hash, _duration, callback) {\n\t\t\tvar duration = (typeof _duration !== 'undefined' ? _duration : 'slow'),\n\t\t\t\tisCallbackCalled = false,\n\t\t\t\toffset;\n\n\t\t\t// top can be set to a jQuery object instead of a number\n\t\t\tif (typeof top === 'object') {\n\t\t\t\toffset = top.offset();\n\t\t\t\tif (offset.top) {\n\t\t\t\t\ttop = offset.top;\n\t\t\t\t} else {\n\t\t\t\t\ttop = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add 50px for the fixed header on small screens\n\t\t\tif (window.matchMedia(NAMESPACE.mediaQueries.bp('0,m')).matches) {\n\t\t\t\ttop -= 50;\n\t\t\t}\n\n\t\t\t// Add 76px for the fixed header on large screens with simple--header\n\t\t\tif (!NAMESPACE.IS_RESPONSIVE || window.matchMedia(NAMESPACE.mediaQueries.bp('l')).matches) {\n\t\t\t\ttop -= 76 + 15;\n\t\t\t}\n\n\t\t\tif (top < 0) {\n\t\t\t\ttop = 0;\n\t\t\t}\n\n\t\t\t$('html, body').animate({\n\t\t\t\tscrollTop: top\n\t\t\t}, duration, function() {\n\t\t\t\tif (!isCallbackCalled) {\n\t\t\t\t\tisCallbackCalled = true;\n\t\t\t\t\tif (typeof (hash) === 'string') {\n\t\t\t\t\t\twindow.location.hash = hash;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeof (callback) === 'function') {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\t/* Scrolls the page to a specified ID */\n\t\tscrollPage = function() {\n\t\t\t$('.scrollto').each(function() {\n\t\t\t\tvar scrollToTarget = function(btn) {\n\t\t\t\t\tvar $btn = $(btn),\n\t\t\t\t\t\tdataTarget = $btn.attr('data-scrollto'),\n\t\t\t\t\t\ttarget = $btn.attr('href'),\n\t\t\t\t\t\tadjust = $btn.attr('data-scrollto-adjust');\n\n\t\t\t\t\tif (adjust) {\n\t\t\t\t\t\tadjust = parseInt(adjust, 10);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tadjust = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\ttarget = target.substr(target.indexOf('#') + 1);\n\n\t\t\t\t\tif (dataTarget) {\n\t\t\t\t\t\t$btn.off('.scrollto').on('click.scrollto', function(e) {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tvar $target = $('[data-id=\"' + dataTarget + '\"]');\n\t\t\t\t\t\t\tif ($target.length > 0) {\n\t\t\t\t\t\t\t\tscrollPageTo($target.offset().top + adjust);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if ($('#' + target).length > 0) {\n\t\t\t\t\t\t$btn.off('.scrollto').on('click.scrollto', function(e) {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tscrollPageTo($('#' + target).offset().top + adjust);\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if ($('a[name=\"' + target + '\"]').length > 0) {\n\t\t\t\t\t\t$btn.off('.scrollto').on('click.scrollto', function(e) {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tscrollPageTo($('a[name=\"' + target + '\"]').offset().top + adjust);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tif (this.tagName === 'A') {\n\t\t\t\t\tscrollToTarget(this);\n\t\t\t\t} else {\n\t\t\t\t\t$(this).find('a').each(function() {\n\t\t\t\t\t\tscrollToTarget(this);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\t/* Shows the target element */\n\t\tshowElement = function() {\n\t\t\t$('.fn_show').each(function() {\n\t\t\t\tvar $el = $(this);\n\t\t\t\t$el.on('click.showelement', function(e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tvar $target = $($(this).data('open-target'));\n\t\t\t\t\t$target.css({'opacity': 0}).hide().stop().slideDown(300, function() {\n\t\t\t\t\t\t$target.animate({\n\t\t\t\t\t\t\topacity: 1\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\t$(this).off('click.showelement');\n\t\t\t\t});\n\t\t\t\t$el.removeClass('fn_show');\n\t\t\t});\n\t\t};\n\n\t\t/* Functionality to remove the placeholder label element */\n\t\tplaceholder = function() {\n\t\t\tif ($('.lt-ie9').length > 0) {\n\t\t\t\t$('input[placeholder]').each(function() {\n\t\t\t\t\tvar $input = $(this);\n\n\t\t\t\t\tif ($input.parent().hasClass('text-placeholder')) {\n\t\t\t\t\t\treturn; //ignore if already initiated\n\t\t\t\t\t}\n\n\t\t\t\t\t$input.wrap('
');\n\t\t\t\t\t$input.before('
' + $input.attr('placeholder') + '
');\n\n\t\t\t\t\tvar $placeholder = $input.parent().find('.placeholder');\n\n\t\t\t\t\t$placeholder.on('click.placeholder', function() {\n\t\t\t\t\t\t$input.trigger('focus');\n\t\t\t\t\t});\n\n\t\t\t\t\t$input.on('keyup.placeholder blur.placeholder', function() {\n\t\t\t\t\t\tif (!$input.attr('placeholder')) {\n\t\t\t\t\t\t\t$placeholder.hide();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ($input.attr('value').length === 0) {\n\t\t\t\t\t\t\t$placeholder.show();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$placeholder.hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\t/* Formatter for various numeric methods */\n\t\tformatter = {\n\t\t\ttoCurrency: function(number, decimals, decimalSep, thousandsSep) {\n\t\t\t\t/* usage: NAMESPACE.util.formatter.toCurrency(1400, 2, '.', ',') returns 1,400.00 */\n\n\t\t\t\tvar c = isNaN(decimals) ? 2 : Math.abs(decimals), //if decimal is zero we must take it, it means user does not want to show any decimal\n\t\t\t\t\td = decimalSep || '.', //if no decimal separator is passed we use the dot as default decimal separator (we MUST use a decimal separator)\n\n\t\t\t\t\tt = (typeof thousandsSep === 'undefined') ? ',' : thousandsSep, //if you don't want to use a thousands separator you can pass empty string as thousandsSep value\n\n\t\t\t\t\tsign = (number < 0) ? '-' : '',\n\n\t\t\t\t\t//extracting the absolute value of the integer part of the number and converting to string\n\t\t\t\t\ti = parseInt(number = Math.abs(number).toFixed(c), 10) + '',\n\n\t\t\t\t\tj = ((j = i.length) > 3) ? j % 3 : 0;\n\t\t\t\treturn sign + (j ? i.substr(0, j) + t : '') + i.substr(j).replace(/(\\d{3})(?=\\d)/g, '$1' + t) + (c ? d + Math.abs(number - i).toFixed(c).slice(2) : '');\n\t\t\t},\n\t\t\tabbrNum: function(number, decimals) {\n\t\t\t\t// 2 decimal places => 100, 3 => 1000, etc\n\t\t\t\tdecimals = Math.pow(10, decimals);\n\n\t\t\t\t// Enumerate number abbreviations\n\t\t\t\tvar abbrev = ['k', 'm', 'b', 't'];\n\n\t\t\t\t// Go through the array backwards, so we do the largest first\n\t\t\t\tfor (var i = abbrev.length - 1; i >= 0; i -= 1) {\n\n\t\t\t\t\t// Convert array index to \"1000\", \"1000000\", etc\n\t\t\t\t\tvar size = Math.pow(10, (i + 1) * 3);\n\n\t\t\t\t\t// If the number is bigger or equal do the abbreviation\n\t\t\t\t\tif (size <= number) {\n\t\t\t\t\t\t// Here, we multiply by decimals, round, and then divide by decimals.\n\t\t\t\t\t\t// This gives us nice rounding to a particular decimal place.\n\t\t\t\t\t\tnumber = Math.round(number * decimals / size) / decimals;\n\n\t\t\t\t\t\t// Add the letter for the abbreviation\n\t\t\t\t\t\tnumber += abbrev[i];\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn number;\n\t\t\t},\n\t\t\troundNum: function(number, decimals) {\n\t\t\t\treturn Math.round(number * Math.pow(10, decimals)) / Math.pow(10, decimals);\n\t\t\t}\n\t\t};\n\n\t\t/* Return a property with the correct prefix for this browser */\n\t\tprefixed = {\n\t\t\ttransitionend: (function() {\n\t\t\t\tvar transEndEventNames = {\n\t\t\t\t\t'WebkitTransition' : 'webkitTransitionEnd',\n\t\t\t\t\t'MozTransition' : 'transitionend',\n\t\t\t\t\t'OTransition' : 'oTransitionEnd',\n\t\t\t\t\t'msTransition' : 'MSTransitionEnd',\n\t\t\t\t\t'transition' : 'transitionend'\n\t\t\t\t};\n\t\t\t\treturn transEndEventNames[Modernizr.prefixed('transition')];\n\t\t\t}())\n\t\t};\n\n\t\tisDevice = {\n\t\t\tAndroid: function() {\n\t\t\t\treturn navigator.userAgent.match(/Android/i);\n\t\t\t},\n\t\t\tAndroidChrome: function() {\n\t\t\t\treturn window.chrome && navigator.userAgent.match(/Android/i);\n\t\t\t},\n\t\t\tBlackBerry: function() {\n\t\t\t\treturn navigator.userAgent.match(/BlackBerry/i);\n\t\t\t},\n\t\t\tiOS: function() {\n\t\t\t\treturn navigator.userAgent.match(/iPhone|iPad|iPod/i);\n\t\t\t},\n\t\t\tiPhone: function() {\n\t\t\t\treturn navigator.userAgent.match(/iPhone/i);\n\t\t\t},\n\t\t\tiPad: function() {\n\t\t\t\treturn navigator.userAgent.match(/iPad/i);\n\t\t\t},\n\t\t\tOpera: function() {\n\t\t\t\treturn navigator.userAgent.match(/Opera Mini/i);\n\t\t\t},\n\t\t\tWindows: function() {\n\t\t\t\treturn navigator.userAgent.match(/IEMobile/i);\n\t\t\t},\n\t\t\tanyPhone: function() {\n\t\t\t\tvar isany = (isDevice.Android() || isDevice.BlackBerry() || isDevice.iPhone() || isDevice.Opera() || isDevice.Windows());\n\t\t\t\treturn (isany !== null);\n\t\t\t},\n\t\t\tany: function() {\n\t\t\t\tvar isany = (isDevice.Android() || isDevice.BlackBerry() || isDevice.iOS() || isDevice.Opera() || isDevice.Windows());\n\t\t\t\treturn (isany !== null);\n\t\t\t},\n\t\t\ttouch: function() {\n\t\t\t\treturn 'ontouchstart' in window || 'onmsgesturechange' in window;\n\t\t\t}\n\t\t};\n\n\t\tidentifyUserAgent = function () {\n\t\t\t//uses isDevice in local scope, to add classes to the HTML tag\n\t\t\t//\tthis means that we can use CSS to identify (handle) different user agents\n\t\t\t//assumes: jQuery dependancy + only one user-agent is possible\n\n\t\t\tif (isDevice.Android()) {\n\t\t\t\t$('html').addClass('d-android');\n\t\t\t} else if (isDevice.BlackBerry()) {\n\t\t\t\t$('html').addClass('d-blackberry');\n\t\t\t} else if (isDevice.iOS()) {\n\t\t\t\t$('html').addClass('d-ios');\n\t\t\t} else if (isDevice.Opera()) {\n\t\t\t\t$('html').addClass('d-opera');\n\t\t\t} else if (isDevice.Windows()) {\n\t\t\t\t$('html').addClass('d-windows');\n\t\t\t} else {\n\t\t\t\t$('html').addClass('d-other'); //something we're not checking, maybe desktop?\n\t\t\t}\n\n\t\t\tif (isDevice.any()) {\n\t\t\t\t$('html').addClass('d-any');\n\t\t\t}\n\n\t\t\tif (isDevice.touch()) {\n\t\t\t\t$('html').addClass('d-touch');\n\t\t\t}\n\n\t\t\t// Adding this for IE11 detection\n\t\t\tfunction getInternetExplorerVersion(){\n\t\t\t\tvar rv = -1;\n\t\t\t\tif (navigator.appName == 'Microsoft Internet Explorer'){\n\t\t\t\t\tvar ua = navigator.userAgent;\n\t\t\t\t\tvar re = new RegExp(\"MSIE ([0-9]{1,}[\\.0-9]{0,})\");\n\t\t\t\t\tif (re.exec(ua) != null)\n\t\t\t\t\trv = parseFloat( RegExp.$1 );\n\t\t\t\t}\n\t\t\t\telse if (navigator.appName == 'Netscape'){\n\t\t\t\t\tvar ua = navigator.userAgent;\n\t\t\t\t\tvar re = new RegExp(\"Trident/.*rv:([0-9]{1,}[\\.0-9]{0,})\");\n\t\t\t\t\tif (re.exec(ua) != null)\n\t\t\t\t\trv = parseFloat( RegExp.$1 );\n\t\t\t\t}\n\t\t\t\treturn rv;\n\t\t\t};\n\n\t\t\tif (getInternetExplorerVersion() >= 10){\n\t\t\t\t$('html').addClass('is-ie');\n\t\t\t};\n\n\t\t\t// Adding this for Surface Pro menu hover fix\n\n\t\t\tif (isDevice.touch() && $('html').hasClass('is-ie')) {\n\t\t\t\t$('ul.nav').attr('aria-haspopup', 'true');\n\t\t\t}\n\t\t};\n\n\t\tresponsiveTelNumbers = function(scope) {\n\t\t\tvar $tels = (typeof(scope) !== 'undefined') ? $('.fn_tel') : $('.fn_tel', scope);\n\n\t\t\tif (isDevice.anyPhone()) {\n\t\t\t\t$tels.on('click.telnumbers', function(e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\twindow.location = 'tel:'+$(this).attr('data-tel-number');\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tprint = function() {\n\t\t\t$('.fn_print').on('click.print', function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\twindow.print();\n\t\t\t});\n\t\t};\n\n\t\t// A wrapper around the $.ajax method\n\t\t// Overrides the success handler and adds a minDuration property\n\t\tajax = function(options) {\n\t\t\tvar start = new Date(),\n\t\t\t\tsuccessHandler = options.success;\n\n\t\t\toptions.success = function(data, textStatus, jqXHR) {\n\t\t\t\tvar end = new Date(),\n\t\t\t\t\tduration = end - start;\n\n\t\t\t\tif (options.minDuration && duration < options.minDuration) {\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tsuccessHandler(data, textStatus, jqXHR);\n\t\t\t\t\t}, options.minDuration - duration);\n\t\t\t\t} else {\n\t\t\t\t\tsuccessHandler(data, textStatus, jqXHR);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\treturn $.ajax(options);\n\t\t};\n\n\t\t// Adds fix-fixed to body once iOS keyboard has been activated as iOS has issues with fixed position elements\n\t\tfixFixedOnIOS = function(){\n\t\t\tif (isDevice.iOS()) {\n\t\t\t\tvar $body = $('body');\n\n\t\t\t\t$(document).on('focus', 'input, textarea, select', function() {\n\t\t\t\t\t$body.addClass('fix-fixed');\n\t\t\t\t});\n\n\t\t\t\t$(document).on('blur', 'input, textarea, select', function() {\n\t\t\t\t\t$body.removeClass('fix-fixed');\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\n\t\tgetParameterByName = function(queryStringName) {\n\t\t\tvar name = queryStringName.replace(/[\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\n\t\t\tvar regex = new RegExp('[\\\\?&]' + name + '=([^&#]*)'),\n\t\t\t\tresults = regex.exec(location.search);\n\t\t\treturn results === null ? '' : decodeURIComponent(results[1].replace(/\\+/g, ' '));\n\t\t};\n\n\t\taddQueryStringToPath = function(name, value) {\n\t\t\tvar path = window.location.pathname + window.location.search;\n\n\t\t\tif(window.location.search !== '') {\n\t\t\t\tpath = path + '&' + name + '=' + value;\n\t\t\t} else {\n\t\t\t\tpath = path + '?' + name + '=' + value;\n\t\t\t}\n\n\t\t\treturn path;\n\t\t};\n\n\t\taddQueryStringToReturnUrl = function(_url, name, value) {\n\t\t\tvar url;\n\n\t\t\tif (_url.indexOf(encodeURIComponent('?')) === -1) {\n\t\t\t\turl = _url + encodeURIComponent('?' + name + '=' + value);\n\t\t\t} else {\n\t\t\t\turl = _url + encodeURIComponent('&' + name + '=' + value);\n\t\t\t}\n\n\t\t\treturn url;\n\t\t};\n\n\t\taddHashToReturnUrl = function(_url, string) {\n\t\t\tvar url;\n\n\t\t\tif (_url.indexOf(encodeURIComponent('#')) === -1) {\n\t\t\t\turl = _url + encodeURIComponent('#' + string);\n\t\t\t} else {\n\t\t\t\turl = _url.substr(0, _url.indexOf(encodeURIComponent('#'))) + encodeURIComponent('#' + string);\n\t\t\t}\n\n\t\t\treturn url;\n\t\t};\n\n\t\tisNumber = function(value) {\n\t\t\tvar returnVal = ! isNaN (value-0) && value !== null && value !== '' && value !== false;\n\t\t\treturn returnVal;\n\t\t};\n\n\t\tisAustralianPostcode = function(value) {\n\t\t\tvar postcodeRegex = /(^\\d{4}$)/,\n\t\t\t\tretval = false,\n\t\t\t\tmatch = value.match(postcodeRegex);\n\n\t\t\tif(match !== null && match !== undefined) {\n\t\t\t\tif(match.length > 0) {\n\t\t\t\t\tretval = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn retval;\n\t\t};\n\n\t\tgetCookie = function(cookieName) {\n\t\t\tif (document.cookie.length > 0) {\n\t\t\t\tvar cStart = document.cookie.indexOf(cookieName + '=');\n\t\t\t\tif (cStart !== -1) {\n\t\t\t\t\tcStart = cStart + cookieName.length + 1;\n\t\t\t\t\tvar cEnd = document.cookie.indexOf(';', cStart);\n\n\t\t\t\t\tif (cEnd === -1) {\n\t\t\t\t\t\tcEnd = document.cookie.length;\n\t\t\t\t\t}\n\t\t\t\t\treturn unescape(document.cookie.substring(cStart, cEnd));\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn '';\n\t\t};\n\n\t\tsetCookie = function(cookieName, value) {\n\t\t\tvar cookieValue = escape(value);\n\t\t\tdocument.cookie = cookieName + '=' + cookieValue + ';domain=.racq.com.au;path=/;expires=Mon, 21-Oct-2024 01:00:00 GMT';\n\t\t};\n\n\t\tfixWidthToViewport = function(el) {\n\n\t\t\tvar width = function(item) {\n\t\t\t\tvar viewportWidth = $(window).width();\n\t\t\t\t$(item).css('max-width', viewportWidth);\n\t\t\t};\n\n\t\t\t// Accepts an array if provided.\n\t\t\tif (el && Array.isArray(el) === true) {\n\t\t\t\tfor(var i=0;i input[type=checkbox]'),\n\t\t\t\t\t$accordionContainer = $currentItem.find('.accordions'),\n\t\t\t\t\t$accordionLink = $currentItem.find('.expandcollapse'),\n\t\t\t\t\t$accordionContent = $currentItem.find('.accordions .ec-content');\n\n\t\t\t\t//\n\t\t\t\t// EVENT - clicking the parent checkbox\n\t\t\t\t//\n\t\t\t\t$parentCheckbox.change(function() {\n\n\t\t\t\t\tvar isChecked = this.checked,\n\n\t\t\t\t\t\t$accordionSubscriptions = $currentItem.find('.accordions .subscriptions ul.options');\n\n\t\t\t\t\t// apply checked/unchecked to all children items\n\t\t\t\t\t$accordionSubscriptions.each(function() {\n\t\t\t\t\t\tvar $item = $(this).find('input[type=checkbox]');\n\t\t\t\t\t\t$item.prop('checked', isChecked);\n\t\t\t\t\t});\n\n\t\t\t\t\t// set class on accordion container\n\t\t\t\t\tisChecked ? $accordionContainer.addClass('contains-checked') : $accordionContainer.removeClass('contains-checked');\n\n\t\t\t\t});\n\n\n\t\t\t\t//\n\t\t\t\t// EVENT - clicking the accordion link\n\t\t\t\t//\n\t\t\t\t$accordionLink.click(function() {\n\t\t\t\t\tvar $accordion = $(this).closest('.accordions');\n\t\t\t\t\tvar $accordionLink = $accordion.find('.expandcollapse');\n\n\t\t\t\t\t$accordionLink.hasClass('is-expanded') \n\t\t\t\t\t\t? $accordionLink.text('Hide all categories') \n\t\t\t\t\t\t: $accordionLink.text('Show all categories');\n\n\t\t\t\t\t$accordion.find('.accordion-item').trigger('update.equalHeights');\n\t\t\t\t});\n\n\n\t\t\t\t//\n\t\t\t\t// EVENT - clicking sub category subscription items\n\t\t\t\t//\n\t\t\t\t$accordionContent.find('.subscriptions ul li input[type=checkbox]').click(function() {\n\n\t\t\t\t\tvar isChecked = this.checked,\n\t\t\t\t\t\tparentChecked = $parentCheckbox.prop('checked'),\n\t\t\t\t\t\tchildrenItems = $accordionContent.find('.subscriptions ul li'),\n\t\t\t\t\t\tallSubsUnchecked = true;\n\n\t\t\t\t\tchildrenItems.each(function() {\n\t\t\t\t\t\tvar itemChecked = $(this).find('input[type=checkbox]').prop('checked');\n\n\t\t\t\t\t\tif (itemChecked) {\n\t\t\t\t\t\t\tallSubsUnchecked = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tif (!parentChecked && isChecked) {\n\t\t\t\t\t\t$parentCheckbox.prop('checked', true);\n\t\t\t\t\t\t$accordionContainer.addClass('contains-checked');\n\t\t\t\t\t}\n\n\t\t\t\t\tif (allSubsUnchecked) {\n\t\t\t\t\t\t$parentCheckbox.prop('checked', false);\n\t\t\t\t\t\t$accordionContainer.removeClass('contains-checked');\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t});\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init,\n\t\t\tpanelSubmitStart: panelSubmitStart,\n\t\t\tpanelSubmitEnd: panelSubmitEnd,\n\t\t};\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * AJAX PAGE FRAGMENT\n * Sends some data to the server and updates a fragment of the page\n * ========================================================================== */\n\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.ajaxPageFragment = (function() {\n\n\t\tvar showInlinePreloader;\n\t\t\n\t\tvar init = function() {\n\n\t\t\t$('.fn_ajax_page_fragment').each(function(i, el) {\n\t\t\t\tvar $mod = $(el),\n\t\t\t\t\t$fragment = $mod.find('.ajax-page-fragment__fragment'),\n\t\t\t\t\tservice = $mod.attr('data-ajax-page-fragment-service'),\n\t\t\t\t\tpositionPreloader = $mod.hasClass('preloader--position-near-input'),\n\t\t\t\t\t$spinner = $mod.find('.preloader__spinner'),\n\t\t\t\t\tspinner = NAMESPACE.spinner($spinner),\n\t\t\t\t\tupdateType = $mod.attr('data-ajax-page-fragment-type') || 'normal',\n\t\t\t\t\tjqxhr,\n\t\t\t\t\tgetQueryStringFromInputs,\n\t\t\t\t\tupdateQueryString,\n\t\t\t\t\tsendRequest,\n\t\t\t\t\tqueryStringOnPageLoad,\n\t\t\t\t\t_previousSelectId = '';\n\n\t\t\t\twindow.History.init();\n\n\t\t\t\t$mod.data('fragment-id', i);\n\n\t\t\t\tgetQueryStringFromInputs = function() {\n\t\t\t\t\t// this way because if we use jQuery serialize it grabs name field and in .net that is a long string.\n\t\t\t\t\tvar returnValue = '';\n\t\t\t\t\t$mod.find('input, select').each(function(index, item){\n\t\t\t\t\t\tif(index > 0) {\n\t\t\t\t\t\t\treturnValue += '&';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar $item = $(item);\n\t\t\t\t\t\tvar val = '';\n\t\t\t\t\t\tif($item.attr('type') === 'checkbox') {\n\t\t\t\t\t\t\tval = $item.is(':checked');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tval = $item.val();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturnValue += $(item).attr('id') + '=' + val;\n\t\t\t\t\t});\n\t\t\t\t\treturn returnValue;\n\t\t\t\t};\n\t\t\t\tqueryStringOnPageLoad = getQueryStringFromInputs();\n\n\t\t\t\tupdateQueryString = function(value) {\n\t\t\t\t\t//remove # from end of link so the state change will fire. # will stay in the url though.\n\t\t\t\t\tvar url = value.split('#')[0];\n\n\t\t\t\t\t$mod.find('.expandcollapse[data-ajax-page-fragment-name]').each(function() {\n\t\t\t\t\t\tvar $mod = $(this);\n\t\t\t\t\t\turl += '&' + $mod.attr('data-ajax-page-fragment-name') + '=' + $mod.hasClass('is-expanded');\n\t\t\t\t\t});\n\n\t\t\t\t\turl = url.replace(/fragment=[0-9]+&/, '');\n\t\t\t\t\turl = window.location.pathname + '?fragment='+ $mod.data('fragment-id') + '&' + url;\n\n\t\t\t\t\twindow.History.pushState(null, window.document.title, url);\n\t\t\t\t};\n\n\t\t\t\tsendRequest = function(url) {\n\t\t\t\t\tif(updateType === 'modal') {\n\t\t\t\t\t\t$('.fragment--loaded').removeClass('fragment--loaded');\n\t\t\t\t\t\t$fragment.html(''); // clear the old content if it's been loaded\n\t\t\t\t\t}\n\n\t\t\t\t\t// Cancel any pending requests for this module\n\t\t\t\t\tif (jqxhr) {\n\t\t\t\t\t\tjqxhr.abort();\n\t\t\t\t\t}\n\n\t\t\t\t\tspinner.startAnimation();\n\t\t\t\t\t$mod.addClass('preloader--active');\n\t\t\t\t\t$mod.height($mod.height()); // so we don't get any flicker of heights if module has not been init yet. This way we keep the height at least until finished.\n\t\t\t\t\tjqxhr = NAMESPACE.util.ajax({\n\t\t\t\t\t\tminDuration: 1250,\n\t\t\t\t\t\turl: url,\n\t\t\t\t\t\terror: function() {\n\t\t\t\t\t\t\t$mod.removeClass('preloader--active');\n\t\t\t\t\t\t\tspinner.stopAnimation();\n\t\t\t\t\t\t\t$mod.height('inherit');\n\t\t\t\t\t\t\tjqxhr = null;\n\t\t\t\t\t\t},\n\n\n\t\t\t\t\t\tsuccess: function(data) {\n\n\t\t\t\t\t\t\t$mod.addClass('preloader--is-loaded');\n\t\t\t\t\t\t\tvar $data = $(data);\n\n\t\t\t\t\t\t\tif($data.hasClass('ajax-content')) {\n\t\t\t\t\t\t\t\t$data = $data.children();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif($data.find('.ajax-content').length > 0) {\n\t\t\t\t\t\t\t\t\t$data = $data.find('.ajax-content').children();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t$data = data;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t$fragment.html($data);\n\t\t\t\t\t\t\tif ($fragment.find('.fn_modal-close').length > 0){\n\t\t\t\t\t\t\t\tNAMESPACE.modal.close();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Reinitialise JS mods inside the fragment\n\t\t\t\t\t\t\t\tNAMESPACE.forms.multipleSelect();\n\t\t\t\t\t\t\t\t$fragment.find('select').simpleSelect();\n\t\t\t\t\t\t\t\tNAMESPACE.forms.submitOnChange();\n\t\t\t\t\t\t\t\tNAMESPACE.util.responsiveTelNumbers();\n\t\t\t\t\t\t\t\tNAMESPACE.equalHeights.init();\n\t\t\t\t\t\t\t\tNAMESPACE.accordion.init(); //order matters, make sure this is before expandCollapse.init()\n\t\t\t\t\t\t\t\tNAMESPACE.expandCollapse.init();\n\t\t\t\t\t\t\t\tNAMESPACE.expandCollapseShowHide.init();\n\t\t\t\t\t\t\t\tNAMESPACE.responsiveTable.init();\n\t\t\t\t\t\t\t\tNAMESPACE.selectToButtons.init();\n\t\t\t\t\t\t\t\tNAMESPACE.formShowHide.init();\n\t\t\t\t\t\t\t\tNAMESPACE.util.scrollPage();\n\t\t\t\t\t\t\t\tNAMESPACE.flexslider.init();\n\t\t\t\t\t\t\t\tNAMESPACE.mqad.init();\n\t\t\t\t\t\t\t\tNAMESPACE.linkBlocks();\n\t\t\t\t\t\t\t\t$(window).trigger('ajax_page_fragment_reloaded')\n\t\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t$mod.removeClass('preloader--active preloader--is-loaded');\n\t\t\t\t\t\t\t\t$mod.height('inherit');\n\n\t\t\t\t\t\t\t}, 1);\n\t\t\t\t\t\t\tspinner.stopAnimation();\n\t\t\t\t\t\t\tjqxhr = null;\n\n\t\t\t\t\t\t\tif(_previousSelectId !== '') {\n\t\t\t\t\t\t\t\t$('#'+_previousSelectId).focus();\n\t\t\t\t\t\t\t\t_previousSelectId = '';\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif(updateType === 'modal') {\n\t\t\t\t\t\t\t\t$('.modal.is-active').addClass('fragment--loaded');\n\t\t\t\t\t\t\t\t$(window).trigger('resize.modal');\n\t\t\t\t\t\t\t\t$(window).trigger('scroll.modal');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t};\n\n\t\t\t\t$(window).on('statechange', function() {\n\t\t\t\t\tvar state = window.History.getState(),\n\t\t\t\t\t\turl = state.url,\n\t\t\t\t\t\tindexOfQueryString = url.indexOf('?'),\n\t\t\t\t\t\tqueryString = url.substr(indexOfQueryString + 1),\n\t\t\t\t\t\trequestUrl;\n\n\t\t\t\t\tif (service.indexOf('?') === -1) {\n\t\t\t\t\t\trequestUrl = service + '?';\n\t\t\t\t\t} else {\n\t\t\t\t\t\trequestUrl = service + '&';\n\t\t\t\t\t}\n\n\t\t\t\t\tif (NAMESPACE.util.getParameterByName('fragment') == $mod.data('fragment-id')) {\n\t\t\t\t\t\tif (indexOfQueryString !== -1) {\n\t\t\t\t\t\t\tsendRequest(requestUrl + queryString);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsendRequest(requestUrl + queryStringOnPageLoad);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(updateType === 'change') {\n\t\t\t\t\t$mod.on('change', 'select, input[type=checkbox]', function(){\n\t\t\t\t\t\t_previousSelectId = $(this).attr('id');\n\n\t\t\t\t\t\tif (positionPreloader) {\n\t\t\t\t\t\t\t$spinner.css('top', $(this).offset().top - $mod.offset().top);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tupdateQueryString(getQueryStringFromInputs());\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t$mod.on('click', 'input[type=\"submit\"]', function(e) {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tif (positionPreloader) {\n\t\t\t\t\t\t$spinner.css('top', '');\n\t\t\t\t\t}\n\n\t\t\t\t\tupdateQueryString(getQueryStringFromInputs());\n\t\t\t\t});\n\n\t\t\t\t$mod.on('keypress', function(e) {\n\t\t\t\t\tif (e.which === 13) {\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tif (positionPreloader) {\n\t\t\t\t\t\t\t$spinner.css('top', '');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tupdateQueryString(getQueryStringFromInputs());\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t$mod.on('click', '.ajax-page-fragment__link', function(e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tvar $link = $(this),\n\t\t\t\t\t\thref = $link.attr('href'),\n\t\t\t\t\t\tqueryString = href.substr(href.indexOf('?') + 1);\n\n\t\t\t\t\tif (positionPreloader) {\n\t\t\t\t\t\t$spinner.css('top', '');\n\t\t\t\t\t}\n\n\t\t\t\t\tupdateQueryString(queryString);\n\t\t\t\t});\n\n\t\t\t});\n\n\t\t\t$('.fn_ajax_page_fragment_trigger_link').each(function() {\n\t\t\t\tvar $el = $(this);\n\t\t\t\t\t$el.on('click', function(e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tvar $this = $(this),\n\t\t\t\t\t\t\t$target = $($this.data('fragment-target-link'));\n\t\t\t\t\t\t$target.trigger('click');\n\t\t\t\t\t});\n\t\t\t});\n\n\t\t\t$('.fn_spinner-trigger-link').each(function() {\n\t\t\t\tvar $link = $(this).removeClass('fn_spinner-trigger-link');\n\n\t\t\t\t$link.on('click', function(e) {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tvar url = this.href;\n\n\t\t\t\t\tNAMESPACE.util.ajax({\n\t\t\t\t\t\tminDuration: 1000,\n\t\t\t\t\t\tmethod: 'GET',\n\t\t\t\t\t\tbeforeSend: function() {\n\t\t\t\t\t\t\tif($link.hasClass('cta')) {\n\t\t\t\t\t\t\t\t$link.prepend($('
'));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$link.prepend($('
'));\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif($link.hasClass('has-spinner--replace')){\n\t\t\t\t\t\t\t\t$link.replaceWith($('
'));\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tif($link.hasClass('has-spinner--overlayed')){\n\t\t\t\t\t\t\t\t$link.addClass('is-deactivated');\n\t\t\t\t\t\t\t\t$link.attr('disabled', 'disabled');\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsuccess: function() {\n\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t window.location.href = url;\n\t\t\t\t\t\t },0);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init,\n\t\t\tshowInlinePreloader: showInlinePreloader\n\t\t};\n\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * AUTOCOMPLETE\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.autocomplete = function() {\n\t\t$('.fn_autocomplete').each(function(i, el){\n\t\t\tvar $input = $(el),\n\t\t\t\tsrc = $input.data('autocomplete-src') || false,\n\t\t\t\toptionalClass = $input.data('optional-class') || '',\n\t\t\t\t$searchButton = $input.closest('.search-form').find('input[type=\"submit\"], a.search');\n\n\t\t\tif(!src) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// exit if the autocomplete JS from funnelback failed to load\n\t\t\tif(typeof $.fn.fbcompletion !== 'function' || typeof $.fn.autocomplete !== 'function') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$input.fbcompletion({\n\t\t\t\t'enabled': 'enabled',\n\t\t\t\t'collection': 'racq-web',\n\t\t\t\t'program': src,\n\t\t\t\t'format': 'extended',\n\t\t\t\t'alpha': 0.5,\n\t\t\t\t'show': 5,\n\t\t\t\t'sort': 0,\n\t\t\t\t'length': 3,\n\t\t\t\t'delay': 0,\n\t\t\t\t'profile': '',\n\t\t\t\t'logging': 'disable',\n\t\t\t\t'dwellLogging': 'disable',\n\t\t\t\t'selectLogging': 'disable',\n\t\t\t\t'returntype': 'jsonp'\n\t\t\t});\n\n\t\t\tvar $acWidget = $input.autocomplete('widget'),\n\t\t\t\tisModal = ($input.closest('#modal').length > 0);\n\n\t\t\t$acWidget.addClass('ui-autocomplete-funnelback');\n\n\t\t\tif(isModal) {\n\t\t\t\t$acWidget.addClass('is-modal-autocomplete');\n\t\t\t} else {\n\t\t\t\t$acWidget.addClass('is-inpage-autocomplete');\n\t\t\t}\n\n\t\t\tvar resetAutocompleteSizePos = function() {\n\t\t\t\t$acWidget.css('width', '');\n\t\t\t};\n\n\t\t\tvar setAutocompleteSizePos = function() {\n\t\t\t\tvar width = $input.width() + parseInt($input.css('padding-left'), 10) + parseInt($input.css('padding-right'), 10);\n\n\t\t\t\tif(isModal) {\n\t\t\t\t\t$acWidget.css({ top: '-=1' });\n\t\t\t\t\twidth += 2;\n\t\t\t\t} else {\n\t\t\t\t\t$acWidget.css({ top: '-=1' });\n\t\t\t\t}\n\n\t\t\t\t$acWidget.css('width', width);\n\t\t\t};\n\n\t\t\tvar onWindowResize = function() {\n\t\t\t\t$('.ui-autocomplete').css('display', 'none');\n\t\t\t\tresetAutocompleteSizePos();\n\t\t\t\t$(window).off('resize.autocomplete');\n\t\t\t};\n\n\t\t\tvar addOptionalClass = function() {\n\t\t\t\t$('.ui-autocomplete').addClass(optionalClass);\n\t\t\t};\n\n\t\t\tvar removeOptionalClass = function() {\n\t\t\t\t$('.ui-autocomplete').removeClass(optionalClass);\n\t\t\t};\n\n\t\t\t$input.on('autocompleteopen', function(){\n\t\t\t\t$(window).on('resize.autocomplete', onWindowResize);\n\t\t\t\tsetAutocompleteSizePos();\n\t\t\t\taddOptionalClass();\n\t\t\t});\n\n\t\t\t$input.on('autocompleteclose', function(){\n\t\t\t\tresetAutocompleteSizePos();\n\t\t\t\tremoveOptionalClass();\n\t\t\t\t$(window).off('resize.autocomplete');\n\t\t\t});\n\n\t\t\tif ($searchButton.length > 0) {\n\t\t\t\t$input.on('autocompleteselect', function(event, ui) {\n\t\t\t\t\t$input.val(ui.item.value);\n\t\t\t\t\t$searchButton.click();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t$input.on('keypress', function(e) {\n\t\t\t\tif (e.which === 13) {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t$('.ui-autocomplete').css('display', 'none');\n\n\t\t\t\t\tif ($searchButton.length > 0) {\n\t\t\t\t\t\t$searchButton.click();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t};\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * BANK related scripts\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n 'use strict';\n\n NAMESPACE.banner = (function() {\n\n var $banner = $('#divNotificationBannerWrapper');\n\n var offsetArr = [\n {\n el: '#header #top',\n css: 'top'\n },\n {\n el: 'body > form',\n css: 'margin-top'\n }\n ];\n\n var buildCloseButton = function() {\n $banner.append('Close');\n $banner.find('.btn.close').on('click', function() {\n handleCloseButton();\n if($banner.hasClass('setCookieOnDismiss')){\n var cookieName = $banner.attr('data-cookie-name');\n SetDismissedCookie(cookieName);\n }\n });\n };\n\n var SetDismissedCookie = function(cookieName){\n if(cookieName === undefined){\n cookieName = \"NotificationBannerDismissed\"; // Default Cookie Name\n }\n document.cookie = cookieName + \"=true; expires=0; path=/\";\n }\n\n var hideBanner = function(time, animate) {\n /**\n * @param {number} time - Animation time.\n * @param {boolean} animate - Animate banner or not.\n */\n\n runOffsets(offsetArr, 0);\n $banner.removeClass('showing');\n $('body').removeClass('banner-showing');\n\n var animationTime = (time) ? time : 250;\n \n showing = false;\n\n if (animate && animate === true) {\n var height = $banner.outerHeight();\n\n $banner.css('transition', 'all ' + animationTime + 'ms ease');\n $banner.css('transform', 'translateY(' + (height * -1) + 'px)');\n $banner.css('margin-top', (height * -1) + 'px');\n\n setTimeout(function() {\n $banner.hide();\n }, animationTime);\n\n return;\n }\n\n $banner.hide();\n };\n \n var handleCloseButton = function() {\n hideBanner(100, true);\n };\n\n var verifyIconExists = function(url) {\n $.ajax({\n url: url\n })\n .done(function(data, status, xhr) {\n if (xhr.status === (200 || 304)) {\n insertIcon(url);\n }\n });\n };\n\n var insertIcon = function(url) {\n $banner.append('');\n $banner.addClass('has-icon');\n };\n\n var buildBanner = function() {\n showing = true;\n var iconUrl = $banner.data('img-url');\n var iconPresent = !((typeof iconUrl === 'undefined') || ((iconUrl.length == 0)));\n var bannerHeight = $banner.outerHeight();\n \n if (iconPresent) {\n verifyIconExists(iconUrl)\n }\n\n buildCloseButton();\n\n $banner.addClass('showing');\n $('body').addClass('banner-showing');\n updateOffsets();\n runOffsets(offsetArr);\n $banner.show();\n };\n\n var runOffsets = function(offsetArr, ht) {\n var height = (ht == 0) ? 0 : $banner.outerHeight();\n for (var i = 0; i < offsetArr.length; i++) {\n var obj = offsetArr[i]\n applyBannerOffset(obj.el, height, obj.css);\n }\n }\n\n var applyBannerOffset = function(el, ht, css) {\n var cssRule = (css) ? css : 'top';\n var height = (ht == 0) ? 0 : $banner.outerHeight();\n // console.log('apply banner offset', height);\n // console.log('banner offset - ' + el + ' - height - ' + ht + ' - css rule - ' + css);\n $(el).css(cssRule, height + 'px');\n };\n\n var checkBannerOffset = $.debounce(500, function() {\n console.log('showing', showing);\n if (showing === true) {\n runOffsets(offsetArr);\n }\n });\n\n var init = function() {\n buildBanner();\n\n $(window).on('resize', function() {\n NAMESPACE.util.fixWidthToViewport(['#top','#divNotificationBannerWrapper']);\n // console.log('resized');\n updateOffsets();\n checkBannerOffset();\n });\n };\n \n var clearOffset = function(){\n var object = $(offsetArr[0].el);\n var cssRule = offsetArr[0].css ? offsetArr[0].css : 'top';\n $(offsetArr[0].el).css(cssRule, 0);\n }\n\n var updateOffsets = function(){\n clearOffset();\n if(window.matchMedia(NAMESPACE.mediaQueries.bp('l', 0)).matches){\n if($('#header').hasClass('header--simple')){\n offsetArr[0].el = '#header';\n }\n else{\n offsetArr[0].el = '#header #top';\n } \n }\n else{\n offsetArr[0].el = '#header #top';\n }\n }\n\n var showing = false;\n\n return {\n init: init\n };\n\n }());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * CHARACTER COUNTER\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\t'use strict';\n\n\tNAMESPACE.characterCounter = (function() {\n\t\tvar init = function() {\n\t\t\t$('.fn_characterCounter').each(function(){\n\t\t\t\tvar $container = $(this),\n\t\t\t\t\t$textarea = $container.find('textarea'),\n\t\t\t\t\tcharacterLimit = $textarea.data('character-limit'),\n\t\t\t\t\t$chars;\n\n\t\t\t\t$container.append('');\n\t\t\t\t$chars = $container.find('.chars');\n\n\t\t\t\t$textarea.keyup(function() {\n\t\t\t\t\tvar x = $textarea.val(),\n\t\t\t\t\t\tnewLines = x.match(/\\r?\\n/g),\n\t\t \t\taddition = (newLines ? newLines.length : 0);\n\n\t\t \t// cut the text off when limit reached\n\t\t \t// add to character count carrage return\n\t\t \tif (x.length > characterLimit) {\n\t\t \t\t var e = $textarea[0],\n\t\t \t\t\tstart = e.selectionStart,\n\t\t\t\t\t\t\tend = e.selectionEnd;\n\n\t\t\t\t $(this).val(x.slice(0, characterLimit + addition));\n\n\t\t\t\t // Reset cursor position, as it may have been lost\n\t\t\t\t // after the value is set\n\t\t\t\t e.setSelectionRange(start, end);\n\t\t\t\t }\n\n\t\t \t$chars.val(x.slice(0, characterLimit));\n\n\t\t \tvar updateText = Math.max(0, characterLimit - x.length + addition);\n\t\t \t$chars.text(updateText + \" characters remaining\");\n\t \t});\n\n\t \t$textarea.trigger('keyup');\n\t\t\t});\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init\n\t\t};\n\t}());\n}(RACQ_JS));\n\n/* ==========================================================================\n * COLUMNS\n * Equal height plugin is applied automatically to C1/C2 column layout module\n * if it contains the Twitter module or Discounts module\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tvar EQUAL_HEIGHT_MODS = '';\n\n\tNAMESPACE.columns = function() {\n\t\t$('.l-cols').each(function() {\n\t\t\tvar $mod = $(this),\n\t\t\t\t$items = $mod.find(EQUAL_HEIGHT_MODS),\n\t\t\t\tisEnabled = false,\n\t\t\t\tmqAttach = 'xs',\n\t\t\t\tmqDetach = '0,xxs',\n\t\t\t\tcalcHeights,\n\t\t\t\tonAttach,\n\t\t\t\tonDetach;\n\n\t\t\tif ($items.length === 2) {\n\t\t\t\tcalcHeights = function() {\n\t\t\t\t\tNAMESPACE.equalHeights.calculateItemsHeights($items, 2, '', $mod, false, isEnabled);\n\t\t\t\t};\n\n\t\t\t\tonAttach = function() {\n\t\t\t\t\tisEnabled = true;\n\t\t\t\t\t$(window).off('resize.columns', calcHeights).on('resize.columns', calcHeights);\n\t\t\t\t\tcalcHeights();\n\t\t\t\t};\n\n\t\t\t\tonDetach = function() {\n\t\t\t\t\tisEnabled = false;\n\t\t\t\t\t$(window).off('resize.columns', calcHeights);\n\t\t\t\t\tcalcHeights();\n\t\t\t\t};\n\n\t\t\t\tenquire.register(NAMESPACE.mediaQueries.bp(mqAttach), {\n\t\t\t\t\tmatch: onAttach\n\t\t\t\t}).register(NAMESPACE.mediaQueries.bp(mqDetach), {\n\t\t\t\t\tmatch: onDetach\n\t\t\t\t});\n\n\t\t\t\tif (!NAMESPACE.IS_RESPONSIVE) {\n\t\t\t\t\tisEnabled = true;\n\t\t\t\t\tcalcHeights();\n\t\t\t\t} else if (window.matchMedia(NAMESPACE.mediaQueries.bp(mqAttach)).matches) {\n\t\t\t\t\tonAttach();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n}(RACQ_JS));\n\n/* =============================================================================\n UTILITY LINKS DROPDOWN\n ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.contactUsDropdown = (function() {\n\t\tvar init,\n\t\t\tclose,\n\t\t\tisOpen,\n\t\t\t_isOpen = false,\n\t\t\t$button,\n\t\t\t$dropdown,\n\t\t\t$bg;\n\n\t\tinit = function() {\n\t\t\t$button = $('.mobile-contact-us > a');\n\t\t\t$dropdown = $('.contact-us-dropdown');\n\t\t\t$bg = $('.offscreen-nav-bg .bg');\n\n\t\t\t$button.on('touchstart click', function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\n\t\t\t\tif (!_isOpen) {\n\t\t\t\t\t_isOpen = true;\n\n\t\t\t\t\tif (NAMESPACE.nav.offscreen.isOpen()) {\n\t\t\t\t\t\tNAMESPACE.nav.offscreen.close();\n\t\t\t\t\t}\n\n\t\t\t\t\t$bg.on('touchstart.contactUsDropdown click.contactUsDropdown', close);\n\t\t\t\t\t$('html').addClass('contact-us-dropdown-transitioning');\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t$('html').addClass('contact-us-dropdown-open');\n\t\t\t\t\t}, 10);\n\t\t\t\t} else {\n\t\t\t\t\tclose();\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tisOpen = function() {\n\t\t\treturn _isOpen;\n\t\t};\n\n\t\tclose = function(e) {\n\t\t\tif (_isOpen) {\n\t\t\t\tif (e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\n\t\t\t\t_isOpen = false;\n\t\t\t\t$bg.off('touchstart.contactUsDropdown click.contactUsDropdown touchstart.offscreen-nav-bg click.offscreen-nav-bg', close);\n\t\t\t\t$('html').removeClass('contact-us-dropdown-open');\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$('html').removeClass('contact-us-dropdown-transitioning');\n\t\t\t\t}, 250);\n\t\t\t}\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init,\n\t\t\tclose: close,\n\t\t\tisOpen: isOpen\n\t\t};\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * DATE PICKER\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.datePicker = function() {\n\n\t\tvar showDatePicker = function($link, date, callback) {\n\t\t\tvar $header = $('.header'),\n\t\t\t\t$datePickerDiv,\n\t\t\t\toffset = $link.offset(),\n\t\t\t\tleft = offset.left - 40,\n\t\t\t\ttop = offset.top + 35,\n\t\t\t\t$maxDate = $('.btn-datepicker').attr('data-max-date'), //set max date for datepicker\n\t\t\t\t$minDate = $('.btn-datepicker').attr('data-min-date'), //set min date for datepicker\n\t\t\t\t$noDay = $('.btn-datepicker').attr('data-no-day'), //disable a day for datepicker\n\t\t\t\t$disableCurrentDay = $('.btn-datepicker').attr('disable-current-day'),\n\t\t\t\ttoday = new Date(),\n\t\t \ttoday = new Date(today.getFullYear(), today.getMonth(), today.getDate()),\n\n\t\t\t\tadjustedOffest = 0;\n\n\t\t\tif ($disableCurrentDay == today.getDay()) {\n\t\t\t\tvar $minDate = 1;\n\t\t\t}\n\n\t\t\twhile ((left + 300) > $('body').outerWidth()) {\n\t\t\t\tleft -= 10;\n\t\t\t\tadjustedOffest += 1;\n\t\t\t}\n\n\t\t\tif ($header.css('position') === 'fixed') {\n\t\t\t\ttop -= $header.height();\n\t\t\t}\n\n\t\t\t$link.datepicker('dialog', date, function(dateText, inst) {\n\t\t\t\tvar day = inst.currentDay,\n\t\t\t\t\tmonth = (inst.currentMonth + 1).toString(),\n\t\t\t\t\tyear = inst.currentYear;\n\n\t\t\t\tif (day.length === 1) {\n\t\t\t\t\tday = '0' + day;\n\t\t\t\t}\n\t\t\t\tif (month.length === 1) {\n\t\t\t\t\tmonth = '0' + month;\n\t\t\t\t}\n\n\t\t\t\tcallback(day, month, inst.currentYear);\n\t\t\t}, {\n\n\t\t\t\tdayNamesMin: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n\t\t\t\tfirstDay: 1,\n\t\t\t\tmaxDate: $maxDate,\n\t\t\t minDate: $minDate,\n\n\t\t\t //Disable a day of the week\n\t\t\t\tbeforeShowDay: function(date) {\n\n\t\t\t //Disables current day if it's today\n\t\t\t if (today.getDay() == $disableCurrentDay) {\n\t\t\t \treturn [date.getDay(), ''];\n\t\t\t \t //return [date.getDay() != $disableCurrentDay && date.getDay() != $noDay, ''];\n\t\t\t } else {\n\t\t\t \treturn [date.getDay() != $noDay, ''];\n\t\t\t }\n\t\t\t },\n\n\t\t\t}, [left, top]);\n\n\t\t\tif (adjustedOffest > 0) {\n\t\t\t\tadjustedOffest = 'offset' + adjustedOffest;\n\t\t\t} else {\n\t\t\t\tadjustedOffest = '';\n\t\t\t}\n\n\t\t\t$datePickerDiv = $('#ui-datepicker-div');\n\n\t\t\tif (!$datePickerDiv.parent().hasClass('racq-ui-theme')) {\n\t\t\t\t$datePickerDiv.wrap('
');\n\t\t\t}\n\n\t\t\t$datePickerDiv.removeClass(function(index, css) {\n\t\t\t\treturn (css.match(/\\boffset\\S+/g) || []).join(' ');\n\t\t\t});\n\n\t\t\t$datePickerDiv.css({ top: top + 'px', left: left + 'px' }).addClass(adjustedOffest);\n\t\t};\n\n\t\t$('.ctrls-holder .fn_datepicker').each(function() {\n\t\t\tvar $link = $(this).removeClass('fn_datepicker'),\n\t\t\t\t$holder = $link.closest('.ctrls-holder'),\n\t\t\t\t$day = $holder.find('.date-txt-day'),\n\t\t\t\t$month = $holder.find('.date-txt-month'),\n\t\t\t\t$year = $holder.find('.date-txt-year'),\n\t\t\t\t$input = $holder.find('input');\n\n\t\t\t$link.click(function(e) {\n\t\t\t\tvar day = $day.val(),\n\t\t\t\t\tmonth = $month.val(),\n\t\t\t\t\tyear = $year.val(),\n\t\t\t\t\tdate;\n\n\t\t\t\te.preventDefault();\n\n\t\t\t\tif (day && month && year) {\n\t\t\t\t\tdate = new Date(parseInt(year, 10), parseInt(month, 10) - 1, parseInt(day));\n\t\t\t\t} else {\n\t\t\t\t\tdate = new Date();\n\t\t\t\t}\n\n\t\t\t\tshowDatePicker($link, date, function(day, month, year) {\n\t\t\t\t\t$day.val(day).trigger('change');\n\t\t\t\t\t$month.val(month).trigger('change');\n\t\t\t\t\t$year.val(year).trigger('change');\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\n\t\t$('.date-text-one-field .fn_datepicker').each(function() {\n\t\t\tvar $link = $(this).removeClass('fn_datepicker'),\n\t\t\t\t$holder = $link.closest('.ctrl-holder'),\n\t\t\t\t$input = $holder.find('input'),\n\t\t\t\ttoday = new Date();\n\n\t\t\t$link.click(function(e) {\n\t\t\t\tvar input = $input.val(),\n\t\t\t\t\tdateParts = input.split(/[\\/\\-]/),\n\t\t\t\t\tdate;\n\n\t\t\t\te.preventDefault();\n\n\t\t\t\tif (dateParts.length === 3) {\n\t\t\t\t\tdate = new Date(parseInt(dateParts[2], 10), parseInt(dateParts[1], 10) - 1, parseInt(dateParts[0]));\n\t\t\t\t} else {\n\t\t\t\t\tdate = new Date();\n\t\t\t\t}\n\n\t\t\t\tshowDatePicker($link, date, function(day, month, year) {\n\t\t\t\t\t$input.val(day + ' / ' + month + ' / ' + year).trigger('change');\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tvar dataMessage = $('input[type=\"text\"][data-message=\"true\"]');\n\n\t\t\tdataMessage.on(\"change\", function() {\n\t\t\t\tvar date = moment().format('DD/MM/YYYY'),\n\t\t\t\t\tdate2 = moment().format('DD / MM / YYYY'),\n\t\t\t\t\t$input = $holder.find('input'),\n\t\t\t\t\tinput = $input.val();\n\n\t\t\t\tif (date == input || date2 == input) {\n\t\t \t$('.text-module--showhide').css('display', 'block');\n\t\t } else {\n\t\t \t$('.text-module--showhide').css('display', 'none');\n\t\t }\n\t\t\t});\n\t\t});\n\t};\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * DISPLAY FORM CHANGE\n * Displays the element if any of the fields in the form change values\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.displayFormChange = (function() {\n\n\t\tvar init = function() {\n\t\t\tvar $mod = $('.fn_displayFormChange');\n\n\t\t\t$mod.each(function() {\n\t\t\t\tvar $el = $(this),\n\t\t\t\t\t$targets = $($el.data('form-change-watch-target')),\n\t\t\t\t\tisInit = $el.data('form-change-is-init');\n\n\t\t\t\t\tif(isInit !== true) {\n\t\t\t\t\t\t$targets.each(function() {\n\n\t\t\t\t\t\t\tvar $target = $(this),\n\t\t\t\t\t\t\t\ttargetVanilla = $target.get(0),\n\t\t\t\t\t\t\t\tnodeName = targetVanilla.nodeName.toUpperCase(),\n\t\t\t\t\t\t\t\tinputType = nodeName === 'INPUT' ? $target.attr('type').toUpperCase() : '';\n\n\t\t\t\t\t\t\tif(nodeName === 'INPUT' && (inputType === 'RADIO' || inputType === 'CHECKBOX')) {\n\t\t\t\t\t\t\t\t$target.data('initial-value', $target.prop('checked'));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$target.data('initial-value', $target.val());\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t$targets.on('change', function() {\n\t\t\t\t\t\t// set timeout to force after all other modules events\n\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\tvar anythingChanged = false;\n\n\t\t\t\t\t\t\t$targets.each(function() {\n\t\t\t\t\t\t\t\tvar $target = $(this),\n\t\t\t\t\t\t\t\t\ttargetVanilla = $target.get(0),\n\t\t\t\t\t\t\t\t\tnodeName = targetVanilla.nodeName.toUpperCase(),\n\t\t\t\t\t\t\t\t\tinputType = nodeName === 'INPUT' ? $target.attr('type').toUpperCase() : '';\n\n\t\t\t\t\t\t\t\tif($target.is(':visible')) {\n\t\t\t\t\t\t\t\t\tif(nodeName === 'INPUT' && (inputType === 'RADIO' || inputType === 'CHECKBOX')) {\n\t\t\t\t\t\t\t\t\t\tif ($target.prop('checked') !== $target.data('initial-value')) {\n\t\t\t\t\t\t\t\t\t\t\tanythingChanged = true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif ($target.val() !== $target.data('initial-value')) {\n\t\t\t\t\t\t\t\t\t\t\tanythingChanged = true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (anythingChanged === true) {\n\t\t\t\t\t\t\t\t$el.removeClass('hidden');\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$el.addClass('hidden');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, 1);\n\t\t\t\t\t});\n\n\t\t\t\t$el.data('form-change-is-init', true);\n\t\t\t});\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init\n\t\t};\n\t}());\n\n}(RACQ_JS));\n\n/* =============================================================================\n HEADER NAV\n ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.dropdown = (function() {\n\t\tvar OPTIONS,\n\t\t\tCONST,\n\t\t\t_isInit,\n\t\t\tinit;\n\n\t\tOPTIONS = {\n\t\t\tTRANSITION_DURATION: 150\n\t\t};\n\n\t\t// constants\n\t\tCONST = {\n\t\t\tCLASS: {\n\t\t\t\tIS_ACTIVE: 'is-active' // Used to show the dropdown\n\t\t\t},\n\t\t\tIS_LT_IE9: ($('.lt-ie9').length > 0)\n\t\t};\n\n\t\t_isInit = false;\n\n\t\t// initialiser\n\t\tinit = function() {\n\t\t\tif (_isInit) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif($('.fn_dropdown').length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// close on click outside of a navigation item\n\t\t\tvar _openDropdowns = [];\n\n\t\t\tvar _closeNavOnDocumentClick = function(event) {\n\n\t\t\t\tfor(var i = _openDropdowns.length -1; i >= 0; i-=1) {\n\t\t\t\t\tvar id = _openDropdowns[i];\n\n\t\t\t\t\tif($(event.target).closest('#'+id).length === 0) {\n\t\t\t\t\t\t$('#'+id).trigger('close.dropdown');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t$('.fn_dropdown').each(function(i, el){\n\t\t\t\tvar $container = $(el),\n\t\t\t\t\t$link = $container.find('> a'),\n\t\t\t\t\t$dropdown = $container.find('> .dropdown'),\n\t\t\t\t\t_isActive = false;\n\n\t\t\t\t$container.removeClass('fn_dropdown');\n\n\t\t\t\t// set a unique id for this item\n\t\t\t\tvar id = $container.attr('id') || 'qs-dropdown-'+i;\n\n\t\t\t\t$container.attr('id', id);\n\n\t\t\t\t// aria\n\t\t\t\t$link.attr({\n\t\t\t\t\t'aria-controls': id+'-dd'\n\t\t\t\t});\n\n\t\t\t\t$dropdown.attr({\n\t\t\t\t\t'id': id+'-dd',\n\t\t\t\t\t'tabindex': -1,\n\t\t\t\t\t'role': 'region',\n\t\t\t\t\t'aria-expanded': false\n\t\t\t\t});\n\n\t\t\t\t// open the dropdown\n\t\t\t\tvar openDropdown = function() {\n\t\t\t\t\t_isActive = true;\n\t\t\t\t\t_openDropdowns.push(id);\n\t\t\t\t\tvar marginTop = $dropdown.css('margin-top');\n\t\t\t\t\t$container.addClass(CONST.CLASS.IS_ACTIVE);\n\t\t\t\t\t$dropdown.css({\n\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\tdisplay: 'block',\n\t\t\t\t\t\t'margin-top': '-10px'\n\t\t\t\t\t}).attr({\n\t\t\t\t\t\t'aria-expanded': true\n\t\t\t\t\t}).velocity({\n\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t'margin-top': marginTop\n\t\t\t\t\t}, {\n\t\t\t\t\t\tease: 'ease-out',\n\t\t\t\t\t\tduration: OPTIONS.TRANSITION_DURATION,\n\t\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\t\t$(document).on('click.dropdown', _closeNavOnDocumentClick);\n\t\t\t\t\t\t\t$dropdown.css('margin-top', '');\n\t\t\t\t\t\t\t// $dropdown.noScrollFocus();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t};\n\n\t\t\t\t// close the dropdown item\n\t\t\t\tvar closeDropdown = function() {\n\t\t\t\t\t$(document).off('click.dropdown', _closeNavOnDocumentClick);\n\n\t\t\t\t\t$container.removeClass(CONST.CLASS.IS_ACTIVE);\n\t\t\t\t\t_isActive = false;\n\n\t\t\t\t\t// remove the item from the array\n\t\t\t\t\tfor(var i = _openDropdowns.length -1; i >= 0; i-=1) {\n\t\t\t\t\t\tif(_openDropdowns[i] === id) {\n\t\t\t\t\t\t\t_openDropdowns.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t$dropdown.css({\n\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\tdisplay: 'block'\n\t\t\t\t\t}).attr({\n\t\t\t\t\t\t'aria-expanded': false\n\t\t\t\t\t}).velocity({\n\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t'margin-top': '-10px'\n\t\t\t\t\t}, OPTIONS.TRANSITION_DURATION, function() {\n\t\t\t\t\t\t$dropdown.attr('style', '');\n\n\t\t\t\t\t\t// $link.noScrollFocus();\n\t\t\t\t\t});\n\t\t\t\t};\n\n\t\t\t\tvar toggleDropdown = function(event) {\n\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\tif(_isActive) {\n\t\t\t\t\t\tcloseDropdown();\n\t\t\t\t\t} else {\n\t\t\t\t\t\topenDropdown();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t$container.on('close.dropdown', closeDropdown);\n\t\t\t\t$container.on('open.dropdown', openDropdown);\n\n\t\t\t\t$link.on('click.dropdown', toggleDropdown);\n\t\t\t\t$container.find('.fn_dropdown_close').on('click.dropdown', function(event){\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tcloseDropdown();\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t_isInit = true;\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init,\n\t\t\tOPTIONS: OPTIONS\n\t\t};\n\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * EQUAL HEIGHTS\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.equalHeights = (function() {\n\n\t\t/* A re-usable function which is used by equalHeights and equalHeightsLive */\n\t\tvar calculateItemsHeights = function($items, itemsPerRow, sectionSelector, $closestContainer, fillClosest, isEnabled) {\n\t\t\tvar maxHeights = [],\n\t\t\t\t$visibleItems = $items.filter(':visible');\n\n\t\t\t$visibleItems.each(function(itemIndex, el) {\n\t\t\t\tvar $item = $(el),\n\t\t\t\t\trow = Math.floor(itemIndex / itemsPerRow),\n\t\t\t\t\t$sections = (sectionSelector === '') ? $item : $item.find(sectionSelector);\n\n\t\t\t\tif (typeof(maxHeights[row]) === 'undefined') {\n\t\t\t\t\tmaxHeights[row] = [];\n\t\t\t\t}\n\n\t\t\t\t$sections.each(function(sectionIndex, el) {\n\t\t\t\t\tvar $section = $(el),\n\t\t\t\t\t\theight;\n\n\t\t\t\t\t// Remove the inline height style, so that only heights from the stylesheet are applied\n\t\t\t\t\t$section.css('height', '');\n\n\t\t\t\t\t// Calculate greatest height for this section\n\t\t\t\t\tif (isEnabled) {\n\t\t\t\t\t\theight = parseInt($section.css('height'), 10);\n\n\t\t\t\t\t\tif (typeof(maxHeights[row][sectionIndex]) === 'undefined') {\n\t\t\t\t\t\t\tmaxHeights[row][sectionIndex] = height;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmaxHeights[row][sectionIndex] = (maxHeights[row][sectionIndex] < height) ? height : maxHeights[row][sectionIndex];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tif (isEnabled) {\n\t\t\t\tvar containerHeight = $closestContainer.height();\n\n\t\t\t\t$visibleItems.each(function(itemIndex, el) {\n\t\t\t\t\tvar $item = $(el),\n\t\t\t\t\t\trow = Math.floor(itemIndex / itemsPerRow),\n\t\t\t\t\t\t$sections = (sectionSelector === '') ? $item : $item.find(sectionSelector),\n\t\t\t\t\t\tsectionIndex = 0;\n\n\t\t\t\t\t$sections.each(function(i, el) {\n\t\t\t\t\t\tvar $section = $(el);\n\n\t\t\t\t\t\tif (fillClosest) {\n\t\t\t\t\t\t\tvar sectionHeight = (containerHeight > maxHeights[row][sectionIndex]) ? containerHeight : maxHeights[row][sectionIndex];\n\t\t\t\t\t\t\t$section.css('height', sectionHeight);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$section.css('height', maxHeights[row][sectionIndex]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsectionIndex = sectionIndex + 1;\n\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\t$visibleItems.parent().trigger('done.equalHeights')\n\t\t\t}\n\t\t};\n\n\t\t/* Sets the height of the sections in each item to be the same */\n\t\tvar init = function() {\n\t\t\t$('.fn_equalHeights').each(function() {\n\t\t\t\tvar $container = $(this),\n\t\t\t\t\titemsSelector = $container.attr('data-heights-item') || '> *',\n\t\t\t\t\tsectionSelector = $container.attr('data-heights-section') || '',\n\t\t\t\t\t$items = $container.find(itemsSelector),\n\t\t\t\t\tdataHeightsItems = $container.attr('data-heights-items-per-row'),\n\t\t\t\t\tfillClosest = $container.attr('data-heights-fill-closest') || false,\n\t\t\t\t\t$closestContainer = $([]),\n\t\t\t\t\tisEnabled = true,\n\t\t\t\t\tdataItems,\n\t\t\t\t\titemsPerRow;\n\t\t\t\tif(NAMESPACE.util.isNumber(dataHeightsItems)){\n\t\t\t\t\titemsPerRow = dataHeightsItems;\n\t\t\t\t} else {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tdataItems = JSON.parse($container.attr('data-heights-items-per-row'));\n\t\t\t\t\t}\n\t\t\t\t\tcatch(err) {\n\t\t\t\t\t\titemsPerRow = $items.length;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(itemsPerRow === 1) {\n\t\t\t\t\tisEnabled = false;\n\t\t\t\t} else {\n\t\t\t\t\tisEnabled = true;\n\t\t\t\t}\n\n\t\t\t\tif (typeof($container.data('eh-isInit')) === 'boolean' && $container.data('eh-isInit') === true) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (typeof(fillClosest) === 'string') {\n\t\t\t\t\t$closestContainer = $container.closest(fillClosest);\n\t\t\t\t\tfillClosest = ($closestContainer.length > 0);\n\t\t\t\t}\n\n\t\t\t\tvar calcHeights = function() {\n\t\t\t\t\tcalculateItemsHeights($items, itemsPerRow, sectionSelector, $closestContainer, fillClosest, isEnabled);\n\t\t\t\t};\n\n\t\t\t\tvar calcHeightsOnResize = $.debounce(200, function() {\n\t\t\t\t\t// Detaching resize event listener while running calcHeights() because IE8 triggers\n\t\t\t\t\t// a window.resize event when any element in the DOM is resized\n\t\t\t\t\t// http://stackoverflow.com/questions/1852751/window-resize-event-firing-in-internet-explorer\n\t\t\t\t\t$(window).off('resize.equalHeights, orientationchange.equalHeights', calcHeightsOnResize);\n\t\t\t\t\tcalcHeights();\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t$(window).on('resize.equalHeights, orientationchange.equalHeights', calcHeightsOnResize);\n\t\t\t\t\t}, 1);\n\t\t\t\t});\n\n\t\t\t\t// Other JavaScript modules can active and deactive this module by triggering an event on the container\n\t\t\t\t$container.off('update.equalHeights');\n\t\t\t\t$container.on('update.equalHeights', calcHeights);\n\n\t\t\t\tif ($container.hasClass('fn_mqad')) {\n\t\t\t\t\t$container.on('attach.mqad', function() {\n\t\t\t\t\t\tisEnabled = true;\n\t\t\t\t\t\t$(window).off('resize.equalHeights', calcHeightsOnResize).on('resize.equalHeights', calcHeightsOnResize);\n\t\t\t\t\t\tcalcHeights();\n\t\t\t\t\t});\n\n\t\t\t\t\t$container.on('detach.mqad', function() {\n\t\t\t\t\t\tisEnabled = false;\n\t\t\t\t\t\t$(window).off('resize.equalHeights', calcHeightsOnResize);\n\t\t\t\t\t\tcalcHeights();\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t$(window).off('resize.equalHeights', calcHeightsOnResize).on('resize.equalHeights', calcHeightsOnResize);\n\t\t\t\t\tcalcHeights();\n\t\t\t\t}\n\n\t\t\t\tvar registerColumnsOnMq = function(key){\n\t\t\t\t\tif (NAMESPACE.IS_RESPONSIVE) {\n\t\t\t\t\t\tenquire.register(NAMESPACE.mediaQueries.bp(key), {\n\t\t\t\t\t\t\tmatch: function() {\n\t\t\t\t\t\t\t\titemsPerRow = dataItems[key];\n\t\t\t\t\t\t\t\tif(itemsPerRow === 1) {\n\t\t\t\t\t\t\t\t\tisEnabled = false;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tisEnabled = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t$container.trigger('update.equalHeights');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (key.indexOf('l') !== -1 && key.indexOf('xxl') === -1) {\n\t\t\t\t\t\t\titemsPerRow = dataItems[key];\n\t\t\t\t\t\t\tif(itemsPerRow === 1) {\n\t\t\t\t\t\t\t\tisEnabled = false;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tisEnabled = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t$container.trigger('update.equalHeights');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tif(dataItems !== undefined) {\n\t\t\t\t\tfor (var key in dataItems) {\n\t\t\t\t\t\tif (dataItems.hasOwnProperty(key)) {\n\t\t\t\t\t\t\tregisterColumnsOnMq(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t$container.data('eh-isInit', true);\n\t\t\t});\n\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init,\n\t\t\tcalculateItemsHeights: calculateItemsHeights\n\t\t};\n\t}());\n\n}(RACQ_JS));\n\n /* ==========================================================================\n * EXPAND COLLAPSE\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.expandCollapse = (function() {\n\n\t\tvar CONST = {\n\t\t\tIS_EXPANDED_CLASS: 'is-expanded',\n\t\t\tIS_COLLAPSED_CLASS: 'is-collapsed',\n\t\t\tIS_DISABLED_CLASS: 'is-disabled'\n\t\t};\n\n\t\tvar createOnLoadLinks = function() {\n\t\t\tvar url = location.href.split('#')[0];\n\t\t\tvar titles = $('.accordions:not(.alternative)').find('.accordion-item > .expandcollapse');\n\n\t\t\t$(titles).each(function(i, item) {\n\t\t\t\tvar itemClone = $(item).clone();\n\t\t\t\tvar accTitle = $(itemClone).text().replace(/Show more/g,'');\n\t\t\t\tvar deepLink = accTitle.toLowerCase().replace(/(\\b\\ &|\\ -|\\,|\\'|\\.|\\:|\\;|\\*|\\+|\\=|\\(|\\)|\\t|\\r\\n|\\r|\\n)|(show more)/g,'').trim().replace(/\\ |\\/|\\\\/g,'-');\n\t\t\t\tvar titleHTML = $(item).find('a.visuallyhidden, span.ec');\n\t\t\t\tvar accTitleHTML = '' + accTitle + '';\n\t\t\t\t$(item).html(accTitleHTML);\n\t\t\t\t$(item).append(titleHTML);\n\t\t\t});\n\t\t\t\n\t\t\t$('body').trigger('deeplinkscreated');\n\t\t};\n\n\t\tvar onLoadOpen = function() {\n\t\t\tvar hb = location.hash;\n\n\t\t\tif (hb === '' || hb === '#') return;\n\n\t\t\tvar loadOpen = function(id) {\n\t\t\t\tvar $title = $('.accordion-deeplink.' + id).parent();\n\n\t\t\t\tif ($title.length === 0) return;\n\n\t\t\t\tvar $target = $title.next();\n\t\t\t\tvar scrollAmt = $title.offset().top;\n\n\t\t\t\tif ($target.length > 0) {\n\t\t\t\t\t$('html, body').animate({\n\t\t\t\t\t\tscrollTop: scrollAmt\n\t\t\t\t\t}, 500, function() {\n\t\t\t\t\t\t$title.trigger('open.expandcollapse');\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tloadOpen(hb.slice(1));\n\t\t};\n\n\t\t// Don't execute witin Sitecore editor\n\t\tif (typeof Sitecore !== 'undefined' && Sitecore.PageModes && Sitecore.PageModes.PageEditor) {\n\t\t\treturn;\n\t\t} else {\n\t\t\t$('body').on('inittabs', function() {\n\t\t\t\tcreateOnLoadLinks();\n\t\t\t});\n\t\t\t\n\t\t\t$('body').on('deeplinkscreated', function() {\n\t\t\t\tonLoadOpen();\n\t\t\t});\n\t\t}\n\t\t\t\n\t\tvar isOldIE = $('.lt-ie9').length > 0,\n\t\t\tanimation = {\n\t\t\t\treset: function($container) {\n\t\t\t\t\t$container.css({\n\t\t\t\t\t\t'display': '',\n\t\t\t\t\t\t'opacity': ''\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tinitClose: function($container) {\n\t\t\t\t\tif (isOldIE) {\n\t\t\t\t\t\t$container.hide();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$container.css({opacity: 0}, 1).hide();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\topen: function($container, $title, callback, init, immediate) {\n\t\t\t\t\tinit = (typeof(init) === 'boolean') ? init : false;\n\n\t\t\t\t\tvar slideDuration = immediate ? 0 : 300;\n\n\t\t\t\t\tif ($container.is(':visible')) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (isOldIE || init) {\n\t\t\t\t\t\t$container.show().css({'opacity': ''}).data('ec-isAnimating', false);\n\n\t\t\t\t\t\t$title.trigger('opened.expandcollapse');\n\t\t\t\t\t\t//$container.focus();\n\n\t\t\t\t\t\tif (typeof(callback) === 'function') {\n\t\t\t\t\t\t\tcallback();\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$container.css({'opacity': 0}).hide().stop().slideDown(slideDuration, function() {\n\t\t\t\t\t\t\t$container.animate({\n\t\t\t\t\t\t\t\topacity: 1\n\t\t\t\t\t\t\t}, 150, function() {\n\t\t\t\t\t\t\t\t$container.data('ec-isAnimating', false);\n\n\t\t\t\t\t\t\t\t$title.trigger('opened.expandcollapse');\n\t\t\t\t\t\t\t\t//$container.focus();\n\n\t\t\t\t\t\t\t\tif (typeof(callback) === 'function') {\n\t\t\t\t\t\t\t\t\tcallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tclose: function($container, $title, callback, init) {\n\t\t\t\t\tinit = (typeof(init) === 'boolean') ? init : false;\n\n\t\t\t\t\tif (isOldIE || init) {\n\t\t\t\t\t\t$container.hide().data('ec-isAnimating', false);\n\n\t\t\t\t\t\t$title.trigger('closed.expandcollapse');\n\t\t\t\t\t\tif (typeof(callback) === 'function') {\n\t\t\t\t\t\t\tcallback();\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$container.stop().animate({\n\t\t\t\t\t\t\topacity: 0\n\t\t\t\t\t\t}, 150, function() {\n\t\t\t\t\t\t\t$container.slideUp(300, function() {\n\t\t\t\t\t\t\t\t$container.data('ec-isAnimating', false);\n\n\t\t\t\t\t\t\t\t$title.trigger('closed.expandcollapse');\n\t\t\t\t\t\t\t\tif (typeof(callback) === 'function') {\n\t\t\t\t\t\t\t\t\tcallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\n\t\tvar init = function(scope) {\n\n\t\t\t// Apply data-ec-group attribute programmatically where is has been left off tabs\n\t\t\t$('.fn_tabs, .tabs').each(function(index) {\n\t\t\t\tvar $tabs = $(this),\n\t\t\t\t\t$group = $tabs.find('> .tab > .expandcollapse a');\n\n\t\t\t\tif ($group.length > 0 && $group.filter('[data-ec-group]').length === 0) {\n\t\t\t\t\t$group.attr('data-ec-group', 'tab-group-' + index);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar $ecScope = (scope) ? $('.expandcollapse:not(.js-expandcollapse)', scope) : $('.expandcollapse:not(.js-expandcollapse)');\n\n\n\t\t\t// expand collapse links - used on an TAG containing an A tag with the HREF referencing the ID of the expand collapse container\n\t\t\t$ecScope.each(function(i, el) {\n\t\t\t\tvar $title = $(el).addClass('js-expandcollapse'),\n\t\t\t\t$link = $title.find('a'),\n\t\t\t\texpandText = $link.attr('data-ec-expand'), //attr of text to be displayed on expand\n\t\t\t\tcollapseText = $link.attr('data-ec-collapse'), //attr of text to be displayed on collapse\n\t\t\t\tgroup = $link.attr('data-ec-group') || false,\n\t\t\t\tmqScroll = $link.attr('data-eq-scrollat-mq') || 'm',\n\t\t\t\tdisableScroll = $link.attr('data-ec-disable-scroll') || false,\n\t\t\t\thref = $link.attr('href'),\n\t\t\t\tid,\n\t\t\t\t$container,\n\t\t\t\tisDisabled = false,\n\t\t\t\tuseLink = $link.data('ec-is-link'),\n\t\t\t\t$scrollInsideEc = $link.attr('data-scrollInsideEc');\n\t\t\t\t\n\t\t\t\tif(useLink !== true) {\n\t\t\t\t\tid = '#' + href.replace(/[\\w\\W]*#([\\w\\W]+)/g, '$1');\n\t\t\t\t\t$container = $(id);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ($('.lt-ie8').length > 0) {\n\t\t\t\t\t$link.hide(); //don't do expand collapse for Less Than IE8\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\n\t\t\t\t// aria\n\t\t\t\tvar ariaTags = {\n\t\t\t\t\tenable: function() {\n\t\t\t\t\t\t$link.attr('aria-controls', id.substring(1));\n\t\t\t\t\t\t$container.attr({\n\t\t\t\t\t\t\t'role': 'region',\n\t\t\t\t\t\t\t'tabindex': '-1',\n\t\t\t\t\t\t\t'aria-expanded': $title.hasClass(CONST.IS_EXPANDED_CLASS)\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\tdisable: function() {\n\t\t\t\t\t\t$link.removeAttr('aria-controls');\n\t\t\t\t\t\t$container.removeAttr('role').removeAttr('tabindex').removeAttr('aria-expanded');\n\t\t\t\t\t},\n\t\t\t\t\tupdate: function() {\n\t\t\t\t\t\tif (!isDisabled) {\n\t\t\t\t\t\t\t$container.attr({\n\t\t\t\t\t\t\t\t'aria-expanded': $title.hasClass(CONST.IS_EXPANDED_CLASS)\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t// add data variables\n\t\t\t\t$title.data('ec-group', group);\n\n\t\t\t\t// update the text when clicked\n\t\t\t\tvar updateLink = {\n\t\t\t\t\ttoExpand: function() {\n\t\t\t\t\t\t$title.removeClass(CONST.IS_EXPANDED_CLASS).addClass(CONST.IS_COLLAPSED_CLASS);\n\t\t\t\t\t\tif (expandText) {\n\t\t\t\t\t\t\t$link.html(expandText);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tariaTags.update();\n\t\t\t\t\t},\n\t\t\t\t\ttoCollapse: function() {\n\t\t\t\t\t\t$title.removeClass(CONST.IS_COLLAPSED_CLASS).addClass(CONST.IS_EXPANDED_CLASS);\n\t\t\t\t\t\tif (collapseText) {\n\t\t\t\t\t\t\t$link.html(collapseText);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tariaTags.update();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tif (useLink !== true) {\n\t\t\t\t\t// don't allow the code to run more than once\n\t\t\t\t\tif ($container.data('init') !== true && $container.length > 0) {\n\n\t\t\t\t\t\t// setup attr to block interaction if the section is animating\n\t\t\t\t\t\t$container.data('ec-isAnimating', false);\n\n\t\t\t\t\t\t// if the link should be closed on page load\n\t\t\t\t\t\tif ($title.hasClass(CONST.IS_COLLAPSED_CLASS)) {\n\t\t\t\t\t\t\tanimation.initClose($container);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// event to perform the appropriate open action\n\t\t\t\t\t\t$title.on('open.expandcollapse', function(event, scrollTo, init) {\n\t\t\t\t\t\t\tscrollTo = (typeof(scrollTo) === 'boolean') ? scrollTo : false;\n\t\t\t\t\t\t\tinit = (typeof(init) === 'boolean') ? init : false;\n\n\t\t\t\t\t\t\tvar openCurrent = function(callback, immediate) {\n\t\t\t\t\t\t\t\tif (isDisabled) {\n\t\t\t\t\t\t\t\t\t$container.data('ec-isAnimating', false);\n\t\t\t\t\t\t\t\t\tupdateLink.toCollapse();\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (!$title.hasClass(CONST.IS_EXPANDED_CLASS)) {\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tupdateLink.toCollapse();\n\t\t\t\t\t\t\t\t\tanimation.open($container, $title, callback, init, immediate);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tvar openAndScrollToCurrent = function() {\n\t\t\t\t\t\t\t\tif (disableScroll) {\n\t\t\t\t\t\t\t\t\topenCurrent();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (!NAMESPACE.IS_RESPONSIVE || window.matchMedia(NAMESPACE.mediaQueries.bp(mqScroll)).matches) {\n\t\t\t\t\t\t\t\t\t\tNAMESPACE.util.scrollPageTo($title.offset().top, null, 250);\n\t\t\t\t\t\t\t\t\t\topenCurrent();\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t$('html').addClass('scrolling');\n\t\t\t\t\t\t\t\t\t\tNAMESPACE.util.scrollPageTo($title.offset().top, null, 1);\n\t\t\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\t\t\t$('html').removeClass('scrolling');\n\t\t\t\t\t\t\t\t\t\t}, 100);\n\t\t\t\t\t\t\t\t\t\topenCurrent(null, true);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tif (!group) {\n\t\t\t\t\t\t\t\topenCurrent();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t//close others first\n\t\t\t\t\t\t\t\tvar isFound = false;\n\n\t\t\t\t\t\t\t\t$('.js-expandcollapse.'+CONST.IS_EXPANDED_CLASS).each(function(i, el){\n\t\t\t\t\t\t\t\t\tif ($(el).data('ec-group') === group) {\n\t\t\t\t\t\t\t\t\t\tisFound = true;\n\t\t\t\t\t\t\t\t\t\tif (!NAMESPACE.IS_RESPONSIVE || window.matchMedia(NAMESPACE.mediaQueries.bp(mqScroll)).matches) {\n\t\t\t\t\t\t\t\t\t\t\t$(el).trigger('close.expandcollapse', openAndScrollToCurrent);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t$(el).trigger('close.expandcollapse', [openAndScrollToCurrent, true]);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (!isFound) {\n\t\t\t\t\t\t\t\t\tif (scrollTo) {\n\t\t\t\t\t\t\t\t\t\topenAndScrollToCurrent();\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\topenCurrent();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// event to perform the appropriate close action\n\t\t\t\t\t\t$title.on('close.expandcollapse', function(event, callback, init) {\n\t\t\t\t\t\t\tinit = (typeof(init) === 'boolean') ? init : false;\n\n\t\t\t\t\t\t\tif (isDisabled) {\n\t\t\t\t\t\t\t\t$container.data('ec-isAnimating', false);\n\t\t\t\t\t\t\t\tupdateLink.toExpand();\n\n\t\t\t\t\t\t\t\tif (typeof(callback) === 'function') {\n\t\t\t\t\t\t\t\t\tcallback();\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (!$title.hasClass(CONST.IS_COLLAPSED_CLASS)) {\n\t\t\t\t\t\t\t\tupdateLink.toExpand();\n\t\t\t\t\t\t\t\tanimation.close($container, $title, callback, init);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// event to handle the click and determine open/close required\n\t\t\t\t\t\t$title.on('click.expandcollapse', function(event) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t\tif (isDisabled) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ($container.data('ec-isAnimating') === false) {\n\t\t\t\t\t\t\t\t$container.data('ec-isAnimating', true);\n\n\t\t\t\t\t\t\t\tif ($title.hasClass(CONST.IS_EXPANDED_CLASS)) {\n\t\t\t\t\t\t\t\t\t$title.trigger('close.expandcollapse');\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t$title.trigger('open.expandcollapse');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t$title.on('attach.mqad', function(event) {\n\t\t\t\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t\t\t\tisDisabled = false;\n\n\t\t\t\t\t\t\tif ($title.hasClass(CONST.IS_COLLAPSED_CLASS)) {\n\t\t\t\t\t\t\t\tanimation.initClose($container);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t$title.removeClass(CONST.IS_DISABLED_CLASS);\n\n\t\t\t\t\t\t\tariaTags.enable();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t$title.on('detach.mqad', function(event) {\n\t\t\t\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t\t\t\tisDisabled = true;\n\t\t\t\t\t\t\tanimation.reset($container);\n\n\t\t\t\t\t\t\t$title.addClass(CONST.IS_DISABLED_CLASS);\n\n\t\t\t\t\t\t\tariaTags.disable();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tariaTags.enable();\n\n\t\t\t\t\t\t// set initialisation to true once completed\n\t\t\t\t\t\t$container.data('init', true);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$title.on('attach.mqad', function(event) {\n\t\t\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t\t\tisDisabled = false;\n\n\n\t\t\t\t\t\t$title.removeClass(CONST.IS_DISABLED_CLASS);\n\t\t\t\t\t\t$title.off('click.expandcollase').on('click.expandcollapse', function() {\n\t\t\t\t\t\t\twindow.location = href;\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\t$title.on('detach.mqad', function(event) {\n\t\t\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t\t\tisDisabled = true;\n\n\t\t\t\t\t\t$title.addClass(CONST.IS_DISABLED_CLASS);\n\t\t\t\t\t\t$title.off('click.expandcollase');\n\n\t\t\t\t\t});\n\n\t\t\t\t}\n\n\t\t\t\t$('.fn_scrollToId').each(function(index) {\n\t\t\t\t\t// Open ExpandCollapse and scroll to anchor tag\t\t\t\t\n\t\t\t\t\tvar $scrollToId = $('#' + window.location.hash.substr(1)).attr('id');\t\t\t\t\t\n\n\t\t\t\t\tif (window.matchMedia(NAMESPACE.mediaQueries.bp('xxs', 's')).matches && $scrollToId != undefined) {\n\t\t\t\t\t\tif ($scrollInsideEc) {\n\t\t\t\t\t\t\t$title.trigger('open.expandcollapse');\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t$('html, body').animate({\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t scrollTop: $($scrollInsideEc).offset().top\n\t\t\t\t\t\t\t }, 1000);\n\t\t\t\t\t\t\t}, 1000);\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\n\t\t\t});\n\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init,\n\t\t\tonload: onLoadOpen,\n\t\t\tcreatLinks: createOnLoadLinks,\n\t\t\tCONST: CONST\n\t\t};\n\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * EXPAND COLLAPSE SHOW AND HIDE ALL\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.expandCollapseShowHide = (function() {\n\t\tvar init = function() {\n\t\t\t$('.fn_showHide').each(function() {\n\t\t\t\tvar findOpenedItemsCount = function() {\n\t\t\t\t\tvar length = $target.find('.expandcollapse.is-expanded').length;\n\t\t\t\t\treturn length;\n\t\t\t\t};\n\n\t\t\t\tvar findTotalItems = function() {\n\t\t\t\t\tvar length = $target.find('.expandcollapse').length;\n\t\t\t\t\treturn length;\n\t\t\t\t};\n\n\t\t\t\tvar handleText = function() {\n\t\t\t\t\tif(openedItems >= totalItems) {\n\t\t\t\t\t\tdisplayCloseText();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdisplayOpenText();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tvar displayCloseText = function() {\n\t\t\t\t\t$closeAll.removeClass('js-hidden');\n\t\t\t\t\t$openAll.addClass('js-hidden');\n\t\t\t\t};\n\n\t\t\t\tvar displayOpenText = function() {\n\t\t\t\t\t$openAll.removeClass('js-hidden');\n\t\t\t\t\t$closeAll.addClass('js-hidden');\n\t\t\t\t};\n\n\t\t\t\tvar expanderOpenAll = function() {\n\t\t\t\t\t$target.find('.expandcollapse').each(function() {\n\t\t\t\t\t\t$(this).trigger('open.expandcollapse', [null, false]);\n\t\t\t\t\t});\n\t\t\t\t\thandleExpanderEvent();\n\t\t\t\t};\n\n\t\t\t\tvar expanderCloseAll = function() {\n\t\t\t\t\t$target.find('.expandcollapse').each(function() {\n\t\t\t\t\t\t$(this).trigger('close.expandcollapse', [null, false]);\n\t\t\t\t\t});\n\t\t\t\t\thandleExpanderEvent();\n\t\t\t\t};\n\n\t\t\t\tvar handleExpanderEvent = function() {\n\t\t\t\t\topenedItems = findOpenedItemsCount();\n\t\t\t\t\ttotalItems = findTotalItems();\n\t\t\t\t\thandleText();\n\t\t\t\t};\n\n\t\t\t\tvar attachEvents = function() {\n\t\t\t\t\t$target.on('open.expandcollapse close.expandcollapse', function() {\n\t\t\t\t\t\thandleExpanderEvent();\n\t\t\t\t\t});\n\n\t\t\t\t\t$openAll.on('click', function(e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\texpanderOpenAll();\n\t\t\t\t\t});\n\n\t\t\t\t\t$closeAll.on('click', function(e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\texpanderCloseAll();\n\t\t\t\t\t});\n\t\t\t\t};\n\n\t\t\t\tvar $container = $(this),\n\t\t\t\t\t$openAll = $container.find('.open-all'),\n\t\t\t\t\t$closeAll = $container.find('.close-all'),\n\t\t\t\t\t$target = $($container.data('open-close-target')),\n\t\t\t\t\ttotalItems = findTotalItems(),\n\t\t\t\t\topenedItems = findOpenedItemsCount();\n\n\t\t\t\tif (typeof($container.data('oc-isInit')) === 'boolean' && $container.data('oc-isInit') === true) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tattachEvents();\n\n\t\t\t\t$container.data('oc-isInit', true);\n\t\t\t});\n\n\t\t\t$('.fn_show').each(function() {\n\t\t\t\tvar $item = $(this),\n\t\t\t\t\t$target = $($item.data('open-target'));\n\n\t\t\t\tif (typeof($item.data('oc-isInit')) === 'boolean' && $item.data('oc-isInit') === true) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t$item.on('click', function(e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\t$target.find('.expandcollapse').each(function() {\n\t\t\t\t\t\t$(this).trigger('open.expandcollapse', [null, false]);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init\n\t\t};\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * FairFuelPrice\n * ========================================================================== */\n\n(function (NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.fairFuelPrice = (function () {\n\n\t\tconst TrendUp = 1;\n\t\tconst TrendDown = 2;\n\n\t\tconst PriceUnknown = 0;\n\t\tconst PriceHigh = 1;\n\t\tconst PriceLow = 2;\n\t\tconst PriceMiddle = 3;\n\n\t\tconst DefaultFuelType = 37;\n\n\t\tvar locationObject = {};\n\n\t\tvar isSearchValid = function (value) {\n\t\t\treturn (value.trim() !== '' && typeof (locationObject) !== 'undefined' && locationObject !== null)\n\t\t};\n\n\t\tvar clearError = function (field) {\n\t\t\t$('span.status-msg').hide();\n\t\t\tfield.closest('.ctrl-holder').removeClass('is-error');\n\t\t};\n\n\t\tvar whenSearchInvalid = function (e, ctrl) {\n\t\t\tif (e) {\n\t\t\t\te.preventDefault()\n\t\t\t\te.stopPropagation()\n\t\t\t}\n\n\t\t\tvar statusMessage = $('span.status-msg');\n\n\t\t\tif(statusMessage.length === 0){\n\t\t\t\tctrl.after('').closest('.ctrl-holder').addClass('is-error');\n\t\t\t}\n\n\t\t\tif($('.inline-search-filters').find('input[type=\"text\"]').val() !== ''){\n\t\t\t\tstatusMessage.text(\"Please select a location from the autocomplete dropdown results\");\n\t\t\t\tstatusMessage.addClass('is-error');\n\t\t\t}\n\t\t\telse{\n\t\t\t\tstatusMessage.text(\"Please enter a postcode or suburb\");\n\t\t\t\tstatusMessage.addClass('is-error');\n\t\t\t}\n\n\t\t\tstatusMessage.show();\t\t\t\n\t\t};\n\n\t\tvar init = function () {\n\n\t\t\twindow.History.init();\n\n\t\t\tvar $fn_fairFuelPrice = $('.fn_fairFuelPrice'),\n\t\t\t\t$fn_fuelPrice = $('.fn_fuelPrice');\n\n\t\t\tvar $fairFuelSpinner = $fn_fairFuelPrice.find('.preloader__spinner'),\n\t\t\t\t$fuelPriceSpinner = $fn_fuelPrice.find('.preloader__spinner'),\n\t\t\t\tfairFuelSpinner = NAMESPACE.spinner($fairFuelSpinner),\n\t\t\t\tfuelPriceSpinner = NAMESPACE.spinner($fuelPriceSpinner);\n\n\t\t\t$fairFuelSpinner.css('top', '50%');\n\t\t\t$fuelPriceSpinner.css('top', '50%');\n\n\t\t\tvar fuelTypeField = $('.inline-search-filters').find('select');\n\t\t\tvar locationField = $('.inline-search-filters').find('input[type=\"text\"]');\n\t\t\tvar btnSubmitField = $('.inline-search-filters').find('button[type=\"submit\"]');\n\n\t\t\tvar autocomplete;\n\n\t\t\tvar initGoogleAutocomplete = function () {\n\n\t\t\t\tif (typeof (google) == \"undefined\") {\n\t\t\t\t\tsetTimeout(initGoogleAutocomplete, 1000);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tvar searchOptions = {\n\t\t\t\t\t\ttypes: ['(regions)'],\n\t\t\t\t\t\tcomponentRestrictions: { country: 'AU' },\n\t\t\t\t\t\t// Approximate Bounds of QLD (Rectangular)\n\t\t\t\t\t\t// Because it is a rectange it also includes north eastern\n\t\t\t\t\t\t// NSW cities like Byron Bay and Lismore\n\t\t\t\t\t\tbounds: new google.maps.LatLngBounds(\n\t\t\t\t\t\t\tnew google.maps.LatLng(\"-29\", \"138\"),\n\t\t\t\t\t\t\tnew google.maps.LatLng(\"-9\", \"155\")\n\t\t\t\t\t\t),\n\t\t\t\t\t\tstrictBounds: true\n\t\t\t\t\t};\n\n\t\t\t\t\tvar locationInput = document.getElementById('location');\n\n\t\t\t\t\tautocomplete = new google.maps.places.Autocomplete(locationInput, searchOptions);\n\n\t\t\t\t\t$(locationInput).keydown(function (event) {\n\t\t\t\t\t\tif (event.keyCode === 13) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tif($('.pac-container:visible').length === 0){\n\t\t\t\t\t\t\t\thandleSubmit(event);\n\t\t\t\t\t\t\t}\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\tlocationObject = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t// Avoid paying for data that you don't need by restricting the set of\n\t\t\t\t\t// place fields that are returned to just the name and geometry components.\n\t\t\t\t\t// (https://developers.google.com/maps/documentation/javascript/reference/places-service#PlaceResult)\n\t\t\t\t\tautocomplete.setFields(['geometry']);\n\n\t\t\t\t\t// When the user selects an address from the drop-down use name and position to update table and query string\n\t\t\t\t\tautocomplete.addListener('place_changed', function () {\t\n\t\t\t\t\t\tclearError(locationField);\t\t\t\t\n\t\t\t\t\t\tvar place = autocomplete.getPlace();\n\n\t\t\t\t\t\tif(typeof(place.geometry) != 'undefined'){\n\t\t\t\t\t\t\tlocationObject = {\n\t\t\t\t\t\t\t\tposition: {\n\t\t\t\t\t\t\t\t\tlat: place.geometry.location.lat() || null,\n\t\t\t\t\t\t\t\t\tlng: place.geometry.location.lng() || null\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\thandleSubmit();\n\t\t\t\t\t\t}\t\t\t\t\t\t\n\t\t\t\t\t});\n\n\t\t\t\t\tgoogle.maps.event.addDomListener(locationField, 'keydown', function (event) {\n\t\t\t\t\t\tclearError(locationField);\n\t\t\t\t\t\tif (event.keyCode === 13) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\thandleValidation(event);\n\t\t\t\t\t\t}\t\t\t\t\t\t\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tinitGoogleAutocomplete();\n\n\t\t\tvar state = window.History.getState(),\n\t\t\t\turl = state.url,\n\t\t\t\tindexOfQueryString = url.indexOf('?'),\n\t\t\t\tqueryString = indexOfQueryString > 0 ? url.substr(indexOfQueryString + 1) : null,\n\t\t\t\trequestUrlObject;\n\n\t\t\tif (queryString) {\n\t\t\t\trequestUrlObject = JSON.parse('{\"' + decodeURI(queryString).replace(/\"/g, '\\\\\"').replace(/&/g, '\",\"').replace(/=/g, '\":\"') + '\"}');\n\t\t\t\tfuelTypeField.val(requestUrlObject.phracq_body_1_phracq_contentcontainer_0_FuelTypesDDL || DefaultFuelType);\n\t\t\t\t$fn_fairFuelPrice.find('.simple-label').text($fn_fairFuelPrice.find('select option:selected').text());\n\t\t\t\tlocationField.val(requestUrlObject.location);\n\n\t\t\t\t$('html, body').animate({\n\t\t\t\t\tscrollTop: $('.fn_fairFuelPrice').offset().top\n\t\t\t\t}, 350);\n\t\t\t}\n\n\t\t\tvar handleValidation = function(e){\n\t\t\t\tif (isSearchValid(locationField.val())) {\n\t\t\t\t\tclearError(locationField);\n\t\t\t\t} else {\n\t\t\t\t\twhenSearchInvalid(e, locationField);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar handleSubmit = function (e) {\n\t\t\t\thandleValidation(e);\n\n\t\t\t\tupdateTable();\n\t\t\t\tupdateQueryString(getQueryStringFromInputs());\n\t\t\t}\n\n\t\t\tbtnSubmitField.on('click', function (e, label) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\thandleSubmit(e);\n\t\t\t});\n\n\t\t\tvar getQueryStringFromInputs = function () {\n\t\t\t\t// this way because if we use jQuery serialize it grabs name field and in .net that is a long string.\n\t\t\t\tvar returnValue = '';\n\t\t\t\t$fn_fairFuelPrice.find('input, select').each(function (index, item) {\n\t\t\t\t\tif (index > 0) {\n\t\t\t\t\t\treturnValue += '&';\n\t\t\t\t\t}\n\t\t\t\t\tvar $item = $(item);\n\t\t\t\t\tvar val = '';\n\t\t\t\t\tif ($item.attr('type') === 'checkbox') {\n\t\t\t\t\t\tval = $item.is(':checked');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tval = $item.val();\n\t\t\t\t\t}\n\t\t\t\t\treturnValue += $(item).attr('id') + '=' + val;\n\t\t\t\t});\n\n\t\t\t\treturn returnValue;\n\t\t\t};\n\n\t\t\tvar updateQueryString = function (value) {\n\t\t\t\t//remove # from end of link so the state change will fire. # will stay in the url though.\n\t\t\t\tvar url = value.split('#')[0];\n\t\t\t\turl = window.location.pathname + '?' + url;\n\t\t\t\twindow.History.pushState(null, window.document.title, url);\n\t\t\t};\n\n\t\t\tvar updateFuelPriceText = function (priceFlunctationNumber, priceIndicatorNumber) {\n\t\t\t\tupdateTrendText(priceFlunctationNumber, priceIndicatorNumber);\n\t\t\t\tupdateIndicatorText(priceFlunctationNumber, priceIndicatorNumber);\n\t\t\t};\n\n\t\t\tvar updateIndicatorText = function (priceFlunctationNumber, priceIndicatorNumber) {\n\t\t\t\tswitch (priceIndicatorNumber) {\n\t\t\t\t\tdefault:\n\t\t\t\t\tcase PriceUnknown:\n\t\t\t\t\t\tupdateCommentaryText('No fuel advice for your area.', '');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PriceHigh:\n\t\t\t\t\tcase PriceMiddle:\n\t\t\t\t\t\tupdateCommentaryText('Prices are high, so wait if you can.', 'is-bad');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PriceLow:\n\t\t\t\t\t\tif (priceFlunctationNumber === TrendDown || priceFlunctationNumber === TrendUp) updateCommentaryText('Average price is good.', 'is-good');\n\t\t\t\t\t\telse updateCommentaryText('Average price is good. Buy Now.', 'is-good');\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar updateTrendTextValues = function (text, classText) {\n\t\t\t\tvar fairFuelTrend = $('.fair-fuel').find('.trend');\n\n\t\t\t\tfairFuelTrend.find('span').text(text);\n\t\t\t\tfairFuelTrend.find('.price-trend').removeClass('is-down is-up').addClass(classText);\n\t\t\t}\n\n\t\t\tvar updateCommentaryText = function (text, classText) {\n\t\t\t\tvar fairFuelPrice = $('.fair-fuel').find('.price'),\n\t\t\t\t\tfairFuelCommentary = $('.fair-fuel').find('.commentary').find('p');\n\n\t\t\t\tfairFuelPrice.find('.avg-price').text(text);\n\t\t\t\tfairFuelPrice.find('.avg-price').attr('title', text);\n\t\t\t\tfairFuelPrice.find('.avg-price').removeClass('is-good is-bad').addClass(classText);\n\t\t\t\tfairFuelCommentary.text(text);\n\t\t\t}\n\n\t\t\tvar updateTrendText = function (priceFlunctationNumber, priceIndicatorNumber) {\n\t\t\t\tswitch (priceFlunctationNumber) {\n\t\t\t\t\tcase TrendUp:\n\t\t\t\t\t\tif (priceIndicatorNumber === PriceLow) updateTrendTextValues('Lately, prices have been going up. Buy now.', 'is-up');\n\t\t\t\t\t\telse updateTrendTextValues('Lately, prices have been going up.', 'is-up');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TrendDown:\n\t\t\t\t\t\tif (priceIndicatorNumber === PriceLow) updateTrendTextValues('Lately, prices have been going down. Buy now.', 'is-down');\n\t\t\t\t\t\telse updateTrendTextValues('Lately, prices have been going down.', 'is-down');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tupdateTrendTextValues('', '');\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar updateTable = function () {\n\n\t\t\t\tif (fuelTypeField.val() === null) fuelTypeField.val(DefaultFuelType);\n\n\t\t\t\tvar fuelType = fuelTypeField.val(),\n\t\t\t\t\timgURL = $('#srcImgUrl').val() || \"../assets/racq/img/placeholder/fuel-logos/\",\n\t\t\t\t\tdefaultImgUrl = $('#srcImgUrl_notfound').val() || \"../assets/racq/img/placeholder/fuel-logos/generic.gif\",\n\t\t\t\t\tURLFuelPrice = $(\"#fuelPricesAPI\").val() || \"/data/fair_fuel_bands.json\",\n\t\t\t\t\tURLFairFuelPrice = $(\"#fairFuelPricesAPI\").val() || \"/data/fair_fuel_bands.json\";\n\n\n\t\t\t\t$('.fn_fuelResults').html('');\n\t\t\t\t$(\".pagination\").html('');\n\t\t\t\t$(\".fair-fuel-results\").off('repaginate');\n\n\t\t\t\tif (!locationObject) {\n\t\t\t\t\t$('.fair-fuel').hide();\n\t\t\t\t\t$('.fn_noFuelResults').show();\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tvar fairFuelContainer = $('.fair-fuel'),\n\t\t\t\t\tfairFuelHeading = fairFuelContainer.find('.heading'),\n\t\t\t\t\tfairFuelPrice = fairFuelContainer.find('.price')\n\n\t\t\t\tvar fairFuelPriceRequestData = locationObject.position;\n\t\t\t\tfairFuelPriceRequestData.fueltype = fuelType;\n\n\t\t\t\t// GET FAIR FUEL PRICE DETAILS\n\t\t\t\t$.ajax({\n\t\t\t\t\turl: URLFairFuelPrice,\n\t\t\t\t\ttype: \"GET\",\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\tcrossDomain: true,\n\t\t\t\t\tdata: fairFuelPriceRequestData,\n\t\t\t\t\tbeforeSend: function () {\n\t\t\t\t\t\tbtnSubmitField.addClass('is-disabled');\n\t\t\t\t\t\tbtnSubmitField.css('pointer-events', 'none');\n\t\t\t\t\t\tfairFuelSpinner.startAnimation();\n\t\t\t\t\t\t$fn_fairFuelPrice.addClass('preloader--active');\n\t\t\t\t\t},\n\t\t\t\t\tsuccess: function (result) {\n\t\t\t\t\t\t$('.fair-fuel').show();\n\n\t\t\t\t\t\t// check for null\n\t\t\t\t\t\tif (result.FairPrice === null) {\n\t\t\t\t\t\t\t$('.fair-fuel .fairFuel_noResults').show();\n\t\t\t\t\t\t\t$('.fair-fuel .found-fair-fuel-price').hide();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$('.fair-fuel .fairFuel_noResults').hide();\n\t\t\t\t\t\t\t$('.fair-fuel .found-fair-fuel-price').show();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// store data to localStorage\n\t\t\t\t\t\tvar dataToStore = JSON.stringify(result);\n\t\t\t\t\t\tlocalStorage.setItem('FairPriceData', dataToStore);\n\t\t\t\t\t\tvar FairPriceData = JSON.parse(localStorage.getItem('FairPriceData'));\n\n\t\t\t\t\t\tfairFuelHeading.find('strong').text(FairPriceData.FairPrice.Location);\n\t\t\t\t\t\tfairFuelPrice.find('strong').text(parseFloat(FairPriceData.FairPrice.RoundedPrice).toFixed(1));\n\n\t\t\t\t\t\tupdateFuelPriceText(FairPriceData.FairPrice.PriceFluctuation, FairPriceData.FairPrice.PriceIndicator);\n\t\t\t\t\t},\n\t\t\t\t\terror: function () {\n\t\t\t\t\t\t$('.fair-fuel').hide();\n\t\t\t\t\t},\n\t\t\t\t\tcomplete: function () {\n\t\t\t\t\t\tbtnSubmitField.removeClass('is-disabled');\n\t\t\t\t\t\tbtnSubmitField.css('pointer-events', 'auto');\n\n\t\t\t\t\t\tfairFuelSpinner.stopAnimation();\n\t\t\t\t\t\t$fn_fairFuelPrice.removeClass('preloader--active');\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tvar fuelPriceRequestData = locationObject.position;\n\t\t\t\tfuelPriceRequestData.fueltype = fuelType;\n\n\t\t\t\t// GET FUEL PRICE DETAILS\n\t\t\t\t$.ajax({\n\t\t\t\t\turl: URLFuelPrice,\n\t\t\t\t\ttype: \"GET\",\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\tcrossDomain: true,\n\t\t\t\t\tdata: fuelPriceRequestData,\n\t\t\t\t\tbeforeSend: function () {\n\n\t\t\t\t\t\tbtnSubmitField.addClass('is-disabled');\n\t\t\t\t\t\tbtnSubmitField.css('pointer-events', 'none');\n\n\t\t\t\t\t\tfuelPriceSpinner.startAnimation();\n\t\t\t\t\t\t$fn_fuelPrice.addClass('preloader--active');\n\n\t\t\t\t\t},\n\t\t\t\t\tsuccess: function (result) {\n\n\t\t\t\t\t\t// check for null\n\t\t\t\t\t\tif (result.Stations.length === 0) {\n\t\t\t\t\t\t\t$('.fn_noFuelResults').fadeIn();\n\t\t\t\t\t\t\t$('.fn_fuelResults').hide();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$('.fn_fuelResults').fadeIn();\n\t\t\t\t\t\t\t$('.fn_noFuelResults').hide();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// store data to localStorage\n\t\t\t\t\t\tvar dataToStore = JSON.stringify(result);\n\t\t\t\t\t\tlocalStorage.setItem('FullSiteDetails', dataToStore);\n\t\t\t\t\t\tvar FuelPriceData = JSON.parse(localStorage.getItem('FullSiteDetails'));\n\n\t\t\t\t\t\t//format date\n\t\t\t\t\t\tvar formatDate = function (dateIn) {\n\t\t\t\t\t\t\tvar date = new Date(dateIn) || new Date(FuelPriceData.Timestamp);\n\t\t\t\t\t\t\tvar mm = moment(date);\n\t\t\t\t\t\t\treturn mm.format('D MMM YYYY, h:mmA');\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// load data in table\n\t\t\t\t\t\tvar tr;\n\t\t\t\t\t\tfor (var i = 0; i < FuelPriceData.Stations.length; i++) {\n\t\t\t\t\t\t\ttr = $('');\n\t\t\t\t\t\t\ttr.append('

'\n\t\t\t\t\t\t\t\t+ FuelPriceData.Stations[i].Name + '

'\n\t\t\t\t\t\t\t\t+ FuelPriceData.Stations[i].Price + '');\n\t\t\t\t\t\t\ttr.append(\"\" + FuelPriceData.Stations[i].Address + \"\" + FuelPriceData.Stations[i].Suburb + \"\" + \"\");\n\t\t\t\t\t\t\ttr.append(\"\" + formatDate(FuelPriceData.Stations[i].LastUpdated) + \"
Reported by \" + FuelPriceData.Stations[i].DataSourceName + \"\");\n\t\t\t\t\t\t\t$('.fn_fuelResults').append(tr);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tNAMESPACE.tablePagination();\n\n\t\t\t\t\t\tswitch (result) {\n\t\t\t\t\t\t\tcase true:\n\t\t\t\t\t\t\t\tprocessResponse(result);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\terror: function (xhr, ajaxOptions, thrownError) {\n\t\t\t\t\t\t$('.fn_noFuelResults').fadeIn();\n\t\t\t\t\t\t$('.fn_fuelResults').hide();\n\t\t\t\t\t},\n\t\t\t\t\tcomplete: function () {\n\t\t\t\t\t\tbtnSubmitField.removeClass('is-disabled');\n\t\t\t\t\t\tbtnSubmitField.css('pointer-events', 'auto');\n\n\t\t\t\t\t\tfuelPriceSpinner.stopAnimation();\n\t\t\t\t\t\t$fn_fuelPrice.removeClass('preloader--active');\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t};\n\n\t\t\tvar initialPageLoad = function () {\n\n\t\t\t\tif (typeof (google) == \"undefined\") {\n\t\t\t\t\tsetTimeout(initialPageLoad, 1000);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tvar request = {\n\t\t\t\t\t\tquery: locationField.val(),\n\t\t\t\t\t\tfields: ['geometry'],\n\t\t\t\t\t\tlocationBias: new google.maps.LatLngBounds(\n\t\t\t\t\t\t\t// Approximate Bounds of QLD (Rectangular)\n\t\t\t\t\t\t\t// Because it is a rectange it also includes north eastern\n\t\t\t\t\t\t\t// NSW cities like Byron Bay and Lismore\n\t\t\t\t\t\t\tnew google.maps.LatLng(\"-29\", \"138\"),\n\t\t\t\t\t\t\tnew google.maps.LatLng(\"-9\", \"155\")\n\t\t\t\t\t\t)\n\t\t\t\t\t};\n\n\t\t\t\t\tvar service = new google.maps.places.PlacesService($('#googlePlacesContainer').get(0));\n\t\t\t\t\tservice.findPlaceFromQuery(request, function (results, status) {\n\t\t\t\t\t\tif (status === google.maps.places.PlacesServiceStatus.OK) {\n\t\t\t\t\t\t\tif (results[0]) {\n\t\t\t\t\t\t\t\tlocationObject = {\n\t\t\t\t\t\t\t\t\tposition: {\n\t\t\t\t\t\t\t\t\t\tlat: results[0].geometry.location.lat(),\n\t\t\t\t\t\t\t\t\t\tlng: results[0].geometry.location.lng()\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tupdateTable();\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t};\n\n\t\t\tinitialPageLoad();\n\t\t};\n\t\treturn {\n\t\t\tinit: init,\n\t\t};\n\t}());\n}(RACQ_JS));\n\n/* ==========================================================================\n * FLEXSLIDER\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.flexslider = (function() {\n\n\t\tvar _sliders = [];\n\n\t\tvar _removeLoader = function($slider) {\n\t\t\t$slider.removeClass('is-loading');\n\t\t};\n\n\t\tvar initDiscountsCarousel = function($slider, defaultOptions) {\n\t\t\tif($slider.find(defaultOptions.selector).length === 0) {\n\t\t\t\tconsole.warn('There are no slides for the \"discounts\" carousel.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar _getNumSlidesToShow = function() {\n\n\t\t\t\tif(!NAMESPACE.IS_RESPONSIVE) {\n\t\t\t\t\treturn 3;\n\t\t\t\t}\n\t\t\t\tif(window.matchMedia(NAMESPACE.mediaQueries.bp(0,'s')).matches) {\n\t\t\t\t\treturn 1;\n\t\t\t\t} else if(window.matchMedia(NAMESPACE.mediaQueries.bp('s','l')).matches) {\n\t\t\t\t\treturn 2.5;\n\t\t\t\t} else if(window.matchMedia(NAMESPACE.mediaQueries.bp('l','xl')).matches) {\n\t\t\t\t\treturn 3.5;\n\t\t\t\t} else if(window.matchMedia(NAMESPACE.mediaQueries.bp('xl')).matches) {\n\t\t\t\t\treturn 4.5;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t};\n\n\t\t\tvar _getGridSize = function() {\n\t\t\t\treturn _getNumSlidesToShow();\n\t\t\t};\n\n\t\t\tvar _getItemWidth = function() {\n\t\t\t\treturn $slider.width() / _getNumSlidesToShow();\n\t\t\t};\n\n\t\t\tvar _storedSlider;\n\n\t\t\tvar options = {\n\t\t\t\tminItems: _getGridSize(),\n\t\t\t\tmaxItems: _getGridSize(),\n\t\t\t\titemWidth: _getItemWidth(),\n\t\t\t\titemMargin: 10,\n\t\t\t\tstart: function(slider) {\n\t\t\t\t\t_removeLoader($slider);\n\t\t\t\t\t_storedSlider = slider;\n\t\t\t\t\t$slider.resize();\n\t\t\t\t},\n\t\t\t\tbefore: function(slider) {\n\t\t\t\t\tif (slider.animatingTo === 0) {\n\t\t\t\t\t\t$slider.addClass('hide-start');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$slider.removeClass('hide-start');\n\t\t\t\t\t}\n\n\t\t\t\t\tif (slider.pagingCount === (slider.animatingTo + 1)) {\n\t\t\t\t\t\t$slider.addClass('hide-end');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$slider.removeClass('hide-end');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t$.extend(options, defaultOptions);\n\n\t\t\t$slider.flexslider(options);\n\n\t\t\tvar resizeDiscountsCarousel = function() {\n\t\t\t\tvar gridSize = _getGridSize(),\n\t\t\t\t\titemWidth = _getItemWidth();\n\n\t\t\t\tif (_storedSlider) {\n\t\t\t\t\t_storedSlider.vars.minItems = gridSize;\n\t\t\t\t\t_storedSlider.vars.maxItems = gridSize;\n\t\t\t\t\t_storedSlider.vars.itemWidth = itemWidth;\n\t\t\t\t\t_storedSlider.update();\n\n\t\t\t\t\tif (_storedSlider.slides.length <= gridSize) {\n\t\t\t\t\t\t$slider.parent().addClass('flex--hide-arrows');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$slider.parent().removeClass('flex--hide-arrows');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t$(window).on('resize.discountsCarousel', $.debounce(100, resizeDiscountsCarousel));\n\t\t};\n\n\t\tvar initNewsCarousel = function($slider, defaultOptions) {\n\t\t\tvar options = {\n\t\t\t\tstart: function() {\n\t\t\t\t\t_removeLoader($slider);\n\t\t\t\t\t$slider.resize();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\toptions = $.extend(defaultOptions, options);\n\n\t\t\t$slider.flexslider(options);\n\t\t};\n\n\t\tvar initMediaCarousel = function($slider, defaultOptions) {\n\t\t\tvar targetId = $slider.data('target-controls-id');\n\t\t\tvar $cacheSlides = $slider.find('.slides .slide');\n\n\t\t\tvar options = {\n\t\t\t\tstart: function() {\n\t\t\t\t\t_removeLoader($slider);\n\t\t\t\t\t$('.slide').show();\n\n\t\t\t\t\t$slider.resize();\n\t\t\t\t},\n\t\t\t\tcontrolNav: false,\n\t\t\t\tanimationLoop: false,\n\t\t\t\tslideshow: false,\n\t\t\t\tsync: '#'+targetId,\n\t\t\t};\n\n\t\t\toptions = $.extend(defaultOptions, options);\n\t\t\t$slider.flexslider(options);\n\t\t};\n\n\t\tvar initMediaCarouselControls = function($slider, defaultOptions) {\n\n\t\t\tvar _getNumSlidesToShow = function() {\n\n\t\t\t\tif(!NAMESPACE.IS_RESPONSIVE) {\n\t\t\t\t\treturn 3;\n\t\t\t\t}\n\t\t\t\tif(window.matchMedia(NAMESPACE.mediaQueries.bp(0,'s')).matches) {\n\t\t\t\t\treturn 2;\n\t\t\t\t} else if(window.matchMedia(NAMESPACE.mediaQueries.bp('s','l')).matches) {\n\t\t\t\t\treturn 2.5;\n\t\t\t\t} else if(window.matchMedia(NAMESPACE.mediaQueries.bp('l','xl')).matches) {\n\t\t\t\t\treturn 2.5;\n\t\t\t\t} else if(window.matchMedia(NAMESPACE.mediaQueries.bp('xl')).matches) {\n\t\t\t\t\treturn 3.5;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t};\n\n\t\t\tvar _getGridSize = function() {\n\t\t\t\treturn _getNumSlidesToShow();\n\t\t\t};\n\n\t\t\tvar _getItemWidth = function() {\n\t\t\t\treturn $slider.width() / _getNumSlidesToShow();\n\t\t\t};\n\n\t\t\tvar targetId = $slider.data('target-carousel-id');\n\t\t\tvar _storedSlider;\n\t\t\tvar options = {\n\t\t\t\tstart: function(slider) {\n\t\t\t\t\t_removeLoader($slider);\n\t\t\t\t\t_storedSlider = slider;\n\t\t\t\t\t$slider.resize();\n\t\t\t\t},\n\t\t\t\tanimation: 'slide',\n\t\t\t\tcontrolNav: false,\n\t\t\t\tanimationLoop: false,\n\t\t\t\tslideshow: false,\n\t\t\t\titemWidth: _getItemWidth(),\n\t\t\t\titemMargin: 0,\n\t\t\t\tminItems: _getGridSize(),\n\t\t\t\tmaxItems: _getGridSize(),\n\t\t\t\tasNavFor: '#' + targetId\n\t\t\t};\n\n\t\t\toptions = $.extend(defaultOptions, options);\n\t\t\t$slider.flexslider(options);\n\n\n\n\t\t\tvar resizeMediaCarouselControls = function() {\n\t\t\t\tvar _gridSize = _getGridSize(),\n\t\t\t\t\t_itemWidth = _getItemWidth();\n\n\t\t\t\tif (_storedSlider) {\n\t\t\t\t\t_storedSlider.vars.minItems = _gridSize;\n\t\t\t\t\t_storedSlider.vars.maxItems = _gridSize;\n\t\t\t\t\t_storedSlider.vars.itemWidth = _itemWidth;\n\t\t\t\t\t_storedSlider.update();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t$(window).on('resize.MediaCarouselControls', $.debounce(100, resizeMediaCarouselControls));\n\t\t};\n\n\t\tvar initBlogCarousel = function($slider, defaultOptions) {\n\t\t\tvar options = {\n\t\t\t\tstart: function() {\n\t\t\t\t\t_removeLoader($slider);\n\t\t\t\t\t$slider.resize();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\toptions = $.extend(defaultOptions, options);\n\n\t\t\t$slider.flexslider(options);\n\t\t};\n\n\t\tvar init = function() {\n\t\t\t// Initialise flexslider\n\t\t\t$('.flexslider').each(function(i, el) {\n\t\t\t\tvar $slider = $(el),\n\t\t\t\t\tsliderType = $slider.attr('data-slider-type') || 'default';\n\n\t\t\t\tvar defaultOptions = {\n\t\t\t\t\tanimation: 'slide',\n\t\t\t\t\tselector: '.slides .slide',\n\t\t\t\t\tanimationLoop: false,\n\t\t\t\t\tcontrolsContainer: $slider.parent().find('.flex-controls'),\n\t\t\t\t\tdirectionNav: true,\n\t\t\t\t\tkeyboard: false,\n\t\t\t\t\tslideshow: false\n\t\t\t\t};\n\n\t\t\t\tif(sliderType === 'discounts-carousel') {\n\t\t\t\t\tinitDiscountsCarousel($slider, defaultOptions);\n\t\t\t\t} else if(sliderType === 'news-carousel') {\n\t\t\t\t\tinitNewsCarousel($slider, defaultOptions);\n\t\t\t\t} else if(sliderType === 'media-carousel') {\n\t\t\t\t\tinitMediaCarousel($slider, defaultOptions);\n\t\t\t\t} else if(sliderType === 'media-carousel-controls') {\n\t\t\t\t\tinitMediaCarouselControls($slider, defaultOptions);\n\t\t\t\t} else if(sliderType === 'blog-carousel'){\n\t\t\t\t\tinitBlogCarousel($slider, defaultOptions);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tvar options = {\n\t\t\t\t\t\tstart: function() {\n\t\t\t\t\t\t\t_removeLoader($slider);\n\t\t\t\t\t\t\t$slider.resize();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tminItems: 4,\n\t\t\t\t\t\tmaxItems: 4,\n\t\t\t\t\t\titemWidth: $slider.width() / 4\n\t\t\t\t\t};\n\n\t\t\t\t\toptions = $.extend(defaultOptions, options);\n\t\t\t\t\tconsole.log(options)\n\t\t\t\t\t$slider.flexslider(options)\n\t\t\t\t}\n\n\t\t\t\t//checks when a keyboard user is on the page and updates the viewport when items are tabbed to.\n\t\t\t\t$slider.on('focus', '.flex-viewport a', function(e) {\n\t\t\t\t\tvar $link = $(e.target),\n\t\t\t\t\t\t$linkSlide = $link.closest('.slides > *'),\n\t\t\t\t\t\tlinkSlideIndex = $linkSlide.index();\n\n\t\t\t\t\tif($link.closest('.slides').find('.clone').length > 0) {\n\t\t\t\t\t\t// there are clone slides that can break the index.\n\t\t\t\t\t\tlinkSlideIndex -= 1;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (linkSlideIndex !== $slider.data('flexslider').currentSlide) {\n\t\t\t\t\t\tif($slider.data('flexslider').vars.minItems > 1) {\n\t\t\t\t\t\t\tlinkSlideIndex = Math.floor(linkSlideIndex / $slider.data('flexslider').vars.minItems);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t$slider.flexslider(linkSlideIndex);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t$slider.find('.flex-viewport').on('scroll', function() {\n\t\t\t\t\t// Prevent the browser from scrolling the containing DIV when the user tabs through links\n\t\t\t\t\t// We are scrolling the FlexSlider instead\n\t\t\t\t\t$(this).scrollLeft(0);\n\t\t\t\t});\n\n\t\t\t\t_sliders.push({\n\t\t\t\t\t$slider: $slider,\n\t\t\t\t\tsliderType: sliderType\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init\n\t\t};\n\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * FORM ROWS CAN BE SHOWN PROGRESSIVELY\n * Handy for when you have a list of inputs and the user can choose how many to add\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.formRows = function() {\n\n\t\t$('.fn_formRows').each(function(i, el) {\n\t\t\tvar $mod = $(this).removeClass('fn_formRows'),\n\t\t\t\t$rows = $mod.find('.form-rows__item'),\n\t\t\t\t$add = $mod.find('.form-rows__add'),\n\t\t\t\tshowFirstRow = ($mod.attr('data-show-first-row') === 'true'),\n\t\t\t\tnumRowsVisible = showFirstRow ? 1 : 0;\n\n\t\t\t$rows.hide();\n\n\t\t\tif (showFirstRow) {\n\t\t\t\t$rows.eq(0).show();\n\t\t\t}\n\n\t\t\t$add.on('click.formRows', function(e) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\t// Show the next row\n\t\t\t\t$rows.eq(numRowsVisible).show()\n\t\t\t\t\t.find(':input').eq(0).focus();\n\n\t\t\t\tnumRowsVisible += 1;\n\n\t\t\t\tif (numRowsVisible >= $rows.length) {\n\t\t\t\t\t$add.hide();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$rows.each(function(rowIndex) {\n\t\t\t\tvar $row = $(this),\n\t\t\t\t\t$remove = $row.find('.form-rows__remove');\n\n\t\t\t\t$remove.on('click.formRows', function(e) {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tvar currentRow = rowIndex,\n\t\t\t\t\t\tnextRow,\n\t\t\t\t\t\t$currentRowInputs,\n\t\t\t\t\t\t$nextRowInputs,\n\t\t\t\t\t\tlen = $rows.length;\n\n\t\t\t\t\t// Loop through the later rows and copy their answers back a row\n\t\t\t\t\tfor (; currentRow < len; currentRow += 1) {\n\t\t\t\t\t\tnextRow = currentRow + 1;\n\t\t\t\t\t\t$currentRowInputs = $rows.eq(currentRow).find(':input');\n\t\t\t\t\t\t$nextRowInputs = $rows.eq(nextRow).find(':input');\n\n\t\t\t\t\t\t$nextRowInputs.each(function(inputIndex) {\n\t\t\t\t\t\t\t$currentRowInputs.eq(inputIndex).val($(this).val());\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t$currentRowInputs.filter('select').trigger('updateLabel.simpleSelect');\n\t\t\t\t\t}\n\n\t\t\t\t\t// Hide the last visible row\n\t\t\t\t\tif (numRowsVisible > 0) {\n\t\t\t\t\t\tnumRowsVisible -= 1;\n\t\t\t\t\t\t$rows.filter(':visible').last().hide();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (numRowsVisible < $rows.length) {\n\t\t\t\t\t\t$add.show();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t};\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * FORM FUNCTIONS\n * ========================================================================== */\n\nRACQ_JS.forms = (function(NAMESPACE) {\n\n\t'use strict';\n\n\tvar simpleRadio,\n\t\tsimpleSelect,\n\t\tinputMask,\n\t\tdynamicSelect,\n\t\tmultipleSelect,\n\t\trangeSlider,\n\t\tautotab,\n\t\tanchorButtons,\n\t\tpasswordStrength,\n\t\tsubmitOnChange,\n\t\thideOnClick,\n\t\tshowOnClick,\n\t\thideOnChange,\n\t\tradioCheckbox,\n\t\tradioBlock,\n\t\tradioGrid,\n\t\tfieldTypeTransformation,\n\t\tdiscountSummary,\n\t\tradioExtra;\n\n\t/* Replaces the visual style of select boxes using the simpleSelect plugin */\n\tsimpleSelect = function() {\n\t\tif (!$.simpleSelect) {\n\t\t\tconsole.warn('The jQuery Plugin simpleSelect is required.');\n\t\t\treturn;\n\t\t}\n\n\t\t// Don't allow it to work for IE6 or below\n\t\tif ($('.lt-ie7').length === 0) {\n\t\t\t$('select').simpleSelect();\n\t\t}\n\t};\n\n\tinputMask = function () {\n\t\t$(\".fn_inputmask-bsb\").mask(\"999-999\", {placeholder:\"___-___\" })\n\t};\n\n\tdynamicSelect = function() {\n\t\t$('.fn_dynamic-select').each(function() {\n\t\t\tvar $mod = $(this),\n\t\t\t\t$select = $mod.find('select');\n\n\t\t\t$select.chosen({\n\t\t\t\tinherit_select_classes: true,\n\t\t\t\tsearch_contains: true\n\t\t\t});\n\n\t\t\t$select.on('change', function() {\n\t\t\t\t$select.trigger('chosen:updated');\n\t\t\t});\n\n\t\t\t$mod.removeClass('fn_dynamic-select').addClass('dynamic-select');\n\t\t});\n\t};\n\n\tmultipleSelect = function() {\n\t\t$('.fn_multiple-select').each(function() {\n\t\t\tvar $mod = $(this),\n\t\t\t\t$select = $mod.find('select');\n\n\t\t\t$select.chosen({\n\t\t\t\tinherit_select_classes: true,\n\t\t\t\tsearch_contains: true\n\t\t\t});\n\n\t\t\t$select.on('change', function() {\n\t\t\t\t$select.trigger('chosen:updated');\n\t\t\t});\n\n\t\t\t$mod.removeClass('fn_multiple-select').addClass('multiple-select');\n\t\t});\n\t};\n\n\trangeSlider = function() {\n\t\t$('input[type=\"range\"]').rangeslider({\n\t\t\tpolyfill:false,\n\t\t\tonSlide: function(position, value) {\n\t\t\t\tthis.$handle.addClass('is-sliding').removeClass('is-ended')\n\t\t\t},\n\t\t\tonSlideEnd: function(position, value) {\n\t\t\t\tthis.$handle.removeClass('is-sliding').addClass('is-ended')\n\t\t\t}\n\t\t});\n\t};\n\n\t/* Replaces the visual style of radio inputs using the simpleRadio plugin */\n\tsimpleRadio = function() {\n\n\t\tif (!$.fn.simpleRadio) {\n\t\t\tconsole.warn('The jQuery Plugin simpleRadio is required.');\n\t\t\treturn;\n\t\t}\n\n\t\t// Don't allow it to work for IE6 or below\n\t\tif ($('.lt-ie7').length === 0) {\n\t\t\t$('.fn_simple-radio').each(function() {\n\t\t\t\tvar $mod = $(this).removeClass('fn_simple-radio'),\n\t\t\t\t\t$ul = $mod.find('ul.options'),\n\t\t\t\t\toptions = {};\n\n\t\t\t\tif ($ul.hasClass('vertical')) {\n\t\t\t\t\toptions.convertToSelectWhenTooLarge = false;\n\t\t\t\t}\n\n\t\t\t\tif ($ul.hasClass('no-select-option')) {\n\t\t\t\t\toptions.haveSelectOptionOnSelect = false;\n\t\t\t\t}\n\n\t\t\t\t$ul.simpleRadio(options);\n\t\t\t\t$mod.addClass('simple-radio');\n\n\n\t\t\t});\n\t\t}\n\t};\n\n\tautotab = function() {\n\t\t$('.fn_autotab').each(function() {\n\t\t\tvar $mod = $(this).removeClass('fn_autotab');\n\t\t\t$mod.find('input').autotab();\n\t\t});\n\t};\n\n\t// If role=\"button\" is used to create a custom button, the onclick event will only fire when clicked\n\t// by the mouse cursor. Because of this, the developer will have to explicitly add a separate key event\n\t// handler to the element so that the button can be triggered when the space key is pressed.\n\t// https://developer.mozilla.org/en-US/docs/Accessibility/ARIA/ARIA_Techniques/Using_the_button_role\n\tanchorButtons = function() {\n\t\t$('a[role=\"button\"]').on('keyup', function(e) {\n\t\t\tif (e.which === 32) {\n\t\t\t\tthis.click();\n\t\t\t}\n\t\t});\n\t};\n\n\t/* Password strength check indicator */\n\tpasswordStrength = (function() {\n\t\tvar scorePassword = function(pass) {\n\t\t\tvar score = 0,\n\t\t\t\ti;\n\t\t\tif (!pass) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\t// bonus points for mixing it up\n\t\t\tvar criteria = {\n\t\t\t\ta: /\\d/.test(pass),\n\t\t\t\tb: /[a-z]/.test(pass),\n\t\t\t\tc: /[A-Z]/.test(pass),\n\t\t\t\td: /\\W/.test(pass)\n\t\t\t};\n\n\t\t\tfor (i in criteria) {\n\t\t\t\tif (criteria.hasOwnProperty(i)) {\n\t\t\t\t\tscore += (criteria[i]) ? 1 : 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (pass.length < 8) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tif (score === 4 && pass.length >= 8) {\n\t\t\t\treturn 'Very Strong';\n\t\t\t} else if (score === 3 && pass.length >= 8) {\n\t\t\t\treturn 'Strong';\n\t\t\t} else if (score === 2 && pass.length >= 8) {\n\t\t\t\treturn 'Average';\n\t\t\t} else {\n\t\t\t\treturn 'Invalid';\n\t\t\t}\n\n\t\t\treturn '';\n\t\t};\n\n\t\tvar init = function() {\n\t\t\t$('.password-strength').each(function() {\n\t\t\t\tvar $el = $(this),\n\t\t\t\t\t$indicator = $el.find('span span'),\n\t\t\t\t\t$text = $el.find('strong'),\n\t\t\t\t\t$password = $('#' + $el.data('id')),\n\t\t\t\t\tstrengths = ['very-strong', 'strong', 'average', 'invalid'];\n\n\t\t\t\tif ($password.length === 0) {\n\t\t\t\t\t$el.parent().hide();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t$password.off('.passwordstrength').on('keyup.passwordstrength', function() {\n\t\t\t\t\tvar strength = scorePassword($(this).val());\n\n\t\t\t\t\tfor (var i = 0, len = strengths.length; i < len; i += 1) {\n\t\t\t\t\t\t$indicator.removeClass(strengths[i]);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (strength === '') {\n\t\t\t\t\t\t$text.text('Too short');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$text.text(strength);\n\t\t\t\t\t\t$indicator.addClass(strength.toLowerCase().replace(' ', '-'));\n\t\t\t\t\t}\n\t\t\t\t}).trigger('keyup.passwordstrength');\n\t\t\t});\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init,\n\t\t\ttest: scorePassword\n\t\t};\n\n\t}());\n\n\tsubmitOnChange = function() {\n\t\t$('.fn_submitOnChange').each(function() {\n\t\t\tvar $mod = $(this),\n\t\t\t\t$input = $mod.find('input, select');\n\t\t\tif ($mod.data('submitOnChange') !== 'initialised') {\n\t\t\t\t$input.on('change', function() {\n\t\t\t\t\t$mod.next('input[type=\"submit\"]').click();\n\t\t\t\t});\n\t\t\t\t$mod.data('submitOnChange', 'initialised');\n\t\t\t}\n\t\t});\n\t};\n\n\thideOnChange = function() {\n\t\t$('.fn_hideonchange').each(function() {\n\t\t\tvar $mod = $(this),\n\t\t\t\titemtohide = $mod.attr('data-hideonchange');\n\t\t\tif ($mod.data('hideonchange') !== 'initialised') {\n\t\t\t\t$mod.on('change keyup', function() {\n\t\t\t\t\t$('#' + itemtohide).hide();\n\t\t\t\t});\n\t\t\t\t$mod.data('hideonchange', 'initialised');\n\t\t\t}\n\t\t});\n\t};\n\n\thideOnClick = function() {\n\t\t$('.fn_hideonclick').each(function() {\n\t\t\tvar $mod = $(this),\n\t\t\ttargets = $mod.attr('data-hideonclick');\n\t\t\t$mod.on('click', function() {\n\t\t\t\t$(targets).addClass('js-hidden');\n\t\t\t});\n\t\t});\n\t}\n\n\tshowOnClick = function() {\n\t\t$('.fn_showonclick').each(function() {\n\t\t\tvar $mod = $(this),\n\t\t\ttargets = $mod.attr('data-showonclick');\n\t\t\t$mod.on('click', function() {\n\t\t\t\t$(targets).removeClass('js-hidden');\n\t\t\t});\n\t\t});\n\t}\n\n\tradioCheckbox = function() {\n\t\t$('.fn_radio-checkbox').each(function() {\n\t\t\tvar $block = $(this),\n\t\t\t\t$lis;\n\n\t\t\tif ($block.data('radio-block-init') === true) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t$block.data('radio-block-init', true);\n\n\t\t\t$lis = $block.find('.options > li');\n\n\t\t\t$lis.each(function() {\n\t\t\t\tvar $li = $(this),\n\t\t\t\t\t$input = $li.find('input:checkbox'),\n\t\t\t\t\tradioIsChecked;\n\n\t\t\t\tradioIsChecked = function() {\n\t\t\t\t\tif ($input.is(':checked')) {\n\t\t\t\t\t\t$li.addClass('radio-block--checked');\n\t\t\t\t\t}\n\n\t\t\t\t};\n\n\t\t\t\t$input.change(radioIsChecked);\n\n\t\t\t\t$li.click(function(e) {\n\t\t\t\t\tif($(this).hasClass('radio-block--checked')) {\n\t\t\t\t\t\t$(this).removeClass('radio-block--checked');\n\t\t\t\t\t}\n\n\n\t\t\t\t});\n\n\t\t\t\tif ($input.is(':checked')) {\n\t\t\t\t\tradioIsChecked();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t};\n\n\tradioBlock = function() {\n\t\t$('.fn_radio-block').each(function() {\n\t\t\tvar $block = $(this),\n\t\t\t\t$lis;\n\n\t\t\tif ($block.data('radio-block-init') === true) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t$block.data('radio-block-init', true);\n\n\t\t\t$lis = $block.find('.options > li');\n\n\t\t\t$lis.each(function() {\n\t\t\t\tvar $li = $(this),\n\t\t\t\t\t$input = $li.find('input:radio'),\n\t\t\t\t\tradioIsChecked;\n\n\t\t\t\tradioIsChecked = function() {\n\t\t\t\t\tif ($input.is(':checked')) {\n\t\t\t\t\t\t$lis.removeClass('radio-block--checked');\n\t\t\t\t\t\t$li.addClass('radio-block--checked');\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t$input.change(radioIsChecked);\n\n\t\t\t\t$li.click(function(e) {\n\t\t\t\t\tvar nodeName = e.target.nodeName.toLowerCase();\n\t\t\t\t\tif (nodeName !== 'label' && nodeName !== 'input') {\n\t\t\t\t\t\t$input.prop('checked', true).trigger('change').trigger('click');\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif ($input.is(':checked')) {\n\t\t\t\t\tradioIsChecked();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\n\t\t$('.fn_roadside-upgrade:not(.static)').each(function() {\n\t\t\tvar $block = $(this),\n\t\t\t\t$lis;\n\n\t\t\tif ($block.data('radio-block-init') === true) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$block.data('radio-block-init', true);\n\n\t\t\t$lis = $block.find('.options > li');\n\n\t\t\t$lis.each(function() {\n\t\t\t\tvar $li = $(this),\n\t\t\t\t\t$input = $li.find('input:radio'),\n\t\t\t\t\tradioIsChecked;\n\n\t\t\t\tradioIsChecked = function () {\n\t\t\t\t\tif ($input.is(':checked')) {\n\t\t\t\t\t\t$lis.removeClass('radio-block--checked');\n\t\t\t\t\t\t$li.addClass('radio-block--checked');\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t$input.change(radioIsChecked);\n\n\t\t\t\t$li.click(function (e) {\n\t\t\t\t\t// ignore disabled input options\n\t\t\t\t\tif ($input.attr('disabled') !== 'disabled') {\n\t\t\t\t\t\tvar nodeName = e.target.nodeName.toLowerCase();\n\t\t\t\t\t\tif (nodeName !== 'label' && nodeName !== 'input') {\n\t\t\t\t\t\t\t$input.prop('checked', true).trigger('change').trigger('click');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif ($input.is(':checked')) {\n\t\t\t\t\tradioIsChecked();\n\t\t\t\t}\n\n\t\t\t});\n\t\t});\n\n\n\t\t$('.fn_cta-radio-block').each(function() {\n\n\t\t\tvar $block = $(this),\n\t\t\t\t$li,\n\t\t\t\tradioButtons = $(\".cta.simple-radio input[type='radio']\"),\n\t\t\t\t$li = $block.find('.options > li label');\n\n\t\t\t// below is only for FED\n\t\t\t// back end devs will use serverside\n\n \t\t\tif ($(\"input:radio\").attr('previousvalue')) {\n\n \t\t\t\tradioButtons.click(function() {\n\t\t\t\tvar previousValue = $(this).attr('previousValue'),\n\t\t\t\t\tname = $(this).attr('name');\n\n\t\t\t\tif (previousValue == 'checked') {\n\n\t\t\t\t\t$(this).removeAttr('checked');\n\t\t\t\t\t$('.ec-content.js-hidden').css('display', 'none');\n\t\t\t\t\t$li.removeClass('is-checked');\n\t\t\t\t\t$(this).parent().removeClass('is-checked');\n\t\t\t\t\t$(this).attr('previousValue', false);\n\n\t\t\t\t} else {\n\t\t\t\t\t$(\"input[name=\"+name+\"]:radio\").attr('previousValue', false);\n\t\t\t\t\t$(this).attr('previousValue', 'checked');\n\t\t\t\t}\n\n\t\t\t\t$('.cta.simple-radio input:radio').each(function () {\n\t\t\t\t if ($(this).attr('previousValue') === 'checked') {\n\t\t\t\t \t$(this).next().text( 'Selected' );\n\t\t\t\t \t$(this).parent().addClass('is-checked');\n\t\t\t\t return;\n\t\t\t\t } else {\n\t\t\t\t $(this).next().text('Choose this battery');\n\t\t\t\t $(this).parent().removeClass('is-checked');\n\t\t\t\t }\n\t\t\t \t});\n\n\t\t\t});\n\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\t\t});\n\t};\n\n\tradioGrid = function() {\n\t\t$('.fn_radio-grid').each(function() {\n\t\t\tvar $block = $(this),\n\t\t\t\t$cards;\n\n\t\t\t$cards = $block.find('.radio-card');\n\n\t\t\t$cards.each(function() {\n\t\t\t\tvar $card = $(this);\n\t\t\t\tvar $radio = $card.find('input:radio')\n\t\t\t\tif($radio.is(':checked')){\n\t\t\t\t\t$card.addClass('radio-card--selected');\n\t\t\t\t\t$card.parent().removeClass('_w5');\n\t\t\t\t\t$card.parent().addClass('_w10')\n\t\t\t\t\t$card.parent().css(\"order\", -1)\n\t\t\t\t}\n\n\t\t\t\t$card.click(function(e) {\n\t\t\t\t\t$cards.removeClass('radio-card--selected')\n\t\t\t\t\t$radio.prop('checked', true);\n\t\t\t\t\t$card.addClass('radio-card--selected');\n\t\t\t\t});\n\t\t\t});\n\n\t\t});\n\t}\n\n\t// Convert numeric text fields to become type=number\n\tfieldTypeTransformation = function(){\n\t\t/*var $numerics = $('.date-txt-day, .date-txt-month, .date-txt-year, .phone-txt');\n\t\tif($numerics.length!==0){\n\t\t\t$numerics.attr('type','number');\n\t\t};*/\n\t};\n\n\t// Analyses the discount summary and shows/hides (IQUX-2118)\n\tdiscountSummary = function(){\n\t\tvar $list = $('.light-panel .discount-list');\n\t\tvar $wrapper = $list.parent();\n\t\tvar hasItems = ($list.find('li').length!==0);\n\t\tif($list.is(':visible')){\n\t\t\t$wrapper.toggle(hasItems);\n\t\t\t$wrapper.next('h5').toggleClass('first-child', !hasItems);\n\t\t}\n\t};\n\n\tradioExtra = function() {\n\n\t\t// show extra text when radio buttons are initialised\n\t\t$(\".options.extras input[type='radio']\").each(function() {\n\t\t\tif($(this).is(':checked')) {\n\t\t\t\t$(this).parent().find('.extra').slideDown('fast');\n\t\t\t}\n\t\t});\n\n\t\t// show extra text when radio button is changed\n\t\t$(\".options.extras input[type='radio']\").on('change', function() {\n\t\t\t$(\".options.extras .extra\").slideUp('fast');\n\t\t\t$(this).parent().find('.extra').slideDown('fast');\n\t\t});\n\n\t};\n\n\n\treturn {\n\t\tsimpleRadio: simpleRadio,\n\t\tsimpleSelect: simpleSelect,\n\t\tinputMask: inputMask,\n\t\tdynamicSelect: dynamicSelect,\n\t\tmultipleSelect: multipleSelect,\n\t\trangeSlider: rangeSlider,\n\t\tautotab: autotab,\n\t\tanchorButtons: anchorButtons,\n\t\tpasswordStrength: passwordStrength,\n\t\tsubmitOnChange: submitOnChange,\n\t\thideOnChange: hideOnChange,\n\t\thideOnClick: hideOnClick,\n\t\tshowOnClick: showOnClick,\n\t\tradioCheckbox: radioCheckbox,\n\t\tradioBlock: radioBlock,\n\t\tradioGrid: radioGrid,\n\t\tfieldTypeTransformation: fieldTypeTransformation,\n\t\tdiscountSummary: discountSummary,\n\t\tradioExtra: radioExtra\n\t};\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * FORM SHOW HIDE\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.formShowHide = (function() {\n\n\t\tvar CONST = {\n\t\t\tCLASS_IS_HIDDEN: 'fn_showhide_isHidden'\n\t\t};\n\n\t\tvar _triggerChange = function(el) {\n\t\t\tif ($(el).find('.fn_showhide_trigger').length > 0) {\n\t\t\t\t$(el).find('.fn_showhide_trigger').trigger('keyup.formShowHide');\n\t\t\t}\n\t\t};\n\n\t\tvar _iePositionFix = function() {\n\t\t\tif ($('.lt-ie9').length > 0) {\n\t\t\t\t$('.tooltip-btn').css('position', 'static').delay(1).css('position', '');\n\t\t\t}\n\t\t};\n\n\t\tvar _animations = {\n\t\t\tshow: function(i, el, callback) {\n\t\t\t\tvar $el = $(el);\n\n\t\t\t\t$el.removeClass(CONST.CLASS_IS_HIDDEN).setFieldsEnabled();\n\n\t\t\t\t_iePositionFix();\n\t\t\t\t_triggerChange(el);\n\n\t\t\t\tif ($el.hasClass('simple-radio')) {\n\t\t\t\t\t$el.trigger('reset.simpleRadio');\n\t\t\t\t} else if ($el.find('.simple-radio').length > 0) {\n\t\t\t\t\t$el.find('.simple-radio').trigger('reset.simpleRadio');\n\t\t\t\t}\n\n\t\t\t\tif (typeof (callback) === 'function') {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t},\n\t\t\thide: function(i, el, callback) {\n\t\t\t\t$(el).addClass(CONST.CLASS_IS_HIDDEN).setFieldsDisabled();\n\n\t\t\t\t_iePositionFix();\n\t\t\t\t_triggerChange(el);\n\n\t\t\t\tif (typeof (callback) === 'function') {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t},\n\t\t\tshowAlreadyVisible: function(i, el) {\n\t\t\t\t$(el).setFieldsEnabled();\n\t\t\t}\n\t\t};\n\n\t\tvar init = function() {\n\t\t\t//default show hide functionality\n\t\t\t$('.fn_showhide').each(function() {\n\t\t\t\tvar $el = $(this);\n\n\t\t\t\tif ($el.data('showHideInitialised')) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t$el.data('showHideInitialised', true);\n\n\t\t\t\t$el.formShowHide({\n\t\t\t\t\tshow: _animations.show,\n\t\t\t\t\thide: _animations.hide,\n\t\t\t\t\tinitShow: _animations.show,\n\t\t\t\t\tinitHide: _animations.hide,\n\t\t\t\t\tshowAlreadyVisible: _animations.showAlreadyVisible\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init\n\t\t};\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * FORM SHOW HIDE SIMPLE\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.formShowHideSimple = (function() {\n\t\tvar init = function() {\n\t\t\tvar events = 'finished.showHideSimple';\n\n\t\t\t$('.fn_showhideSimple').each(function() {\n\t\t\t\tvar $el = $(this);\n\n\t\t\t\tif ($el.data('showHideSimpleInitialised')) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t$el.data('showHideSimpleInitialised', true);\n\n\t\t\t\t$el.formShowHideSimple();\n\n\t\t\t\t$el.on(events, function() {\n\n\t\t\t\t\tvar showTargetsId = $el.data('show-id'),\n\t\t\t\t\t\thideTargetsId = $el.data('hide-id'),\n\t\t\t\t\t\t$showTargets,\n\t\t\t\t\t\t$hideTargets,\n\t\t\t\t\t\tvalidatorsOnForm;\n\n\t\t\t\t\tif(showTargetsId !== undefined) {\n\t\t\t\t\t\t$showTargets = $('#'+ showTargetsId.replace(/ /g, ', #'));\n\t\t\t\t\t}\n\n\t\t\t\t\tif(hideTargetsId !== undefined) {\n\t\t\t\t\t\t$hideTargets = $('#'+ hideTargetsId.replace(/ /g, ', #'));\n\t\t\t\t\t}\n\n\t\t\t\t\tif($showTargets !== undefined && $hideTargets !== undefined) {\n\t\t\t\t\t\tvalidatorsOnForm = $.merge($showTargets, $hideTargets);\n\t\t\t\t\t} else if($showTargets !== undefined) {\n\t\t\t\t\t\tvalidatorsOnForm = $showTargets;\n\t\t\t\t\t} else if($hideTargets !== undefined) {\n\t\t\t\t\t\tvalidatorsOnForm = $hideTargets;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Find all the validators that are in the newly hidden or shown sections.\n\t\t\t\t\tvalidatorsOnForm = validatorsOnForm.find(Page_Validators)\n\n\t\t\t\t\t// enable/disable them based on whether they are now visible\n\t\t\t\t\tfor (var s = 0; s < validatorsOnForm.length; s++) {\n\t\t\t\t\t\tvar val = validatorsOnForm[s];\n\t\t\t\t\t\tvar enable = $('#' + validatorsOnForm[s].controltovalidate).is(':visible');\n\t\t\t\t\t\t// Start new code that replaces old validator enabling/disabling call\n\t\t\t\t\t\tif (!enable) {\n\t\t\t\t\t\t\t// when hiding, just use the default .NET behaviour\n\t\t\t\t\t\t\tValidatorEnable(val, enable);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// When showing, duplicate most of the behaviour of ValidatorEnable but track the original error\n\t\t\t\t\t\t\t// state (before the validator is re-evaluated) and then restore that after it is shown. This should\n\t\t\t\t\t\t\t// keep the Page_IsValid in sync (via ValidatorUpdateIsValid) but prevent an error message from being\n\t\t\t\t\t\t\t// shown until the user clicks 'Next' if the validator is now invalid.\n\t\t\t\t\t\t\tval.enabled = (enable !== false);\n\n\t\t\t\t\t\t\tvar oldIsValid = val.isvalid;\n\t\t\t\t\t\t\tValidatorValidate(val);\n\t\t\t\t\t\t\tValidatorUpdateIsValid();\n\t\t\t\t\t\t\tval.isvalid = oldIsValid;\n\t\t\t\t\t\t\tValidatorUpdateDisplay(val);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init\n\t\t};\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * FORM SHOW HIDE SIMPLE\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.formShowHideTarget = (function() {\n\t\tvar init = function() {\n\n\t\t\t$('.fn_showhideTarget').each(function() {\n\t\t\t\tvar $el = $(this);\n\n\t\t\t\tif ($el.data('showHideTargetInitialised')) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t$el.data('showHideTargetInitialised', true);\n\n\t\t\t\t$el.formShowHideTarget();\n\t\t\t\t$el.trigger('change.formShowHideTarget');\n\t\t\t});\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init\n\t\t};\n\t}());\n\n}(RACQ_JS));\n\n/*global ValidatorValidate, ValidatorUpdateDisplay, Page_HighlightValidators, Page_HighlightValidatorsSummaryByControl, moment, Page_Validators */\n\nRACQ_JS.formsValidation = {\n\toldValidatorValidate: null,\n\n\tnewValidatorValidate: function(val, validationGroup, event) {\n\t\t// Hook the ValidatorValidate function so that it will track the validationGroup\n\t\t// being examined in window.currentlyValidatingGroup.\n\t\t// This value can then be examined if needed in custom client-side validators.\n\t\twindow.currentlyValidatingGroup = validationGroup;\n\t\tRACQ_JS.formsValidation.oldValidatorValidate(val, validationGroup, event);\n\t},\n\n\toldValidatorUpdateDisplay: null,\n\n\tnewValidatorUpdateDisplay: function(val) {\n\t\tRACQ_JS.formsValidation.oldValidatorUpdateDisplay(val);\n\n\t\t$.each(Page_HighlightValidators, function(index, validator) {\n\t\t\tvar validatorID = validator[0],\n\t\t\t\tcontrolID = validator[1],\n\t\t\t\terrorClassName = validator[2],\n\t\t\t\terrorCallFunction = validator[3],\n\t\t\t\t$control,\n\t\t\t\t$holder,\n\t\t\t\thasErrors = false,\n\t\t\t\tsummary,\n\t\t\t\ti;\n\n\t\t\tif (val.id === validatorID && (val.controltovalidate === controlID || val.controltocompare === controlID)) {\n\t\t\t\t$control = $('[id=\"' + controlID + '\"]');\n\n\t\t\t\t// If this is a date field, the error styling should apply to the entire group\n\t\t\t\tif ($control.is('.date-txt-day, .date-txt-month, .date-txt-year, .date-day, .date-month, .date-day') || $control.parent().is('.date-day, .date-month, .date-year')) {\n\t\t\t\t\t$holder = $control.closest('.ctrls-holder');\n\t\t\t\t}\n\n\t\t\t\tif (!$holder || $holder.length === 0) {\n\t\t\t\t\t$holder = $('[id=\"' + controlID + '\"]').closest('.ctrl-holder');\n\t\t\t\t}\n\n\t\t\t\t// add class\n\t\t\t\tif (errorClassName) {\n\t\t\t\t\tif (typeof (Page_HighlightValidatorsSummaryByControl[controlID]) === 'undefined') {\n\t\t\t\t\t\tPage_HighlightValidatorsSummaryByControl[controlID] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tsummary = Page_HighlightValidatorsSummaryByControl[controlID];\n\n\t\t\t\t\t// Remove error class name and title if none of the previous validators\n\t\t\t\t\t// with the same controltovalidate property were invalid\n\t\t\t\t\tfor (i in summary) {\n\t\t\t\t\t\tif (summary.hasOwnProperty(i)) {\n\t\t\t\t\t\t\tif (!summary[i].isvalid) {\n\t\t\t\t\t\t\t\thasErrors = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!hasErrors) {\n\t\t\t\t\t\t$holder.removeClass(errorClassName);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!val.isvalid) {\n\t\t\t\t\t\t$holder.addClass(errorClassName);\n\t\t\t\t\t}\n\n\t\t\t\t\tPage_HighlightValidatorsSummaryByControl[controlID][validatorID] = val;\n\t\t\t\t}\n\n\t\t\t\t// call custom function\n\t\t\t\tif (!val.isvalid) {\n\t\t\t\t\t// Add this back to enable ErrorClientFunction\n\t\t\t\t\t// Preferably talk to a FED first\n\t\t\t\t\t//if (errorCallFunction && eval(\"typeof(\" + errorCallFunction + \")\") == \"function\") {\n\t\t\t\t\t//\teval(errorCallFunction + \"(val)\");\n\t\t\t\t\t//}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// If afterValidationUpdateDisplay is defined, call it\n\t\tif (typeof window.afterValidatorUpdateDisplay === 'function') {\n\t\t\twindow.afterValidatorUpdateDisplay(val);\n\t\t}\n\t},\n\n\toldValidationSummaryOnSubmit: null,\n\n\tnewValidationSummaryOnSubmit: function(validationGroup) {\n\t\t// Run default .NET validation summary update function\n\t\tRACQ_JS.formsValidation.oldValidationSummaryOnSubmit(validationGroup);\n\n\t\tif (typeof Page_ValidationSummaries === 'undefined') {\n\t\t\treturn;\n\t\t}\n\n\t\tvar summary,\n\t\t\t$summary,\n\t\t\t$step,\n\t\t\t$li,\n\t\t\tsums;\n\n\t\tfor (sums = 0; sums < Page_ValidationSummaries.length; sums += 1) {\n\t\t\tsummary = Page_ValidationSummaries[sums];\n\n\t\t\tif (!summary) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t$summary = $(summary).hide();\n\t\t\t$step = $summary.closest('.msf__page');\n\n\t\t\tif (!Page_IsValid && IsValidationGroupMatch(summary, validationGroup)) {\n\t\t\t\tif (summary.showsummary != 'False') {\n\t\t\t\t\t$summary.show();\n\n\t\t\t\t\tif ($step.length > 0) {\n\t\t\t\t\t\tRACQ_JS.util.scrollPageTo($step, null, 0);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tRACQ_JS.util.scrollPageTo($summary, null, 0);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typeof summary.displaymode !== 'string') {\n\t\t\t\t\t\tsummary.displaymode = 'BulletList';\n\t\t\t\t\t}\n\n\t\t\t\t\tif (summary.displaymode === 'List' || summary.displaymode === 'SingleParagraph') {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$li = $summary.find('li');\n\n\t\t\t\t\t\tif ($li.length === 1) {\n\t\t\t\t\t\t\t$summary.hide();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar $errors = $step.find('.ctrls-holder.is-error:visible, .ctrl-holder.is-error:visible');\n\t\t\t\tif($errors.length > 0) {\n\t\t\t\t\tvar offset = -90;\n\t\t\t\t\tif($step.length > 0) {\n\t\t\t\t\t\tvar $sticky = $step.find('.sticky');\n\t\t\t\t\t\tif($sticky) {\n\t\t\t\t\t\t\toffset -= $sticky.height();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t$errors.first().velocity('scroll', {\n\t\t\t\t\t\toffset: offset,\n\t\t\t\t\t\tduration: 750,\n\t\t\t\t\t\teasing: [.2, .1, .15, 1]\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tgroup: {\n\t\tchangeHandler: function(el) {\n\t\t\t$(el).data('dirty.formsValidation', true);\n\t\t},\n\t\t/**\n\t\t * @function\n\t\t * @name RACQ_JS.formsValidation.group.blurHandler\n\t\t * @param [el] - The element that the triggered the blurHandler\n\t\t * @param [callback] - An optio nal callback to use after the user has finished editing the group\n\t\t * @param [allowToContinueIfAllFieldsHaveValue] - If set to true it allows the callback and validation to fire even while the user is still in the group as long as all fields have a value\n\t\t * @param [triggerClientValidator] - If set to true will allow the client validator assigned to the group leader to be triggered\n\t\t */\n\t\tblurHandler: function(el, callback, allowToContinueIfAllFieldsHaveValue, triggerClientValidator) {\n\t\t\tif (allowToContinueIfAllFieldsHaveValue !== true) {\n\t\t\t\tallowToContinueIfAllFieldsHaveValue = false;\n\t\t\t}\n\n\t\t\tif (triggerClientValidator !== true) {\n\t\t\t\ttriggerClientValidator = false;\n\t\t\t}\n\n\t\t\tsetTimeout(function() {\n\t\t\t\t\tvar $el = $(el),\n\t\t\t\t\t\t$group = $el.closest('.ctrls-holder'),\n\t\t\t\t\t\t$groupLeader = $group.find('input.group-leader, select.group-leader'),\n\t\t\t\t\t\t$closestToolTip = $group.find('.complex-tooltip__button'),\n\t\t\t\t\t\t$lastToolTipInGroup = $group.find('.ctrl-holder:last .complex-tooltip__button').last(),\n\t\t\t\t\t\t$inputs = $group.find(':input:not([type=\"hidden\"])'),\n\t\t\t\t\t\tallInputsHaveValue = true,\n\t\t\t\t\t\tdirty = false,\n\t\t\t\t\t\tactiveElement = $(document.activeElement),\n\t\t\t\t\t\tisInputOrAutoFillActive = false;\n\n\t\t\t\t\t// for elements changed by autocomplete as the change event would fire after the blur\n\t\t\t\t\tif ($el.data('changed-by-autocomplete') === true) {\n\t\t\t\t\t\t$el.trigger('change');\n\t\t\t\t\t\t$el.data('changed-by-autocomplete', false);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!$(activeElement).is($lastToolTipInGroup) && $(activeElement).is($closestToolTip) || activeElement.is('#ui-active-menuitem') || $inputs.filter(document.activeElement).length > 0) {\n\t\t\t\t\t\tisInputOrAutoFillActive = true;\n\t\t\t\t\t}\n\n\n\t\t\t\t\t$inputs.each(function() {\n\t\t\t\t\t\tvar $cache = $(this);\n\t\t\t\t\t\tif ($cache.val() === '') {\n\t\t\t\t\t\t\tallInputsHaveValue = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\n\t\t\t\t\tvar handleDirtyCallback = function() {\n\t\t\t\t\t\t// Are any of the fields in this group dirty?\n\t\t\t\t\t\t$inputs.each(function() {\n\t\t\t\t\t\t\tvar $input = $(this);\n\t\t\t\t\t\t\tif ($input.data('dirty.formsValidation') === true) {\n\t\t\t\t\t\t\t\tdirty = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t$input.data('dirty.formsValidation', false);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (dirty) {\n\t\t\t\t\t\t\tif(callback !== undefined && callback !== null) {\n\t\t\t\t\t\t\t\tcallback();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (triggerClientValidator === true && Page_Validators !== undefined && Page_Validators.length > 0) {\n\t\t\t\t\t\t\tvar cleanId = $groupLeader.attr('id').replace(/^igtxt/i, \"\");\n\t\t\t\t\t\t\tfor (var i = 0; i < Page_Validators.length; i++) {\n\t\t\t\t\t\t\t\tif (Page_Validators[i].controltovalidate === cleanId) {\n\t\t\t\t\t\t\t\t\tValidatorValidate(Page_Validators[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t// Have we left this group of fields?\n\t\t\t\tif (!document.activeElement || !isInputOrAutoFillActive) {\n\t\t\t\t\thandleDirtyCallback();\n\t\t\t\t} else if (activeElement.is('#ui-active-menuitem') === false && allInputsHaveValue === true && allowToContinueIfAllFieldsHaveValue === true) {\n\t\t\t\t\thandleDirtyCallback();\n\t\t\t\t}\n\t\t\t}, 1);\n\t\t},\n\t\ttriggerDateChange: function(el) {\n\t\t\t//legacy, use triggerGroupChange\n\t\t\tvar $el = $(el),\n\t\t\t\t$group = $el.closest('.ctrls-holder'),\n\t\t\t\t$day = $group.find('.date-day select, .date-txt-day');\n\n\t\t\t$day.trigger('change');\n\t\t},\n\t\ttriggerMonthChange: function(el) {\n\t\t\t//legacy, use triggerGroupChange\n\t\t\tvar $el = $(el),\n\t\t\t\t$group = $el.closest('.ctrls-holder'),\n\t\t\t\t$month = $group.find('.past-date-month :input, .future-date-month :input, .date-month-full select, .date-month select, .date-month-full select');\n\n\t\t\t$month.trigger('change');\n\t\t},\n\t\ttriggerAddressChange: function(el) {\n\t\t\t//legacy, use triggerGroupChange\n\t\t\tvar $el = $(el),\n\t\t\t\t$group = $el.closest('.ctrls-holder'),\n\t\t\t\t$address = $group.find('.suburb-text');\n\n\t\t\t$address.trigger('change');\n\t\t},\n\t\ttriggerGroupChange: function(el) {\t\t\t\t\t\t\n\n\t\t\tvar $el = $(el), \n\t\t\t\t$group = $el.closest('.ctrls-holder'),\n\t\t\t\t$groupLeader = $group.find('.group-leader');\n\n\t\t\t$groupLeader.trigger('change');\n\t\t}\n\t},\n\n\tvalidationAlwaysPasses: function(sender, args) {\n\t\targs.IsValid = true;\n\t},\n\n\tvalidationAlwaysFails: function(sender, args) {\n\t\targs.IsValid = false;\n\t},\n\n\t// The source parameter is a reference to the element rendered for the CustomValidator control. This allows you to programmatically control the tag, such as modifying the InnerHtml attribute\n\t// The arguments parameter is an object with two properties: Value and IsValid. This parameter allows you to get the value of the control to validate and to indicate whether the value is valid based on your custom validation routine.\n\t// http://msdn.microsoft.com/en-us/library/vstudio/system.web.ui.webcontrols.customvalidator(v=vs.100).aspx\n\t// returns false if input contains characters other than $,.0-9\n\tvalidationCurrency: function(source, args) {\n\t\tvar $ctrl = $(source).closest('.ctrl-holder'),\n\t\t\t$input = $ctrl.find('input[type=\"text\"]'),\n\t\t\thasInvalidChars = !!$input.val().match(/[^0-9\\.\\$,]+/g);\n\n\t\tif (hasInvalidChars) {\n\t\t\targs.IsValid = false;\n\t\t} else {\n\t\t\targs.IsValid = true;\n\t\t}\n\t},\n\n\t// returns false if value is not between data-slider-min and data-slider-max\n\tvalidationRange: function(source, args) {\n\t\tvar $ctrl = $(source).closest('.ctrl-holder'),\n\t\t\t$input = $ctrl.find('input[type=\"text\"]'),\n\t\t\thasInvalidChars = !!$input.val().match(/[^0-9\\.\\$,]+/g),\n\t\t\tval = parseInt($input.val().replace(/[^0-9\\.]+/g, ''), 10) || 0,\n\t\t\tmin = parseInt($ctrl.attr('data-slider-min'), 10) || 0,\n\t\t\tmax = parseInt($ctrl.attr('data-slider-max'), 10) || 100;\n\n\t\t// Return true if there is non-numeric input\n\t\tif (hasInvalidChars) {\n\t\t\targs.IsValid = true;\n\t\t} else {\n\t\t\tif (val >= min && val <= max) {\n\t\t\t\targs.IsValid = true;\n\t\t\t} else {\n\t\t\t\targs.IsValid = false;\n\t\t\t}\n\t\t}\n\t},\n\n\t// Returns VALID if one or more of the fields have a value\n\tvalidateMultiRequiredFields: function(source, args) {\n\t\tvar $parent = $(source).closest('.ctrls-holder'),\n\t\t\t$inputs = $parent.find('select, input[type=\"text\"]'),\n\t\t\tisValid = false;\n\n\t\t$inputs.each(function() {\n\t\t\tvar $input = $(this);\n\t\t\tif ($input.val() !== '' && !$input.hasClass('is-placeholder')) {\n\t\t\t\tisValid = true;\n\t\t\t}\n\t\t});\n\n\t\targs.IsValid = isValid;\n\t},\n\n\t// This will take the values from the month and year dropdowns and return VALID if they are from a month earlier than or equal to the the current month\n\t// It can also be used to validate inputs with a day, month and year input. In this case it will return VALID if the inputs are for a date earlier than or equal to the current date\n\tvalidatePastDate: function(source, args) {\n\t\tvar $parent = $(source).closest('.ctrls-holder'),\n\t\t\t$day = $parent.find('.past-date-day :input'),\n\t\t\t$month = $parent.find('.past-date-month :input'),\n\t\t\t$year = $parent.find('.past-date-year :input'),\n\t\t\tday = $day.val() || '1',\n\t\t\tmonth = $month.val(),\n\t\t\tyear = $year.val(),\n\t\t\tnow,\n\t\t\ttoday,\n\t\t\tinput;\n\n\t\tif (day === '' || month === '' || year === '') {\n\t\t\t//don't want to throw an error if one of the values is not yet entered.\n\t\t\targs.IsValid = true;\n\t\t} else {\n\t\t\tnow = moment();\n\t\t\ttoday = moment({\n\t\t\t\tday: now.date(),\n\t\t\t\tmonth: now.month(),\n\t\t\t\tyear: now.year()\n\t\t\t});\n\t\t\tinput = moment({\n\t\t\t\tday: parseInt(day, 10),\n\t\t\t\tmonth: parseInt(month, 10) - 1,\n\t\t\t\tyear: parseInt(year, 10)\n\t\t\t});\n\n\t\t\tif (input.isValid()) {\n\t\t\t\targs.IsValid = (input.unix() <= today.unix());\n\t\t\t} else {\n\t\t\t\t// if it is not a valid date, this validator does not apply\n\t\t\t\targs.IsValid = true;\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// NOTE: Look into using RACQ_JS.formsValidation.validateDate() for group validations. This function is now legacy.\n\t// This will take the values from the month and year dropdowns and return VALID if they are from a month later than or equal to the the current month\n\t// It can also be used to validate inputs with a day, month and year input. In this case it will return VALID if the inputs are for a date later than or equal to the current date\n\tvalidateFutureDate: function(source, args) {\n\t\tvar $parent = $(source).closest('.ctrls-holder'),\n\t\t\t$day = $parent.find('.future-date-day :input'),\n\t\t\t$month = $parent.find('.future-date-month :input'),\n\t\t\t$year = $parent.find('.future-date-year :input'),\n\t\t\tday = $day.val() || '1',\n\t\t\tmonth = $month.val(),\n\t\t\tyear = $year.val(),\n\t\t\tnow,\n\t\t\ttoday,\n\t\t\tinput;\n\n\t\tif (day === '' || month === '' || year === '') {\n\t\t\t//don't want to throw an error if one of the values is not yet entered.\n\t\t\targs.IsValid = true;\n\t\t} else {\n\t\t\tnow = moment();\n\t\t\ttoday = moment({\n\t\t\t\tday: now.date(),\n\t\t\t\tmonth: now.month(),\n\t\t\t\tyear: now.year()\n\t\t\t});\n\t\t\tinput = moment({\n\t\t\t\tday: parseInt(day, 10),\n\t\t\t\tmonth: parseInt(month, 10) - 1,\n\t\t\t\tyear: parseInt(year, 10)\n\t\t\t});\n\n\t\t\t// If there is no day field, set input to the end of the month\n\t\t\tif ($day.length === 0) {\n\t\t\t\tinput.add(1, 'months').subtract(1, 'days');\n\t\t\t}\n\n\t\t\tif (input.isValid()) {\n\t\t\t\targs.IsValid = (input.unix() >= today.unix());\n\t\t\t} else {\n\t\t\t\t// if it is not a valid date, this validator does not apply\n\t\t\t\targs.IsValid = true;\n\t\t\t}\n\t\t}\n\t},\n\n\t// Validator that will validate multiple validators at once\n\t// Has support for:\n\t// Regex, equalto, required, min/max\n\tvalidateAll: function(source, args) {\n\t\tvar $source = $(source),\n\t\t\t$input = $source.closest('.ctrl-holder').find('input, select, textarea'),\n\t\t\tvalue = $input.val(),\n\t\t\t$errorLabel = $source.find('label'),\n\t\t\tisRequired = $input.data('validation-required'),\n\t\t\tregex = $input.data('validation-regex'),\n\t\t\tequalto = $input.data('validation-equalto'),\n\t\t\tmin = $input.data('validation-min'),\n\t\t\tmax = $input.data('validation-max'),\n\t\t\tvalid = true,\n\t\t\tregexMessage = $input.data('validation-regex-message'),\n\t\t\tequaltoMessage = $input.data('validation-equalto-message'),\n\t\t\trequiredMessage = $input.data('validation-required-message'),\n\t\t\tminMessage = $input.data('validation-min-message'),\n\t\t\tmaxMessage = $input.data('validation-max-message');\n\n\t\tvar ArgsMock = function(){\n\t\t\tthis.IsValid = false;\n\t\t};\n\n\t\tif(isRequired === true) {\n\t\t\tvar requiredArgs = new ArgsMock();\n\t\t\tRACQ_JS.formsValidation.validateHasValue(source, requiredArgs);\n\n\t\t\tif(requiredArgs.IsValid === false) {\n\t\t\t\tvalid = false;\n\t\t\t\tif(requiredMessage !== undefined) {\n\t\t\t\t\t$errorLabel.html(requiredMessage);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif(regex !== undefined) {\n\t\t\tvar regexArgs = new ArgsMock();\n\t\t\tRACQ_JS.formsValidation.validateRegex(source, regexArgs);\n\n\t\t\tif(regexArgs.IsValid === false) {\n\t\t\t\tvalid = false;\n\t\t\t\tif(regexMessage !== undefined) {\n\t\t\t\t\t$errorLabel.html(regexMessage);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif(equalto !== undefined) {\n\t\t\tvar equaltoArgs = new ArgsMock();\n\t\t\tRACQ_JS.formsValidation.validateEqualTo(source, equaltoArgs);\n\n\t\t\tif(equaltoArgs.IsValid === false) {\n\t\t\t\tvalid = false;\n\t\t\t\tif(equaltoMessage !== undefined) {\n\t\t\t\t\t$errorLabel.html(equaltoMessage);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif(min !== undefined || max !== undefined) {\n\t\t\tvar minMaxArgs = new ArgsMock();\n\t\t\tRACQ_JS.formsValidation.validateMinMax(source, minMaxArgs);\n\n\t\t\tif(minMaxArgs.IsValid === false) {\n\t\t\t\tvalid = false;\n\t\t\t\tif(max !== undefined && value.isNumber() && value > max && maxMessage !== undefined) {\n\t\t\t\t\t$errorLabel.html(maxMessage);\n\t\t\t\t} else if(min !== undefined && value.isNumber() && value < min && minMessage !== undefined) {\n\t\t\t\t\t$errorLabel.html(minMessage);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\targs.IsValid = valid;\n\t},\n\n\tvalidateHasValue: function(source, args) {\n\t\tvar $input = $(source).closest('.ctrl-holder').find('input'),\n\t\t\tval = $input.val();\n\n\t\tif(val !== '') {\n\t\t\targs.IsValid = true;\n\t\t}\n\t},\n\n\tvalidateRegex: function(source, args) {\n\t\tvar $input = $(source).closest('.ctrl-holder').find('input'),\n\t\t\tval = $input.val(),\n\t\t\tregex = $input.data('validation-regex');\n\n\t\tif(regex !== null && regex !== '') {\n\t\t\tif(val.match(regex)) {\n\t\t\t\targs.IsValid = true;\n\t\t\t}\n\t\t}\n\t},\n\n\tvalidateEqualTo: function(source, args) {\n\t\tvar $input = $(source).closest('.ctrl-holder').find('input'),\n\t\tval = $input.val(),\n\t\tequalTargetId = $input.data('validation-equalto'),\n\t\tequalTargetVal = $('#'+equalTargetId).val() || '',\n\t\tisCaseInSensitive = $input.data('validation-case-insensitive');\n\n\t\tif(isCaseInSensitive) {\n\t\t\tequalTargetVal = equalTargetVal ? equalTargetVal.toLowerCase() : equalTargetVal\n\t\t\tval = val ? val.toLowerCase() : val\n\t\t}\n\n\t\tif($('#'+equalTargetId).length > 0) {\n\t\t\targs.IsValid = val !== null && equalTargetVal == val;\t\n\t\t}\n\t}, \n\n\tvalidateMinMax: function(source, args) {\n\t\tvar $input = $(source).closest('.ctrl-holder').find('input'),\n\t\t\tval = $input.val(),\n\t\t\tmin = $input.data('validation-min'),\n\t\t\tmax = $input.data('validation-max'),\n\t\t\tvalid = true;\n\n\t\t// first check that val is a number\n\t\tif(val.isNumber()) {\n\t\t\tif(min !== '') {\n\t\t\t\tif(val < min) {\n\t\t\t\t\tvalid = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(max !== '') {\n\t\t\t\tif (val > max) {\n\t\t\t\t\tvalid = false;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvalid = false;\n\t\t}\n\t\targs.IsValid = valid;\n\t},\n\n\tvalidatePostcodeIfTargetIsAustralia: function(source, args) {\n\t\tvar $el = $(source),\n\t\t\t$targetField = $($el.data('target-to-validate-against')), // should be a CSS selector\n\t\t\ttargetValue = $targetField.val().toLowerCase(),\n\t\t\tvalid = false;\n\n\t\t// IF australia THEN check if postcode ELSE it's always OK\n\t\tif(targetValue === 'australia') {\n\t\t\tif(RACQ_JS.util.isAustralianPostcode($el.val()) === true) {\n\t\t\t\tvalid = true;\n\t\t\t} else {\n\t\t\t\tvalid = false;\n\t\t\t}\n\t\t} else if(targetValue !== 'australia') {\n\t\t\tvalid = true;\n\t\t}\n\t\targs.IsValid = valid;\n\t},\n\n\tvalidateDate: function(source, args) {\n\n\t\tif($.browser.msie&&$.browser.version<9){\n\t\t\treturn false;\n\t\t}\n\n\t\t// Because setTimeout which is needed causes ValidateDateSelectors to return without setting args we need to use a promise as this is now an async operation\n\t\tvar validate = function() {\n\t\t\tvar d = new $.Deferred(),\n\t\t\t\tisValid = false;\n\n\t\t\tvar $source = $(source),\n\t\t\t\t$parent = $source.closest('.ctrls-holder');\n\n\t\t\tif ($parent.length === 0) {\n\t\t\t\t$parent = $source.closest('.ctrl-holder');\n\t\t\t}\n\n\t\t\tvar $day = $parent.find('.date-day select, .date-txt-day'),\n\t\t\t\t$month = $parent.find('.date-month select, .date-month-full select, .date-txt-month'),\n\t\t\t\t$year = $parent.find('.date-year select, .date-txt-year'),\n\t\t\t\t$inputs = $('.date-day select, .date-txt-day, .date-month select, .date-month-full select, .date-txt-month, .date-year select, .date-txt-year'),\n\t\t\t\tday = $day.val(),\n\t\t\t\tmonth = $month.val(),\n\t\t\t\tyear = $year.val(),\n\t\t\t\tyearOnly = false,\n\t\t\t\tminimumDateStr = $source.data('minimum-date'),\n\t\t\t\tmaximumDateStr = $source.data('maximum-date'),\n\t\t\t\tallFieldsEmpty = true;\n\n\t\t\tif ($day.length > 0 && $day.val() !== '') {\n\t\t\t\tallFieldsEmpty = false;\n\t\t\t}\n\n\t\t\tif ($month.length > 0 && $month.val() !== '') {\n\t\t\t\tallFieldsEmpty = false;\n\t\t\t}\n\n\t\t\tif ($year.length > 0 && $year.val() !== '') {\n\t\t\t\tallFieldsEmpty = false;\n\t\t\t}\n\n\t\t\t//will let the required field validator handle this.\n\t\t\tif (allFieldsEmpty === true) {\n\t\t\t\td.resolve(true);\n\t\t\t}\n\n\t\t\t// for month and year selectors\n\t\t\tif ($day.length === 0) {\n\t\t\t\tday = '01';\n\t\t\t}\n\n\t\t\t// for only year selector\n\t\t\tif ($month.length === 0) {\n\t\t\t\tmonth = '01';\n\t\t\t\tyearOnly = true;\n\t\t\t}\n\n\t\t\tif (day === 'dd') {\n\t\t\t\tday = '';\n\t\t\t}\n\t\t\tif (month === 'mm') {\n\t\t\t\tmonth = '';\n\t\t\t}\n\t\t\tif (year === 'yyyy') {\n\t\t\t\tyear = '';\n\t\t\t}\n\n\t\t\tif (day === '' || month === '' || year === '') {\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t//don't want to throw an error if one of the values is not yet entered and the user is still in the fields.\n\t\t\t\t\tif (!document.activeElement || $inputs.filter(document.activeElement).length === 0) {\n\t\t\t\t\t\tisValid = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tisValid = true;\n\t\t\t\t\t}\n\t\t\t\t\td.resolve(isValid);\n\t\t\t\t}, 1);\n\t\t\t} else {\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t//don't want to throw error if user is still in the fields\n\t\t\t\t\tif (!document.activeElement || $inputs.filter(document.activeElement).length === 0) {\n\t\t\t\t\t\tvar minimumDate = moment(minimumDateStr);\n\t\t\t\t\t\tvar maximumDate = moment(maximumDateStr);\n\t\t\t\t\t\tvar date = moment({\n\t\t\t\t\t\t\tday: parseInt(day, 10),\n\t\t\t\t\t\t\tmonth: parseInt(month, 10) - 1,\n\t\t\t\t\t\t\tyear: parseInt(year, 10)\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (date.isValid() === true) {\n\t\t\t\t\t\t\tvar dateValid = true;\n\t\t\t\t\t\t\tif (minimumDateStr !== undefined && date <= minimumDate) {\n\t\t\t\t\t\t\t\tdateValid = false;\n\t\t\t\t\t\t\t} else if (maximumDateStr !== undefined && date >= maximumDate) {\n\t\t\t\t\t\t\t\tdateValid = false;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tisValid = dateValid;\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tisValid = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\td.resolve(isValid);\n\t\t\t\t\t}\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t\treturn d;\n\t\t};\n\n\t\tvalidate().done(function(data) {\n\t\t\tsource.isvalid = data;\n\t\t\tValidatorUpdateDisplay(source);\n\t\t});\n\n\t\targs.IsValid = source.isvalid;\n\t},\n\tvalidateCheckboxChecked: function (source, args) {\n var $source = $(source),\n $target = $($source.data('target-checkbox')),\n\t\t\t$parent = $source.closest('.ctrl-holder');\n\t\t\t\n args.IsValid = (($parent.is(\":visible\")==false) || ($parent.is(\":visible\") && $target.is(':checked')));\n\t\tif (!args.IsValid) {\n\t\t\t$parent.addClass(\"is-error\");\n\t\t} else {\n\t\t\t$parent.removeClass(\"is-error\");\n\t\t}\n },\n\ttriggerValidatorById: function (id) {\n var validator = document.getElementById(id);\n ValidatorValidate(validator);\n }\n};\n\n(function(NAMESPACE) {\n\tvar updatedValidators = false;\n\n\tNAMESPACE.formsValidation.init = function() {\n\t\t// Don't try to update the validators twice\n\t\tif (updatedValidators) {\n\t\t\treturn;\n\t\t}\n\n\t\t$(document).ready(function() {\n\t\t\tif (typeof ValidatorValidate === 'function') {\n\t\t\t\tNAMESPACE.formsValidation.oldValidatorValidate = ValidatorValidate;\n\t\t\t\tValidatorValidate = NAMESPACE.formsValidation.newValidatorValidate;\n\t\t\t\tupdatedValidators = true;\n\t\t\t}\n\n\t\t\tif (typeof ValidatorUpdateDisplay === 'function') {\n\t\t\t\tNAMESPACE.formsValidation.oldValidatorUpdateDisplay = ValidatorUpdateDisplay;\n\t\t\t\tValidatorUpdateDisplay = NAMESPACE.formsValidation.newValidatorUpdateDisplay;\n\t\t\t}\n\n\t\t\tif (typeof ValidationSummaryOnSubmit === 'function') {\n\t\t\t\tNAMESPACE.formsValidation.oldValidationSummaryOnSubmit = ValidationSummaryOnSubmit;\n\t\t\t\tValidationSummaryOnSubmit = NAMESPACE.formsValidation.newValidationSummaryOnSubmit;\n\t\t\t}\n\n\t\t\t// Don't use this anymore. It is only here for legacy purposes\n\t\t\twindow.ValidateDateSelectors = function (source, args) {\n\t\t\t\tconsole.warn('Warning: ValidateDateSelectors should not be used anymore. Please use RACQ_JS.formsValidation.validateDate()');\n\t\t\t\tNAMESPACE.formsValidation.validateDate(source,args);\n\t\t\t};\n\n\n\t\t\tNAMESPACE.formsValidation.newValidatorOnChange = function(event) {\n\t\t\t\tevent = event || window.event;\n\t\t\t\tif (event != null) {\n\t\t\t\t\tvar targetedControl;\n\n\t\t\t\t\tif ((typeof(event.srcElement) != 'undefined') && (event.srcElement != null)) {\n\t\t\t\t\t\ttargetedControl = event.srcElement;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttargetedControl = event.target;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (targetedControl != null) {\n\t\t\t\t\t\tValidatorOnChange(event);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t};\n}(RACQ_JS));\n\nRACQ_JS.formsValidation.init();\n\n/* ==========================================================================\n * Gated content helpers\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.gatedContent = (function() {\n\n\t\tvar findClosestMarker = function($el) {\n\t\t\tvar closestMarker = $el.closest('.gated-content-marker');\n\t\t\treturn closestMarker;\n\t\t};\n\n\t\tvar getMarkerId = function($marker) {\n\t\t\tvar markerId = false;\n\t\t\tif($marker) {\n\t\t\t\tmarkerId = $marker.data('gated-marker-id');\n\t\t\t}\n\t\t\treturn markerId;\n\t\t};\n\n\t\tvar init = function() {\n\t\t\tvar $markers = $('.gated-content-marker'),\n\t\t\t\t$gatedContentLinks = $('.fn_gated-content-link'),\n\t\t\t\tpreviousGateId;\n\n\t\t\tpreviousGateId = NAMESPACE.util.getParameterByName('gate');\n\n\t\t\t$markers.each(function(i, el) {\n\t\t\t\t$(el).data('gated-marker-id', i);\n\t\t\t});\n\n\t\t\t$gatedContentLinks.each(function(i, el) {\n\t\t\t\tvar $cachedEl = $(el);\n\n\t\t\t\tif ($cachedEl.data('init') !== true) {\n\t\t\t\t\t$cachedEl.on('click.gated-content', function(e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tvar href = $cachedEl.attr('href'),\n\t\t\t\t\t\t\tclosestMarkerId = getMarkerId(findClosestMarker($cachedEl));\n\n\t\t\t\t\t\thref = NAMESPACE.util.addQueryStringToReturnUrl(href, 'gate', closestMarkerId);\n\n\t\t\t\t\t\tif (window.location.hash !== '') {\n\t\t\t\t\t\t\thref = NAMESPACE.util.addHashToReturnUrl(href, window.location.hash.substr(1));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\twindow.location.href = href;\n\t\t\t\t\t});\n\n\t\t\t\t\t$cachedEl.data('init', true);\n\t\t\t\t\t$cachedEl.removeClass('fn_gated-content-link');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(previousGateId !== '') {\n\t\t\t\tvar $previousGate = $markers.eq(previousGateId);\n\t\t\t\tif($previousGate.length > 0) {\n\t\t\t\t\tvar accordions = $previousGate.parents('.accordion-item').find('> .expandcollapse');\n\n\t\t\t\t\taccordions.each(function() {\n\t\t\t\t\t\t$(this).trigger('open.expandcollapse');\n\t\t\t\t\t});\n\n\t\t\t\t\tNAMESPACE.util.scrollPageTo($previousGate.offset().top);\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init\n\t\t};\n\t}());\n\n}(RACQ_JS));\n\n/* =============================================================================\n HEADER BIG LINKS DROPDOWN\n ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.headerBigLinks = (function() {\n\n\t\tvar init = function() {\n\t\t\tvar CONST = {\n\t\t\t\t\tCLASS: {\n\t\t\t\t\t\tHOVER: 'is-hover'\n\t\t\t\t\t},\n\t\t\t\t\tDROPDOWN_TIMEOUT_DURATION: 250\n\t\t\t\t},\n\t\t\t\t$items = $('.header-big-links .has-children');\n\n\t\t\t$items.each(function() {\n\t\t\t\tvar $item = $(this);\n\n\t\t\t\tif (Modernizr.touch) {\n\t\t\t\t\t$item.find('a').on('touchstart.header-big-links click.header-big-links', function(e) {\n\t\t\t\t\t\tif ($item.hasClass(CONST.CLASS.HOVER)) {\n\t\t\t\t\t\t\t// Allow the user to follow the link if they click it again\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$item.addClass(CONST.CLASS.HOVER);\n\t\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\t\t$('body').on('touchstart.header-big-links', function(e) {\n\t\t\t\t\t\t\t\tif ($items.find(e.target).length === 0) {\n\t\t\t\t\t\t\t\t\t$('body').off('.header-big-links');\n\t\t\t\t\t\t\t\t\t$item.removeClass(CONST.CLASS.HOVER);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t$item.hoverIntent({\n\t\t\t\t\t\ttimeout: CONST.DROPDOWN_TIMEOUT_DURATION,\n\t\t\t\t\t\tover: function() {\n\t\t\t\t\t\t\t$item.addClass(CONST.CLASS.HOVER);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tout: function() {\n\t\t\t\t\t\t\t$item.removeClass(CONST.CLASS.HOVER);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t$item.find('a').on('focus.header-big-links', function() {\n\t\t\t\t\t\t$item.addClass(CONST.CLASS.HOVER);\n\t\t\t\t\t}).on('blur.header-big-links', function() {\n\t\t\t\t\t\t$item.removeClass(CONST.CLASS.HOVER);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init\n\t\t};\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * Header overlay\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\t'use strict';\n\n\tNAMESPACE.headerOverlay = (function() {\n\n\t\tvar CONST = {\n\t\t\toverlayActiveClass: 'header-overlay--active',\n\t\t\toverlayContentClass: 'header-overlay__content',\n\t\t\toverlayCloseButtonClass: 'header-overlay__close',\n\t\t\toverlayLoaderClass: 'preloader__spinner',\n\t\t\toverlayIsLoadingClass: 'header-overlay--loading'\n\t\t};\n\n\t\tvar init = function() {\n\t\t\tvar $el = $('.fn_overlayLink');\n\n\t\t\t$el.each(function() {\n\t\t\t\tvar $mod = $(this),\n\t\t\t\t\t$contentHeader = $('.content-header'),\n\t\t\t\t\t$overlay = $('.header-overlay'),\n\t\t\t\t\t$overlayContent = $overlay.find('.'+CONST.overlayContentClass),\n\t\t\t\t\t$closeBtn = $overlay.find('.'+CONST.overlayCloseButtonClass),\n\t\t\t\t\tajaxUrl = $mod.data('ajax-url'),\n\t\t\t\t\tspinner = NAMESPACE.spinner($overlay.find('.'+CONST.overlayLoaderClass)),\n\t\t\t\t\topenOverlayAtMobile = $mod.data('open-overlay-at-mobile') === true,\n\t\t\t\t\tcurrentlyLoading = false;\n\n\t\t\t\tif ($mod.data('init') !== true) {\n\t\t\t\t\tvar ajaxUrlClicked = function(e) {\n\t\t\t\t\t\tvar open = false;\n\n\t\t\t\t\t\tif (!NAMESPACE.IS_RESPONSIVE || window.matchMedia(NAMESPACE.mediaQueries.bp('l')).matches || openOverlayAtMobile) {\n\t\t\t\t\t\t\topen = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(open === true){\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tif(!$mod.hasClass('active')) {\n\t\t\t\t\t\t\t\tcloseOverlay();\n\t\t\t\t\t\t\t\tsetAsActive();\n\t\t\t\t\t\t\t\topenOverlay();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcloseOverlay();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tvar setAsActive = function() {\n\t\t\t\t\t\t$mod.addClass('active');\n\t\t\t\t\t};\n\n\t\t\t\t\tvar removeAllIsActive = function() {\n\t\t\t\t\t\t$el.removeClass('active');\n\t\t\t\t\t};\n\n\t\t\t\t\tvar openOverlay = function() {\n\t\t\t\t\t\tclearOverlayContent();\n\t\t\t\t\t\t$overlay.addClass(CONST.overlayActiveClass);\n\t\t\t\t\t\tloadContent();\n\t\t\t\t\t\t$contentHeader.addClass('overlay-active');\n\t\t\t\t\t};\n\n\t\t\t\t\tvar closeOverlay = function(e) {\n\t\t\t\t\t\tif(e){\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tremoveAllIsActive();\n\t\t\t\t\t\t$overlay.removeClass(CONST.overlayActiveClass);\n\t\t\t\t\t\tclearOverlayContent();\n\t\t\t\t\t\t$contentHeader.trigger('update.equalHeights');\n\t\t\t\t\t\t$contentHeader.removeClass('overlay-active');\n\t\t\t\t\t};\n\n\t\t\t\t\tvar clearOverlayContent = function() {\n\t\t\t\t\t\t$overlayContent.html('');\n\t\t\t\t\t};\n\n\t\t\t\t\tvar startLoader = function() {\n\t\t\t\t\t\tspinner.startAnimation();\n\t\t\t\t\t\t$overlay.addClass(CONST.overlayIsLoadingClass);\n\t\t\t\t\t};\n\n\t\t\t\t\tvar stopLoader = function() {\n\t\t\t\t\t\tspinner.stopAnimation();\n\t\t\t\t\t\t$overlay.removeClass(CONST.overlayIsLoadingClass);\n\t\t\t\t\t};\n\n\t\t\t\t\tvar loadContent = function() {\n\t\t\t\t\t\tstartLoader();\n\t\t\t\t\t\tcurrentlyLoading = true; // use this so we know when we can check for the location after load\n\t\t\t\t\t\tNAMESPACE.util.ajax({\n\t\t\t\t\t\t\tminDuration: 250,\n\t\t\t\t\t\t\turl: ajaxUrl,\n\t\t\t\t\t\t\terror: function() {\n\t\t\t\t\t\t\t\tstopLoader();\n\t\t\t\t\t\t\t\tcloseOverlay();\n\t\t\t\t\t\t\t\tcurrentlyLoading = false;\n\t\t\t\t\t\t\t\tconsole.warn('Header overlay: Error loading content');\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tsuccess: function(data) {\n\t\t\t\t\t\t\t\tvar $data = $(data);\n\n\t\t\t\t\t\t\t\tif($data.hasClass('ajax-content')) {\n\t\t\t\t\t\t\t\t\t$data = $data.children();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif($data.find('.ajax-content').length > 0) {\n\t\t\t\t\t\t\t\t\t\t$data = $data.find('.ajax-content').children();\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t$data = data;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tstopLoader();\n\t\t\t\t\t\t\t\tsetHtmlToOverlay(data);\n\t\t\t\t\t\t\t\t$contentHeader.trigger('update.equalHeights');\n\t\t\t\t\t\t\t\tNAMESPACE.tabs.init();\n\t\t\t\t\t\t\t\tNAMESPACE.autocomplete();\n\n\t\t\t\t\t\t\t\tcurrentlyLoading = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t};\n\n\t\t\t\t\tvar setHtmlToOverlay = function(html) {\n\t\t\t\t\t\t$overlayContent.html(html);\n\t\t\t\t\t};\n\n\t\t\t\t\tvar foundLocation = function(location) {\n\t\t\t\t\t\tvar $postCodeHelp = $overlay.find('.postcode-help');\n\t\t\t\t\t\tvar postCodeRequestUrl = $postCodeHelp.data('url-for-postcode');\n\n\t\t\t\t\t\tvar data = {\n\t\t\t\t\t\t\tlongitude: location.longitude,\n\t\t\t\t\t\t\tlatitude: location.latitude\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tNAMESPACE.util.ajax({\n\t\t\t\t\t\t\turl: postCodeRequestUrl,\n\t\t\t\t\t\t\tdataType: 'json',\n\t\t\t\t\t\t\tdata: data,\n\t\t\t\t\t\t\terror: function(error) {\n\t\t\t\t\t\t\t\tconsole.warn(error);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tsuccess: function(data) {\n\t\t\t\t\t\t\t\tif (data.msg === 'success' && data.postcode && data.postcode.match(/^\\d+$/)) {\n\t\t\t\t\t\t\t\t\tvar $postcodeLink = $postCodeHelp.find('.js-postcode-search-link'),\n\t\t\t\t\t\t\t\t\t\thref = $postcodeLink.attr('href');\n\n\t\t\t\t\t\t\t\t\thref = href.replace(/postcode=\\d*/, 'postcode=' + data.postcode);\n\n\t\t\t\t\t\t\t\t\t$postCodeHelp.find('.js-postcode-insert').html(data.postcode);\n\t\t\t\t\t\t\t\t\t$postcodeLink.attr('href', href);\n\t\t\t\t\t\t\t\t\tshowLocationFound();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\thideLocationFound();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t};\n\n\t\t\t\t\tvar showLocationFound = function() {\n\t\t\t\t\t\tvar $postCodeHelp = $overlay.find('.postcode-help');\n\t\t\t\t\t\t$postCodeHelp.css('visibility', 'visible');\n\t\t\t\t\t};\n\n\t\t\t\t\tvar hideLocationFound = function() {\n\t\t\t\t\t\tvar $postCodeHelp = $overlay.find('.postcode-help');\n\t\t\t\t\t\t$postCodeHelp.css('visibility', 'hidden');\n\t\t\t\t\t};\n\n\t\t\t\t\t$mod.on('click.headeroverlay', ajaxUrlClicked);\n\t\t\t\t\t$closeBtn.on('click.headeroverlay', closeOverlay);\n\n\t\t\t\t\tif($mod.hasClass('fn_askLocation')) {\n\t\t\t\t\t\t$mod.on('click.locationask', function(e){\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tnavigator.geolocation.getCurrentPosition(function(pos) {\n\t\t\t\t\t\t\t\t// keep trying until the overlay has finished loading as it may not exist yet;\n\t\t\t\t\t\t\t\t(function wait(){\n\t\t\t\t\t\t\t\t\tif (currentlyLoading){\n\t\t\t\t\t\t\t\t\t\tsetTimeout(wait, 25);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tfoundLocation(pos.coords);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}());\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t\t$mod.removeClass('fn_askLocation');\n\t\t\t\t\t}\n\n\t\t\t\t\t$mod.data('init', true);\n\t\t\t\t\t$mod.removeClass('fn_overlayLink');\n\t\t\t\t}\n\t\t\t});\n\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init\n\t\t};\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * IFRAME\n * This module allows an iframe to be embedded at certain breakpoints\n * Include data-include-hash if you want the hash fragment from the current URL to be appended to the iframe URL\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tvar DEFAULT_IFRAME_HEIGHT = '800px';\n\tvar DEFAULT_IFRAME_SCROLLING = 'yes';\n\n\tNAMESPACE.iframe = function() {\n\t\t$('.fn_iframe').each(function() {\n\t\t\tvar $mod = $(this).removeClass('fn_iframe');\n\n\n\t\t\t$mod.on('attach.mqad', function(event) {\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tvar src = $mod.attr('data-iframe-src'),\n\t\t\t\t\tincludeHash = $mod.attr('data-include-hash'),\n\t\t\t\t\theight = $mod.attr('data-iframe-height') || DEFAULT_IFRAME_HEIGHT,\n\t\t\t\t\tscrolling = $mod.attr('data-iframe-scrolling') || DEFAULT_IFRAME_HEIGHT;\n\n\t\t\t\tif (src) {\n\t\t\t\t\tif (includeHash === '1') {\n\n\t\t\t\t\t\tvar uri = window.location.hash;\n\t\t\t\t\t\tsrc += encodeURI(uri);\n\t\t\t\t\t}\n\n\t\t\t\t\t$mod.append('');\n\t\t\t\t\t$mod.off('attach.mqad');\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t};\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * EVENTS\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.imagefill = (function() {\n\n\t\tvar CONST = {\n\t\t\tIS_LOADING: 'is-loading',\n\t\t\tTO_TOP: false\n\t\t};\n\n\t\tvar _loadedImages = [];\n\n\t\tvar _fitImage = function($container, $image, skip) {\n\t\t\tif($container.data('if-attached') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar skipContainerCheck = (typeof(skip) === 'boolean' && skip === true);\n\n\t\t\t//check if size has actually changed\n\t\t\tif(!skipContainerCheck && $container.width() === $container.data('if-container-width') && $container.height() === $container.data('if-container-height')) {\n\t\t\t\treturn; //nothing's changed\n\t\t\t}\n\n\t\t\tvar cWidth = $container.width(),\n\t\t\t\tcHeight = $container.height(),\n\t\t\t\tcAspect = cWidth / cHeight;\n\n\t\t\tvar iAspect = $container.data('if-image-aspect');\n\n\t\t\tif(cAspect < iAspect) {\n\t\t\t\t//image is taller\n\t\t\t\t$image.css({\n\t\t\t\t\twidth: 'auto',\n\t\t\t\t\theight: cHeight,\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: -((cHeight * iAspect) - cWidth) / 2\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t//image is wider\n\t\t\t\t$image.css({\n\t\t\t\t\twidth: cWidth,\n\t\t\t\t\theight: 'auto',\n\t\t\t\t\ttop: (CONST.TO_TOP) ? 0 : -((cWidth / iAspect) - cHeight) / 2,\n\t\t\t\t\tleft: 0\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t//save update sizes\n\t\t\t$container.data('if-container-width', cWidth).data('if-container-height', cHeight);\n\t\t};\n\n\t\tvar _unfitImage = function($container, $image) {\n\t\t\t$image.css({\n\t\t\t\twidth: '',\n\t\t\t\theight: '',\n\t\t\t\ttop: '',\n\t\t\t\tleft: '',\n\t\t\t\tposition: ''\n\t\t\t});\n\n\t\t\t$container.data('if-container-width', '').data('if-container-height', '');\n\t\t};\n\n\t\tvar _fitLoadedImages = function() {\n\t\t\tfor(var i = 0, len = _loadedImages.length; i < len; i+=1) {\n\t\t\t\tvar item = _loadedImages[i];\n\n\t\t\t\t_fitImage(item.$container, item.$image);\n\t\t\t}\n\t\t};\n\n\t\tvar init = function(scope) {\n\t\t\t$('.fn_imagefill', scope).each(function(i, el){\n\t\t\t\tvar $container = $(el),\n\t\t\t\t\t$image = $container.find('img');\n\n\t\t\t\t//don't rerun if already loaded\n\t\t\t\tif($container.data('if-image-loaded') === true) {\n\t\t\t\t\t_fitImage($container, $image);\n\t\t\t\t}\n\n\t\t\t\t//set image to absolute\n\t\t\t\t$image.css('position', 'absolute');\n\n\t\t\t\t//setup container\n\t\t\t\tvar cPosition = $container.css('position');\n\n\t\t\t\tif(cPosition === 'static') {\n\t\t\t\t\t$container.css('position', 'relative');\n\t\t\t\t}\n\n\t\t\t\t$container.css('overflow', 'hidden');\n\n\t\t\t\t//set heights so we can detect if the container changes and we need to recalculate\n\t\t\t\t$container.data('if-container-width', $container.width()).data('if-container-height', $container.height());\n\n\t\t\t\t//load the images first\n\t\t\t\t$container.imagesLoaded().done(function(){\n\t\t\t\t\t$container.data('if-image-aspect', $image.width() / $image.height()).data('if-image-loaded', true);\n\n\t\t\t\t\t//store in array so we can loop through all the loaded one\n\t\t\t\t\t//to change on resize instead of multiple resize listeners\n\t\t\t\t\t_loadedImages.push({\n\t\t\t\t\t\t$container: $container,\n\t\t\t\t\t\t$image: $image\n\t\t\t\t\t});\n\n\t\t\t\t\t// pass true to skip the size check validation\n\t\t\t\t\t_fitImage($container, $image, true);\n\n\t\t\t\t\t$container.removeClass(CONST.IS_LOADING);\n\t\t\t\t});\n\n\t\t\t\t$container.data('if-attached', true);\n\n\t\t\t\t$container.on('attach.mqad', function(event){\n\t\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t\t$container.data('if-attached', true);\n\n\t\t\t\t\t$image.css('position', 'absolute');\n\t\t\t\t\t_fitImage($container, $image, true);\n\t\t\t\t});\n\n\t\t\t\t$container.on('detach.mqad', function(event){\n\t\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t\t$container.data('if-attached', false);\n\n\t\t\t\t\t_unfitImage($container, $image);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t//init can be run multiple times, so reset the event\n\t\t\tvar debounceFitLoadedImages = $.debounce(250, _fitLoadedImages);\n\n\t\t\t$(window).off('resize.imagefill', debounceFitLoadedImages).on('resize.imagefill', debounceFitLoadedImages);\n\t\t\t_fitLoadedImages();\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init\n\t\t};\n\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * IMAGE LOADER\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.imageLoader = (function() {\n\t\tvar CONST = {\n\t\t\tBREAKPOINT: 'm'\n\t\t};\n\n\t\tvar init = function() {\n\t\t\t$('.fn_imageLoader').each(function(i, el){\n\t\t\t\tvar $container = $(el),\n\t\t\t\t\tsrc = $container.attr('data-image-src') || false,\n\t\t\t\t\tsrcSmall = $container.attr('data-image-src-small') || false,\n\t\t\t\t\talt = $container.attr('data-image-alt') || '',\n\t\t\t\t\tattrHeight = $container.attr('data-image-height') || false,\n\t\t\t\t\tattrWidth = $container.attr('data-image-width') || false;\n\n\t\t\t\tvar $imgContainer = $('\"'+alt+'\"');\n\n\t\t\t\tif (attrHeight) {\n\t\t\t\t\t$imgContainer.attr('data-image-height', attrHeight);\n\t\t\t\t}\n\n\t\t\t\tif (attrWidth) {\n\t\t\t\t\t$imgContainer.attr('data-image-width', attrWidth);\n\t\t\t\t}\n\n\t\t\t\t$container.replaceWith($imgContainer);\n\n\t\t\t\t//only load the large image for non-responsive pages\n\t\t\t\tif (!NAMESPACE.IS_RESPONSIVE || (typeof(src) === 'string' && srcSmall === false)) {\n\t\t\t\t\t$imgContainer.attr('src', src);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (typeof(srcSmall) === 'string' && src === false) {\n\t\t\t\t\t$imgContainer.attr('src', srcSmall);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar _isSmallLoaded = false,\n\t\t\t\t\t_isLargeLoaded = false;\n\n\t\t\t\tvar loadSmallImage = function() {\n\t\t\t\t\tif (_isSmallLoaded || _isLargeLoaded) {\n\t\t\t\t\t\treturn; //only load if the large image hasn't loaded\n\t\t\t\t\t}\n\n\t\t\t\t\t$imgContainer.attr('src', srcSmall);\n\t\t\t\t\t_isSmallLoaded = true;\n\n\t\t\t\t\t//check if the screen goes larger, if so, then load large image\n\t\t\t\t\tenquire.register(NAMESPACE.mediaQueries.bp(CONST.BREAKPOINT), loadLargeImage);\n\t\t\t\t};\n\n\t\t\t\tvar loadLargeImage = function() {\n\t\t\t\t\tif (_isLargeLoaded) {\n\t\t\t\t\t\treturn; //dont need to reload\n\t\t\t\t\t}\n\n\t\t\t\t\t$imgContainer.attr('src', src);\n\t\t\t\t\t_isLargeLoaded = true;\n\t\t\t\t};\n\n\t\t\t\tif (window.matchMedia(NAMESPACE.mediaQueries.bp(CONST.BREAKPOINT)).matches) {\n\t\t\t\t\tloadLargeImage();\n\t\t\t\t} else {\n\t\t\t\t\tloadSmallImage();\n\t\t\t\t}\n\t\t\t});\n\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init\n\t\t};\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * LIFESTYLE CALCULATOR\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\t'use strict';\n\t\n\tNAMESPACE.lifestyleCalculator = (function() {\n\t\t\n\t\tvar $elCalculator = $('.lifestyle-calculator');\n\t\t// var $elCalculatorStatus = $('.lifestyle-calculator__status');\n\t\tvar model = {};\n\t\t\n\t\tvar init = function() {\n\n\t\t\tvar _mobileMenu = function() {\n\n\t\t\t\tvar _initPage = function() {\n\t\t\t\t\t$('#main table').addClass('mobile-lifestyle-calculator');\n\t\t\t\t};\n\n\t\t\t\tvar _goTo = function(el) {\n\t\t\t\t\treturn $(el).offset().top;\n\t\t\t\t};\n\n\t\t\t\tvar _getPos = function(el) {\n\t\t\t\t\treturn $(el)[0].getBoundingClientRect();\n\t\t\t\t};\n\n\t\t\t\tvar _updateCalcPos = function() {\n\t\t\t\t\treturn $elCalculator[0].getBoundingClientRect();\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tvar _updateStatusAnimation = function() {\n\t\t\t\t\t$('.mobile-status-img').removeClass('hidden').addClass('animate');\n\t\t\t\t\t$('.mobile-banner').append(model.statusImageClone);\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t$('.mobile-status-img').removeClass('animate');\n\t\t\t\t\t\t$('.mobile-status-img.clone').remove();\n\t\t\t\t\t}, 2000);\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tvar _updateStatus = function() {\n\t\t\t\t\tmodel.statusImageClone = $('.mobile-status-img').clone().addClass('clone').addClass('disappear').attr('src', model.currentStatusImg);\n\t\t\t\t\tmodel.currentStatusImg = model.statusImg;\n\t\t\t\t\tmodel.currentStatus = model.status;\n\t\t\t\t\t$('.mobile-status-img').attr('src', model.statusImg).attr('alt', model.status);\n\t\t\t\t\t_updateStatusAnimation();\n\t\t\t\t};\n\n\t\t\t\t_initPage();\n\t\t\t\tvar headerOffset = 50;\n\t\t\t\tvar bannerShowing = false;\n\t\t\t\tvar bannerStartPos = $elCalculator.parent().prev()[0].getBoundingClientRect().top;\n\t\t\t\tvar bannerEndPos = _updateCalcPos().bottom - ($(window).height() - headerOffset - 200);\n\t\t\t\tvar $statusIcons = $('.lifestyle-calculator__status').clone().addClass('mobile-select-status');\n\t\t\t\t$('body').append('
');\n\t\t\t\tvar $statusOverlay = $('.status-overlay');\n\t\t\t\t$('.status-overlay').append($statusIcons);\n\t\t\t\t$('.status-overlay').append('

Choose a Status

');\n\n\t\t\t\tvar _bannerShowHide = function() {\n\t\t\t\t\tconsole.log('bsp', bannerStartPos);\n\t\t\t\t\tconsole.log('bep', bannerEndPos);\n\t\t\t\t\tif (bannerStartPos < 0 && bannerEndPos > 0 && bannerShowing === false) {\n\t\t\t\t\t\t$('.mobile-banner').css('display','inline-block');\n\t\t\t\t\t\t$('.mobile-banner').css('transform','translateY(0)');\n\t\t\t\t\t\tbannerShowing = true;\n\t\t\t\t\t\tif (model.status === '') $statusOverlay.removeClass('hidden');\n\t\t\t\t\t} else if ((bannerStartPos > 0 || bannerEndPos < 0) && bannerShowing === true) {\n\t\t\t\t\t\t$('.mobile-banner').css('display','none');\n\t\t\t\t\t\tif (model.status === '') $statusOverlay.addClass('hidden');\n\t\t\t\t\t\tbannerShowing = false;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tvar _listenForEvents = function() {\n\t\t\t\t\t$('.banner-status, .mobile-status-img').on('click', function() {\n\t\t\t\t\t\t$('body,html').animate({\n\t\t\t\t\t\t\tscrollTop: _goTo('.lifestyle-calculator__status') - headerOffset - 50\n\t\t\t\t\t\t}, 'ease');\n\t\t\t\t\t});\n\t\t\t\t\t$('.banner-total').on('click', function() {\n\t\t\t\t\t\t$('body,html').animate({\n\t\t\t\t\t\t\tscrollTop: _goTo('.lifestyle-calculator__result') - headerOffset - 50\n\t\t\t\t\t\t}, 'ease');\n\t\t\t\t\t});\n\t\t\t\t};\n\n\t\t\t\tvar _populateBanner = function() {\n\t\t\t\t\tvar $bannerStatus = $('.banner-status');\n\t\t\t\t\tvar $bannerTotal = $('.banner-total');\n\t\t\t\t\tvar $savingsText = $('.savings-text');\n\t\t\t\t\tvar $savingsAmount = $('.savings-amount');\n\n\t\t\t\t\tvar _removeChooseStatus = function() {\n\t\t\t\t\t\tif ($bannerStatus.hasClass('no-icon')) {\n\t\t\t\t\t\t\t$bannerStatus.removeClass('no-icon');\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn model.status;\n\t\t\t\t\t};\n\n\t\t\t\t\tvar statusVal = (model.status === '') ? 'Choose a status' : _removeChooseStatus();\n\t\t\t\t\tmodel.statusChosen = (model.status === '') ? false : true;\n\t\t\t\t\tvar totalVal = '';\n\t\t\t\t\t\n\t\t\t\t\tif (model.total > 0) {\n\t\t\t\t\t\ttotalVal = 'Your savings: $';\n\t\t\t\t\t\tvar currentAmount = $savingsAmount.text().replace(/(\\r\\n|\\n|\\r)/gm,\"\");\n\t\t\t\t\t\tif (model.total < currentAmount) $savingsAmount.text(0);\n\t\t\t\t\t\t$savingsAmount.text(Math.floor(model.total));\n\t\t\t\t\t\t$savingsAmount.css('display','inline-block');\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttotalVal = 'Calculate savings';\n\t\t\t\t\t\t$savingsAmount.css('display','none');\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t$savingsText.text(totalVal);\n\t\t\t\t\t$bannerStatus.text(statusVal);\n\n\t\t\t\t\tif (model.status !== '') {\n\t\t\t\t\t\t$('.status-overlay').fadeOut(500, function() {\n\t\t\t\t\t\t\t$(this).addClass('hidden');\n\t\t\t\t\t\t});\n\t\t\t\t\t\t$bannerTotal.css('display','block');\n\t\t\t\t\t}\n\n\t\t\t\t\tif (model.status !== '' && model.status !== model.currentStatus) {\n\t\t\t\t\t\t_updateStatus();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tvar _buildBanner = function() {\n\t\t\t\t\t$('body').append('
Banner000
');\n\t\t\t\t\t$('.mobile-banner').css('transition','transform 100ms ease');\n\t\t\t\t\t$('.mobile-banner').append('');\n\t\t\t\t\t_populateBanner();\n\t\t\t\t\t_listenForEvents();\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\t_buildBanner();\n\n\t\t\t\tvar _paintBanner = function() {\n\t\t\t\t\tbannerStartPos = $elCalculator.parent().prev()[0].getBoundingClientRect().top;\n\t\t\t\t\tbannerEndPos = _updateCalcPos().bottom - ($(window).height() - headerOffset - 200);\n\t\t\t\t\t_bannerShowHide();\n\t\t\t\t};\n\n\t\t\t\t$(window).scroll(function() {\n\t\t\t\t\t_paintBanner();\n\t\t\t\t});\n\n\t\t\t\t$('body').on('updatemobilebanner', function() {\n\t\t\t\t\t_populateBanner();\n\t\t\t\t});\n\t\t\t};\n\n\t\t\t$('.fn_lsCalc').each(function(){\n\t\t\t\tvar $container = $(this),\n\t\t\t\t\t$sliders = $container.find('.fn_lsCalc_slider'),\n\t\t\t\t\t$statusButtons = $container.find('.fn_lsCalc_status'),\n\t\t\t\t\t$totalSpan = $container.find('.fn_lsCalc_total'),\n\t\t\t\t\tpreviousCount = 6,\n\t\t\t\t\tholdChangeEvent = true,\n\n\t\t\t\t// Calculate savings\n\t\t\t\tcalc = function() {\n\t\t\t\t\tvar $status = $container.find('.fn_lsCalc_status:checked'); // Get status element\n\t\t\t\t\tvar statusVal = $status.val(); // Get status (single, couple, family)\n\t\t\t\t\t\tmodel.status = $status.parent().text().replace(/(\\r\\n|\\n|\\r|\\t)/gm,'');\n\t\t\t\t\t\tmodel.statusImg = $status.parent().find('img[src$=\"-mobile.svg\"]').prop('src');\n\n\t\t\t\t\tif (statusVal) { // If the user has chosen a status\n\n\t\t\t\t\t\tvar count = 0,\n\t\t\t\t\t\t\ttotal = 0,\n\t\t\t\t\t\t\t$ul = $('.fn_lsCalc_savings');\n\n\t\t\t\t\t\t$sliders.each(function() {\n\t\t\t\t\t\t\tvar $slider = $(this),\n\t\t\t\t\t\t\t\tval = $slider.val(),\n\t\t\t\t\t\t\t\tcategory = $slider.data('lscalc-category'),\n\t\t\t\t\t\t\t\tcalcArray = $slider.data('lscalc-values').split(','),\n\t\t\t\t\t\t\t\tsum = val * calcArray[0] * calcArray[statusVal],\n\t\t\t\t\t\t\t\t$resultEl = $container.find('.fn_lsCalc_result_' + category),\n\t\t\t\t\t\t\t\t$li = $resultEl.parents('li').first();\n\n\t\t\t\t\t\t\tif (val > 0) {\n\t\t\t\t\t\t\t\t$li.addClass('is-active');\n\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tif (sum < $resultEl.text().replace(/(\\r\\n|\\n|\\r)/gm,\"\")) $resultEl.text(0);\n\t\t\t\t\t\t\t\t\t$resultEl.text(Math.floor(sum));\n\t\t\t\t\t\t\t\t}, 300);\n\n\t\t\t\t\t\t\t\tcount ++;\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$li.removeClass('is-active');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\ttotal += sum;\n\t\t\t\t\t\t\tmodel.total = total;\n\t\t\t\t\t\t\t$('body').trigger('updatemobilebanner');\n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (total > 0) {\n\t\t\t\t\t\t\t$container.find('.fn_lsCalc_results').fadeIn(300);\n\t\t\t\t\t\t} else { // If total is 0, i.e. no spendings are above 0\n\t\t\t\t\t\t\t$container.find('.fn_lsCalc_results').fadeOut(300);\n\t\t\t\t\t\t\tRACQ_JS.util.scrollPageTo($('#lifestyleSpendings').offset().top + 25);\n\t\t\t\t\t\t\t$container.find('.fn_lsCalc_spend_warn').fadeIn(1000);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Set the class on the results list\n\t\t\t\t\t\tvar newClasses = $ul[0].className.replace(/\\bcount.*?\\b/g, ''),\n\t\t\t\t\t\t\tdelay = count < previousCount ? 450 : 0;\n\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t$ul.attr(\"class\", newClasses + 'count'+count);\n\t\t\t\t\t\t\tpreviousCount = count;\n\t\t\t\t\t\t}, delay);\n\n\t\t\t\t\t\tif (total < $totalSpan.text().replace(/(\\r\\n|\\n|\\r)/gm,\"\")) $totalSpan.text(0); // Odometer bug workaround\n\n\t\t\t\t\t\t$totalSpan.text(Math.floor(total));\n\n\t\t\t\t\t\tvar $totalDiv = $totalSpan.parents('.lifestyle-calculator__total');\n\n\t\t\t\t\t\t$totalDiv.removeClass('is-updated');\n\t\t\t\t\t\tsetTimeout(function(){$totalDiv.addClass('is-updated')},300);\n\n\t\t\t\t\t} else { // If the user hasn't chosen a status\n\n\t\t\t\t\t\t$container.find('.fn_lsCalc_status_warn').fadeIn(1000);\n\t\t\t\t\t\t$container.find('.fn_lsCalc_results').fadeOut(300);\n\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tsliderSetup = function($slider, isOnLoad) {\n\t\t\t\t\t$container.find('.fn_lsCalc_spend_warn').hide();\n\n\t\t\t\t\tvar id = $slider.attr('id');\n\n\t\t\t\t\tif($slider.val() > 0 && isOnLoad) {\n\t\t\t\t\t\t$slider.next().find('.rangeslider__handle').removeClass('is-sliding').addClass('is-ended')\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set slider label values on slide\n\t\t\t\t\t$('label[for=' + id + ']').find('span').text($slider.val());\n\n\t\t\t\t\tif (!isOnLoad) {\n\t\t\t\t\t\tcalc(); // Run calculation on slide\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t// Bind to slider changes\n\t\t\t\t$sliders.on('input propertychange change', function(event) {\n\t\t\t\t\tif (!holdChangeEvent) sliderSetup($(this));\n\t\t\t\t});\n\n\t\t\t\t// Bind to status changes\n\t\t\t\t$statusButtons.on('change', function(event) {\n\t\t\t\t\t$container.find('.fn_lsCalc_status_warn').hide();\n\t\t\t\t\t$container.addClass('status_picked')\n\n\t\t\t\t\t$statusButtons.removeClass('is-active');\n\t\t\t\t\t$(this).parent().addClass('is-active').siblings().removeClass('is-active');\n\n\t\t\t\t\tRACQ_JS.util.scrollPageTo($('#lifestyleSpendings').offset().top + 25);\n\n\t\t\t\t\tcalc();\n\t\t\t\t});\n\n\t\t\t\t$( document ).ready(function() {\n\n\t\t\t\t\t$sliders.trigger('change');\n\t\t\t\t\tholdChangeEvent = false;\n\n\t\t\t\t\t// Setup sliders on load\n\t\t\t\t\t$sliders.each(function() {\n\t\t\t\t\t\tsliderSetup($(this), true);\n\t\t\t\t\t});\n\n\t\t\t\t\t$statusButtons.each(function(){\n\t\t\t\t\t\tif($(this).is(':checked')) {\n\t\t\t\t\t\t\t$container.addClass('status_picked')\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\t// Run calculation on page load\n\t\t\t\t\tcalc();\n\n\t\t\t\t\t$container.addClass('loaded');\n\n\t\t\t\t\tif (window.matchMedia(NAMESPACE.mediaQueries.bp(0,'m')).matches) {\n\t\t\t\t\t\t_mobileMenu();\n\t\t\t\t\t}\n\n\t\t\t\t});\n\t\t\t});\n\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init\n\t\t};\n\t}());\n}(RACQ_JS));\n\n/* ==========================================================================\n * LINK BLOCKS\n * If the block contains a link, clicking on the block will trigger a click on the link\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.linkBlocks = function() {\n\t\t$('.news-item').each(function() {\n\t\t\tvar $block = $(this);\n\n\t\t\tif (!$block.data('linkBlocks')) {\n\t\t\t\t$block.data('linkBlocks', true);\n\n\t\t\t\t$block.on('click', function(e) {\n\t\t\t\t\tvar $target = $(e.target),\n\t\t\t\t\t\t$a = $block.find('.link-caret');\n\n\t\t\t\t\tif ($target.not('a') && $target.closest('a').length === 0 && $a.length > 0) {\n\t\t\t\t\t\tif ($a.attr('target')) {\n\t\t\t\t\t\t\twindow.open($block.find('.link-caret').attr('href'));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twindow.location = $block.find('.link-caret').attr('href');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t};\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * LIVE TOTAL\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.liveTotal = function() {\n\n\t\t$('.fn_live-total').each(function() {\n\t\t\tvar $mod = $(this).removeClass('fn_live-total'),\n\t\t\t\ttarget = $mod.attr('data-live-total-target'),\n\t\t\t\t$target = $(target),\n\t\t\t\tdecimals = $mod.data('live-total-decimals') !== undefined ? $mod.data('live-total-decimals') : 0;\n\n\t\t\t$target.on('change', function() {\n\t\t\t\tvar subtotal = 0;\n\n\t\t\t\t$target.each(function() {\n\t\t\t\t\tvar value = parseFloat($(this).val().replace(/[^0-9\\.]+/g, ''), 10);\n\t\t\t\t\tif(NAMESPACE.util.isNumber(value)) {\n\t\t\t\t\t\tsubtotal += value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t$mod.text('$' + NAMESPACE.util.formatter.toCurrency(subtotal, decimals, '.', ','));\n\t\t\t});\n\t\t});\n\n\t};\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * LOG A ROADSIDE ASSISTANCE JOB\n * ========================================================================== */\n\n(function (NAMESPACE) {\n\n 'use strict';\n\n NAMESPACE.logRoadsideJob = (function () {\n\n var map, geocoder, autocomplete, originalLocation, selectedLocation,\n autocompleteService,\n placesService,\n SELECTORS,\n init,\n positionMapLocation,\n bounceMarker,\n displaySuggestionOnEnter,\n geocodeLatLng,\n geocodeSuccess,\n geocodeError,\n storeSelectedLocation,\n mapSelectedLocation,\n skipGeocoding,\n hideMapMarkers,\n showMapMarkers,\n allowMapToSetLocation;\n\n SELECTORS = {\n MAP_CONTAINER: '.map-container',\n INPUT_SEARCH: '#search_location',\n MAP_MARKER: '.roadside-location',\n INFO_WINDOW: '.infowindow',\n INFO_WINDOW_TEXT: '.infowindow .info-text',\n INPUT_LAT: '#selectedLocationLat',\n INPUT_LNG: '#selectedLocationLng',\n GEOLOCATE: '.geolocate',\n TIP: '.tip'\n };\n\n function setRoadsideIconClassesDisabledState() {\n var listItems = $(\".problems-rbl li\");\n listItems.each(function (idx, li) {\n var serviceType = $(li).children().first()[0].value.toLowerCase();\n $(li).children().last().addClass(serviceType)\n });\n };\n\n init = function () {\n\n var clipboard = new ClipboardJS('.roadside-tracking .copy');\n\n var queensland = { lat: -21.4088411, lng: 147.3383887 };\n var mapStyle = [{ \"featureType\": \"landscape\", \"stylers\": [{ \"hue\": \"#FFBB00\" }, { \"saturation\": 43.400000000000006 }, { \"lightness\": 37.599999999999994 }, { \"gamma\": 1 }] }, { \"featureType\": \"road.highway\", \"stylers\": [{ \"hue\": \"#FFC200\" }, { \"saturation\": -61.8 }, { \"lightness\": 45.599999999999994 }, { \"gamma\": 1 }] }, { \"featureType\": \"road.arterial\", \"stylers\": [{ \"hue\": \"#FF0300\" }, { \"saturation\": -100 }, { \"lightness\": 51.19999999999999 }, { \"gamma\": 1 }] }, { \"featureType\": \"road.local\", \"stylers\": [{ \"hue\": \"#FF0300\" }, { \"saturation\": -100 }, { \"lightness\": 52 }, { \"gamma\": 1 }] }, { \"featureType\": \"water\", \"stylers\": [{ \"hue\": \"#0078FF\" }, { \"saturation\": -13.200000000000003 }, { \"lightness\": 2.4000000000000057 }, { \"gamma\": 1 }] }, { \"featureType\": \"poi\", \"stylers\": [{ \"hue\": \"#00FF6A\" }, { \"saturation\": -1.0989010989011234 }, { \"lightness\": 11.200000000000017 }, { \"gamma\": 1 }] }];\n\n var mapConfig = {\n center: queensland,\n zoom: 6,\n styles: mapStyle,\n clickableIcons: false,\n mapTypeId: 'roadmap',\n mapTypeControl: false,\n streetViewControl: false,\n scrollwheel: true,\n scaleControl: false,\n fullscreenControl: false,\n zoomControl: true,\n zoomControlOptions: {\n position: google.maps.ControlPosition.RIGHT_BOTTOM\n }\n };\n\n var autocompleteOptions = {\n // types: ['(cities)'],\n componentRestrictions: { country: 'au' }\n };\n\n\n skipGeocoding = false;\n allowMapToSetLocation = false;\n map = new google.maps.Map(document.getElementById('currentLocationMap'), mapConfig);\n geocoder = new google.maps.Geocoder;\n\n placesService = new google.maps.places.PlacesService(map);\n\n autocomplete = new google.maps.places.Autocomplete(document.getElementById('search_location'), autocompleteOptions);\n\n autocompleteService = new google.maps.places.AutocompleteService();\n\n autocomplete.bindTo('bounds', map);\n\n autocomplete.addListener('place_changed', function () {\n\n skipGeocoding = true;\n positionMapLocation(map);\n });\n\n if ($(SELECTORS.INPUT_SEARCH).val() && $(SELECTORS.INPUT_LAT).val() && $(SELECTORS.INPUT_LNG).val()) {\n $(SELECTORS.INFO_WINDOW_TEXT).text($(SELECTORS.INPUT_SEARCH).val());\n showMapMarkers();\n mapSelectedLocation();\n allowMapToSetLocation = true;\n }\n\n map.addListener('dragend', function () {\n if (allowMapToSetLocation) {\n selectedLocation = { lat: map.getCenter().lat(), lng: map.getCenter().lng() };\n\n skipGeocoding = false;\n geocodeLatLng();\n mapSelectedLocation();\n }\n });\n\n $(SELECTORS.GEOLOCATE).on('click', function (e) {\n e.preventDefault();\n\n $(SELECTORS.GEOLOCATE).addClass('loading');\n\n var options = {\n enableHighAccuracy: true,\n timeout: 5000,\n maximumAge: 0\n };\n\n navigator.geolocation.getCurrentPosition(geocodeSuccess, geocodeError, options);\n });\n\n $(SELECTORS.INPUT_SEARCH).on('change', function (e) {\n if ($(SELECTORS.INPUT_SEARCH).val() === '') {\n hideMapMarkers();\n $(SELECTORS.INPUT_LAT).val('');\n $(SELECTORS.INPUT_LNG).val('');\n allowMapToSetLocation = false;\n } else {\n allowMapToSetLocation = true;\n if (!$(SELECTORS.INPUT_LAT).val() && !$(SELECTORS.INPUT_LNG).val()) {\n $(SELECTORS.INPUT_SEARCH).val('');\n allowMapToSetLocation = false;\n }\n }\n });\n \n\n clipboard.on('success', function (e) {\n e.clearSelection();\n $('.roadside-tracking .copy').text('Copied');\n });\n\n };\n\n positionMapLocation = function () {\n\n var place = autocomplete.getPlace();\n\n if (!place.geometry) {\n // User entered the name of a Place that was not suggested and\n // pressed the Enter key, or the Place Details request failed.\n // window.alert(\"No details available for input: '\" + place.name + \"'\");\n return;\n }\n\n selectedLocation = place.geometry.location;\n\n $(SELECTORS.INFO_WINDOW_TEXT).text(place.formatted_address);\n showMapMarkers();\n\n mapSelectedLocation();\n\n $(SELECTORS.INPUT_SEARCH).trigger('change');\n };\n\n displaySuggestionOnEnter = function (predictions, status) {\n if (status != google.maps.places.PlacesServiceStatus.OK || !predictions) {\n alert(status);\n return;\n }\n console.log('predictions : ')\n console.log(predictions)\n\n if (predictions.length !== 0) {\n var prediction = predictions[0]\n var request = {\n placeId: prediction.place_id\n };\n placesService.getDetails(request, function (place, status) {\n console.log('place : ')\n console.log(place)\n console.log(status)\n if (status == google.maps.places.PlacesServiceStatus.OK) {\n\n selectedLocation = place.geometry.location;\n\n $(SELECTORS.INFO_WINDOW_TEXT).text(place.formatted_address);\n $(SELECTORS.INPUT_SEARCH).val(place.formatted_address);\n showMapMarkers();\n\n mapSelectedLocation();\n }\n });\n }\n };\n\n bounceMarker = function () {\n\n $(SELECTORS.MAP_MARKER).removeClass('bounce').addClass('bounce');\n\n setTimeout(function () {\n $(SELECTORS.MAP_MARKER).removeClass('bounce');\n }, 1000);\n\n };\n\n storeSelectedLocation = function () {\n $(SELECTORS.INPUT_LAT).val(selectedLocation.lat);\n $(SELECTORS.INPUT_LNG).val(selectedLocation.lng);\n };\n\n mapSelectedLocation = function () {\n\n map.setCenter(selectedLocation);\n map.setZoom(17);\n\n storeSelectedLocation();\n bounceMarker();\n };\n\n geocodeLatLng = function () {\n if (skipGeocoding || (originalLocation && originalLocation.lat == selectedLocation.lat && originalLocation.lng == selectedLocation.lng)) {\n originalLocation = selectedLocation;\n skipGeocoding = false;\n console.log('skipping geocode');\n return;\n }\n\n geocoder.geocode({ 'location': selectedLocation }, function (results, status) {\n if (status === 'OK') {\n if (results[0]) {\n $(SELECTORS.INPUT_SEARCH).val(results[0].formatted_address);\n $(SELECTORS.INFO_WINDOW_TEXT).text(results[0].formatted_address);\n showMapMarkers();\n $(SELECTORS.INPUT_SEARCH).trigger('change');\n } else {\n $(SELECTORS.INPUT_SEARCH).val('');\n hideMapMarkers();\n }\n } else {\n $(SELECTORS.INPUT_SEARCH).val('');\n hideMapMarkers();\n }\n });\n };\n\n geocodeSuccess = function (position) {\n\n selectedLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);\n\n geocodeLatLng();\n mapSelectedLocation();\n\n $(SELECTORS.GEOLOCATE).removeClass('loading');\n };\n\n geocodeError = function (err) {\n console.warn('ERROR' + (err.code) + ': ' + err.message);\n $(SELECTORS.GEOLOCATE).removeClass('loading');\n };\n\n hideMapMarkers = function ()\n {\n $(SELECTORS.INFO_WINDOW_TEXT).text('');\n $(SELECTORS.INFO_WINDOW).removeClass('show');\n $(SELECTORS.MAP_MARKER).addClass('hidden');\n $(SELECTORS.TIP).addClass('hidden');\n };\n\n showMapMarkers = function ()\n {\n $(SELECTORS.INFO_WINDOW).addClass('show');\n $(SELECTORS.MAP_MARKER).removeClass('hidden');\n $(SELECTORS.TIP).removeClass('hidden');\n };\n\n return {\n init: init,\n setRoadsideIconClassesDisabledState: setRoadsideIconClassesDisabledState\n };\n }());\n\n}(RACQ_JS));\n\n/* =============================================================================\n MEDIA QUERIES\n ========================================================================== */\n\n(function(NAMESPACE) {\n\n\tNAMESPACE.mediaQueries = (function(){\n\t\tvar CONST = {\n\t\t\tFONT_BASE: 16,\n\t\t\tBP: {}\n\t\t};\n\n\t\t// Set Min Breakpoint Values\n\t\tCONST.BP.MIN = {\n\t\t\tXXS: 359,\n\t\t\tXS: 520,\n\t\t\tS: 640,\n\t\t\tM: 768,\n\t\t\tL: 1024,\n\t\t\tXL: 1244,\n\t\t\tXXL: 1410\n\t\t};\n\n\t\t// Set Max Breakpoint Values\n\t\tCONST.BP.MAX = {\n\t\t\tXXS: CONST.BP.MIN.XS - 1,\n\t\t\tXS: CONST.BP.MIN.S - 1,\n\t\t\tS: CONST.BP.MIN.M - 1,\n\t\t\tM: CONST.BP.MIN.L - 1,\n\t\t\tL: CONST.BP.MIN.XL - 1,\n\t\t\tXL: CONST.BP.MIN.XXL - 1\n\t\t};\n\n\t\t// converts px to ems\n\t\tvar _pxToEms = function(px) {\n\t\t\treturn px / CONST.FONT_BASE + 'em';\n\t\t};\n\n\t\t// converts a bp name (e.g. l) to the px variable then to ems\n\t\tvar _bpToEms = function(point, isMax) {\n\t\t\tif (typeof(point) === 'number') {\n\t\t\t\treturn _pxToEms(point);\n\t\t\t}\n\n\t\t\tvar list = (isMax === true) ? CONST.BP.MAX : CONST.BP.MIN,\n\t\t\t\twidth = '0';\n\n\t\t\tfor (var key in list) {\n\t\t\t\tif (point === key.toLowerCase()) {\n\t\t\t\t\twidth = _pxToEms(list[key]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (width === '0') {\n\t\t\t\tconsole.warn('Breakpoint \\''+point+'\\' doesn\\'t exist - replacing with 0');\n\t\t\t}\n\n\t\t\treturn width;\n\t\t};\n\n\t\t// returns a min-width media query based on bp name or px\n\t\tvar _bpMin = function(min) {\n\t\t\tvar bpMin = _bpToEms(min);\n\n\t\t\treturn '(min-width: '+bpMin+')';\n\t\t};\n\n\t\t// returns a max-width media query based on bp name or px\n\t\tvar _bpMax = function(max) {\n\t\t\tvar bpMax = _bpToEms(max, true);\n\n\t\t\treturn '(max-width: '+bpMax+')';\n\t\t};\n\n\t\t// returns a min-width and max-width media query based on bp name (can be the same bp name) or px\n\t\tvar _bpBetween = function(min, max) {\n\t\t\tvar bpMin = _bpToEms(min),\n\t\t\t\tbpMax = _bpToEms(max, true);\n\n\t\t\treturn '(min-width: '+bpMin+') and (max-width: '+bpMax+')';\n\t\t};\n\n\t\t// short hand bp function that can handle a number of different options:\n\t\t/*\n\t\t\tbp('l'); // large and above\n\t\t\tbp(300); // 300px and above\n\t\t\tbp(0, 'l'); // large and below\n\t\t\tbp(0, 300); // 300px and below\n\t\t\tbp('s', 'l'); // between small and large\n\t\t\tbp(100, 300); // between 100px and 300px;\n\n\t\t\tbp('retina'); // high resolution displays (can use 'hdpi' as well)\n\n\t\t\tbp(200, 'xl'); // can mix and match names and numbers - between 200px and xlarge\n\t\t\tbp('s', 960); // between small and 960px\n\n\t\t\tbp('m,l'); // can use a single string (no spaces) - useful for passing through from HTML to JS\n\t\t\tbp('xs,1000'); // can also mix names and numbers\n\t\t*/\n\t\tvar bp = function(min, max) {\n\t\t\tvar bpMin = min,\n\t\t\t\tbpMax = max || 0;\n\n\t\t\t//check if it's using the string syntax, if so - split it\n\t\t\tif (typeof(min) === 'string' && min.indexOf(',') >= 0) {\n\t\t\t\tvar bpArray = min.split(',');\n\n\t\t\t\tif (bpArray.length === 2 && bpMax === 0) {\n\t\t\t\t\tvar convertToNumIfNum = function(val) {\n\t\t\t\t\t\tvar num = parseInt(val, 10);\n\n\t\t\t\t\t\tif (isNaN(num)) {\n\t\t\t\t\t\t\treturn val;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn num;\n\t\t\t\t\t};\n\n\t\t\t\t\tbpMin = convertToNumIfNum(bpArray[0]);\n\t\t\t\t\tbpMax = convertToNumIfNum(bpArray[1]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//check what type of bp it is\n\t\t\tif (bpMin === 'retina' || bpMin === 'hdpi') {\n\t\t\t\treturn '(-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-device-pixel-ratio: 1.5)';\n\t\t\t} else if (bpMax === 0) {\n\t\t\t\treturn _bpMin(bpMin);\n\t\t\t} else if (bpMin === 0) {\n\t\t\t\treturn _bpMax(bpMax);\n\t\t\t} else {\n\t\t\t\treturn _bpBetween(bpMin, bpMax);\n\t\t\t}\n\t\t};\n\n\t\treturn {\n\t\t\tpxToEms: _pxToEms,\n\t\t\tbpToEms: _bpToEms,\n\t\t\tbpMin: _bpMin,\n\t\t\tbpMax: _bpMax,\n\t\t\tbpBetween: _bpBetween,\n\t\t\tbp: bp\n\t\t};\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * MEMBERSHIP BENEFITS\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.membershipBenefits = (function() {\n\n\t\tvar container = \".member-benefits-savings\",\n\t\t\tactiveClass = 'active',\n\t\t\tsavingDetails = '.member-benefits__savings-details-toggle',\n\t\t\trecommendedDiscounts = '.member-benefits__recommended-discounts',\n\t\t\tscrollBreakpoint = '0,m',\n\t\t\tloadBenefitsDetails = '.fn_load-benefits-details',\n\t\t\ttotalSavings = '.member-benefits__total-savings',\n\t\t\ttrigger = \"> a\";\n\n\t\tvar init = function() {\n\n\t\t\tvar areDetailsExpanded = false\n\t\t\t\n\t\t\t$(container).find(trigger).on('click',function(){\n\n\t\t\t\t$(this).addClass(activeClass).siblings().removeClass(activeClass);\n\n\t\t\t\t// scroll to details on mobile only\n\t\t\t\tif(window.matchMedia(NAMESPACE.mediaQueries.bp(scrollBreakpoint)).matches) {\n\t\t\t\t\t$('html,body').animate({scrollTop: $(savingDetails).offset().top});\n\t\t\t\t}\n\n\t\t\t\t\n\t\t\t})\n\n\t\t\t$(loadBenefitsDetails).find('a').on('click',function(){\n\t\t\t\tareDetailsExpanded = !areDetailsExpanded\n\t\t\t\tvar parent = $(loadBenefitsDetails)\n\t\t\t\tvar content = $(this).text()\n\t\t\t\tparent.siblings(\":gt(4)\").not(totalSavings).toggle(areDetailsExpanded)\n\t\t\t\t\n\t\t\t\t$(this).html(parent.data('alt-text'))\n\t\t\t\tparent.data('alt-text',content)\n\t\t\t})\n\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init\n\t\t};\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * MIRROR VALUE\n * ========================================================================== */\n\n(function (NAMESPACE) {\n\n\t'use strict';\n\tNAMESPACE.mirrorValue = function () {\n\n\t\tvar inputTextChangeHandler = function ($mod, $target, $input) {\n\t\t\tvar $targetValue = $target.find('.mirror-value-value'),\n\t\t\t\t$targetDisplay = $target.find('.mirror-value-display'),\n\t\t\t\tdecimals = $mod.data('mirror-value-decimals') !== undefined ? $mod.data('mirror-value-decimals') : 0,\n\t\t\t\tcurrencyRegex = /^\\$?\\-?([1-9]{1}[0-9]{0,2}(\\,\\d{3})*(\\.\\d{0,2})?|[1-9]{1}\\d{0,}(\\.\\d{0,2})?|0(\\.\\d{0,2})?|(\\.\\d{1,2}))$|^\\-?\\$?([1-9]{1}\\d{0,2}(\\,\\d{3})*(\\.\\d{0,2})?|[1-9]{1}\\d{0,}(\\.\\d{0,2})?|0(\\.\\d{0,2})?|(\\.\\d{1,2}))$|^\\(\\$?([1-9]{1}\\d{0,2}(\\,\\d{3})*(\\.\\d{0,2})?|[1-9]{1}\\d{0,}(\\.\\d{0,2})?|0(\\.\\d{0,2})?|(\\.\\d{1,2}))\\)$/;\n\n\t\t\tvar cacheValue = $input.val();\n\t\t\tvar match = cacheValue.match(currencyRegex);\n\t\t\tvar value = '0';\n\t\t\tif (match !== null && match !== undefined && match.length > 0) {\n\t\t\t\tvalue = match[0];\n\t\t\t}\n\n\t\t\tif (value < 0) {\n\t\t\t\tvalue = '0';\n\t\t\t}\n\n\t\t\tvalue = value.replace(/,/g, '');\n\t\t\tvar splitDecimals = value.split('.');\n\n\t\t\tif (splitDecimals.length > 0 && splitDecimals[1] !== undefined && splitDecimals[1].length > 2) {\n\t\t\t\tvalue = '0';\n\t\t\t}\n\t\t\t$targetValue.val(value).trigger('change');\n\n\t\t\tvar formattedValue = NAMESPACE.util.formatter.toCurrency(value, decimals, '.', ',');\n\t\t\t$targetDisplay.text('$' + formattedValue);\n\t\t};\n\n\t\t$('.fn_mirror-value').each(function () {\n\t\t\tvar $mod = $(this).removeClass('fn_mirror-value'),\n\t\t\t\t$input = $mod.find(':input'),\n\t\t\t\t$inputType = $input.attr(\"type\"),\n\t\t\t\ttarget = $mod.data('mirror-value-target'),\n\t\t\t\t$target = $(target);\n\n\t\t\tif ($inputType == \"text\") {\n\t\t\t\t$input.on('change keyup', inputTextChangeHandler($mod, $target, $input));\n\t\t\t} else if ($input !== undefined && $inputType === undefined) {\n\t\t\t\t//valid for dropdown lists select\n\t\t\t\t$input.on('updated', function () {\n\t\t\t\t\tif ($target !== undefined) {\n\t\t\t\t\t\tvar $value = $input.data('mirror-value');\n\t\t\t\t\t\t$target.text($value);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t$input.trigger(\"updated\");\n\t\t\t}\n\t\t});\n\t};\n\n}(RACQ_JS));\n\n/*globals Sys */\n\n/* ==========================================================================\n * MOCK SYS OBJECT\n * Simulates the ASP.NET Sys object for use in the HTML templates\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\tNAMESPACE.mockSysObject = (function() {\n\n\t\tvar enabled = false,\n\t\t\tbeginRequest,\n\t\t\tpageLoaded;\n\n\t\tvar init = function() {\n\t\t\tvar pathname = window.location.pathname;\n\t\t\tif (typeof Sys === 'undefined' && pathname.substr(pathname.length - 5) === '.html') {\n\t\t\t\tenabled = true;\n\n\t\t\t\tbeginRequest = new $.Deferred();\n\t\t\t\tpageLoaded = new $.Deferred();\n\n\t\t\t\twindow.Sys = {\n\t\t\t\t\tWebForms: {\n\t\t\t\t\t\tPageRequestManager: {\n\t\t\t\t\t\t\tgetInstance: function() {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tadd_beginRequest: function(callback) {\n\t\t\t\t\t\t\t\t\t\tbeginRequest.progress(callback);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tadd_pageLoaded: function(callback) {\n\t\t\t\t\t\t\t\t\t\tpageLoaded.progress(callback);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\n\t\tvar trigger = function(event, options) {\n\t\t\tvar sender,\n\t\t\t\targs;\n\n\t\t\tif (enabled) {\n\t\t\t\tif (event === 'beginRequest') {\n\t\t\t\t\targs = {\n\t\t\t\t\t\tget_postBackElement: function() {\n\t\t\t\t\t\t\treturn options.postBackElement;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tbeginRequest.notify(sender, args);\n\n\t\t\t\t} else if (event === 'pageLoaded') {\n\t\t\t\t\targs = {\n\t\t\t\t\t\tget_panelsUpdated: function() {\n\t\t\t\t\t\t\treturn options.panelsUpdated;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tpageLoaded.notify(sender, args);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\treturn {\n\t\t\tenabled: enabled,\n\t\t\tinit: init,\n\t\t\ttrigger: trigger\n\t\t};\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * MODAL WINDOWS\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\t/* Modal windows */\n\tNAMESPACE.modal = (function() {\n\t\tvar CONST,\n\t\t\tTEMPLATES,\n\t\t\tDYNAMIC_MODALS,\n\t\t\t_isReady = false,\n\t\t\t_isOpen = false,\n\t\t\t$container = $('#modal'),\n\t\t\t$bg = $container.find('.modal-bg'),\n\t\t\t$currentModal = null,\n\t\t\t_getFixedHeaderHeight = function() {\n\t\t\t\tif(NAMESPACE.mediaQueries.bp('l')) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn 50;\n\t\t\t},\n\t\t\t_addModalMediaQueries = {},\n\t\t\t_itemThatOpenedTheModal,\n\t\t\t_visible,\n\t\t\t_focusable,\n\t\t\t_positionCurrentModal,\n\t\t\t_debounceTimeout,\n\t\t\t_debouncePositionCurrentModal,\n\t\t\t_animateIn,\n\t\t\t_animateOut,\n\t\t\t_addEventsToModal,\n\t\t\t_afterModalOpen,\n\t\t\t_bindFormToOriginal,\n\t\t\tisModalOpen,\n\t\t\tcloseModal,\n\t\t\topenModal,\n\t\t\taddNewModal,\n\t\t\tcheckIfModalExists,\n\t\t\taddNewModalAtMediaQuery,\n\t\t\taddNewModalFromHTML,\n\t\t\treset,\n\t\t\tinit;\n\n\t\t// CONSTANTS\n\t\tCONST = {\n\t\t\tSTATIC_ANIMATION: $('.lt-ie8').length > 0,\n\t\t\tIS_ACTIVE: 'is-active',\n\t\t\tIS_FIXED: true,\n\t\t\tDURATIONS: {\n\t\t\t\tCONTAINER: {\n\t\t\t\t\tIN: 250,\n\t\t\t\t\tOUT: 250\n\t\t\t\t},\n\t\t\t\tMODAL: {\n\t\t\t\t\tIN: 250,\n\t\t\t\t\tOUT: 250\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tTEMPLATES = {\n\t\t\tnormal: [\n\t\t\t\t'
',\n\t\t\t\t\t'
',\n\t\t\t\t\t\t'
',\n\t\t\t\t\t\t'blah blah',\n\t\t\t\t\t\t\t'
',\n\t\t\t\t\t\t\t'Close',\n\t\t\t\t\t\t'
',\n\t\t\t\t\t'
',\n\t\t\t\t'
'\n\t\t\t].join('\\n')\n\t\t};\n\n\t\tDYNAMIC_MODALS = {\n\t\t\t'modal-dynamic-example': {\n\t\t\t\tmq: '0,s',\n\t\t\t\ttype: 'modal-dynamic-example',\n\t\t\t\tcallback: function($modal) {\n\t\t\t\t\tNAMESPACE.expandCollapse.reset($modal, false, '-inmodal');\n\t\t\t\t\tNAMESPACE.expandCollapse.init($modal);\n\t\t\t\t\tNAMESPACE.forms.simpleSelect($modal);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// helper functions\n\t\t_visible = function(element) {\n\t\t\treturn $.expr.filters.visible(element) && !$(element).parents().addBack().filter(function() {\n\t\t\t\treturn $.css(this, 'visibility') === 'hidden';\n\t\t\t}).length;\n\t\t};\n\n\t\t_focusable = function(element, isTabIndexNotNaN) {\n\t\t\tvar map, mapName, img, nodeName = element.nodeName.toLowerCase();\n\t\t\tif (nodeName === 'area') {\n\t\t\t\tmap = element.parentNode;\n\t\t\t\tmapName = map.name;\n\t\t\t\tif (!element.href || !mapName || map.nodeName.toLowerCase() !== 'map') {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\timg = $('img[usemap=#' + mapName + ']')[0];\n\t\t\t\treturn !!img && _visible(img);\n\t\t\t}\n\t\t\treturn (/input|select|textarea|button|object/.test(nodeName) ? !element.disabled :\n\t\t\t\tnodeName === 'a' ?\n\t\t\t\telement.href || isTabIndexNotNaN :\n\t\t\t\tisTabIndexNotNaN) &&\n\t\t\t// the element and all of its ancestors must be visible\n\t\t\t_visible(element);\n\t\t};\n\n\t\t$.extend($.expr[':'], {\n\t\t\tdata: $.expr.createPseudo ? $.expr.createPseudo(function(dataName) {\n\t\t\t\treturn function(elem) {\n\t\t\t\t\treturn !!$.data(elem, dataName);\n\t\t\t\t};\n\t\t\t}) :\n\t\t\t// support: jQuery <1.8\n\t\t\tfunction(elem, i, match) {\n\t\t\t\treturn !!$.data(elem, match[3]);\n\t\t\t},\n\n\t\t\tfocusable: function(element) {\n\t\t\t\treturn _focusable(element, !isNaN($.attr(element, 'tabindex')));\n\t\t\t},\n\n\t\t\ttabbable: function(element) {\n\t\t\t\tvar tabIndex = $.attr(element, 'tabindex'),\n\t\t\t\t\tisTabIndexNaN = isNaN(tabIndex);\n\t\t\t\treturn (isTabIndexNaN || tabIndex >= 0) && _focusable(element, !isTabIndexNaN);\n\t\t\t}\n\t\t});\n\n\t\tcheckIfModalExists = function(id) {\n\t\t\treturn ($container.find('#' + id).length > 0);\n\t\t};\n\n\t\t_positionCurrentModal = function() {\n\t\t\tif ($currentModal !== null) {\n\t\t\t\tvar $modalContent = $currentModal.find('.modal-content'),\n\t\t\t\t\t$modalContentOverflow = $modalContent.find('.modal-content-overflow');\n\n\t\t\t\t$modalContent.css({\n\t\t\t\t\t'max-height': ''\n\t\t\t\t});\n\n\t\t\t\t$modalContentOverflow.css({\n\t\t\t\t\t'max-height': '',\n\t\t\t\t\toverflow: ''\n\t\t\t\t});\n\n\t\t\t\tvar top = ($('body').hasClass('no-scroll')) ? -parseInt($('body').css('top'), 10) : 0;\n\n\t\t\t\t$currentModal.css({\n\t\t\t\t\ttop: $(window).scrollTop() + top + _getFixedHeaderHeight(),\n\t\t\t\t\theight: $(window).height() - _getFixedHeaderHeight()\n\t\t\t\t});\n\n\t\t\t\tvar modalContainerHeight = $currentModal.height(),\n\t\t\t\t\tmodalHeight = $modalContent.height();\n\n\t\t\t\tif (modalHeight > modalContainerHeight) {\n\t\t\t\t\t$modalContent.css({\n\t\t\t\t\t\t'max-height': modalContainerHeight,\n\t\t\t\t\t\ttop: 0\n\t\t\t\t\t});\n\n\t\t\t\t\t$modalContentOverflow.css({\n\t\t\t\t\t\t'max-height': modalContainerHeight,\n\t\t\t\t\t\toverflow: 'auto'\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t$modalContent.css({\n\t\t\t\t\t\ttop: (modalContainerHeight - modalHeight) / 2\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t_debouncePositionCurrentModal = function() {\n\t\t\tclearTimeout(_positionCurrentModal);\n\t\t\t_debounceTimeout = setTimeout(_positionCurrentModal, 100);\n\t\t};\n\n\t\t_animateIn = function(callback) {\n\t\t\tvar afterAnimateIn,\n\t\t\t\tanimateInCurrentModal;\n\n\t\t\tif (!CONST.IS_FIXED) {\n\t\t\t\tvar scrollY = $(window).scrollTop();\n\n\t\t\t\tif (scrollY < 0) {\n\t\t\t\t\tscrollY = 0;\n\t\t\t\t}\n\n\t\t\t\t$currentModal.css('top', scrollY + 'px');\n\t\t\t}\n\n\t\t\tNAMESPACE.util.noscroll.add();\n\n\t\t\tif (CONST.STATIC_ANIMATION) {\n\t\t\t\t$container.addClass(CONST.IS_ACTIVE);\n\t\t\t\t$currentModal.addClass(CONST.IS_ACTIVE);\n\n\t\t\t\tif (CONST.IS_FIXED) {\n\t\t\t\t\t_positionCurrentModal();\n\t\t\t\t\t$(window).on('resize.modal', _debouncePositionCurrentModal);\n\t\t\t\t\t$(window).on('scroll.modal', _debouncePositionCurrentModal);\n\t\t\t\t}\n\n\t\t\t\t_addEventsToModal();\n\n\t\t\t\tif (typeof (callback) === 'function') {\n\t\t\t\t\treturn callback();\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tafterAnimateIn = function() {\n\t\t\t\tvar $video = $container.find('iframe[src*=\"www.youtube.com/embed\"]'),\n\t\t\t\tsrc = $video.attr('src');\n\n\t\t\t\tif ($video.length > 0 && $video.attr('data-modal-play') == 'true' && src.indexOf('autoplay=1') == -1) {\n\t\t\t\t\t$video.attr('src', src + '?autoplay=1');\n\t\t\t\t}\n\n\t\t\t\t_isOpen = true;\n\t\t\t\t_addEventsToModal();\n\n\t\t\t\tif (typeof (callback) === 'function') {\n\t\t\t\t\treturn callback();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tanimateInCurrentModal = function() {\n\t\t\t\t$currentModal.css({\n\t\t\t\t\topacity: 0,\n\t\t\t\t\tscale: 0.9\n\t\t\t\t}).addClass(CONST.IS_ACTIVE);\n\n\t\t\t\tif (CONST.IS_FIXED) {\n\t\t\t\t\t_positionCurrentModal();\n\t\t\t\t\t$(window).on('resize.modal', _debouncePositionCurrentModal);\n\t\t\t\t\t$(window).on('scroll.modal', _debouncePositionCurrentModal);\n\t\t\t\t}\n\n\t\t\t\t$currentModal.velocity({\n\t\t\t\t\topacity: 1,\n\t\t\t\t\tscale: 1,\n\t\t\t\t\ttranslateZ: 0\n\t\t\t\t}, {\n\t\t\t\t\tduration: CONST.DURATIONS.MODAL.IN,\n\t\t\t\t\tcomplete: afterAnimateIn\n\t\t\t\t});\n\t\t\t};\n\n\t\t\t$currentModal.css('opacity', 0).velocity('stop');\n\t\t\t$container.velocity('stop');\n\n\t\t\t$container.css('opacity', 0).addClass(CONST.IS_ACTIVE).velocity({\n\t\t\t\topacity: 1,\n\t\t\t\ttranslateZ: 0\n\t\t\t}, {\n\t\t\t\tduration: CONST.DURATIONS.CONTAINER.IN,\n\t\t\t\tcomplete: function() {\n\t\t\t\t\tanimateInCurrentModal();\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\t_animateOut = function(callback) {\n\t\t\tif (!_isOpen) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (CONST.IS_FIXED) {\n\t\t\t\t$(window).off('resize.modal', _debouncePositionCurrentModal);\n\t\t\t\t$(window).off('scroll.modal', _debouncePositionCurrentModal);\n\t\t\t}\n\n\t\t\tif (CONST.STATIC_ANIMATION) {\n\t\t\t\t$currentModal.removeClass(CONST.IS_ACTIVE);\n\t\t\t\t$container.removeClass(CONST.IS_ACTIVE);\n\n\t\t\t\t_isOpen = false;\n\t\t\t\t$currentModal = null;\n\n\t\t\t\tif (typeof (callback) === 'function') {\n\t\t\t\t\treturn callback();\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar $video = $container.find('iframe[src*=\"www.youtube.com/embed\"]'),\n\t\t\t\tsrc = $video.attr('src');\n\n\t\t\tif ($video.length > 0) {\n\t\t\t\t$video.attr('src', '');\n\n\t\t\t\tif ($video.attr('data-modal-play') == 'true') {\n\t\t\t\t\tsrc = src.substring(0, src.indexOf('?autoplay=1'));\n\t\t\t\t}\n\n\t\t\t\t$video.attr('src', src);\n\t\t\t}\n\n\t\t\t$currentModal.velocity('stop');\n\t\t\t$container.velocity('stop');\n\n\t\t\t$currentModal.velocity({\n\t\t\t\topacity: 0,\n\t\t\t\tscale: 0.9,\n\t\t\t\ttranslateZ: 0\n\t\t\t}, {\n\t\t\t\tduration: CONST.DURATIONS.MODAL.OUT,\n\t\t\t\tcomplete: function() {\n\t\t\t\t\t$currentModal.removeClass(CONST.IS_ACTIVE);\n\t\t\t\t\t$currentModal = null;\n\n\t\t\t\t\t$container.velocity({\n\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\ttranslateZ: 0\n\t\t\t\t\t}, {\n\t\t\t\t\t\tduration: CONST.DURATIONS.CONTAINER.OUT,\n\t\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\t\t_isOpen = false;\n\n\t\t\t\t\t\t\t$container.removeClass(CONST.IS_ACTIVE);\n\n\t\t\t\t\t\t\tNAMESPACE.util.noscroll.remove();\n\n\t\t\t\t\t\t\tif (typeof (callback) === 'function') {\n\t\t\t\t\t\t\t\treturn callback();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\t_addEventsToModal = function() {\n\t\t\t//prevent the user from being able to tab outside of the modal window\n\t\t\t$currentModal.on('keydown.modal', function(event) {\n\n\t\t\t\tif (event.keyCode === 13) {\n\t\t\t\t\tif ($('.lt-ie9').length > 0) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t$currentModal.find('input[type=\"submit\"]').click();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (event.keyCode !== 9) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar $tabitems = $(this).find(':tabbable').andSelf(),\n\t\t\t\t\t$first = $tabitems.filter(':first'),\n\t\t\t\t\t$last = $tabitems.filter(':last');\n\n\t\t\t\tif (event.target === $last.get(0) && !event.shiftKey) {\n\t\t\t\t\t$first.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t} else if (event.target === $first.get(0) && event.shiftKey) {\n\t\t\t\t\t$last.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t//resize event\n\t\t\t$currentModal.on('closed.expandcollapse opened.expandcollapse', _positionCurrentModal);\n\n\t\t\t// focus on the first element\n\t\t\t$currentModal.focus();\n\t\t};\n\n\t\tisModalOpen = function() {\n\t\t\treturn (_isOpen);\n\t\t};\n\n\t\topenModal = function(id, callback, opener) {\n\t\t\tif (_isReady) {\n\t\t\t\tif (typeof (opener) === 'object' && $(opener).closest($container).length === 0) {\n\t\t\t\t\t_itemThatOpenedTheModal = $(opener);\n\t\t\t\t}\n\n\t\t\t\t//check if already open\n\t\t\t\tif (_isOpen) {\n\t\t\t\t\t//if is self, don't reopen, else swap out\n\t\t\t\t\tif ($currentModal.attr('id') === id) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn closeModal(function() {\n\t\t\t\t\t\t\topenModal(id, callback);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (checkIfModalExists(id)) {\n\t\t\t\t\t\t_isOpen = true;\n\n\t\t\t\t\t\t$bg.on('click.modal', function(event) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tcloseModal();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t$currentModal = $container.find('#' + id);\n\n\t\t\t\t\t\t$bg.appendTo($currentModal);\n\n\t\t\t\t\t\t_animateIn(callback);\n\n\t\t\t\t\t\t// AFTER OPEN actions\n\n\t\t\t\t\t\t// close navigation\n\t\t\t\t\t\tNAMESPACE.nav.offscreen.close();\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t};\n\n\t\t_afterModalOpen = function(id, $button) {\n\t\t\tvar ajaxPath = $button.attr('data-modal-ajax-fragment-service'),\n\t\t\t\tjqxhr;\n\n\t\t\tif(typeof(ajaxPath) !== 'undefined') {\n\t\t\t\tvar $results = $('#'+id).find('.fn_modal_ajax');\n\n\t\t\t\tif($results.hasClass('has-loaded')) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (jqxhr) {\n\t\t\t\t\tjqxhr.abort();\n\t\t\t\t}\n\n\t\t\t\tjqxhr = $.ajax({\n\t\t\t\t\turl: ajaxPath,\n\t\t\t\t\terror: function() {\n\t\t\t\t\t\t$results.fadeOut(250, function(){\n\t\t\t\t\t\t\t$results.remove();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tjqxhr = null;\n\t\t\t\t\t},\n\t\t\t\t\tsuccess: function(data) {\n\t\t\t\t\t\t$results.html(data);\n\t\t\t\t\t\t$results.addClass('has-loaded');\n\t\t\t\t\t\t_positionCurrentModal();\n\n\t\t\t\t\t\tjqxhr = null;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tcloseModal = function(callback) {\n\t\t\t$bg.off('click.modal');\n\n\t\t\tif (_isReady) {\n\t\t\t\t_animateOut(function() {\n\t\t\t\t\tif (typeof (callback) === 'function') {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// if it has a callback, it must be opening another modal\n\t\t\t\t\t\tif (_itemThatOpenedTheModal) {\n\t\t\t\t\t\t\t$(_itemThatOpenedTheModal).focus();\n\t\t\t\t\t\t\t_itemThatOpenedTheModal = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn true;\n\t\t};\n\n\t\t_bindFormToOriginal = function(id, $original, $modal) {\n\t\t\t// map form elements to each other so only the original form is used\n\t\t\t$modal.find('input:not(:submit), select').each(function(i, el) {\n\t\t\t\tvar $el = $(el),\n\t\t\t\t\toriginalId = $el.attr('id'),\n\t\t\t\t\toriginalName = $el.attr('name'),\n\t\t\t\t\t$originalEl = $original.find('#' + originalId);\n\n\t\t\t\t// update element attribute\n\t\t\t\t$el.attr({\n\t\t\t\t\tid: originalId + '-modal',\n\t\t\t\t\tname: originalName + '-modal'\n\t\t\t\t});\n\n\t\t\t\t// update the element's label\n\t\t\t\t$el.closest('.ctrl-holder').find('label[for=\"' + originalId + '\"]').attr('for', originalId + '-modal');\n\n\t\t\t\t// bind update events to update the main form\n\t\t\t\t$el.on('keyup.modalform change.modalform', function() {\n\t\t\t\t\t$originalEl.val($(this).val()).trigger('updateLabel.simpleSelect');\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// map submit buttons to each other so only the original submit button is used.\n\t\t\t$modal.find('.cta, input[type=\"submit\"]').each(function(i, el) {\n\t\t\t\tvar $el = $(el);\n\n\t\t\t\t$el.on('click.modalform', function(event) {\n\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t// close modal first\n\t\t\t\t\tcloseModal(function() {\n\t\t\t\t\t\t// fire the proper click event for the main form instead\n\t\t\t\t\t\t$original.find('.cta, input[type=\"submit\"]').eq(i).trigger('click', [true]);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\n\t\t// dynamically add a modal after page load based off a source element\n\t\taddNewModal = function(id, type, $elem, callback) {\n\t\t\tif (typeof (Handlebars) !== 'object') {\n\t\t\t\tconsole.warn('Handlebars must be included to use the modals module');\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (checkIfModalExists(id)) {\n\t\t\t\t// remove old one\n\t\t\t\t$container.find('#' + id).remove();\n\t\t\t}\n\n\t\t\tvar modalTemplate = Handlebars.compile(TEMPLATES.normal);\n\n\t\t\t$container.prepend(modalTemplate({\n\t\t\t\tid: id,\n\t\t\t\ttype: type\n\t\t\t}));\n\n\t\t\t$container.find('#' + id).find('.modal-content-overflow').html($elem.clone());\n\n\t\t\t_bindFormToOriginal(id, $elem, $container.find('#' + id).find('.modal-content-overflow'));\n\n\t\t\tif (typeof (callback) === 'function') {\n\t\t\t\tcallback($container.find('#' + id));\n\t\t\t}\n\t\t};\n\n\t\t// dynamically add a modal after page load at a certain media query size\n\t\t_addModalMediaQueries = {};\n\t\taddNewModalAtMediaQuery = function(mq, id, type, $elem, callback) {\n\t\t\tif ($elem.length === 0) {\n\t\t\t\treturn; //element doesn't exist - don't continue\n\t\t\t}\n\n\t\t\t// loops through all modals at each media query and adds them to the page\n\t\t\tvar createModal = function() {\n\t\t\t\tfor (var mq in _addModalMediaQueries) {\n\t\t\t\t\tif (_addModalMediaQueries.hasOwnProperty(mq)) {\n\t\t\t\t\t\tvar mqHandler = _addModalMediaQueries[mq].handler,\n\t\t\t\t\t\t\tmqModals = _addModalMediaQueries[mq].modals;\n\n\t\t\t\t\t\twhile (mqModals.length > 0) {\n\t\t\t\t\t\t\tvar modal = mqModals.pop();\n\t\t\t\t\t\t\taddNewModal(modal.id, modal.type, modal.$elem, modal.callback);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tenquire.unregister(DD.bp.get(mq), mqHandler);\n\n\t\t\t\t\t\tdelete _addModalMediaQueries[mq];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tif (DD.bp.is(mq)) {\n\t\t\t\taddNewModal(id, type, $elem, callback);\n\t\t\t} else {\n\t\t\t\t// only setup the enquire listener once per media query\n\t\t\t\t// enquire can't unregister multiple listeners that reference the same handler\n\t\t\t\t// so it's much safer to do it this way if you have multiple modals on the same mq\n\t\t\t\tif (typeof (_addModalMediaQueries[mq]) !== 'object') {\n\t\t\t\t\t_addModalMediaQueries[mq] = {\n\t\t\t\t\t\thandler: {\n\t\t\t\t\t\t\tmatch: createModal\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmodals: []\n\t\t\t\t\t};\n\t\t\t\t\tenquire.register(DD.bp.get(mq), _addModalMediaQueries[mq].handler);\n\t\t\t\t}\n\n\t\t\t\tif (_addModalMediaQueries[mq] && typeof (_addModalMediaQueries[mq].modals) === 'object') {\n\t\t\t\t\t_addModalMediaQueries[mq].modals.push({\n\t\t\t\t\t\tid: id,\n\t\t\t\t\t\ttype: type,\n\t\t\t\t\t\t$elem: $elem,\n\t\t\t\t\t\tcallback: callback\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\taddNewModalFromHTML = function() {\n\t\t\tvar _getModalFromId = function(id) {\n\t\t\t\tfor (var key in DYNAMIC_MODALS) {\n\t\t\t\t\tif (DYNAMIC_MODALS.hasOwnProperty(key) && key === id) {\n\t\t\t\t\t\treturn DYNAMIC_MODALS[key];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\n\t\t\t$('.fn_modal_dynamic').each(function(i, el) {\n\t\t\t\tvar $container = $(el),\n\t\t\t\t\tid = $container.attr('data-modal-id'),\n\t\t\t\t\toptions = _getModalFromId(id);\n\n\t\t\t\tif (options !== false) {\n\t\t\t\t\taddNewModalAtMediaQuery(options.mq, id, options.type, $container, options.callback);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\treset = function() {\n\t\t\t$('.fn_modal_dynamic').each(function(i, el) {\n\t\t\t\tvar $container = $(el),\n\t\t\t\t\tid = $container.attr('data-modal-id');\n\n\t\t\t\tif ($('#' + id).length > 0) {\n\t\t\t\t\t$('#' + id).remove();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\taddNewModalFromHTML();\n\t\t};\n\n\t\tinit = function() {\n\t\t\t$container.append($('#outer-wrap').find('.fn_modal'));\n\n\t\t\tif (_isReady !== true) {\n\n\t\t\t\t//check if there is a modal on the page\n\t\t\t\tif ($container.length === 0) {\n\t\t\t\t\t_isReady = false;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//check if there is currently a modal active\n\t\t\t\tif ($container.hasClass(CONST.IS_ACTIVE)) {\n\t\t\t\t\t//if there is no active modal inside, it shouldn't be active\n\t\t\t\t\tif ($container.find('.' + CONST.IS_ACTIVE).length > 0) {\n\t\t\t\t\t\t_isOpen = true;\n\t\t\t\t\t\t$currentModal = $container.find('.' + CONST.IS_ACTIVE);\n\t\t\t\t\t\t_addEventsToModal();\n\n\t\t\t\t\t\tNAMESPACE.util.noscroll.add();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$container.removeClass(CONST.IS_ACTIVE);\n\t\t\t\t\t\t_isOpen = false;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t//we shouldn't have an internal item active without the container being active\n\t\t\t\t\t$container.find('.' + CONST.IS_ACTIVE).removeClass(CONST.IS_ACTIVE);\n\t\t\t\t}\n\n\t\t\t\t//setup background resizing\n\t\t\t\tvar resizebg = function() {\n\t\t\t\t\tvar scrollWidth, offsetWidth;\n\n\t\t\t\t\tif (!NAMESPACE.IS_RESPONSIVE) {\n\t\t\t\t\t\tif ($('.lt-ie9').length > 0) {\n\t\t\t\t\t\t\tscrollWidth = Math.max(\n\t\t\t\t\t\t\tdocument.documentElement.scrollWidth,\n\t\t\t\t\t\t\tdocument.body.scrollWidth);\n\t\t\t\t\t\t\toffsetWidth = Math.max(\n\t\t\t\t\t\t\tdocument.documentElement.offsetWidth,\n\t\t\t\t\t\t\tdocument.body.offsetWidth);\n\n\t\t\t\t\t\t\tif (scrollWidth < offsetWidth) {\n\t\t\t\t\t\t\t\t$bg.width($(window).width());\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$bg.width(scrollWidth);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$bg.width($(document).width());\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t$(window).on('resize.modal', resizebg);\n\t\t\t\tresizebg();\n\n\t\t\t\t//setup close button\n\t\t\t\t$container.on('click.modal', '.fn_modal_close', function(event) {\n\t\t\t\t\tcloseModal();\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t});\n\n\t\t\t\t//setup close on ESC\n\t\t\t\t$(document).on('keydown.modal', function(event) {\n\t\t\t\t\tif ($currentModal === null) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!event.isDefaultPrevented() && event.keyCode && event.keyCode === 27) {\n\t\t\t\t\t\tif ($currentModal.hasClass('waiting')) {\n\t\t\t\t\t\t\t//don't do anything for \"waiting modal\"\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcloseModal();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t//click for\n\t\t\t\t$('body').on('click.modal', '.fn_modal_open', function(event) {\n\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\tvar $button = $(this),\n\t\t\t\t\t\tid = $button.attr('data-modal-id');\n\n\t\t\t\t\tid = id.substring(id.indexOf('#'), id.length);\n\t\t\t\t\tid = id.replace('#', '');\n\n\t\t\t\t\topenModal(id, function() {\n\t\t\t\t\t\t_afterModalOpen(id, $button);\n\t\t\t\t\t}, $button);\n\t\t\t\t});\n\n\t\t\t\taddNewModalFromHTML();\n\n\t\t\t\t//allow other functions to work\n\t\t\t\t_isReady = true;\n\t\t\t}\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init,\n\t\t\treset: reset,\n\t\t\topen: openModal,\n\t\t\tclose: closeModal,\n\t\t\tisOpen: isModalOpen,\n\t\t\texists: checkIfModalExists,\n\t\t\tadd: addNewModal,\n\t\t\taddAt: addNewModalAtMediaQuery,\n\t\t\taddFromHTML: addNewModalFromHTML\n\t\t};\n\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * Initiates modules inside tabs\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.moduleInitInTabs = (function() {\n\t\tvar init = function() {\n\t\t\t$('.tabs-container').each(function(i, el){\n\t\t\t\tvar $tabsContainer = $(el);\n\n\t\t\t\t//check each tabs container for equalHeights\n\t\t\t\t$tabsContainer.find('.fn_equalHeights').each(function(j, el){\n\t\t\t\t\tvar $equalHeights = $(el);\n\n\t\t\t\t\t$tabsContainer.on('changed.tabs', function(){\n\t\t\t\t\t\t$equalHeights.trigger('update.equalHeights');\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\t$tabsContainer.find('.l-cols').each(function(j, el){\n\t\t\t\t\tvar $equalHeights = $(el);\n\n\t\t\t\t\t$tabsContainer.on('changed.tabs', function(){\n\t\t\t\t\t\t$equalHeights.trigger('resize.columns');\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\t$tabsContainer.find('.fn_responsive-table').each(function(j, el) {\n\t\t\t\t\t$tabsContainer.on('changed.tabs', function(){\n\t\t\t\t\t\t$(el).trigger('resize.responsiveTable');\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t$('.js-expandcollapse').each(function(i, el) {\n\t\t\t\tvar $linkContainer = $(el),\n\t\t\t\t\t$link = $linkContainer.find('a'),\n\t\t\t\t\tselector = $link.attr('href');\n\n\t\t\t\tif($link.data('ec-is-link') !== true) {\n\t\t\t\t\t$(selector).find('.fn_equalHeights').each(function(j, el){\n\t\t\t\t\t\tvar $equalHeights = $(el);\n\t\t\t\t\t\t$linkContainer.on('opened.expandcollapse', function(){\n\t\t\t\t\t\t\t$equalHeights.trigger('update.equalHeights');\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\t$linkContainer.find('.fn_responsive-table').each(function(j, el) {\n\t\t\t\t\t\t$linkContainer.on('opened.expandcollapse', function(){\n\t\t\t\t\t\t\t$(el).trigger('resize.responsiveTable');\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$('body').trigger('inittabs');\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init\n\t\t};\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * MEDIA QUERY ATTACH/DETACH\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.mqad = (function() {\n\t\tvar init = function() {\n\n\t\t\t$('.fn_mqad').each(function(i, el){\n\t\t\t\tvar $el = $(el),\n\t\t\t\t\tmqAttach = $el.attr('data-mqad-attach') || false,\n\t\t\t\t\tmqDetach = $el.attr('data-mqad-detach') || false,\n\t\t\t\t\tmqStatic = $el.attr('data-mqad-static') || false;\n\n\t\t\t\tvar onAttach = function(init) {\n\t\t\t\t\tvar isInit = (typeof(init) === 'boolean') ? init : false;\n\t\t\t\t\t$el.trigger('attach.mqad', [isInit]);\n\t\t\t\t};\n\n\t\t\t\tvar onDetach = function(init) {\n\t\t\t\t\tvar isInit = (typeof(init) === 'boolean') ? init : false;\n\t\t\t\t\t$el.trigger('detach.mqad', [isInit]);\n\t\t\t\t};\n\n\t\t\t\tif (!NAMESPACE.IS_RESPONSIVE) {\n\t\t\t\t\tif (mqStatic === 'true') {\n\t\t\t\t\t\tonAttach(true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tonDetach(true);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (typeof(mqAttach) === 'string' && typeof(mqDetach) === 'string') {\n\n\t\t\t\t\t//if both enable and disable are specified - handle both\n\t\t\t\t\tenquire.register(NAMESPACE.mediaQueries.bp(mqAttach), {\n\t\t\t\t\t\tmatch: onAttach\n\t\t\t\t\t}).register(NAMESPACE.mediaQueries.bp(mqDetach), {\n\t\t\t\t\t\tmatch: onDetach\n\t\t\t\t\t});\n\n\t\t\t\t\tif (window.matchMedia(NAMESPACE.mediaQueries.bp(mqAttach)).matches) {\n\t\t\t\t\t\tonAttach(true);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (window.matchMedia(NAMESPACE.mediaQueries.bp(mqDetach)).matches) {\n\t\t\t\t\t\tonDetach(true);\n\t\t\t\t\t}\n\n\t\t\t\t} else if (typeof(mqAttach) === 'string' && mqDetach === false) {\n\n\t\t\t\t\t//if only enable is specified\n\t\t\t\t\tenquire.register(NAMESPACE.mediaQueries.bp(mqAttach), {\n\t\t\t\t\t\tmatch: onAttach,\n\t\t\t\t\t\tunmatch: onDetach\n\t\t\t\t\t});\n\n\t\t\t\t\tif (window.matchMedia(NAMESPACE.mediaQueries.bp(mqAttach)).matches) {\n\t\t\t\t\t\tonAttach(true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tonDetach(true);\n\t\t\t\t\t}\n\n\t\t\t\t} else if (typeof(mqDetach) === 'string' && mqAttach === false) {\n\n\t\t\t\t\t//if only disable is specified\n\t\t\t\t\tenquire.register(NAMESPACE.mediaQueries.bp(mqDetach), {\n\t\t\t\t\t\tmatch: onDetach,\n\t\t\t\t\t\tunmatch: onAttach\n\t\t\t\t\t});\n\n\t\t\t\t\tif (window.matchMedia(NAMESPACE.mediaQueries.bp(mqDetach)).matches) {\n\t\t\t\t\t\tonDetach(true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tonAttach(true);\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\t//if nothing is specified - do nothing\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init\n\t\t};\n\n\t}());\n\n}(RACQ_JS));\n\n/*globals Sys */\n\n/* ==========================================================================\n * MULTI STEP FORM\n\nClick on Save/Next button:\n - Fade out and lock current section\n - Display spinner next to the button that was clicked\n - Send Ajax request\n - Delete any later sections from the DOM\n - Fade out container for next section\n - Inject next section into the DOM\n - Fade in container for next section\n - Remove spinner\n\n * ========================================================================== */\n\n (function(NAMESPACE) {\n\n\t'use strict';\n\n\tvar EASING = {\n\t\tEASE_IN_STRONG: [.7,0,1,1], // http://cubic-bezier.com/#.7,0,1,1\n\t\tEASE_OUT: [.2,.1,.15,1] // Strong ease out, with a slight ease in\n\t};\n\n\tvar isLargeScreen = function() {\n\t\tif (!NAMESPACE.IS_RESPONSIVE) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn (window.matchMedia(NAMESPACE.mediaQueries.bp('l')).matches);\n\t\t}\n\t};\n\n\tNAMESPACE.multiStepForm = (function() {\n\n\t\tvar FADE_DURATION = 200,\n\t\t\t$formSteps,\n\t\t\t$footer,\n\t\t\tinit,\n\t\t\treinit,\n\t\t\trefresh,\n\t\t\tfadeOutAndLock,\n\t\t\tfadeInAndUnlock,\n\t\t\tspinner,\n\t\t\thideContentWhenLocked,\n\t\t\tcopyProgressIndicator,\n\t\t\tcurrentActive,\n\t\t\tactiveElementBeforeRequest,\n\t\t\tshowInlinePreloader,\n\t\t\treinitProgressIndicator;\n\n\t\tshowInlinePreloader = function($el) {\n\t\t\tvar $nearestHolder = $el.closest('.ctrls-holder');\n\t\t\tif ($nearestHolder.length === 0) {\n\t\t\t\t$nearestHolder = $el.closest('.ctrl-holder');\n\t\t\t}\n\n\t\t\tif ($nearestHolder.length === 1 && !$nearestHolder.hasClass('no-inline-preloader')) {\n\t\t\t\tvar $offsetParent = $nearestHolder.offsetParent(),\n\t\t\t\t$inlinePreloader = $('
'),\n\t\t\t\tholderTop = $nearestHolder.position().top + parseInt($nearestHolder.css('marginTop'), 9);\n\t\t\t\t$nearestHolder.append($('
'));\n\n\t\t\t\tif ($nearestHolder.hasClass('inline_preloader_relative')) {\n\t\t\t\t\t$nearestHolder.append($inlinePreloader);\n\t\t\t\t} else {\n\t\t\t\t\t$inlinePreloader.css({'top': holderTop + 'px'});\n\t\t\t\t\t$offsetParent.append($inlinePreloader);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tinit = function() {\n\n\t\t\t$formSteps = $('.form-steps');\n\t\t\t$footer = $('#inner-wrap > .footer');\n\n\t\t\ttry {\n\t\t\t\tvar prm = Sys.WebForms.PageRequestManager.getInstance();\n\n\t\t\t\tprm.add_beginRequest(function(sender, args) {\n\n\t\t\t\t\tactiveElementBeforeRequest = document.activeElement;\n\t\t\t\t\tcurrentActive = $('.step.is-active').parent().parent().prop('id');\n\n\t\t\t\t\tvar postbackElement = args.get_postBackElement(),\n\t\t\t\t\t\t$postbackElement = $(postbackElement),\n\t\t\t\t\t\t$panel = $postbackElement.closest('.msf__page').parent(),\n\t\t\t\t\t\tusePreloader = $postbackElement.hasClass('msf_use-preloader');\n\n\t\t\t\t\t// If the postback element is not a Next, Back, Edit button, show a ctrl-preloader\n\t\t\t\t\tif (!$postbackElement.is('.btn-holder .cta, .msf_use-preloader, [data-stepid]')) {\n\t\t\t\t\t\tNAMESPACE.multiStepForm.showInlinePreloader($postbackElement);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ($panel.length === 1 && !$postbackElement.hasClass('btn-without-preloader') && usePreloader === true) {\n\t\t\t\t\t\t// Show spinner\n\t\t\t\t\t\tspinner.show($panel);\n\n\t\t\t\t\t\t// Fade out and lock all sections\n\t\t\t\t\t\tfadeOutAndLock($panel, null, true);\n\n\t\t\t\t\t\tif (!hideContentWhenLocked() && $postbackElement.hasClass('cta') && Modernizr.opacity) {\n\t\t\t\t\t\t\t// Move the footer down\n\t\t\t\t\t\t\t$footer.velocity({\n\t\t\t\t\t\t\t\ttranslateY: '40px',\n\t\t\t\t\t\t\t\topacity: 0\n\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tdelay: 400,\n\t\t\t\t\t\t\t\teasing: EASING.EASE_IN_STRONG\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tprm.add_pageLoaded(function(sender, args) {\n\t\t\t\t\tvar updatedPanels = args.get_panelsUpdated(),\n\t\t\t\t\t\t$updatedPanels = [],\n\t\t\t\t\t\t$newActivePanel,\n\t\t\t\t\t\t$progressIndicator;\n\t\t\t\t\tvar oldActive = currentActive;\n\t\t\t\t\tcurrentActive = $('.step.is-active').parent().parent().prop('id');\n\n\t\t\t\t\tif (updatedPanels.length === 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// If this event was not triggered by a CTA button, don't show animations\n\t\t\t\t\tif (sender && sender._activeElement) {\n\t\t\t\t\t\tvar $activeEl = $(sender._activeElement),\n\t\t\t\t\t\t\tisNavigationButton = $activeEl.is('.btn-holder .cta, .msf_use-preloader, [data-stepid]');\n\t\t\t\t\t\t// Note: isNavigationButton will be TRUE if it is Next, Back, Edit or \"Add another person\" button\n\n\t\t\t\t\t\t// If this postback was triggered by an input text field, radio button, select dropdown, etc, then animations should not be applied because we are not transitioning to a different panel\n\t\t\t\t\t\tif (!isNavigationButton && (oldActive === currentActive)) {\n\t\t\t\t\t\t\t// Animations should not be applied to this postback\n\n\t\t\t\t\t\t\t// Temporarily hide the form in the Update Panel so that the contents don't jump while it is being re-rendered by modules such as Simple Radio\n\t\t\t\t\t\t\t$(updatedPanels).find('.form').css('visibility', 'hidden');\n\n\t\t\t\t\t\t\t// Reinitalise JavaScript\n\t\t\t\t\t\t\trefresh.beforeUnlock(updatedPanels);\n\t\t\t\t\t\t\trefresh.afterUnlock(updatedPanels);\n\n\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t$(updatedPanels).find('.form').css('visibility', '');\n\n\t\t\t\t\t\t\t\t// Focus on the element that had focus before the postback\n\t\t\t\t\t\t\t\tif (activeElementBeforeRequest && activeElementBeforeRequest.id) {\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t$('#' + activeElementBeforeRequest.id).focus();\n\t\t\t\t\t\t\t\t\t} catch (e) { }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, 1);\n\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t$.each(updatedPanels, function(i, updatedPanel) {\n\t\t\t\t\t\tvar $updatedPanel = $(updatedPanel);\n\n\t\t\t\t\t\tif ($updatedPanel.find('.msf__page').length > 0) {\n\t\t\t\t\t\t\t$updatedPanels.push($updatedPanel);\n\n\t\t\t\t\t\t\tif ($updatedPanel.find('.step.is-active').length === 1) {\n\t\t\t\t\t\t\t\t$newActivePanel = $updatedPanel;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t// If there are no Multi Step Form pages in this .NET Update Panel request, don't do anything\n\t\t\t\t\tif ($updatedPanels.length === 0) {\n\t\t\t\t\t\t// Reinitialise JavaScript\n\t\t\t\t\t\trefresh.beforeUnlock(updatedPanels);\n\t\t\t\t\t\trefresh.afterUnlock(updatedPanels);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!$newActivePanel) {\n\t\t\t\t\t\tconsole.log('Warning: we are going to scroll to the last panel because we could not find any active panels in the Ajax response');\n\t\t\t\t\t\t$newActivePanel = $updatedPanels[$updatedPanels.length - 1];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lock all new panels\n\t\t\t\t\t$.each($updatedPanels, function(i, $updatedPanel) {\n\t\t\t\t\t\tfadeOutAndLock($updatedPanel, null, false, true);\n\t\t\t\t\t});\n\n\t\t\t\t\t$(window).trigger('disableMultiStepFormProgressIndicator');\n\n\t\t\t\t\t// Take the new progress indicator module from updated panels and move it to the correct page in the DOM\n\t\t\t\t\t$progressIndicator = $('.msf__progress-indicator-temp-holder').find('.msf__progress-indicator').remove();\n\t\t\t\t\tcopyProgressIndicator($progressIndicator);\n\n\t\t\t\t\t// Reinitialise JavaScript\n\t\t\t\t\trefresh.beforeUnlock(updatedPanels);\n\n\t\t\t\t\t// Fade in new active panel\n\t\t\t\t\tfadeInAndUnlock($newActivePanel);\n\n\t\t\t\t\t// Reinitialise JavaScript\n\t\t\t\t\trefresh.afterUnlock(updatedPanels);\n\t\t\t\t});\n\t\t\t} catch (e) {\n\t\t\t\tthrow 'error initalising Multi Step Form module. Was the .NET Sys.WebForms.PageRequestManager class (or Mock Sys Object module for HTML templates) included on the page?\\n' + e.message;\n\t\t\t}\n\n\t\t\t// Copy progress indicator to correct places in DOM\n\t\t\tcopyProgressIndicator($('.msf__progress-indicator'));\n\n\t\t\t$('html').addClass('html-multi-step-form');\n\n\t\t\treinit();\n\t\t};\n\n\t\treinit = function() {\n\n\t\t\t$('.fn_msf-edit').each(function() {\n\t\t\t\tvar $link = $(this).removeClass('fn_msf-edit');\n\n\t\t\t\t$link.click(function(e) {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tvar stepid = $link.attr('data-stepid'),\n\t\t\t\t\t\t$activePanelHiddenFields = $('.step.is-active .msf__hidden-fields');\n\n\t\t\t\t\t$activePanelHiddenFields.find('.msf__hidden-step-number').val(stepid);\n\t\t\t\t\t$activePanelHiddenFields.find('.msf__hidden-edit-btn').click();\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// THE FOLLOWING EVENT LISTENERS ARE USED IN THE HTML TEMPLATES\n\t\t\t$('.fn_msf-link').each(function() {\n\t\t\t\tvar $link = $(this).removeClass('fn_msf-link'),\n\t\t\t\t\t$page = $link.closest('.msf__page'),\n\t\t\t\t\turl = $link.attr('data-msf-url');\n\n\t\t\t\t$link.click(function(e) {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tNAMESPACE.mockSysObject.trigger('beginRequest', {\n\t\t\t\t\t\tpostBackElement: $link[0]\n\t\t\t\t\t});\n\n\t\t\t\t\tNAMESPACE.util.ajax({\n\t\t\t\t\t\tminDuration: 1500,\n\t\t\t\t\t\turl: url,\n\t\t\t\t\t\tmethod: 'GET',\n\t\t\t\t\t\tdata: $page.find(':input').serialize(),\n\t\t\t\t\t\tsuccess: function(data) {\n\t\t\t\t\t\t\t// Inject the faux .NET Update Panels into the page\n\t\t\t\t\t\t\tvar panelsUpdated = [],\n\t\t\t\t\t\t\t\t$data = $(data);\n\n\t\t\t\t\t\t\t$data.filter('div').each(function() {\n\t\t\t\t\t\t\t\tvar $updatePanel = $(this),\n\t\t\t\t\t\t\t\t\tpanelId = $updatePanel.attr('id'),\n\t\t\t\t\t\t\t\t\t$panel = $('[id=\"' + panelId + '\"]');\n\n\t\t\t\t\t\t\t\t$panel.html($updatePanel.html());\n\t\t\t\t\t\t\t\tpanelsUpdated.push($panel[0]);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t// Call the success callback\n\t\t\t\t\t\t\tNAMESPACE.mockSysObject.trigger('pageLoaded', {\n\t\t\t\t\t\t\t\tpanelsUpdated: panelsUpdated\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\terror: function() {\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tNAMESPACE.forms.fieldTypeTransformation();\n\t\t\tNAMESPACE.forms.discountSummary();\n\n\t\t};\n\n\t\trefresh = {\n\t\t\tbeforeUnlock: function(updatedPanels) {\n\n\t\t\t\t// If the new panel contains an Expand Collapse module,\n\t\t\t\t// AND the Expand Collapse module contains an input field that has already been answered\n\t\t\t\t// THEN, open the Expand Collapse module\n\t\t\t\t$.each(updatedPanels, function(i, updatedPanel) {\n\t\t\t\t\tvar $panel = $(updatedPanel);\n\n\t\t\t\t\t$panel.find('.ec-content.js-hidden').each(function() {\n\t\t\t\t\t\tvar $ec = $(this),\n\t\t\t\t\t\t\t$inputsWithValues = $ec.find('input[type=\"text\"], input[type=\"number\"], select')\n\t\t\t\t\t\t\t\t.filter(function() {\n\t\t\t\t\t\t\t\t\treturn !!$(this).val();\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif ($inputsWithValues.length > 0) {\n\t\t\t\t\t\t\t\tvar $ecTitleA = $panel.find('.expandcollapse a[href=\"#' + $ec.attr('id') + '\"]'),\n\t\t\t\t\t\t\t\t\t$ecTitle = $ecTitleA.parent();\n\n\t\t\t\t\t\t\t\t$ec.removeClass('js-hidden');\n\t\t\t\t\t\t\t\t$ecTitle.removeClass('is-collapsed').addClass('is-expanded');\n\t\t\t\t\t\t\t\t$ecTitleA.text($ecTitleA.attr('data-ec-collapse'));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\n\n\t\t\t\tNAMESPACE.mqad.init();\n\t\t\t\tNAMESPACE.forms.dynamicSelect();\n\t\t\t\tNAMESPACE.complexTooltip();\n\t\t\t\tNAMESPACE.forms.simpleRadio();\n\t\t\t\tNAMESPACE.forms.simpleSelect();\n\t\t\t\tNAMESPACE.forms.autotab();\n\t\t\t\tNAMESPACE.forms.submitOnChange();\n\t\t\t\tNAMESPACE.forms.hideOnChange();\n\t\t\t\tNAMESPACE.forms.showOnClick();\n\t\t\t\tNAMESPACE.forms.hideOnClick();\n\t\t\t\tNAMESPACE.forms.radioBlock();\n\t\t\t\tNAMESPACE.formRows();\n\t\t\t\tNAMESPACE.equalHeights.init();\n\t\t\t\tNAMESPACE.datePicker();\n\t\t\t\tNAMESPACE.formShowHide.init();\n\t\t\t\tNAMESPACE.formShowHideSimple.init();\n\t\t\t\tNAMESPACE.formShowHideTarget.init();\n\t\t\t\tNAMESPACE.slider();\n\t\t\t\tNAMESPACE.expandCollapse.init();\n\t\t\t\tNAMESPACE.multiStepForm.reinit();\n\t\t\t\tNAMESPACE.tooltip();\n\t\t\t\tNAMESPACE.util.helpers();\n\t\t\t\tNAMESPACE.util.scrollPage();\n\t\t\t\tNAMESPACE.util.responsiveTelNumbers();\n\t\t\t\tNAMESPACE.tabsController();\n\t\t\t\tNAMESPACE.tabs.init();\n\t\t\t\tNAMESPACE.sticky();\n\t\t\t\tNAMESPACE.predictive();\n\t\t\t\tNAMESPACE.mirrorValue();\n\t\t\t\tNAMESPACE.liveTotal();\n\t\t\t\tNAMESPACE.responsiveTable.init();\n\t\t\t\tNAMESPACE.displayFormChange.init();\n\t\t\t\tNAMESPACE.characterCounter.init();\n\t\t\t\tNAMESPACE.forms.inputMask();\n\t\t\t\tNAMESPACE.roadsideUpgrade.init();\n\n\t\t\t},\n\t\t\tafterUnlock: function(updatedPanels) {\n\t\t\t\t$.each(updatedPanels, function(i, updatedPanel) {\n\t\t\t\t\t// Recalculate the Simple Radio modules to ensure that they convert to dropdowns when necessary\n\t\t\t\t\t$(updatedPanel).find('.ctrl-holder.simple-radio').trigger('reset.simpleRadio');\n\t\t\t\t});\n\n\t\t\t\t// trigger a page resize to reflow content i.e. add scrollbars to responsive tables\n\t\t\t\t$(window).trigger('resize');\n\t\t\t}\n\t\t};\n\n\t\tfadeOutAndLock = function($panel, callback, applyToAllPages, immediate) {\n\t\t\tvar $page = $panel.find('.msf__page');\n\n\t\t\tif (applyToAllPages) {\n\t\t\t\t$page = $('.msf__page');\n\t\t\t}\n\n\t\t\tif ($page.length === 0) {\n\t\t\t\tconsole.warn('Tried to fadeOutAndLock page(s) but could not find any.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (hideContentWhenLocked()) {\n\t\t\t\tNAMESPACE.util.scrollPageTo(0, null, 0);\n\t\t\t}\n\n\t\t\tif (immediate || !Modernizr.opacity) {\n\t\t\t\t$page.addClass('msf__page--locked');\n\t\t\t\tif (typeof callback === 'function') {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t$page.addClass('msf__page--locking');\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$page.addClass('msf__page--locked').removeClass('msf__page--locking');\n\t\t\t\t\t$page.find('.step').removeClass('is-active');\n\t\t\t\t\tif (typeof callback === 'function') {\n\t\t\t\t\t\tsetTimeout(callback, FADE_DURATION);\n\t\t\t\t\t}\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t};\n\n\t\t// Fade in the specified page if provided or otherwise the last page\n\t\tfadeInAndUnlock = function($panel) {\n\t\t\tvar $allPages = $('.msf__page'),\n\t\t\t\t$page = $panel.find('.step.is-active').closest('.msf__page'),\n\t\t\t\t$stepComponents,\n\t\t\t\t$tooltip,\n\t\t\t\tscrollTop;\n\n\t\t\tif ($page.length === 0) {\n\t\t\t\t$page = $panel.find('.msf__page').first();\n\t\t\t}\n\t\t\t$stepComponents = $page.find('.confirmation-panel, .step');\n\n\t\t\t// Delete Edit buttons from later steps\n\t\t\t$panel.nextAll().find('.edit-btn-holder').addClass('edit-btn-holder--inactive');\n\n\t\t\t// Show the summary panel or the first tooltip\n\t\t\tif ($page.find('.step__summary-panel').length > 0) {\n\t\t\t\t$page.addClass('step--show-summary-panel');\n\t\t\t} else {\n\t\t\t\t// The backend will add a classname of \"tool-tip-load\" to ONE item if it wants that tooltip to be opened\n\t\t\t\tvar $defaultLoadedToolTip = $('.tool-tip-load').first();\n\t\t\t\tif ($defaultLoadedToolTip.length > 0) {\n\t\t\t\t\tif (isLargeScreen()) {\n\t\t\t\t\t\t$defaultLoadedToolTip.trigger('show.complexTooltip');\n\t\t\t\t\t}\n\t\t\t\t\t$page.focus();\n\t\t\t\t}\n\t\t\t\t$(window).scrollTop(scrollTop);\n\t\t\t}\n\n\t\t\tif (!hideContentWhenLocked()) {\n\t\t\t\tif ($allPages.length === 1 && Modernizr.opacity) {\n\t\t\t\t\t$stepComponents.css('opacity', 0);\n\t\t\t\t\t$stepComponents.velocity({\n\t\t\t\t\t\ttranslateY: 15,\n\t\t\t\t\t\topacity: 0\n\t\t\t\t\t}, {\n\t\t\t\t\t\tduration: 0,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t// Add footer back in\n\t\t\t\t\t// https://github.com/julianshapiro/velocity/issues/159\n\t\t\t\t\t$footer.velocity('stop', true).velocity({\n\t\t\t\t\t\ttranslateY: 0\n\t\t\t\t\t}, {\n\t\t\t\t\t\tduration: 0\n\t\t\t\t\t});\n\n\t\t\t\t\tvar footerDelay = 0;\n\n\t\t\t\t\tif ($allPages.length === 1) {\n\t\t\t\t\t\t// If there is only panel on the page, slide it up\n\t\t\t\t\t\t$stepComponents.each(function(i) {\n\t\t\t\t\t\t\t$(this).velocity({\n\t\t\t\t\t\t\t\ttranslateY: 0,\n\t\t\t\t\t\t\t\topacity: 1\n\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tduration: 1200,\n\t\t\t\t\t\t\t\teasing: EASING.EASE_OUT,\n\t\t\t\t\t\t\t\tdelay: i * 400\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif ($stepComponents.length > 1) {\n\t\t\t\t\t\t\tfooterDelay = $stepComponents.length * 400;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// If there is an error, scroll to the first error, or if there is a scroll hook\n\t\t\t\t\tvar $firstError = $page.find('.ctrl-holder.is-error:visible, .ctrls-holder.is-error:visible, .msf__scroll-hook').first();\n\t\t\t\t\t// allows us to scroll to element outside the 'page'\n\t\t\t\t\tvar $stepsScrollHook = $('.steps__scroll-hook').first();\n\n\t\t\t\t\tif ($firstError.length === 1) {\n\t\t\t\t\t\tvar offset = -120;\n\n\t\t\t\t\t\tif ($page.find('.sticky').length > 0) {\n\t\t\t\t\t\t\toffset += -90;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t$firstError.velocity('scroll', {\n\t\t\t\t\t\t\toffset: offset,\n\t\t\t\t\t\t\tduration: 1200,\n\t\t\t\t\t\t\teasing: EASING.EASE_OUT\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if($stepsScrollHook.length === 1){\n\n\t\t\t\t\t\tvar offset = -120;\n\n\t\t\t\t\t\tif ($page.find('.sticky').length > 0) {\n\t\t\t\t\t\t\toffset += -90;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t$stepsScrollHook.velocity('scroll', {\n\t\t\t\t\t\t\toffset: offset,\n\t\t\t\t\t\t\tduration: 1200,\n\t\t\t\t\t\t\teasing: EASING.EASE_OUT\n\t\t\t\t\t\t});\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Otherwise, scroll to the active panel\n\n\t\t\t\t\t\t// check if there is a scroll override on the panel and if so scroll to that div instead.\n\t\t\t\t\t\tvar overrideScrollId = $panel.data('override-scroll-to');\n\t\t\t\t\t\tif(overrideScrollId!== undefined) {\n\t\t\t\t\t\t\t// escape so we can scroll to decimal id's instead of jQuery thinking its a class\n\t\t\t\t\t\t\tvar $overrideEl = $('#'+ overrideScrollId.replace('.', '\\\\.'));\n\t\t\t\t\t\t\t$overrideEl.velocity('scroll', {\n\t\t\t\t\t\t\t\toffset: -90,\n\t\t\t\t\t\t\t\tduration: 1200,\n\t\t\t\t\t\t\t\teasing: EASING.EASE_OUT\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$page.velocity('scroll', {\n\t\t\t\t\t\t\t\toffset: -90,\n\t\t\t\t\t\t\t\tduration: 1200,\n\t\t\t\t\t\t\t\teasing: EASING.EASE_OUT\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t$footer.velocity({\n\t\t\t\t\t\topacity: 1\n\t\t\t\t\t}, {\n\t\t\t\t\t\tdelay: footerDelay,\n\t\t\t\t\t\tduration: 1200,\n\t\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\t\t$(window).trigger('enableMultiStepFormProgressIndicator');\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tvar $tooltipNoField = $('.complex-tooltip--no-field');\n\t\t\t\t\tif ($tooltipNoField.length > 0) {\n\t\t\t\t\t\t$tooltipNoField.trigger('show.complexTooltip');\n\t\t\t\t\t}\n\t\t\t\t}, 1);\n\t\t\t} else {\n\t\t\t\t// Small screen\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t// Scroll to error\n\t\t\t\t\tvar $firstError = $page.find('.ctrl-holder.is-error:visible, .ctrls-holder.is-error:visible').first();\n\n\t\t\t\t\tif ($firstError.length === 1) {\n\t\t\t\t\t\tvar offset = -120;\n\n\t\t\t\t\t\tif ($page.find('.sticky').length > 0) {\n\t\t\t\t\t\t\toffset += -90;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t$firstError.velocity('scroll', {\n\t\t\t\t\t\t\toffset: offset,\n\t\t\t\t\t\t\tduration: 1200,\n\t\t\t\t\t\t\teasing: EASING.EASE_OUT\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}, 10);\n\t\t\t}\n\n\t\t\tif (Modernizr.opacity) {\n\t\t\t\t$page.addClass('msf__page--locking');\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$page.removeClass('msf__page--locked');\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t$page.removeClass('msf__page--locking');\n\t\t\t\t\t}, FADE_DURATION);\n\t\t\t\t}, 1);\n\t\t\t} else {\n\t\t\t\t$page.removeClass('msf__page--locked');\n\t\t\t}\n\n\t\t\t$page.find('.step').addClass('is-active');\n\t\t};\n\n\t\tspinner = {\n\t\t\tshow: function($panel) {\n\t\t\t\tvar $page = $panel.find('.msf__page').first().addClass('msf__page--loading'),\n\t\t\t\t\t$spinner = $page.find('.msf__spinner'),\n\t\t\t\t\tspinner = NAMESPACE.spinner($spinner);\n\n\t\t\t\tspinner.startAnimation();\n\t\t\t\t$spinner.data('spinner', spinner);\n\t\t\t},\n\t\t\thide: function() {\n\t\t\t\t$('.msf__page--loading').each(function() {\n\t\t\t\t\tvar $page = $(this).removeClass('msf__page--loading'),\n\t\t\t\t\t\t$spinner = $page.find('.msf__spinner'),\n\t\t\t\t\t\tspinner = $spinner.data('spinner');\n\n\t\t\t\t\tif (spinner && spinner.hasOwnProperty('stopAnimation')) {\n\t\t\t\t\t\tspinner.stopAnimation();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\thideContentWhenLocked = function() {\n\t\t\tif (!NAMESPACE.IS_RESPONSIVE) {\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\treturn (!window.matchMedia(NAMESPACE.mediaQueries.bp('s')).matches);\n\t\t\t}\n\t\t};\n\n\t\tcopyProgressIndicator = function($progressIndicator) {\n\t\t\t// If there is only one step in the progress indicator, add a classname\n\t\t\tif ($progressIndicator.find('.msf__progress-steps li').length === 1) {\n\t\t\t\t$progressIndicator.addClass('msf__progress-indicator--one-step');\n\t\t\t}\n\t\t\t$('.msf__progress-indicator-holder').html($progressIndicator);\n\t\t};\n\n\t\treinitProgressIndicator = function() {\n\t\t\tvar $tempProgressIndicator = $('.msf__progress-indicator-temp-holder .msf__progress-indicator');\n\t\t\tvar $indicatorHolder = $('.msf__progress-indicator-holder');\n\t\t\tif ($tempProgressIndicator.length > 0 && $indicatorHolder.length > 0) {\n\t\t\t\t$indicatorHolder.empty();\n\t\t\t\t$indicatorHolder.append($tempProgressIndicator);\n\t\t\t}\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init,\n\t\t\treinit: reinit,\n\t\t\trefresh: refresh,\n\t\t\tfadeOutAndLock: fadeOutAndLock,\n\t\t\tfadeInAndUnlock: fadeInAndUnlock,\n\t\t\tspinner: spinner,\n\t\t\tshowInlinePreloader: showInlinePreloader,\n\t\t\treinitProgressIndicator: reinitProgressIndicator\n\t\t};\n\t}());\n\n}(RACQ_JS));\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.multiStepFormProgressIndicator = (function() {\n\n\t\tvar updatePI = function(stepIndex, markLaterStepsAsIncomplete) {\n\t\t\t$('.msf__progress-indicator').each(function() {\n\t\t\t\tvar $pi = $(this),\n\t\t\t\t\t$piSteps = $pi.find('.msf__progress-steps > ul > li'),\n\t\t\t\t\t$summary = $pi.find('.msf__progress-summary');\n\n\t\t\t\tif (typeof stepIndex === 'object') {\n\t\t\t\t\tstepIndex = parseInt(stepIndex.find('.title .form-step-ico').text(), 10);\n\t\t\t\t\tif (isNaN(stepIndex)) {\n\t\t\t\t\t\tstepIndex = $piSteps.length;\n\t\t\t\t\t}\n\t\t\t\t\tstepIndex -= 1;\n\t\t\t\t}\n\n\t\t\t\t$piSteps.removeClass('msf__progress-step--active');\n\t\t\t\t$piSteps.eq(stepIndex).addClass('msf__progress-step--active');\n\t\t\t\t$summary.text($summary.text().replace(/\\d+/, (stepIndex + 1)));\n\n\t\t\t\t$piSteps.each(function(i) {\n\t\t\t\t\tvar $step = $(this);\n\t\t\t\t\t// msf__progress-step--disabled is added by the backend to prevent a step from being highlighted as active\n\t\t\t\t\tif (i < stepIndex && !$step.hasClass('msf__progress-step--disabled')) {\n\t\t\t\t\t\t$step.addClass('msf__progress-step--complete');\n\t\t\t\t\t} else if (i > stepIndex) {\n\t\t\t\t\t\tif (markLaterStepsAsIncomplete) {\n\t\t\t\t\t\t\t$step.removeClass('msf__progress-step--complete');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\n\t\t// On scroll, update the progress indicator\n\t\tvar init = function() {\n\t\t\tif (!NAMESPACE.IS_RESPONSIVE || window.matchMedia(NAMESPACE.mediaQueries.bp('s')).matches) {\n\t\t\t\tvar isScrolledIntoView = function($el, completelyOnScreen) {\n\t\t\t\t\tvar docViewTop = $(window).scrollTop() + 250,\n\t\t\t\t\t\tdocViewBottom = docViewTop + $(window).height() - 250,\n\t\t\t\t\t\telemTop = $el.offset().top,\n\t\t\t\t\t\telemBottom = elemTop + $el.height();\n\n\t\t\t\t\tif (completelyOnScreen) {\n\t\t\t\t\t\t// Only return true if the element is completely on screen\n\t\t\t\t\t\treturn (elemBottom <= docViewBottom && elemTop >= docViewTop);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Return true if the element is partially on screen\n\t\t\t\t\t\treturn (elemTop <= docViewBottom && elemBottom >= docViewTop);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tvar updateProgressIndicator = function() {\n\t\t\t\t\tvar $steps,\n\t\t\t\t\t\t$currentStep;\n\n\t\t\t\t\tif (!NAMESPACE.IS_RESPONSIVE || window.matchMedia(NAMESPACE.mediaQueries.bp('s')).matches) {\n\t\t\t\t\t\t$steps = $('.msf__page[data-id]');\n\t\t\t\t\t\t$currentStep = $steps.filter(':not(.msf__page--locked)');\n\n\t\t\t\t\t\tif ($steps.length === 0) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If the currently active step is on screen, highlight this item in the progress indicator\n\t\t\t\t\t\tif ($currentStep.length === 1 && isScrolledIntoView($currentStep, true)) {\n\t\t\t\t\t\t\tupdatePI($currentStep);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, make the progress indicator highlight the first step that is visible on screen\n\t\t\t\t\t\t$steps.each(function(i) {\n\t\t\t\t\t\t\tvar $step = $(this);\n\t\t\t\t\t\t\tif (isScrolledIntoView($step)) {\n\t\t\t\t\t\t\t\tupdatePI($step);\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t} else if (i === $steps.length - 1) {\n\t\t\t\t\t\t\t\tupdatePI($step);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tvar getHeaderHeight = (function() {\n\t\t\t\t\tvar headerHeight = 0;\n\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif (headerHeight) {\n\t\t\t\t\t\t\treturn headerHeight;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t$('#header:not(.header--simple), .header-nav, .content-header, .breadcrumbs').each(function() {\n\t\t\t\t\t\t\theaderHeight += $(this).height();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn headerHeight;\n\t\t\t\t\t};\n\t\t\t\t}());\n\n\t\t\t\tvar getFooterHeight = (function() {\n\t\t\t\t\tvar footerHeight = 0;\n\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif (footerHeight) {\n\t\t\t\t\t\t\treturn footerHeight;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t$('.footer, .aside .msf__progress-indicator-holder, .header--simple').each(function() {\n\t\t\t\t\t\t\tfooterHeight += $(this).height();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tfooterHeight += 130;\n\n\t\t\t\t\t\treturn footerHeight;\n\t\t\t\t\t};\n\t\t\t\t}());\n\n\t\t\t\tvar positionProgressIndicator = (function() {\n\t\t\t\t\tvar $window = $(window),\n\t\t\t\t\t\t$doc = $(document),\n\t\t\t\t\t\t$html = $('html'),\n\t\t\t\t\t\t$pi = $('.aside .msf__progress-indicator-holder'),\n\t\t\t\t\t\t$main = $('#main'),\n\t\t\t\t\t\tabsolute = false;\n\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif (!NAMESPACE.IS_RESPONSIVE || window.matchMedia(NAMESPACE.mediaQueries.bp('xxl')).matches) {\n\t\t\t\t\t\t\tvar scrollTop = $window.scrollTop();\n\t\t\t\t\t\t\tif (scrollTop < 0) {\n\t\t\t\t\t\t\t\tscrollTop = 0;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (scrollTop > ($doc.height() - getFooterHeight())) {\n\t\t\t\t\t\t\t\t// If the user has scrolled past the footer, switch to absolute positioning\n\t\t\t\t\t\t\t\tif (!absolute) {\n\t\t\t\t\t\t\t\t\tabsolute = true;\n\t\t\t\t\t\t\t\t\t$pi.css({ position: 'absolute', top: ($main.height() - $pi.height()) });\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (absolute) {\n\t\t\t\t\t\t\t\t\tabsolute = false;\n\t\t\t\t\t\t\t\t\t$pi.css({ position: '', top: '' });\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (getHeaderHeight() <= scrollTop) {\n\t\t\t\t\t\t\t\t\t// If the header is off screen, apply fixed positioning to the progress indicator\n\t\t\t\t\t\t\t\t\t$html.addClass('msf__progress-indicator--fixed');\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t$html.removeClass('msf__progress-indicator--fixed');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}());\n\n\t\t\t\tvar enable = function() {\n\t\t\t\t\t$(window).on('scroll.multiStepForm', $.throttle(200, updateProgressIndicator));\n\t\t\t\t};\n\n\t\t\t\tvar disable = function() {\n\t\t\t\t\t$(window).off('scroll.multiStepForm');\n\t\t\t\t};\n\n\t\t\t\t$(window).on('enableMultiStepFormProgressIndicator', enable);\n\t\t\t\t$(window).on('disableMultiStepFormProgressIndicator', disable);\n\t\t\t\tenable();\n\n\t\t\t\t//if ($('#header').hasClass('header--simple')) {\n\t\t\t\t//\t$('html').addClass('msf__progress-indicator--fixed-with-header');\n\t\t\t\t//} else {\n\t\t\t\t\t$(window).on('scroll.multiStepFormPosition', $.throttle(50, positionProgressIndicator));\n\t\t\t\t//}\n\t\t\t}\n\t\t};\n\n\t\tvar highlightStep = function(stepNumber) {\n\t\t\t$(window).trigger('disableMultiStepFormProgressIndicator');\n\t\t\tupdatePI(stepNumber - 1, true);\n\t\t};\n\n\t\tvar updateActiveStepName = function(stepNumber, stepTitle) {\n\t\t\t$('.step.is-active h3').html('' + stepNumber + '' + stepTitle);\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init,\n\t\t\thighlightStep: highlightStep,\n\t\t\tupdateActiveStepName: updateActiveStepName\n\t\t};\n\t}());\n\n}(RACQ_JS));\n\n/* =============================================================================\n OFFSCREEN NAV AND HEADER NAV\n ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.nav = (function() {\n\n\t\t// constants\n\t\tvar CONST = {\n\t\t\tCLASS: {\n\t\t\t\tNAV_OPEN: 'js-nav-open',\n\t\t\t\tNAV_TRANSITIONING: 'js-nav-transitioning',\n\t\t\t\tNAV_READY: 'js-nav',\n\t\t\t\tHOVER: 'is-hover', // Used to show the dropdown\n\t\t\t\tHOVERING: 'is-hovering', // Used to apply style to the link\n\t\t\t\tOFFSCREEN_NAV_BG: 'offscreen-nav-bg',\n\t\t\t\tDROPDOWN_NAV_BG: 'dropdown-nav-bg'\n\t\t\t},\n\t\t\tCONTAINER: '#nav',\n\t\t\tNAV_INNER: '#nav .nav-inner',\n\t\t\tHEADER_HEIGHT: 50,\n\t\t\tDURATION: 400,\n\t\t\tDROPDOWN_TIMEOUT_DURATION: 250,\n\t\t\tDROPDOWN_TRANSITION_DURATION: 300,\n\t\t\tHAS_CSSTRANSITIONS: (Modernizr.csstransitions && Modernizr.csstransforms3d),\n\t\t\tIS_DEVICE: NAMESPACE.util.isDevice.any(),\n\t\t\tIS_LT_IE9: ($('.lt-ie9').length > 0),\n\t\t\tIS_LARGE_NAV_SIZE: function() {},\n\t\t\tMQ: {\n\t\t\t\tONSCREEN: NAMESPACE.mediaQueries.bp('l'),\n\t\t\t\tOFFSCREEN: NAMESPACE.mediaQueries.bp(0, 'm')\n\t\t\t}\n\t\t};\n\n\t\tCONST.IS_LARGE_NAV_SIZE = function() {\n\t\t\treturn ($('.lt-ie9').length > 0 || window.matchMedia(CONST.MQ.ONSCREEN));\n\t\t};\n\n\t\t// This function deals with the offscreen nav, not the top nav\n\t\tvar offscreen = (function() {\n\t\t\tvar _init = false,\n\t\t\t\t_isNavOpen = false,\n\t\t\t\t_inner = document.getElementById('inner-wrap'),\n\t\t\t\t$navContainer = $(CONST.CONTAINER),\n\t\t\t\t$navInner = $(CONST.NAV_INNER),\n\t\t\t\t$innerWrap = $('#inner-wrap'),\n\t\t\t\t$navBg;\n\n\t\t\tvar _closeOnDocumentTouch = {},\n\t\t\t\t_closeOnCloseButtonClick;\n\n\t\t\t_closeOnDocumentTouch.vars = {};\n\n\t\t\t_closeOnDocumentTouch.navWidth = function() {\n\t\t\t\treturn 270;\n\t\t\t};\n\n\t\t\t// set the height of the nav\n\t\t\tvar _setContainerHeightForNav = function(e) {\n\t\t\t\tvar scrollY = $(window).scrollTop(),\n\t\t\t\t\tnavInnerTop = $navInner.positionTop(),\n\t\t\t\t\tdocHeight = $(document).height(),\n\t\t\t\t\tnavHeight,\n\t\t\t\t\tnavOrDocHeight;\n\n\t\t\t\tif (scrollY < 0) {\n\t\t\t\t\tscrollY = 0;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(typeof e === 'string' && e === 'open') ||\n\t\t\t\t\t(typeof e === 'object' && e.hasOwnProperty('type') && e.type === 'scroll' && scrollY < navInnerTop)\n\t\t\t\t) {\n\t\t\t\t\t$navInner.css('top', scrollY + 'px');\n\t\t\t\t}\n\n\t\t\t\tnavHeight = ($navInner.height()+ CONST.HEADER_HEIGHT) + $navInner.positionTop();\n\t\t\t\tnavOrDocHeight = (navHeight > docHeight) ? navHeight : docHeight;\n\n\t\t\t\t$innerWrap.css({\n\t\t\t\t\theight: navOrDocHeight - CONST.HEADER_HEIGHT\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tvar _unsetContainerHeightForNav = function() {\n\t\t\t\t$navInner.css('top', '');\n\t\t\t\t$navBg.css('opacity', '').css('transition-duration', '');\n\n\t\t\t\t$innerWrap.css({\n\t\t\t\t\theight: ''\n\t\t\t\t});\n\t\t\t};\n\n\t\t\t_closeOnDocumentTouch.getCurrentXPos = function(origEvent) {\n\t\t\t\treturn (origEvent.touches && origEvent.touches.length > 0) ? origEvent.touches[0].pageX : origEvent.pageX;\n\t\t\t};\n\n\t\t\t_closeOnDocumentTouch.getPxWidthMoved = function(vars) {\n\t\t\t\tvar diff = vars.startXPos - vars.currentXPos;\n\n\t\t\t\treturn diff;\n\t\t\t};\n\n\t\t\t_closeOnDocumentTouch.getPercentageWidthMoved = function(vars) {\n\t\t\t\tvar diff = vars.startXPos - vars.currentXPos;\n\n\t\t\t\treturn (diff / $(window).width()) * 100;\n\t\t\t};\n\n\t\t\t_closeOnDocumentTouch.start = function(event) {\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\tvar origEvent = event.originalEvent;\n\n\t\t\t\torigEvent.stopPropagation();\n\n\t\t\t\tif (_isNavOpen && $(event.target).closest(CONST.CONTAINER).length === 0) {\n\t\t\t\t\t//event.preventDefault();\n\t\t\t\t\t//origEvent.preventDefault();\n\n\t\t\t\t\tif ($.browser.msie && $.browser.version < 10) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t_closeOnDocumentTouch.vars = {\n\t\t\t\t\t\tisMovingTowardsClose: true,\n\t\t\t\t\t\tspeed: 0,\n\t\t\t\t\t\tstartXPos: _closeOnDocumentTouch.getCurrentXPos(origEvent),\n\t\t\t\t\t\tprevXPos: _closeOnDocumentTouch.getCurrentXPos(origEvent)\n\t\t\t\t\t};\n\n\t\t\t\t\t$(document).on('touchmove.nav mousemove.nav', _closeOnDocumentTouch.move);\n\t\t\t\t\t$(document).on('touchend.nav mouseup.nav', _closeOnDocumentTouch.end);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t_closeOnDocumentTouch.move = function(event) {\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tvar origEvent = event.originalEvent,\n\t\t\t\t\tvars = _closeOnDocumentTouch.vars;\n\n\t\t\t\tvars.currentXPos = _closeOnDocumentTouch.getCurrentXPos(origEvent);\n\n\t\t\t\tif (vars.currentXPos !== vars.prevXPos) {\n\t\t\t\t\tvars.isMovingTowardsClose = (vars.currentXPos <= vars.prevXPos);\n\n\t\t\t\t\tvars.prevXPos = vars.currentXPos;\n\n\t\t\t\t\tvar newInnerXPos = _closeOnDocumentTouch.navWidth() - _closeOnDocumentTouch.getPxWidthMoved(vars),\n\t\t\t\t\t\tnewNavXPos = _closeOnDocumentTouch.navWidth() - (_closeOnDocumentTouch.navWidth() - _closeOnDocumentTouch.getPxWidthMoved(vars));\n\n\t\t\t\t\t$innerWrap.css('transition', 'none');\n\t\t\t\t\t$navBg.css('transition', 'none');\n\n\t\t\t\t\tif (newInnerXPos <= 0) {\n\t\t\t\t\t\t$innerWrap.css('transform', 'translate3d(0, 0, 0)');\n\t\t\t\t\t\t$navBg.css('opacity', 0);\n\t\t\t\t\t} else if (newInnerXPos >= _closeOnDocumentTouch.navWidth()) {\n\t\t\t\t\t\t$innerWrap.css('transform', 'translate3d(' + _closeOnDocumentTouch.navWidth() + 'px, 0, 0)');\n\t\t\t\t\t\t$navBg.css('opacity', 0.8);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar percentageNavBg = 0.8 - (0.8 * (newNavXPos / _closeOnDocumentTouch.navWidth()));\n\n\t\t\t\t\t\t$innerWrap.css('transform', 'translate3d(' + newInnerXPos + 'px, 0, 0)');\n\t\t\t\t\t\t$navBg.css('opacity', percentageNavBg);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t_closeOnDocumentTouch.end = function(event) {\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tvar vars = _closeOnDocumentTouch.vars;\n\n\t\t\t\t$(document).off('touchmove.nav mousemove.nav', _closeOnDocumentTouch.move);\n\t\t\t\t$(document).off('touchend.nav mouseup.nav', _closeOnDocumentTouch.end);\n\n\t\t\t\tvar newDuration = CONST.DURATION - Math.round(CONST.DURATION * ((vars.startXPos - vars.currentXPos) / ($(window).width() * _closeOnDocumentTouch.navWidth() / 100)));\n\n\t\t\t\t$innerWrap.css('transition', '');\n\t\t\t\t$navBg.css('transition', '');\n\n\t\t\t\t$innerWrap.css('transition-duration', newDuration + 'ms');\n\t\t\t\t$navContainer.css('transition-duration', newDuration + 'ms');\n\t\t\t\t$navBg.css('transition-duration', newDuration + 'ms');\n\n\t\t\t\tif (vars.isMovingTowardsClose) {\n\t\t\t\t\tcloseOffscreenNav();\n\t\t\t\t} else {\n\t\t\t\t\topenOffscreenNav();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t_closeOnDocumentTouch.click = function(event) {\n\t\t\t\tif (_isNavOpen && $(event.target).closest(CONST.CONTAINER).length === 0) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tcloseOffscreenNav();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t_closeOnCloseButtonClick = function(event) {\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.preventDefault();\n\t\t\t\tcloseOffscreenNav();\n\t\t\t};\n\n\t\t\tvar _setCloseOpenNavigation = function() {\n\t\t\t\t// bind event to the document to close on click of anywhere but the nav\n\t\t\t\tif (NAMESPACE.util.isDevice.touch()) {\n\t\t\t\t\t$(document).on('touchstart.nav mousedown.nav', _closeOnDocumentTouch.start);\n\t\t\t\t\t$navContainer.find('.close').on('touchstart.nav mousedown.nav', _closeOnCloseButtonClick);\n\t\t\t\t} else {\n\t\t\t\t\t$(document).on('click.nav', _closeOnDocumentTouch.click);\n\t\t\t\t\t$navContainer.find('.close').on('click.nav', _closeOnCloseButtonClick);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar _unsetCloseOpenNavigation = function() {\n\t\t\t\t// unbind document click function\n\t\t\t\t$(document).off('touchstart.nav mousedown.nav', _closeOnDocumentTouch.start);\n\t\t\t\t$(document).off('click.nav', _closeOnDocumentTouch.click);\n\t\t\t\t$(window).off('orientationchange.nav');\n\t\t\t\t$navContainer.find('.close').off('.nav');\n\t\t\t};\n\n\t\t\tvar _isOpen = function() {\n\t\t\t\treturn _isNavOpen;\n\t\t\t};\n\n\t\t\t// initialiser\n\t\t\tvar init = function() {\n\t\t\t\tif (_init) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t_init = true;\n\n\t\t\t\t// bind click events\n\t\t\t\t$(document).on('click.nav', '.nav-toggle', toggleOffscreenNav);\n\t\t\t\t$navContainer.on('closed.expandcollapse opened.expandcollapse', _setContainerHeightForNav);\n\n\t\t\t\t$navContainer.find('.nav-inner > ul > li > .expandcollapse').on('close.expandcollapse open.expandcollapse', function(event) {\n\t\t\t\t\tif(event.type === 'open') {\n\t\t\t\t\t\t$(this).closest('.has-children').addClass('is-open-top');\n\t\t\t\t\t} else if(event.type === 'close') {\n\t\t\t\t\t\t$(this).closest('.has-children').removeClass('is-open-top');\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t$navContainer.find('.nav-inner .expandcollapse').on('close.expandcollapse open.expandcollapse', function(event) {\n\t\t\t\t\tif(event.type === 'open') {\n\t\t\t\t\t\t$(this).closest('.has-children').addClass('is-open');\n\t\t\t\t\t} else if(event.type === 'close') {\n\t\t\t\t\t\t$(this).closest('.has-children').removeClass('is-open');\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// add enquire listeners to ensure that the menu is reset correctly when not in mobile\n\t\t\t\tenquire.register(CONST.MQ.ONSCREEN, {\n\t\t\t\t\tmatch: function() {\n\t\t\t\t\t\tif (_isNavOpen) {\n\t\t\t\t\t\t\t_unsetContainerHeightForNav();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}).register(CONST.MQ.OFFSCREEN, {\n\t\t\t\t\tmatch: function() {\n\t\t\t\t\t\tif (_isNavOpen) {\n\t\t\t\t\t\t\t_setContainerHeightForNav();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// add the semi transparent gray overlay\n\t\t\t\t$innerWrap.prepend('
 
');\n\t\t\t\t$navBg = $innerWrap.find('.' + CONST.CLASS.OFFSCREEN_NAV_BG + ' .bg');\n\n\t\t\t\t// add ready class to setup the appropriate CSS transitions\n\t\t\t\t$('html').addClass(CONST.CLASS.NAV_READY);\n\t\t\t};\n\n\t\t\t// open nav\n\t\t\tvar openOffscreenNav = function() {\n\t\t\t\tif (!_isNavOpen) {\n\n\t\t\t\t\tif (NAMESPACE.contactUsDropdown.isOpen()) {\n\t\t\t\t\t\tNAMESPACE.contactUsDropdown.close();\n\t\t\t\t\t}\n\n\t\t\t\t\tvar openNav = function() {\n\t\t\t\t\t\tNAMESPACE.util.fixWidthToViewport(['#top','#divNotificationBannerWrapper']);\n\t\t\t\t\t\t_setContainerHeightForNav('open');\n\n\t\t\t\t\t\t// Even focusWithoutScrolling() was causing a jump\n\t\t\t\t\t\t//$navContainer.focusWithoutScrolling();\n\n\t\t\t\t\t\t// linked to the CSS animation\n\t\t\t\t\t\t$('html').addClass(CONST.CLASS.NAV_TRANSITIONING);\n\t\t\t\t\t\t_isNavOpen = true;\n\n\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t$('html').addClass(CONST.CLASS.NAV_OPEN);\n\t\t\t\t\t\t}, 10);\n\n\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t$('html').removeClass(CONST.CLASS.NAV_TRANSITIONING);\n\t\t\t\t\t\t}, CONST.DURATION);\n\t\t\t\t\t\t$(window).off('scroll.nav').on('scroll.nav', $.debounce(50, _setContainerHeightForNav));\n\t\t\t\t\t\t$(window).off('orientationchange.nav').on('orientationchange.nav', closeOffscreenNav);\n\t\t\t\t\t};\n\n\t\t\t\t\topenNav();\n\t\t\t\t\t_setCloseOpenNavigation();\n\t\t\t\t}\n\n\t\t\t\t$innerWrap.css('transform', '').css('transition-duration', '');\n\t\t\t\t$navBg.css('opacity', '').css('transition-duration', '');\n\t\t\t};\n\n\t\t\t// close nav\n\t\t\tvar closeOffscreenNav = function() {\n\t\t\t\tif (_isNavOpen) {\n\t\t\t\t\tvar closeTimeout,\n\t\t\t\t\t\tresetCloseTimeout = function() {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tclearTimeout(closeTimeout);\n\t\t\t\t\t\t\t\tcloseTimeout = null;\n\t\t\t\t\t\t\t} catch(e) {}\n\t\t\t\t\t\t};\n\n\t\t\t\t\tvar closeNav = function() {\n\t\t\t\t\t\t$innerWrap.css('transform', '');\n\t\t\t\t\t\t$navBg.css('opacity', '');\n\t\t\t\t\t\t$(window).off('scroll.nav');\n\n\t\t\t\t\t\tif (CONST.DURATION > 0 && CONST.HAS_CSSTRANSITIONS) {\n\t\t\t\t\t\t\t$(document).on(NAMESPACE.util.prefixed.transitionend, closeNavEnd);\n\n\t\t\t\t\t\t\tresetCloseTimeout();\n\t\t\t\t\t\t\tcloseTimeout = setTimeout(closeNavEnd, CONST.DURATION + 100);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcloseNavEnd(null);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linked to the CSS animation\n\t\t\t\t\t\t$('html').addClass(CONST.CLASS.NAV_TRANSITIONING).removeClass(CONST.CLASS.NAV_OPEN);\n\n\t\t\t\t\t\t_unsetCloseOpenNavigation();\n\t\t\t\t\t};\n\n\t\t\t\t\t// after the animation ends, unbind the transition end event, and set the closed variable\n\t\t\t\t\tvar closeNavEnd = function(event) {\n\t\t\t\t\t\tresetCloseTimeout();\n\n\t\t\t\t\t\tif (event && event.target === _inner) {\n\t\t\t\t\t\t\t$(document).off(NAMESPACE.util.prefixed.transitionend, closeNavEnd);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_isNavOpen = false;\n\n\t\t\t\t\t\t//inside set timeout to avoid some display issues that can occur\n\t\t\t\t\t\tsetTimeout(_unsetContainerHeightForNav, 10);\n\n\t\t\t\t\t\t$innerWrap.css('transition-duration', '');\n\t\t\t\t\t\t$navBg.css('transition-duration', '');\n\n\t\t\t\t\t\t$('html').removeClass(CONST.CLASS.NAV_TRANSITIONING);\n\t\t\t\t\t};\n\n\t\t\t\t\tcloseNav();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// toggle open/close\n\t\t\tvar toggleOffscreenNav = function(event) {\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif (_isNavOpen && $('html').hasClass(CONST.CLASS.NAV_OPEN)) {\n\t\t\t\t\tcloseOffscreenNav();\n\t\t\t\t} else {\n\t\t\t\t\topenOffscreenNav();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\treturn {\n\t\t\t\tinit: init,\n\t\t\t\tisOpen: _isOpen,\n\t\t\t\tclose: closeOffscreenNav\n\t\t\t};\n\n\t\t}());\n\n\t\t// This function deals with the top nav, not the offscreen nav\n\t\tvar dropdown = (function() {\n\t\t\tvar _init = false,\n\t\t\t\t$nav = $('.navbar .nav'),\n\t\t\t\t$items = $nav.find('> li'),\n\t\t\t\t$navBg;\n\n\t\t\tvar openDropdown = function(id, instantly) {\n\t\t\t\tvar $link = $('#' + id),\n\t\t\t\t\t$dropdown = $link.find('.dropdown');\n\n\t\t\t\tif (CONST.IS_LARGE_NAV_SIZE()) {\n\t\t\t\t\tif (!$link.hasClass(CONST.CLASS.HOVER)) {\n\n\t\t\t\t\t\t// Don't do the nav-open effect if they have the \"no-nav-open-filter\" class\n\t\t\t\t\t\tif(!$dropdown.hasClass(\"no-nav-open-filter\")){\n\t\t\t\t\t\t\t$('html').addClass('dropdown-nav-transitioning');\n\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t$('html').addClass('dropdown-nav-open');\n\t\t\t\t\t\t\t}, 1);\n\t\t\t\t\t\t}\t\n\n\t\t\t\t\t\tif (CONST.IS_LT_IE9 || instantly) {\n\t\t\t\t\t\t\t$dropdown.attr('style', '');\n\t\t\t\t\t\t\t$link.addClass(CONST.CLASS.HOVER);\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t$dropdown.css({\n\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t\t\t'margin-left': 0\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t$dropdown.transition({\n\t\t\t\t\t\t\t\topacity: 1\n\t\t\t\t\t\t\t}, CONST.DROPDOWN_TRANSITION_DURATION, function() {\n\t\t\t\t\t\t\t\t$link.addClass(CONST.CLASS.HOVER);\n\t\t\t\t\t\t\t\t$dropdown.attr('style', '');\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar closeDropdown = function(id, instantly) {\n\t\t\t\tvar $link = $('#' + id),\n\t\t\t\t\t$dropdown = $link.find('.dropdown');\n\n\t\t\t\tif (CONST.IS_LT_IE9 || instantly) {\n\t\t\t\t\t$dropdown.attr('style', '');\n\t\t\t\t\t$link.removeClass(CONST.CLASS.HOVER);\n\t\t\t\t\t$link.removeClass(CONST.CLASS.HOVERING);\n\t\t\t\t} else {\n\n\t\t\t\t\t$dropdown.css({\n\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t'margin-left': 0\n\t\t\t\t\t});\n\n\t\t\t\t\t$link.removeClass(CONST.CLASS.HOVER);\n\t\t\t\t\t$link.removeClass(CONST.CLASS.HOVERING);\n\n\t\t\t\t\t$dropdown.transition({\n\t\t\t\t\t\topacity: 0\n\t\t\t\t\t}, CONST.DROPDOWN_TRANSITION_DURATION, function() {\n\t\t\t\t\t\t$dropdown.attr('style', '');\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (!instantly) {\n\t\t\t\t\t$('html').removeClass('dropdown-nav-open');\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t$('html').removeClass('dropdown-nav-transitioning');\n\t\t\t\t\t}, CONST.DROPDOWN_TRANSITION_DURATION);\n\t\t\t\t}\n\n\t\t\t\t$('body').off('touchstart', closeNavOnDocumentClick);\n\t\t\t};\n\n\t\t\tvar closeCurrentlyOpen = function(callback, instantly) {\n\t\t\t\t$nav.find('li.' + CONST.CLASS.HOVER).each(function() {\n\t\t\t\t\tcloseDropdown($(this).attr('id'), instantly);\n\t\t\t\t});\n\n\t\t\t\tif (typeof(callback) === 'function') {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar closeNavOnDocumentClick = function(e) {\n\t\t\t\tif ($nav.find('li.' + CONST.CLASS.HOVER).find(e.target).length === 0) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tcloseCurrentlyOpen(null, false);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar init = function() {\n\t\t\t\tif (_init) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar timeout,\n\t\t\t\t\tresetTimeout = function() {\n\t\t\t\t\t\tif (timeout) {\n\t\t\t\t\t\t\tclearTimeout(timeout);\n\t\t\t\t\t\t\ttimeout = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t$items.each(function(i, el) {\n\t\t\t\t\tif ($(el).hasClass('no-dropdown')) return true;\n\n\t\t\t\t\tvar $item = $(el),\n\t\t\t\t\t\tid = 'main-nav-item-' + i;\n\n\t\t\t\t\t$item.attr('id', id);\n\n\t\t\t\t\t// If its a touch screen, attach touch event listeners to nav\n\t\t\t\t\tif (Modernizr.touch) {\n\t\t\t\t\t\t$item.find('> a').on('touchstart.navdropdown', function(e) {\n\t\t\t\t\t\t\tif ($item.hasClass(CONST.CLASS.HOVER)) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\t\t\tvar fromAnotherNavItem = ($nav.find('li.' + CONST.CLASS.HOVER).length > 0);\n\t\t\t\t\t\t\t\t$item.addClass(CONST.CLASS.HOVERING);\n\n\t\t\t\t\t\t\t\tcloseCurrentlyOpen(function() {\n\t\t\t\t\t\t\t\t\topenDropdown(id, fromAnotherNavItem);\n\t\t\t\t\t\t\t\t\t$('body').on('touchstart', closeNavOnDocumentClick);\n\t\t\t\t\t\t\t\t}, fromAnotherNavItem);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// If its not a mobile device or it doesn't support touch, attach mouse event listeners\n\t\t\t\t\tif (!RACQ_JS.util.isDevice.any() || !Modernizr.touch) {\n\n\t\t\t\t\t\t// Show hover state on menu item instantly on hover\n\t\t\t\t\t\t$item.on('mouseenter.navdropdown', function() {\n\t\t\t\t\t\t\t$item.addClass(CONST.CLASS.HOVERING);\n\t\t\t\t\t\t});\n\t\t\t\t\t\t$item.on('mouseout.navdropdown', function(e) {\n\t\t\t\t\t\t\t$item.removeClass(CONST.CLASS.HOVERING);\n\n\t\t\t\t\t\t\tif (!$item.hasClass(CONST.CLASS.HOVER)) {\n\t\t\t\t\t\t\t\tvar toAnotherNavItem = ($nav.find(e.relatedTarget).length > 0);\n\t\t\t\t\t\t\t\tif (!toAnotherNavItem) {\n\t\t\t\t\t\t\t\t\tcloseCurrentlyOpen(null, false);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// Only show the dropdown when they really mean to hover on the menu item\n\t\t\t\t\t\t$item.hoverIntent({\n\t\t\t\t\t\t\ttimeout: CONST.DROPDOWN_TIMEOUT_DURATION,\n\t\t\t\t\t\t\tover: function(e) {\n\t\t\t\t\t\t\t\tvar fromAnotherNavItem = ($nav.find(e.relatedTarget).length > 0);\n\t\t\t\t\t\t\t\tif (fromAnotherNavItem) {\n\t\t\t\t\t\t\t\t\tcloseCurrentlyOpen(function() {\n\t\t\t\t\t\t\t\t\t\topenDropdown(id, true);\n\t\t\t\t\t\t\t\t\t}, true);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\topenDropdown(id, false);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tout: function(e) {\n\t\t\t\t\t\t\t\tvar toAnotherNavItem = ($nav.find(e.relatedTarget).length > 0);\n\t\t\t\t\t\t\t\tif (!toAnotherNavItem) {\n\t\t\t\t\t\t\t\t\tcloseCurrentlyOpen(null, false);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// Show the dropdown on focus of links inside nav and dropdown\n\t\t\t\t\t\t$item.find('a').on('focus.navdropdown', function() {\n\t\t\t\t\t\t\tresetTimeout();\n\n\t\t\t\t\t\t\tcloseCurrentlyOpen(function() {\n\t\t\t\t\t\t\t\topenDropdown(id, true);\n\t\t\t\t\t\t\t}, true);\n\t\t\t\t\t\t}).on('blur.navdropdown', function() {\n\t\t\t\t\t\t\tresetTimeout();\n\n\t\t\t\t\t\t\ttimeout = setTimeout(function() {\n\t\t\t\t\t\t\t\tcloseDropdown(id, false);\n\t\t\t\t\t\t\t}, CONST.DROPDOWN_TIMEOUT_DURATION);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// Clear the blur timeout on click to prevent the dropdown from closing if a link inside the dropdown has focus and then loses focus because the user clicks inside the dropdown\n\t\t\t\t\t\t$item.on('click.navdropdown', function() {\n\t\t\t\t\t\t\tresetTimeout();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif ($('.lt-ie9').length > 0) {\n\t\t\t\t\t\t\t$item.find('> a').append('
');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t$('#inner-wrap').prepend('
 
');\n\t\t\t\t$navBg = $('#inner-wrap').find('.' + CONST.CLASS.DROPDOWN_NAV_BG + ' .bg');\n\n\t\t\t\t_init = true;\n\t\t\t};\n\n\t\t\treturn {\n\t\t\t\tinit: init\n\t\t\t};\n\n\t\t}());\n\n\t\tvar init = function() {\n\t\t\tif ($('#nav').length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!NAMESPACE.IS_RESPONSIVE) {\n\t\t\t\tdropdown.init();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tenquire.register(CONST.MQ.ONSCREEN, {\n\t\t\t\tmatch: dropdown.init\n\t\t\t}).register(CONST.MQ.OFFSCREEN, {\n\t\t\t\tmatch: offscreen.init\n\t\t\t});\n\n\t\t\t// Pin header to the top\n\t\t\tvar top = document.getElementById('top');\n\t\t\tvar headroom = new Headroom(top, {\n\t\t\t\toffset: 50,\n\t\t\t\ttolerance: 10\n\t\t\t});\n\t\t\theadroom.init();\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init,\n\t\t\tdropdown: dropdown,\n\t\t\toffscreen: offscreen\n\t\t};\n\n\t}());\n\n}(RACQ_JS));\n\n$.fn.positionTop = function() {\n\tvar position = $(this).position();\n\tif (position && position.top) {\n\t\treturn position.top;\n\t}\n\treturn 0;\n};\n\n$.fn.focusWithoutScrolling = function() {\n\tvar x = $(window).scrollLeft(),\n\t\ty = $(window).scrollTop();\n\tthis.focus();\n\tsetTimeout(function() {\n\t\twindow.scrollTo(x, y);\n\t}, 1);\n\treturn this;\n};\n\n/* ==========================================================================\n * PREDICTIVE TEXT\n * This is a separate module from autocomplete because autocomplete is for Funnelback\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.predictive = function() {\n\t\t$('.fn_predictive').each(function() {\n\t\t\tvar $mod = $(this),\n\t\t\t\t$input = $mod.find('input[type=\"text\"]'),\n\t\t\t\tsrc = $mod.attr('data-predictive-src') || false,\n\t\t\t\tlabel = $mod.attr('data-predictive-label') || 'Name',\n\t\t\t\tvalue = $mod.attr('data-predictive-value') || 'Value',\n\t\t\t\t$acWidget,\n\t\t\t\tsetAutocompleteSizePos,\n\t\t\t\tonWindowResize,\n\t\t\t\toldValue = $input.val();\n\n\t\t\tif (!src) {\n\t\t\t\tconsole.warn('A \"data-predictive-src\" is required on the \"fn_predictive\" element.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// exit if the autocomplete JS failed to load\n\t\t\tif (typeof $.fn.autocomplete !== 'function') {\n\t\t\t\tconsole.warn('Could not find $.fn.autocomplete JS library');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetAutocompleteSizePos = function() {\n\t\t\t\tvar width = $input.outerWidth();\n\t\t\t\t$acWidget.css('width', width);\n\t\t\t};\n\n\t\t\t$input.autocomplete({\n\t\t\t\tsource: src,\n\t\t\t\tminLength: 2,\n\t\t\t\tselect: function(event, ui) {\n\t\t\t\t\tif (ui.item && ui.item.type && ui.item.type === 'manual') {\n\t\t\t\t\t\tui.value = $input.val();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tui.value = ui.item[value];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$input.data('ui-autocomplete')._renderItem = function (ul, item) {\n\t\t\t\titem.label = item[label];\n\t\t\t\titem.value = item[value];\n\t\t\t\treturn $('
  • ')\n\t\t\t\t\t.data('ui-autocomplete-item', item)\n\t\t\t\t\t.append('' + item[label] + '')\n\t\t\t\t\t.appendTo(ul);\n\t\t\t}\n\n\t\t\t$acWidget = $input.autocomplete('widget');\n\t\t\t$acWidget.addClass('ui-autocomplete-predictive');\n\n\t\t\tonWindowResize = function() {\n\t\t\t\t$acWidget.autocomplete('close');\n\t\t\t\t$(window).off('resize.predictive');\n\t\t\t};\n\n\t\t\t$input.on('autocompleteopen', function() {\n\t\t\t\toldValue = $input.val();\n\t\t\t\t$(window).on('resize.predictive', onWindowResize);\n\t\t\t\tsetAutocompleteSizePos();\n\t\t\t});\n\n\t\t\t$input.on('autocompleteclose', function() {\n\t\t\t\t$(window).off('resize.predictive');\n\t\t\t});\n\n\t\t\t$input.on('autocompleteselect', function(e, ui) {\n\t\t\t\tif(ui.item.value !== oldValue) {\n\t\t\t\t\t$input.data('changed-by-autocomplete', true);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t};\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * MAGICAL AMAZING RESPONSIVE TABLES\n *\n * This module applies to tables with a classname of \"fn_responsive-table\".\n * By default, it will apply a horizontal scroll to tables.\n * It also has an option to display an interface for toggling table columns.\n *\n * To enable column toggling:\n * - Add a classname of \"responsive-table-column-toggling\" to the table\n * - Add a classname of \"column-persist\" to any elements for columns that\n * should never ever be hidden (such as the title column)\n * - Add a classname of \"column-important\" to any elements for columns that\n * will be displayed by default on all breakpoints (including extra small and below)\n * - Add a classname of \"column-optional\" to any elements for columns that\n * will be displayed by default on small-and-above breakpoints\n * - elements without one of the above classnames will only be displayed\n * by default on the large-and-above breakpoint\n *\n * Table column toggling supports tables with colspan attributes in the head\n * elements, but not in the body elements.\n *\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.responsiveTable = (function() {\n\n\t\tvar init = function() {\n\t\t\t$('.fn_responsive-table').each(function(tableIndex, el) {\n\t\t\t\tvar $table = $(el),\n\t\t\t\t\t$tableWrapper,\n\t\t\t\t\t$scrollable,\n\t\t\t\t\t$toggleInputs,\n\t\t\t\t\tcheckIfHasScroll,\n\t\t\t\t\tcreateColumnToggles,\n\t\t\t\t\thandleResize;\n\n\t\t\t\t$table.removeClass('fn_responsive-table');\n\t\t\t\t$tableWrapper = $('
    ');\n\t\t\t\t$scrollable = $('
    ').append($tableWrapper).insertBefore($table);\n\t\t\t\t$table.appendTo($tableWrapper);\n\t\t\t\t$( \"thead th\" ).addClass( \"column-force-show\" );\n\n\t\t\t\tcheckIfHasScroll = function() {\n\t\t\t\t\tif ($table.outerWidth() > $tableWrapper.outerWidth()) {\n\t\t\t\t\t\t$scrollable.addClass('has-scroll');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$scrollable.removeClass('has-scroll');\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tcreateColumnToggles = function() {\n\t\t\t\t\tvar $menuList = $('
      '),\n\t\t\t\t\t\t$menuContainer = $('
      '),\n\t\t\t\t\t\t$menuBtn = $('
      Show Roadside options
      '),\n\t\t\t\t\t\t$menuClr = $(''),\n\t\t\t\t\t\t$menuWrapper = $('
      ')\n\t\t\t\t\t\t\t.append($menuBtn)\n\t\t\t\t\t\t\t.append($menuContainer.append($menuList,$menuClr)),\n\t\t\t\t\t\tcolumnIndex = 0,\n\t\t\t\t\t\tcloseMenu,\n\t\t\t\t\t\tgetColumnClasses;\n\n\t\t\t\t\t// Only return classes starting with 'column-'\n\t\t\t\t\tgetColumnClasses = function(classes) {\n\t\t\t\t\t\tvar classesArray;\n\n\t\t\t\t\t\tif (!classes) {\n\t\t\t\t\t\t\treturn '';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tclassesArray = classes.split(' ');\n\t\t\t\t\t\tclassesArray = $.grep(classesArray, function(className) {\n\t\t\t\t\t\t\treturn (className.indexOf('column-') === 0);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn classesArray.join(' ');\n\t\t\t\t\t};\n\n\t\t\t\t\t$table.find('thead th').each(function(thIndex) {\n\t\t\t\t\t\tvar $th = $(this),\n\t\t\t\t\t\t\tid = $th.attr('id'),\n\t\t\t\t\t\t\tcolspan = parseInt($th.attr('colspan'), 10) || 1,\n\t\t\t\t\t\t\tclasses = getColumnClasses($th.attr('class'));\n\n\t\t\t\t\t\t// Assign a unique ID to each that doesn't already have an ID\n\t\t\t\t\t\tif (!id) {\n\t\t\t\t\t\t\tid = 'table-' + tableIndex + '-col-' + thIndex;\n\t\t\t\t\t\t\t$th.attr('id', id);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Loop through each row to assign a 'headers' attribute and any classes\n\t\t\t\t\t\t// (column-persist, column-important, column-optional) to the matching cell\n\t\t\t\t\t\t$table.find('tbody tr, tfoot tr').each(function() {\n\t\t\t\t\t\t\t// The slice() function is used to select multiple cells if the had a colspan\n\t\t\t\t\t\t\tvar $cells = $(this).find('th, td').slice(columnIndex, columnIndex + colspan);\n\n\t\t\t\t\t\t\t$cells.attr('headers', id);\n\t\t\t\t\t\t\tif (classes) {\n\t\t\t\t\t\t\t\t$cells.addClass(classes);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// Create the menu hide/show toggles\n\t\t\t\t\t\tif (!$th.hasClass('column-persist')) {\n\t\t\t\t\t\t\tvar toggleId = 'table-' + tableIndex + '-toggle-col-' + thIndex,\n\t\t\t\t\t\t\t\t$input = $('');\n\n\t\t\t\t\t\t\t$menuList.append($('
    • ')\n\t\t\t\t\t\t\t\t.append($input)\n\t\t\t\t\t\t\t\t.append(''));\n\n\t\t\t\t\t\t\t$menuClr.on('click', function(e) {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tvar val = $input.val(),\n\t\t\t\t\t\t\t\t\t$cols = $('#' + val + ', [headers=' + val +']');\n\n\t\t\t\t\t\t\t\tif ($input.is(':checked')) {\n\t\t\t\t\t\t\t\t\t$cols.removeClass('column-force-hide').addClass('column-force-show');\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t$cols.removeClass('column-force-show').addClass('column-force-hide');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcheckIfHasScroll();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t$input.bind('updateInputs.responsiveTable', function() {\n\t\t\t\t\t\t\t\tif ($th.css('display') === 'table-cell') {\n\t\t\t\t\t\t\t\t\t$input.attr('checked', true);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t$input.attr('checked', false);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcolumnIndex += colspan;\n\t\t\t\t\t});\n\n\t\t\t\t\tcloseMenu = function() {\n\t\t\t\t\t\t$('body').off('click.responsiveTable touchstart.responsiveTable');\n\t\t\t\t\t\t$menuContainer.addClass('hidden');\n\t\t\t\t\t};\n\n\t\t\t\t\t$menuBtn.on('click touchstart', function(e) {\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tif ($(\".responsive-table-menu-btn:contains('Show Roadside options')\")) {\n\t\t\t\t\t\t\t$(\".responsive-table-menu-btn a\").html(\"Hide Roadside Options\");\n\t\t\t\t\t\t\t$(\".responsive-table-menu-btn\").addClass(\"opened\");\n\t\t\t\t\t\t\t$(\".responsive-table-menu-btn\").removeClass(\"closed\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ($menuContainer.hasClass('hidden')) {\n\t\t\t\t\t\t\t$menuContainer.removeClass('hidden');\n\t\t\t\t\t\t\t$(\".responsive-table-menu-btn a\").html('Hide Roadside options');\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$(\".responsive-table-menu-btn a\").html('Show Roadside options');\n\t\t\t\t\t\t\t$(\".responsive-table-menu-btn\").removeClass(\"opened\");\n\t\t\t\t\t\t\t$(\".responsive-table-menu-btn\").addClass(\"closed\");\n\t\t\t\t\t\t\tcloseMenu();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t$toggleInputs = $menuContainer.find('input');\n\t\t\t\t\t$scrollable.before($menuWrapper);\n\t\t\t\t\t$table.addClass('responsive-table-column-toggling-initialised');\n\t\t\t\t};\n\n\t\t\t\thandleResize = function() {\n\t\t\t\t\tif ($toggleInputs) {\n\t\t\t\t\t\t$toggleInputs.trigger('updateInputs.responsiveTable');\n\t\t\t\t\t}\n\t\t\t\t\tcheckIfHasScroll();\n\t\t\t\t};\n\n\t\t\t\tif ($table.hasClass('responsive-table-column-toggling')) {\n\t\t\t\t\tcreateColumnToggles();\n\t\t\t\t}\n\n\t\t\t\t$(window).on('resize.responsiveTable orientationchange.responsiveTable', $.throttle(100, handleResize));\n\t\t\t\thandleResize();\n\t\t\t});\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init\n\t\t};\n\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * ROADSIDE UPGRADE\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.roadsideUpgrade = (function() {\n\n\t\tvar scrollOffset = 180;\n\n\t\tvar resize = function() {\n\n\t\t\tvar scrollContainer = $('.fn_roadside-upgrade .roadside-upgrade');\n\n\t\t\tif (window.matchMedia(NAMESPACE.mediaQueries.bp('m')).matches) {\n\t\t\t\tscrollOffset = 180;\n\t\t\t} else {\n\t\t\t\tscrollOffset = scrollContainer.width();\n\t\t\t}\n\n\t\t};\n\n\t\tvar isLargeScreen = function() {\n\t\t\tif (!NAMESPACE.IS_RESPONSIVE) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn (window.matchMedia(NAMESPACE.mediaQueries.bp('m')).matches);\n\t\t\t}\n\t\t};\n\n\t\tvar isMobileScreen = function() {\n\t\t\tif (!NAMESPACE.IS_RESPONSIVE) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn (window.matchMedia(NAMESPACE.mediaQueries.bp('xs')).matches);\n\t\t\t}\n\t\t};\n\n\t\tvar init = function() {\n\n\t\t\tvar submitBtn = $('.fn_roadside-upgrade').parent().parent().find('.btn-holder .btn-right input');\n\t\t\tvar scrollContainer = $('.fn_roadside-upgrade .roadside-upgrade');\n\t\t\tvar navBackward = $('.navigate.backward');\n\t\t\tvar navForward = $('.navigate.forward');\n\t\t\tvar upgradePanel = $('.fn_roadside-upgrade .roadside-upgrade .roadside-upgrade-wrapper ul.options li label');\n\t\t\tvar upgradeOptions = $('.fn_roadside-upgrade .roadside-upgrade .roadside-upgrade-wrapper ul.options');\n\n\t\t\tvar numPackageItems = $('.fn_roadside-upgrade .roadside-upgrade .roadside-upgrade-wrapper ul.options').children().length;\n\t\t\tvar wrapperContainer = $('.fn_roadside-upgrade .roadside-upgrade .roadside-upgrade-wrapper');\n\n\t\t\tresize();\n\n\t\t\t// control the length of the wrapping container depending on the number of options\n\t\t\tif (isLargeScreen()) {\n\t\t\t\twrapperContainer.width(numPackageItems * 174);\n\t\t\t\tupgradeOptions.trigger('update.equalHeights');\n\t\t\t} else {\n\n\t\t\t\tif (isMobileScreen()) {\n\t\t\t\t\twrapperContainer.width(numPackageItems * (scrollContainer.width() / 2));\n\t\t\t\t\tupgradeOptions.trigger('update.equalHeights');\n\t\t\t\t} else {\n\t\t\t\t\twrapperContainer.width(numPackageItems * scrollContainer.width());\n\t\t\t\t\tupgradeOptions.trigger('update.equalHeights');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// hide navigation arrows if no need to scroll\n\t\t\tif (wrapperContainer.width() <= scrollContainer.width()) {\n\t\t\t\tnavBackward.addClass('is-hidden');\n\t\t\t\tnavForward.addClass('is-hidden');\n\t\t\t}\n\t\t\t\n\t\t\tnavForward.on('click', function(e) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tvar leftPos = scrollContainer.scrollLeft();\n\t\t\t\tscrollContainer.animate({\n\t\t\t\t\tscrollLeft: leftPos + scrollOffset\n\t\t\t\t}, 250);\n\n\t\t\t});\n\n\t\t\tnavBackward.on('click', function(e) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tvar leftPos = scrollContainer.scrollLeft();\n\t\t\t\tscrollContainer.animate({\n\t\t\t\t\tscrollLeft: leftPos - scrollOffset\n\t\t\t\t}, 250);\n\n\t\t\t});\n\n\t\t\tupgradePanel.not('.is-current').on('click', function(e) {\n\n\t\t\t\te.preventDefault();\n\n\t\t\t\t// store selected package in localStorage\n\t\t\t\tsessionStorage.setItem('selectedPackage', $(this).prev().attr('id'));\n\n\t\t\t\t$(this).find('.upgrade-cta').text('Selected');\n\n\t\t\t\tupgradePanel.not($(this)).not('.is-current').each(function() {\n\t\t\t\t\tvar panelName = $(this).find('h3').text();\n\t\t\t\t\t$(this).find('.upgrade-cta').text('Select ' + panelName);\n\t\t\t\t});\n\n\t\t\t\tsubmitBtn.removeAttr('disabled');\n\t\t\t\tsubmitBtn.removeClass('is-disabled');\n\n\t\t\t\tvar isSuitableCheckbox = $(this).parent().find('.isSuitable-input');\n\t\t\t\tvar suitableAlert = $(this).parents('.msf__page').find('.isRvSuitableAlert');\n\n\t\t\t\tif (isSuitableCheckbox !== null && isSuitableCheckbox.val() === \"True\") {\n\t\t\t\t\tsuitableAlert.removeClass('hidden');\n\t\t\t\t} else {\n\t\t\t\t\tif (!suitableAlert.hasClass('hidden')) {\n\t\t\t\t\t\tsuitableAlert.addClass('hidden');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t\tscrollContainer.on('scroll', function() {\n\n\t\t\t\tvar scrollLeftPos = $(this).scrollLeft();\n\t\t\t\tvar scrollContainerWrapper = $('.fn_roadside-upgrade .roadside-upgrade-wrapper').width();\n\t\t\t\tvar scrollMax = scrollContainerWrapper - scrollContainer.width();\n\n\t\t\t\tif (scrollLeftPos > 0) {\n\t\t\t\t\tnavBackward.removeClass('is-hidden');\n\t\t\t\t} else {\n\t\t\t\t\tnavBackward.addClass('is-hidden');\n\t\t\t\t}\n\n\t\t\t\tif (scrollLeftPos < scrollMax) {\n\t\t\t\t\tnavForward.removeClass('is-hidden');\n\t\t\t\t} else {\n\t\t\t\t\tnavForward.addClass('is-hidden');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar freeBenefitsContainer = $(\".free-roadside-upgrade__benefits\");\n\n\t\t\t// Free Upgrade Benefits\n\t\t\tfreeBenefitsContainer.find('[data-action=\"show-travel-benefits\"]').on(\"click\", function () {\n\t\t\t\tconsole.log(\"Expand\")\n\n\t\t\t\tfreeBenefitsContainer.find(\".free-roadside-upgrade__travel-benefits-header\").removeClass(\"hidden\");\n\t\t\t\tfreeBenefitsContainer.find(\".free-roadside-upgrade__travel-benefits-container\").removeClass(\"hidden\");\n\t\t\t\tfreeBenefitsContainer.find(\".free-roadside-upgrade__travel-benefits-controls\").addClass(\"expanded\");\n\t\t\t});\n\n\t\t\tfreeBenefitsContainer.find('[data-action=\"hide-travel-benefits\"]').on(\"click\", function () {\n\t\t\t\tconsole.log(\"Collapse\")\n\n\t\t\t\tfreeBenefitsContainer.find(\".free-roadside-upgrade__travel-benefits-header\").addClass(\"hidden\");\n\t\t\t\tfreeBenefitsContainer.find(\".free-roadside-upgrade__travel-benefits-container\").addClass(\"hidden\");\n\t\t\t\tfreeBenefitsContainer.find(\".free-roadside-upgrade__travel-benefits-controls\").removeClass(\"expanded\");\n\t\t\t});\n\t\t};\n\n\t\t$(window).resize(function() {\n\t\t\tresize();\n\t\t});\n\n\t\treturn {\n\t\t\tinit: init\n\t\t};\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * TURNS A SELECT DROPDOWN INTO A LIST OF BUTTONS\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.selectToButtons = (function() {\n\n\t\tvar init = function() {\n\n\t\t\t$('.fn_selectToButtons').each(function(i, el){\n\t\t\t\tvar $mod = $(this),\n\t\t\t\t\tcreate;\n\n\t\t\t\tcreate = function() {\n\t\t\t\t\tvar $select = $mod.find('select'),\n\t\t\t\t\t\t$button,\n\t\t\t\t\t\t$buttonsHolder = $('
      '),\n\t\t\t\t\t\tbuttons = [],\n\t\t\t\t\t\tclickButton;\n\n\t\t\t\t\t$select.on('change', function() {\n\t\t\t\t\t\tvar val = $select.val();\n\t\t\t\t\t\t$.each(buttons, function() {\n\t\t\t\t\t\t\tvar $button = $(this);\n\t\t\t\t\t\t\tif ($button.data('value') === val) {\n\t\t\t\t\t\t\t\t$button.addClass('active');\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$button.removeClass('active');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\tclickButton = function(e) {\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tvar $button = $(this),\n\t\t\t\t\t\t\tval = $button.data('value');\n\n\t\t\t\t\t\t$select.val(val).change();\n\t\t\t\t\t};\n\n\t\t\t\t\t$select.find('option').each(function() {\n\t\t\t\t\t\tvar $option = $(this),\n\t\t\t\t\t\t\t$button = $('' + $option.html() + '');\n\t\t\t\t\t\t\t$button.data('value', $option.val());\n\t\t\t\t\t\t\t$button.on('click', clickButton);\n\n\t\t\t\t\t\tbuttons.push($button);\n\t\t\t\t\t\t$buttonsHolder.append($button);\n\t\t\t\t\t});\n\n\t\t\t\t\t$mod.append($buttonsHolder);\n\t\t\t\t};\n\n\t\t\t\tif ($mod.data('selectToButtons') !== 'initialised') {\n\t\t\t\t\tcreate();\n\t\t\t\t\t$mod.data('selectToButtons', 'initialised');\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init\n\t\t};\n\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * SLIDER\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.slider = function() {\n\t\t$('.fn_slider').each(function() {\n\t\t\tvar $mod = $(this).removeClass('fn_slider'),\n\t\t\t\t$input = $mod.find('input[type=\"text\"]'),\n\t\t\t\tunformattedVal = $input.val(),\n\t\t\t\tval = parseInt($input.val().replace(/[^0-9\\.]+/g, ''), 10) || 0,\n\t\t\t\tmin = parseInt($mod.attr('data-slider-min'), 10) || 0,\n\t\t\t\tmax = parseInt($mod.attr('data-slider-max'), 10) || 100,\n\t\t\t\tstartingSliderVal = val,\n\t\t\t\t$sliderContainer = $('
      '),\n\t\t\t\t$slider = $('
      '),\n\t\t\t\t$link = $.Link({\n\t\t\t\t\ttarget: $input,\n\t\t\t\t\tformat: {\n\t\t\t\t\t\tthousand: ',',\n\t\t\t\t\t\tprefix: '$',\n\t\t\t\t\t\tdecimals: 0,\n\t\t\t\t\t\tallowedMin: min,\n\t\t\t\t\t\tallowedMax: max\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\t$minLabel = $(''),\n\t\t\t\t$maxLabel = $('');\n\n\t\t\t$sliderContainer\n\t\t\t\t.append($slider)\n\t\t\t\t.append($minLabel)\n\t\t\t\t.append($maxLabel);\n\n\t\t\t$input.after($sliderContainer);\n\n\t\t\tif (val < min) {\n\t\t\t\tstartingSliderVal = min;\n\t\t\t} else if (val > max) {\n\t\t\t\tstartingSliderVal = max;\n\t\t\t}\n\n\t\t\t$slider.noUiSlider({\n\t\t\t\tstart: startingSliderVal,\n\t\t\t\tstep: 100,\n\t\t\t\trange: {\n\t\t\t\t\t'min': min,\n\t\t\t\t\t'max': max\n\t\t\t\t},\n\t\t\t\tserialization: {\n\t\t\t\t\tlower: [ $link ]\n\t\t\t\t}\n\t\t\t}).on('set', function() {\n\t\t\t\t$input.trigger('change', { triggeredChange: true });\n\t\t\t});\n\n\t\t\t$input.on('change', function(e, data) {\n\t\t\t\tif (!data || !data.triggeredChange) {\n\t\t\t\t\tif ($input.val() === '') {\n\t\t\t\t\t\tvar sliderVal = parseInt($slider.val(), 10);\n\t\t\t\t\t\tif (isNaN(sliderVal)) {\n\t\t\t\t\t\t\t$input.val($link.format(min));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$input.val($link.format(sliderVal));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar inputVal = parseInt($input.val().replace(/[^0-9\\.]+/g, ''), 10) || 0;\n\t\t\t\t\t\tif (inputVal >= min && inputVal <= max) {\n\t\t\t\t\t\t\t$slider.val(inputVal, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (unformattedVal !== '') {\n\t\t\t\t$input.val(unformattedVal);\n\t\t\t}\n\t\t\t$minLabel.text($link.format(min));\n\t\t\t$maxLabel.text($link.format(max));\n\t\t});\n\t};\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * SOCIAL SHARE\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.socialShare = function() {\n\t\t$('.article-tools .share a').on('click', function(e) {\n\t\t\tvar currentHref = this.href;\n\t\t\tif(currentHref.indexOf('mailto:') === -1){\n\t\t\t\tvar ref = window.open(currentHref, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=no,height=460,width=640');\n\t\t\t\tif (ref) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * SPINNING PRELOADER\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\tNAMESPACE.spinner = function($loader) {\n\n\t\tvar FPS = 20,\n\t\t\tcWidth = 32,\n\t\t\tcHeight = 32,\n\t\t\tcTotalFrames = 34,\n\t\t\tcFrameWidth = 32,\n\t\t\tcImageTimeout = false,\n\t\t\tcIndex = 0,\n\t\t\tcXpos = 0,\n\t\t\tcPreloaderTimeout = false,\n\t\t\tMILLISECONDS_BETWEEN_FRAMES = 1 / FPS * 1000;\n\n\t\tvar startAnimation = function() {\n\t\t\tif (typeof($loader.data('is-animating')) === 'boolean' && $loader.data('is-animating') === true) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcPreloaderTimeout = setTimeout(continueAnimation, MILLISECONDS_BETWEEN_FRAMES);\n\n\t\t\t$loader.data('is-animating', true);\n\t\t};\n\n\t\tvar continueAnimation = function() {\n\t\t\tcXpos += cFrameWidth;\n\t\t\t//increase the index so we know which frame of our animation we are currently on\n\t\t\tcIndex += 1;\n\n\t\t\t//if our cIndex is higher than our total number of frames, we're at the end and should restart\n\t\t\tif (cIndex >= cTotalFrames) {\n\t\t\t\tcXpos = 0;\n\t\t\t\tcIndex = 0;\n\t\t\t}\n\n\t\t\tif ($loader.length > 0) {\n\t\t\t\t$loader.css('background-position', (-cXpos) + 'px 0');\n\t\t\t}\n\n\t\t\tcPreloaderTimeout = setTimeout(continueAnimation, MILLISECONDS_BETWEEN_FRAMES);\n\t\t};\n\n\t\tvar stopAnimation = function() {//stops animation\n\t\t\tclearTimeout(cPreloaderTimeout);\n\t\t\tcPreloaderTimeout = false;\n\n\t\t\t$loader.data('is-animating', false);\n\t\t};\n\n\t\treturn {\n\t\t\tstartAnimation: startAnimation,\n\t\t\tstopAnimation: stopAnimation\n\t\t};\n\t};\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * STICKY WHEN OFFSCREEN\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tvar firstRun = true,\n\t\t$els = $(),\n\t\tisLargeScreen,\n\t\tcheckIfOnscreen;\n\n\tisLargeScreen = function() {\n\t\tif (!NAMESPACE.IS_RESPONSIVE) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn (window.matchMedia(NAMESPACE.mediaQueries.bp('m')).matches);\n\t\t}\n\t};\n\n\tcheckIfOnscreen = function() {\n\t\tif ($els.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar scrollPos = $(window).scrollTop() + 75;\n\n\t\t$els.each(function() {\n\t\t\tvar $el = $(this),\n\t\t\t\telBottom = $el.offset().top + $el.height();\n\n\t\t\tif (elBottom <= scrollPos) {\n\t\t\t\t$el.find('.tab').css('height', $el.find('.tab.is-active').height())\n\t\t\t\t$el.addClass('sticky--offscreen');\n\t\t\t} else {\n\t\t\t\t$el.removeClass('sticky--offscreen');\n\t\t\t\t$el.find('.tab').css('height', '');\n\t\t\t}\n\t\t});\n\t};\n\n\tNAMESPACE.sticky = function() {\n\t\tif ($('html.supports-fixed').length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t$els = $els.add($('.fn_sticky').each(function() {\n\t\t\tvar $el = $(this);\n\t\t\t$el.removeClass('fn_sticky');\n\t\t}));\n\n\t\tif (firstRun) {\n\t\t\t$(window).on('scroll.sticky', $.throttle(200, checkIfOnscreen));\n\t\t\tfirstRun = false;\n\t\t}\n\n\t\tcheckIfOnscreen();\n\t};\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * Table Pagination\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.tablePagination = function() {\n\n $('table.fair-fuel-results').each(function() {\n var currentPage = 0;\n var numPerPage = 10;\n var $table = $(this);\n $table.bind('repaginate', function() {\n\t\t\t$table.find('tbody.fn_fuelResults tr').hide().slice(currentPage * numPerPage, (currentPage + 1) * numPerPage).css('display','table-row').animate({opacity:1}, 300);\n });\n $table.trigger('repaginate');\n var numRows = $table.find('tbody.fn_fuelResults tr').length;\n var numPages = Math.ceil(numRows / numPerPage);\n\n\t\t\t\t// show pagination if more than one page\n\t\t\t\tif(numPages != 1) {\n\t\t\t\t\tvar $pager = $('
        ').appendTo('.pagination');\n\t var $previous = $('
      • Previous
      • ');\n\t var $next = $('
      • Next
      • ');\n\n\t for (var page = 0; page < numPages; page++) {\n\t $('
      • '+ (page + 1) + '
      • ').bind('click', {\n\t newPage: page\n\t }, function(event) {\n\t event.preventDefault();\n\t currentPage = event.data['newPage'];\n\t $table.trigger('repaginate',true);\n\t $(this).addClass('pagination__num--active').siblings().removeClass('pagination__num--active');\n\t }).appendTo($pager);\n\t }\n\t $pager.appendTo($pager).find('li.pagination__num:first').addClass('pagination__num--active');\n\t $previous.insertBefore('li.pagination__num:first');\n\t $next.insertAfter('li.pagination__num:last');\n\n\t\t\t\t\t$next.click(function (e) {\n\t\t\t\t\t\te.preventDefault();\n\t $pager.find('.pagination__num--active').next('.pagination__num').click();\n\t });\n\t $previous.click(function (e) {\n\t\t\t\t\t\te.preventDefault();\n\t $pager.find('.pagination__num--active').prev('.pagination__num').click();\n\t });\n\t $table.on('repaginate', function (e,scrollUp) {\n\n\t\t\t\tvar scrollDistance = $(\".fair-fuel-results\").offset().top\n\t\t\t\tif (window.matchMedia(NAMESPACE.mediaQueries.bp('0,m')).matches) scrollDistance -= $('.header-top').height()\n\n\t\t\t\tif(scrollUp) $(\"html, body\").animate({scrollTop: scrollDistance})\n\t setTimeout(function () {\n\t var $active = $pager.find('.pagination__num.pagination__num--active');\n\t if ($active.next('.pagination__num').length === 0) {\n\t // $next.removeClass('clickable');\n\t } else if ($active.prev('.pagination__num').length === 0) {\n\t // $previous.removeClass('clickable');\n\t }\n\t });\n\t });\n\t $table.trigger('repaginate');\n\t\t\t\t}\n });\n\t}\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * TABLES\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.tables = (function() {\n\n\t\tvar selector = 'fn_table',\n\t\ttableRoleSelector = 'table-role',\n\t\ttableParentSelector = 'table-parent',\n\t\ttableClassName = 'table-responsed',\n\t\theaders = [],\n\t\theadersSet = [],\n\t\trows = [],\n\t\tcells = [],\n\t\trowIndex = 0,\n\t\toutput = '';\n\n\t\tvar openTable = function(className) {\n\t\t\topenFactory('table',className)\n\t\t}\n\n\t\tvar closeTable = function() {\n\t\t\tcloseFactory('table')\n\t\t}\n\n\t\tvar openRow = function(className) {\n\t\t\topenFactory('tr',className)\n\t\t}\n\n\t\tvar closeRow = function() {\n\t\t\tcloseFactory('tr')\n\t\t}\n\n\t\tvar openCell = function(className) {\n\t\t\topenFactory('td',className)\n\t\t}\n\n\t\tvar closeCell = function() {\n\t\t\tcloseFactory('td')\n\t\t}\n\n\t\tvar openFactory = function(tag,className) {\n\t\t\tclassName = className || ''\n\t\t\toutput += '<'+tag+' class=\"'+className+'\">'\n\t\t}\n\n\t\tvar closeFactory = function(tag) {\n\t\t\toutput += ''\n\t\t}\n\n\t\tvar findUniqueCell = function(row) {\n\t\t\tvar unique = $(row).find('[data-table-unique]'),\n\t\t\tisSoleUnique = unique.length == 1,\n\t\t\tindex = rowIndex - 1\n\n\t\t\tif(unique.length && (unique[index] || isSoleUnique)) {\n\t\t\t\topenCell()\n\t\t\t\toutput += unique[isSoleUnique ? 0 : index].innerHTML\n\t\t\t\tcloseCell()\n\t\t\t}\n\n\t\t}\n\n\t\tvar init = function() {\n\t\t\t\n\t\t\t$('.'+selector).each(function(){\n\n\t\t\t\t// Reset stuff\n\t\t\t\toutput = '';\n\t\t\t\theadersSet = []\n\n\t\t\t\trows = $(this).find('.table-row')\t\t\t\t\n\t\t\t\theaders = $(this).find('*[data-table-header]')\n\n\t\t\t\topenTable(tableClassName + ' ' + $(this).attr('class').replace(selector,''))\n\n\t\t\t\topenRow()\n\n\t\t\t\tfor(var i = 0; i < headers.length; i++) {\n\t\t\t\t\tif($.inArray(headers[i].innerText,headersSet) == -1) {\n\t\t\t\t\t\toutput += ''+headers[i].innerText+''\n\t\t\t\t\t\theadersSet.push(headers[i].innerText)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcloseRow()\t\t\t\t\n\t\t\t\t\n\t\t\t\tfor(var r = 0; r < rows.length; r++) {\n\n\t\t\t\t\trowIndex++\n\t\t\t\t\topenRow()\n\t\t\t\t\tcells = $(rows[r]).find('li')\n\t\t\t\t\tfindUniqueCell($(rows[r]))\n\n\t\t\t\t\tfor(var c = 0; c < cells.length; c++) {\n\t\t\t\t\t\topenCell()\n\t\t\t\t\t\toutput += cells[c].innerHTML\n\t\t\t\t\t\tcloseCell()\n\t\t\t\t\t}\n\n\t\t\t\t\tcloseRow()\n\t\t\t\t}\n\n\t\t\t\tcloseTable()\n\n\t\t\t\t$(this).after('
        ')\n\t\t\t\t$('#'+$(this).data('target')).html(output)\n\n\t\t\t})\n\n\t\t}\n\n\t\treturn {\n\t\t\tinit: init\n\t\t};\n\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * TABS\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\t// tabs functionality, including the ability to have tabs in tabs\n\tNAMESPACE.tabs = (function() {\n\n\t\tvar CONST = {\n\t\t\tUPDATE_HASH: true,\n\t\t\tACTIVE_CLASS: 'is-active',\n\t\t\tHIDDEN_CLASS: 'is-hidden',\n\t\t\tDISABLED_CLASS: 'is-disabled',\n\t\t\tANIMATION_FADEIN: 200,\n\t\t\tIS_OLDIE: $('.lt-ie9').length > 0\n\t\t};\n\n\t\tvar init = function() {\n\t\t\tif ($('.lt-ie7').length > 0) {\n\t\t\t\t//unsupported browser - don't implement tabs\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// can have multiple sets of tabs\n\t\t\t$('.fn_tabs').each(function(tabsContainerIndex, el) {\n\t\t\t\tvar $container = $(el),\n\t\t\t\t\t$tabsContainer = $container.find('.tabs:eq(0)'), //only find first child so we can handle tabs in tabs\n\t\t\t\t\t_isDisabled = false,\n\t\t\t\t\t_hasExpandCollapse = ($container.hasClass('fn_mqad') && $container.find('.tab-title').length > 0),\n\t\t\t\t\tscrollToView = !!$container.data('tabs-scroll-to-view'),\n\t\t\t\t\t$tabsLink = $container.find('a'),\n\t\t\t\t\t$scrollInsideEc = $tabsLink.css('data-scrollInsideEc');\n\n\t\t\t\t$container.removeClass('fn_tabs').prepend('
          ');\n\n\t\t\t\tvar $navigation = $container.find('> .nav > ul'),\n\t\t\t\t\t$tabsList = $tabsContainer.find('> .tab, > .tab-group > .tab, > .tab-group'),\n\t\t\t\t\ttabLength = $tabsList.length,\n\t\t\t\t\tactiveIsSet = ($tabsContainer.find('> .tab.' + CONST.ACTIVE_CLASS + ', > .tab-group > .tab.' + CONST.ACTIVE_CLASS).length > 0),\n\t\t\t\t\tfirstActiveIndex = ($tabsList.eq(0).hasClass('tab-group')) ? 1 : 0,\n\t\t\t\t\t_activeTab = null,\n\t\t\t\t\t_isAnimating = false,\n\t\t\t\t\t_doScrollToOnHashChange = false;\n\n\t\t\t\tvar ariaTags = {\n\t\t\t\t\tenable: function() {\n\t\t\t\t\t\t$navigation.find('li').each(function(){\n\t\t\t\t\t\t\tvar isActive = $(this).hasClass(CONST.ACTIVE_CLASS),\n\t\t\t\t\t\t\t\t$link = $(this).find('a');\n\n\t\t\t\t\t\t\t$link.attr({\n\t\t\t\t\t\t\t\t'role': 'tab',\n\t\t\t\t\t\t\t\t'aria-controls': $link.data('controls'),\n\t\t\t\t\t\t\t\t'aria-selected': isActive\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t$tabsList.each(function(){\n\t\t\t\t\t\t\tvar $tab = $(this);\n\n\t\t\t\t\t\t\t$tab.attr({\n\t\t\t\t\t\t\t\t'role': 'tabpanel',\n\t\t\t\t\t\t\t\t'aria-labelledby': $tab.data('labelledby')\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\tdisable: function() {\n\t\t\t\t\t\t$tabsList.each(function(){\n\t\t\t\t\t\t\tvar $tab = $(this);\n\n\t\t\t\t\t\t\t$tab.removeAttr('role').removeAttr('aria-labelledby');\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\tupdate: function() {\n\t\t\t\t\t\tif (!_isDisabled) {\n\t\t\t\t\t\t\tariaTags.enable();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t// hide active tab (must be called before showing the new tab)\n\t\t\t\tvar hideActiveTab = function(id, init, callback, animationDuration) {\n\t\t\t\t\tif (!_activeTab) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (id !== _activeTab.id) {\n\n\t\t\t\t\t\t\tvar afterHide = function() {\n\t\t\t\t\t\t\t\t$(_activeTab.tab).addClass(CONST.HIDDEN_CLASS);\n\t\t\t\t\t\t\t\t$(_activeTab.tab).removeClass(CONST.ACTIVE_CLASS);\n\t\t\t\t\t\t\t\tcallback();\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t$(_activeTab.listItem).removeClass(CONST.ACTIVE_CLASS);\n\t\t\t\t\t\t\t$(_activeTab.listItem).find('a > .visuallyhidden').remove();\n\n\t\t\t\t\t\t\tif (CONST.IS_OLDIE || init) {\n\t\t\t\t\t\t\t\tafterHide();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (_isDisabled) {\n\t\t\t\t\t\t\t\t\tafterHide();\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t$(_activeTab.tab).stop().animate({\n\t\t\t\t\t\t\t\t\t'opacity': 0\n\t\t\t\t\t\t\t\t}, animationDuration, function() {\n\t\t\t\t\t\t\t\t\tafterHide();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t_isAnimating = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tvar findTabInContainer = function(id) {\n\t\t\t\t\tvar tabFound = false,\n\t\t\t\t\t\t$tabToMakeActive;\n\n\t\t\t\t\t$tabsList.each(function(i, el){\n\t\t\t\t\t\tif ($(el).attr('id') === id.replace('#', '')) {\n\t\t\t\t\t\t\ttabFound = true;\n\t\t\t\t\t\t\t$tabToMakeActive = $(el);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttabFound: tabFound,\n\t\t\t\t\t\t$tabToMakeActive: $tabToMakeActive\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t$container.on('changeTab.tabs', function(event, id, init, animationDurationOverride){\n\t\t\t\t\t//format the tab id\n\t\t\t\t\tid = id.substring(id.indexOf('#'), id.length);\n\n\t\t\t\t\t// check if the tab can be found\n\t\t\t\t\tvar findTab = findTabInContainer(id),\n\t\t\t\t\t\ttabFound = findTab.tabFound,\n\t\t\t\t\t\t$tabToMakeActive = findTab.$tabToMakeActive,\n\t\t\t\t\t\tanimationDuration = (typeof animationDurationOverride === 'number' ? animationDurationOverride : CONST.ANIMATION_FADEIN);\n\n\t\t\t\t\tif (!tabFound) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\t// check if button can be found\n\t\t\t\t\tvar $button = $navigation.find('a[href=\"'+id+'\"]');\n\n\t\t\t\t\tif ($button.length === 0) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar $listItem = $button.closest('li');\n\n\t\t\t\t\t// all found - lets get on with it\n\t\t\t\t\tinit = (typeof(init) === 'boolean') ? init : false;\n\n\t\t\t\t\tif (_isAnimating === true) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\t_isAnimating = true;\n\n\t\t\t\t\t//update EC module inside the tab if required\n\t\t\t\t\tvar updateTabsToEC = function() {\n\t\t\t\t\t\t$tabsList.find('.tab-title').trigger('close.expandcollapse', [null, true]);\n\t\t\t\t\t\t$tabToMakeActive.find('.tab-title').trigger('open.expandcollapse', [false, true]);\n\t\t\t\t\t};\n\n\t\t\t\t\tvar afterShow = function() {\n\t\t\t\t\t\t$(id).css('opacity', '');\n\n\t\t\t\t\t\tupdateTabsToEC();\n\n\t\t\t\t\t\tif ((_isDisabled && _hasExpandCollapse) || _doScrollToOnHashChange) {\n\t\t\t\t\t\t\t//if the tabs are disabled and we have turned them into expand collapse modules\n\t\t\t\t\t\t\tif (scrollToView) {\n\t\t\t\t\t\t\t\tNAMESPACE.util.scrollPageTo($container.offset().top - 20);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t_doScrollToOnHashChange = false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_isAnimating = false;\n\t\t\t\t\t\t_activeTab = {\n\t\t\t\t\t\t\tid: id,\n\t\t\t\t\t\t\ttab: $(id),\n\t\t\t\t\t\t\tlistItem: $listItem\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t$(id).addClass(CONST.ACTIVE_CLASS);\n\n\t\t\t\t\t\tariaTags.update();\n\n\t\t\t\t\t\t//trigger for external listeners\n\t\t\t\t\t\t$container.trigger('changed.tabs', [id]);\n\n\t\t\t\t\t\t// update hidden input if applicable\n\t\t\t\t\t\tvar tabInput = $tabToMakeActive.attr('data-tab-input'),\n\t\t\t\t\t\t\ttabValue = $tabToMakeActive.attr('data-tab-value');\n\n\t\t\t\t\t\tif (tabInput && tabValue) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t$(tabInput).val(tabValue);\n\t\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//for accessibility focus on the first child of the selected tab\n\t\t\t\t\t\t//$(id).get(0).focus();\n\n\t\t\t\t\t\t//set path\n\t\t\t\t\t\tif (CONST.UPDATE_HASH && !NAMESPACE.IS_EDIT) {\n\t\t\t\t\t\t\tvar currentHash = window.location.hash,\n\t\t\t\t\t\t\t\tnewHash = '#tab-'+id.replace('#', '');\n\n\t\t\t\t\t\t\tif (currentHash !== newHash) {\n\t\t\t\t\t\t\t\twindow.location.hash = newHash;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tvar showTab = function() {\n\t\t\t\t\t\tif (_isDisabled) {\n\t\t\t\t\t\t\t$(id).css('opacity', '1').removeClass(CONST.HIDDEN_CLASS);\n\t\t\t\t\t\t\tafterShow();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t$(id).stop().removeClass(CONST.HIDDEN_CLASS).animate({\n\t\t\t\t\t\t\topacity: 1\n\t\t\t\t\t\t}, animationDuration, function() {\n\t\t\t\t\t\t\tafterShow();\n\t\t\t\t\t\t});\n\t\t\t\t\t};\n\n\t\t\t\t\t$listItem.addClass(CONST.ACTIVE_CLASS);\n\t\t\t\t\t$listItem.find('a > .visuallyhidden').remove();\n\t\t\t\t\t$listItem.find('a').append('Active tab');\n\n\t\t\t\t\tif (CONST.IS_OLDIE || init) {\n\t\t\t\t\t\thideActiveTab(id, init, function() {\n\t\t\t\t\t\t\t$(id).css('opacity', '1').removeClass(CONST.HIDDEN_CLASS);\n\t\t\t\t\t\t\tafterShow();\n\t\t\t\t\t\t}, animationDuration);\n\t\t\t\t\t} else {\n\t\t\t\t\t\thideActiveTab(id, init, showTab, animationDuration);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (scrollToView) {\n\t\t\t\t\t\tNAMESPACE.util.scrollPageTo($container.offset().top);\n\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// setup tab functionality - this is run after the navigation is generated\n\t\t\t\tvar tabActions = function() {\n\t\t\t\t\t$navigation.find('li').each(function(index) {\n\t\t\t\t\t\tvar $listItem = $(this),\n\t\t\t\t\t\t\t$button = $listItem.find('a'),\n\t\t\t\t\t\t\tid = $button.attr('href');\n\n\n\t\t\t\t\t\tif ($button.length === 0) {\n\t\t\t\t\t\t\t//if a button isn't in the navigation list item, it's a tab group\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(id.slice(0, 1) === '#') {\n\t\t\t\t\t\t\t$button.bind('click', function(event) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t\t\t$container.trigger('changeTab.tabs', [id]);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (($tabsContainer.find('> .tab.' + CONST.ACTIVE_CLASS + ', > .tab-group > .tab.' + CONST.ACTIVE_CLASS).length > 0 && $(id).hasClass(CONST.ACTIVE_CLASS)) || ($tabsContainer.find('> .tab.' + CONST.ACTIVE_CLASS + ', > .tab-group > .tab.' + CONST.ACTIVE_CLASS).length === 0 && index === 0)) {\n\t\t\t\t\t\t\t\t_activeTab = {\n\t\t\t\t\t\t\t\t\tid: id,\n\t\t\t\t\t\t\t\t\ttab: $(id),\n\t\t\t\t\t\t\t\t\tlistItem: $listItem\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t$listItem.addClass(CONST.ACTIVE_CLASS);\n\t\t\t\t\t\t\t\t$listItem.find('a > .visuallyhidden').remove();\n\t\t\t\t\t\t\t\t$listItem.find('a').append('Active tab');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (_hasExpandCollapse) {\n\t\t\t\t\t\t\t\t$container.find('.expandcollapse.tab-title').on('opened.expandcollapse', function(){\n\t\t\t\t\t\t\t\t\tif (_isDisabled) {\n\t\t\t\t\t\t\t\t\t\tvar tabId = $(this).closest('.tab').attr('id');\n\t\t\t\t\t\t\t\t\t\t$container.trigger('changeTab.tabs', ['#'+tabId]);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t};\n\n\t\t\t\t//for each tab\n\t\t\t\t$tabsList.each(function(index) {\n\t\t\t\t\tvar $tab = $(this),\n\t\t\t\t\t\texternalLink = $tab.data('tab-navigate-url'),\n\t\t\t\t\t\tid = $tab.attr('id') || 'tabs-' + tabsContainerIndex + '-tab-' + index,\n\t\t\t\t\t\tbuttonId = 'btn-' + id,\n\t\t\t\t\t\ttitle = $tab.attr('data-tab-title') || $tab.find('> *').eq(0).text(),\n\t\t\t\t\t\tmicroTitle = $tab.attr('data-tab-micro-title') || undefined,\n\t\t\t\t\t\tonclick = $tab.find('> *').eq(0).attr('onclick'),\n\t\t\t\t\t\t$a,\n\t\t\t\t\t\tcmsIconClasses = $tab.attr('data-cms-icon'),\n\t\t\t\t\t\tafterDivClasses = $tab.attr('data-after-div'),\n\t\t\t\t\t\tafterDivHTML = '',\n\t\t\t\t\t\t_activeTab = ((activeIsSet && $tab.hasClass(CONST.ACTIVE_CLASS)) || (!activeIsSet && index === firstActiveIndex));\n\n\t\t\t\t\tif ($tab.hasClass('tab-group')) {\n\n\t\t\t\t\t\t$navigation.append('
        • '+ title + '
        • ');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar titleText = '';\n\t\t\t\t\t\tif (afterDivClasses) {\n\t\t\t\t\t\t\tafterDivHTML = '
          ';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(microTitle !== undefined) {\n\t\t\t\t\t\t\ttitleText += ''+microTitle+'
          ';\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttitleText += title;\n\t\t\t\t\t\tvar href = '#'+id;\n\t\t\t\t\t\tif (externalLink!== undefined) {\n\t\t\t\t\t\t\thref = externalLink;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$a = $('' + titleText + '');\n\n\t\t\t\t\t\tif (cmsIconClasses) {\n\t\t\t\t\t\t\t$a.addClass('has-icon').prepend('');\n\t\t\t\t\t\t\t$tab.find('.tab-title').addClass('has-icon').prepend('');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (onclick) {\n\t\t\t\t\t\t\t$a.attr('onclick', onclick);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t$navigation.append($('
        • ').append($a).append(afterDivHTML));\n\n\t\t\t\t\t\t$('#' + buttonId).data('controls', id);\n\n\t\t\t\t\t\t$tab.data('labelledby', buttonId);\n\n\t\t\t\t\t\tif (!_activeTab) {\n\t\t\t\t\t\t\t$tab.addClass(CONST.HIDDEN_CLASS);\n\n\t\t\t\t\t\t\tif (!CONST.IS_OLDIE) {\n\t\t\t\t\t\t\t\t$tab.animate({\n\t\t\t\t\t\t\t\t\t'opacity': 0\n\t\t\t\t\t\t\t\t}, 0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$tab.addClass(CONST.ACTIVE_CLASS);\n\t\t\t\t\t\t\t$container.trigger('init.tabs', ['#' + id]);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (index === tabLength - 1) {\n\t\t\t\t\t\t\ttabActions();\n\n\t\t\t\t\t\t\t$navigation.find('li:first-child').addClass('first-child');\n\t\t\t\t\t\t\t$navigation.find('li:last-child').addClass('last-child');\n\n\t\t\t\t\t\t\t$tabsContainer.find('> .tab-group > .tab').unwrap();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t$container.on('attach.mqad', function(event) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t_isDisabled = false;\n\t\t\t\t\tariaTags.enable();\n\n\t\t\t\t\t$tabsList.filter('.' + CONST.HIDDEN_CLASS).css('opacity', '0');\n\t\t\t\t\t$container.removeClass(CONST.DISABLED_CLASS);\n\t\t\t\t});\n\n\t\t\t\t$container.on('detach.mqad', function(event) {\n\t\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t\t_isDisabled = true;\n\t\t\t\t\tariaTags.disable();\n\n\t\t\t\t\t$container.addClass(CONST.DISABLED_CLASS);\n\t\t\t\t\t$tabsList.filter('.' + CONST.HIDDEN_CLASS).css('opacity', '');\n\t\t\t\t});\n\n\t\t\t\tariaTags.enable();\n\n\t\t\t\t//updates for hash\n\t\t\t\tif (CONST.UPDATE_HASH && !NAMESPACE.IS_EDIT) {\n\t\t\t\t\tvar onHashChange = function(init, triggerAccordion) {\n\t\t\t\t\t\tinit = (typeof(init) === 'boolean') ? init : false;\n\n\t\t\t\t\t\tvar currentHash = window.location.hash;\n\n\t\t\t\t\t\tif (!currentHash || currentHash.indexOf('tab-') < 0) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//enforce the scroll\n\t\t\t\t\t\t_doScrollToOnHashChange = true;\n\n\t\t\t\t\t\tcurrentHash = currentHash.replace('tab-', '');\n\n\t\t\t\t\t\tvar findTab = findTabInContainer(currentHash);\n\n\t\t\t\t\t\tif (findTab.tabFound) {\n\t\t\t\t\t\t\t$container.trigger('changeTab.tabs', [currentHash, init]);\n\t\t\t\t\t\t\tif(triggerAccordion) {\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\tfindTab.$tabToMakeActive.find('> .expandcollapse').trigger('open.expandcollapse', [true, true]);\n\t\t\t\t\t\t\t\t}, 500);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t$(window).on('hashchange', onHashChange);\n\n\t\t\t\t\tonHashChange(true, true);\n\t\t\t\t}\n\n\t\t\t\t// // Open ExpandCollapse and scroll to anchor tag\n\n\t\t\t\t// if($scrollInsideEc) {\n\t\t\t\t// \tconsole.log('it exists');\n\t\t\t\t// \tsetTimeout(function() {\n\t\t\t\t// \t\tif ( $($scrollInsideEc).closest('.tab').length == 1 ) {\n\t\t\t\t// \t\t\t$('.tabs').find('.is-active').each(function(index, el){\n\t\t\t\t// \t\t\t\t$(el).click(function() {\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t// \t\t\t\t});\n\t\t\t\t// \t\t\t\t// $(el).removeClass(NAMESPACE.expandCollapse.CONST.IS_COLLAPSED_CLASS);\n\t\t\t\t// \t\t\t\t// $(el).addClass(NAMESPACE.expandCollapse.CONST.IS_EXPANDED_CLASS);\n\t\t\t\t// \t\t\t\t// $('.is-active').find('h3').addClass(NAMESPACE.expandCollapse.CONST.IS_EXPANDED_CLASS);\n\t\t\t\t// \t\t\t\t$('.is-active').find('.ec-content').css({'display':'block', 'opacity': '1'});\n\t\t\t\t// \t\t\t\t// $('.is-active').find('.ec-content').attr('aria-expanded','true');\n\n\t\t\t\t// \t\t\t});\n\t\t\t\t// \t\t\tsetTimeout(function() {\n\t\t\t\t// \t\t\t\t$('html, body').animate({\n\t\t\t\t// \t\t\t scrollTop: $($scrollInsideEc).offset().top\n\t\t\t\t// \t\t\t }, 1000);\n\t\t\t\t// \t\t\t}, 1000);\n\t\t\t\t// \t\t}\n\t\t\t\t// \t}, 100);\n\t\t\t\t// } else {\n\t\t\t\t// \tconsole.log('remove');\n\t\t\t\t// }\n\t\t\t});\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init\n\t\t};\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * TABS CONTROLLER\n * A dropdown that controls a tab module\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.tabsController = function() {\n\t\t$('.fn_tabsController').each(function() {\n\t\t\tvar $mod = $(this).removeClass('fn_tabsController'),\n\t\t\t\ttabs = $mod.attr('data-tabs'),\n\t\t\t\t$select,\n\t\t\t\t$options,\n\t\t\t\t$tabs;\n\n\t\t\tif (!tabs) {\n\t\t\t\tconsole.warn('The fn_tabsController module requires a data-tabs attribute');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$tabs = $('#' + tabs);\n\t\t\tif ($tabs.length === 0) {\n\t\t\t\tconsole.warn('The fn_tabsController module requires a data-tabs attribute with an ID that matches a tab module');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t$select = $mod.find('select');\n\t\t\t$options = $select.find('option');\n\n\t\t\t// If the dropdown is changed, update the tabs\n\t\t\t$select.on('change', function() {\n\t\t\t\t$tabs.trigger('changeTab.tabs', ['#' + $select.val(), null, 0]);\n\t\t\t});\n\n\t\t\t// If the tab is changed, update the selector\n\t\t\t$tabs.on('changed.tabs init.tabs', function(e, selectedTabId) {\n\t\t\t\t$options.each(function() {\n\t\t\t\t\tvar $option = $(this);\n\t\t\t\t\tif ('#' + $option.val() === selectedTabId) {\n\t\t\t\t\t\t$option.prop('selected', true);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t$select.trigger('updateLabel.simpleSelect');\n\t\t\t\t$select.find(':selected').trigger('change.formShowHideTarget');\n\t\t\t});\n\t\t});\n\t};\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * TOOLTIPS\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.tooltip = function() {\n\t\tvar options = {};\n\t\tvar roadsideOptions = {\n\t\t\thideOnHover: true\n\t\t};\n\n\t\tif ($('.lt-ie9').length > 0) {\n\t\t\toptions.duration = 0;\n\t\t}\n\n\t\t$('a.fn_tooltip').accessibleTooltip(options);\n\t\t$('a.fn_tooltip_onclick').accessibleTooltip(roadsideOptions);\n\t};\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * COMPLEX TOOLTIP\n * These tooltips are used on the Insurance Quoting pages\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tvar firstRun = true,\n\t\t$tooltips = $();\n\n\tNAMESPACE.complexTooltip = function() {\n\t\tvar $tipToHide = $(),\n\t\t\ttooltipIndex = 1,\n\t\t\t$tipToShow = $();\n\n\t\tvar isLargeScreen = function() {\n\t\t\tif (!NAMESPACE.IS_RESPONSIVE) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn (window.matchMedia(NAMESPACE.mediaQueries.bp('l')).matches);\n\t\t\t}\n\t\t};\n\n\t\t$tooltips = $tooltips.add($('.fn_complex-tooltip').each(function() {\n\n\t\t\tvar randomStr = Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 5);\n\n\t\t\tvar $mod = $(this),\n\t\t\t\t$button = $('Tooltip'),\n\t\t\t\t$close = $('Close tooltip'),\n\t\t\t\t$arrow = $(''),\n\t\t\t\t$tooltip = $('
          ')\n\t\t\t\t\t.append($mod.html())\n\t\t\t\t\t.append($arrow)\n\t\t\t\t\t.append($close),\n\t\t\t\t$inputsContainer = $mod.closest('.complex-tooltip__multiple-inputs'),\n\t\t\t\t$msfPage = $mod.closest('.msf__page'),\n\t\t\t\t$inputs,\n\t\t\t\tisShown = false,\n\t\t\t\tshow,\n\t\t\t\thide,\n\t\t\t\tcheckTooltipPosition,\n\t\t\t\tisVerticalAlign = false;\n\n\t\t\ttooltipIndex = tooltipIndex+1;\n\n\t\t\tif ($mod.hasClass('tooltip-vertical-align')) {\n\t\t\t\tisVerticalAlign = true;\n\t\t\t}\n\n\t\t\t// Measure if the tooltip overlaps onto the footer RACQ-1498\n\t\t\tcheckTooltipPosition = function() {\n\n\t\t\t\tvar positionTooltipArrow = function() {\n\t\t\t\t\tif (!isVerticalAlign) {\n\t\t\t\t\t\tvar btop = $button[0].getBoundingClientRect().top + ($button.outerHeight() / 2);\n\t\t\t\t\t\tvar atop = $arrow[0].getBoundingClientRect().top + ($arrow.outerHeight() / 2);\n\t\t\t\t\t\tvar amt = parseInt($arrow.css('margin-top'));\n\t\t\t\t\t\tvar diff = btop - atop;\n\t\t\t\t\t\t$arrow.css('margin-top', (amt + diff));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ($msfPage.length > 0) {\n\t\t\t\t\t$tooltip.css('margin-top', '');\n\t\t\t\t\t$arrow.css('margin-top', '');\n\n\t\t\t\t\tif (isLargeScreen() && !isVerticalAlign) {\n\t\t\t\t\t\tvar overflow = $tooltip.outerHeight() + $tooltip.offset().top - $msfPage.outerHeight() - $msfPage.offset().top + 10;\n\t\t\t\t\t\tif (overflow > 0) {\n\t\t\t\t\t\t\t$tooltip.css('margin-top', '-' + overflow + 'px');\n\t\t\t\t\t\t\t$arrow.css('margin-top', overflow + 'px');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpositionTooltipArrow();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$tooltip.css('visibility', 'visible');\n\t\t\t};\n\n\t\t\tshow = function() {\n\t\t\t\tvar isLarge = isLargeScreen();\n\n\t\t\t\t// Hide other open tooltips\n\t\t\t\tif (isLarge) {\n\t\t\t\t\t$tooltips.not($mod).trigger('hide.complexTooltip');\n\t\t\t\t}\n\n\t\t\t\t$button.addClass('complex-tooltip__button--active');\n\t\t\t\t$msfPage.removeClass('step--show-summary-panel');\n\t\t\t\t$tooltip.addClass('is-shown');\n\t\t\t\tisShown = true;\n\n\t\t\t\tif (isLarge) {\n\t\t\t\t\t$tooltip.css('visibility', 'hidden');\n\t\t\t\t\tsetTimeout(checkTooltipPosition, 1);\n\n\t\t\t\t\tif (NAMESPACE.IS_RESPONSIVE) {\n\t\t\t\t\t\t$(window).on('resize.tooltipsComplex', $.debounce(100, checkTooltipPosition));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\thide = function() {\n\t\t\t\t$msfPage.addClass('step--show-summary-panel');\n\t\t\t\t$button.removeClass('complex-tooltip__button--active');\n\t\t\t\t$tooltip.removeClass('is-shown');\n\t\t\t\tisShown = false;\n\t\t\t\t$(window).off('resize.tooltipsComplex');\n\t\t\t};\n\n\t\t\tif ($inputsContainer.length === 0) {\n\t\t\t\tvar $cache = $mod.closest('.ctrls-holder');\n\t\t\t\tif($cache !== undefined && $cache.find('.fn_complex-tooltip, .complex-tooltip__tooltip').length > 1) {\n\t\t\t\t\t$cache = undefined;\n\t\t\t\t}\n\t\t\t\tif($cache !== undefined) {\n\t\t\t\t\t$inputsContainer = $cache;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ($inputsContainer.length === 0) {\n\t\t\t\t$inputsContainer = $mod.closest('.ctrl-holder');\n\t\t\t}\n\n\t\t\t$inputs = $inputsContainer.find(':input, a');\n\n\t\t\t$mod.empty()\n\t\t\t\t.append($button)\n\t\t\t\t.append($tooltip)\n\t\t\t\t.addClass('complex-tooltip__mod');\n\n\t\t\tvar clickHandler = function(e) {\n\t\t\t\tif (isLargeScreen()) {\n\t\t\t\t\tif (!isShown) {\n\t\t\t\t\t\t$mod.trigger('show.complexTooltip');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetTimeout(checkTooltipPosition, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\t$inputs.on('focus.accessibleTooltip click.accessibleTooltip', clickHandler);\n $inputsContainer.on('click.accessibleTooltip', '.slider, .label', clickHandler);\n\n\t\t\t$button.on('click', function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (isShown) {\n\t\t\t\t\t$mod.trigger('hide.complexTooltip');\n\t\t\t\t} else {\n\t\t\t\t\t$mod.trigger('show.complexTooltip');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$close.on('click', function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\t$mod.trigger('hide.complexTooltip');\n\t\t\t});\n\n\t\t\t$mod.on('show.complexTooltip', show);\n\t\t\t$mod.on('hide.complexTooltip', hide);\n\t\t\t$mod.removeClass('fn_complex-tooltip');\n\n\t\t\t// It may seem intense to attach a focusin event to the $msfPage for each complex tooltip, but\n\t\t\t// the event handler doesn't do anything unless the tooltip is visible\n\t\t\t$msfPage.on('focusin', function(e) {\n\n\t\t\t\tif (isShown) {\n\t\t\t\t\t$tipToHide = $mod;\n\t\t\t\t\t// Store the index of this button\n\t\t\t\t\t$tipToHide.order = $msfPage.find('.complex-tooltip__mod').index($mod)+1;\n\t\t\t\t} else if( $(e.target).is('.complex-tooltip__button') && $button.is($(e.target)) ){\n\t\t\t\t\t$tipToShow = $mod;\n\t\t\t\t\t// Store the index of this button\n\t\t\t\t\t$tipToShow.order = $msfPage.find('.complex-tooltip__mod').index($mod)+1;\n\t\t\t\t}\n\n\t\t\t\t// msfPage event is done looping through tooltips\n\t\t\t\tif( ($msfPage.find('.complex-tooltip__mod').index($mod)+1) === $msfPage.find('.complex-tooltip__mod').length ){\n\n\t\t\t\t\t// #IQUX-2184\n\t\t\t\t\t// If this is not a large screen and if we clicked the next button, carry on clicking the next button\n\t\t\t\t\tif( !isLargeScreen() && $(e.target).is('input') && $(e.target).val()==='Next' ){\n\t\t\t\t\t\t$tipToHide.trigger('hide.complexTooltip');\n\t\t\t\t\t\t$(e.target).click();\n\t\t\t\t\t}\n\n\t\t\t\t\t// If we have clicked something that isn't a button, clear the hideable tip object\n\t\t\t\t\tif(!$(e.target).is('.complex-tooltip__button')){\n\t\t\t\t\t\t$tipToHide = $();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}));\n\n\t\tif (firstRun) {\n\t\t\tif (isLargeScreen()) {\n\t\t\t\tif ($('.msf__page .step__summary-panel').length > 0) {\n\t\t\t\t\t$('.msf__page .step__summary-panel').closest('.msf__page').addClass('step--show-summary-panel');\n\t\t\t\t} else {\n\t\t\t\t\t// The backend will add a classname of \"tool-tip-load\" to ONE item if it wants that tooltip to be opened\n\t\t\t\t\tvar defaultLoadedToolTip = $tooltips.find('.tool-tip-load').first();\n\t\t\t\t\tif (defaultLoadedToolTip.length > 0) {\n\t\t\t\t\t\tdefaultLoadedToolTip.trigger('show.complexTooltip');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tfirstRun = false;\n\t\t}\n\t};\n\n}(RACQ_JS));\n/* ==========================================================================\n * TRIGGER FIRST LINK ON CLICK\n * If this module contains a link, trigger a click on the link when this module is clicked\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.triggerFirstLinkOnClick = function() {\n\n\t\t$('.fn_triggerFirstLinkOnClick').each(function(i, el){\n\t\t\tvar $mod = $(this).removeClass('fn_triggerFirstLinkOnClick'),\n\t\t\t\t$a = $mod.find('a').eq(0);\n\n\t\t\tif ($a.length === 1) {\n\t\t\t\t$mod.on('click', function(e) {\n\t\t\t\t\tif (e.target.nodeName !== 'A') {\n\t\t\t\t\t\t$a.click();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t};\n\n}(RACQ_JS));\n\n/* =============================================================================\n UTILITY LINKS DROPDOWN\n ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.utilityLinks = (function() {\n\n\t\tvar init = function() {\n\t\t\tvar CONST = {\n\t\t\t\t\tCLASS: {\n\t\t\t\t\t\tHOVER: 'is-hover'\n\t\t\t\t\t},\n\t\t\t\t\tDROPDOWN_TIMEOUT_DURATION: 250\n\t\t\t\t},\n\t\t\t\t$items = $('.utility-links .has-children');\n\n\t\t\t$items.each(function() {\n\t\t\t\tvar $item = $(this);\n\n\t\t\t\tif (Modernizr.touch) {\n\t\t\t\t\t$item.find('a').on('touchstart.utilityLinks click.utilityLinks', function(e) {\n\t\t\t\t\t\tif ($item.hasClass(CONST.CLASS.HOVER)) {\n\t\t\t\t\t\t\t// Allow the user to follow the link if they click it again\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$item.addClass(CONST.CLASS.HOVER);\n\t\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\t\t$('body').on('touchstart.utilityLinks', function(e) {\n\t\t\t\t\t\t\t\tif ($items.find(e.target).length === 0) {\n\t\t\t\t\t\t\t\t\t$('body').off('.utilityLinks');\n\t\t\t\t\t\t\t\t\t$item.removeClass(CONST.CLASS.HOVER);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t$item.hoverIntent({\n\t\t\t\t\t\ttimeout: CONST.DROPDOWN_TIMEOUT_DURATION,\n\t\t\t\t\t\tover: function() {\n\t\t\t\t\t\t\t$item.addClass(CONST.CLASS.HOVER);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tout: function() {\n\t\t\t\t\t\t\t$item.removeClass(CONST.CLASS.HOVER);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t$item.find('a').on('focus.utilityLinks', function() {\n\t\t\t\t\t\t$item.addClass(CONST.CLASS.HOVER);\n\t\t\t\t\t}).on('blur.utilityLinks', function() {\n\t\t\t\t\t\t$item.removeClass(CONST.CLASS.HOVER);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init\n\t\t};\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * VIDEO PLAYER\n * ========================================================================== */\n\n(function(NAMESPACE) {\n\n\t'use strict';\n\n\tNAMESPACE.videoPlayer = (function() {\n\t\t//regex script to split out the variables from the URL query string\n\t\tvar _getQuery = function(s) {\n\t\t\tvar query = {};\n\n\t\t\ts.replace(/\\b([^&=]*)=([^&=]*)\\b/g, function (m, a, d) {\n\t\t\t\tif (typeof query[a] !== 'undefined') {\n\t\t\t\t\tquery[a] += ',' + d;\n\t\t\t\t} else {\n\t\t\t\t\tquery[a] = d;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn query;\n\t\t};\n\n\t\tvar init = function() {\n\t\t\t$('.fn_inlineVideo').each(function(){\n\t\t\t\tvar $this = $(this);\n\t\t\t\tvar autoPlay = $this.data('auto-play-when-clicked') == 1 ? '1' : '0';\n\t\t\t\tvar videoQuery = $this.attr('href');\n\t\t\t\tif (videoQuery.indexOf('?v=') > -1 || videoQuery.indexOf('&v=') > -1){\n\n\t\t\t\t\tvideoQuery = _getQuery(videoQuery.substring(videoQuery.indexOf('?')));\n\n\t\t\t\t\t$this.bind('click', function(){\n\t\t\t\t\t\t$this.removeAttr('href').removeClass('fn_inlineVideo');\n\n\t\t\t\t\t\tvar w = '100%';\n\t\t\t\t\t\tvar h = '100%';\n\n\t\t\t\t\t\t$this.css('display', 'block').width(w).height(h).children().fadeOut(250, function() {\n\t\t\t\t\t\t\t$this.html('');\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$('.fn_videoInjection').each(function(){\n\t\t\t\tvar $this = $(this),\n\t\t\t\t\tvideoQuery = $this.attr('href'),\n\t\t\t\t\t$holder = $($this.attr('data-video-injection-holder'));\n\n\t\t\t\tif (videoQuery.indexOf('?v=') > -1 || videoQuery.indexOf('&v=') > -1){\n\n\t\t\t\t\tvideoQuery = _getQuery(videoQuery.substring(videoQuery.indexOf('?')));\n\n\t\t\t\t\t$this.bind('click', function(){\n\t\t\t\t\t\t$this.removeAttr('href').removeClass('fn_inlineVideo');\n\n\t\t\t\t\t\tvar w = '100%';\n\t\t\t\t\t\tvar h = '100%';\n\n\t\t\t\t\t\t$holder.html('');\n\n\t\t\t\t\t\t$holder.slideDown();\n\t\t\t\t\t\tNAMESPACE.util.scrollPageTo($holder.offset().top);\n\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\treturn {\n\t\t\tinit: init\n\t\t};\n\n\t}());\n\n}(RACQ_JS));\n\n/* ==========================================================================\n * VIDEO PLAYER PAGE\n * ========================================================================== */\n\n(function (NAMESPACE) {\n\n\t'use strict';\n\tNAMESPACE.videoPlayerPage = (function() {\n\t\tvar $videoPlayer = $('.video-player-full'),\n\t\t\t$playerInner = $videoPlayer.find('.youtube'),\n\t\t\t_isOpen = false,\n\t\t\t_resizeTimeout,\n\t\t\tspinner = NAMESPACE.spinner($videoPlayer.find('.preloader__spinner'));\n\n\t\tvar showVideo = function(videoId) {\n\t\t\t$videoPlayer.addClass('preloader--active');\n\t\t\tspinner.startAnimation();\n\t\t\t$videoPlayer.find('.close').focus();\n\t\t\t$videoPlayer.css('opacity', 0).addClass('is-active').transition({\n\t\t\t\topacity: 1\n\t\t\t}, 500, function() {\n\t\t\t\t$videoPlayer.addClass('is-active');\n\t\t\t\t$playerInner.find('.youtube-inner').addClass('is-hidden');\n\t\t\t\t$('body').addClass('is-videoplayer');\n\t\t\t\t$(window).on('resize orientationchange', _updateVideoPlayerSize);\n\n\t\t\t});\n\t\t\tloadVideo(videoId);\n\t\t};\n\n\t\tvar loadVideo = function(videoId) {\n\t\t\t$videoPlayer.find('.youtube-inner').remove();\n\t\t\t$playerInner.append('');\n\t\t\tsetTimeout(function() { //provide a slight timeout for UX - can remove later.\n\t\t\t\t$videoPlayer.removeClass('preloader--active');\n\t\t\t\tspinner.stopAnimation();\n\t\t\t\t$playerInner.find('.youtube-inner').removeClass('is-hidden');\n\t\t\t\t_updateVideoPlayerSize();\n\t\t\t}, 1000);\n\t\t};\n\n\t\tvar closeVideo = function() {\n\t\t\t$videoPlayer.css('opacity', 1).addClass('is-active').transition({\n\t\t\t\topacity: 0\n\t\t\t}, 500, function() {\n\t\t\t\t$videoPlayer.removeClass('is-active');\n\t\t\t\t$('body').removeClass('is-videoplayer');\n\n\t\t\t\t_isOpen = false;\n\t\t\t\t$(window).off('resize orientationchange', _updateVideoPlayerSize);\n\n\t\t\t\t$playerInner.find('iframe').remove();\n\t\t\t});\n\n\t\t\twindow.History.pushState(null, window.document.title, window.location.pathname);\n\n\t\t};\n\n\t\tvar _updateVideoPlayerSize = function() {\n\t\t\tclearTimeout(_resizeTimeout);\n\t\t\t_resizeTimeout = null;\n\n\t\t\t$playerInner.find('.youtube-inner').css({\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0\n\t\t\t});\n\n\t\t\t_resizeTimeout = setTimeout(function(){\n\t\t\t\tvar windowWidth = $videoPlayer.width(),\n\t\t\t\t\twindowHeight = $(window).height(),\n\t\t\t\t\twindowRatio = windowWidth / windowHeight,\n\t\t\t\t\tvideoRatio = 16 / 9,\n\t\t\t\t\tvideoWidth = 0,\n\t\t\t\t\tvideoHeight = 0,\n\t\t\t\t\tvideoTop = 0,\n\t\t\t\t\tvideoLeft = 0;\n\n\t\t\t\tif(windowRatio > videoRatio) { //if the window is wider than 16:9 - constrain by height\n\t\t\t\t\tvideoHeight = windowHeight;\n\t\t\t\t\tvideoWidth = windowHeight * videoRatio;\n\n\t\t\t\t\tvideoTop = 0; //don't need to change top position\n\t\t\t\t\tvideoLeft = (windowWidth - videoWidth) / 2; //center align\n\t\t\t\t} else { //if the window is less than 16:9 - constrain by width\n\t\t\t\t\tvideoWidth = windowWidth;\n\t\t\t\t\tvideoHeight = windowWidth / videoRatio;\n\n\t\t\t\t\tvideoTop = (windowHeight - videoHeight) / 2; //center align\n\t\t\t\t\tvideoLeft = 0; //don't need to change left position\n\t\t\t\t}\n\n\t\t\t\t$playerInner.find('.youtube-inner').css({\n\t\t\t\t\ttop: videoTop,\n\t\t\t\t\tleft: videoLeft,\n\t\t\t\t\twidth: videoWidth+'px',\n\t\t\t\t\theight: videoHeight+'px'\n\t\t\t\t});\n\t\t\t}, 100);\n\t\t};\n\n\t\tvar init = function() {\n\n\t\t\tvar videoId = NAMESPACE.util.getParameterByName('video');\n\n\t\t\tif(NAMESPACE.util.getParameterByName('video') !== '') {\n\t\t\t\tshowVideo(videoId);\n\t\t\t}\n\n\t\t\t$videoPlayer.find('.close').off('click.videoPlayer').on('click.videoPlayer', function(event){\n\t\t\t\tevent.preventDefault();\n\t\t\t\tcloseVideo();\n\t\t\t});\n\n\t\t\t$('#main').on('click', '.fn_videoPlayerFull', function(event){\n\t\t\t\tevent.preventDefault();\n\t\t\t\twindow.History.init();\n\t\t\t\tvideoId = (typeof($(this).attr('data-video-id')) === 'string') ? $(this).attr('data-video-id') : '2674272384001';\n\t\t\t\twindow.History.pushState(null, window.document.title, window.location.pathname + '?' + 'video=' + videoId);\n\t\t\t\tshowVideo(videoId);\n\t\t\t});\n\t\t};\n\n\t\treturn {\n\t\t\tshowVideo: showVideo,\n\t\t\tloadVideo: loadVideo,\n\t\t\tcloseVideo: closeVideo,\n\t\t\tinit: init,\n\t\t\tisOpen: function() {\n\t\t\t\treturn _isOpen;\n\t\t\t}\n\t\t};\n\t}());\n\n}(RACQ_JS));\n\nRACQ_JS.init();\n"],"names":["ArgsMock","$","on","currentHeight","this","children","height","currentWidth","width","css","window","each","i","className","attr","split","_self","trigger","console","log","RACQ_JS","IS_DEBUG","IS_EDIT","IS_RESPONSIVE","Page_Validators","error","info","debug","warn","trace","dir","dirxml","group","groupEnd","time","timeEnd","assert","profile","String","prototype","isNumber","isNaN","IsValid","NAMESPACE","INIT","common","init","Modernizr","csstransitions","fn","transition","animate","location","hostname","mockSysObject","util","helpers","identifyUserAgent","responsiveTelNumbers","fixFixedOnIOS","nav","utilityLinks","headerBigLinks","contactUsDropdown","imageLoader","imagefill","iframe","flexslider","forms","dynamicSelect","multipleSelect","complexTooltip","simpleSelect","simpleRadio","inputMask","radioExtra","autotab","submitOnChange","hideOnClick","showOnClick","hideOnChange","radioBlock","radioGrid","fieldTypeTransformation","discountSummary","rangeSlider","formRows","datePicker","accordion","equalHeights","tabsController","tabs","lifestyleCalculator","columns","slider","expandCollapse","expandCollapseShowHide","moduleInitInTabs","ajaxPageFragment","triggerFirstLinkOnClick","mirrorValue","liveTotal","headerOverlay","linkBlocks","dropdown","displayFormChange","membershipBenefits","tables","banner","accountPreferences","roadsideUpgrade","modal","length","responsiveTable","tooltip","conclude","mqad","autocomplete","predictive","videoPlayerPage","print","scrollPage","showElement","gatedContent","videoPlayer","socialShare","content","formShowHide","mustDos","carReviews","holidays","search","discountsLanding","newsAndCommunitySummary","approvedRepairers","fuelFinder","fairFuelPrice","accountOverview","paymentOptions","radioCheckbox","formShowHideSimple","formShowHideTarget","characterCounter","multistep","multiStepForm","multiStepFormProgressIndicator","sticky","exec","controller","action","ns","undefined","document","ready","body","getAttribute","triggerReady","noscroll","scrollPageTo","placeholder","formatter","prefixed","isDevice","add","scrollTop","hasClass","addClass","top","remove","parseInt","removeClass","$inputs","input","not","append","e","preventDefault","hash","_duration","callback","duration","isCallbackCalled","offset","matchMedia","mediaQueries","bp","matches","scrollToTarget","btn","dataTarget","$btn","target","adjust","substr","indexOf","off","$target","tagName","find","$el","data","opacity","hide","stop","slideDown","$placeholder","$input","parent","wrap","before","show","toCurrency","number","decimals","decimalSep","thousandsSep","c","Math","abs","d","t","sign","toFixed","j","replace","slice","abbrNum","pow","abbrev","size","round","roundNum","transitionend","WebkitTransition","MozTransition","OTransition","msTransition","Android","navigator","userAgent","match","AndroidChrome","chrome","BlackBerry","iOS","iPhone","iPad","Opera","Windows","anyPhone","any","touch","ua","rv","appName","RegExp","parseFloat","$1","scope","$tels","ajax","options","start","Date","successHandler","success","textStatus","jqXHR","minDuration","setTimeout","$body","getParameterByName","queryStringName","name","results","decodeURIComponent","addQueryStringToPath","value","path","pathname","addQueryStringToReturnUrl","_url","url","encodeURIComponent","addHashToReturnUrl","string","isAustralianPostcode","retval","getCookie","cookieName","cookie","cStart","cEnd","unescape","substring","setCookie","cookieValue","escape","fixWidthToViewport","el","item","viewportWidth","Array","isArray","getScreenData","w","documentElement","g","getElementsByTagName","dimensions","innerWidth","clientWidth","innerHeight","clientHeight","scroll","pageYOffset","bottom","$accordion","index","CONST","IS_COLLAPSED_CLASS","IS_EXPANDED_CLASS","$currentItem","$parentCheckbox","$accordionContainer","$accordionLink","$accordionContent","change","isChecked","checked","prop","click","closest","text","parentChecked","childrenItems","allSubsUnchecked","panelSubmitStart","panel_id","panel","first","panelSubmitEnd","jqxhr","getQueryStringFromInputs","updateQueryString","sendRequest","queryStringOnPageLoad","$mod","$fragment","service","positionPreloader","$spinner","spinner","updateType","_previousSelectId","History","returnValue","$item","val","is","pushState","title","html","abort","startAnimation","stopAnimation","$data","close","selectToButtons","focus","getState","indexOfQueryString","queryString","requestUrl","which","href","$this","$link","method","beforeSend","prepend","replaceWith","showInlinePreloader","$acWidget","isModal","resetAutocompleteSizePos","onWindowResize","src","optionalClass","$searchButton","fbcompletion","enabled","collection","program","format","alpha","sort","delay","logging","dwellLogging","selectLogging","returntype","event","ui","$banner","offsetArr","buildCloseButton","hideBanner","verifyIconExists","runOffsets","checkBannerOffset","clearOffset","updateOffsets","showing","animationTime","outerHeight","done","status","xhr","ht","cssRule","obj","debounce","iconUrl","iconPresent","$chars","$container","$textarea","characterLimit","keyup","end","x","newLines","addition","updateText","selectionStart","selectionEnd","setSelectionRange","max","calcHeights","onAttach","onDetach","$items","isEnabled","calculateItemsHeights","enquire","register","$button","$bg","_isOpen","stopPropagation","offscreen","isOpen","showDatePicker","date","$header","left","$maxDate","$minDate","$noDay","$disableCurrentDay","today","getFullYear","getMonth","getDate","adjustedOffest","getDay","outerWidth","datepicker","dateText","inst","day","currentDay","month","currentMonth","toString","currentYear","dayNamesMin","firstDay","maxDate","minDate","beforeShowDay","$datePickerDiv","join","$holder","$day","$month","$year","year","dateParts","moment","date2","$targets","nodeName","get","toUpperCase","inputType","anythingChanged","OPTIONS","_isInit","TRANSITION_DURATION","CLASS","IS_ACTIVE","IS_LT_IE9","_openDropdowns","_closeNavOnDocumentClick","id","$dropdown","_isActive","openDropdown","aria-controls","tabindex","role","aria-expanded","push","marginTop","display","margin-top","velocity","ease","complete","closeDropdown","splice","itemsPerRow","sectionSelector","$closestContainer","fillClosest","containerHeight","maxHeights","$visibleItems","filter","itemIndex","row","floor","$sections","sectionIndex","$section","sectionHeight","dataItems","itemsSelector","dataHeightsItems","JSON","parse","err","calcHeightsOnResize","key","hasOwnProperty","registerColumnsOnMq","createOnLoadLinks","titles","itemClone","clone","accTitle","deepLink","toLowerCase","trim","titleHTML","accTitleHTML","onLoadOpen","scrollAmt","$title","hb","next","isOldIE","animation","IS_DISABLED_CLASS","Sitecore","PageModes","PageEditor","immediate","slideDuration","slideUp","$group","ariaTags","updateLink","expandText","collapseText","mqScroll","disableScroll","isDisabled","useLink","$scrollInsideEc","removeAttr","scrollTo","openAndScrollToCurrent","openCurrent","isFound","$scrollToId","onload","creatLinks","findOpenedItemsCount","findTotalItems","handleText","totalItems","openedItems","displayCloseText","displayOpenText","$closeAll","$openAll","expanderOpenAll","handleExpanderEvent","expanderCloseAll","clearError","field","locationObject","initGoogleAutocomplete","searchOptions","locationInput","types","componentRestrictions","country","bounds","google","maps","LatLngBounds","LatLng","strictBounds","getElementById","places","Autocomplete","keydown","keyCode","handleSubmit","setFields","addListener","locationField","place","getPlace","position","lat","geometry","lng","addDomListener","handleValidation","$fn_fairFuelPrice","$fn_fuelPrice","$fairFuelSpinner","$fuelPriceSpinner","fairFuelSpinner","fuelPriceSpinner","fuelTypeField","btnSubmitField","updateTrendTextValues","classText","fairFuelTrend","updateCommentaryText","fairFuelCommentary","initialPageLoad","request","query","fields","locationBias","PlacesService","findPlaceFromQuery","PlacesServiceStatus","OK","updateTable","requestUrlObject","decodeURI","phracq_body_1_phracq_contentcontainer_0_FuelTypesDDL","ctrl","statusMessage","after","label","updateIndicatorText","priceFlunctationNumber","priceIndicatorNumber","updateTrendText","fuelType","imgURL","defaultImgUrl","URLFuelPrice","URLFairFuelPrice","fairFuelContainer","fairFuelHeading","fairFuelPriceRequestData","fuelPriceRequestData","fueltype","type","dataType","crossDomain","result","FairPrice","dataToStore","stringify","FairPriceData","localStorage","setItem","getItem","Location","RoundedPrice","PriceFluctuation","PriceIndicator","Stations","fadeIn","tr","FuelPriceData","Brand","Name","Price","Address","Suburb","dateIn","Timestamp","formatDate","LastUpdated","DataSourceName","tablePagination","processResponse","ajaxOptions","thrownError","_sliders","_removeLoader","$slider","_storedSlider","_getGridSize","targetId","defaultOptions","_getNumSlidesToShow","_getItemWidth","sliderType","selector","animationLoop","controlsContainer","directionNav","keyboard","slideshow","minItems","maxItems","itemWidth","itemMargin","resize","animatingTo","pagingCount","extend","gridSize","vars","update","slides","controlNav","sync","asNavFor","_gridSize","_itemWidth","linkSlideIndex","currentSlide","scrollLeft","$rows","$add","showFirstRow","numRowsVisible","eq","rowIndex","nextRow","$currentRowInputs","currentRow","len","inputIndex","last","scorePassword","pass","score","criteria","a","test","b","$ul","convertToSelectWhenTooLarge","haveSelectOptionOnSelect","mask","$select","chosen","inherit_select_classes","search_contains","rangeslider","polyfill","onSlide","$handle","onSlideEnd","anchorButtons","passwordStrength","$indicator","$text","$password","strengths","strength","itemtohide","targets","$block","$li","radioIsChecked","$lis","radioButtons","previousValue","$cards","$card","$radio","$list","$wrapper","hasItems","toggle","toggleClass","_triggerChange","_iePositionFix","_animations","setFieldsEnabled","setFieldsDisabled","showAlreadyVisible","initShow","initHide","$showTargets","$hideTargets","showTargetsId","hideTargetsId","validatorsOnForm","merge","s","oldIsValid","enable","controltovalidate","isvalid","ValidatorValidate","ValidatorUpdateIsValid","ValidatorUpdateDisplay","ValidatorEnable","formsValidation","oldValidatorValidate","newValidatorValidate","validationGroup","currentlyValidatingGroup","oldValidatorUpdateDisplay","newValidatorUpdateDisplay","Page_HighlightValidators","validator","summary","validatorID","controlID","errorClassName","hasErrors","controltocompare","$control","Page_HighlightValidatorsSummaryByControl","afterValidatorUpdateDisplay","oldValidationSummaryOnSubmit","newValidationSummaryOnSubmit","Page_ValidationSummaries","sums","$step","$summary","Page_IsValid","IsValidationGroupMatch","showsummary","displaymode","$sticky","$errors","easing","changeHandler","blurHandler","allowToContinueIfAllFieldsHaveValue","triggerClientValidator","handleDirtyCallback","dirty","cleanId","$groupLeader","$closestToolTip","$lastToolTipInGroup","allInputsHaveValue","activeElement","isInputOrAutoFillActive","triggerDateChange","triggerMonthChange","triggerAddressChange","triggerGroupChange","validationAlwaysPasses","sender","args","validationAlwaysFails","validationCurrency","source","hasInvalidChars","validationRange","$ctrl","min","validateMultiRequiredFields","isValid","validatePastDate","$parent","now","unix","validateFutureDate","subtract","validateAll","$source","$errorLabel","isRequired","regex","equalto","valid","regexMessage","equaltoMessage","requiredMessage","minMessage","maxMessage","requiredArgs","validateHasValue","regexArgs","validateRegex","equaltoArgs","validateEqualTo","minMaxArgs","validateMinMax","equalTargetId","equalTargetVal","validatePostcodeIfTargetIsAustralia","targetValue","validateDate","browser","msie","version","minimumDateStr","maximumDateStr","Deferred","allFieldsEmpty","resolve","minimumDate","maximumDate","validateCheckboxChecked","triggerValidatorById","updatedValidators","ValidationSummaryOnSubmit","ValidateDateSelectors","newValidatorOnChange","srcElement","ValidatorOnChange","$markers","$gatedContentLinks","previousGateId","$cachedEl","markerId","closestMarkerId","$marker","$previousGate","parents","HOVER","hoverIntent","timeout","over","out","setAsActive","removeAllIsActive","openOverlay","closeOverlay","clearOverlayContent","startLoader","stopLoader","loadContent","setHtmlToOverlay","showLocationFound","hideLocationFound","$contentHeader","$overlay","$overlayContent","$closeBtn","ajaxUrl","openOverlayAtMobile","currentlyLoading","open","geolocation","getCurrentPosition","pos","wait","$postCodeHelp","postCodeRequestUrl","coords","longitude","latitude","$postcodeLink","msg","postcode","includeHash","scrolling","uri","encodeURI","_fitLoadedImages","_loadedImages","_fitImage","$image","IS_LOADING","TO_TOP","skip","cHeight","iAspect","cWidth","imagesLoaded","debounceFitLoadedImages","_isLargeLoaded","srcSmall","alt","attrHeight","attrWidth","$imgContainer","_isSmallLoaded","loadLargeImage","$elCalculator","model","_mobileMenu","_updateCalcPos","getBoundingClientRect","_populateBanner","currentAmount","$bannerStatus","$bannerTotal","$savingsText","$savingsAmount","statusVal","totalVal","statusChosen","total","fadeOut","currentStatus","_updateStatus","_paintBanner","bannerStartPos","prev","bannerEndPos","headerOffset","bannerShowing","$statusOverlay","_goTo","statusImageClone","currentStatusImg","statusImg","$statusIcons","sliderSetup","isOnLoad","calc","$sliders","$statusButtons","$totalSpan","previousCount","holdChangeEvent","$status","count","category","calcArray","sum","$resultEl","newClasses","$totalDiv","siblings","$a","subtotal","map","geocoder","originalLocation","selectedLocation","SELECTORS","positionMapLocation","bounceMarker","geocodeLatLng","geocodeSuccess","geocodeError","storeSelectedLocation","mapSelectedLocation","skipGeocoding","hideMapMarkers","showMapMarkers","allowMapToSetLocation","logRoadsideJob","MAP_CONTAINER","INPUT_SEARCH","MAP_MARKER","INFO_WINDOW","INFO_WINDOW_TEXT","INPUT_LAT","INPUT_LNG","GEOLOCATE","TIP","formatted_address","setCenter","setZoom","geocode","message","clipboard","ClipboardJS","mapConfig","center","zoom","styles","featureType","stylers","hue","saturation","lightness","gamma","clickableIcons","mapTypeId","mapTypeControl","streetViewControl","scrollwheel","scaleControl","fullscreenControl","zoomControl","zoomControlOptions","ControlPosition","RIGHT_BOTTOM","Map","Geocoder","AutocompleteService","bindTo","getCenter","enableHighAccuracy","maximumAge","clearSelection","setRoadsideIconClassesDisabledState","idx","li","serviceType","_pxToEms","px","FONT_BASE","_bpToEms","point","isMax","list","BP","MAX","MIN","_bpMin","_bpMax","_bpBetween","XXS","XS","S","M","L","XL","XXL","pxToEms","bpToEms","bpMin","bpMax","bpBetween","convertToNumIfNum","bpArray","num","loadBenefitsDetails","areDetailsExpanded","$targetValue","$inputType","$targetDisplay","splitDecimals","formattedValue","$value","beginRequest","pageLoaded","Sys","WebForms","PageRequestManager","getInstance","add_beginRequest","progress","add_pageLoaded","notify","get_postBackElement","postBackElement","get_panelsUpdated","panelsUpdated","_getFixedHeaderHeight","_itemThatOpenedTheModal","_positionCurrentModal","_debouncePositionCurrentModal","_animateIn","_animateOut","_addEventsToModal","_afterModalOpen","_bindFormToOriginal","closeModal","openModal","addNewModal","checkIfModalExists","addNewModalAtMediaQuery","addNewModalFromHTML","_isReady","$currentModal","_addModalMediaQueries","TEMPLATES","DYNAMIC_MODALS","_visible","_focusable","STATIC_ANIMATION","IS_FIXED","DURATIONS","CONTAINER","IN","OUT","MODAL","normal","modal-dynamic-example","mq","$modal","reset","element","expr","filters","visible","addBack","isTabIndexNotNaN","mapName","img","parentNode","disabled","createPseudo","dataName","elem","focusable","tabbable","tabIndex","isTabIndexNaN","$modalContent","$modalContentOverflow","modalContainerHeight","modalHeight","max-height","overflow","clearTimeout","afterAnimateIn","animateInCurrentModal","scrollY","$video","scale","translateZ","$first","$last","$tabitems","andSelf","shiftKey","$results","ajaxPath","$original","originalId","originalName","$originalEl","resizebg","scrollWidth","offsetWidth","isDefaultPrevented","opener","appendTo","exists","$elem","modalTemplate","Handlebars","compile","addAt","DD","handler","mqHandler","mqModals","modals","pop","unregister","addFromHTML","_getModalFromId","$tabsContainer","$equalHeights","$linkContainer","mqAttach","mqDetach","mqStatic","unmatch","$footer","currentActive","activeElementBeforeRequest","reinit","refresh","fadeOutAndLock","fadeInAndUnlock","hideContentWhenLocked","copyProgressIndicator","EASING","EASE_IN_STRONG","EASE_OUT","$progressIndicator","prm","postbackElement","$postbackElement","$panel","usePreloader","translateY","$newActivePanel","updatedPanels","$updatedPanels","oldActive","_activeElement","beforeUnlock","afterUnlock","updatedPanel","$updatedPanel","stepid","$activePanelHiddenFields","$page","serialize","$updatePanel","panelId","$ecTitleA","$ecTitle","$ec","applyToAllPages","$stepComponents","$defaultLoadedToolTip","$allPages","nextAll","$firstError","footerDelay","$stepsScrollHook","$tooltipNoField","overrideScrollId","$inlinePreloader","holderTop","$nearestHolder","$offsetParent","offsetParent","reinitProgressIndicator","$tempProgressIndicator","$indicatorHolder","empty","updatePI","stepIndex","markLaterStepsAsIncomplete","$pi","$piSteps","isScrolledIntoView","updateProgressIndicator","getHeaderHeight","getFooterHeight","positionProgressIndicator","$window","$doc","$html","$main","absolute","footerHeight","headerHeight","completelyOnScreen","docViewTop","docViewBottom","elemTop","elemBottom","$steps","$currentStep","throttle","highlightStep","stepNumber","updateActiveStepName","stepTitle","_setContainerHeightForNav","navInnerTop","$navInner","positionTop","docHeight","navHeight","HEADER_HEIGHT","$innerWrap","_unsetContainerHeightForNav","$navBg","toggleOffscreenNav","_isNavOpen","NAV_OPEN","closeOffscreenNav","openOffscreenNav","instantly","IS_LARGE_NAV_SIZE","margin-left","DROPDOWN_TRANSITION_DURATION","_closeOnCloseButtonClick","_init","_inner","$navContainer","_closeOnDocumentTouch","$nav","closeCurrentlyOpen","closeNavOnDocumentClick","NAV_TRANSITIONING","NAV_READY","HOVERING","OFFSCREEN_NAV_BG","DROPDOWN_NAV_BG","NAV_INNER","DURATION","DROPDOWN_TIMEOUT_DURATION","HAS_CSSTRANSITIONS","csstransforms3d","IS_DEVICE","MQ","ONSCREEN","OFFSCREEN","navWidth","getCurrentXPos","origEvent","touches","pageX","getPxWidthMoved","startXPos","currentXPos","getPercentageWidthMoved","originalEvent","isMovingTowardsClose","speed","prevXPos","move","newInnerXPos","newNavXPos","percentageNavBg","newDuration","closeTimeout","resetCloseTimeout","closeNavEnd","Headroom","tolerance","resetTimeout","fromAnotherNavItem","relatedTarget","focusWithoutScrolling","y","setAutocompleteSizePos","oldValue","minLength","select","_renderItem","ul","tableIndex","$tableWrapper","$scrollable","$toggleInputs","checkIfHasScroll","handleResize","$table","insertBefore","createColumnToggles","closeMenu","$menuList","$menuContainer","$menuBtn","$menuClr","$menuWrapper","columnIndex","getColumnClasses","classes","classesArray","grep","thIndex","$th","colspan","$cells","toggleId","$cols","bind","scrollContainer","scrollOffset","submitBtn","navBackward","navForward","upgradePanel","upgradeOptions","numPackageItems","wrapperContainer","freeBenefitsContainer","leftPos","sessionStorage","panelName","isSuitableCheckbox","suitableAlert","scrollLeftPos","scrollMax","create","clickButton","$buttonsHolder","buttons","$option","unformattedVal","startingSliderVal","$sliderContainer","Link","thousand","prefix","allowedMin","allowedMax","$minLabel","$maxLabel","noUiSlider","step","range","serialization","lower","triggeredChange","sliderVal","inputVal","currentHref","$loader","cTotalFrames","cFrameWidth","cIndex","cXpos","cPreloaderTimeout","MILLISECONDS_BETWEEN_FRAMES","continueAnimation","firstRun","$els","checkIfOnscreen","scrollPos","currentPage","numRows","numPages","ceil","$pager","$previous","$next","page","newPage","insertAfter","scrollUp","scrollDistance","$active","openRow","openFactory","closeRow","closeFactory","headers","rows","cells","headersSet","output","openCell","closeCell","tag","tableClassName","inArray","innerText","isSoleUnique","r","unique","innerHTML","tabsContainerIndex","hideActiveTab","animationDuration","afterHide","_activeTab","tab","listItem","_isDisabled","_isAnimating","_hasExpandCollapse","scrollToView","$navigation","$tabsList","tabLength","activeIsSet","firstActiveIndex","_doScrollToOnHashChange","isActive","aria-selected","$tab","aria-labelledby","disable","findTabInContainer","$tabToMakeActive","tabFound","animationDurationOverride","findTab","$listItem","updateTabsToEC","afterShow","tabInput","tabValue","newHash","titleText","externalLink","buttonId","microTitle","onclick","cmsIconClasses","afterDivClasses","afterDivHTML","tabId","unwrap","onHashChange","triggerAccordion","currentHash","$options","$tabs","selectedTabId","accessibleTooltip","hideOnHover","$tooltips","isLargeScreen","defaultLoadedToolTip","$tipToHide","tooltipIndex","clickHandler","isShown","checkTooltipPosition","$cache","randomStr","random","$close","$arrow","$tooltip","$inputsContainer","$msfPage","isVerticalAlign","btop","atop","amt","isLarge","order","_getQuery","m","autoPlay","videoQuery","v","showVideo","videoId","$videoPlayer","$playerInner","_updateVideoPlayerSize","loadVideo","closeVideo","_resizeTimeout","windowWidth","windowHeight","videoWidth","videoHeight","videoTop","videoLeft"],"mappings":"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"}