{"version":3,"file":"AE.general.min.js","sources":["AE.general.min.js"],"sourcesContent":["/*\n===================================================================================================\nThis module declares top-level methods and instantiates the AE object. It must be loaded first.\n===================================================================================================\n*/\n\n\n/*\nThe AE object will be the returned result of a self-invoked function. This allows us to expose methods\nfor use by other modules while protecting some variables in a closure. If the APP.ui object is already\ndefined then it's not altered. This prevents us from running the entire function each time one of its\ninternal methods are called.\n*/\n;\nvar AE = AE || (function() {\n    /* This is where we set variables and things that will only live inside the closure. */\n    var APP = {\n        resizeTasks: [],\n        scrollTasks: [],\n        transitionTasks: [],\n        displayObjects: {\n            /*\n            This is just a container for any custom modules that go along with Mura display objects. There\n            isn't an init function for this. It's more of a library for other submodules.\n\n            Nothing will be added in this file. Display objects will add themselves to it, and will live\n            within the AE object.\n\n            It's important to know that display objects could load before this file. To prevent that, they\n            are written to only run when a global Deferred Object is resolved by this controller module,\n            and to add themselves to the displayObjects property at that time.\n            */\n        },\n        components: {\n            // A container for custom components in Mura. They'll be added in a way that's similar to display objects.\n        },\n        init: function() {\n            APP.props = {\n                $bodyElement: $('body'),\n                $scrollContainer: $('#scroll-container'),\n                $scrollContent: $('#scroll-content'),\n                $stickyWrapper: $('#sticky-wrapper'),\n                $siteContainer: $('#site-container'),\n                $mainFooter: $('#main-footer'),\n                $mainFooterContent: $('#main-footer__content'),\n                $mainNav: $('#mainnav'),\n                $masthead: $('#masthead'),\n                $mainNavLink: $('#mainnav__link'),\n                $mainNavFull: $('#mainnav').add('#mainnav__link'),\n                isLegacy: ($('html').hasClass('ua-ie-9')), // If the user is browsing with IE 9, No longer support 8.\n                isIE: false,\n                googleMapsAPIKey: '',\n                isAUNZ: false\n            };\n\n            if (oSite) {\n                if (_.isObject(oSite)) { $.extend(true, APP.props, oSite); }\n            }\n            if (AE.props.chaosSystem) { APP.props.isAUNZ = (AE.props.chaosSystem === 'AU' || AE.props.chaosSystem === 'NZ') ? true : false; }\n            APP.buildURLObject();\n\n            /*\n            The transition event is different across browsers, so this function will loop through them\n            until it gets a hit. Once done, event handlers can be registered to the variable. This is\n            currently used in the matrix, with a fallback to jQuery animate for legacy browsers. - bcribb\n            */\n            APP.props.transEnd = (function() {\n                var t;\n                var el = document.createElement('fakeelement');\n                var transitions = {\n                    'transition': 'transitionend',\n                    'OTransition': 'oTransitionEnd',\n                    'MozTransition': 'transitionend',\n                    'WebkitTransition': 'webkitTransitionEnd'\n                };\n\n                for (t in transitions) {\n                    if (el.style[t] !== undefined) {\n                        return transitions[t];\n                    }\n                }\n            })();\n\t\t\t\n\t\t\t/* getSiteViewType() references the props object, so this can't just be tossed into props. */\n\t\t\tAPP.windowSize = APP.getSiteViewType();\n\t\t\t\n\t\t\t// Set the Criteo Tag view type to the data layer object\n\t\t\taeDataLayer.push({\"criteoSiteType\":APP.getCriteoTagSiteViewType()});\n\t\t\t\n\t\t\t/*\n\t\t\t\tThis will be used to compare window width before and after a resize. This way, we only resize\n\t\t\t\twhen the window WIDTH changes, and not when the height changes. Starts as null because\n\t\t\t\tmanageResize needs to fail the first test so it can run once on page load.\n\t\t\t*/\n\t\t\tAPP.width = null;\n\t\t\t\n\t\t\tif (AE.privateBrowsing) {\n\t\t\t\tAE.privateBrowsing.init();\n\t\t\t}\n\t\t\tif (AE.nav) {\n\t\t\t\tAE.nav.init();\n\t\t\t}\n\t\t\t/* Legacy and Utils are used by Autocomplete. */\n\t\t\tif (AE.legacy) {\n\t\t\t\tAE.legacy.init();\n\t\t\t\tAPP.props.isIE = AE.legacy.grief.isIE;\n\t\t\t}\n\t\t\tif (AE.utils) {\n\t\t\t\tAE.utils.init();\n\t\t\t}\n\t\t\tif (AE.ui) {\n\t\t\t\tAE.ui.init(); /* This init will run init functions for its sub-modules. */\n\t\t\t}\n\t\t\tif (AE.ga && AECookie.read('iosTrackingDisabled') !== 'true') { /*Google Analytics*/\n\t\t\t\tAE.ga.init();\n\t\t\t}\n\t\t\tif (AE.cd && AECookie.read('iosTrackingDisabled') !== 'true') {/* Tracking Dimensions */\n\t\t\t\twindow.addEventListener('load', checkAEcd);\n\t\t\t}\n\t\t\tif (AE.forms) {\n\t\t\t\tAE.forms.init();\n\t\t\t}\n            if (AE.maps) {\n                AE.maps.init();\n            }\n\t\t\tif (AE.account) {\n\t\t\t\tAE.account.init();\n\t\t\t}\n            if (AE.modal) {\n                AE.modal.init();\n            }\n\t\t\tif (AE.mura) { \n\t\t\t\twindow.addEventListener('load', checkMura);\n\t\t\t}\n\t\t\tif (AE.newsletter) {\n\t\t\t\tAE.newsletter.init();\n\t\t\t}\n             if (AE.feeds) {\n                AE.feeds.init();\n            }\n            if (AE.booking && $('#aebooking,#aemodify,#peugeot-buy-back')[0]) {\n                AE.booking.init(); /* This init will run init functions for its sub-modules. */\n            }\n\t\t\t// White label iFrame pages\n\t\t\tif ($('.whitelabel-if')[0]) {\n\t\t\t\twindow.addEventListener('load', checkWlIframeResizer);\n\t\t\t}\n            \n            // Preventing persistent button loading states\n            // WEBAE3-5945 - Reset any disabled elements on initial page show (to fix back/forward navigation issues)\n            window.addEventListener('pageshow', resetLoadingBtns);\n\n            function resetLoadingBtns()\n            {\n                $('.ui--btn-submit-wait').removeAttr('disabled').removeClass('btn--no-icon').find('i.fa-cog').remove();\n                $('.rateFinger__button').removeAttr('disabled').removeClass('btn--no-icon');\n                $('.insurance__options.last td.btn-disabled i.fa-cog, #insuranceUI .package-btn-wrapper.btn-disabled i.fa-cog').remove();\n                $('.insurance__options.last td.btn-disabled, #insuranceUI .package-btn-wrapper.btn-disabled').removeClass('btn-disabled');\n                $('#carUpgradeY, #carUpgradeN').removeAttr('disabled');\n                $('.fingerCancelLink').css('pointer-events', 'all');\n                \n                // iPhone Safari only:\n                if($('body').attr('id') == 'results' && $('html').hasClass('ios') && $('html').hasClass('mobile') && $('html').hasClass('ua-safari') && $('.ui--btn-submit-wait').length) {\n                    AE.ui.init();\n                    AE.booking.matrix.init();\n                    AE.ui.search.init();\n                }\n                \n                $('.ui--btn-submit-wait').removeClass('ui--btn-submit-wait');\n            }\n            \n\t\t\t// White label page within an iFrame window\n\t\t\tfunction checkWlIframeResizer() {\n\t\t\t\tif ('parentIFrame' in window) {\n\t\t\t\t\t// AE PAGE URLs: /, /search/, /results/, /options/, /upgrade/, /checkout/, /confirmation/\n\t\t\t\t\tvar wlIframePagesNotToScrollToTheTop = [\"\", \"/\", \"/search/\", \"/foo/\", \"/bar/\"]; //zero-based\n\t\t\t\t\tif (wlIframePagesNotToScrollToTheTop.indexOf(oSite.path_info) < 0) {\n\t\t\t\t\t\t// if we do not find a page in the list, that means we want to shift the parent page\n\t\t\t\t\t\tvar amountOfParentWindowToShow = 50; //in pixels\n\t\t\t\t\t\twindow.parentIFrame.getPageInfo(function(parentPageInfo) { \n\t\t\t\t\t\t\tvar distanceFromParentTopToIframe = parentPageInfo.offsetTop;\n\t\t\t\t\t\t\tvar amountToScrollParentWindow = distanceFromParentTopToIframe - amountOfParentWindowToShow;\n\t\t\t\t\t\t\twindow.parentIFrame.scrollTo(0, amountToScrollParentWindow); //scroll the parent page\n\t\t\t\t\t\t\twindow.parentIFrame.getPageInfo(false); //stop trying to auto-scroll\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (wlIframePagesNotToScrollToTheTop.indexOf(oSite.path_info) == 0 || wlIframePagesNotToScrollToTheTop.indexOf(oSite.path_info) == 1) {\n\t\t\t\t\t\t// This is the homepage (array is zero-based)\n\t\t\t\t\t\t/*\n\t\t\t\t\t\twindow.parentIFrame.scrollTo(0,0); //scroll the parent page to it's top\n\t\t\t\t\t\twindow.parentIFrame.getPageInfo(false); //stop trying to auto-scroll\n\t\t\t\t\t\t*/\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\twindow.removeEventListener('load', checkWlIframeResizer);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsetTimeout(function(){\n\t\t\t\t\treturn checkWlIframeResizer();\n\t\t\t\t},100); // wait 1/10th of a second\n\t\t\t}\n\t\t\t\n\t\t\tfunction checkAEcd() {\n\t\t\t\tif ('AECustomDimension' in window) {\n\t\t\t\t\tAE.cd.init();\n\t\t\t\t\twindow.removeEventListener('load', checkAEcd);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn checkAEcd();\n\t\t\t}\n\t\t\t\n\t\t\tfunction checkMura() {\n\t\t\t\tif ('mura' in window) {\n\t\t\t\t\tAE.mura.init();\n\t\t\t\t\twindow.removeEventListener('load', checkMura);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn checkMura();\n\t\t\t}\n\t\t\t\n            /*\n            Setup debouncing for resize tasks. Run the manageResize function once upon init. This part relies upon having UnderscoreJS\n            loaded along with jQuery. It runs all resize tasks at the end of a resize. DO NOT CHANGE THIS TO A THROTTLE. It lowers our\n            performance considerably and the manageResize task will error out.\n            http://underscorejs.org/\n            */\n            var debounced = _.debounce(APP.manageResize, 250);\n            $(window).on('resize', debounced);\n\n            var debounceScroll = _.debounce(APP.manageScroll, 0, true);\n            $('#scroll-content').on('scroll', debounceScroll);\n\n            /* Initial resize tasks */\n            var initTasks = {\n                func: function() {\n                    /* These lines of code will be run during resize, but they'll be throttled. */\n\n                    var siteSize = APP.getSiteViewType();\n\n                    /* Support for CSS break-points */\n                    if (siteSize === 'desk' || siteSize === 'desk-wide') {\n                        // Add or remove classes if the window is big.\n                    } else {\n                        // Add or remove classesif the window is small.\n                    }\n\n                    /* Some tasks need to be run only when transitioning to or from the palm size. */\n\n                    /* If the current size doesn't match the last known size. */\n                    if (APP.windowSize !== siteSize) {\n\n                        if (APP.windowSize === 'palm') {\n                            /* Starting size was palm, which means that we're getting larger. Moving up. */\n                            APP.palmTransition(false);\n                        } else {\n                            /*\n                            Started at a larger size, so we only want to do something if we're going to palm. We don't want\n                            to change anything if we're just going from 'desk' to 'lap', for example.\n                            */\n                            if (siteSize === 'palm') {\n                                APP.palmTransition(true);\n                            }\n                        }\n                        /* After sorting out what to do, set the new props size. */\n                        APP.windowSize = siteSize;\n\n                    } else {\n                        /* Sizes match, so there's no need to do anything. */\n\n                    }\n                },\n                args: [] // No arguments, so it's an empty array.\n            };\n            initTasks.func(initTasks.args); // Initial call of initial resize task.\n            APP.addResizeTask(initTasks);\n            APP.manageResize();\n            \n            /* Uncomment this block of code to see when the palmTransition() function fires, and to see the arguments array.\n            var myFunction = function() {\n            console.log('myfunction: ' + arguments[0]);\n            console.log(arguments);\n            }\n            var myTask = {func:myFunction, args:['arg1','arg2']}\n            APP.addTransitionTask(myTask);\n            */\n            dfd_ready.resolve();\n            if (AE.forms) AE.forms.postAutoForm();\n        },\n        _augmentPrivateBrowsingLocalStorage: function() {\n            // See gist.github.com/jarrodirwin/\n            // Refer to gist.github.com/remy/350433\n            var Storage = function(type) {\n                function createCookie(name, value, days) {\n                    var date, expires;\n\n                    if (days) {\n                        date = new Date();\n                        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n                        expires = \"; expires=\" + date.toGMTString();\n                    } else {\n                        expires = \"\";\n                    }\n                    document.cookie = name + \"=\" + value + expires + \"; path=/\";\n                }\n\n                function readCookie(name) {\n                    var nameEQ = name + \"=\",\n                        ca = document.cookie.split(';'),\n                        i, c;\n\n                    for (i = 0; i < ca.length; i++) {\n                        c = ca[i];\n                        while (c.charAt(0) == ' ') {\n                            c = c.substring(1, c.length);\n                        }\n                        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);\n                    }\n                    return null;\n                }\n\n                function setData(data) {\n                    data = encodeURIComponent(JSON.stringify(data));\n                    return (type == 'session') ? createCookie(getSessionName(), data, 365) : createCookie('localStorage', data, 365);\n                }\n\n                function clearData() {\n                    return (type == 'session') ? createCookie(getSessionName(), '', 365) : createCookie('localStorage', '', 365);\n                }\n\n                function getData() {\n                    var data = type == 'session' ? readCookie(getSessionName()) : readCookie('localStorage');\n                    return data ? JSON.parse(decodeURIComponent(data)) : {};\n                }\n\n                function getSessionName() {\n                    if (!window.name) window.name = new Date().getTime();\n                    return 'sessionStorage' + window.name;\n                }\n\n                var data = getData();\n\n                return {\n                    length: 0,\n                    clear: function() {\n                        data = {};\n                        this.length = 0;\n                        clearData();\n                    },\n                    getItem: function(key) {\n                        return data[key] === undefined ? null : data[key];\n                    },\n                    key: function(i) {\n                        // not perfect, but works\n                        var ctr = 0;\n                        for (var k in data) {\n                            if (ctr == i) return k;\n                            else ctr++;\n                        }\n                        return null;\n                    },\n                    removeItem: function(key) {\n                        delete data[key];\n                        this.length--;\n                        setData(data);\n                    },\n                    setItem: function(key, value) {\n                        data[key] = value + '';\n                        this.length++;\n                        setData(data);\n                    }\n                };\n            };\n\n            // Replace window.localStorage and window.sessionStorage with out custom implementation.\n            var localStorage = new Storage('local');\n            var sessionStorage = new Storage('session');\n\n            window.localStorage = localStorage;\n            window.sessionStorage = sessionStorage;\n            // For Safari private browsing need to also set the proto value.\n            if (window.localStorage) {\n                window.localStorage.__proto__ = localStorage;\n                window.sessionStorage.__proto__ = sessionStorage;\n            }\n        },\n        addResizeTask: function(task) {\n            /*\n\n            Adds and object with a \"func\" property and an \"args\" property. This is VERY important, because we use the apply() method\n            in manageResize(). All tasks in the queue will be run during resize. We throttle resizing to keep things from getting too crazy.\n\n            Basic syntax:\n            myTask = {func:myFunction, args:[arg1,arg2]}\n\n            Example of adding a task:\n            var myTask = { func: function(){console.log(\"I'm resizing!\")} }\n            APP.addResizeTask(myTask);\n\n            Or you could be fancy and do this:\n            APP.addResizeTask( { func: function(){console.log(\"I'm resizing!\")} } );\n            */\n\n            task.args = task.args || [];\n            APP.resizeTasks.push(task);\n        },\n        addScrollTask: function(task) {\n            task.args = task.args || [];\n            APP.scrollTasks.push(task);\n        },\n        addTransitionTask: function(task) {\n            /*\n            Same as addResizeTask() but meant for the transition between the \"palm\" size and anything larger.\n\n            IMPORTANT NOTE: Syntax is the same as above, but the first argument will always be the direction of the transition. So if you\n            send in the following:\n            -- var myTask = {func:myFunction, args:[arg1,arg2]}\n            -- APP.addTransitionTask(myTask);\n\n            It would be executed like this:\n            -- myFunction(direction,arg1,arg2);\n\n            */\n\n            task.args = task.args || [];\n\n            /*\n            Insert a false value in the beginning of the args array. This is a placeholder for the \"toPalm\" variable and will be updated\n            each time the palmTransition() function is run.\n            */\n            task.args.unshift(false);\n            APP.transitionTasks.push(task);\n        },\n        manageResize: function() {\n            var newWidth = APP.props.$bodyElement.outerWidth(true);\n\n\n            // Correct footer height\n            if (APP.props.$bodyElement.hasClass('searchwait') || APP.props.$bodyElement.hasClass('sticky-active')) {\n\n                // The CSS kills the absolute positioning on the footer, so we don't need to compensate by addign padding to the container.\n                var footerHeight = (APP.getSiteViewType() === 'palm') ? 0 : $('#main-footer__content').outerHeight(true);\n\n                APP.props.$mainFooter.height(footerHeight); //.addClass('sticky');\n                APP.props.$stickyWrapper.css('padding-bottom', footerHeight);\n            }\n\n\n            // If the width has changed, then run resize tasks. Forget the window height.\n            if (APP.width !== newWidth) {\n\n                // Set width to the new window width\n                APP.width = newWidth;\n\n                // Cycle through resize tasks.\n                for (var i = 0; i < APP.resizeTasks.length; i++) {\n                    var task = APP.resizeTasks[i];\n                    task.func.apply(this, task.args);\n                }\n            }\n        },\n        manageScroll: function() {\n            // Cycle through scroll tasks.\n            for (var i = 0; i < APP.scrollTasks.length; i++) {\n                var task = APP.scrollTasks[i];\n                task.func.apply(this, task.args);\n            }\n        },\n        heightAdjust: function() {\n            var eleHeight = 0;\n\n            $(arguments[0]).each(function() {\n                $(this).height(''); // set to auto height\n            });\n            $(arguments[0]).each(function() {\n                eleHeight = ($(this).height() > eleHeight) ? $(this).height() : eleHeight; // find tallest element\n            });\n            $(arguments[0]).each(function() {\n                $(this).height(eleHeight); // set height of the tallest element\n            });\n\n            return eleHeight;\n        },\n        palmTransition: function(toPalm) {\n            /*\n            NOTE: This function is called by initTasks(), which is the first task function added to manageResize() above. Every resize,\n            the window size is checked to see if this function should be run.\n\n            Once run, we cycle through the palm transition tasks. \"toPalm\" is true when arriving at palm from a larger size, false when moving up from\n            palm to a larger size. We initialize the variable to false in case it isn't passed in for some reason.\n            */\n            toPalm = toPalm || false;\n            for (var i = 0; i < APP.transitionTasks.length; i++) {\n                var task = APP.transitionTasks[i];\n                /* The first argument is inserted by addTransitionTask() as a placeholder for the \"toPalm\" variable. */\n                task.args[0] = toPalm;\n                task.func.apply(this, task.args);\n            }\n        },\n        getSiteViewType: function() {\n            var sizes = {\n                /*\n                Support for CSS break-points. If you change them in the variables Sass file, then\n                you need to change them here as well. This function should be used in harmony with CSS.\n                */\n                lapStart: 701,\n                deskStart: 1024,\n                deskWideStart: 1200\n            };\n            currentSize = APP.props.$bodyElement.outerWidth(true);\n            sizeType = \"palm\";\n\n            if (currentSize >= sizes.lapStart) {\n                sizeType = \"lap\";\n            }\n            if (currentSize >= sizes.deskStart) {\n                sizeType = \"desk\";\n            }\n            if (currentSize >= sizes.deskWideStart) {\n                sizeType = \"desk-wide\";\n            }\n            return sizeType;\n        },\n\t\tgetCriteoTagSiteViewType: function() {\n\t\t\tswitch (AE.getSiteViewType()) {\n\t\t\t\tcase 'palm':\n\t\t\t\t\tsizeType = 'm';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'lap':\n\t\t\t\t\tsizeType = 't';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'desk':\n\t\t\t\tcase 'desk-wide':\n\t\t\t\t\tsizeType = 'd';\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tsizeType = 'd';\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\n\t\t\treturn(sizeType);\n\t\t},\n        buildURLObject: function() {\n            APP.url = APP.url || {};\n            APP.url.props = APP.url.props || {};\n            APP.url.props.host = window.location.hostname;\n            APP.url.props.path = window.location.pathname;\n            APP.url.props.protcol = window.location.protocol;\n            APP.url.props.query = window.location.search;\n            APP.url.props.href = window.location.href;\n            var qString = (APP.url.props.query.length && APP.url.props.query.substring(0, 1) === '?') ? APP.url.props.query.substring(1) : APP.url.props.query;\n            var aPairs = qString.split('&');\n            for (var i = 0; i < aPairs.length; i++) {\n                var aKeyVal = aPairs[i].split('=');\n                if (aKeyVal[0].trim().length) APP.url[aKeyVal[0].trim()] = (aKeyVal[1]) ? aKeyVal[1].trim() : true;\n            }\n        }\n    };\n    return APP;\n})();\n\n/*\nThe comments below will tell the Prepros app to append the listed JavaScript files, resulting in one big JavaScript file.\nOur third-party service will then minify this in Production.\nhttp://discuss.prepros.io/t/concatenate-and-minify-javascript/19\n*/\n;var AE = AE || {}; /* Add to Base object or create it if it doesn't exist.  */\n\nAE.account = AE.account || (function () {\n\t/*\n\tDEPENDENCIES: AE\n\t*/\n\tvar APP = {\n\t\tinit: function () {\n\t\t\t$('.arrow').show();\n\t\t\tvar resetInput = document.getElementById('member_reset_email');\n\t\t\tvar resetBttn = document.getElementById('account_lookup_button');\n\n\t\t\t APP.props = {\n                $resetInput: document.getElementById('member_reset_email'),\n                $resetBttn: $(\"form.validate\"),\n                $isInCheckout: window.location.pathname.split('/')[1] == 'checkout',\n \t\t\t\t$isInMemberAccount: window.location.pathname.split('/')[1] == 'member-accounts',\n                $accountLoginForm: $(\"form#account_login_form:visible\"),\n                $isInLogin:($(\"form#account_login_form:visible\").length !=0) ? true :false,\n                $isLoggedIn: (window.jsloginStatus == 'true' || window.jsloginStatus)? true :false, \n                $memberDefaultSection: $('#member_account_information_block'),    \n                $ObjMember: '/plugins/ae3/lib/Member3.cfc' ,\n                $ObjAff: '/plugins/ae3/lib/Affiliate3.cfc'                           \n         \t};         \t\n\n\t\t\tif(APP.props.$resetInput){\n\t\t\t\tAPP.props.$resetInput.addEventListener('keydown',function(e){\n\t\t\t\t\tif(e.which == 13){\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tAPP.props.$resetBttn.click();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t//Added for WEBAE3-4802 - VM\n\n\t\t\tlet countryStates = ['US', 'AU', 'CA', 'BR', 'ZA'];\n\n\t\t\t$( window ).load(function() {\t\t\t\t\n\t\t\t\tvar selectedName = $('.country--select').find(\":selected\").val();\n\t\t\t\tif (countryStates.includes(selectedName)) {\n\t\t\t\t\t$('.state-container').show();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t$('.state-container').removeAttr(\"style\").hide();\n\t\t\t\t}\t\n\t\t\t});\n\t\t\t\n\t\t\t//Added for WEBAE3-4802 - VM\n\t\t\t\n\t\t\t$('.country--select').change(function(){\n\t\t\t\tvar chosenCountry = $(this).val();\t\t\t\n\t\t\t\tif(countryStates.includes(chosenCountry)){ \n\t\t\t\t\t$('.state-container').show();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t$('.state-container').removeAttr(\"style\").hide();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$('#account_update').on('focus', '.state--select,.country--select', function(){\t\t\t\t\n\t\t\t \tvar isValid = $(this).parent().hasClass('ui-state-valid'); \n\t\t\t \tvar isInValid = $(this).parent().hasClass('ui-state-invalid'); \n\t\t\t \tif(!isValid && !isInValid){$(this).parent().css(\"border\", \"2px solid #3089e0\");}\n\t\t\t});\n\n\t\t\t$('#account_update').on('blur', '.state--select,.country--select', function(){\t\t\t\t\n\t\t\t \t$(this).parent().css(\"border\", \"2px solid #5fba35\");\n\t\t\t});\n\n\t\t\t$('div.member_accounts [data-pattern=\"notblank\"],div.member_accounts [data-pattern=\"email\"]').on('keyup blur', function(ele) {\n\t\t\t\tvar $formId = $(this).parents('form').attr('id');\n\t\t\t\tvar $fld = $(this).attr('name');\n\t\t\t\tAPP.clearServerError($formId,$fld);\t\t\t\t\t\n\t\t\t});\n\n\t\t\n\t\t\t// only initilize load member information for acount logged in page\n\t\t\t//isInMemberAccount = window.location.pathname.split('/')[1] == 'member-accounts';\n\t\t\n\t\t\t$('input.validateEmail').on('keyup blur', function(ele) {\n\t\t\t\tvar $formId = $(this).parents('form').attr('id');\n\t\t\t\tvar $match = $(this).attr('data-match');\n\t\t\t\tvar $checkOther = $('#' + $formId +  ' input[name=' + $match + ']');\n\t\t\t\tAPP.initCustomMatchVerification(this);\n\t\t\t\tAPP.initCustomMatchVerification($checkOther);\t\t\t\t\n\t\t\t});\n\n\t\t\n\t\t\t$('input.validateRemail').on('keyup blur', function(ele) {\n\t\t\t\tAPP.initCustomMatchVerification(this);\t\n\t\t\t});\n\n\t\t\t$('input.validateRemail').on('paste', function(ele) {\n\t\t\t\tvar $formId = $(this).parents('form').attr('id');\n\t\t\t\tAPP.removeGuardianError($formId,$(this).attr('name'));\n\t\t\t});\n\n\n\t\t    $('input#member_reemail').on('blur keyup', function(ele) {\n\t\t\t\tAPP.initCustomMatchVerification(this);\n\t\t\t});\n\t\n\t\t   $('input.validateRepass').on('focus blur keyup', function() {\n\t\t   \t\tvar $result = APP.initCustomMatchVerification(this);\n\t\t\t});\n\n\t\t\t$('input.validatePassword').on('focus keyup blur', function(ele) {\n\n\t\t\t\tvar $formId = $(this).parents('form').attr('id');\n\n\t\t\t\tvar $match = $(this).attr('data-match');\n\t\t\t\tvar $checkOther = $('#' + $formId +  ' input[name=' + $match + ']');\n\t\t\t\tif($(this).hasClass('legacy')){\n\t\t\t\t\tAPP.checkPasswordLegacy($formId);\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tAPP.checkPassword($formId);\n\t\t\t\t\tAPP.initCustomMatchVerification($checkOther);\n\t\t\t\t}\t\t\t\t\t\t\n\t\t\t});\n\n\t\t  $('input#current_password').on('blur', function(ele) {\n\t\t\t\tvar $formId = $(this).parents('form').attr('id');\n\t\t\t    var $error_ele = APP.getErrorEle($formId,$(this).attr('name'));\n\t\t\t\tAPP.removeGuardianError($formId,$(this).attr('name'));\n\t\t\t\t$($error_ele ).html('');\t\n\t\t\t});\n\n\n\t       $('input.current_pwd').on('blur', function(ele) {\n\t\t\t\tvar $formId = $(this).parents('form').attr('id');\n\t\t\t    var $error_ele = APP.getErrorEle($formId,$(this).attr('name'));\n\t\t\t\t//APP.removeGuardianError($formId,$(this).attr('name'));\n\t\t\t\t$($error_ele ).html('');\t\n\t\t\t});\n\n\t\t    $('input#member_email').on('blur', function(ele) {\n\t\t  \t     var $formId = $(this).parents('form').attr('id');\n\t\t  \t     var $error_ele = APP.getErrorEle($formId,'member_email');\n\t\t\t\t$($error_ele).html('');\t\n\t\t\t});\n\n\t\t\tif (APP.props.$isInMemberAccount && !APP.props.$isInLogin) {\n\n\t\t\t\t $('#member_signup #country,#state').on('blur', function() {\n\t\t\t\t\t$(this).parent().css(\"border\", \"2px solid #5fba35\");\t\t\t\t\t\n\t\t\t\t });\n\n\t\t\t\t $('#member_signup #country,#state').on('focus', function() {\n\t\t\t\t \tvar isValid = $(this).parent().hasClass('ui-state-valid'); \n\t\t\t\t \tvar isInValid = $(this).parent().hasClass('ui-state-invalid'); \n\t\t\t\t \tif(!isValid && !isInValid){$(this).parent().css(\"border\", \"2px solid #3089e0\");}\t\t\t\t\t\n\t\t\t\t });\n\n\t\t\t\t//jsloginStatus status appears to be not a true boolean\n\t\t\t\tif (APP.props.$isLoggedIn  && APP.props.$memberDefaultSection.length != 0) {\n\t\t\t\t\t/* Member Account page */\n\t\t\t\t\t$('#account_update_button').attr('disabled', false);\n\t\t\t\t\tAPP.loadAccountInformation(false);\n\t\t\t\t\t//WEBAE3-4930 fire ajax call if opening payment section via nav link, only run\n\t\t\t\t\t//this if we have correct div\n\t\t\t\t\tif(document.getElementById('member_payment_information_block')){\n\t\t\t\t\t\tAPP.getPayOptions();\n\t\t\t\t\t}\n\t\t\t\t\t// If we are getting to the member account page via link, determine which section to show\n\t\t\t\t\tif ( localStorage.getItem('memberAccountSection') && _.isString(localStorage.getItem('memberAccountSection')) && localStorage.getItem('memberAccountSection') != '') {\n\t\t\t\t\t\tAPP.navigateMemberPageLocalStorage();\n\t\t\t\t\t }\n\t\t\t\t}\n\t\t}\n\n\t\tAE.ui.addBodyClickTask({\n\t\t\tfunc: APP.onBodyClick\n\t\t});\n\n\t},\n\n\t/* Body Click Watch Tasks */\n\tonBodyClick: function (event, $target) {\t\t\n\n\t\t// Prevent the 'Enter Key' from submitting forms\n\t\tif (event.which !== 13) {\n\t\t\tvar elemID, thisForm;\n\t\t\t// only initilize load member information for acount logged in page\n\t\t\t//var isInMemberAccount = window.location.pathname.split('/')[1] == 'member-accounts';\n\t\t\tif($target.hasClass('member_login_portable') || $target.parent().hasClass('member_login_portable')) {\n\t\t\t\n\t\t\t\tAE.ui.dialog.launch({\n\t\t\t\t\tselector:'#memberloginNav',\n\t\t\t\t\tdialogClass:'account-signinform account-signinform--portable',\n\t\t\t\t\ttitleBar: false\n\t\t\t\t});\n\t\t\t}\n\t\t\t/* NAVBAR MEMBER LINKS */\n\t\t\tif($target.hasClass('my-account-dropdown') && APP.props.$isInMemberAccount) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t\tif ($target.is('#member_my_reservations_link')) {\n\t\t\t\tlocalStorage.setItem('memberAccountSection', 'my_reservations');\n\t\t\t}\n\t\t\tif ($target.is('#member_account_information_link')) {\n\t\t\t\tAPP.loadAccountInformation(false);\n\t\t\t\tlocalStorage.setItem('memberAccountSection', 'account_information');\n\t\t\t}\n\t\t\tif ($target.is('#member_payment_information_link')) {\n\t\t\t\tlocalStorage.setItem('memberAccountSection', 'payment_information');\n\t\t\t}\n\t\t\tif ($target.is('#member_promotions_link')) {\n\t\t\t\tlocalStorage.setItem('memberAccountSection', 'promotions');\n\t\t\t}\n\t\t\tif ($target.is('#member_customer_support_link')) {\n\t\t\t\tlocalStorage.setItem('memberAccountSection', 'customer_support');\n\t\t\t}\n\t\t\tif(!APP.props.$isInMemberAccount &&  $target.hasClass('member_link')){\n\t\t\t\twindow.location.replace('/member-accounts');\n\t\t\t}\n\t\t\tif(APP.props.$isInMemberAccount &&  $target.hasClass('member_link') && APP.props.$isInLogin && window.jsloginStatus == 'true'){\n\t\t\t\twindow.location.replace('/member-accounts');\n\t\t\t}\n\t\t\tif($target.parent().parent().is('#member_account_information_block')){APP.loadAccountInformation(false);}\n\n\t\t\tif ($target.closest('div.menu-dropdown').hasClass('account-signinform') &&  $target.hasClass('ui-dialog-titlebar-close')){\n\t\t\t \tvar resetHidden= $(\"#memberPasswordResetNav\").hasClass('visuallyhidden');\n\t\t\t\tif(!resetHidden){\n\t\t\t\t\tAPP.setHTML('member-response-left', ''); \n\t\t\t\t\tAPP.hideEle('memberPasswordResetNav');\n\t\t\t\t\tAPP.showEle('memberloginNav');\n\t\t\t\t\t$(\"#member_reset_password_nav\").find(\"input[type=text], input[type=password], input[type=email]\").val(\"\");\n\t\t\t\t}\n\t\t\t }\n\n\t\t\tif($target.hasClass('account_post') &&  APP.props.$isInMemberAccount && !$target.hasClass('memberLogout') && !APP.props.$isInLogin){\n\t\t\t\tAPP.navigateMemberPageLocalStorage();\n\t\t\t}\n\t\n\t\t\tif ($target.is('#submitForm') &&  $(event.target).attr('data-value') == 'btt-submit_booking') {\n\t\t\t\tvar frm_selector =  'form#ae-checkout';\n\t\t\t\tvar $forms = $(frm_selector);\n\t\t\t\tAE.forms.applyGuardian($forms);\n\t\t\t\tAE.forms.addSpinGear($target);\n\n\t\t\t\t$(\"form#ae-checkout\").submit();\n\n\t\t\t\tvar eleInvalid = $(frm_selector + \" .ui-state-invalid\")[0];\t\n\t\t\t\tif (eleInvalid){\n\t\t\t\t    AE.forms.removeSpinGear($target);\n\t\t\t\t} \n\t\t\t}\n\n\t\t\tif ($target.is('#acct__pswd__submit')) {\n\t\t\t\t var $thisForm = $target.closest('form')[0];\n\t\t\t\t var $matchEle = $(\"form#\" + $thisForm.id + \" input.validateRepass\");\t\t\t\t\n\t\t\t\t $(\"span.custom_msg\").html('');\n\t\t\t\t $($thisForm).submit();\t\t\t\t\t\t\t\t\t\n\t\t\t}\n\n\t\t\t/************************ Aff ACCOUNT BUTTONS   **********************/\t\t\t\n\n\t\t\tif ($target.is('#bttn_aff_pass_lookup')) {\n\t\t\t\tAE.forms.addSpinGear($target);\n\t\t\t\tAPP.sendResetAff($target);\t\t\t\t\t\t\t\t\n\t\t\t}\n\n\t\t\tif ($target.is('#btn_aff_pass_reset')) {\n\t\t\t\tAPP.submitAndCheckresetPasswordAff($target);\t\t\t\t\t\t\n\t\t\t}\n\n\t\t\tif ($target.is('#btn_aff_login')) {\n\t\t\t\tAE.forms.addSpinGear($target);\t\t\t\t\t\t\n\t\t\t}\n\n\t\t\tif ($target.is('#submitForm') &&  $(event.target).attr('data-value') == 'btn_aff_signup') {\n\t\t\t\tvar $thisForm = $target.closest('form')[0];\n\t\t\t    $(\"form#\" + $thisForm.id + \" span.custom_msg\").html('');\n\t\t\t}\n\n\t\t\tif($target.hasClass('bttn_aff_pass_update--cancel')){\n\t\t\t\t$(\"div.frm_aff_update\").removeClass('visuallyhidden'); \n\t\t\t\t$( \"div#aff_pass_result\" ).remove();\n\t\t\t\t$( \"button.bttn_aff_pass_update--cancel\" ).remove();\n\t\t\t\t$('div.secnav')[0].scrollIntoView({behavior:'smooth',block: 'start'});\n\t\t\t}\n\n\t\t\tif($target.hasClass('btn--affOp')) {\n\t\t\t\t$(\"div.aff_frm_result\").html('');\n\t\t\t}\n\t\t\t\n\t\t\t/********* MEMBER ACCOUNT BUTTONS ******************/\n\n\t\t\t// Account logout link\n\t\t\tif ($target.hasClass('memberLogout')) {\n\t\t\t\n\t\t\t\tif(!$target.hasClass('noSpinner')){\n\t\t\t\t\t$('.arrow').hide();\n\t\t\t\t\tAE.forms.addSpinGear($target);\n\t\t\t\t}\n\t\t\t\t// WEBAE3-2167 clear local storage on logout\n\t\t\t\ttry {\n\t\t\t\t\tlocalStorage.clear();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// no local storage to clear\n\t\t\t\t}\n\t\t\t\t$('#account_form .account_form').val($(event.target).attr('data-value'));\n\n\t\t\t\tif(APP.props.$isInMemberAccount){\n\t\t\t\t\t$('#account_form input[name=form_location]').val('member-account');\n\t\t\t\t}\n\t\t\t\tAPP.logOutMember();\n\t\t\t\t//$('#account_form').submit();\n\t\t\t}\n\n\t\t\t// Member login\n\t\t\tif ($target.is('#account_login_button')) {\n\t\t\t\t$('form[name=\\'account_login_form\\']').submit(function(event) {event.preventDefault();});\n\t\t\t\t//APP.loginUser(); moved to AE.forms.js - WEBAE3-1686\n\t\t\t}\n\n\t\t\t// Create Account link\n\t\t\tif ($target.hasClass('account_create_link')) {\n\t\t\t\tthisForm = $('.account_create_link').closest('form')[0];\n\t\t\t\tlocalStorage.setItem('memberAccountSection', 'createAccount');\n\t\t\t\t$(thisForm).submit();\n\t\t\t}\n\n\t\t\t// Create Account submit\n\t\t\tif ($target.is('#account_create_button')) {\n\t\t\t\tAE.forms.addSpinGear($target);\n\t\t\t\t$($target).prop('disabled', true);\n\t\t\t\tif(APP.checkAccountFormsPreSubmit($target)){\n\t\t\t\t\tAPP.submitMemberAccountCreateForm($target);\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\t$($target).prop('disabled', false);\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ($target.is('#savecard')) {\n\t\t\t\teleSaveCard = $('#savecard').is(':checked');\n\t\t\t\tAPP.setHTML('Member_error_message','');\n\t\t\t\t\n\t\t\t\tif(eleSaveCard){\t\n\t\t\t\t\tAPP.setHTML('acct_processing','..... checking accounts');\n\t\t\t\t\tthisForm = $target.closest('form')[0];\n\t\t\t\t\tvar memberEmail = $('#' + thisForm.id).find('input[name=email]').val();\n\t\t\t\t\tvar exists = '';\t\n\t\t\t\t\tAPP.checkMemberExistsByEmail(memberEmail);\t\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tAPP.handleCreateAccountFormCheckout(false, false);}\t\t\n\t\t\t}\n\n\t\t\tif ($target.is('#account_edit_button')) {\n\t\t\t\t// sets timeout for form to come into view after scrolling\n\t\t\t\tfunction editBtnScroll(callback) {\n\t\t\t\t\t$('#member_account_information_block')[0].scrollIntoView({behavior:'smooth',block: 'start'});\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}, 50);\n\t\t\t\t  }\n\t\t\t\t  \n\t\t\t\teditBtnScroll(function() {\n\t\t\t\t\tAPP.loadAccountUpdateForm();\n\t\t\t\t\tAPP.showHide('account_update','account_information');\n\t\t\t\t\t$('div.required').removeClass('ui-state-valid');\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Account edit-cancel button\n\t\t\tif ($target.is('#account_edit_cancel_button')) {\n\t\t\t\t// move the page to put the account information more into view\n\t\t\t\tAPP.loadAccountInformation(true);\n\t\t\t\tAPP.setHTML('dspMemberUpdate', '');\n\t\t\t}\n\n\t\t\t// Account delete button\n\t\t\tif ($target.is('#account_delete_button') || $target.is('#account_edit_delete_button')) {\n\t\t\t\tAPP.deleteWarning($target);\n\t\t\t}\n\n\t\t\t// === Added for WEBAE3-4756 === //-\n\t\t\t$('#account_update_button').click(function(){\n\t\t\t\tsetTimeout(\n\t\t\t\t  function() {\t\t\t\n\t\t\t\t\tconst cookieValue = document.cookie\n\t\t\t\t\t.split('; ')\n\t\t\t\t\t.find(row => row.startsWith('MEMBERAGE'))\n\t\t\t\t\t.split('=')[1];\n\t\t\t\t\t//\n\t\t\t\t\t// Get the existing data\n\t\t\t\t\tvar existing = localStorage.getItem('aeSearch');\n\t\t\t\t\t// convert the localStorage string to an array\n\t\t\t\t\texisting = existing ? JSON.parse(existing) : {};\n\t\t\t\t\t\t\t\n\t\t\t\t\tif ($('#member_dob').val().length === 0) {\n\t\t\t\t\t\texisting['searchAge'] = '40';\n\t\t\t\t\t\tlocalStorage.setItem('aeSearch', JSON.stringify(existing));\n\t\t\t\t\t\t//Set check box\n\t\t\t\t\t\tvar boxexisting = localStorage.getItem('aeSearch');\n\t\t\t\t\t\tboxexisting = boxexisting ? JSON.parse(boxexisting) : {};\n\t\t\t\t\t\tboxexisting['searchAgeCheckbox'] = true;\n\t\t\t\t\t\tlocalStorage.setItem('aeSearch', JSON.stringify(boxexisting));\n\t\t\t\t\t\t//searchAgeCheckbox\n\t\t\t\t\t\tlocation.reload();\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\texisting['searchAge'] = cookieValue;\t\t\t\t\t\t\n\t\t\t\t\t\t// Save back to localStorage\n\t\t\t\t\t\tlocalStorage.setItem('aeSearch', JSON.stringify(existing));\n\t\t\t\t\t\t// console.log(cookieValue);\n\t\t\t\t  \n\t\t\t\t\t\t//Set check box\n\t\t\t\t\t\tvar boxexisting = localStorage.getItem('aeSearch');\n\t\t\t\t\t\tboxexisting = boxexisting ? JSON.parse(boxexisting) : {};\n\t\t\t\t\t\tboxexisting['searchAgeCheckbox'] = true;\n\t\t\t\t\t\tlocalStorage.setItem('aeSearch', JSON.stringify(boxexisting));\n\t\t\t\t\t\t//searchAgeCheckbox\n\t\t\t\t\t\tlocation.reload();\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t700);\n\t\t\t});\n\n\t\t\t// Account update button\n\t\t\tif ($target.is('#account_update_button')) {\n\t\t\t\tAE.forms.addSpinGear($target);\n\t\t\t\t$($target).prop('disabled', true);\n\t\t\t\tif(APP.checkAccountFormsPreSubmit($target)){\n\t\t\t\t\tAPP.submitMemberUpdate($target);\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\t$($target).prop('disabled', false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Account forgot password lookup button\n\t\t\tif ($target.is('.account_forgot_password')) {\n\t\t\t\twindow.location.replace('/member-accounts');\n\t\t\t}\n\n\t\t\t// Account send reset password button\n\t\t\tif ($target.is('#account_lookup_button')) {\n\t\t\t\tAE.forms.addSpinGear($target);\n\t\t\t\t$($target).prop('disabled', true);\n\t\t\t\tAPP.sendReset($target);\n\t\t\t}\n\n\t\t\t// Account save reset password button\n\t\t\tif ($target.is('.submit_password_save_button')) {\n\t\t\t\tvar thisForm = $target.closest('form')[0];\n\t\t\t\tvar frm_selector =  'form#' +  thisForm.id;\n\t\t\t\tvar $forms = $(frm_selector);\n\t\t\t\tAE.forms.applyGuardian($forms);\t\n\t\t\t\tAE.forms.addSpinGear($target);\t\t\n\t\t\t\tif(APP.checkAccountFormsPreSubmit($target)){\n\t\t\t\t\t$($target).prop('disabled', true);\n\t\t\t\t\tAPP.submitAndCheckresetPassword(thisForm.id,'',$target)\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\t$($target).prop('disabled', false);\n\t\t\t\t}\n\t\t\t\n\t\t\t}\n\n\t\t\tif ($target.is('#nav_submit_password_cancel')) {\n\t\t\t\tAPP.hideEle('memberPasswordResetNav');\n\t\t\t\tAPP.showEle('memberloginNav');\n\t\t\t\tthisForm.find(\"input[type=text], input[type=password], input[type=email]\").val(\"\");\t\t\t\t\t\n\t\t\t}\t\t\t\n\t\t\t// Reset password from member account logged in\n\t\t\tif ($target.is('#account_reset_memberUpdate')) {\n\t\t\t\twindow.jsloginStatus = false;\n\t\t\t\t$('#resetPasswordMemberUpdate').submit();\n\t\t\t}\n\t\t\t//WEBAE3-4932 my accoun stored payment handlers\n\t\t\tif ($target.is('#addNewCC')) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tAPP.toggleAddCard();\n\t\t\t\tAPP.getAddCardWidget();\n\t\t\t}\n\t\t\tif ($target.hasClass('deleteCC')) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tAPP.deleteCCWarning($target[0].dataset.cardid);\n\t\t\t}\n\t\t//clear dob field\n\t\tif ($target.hasClass('ui-datepicker-clear-input')) { \n\t\t\t\tevent.preventDefault();\n\t\t\t\t$('#member_dob').datepicker('setDate', null);\n\t\t\t\t$('span.ui-datepicker-clear-input').addClass('visuallyhidden');\n\t\t\t\t$('input#hidden-dob-date').val('');\n\t\t\t}\n\t\t}\n\n\t\tif ($target.hasClass('datePickerInput')) {\n\t\t\tAPP.showDobClear();\n\t\t}\n\n\t\tif($target.hasClass('toggleeMemberPayment')) {\n\t\t\tif($target.hasClass('open')) {\n\t\t\t\t//opening payment so get cards to display\n\t\t\t\tAPP.getPayOptions();\n\t\t\t} else {\n\t\t\t\tAPP.hideAddCardUI();//make sure AddCard UI gets hidden when closing payment pane\n\t\t\t\t$(\"#editCCControl\").empty();//empty control area on close\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\tif(APP.props.$isInMemberAccount){\n\t\t\tif ($target.hasClass('toggle_pm_header')){\n\t\t\t\t_.each($('.toggle_pm_header'),function(el){\n\t\t\t\t\tvar $el = $(el);\n\t\t\t\t\tif($el.data('togglee') !== $target.data('togglee')){\n\t\t\t\t\t\t$el.removeClass('open');\n\t\t\t\t\t\t$($el.data('togglee')).addClass('visuallyhidden');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif($target.attr('id') === 'headerMemberReservations'){\n\t\t\t\t\tAPP.loadAccountReservations();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t},\n\n\tnavigateMemberPageLocalStorage: function() {\n\t\tAPP.navigateMemberPage(localStorage.getItem('memberAccountSection'));\n\t\tlocalStorage.removeItem('memberAccountSection');\n\t},\n\n\tnavigateMemberPage:function (section){\n\t\tvar $sectionToOpen = '#Dummy';\n\t\tvar $sectionToScrollTo = $('#dummy_block')[0];\n\t\t$('.toggle_pm_header').removeClass('open');\n\t\t$('.togglee.push--top').addClass('visuallyhidden');\n\n\t\tswitch (section) {\n\t\t\tcase 'my_reservations':\n\t\t\t\t$sectionToOpen = '#toggleeMemberReservations';\n\t\t\t\t$sectionToScrollTo = $('#member_my_reservations_block')[0];\n\t\t\t\tAPP.loadAccountReservations();\n\t\t\t\tbreak;\n\t\t\tcase 'account_information':\n\t\t\t\t$sectionToOpen = '#toggleeMemberAccount';\n\t\t\t\t$sectionToScrollTo = $('#member_account_information_block')[0];\n\t\t\t\tbreak;\n\t\t\tcase 'payment_information':\n\t\t\t\t$sectionToOpen = '#toggleeMemberPayment';\n\t\t\t\t$sectionToScrollTo = $('#member_payment_information_block')[0];\n\t\t\t\tbreak;\n\t\t\tcase 'promotions':\n\t\t\t\t$sectionToOpen = '#toggleeMemberPromotions';\n\t\t\t\t$sectionToScrollTo = $('#member_promotions_block')[0];\n\t\t\t\tbreak;\n\t\t\tcase 'createAccount': \n\t\t\t\t//WEBAE3-3287 - Change the default panel here when member account created\n\t\t\t\tif(AE.props.chaosSystem == 'GB' || AE.props.chaosSystem == 'EU'){\n\t\t\t\t\t$sectionToOpen = '#toggleeMemberPromotions';\n\t\t\t\t\t$sectionToScrollTo = $('#member_promotions_block')[0];\t\n\t\t\t\t}\n\t\t\t\t//WEBAE3-3378 My Account - Remove auto-scroll from post account-creation screen\n\t\t\t\telse{\n\t\t\t\t\t$sectionToOpen = '';\n\t\t\t\t\t$sectionToScrollTo = '';\t\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'customer_support':\n\t\t\t\t$sectionToOpen = '#toggleeMemberSupport';\n\t\t\t\t$sectionToScrollTo = $('#member_customer_support_block')[0];\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t$sectionToOpen = '#toggleeMemberAccount';\n\t\t\t\t$sectionToScrollTo = $('#member_account_information_block')[0];\n\t\t\t\tbreak;\n\t\t}\n\n\t\t\tif($sectionToOpen == 'account_information' ){APP.loadAccountInformation(false);}\n\t\t\t\n\t\t\tif($sectionToScrollTo != '' && $sectionToOpen != ''){\t\t\t\n\t\t\t\t// open up the desired section\n\t\t\t\t$('[data-togglee=\"' + $sectionToOpen + '\"]').trigger('click');\n\n\t\t\t\t// move the page to put the desired section more into view\n\t\t\t\t//using different scroll to function for my reservations so it will scroll to top.\n\t\t\t\t$sectionToScrollTo.scrollIntoView({behavior:'smooth',block: 'start'});\n\t\t\t\t// Since we are already on the member account page, we no longer need this info\n\t\t\t}\n\t},\n\tduplicateAccountWarning: function (msg) {\n\t\t\tvar oButtons = {}; // Preparing the Object ahead of the dialog operation allows for Dynamic Button name/text\n\n\t\t\t\toButtons[AEdata.account.duplicateModal.btn_reset] = function () {\n\t\t\t\t\twindow.location.href = '/member-accounts';\n\t\t\t\t\tAE.ui.dialog.close();\n\t\t\t\t};\n\n\t\t\t\toButtons[AEdata.account.duplicateModal.btn_login] = function () {\n\t\t\t\t\twindow.location.href = '/member-accounts';\n\t\t\t\t\tAE.ui.dialog.close();\n\t\t\t\t};\n\n\n\t\t\tvar buttonOpts = {\n\t\t\t\tsetClass: 'align-center soft-half--left',\n\t\t\t\tlastButtonClass: 'push--top',\n\t\t\t\tfirstButtonClass: 'btn--primary push--top'\n\t\t\t};\n\n\t\t\tAE.ui.dialog.launch({\n\t\t\t\ttitleBar: true,\n\t\t\t\tid: 'duplicateWarning',\n\t\t\t\tdialogClass: 'top-dialog',\n\t\t\t\tcontent: buildDuplicateAcctMarkup(msg),\n\t\t\t\tbuttons: oButtons,\n\t\t\t\tapplyUI: true,\n\t\t\t\tbuttonOpts: buttonOpts,\n\t\t\t\twidth: ($(window).width() > 600) ? 500 : '70%'\n\t\t\t});\n\n\t\t\tfunction buildDuplicateAcctMarkup(msg) {\n\t\t\t\tvar docFrag = $(document.createDocumentFragment());\n\t\t\t\tdocFrag.append($(document.createElement('div')).append(msg));\n\n\t\t\t\treturn docFrag;\n\t\t\t}\n\t},\n\tduplicateAccountWarningUpdate: function ($msg) {\n\t\tvar oButtons = {}; // Preparing the Object ahead of the dialog operation allows for Dynamic Button name/text\n\t\t\toButtons[AEdata.account.duplicateModalUpdate.btn_cancel] = function () {\n\t\t\tAE.ui.dialog.close();\n\t\t\tAPP.navigateMemberPage('account_information');\n\t\t};\n\n\t\tvar buttonOpts = {\n\t\t\tsetClass: 'align-center soft-half--left',\n\t\t\tlastButtonClass: 'push--top',\n\t\t\tfirstButtonClass: 'btn--primary push--top'\n\t\t};\n\n\t\tAE.ui.dialog.launch({\n\t\t\ttitleBar: true,\n\t\t\tid: 'duplicateWarningUpdate',\n\t\t\tdialogClass: 'top-dialog',\n\t\t\tcontent: buildDuplicateAcctMarkup($msg),\n\t\t\tbuttons: oButtons,\n\t\t\tapplyUI: true,\n\t\t\tbuttonOpts: buttonOpts,\n\t\t\twidth: ($(window).width() > 600) ? 500 : '70%'\n\t\t});\n\n\t\tfunction buildDuplicateAcctMarkup($msg) {\n\t\t\tvar docFrag = $(document.createDocumentFragment());\n\t\t\tdocFrag.append($(document.createElement('div')).append($msg));\n\n\t\t\treturn docFrag;\n\t\t}\n\t},\n\tdeleteCCWarning:function(cardId) {\n\t\tvar oButtons = {}; // Preparing the Object ahead of the dialog operation allows for Dynamic Button name/text\n\t\toButtons[AEdata.account.oStoredPaymentLang.button_delete] = function() {\n\t\t\tAPP.deletePaymentOption(cardId);\n\t\t\tAE.ui.dialog.close();\n\t\t};\n\n\t\toButtons[AEdata.account.oStoredPaymentLang.button_cancel] = function() {\n\t\t\tAE.ui.dialog.close();\n\t\t};\n\n\t\tvar buttonOpts = {\n\t\t\tsetClass: 'align-center soft-half--left',\n\t\t\tlastButtonClass: 'push--top',\n\t\t\tfirstButtonClass: 'btn--primary push--top'\n\t\t};\n\n\t\tAE.ui.dialog.launch({\n\t\t\ttitleBar: true,\n\t\t\tid: 'deleteWarning',\n\t\t\tdialogClass: 'top-dialog',\n\t\t\tcontent: buildDeleteWarnMarkup(cardId),\n\t\t\tbuttons: oButtons,\n\t\t\tapplyUI: true,\n\t\t\tbuttonOpts: buttonOpts,\n\t\t\twidth: ($(window).width() > 600) ? 500 : '70%'\n\t\t});\n\n\t\tfunction buildDeleteWarnMarkup(cardId) {\n\t\t\t\n\t\t\tvar cardDetails = _.findWhere(AEdata.CARDS, {CARDID: cardId});\n\t\t\tcardDetails.cardTypeDisplay = (AEdata.oCClogos[cardDetails.CARDTYPE.toLowerCase()]) ? '<img style=\"flex:auto;\" src=\"'+AEdata.oCClogos[cardDetails.CARDTYPE.toLowerCase()]+'\">' : '<strong>' + cardDetails.CARDTYPE + '</strong> ';\n\t\t\tcardDetails.cardLast4 = '<strong>' + cardDetails.LAST4 + '</strong> ';\n\t\t\tcardDetails.cardExp = '<strong>' + cardDetails.EXP + '</strong> ';\n\t\t\t//show logo if we have one, otherwise card type text\n\t\t\tvar modalCardSummary = AEdata.account.oStoredPaymentLang.txt_card_summary.replace('##cardtype##',cardDetails.cardTypeDisplay);\n\t\t\tmodalCardSummary = modalCardSummary.replace('##last4##',cardDetails.cardLast4);\n\t\t\tmodalCardSummary = modalCardSummary.replace('##expdate##',cardDetails.cardExp);\n\t\n\t\t\tvar docFrag = $(document.createDocumentFragment());\n\t\t\tdocFrag.append($(document.createElement('h3')).append(AEdata.account.oStoredPaymentLang.confirm_delete_card_header));\n\t\t\tdocFrag.append('<div class=\"soft--ends text--center\">'+modalCardSummary+'</div>');\n\t\t\tdocFrag.append($(document.createElement('div')).append(AEdata.account.oStoredPaymentLang.confirm_delete_card_body));\n\t\t\treturn docFrag;\n\t\t}\n\t},\n\tdeleteWarning:function($Target) {\n\t\tvar oButtons = {}; // Preparing the Object ahead of the dialog operation allows for Dynamic Button name/text\n\t\toButtons[AEdata.account.deleteModal.btn_delete] = function() {\n\n\t\t\twindow.jsloginStatus = false;\n\t\t\ttry {\n\t\t\t\tlocalStorage.clear();\n\t\t\t} catch (err) {\n\t\t\t\t// no local storage to clear\n\t\t\t}\n\t\n\t\t\tAE.forms.addSpinGear($Target);\n\t\t\tvar $suid = $Target.data('suid');\n\t\t\tAPP.deleteSFRecord($suid);\n\t\t\t$('#submitMemberDeleteForm').submit();\n\t\t\tAE.ui.dialog.close();\n\t\t};\n\n\t\toButtons[AEdata.account.deleteModal.btn_cancel] = function() {\n\t\t\tAE.ui.dialog.close();\n\t\t};\n\n\t\tvar buttonOpts = {\n\t\t\tsetClass: 'align-center soft-half--left',\n\t\t\tlastButtonClass: 'push--top',\n\t\t\tfirstButtonClass: 'btn--primary push--top'\n\t\t};\n\n\t\tAE.ui.dialog.launch({\n\t\t\ttitleBar: true,\n\t\t\tid: 'deleteAccountWarning',\n\t\t\tdialogClass: 'top-dialog',\n\t\t\tcontent: buildDeleteWarnMarkup(),\n\t\t\tbuttons: oButtons,\n\t\t\tapplyUI: true,\n\t\t\tbuttonOpts: buttonOpts,\n\t\t\twidth: ($(window).width() > 600) ? 500 : '70%'\n\t\t});\n\n\t\tfunction buildDeleteWarnMarkup() {\n\t\t\tvar docFrag = $(document.createDocumentFragment());\n\t\t\tdocFrag.append($(document.createElement('h3')).append(AEdata.account.deleteModal.delete_warn_head));\n\t\t\tdocFrag.append($(document.createElement('div')).append(AEdata.account.deleteModal.delete_warn));\n\n\t\t\treturn docFrag;\n\t\t}\n\t}\n\t,addInvalidClass: function ($formId,$ele) {\n\t\tvar $thisEle = $('#' + $formId + ' input[name=' + $ele + ']');\n\t\tvar $parent  = $('#' + $formId + ' input[name=' + $ele + ']').parent();\n\t\t$parent.removeClass('ui-state-valid');\n\t\t$parent.addClass('ui-state-invalid');\n\t}\n\t,addValidClass: function ($formId,$ele) {\n\t\tvar $thisEle = $('#' + $formId + ' input[name=' + $ele + ']');\n\t\tvar $parent = $('#' + $formId + ' input[name=' + $ele + ']').parent();\n\t\tif($parent ){\n\t\t\t$parent.removeClass('ui-state-invalid');\n\t\t\t$parent.addClass('ui-state-valid');\n\t\t}\n\t},\n\tremoveInvalidClass: function ($formId,$ele) {\n\t\tvar $thisEle = document.querySelector('#' + $formId + ' #' + $ele);\n\n\t\tif($thisEle){\n\t\t\tvar $parent  = $($thisEle.parentNode);\n\t\t\tif ($ele == 'all') {\n\t\t\t\t$('div.required').removeClass('ui-state-invalid');\n\t\t\t} else {\n\t\t\t\t$parent .removeClass('ui-state-invalid').addClass('ui-state-valid');\n\n\t\t\t}\n\t\t}\n\t},\n\tremoveValidClass: function ($formId,$ele) {\n\t\tvar thisEle = document.querySelector('#' + $formId + ' #' + $ele);\n\t\tvar parent  = $(thisEle.parentNode);\n\t\tparent.removeClass('ui-state-valid');\t\t\n\t},\n\tremoveValidClassByClass: function ($formId, eleClass) {\n\t\t\tvar thisEle = document.querySelector('#' + $formId + ' .' + eleClass);\t\t\n\t\t\tvar parent  = $(thisEle.parentNode);\n\t\t\tparent.removeClass('ui-state-valid');\t\n\t},\n\tshowGridDiv: function ($ele, $formId) {\n\t\tvar thisEle = document.querySelector('#' + $ele);\n\t\t\n\t\tvar parent  = $(thisEle.parentNode);\n\t\tparent.removeClass('visuallyhidden');\n\t},\n\tshowGridDivByClass: function ($formId, eleClass) {\n\t\t\tvar thisEle = document.querySelector('#' + $formId + ' .' + eleClass);\t\t\n\t\t\tvar parent  = $(thisEle.parentNode);\n\t\t\tparent.removeClass('visuallyhidden');\n\t},\n\tgetWhichReset: function ($ele) {\n\t\tvar $str = '';\n \t\tif ($($ele).hasClass('nav')) {\n\t\t\t $str = 'member_reset_password_nav';\n\t\t}\n \t\telse if ($($ele).hasClass('signup')) {\n\t\t\t $str = 'member_signup';\n\t    }\n\t    else{$str = 'member_reset_password';}\n\t    return $str;\n\t},\n\thideGridDiv: function ($formId, $ele) {\n\t\tvar $thisEle = document.querySelector('#' + $ele);\n\t\t\tif($thisEle ){\n\t\t\t\tvar $parent  = $($thisEle.parentNode);\n\t\t\t\t$parent.addClass('visuallyhidden');\n\t\t\t}\n\t},\n\thideGridDivByClass: function ($formId, $eleClass) {\n\t\tvar $thisEle = document.querySelector('#' + $formId + ' .' + $eleClass);\t\n\t\t\tif($thisEle){\t\n\t\t\t\tvar $parent  = $($thisEle.parentNode);\n\t\t\t\t$parent.addClass('visuallyhidden');\n\t\t\t}\n\t},\n\tSetErrorText: function ($formId, $eleClass, $str) {\n\t\t\tvar $ele = $('#' + $formId + ' .' + $eleClass);\n\t\t\t$ele.innerHTML = $str;\t\t\t\t\t\t\n\t},\n\tloadAccountInformation: function (scrollTop) {\n\t\tvar cfc = APP.props.$ObjMember + '?method=showAccountInformation';\n\t\tvar $ele = '';\n\t\t\t$.ajax({\n        type: 'POST',\n        url: cfc,\n        dataType: 'json',\n       \tsuccess: function(result){\n         \tif(result.trim != ''){\n             $ele = document.getElementById('dspAccountInfo');\n\t\t\t\t\t\tif ($ele) {\n\t\t\t\t\t\t\t$ele.innerHTML = '';\n\t\t\t\t\t\t\t$ele.innerHTML = result;\n\t\t\t\t\t\t\tAPP.hideShow('account_update', 'account_information');\n\t\t\t\t\t\t\t// WEBAE3-3426 do not scroll to top when account info is expanded\n\t\t\t\t\t\t\t//Do need to scroll to member account info block after an edit SL\n\t\t\t\t\t\t\tif(scrollTop){$('#member_account_information_block')[0].scrollIntoView({behavior:'smooth',block: 'start'});}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t   \t},\n\t\t    error: function (/*xhr, ajaxOptions, thrownError*/) {\n\t\t     // console.log(xhr.status);\n\t\t     // console.log(thrownError);\n\t\t     }\n\t\t  });\n\t},\n\tlogOutMember: function () {\n\t\tvar cfc = APP.props.$ObjMember + '?method=memberLogoutRemote';\n\t\t\t$.ajax({\n                type: 'POST',\n                url: cfc,\n               \tsuccess: function(){\n               \t\t// WEBAE3-1669 - always reload the page after logging out to reflect account status\n               \t\twindow.location.reload();//keep user on page they logged in on WEBAE3-1662\n               \t },\n                error: function (xhr, ajaxOptions, thrownError) {\n                  // console.log(xhr.status);\n                  // console.log(thrownError);\n                 }\n          });\n\t},\n\tsubmitMemberUpdate:function($target){\n\t\tvar $checkEmail = $('#member_email').val();\n\t\tvar $currentemail = $('#member_email_old').val();\n\t\tvar $hasErrors = document.getElementsByClassName('ui-state-invalid')[0];\n\t\tvar $inputs  ='';\n\t\tvar $elemID  = '';\n\t\tvar $position = '';\n\t\tvar $thisposition = '';\n\n\t\tif(!$checkEmail){\n\t\t\t$errorFirst = document.getElementsByClassName('ui-state-invalid')[0];\n\t\t\t$errorFirst.scrollIntoView({behavior:'smooth',block: 'start'});\n\t\t\treturn false;\n\t\t}\n\t\n\t\tif($checkEmail != $currentemail){\n\t\t\tAPP.checkMemberExists($checkEmail,$target);\n\t\t}\n\t\telse{\n\t\t\t$elemID = $target.attr('id');\n\t\t\t$thisForm = $('#' + $elemID).closest('form')[0];\n\t\t\tAPP.submitAndCheckMemberAccountForm($thisForm.id, $target,'');\n\t\t}\n\t},\n\tsubmitAffiliateForm: function ($target) {\n\t\tvar $thisForm = $target.closest('form')[0];\n\t\tvar $forms = $($thisForm );\n\t\tAE.forms.applyGuardian($forms);\n\t\t$($thisForm).submit();\n\t},\n\n\tloadAccountUpdateForm: function () {\n\t\tvar cfc = APP.props.$ObjMember + '?method=dspUpdateAccountForm';\n\t\tvar $frm_selector =  'form#member_update';\n\t\t   $.ajax({\n\t         type: 'POST',\n\t         url: cfc,\n\t         dataType: 'json',\n\t          success: function(result){\n\t        \tif(!result.isEmpty()){\n\t\t\t\t\t$('div#dspMemberUpdate').html('');\n\t\t\t\t\t$('div#dspMemberUpdate').html(result.markup);\n\t\t\t\t\t//WEBAE3-4036 changed how state data is handled\n\t\t\t\t\tAEdata.arrstates = JSON.parse(result.states);\n\t\t\t\t\t//fixes state select issue with not displaying list options\n\t\t\t\t\tAE.ui.applyJQUI($frm_selector);\n\t\t\t\t\tAE.ui.selectmenu.init();\n\n\t\t\t\t\tvar $forms = $($frm_selector);\n\t\t\t\t\tAE.forms.applyGuardian($forms);\t\t\t\t\n\t\t\t\t\t//APP.navigateMemberPage('account_information');\n\t\t\t\t\t$('#member_account_information_block')[0].scrollIntoView({behavior:'smooth',block: 'start'});\n        \t\t}\n\t          },\n            error: function (/*xhr, ajaxOptions, thrownError*/) {\n              // console.log(xhr.status);\n              // console.log(thrownError);\n            }\n\t       });\n\n\t return false;\n\t},\n\tgetUrlParameter: function (sParam) {\n\t\t\t// utility function\n\t\t\tvar sPageURL = decodeURIComponent(window.location.search.substring(1));\n\t\t\tvar sURLVariables = sPageURL.split('&');\n\t\t\tvar sParameterName;\n\t\t\tvar index;\n\n\t\t\tfor (index = 0; index < sURLVariables.length; index++) {\n\t\t\t\tsParameterName = sURLVariables[index].split('=');\n\t\t\t\tif (sParameterName[0] === sParam) {\n\t\t\t\t\treturn sParameterName[1] === undefined ? true : sParameterName[1];\n\t\t\t\t}\n\t\t\t}\n\t},\n\tresetResetStatus: function (tokenExpired, isReset) {\n\t\t\tvar cfc = APP.props.$ObjMember + '?method=setResetStatus';\n\n\t\t\t$.ajax({\n\t\t\t\ttype: 'POST',\n\t\t\t\turl: cfc,\n\t\t\t\tdata: {\n\t\t\t\t\ttokenExpired: tokenExpired,\n\t\t\t\t\tisReset: isReset\n\t\t\t\t}\n\t\t\t});\n\t},\n\n\tsendResetAff: function ($target) {\n\t\tvar cfc = APP.props.$ObjAff + '?method=sendPasswordResetAff';\n\t\tvar $form = $($target).closest('form')[0];\n\t\tvar $formId  = ($form.length != 0) ?  $($form).attr('id') :'';\n\t\tvar $messDiv = $(\"div#msg_reset_response\");\n\t\tvar $frmInstructions = $(\"div#msg_reset_instr\");\n\t\tvar $resetFormDiv = $(\"div#form_reset_request\");\n\t\tvar $error_ele = APP.getErrorEle($formId,'email');\n\t\tvar $atv2 = (APP.getUrlParameter('atv2')) ? 1 :0;\n\t\tif($formId ==''){return false;}\n\t\tvar $hasBlanks = APP.checkBlank($formId);\n\t\t// var $memEmail = $(\"#\" + $form.id + \" input[name='email']\");\n\t\t// var $memName = $(\"#\" + $form.id + \" input[name='membername']\");\t\n\t\t// var $typex= $(\"#\" + $form.id + \" input[name='typex']\");\n\t\tvar $formVals = $('#' + $formId ).serialize();\n\t\t$formVals = $formVals + '&atv2=' + encodeURIComponent($atv2);\n\t\tvar $eleLookup = $(\"#reset-response\");\n\t\tvar $str = '';\n\t\t\tif(!$hasBlanks){\n\t\t\t\t//leaving logic in for failed reset send until end users sure of functionality\n\t\t\t\t$.post(cfc, $formVals, function (result) {\n\t\t\t\t\tif(result.RESULT !='invalid'){\n\t\t\t\t\t\t$messDiv.html('');\n\t\t\t\t\t\t$($messDiv).html(result.MESS);\n\n\t\t\t\t\t\tif(result.RESULT){\n\t\t\t\t\t\t\t$($resetFormDiv).addClass('visuallyhidden');\n\t\t\t\t\t\t\t$($frmInstructions).addClass('visuallyhidden');\n\t\t\t\t\t\t\t$($messDiv).removeClass('visuallyhidden');\n\t\t\t\t\t\t\t$($messDiv).removeClass('error_message');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t$($resetFormDiv).removeClass('visuallyhidden');\n\t\t\t\t\t\t\t$($messDiv).removeClass('visuallyhidden');\n\t\t\t\t\t\t\t$($messDiv).addClass('error_message');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tAE.forms.removeSpinGear($target);\n\t\t\t\t\t$($target).prop('disabled', false);\n\t\t\t\t\t\n\t\t\t\t}, 'json');\n\t\t\t}\n\t\t\telse{\n\t\t\t\tAE.forms.removeSpinGear($target);\n\t\t\t\t$($target).prop('disabled', false);\n\t\t\t}\n\t\t\n\n\n\t\t\t//leaving logic in for failed reset send until end users sure of functionality\n\t\t\t// $.post(cfc, $formVals, function (result) {\n\t\t\t// \tif(result.RESULT =='invalid'){\n\t\t\t// \t\tAE.forms.removeSpinGear($target);\n\t\t\t// \t\t$str = '<li class=\\'small--errornote\\'>' + result.MESS + '</li>';\n\t\t\t// \t\t$($error_ele).html($str)\t\t\t\n\t\t\t// \t}\n\t\t\t// \telse if(!result.RESULT && result.MESS.trim == ''){\n\t\t\t// \t\treturn false;\n\t\t\t// \t}\n\t\t\t// \telse{\n\t\t\t// \t\tAE.forms.removeSpinGear($target);\n\t\t\t// \t\tAPP.hideEle('forgotPasswordContainer');\n\t\t\t// \t\tAPP.hideEle('resetPasswordContainer');\t\t\t\t\t\t\t\n\t\t\t// \t\tAPP.setHTML('member-response-right', result.MESS); \n\t\t\t// \t\tAPP.showGridDiv('member-response-right','');\t\t\t\t\t\n\t\t\t// \t}\n\t\t\t// }, 'json');\n\t\t\treturn false;\t\t\t\n\t},\n\tsendReset: function ($target) {\n\t\tvar cfc = APP.props.$ObjMember + '?method=sendPasswordReset';\n\t\tvar $form = $($target).closest('form')[0];\n\t\tvar $formId  = ($form.length != 0) ?  $($form).attr('id') :'';\n\n\t\tif($formId ==''){return false;}\n\n\t\tvar $resetFld = $(\"#\" + $form.id + \" input[name='member_reset_email']\");\n\t\tvar $error_ele  = APP.getErrorEle($formId, $resetFld.attr('name'));\t\t\n\t\tvar $formVals = $('#account_lookup_form').serialize();\n\t\tvar $isMobile = APP.checkIfMobile();\n\t\tvar $eleLookup = $(\"#member-response-right\");\n\t\tvar $resetFld = $(\"#\" + $form.id + \" input[name='member_reset_email']\");\n\t\tvar hasName = (name === 'true') ? 'Y' :'N';\n\t\tvar $error_ele = APP.getErrorEle($formId, $resetFld.attr('name'));\n\t\tvar $str = '';\n\n\t\tif(!$isMobile ){\t\t\t\t\n\t\t\t$eleLookup.addClass('full-push--top');\n\t\t}\n\t\telse{\n\t\t\t$eleLookup.addClass('push--bottom');\n\t\t}\n\n\t\tif($(\"input#member_reset_email\").val() ==''){\n\t\t\t\tAPP.addInvalidClass($formId,$(\"input#member_reset_email\").attr('name'));\n\t\t\t\tAE.forms.removeSpinGear($target);\n\t\t\t\treturn false;\n\t\t}\n\t\tAPP.setHTML('member-response-left', ''); \n\t\tAPP.hideGridDiv('account_lookup_form','member-response-left');\n\n\t\t//leaving logic in for failed reset send until end users sure of functionality\n\t\t$.post(cfc, $formVals, function (result) {\n\t\t\tif(result.RESULT =='invalid'){\n\t\t\t\tAE.forms.removeSpinGear($target);\n\t\t\t\t$str = '<li class=\\'small--errornote\\'>' + result.MESS + '</li>';\n\t\t\t\t$($error_ele).html($str)\t\t\t\n\t\t\t}\n\t\t\telse if(!result.RESULT && result.MESS.trim == ''){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\telse{\n\t\t\t\tAE.forms.removeSpinGear($target);\n\t\t\t\t//APP.hideEle('forgotPasswordContainer');  // DS: WEBAE3-4345\n\t\t\t\t//APP.hideEle('resetPasswordContainer');   // DS: WEBAE3-4345\t\t\t\t\t\t\t\n\t\t\t\tAPP.setHTML('member-response-right', result.MESS); \n\t\t\t\tAPP.showGridDiv('member-response-right','');\t\t\t\t\t\n\t\t\t}\n\t\t\t$($target).prop('disabled', false);\n\t\t}, 'json');\n\t\t//return false;\t\t\t\n\t},\n\tcheckMemberExistsByEmail: function($email){\n\t\tvar cfc = APP.props.$ObjMember + '?method=getMemberIDByEmailRemote';\n\t\t$.ajax({\n\t\t\ttype: 'GET',\n\t\t\turl: cfc,\n\t\t\tdata: {\n\t\t\t\t\tmember_email: $email\n\t\t\t\t},\n\t\t\tdataType: 'json',\n\t\t\tsuccess: function (result) {\n\t\t\t\tAPP.setHTML('Member_error_message','');\n\t\t\t\tAPP.setHTML('acct_processing','');\n\t\t\t\t//Invalid Email or Member Exists Show message- uncheck savecard\n\t\t\t\t\tif(result.INVALID ||result.RESULT){\n\t\t\t\t\t\t\t$(\"div.chkout_acct_container\").removeClass('visuallyhidden');\n\t\t\t\t\t\t\tAPP.setHTML('Member_error_message',result.MESSAGE);\n\t\t\t\t\t\t \t$(\"div#member_response\").removeClass('visuallyhidden');\n\t\t\t\t\t\t \t$('#savecard').prop('checked',false);\n\t\t\t\t\t\t \tAPP.handleCreateAccountFormCheckout(false, true);\n\t\t\t\t\t}\t\t\t\n\t\t\t\t //Good to proceed\n\t\t\t\t\telse{\n\t\t\t\t\t\t$(\"div#member_exists\").addClass('visuallyhidden');\n\t\t\t\t\t\tAPP.handleCreateAccountFormCheckout(true, false);\n\t\t\t\t\t}\t\t\t\t\t\n\t\t\t}\n\t\t});\n\t},\n\tsubmitMemberAccountCreateForm: function ($target) {\n\t\t\tvar $form = $($target).closest('form')[0];\n\t\t\tvar $email= $(\"#\" + $form.id + \" input[name='member_email']\").val();\n\t\t\tAPP.setHTML('duplicateMemberMsg', '');\n\t\t\tAPP.hideEle('duplicateMemberError', '');\n\t\t\t//if email not blank - check if member exists first\n\t\t\tif ($email) {\n\t\t\t\tAPP.checkMemberExists($email,$target);\n\t\t\t} else {\n\t\t\t\t\n\t\t\t\tAPP.submitAndCheckMemberAccountForm($form.name,$target,'');\n\t\t\t}\n\t},\n\tcheckMemberExists: function (checkEmail,$target) {\n\t\t\tvar $elemID = $target.attr('id');\n\t\t\tvar $form = $('#' + $elemID).closest('form')[0];\n\t\t\tvar cfc = APP.props.$ObjMember + '?method=checkAccountExists';\n\t\t\tvar $emailFld = $(\"#\" + $form.id +  \" input[data-check='member_email']\");\n\n\t\t\t$.ajax({\n\t\t\t\ttype: 'GET',\n\t\t\t\turl: cfc,\n\t\t\t\tdata: {\n\t\t\t\t\tmember_email: $emailFld.val()\n\t\t\t\t},\n\t\t\t\tdataType: 'json',\n\t\t\t\tsuccess: function (result) {\n\t\t\t\t\tif (result.RESULT) {\n\t\t\t\t\t\tAPP.showEle('duplicateMemberError');\n\t\t\t\t\t\tAPP.setHTML('duplicateMemberMsg', result.MESS);\n\t\t\t\t\t\t//re-enable account create\n\t\t\t\t\t\t//AE.forms.removeSpinGear($target);\t\t\t\t\t\n\t\t\t\t\t\tif($form.id == 'member_update'){\n\t\t\t\t\t\t\tAPP.duplicateAccountWarningUpdate(result.MESS);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\tAPP.duplicateAccountWarning(result.MESS);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tAE.forms.removeSpinGear($target);\t\n\t\t\t\t\t\t$($target).prop('disabled',false);\t\n\t\t\t\t\t\tAPP.addInvalidClass($form.id,$($emailFld).attr('name'));\n\t\t\t\t\t} \n\t\t\t\t\telse {\n\t\t\t\t\t\tAPP.submitAndCheckMemberAccountForm($form.id,$target, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdeleteSFRecord: function ($suid) {\n\t\tvar cfc = APP.props.$ObjMember + '?method=deleteSFRecord';\n\t\t$.ajax({\n\t\t\ttype: 'GET',\n\t\t\turl: cfc,\n\t\t\tdata: {\n\t\t\t\tsuid: $suid \n\t\t\t},\n\t\t\tdataType: 'json',\n\t\t\tsuccess: function (result) {\n\t\t\t}\n\t\t});\n\t},\n\tcheckPassword: function ($formId) {\n\t\tvar $ele = $('form#' + $formId + ' input.validatePassword');\t\t\n\t\tvar $fld = $($ele).attr('name');\n\t\tvar $str  = $ele.val();\n\t\tvar $match = $($ele).attr('data-match');\n\t\t//var $checkOther = $('#' + $formId +  ' input[name=' + $match + ']');\n\t\tvar $ObjpwdEle = APP.validatePwd($str);\n\t\tvar $submit = $(\"#\" + $formId).find(':button');\n\n\t\t\t jQuery.each($ObjpwdEle, function(name, value) {\n\t\t\t \t$error_item = $('#' + $formId  + ' li.checklist.' + name);\n\n\t\t\t \tif(!value){\n\t\t\t \t\t$error_item.removeClass('pwd_valid');\t\n\t\t\t \t\t$error_item.addClass('pwd_error');\t\t \t\t\n\t\t\t \t}\n\t\t\t \telse{\n\t\t\t \t\t$error_item.removeClass('pwd_error');\n\t\t\t \t\t$error_item.addClass('pwd_valid');\n\t\t\t\t }\t\t\n\t\t\t });\n\n\t\t\tif($ObjpwdEle.validated){\n\t\t\t\t//$($submit).prop('disabled', false);\n\t\t\t\tAPP.hideGridDivByClass($formId,'memberPasswordChecklist');\n\t\t\t\tAPP.addValidClass($formId,$fld );\n\t\t\t}\n\t\t\telse{\n\t\t\t\t//$($submit).prop('disabled', true);\n\t\t\t\tAPP.showGridDivByClass($formId,'memberPasswordChecklist');\n\t\t\t\tAPP.addInvalidClass($formId,$fld);\n\t\t\t}\n\t\t\treturn $ObjpwdEle.validated;\n\t},\n\tcheckPasswordLegacy: function ($formId) {\n\t\tvar $ele = $('form#' + $formId + ' input.validatePassword');\t\t\n\t\tvar $fld = $($ele).attr('name');\n\t\tvar $str  = $ele.val();\n\t\tvar $errorGuardian  = APP.getGuardianErrorEle($formId,$fld);\n\t\tvar $errorEle_guardian = $(\"span#\" + $errorGuardian + \":visible\"); \n\t\tvar $messfield  = APP.getErrorEle($formId, $fld);\n\t\tvar $mess  =  $($ele).attr('data-error-message');\n\t\tvar $ObjpwdEle = APP.validatePwdLegacy($str);\n\t\t$($errorEle_guardian).remove();\n\n\t\t\tif($ObjpwdEle.validated){\n\t\t\t\t$($messfield).html('');\n\t\t\t\tAPP.addValidClass($formId,$fld );\n\t\t\t}\n\t\t\telse{\n\t\t\t\tAPP.addInvalidClass($formId,$fld);\n\t\t\t\tif($errorEle_guardian.length == 0){\n\t\t\t\t\t$($messfield).html($mess );\t\t\t\t\n\t\t\t\t}\t\t\n\t\t\t}\n\t\t\treturn $ObjpwdEle.validated;\n\t},\n\n\tinitCustomMatchVerification:function($ele){\n\t\tvar $data = {};\t\n\t\tvar $formId = $($ele).parents('form').attr('id');\n\t\tvar $fldEle = $($ele);\n\t\tvar $fld = $($fldEle).attr('name');\n\t\tvar $match = $($ele).attr('data-match'); \n\t\tvar $errorMessageEle = $($ele).attr('data-error-mess-ele');\n\n\t\tif(!$errorMessageEle){\n\t\t\t$errorMessageEle = $fld;\n\t\t}\n\t\tvar $data = {formId:$formId, thisEle:$fld,matchEle:$match,errorMessDspEle:$errorMessageEle};\n\t\t\n\t\treturn APP.verifyMatch($data);\t\n\t},\n\tverifyMatch: function ($data) {\n\t\t//{formId: \"acct__pswd\", thisEle: \"passwdver\", matchEle: \"newpasswd\", parentType: \"LI\", errorMessDspEle: \"passwdver\"}\n\t\t//var $str = '';\n\t\tvar $formId = $data[\"formId\"];\n\t\tvar $thisEle =$data[\"thisEle\"];\n\t\tvar $matchEle = $data[\"matchEle\"];\n\t\tvar $errorMessDspEle = $data[\"errorMessDspEle\"];\n\t\tvar $messfield  = APP.getErrorEle($formId, $errorMessDspEle);\n\t\tvar $current_mess = $($messfield).html(); \t\n\t\tvar $thisFld = $(\"#\" + $formId + \" input[name=\" + $thisEle + \"]\");\n\t\tvar $matchField = $(\"#\" + $formId + \" input[name=\" + $matchEle + \"]\"); \n\t\tvar $noCase = false;\t\t\n\t\tvar $strDspMess = $($thisFld).data(\"error-message-nomatch\");\n\t\tvar $isValid = false;\n\t\tvar $submit = $(\"#\" + $formId).find(':button');\n\t\tvar $isMatch = false;\n\t\tvar $errorGuardian  = APP.getGuardianErrorEle($formId,$thisEle);\n\t\tvar $errorEle_guardian = $(\"span#\" + $errorGuardian);\n\n\n\t\t\tif(!$thisFld.data('match-nocase')){$noCase == false;}\n\t\t\telse{$noCase = $thisFld.data('match-nocase');}\n\t\t\tif($thisFld.val() && $matchField.val()){\n\t\t\t\t$isMatch = ($noCase)? $thisFld.val().toUpperCase() === $matchField.val().toUpperCase() : $thisFld.val() === $matchField.val();\t\n\t\t\t}\n\n\t\t   if(!$isMatch  && $thisFld.val() !=''){\n\t\t\t\t//if message already there do not re-add or screen shimmys\n\t\t\t\tif($thisFld.val() !='' && $errorEle_guardian.length != 0){APP.removeGuardianError($formId,$errorMessDspEle);}\n\t\t\t\tif(($current_mess != $strDspMess) || $current_mess ==''){\n\t\t\t\t\t$($messfield).html('');\n\t\t\t\t\t$($messfield).html($strDspMess);\n\t\t\t\t}\t\t\t\t\n\t\t\t\tAPP.addInvalidClass($formId,$errorMessDspEle);\n\t\t\t\t//$($submit).prop('disabled', true);\t\n\t\t\t\t$isValid = false;\t\t\n\t\t\t}\n\t\t\telse if($isMatch && $thisFld.val() !=''){\n\t\t\t\t$($messfield).html('');\n\t\t\t\tAPP.addValidClass($formId,$errorMessDspEle);\n\t\t\t\t$isValid = true;\n\t\t\t\t//$($submit).prop('disabled', false);\n\t\t\t}\n\t\t\telse if($thisFld.val() =='' && $errorEle_guardian.length != 0){\n\t\t\t\t$($messfield).html('');\n\t\t\t}\n\t\t// }\n\treturn $isValid;\n\t},\n\tcheckAccountFormsPreSubmit:function($target){\n\t\tvar $form = $($target).closest('form')[0];\n\t\tvar $formId = $form.id;\n\t\tvar $hasBlank = APP.checkBlank($form.id);\n\t\tvar $isValid = false; \n\t\tvar $isValid_pwd = false;\n\t\tvar $pwdMatch = false;\n\t\tvar $pwd = $('#' + $formId  + ' input.validatePassword');\n\n\t\tif($pwd.length != 0){\n\t\t\tvar $isValid_pwd = APP.checkPassword($formId);\n\t\t\tvar $pwdVer = $('#' + $formId  + ' input.validateRepass');\n\t\t\tvar $pwdMatch = APP.initCustomMatchVerification($pwdVer);\n\t\t}\n\t\telse{\n\t\t\t$isValid_pwd =true;\n\t\t\t$pwdMatch =true;\n\t\t}\n\n\t\tif(!$hasBlank && $isValid_pwd && $pwdMatch ){$isValid = true;}\n\n\t\tif(!$isValid){\n\t\t\tAE.forms.removeSpinGear($target);\n\t\t\tAPP.scrollToErrors($formId,$target);\n\t\t}\n\t\treturn $isValid;\n\t},\n\tscrollToErrors:function($formId,$target){\n\t\tvar $errorflds = document.querySelectorAll('form#' + $formId + ' .ui-state-invalid');\n\t\tif($errorflds.length != 0){\n\t\t\t$position = $($errorflds[0]).position().top;\n\t\t\t$thisposition = $($target).position().top;\n\t\n\t\t\tif($thisposition - $position >= 200){\n\t\t\t\t$errorflds[0].scrollIntoView({behavior:'smooth',block: 'start'});\n\t\t\t}\n\t\t}\n\t},\n\n\tsubmitAndCheckresetPasswordAff:function($target){\n\t\tAE.forms.addSpinGear($target);\n\t\tvar $thisForm = $target.closest('form')[0];\t\n\t\tvar $formVals = $('#' + $thisForm.id ).serialize();\n\t\tvar $typex = $('#' + $thisForm.id + ' input[name=typex]').val();\n\t\tvar $isValidPwd = APP.checkPasswordLegacy($thisForm.id);\n\t\tvar $ele = $('#' + $thisForm.id + ' input[name=reset_repassword]');\n\t\tvar $isMatch = APP.initCustomMatchVerification($ele);\n\t\tvar $hasBlanks = APP.checkBlank($thisForm.id);\n\t\tvar $errorEleNotFound = APP.getErrorEle($thisForm.id, 'no_match');\n\t\tvar $errorEleNotFound = $($errorEleNotFound);\n\t\tif(!$hasBlanks  && $isValidPwd &&  $isMatch){\n\t\t\tvar cfc = APP.props.$ObjMember +  '?method=resetPasswordAff';\n\t\t\t$.ajax({\n\t\t\t\ttype: 'POST',\n\t\t\t\turl: cfc,\n\t\t\t\tdata: $formVals,\n\t\t\t\tdataType: 'json',\n\t\t\t\tsuccess: function(result){\n\t\t\t\t\tif(!result.RESULT){\n\t\t\t\t\t\tif(!result.AFF_FOUND){\n\t\t\t\t\t\t\t$($errorEleNotFound).html(result.MESS);\t\n\t\t\t\t\t\t\tAE.forms.removeSpinGear($target);\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\t$($errorEleNotFound).html('');\n\t\t\t\t\t\t\tAE.forms.removeSpinGear($target);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tAE.ui.enableClicks();\n\t\t\t\t\t}\n\t\t\t\t\telse if(result.PWD_CHANGED){\n\t\t\t\t\t\tvar $postForm = $(\"form#aff_reset_password\");\t\t\t\t\t\t\t\n\t\t\t\t\t\tvar $elesuccessMsg = $('form#aff_reset_password input#successMsg');\t\t\t\t\t\t\t\n\t\t\t\t\t\tvar $elepwdChanged = $('form#aff_reset_password input#pwdChanged');\n\t\t\t\t\t\t$($elesuccessMsg).val(result.MESS);\n\t\t\t\t\t\t$($elepwdChanged).val(true);\t\t\t\t\t\t\t\n\t\t\t\t\t\t$($postForm ).submit();\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\t$($target).prop('disabled', false);\n\t\t\t\t\tAE.ui.enableClicks();\n\t\t\t\t},\n\t\t\t\t error: function (/*xhr, ajaxOptions, thrownError*/) {\n                    //console.log(xhr.status);\n                    //console.log(thrownError);\n                }\t\t\t\t\n\t\t\t});\n\t\t}\n\t}\n\t,\n\n\tsubmitAndCheckresetPassword: function ($formId,$fieldToCheck,$Target) {\n\t\tvar $cfc = APP.props.$ObjMember + '?method=checkAndSubmitResetFormRemote';\n\t\tvar $thisForm = $('#' + $formId);\n\t\tvar $isNav = false;\n\t\tvar $formVals = $thisForm.serialize();\n\t\tvar $password_changed = false;\n\t\tvar $strSingle = '';\n\t\tvar $error_ele = '';\n        var $hasErrors = true;\n        var $currEle = '';\n\t\tvar $currEleVal = '';\n\t\tvar $currEleErrorClass = '';\n\t\tvar $currEle_curr_val = '';\n\t\tvar $checkThis = '';\t\n\t\tvar $do_nothing  = false;\t\n\n\t\tAE.forms.addSpinGear($Target);\n\t\t\n\t\tif($thisForm.hasClass('nav')){$isNav = true;}\n\n\t\tAPP.setHTML('member-response-left', '');\n\t\t//for single field check,  on blur we only want to check that one field. indicated by non blank formField value\n\t\tif($fieldToCheck){$formVals = $formVals + '&fieldToCheck=' + encodeURIComponent($fieldToCheck);}\n\t\telse{APP.hideGridDivByClass($formId,'memberPasswordChecklist');}\n\n\t \t   $.ajax({\n\t            type: 'POST',\n\t            dataType: 'JSON',\n\t            cache: false, \n\t            url: $cfc,\n\t            data: $formVals,\n\t            success: function(result){\n\t\t            $str = '';\n\t\t            $hasErrors = false;\n\t\t            $currEle = '';\n\t\t\t\t\t$currEleVal = '';\n\t\t\t\t\t$currEleErrorClass = '';\n\t\t\t\t\t$currEle_curr_val = '';\n\t\t\t\t\t$checkThis = '';\t\n\t\t\t\t\t$do_nothing = false;\t\n\t\t\t\t\t$password_changed = false;\t\n\t\t\t\t\t$error_ele = '';\n\n\t\t            for (var i = 0, len = result.length; i < len; i++) {\n\t\t\t\t\t\t$currEle = result[i][0];\n\t\t\t\t\t \t$currEleVal = result[i][1];\n\t\t\t\t\t \tif(result[i][2]){$currEleErrorClass = result[i][2];}\n\t\t\t\t\t \t$currEle_curr_val = '';\n\t\t\t\t\t \t$do_nothing  = false;\n\n\t\t\t\t\t// Password successfully changed\n\t\t\t\t\t\tif($currEle == 'passwordChanged'){\n\t\t\t\t\t\t\t$hasErrors = false;\n\t\t\t\t\t\t\tif($isNav){\t\n\t\t\t\t\t\t\t\tAPP.hideEle('memberPasswordResetNav');\n\t\t\t\t\t\t\t\tAPP.showEle('memberloginNav');\n\t\t\t\t\t\t\t\t$thisForm.find(\"input[type=text], input[type=password], input[type=email]\").val(\"\");\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t\t//$hasErrors = false;\n\t\t\t\t\t\t\t\tAPP.hideEle('resetPasswordContainer');\n\t\t\t\t\t\t\t\tAPP.showEle('forgotPasswordContainer');\n\t\t\t\t\t\t\t\t$password_changed = true;\n\t\t\t\t\t\t\t\t//return false;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tAPP.setHTML('member-response-right', ''); \n\t\t\t\t\t\t\tAPP.hideGridDiv($formId,'member-response-right');\n\n\n\t\t\t\t\t\t\tAPP.setHTML('member-response-left', $currEleVal); \n\t\t\t\t\t\t\tAPP.showGridDiv('member-response-left', '');\n\t\t\t\t\t\t\t$(\"div.login_container\").removeClass('visuallyhidden--palm');\n\t\t\t\t\t\t\t$(\"div.login_container\").removeClass('visuallyhidden--lap');\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\t\t\t\t\n\t\t\t\t\t\t\t\t$strSingle = '<p>' + $currEleVal + '</p>';\n\t\t\t\t\t\t\t\t$error_ele = APP.getErrorEle($formId, $currEle);\n\t\t\t\t\t\n\t\t\t\t\t\t\t\tif($error_ele){$currEle_curr_val = $($error_ele).html();}\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t//only add error text if not already there. keeps screen from shimmying\n\t\t\t\t\t\t\t\tif($currEle_curr_val && $currEle_curr_val.length > 0 && ($currEle_curr_val == $currEleVal)){\n\t\t\t\t\t\t\t\t\t$do_nothing =  true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t\t\t$do_nothing = false;\n\t\t\t\t\t\t\t\t}\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!$do_nothing &&  $currEleVal){\n\t\t\t\t\t\t\t\t\t\tstrSingle = '<p>' + $currEleVal + '</p>';\n\t\t\t\t\t\t\t\t\t\t//APP.setHTML($error_ele, $strSingle);\n\t\t\t\t\t\t\t\t\t\t$($error_ele).html($strSingle);\n\t\t\t\t\t\t\t\t\t\tAPP.addInvalidClass($formId,$currEle);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if(!$do_nothing){\n\t\t\t\t\t\t\t\t\t\t$($error_ele).html('');\n\t\t\t\t\t\t\t\t\t\tAPP.addValidClass($formId,$currEle);\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}//end data loop\n\n\t\t\t\t\tAE.forms.removeSpinGear($Target);\n\t\t\t\t\t$($Target).prop('disabled', false);\n\n\t\t\t\t\tif(!$hasErrors && !$fieldToCheck){\n\t\t\t\t\t \t//$('#submit_password_save_button').prop('disabled', false);\n\t\t\t\t\t \t$(\"div.login_container\").removeClass('visuallyhidden--lap');\n\t\t\t\t\t \t$(\"div.login_container\").removeClass('visuallyhidden--palm');\n\t\t\t\t\t}\n\t            },//end success\n\t             error: function (/*xhr, ajaxOptions, thrownError*/) {\n                         //console.log(xhr.status);\n                        // console.log(thrownError);\n                }\n       \t\t});\n\t},\n\taddUpdateSalesforce: function (formVals) {\n\t\tvar cfc = '/plugins/ae3/lib/Member3.cfc?method=handleSalesforce';\n\t\t\t$.ajax({\n\t\t\t\ttype: 'POST',\n\t\t\t\turl: cfc,\n\t\t\t\tdata: formVals,\n\t\t\t\tdataType: 'json',\n\t\t\t\tsuccess: function(result){\n\t\t\t\t\t\t\t\n\t\t\t\t },\n\t\t\t\t error: function (/*xhr, ajaxOptions, thrownError*/) {\n                    //console.log(xhr.status);\n                    //console.log(thrownError);\n                }\n\t\t\t\t\n\t\t\t});\n\t},\n\n\thandleSalesforceLogin:function(){\n\t\t\tvar cfc = '/plugins/ae3/lib/Member3.cfc?method=handleSalesforce_Login';\n\t\t\t$.ajax({\n\t\t\t\ttype: 'POST',\n\t\t\t\turl: cfc,\n\t\t\t\tsuccess: function(result){\n\t\t\t\t\t//console.log('handleSalesforceLogin',result);\n\t\t\t\t},\n\t\t\t\terror: function (/*xhr, ajaxOptions, thrownError*/) {\n                    // console.log(xhr.status);\n                    // console.log(thrownError);\n                }\n\t\t\t\t\n\t\t\t});\n\t},\n\n\tsubmitAndCheckMemberAccountForm: function ($formId, $target, fieldToCheck) {\n\t\t\tvar cfc = APP.props.$ObjMember + '?method=checkAndSubmitAccountFormRemote';\n\t\t\tvar $formAction = $('#' + $formId + ' input[name=form_action]').val();\n\t\t\tvar $hasErrors = false;\n\t\t\tvar $currEle = '';\n\t\t\tvar $error_ele = '';\n\t\t\tvar $currEleVal = '';\n\t\t\tvar $currEle_curr_val = 0;\n\t\t\tvar $do_nothing = false;\n\t\t\tvar $formVals = $('#' + $formId).serialize();\n\t\t\tvar $ele_guardian = '';\n\t\t\tAPP.setHTML('duplicateMemberMsg', '');\t\n\t\t\t//for single field check,  on blur we only want to check that one field. indicated by non blank formField value\n\t\t\tif(fieldToCheck){$formVals = $formVals + '&fieldToCheck=' + encodeURIComponent(fieldToCheck);}\n\n\t\t\t\t$.ajax({\n\t\t\t            type: 'POST',\n\t\t\t            dataType: 'JSON',\n\t\t\t            cache: false,\n\t\t\t            url: cfc,\n\t\t\t            data: $formVals,\n\t\t\t            success: function(result){\t\n\t\t\t\t\t\t\tfor (var i = 0, len = result.length; i < len; i++) {\n\t\t\t\t\t\t\t\t$currEle = result[i][0];\n\t\t\t\t\t\t\t\t$currEleVal = result[i][1];\n\t\t\t\t\t\t\t\t$currEle_curr_val = '';\t\n\t\t\t\t\t\t\t\t$do_nothing = false;\n\t\t\t\t\t\t\t\tformvals = $formVals;\n\n\t\t\t\t\t\t\t\t$error_ele = APP.getErrorEle($formId, $currEle);\t\n\t\t\t\t\t\t\t\t$ele_guardian = APP.getGuardianErrorEle($formId,$currEle);\n\t\t\t\t\t\t\t\t$ele_guardian  = $(\"span#\" + $ele_guardian);\n\t\t\t\t\t\t\t\tif(!$currEleVal){\n\t\t\t\t\t\t\t\t\tAPP.removeInvalidClass($formId,$currEle);\n\t\t\t\t\t\t\t\t\t$($error_ele).html('');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t\t\t$hasErrors = true;\n\t\t\t\t\t\t\t\t\t$currEle_curr_val = $($error_ele).html();\n\t\t\t\t\t\t\t\t\t//only add error text if not already there or different than current messge. keeps screen from shimmying\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tif($currEle_curr_val.length > 0 && ($currEle_curr_val == $currEleVal)){\n\t\t\t\t\t\t\t\t\t\t$do_nothing =  true;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif($ele_guardian){\n\t\t\t\t\t\t\t\t\t\tif($ele_guardian.val() == $currEleVal){\n\t\t\t\t\t\t\t\t\t\t\t$do_nothing =  true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse{APP.removeGuardianError($formId,$currEle);}\n\t\t\t\t\t\t\t\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tif(!$do_nothing){\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t$($error_ele ).html($currEleVal);\n\t\t\t\t\t\t\t\t\t\tAPP.addInvalidClass($formId,$currEle);\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}\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t}//end for loop\n\n\t\t\t\t\t\t\tif($hasErrors ){\n\t\t\t\t\t\t\t\tAE.forms.removeSpinGear($target);\n\t\t\t\t\t\t\t\t$($target).attr('disabled', false);\n\t\t\t\t\t\t\t\tAPP.scrollToErrors($formId,$target);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t\tif($formAction == 'account_update'){\n\t\t\t\t\t\t\t\t\tif(!fieldToCheck){\n\t\t\t\t\t\t\t\t\t\tAPP.addUpdateSalesforce($formVals);\n\t\t\t\t\t\t\t\t\t\tAPP.loadAccountInformation(true);\n\t\t\t\t\t\t\t\t\t\tAE.forms.removeSpinGear($target);\n\t\t\t\t\t\t\t\t\t\t$($target).attr('disabled', false);\n\t\t\t\t\t\t\t\t\t\t//$($target).prop('disabled', false);\n\t\t\t\t\t\t\t\t\t\treturn 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\telse if($formAction == 'account_save'){\n\t\t\t\t\t\t\t\t\tif(!fieldToCheck){\n\t\t\t\t\t\t\t\t\t\t//WEBAE3-6285 start\n\t\t\t\t\t\t\t\t\t\tformvalsDes = APP.deparam(formvals);\n\t\t\t\t\t\t\t\t\t\tif(typeof formvalsDes.member_emaillist == \"undefined\"){  \n\t\t\t\t\t\t\t\t\t\t\tlocalStorage.setItem(\"aeShowSubscribe\", true);//trigger New Modal to spawn when unsubscribed user logs in except the following pages\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t//WEBAE3-6285 END\n\t\t\t\t\t\t\t\t\t\t$('#member_signup').submit();\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t\t\t\treturn false;\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},//end success\t\t\t\t\t\n\n   \t\t\t\t\t\terror: function (/*xhr, ajaxOptions, thrownError*/) {\n                \t\t \t// console.log(xhr.status);\n                \t\t\t// console.log(thrownError);\n                 \t\t}\n\t\t\t\t});//end ajax\n\t\t\t//}\t\t\t\t\t\n\t},\n\tshowDobClear: function () {\n\t\t$('.ui-state-default,.ui-datepicker-title,.ui-datepicker-prev,.ui-datepicker-next').click(function(){\n\t\t\t$('span.ui-datepicker-clear-input').removeClass('visuallyhidden');\n\t\t})\n\t},\n\tshowHide: function (show, hide) {\n\t\t\t$('#' + hide).addClass('visuallyhidden');\n\t\t\t$('#' + show).removeClass('visuallyhidden');\n\t},\n\thideShow: function (hide,show) {\n\t\t\t$('#' + hide).addClass('visuallyhidden');\n\t\t\t$('#' + show).removeClass('visuallyhidden');\n\t},\n\tshowEle: function (ele) {\n\t\t\treturn $('#' + ele).removeClass('visuallyhidden');\n\t},\n\thideEle: function (ele) {\n\t\t\treturn $('#' + ele).addClass('visuallyhidden');\n\t},\n\tsetHTML: function (ele, str) {\n\t\t$('#' + ele).html(str);\n\t},\n\tcheckIfMobile: function () {\n\t\tvar isMobile = false; //initiate as false\n\t\t// device detection\n\t\t\tif(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent) \n\t\t\t|| /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(navigator.userAgent.substr(0,4))) { \n\t\t\tisMobile = true;\n\t\t};\n\t\treturn isMobile\n\t},\n\tgetErrorEle: function ($formId, $ele) {\n\t\tvar $error_ele  = 'form#' + $formId + ' span.errorTxt-' + $ele;\n\t\treturn $error_ele;\n\n\t},\n\tgetGuardianErrorEle: function ($formId, $ele) {\n\t\tvar $eleGuardian = 'error-message-' + $formId + '-' + $ele;\n\t\treturn $eleGuardian;\n\t},\n\tremoveGuardianError:function($formId,$ele){\n\t\tvar $eleGuardian = 'error-message-' + $formId + '-' + $ele;\n\t\t$eleGuardian = 'span.ui-error-message#' + $eleGuardian;\n\t\t$eleGuardian = $($eleGuardian);\n\t\tif($eleGuardian){$($eleGuardian).remove();}\n\t},\n\tclearServerError:function($formId,$ele){\n\t\tvar $clear_ele = 'errorTxt-'  + $ele;\n\t\t$clear_ele = 'span.ui-error-message.' + $clear_ele;\n\t\t$clear_ele = $($clear_ele);\n\t\tif($clear_ele){$($clear_ele).html('');}\n\t},\n\tcheckBlank:function($formId){\n\t\tvar empty = false;\n\t\tvar $form = document.querySelector('#' + $formId);\n\t\tvar $flds = $form.querySelectorAll('*[required]');\n\n\t\tvar i;\n\t\tfor (i = 0; i < $flds.length; i++) {\n\t\n\t\t $isVisible = !$flds[i].parentNode.classList.contains('visuallyhidden');\n\n\t\t  if($flds[i].value.trim() == '' && $isVisible ){ \n\n\t\t  \tif(APP.getErrorEle($formId, $flds[i].name) && !$flds[i].classList.contains('validatePassword')){\n\t\t  \t\t$ele = $('#' + $formId + ' input[name=' + $flds[i].name  + ']');\n\t\t  \t\t$error_ele = $(APP.getErrorEle($formId, $flds[i].name));\n\t\t  \t\t$error_ele_guardian = APP.getGuardianErrorEle($formId, $flds[i].name);\n\t\t  \t\t$error_ele_guardian  = $('span#' + $error_ele_guardian);\n\t\t  \t\t$errorMess1 = $flds[i].getAttribute('data-error-message');\n\t\t  \t\t$errorMess2 = $flds[i].getAttribute('data-empty-message');\n\t\t  \t\t$errorMess = (!$errorMess2) ? $errorMess1 : $errorMess2;\t  \t\n\n\t\t  \t\tif($error_ele_guardian.length != 0){\n\t\t  \t\t\t$($error_ele).html('');\n\t\t  \t\t}\n\t\t  \t\telse if($error_ele.length == 0 && $error_ele_guardian.length == 0 ){\n\t\t  \t\t\t$ele.after('<span class=\"ui-error-message\" id=\"error-message-'+ $formId + '-'+ $flds[i].name +'\">' + $errorMess + '</span>'); \t\n\t\t  \t\t }\n\t\t  \t\t// else{\n\t\t  \t\t// \t$($error_ele).html($errorMess);\t\t  \t\t\n\t\t  \t\t// }\n\t\t  \t}\n\t\t  \t$flds[i].parentElement.classList.add('ui-state-invalid');\n\t\t  \tempty = true;\n\t\t  }\n\t\t}\n\t\t//check if state required\n\t\tvar $checkState = $('#' + $formId + ' select.state--select:visible').parent().parent('.required');\n\t\tif($checkState.length != 0){\n\t\t\t$eleState = $('#' + $formId + ' select.state--select:visible');\n\t\t\tif($($eleState ).val() == ''){\n\t\t\t\t$($($eleState).parent()).addClass('ui-state-invalid');\n\t\t\t}\n\t\t}\n\t\t\t\t\n\t\treturn empty;\n\t},\n\tisTwoCol: function(){\n\t    var isTwoCol = false; \n\t    if($(window).width() > 1023){isTwoCol = true;}\n\n\t\treturn isTwoCol;\n\n\t},\n\n\tvalidatePwdLegacy:function($str){\n\t    var pwd = {\n\t    \tvalidated: true,\n\t\t\tpwd_length: true\t\t\n\t      };\t\n\t\t\tif ($str.length < 8 ) {\n\t\t\t   pwd.validated = false;\n\t\t\t   pwd.pwd_length = false;\n\t\t\t};\n\t\t\tif ($str.length > 16 ) {\n\t\t\t\tpwd.validated = false;\n\t\t\t\tpwd.pwd_length = false;\n\t\t\t }\t\t\t\t\t\t\n\t\treturn pwd;\n\t},\n\n\tvalidatePwd:function($str){\n\t    var pwd = {\n\t    \tvalidated: true,\n\t\t\tpwd_length: true,\n\t\t\tpwd_number: true,\n\t\t\tpwd_special: true,\n\t\t\tpwd_upper: true,\n\t\t\tpwd_lower: true\n\t      };\n\n\t     if($str && $str.length!=0){\n\t\t\t//validate lower\n\t\t\tif (!$str.match(/[a-z]/) ) {\n\t\t\t   pwd.validated = false;\n\t\t\t   pwd.pwd_lower = false;\n\t\t\t}\n\n\t\t\t//validate capital letter\n\t\t\tif (!$str.match(/[A-Z]/) ) {\n\t\t\t   pwd.validated = false;\n\t\t\t   pwd.pwd_upper = false;\n\t\t\t}\n\n\t\t\t//validate number\n\t\t\tif (!$str.match(/\\d/) ) {\n\t\t\t   pwd.validated = false;\n\t\t\t   pwd.pwd_number = false;\n\t\t\t}\n\t\t\t// validate length greater than 8\n\t\t\tif ($str.length < 8) {\n\t\t\t   pwd.validated = false;\n\t\t\t   pwd.pwd_length = false;\n\t\t\t}\n\t\t\t// validate length less than 16\n\t\t\tif ($str.length > 16) {\n\t\t\t\tpwd.validated = false;\n\t\t\t\tpwd.pwd_length = false;\n\t\t\t }\n\n\t\t\tif (!$str.match(/[!=@#$%^&*-_\\+\\(\\)?<>\\.:;\"'`~\\|\\{\\}\\[\\]\\\\\\/]/) ) {\n\t\t\t   pwd.validated = false;\n\t\t\t   pwd.pwd_special = false;\n\t\t\t}\n\t\t\tif (!$str.match( /[!@#$%^&*()_=\\[\\]{};':\"\\\\|,.<>\\/?+-]/) ) {\n\t\t\t   pwd.validated = false;\n\t\t\t   pwd.pwd_special = false;\n\t\t\t}\n\t\t}\n\t\telse{\n\n\t  \t\tpwd.validated   = false;\n\t\t\tpwd.pwd_lower   = false;\n\t\t\tpwd.pwd_upper   = false;\n\t\t\tpwd.pwd_number  = false;\n\t\t\tpwd.pwd_length  = false;\n\t\t\tpwd.pwd_special = false;\n\t\t}\n\n\t\treturn pwd;\n\t},\n\treadCookie:function($name){\n\t    var nameEQ = $name + \"=\";\n\t    var ca = document.cookie.split(';');\n\t    for(var i=0;i < ca.length;i++) {\n\t        var c = ca[i];\n\t        while (c.charAt(0)==' ') c = c.substring(1,c.length);\n\t        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);\n\t    }\n\t    return null;\n\t},\n\tgetPayOptions:function(){\n\t\t/*\n\t\tgetPayOptions: GET - returns array of all payment options\n\t\t*/ \n\t\tvar cfc = APP.props.$ObjMember + '?method=getPayOptions';\n\n\t\t$.ajax({\n\t\t\ttype: 'GET',\n\t\t\turl: cfc,\n\t\t\tdata: {remoteId: AEdata.myRemoteId},\n\t\t\tdataType: 'json',\n\t\t\tsuccess: function(result){\n\t\t\t\tif(result.CARDS){\n\t\t\t\t\tAEdata.CARDS = [];//make sure array is empty before adding cards\n\t\t\t\t\tAEdata.CARDS = result.CARDS;\n\t\t\t\t\tAPP.showCurrentCards();\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: function (/*xhr, ajaxOptions, thrownError*/) {\n\t\t\t\t// console.log(xhr.status);\n\t\t\t\t// console.log(thrownError);\n\t\t\t\t}\n\t\t});\n\t},\n\tgetAddCardWidget:function(){\n\t\t/*\n\t\tgetAddCard: GET - Returns URL for hosted checkout widget\n\t\t*/ \n\t\tvar cfc = APP.props.$ObjMember + '?method=getAddCard';\n\n\t\tif(AEdata.account.ccWidgetUrl && AEdata.account.ccWidgetUrl !== 'expired') {\n\t\t\t//we already requested a widget so use it\n\t\t\tAPP.showAddCard(AEdata.account.ccWidgetUrl);\n\n\t\t} else {\n\t\t\t$.ajax({\n\t\t\t\ttype: 'GET',\n\t\t\t\turl: cfc,\n\t\t\t\tdata: {remoteId: AEdata.myRemoteId},\n\t\t\t\tdataType: 'json',\n\t\t\t\tsuccess: function(result){\n\t\t\t\t\tif(result.SUCCESS){\n\t\t\t\t\t\tAEdata.account.ccWidgetUrl = result.URL;//save URL in this browser request state for toggling\n\t\t\t\t\t\tAPP.showAddCard(AEdata.account.ccWidgetUrl);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tAPP.showAddCardWidgetFail();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: function (/*xhr, ajaxOptions, thrownError*/) {\n\t\t\t\t\t// console.log(xhr.status);\n\t\t\t\t\t// console.log(thrownError);\n\t\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\ttoggleAddCard:function(){\n\t\tif ($(\".add_card_container\").hasClass('visuallyhidden')) {\n\t\t\tAPP.showAddCardUI();\n\t\t} else { \n\t\t\tAPP.hideAddCardUI();\n\t\t}\n\t},\n\tshowAddCardUI:function(){\n\t\t//make for all AddCard UI elements visible\n\t\tif($('.add_card_container').hasClass('visuallyhidden')) {\n\t\t\t$(\".add_card_container\").removeClass('visuallyhidden');\n\t\t}\n\t\tif($('#mycc_loader').hasClass('visuallyhidden')) {\n\t\t\t$('#mycc_loader').removeClass('visuallyhidden');\n\t\t}\n\t\tif(!$('#noCCwidget').hasClass('visuallyhidden')) {\n\t\t\t$('#noCCwidget').addClass('visuallyhidden');//only an error retrieving widget will display this id\n\t\t}\n\t\t$(\".addNewCCToggle\").text('-');\n},\n\thideAddCardUI:function(){\n\t\t//hide all AddCard UI elements\n\t\tif(!$('.add_card_container').hasClass('visuallyhidden')) {\n\t\t\t$(\".add_card_container\").addClass('visuallyhidden');\n\t\t}\n\t\tif($('#mycc_loader').hasClass('visuallyhidden')) {\n\t\t\t$('#mycc_loader').removeClass('visuallyhidden');\n\t\t}\n\t\tif(!$('#noCCwidget').hasClass('visuallyhidden')) {\n\t\t\t$('#noCCwidget').addClass('visuallyhidden');//only an error retrieving widget will display this id\n\t\t}\n\t\tif(!$('#hp_cc').hasClass('visuallyhidden')) {\n\t\t\t$('#hp_cc').addClass('visuallyhidden');\n\t\t}\n\t\t$(\".addNewCCToggle\").text('+');\n\n\t},\n\thideMyCCLoader:function(){\n\t\t$('#mycc_loader').addClass('visuallyhidden');\n\t},\n\tshowAddCard:function(widgetUrl){\n\t\t//make sure iframe is hidden until URL loads (or reloads on toggling of Add New or whole section)\n\t\tif(!$('#ccWidget').hasClass('visuallyhidden')) {\n\t\t\t$('#ccWidget').addClass('visuallyhidden');\n\t\t}\n\t\tif (!$(\"#noCCwidget\").hasClass('visuallyhidden')) {\n\t\t\t//we got widget URL so make sure this message isn't showing\n\t\t\t$(\"#noCCwidget\").addClass('visuallyhidden');\n\t\t}\n\t\tdocument.getElementById('ccWidget').src = widgetUrl;\n\t\tdocument.getElementById('ccWidget').addEventListener(\"load\", function() {\n\t\t\tAPP.hideMyCCLoader()\n\t\t\tdocument.getElementById('hp_cc').classList.remove('visuallyhidden');\n\t\t\tdocument.getElementById('ccWidget').classList.remove('visuallyhidden');\n\t\t\t});\n\t},\n\tshowAddCardWidgetFail:function(widgetUrl){\n\t\tAPP.hideMyCCLoader();\n\t\t//show a failure message\n\t\tdocument.getElementById('noCCwidget').innerHTML = '<h4>' + AEdata.account.oStoredPaymentLang.payment_added_failed + '</h4>';\n\t\tdocument.getElementById('noCCwidget').classList.remove('visuallyhidden');\n\t},\n\tshowCurrentCards:function(){\n\t\t$(\"#editCCControl\").empty();//clear out any old cards displayed\n\t\tif (!$(\".add_card_container\").hasClass('visuallyhidden')) {\n\t\t\t$(\".add_card_container\").addClass('visuallyhidden');//hide add card form if it was open\n\t\t}\n\t\tvar newCardId = ( localStorage.getItem('newCardId') && _.isString(localStorage.getItem('newCardId'))) ? localStorage.getItem('newCardId') : 'none';\n\t\t//if newCardId isn't 'none' then we have a status message to show\n\t\tif(newCardId !== 'none'){\n\t\t\t//clear saved checkout URL from AEdata\n\t\t\tAEdata.account.ccWidgetUrl = 'expired';//this triggers a new checkout if necessary\n\n\t\t\t//check for duplicate card added\n\t\t\tvar isDuplicateCard = false;\n\t\t\tif(localStorage.getItem('isDuplicate') !== null) {\n\t\t\t\tvar isDuplicateCard =  localStorage.getItem('isDuplicate');\n\t\t\t\tlocalStorage.removeItem('isDuplicate');//clear so it can be reset\n\t\t\t}\n\t\t\t//clear saved ID from localStorage so message isn't shown again\n\t\t\tlocalStorage.removeItem('newCardId');\n\n\t\t\t//determine which message show: if NewCardId = 0, then we'll show failure, default is to show added\n\t\t\tvar savePaymentMsg =  (isDuplicateCard === 'true') ? AEdata.account.oStoredPaymentLang.payment_method_exists : AEdata.account.oStoredPaymentLang.payment_added_success;\n\t\t\tvar savePaymentMsgClass = '';\n\t\t\tif(newCardId === '0'){\n\t\t\t\t//no card added but was attempted so set fail message/class\n\t\t\t\tvar savePaymentMsg = AEdata.account.oStoredPaymentLang.payment_added_failed;\n\t\t\t\tvar savePaymentMsgClass = 'class=\"ui-error-message\"';\n\t\t\t}\n\t\t\tvar savePaymentMsgDiv = document.createElement(\"div\");\n\t\t\tsavePaymentMsgDiv.innerHTML = '<h4 '+ savePaymentMsgClass + '>' + savePaymentMsg + '</h4>';\n\t\t\t$(\"#editCCControl\").append(savePaymentMsgDiv);\n\t\t}\n\t\tif(AEdata.CARDS.length){\n\t\t\tAEdata.CARDS.forEach(function (item, index) {\n\t\t\t\tvar cardLast4 = '<strong>' + item.LAST4 + '</strong> ';\n\t\t\t\tvar cardExp = '<strong>' + item.EXP + '</strong> ';\n\t\t\t\tvar cardType = item.CARDTYPE;\n\t\t\t\tvar cardId = item.CARDID;\n\t\t\t\tvar carLabelClass = (newCardId === cardId) ? 'current-cc-label-justadded' : 'current-cc-label';\n\n\t\t\t\tvar cardLogoKey = item.CARDTYPE.toLowerCase();\n\t\t\t\t//show logo if we have one, otherwise card type text\n\t\t\t\tvar cardTypeDisplay = (AEdata.oCClogos[cardLogoKey]) ? '<img style=\"flex:auto;\" src=\"'+AEdata.oCClogos[cardLogoKey]+'\">' : '<strong>' + cardType + '</strong> ';\n\t\t\t\tvar cardSummary = AEdata.account.oStoredPaymentLang.txt_card_summary.replace('##cardtype##',cardTypeDisplay);\n\t\t\t\tcardSummary = cardSummary.replace('##last4##',cardLast4);\n\t\t\t\tcardSummary = cardSummary.replace('##expdate##',cardExp);\n\n\t\t\t\tdisplayHTML =  '<div class=\"current-cc-label-wrap\"><div class=\"' + carLabelClass + '\">';\n\t\t\t\tdisplayHTML += '<div>' + cardSummary + '</div></div>';\n\t\t\t\tdisplayHTML += '<div class=\"current-cc-buttons\">';\n\t\t\t\tdisplayHTML += '<a href=\"#\" name=\"btn_'+cardId+'\" class=\"deleteCC\" data-cardId=\"'+cardId+'\" tabindex=\"1\">' + AEdata.account.oStoredPaymentLang.button_delete + '</a>';\n\t\t\t\tdisplayHTML += '</div></div>';\n\t\t\t\tvar newCardBlock = document.createElement(\"div\");\n\t\t\t\tnewCardBlock.id = cardId;\n\t\t\t\tnewCardBlock.classList.add('current-cc-container')\n\t\t\t\tnewCardBlock.innerHTML = displayHTML;\n\t\t\t\t$(\"#editCCControl\").append(newCardBlock);\n\n\t\t\t});\n\t\t} else {\n\t\t\tvar newCardBlock = document.createElement(\"div\");\n\t\t\tnewCardBlock.innerHTML = '<p>' + AEdata.account.oStoredPaymentLang.no_saved_payments + '</p>';\n\t\t\t$(\"#editCCControl\").append(newCardBlock);\n\t\t}\n\t\t$(\"#editCCControl\").removeClass('visuallyhidden');\n\t\t//if addcard form is visible, hide it\n\t\tif(!$(\".add_card_container\").hasClass('visuallyhidden')){\n\t\t\t$(\".add_card_container\").addClass('visuallyhidden');\n\t\t}\n\n\t},\n\tdeletePaymentOption:function(cardId){\n\t\t/*\n\t\tdeletePaymentOption: GET - returns array of all payment options\n\t\t*/ \n\t\tvar cfc = APP.props.$ObjMember + '?method=deleteStoredPayment';\n\t\t$.ajax({\n\t\t\ttype: 'GET',\n\t\t\turl: cfc,\n\t\t\tdata: {remoteId: AEdata.myRemoteId, paymentId: cardId},\n\t\t\tdataType: 'json',\n\t\t\tsuccess: function(result){\n\t\t\t\tif(result.SUCCESS){\n\t\t\t\t\t$(\"#editCCControl\").addClass('visuallyhidden');//hide cards before refreshing\n\t\t\t\t\tAPP.getPayOptions();\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: function (xhr, ajaxOptions, thrownError) {\n\t\t\t\t// console.log(xhr.status);\n\t\t\t\t// console.log(thrownError);\n\t\t\t\t}\n\t\t});\n\t},\n\n\t/*\tLAZY LOADING RESERVATION SECTION FUNCTIONS - WEBAE3-5726\t*/\n\tloadAccountReservations:function() {\n\t\tif(APP.props.$isInMemberAccount && APP.props.$isLoggedIn){\n\t\t\tvar $resLoadSpinner = $('#loaderMemberReservations');\n\t\t\tif($resLoadSpinner.length){\n\t\t\t\tif(AEdata.hasOwnProperty('stMemberVoucherInfo') && \n\t\t\t\t\t_.isObject(AEdata.stMemberVoucherInfo) && \n\t\t\t\t\t!_.isEmpty(AEdata.stMemberVoucherInfo)\n\t\t\t\t){\n\t\t\t\t\tAPP.renderAccountReservations(AEdata.stMemberVoucherInfo);\n\t\t\t\t} else {\n\t\t\t\t\tAEdata.stMemberVoucherLang = AEdata.stMemberVoucherLang || {};\n\t\t\t\t\tvar cfc = APP.props.$ObjMember + '?method=showAccountReservations';\n\t\t\t\t\tvar lookupPage = AEdata.stMemberVoucherLang.LOOKUP_URL || 'LOOKUP_URL';\n\t\t\t\t\t$.ajax({\n\t\t\t\t\t\ttype: 'POST',\n\t\t\t\t\t\turl: cfc,\n\t\t\t\t\t\tdataType: 'json',\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tlookupPage\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsuccess: function(result){\n\t\t\t\t\t\t\tif(_.isObject(result) && !result.isEmpty()){\n\t\t\t\t\t\t\t\tAPP.renderAccountReservations(result); \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\terror: function (/*xhr, ajaxOptions, thrownError*/) {\n\t\t\t\t\t\t\tAPP.renderAccountReservations({voucherError:true});\n\t\t\t\t\t\t\t// console.log(xhr.status);\n\t\t\t\t\t\t\t// console.log(thrownError);\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\trenderAccountReservations:function(objMemberVoucherInfo) {\n\t\tAEdata.stMemberVoucherLang = AEdata.stMemberVoucherLang || {};\n\t\tvar $dfAccountReservations = $(document.createDocumentFragment());\n\t\tif(objMemberVoucherInfo.hasOwnProperty('voucherError') &&\n\t\t\tobjMemberVoucherInfo.voucherError === true\n\t\t){\n\t\t\t$dfAccountReservations.append(APP.renderAccountReservationLookupError());\n\t\t} else if(objMemberVoucherInfo.hasOwnProperty('vouchers') && \n\t\t\t_.isObject(objMemberVoucherInfo.vouchers) && \n\t\t\t!_.isEmpty(objMemberVoucherInfo.vouchers) &&\n\t\t\tobjMemberVoucherInfo.vouchers.hasOwnProperty('current') &&\n\t\t\tobjMemberVoucherInfo.vouchers.hasOwnProperty('past') &&\n\t\t\t_.isArray(objMemberVoucherInfo.vouchers.current) &&\n\t\t\t_.isArray(objMemberVoucherInfo.vouchers.past)\n\t\t){\n\t\t\t['current','past'].forEach(function(vouchKey) {\n\t\t\t\tvar theseVouchers = objMemberVoucherInfo.vouchers[vouchKey];\n\t\t\t\tvar $thisGrid = $(document.createElement('div')).addClass('grid');\n\t\t\t\tvar $thisGridItem = $(document.createElement('div')).addClass('grid__item one-whole palm-one-whole soft--left');\n\t\t\t\tvar classKey = 'curr';\n\t\t\t\tvar langKey = 'CURRENT';\n\t\t\t\tif(vouchKey === 'past'){\n\t\t\t\t\t$thisGridItem.addClass('push-half--top');\n\t\t\t\t\tclassKey = 'past';\n\t\t\t\t\tlangKey = 'PAST';\n\t\t\t\t} else {\n\t\t\t\t\tif(typeof AEdata.stMemberVoucherLang.HEADER_RESERVATIONS_CONTENT === 'string' && AEdata.stMemberVoucherLang.HEADER_RESERVATIONS_CONTENT !== ''){\n\t\t\t\t\t\t$thisGridItem.append(\n\t\t\t\t\t\t\t$(document.createElement('p'))\n\t\t\t\t\t\t\t.append(AEdata.stMemberVoucherLang.HEADER_RESERVATIONS_CONTENT)\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$thisGridItem.append(\n\t\t\t\t\t$(document.createElement('h3'))\n\t\t\t\t\t.append(AEdata.stMemberVoucherLang['HEADER_'+langKey] || 'HEADER_'+langKey)\n\t\t\t\t);\n\t\t\t\tif(_.isEmpty(theseVouchers)){\n\t\t\t\t\t$thisGridItem.append(\n\t\t\t\t\t\tAEdata.stMemberVoucherLang['NO_'+langKey+'_MSG'] || 'NO_'+langKey+'_MSG'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tvar $thisTable = $(document.createElement('table')).addClass('memres--'+classKey+'--reservations table--striped');\n\t\t\t\tvar $labelRow = $(document.createElement('tr')).addClass('cardetails-smallprint memres_row');\n\t\t\t\t$labelRow.append(\n\t\t\t\t\t$(document.createElement('td'))\n\t\t\t\t\t.addClass('memres_puCalLabel')\n\t\t\t\t\t.append(\n\t\t\t\t\t\t$(document.createElement('label'))\n\t\t\t\t\t\t.append(AEdata.stMemberVoucherLang.PUDATE_LABEL || 'PUDATE_LABEL')\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\t$labelRow.append(\n\t\t\t\t\t$(document.createElement('td'))\n\t\t\t\t\t.addClass('memres_vouchLabel')\n\t\t\t\t\t.append(\n\t\t\t\t\t\t$(document.createElement('label'))\n\t\t\t\t\t\t.append(AEdata.stMemberVoucherLang.VOUCHER_LABEL || 'VOUCHER_LABEL')\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\t$labelRow.append(\n\t\t\t\t\t$(document.createElement('td'))\n\t\t\t\t\t.addClass('memres_puLocLabel visuallyhidden--palm')\n\t\t\t\t\t.append(\n\t\t\t\t\t\t$(document.createElement('label'))\n\t\t\t\t\t\t.append(AEdata.stMemberVoucherLang.PULOC_LABEL || 'PULOC_LABEL')\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\t$labelRow.append(\n\t\t\t\t\t$(document.createElement('td'))\n\t\t\t\t\t.addClass('memres_statusLabel visuallyhidden--palm')\n\t\t\t\t\t.append(\n\t\t\t\t\t\t$(document.createElement('label'))\n\t\t\t\t\t\t.append(AEdata.stMemberVoucherLang.STATUS_LABEL || 'STATUS_LABEL')\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\t$labelRow.append(\n\t\t\t\t\t$(document.createElement('td'))\n\t\t\t\t\t.addClass('memres_action_label numerical')\n\t\t\t\t\t.append(\n\t\t\t\t\t\t$(document.createElement('label'))\n\t\t\t\t\t\t.append('&nbsp;')\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\t$thisTable.append($labelRow);\n\t\t\t\ttheseVouchers.forEach(function(thisVouch) {\n\t\t\t\t\tvar $thisRow = $(document.createElement('tr')).addClass('cardetails-smallprint');\n\t\t\t\t\t$thisRow.append(\n\t\t\t\t\t\t$(document.createElement('td'))\n\t\t\t\t\t\t.addClass('memres_puCalLabel')\n\t\t\t\t\t\t.append(thisVouch.DATE)\n\t\t\t\t\t);\n\t\t\t\t\t$thisRow.append(\n\t\t\t\t\t\t$(document.createElement('td'))\n\t\t\t\t\t\t.addClass('memres_vouchLabel')\n\t\t\t\t\t\t.append(thisVouch.VOUCHNUM)\n\t\t\t\t\t);\n\t\t\t\t\t$thisRow.append(\n\t\t\t\t\t\t$(document.createElement('td'))\n\t\t\t\t\t\t.addClass('memres_puLocLabel visuallyhidden--palm')\n\t\t\t\t\t\t.append(thisVouch.PICKUP)\n\t\t\t\t\t);\n\t\t\t\t\t$thisRow.append(\n\t\t\t\t\t\t$(document.createElement('td'))\n\t\t\t\t\t\t.addClass('memres_statusLabel visuallyhidden--palm')\n\t\t\t\t\t\t.append(thisVouch.STATUSDISPLAY)\n\t\t\t\t\t);\n\t\t\t\t\t\n\t\t\t\t\tvar $linkCell = $(document.createElement('td')).addClass('memres_action numerical');\n\t\t\t\t\tif(vouchKey === 'past'){\n\t\t\t\t\t\t$linkCell.append($(document.createElement('a'))\n\t\t\t\t\t\t\t.attr('href',thisVouch.URL)\n\t\t\t\t\t\t\t.append(AEdata.stMemberVoucherLang.VIEW_LINK || 'VIEW_LINK')\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if(thisVouch.STATUS === 'D') {\n\t\t\t\t\t\t$linkCell.append($(document.createElement('a'))\n\t\t\t\t\t\t\t.attr('href',thisVouch.URL)\n\t\t\t\t\t\t\t.append(AEdata.stMemberVoucherLang.VIEW_LINK || 'VIEW_LINK')\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$linkCell.append($(document.createElement('a'))\n\t\t\t\t\t\t\t.attr('href',thisVouch.URL)\n\t\t\t\t\t\t\t.append($(document.createElement('span'))\n\t\t\t\t\t\t\t\t.addClass('visuallyhidden--desk visuallyhidden--desk-wide visuallyhidden--tablet visuallyhidden--lap')\n\t\t\t\t\t\t\t\t.append(AEdata.stMemberVoucherLang.VIEW_LINK || 'VIEW_LINK')\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.append($(document.createElement('span'))\n\t\t\t\t\t\t\t\t.addClass('visuallyhidden--palm')\n\t\t\t\t\t\t\t\t.append(AEdata.stMemberVoucherLang.VIEW_LINK || 'VIEW_MODIFY_LINK')\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\t$thisRow.append($linkCell);\n\t\t\t\t\t$thisTable.append($thisRow);\n\t\t\t\t});\n\t\t\t\t$thisGridItem.append($thisTable);\n\t\t\t\t$dfAccountReservations.append($thisGrid.append($thisGridItem));\n\t\t\t});\n\t\t} else {\n\t\t\t$dfAccountReservations.append(APP.renderAccountReservationLookupError());\n\t\t}\n\t\t$('#toggleeMemberReservations').html($dfAccountReservations);\n\t},\n\trenderAccountReservationLookupError:function(){\n\t\tAEdata.stMemberVoucherLang = AEdata.stMemberVoucherLang || {};\n\t\treturn $(document.createElement('div')).addClass('grid').append(\n\t\t\t$(document.createElement('div'))\n\t\t\t.addClass('grid__item one-whole palm-one-whole soft--left')\n\t\t\t.append(AEdata.stMemberVoucherLang.VOUCHER_LOOKUP_ERROR || 'VOUCHER_LOOKUP_ERROR')\n\t\t);\n\t}\n\t,\n\tdeparam: function (query) { //WEBAE3-6285 END cool little tool\n\t\tvar pairs, i, keyValuePair, key, value, map = {};\n\t\t// remove leading question mark if its there\n\t\tif (query.slice(0, 1) === '?') {\n\t\t\tquery = query.slice(1);\n\t\t}\n\t\tif (query !== '') {\n\t\t\tpairs = query.split('&');\n\t\t\tfor (i = 0; i < pairs.length; i += 1) {\n\t\t\t\tkeyValuePair = pairs[i].split('=');\n\t\t\t\tkey = decodeURIComponent(keyValuePair[0]);\n\t\t\t\tvalue = (keyValuePair.length > 1) ? decodeURIComponent(keyValuePair[1]) : undefined;\n\t\t\t\tmap[key] = value;\n\t\t\t}\n\t\t}\n\t\treturn map;\n\t}\n};\n\n\treturn APP;\n})();\n\n\n;var AE = AE || {}; /* Add to Base object or create it if it doesn't exist.  */\n\nAE.modal = AE.modal || (function(){\n\t/*\n\tDEPENDENCIES: AE\n\t*/\n\t\tvar APP = {\n\t\tinit:function() {\n\t\t\tAPP.props = {\n\t\t\t\t$modalLink\t: $('a.open_modal_page'),\n\t\t\t\t$devheight \t: $(window).height(),\n\t\t\t\t$devWidth \t:$(window).width()\t\n\t\t\t};\n\n\t\t\tAPP.props.$modalLink.on('click', function(e){\n\t\t\t\te.preventDefault();\n\t\t\t\tvar $target = $(e.target);\n\t\t\t\tvar strUrl = $target.attr('data-url');\n\t\t\t\tAPP.openPageModal(strUrl);\n\t\t\t});\n\t\t\t\n\t\t}\n\t\t,\n\n\t\topenPageModal:function(strUrl) {\n\t\t\tvar currFontSize = $(\"html\").css('font-size');\n\t\t\t\n\t\t\tif(APP.props.$devWidth < 701){\n\t\t\t\t\tmwidth  = .90*APP.props.$devWidth;\n\t\t\t\t\tmheight = .90*APP.props.$devheight;\n\t\t\t\t}\n\t\t\telse if(APP.props.$devWidth >700  &&  APP.props.$devWidth < 1000 ){\n\t\t\t\tmwidth = '550';\n\t\t\t\tmheight= '700';\n\n\t\t\t}\n\t\t\telse{\n\t\t\t\t\tmwidth = '650';\n\t\t\t\t\tmheight= '700';\n\t\t\t\t}\n\n   \t\t\t $.post(strUrl, function(data){   \n\t\t            $('#dialog-modal-page').html(data);\n\t\t            $('#dialog-modal-page').dialog('open');\n\t\t       }, \"html\");\n\n\t   \t \t$(\"#dialog-modal-page\").dialog({\n\t\t        resizable: false,\n\t\t        autoOpen: false,\n\t\t        modal: true,\n\t\t        width:mwidth,\n\t\t        height:mheight,\n\t\t  \t\topen: function(){\n\t\t            jQuery('.ui-widget-overlay').bind('click',function(){\n\t\t                jQuery('#dialog-modal-page').dialog('close');\n\t\t            })\n\t\t        }\n\t\t   }).css(\"font-size\",currFontSize );\n\t\t\n\t\t}\n\t};\n\treturn APP;\n})();\n     \n;\r\nvar AE = AE || {}; /* Add to Base object or create it if it doesn't exist. */\r\n\r\nAE.customerService = AE.customerService || (function() {\r\n\t/* DEPENDENCIES: AE */\r\n\tvar APP = {\r\n\t\tinit: function() {\r\n\t\t\tAPP.props = {\r\n\t\t\t\t$customerServiceForm : $('#customerForm'),\r\n\t\t\t\t$serviceFormType : $('#customerForm').data('serviceformtype'),\r\n                noEBSites: ['AUS', 'DAU', 'DNZ', 'NZL', 'DAP', 'GCR', 'RAU', 'RNZ', 'PEU'], // WEBAE3-6275 - hide excess refund and breakdown protection from certain customer service forms\r\n                allowExcessBreakdown: true,\r\n\t\t\t\tsiteList : ['AEM','AOR','AUS','AUT','BEL','BFR','BRA','CHE','CHF','CHI','DAP','DAU','DEU','DNK','DNZ','ESL','ESP','EUR','FIN','FRA','GBR','GCR','HKG','HRV','IRL','ITA','NAL','NLD','NOR','NZL','PEU','POL','RAU','RNZ','RUS','SWE','TUR','TWN','ZAF','US','CA','CAE','KEM','URC','ERC','ATP'],\r\n                formOnVoucher: $('body').is('#mybooking'),\r\n                hasAltERFields: ['EU', 'GB', 'US', 'CA', 'AU', 'NZ'].includes($('#customerForm').data('serviceformorigin')) // Determines if site has special form fields for Excess Refund Inquiry Type\r\n\t\t\t};\r\n\r\n            // WEBAE3-6275 - hide excess refund/breakdown protection fields if site matches\r\n            for(var i=0; i<APP.props.noEBSites.length; i++) {\r\n                if($('body').hasClass('site--'+APP.props.noEBSites[i])) {\r\n                    APP.props.allowExcessBreakdown = false;\r\n                }\r\n            }\r\n            \r\n\t\t\t// Preload the max counter on the comments form field\r\n\t\t\t$('#charactersLeft span').text(APP.props.commentsMaxChars);\r\n\t\t\t\r\n\t\t\t// Comments text area character count\r\n\t\t\t$('#comments, .has-max-counter').on('keyup', function() {\r\n\t\t\t\tAPP.characterCounter($(this).parent());\r\n\t\t\t});\r\n            \r\n\t\t\t// Fine Uploader\r\n\t\t\tif (AEdata.customerservice && AEdata.customerservice.formAction != 'submit') {\r\n                \r\n\t\t\t\tif (AEdata.customerservice.showGenericUploadFields) {\r\n\t\t\t\t\tAPP.formFineUploaderInstance('file_upload');\r\n\t\t\t\t\tAPP.formFineUploaderInstance('file_upload2');\r\n\t\t\t\t\tAPP.formFineUploaderInstance('file_upload3');\r\n\t\t\t\t\tAPP.formFineUploaderInstance('file_upload4');\r\n\t\t\t\t} else {\r\n                    // WEBAE3-5984 initialize fields based on customer service form location\r\n                    //WEBAE3-6275 don't initialize excess refund or breakdown upload fields for AU/NZ to prevent errors\r\n                    if(APP.props.formOnVoucher && APP.props.hasAltERFields) {\r\n                        APP.formFineUploaderInstance('file_accidentReport');\r\n                        APP.formFineUploaderInstance('file_policeReport');\r\n                        APP.formFineUploaderInstance('file_checkInOutReport');\r\n                        APP.formFineUploaderInstance('file_picDamageOne');\r\n                        APP.formFineUploaderInstance('file_picDamageTwo');\r\n                        APP.formFineUploaderInstance('file_picDamageThree');\r\n                        APP.formFineUploaderInstance('file_picDamageFour');\r\n                        APP.formFineUploaderInstance('file_ccStatementER');\r\n                        APP.formFineUploaderInstance('file_suppDocsER');\r\n                        APP.formFineUploaderInstance('file_rentalAgreementER');\r\n                        APP.formFineUploaderInstance('file_finalInvoiceER');\r\n                    } else if(APP.props.allowExcessBreakdown) {\r\n                        APP.formFineUploaderInstance('file_excessRefund');\r\n                    }\r\n                    \r\n                    APP.formFineUploaderInstance('file_picDamage');\r\n                    APP.formFineUploaderInstance('file_ccStatement');\r\n\t\t\t\t\tAPP.formFineUploaderInstance('file_origVoucher');\r\n\t\t\t\t\tAPP.formFineUploaderInstance('file_fuelReceit');\r\n\t\t\t\t\tAPP.formFineUploaderInstance('file_finalInvoice');\r\n\t\t\t\t\tAPP.formFineUploaderInstance('file_rentalAgreement');\r\n\t\t\t\t\tAPP.formFineUploaderInstance('file_addCharges');\r\n\t\t\t\t\tAPP.formFineUploaderInstance('file_addCharges_2');\r\n\t\t\t\t\tAPP.formFineUploaderInstance('file_tireRepair');\r\n\t\t\t\t\tAPP.formFineUploaderInstance('file_suppDocs');\r\n                    if(APP.props.allowExcessBreakdown) {\r\n                        APP.formFineUploaderInstance('file_breakdownProtection');\r\n                    }\r\n\t\t\t\t\tif (AEdata.customerservice.showOtherUploadFields) {\r\n\t\t\t\t\t\tAPP.formFineUploaderInstance('file_upload');\r\n\t\t\t\t\t\tAPP.formFineUploaderInstance('file_upload2');\r\n\t\t\t\t\t\tAPP.formFineUploaderInstance('file_upload3');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// Use language management for the file upload buttons and background\r\n\t\t\t\t$('div.qq-upload-button div').text(AEdata.customerservice.pageText_chooseFile);\r\n\t\t\t\t$('div.qq-upload-remove-button').text(AEdata.customerservice.pageText_removeFile);\r\n\t\t\t\t$('div.qq-uploader-selector.qq-uploader').attr('qq-drop-area-text', AEdata.customerservice.pageText_dropFile);\r\n                \r\n                if(AEdata.customerservice.formAction == 'haserror' && APP.props.formOnVoucher) {\r\n                    APP.jumpToClaimForm();\r\n                }\r\n\t\t\t} else if(AEdata.customerservice && AEdata.customerservice.formAction == 'submit' && APP.props.formOnVoucher) {\r\n                APP.jumpToClaimForm();\r\n            }\r\n\t\t\t\r\n//\t\t\tif (APP.props.$serviceFormType === 'EUR') {\r\n\t\t\t\t$('.fileUP label, .linkUP label').mouseenter(function() {\r\n\t\t\t\t\t$(this).siblings('.uploadHover').show();\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\t$('.fileUP label, .linkUP label').mouseleave(function() {\r\n\t\t\t\t\t$(this).siblings('.uploadHover').hide();\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tvar selLoad = $('#inquiry_type option:selected').attr('upload');\r\n\t\t\t\tAPP.setInquiryType(selLoad);\r\n\t\t\t\t\r\n\t\t\t\t// on change\r\n\t\t\t\t$('#inquiry_type').on('change', function() {\r\n\t\t\t\t\tvar selChange = $('#inquiry_type option:selected').attr('upload');\r\n\t\t\t\t\tAPP.setInquiryType(selChange);\r\n\t\t\t\t});\r\n//\t\t\t}\r\n\t\t\t\r\n\t\t\tif (APP.props.$serviceFormType === 'AUS') {\r\n\t\t\t\tAPP.changeCity('both');\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t/* PAGE CLICK EVENTS */\r\n\t\t\t$('body').on('click', function (event) {\r\n\t\t\t\tvar $target = $(event.target);\r\n                \r\n\t\t\t\tif ($target.hasClass('qq-upload-remove-button')) {\r\n\t\t\t\t\t// Remove the file image, file name, hidden input value, and change the button back to \"Choose File\"\r\n\t\t\t\t\tAPP.resetFileUploadInput( $target.closest('.file_upload').prev('.file_upload_filename') );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ($target.is(\"#cs_form_submit\")) {\t\t\t\t\t\r\n\t\t\t\t\tif (_.contains( APP.props.siteList, AE.props.siteCode )) {\r\n\t\t\t\t\t\t//client side error handling for attachments\r\n\t\t\t\t\t\t$('#errorHead').hide();\r\n\t\t\t\t\t\t$('#suppdocsError').hide();\r\n\t\t\t\t\t\t$('#addchargesError').hide();\r\n\t\t\t\t\t\t$('#ccstatementError').hide();\r\n\t\t\t\t\t\t$('#originalvouchError').hide();\r\n\t\t\t\t\t\t$('#fuelrefundError').hide();\r\n\t\t\t\t\t\t$('#excessrefundError').hide();\r\n\t\t\t\t\t\t$('#breakdownprotectionError').hide();\r\n\t\t\t\t\t\t$('#tirereceiptError').hide();\r\n\t\t\t\t\t\t$('#addchargesError').hide();\r\n\r\n\t\t\t\t\t\tif ($('#inquiry_type').val() == 'DC' && $('#file_ccStatement').val() == \"\") {\r\n\t\t\t\t\t\t\t$target.addClass('off');\r\n\t\t\t\t\t\t\t$('#errorHead').show();\r\n\t\t\t\t\t\t\t$('#ccstatementError').show();\r\n\t\t\t\t\t\t\t$('#cs_headline')[0].scrollIntoView({behavior:'smooth',block: 'start'});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ($('#inquiry_type').val() == 'DC' && $('#file_suppDocs').val() == \"\") {\r\n\t\t\t\t\t\t\t$target.addClass('off');\r\n\t\t\t\t\t\t\t$('#errorHead').show();\r\n\t\t\t\t\t\t\t$('#suppdocsError').show();\r\n\t\t\t\t\t\t\t$('#cs_headline')[0].scrollIntoView({behavior:'smooth',block: 'start'});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ($('#inquiry_type').val() == 'BP' && $('#file_ccStatement').val() == \"\") {\r\n\t\t\t\t\t\t\t$target.addClass('off');\r\n\t\t\t\t\t\t\t$('#errorHead').show();\r\n\t\t\t\t\t\t\t$('#ccstatementError').show();\r\n\t\t\t\t\t\t\t$('#cs_headline')[0].scrollIntoView({behavior:'smooth',block: 'start'});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ($('#inquiry_type').val() == 'BP' && $('#file_suppDocs').val() == \"\") {\r\n\t\t\t\t\t\t\t$target.addClass('off');\r\n\t\t\t\t\t\t\t$('#errorHead').show();\r\n\t\t\t\t\t\t\t$('#suppdocsError').show();\r\n\t\t\t\t\t\t\t$('#cs_headline')[0].scrollIntoView({behavior:'smooth',block: 'start'});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ($('#inquiry_type').val() == 'BP' && $('#file_breakdownProtection').val() == \"\") {\r\n\t\t\t\t\t\t\t$target.addClass('off');\r\n\t\t\t\t\t\t\t$('#errorHead').show();\r\n\t\t\t\t\t\t\t$('#breakdownprotectionError').show();\r\n\t\t\t\t\t\t\t$('#cs_headline')[0].scrollIntoView({behavior:'smooth',block: 'start'});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ($('#inquiry_type').val() == 'TR' && $('#file_tireRepair').val() == \"\") {\r\n\t\t\t\t\t\t\t$target.addClass('off');\r\n\t\t\t\t\t\t\t$('#errorHead').show();\r\n\t\t\t\t\t\t\t$('#tirereceiptError').show();\r\n\t\t\t\t\t\t\t$('#cs_headline')[0].scrollIntoView({behavior:'smooth',block: 'start'});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ($('#inquiry_type').val() == 'ND' && $('#file_addCharges').val() == \"\") {\r\n\t\t\t\t\t\t\t$target.addClass('off');\r\n\t\t\t\t\t\t\t$('#errorHead').show();\r\n\t\t\t\t\t\t\t$('#addchargesError').show();\r\n\t\t\t\t\t\t\t$('#cs_headline')[0].scrollIntoView({behavior:'smooth',block: 'start'});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif ($('#inquiry_type').val() == 'UC' && $('#file_ccStatement').val() == \"\") {\r\n\t\t\t\t\t\t\t$target.addClass('off');\r\n\t\t\t\t\t\t\t$('#errorHead').show();\r\n\t\t\t\t\t\t\t$('#ccstatementError').show();\r\n\t\t\t\t\t\t\t$('#cs_headline')[0].scrollIntoView({behavior:'smooth',block: 'start'});\r\n\t\t\t\t\t\t}\r\n\r\n                        if(!APP.props.hasAltERFields || !APP.props.formOnVoucher) {\r\n                            if ($('#inquiry_type').val() == 'ER' && $('#file_ccStatement').val() == \"\") {\r\n                                $target.addClass('off');\r\n                                $('#errorHead').show();\r\n                                $('#ccstatementError').show();\r\n                                $('#cs_headline')[0].scrollIntoView({behavior:'smooth',block: 'start'});\r\n                            }\r\n\r\n                            if ($('#inquiry_type').val() == 'ER' && $('#file_suppDocs').val() == \"\") {\r\n                                $target.addClass('off');\r\n                                $('#errorHead').show();\r\n                                $('#suppdocsError').show();\r\n                                $('#cs_headline')[0].scrollIntoView({behavior:'smooth',block: 'start'});\r\n                            }\r\n\r\n                            if ($('#inquiry_type').val() == 'ER' && $('#file_excessRefund').val() == \"\" && APP.props.allowExcessBreakdown) {\r\n                                $target.addClass('off');\r\n                                $('#errorHead').show();\r\n                                $('#excessrefundError').show();\r\n                                $('#cs_headline')[0].scrollIntoView({behavior:'smooth',block: 'start'});\r\n                            }\r\n                        } else {\r\n                            if ($('#inquiry_type').val() == 'ER') {\r\n                                var ererror = false;\r\n                                if($('#police_report_yes').is(':checked') && $('#file_policeReport').val() == \"\") {\r\n                                    ererror = true;\r\n                                    $('#policeReportError').show();\r\n                                } else {\r\n\t\t\t\t\t\t\t\t\t$('#policeReportError').hide();\r\n\t\t\t\t\t\t\t\t}\r\n                                \r\n                                if(!$('#customer_consent').is(':checked')) {\r\n                                    ererror = true;\r\n                                    $('#customer_consent').addClass('haserror');\r\n                                    $('#consentError').show();\r\n                                } else {\r\n\t\t\t\t\t\t\t\t\t$('#customer_consent').removeClass('haserror');\r\n                                    $('#consentError').hide();\r\n\t\t\t\t\t\t\t\t}\r\n\r\n                                if(ererror) {\r\n                                    $target.addClass('off');\r\n                                    $('#errorHead').show();\r\n                                    $('#cs_headline')[0].scrollIntoView({behavior:'smooth',block: 'start'});\r\n                                } else {\r\n                                    $('#customer_consent').removeClass('haserror');\r\n                                    $('#policeReportError, #consentError').hide();\r\n                                }\r\n                            } else {\r\n                                $('#policeReportError, #consentError').hide();\r\n                            }\r\n                        }\r\n\r\n\t\t\t\t\t\tif ($('#inquiry_type').val() == 'BD' && $('#file_addCharges').val() == \"\") {\r\n\t\t\t\t\t\t\t$target.addClass('off');\r\n\t\t\t\t\t\t\t$('#errorHead').show();\r\n\t\t\t\t\t\t\t$('#addchargesError').show();\r\n\t\t\t\t\t\t\t$('#cs_headline')[0].scrollIntoView({behavior:'smooth',block: 'start'});\r\n\t\t\t\t\t\t}\r\n                        \r\n\t\t\t\t\t\tif ($('#inquiry_type').val() == 'BD' && $('#file_suppDocs').val() == \"\") {\r\n\t\t\t\t\t\t\t$target.addClass('off');\r\n\t\t\t\t\t\t\t$('#errorHead').show();\r\n\t\t\t\t\t\t\t$('#suppdocsError').show();\r\n\t\t\t\t\t\t\t$('#cs_headline')[0].scrollIntoView({behavior:'smooth',block: 'start'});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ($('#inquiry_type').val() == 'DU' && $('#file_ccStatement').val() == \"\") {\r\n\t\t\t\t\t\t\t$target.addClass('off');\r\n\t\t\t\t\t\t\t$('#errorHead').show();\r\n\t\t\t\t\t\t\t$('#ccstatementError').show();\r\n\t\t\t\t\t\t\t$('#cs_headline')[0].scrollIntoView({behavior:'smooth',block: 'start'});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ($('#inquiry_type').val() == 'FR' && $('#file_ccStatement').val() == \"\") {\r\n\t\t\t\t\t\t\t$target.addClass('off');\r\n\t\t\t\t\t\t\t$('#errorHead').show();\r\n\t\t\t\t\t\t\t$('#ccstatementError').show();\r\n\t\t\t\t\t\t\t$('#cs_headline')[0].scrollIntoView({behavior:'smooth',block: 'start'});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ($('#inquiry_type').val() == 'FR' && $('#file_fuelReceit').val() == \"\") {\r\n\t\t\t\t\t\t\t$target.addClass('off');\r\n\t\t\t\t\t\t\t$('#errorHead').show();\r\n\t\t\t\t\t\t\t$('#fuelrefundError').show();\r\n\t\t\t\t\t\t\t$('#cs_headline')[0].scrollIntoView({behavior:'smooth',block: 'start'});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ($('#inquiry_type').val() == 'CI' && $('#file_ccStatement').val() == \"\") {\r\n\t\t\t\t\t\t\t$target.addClass('off');\r\n\t\t\t\t\t\t\t$('#errorHead').show();\r\n\t\t\t\t\t\t\t$('#ccstatementError').show();\r\n\t\t\t\t\t\t\t$('#cs_headline')[0].scrollIntoView({behavior:'smooth',block: 'start'});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ($('#inquiry_type').val() == 'CB' && $('#file_origVoucher').val() == \"\") {\r\n\t\t\t\t\t\t\t$target.addClass('off');\r\n\t\t\t\t\t\t\t$('#errorHead').show();\r\n\t\t\t\t\t\t\t$('#originalvouchError').show();\r\n\t\t\t\t\t\t\t$('#cs_headline')[0].scrollIntoView({behavior:'smooth',block: 'start'});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ($('#inquiry_type').val() == 'CB' && $('#file_ccStatement').val() == \"\") {\r\n\t\t\t\t\t\t\t$target.addClass('off');\r\n\t\t\t\t\t\t\t$('#errorHead').show();\r\n\t\t\t\t\t\t\t$('#ccstatementError').show();\r\n\t\t\t\t\t\t\t$('#cs_headline')[0].scrollIntoView({behavior:'smooth',block: 'start'});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/*\r\n\t\t\t\t\t\tif (typeof $('.required .qq-upload-file').html() == 'undefined') {\r\n\t\t\t\t\t\t\t// prevent form submit if any required files are missing\r\n\t\t\t\t\t\t\t$target.addClass('off');\r\n\t\t\t\t\t\t\t$('#errorHead').show();\r\n\t\t\t\t\t\t\t$('#missingfileError').show();\r\n\t\t\t\t\t\t\t$('#cs_headline')[0].scrollIntoView({behavior:'smooth',block: 'start'});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t*/\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\t\tif (! ( $target.hasClass( 'off' )) ) {\r\n\t\t\t\t\t\t// Disable Submit button\t\r\n\t\t\t\t\t\t$target.prop( 'disabled', true );\r\n\r\n\t\t\t\t\t\t// Submit the form\r\n\t\t\t\t\t\tAPP.props.$customerServiceForm.submit();\t\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( _.contains( APP.props.siteList, AE.props.siteCode )) {\r\n\t\t\t\t\t\t//if ($('#inquiry_type').val() == 'BD' && $('#file_addCharges').val() == \"\") {\r\n\t\t\t\t\t\t\t$target.removeClass( 'off' );\r\n\t\t\t\t\t\t\tsetTimeout ( () => { $target.prop( 'disabled', false );} ,5000 );\r\n\t\t\t\t\t\t//}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$( \"#cs_form_submit\" ).prop( 'disabled', false );\r\n\t\t\t\t}\r\n\t\t\t});\r\n            \r\n            /* REFUNDABLE EXCESS SUBSECTION SHOW/HIDE RADIO EVENTS */\r\n            $('body').on('change', '.has-subsection input[type=\"radio\"]', function()\r\n            {\r\n                APP.toggleRESubsection($(this).attr('name'));\r\n            });\r\n\t\t},\r\n        jumpToClaimForm: function() {\r\n            // WEBAE3-5968 Jump to and open customerservice form on claim submit or error, but only on voucher lookup page\r\n            $('#btSubmitClaim').addClass('open').removeClass('closed');\r\n            $('#toggleeClaim').removeClass('visuallyhidden');\r\n            var st = $('#scroll-content').scrollTop() - 20;\r\n            $('#scroll-content').scrollTop($('#bookingSubmitClaim').offset().top + st);\r\n        },\r\n\t\tresetFileUploadInput: function(fileUploadInput) {\r\n\t\t\tvar formfield = fileUploadInput.attr('id'); //get the name of the hidden input form field\r\n\t\t\t$('input#'+formfield).val(\"\"); //remove the filename from the hidden form input\r\n\t\t\t$('#upload_block-'+formfield+' .qq-upload-remove-button').hide(); //remove the \"Remove\" button\r\n\t\t\t$('#upload_block-'+formfield+' .qq-upload-button').show(); //show the \"Upload\" button\r\n\t\t\tfileUploadInput.next('.file_upload').find('li').remove(); //remove the file info\r\n\t\t\tif (typeof AEdata.customerservice !== 'undefined') {\r\n\t\t\t\tfileUploadInput.next('.file_upload').find('.qq-uploader-selector').attr('qq-drop-area-text', AEdata.customerservice.pageText_dropFile); //add back in the text to drop a file\r\n\t\t\t}\r\n\t\t\tif (typeof AEdata.beatrate !== 'undefined') {\r\n\t\t\t\tfileUploadInput.next('.file_upload').find('.qq-uploader-selector').attr('qq-drop-area-text', AEdata.beatrate.pageText_dropFile); //add back in the text to drop a file\r\n\t\t\t}\t\r\n\t\t},\r\n\t\tsetDOCode: function(thispucode) {\r\n\t\t\tvar element = document.getElementById('docode');\r\n\t\t\t\telement.value = thispucode;\r\n\t\t},\r\n\t\tcharacterCounter: function($el) {\r\n\t\t\tvar len = $el.find('textarea').val().length;\r\n            var commentsMaxChars = $el.find('textarea').attr('maxlength') ? parseInt($el.find('textarea').attr('maxlength')) : 500;\r\n\t\t\tvar ch = commentsMaxChars - len;\r\n\t\t\tif (len > commentsMaxChars) {\r\n\t\t\t\t$el.find('.charactersLeft span').text('0');\r\n\t\t\t\t$el.find('.charactersLeft').addClass('color9');\r\n\t\t\t\t$el.removeClass('ui-state-valid').addClass('ui-state-invalid');\r\n\t\t\t} else {\r\n\t\t\t\t$el.find('.charactersLeft span').text(ch);\r\n\t\t\t\t$el.find('.charactersLeft').removeClass('color9');\r\n\t\t\t\t$el.removeClass('ui-state-invalid');\r\n\t\t\t}\r\n\t\t},\r\n\t\tsetInquiryType: function(selType) {\r\n            // WEBAE3-6107 display message for UK Refundable Excess inquiry type instead of form\r\n            $('.fileUP, .linkUP, .csfield').addClass('visuallyhidden'); //start by 'visually' hiding all fields\r\n            if(selType == 'ER' && AE.props.chaosSystem == 'GB') {\r\n                $('#ERUKMSG').show();\r\n                $('.inquiry-comments, .sendrequest-btn').hide();\r\n            } else {\r\n                $('#ERUKMSG').hide();\r\n                $('.inquiry-comments, .sendrequest-btn').show();\r\n                $('.fileUP').removeClass('required'); //remove the required class from the parent div of the file upload blocks\r\n                $('.csfield [required]').removeAttr('required'); //remove the required attribute from all form field elements\r\n                if(selType != 'ER' || APP.props.hasAltERFields) {\r\n                    $('.fileUP.'+selType+', .linkUP.'+selType+', .csfield.'+selType).removeClass('visuallyhidden'); //show only the file upload blocks and form fields associated with the chosen \"inquiry type\"\r\n                    $('.fileUP.'+selType).addClass('required'); //add the required class to all 'chosen' file upload blocks\r\n                    $('.csfield.'+selType+' .required input, .csfield.'+selType+' .required textarea, .csfield.'+selType+' .required select').prop('required', true); //add required attribute to all required 'chosen' form fields\r\n                    $('.fileUP.'+selType+'.notreq').removeClass('required'); //remove the required requirement from those blocks and fields with the class 'notreq'\r\n                }\r\n                \r\n\t\t\t\t// WEBAE3-6519 - When the user selects Refundable Excess Rate, the form cannot be completed because it is expecting 2 file uploads that are not requested.\r\n\t\t\t\tif(selType == 'ER' && (AE.props.chaosSystem != 'AU' || AE.props.chaosSystem != 'NZ')) {\r\n                    $('.fileUP.'+selType+', .linkUP.'+selType+', .csfield.'+selType).removeClass('visuallyhidden'); //show only the file upload blocks and form fields associated with the chosen \"inquiry type\"\r\n                    $('.fileUP.'+selType).addClass('required'); //add the required class to all 'chosen' file upload blocks\r\n                    $('.csfield.'+selType+' .required input, .csfield.'+selType+' .required textarea, .csfield.'+selType+' .required select').prop('required', true); //add required attribute to all required 'chosen' form fields\r\n                    $('.fileUP.'+selType+'.notreq').removeClass('required'); //remove the required requirement from those blocks and fields with the class 'notreq'\r\n                }\r\n\t\t\t\t\r\n                if(selType == 'ER' && APP.props.hasAltERFields) {\r\n                    if(AE.props.chaosSystem != 'GB') {\r\n                        $('.YES_ER').show();\r\n                        $('.NO_ER').hide();\r\n                    } else {\r\n                        $('.YES_ER').hide();\r\n                        $('.NO_ER').hide();\r\n                    }\r\n                } else {\r\n                    $('.YES_ER').hide();\r\n                    $('.NO_ER').show();\r\n                }\r\n            }\r\n            \r\n\t\t\t// Bank Account form field\r\n\t\t\tif (window.location.pathname == '/customerservice/') {\r\n\t\t\t\t$('.inquiry_type_option').hide();\r\n\t\t\t\t// Check to see if the bank account class exists before trying to use it\r\n\t\t\t\tif ($('.inquiry_type_option .bank_number').length) {\r\n\t\t\t\t\tvar inquiryTypeOptionsAll = document.querySelector('.inquiry_type_option .bank_number');\r\n\t\t\t\t\tinquiryTypeOptionsAll.required = 0; //remove the required property\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (selType !== undefined) {\r\n\t\t\t\t\t\t$('.inquiry_type_option.'+selType).show();\r\n\t\t\t\t\t\tvar inquiryTypeOptionSpecific = document.querySelector('.inquiry_type_option.'+selType+' .bank_number');\r\n\t\t\t\t\t\tif (inquiryTypeOptionSpecific !== null) {\r\n\t\t\t\t\t\t\tinquiryTypeOptionSpecific.required = 1; //adds the required property\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n        toggleRESubsection: function(subsection) {\r\n            if($('.has-subsection [name=\"'+subsection+'\"]:checked').val() == 'YES') {\r\n                $('.form-subsection[data-parent=\"'+subsection+'\"]').css('display', 'none').removeClass('visuallyhidden').slideDown();\r\n                \r\n                if(subsection == 'police_report') {\r\n                    $('#noPoliceReport').hide();\r\n                }\r\n            } else {\r\n                $('.form-subsection[data-parent=\"'+subsection+'\"]').slideUp(function() {\r\n                    $(this).addClass('visuallyhidden');\r\n                });\r\n                \r\n                if(subsection == 'police_report') {\r\n                    $('#noPoliceReport').show();\r\n                }\r\n            }\r\n        },\r\n\t\tchangeCity: function(menuType) {\r\n\t\t\t/*\tNEED TO REWORK FUNCTION VARS\r\n\t\t\tvar site = '#request.objSite.getCode()#';\r\n\t\t\tvar lang = '#request.objLang.getLanguageCode()#';\r\n\t\t\tvar pucode = $('##pucode').val();\r\n\t\t\tvar docode = $('##docode').val();\r\n\t\t\tvar pucity =  '#pucity#';\r\n\t\t\tvar docity =  '#docity#';\r\n\t\t\tvar resetpucity = 'true';\r\n\t\t\tvar resetdocity = 'true';\r\n\t\t\tvar puDiv = $('.pucity');\r\n\t\t\tvar doDiv = $('.docity');\r\n\t\t\t\r\n\t\t\tif (menuType == 'both'|menuType == 'pu') {\r\n\t\t\t\t$.ajax({\r\n\t\t\t\t\turl:\"/ajaxsupport/car-citylist_cf.cfm\",\r\n\t\t\t\t\tdataType: \"html\",\r\n\t\t\t\t\tcache:true,\r\n\t\t\t\t\tdata:{\r\n\t\t\t\t\t\tsite: site,\r\n\t\t\t\t\t\tlang: lang,\r\n\t\t\t\t\t\tpucode: pucode,\r\n\t\t\t\t\t\tpucity: pucity,\r\n\t\t\t\t\t\tresetpucity: resetpucity,\r\n\t\t\t\t\t\tlistof: 'pu'\r\n\t\t\t\t\t},\r\n\t\t\t\t\terror: function(){\r\n\t\t\t\t\t\tpuDiv.html('Sorry, there has been an error.');\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbeforeSend: function(){\r\n\t\t\t\t\t\tpuDiv.html('<img src=\"/img/ui/loading.gif\">');\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsuccess: function(data){\r\n\t\t\t\t\t\tpuDiv.html(data);\r\n\t\t\t\t\t\t //if ($('.rdRepl input').length)\r\n\t\t\t\t\t\t$('.pucity select').addClass(\"fullDD\"); //adds class to only visible autosuggest list\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (menuType == 'both'|menuType == 'do') {\r\n\t\t\t\t$.ajax({\r\n\t\t\t\t\turl:\"/ajaxsupport/car-citylist_cf.cfm\",\r\n\t\t\t\t\tdataType: \"html\",\r\n\t\t\t\t\tcache:true,\r\n\t\t\t\t\tdata:{\r\n\t\t\t\t\t\tsite: site,\r\n\t\t\t\t\t\tlang: lang,\r\n\t\t\t\t\t\tpucode: pucode,\r\n\t\t\t\t\t\tdocode: docode,\r\n\t\t\t\t\t\tdocity: docity,\r\n\t\t\t\t\t\tresetdocity: resetdocity,\r\n\t\t\t\t\t\tlistof: 'do'\r\n\t\t\t\t\t},\r\n\t\t\t\t\terror: function(){\r\n\t\t\t\t\t\tdoDiv.html('Sorry, there has been an error.');\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbeforeSend: function(){\r\n\t\t\t\t\t\tdoDiv.html('<img src=\"/img/ui/loading.gif\">');\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsuccess: function(data){\r\n\t\t\t\t\t\tdoDiv.html(data);\r\n\t\t\t\t\t\t$('.docity select').addClass(\"fullDD\"); //adds class to only visible autosuggest list\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t\t*/\r\n\t\t},\r\n\t\tformFineUploaderInstance: function(formfield) {\r\n\t\t\tvar fineUploaderFolder = \"/plugins/ae3/modules/customerservice/fine_uploader\";\r\n\t\t\tvar galleryUploader = new qq.FineUploader({\r\n\t\t\t\t//debug: true,\r\n\t\t\t\tmultiple: false,\r\n\t\t\t\telement: document.getElementById(\"upload_block-\"+formfield),\r\n\t\t\t\ttemplate: 'qq-simple-thumbnails-template',\r\n\t\t\t\trequest: {\r\n\t\t\t\t\tendpoint: '/plugins/ae3/modules/customerservice/image-uploader.cfc?method=uploadSingleFile'\r\n\t\t\t\t},\r\n\t\t\t\tretry: {\r\n\t\t\t\t\tenableAuto: true\r\n\t\t\t\t},\r\n\t\t\t\tthumbnails: {\r\n\t\t\t\t\tplaceholders: {\r\n\t\t\t\t\t\t//waitingPath: fineUploaderFolder+'/placeholders/waiting-generic.png',\r\n\t\t\t\t\t\twaitingPath: fineUploaderFolder+'/processing.gif',\r\n\t\t\t\t\t\tnotAvailablePath: fineUploaderFolder+'/placeholders/not_available-generic.png'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tvalidation: {\r\n\t\t\t\t\titemLimit: 1,\r\n\t\t\t\t\tsizeLimit: AEdata.customerservice.maxSingleFileSize,\r\n\t\t\t\t\tallowedExtensions: AEdata.customerservice.allowedFileExtensions\r\n\t\t\t\t},\r\n\t\t\t\tmessages: {\r\n\t\t\t\t\ttypeError: AEdata.customerservice.errorMessageFileType,\r\n\t\t\t\t\tsizeError: AEdata.customerservice.errorMessageFileSize\r\n\t\t\t\t},\r\n\t\t\t\tcallbacks: {\r\n\t\t\t\t\tonUpload: function(id, name) {\r\n\t\t\t\t\t\t$('#cs_form_submit').addClass('off');\r\n\t\t\t\t\t},\r\n\t\t\t\t\tonComplete: function(id, name, responseJSON) {\r\n\t\t\t\t\t\tif (responseJSON.success) {\r\n\t\t\t\t\t\t\t$('input#'+formfield).val(responseJSON.server_filename);\r\n\t\t\t\t\t\t\t$('#upload_block-'+formfield+' .qq-upload-button').hide();\r\n\t\t\t\t\t\t\t$('#upload_block-'+formfield+' .qq-upload-remove-button').show();\r\n\t\t\t\t\t\t\t$('#cs_form_submit').removeClass('off');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//onError: function(id, name, errorReason) {\r\n\t\t\t\t\t//},\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\t\r\n\treturn APP;\r\n})();\r\n\r\nAE.customerService.init();\r\n\n;\r\nvar AE = AE || {}; /* Add to Base object or create it if it doesn't exist. */\r\n\r\n/*\r\nThe AE.forms object will be the returned result of a self-invoked function. This allows us to expose methods\r\nfor use by other modules while protecting some variables in a closure. If the AE.legacy object is already\r\ndefined then it's not altered. This prevents us from running the entire function each time one of its\r\ninternal methods are called.\r\n*/\r\nAE.forms = AE.forms || (function () {\r\n    /*\r\n    DEPENDENCIES: AE\r\n    */\r\n    var APP = {\r\n        init: function () {\r\n            // Class identifies forms the need form validation // Whole container click event // age info icon on search form // Group of Checkboxes // Each of Group Checkboxes // Any Checkbox on a form to validate on click // Check if optional payment if CC is filled in require other CC fields // Check if payment is optional // Flag whether checkout form inputs passed AJAX validation\r\n            APP.props = {\r\n                $autoForms: $(\".trg__form--AutoPost\"),\r\n                $validateForm: $(\"form.validate\"),\r\n                $moreInfoBtn: $(\".info-icon\"),\r\n                //cannot seem to find syntax for pulling this from search props in search.js\r\n                $ageMin: 25, // The minimum age to rent without additional restrictions or fees\r\n                $ageMax:  69, // The maximum age to rent without additional restrictions or fees\r\n                $ageInfoBtn: $(\".age-info-icon\"),\r\n                $ageInfoText: $(\".age-info-text\"),\r\n                $modalCloseBtn: $(\".ui-icon-close-modal\").parent(\".ui-dialog-titlebar-close\"),\r\n                $groupCheckboxes: $(\"form #carcategory\"),\r\n                $groupCheckinputs: $('form #carcategory input[type=\"checkbox\"]'),\r\n                $checkboxes: $('form input[type=\"checkbox\"]'),\r\n                $paymentRequire: $(\"#ae-checkout #cardnumber\"),\r\n                $debitRequire: $(\"#ae-checkout #ddaccount\"),\r\n                $payOptional: $(\"#ae-checkout .payment_form\").attr(\"pay_optional\"),\r\n                $formLabels: $(\"form label\"),\r\n                checkoutPassedAjax: true,\r\n                loginInputValid: true,\r\n                $isInMemberAccount:window.location.pathname.split('/')[1] == 'member-accounts'\r\n            };\r\n\r\n            // Validate forms with validate class\r\n            APP.applyGuardian(APP.props.$validateForm);\r\n\r\n            AE.ui.addBodyClickTask({\r\n                func: APP.onBodyClick\r\n            });\r\n\r\n            AE.ui.addBodyChangeTask({\r\n                func: APP.onBodyChange\r\n            });\r\n\r\n            // Blanket Ban on labels in info tips focusing their associated input\r\n            APP.props.$formLabels.on(\"click\", function (event) {\r\n                if ($(this).hasClass(\"more-info-tip\")) {\r\n                    event.preventDefault();\r\n                }\r\n            });\r\n\r\n            // Initialize fineUploader JS on beatrate file input - WEBAE3-4369\r\n            if($('input#file_compquote').length) {\r\n                APP.formFineUploaderInstance('file_compquote', 'beatrate');\r\n            }\r\n\r\n            //validate TBI promo code if provided to be analyzed on submit - WEBAE3-4083\r\n            $( \"#tbiPromo\" ).blur(function() {\r\n                if ($( \"#tbiPromo\" ).length !=0) {\r\n                    if ($('input[name=\"tbiPromo\"]').val().length != 0) {\r\n                        jsonToCheck = {\r\n                            \"pcode\": $('input[name=\"tbiPromo\"]').val()\r\n                        };\r\n                        $(\"#submitForm\").attr(\"disabled\", true);\r\n                        //$(\"#submitForm\").css(\"opacity\", \"0.5\");\r\n                        $.ajax({\r\n                                url: \"/plugins/ae3/lib/BookingAjax.cfc?method=validateTBIPromo\",\r\n                                type: 'GET',\r\n                                dataType: \"json\",\r\n                                data: jsonToCheck\r\n                            })\r\n                            .done(function(data) {\r\n                                isValidTBIPromo = data;\r\n                                $(\"#submitForm\").attr(\"disabled\", false);\r\n                                //$(\"#submitForm\").css(\"opacity\", \"1.0\");\r\n                                if (data === false) {\r\n                                    $('input[name=\"tbiPromo\"]')\r\n                                                    .parent()\r\n                                                    .removeClass(\"ui-state-valid\")\r\n                                                    .addClass(\"ui-state-invalid\"); \r\n                                            $(\"#tbi_promo_error\").show();\r\n                                } else {\r\n                                    $(\"#tbi_promo_error\").hide();\r\n                                };\r\n                            })\r\n                            .fail(function() {\r\n                                $(\"#submitForm\").attr(\"disabled\", false);\r\n                                //$(\"#submitForm\").css(\"opacity\", \"1.0\");\r\n                            });\r\n\r\n                    } else {\r\n                        $(\"#tbi_promo_error\").hide();\r\n                    }\r\n                }\r\n            });\r\n\r\n            // Info Text Pop Window Placement & hide/show\r\n            APP.props.$moreInfoBtn.on(\"click\", function (event) {\r\n                event.preventDefault(); // So form labels with info buttons do not validate on click/blur of label\r\n\r\n                var $targetElement = $(event.target).hasClass(\"fa\") ? $(event.target) : $(event.target).children(\"i\");\r\n                AE.ui.dialog.launch({\r\n                    type: \"infoTip\",\r\n                    pos: {\r\n                        my: \"left bottom\",\r\n                        at: \"right top\",\r\n                        of: $targetElement\r\n                    },\r\n                    selector: $targetElement.parent().siblings(\".info-text\")\r\n                });\r\n            });\r\n\r\n            // Optional Payment when users adds Credit Card Require other payment fields\r\n            if (AEdata.hasOwnProperty('checkout') && AEdata.checkout.hasOwnProperty('rq') && AEdata.checkout.rq === false) {\r\n                APP.props.$paymentRequire.on(\"change\", function (event) {\r\n                    if (APP.props.$paymentRequire.val() !== \"\") {\r\n                        $(\"#cardname,#cardnumber,#cvc,#address1,#zip,#cityb\")\r\n                            .prop(\"required\", \"required\")\r\n                            .parent()\r\n                            .addClass(\"required\")\r\n                            .removeClass(\"ui-state-valid ui-state-invalid\");\r\n                        $(\"#expmonth,#expyear\")\r\n                            .prop(\"required\", \"required\")\r\n                            .parent()\r\n                            .removeClass(\"ui-state-valid ui-state-invalid\");\r\n                        $(\"#expmonth\")\r\n                            .parent()\r\n                            .parent()\r\n                            .addClass(\"required\");\r\n                        $(\"#country,#state\")\r\n                            .parent()\r\n                            .removeClass(\"ui-state-valid ui-state-invalid\")\r\n                            .parent()\r\n                            .addClass(\"required\");\r\n                    } else {\r\n                        $(\"#cardname,#cardnumber,#cvc,#address1,#zip,#cityb\")\r\n                            .prop(\"required\", \"\")\r\n                            .parent()\r\n                            .removeClass(\"required\")\r\n                            .removeClass(\"ui-state-valid ui-state-invalid\");\r\n                        $(\"#expmonth,#expyear\")\r\n                            .prop(\"required\", \"\")\r\n                            .parent()\r\n                            .removeClass(\"ui-state-valid ui-state-invalid\");\r\n                        $(\"#expmonth\")\r\n                            .parent()\r\n                            .parent()\r\n                            .removeClass(\"required\");\r\n                        $(\"#country,#state\")\r\n                            .parent()\r\n                            .removeClass(\"ui-state-valid ui-state-invalid\")\r\n                            .parent()\r\n                            .removeClass(\"required\");\r\n                    }\r\n                });\r\n\t\t\t\t\r\n                APP.props.$debitRequire.on(\"change\", function (event) {\r\n                    if (APP.props.$debitRequire.val() !== \"\") {\r\n                        $(\"#ddaccount,#ddname,#ddbank,#address1,#zip,#cityb\")\r\n                            .prop(\"required\", \"required\")\r\n                            .parent()\r\n                            .addClass(\"required\")\r\n                            .removeClass(\"ui-state-valid ui-state-invalid\");\r\n                        $(\"#expmonth,#expyear\")\r\n                            .prop(\"required\", \"required\")\r\n                            .parent()\r\n                            .removeClass(\"ui-state-valid ui-state-invalid\");\r\n                        $(\"#expmonth\")\r\n                            .parent()\r\n                            .parent()\r\n                            .addClass(\"required\");\r\n                        $(\"#country,#state\")\r\n                            .parent()\r\n                            .removeClass(\"ui-state-valid ui-state-invalid\")\r\n                            .parent()\r\n                            .addClass(\"required\");\r\n                    } else {\r\n                        $(\"#ddaccount,#ddname,#ddbank,#address1,#zip,#cityb\")\r\n                            .prop(\"required\", \"\")\r\n                            .parent()\r\n                            .removeClass(\"required\")\r\n                            .removeClass(\"ui-state-valid ui-state-invalid\");\r\n                        $(\"#expmonth,#expyear\")\r\n                            .prop(\"required\", \"\")\r\n                            .parent()\r\n                            .removeClass(\"ui-state-valid ui-state-invalid\");\r\n                        $(\"#expmonth\")\r\n                            .parent()\r\n                            .parent()\r\n                            .removeClass(\"required\");\r\n                        $(\"#country,#state\")\r\n                            .parent()\r\n                            .removeClass(\"ui-state-valid ui-state-invalid\")\r\n                            .parent()\r\n                            .removeClass(\"required\");\r\n                    }\r\n                });\r\n \r\n            }\r\n\r\n            // checkboxes validate on selection, check correct form (may be multiple forms on page)\r\n            APP.props.$checkboxes.on(\"click\", function (event) {\r\n                var theForm = $(event.target).closest(\"form\")[0];\r\n                // prevent guardian validation on the Search form\r\n                if (theForm.id !== \"ae-search\") {\r\n                    $(theForm)\r\n                        .guardian()\r\n                        .validateCheckbox($(event.target));\r\n                }\r\n            });\r\n\r\n            // Define Spinning Gear Markup for Submit Buttons\r\n            if(AE.props.siteCode === 'FCR') {\r\n                APP.props.$spinGear = $(document.createDocumentFragment()).append('<div class=\"ui--loading-results indeterminate-circle-sm\" aria-hidden=\"true\"><svg version=\"1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><path id=\"indeterminate\" d=\"M12 3.25A8.75 8.75 0 1 1 3.25 12\" fill=\"none\" stroke-width=\"2.5\" stroke-linecap=\"square\" stroke=\"#ffffff\"/></svg></div>');\r\n            } else {\r\n                APP.props.$spinGear = $(document.createDocumentFragment()).append($(document.createElement(\"i\"))\r\n                .addClass(\"ui--loading-results fa fa-cog fa-spin fa-2x fa-fw\")\r\n                .attr(\"aria-hidden\", true));\r\n            }\r\n            \r\n            /* Car class \"other\" form field */\r\n            $('#br_carclass').change(function () {\r\n                if ($('#br_carclass').val() === \"Other\") {\r\n                    $(\"#carother\")\r\n                        .prop(\"required\", \"required\")\r\n                        .parent()\r\n                        .addClass(\"required\")\r\n                        .removeClass(\"ui-state-valid ui-state-invalid\");\r\n                } else {\r\n                    $(\"#carother\")\r\n                        .prop(\"required\", \"\")\r\n                        .parent()\r\n                        .removeClass(\"ui-state-valid ui-state-invalid\")\r\n                        .parent()\r\n                        .removeClass(\"required\");\r\n                }\r\n            });\r\n\r\n\t\t\t/*\r\n\t\t\t$('#dp_country').change(function() {\r\n\t\t\t\tAPP.props.$paymentRequire.on(\"change\", function(event) {\r\n\t\t\t\t\tif (APP.props.$paymentRequire.val() !== \"\") {\r\n\t\t\t\t\t\t$(\"#cardname,#cardnumber,#cvc,#address1,#zip,#cityb\")\r\n\t\t\t\t\t\t.prop(\"required\", \"required\")\r\n\t\t\t\t\t\t.parent()\r\n\t\t\t\t\t\t.addClass(\"required\")\r\n\t\t\t\t\t\t.removeClass(\"ui-state-valid ui-state-invalid\");\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$(\"#country,#state\")\r\n\t\t\t\t\t\t.parent()\r\n\t\t\t\t\t\t.removeClass(\"ui-state-valid ui-state-invalid\")\r\n\t\t\t\t\t\t.parent()\r\n\t\t\t\t\t\t.removeClass(\"required\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\t.grid.postalCode ==  hide\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t*/\r\n\t\t\t\r\n\t\t\t$(\"#gpsTNC--Y\").on(\"click\", function () {\r\n\t\t\t\t$(\"#gpsreqbtn\").removeClass(\"visuallyhidden\");\r\n\t\t\t\t$(\"#gpsTNCchk\")\r\n\t\t\t\t\t.removeClass(\"fa-square\")\r\n\t\t\t\t\t.addClass(\"fa-check-square\");\r\n\t\t\t\t$(\"#rental_termsDialog_Gps\").dialog(\"close\");\r\n\t\t\t});\r\n\t\t},\r\n\t\t// Apply client-side form field validation (datePicker validation can be found in AE.ui.js)\r\n\t\tapplyGuardian: function ($forms) {\r\n\t\t\t// Validation Plugin Function Call\r\n\t\t\t$forms.each(function () {\r\n\t\t\t\tvar form = this;\r\n\t\t\t\t$(form).guardian({\r\n\t\t\t\t\t// Extend the default Guardian data patterns\r\n\t\t\t\t\t// https://www.petefreitag.com/cheatsheets/regex/\r\n\t\t\t\t\textend: function () {\r\n                        // Alpha numeric\r\n\t\t\t\t\t\tthis.addPattern({\r\n\t\t\t\t\t\t\talnum: /^[a-zA-Z0-9]+$/\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t// Alpha numeric with spaces and dashes\r\n\t\t\t\t\t\tthis.addPattern({\r\n\t\t\t\t\t\t\talnumsp: /^[a-zA-Z0-9\\-\\s]+$/\r\n\t\t\t\t\t\t});\r\n\r\n                        // Numeric with spaces - WEBAE3-6391 - Skylink: CC number field should accept spaces\r\n\t\t\t\t\t\tthis.addPattern({\r\n\t\t\t\t\t\t\tnumsp: /^[0-9\\s]+$/\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// Alpha numeric with spaces, dashes, and dots (periods)\r\n\t\t\t\t\t\tthis.addPattern({\r\n\t\t\t\t\t\t\talnumspdot: /^[a-zA-Z0-9\\.\\-\\s]+$/\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// Alpha numeric with spaces and special characters\r\n\t\t\t\t\t\tthis.addPattern({\r\n\t\t\t\t\t\t\talnumspecial: /^[a-zA-Z0-9\\s\\_\\&()`.+,\\/'-]*$/\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// Alpha with spaces and hyphens\r\n\t\t\t\t\t\tthis.addPattern({\r\n\t\t\t\t\t\t\talphasp: /^[a-z_'& \\-]+$/i\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// Anything goes (BUT, there needs to be at least one charecter)\r\n\t\t\t\t\t\tthis.addPattern({\r\n\t\t\t\t\t\t\tanything: /.+/\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// Anything goes (BUT, there needs to be at least one charecter that isn't < > = & \")\r\n\t\t\t\t\t\tthis.addPattern({\r\n\t\t\t\t\t\t\tanythingcheckout: /^(?!.*[=\"<>&]).*$/\r\n\t\t\t\t\t\t});\r\n\r\n                        // email updated for WEBAE3-1204 - broader regex with case insensitivity\r\n\t\t\t\t\t\tthis.addPattern({\r\n\t\t\t\t\t\t\temail: /^(?:[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// Hex code for color picker\r\n\t\t\t\t\t\tthis.addPattern({\r\n\t\t\t\t\t\t\thexcolor: /#?[a-fA-F0-9]{3,6}/\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// There needs to be a leading zero in front of the integer\r\n\t\t\t\t\t\tthis.addPattern({\r\n\t\t\t\t\t\t\tlead0num: /^[0-9]+$/\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// Anything but blank\r\n\t\t\t\t\t\tthis.addPattern({\r\n\t\t\t\t\t\t\tnotblank: /^(?!\\s*$).+/\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t//WEBAE3-4934 added < > = & \" characters to notblank for checkout page only\r\n\t\t\t\t\t\tthis.addPattern({\r\n\t\t\t\t\t\t\tnotblankcheckout: /^(?!\\s*$)([^=\"<>&]+)$/\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t// European and US phone combinations\r\n\t\t\t\t\t\tthis.addPattern({\r\n                            wphone: /^(?!\\s)(?:\\+\\d{1,3}|0\\d{1,3}|00\\d{1,2})?(?:\\s?\\(\\d+\\))?(?:[-\\/\\s.]|\\d)+$/\r\n                        });\r\n                        \r\n                        // phone number with minimum 8 digits\r\n\t\t\t\t\t\tthis.addPattern({\r\n                            aunzphone: /(?:\\+?\\)?\\(?\\s?\\-?\\d){8,}/\r\n                            //aunzphone: /^(?!\\s)(?:\\+?)(?:\\d){8,}$/\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t/// URL\r\n\t\t\t\t\t\tthis.addPattern({\r\n\t\t\t\t\t\t\t// http://fubar.com, http://www.fubar.com, https://fubar.com, https://www.fubar.com, fubar.com, and www.fubar.com\r\n\t\t\t\t\t\t\turl: /^(http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:\\/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+\\s*$/\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t/********************************/\r\n\t\t\t\t\t\t/* AUTOEUROPE SPECIFIC PATTERNS */\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// AE affiliate member's passwords can be anything as long as it's between 8 and 16 characters\r\n\t\t\t\t\t\tthis.addPattern({\r\n\t\t\t\t\t\t\tae_affiliatepassword: /^.{8,16}/\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// AE generic currency is a 2-decimal floating point number without a currency symbol\r\n\t\t\t\t\t\tthis.addPattern({\r\n\t\t\t\t\t\t\tae_currency: /^(\\d+)+(,?\\d{3})*(\\.\\d{2})?$/\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// AE member's age\r\n\t\t\t\t\t\tthis.addPattern({\r\n\t\t\t\t\t\t\tae_memberage: /^(1[89]|[2-9]{1}\\d{1})$/\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// AE member's name\r\n\t\t\t\t\t\tthis.addPattern({\r\n\t\t\t\t\t\t\t// a-z, A-Z, 0-9, underscore, must be between 3 and 15 characters, spaces are not allowed\r\n\t\t\t\t\t\t\tae_membername: /^[\\w]{3,15}$/\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// AE account passwords (both members and affiliates) need to adhere to the following criterea:\r\n\t\t\t\t\t\t//    * between 8 characters and 16 characters long\r\n\t\t\t\t\t\t//    * contain at least one lowercased letter\r\n\t\t\t\t\t\t//    * contain at least one uppercased letter\r\n\t\t\t\t\t\t//    * contain at least one number\r\n\t\t\t\t\t\t//    * contain at least one special character\r\n\t\t\t\t\t\tthis.addPattern({\r\n\t\t\t\t\t\t\tae_memberpassword: /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^0-9a-zA-Z]).{8,16}$/\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// AE numeric date pattern in forms\r\n\t\t\t\t\t\tvar sitesWithReverseDatePattern = [\"AUS\", \"NZL\"];\r\n\t\t\t\t\t\tif (sitesWithReverseDatePattern.indexOf(oSite.siteCode) != -1) {\r\n\t\t\t\t\t\t\t// date pattern = dd/mm/yyyy OR dd-mm-yyyy OR dd.mm.yyyy OR ddmmyyyy\r\n\t\t\t\t\t\t\tthis.addPattern({\r\n\t\t\t\t\t\t\t\tae_numericdate: /^(0?[1-9]{1}|(1|2)[0-9]|3(0|1))(-|\\s|\\/|\\.)?((0?[1-9]{1})|(10|11|12))(-|\\s|\\/|\\.|,\\s)?(19|20)?\\d\\d$/i\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// date pattern = mm/dd/yyyy OR mm-dd-yyyy OR mm.dd.yyyy OR mmddyyyy\r\n\t\t\t\t\t\t\tthis.addPattern({\r\n\t\t\t\t\t\t\t\tae_numericdate: /^((0?[1-9]{1})|(10|11|12))(-|\\s|\\/|\\.)?(0?[1-9]|(1|2)[0-9]|3(0|1))(-|\\s|\\/|\\.|,\\s)?(19|20)?\\d\\d$/i\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// AE postal code pattern\r\n\t\t\t\t\t\t// minimum of 4 numbers only (for all sites per WEBAE3-1156 : jOlivier 2018-04-04) & WEBAE3-1324\r\n\t\t\t\t\t\tthis.addPattern({\r\n\t\t\t\t\t\t\tae_postalcode: /^[a-zA-Z0-9\\-\\s]{4,10}\\s*$/\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// AE voucher number\r\n\t\t\t\t\t\tthis.addPattern({\r\n\t\t\t\t\t\t\tae_voucher: /^([a-zA-Z]{2,3})?(\\d+)(\\-.*)?\\s*$/\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t},\r\n                    before: function (el) {\r\n                        if (this.$groups.carcategory !== undefined) {\r\n                            var addGroup = {};\r\n                            addGroup[\"carcategory\"] = false;\r\n                            _.extend(this.$inputs, addGroup);\r\n                        }\r\n\r\n                        /* WEBAE3-4052 \r\n                           More than one checkout button option means the billing info\r\n                           may or may not be required. Determine if it is and adjust\r\n                           form billing inputs required status as needed\r\n                         */\r\n                        if(typeof checkoutSubmitBtn !== 'undefined' && checkoutSubmitBtn.hasOwnProperty('billingrequired')) {\r\n                            if(checkoutSubmitBtn.billingrequired !== 'default') {\r\n                                var aBillingInputs = ['zip','country','cityb','address1','state'];\r\n                                APP.setBillingInputRequiredStatus(aBillingInputs,checkoutSubmitBtn.billingrequired);\r\n                            }\r\n                        }\r\n                    },\r\n                    //Override Guardian's match validation\r\n                    validateMatch: function (el) {// oro?\r\n                        var name = el.attr('name'),\r\n                        val = el.val(),\r\n                        match = $('#' + el.data('match-input')),\r\n                        noCase = ($('#' + el.data('match-nocase')))? true : false;\r\n                        this.$inputs[name] = true;           \r\n\r\n                        if (el.attr('required')) {                        \r\n                            var isMatch = (noCase)? val === match.val():val.toUpperCase() === match.val().toUpperCase();\r\n                            if (!isMatch || val == '') {\r\n                                this.$inputs[name] = false;\r\n                           }                              \r\n                        }\r\n                        this.validationHandler(el);\r\n\r\n                        return this.$inputs[name];\r\n                    },\r\n                    \r\n                    // Override Guardian's select validation\r\n                    validateSelect: function (el) {\r\n                        var selectValid = \"ui-state-valid\"; // Default set to valid\r\n                        var addInput = {}; // create object\r\n                        addInput[el[0].name] = true; // Default set to true passes validation\r\n                        // set check if select has a value set\r\n                        if ($(el).attr(\"required\")) {\r\n                            if ($(el).val() === \"\") {\r\n                                selectValid = \"ui-state-invalid\";\r\n                                addInput[el[0].name] = false;\r\n                            } else {\r\n                                selectValid = \"ui-state-valid\";\r\n                            }\r\n                        }\r\n                        // don't set valid on hidden state options lists or if state is blank\r\n                        var state = el[0];\r\n                        if ($(state).hasClass(\"state--select\")) {\r\n                            if ($(el).hasClass(\"state_dd_hide\")) {\r\n                                selectValid = \"\";\r\n                                if (this.$inputs.state !== undefined) {\r\n                                    delete this.$inputs.state;\r\n                                }\r\n                                delete addInput[el[0].name];\r\n                            }\r\n                            if ($(el).val() === \"\" && !$(el).hasClass(\"state_dd_hide\")) {\r\n                                // Only move forward with state dropdown required if the container around the markup (hence parent().parent()) has the \"required\" class or the dropdown itself has the required HTML property\r\n                                if ($(el)\r\n                                    .parent()\r\n                                    .parent()\r\n                                    .hasClass(\"required\") || $(el).prop(\"required\")) {\r\n                                    //WEBAE3-4036, WEBAE3-4052 make sure ui-state-valid is removed in cases where 2 buttons come into play\r\n                                    $(el)\r\n                                    .parent()\r\n                                    .removeClass('ui-state-valid');\r\n                                    selectValid = \"ui-state-invalid\";\r\n                                    addInput[el[0].name] = false;\r\n                                }\r\n                            }\r\n                        }\r\n\r\n                        $(el)\r\n                            .parent()\r\n                            .addClass(selectValid); // Set select validation status\r\n                        _.extend(this.$inputs, addInput); // push inputs valid status to guardian object\r\n                    },\r\n                    // Override Guardian's checkbox validation\r\n                    validateCheckbox: function (el) {\r\n                        // Check that terms has been checked\r\n                        if ($(el).hasClass(\"terms_conditions\")) {\r\n                            var addInput = {}; // create object\r\n                            addInput[el[0].name] = true; // Default set to true passes validation\r\n                            if ($(el).is(\":checked\")) {\r\n                                $(el)\r\n                                    .parent()\r\n                                    .removeClass(\"ui-state-invalid\");\r\n                            } else {\r\n                                $(el)\r\n                                    .parent()\r\n                                    .addClass(\"ui-state-invalid\");\r\n                                addInput[el[0].name] = false;\r\n                            }\r\n                            _.extend(this.$inputs, addInput); // push inputs valid status to guardian object\r\n                        }\r\n                        if ($(el).data(\"group\") === \"carcategory\" && $(el).data(\"group\") !== undefined) {\r\n                            $(APP.props.$groupCheckboxes)\r\n                                .removeClass(\"ui-state-invalid\")\r\n                                .removeClass(\"ui-state-valid\");\r\n\r\n                            var checkedCount = 0;\r\n                            APP.props.$groupCheckinputs.each(function () {\r\n                                if ($(this).is(\":checked\")) {\r\n                                    checkedCount = checkedCount + 1;\r\n                                }\r\n                            });\r\n                            this.$groups.carcategory.count = checkedCount;\r\n\r\n                            if (this.$groups.carcategory.count > 0) {\r\n                                $(APP.props.$groupCheckboxes).addClass(\"ui-state-valid\");\r\n                                this.$inputs.carcategory = true;\r\n                            } else {\r\n                                $(APP.props.$groupCheckboxes).addClass(\"ui-state-invalid\");\r\n                                this.$inputs.carcategory = false;\r\n                            }\r\n                        }\r\n                    },\r\n                    validateFile: function (el) {\r\n                        // Checks that file upload is required\r\n                        var addInput = {}; // create object\r\n                        addInput[el[0].name] = true; // Default set to true passes validation\r\n                        if ($(el).prop(\"required\") === true) {\r\n                            if ($(el).val() === \"\") {\r\n                                $(el)\r\n                                    .parent()\r\n                                    .addClass(\"ui-state-invalid\");\r\n                                addInput[el[0].name] = false;\r\n                            } else {\r\n                                $(el)\r\n                                    .parent()\r\n                                    .removeClass(\"ui-state-invalid\");\r\n                            }\r\n                        } else {\r\n                            $(el)\r\n                                .parent()\r\n                                .removeClass(\"ui-state-invalid\");\r\n                        }\r\n                        _.extend(this.$inputs, addInput); // push inputs valid status to guardian object\r\n                    },\r\n                    validateCheckout: function (el, disableSubmit) {\r\n                        var $dfd = $.Deferred();\r\n                        var addInput = {};\r\n\r\n                        APP.props.checkoutPassedAjax = true;\r\n                        if($('#ta__block--details .ui-state-invalid').length){\r\n                            $('#ta__block--details .toggle_pm_header.toggler:not(.open)').click();\r\n                            $('#ta__block--details input').change();\r\n                        }\r\n                        //WEBAE3-3718 - only add spin gear to button clicked if more than one button was shown\r\n                        if(typeof checkoutSubmitBtn !== 'undefined') {\r\n                            $(checkoutSubmitBtn.clicked).prop(\"disabled\", disableSubmit || false);\r\n                            $(checkoutSubmitBtn.notclicked).prop(\"disabled\", disableSubmit || false);\r\n                            // replaced code: el.find('button[type=\"submit\"]').prop(\"disabled\", disableSubmit || false);\r\n                            APP.addSpinGear($(checkoutSubmitBtn.clicked));\r\n                        }\r\n\r\n                        \r\n                        //validate TBI promo code if provided - WEBAE3-4083\r\n                        if ($(el.find('input[name=\"tbiPromo\"]')).length !=0) {\r\n                            if ($(el.find('input[name=\"tbiPromo\"]')).val().length != 0) {\r\n                                if ( isValidTBIPromo === false) {\r\n\r\n                                    $(el.find('input[name=\"tbiPromo\"]'))\r\n                                                    .parent()\r\n                                                    .removeClass(\"ui-state-valid\")\r\n                                                    .addClass(\"ui-state-invalid\"); \r\n                                            el.guardian().$inputs.tbiPromo = false;\r\n                                            $(\"#tbi_promo_error\").show();\r\n\r\n                                }\r\n                            }\r\n                        }\r\n\r\n                        $dfd.done(function () {\r\n                            //console.log(['Deferred object done: addInput = ',addInput]);\r\n                            _.extend(el.guardian().$inputs, addInput);\r\n                            //console.log(['Inputs checked',el.guardian().$inputs]);\r\n                            APP.props.checkoutPassedAjax = !_.contains(_.values(el.guardian().$inputs), false);\r\n                            //console.log(APP.props.checkoutPassedAjax);\r\n\r\n\r\n                            if (el.guardian().$inputs.email === false) {\r\n                                $(el.find('input[name=\"email\"]'))\r\n                                    .parent()\r\n                                    .removeClass(\"ui-state-valid\")\r\n                                    .addClass(\"ui-state-invalid\");\r\n                            }\r\n                            if (el.guardian().$inputs.cardnumber === false) {\r\n                                $(el.find('input[name=\"cardnumber\"]'))\r\n                                    .parent()\r\n                                    .removeClass(\"ui-state-valid\")\r\n                                    .addClass(\"ui-state-invalid\");\r\n                            }                      \r\n\r\n                            el.find('button[type=\"submit\"]').prop(\"disabled\", APP.props.checkoutPassedAjax);\r\n                            \r\n                            if (APP.props.checkoutPassedAjax) {\r\n\r\n                                //WEBAE3-4058 use device.js instead of CF\r\n                                if(device && device.type == 'tablet'){\r\n                                    $('input#deviceGroup').val('WT');// Pass new voucher type to XBE through hidden field\r\n                                } else if(device && device.type == 'mobile'){\r\n                                    $('input#deviceGroup').val('WP');// Pass new voucher type to XBE through hidden field\r\n                                }\r\n                                \r\n                                el.addClass(\"ae-checkout--bypassAjax\").submit();\r\n                            } else {\r\n                                $(\".ui-state-invalid\")\r\n                                    .first()\r\n                                    .find(\"input\")\r\n                                    .focus();\r\n                                APP.removeSpinGear(el.find('button[type=\"submit\"]'));\r\n                            }\r\n\t\t\t\t\t\t});\r\n                       //validate cardnumber if provided\r\n                        if ($(el.find('input[name=\"cardnumber\"]')).length !=0) {\r\n                            if ($(el.find('input[name=\"cardnumber\"]')).val().length != 0) {\r\n                                addInput = {\r\n                                    \"cardnumber\": APP.validateCreditCard($(el.find('input[name=\"cardnumber\"]')).val())\r\n                                };\r\n                            }\r\n                        }\r\n                        \r\n                        $dfd.resolve();\r\n\r\n                        \r\n                        /* ajax call deprecated - WEBAE3-1204\r\n                        $.ajax({\r\n                                url: \"/plugins/ae3/lib/BookingAjax.cfc\",\r\n                                type: 'POST',\r\n                                dataType: \"json\",\r\n                                data: el.serialize()\r\n                            })\r\n                            .done(function(data) {\r\n                                // console.log(data);\r\n                                // console.log(el);\r\n                                addInput = data;\r\n                                $dfd.resolve();\r\n                            })\r\n                            .fail(function() {\r\n                                 console.log('Validate Checkout Fail');\r\n                                $dfd.resolve();\r\n                            });\r\n                          */\r\n                    },\r\n                    validateAccountLogin: function (el, disableSubmit) {\r\n                        APP.props.loginInputValid = true;\r\n                        el.find('button[type=\"submit\"]').prop(\"disabled\", disableSubmit || false);\r\n                    \t//but if username isn't an email or password is blank, send ajax call to get appropriate return message for display SL\r\n                        //Do not need password field validated on login by Guardian SL\r\n                        //but if username isn't an email or password is blank, don't send Ajax call\r\n                        // if (el.guardian().$inputs.member_username === false || el.guardian().$inputs.member_password === false) {\r\n                        //    APP.props.loginInputValid = false;\r\n                        // }\r\n\r\n                         if (APP.props.loginInputValid) {\r\n                            //passed client side checks so fire login call\r\n                            $.ajax({\r\n                                type: \"POST\",\r\n                                url: '/plugins/ae3/lib/Member3.cfc',\r\n                                data: {\r\n                                    method: 'isValidLogin',\r\n                                    email: $('#account_login_form').find('input[name=\"member_username\"]').val(),\r\n                                    password: $('#account_login_form').find('input[name=\"member_password\"]').val()\r\n                                },\r\n                                dataType: 'json',\r\n                                success: function (result) {\r\n\r\n                                    AE.account.setHTML('member-response-right', '');\r\n                                    AE.account.hideGridDiv('account_login_form','member-response-right');\r\n\r\n                                    if (result.RESULT) {\r\n                                        AE.account.handleSalesforceLogin(); \r\n                                        //WEBAE3-2170 - update search form age on log-in if user didn't change age on initial search\r\n                                        if (result.AGE != '') {\r\n                                           APP.handleLoginAge(result.AGE)\r\n                                        }\r\n                                        APP.props.loginInputValid = true;\r\n\r\n                                        \r\n                                        if(typeof result.showSubscribe != \"undefined\" && result.showSubscribe == true\r\n                                            && (window.location.pathname !== '/checkout/' && window.location.pathname !== '/payment/')\r\n                                         ){ //WEBAE3-6285 trigger New Modal to spawn when unsubscribed user logs in except the following pages\r\n                                            localStorage.setItem(\"aeShowSubscribe\", true);//notsignedup \r\n                                        }\r\n\r\n\r\n                                        if (AEdata && AEdata.booking && AEdata.booking.state && AEdata.booking.state.step) {\r\n                                            if (AEdata.booking.state.step == 'bookform') {\r\n                                                var $oStored =  JSON.parse(localStorage.getItem('aeSearch'));\r\n                                                if($oStored && $oStored.searchAgeCheckbox && $oStored.searchAge == 40) {\r\n                                                    //WEBAE3-5069 update setItem to include updated search object\r\n                                                    $oStored['showFillAgeCheckout'] = false;\r\n                                                    localStorage.setItem('aeSearch',JSON.stringify($oStored));\r\n                                                }                                          \r\n                                            }\r\n                                            // Entering this requote block on /confirmation/ will send the user to a quote expired page\r\n                                            if (\r\n                                                    window.location.pathname !== '/confirmation/' && \r\n                                                    AEdata.booking.quote && \r\n                                                    AEdata.booking.quote.oQuote && \r\n                                                    ( \r\n                                                        $('html').hasClass('ua-ios') || \r\n                                                        (AEdata.booking.quote.oQuote.oRules && AEdata.booking.quote.oQuote.oRules.applyMemberDU)\r\n                                                    )\r\n                                                ){\r\n\t\t\t\t\t\t\t\t\t\t\t\t// WEBAE3-1669 - always generate a new quote to get member discount\r\n                                                AE.ui.search.autocomplete.setFromQuote({\r\n                                                    loggedInAt:AEdata.booking.state.step,\r\n                                                    searchAge: result.AGE\r\n                                                });\r\n                                                AE.ui.search.formSubmit(true);\r\n                                            } else if (AE.props.useWEBAE3_4453 && window.location.pathname === '/confirmation/') {\r\n                                                // WEBAE3-4453 Logging in on /confirmation/ sends user to member dashboard\r\n                                                window.location.href = '/member-accounts/';\r\n                                            } else if (window.location.pathname === '/results/') {\r\n                                                //WEBAE3-5167 need to resubmit search form to get fresh human sec signals\r\n                                                //otherwise user gets blocked for re-using signals on a generic reload\r\n                                                //WEBAE3-5607 - don't need to worry about human sec signals but this fixes age bug now, too\r\n                                                //so it stays\r\n                                                var $oStored =  JSON.parse(localStorage.getItem('aeSearch'));\r\n                                                var tmpAge = 40;\r\n                                                if( $oStored && !$oStored.searchAgeCheckbox ) {\r\n                                                    tmpAge = $oStored.searchAge;\r\n                                                }else{\r\n                                                    tmpAge = result.AGE;\r\n                                                }\r\n                                                AE.ui.search.autocomplete.setFromQuote({\r\n                                                    loggedInAt:AEdata.booking.state.step,\r\n                                                    searchAge: tmpAge\r\n                                                });\r\n                                                AE.ui.search.formSubmit(true);                                               \r\n\r\n                                            } else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t// Don't trigger login requote for sites that don't offer Member Discount WEBAE3-3230\r\n                                                window.location.reload();//keep user on page they logged in on WEBAE3-1662\r\n                                            }\r\n                                        } else {\r\n                                            if (AE.props.useWEBAE3_4453) {\r\n                                                // WEBAE3-4453 Redirect to /member-accounts/ on login but only if:\r\n                                                // 1. No password change is required\r\n                                                // 2. No active quote in context except /confirmation/ (handled above)\r\n                                                window.location.href = '/member-accounts/';\r\n                                            } else {\r\n                                                window.location.reload();//keep user on page they logged in on WEBAE3-1662  \r\n                                            }\r\n                                        }\r\n                                    } else {\r\n                                        if (result.CHANGEPASSWORD ) {\r\n                                            APP.handleLoginChangePassword(result.MESS, result.UID);\r\n                                            APP.removeSpinGear($('#account_login_button'));\r\n                                            AE.ui.enableClicks();\r\n                                            el.find('button[type=\"submit\"]').prop(\"disabled\",false);\r\n                                        } else {\r\n                                       \t\tAPP.props.loginInputValid = false;\r\n                                        \tAE.account.showEle('forgotPasswordContainer');\r\n                                            if ($(\"#member-response-left\").html() != result.MESS) { \r\n                                                AE.account.setHTML('member-response-left', result.MESS);\r\n                                                AE.account.showGridDiv('member-response-left', '');\r\n                                            }\r\n                                        }\r\n\r\n                                        APP.removeSpinGear($('#account_login_form').find('button[type=\"submit\"]'));\r\n                                        AE.ui.enableClicks();\r\n                                        el.find('button[type=\"submit\"]').prop(\"disabled\",false);\r\n                                    }\r\n                                },\r\n                                error: function(result) {\r\n                                    console.log('Error Hit');\r\n                                    APP.props.loginInputValid = false;\r\n                                    handleAjaxLoginFail();\r\n                                }\r\n                            });\r\n                        } else {\r\n                            $(\".ui-state-invalid\")\r\n                                .first()\r\n                                .find(\"input\")\r\n                                .focus();\r\n                            $('#account_login_form')\r\n                                .find('button[type=\"submit\"]')\r\n                                .prop(\"disabled\", false);\r\n                        }\r\n                        function handleAjaxLoginFail() {\r\n                            //console.log('ajaxFails');\r\n                            $('#account_login_form')\r\n                                .find('input[name=\"member_username\"]')\r\n                                .parent()\r\n                                .removeClass(\"ui-state-valid\")\r\n                                .addClass(\"ui-state-invalid\");\r\n                            $('#account_login_form')\r\n                                .find('input[name=\"member_password\"]')\r\n                                .parent().removeClass(\"ui-state-valid\")\r\n                                .addClass(\"ui-state-invalid\");\r\n                            $(\".ui-state-invalid\")\r\n                                .first()\r\n                                .find(\"input\")\r\n                                .focus();\r\n                            $('#account_login_form')\r\n                                .find('button[type=\"submit\"]')\r\n                                .prop(\"disabled\", false);\r\n                            APP.removeSpinGear($('#account_login_form').find('button[type=\"submit\"]'));\r\n                        }\r\n                    },\r\n                    failure: function () {\r\n                        // Form Failed JS Validation\r\n                        $(\".ui-state-invalid\")\r\n                            .first()\r\n                            .find(\"input\")\r\n                            .focus();\r\n                        // alert(JSON.stringify(this.$inputs));\t// Used for IE8 testing\r\n                        if (this.$el[0].id === \"ae-checkout\") {\r\n                            this.validateCheckout($(this.$el[0]), false);\r\n                        }\r\n                        if (this.$el[0].id === \"frEmailMod\") {\r\n                            $(\"#btEmailModSubmit\").prop(\"disabled\", false);\r\n                        }\r\n                        if (this.$el[0].id === \"frSimpleMod\") {\r\n                            event.preventDefault();\r\n                            $(\"#btSimpleModSubmit\").prop(\"disabled\", false);\r\n                            return true;\r\n                        }\r\n                        if (this.$el[0].id === \"frConvert\") {\r\n                            event.preventDefault();\r\n                            $(\"#btConvertSubmit\").prop(\"disabled\", false);\r\n                            return true;\r\n                        }\r\n                        if (this.$el[0].id === \"frElecPayment\") {\r\n                            APP.removeSpinGear($('#btElecPaymentSubmit'));\r\n                            event.preventDefault();\r\n                            $(\"#btElecPaymentSubmit\").prop(\"disabled\", false);\r\n                            return true;\r\n                        }\r\n                        if (this.$el[0].id === \"frCancel\") {\r\n                            $(\"#btCancel\").prop(\"disabled\", false);\r\n                        }\r\n                        if (this.$el[0].id === \"account_login_form\") {\r\n                            this.validateAccountLogin($(this.$el[0]), true);// console.log(this.$el);\r\n\r\n                            //$(\"#account_login_button\").prop(\"disabled\", false);\r\n                        }\r\n                        return false;\r\n                    },\r\n                    success: function () {\r\n                        if (AE.props.siteCode === 'FCR' && this.$el.find(\"fcr--btn-anim\")) {\r\n                            AE.ui.disableClicks();\r\n                            APP.addSpinGear(this.$el.find(\"button.fcr--btn-anim\"));\r\n\r\n                            //WEBAE3-4362 make sure checkout doubleclicks don't fire two voucher requests\r\n                            if(this.$el[0].id === \"fcr-checkout\"  && !$(this.$el[0]).hasClass(\"ae-checkout--bypassAjax\")){\r\n                                this.validateCheckout($(this.$el[0]), true);\r\n                                return false;\r\n                            } else {\r\n                                return true;\r\n                            }\r\n                        }\r\n                        if (this.$el.hasClass(\"frmVoucherLookup\") ||  this.$el.is(\"#account_lookup_form\") || this.$el.is(\"#frSimpleMod\") || this.$el.is(\"#frConvert\") || this.$el.is(\"#frElecPayment\") || this.$el.is(\"#customerForm\")) {\r\n                            AE.ui.disableClicks();\r\n                            APP.addSpinGear(this.$el.find(\"button.btn--primary\"));\r\n                            return true;\r\n                        }\r\n                        if (this.$el[0].id === \"account_login_form\") {\r\n                             AE.ui.disableClicks();\r\n                            APP.addSpinGear($(this.$el[0]).find('button[type=\"submit\"]'));\r\n                            this.validateAccountLogin($(this.$el[0]), true);\r\n                            //AE.account.loginUser();\r\n                            return true;\r\n                        }\r\n                        if (this.$el[0].id === \"ae-checkout\" && !$(this.$el[0]).hasClass(\"ae-checkout--bypassAjax\")) {\r\n                            //WEBAE3-3718 - only add spin gear to button clicked if more than one\r\n                            if(typeof checkoutSubmitBtn !== 'undefined') {\r\n                                //APP.addSpinGear($(this.$el[0]).find('button[type=\"submit\"]'));\r\n                                APP.addSpinGear($(checkoutSubmitBtn.clicked));//WEBAE3-3718 checkoutSubmitBtn defined in AE.booking.js> BOOKFORM section\r\n                            }\r\n                            this.validateCheckout($(this.$el[0]), true);\r\n                            return false;\r\n                        }\r\n                        if (this.$el[0].id === \"frEmailMod\") {\r\n                            //console.log('frEmailMod submitted');\r\n                            $(\"#btEmailModSubmit\").prop(\"disabled\", true);\r\n                            return true;\r\n                        }\r\n                        if (this.$el[0].id === \"frSimpleMod\") {\r\n                            //console.log('frSimpleMod submitted');\r\n                            $(\"#btSimpleModSubmit\").prop(\"disabled\", true);\r\n                            return true;\r\n                        }\r\n                        if (this.$el[0].id === \"frConvert\") {\r\n                            //console.log('frSimpleMod submitted');\r\n                            $(\"#btConvertSubmit\").prop(\"disabled\", true);\r\n                            return true;\r\n                        }\r\n                        if (this.$el[0].id === \"frElecPayment\") {\r\n                            //console.log('frSimpleMod submitted');\r\n                            $(\"#btElecPaymentSubmit\").prop(\"disabled\", true);\r\n                            return true;\r\n                        }\r\n                        if (this.$el[0].id === \"frCancel\") {\r\n                            //console.log('frCancel submitted');\r\n                            $(\"#btCancel\").prop(\"disabled\", true);\r\n                            return true;\r\n                        }\r\n                        //NOTE this condition must be last because else statement will apply to all other requests except those above\r\n                        if (this.$el[0].id === \"autosurvey\") {\r\n                            var $button = $(\"#autosurvey button.btn--primary\").prop(\"disabled\", true);\r\n                            AE.ui.disableClicks();\r\n                            APP.addSpinGear($button);\r\n                            return true;\r\n                        } else {\r\n                            return true;\r\n                        }\r\n                    }\r\n                });\r\n            });\r\n        },\r\n        // Luhn algorithm to match checksum on cardnumber\r\n        validateCreditCard: function (value) {\r\n            // accept only digits, dashes or spaces\r\n            if (/[^0-9-\\s]+/.test(value)) return false;\r\n            \r\n            // Use Luhn Algorithm\r\n            var nCheck = 0,\r\n                nDigit = 0,\r\n                bEven = false;\r\n            value = value.replace(/\\D/g, \"\");\r\n\r\n            for (var n = value.length - 1; n >= 0; n--) {\r\n                var cDigit = value.charAt(n),\r\n                    nDigit = parseInt(cDigit, 10);\r\n\r\n                if (bEven) {\r\n                    if ((nDigit *= 2) > 9) nDigit -= 9;\r\n                }\r\n\r\n                nCheck += nDigit;\r\n                bEven = !bEven;\r\n            }\r\n            return (nCheck % 10) == 0;\r\n        },\r\n        // Handle Label and hide/show for State/Province dropdown\r\n        stateMenus: function (selector) {\r\n            // Handles hiding and showing State select menus based on Country selection for old markup generated by request.objCommon.PopulateStateDropdownDropkick() function\r\n            //console.log('LEGACY State Menu Update calling call ' + selector);\r\n        },\r\n        // Voucher Lookup Toggle and display\r\n        handleVoucherLookup: function ($target) {\r\n            if ($target.hasClass(\"voucherLookupInputToggle\")) {\r\n                var $vNumDiv = $(\"form.frmVoucherLookup div#voucherNumberInput\");\r\n                var $vEmailDateDiv = $(\"form.frmVoucherLookup div#voucherEmailDateInput\");\r\n                var $vInputToggleIcon = $(\"form.frmVoucherLookup label.voucherLookupInputToggle i.fa.voucherLookupInputToggle\");\r\n\r\n                if ($vNumDiv.hasClass(\"trulyhidden\")) {\r\n                    $vInputToggleIcon\r\n                        .addClass(\"fa-check-circle\")\r\n                        .removeClass(\"fa-circle\");\r\n                    $vNumDiv\r\n                        .removeClass(\"trulyhidden\")\r\n                        .find(\"input\")\r\n                        .prop(\"required\", true);\r\n                    $vEmailDateDiv\r\n                        .addClass(\"trulyhidden\")\r\n                        .find(\"input\")\r\n                        .prop(\"required\", false)\r\n                        .val(\"\");\r\n                } else if ($vEmailDateDiv.hasClass(\"trulyhidden\")) {\r\n                    $vInputToggleIcon\r\n                        .addClass(\"fa-circle\")\r\n                        .removeClass(\"fa-check-circle\");\r\n                    $vEmailDateDiv\r\n                        .removeClass(\"trulyhidden\")\r\n                        .find(\"input\")\r\n                        .prop(\"required\", true);\r\n                    $vNumDiv\r\n                        .addClass(\"trulyhidden\")\r\n                        .find(\"input\")\r\n                        .prop(\"required\", false)\r\n                        .val(\"\");\r\n                }\r\n            }\r\n        },\r\n        // Cleanup email of common errors\r\n        emailClean: function (inputID) {\r\n            // Correct a number of common typos that will always yeild an invalid email address\r\n            var bDebug = false; // Controls whether or not to throw custom errors\r\n            var cleanEmail = $.trim($(inputID).val()); // Start with trimmed raw input value\r\n            if (bDebug) throw \"Email Cleanup Step 0: \" + $(inputID).val();\r\n            if (bDebug) throw \"Email Cleanup Step 1: \" + cleanEmail;\r\n            cleanEmail = cleanEmail.split(\"..\").join(\".\");\r\n            if (bDebug) throw \"Email Cleanup Step 2: \" + cleanEmail;\r\n            var atPos = cleanEmail.search(\"@\");\r\n            while (cleanEmail.substring(atPos - 1, atPos) == \".\" || cleanEmail.substring(atPos + 1, atPos + 2) == \".\") {\r\n                cleanEmail = cleanEmail.replace(/\\.@/g, \"@\"); // Remove period from position directly before @\r\n                if (bDebug) throw \"Email Cleanup Step 3: \" + cleanEmail;\r\n                cleanEmail = cleanEmail.replace(/@\\./g, \"@\"); // Remove period from position directly after @\r\n                if (bDebug) throw \"Email Cleanup Step 4: \" + cleanEmail;\r\n                atPos = cleanEmail.search(\"@\");\r\n            }\r\n            while (cleanEmail.substring(0, 1) == \".\") {\r\n                // Remove periods from first position of string\r\n                cleanEmail = cleanEmail.substring(1);\r\n                if (bDebug) throw \"Email Cleanup Step 5: \" + cleanEmail;\r\n            }\r\n            while (cleanEmail.substring(cleanEmail.length - 1, cleanEmail.length) == \".\") {\r\n                // Remove periods from last position of string\r\n                cleanEmail = cleanEmail.substring(0, cleanEmail.length - 1);\r\n                if (bDebug) throw \"Email Cleanup Step 6: \" + cleanEmail;\r\n            }\r\n            $(inputID).val(cleanEmail); // Replace input value with cleaned string\r\n        },\r\n        // Removes whitespace in voucher number\r\n        cleanWhitespace: function (event, targetID) {\r\n            /* Simari - 01/30/18 - https://autoeurope.jira.com/browse/WEBAE3-886 */\r\n            // var input = document.getElementsByName(targetName)[0];\r\n            var input = document.getElementById(targetID);\r\n            var val = input.value.replace(/\\s+/g, \"\");\r\n            input.value = val;\r\n        },\r\n        // Replace Double Quotes in an Input With Single Quotes to protect XML\r\n        quoteSwap: function (inputID) {\r\n            $(inputID).val($(inputID)\r\n                .val()\r\n                .replace(/\"/g, \"''\"));\r\n        },\r\n        // Apply Spinning Gear Markup to Submit Buttons\r\n        addSpinGear: function ($button) {\r\n            $button = $button || [];\r\n\r\n            if ($button[0] && !$($button).hasClass('ui--btn-submit-wait')){\r\n                $button\r\n                    .addClass(\"ui--btn-submit-wait\")\r\n                    .append(APP.props.$spinGear.clone().hide())\r\n                    .ready(function () {\r\n                        $button.find(\".ui--loading-results\").fadeIn();\r\n                    });\r\n            }\r\n        },\r\n        removeSpinGear: function ($button) {\r\n            $button = $button || [];\r\n            if ($button[0]) {\r\n                $button\r\n                    .removeClass(\"ui--btn-submit-wait\")\r\n                    .find(\"i.ui--loading-results\")\r\n                    .remove();\r\n            }\r\n        },\r\n        // Body Click Watch Tasks\r\n        onBodyClick: function (event, $target) {\r\n            // Toggle Age Info dropdown (search form)\r\n            if (_.contains(APP.props.$ageInfoBtn, $target[0])) {\r\n                // (APP.props.$ageInfoText).show();\r\n                return $target.siblings(APP.props.$ageInfoText).toggleClass(\"display-inline\");\r\n            } else if (!APP.props.$ageInfoText.is($target[0]) && APP.props.$ageInfoText.hasClass(\"display-inline\")){\r\n                // (APP.props.$ageInfoText).hide();\r\n               return APP.props.$ageInfoText.removeClass(\"display-inline\");\r\n            }\r\n\r\n            // Modal/dropdown Close Buttons\r\n            if (_.contains(APP.props.$modalCloseBtn, $target[0])) {\r\n                if ($target.attr('data-modal-target') == '.age-info-text') {\r\n                    return APP.props.$ageInfoText.toggleClass(\"display-inline\");\r\n                }\r\n                return $($target.attr('data-modal-target')).toggleClass('visuallyhidden');\r\n            }\r\n\r\n            APP.handleVoucherLookup($target);\r\n\r\n            if ($target.hasClass(\"btnGoodDates\")){\r\n                _.each($('form.frmGoodDates input.datePickerInput'),function(thisInput){\r\n                    var ogDate = $(thisInput).datepicker('getDate');\r\n                    $(thisInput).val($.datepicker.formatDate(\"mm-dd-yy\", $(thisInput).datepicker('getDate')));\r\n                    $(thisInput).datepicker('setDate', ogDate);\r\n                });\r\n                return true;\r\n            }\r\n\r\n            if ($target.hasClass(\"btn--anim\")) {\r\n                APP.addSpinGear($target);\r\n            }\r\n\r\n            if ($target.is(\"button#frChangeCar\") || $target.is(\"#frCancel #btCancel\")) {\r\n                APP.addSpinGear($target);\r\n                return true;\r\n            }\r\n        },\r\n        // Body Change Watch Tasks\r\n        onBodyChange: function (event, $target) {\r\n            targetID = event.target.id;\r\n            targetTag = event.target.tagName.toUpperCase();\r\n            targetType = event.target.type.toUpperCase();\r\n            targetName = event.target.name;\r\n\r\n            switch (targetTag) {\r\n                case \"INPUT\":\r\n                    targetID = targetID === \"\" ? \"input[name='\" + event.target.name + \"']\" : \"#\" + targetID;\r\n\r\n                    // if (targetID === \"#member_age\" || (typeof $target.data(\"pattern\") === \"ae_memberage\" && $target\r\n                    // Added regex for age validation in guardian (our reqs) Cgoodwin requested to make this a drop-down - WEBAE3-989- 02/21/18 - SIMARI\r\n                    //         .data(\"pattern\")\r\n                    //         .toUpperCase() === \"NUMBER\")) {\r\n                    //     APP.validateAge(event, targetName);\r\n                    // }\r\n\r\n                    // targetID = (targetID === \"#vouchnum-lookup\") ? event.target.name : targetID;\r\n                    if ((targetName === \"vouchnum\" || targetName === \"vouchernum\") || (typeof $target.data(\"pattern\") === \"ae_voucher\" && $target.data(\"pattern\").toUpperCase() === \"TEXT\")) {\r\n                        APP.cleanWhitespace(event, targetID.replace('#', ''));\r\n                    }\r\n\r\n                    if (targetType === \"EMAIL\" || (typeof $target.data(\"pattern\") === \"string\" && $target\r\n                            .data(\"pattern\")\r\n                            .toUpperCase() === \"EMAIL\")) {\r\n                        APP.emailClean(targetID);\r\n                    }\r\n                    if ($target.hasClass(\"trg__quoteSwap\")) {\r\n                        APP.quoteSwap(targetID);\r\n                    }\r\n                    break;\r\n                case \"SELECT\":\r\n                    if (targetID.toUpperCase() === \"COUNTRY\" && $(\"form .state-select .stateList\").length) {\r\n                        APP.stateMenus();\r\n                    } // Legacy\r\n                    if ($target.closest(\"form\").hasClass(\"validate\")) {\r\n                        $target\r\n                            .parent()\r\n                            .removeClass(\"ui-state-invalid\")\r\n                            .removeClass(\"ui-state-valid\");\r\n                    }\r\n                    break;\r\n                case \"TEXTAREA\":\r\n                    if ($target.hasClass(\"trg__quoteSwap\")) {\r\n                        targetID = targetID === \"\" ? \"textarea[name='\" + event.target.name + \"']\" : \"#\" + targetID;\r\n\r\n                        APP.quoteSwap(targetID);\r\n                    }\r\n                    break;\r\n            }\r\n        },\r\n        postAutoForm: function () {\r\n            if (APP.props.$autoForms[0]) setTimeout(function () {\r\n                if (APP.props.$autoForms.first().attr('id') == 'loadQuote') {\r\n                    /*WEBAE3-5291 change URL for search wait page in  history\r\n                    so if user goes back to search wait via back button, the\r\n                    URL in the address bar will be for the home page. This was to \r\n                    prevent user from reposting Human Security signals and\r\n                    getting flagged as a bot if they hit refresh on search wait\r\n                    \r\n                    WEBAE3-5607 - leaving this in place even though we're no\r\n                    longer using original HumanSecurity */\r\n                    var histUrl = (document.referrer) ? document.referrer : oSite.sslDomain;\r\n                    APP.props.$autoForms.first().submit();\r\n                    //replace state after submit works properly, before submit not so much\r\n                    window.history.replaceState({}, document.title, histUrl);\r\n                } else {\r\n                    APP.props.$autoForms.first().submit();\r\n                }\r\n            }, 1000);\r\n        },\r\n        handleLoginChangePassword:function(resultMess, uuid) {\r\n            APP.props.loginInputValid = false;\r\n            var resetForm = $('[data-formType=\"resetPasswordFormForce\"]'); \r\n\r\n            if (APP.props.$isInMemberAccount) {\r\n\t\t\t\tAPP.removeSpinGear($('#account_login_form').find('button[type=\"submit\"]'));\r\n\t\t\t\t$(\"input.uid_reset\").val(uuid);\r\n\r\n\t\t\t\tAE.account.showGridDivByClass('member_reset_password','member_email');\r\n\t\t\t\tAE.account.showGridDivByClass('member_reset_password','current_password');\r\n\t\t\t\tAE.account.hideGridDivByClass('member_reset_password','memberPasswordChecklist');\r\n\t\t\t\tAE.account.hideEle('forgotPasswordContainer');\r\n\t\t\t\tAE.account.showEle('resetPasswordContainer');\r\n\t\r\n\t\t\t\tif (!AE.account.isTwoCol()) {\r\n\t\t\t\t\tAE.account.setHTML('member-response-right', resultMess);\r\n\t\t\t\t\tAE.account.showGridDiv('member-response-right', '');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tAE.account.setHTML('member-response-left', resultMess);\r\n\t\t\t\t\tAE.account.showGridDiv('member-response-left', ''); \r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t$('form#member_reset_password').find('input[name=\"resetType\"]').val('force');\r\n            } else {\r\n                $(\"div#memberPasswordResetNav\").removeClass('visuallyhidden');\r\n                $(\"div#memberloginNav\").addClass('visuallyhidden');\r\n                AE.account.setHTML('resetMessNav', resultMess);\r\n                AE.account.showGridDiv('resetMessNav', '');   \r\n                APP.removeSpinGear($('#account_login_form').find('button[type=\"submit\"]'));\r\n                $(\"input.uid_reset\").val(uuid);\r\n            }\r\n          \r\n            $(\"div.login_container\").addClass('visuallyhidden--palm visuallyhidden--lap');\r\n        },\r\n        handleLoginAge:function(age) {\r\n\t\t\t/*  Per WEBAE3-2170 and WEBAE3-1686, we want to update search age to member age \r\n\t\t\tin search form and local storage but only if they haven't manually entered an age\r\n\t\t\tprior to logging in\r\n\t\t\t*/\r\n\t\t\tvar updateSearchFormAge = false;\r\n\t\t\tvar inModifyProcess = false;\r\n\t\t\t// Don't run any checks if we're in modify process\r\n\t\t\tif  (\r\n                typeof (AEdata.booking) !== 'undefined' && \r\n\t\t\t\ttypeof (AEdata.booking.props) !== 'undefined' &&\r\n\t\t\t\ttypeof (AEdata.booking.props.ismodify) !== 'undefined'\r\n                ){\r\n    \t\t\t\tinModifyProcess = AEdata.booking.props.ismodify;\r\n\t\t\t}\r\n\r\n\t\t\tif (!inModifyProcess) {\r\n\t\t\t\t// set update flag based on AEdata info\r\n\t\t\t\tif  (\r\n                        typeof (AEdata.booking) !== 'undefined' && \r\n                        typeof (AEdata.booking.quote) !== 'undefined' && \r\n                        typeof (AEdata.booking.oQuote) !== 'undefined' && \r\n                        typeof (AEdata.booking.oQuote.searchAgeCheckbox) !== 'undefined'\r\n                    ){\r\n                        if (AEdata.booking.quote.oQuote.searchAgeCheckbox) {\r\n                            updateSearchFormAge = true;\r\n                        }\r\n                }\r\n   \t\t\t}\r\n\r\n\t\t\t// check for local storage and update/set flag if needed\r\n            // === Added for WEBAE3-4756 === //\r\n            if (AE.props.siteCode != 'PEU') {\r\n                if  (\r\n                        AE.ui.search.useStoredSearch() && \r\n                        localStorage.getItem('aeSearch') && \r\n                        _.isString(localStorage.getItem('aeSearch')) && \r\n                        localStorage.getItem('aeSearch') != ''\r\n                    ) {\r\n                        var oStoredSearch = JSON.parse(localStorage.getItem('aeSearch'));\r\n                        //local storage exists so check whether to update it\r\n                        if (oStoredSearch.searchAgeCheckbox && oStoredSearch.searchAge) {\r\n                            if (oStoredSearch.searchAge != age){\r\n\r\n                            }else{\r\n                                oStoredSearch.searchAge = age;\r\n                                updateSearchFormAge = true;\r\n                                //updating local storage, so update form\r\n                                var _obj = JSON.stringify(oStoredSearch);\r\n                                localStorage.setItem('aeSearch', _obj);\r\n                            }\r\n                            \r\n                        }\r\n                }\r\n\r\n                if (updateSearchFormAge) {\r\n                    AE.ui.search.setAge(age);//only run this once  \r\n                    AE.ui.search.setDefaultAgeOverride(age); \r\n                    AE.ui.search.init();\r\n                }\r\n            }\r\n\t\t},\r\n        setBillingInputRequiredStatus:function(inputs,status) {\r\n            //WEBAE3-4052: on status turns on required, off status turns off required\r\n            for(i=0; i < inputs.length; ++i) {\r\n                if(status == 'on') {\r\n                    $('#'+inputs[i]).attr('required','required');\r\n                    if(inputs[i] == 'state'){\r\n                        //state parent/parent needs required class added too\r\n                        $('#'+inputs[i])\r\n                                    .parent()\r\n                                    .parent()\r\n                                    .addClass(\"required\");\r\n                        $('#'+inputs[i])\r\n                                    .parent()\r\n                                    .parent()\r\n                                    .removeClass(\"ui-state-valid ui-state-invalid\");\r\n                    } else {\r\n                        // only parent for others\r\n                        $('#'+inputs[i])\r\n                                    .parent()\r\n                                    .addClass(\"required\");\r\n                        $('#'+inputs[i])\r\n                                    .parent()\r\n                                    .removeClass(\"ui-state-valid ui-state-invalid\");\r\n                    }\r\n                } else if(status == 'off') {\r\n                    $('#'+inputs[i]).removeAttr('required');\r\n                    if(inputs[i] == 'state'){\r\n                        //state parent/parent needs required class removed too\r\n                        $('#'+inputs[i])\r\n                                    .parent()\r\n                                    .parent()\r\n                                    .removeClass(\"required\");\r\n                        $('#'+inputs[i])\r\n                                    .parent()\r\n                                    .parent()\r\n                                    .removeClass(\"ui-state-valid ui-state-invalid\");\r\n                    } else {\r\n                            // only parent for others\r\n                            $('#'+inputs[i])\r\n                                    .parent()\r\n                                    .removeClass(\"required\");\r\n                            $('#'+inputs[i])\r\n                                    .parent()\r\n                                    .removeClass(\"ui-state-valid ui-state-invalid\");\r\n                    }\r\n                }\r\n            }\r\n\r\n        },\r\n        formFineUploaderInstance: function(formfield, moduleFolder, itemlimit) {\r\n            // Initialize fineUploader JS on file input - WEBAE3-4369\r\n\t\t\tvar fineUploaderFolder = \"/plugins/ae3/modules/\"+moduleFolder+\"/fine_uploader\";\r\n            var $form_submit_btn    = $('input#'+formfield).closest('form').find('#form_submit');\r\n            \r\n            uploadlimit = itemlimit ? itemlimit : 1;\r\n            \r\n\t\t\tvar galleryUploader = new qq.FineUploader({\r\n\t\t\t\t//debug: true,\r\n\t\t\t\tmultiple: false,\r\n\t\t\t\telement: document.getElementById(\"upload_block-\"+formfield),\r\n\t\t\t\ttemplate: 'qq-simple-thumbnails-template',\r\n\t\t\t\trequest: {\r\n\t\t\t\t\tendpoint: '/plugins/ae3/modules/'+moduleFolder+'/image-uploader.cfc?method=uploadSingleFile'\r\n\t\t\t\t},\r\n\t\t\t\tretry: {\r\n\t\t\t\t\tenableAuto: true\r\n\t\t\t\t},\r\n\t\t\t\tthumbnails: {\r\n\t\t\t\t\tplaceholders: {\r\n\t\t\t\t\t\t//waitingPath: fineUploaderFolder+'/placeholders/waiting-generic.png',\r\n\t\t\t\t\t\twaitingPath: fineUploaderFolder+'/processing.gif',\r\n\t\t\t\t\t\tnotAvailablePath: fineUploaderFolder+'/placeholders/not_available-generic.png'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tvalidation: {\r\n\t\t\t\t\titemLimit: uploadlimit\r\n\t\t\t\t},\r\n\t\t\t\tcallbacks: {\r\n\t\t\t\t\tonUpload: function(id, name) {\r\n\t\t\t\t\t\t$form_submit_btn.addClass('off');\r\n\t\t\t\t\t},\r\n\t\t\t\t\tonComplete: function(id, name, responseJSON) {\r\n\t\t\t\t\t\tif (responseJSON.success) {\r\n\t\t\t\t\t\t\t$('input#'+formfield).val(responseJSON.server_filename);\r\n\t\t\t\t\t\t\t$('#upload_block-'+formfield+' .qq-upload-button').hide();\r\n\t\t\t\t\t\t\t$('#upload_block-'+formfield+' .qq-upload-remove-button').show();\r\n\t\t\t\t\t\t\t$form_submit_btn.removeClass('off');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//onError: function(id, name, errorReason) {\r\n\t\t\t\t\t//},\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n    };\r\n\r\n    return APP;\r\n})();\n;\nvar AE = AE || {};\n/*Currently only targetting IE and augmenting Array.prototype functions as necessary.*/\nAE.legacy = AE.legacy || ( function () {\n\t/*DEPENDENCIES: Calls AE.legacy.polyfill */\n\t'use strict';\n\tvar POS = {\n\t\tinit: function () {\n\t\t\tPOS.grief = {\n\t\t\t\tisIE: $( 'html' ).is( '.ua-ie' ),\n\t\t\t\twhichIE: {\n\t\t\t\t\tisIE7: $( 'html' ).is( '.ua-ie-7, .ua-ie-7-0' ),\n\t\t\t\t\tisIE8: $( 'html' ).is( '.ua-ie-8, .ua-ie-8-0' ),\n\t\t\t\t\tisIE9: $( 'html' ).is( '.ua-ie-9, .ua-ie-9-0' ),\n\t\t\t\t\tisIE10: $( 'html' ).is( '.ua-ie-10, .ua-ie-10-0' ),\n\t\t\t\t\tisIE11: $( 'html' ).is( '.ua-ie-11, .ua-ie-11-0' )\n\t\t\t\t},\n\t\t\t\tisLegacy: POS._isLegacyBrowser,\n\t\t\t\tversionOfBrowser: POS._getLegacyBrowserVersion\n\t\t\t};\n\t\t\t/* POS.getLegacyBrowserVersion() references the grief object, so this can't just be tossed into grief. */\n\t\t\t/* Checks if browser is on our list of [POS.grief.whichIE] - will return true if any condition (property) is met.*/\n\t\t\t// var legacyBrowser = POS.grief.isLegacy();\n\t\t\t/* Returns a string from the getter [POS.getLegacyBrowserVersion]*/\n\t\t\t// var browserVersion = POS.grief.versionOfBrowser();\n\t\t},\n\t\t_isLegacyBrowser: function () {\n\t\t\tvar i = 0,\n\t\t\t\t_ops = POS.grief.whichIE;\n\n\t\t\tfor ( i in _ops ) {\n\t\t\t\tvar _isLegacy = _isLegacy = _ops[ i ];\n\t\t\t\tif ( _isLegacy ) {\n\t\t\t\t\treturn _isLegacy;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\t_getLegacyBrowserVersion: function () {\n\t\t\tvar _legacyBrowser = {\n\t\t\t\t\tIE7: 'isIE7',\n\t\t\t\t\tIE8: 'isIE8',\n\t\t\t\t\tIE9: 'isIE9',\n\t\t\t\t\tIE10: 'isIE10',\n\t\t\t\t\tIE11: 'isIE11'\n\t\t\t\t},\n\t\t\t\t_browserIsIE = POS.grief.isIE,\n\t\t\t\t_isLegacy = POS._isLegacyBrowser(),\n\t\t\t\t_ops = POS.grief.whichIE,\n\t\t\t\t_currentVersion;\n\n\t\t\tif ( _isLegacy ) {\n\t\t\t\tfor ( var i in _legacyBrowser ) {\n\t\t\t\t\tvar _browser = _legacyBrowser[ i ];\n\t\t\t\t\tif ( _ops[ _browser ] ) {\n\t\t\t\t\t\t_currentVersion = _browser;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn _currentVersion;\n\t\t}\n   };\n\treturn POS;\n} )();\n\n;\nvar AE = AE || {}; /* Add to Base object or create it if it doesn't exist. */\n/*  A series of shims for IE*/\n\nAE.legacy.polyfill = AE.legacy.polyfill || ( function () {\n\t/*DEPENDENCIES: AE.legacy*/\n\t'use strict';\n\tvar POS = {\n\t\tinit: function () {\n\t\t\tPOS.grief = {\n\t\t\t\tarrayEvery: POS.polyfill._augmentArrayPrototypeEvery,\n\t\t\t\tarrayFilter: POS.polyfill._augmentArrayPrototypeFilter,\n\t\t\t\tarrayForEach: POS.polyfill._augmentArrayPrototypeForEach,\n\t\t\t\tarrayIndexOf: POS.polyfill._augmentArrayPrototypeIndexOf,\n\t\t\t\tarrayMap: POS.polyfill._augmentArrayPrototypeMap,\n\t\t\t\tobjectKeys: POS.polyfill._augmentObjectKeys,\n\t\t\t\tobjectCreate: POS.polyfill._augmentObjectCreate,\n\t\t\t\tstringTrim: POS.polyfill._augmentStringTrim,\n\t\t\t\ttextContent: POS.polyfill._augmentTextContent\n\t\t\t};\n\t\t\t/* Do various things that happen once upon init. */\n\t\t\tPOS.polyfill.init();\n\t\t},\n\t\tpolyfill: {\n\t\t\tinit: function () {\n\t\t\t\tvar _augmentBrowserFunction = POS.grief;\n\t\t\t\tvar _availablePolyfills = {\n\t\t\t\t\tarrayEvery: !Array.prototype.every,\n\t\t\t\t\tarrayFilter: !Array.prototype.filter,\n\t\t\t\t\tarrayForEach: !Array.prototype.forEach,\n\t\t\t\t\tarrayIndexOf: !Array.prototype.indexOf,\n\t\t\t\t\tarrayMap: !Array.prototype.map,\n\t\t\t\t\tobjectKeys: !Object.keys,\n\t\t\t\t\tobjectCreate: ( typeof Object.create != 'function' ),\n\t\t\t\t\tstringTrim: !String.prototype.trim,\n\t\t\t\t\ttextContent: ( Object.defineProperty && Object.getOwnPropertyDescriptor && Object.getOwnPropertyDescriptor( Element.prototype, \"textContent\" ) && !Object.getOwnPropertyDescriptor( Element.prototype, \"textContent\" ).get )\n\t\t\t\t};\n\n\t\t\t\tfor ( var i in _augmentBrowserFunction ) {\n\t\t\t\t\tvar _polyfillBroswerCapabilities = _availablePolyfills[ i ] ? _augmentBrowserFunction[ i ]() : void( 0 );\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\t_augmentArrayPrototypeEvery: function () {\n\t\t\t\t/*https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every*/\n\t\t\t\treturn Array.prototype.every = function ( callbackfn, thisArg ) {\n\t\t\t\t\tvar T, k;\n\t\t\t\t\tif ( this == null ) {\n\t\t\t\t\t\tthrow new TypeError( 'this is null or not defined' );\n\t\t\t\t\t}\n\t\t\t\t\tvar O = Object( this );\n\t\t\t\t\tvar len = O.length >>> 0;\n\t\t\t\t\tif ( typeof callbackfn !== 'function' ) {\n\t\t\t\t\t\tthrow new TypeError();\n\t\t\t\t\t}\n\t\t\t\t\tif ( arguments.length > 1 ) {\n\t\t\t\t\t\tT = thisArg;\n\t\t\t\t\t}\n\t\t\t\t\tk = 0;\n\t\t\t\t\twhile ( k < len ) {\n\t\t\t\t\t\tvar kValue;\n\t\t\t\t\t\tif ( k in O ) {\n\t\t\t\t\t\t\tkValue = O[ k ];\n\t\t\t\t\t\t\tvar testResult = callbackfn.call( T, kValue, k, O );\n\t\t\t\t\t\t\tif ( !testResult ) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tk++;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t};\n\t\t\t},\n\n\t\t\t_augmentArrayPrototypeFilter: function () {\n\t\t\t\t//https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter\n\t\t\t\treturn Array.prototype.filter = function ( fun ) {\n\t\t\t\t\tif ( this === void 0 || this === null ) {\n\t\t\t\t\t\tthrow new TypeError();\n\t\t\t\t\t}\n\t\t\t\t\tvar t = Object( this );\n\t\t\t\t\tvar len = t.length >>> 0;\n\t\t\t\t\tif ( typeof fun !== 'function' ) {\n\t\t\t\t\t\tthrow new TypeError();\n\t\t\t\t\t}\n\t\t\t\t\tvar res = [];\n\t\t\t\t\tvar thisArg = arguments.length >= 2 ? arguments[ 1 ] : void 0;\n\t\t\t\t\tfor ( var i = 0; i < len; i++ ) {\n\t\t\t\t\t\tif ( i in t ) {\n\t\t\t\t\t\t\tvar val = t[ i ];\n\t\t\t\t\t\t\tif ( fun.call( thisArg, val, i, t ) ) {\n\t\t\t\t\t\t\t\tres.push( val );\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\treturn res;\n\t\t\t\t};\n\t\t\t},\n\n\t\t\t_augmentArrayPrototypeForEach: function () {\n\t\t\t\t/* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach */\n\t\t\t\treturn Array.prototype.forEach = function ( callback, thisArg ) {\n\t\t\t\t\tvar T, k;\n\t\t\t\t\tvar O = Object( this );\n\t\t\t\t\tvar len = O.length >>> 0;\n\n\t\t\t\t\tif ( this === null ) throw new TypeError( ' this is null or not defined' );\n\t\t\t\t\tif ( typeof callback !== \"function\" ) throw new TypeError( callback + ' is not a function' );\n\t\t\t\t\tif ( arguments.length > 1 ) T = thisArg;\n\n\t\t\t\t\tk = 0;\n\t\t\t\t\twhile ( k < len ) {\n\t\t\t\t\t\tvar kValue;\n\t\t\t\t\t\tif ( k in O ) {\n\t\t\t\t\t\t\tkValue = O[ k ];\n\t\t\t\t\t\t\tcallback.call( T, kValue, k, O );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tk++;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\t_augmentArrayPrototypeIndexOf: function () {\n\t\t\t\t/* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf#Compatibility*/\n\t\t\t\treturn Array.prototype.indexOf = function ( searchElement, fromIndex ) {\n\t\t\t\t\tvar k;\n\t\t\t\t\tif ( this == null ) {\n\t\t\t\t\t\tthrow new TypeError( '\"this\" is null or not defined' );\n\t\t\t\t\t}\n\t\t\t\t\tvar o = Object( this );\n\t\t\t\t\tvar len = o.length >>> 0;\n\t\t\t\t\tif ( len === 0 ) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tvar n = +fromIndex || 0;\n\t\t\t\t\tif ( Math.abs( n ) === Infinity ) {\n\t\t\t\t\t\tn = 0;\n\t\t\t\t\t}\n\t\t\t\t\tif ( n >= len ) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tk = Math.max( n >= 0 ? n : len - Math.abs( n ), 0 );\n\t\t\t\t\twhile ( k < len ) {\n\t\t\t\t\t\tif ( k in o && o[ k ] === searchElement ) {\n\t\t\t\t\t\t\treturn k;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tk++;\n\t\t\t\t\t}\n\t\t\t\t\treturn -1;\n\t\t\t\t};\n\t\t\t},\n\n\t\t\t_augmentArrayPrototypeMap: function () {\n\t\t\t\t/*https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map*/\n\t\t\t\treturn Array.prototype.map = function ( callback, thisArg ) {\n\t\t\t\t\tvar T, A, k;\n\t\t\t\t\tvar O = Object( this );\n\t\t\t\t\tvar len = O.length >>> 0;\n\n\t\t\t\t\tif ( this == null ) throw new TypeError( ' this is null or not defined' );\n\t\t\t\t\tif ( typeof callback !== 'function' ) throw new TypeError( callback + ' is not a function' );\n\t\t\t\t\tif ( arguments.length > 1 ) T = thisArg;\n\n\t\t\t\t\tA = new Array( len );\n\t\t\t\t\tk = 0;\n\t\t\t\t\twhile ( k < len ) {\n\t\t\t\t\t\tvar kValue, mappedValue;\n\t\t\t\t\t\tif ( k in O ) {\n\t\t\t\t\t\t\tkValue = O[ k ];\n\t\t\t\t\t\t\tmappedValue = callback.call( T, kValue, k, O );\n\t\t\t\t\t\t\tA[ k ] = mappedValue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tk++;\n\t\t\t\t\t}\n\t\t\t\t\treturn A;\n\t\t\t\t};\n\t\t\t},\n\n\t\t\t_augmentObjectCreate: function () {\n\t\t\t\t/* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create */\n\t\t\t\treturn Object.create = ( function ( undefined ) {\n\t\t\t\t\tvar Temp = function () {};\n\t\t\t\t\treturn function ( prototype, propertiesObject ) {\n\t\t\t\t\t\tif ( prototype !== Object( prototype ) && prototype !== null ) {\n\t\t\t\t\t\t\tthrow TypeError( 'Argument must be an object, or null' );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tTemp.prototype = prototype || {};\n\t\t\t\t\t\tvar result = new Temp();\n\t\t\t\t\t\tTemp.prototype = null;\n\t\t\t\t\t\tif ( propertiesObject !== undefined ) {\n\t\t\t\t\t\t\tObject.defineProperties( result, propertiesObject );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( prototype === null ) {\n\t\t\t\t\t\t\tresult.__proto__ = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t} )();\n\t\t\t},\n\n\t\t\t_augmentObjectKeys: function () {\n\t\t\t\t/* From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys*/\n\t\t\t\treturn Object.keys = ( function () {\n\t\t\t\t\tvar hasOwnProperty = Object.prototype.hasOwnProperty,\n\t\t\t\t\t\thasDontEnumBug = !( {\n\t\t\t\t\t\t\ttoString: null\n\t\t\t\t\t\t} )\n\t\t\t\t\t\t.propertyIsEnumerable( 'toString' ),\n\t\t\t\t\t\tdontEnums = [\n\t\t\t\t\t\t\t\t'toString',\n\t\t\t\t\t\t\t\t'toLocaleString',\n\t\t\t\t\t\t\t\t'valueOf',\n\t\t\t\t\t\t\t\t'hasOwnProperty',\n\t\t\t\t\t\t\t\t'isPrototypeOf',\n\t\t\t\t\t\t\t\t'propertyIsEnumerable',\n\t\t\t\t\t\t\t\t'constructor'\n\t\t\t\t\t\t\t  ],\n\t\t\t\t\t\tdontEnumsLength = dontEnums.length;\n\t\t\t\t\treturn function ( obj ) {\n\t\t\t\t\t\tif ( typeof obj !== 'object' && ( typeof obj !== 'function' || obj === null ) ) {\n\t\t\t\t\t\t\tthrow new TypeError( 'Object.keys called on non-object' );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar result = [],\n\t\t\t\t\t\t\tprop, i;\n\t\t\t\t\t\tfor ( prop in obj ) {\n\t\t\t\t\t\t\tif ( hasOwnProperty.call( obj, prop ) ) {\n\t\t\t\t\t\t\t\tresult.push( prop );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( hasDontEnumBug ) {\n\t\t\t\t\t\t\tfor ( i = 0; i < dontEnumsLength; i++ ) {\n\t\t\t\t\t\t\t\tif ( hasOwnProperty.call( obj, dontEnums[ i ] ) ) {\n\t\t\t\t\t\t\t\t\tresult.push( dontEnums[ 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\treturn result;\n\t\t\t\t\t};\n\t\t\t\t}() );\n\t\t\t},\n\t\t\t_augmentStringTrim: function () {\n\t\t\t\t/*https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim*/\n\t\t\t\treturn String.prototype.trim = function () {\n\t\t\t\t\treturn this.replace( /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '' );\n\t\t\t\t};\n\t\t\t},\n\n\t\t\t_augmentTextContent: function () {\n\t\t\t\t/*https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent*/\n\t\t\t\t( function () {\n\t\t\t\t\tvar innerText = Object.getOwnPropertyDescriptor( Element.prototype, \"innerText\" );\n\t\t\t\t\tObject.defineProperty( Element.prototype, \"textContent\", {\n\t\t\t\t\t\tget: function () {\n\t\t\t\t\t\t\treturn innerText.get.call( this );\n\t\t\t\t\t\t},\n\t\t\t\t\t\tset: function ( s ) {\n\t\t\t\t\t\t\treturn innerText.set.call( this, s );\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\treturn POS.init();\n} )();\n\n;var AE = AE || {}; /* Add to Base object or create it if it doesn't exist. */\n\n/*\nThe AE.mura object will be the returned result of a self-invoked function. This allows us to expose methods\nfor use by other modules while protecting some variables in a closure. If the AE.mura object is already\ndefined then it's not altered. This prevents us from running the entire function each time one of its\ninternal methods are called.\n*/\nAE.mura = AE.mura || (function(){\n\t/*\n\tDEPENDENCIES: AE\n\t*/\n\tvar APP = {\n\t\tinit:function() {\n\t\t\t// MURA Form Post-Processing Hook\n\t\t\tmura.DisplayObject.Form.reopen({\n\t\t\t\tonAfterRender:function(){ APP.asyncFormsRendered(); }//,\n\t\t\t\t//onSubmit:function(){ return APP.validateAll(); }\n\t\t\t});\n\t\t},\n\t\tasyncFormsRendered:function(){\n\t\t\tvar frm_selector = 'form.mura-form';\n\t\t\tvar $forms = $(frm_selector);\n\t\t\tvar $inputs = $(frm_selector+' input,'+frm_selector+' textarea');\n\t\t\tvar $requiredInputs = $(frm_selector+' div.mura-control-group.req input,'+frm_selector+' div.mura-control-group.req textarea');\n\t\t\tvar $checksAndRadios = $inputs.filter('input[type=\"radio\"],input[type=\"checkbox\"]');\n\t\t\tvar $requiredCheckboxes = $(frm_selector+' div.mura-control-group.requiredCheckbox input[type=\"checkbox\"]');\n\t\t\tvar $submits = $(frm_selector+' button.form-submit');\n\t\t\tvar $stateDropdowns = $(frm_selector+' select.state--select');\n\t\t\tvar $countryDropdowns = $(frm_selector+' select.country--select');\n\t\t\tvar $motorHomeCountryDropdowns = $(frm_selector+' select.motorhome__select--country');\n\t\t\tvar $motorHomeCityDropdowns = $(frm_selector+' select.motorhome__select--city');\n\t\t\tvar $chauffeurCountryDropdowns = $(frm_selector+' select.chauffeur__select--country');\n\t\t\tvar $chauffeurCityDropdowns = $(frm_selector+' select.chauffeur__select--city');\n\t\t\t$(frm_selector+' select').wrap('<div class=\"styled--select\"></div>');\n\n\t\t\t// Process Input Data Attributes\n\t\t\t$.each($inputs,function(j) {\n\t\t\t\tif (typeof this['title'] == 'string') {\n\t\t\t\t\t// Collect the data attribute string from MURA input title\n\t\t\t\t\tvar rawDataAttr = this['title'].match(/--.*--/);\n\t\t\t\t\tif (rawDataAttr !== null) {\n\t\t\t\t\t\t// If true, rawDataAttr[0] WILL exist and be a string per match() docs\n\t\t\t\t\t\tvar theseDataAttr = rawDataAttr[0].replace(/--/g,'').split(';');\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Remove data attribute string from MURA input title\n\t\t\t\t\t\tthis['title'] = $.trim(this['title'].replace(rawDataAttr[0],''));\n\t\t\t\t\t\tfor (var dtat=0;dtat<theseDataAttr.length;dtat++) {\n\t\t\t\t\t\t\tvar thisAttr = theseDataAttr[dtat].split('=');\n\t\t\t\t\t\t\tif (thisAttr.length > 1) {\n\t\t\t\t\t\t\t\t$(this).attr('data-'+thisAttr[0],thisAttr[1]);\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\t// Switch type of inputs with class passwordInput to password\n\t\t\t$($inputs.filter('.passwordInput')).attr('type','password');\n\n\t\t\t// Actually add the required Attribute to MURA required fields\n\t\t\t$requiredInputs.prop('required',true);\n\n\t\t\t// Give Required Checkboxes the terms_conditions class to trigger AE checkbox validation\n\t\t\t$requiredCheckboxes.addClass('terms_conditions').prop('required',true);\n\t\t\t\n\t\t\t// Fix Radio and Checkbox Markup\n\t\t\t$.each($checksAndRadios,function(i) {\n\t\t\t\tvar this_selector = '#'+this['id'];\n\t\t\t\tvar this_label = this.closest('label');\n\t\t\t\t\n\t\t\t\t// Move Input elements to correct position relative to labels in DOM\n\t\t\t\t$(this_selector).insertBefore(this_label);\n\t\t\t\t\n\t\t\t\t// Make jQueryUI before elements on radio/checkbox labels clickable\n\t\t\t\tif (this['type'] == 'radio') {\n\t\t\t\t\t$(this_label).on('click', function() {\n\t\t\t\t\t\tif (!$(this_selector).prop('checked')) {\n\t\t\t\t\t\t\t$($(this).siblings('input[type=\"radio\"]')).prop('checked',false);\n\t\t\t\t\t\t\t$(this_selector).prop('checked',true);\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$(this_label).on('click', function() {\n\t\t\t\t\t\t$(this_selector).prop('checked',!$(this_selector).prop('checked'));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\t// Initialize Radio Groups - First Button Selected By Default\n\t\t\t$.each($('.mura-radio-group'),function(k) {\n\t\t\t\t$($(this).children('input[type=\"radio\"]')[0]).prop('checked',true);\n\t\t\t});\n\n\t\t\t// Country/State Dropdown Special Handling\n\t\t\tif ($stateDropdowns.length) {\n\t\t\t\t$.each($stateDropdowns.children('option'),function(l) {\n\t\t\t\t\t// replace entities like &amp; with ASCII characters\n\t\t\t\t\t$(this).html($.parseHTML($(this).text())[0]);\n\n\t\t\t\t\tvar rawCountryClass = $(this).val().match(/.*__/);\n\t\t\t\t\tif (rawCountryClass !== null) {\n\t\t\t\t\t\t// Remove Country Codes from Dropdown values, make them classes\n\t\t\t\t\t\t$(this).addClass(rawCountryClass[0]+'state').val($.trim($(this).val().replace(rawCountryClass[0],'')));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t$stateDropdowns.addClass('state_dd_hide');\n\t\t\t\t$($stateDropdowns.parents('div.mura-control-group')).addClass('state_dd_hide');\n\t\t\t\t$($countryDropdowns.children('option[value='+AE.props.countryCode+']')).prop('selected',true);// Default country DD to current site\n\t\t\t\tAE.forms.handleStateMenus($stateDropdowns.closest('form.mura-form'));\n\t\t\t}\n\t\t\t\n\t\t\t// Motorhome City Dropdown Special Handling\n\t\t\tif ($motorHomeCityDropdowns.length) {\n\t\t\t\t$.each($motorHomeCityDropdowns.children('option'),function(l) {\n\t\t\t\t\t// replace entities like &amp; with ASCII characters\n\t\t\t\t\t$(this).html($.parseHTML($(this).text())[0]);\n\n\t\t\t\t\tvar rawCountryClass = $(this).val().match(/.*__/);\n\t\t\t\t\tif (rawCountryClass !== null) {\n\t\t\t\t\t\t// Remove Country Codes from Dropdown values, make them classes\n\t\t\t\t\t\t$(this).addClass(rawCountryClass[0]+'city').val($.trim($(this).val().replace(rawCountryClass[0],'')));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Default country DD to current site\n\t\t\t\t$($motorHomeCountryDropdowns.children('option[value='+AE.props.countryCode+']')).prop('selected',true);\n\t\t\t\t\n\t\t\t\tAE.forms.handleMotorHomeCityMenus($motorHomeCityDropdowns.closest('form.mura-form'));\n\t\t\t}\n\t\t\t\n\t\t\t// Chauffeur City Dropdown Special Handling\n\t\t\tif ($chauffeurCityDropdowns.length) {\n\t\t\t\t$.each($chauffeurCityDropdowns.children('option'),function(l) {\n\t\t\t\t\t// replace entities like &amp; with ASCII characters\n\t\t\t\t\t$(this).html($.parseHTML($(this).text())[0]);\n\n\t\t\t\t\tvar rawCountryClass = $(this).val().match(/.*__/);\n\t\t\t\t\tif (rawCountryClass !== null) {\n\t\t\t\t\t\t// Remove Country Codes from Dropdown values, make them classes\n\t\t\t\t\t\t$(this).addClass(rawCountryClass[0]+'city').val($.trim($(this).val().replace(rawCountryClass[0],'')));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Default country DD to current site\n\t\t\t\t$($chauffeurCountryDropdowns.children('option[value='+AE.props.countryCode+']')).prop('selected',true);\n\n\t\t\t\tAE.forms.handleChauffeurCityMenus($chauffeurCityDropdowns.closest('form.mura-form'));\n\t\t\t}\n\t\t\t\n\t\t\t// Apply Button Styles\n\t\t\tvar arrBtns = ['primary', 'secondary', 'tertiary', 'modify'];\n\t\t\t$.each(arrBtns,function(){\n\t\t\t\t$(frm_selector+'btn--'+this+' button.form-submit').addClass('btn--'+this);\n\t\t\t\t$(frm_selector+'bk--'+this+' button.form-nav:first-of-type').addClass('btn--'+this);\n\t\t\t\t$(frm_selector+'nxt--'+this+' button.form-nav:last-of-type').addClass('btn--'+this);\n\t\t\t\t$(frm_selector+'nxt--'+this+' button.form-nav:only-of-type').addClass('btn--'+this);\n\t\t\t});\n\n\t\t\t/*$(frm_selector+' button.form-nav:not(:only-of-type):first-of-type').css('padding': '0.7em');\n\t\t\t$(frm_selector+' button.form-nav:not(:only-of-type):first-of-type:before').css(\n\t\t\t\t{'float':'left','margin-right':'0.7em','right':'0px','content':'\\f053'}\n\t\t\t);*///Need Proper selector syntax for that NOT clause\n\t\t\t\n\t\t\t/* WEBAE3-3578 : 2020-04-20 : remove AE form validation styling from all Mura-built forms */\n\t\t\t// Finishing Touches\n\t\t\t//AE.ui.applyJQUI(frm_selector);\n\t\t\t//$forms.addClass('validate');\n\t\t\t//if (AE.forms) { AE.forms.applyGuardian($forms); }\n\t\t},\n\t\tvalidateAll:function(){\n\t\t\tvar validInputs = false;\n\t\t\t\n\t\t\t// Run Validation\n\t\t\tif (false) {\n\t\t\t\t// All Inputs Pass Validation\n\t\t\t\tvalidInputs = true;\n\t\t\t}\n\n\t\t\treturn validInputs;\n\t\t}\n\t}\n\treturn APP;\n})();\n\n;var AE = AE || {}; /* Add to Base object or create it if it doesn't exist. */\n\n\n/*\nThe AE.mainnav object will be the returned result of a self-invoked function. This allows us to expose methods\nfor use by other modules while protecting some variables in a closure. If the AE.mainnav object is already\ndefined then it's not altered. This prevents us from running the entire function each time one of its\ninternal methods are called.\n*/\nAE.nav = AE.nav || (function(){\n\t/*\n\tDEPENDENCIES: AE, AE.ui\n\t*/\n\tvar APP = {\n\t\tinit:function() {\n\t\t\t// Check for the existance of the variable jsloginStatus since it doesn't always exist\n\t\t\tif (typeof jsloginStatus != 'undefined') {\n\t\t\t\tvar temp_loginStatus = jsloginStatus || window.jsloginStatus;\n\t\t\t} else {\n\t\t\t\tvar temp_loginStatus = false;\n\t\t\t}\n\t\t\t\n\t\t\tAPP.props = {\n\t\t\t\t$primnav \t\t: $('.primnav'),\n\t\t\t\t$primnavList\t: $('#primnav--list'),\n\t\t\t\t$primnavTop \t: $('#primnav--list > li'),\n\t\t\t\t$primDropLinks\t: $('#primnav--list > li > a'),\n\t\t\t\t$primDropDowns\t: $('#primnav--list').find('.has-dropdown'),\n\t\t\t\t$primnavAcct \t: $('#primnav--acct'),\n\t\t\t\t$primnavMember \t: $('#primnav--acct .member_account'),\n\t\t\t\t$primnavModify \t: $('#primnav--acct .modify'),\n\t\t\t\t$primnavManage\t: $('#navManageBooking'),\n\t\t\t\t\n\t\t\t\t$secnav \t\t: $('.secnav'),\n\t\t\t\t$altnavToggler \t: $('.altnav__toggler'),\n\t\t\t\t$altnavAcct \t: $('.altnav__account'),\n\t\t\t\t$altnavContact \t: $('.altnav__contact'),\n\t\t\t\t\n\t\t\t\t$altnav\t\t\t: $('#altnav'),\n\t\t\t\t$altnavList\t\t: $('.altnav__list'),\n\t\t\t\t$altDropDowns\t: $('#altnav').find('.has-dropdown'),\n\t\t\t\t\n\t\t\t\t$selCountry\t\t: $('#secnav__country .sel-country'),\n\t\t\t\t$countryDD\t\t: $('.sitepicker'),\n\t\t\t\t$countryDDclose\t: $('.sitepicker-close'),\n\t\t\t\t$selLanguage\t: $('#secnav__country .sel-language'),\n\t\t\t\t$languageDD\t\t: $('.langpicker'),\n\t\t\t\t$selCtryMobile\t: $('#altnav .sitepicker-mobile'),\n\t\t\t\t$spContMobile\t: $('#sitepicker-mobile'),\n\t\t\t\t$acctContDesk\t: $('.account-signinform'),\n\t\t\t\t$acctContMobile\t: $('#account-signinform-mobile'),\n\t\t\t\t$modContDesk\t: $('.modify-signinform'),\n\t\t\t\t$modContMobile\t: $('#modify-signinform-mobile'),\n\t\t\t\t$contactMobile\t: $('.contact-mobile'),\n\t\t\t\t$memberLoginStatus: temp_loginStatus\n\t\t\t};\n\n\t\t\tAPP.props.$memberLoginStatus = APP.props.$memberLoginStatus == 'true';\n\n\t\t\tvar currentSize = AE.getSiteViewType();\n\t\t\tAPP.props.$allDropDowns = APP.props.$primDropDowns.add( APP.props.$altDropDowns );\n\t\t\tAPP.props.$allSubmenus = APP.props.$allDropDowns.find('.submenu-dropdown');\n\t\t\t\n\t\t\t/*\n\t\t\t\tUntil we find a way to add this through Mura's nav display function (or some other method) we'll\n\t\t\t\tjust add the chevrons and their containers to the dropdown items in our primary and alternate navs.\n\t\t\t*/\n\t\t\tAPP.props.$primDropDowns.children('a').append('<div class=\"drop-toggler-container\"><span class=\"drop-toggler\"><i class=\"fa fa-chevron-down\"></i></span></div>');\n\t\t\tAPP.props.$altDropDowns.children('a').append('<div class=\"drop-toggler-container\"><span class=\"drop-toggler\"><i class=\"fa fa-chevron-circle-down fa-lg\"></i></span></div>');\n\t\t\t\n\t\t\tAE.ui.addBodyClickTask({func: APP.onBodyClick});\n\t\t\t\n\t\t\tAPP.props.$primDropDowns.on({\n\t\t\t\t'touchstart touchmove': function(event) {\n\t\t\t\t\t// Handle click...\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t},\n\t\t\t\t'touchend': function(event) {\n\t\t\t\t\t// Handle click...\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( $('html').hasClass('ua-mobile') ) {\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\tif ( $(this).closest('li').hasClass('open') ) {\n\t\t\t\t\t\t\twindow.location.href = $(this).attr('href');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tAPP.closeAllMenus();\n\t\t\t\t\t\t\t$(this).closest('li').addClass('open');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, \"a.parent-link\");\n\t\t\t\n\t\t\tAPP.props.$altnavList.on({\n\t\t\t\t'click': function(event) {\n\t\t\t\t\tvar $target = $(this).closest('li');\n\t\t\t\t\t// Handle click event\n\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\tAPP.toggleSubMenus($target);\n\t\t\t\t}\n\t\t\t}, \".drop-toggler\");\n\t\t\t\n\t\t\t/* ALTNAV - Mobile and lap version of navigation */\n\t\t\tAPP.props.$secnav.on('click', function(event){\n\t\t\t\tvar $target = $(event.target);\n\t\t\t\t\n\t\t\t\tif ( $target.hasClass('altnav__toggler') ) { // NAVIGATION WINDOW - Mobile\n\t\t\t\t\t// Toggle View state of alt nav\n\t\t\t\t\tAE.ui.handleToggle( $target ); //, APP.props.$altnav\n\t\t\t\t\t\n\t\t\t\t\t// Close member form AND Close Contact info\n\t\t\t\t\t//if (APP.props.$acctContMobile.hasClass('open')) { APP.mobileAccountForm(); APP.props.$altnavAcct.removeClass('open'); }\n\t\t\t\t\t//if (!APP.props.$contactMobile.hasClass('visuallyhidden--palm')) { APP.props.$contactMobile.addClass('visuallyhidden--palm'); APP.props.$altnavContact.removeClass('open'); }\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tvar toggleClickEvent = function(event){\n\t\t\t\t//VM\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t//event.preventDefault();\n\n\t\t\t\treturn $(this).click();\n\t\t\t}\n\n\t\t\tvar toggleClassSwap = function(event){\n\t\t\t\t//VM\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t//event.preventDefault();\n\t\t\t\treturn $(this).addClass('visuallyhidden');\n\t\t\t}\n\n\t\t\tif (APP.props.$memberLoginStatus) {\n\t\t\t\tAPP.props.$primnavMember.find('.dropdown-toggle').on('mouseenter', toggleClickEvent);\n\t\t\t\t\n\t\t\t\tAPP.props.$primnavMember.find('.menu-dropdown').on('mouseleave', toggleClassSwap);\n\t\t\t} else {\n\t\t\t\tAPP.props.$primnavMember.find('.dropdown-toggle').off('mouseenter');\n\t\t\t\t\n\t\t\t\tAPP.props.$primnavMember.find('.menu-dropdown').off('mouseleave');\n\n\t\t\t\tif (AE.props.useWEBAE3_4453) {\n\t\t\t\t\t// WEBAE3-4453 Remove drop down from manage MY booking\n\t\t\t\t\tAPP.props.$primnavModify.find('.dropdown-toggle').removeClass('dropdown-toggle');\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* RESERVATION LOOKUP WINDOW - Non Mobile\n\t\t\t\tmouse up as click seems to be to fast on the first hit and does not place the window correctly */\n\t\t\tAPP.props.$primnavModify.find('.dropdown-toggle').on('click', function(event){\n\t\t\t\tevent.preventDefault();\n\t\t\t\t\n\t\t\t\tAPP.props.$primnavList.find('.has-dropdown').addClass('closed');\n\t\t\t\tAPP.props.$acctContDesk.addClass('visuallyhidden');\n\t\t\t\tAPP.props.$modContDesk.position({\n\t\t\t\t\tmy: \"right-12 top+2\",\n\t\t\t\t\tat: \"right bottom\",\n\t\t\t\t\tof: $(event.target)\n\t\t\t\t}).toggleClass('visuallyhidden');\n\t\t\t});\n\t\t\t\n\t\t\t/* FLEX NAV HEIGHT ADJUST */\n\t\t\tif($('.flexNav')[0]){\n\t\t\t\tvar flexNavHeight = $('img.site-logo').height();\n\t\t\t\t$('.flexNav').css('minHeight',(flexNavHeight+12)+'px');\n\t\t\t}\n\n\t\t\t/* SITE PICKER - Non Mobile */\n\t\t\tAPP.props.$selCountry.on('click', function(event){\n\t\t\t\tvar offsetLeft = 0, offsetTop = 0;\n\t\t\t\tAPP.props.$altnav.slideUp();\n\t\t\t\tif ( AE.getSiteViewType() !== 'palm' ) {\n\t\t\t\t\toffsetLeft =  $(event.target).closest('.sel-country').offset().left;\n\t\t\t\t\toffsetTop =  $(event.target).closest('.sel-country').offset().top + 20;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t$('.sitepicker').css({ left: offsetLeft, top: offsetTop });\n\t\t\t\t\n\t\t\t\tAPP.props.$countryDD.toggle();\n\t\t\t\tif ( APP.props.$languageDD.is(':visible') ) {\n\t\t\t\t\tAPP.props.$languageDD.hide();\n\t\t\t\t}\n\n\t\t\t\tsetTimeout( function(){\n\t\t\t\t\t APP.props.$altnav.addClass('visuallyhidden'); \n\t\t\t\t}, 300);\n\t\t\t\t\n\t\t\t});\n\t\t\t\n\t\t\t/* SITE PICKER - Mobile */\n\t\t\tAPP.props.$selCtryMobile.on('click', function(event){\n\t\t\t\tvar $contentDesk = $('#sitepicker .sitepicker-container');\n\t\t\t\tvar $contentMobile = $('#sitepicker-mobile .sitepicker-container');\n\t\t\t\t\n\t\t\t\tif ( !APP.props.$spContMobile.parent('has-dropdown').hasClass('open') ) {\n\t\t\t\t\tAPP.props.$spContMobile.parent('has-dropdown').addClass('open');\n\t\t\t\t\tAPP.props.$spContMobile.append($contentDesk);\n\t\t\t\t} else {\n\t\t\t\t\tAPP.props.$spContMobile.parent('has-dropdown').removeClass('open');\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\t/*\tSITE PICKER - Close */\n\t\t\tAPP.props.$countryDDclose.on('click', function(event){\n\t\t\t\tAPP.props.$countryDD.hide();\n\t\t\t});\n\t\t\t\n\t\t\t/* LANGUAGE PICKER */\n\t\t\tAPP.props.$selLanguage.on('click', function(event){\n\t\t\t\tvar $offset = $(event.target).closest('.sel-language').offset();\n\t\t\t\tvar leftPos = $offset.left;\n\t\t\t\t//WEBAE3-3116 lang picker selector caret is on right for TP sites so position menu to right edge\n\t\t\t\tif (AE.props.bIsTpDomain) {\n\t\t\t\t\tvar pickerNavWidth = $(event.target).closest('.sel-language').innerWidth();\n\t\t\t\t\tvar pickerMenuWidth = $('#langpicker').innerWidth();\n\t\t\t\t\tvar leftPos = $offset.left + (pickerNavWidth - pickerMenuWidth - 10);\n\t\t\t\t}\n\t\t\t\t$('.langpicker').css( { left: leftPos, top: ($offset.top + 30) } );\n\t\t\t\tAPP.props.$languageDD.toggle();\n\t\t\t\tAE.ui.hide( APP.props.$allSubmenus );\n\t\t\t\tif ( APP.props.$countryDD.is(':visible') ) {\n\t\t\t\t\tAPP.props.$countryDD.hide();\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tAE.addResizeTask({\n\t\t\t\tfunc:function() {\n\t\t\t\t\tAPP.manageResize();\n\t\t\t\t},\n\t\t\t\targs:[]\n\t\t\t});\n\t\t\tAE.addTransitionTask({\n\t\t\t\tfunc:function() {\n\t\t\t\t\t/* HANDLES CONTENT MOVED BY APPEND:\n\t\t\t\t\t\tARGUMENTS: 'Palm View', 'Desk Container', 'Mobile Container', 'Content Appended' */\n\t\t\t\t\tAPP.palmTransition(arguments[0], '.account-signinform', '#account-signinform-mobile', '.login-form');  // Member account login\n\t\t\t\t\tAPP.palmTransition(arguments[0], '#sitepicker', '#sitepicker-mobile', '.sitepicker-container');  // Sitepicker list\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tpalmTransition : function() {\n\t\t\tvar palmContent = $('' + arguments[2] + ' ' + arguments[3] + '')[0];\n\n\t\t\t// Moves content back to original container if not in mobile view\n\t\t\tif ( !arguments[0] ) {\n\t\t\t\t$(''+ arguments[1] + '').append(palmContent);\n\t\t\t}\n\n\t\t\t// remove open states when switching to non mobile view\n\t\t\tif ( APP.currentSize !== 'palm' ) {\n\t\t\t\tAPP.props.$acctContMobile.addClass('closed');\n\t\t\t\tAPP.props.$spContMobile.parent().addClass('closed');\n\t\t\t\tAPP.props.$altnavContact.addClass('closed');\n\t\t\t\tAPP.props.$altnavAcct.addClass('closed');\n\t\t\t\tAPP.props.$altnavToggler.addClass('closed');\n\t\t\t}\n\t\t},\n\t\tmanageResize : function() {\n\t\t\t// Anything that this module may need to do upon resize.\n\t\t\tif ( APP.currentSize !== 'palm' && APP.currentSize !== 'lap' ) {\n\t\t\t\tAE.ui.hide( APP.props.$altnav );\n\t\t\t\t//AE.ui.hide( APP.props.$allSubmenus );\n\t\t\t\tAPP.props.$altDropDowns.find('.submenu-dropdown').hide();\n\t\t\t}\n\t\t\tAPP.props.$countryDD.hide();\n\t\t\tAPP.props.$languageDD.hide();\n\t\t\tAPP.props.$acctContDesk.add(APP.props.$modContDesk).addClass('visuallyhidden');\n\n\t\t\t//APP.props.$primnavTop.addClass('closed');\n\t\t},\n\t\tonBodyClick:function(event, $target){\n\n\t\t\t// WEBAE3-5460 on TP logout, clear aeSearch from local storage\n\t\t\tif($target.hasClass('tpLogout') || $($target.parent()).hasClass('tpLogout')){\t\t\t\t\t\n\t\t\t\tlocalStorage.removeItem('aeSearch');\t\t\n\t\t\t}\n\n\t\t\tif ($target.hasClass('my-account-dropdown')) {\n\t\t\t\tif (!APP.props.$memberLoginStatus) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t\n\t\t\t\tAPP.props.$primnavTop.find('.has-dropdown').hide('closed');\n\t\t\t\tAPP.props.$modContDesk.addClass('visuallyhidden');\n\t\t\t\tAPP.props.$acctContDesk.position({\n\t\t\t\t\tmy: \"right-12 top+2\",\n\t\t\t\t\tat: \"right bottom\",\n\t\t\t\t\tof: $(event.target)\n\t\t\t\t}).toggleClass('visuallyhidden');\n\t\t\t}\n\n\t\t\tif ( !$target.closest('ul').hasClass('primnav--list' ) ) {\n\t\t\t\tAPP.props.$primnavList.find('li.open').removeClass('open');\n\t\t\t}\n\n\t\t\t// Close the \"My Account\" sign-in form modal when the user clicks on the x\n\t\t\tif($($target).data('modal-target') == '.account-signinform'){\n\t\t\t\tAPP.props.$acctContDesk.removeClass('open').addClass('closed');\n\t\t\t}\n\n\t\t\tif($($target).data('modal-target') == '.modify-signinform'){\n\t\t\t\tAPP.props.$modContDesk.removeClass('open').addClass('closed');\n\t\t\t}\t\t\n\t\t\t\n\t\t\t// Close the \"My Account\" sign-in form modal when the user clicks anywhere on the page (outside of the modal)\n\t\t\tif ( ($(APP.props.$primnavMember[0]).has($target).length == 0) && (!$(APP.props.$acctContDesk[0]).hasClass('visuallyhidden')) ) {\n\t\t\t\tAPP.props.$acctContDesk.addClass('visuallyhidden');\n\t\t\t}\n\t\t\t\n\t\t\t// Close the \"Manage My Booking\" modal when the user clicks anywhere on the page (outside of the modal)\n\t\t\tif ( ($(APP.props.$primnavModify[0]).has($target).length == 0) && (!$(APP.props.$modContDesk[0]).hasClass('visuallyhidden')) ) {\n\t\t\t\t// Only close the modal if the datepicker calendar is not open\n\t\t\t\tif ($('#ui-datepicker-div').is(':hidden')) {\n\t\t\t\t\tAPP.props.$modContDesk.addClass('visuallyhidden');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif($target.hasClass('trg__drop-toggler')) $target.find('.drop-toggler').click();\n\t\t\t\n\t\t\tif(!$target.closest(\"#sitepicker\").length && !$target.closest(APP.props.$selCountry).length) {\n\t\t\t\tif($(\"#sitepicker\").is(\":visible\")){\n\t\t\t\t\t$(\"#sitepicker\").hide();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tmobileAccountForm: function () {\n\t\t\tvar $contentDesk = $('.account-signinform .login-form');\n\t\t\tvar $contentMobile = $('#account-signinform-mobile .login-form');\n\n\t\t\tif (!APP.props.$acctContMobile.hasClass('open') ) {\n\t\t\t\tAPP.props.$acctContMobile.addClass('open');\n\t\t\t\tAPP.props.$acctContMobile.append($contentDesk);\n\t\t\t} else {\n\t\t\t\tAPP.props.$acctContMobile.removeClass('open');\n\t\t\t\t$('#primnav--acct .account-signinform').append($contentMobile);\n\t\t\t}\n\t\t},\n\t\thandleNavDropdown: function(event) {\n\t\t\t/* \tTargets a link in the primary nav, which is inside an element with the \"has-dropdown\" class.\n\t\t\t\tAdds and removes the \"visuallyhidden\" class to avoid using display:none, thereby maintaining\n\t\t\t\taccessibility for screen readers.\n\t\t\t\t\n\t\t\t\tThis will toggle the dropdown menu for the primary bar and the account menu on the right. */\n\t\t\tvar $dropdown = $(event.target).closest('.has-dropdown');\n\t\t\tvar $submenu = $dropdown.find('.menu-dropdown');\n\t\t\t\n\t\t\tif ( $submenu.hasClass('visuallyhidden') ) {\n\t\t\t\tAE.ui.hide( APP.props.$allSubmenus );\n\t\t\t\tAE.ui.show( $submenu );\n\t\t\t\t//$submenu.removeClass('visuallyhidden');\n\t\t\t} else {\n\t\t\t\t//AE.ui.hide( $submenu );\n\t\t\t\t$submenu.addClass('visuallyhidden');\n\t\t\t}\n\t\t\tAPP.props.$countryDD.hide();\n\t\t\tAPP.props.$languageDD.hide();\n\t\t},\n\t\tcloseAllMenus: function(event) {\n\t\t\tAPP.props.$primDropDowns.removeClass('open').addClass('closed');\n\t\t\tAPP.props.$altDropDowns.removeClass('open').addClass('closed');\n\t\t\t//APP.props.$countryDD.hide();\n\t\t\t//APP.props.$languageDD.hide();\n\t\t},\n\t\ttoggleSubMenus: function (target) {\n\t\t\tvar $submenu = target.find('.submenu-dropdown');\n\t\t\tif ( $submenu.is(':visible') ) {\n\t\t\t\ttarget.find('.drop-toggler > i').removeClass('fa-chevron-circle-up').addClass('fa-chevron-circle-down');\n\t\t\t\t$submenu.slideUp();\n\t\t\t} else {\n\t\t\t\ttarget.find('.drop-toggler > i').removeClass('fa-chevron-circle-down').addClass('fa-chevron-circle-up');\n\t\t\t\t$submenu.slideDown();\n\t\t\t}\n\t\t}\n\n\t}\n\treturn APP;\n})();\n;var AE = AE || {}; /* Add to Base object or create it if it doesn't exist. */\n\n/*\nThis object will be the returned result of a self-invoked function. This allows us to expose methods \nfor use by other modules while protecting some variables in a closure. If the object is already \ndefined then it's not altered. This prevents us from running the entire function each time one of its \ninternal methods are called.\n*/\nAE.newsletter = AE.newsletter || (function(){\n\t/*\n\tDEPENDENCIES: AE\n\t*/\n\n\tvar APP = {\n\t\tinit:function() {\n\t\t\tAPP.props = {};\n\t\t\tAE.ui.addBodyClickTask({func: APP.onBodyClick});\n\t\t},\n\t\tfooterSubscribe:function($target) {\n\t\t\tvar fromPromo = ($target.hasClass('promo'))? true : false;\n\t\t\tvar $input = (fromPromo)? $('#newsletter__footer--input--promo') : $('#newsletter__footer--input');\n\t\t\tvar inputContainerSelector = (fromPromo)? '#newsletter__footer--container--promo' : '#newsletter__footer--container';\n\t\t\t$(inputContainerSelector).removeClass('ui-state-invalid');\n\t\t\tif(AE.forms){ AE.forms.emailClean($input); }\n\t\t\t$input.addClass('trulyhidden');\n\t\t\t$target.addClass('trulyhidden');\n\t\t\tAE.ui.addSpinner(inputContainerSelector,{size:'2x',color:'black'});\n\n\t\t\tAPP.genericSubscribe($target,$input,inputContainerSelector);\n\t\t},\n\t\tdiagSubscribe:function($target) {\n\t\t\tvar $input = $('#newsletter__diag--input');\n\t\t\tvar inputContainerSelector = '#newsletter__diag--container';\n\t\t\t$(inputContainerSelector).removeClass('ui-state-invalid');\n\t\t\tif(AE.forms){ AE.forms.emailClean($input); }\n\t\t\t$input.addClass('trulyhidden');\n\t\t\t$target.addClass('trulyhidden');\n\t\t\tAE.ui.addSpinner(inputContainerSelector,{size:'2x',color:'black'});\n\n\t\t\tAPP.genericSubscribe($target,$input,inputContainerSelector);\n\t\t},\n\t\tgenericSubscribe:function($target,$input,inputContainerSelector){\n\t\t\t$.ajax({\n\t\t\t\turl:'/plugins/ae3/lib/BookingAjax.cfc',\n\t\t\t\tdataType:'json',\n\t\t\t\tdata:{\n\t\t\t\t\tmethod \t\t\t: 'emailQuoteNewsletterSignup',\n\t\t\t\t\temail \t\t\t: $input.val(),\n\t\t\t\t\tsubsource \t\t: 'FTR'\n\t\t\t\t}\n\t\t\t}).done(function(data){\n\t\t\t\tAE.ui.removeSpinner(inputContainerSelector);\n\t\t\t\tif(!data.SUCCESS){\n\t\t\t\t\t$(inputContainerSelector).addClass('ui-state-invalid');\n\t\t\t\t\t$target.removeClass('trulyhidden');\n\t\t\t\t\t$input.removeClass('trulyhidden').val('').attr('placeholder',data.MSG);\n\t\t\t\t} else {\n\t\t\t\t\t$input.prop('disabled',true).removeClass('trulyhidden').val(data.MSG);\n\t\t\t\t}\n\t\t\t}).fail(function(){\n\t\t\t\tAE.ui.removeSpinner(inputContainerSelector);\n\t\t\t\t$(inputContainerSelector).addClass('ui-state-invalid');\n\t\t\t\t$target.removeClass('trulyhidden');\n\t\t\t\t$input.removeClass('trulyhidden').val('').attr('placeholder', AE.props.oLang.TXT_TRY_AGAIN);\n\t\t\t});\n\t\t},\n\t\tshowSubscribePopup:function(){\n\t\t\tvar aeSubTrg = 'aeShowSubscribe';\n\t\t\tvar aeNLPopupID = 'newsletterPopupDiag';\n\t\t\tvar aeShowSubscription =  localStorage.getItem(aeSubTrg);\n\t\t\tif(aeShowSubscription) {\n\t\t\t\t//console.log('showSubscription', localStorage.getItem(aeSubTrg));\n\t\t\t\t$.ajax({\n\t\t\t\t\ttype: \"GET\",\n\t\t\t\t\turl: '/plugins/ae3/lib/newsletterpopup.cfc',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tmethod: 'getModalContent'\n\t\t\t\t\t},\n\t\t\t\t\tsuccess: function (result) {\n\t\t\t\t\t\treturned = JSON.parse(result);\n\t\t\t\t\t\tAE.ui.dialog.launch({\n\t\t\t\t\t\t\tid: aeNLPopupID,\n\t\t\t\t\t\t\ttitle: returned.title,\n\t\t\t\t\t\t\tcontent: returned.content,\n\t\t\t\t\t\t\twidth: ( $( window ).width() > 400 ) ? 350 : '80%'\n\t\t\t\t\t\t\t,inline: true\n\t\t\t\t\t\t});\n\t\t\t\t\t\tAE.ui.dialog.update(true);\n\t\t\t\t\t\tlocalStorage.removeItem(aeSubTrg);\n\t\t\t\t\t},\n\t\t\t\t\terror: function(result) {\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\t// console.log(localStorage.getItem(aeSubTrg));\n\t\t\t\t// console.log('nothing showSubscription');\n\t\t\t}\n\t\t},\n\t\tonBodyClick:function(event,$target){\n\t\t\tif($target.hasClass('newsletter__footer--button')) {\n\t\t\t\tAPP.footerSubscribe($target);\n\t\t\t}\n\t\t\tif($target.hasClass('newsletter__diag--button')) {\n\t\t\t\tAPP.diagSubscribe($target);\n\t\t\t}\n\t\t}\n\t}\n\treturn APP;\n})();\n\n;var AE = AE || {}; /* Add to Base object or create it if it doesn't exist. */\n/* GOOGLE CUSTOM DIMENSIONS */\n\n/*\nThis object will be the returned result of a self-invoked function. This allows us to expose methods \nfor use by other modules while protecting some variables in a closure. If the object is already \ndefined then it's not altered. This prevents us from running the entire function each time one of its \ninternal methods are called.\n*/\nAE.cd = AE.cd || (function(){\n\t/*\n\tDEPENDENCIES: \n\t\n\tESTABLISHED DIMENSIONS IN GOOGLE ANALYTICS\n\t\tdimension1\t\t// Optimizely active? (Currently not used)\n\t\tdimension2\t\t// Form Path Tracking\n\t\tdimension3\t\t// User ID\n\t\tdimension4\t\t// Number of Visits at Checkout\n\t\tdimension5\t\t// Round Trip of One Way\n\t\tdimension6\t\t// Pickup Location\n\t\tdimension7\t\t// Drop off Location\n\t\tdimension8\t\t// Search Locations\n\t\tdimension9\t\t// Credit Card Used?\n\t\tdimension10\t\t// Number of Matrix Interactions\n\t\tdimension11\t\t// Affilate Name (Removed for lack of reliability)\n\t\tdimension12\t\t// Dynamic Remarketing Item ID\n\t\tdimension13\t\t// Dynamic Remarketing Item ID2\n\t\tdimension14\t\t// Dynamic Remarketing Page Type\n\t*/\n\n\tvar APP = {\n\t\tinit:function() {\n\t\t\tAPP.props = {\n\t\t\t\t$page_type \t\t: AECustomDimension.props.$page_type\t\t\t\t\t\t\t\t// Set the funnel value as property\n\t\t\t};\n\n\t\t\tvar Session_Cookie_Value = AECustomDimension.getCookieValue('SessionStarted');\n\t\t\tif (!Session_Cookie_Value){\n\t\t\t\tAECustomDimension.setCookieValue('SessionStarted', 'true', 0);\n\n\t\t\t\tvar user_id = AECustomDimension.makeid();\n\t\t\t\tAECustomDimension.updateSingleValueCookie(AECustomDimension.props.$cn_user_id, AECustomDimension.props.$user_id, 365*10);\n\t\t\t\t// Start of Session\n\t\t\t\tAECustomDimension.incrementNumberOfVisits();\n\t\t\t\tif (AECustomDimension.props.$visitsIncreased) {\n\t\t\t\t\tAE.ga.gaArrayProcess([{GACATEGORY: 'NumberOfVisits', GAACTION: 'New Session', GALABEL: 'Increment Number Of Visits - '+AECustomDimension.props.$numVisits }]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// SET SEARCH CUSTOM DIMENSIONS\n\t\t\t// ============================\n\t\t\t\n\t\t\t// ROUND TRIP OR ONE WAY RENTAL\n\t\t\tif (typeof AECustomDimension.props.$direction !== 'undefined') {\n\t\t\t\tAE.ga.gaArrayProcess([{GACATEGORY: 'carSearch', GAACTION: 'direction', GALABEL: AECustomDimension.props.$direction }]);\n\t\t\t}\n\n\t\t\t// PICKUP COUNTRY CODE\n\t\t\tif (typeof AECustomDimension.props.$pickup !== 'undefined') {\n\t\t\t\tAE.ga.gaArrayProcess([{GACATEGORY: 'carSearch', GAACTION: 'pickup', GALABEL: AECustomDimension.props.$pickup }]);\n\t\t\t}\n\n\t\t\t// DROP OFF COUNTRY CODE\n\t\t\tif (typeof AECustomDimension.props.$dropoff !== 'undefined') {\n\t\t\t\tAE.ga.gaArrayProcess([{GACATEGORY: 'carSearch', GAACTION: 'dropoff', GALABEL: AECustomDimension.props.$dropoff }]);\n\t\t\t}\n\n\t\t\t// LOCATION TYPE\n\t\t\tif (typeof AECustomDimension.props.$loctype !== 'undefined') {\n\t\t\t\tAE.ga.gaArrayProcess([{GACATEGORY: 'carSearchLocType', GAACTION: 'locationType', GALABEL: AECustomDimension.props.$loctype }]);\n\t\t\t}\n\n\n\t\t\t// SET CUSTOM DIMENSIONS BY PAGE - NOT ALL STEPS HAVE TRACKING\n\t\t\t// ===========================================================\n\t\t\t\n\t\t\t// ROOT OR HOME\n\t\t\tif (APP.props.$page_type === \"/\"){ } \n\t\t\t\n\t\t\t// SEARCH WAIT SCREEN\n\t\t\telse if ( APP.props.$page_type === \"/search/\" ) { } \n\t\t\t\n\t\t\t// GET RATES MATRIX RESULTS\n\t\t\telse if ( APP.props.$page_type === \"/results/\" ) {\n\n\t\t\t\tvar i = 0;\n\t\t\t\ti = AECustomDimension.zeroPad(i, 2);\n\t\t\t\tvar getrates_Cookie_Value = AECustomDimension.getCurrentCookieValue('getrates_count');\n\n\t\t\t\t//Set get rates view count\n\t\t\t\tif(Session_Cookie_Value !== \"\") {\n\t\t\t\t\tgetrates_Cookie_Value++;\n\t\t\t\t\tAECustomDimension.setCookieValue('getrates_count', getrates_Cookie_Value, 0);\n\t\t\t\t}\n\n\t\t\t\t//Add preceding zero to low value numbers\n\t\t\t\tgetrates_Cookie_Value = AECustomDimension.zeroPad(getrates_Cookie_Value, 2);\n\t\t\t\tAECustomDimension.setDimension('dimension10',i+' Matrix Clicks');\n\t\t\t\tAE.ga.gaArrayProcess([{GACATEGORY: 'matrixClicksCount', GAACTION: 'Get Rates View - ' + getrates_Cookie_Value, GALABEL: i+' Matrix Clicks' }]);\n\n\t\t\t\t$('#matrix__wrapper').on('click', function(event){\n\n\t\t\t\t\tvar $target = $(event.target),\n\t\t\t\t\t\t$targetLI = $target.closest('li');\n\n\t\t\t\t\t// Make sure that there's a list item, becaus the user could have clicked on empty space or something with no list item parent.\n\t\t\t\t\tvar rate = ( $targetLI[0] && !$targetLI.hasClass('no-rate') ) ? true : false;\n\n\t\t\t\t\tif (rate) {\n\t\t\t\t\t\tvar tempData = $targetLI.data() || {},cat = _.has(tempData,'category'),sup = _.has(tempData,'supplier');\n\n\t\t\t\t\t\t//Add preceding zero to low value numbers\n\t\t\t\t\t\ti++; i = AECustomDimension.zeroPad(i, 2);\n\t\t\t\t\t\tAECustomDimension.setDimension('dimension10',i+' Matrix Clicks');\n\t\t\t\t\t\t\n\t\t\t\t\t\tAE.ga.gaArrayProcess([{GACATEGORY: 'matrixClicksCount', GAACTION: 'Get Rates View - ' + getrates_Cookie_Value, GALABEL: i+' Matrix Clicks' }]);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} \n\t\t\t\n\t\t\t// INSURANCE UPGRADE AND OPTIONAL EQUIPTMENT\n\t\t\telse if ( APP.props.$page_type === \"/options/\" ) { } \n\t\t\t\n\t\t\t// CAR CLASS UPGRADE\n\t\t\telse if ( APP.props.$page_type === \"/upgrade/\" ) { } \n\t\t\t\n\t\t\t// CHECKOUT OR BOOKFORM\n\t\t\telse if ( APP.props.$page_type === \"/checkout/\" ) {\n\n\t\t\t\t//Build Credit Card Used Cookie\n\t\t\t\tAECustomDimension.updateSingleValueCookie(AECustomDimension.props.$cn_cc_used, 'no', 365);\n\n\t\t\t\t//If the credit card field is used, update a cookie\n\t\t\t\t$('#cardnumber').on('change', function(event){\n\t\t\t\t\tvar value = $(this).val();\n\t\t\t\t\tif (value !== \"\") {\n\t\t\t\t\t\tAECustomDimension.updateSingleValueCookie(AECustomDimension.props.$cn_cc_used, 'yes', 365);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tAECustomDimension.updateSingleValueCookie(AECustomDimension.props.$cn_cc_used, 'no', 365);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tAE.ga.gaArrayProcess([{GACATEGORY: 'bookform field tracking', GAACTION: 'form load', GALABEL: '00 - Form Load', GAVALUE: 1}]);\n\t\t\t} \n\t\t\t\n\t\t\t// CONFIRMATION OR MAKEBOOKING\n\t\t\telse if ( APP.props.$page_type === \"/confirmation/\" ) { \n\t\t\t\tif (AECustomDimension.props.$ccUsed) {\n\t\t\t\t\tAE.ga.gaArrayProcess([{GACATEGORY: AECustomDimension.props.$cn_cc_used, GAACTION: AECustomDimension.props.$cn_cc_used, GALABEL: AECustomDimension.props.$ccValue }]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn APP;\n})();\n;var AE = AE || {}; /* Add to Base object or create it if it doesn't exist. */\n\n/* GOOGLE ANALYTICS SCRIPTING */\n\n/*\nThis object will be the returned result of a self-invoked function. This allows us to expose methods\nfor use by other modules while protecting some variables in a closure. If the object is already\ndefined then it's not altered. This prevents us from running the entire function each time one of its\ninternal methods are called.\n*/\nAE.ga = AE.ga || (function(){\n\t/*\n\tDEPENDENCIES: AE\n\n\n\n\tGOOGLE ANALYTICS to define ga - The following is expected in the head:\n\t(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n\t\t(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n\t\tm=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n\t\t})(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\t\tga('create', '#variables.GoogleAccount#', 'auto');\n\t\tga('create', 'UA-66348978-1', 'auto', {'name': 'master', 'allowLinker': true}); // master analytics account\n\n\tThe data-gaarray attribute this code operatres on is expected to be a valid JSON array of structs, thus:\n\t\t[\n\t\t\t{'GACATEGORY':'required','GAACTION':'required','GALABEL':'optional','GAVALUE':[INTEGER ONLY (optional)],},\n\t\t\t{'GACATEGORY':'required','GAACTION':'required'},...\n\t\t]\n\tIn ColdFusion, build an array of structs. The structs MUST include the Keys GACATEGORY AND GAACTION, at least,\n\tAND all key names must match the spec above. Then, prepare the CF array for extraction as JSON:\n\t\tgaArray = urlencodedFormat(serializeJSON(CFArray),'utf-8')\n\t*/\n\tvar APP = {\n\t\tinit:function() {\n\t\t\t/*\tThis is where we set variables and things that will only live inside the closure. */\n\t\t\tAPP.props = {\n\t\t\t\t/* jQuery Collections of Objects with Our Google Analytics trigger classes\t*/\n\t\t\t\t$gaClick \t: $('.trg__ga--Click'),/* Objects we want to report to Google Analytics when they are clicked\n\t\t\t\tExample: <button class=\"any others trg__ga--Click\" data-gaarray=\"#gaArray#\">...</button> */\n\t\t\t\t$gaAuto\t\t: $('.trg__ga--Auto'),/* Objects we want to report to Google Analytics as soon as the page loads\n\t\t\t\tExample: <div class=\"any others trg__ga--Auto\" data-gaarray=\"#gaArray#\">...</div> */\n\t\t\t\t$gaChange \t: $('.trg__ga--Change'),\t\t// change event used for selects\n\t\t\t\t$gaChild\t: $('.trg__ga--Child'),\t\t\t// child element where array is stored on parent usually multiple childs\n\t\t\t\t$gaCheck\t: $('.trg__ga--Checkbox'),\t\t// checkbox clicks used when need to know checked state\n\t\t\t\t$gaTime\t\t: $('.trg__ga--Time')\t\t\t// measure time on page but only on initial visit\n\t\t\t};\n\n\t\t\t// Adjusted Bounce for AUS and NZL sites\n\t\t\tif (AE.props.isAUNZ) {\n\t\t\t\tsetTimeout(function(){\n\t\t\t\t\tAPP.gaArrayProcess([{GACATEGORY: '15_seconds', GAACTION: 'read'}]);\n\t\t\t\t},15000);\n\t\t\t}\n\n\t\t\t// Page load auto events\n\t\t\t$.each(APP.props.$gaAuto,function(i){// Send data to Google Analytics from each object with trg-gaAuto class\n\t\t\t\tvar gaArray = [];\n\t\t\t\tif(APP.props.$gaAuto[i].attributes['data-gaarray']){\n\t\t\t\t\tgaArray = JSON.parse(decodeURIComponent(APP.props.$gaAuto[i].attributes['data-gaarray'].value));\n\t\t\t\t\tAPP.gaArrayProcess(gaArray);\n\t\t\t\t}\n\t\t\t});\n\t\t\t// Timer event\n\t\t\t$.each(APP.props.$gaTime,function(i){// Send data to Google Analytics from each object with trg--Time class\n\t\t\t\tAPP.timeOnPage();\n\t\t\t});\n\t\t\tAE.ui.addBodyClickTask({func: APP.onBodyClick});\n\t\t\tAE.ui.addBodyChangeTask({func: APP.onBodyChange});\n\t\t},\n\t\tgaArrayProcess:function(gaArray){// Loop Through gaArray JSON object, tracking as you go\n\t\t\tif(gaArray !== null){\n\t\t\t\t$.each(gaArray,function(j){\n\t\t\t\t\tAPP.gaLogEvent(gaArray[j].GACATEGORY, gaArray[j].GAACTION, gaArray[j].GALABEL, gaArray[j].GAVALUE);\n\t\t\t\t\t// if(typeof ga !== 'undefined') checks that the Google Analytics dependency has loaded\n\t\t\t\t\tif(typeof ga !== 'undefined') APP.gaTrackEvent(gaArray[j].GACATEGORY, gaArray[j].GAACTION, gaArray[j].GALABEL, gaArray[j].GAVALUE);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgaLogEvent:function(gaCategory, gaAction, gaLabel, gaValue) {// Write the Event Fields to the console for debugging\n\t\t\t// ga('send', 'event', {'eventCategory': '\" + gaCategory + \"','eventAction': '\" + gaAction+ \"','eventLabel': '\" + gaLabel + \"','eventValue': \" + gaValue + \"});\n\t\t},\n\t\tgaTrackEvent:function(gaCategory, gaAction, gaLabel, gaValue) {// Sends Data to Google Analytics\n\t\t\t//\tNEW Tag Manager setup push variables to predefined GTM object\n\t\t\t//\tSite Account: ga('send', 'event', Category, Action, Label, Value);\n\t\t\taeDataLayer.push({\n\t\t\t  'event' : 'gaEvent',\t\t\t\t// gaEvent is the custom trigger in GTM for an event Tag\n\t\t\t  'eventCategory' : gaCategory,\t\t// Required - category\n\t\t\t  'eventAction' : gaAction,\t\t\t// Required - action\n\t\t\t  'eventLabel' : gaLabel,\t\t\t// Not Required - label\n\t\t\t  'eventValue' : gaValue\t\t\t// Not Required - value NUMERIC\n\t\t\t});\n\t\t\t//\tMaster account handled in GTM\n\t\t},\n\t\tonBodyClick:function(event,$target){\n\n\t\t\t/*SITEPICKER TRACKING*/\n\t\t\t// if ( $target.hasClass('trg__ga--Click-inner') && typeof $target.parent().data('gaarray') !== 'undefined' ) {\n\t\t\t// \tvar item  = ( $target.hasClass('matrix__cell') && $target.closest('li').hasClass('no-rate') ) ? false : true;\n\t\t\t// \tif (item) { APP.gaArrayProcess(JSON.parse(decodeURIComponent($target.parent().data('gaarray')))); }\n\t\t\t// }else\n\t\t\tif ( $target.hasClass('trg__ga--Click') && typeof $target.data('gaarray') !== 'undefined' ) {\n\t\t\t\tvar item  = ( $target.hasClass('matrix__cell') && $target.closest('li').hasClass('no-rate') ) ? false : true;\n\t\t\t\tif (item) { APP.gaArrayProcess(JSON.parse(decodeURIComponent($target.data('gaarray')))); }\n\t\t\t}\n\n\t\t\tif ( $target.hasClass('trg__ga--Child') && typeof $target.parent().data('gaarray') !== 'undefined' ) {\n\t\t\t\tvar gaObject = JSON.parse(decodeURIComponent($target.parent().data('gaarray')));\n\n\t\t\t\tif ($target.hasClass('dropdown-toggle')) {\n\t\t\t\t\tif ($target.parent().hasClass('open')) { APP.gaArrayProcess(gaObject); }\n\t\t\t\t} else {\n\t\t\t\t\tAPP.gaArrayProcess(gaObject);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( $target.hasClass('trg__ga--Nav') && typeof $target.data('gaarray') !== 'undefined' ) {\n\t\t\t\tvar gaObject = JSON.parse(decodeURIComponent($target.data('gaarray')));\n\n\t\t\t\tif ($target.parent().hasClass('has-dropdown')) {\n\t\t\t\t\tif ($target.parent().hasClass('open')) { APP.gaArrayProcess(gaObject); }\n\t\t\t\t} else {\n\t\t\t\t\tAPP.gaArrayProcess(gaObject);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( $target.hasClass('trg__ga--Checkbox') && typeof $target.data('gaarray') !== 'undefined' ) {\n\t\t\t\tvar gaObject = JSON.parse(decodeURIComponent($target.data('gaarray')));\n\t\t\t\tvar cbStatus = ($target.is(':checked')) ? 'checked' : 'unchecked';\t\t// set action\n\t\t\t\t// Limit injecting check status on case by case basis as placement can vary\n\t\t\t\tif( $target.hasClass('matrix_filter') || $target.hasClass('map_filter') ) {\n\t\t\t\t\tvar addStatus = {'GAACTION' : cbStatus};\t\t\t\t\t\t\t\t// extend and add to gaObject\n\t\t\t\t\t_.extend(gaObject[0], addStatus);\n\t\t\t\t}\n\t\t\t\tif( $target.hasClass('saveQuote-newsletter') ) {\n\t\t\t\t\tvar addStatus = {'GALABEL' : cbStatus};\t\t\t\t\t\t\t\t\t// extend and add to gaObject\n\t\t\t\t\t_.extend(gaObject[0], addStatus);\n\t\t\t\t}\n\t\t\t\tAPP.gaArrayProcess(gaObject);\n\t\t\t}\n\t\t},\n\t\tonBodyChange:function(event,$target){\n\n\t\t\tif ( $target.hasClass('trg__ga--Change') && typeof $target.data('gaarray') !== 'undefined' ) {\n\t\t\t\tvar gaObject = JSON.parse(decodeURIComponent($target.data('gaarray')));\n\t\t\t\tvar selectVal = $target.val();\n\t\t\t\tif ( $target.hasClass('optionalEquip') ) {\n                    gaObject[0].GALABEL += ' ' + selectVal;\n\t\t\t\t}\n\t\t\t\tAPP.gaArrayProcess(gaObject);\n\t\t\t}\n\t\t},\n\t\ttimeOnPage:function(){\n\t\t\t// Used in affiliate header to track visitors initial time on page\n\t\t\tif (document.referrer.split('/')[2] != document.location.hostname) { // Initial page visit only\n\t\t\t\tsetTimeout(function() { // One second.\n\t\t\t\t\tAPP.gaArrayProcess([{\"GACATEGORY\":\"TimeOnPage\",\"GAACTION\":\"1 sec\"}]);\n\t\t\t\t}, 1000);\n\t\t\t\tsetTimeout(function() { // Two seconds.\n\t\t\t\t\tAPP.gaArrayProcess([{\"GACATEGORY\":\"TimeOnPage\",\"GAACTION\":\"2 sec\"}]);\n\t\t\t\t}, 2000);\n\t\t\t\tsetTimeout(function() { // Five seconds.\n\t\t\t\t\tAPP.gaArrayProcess([{\"GACATEGORY\":\"TimeOnPage\",\"GAACTION\":\"5 sec\"}]);\n\t\t\t\t}, 5000);\n\t\t\t\tsetTimeout(function() { // Ten seconds.\n\t\t\t\t\tAPP.gaArrayProcess([{\"GACATEGORY\":\"TimeOnPage\",\"GAACTION\":\"10 sec\"}]);\n\t\t\t\t}, 10000);\n\t\t\t\tsetTimeout(function() { // Twenty seconds.\n\t\t\t\t\tAPP.gaArrayProcess([{\"GACATEGORY\":\"TimeOnPage\",\"GAACTION\":\"20 sec\"}]);\n\t\t\t\t}, 20000);\n\t\t\t\tsetTimeout(function() { // Thirty seconds.\n\t\t\t\t\tAPP.gaArrayProcess([{\"GACATEGORY\":\"TimeOnPage\",\"GAACTION\":\"30 sec\"}]);\n\t\t\t\t}, 30000);\n\t\t\t\tsetTimeout(function() { // Sixty seconds.\n\t\t\t\t\tAPP.gaArrayProcess([{\"GACATEGORY\":\"TimeOnPage\",\"GAACTION\":\"60 sec\"}]);\n\t\t\t\t}, 60000);\n\t\t\t}\n\t\t}\n\t}\n\treturn APP;\n})();\n\n;var AE = AE || {};\n\nAE.utils = AE.utils || ( function () {\n\t/*\n\tDEPENDENCIES: Any other modules that this one will call.\n\t*/\n\t'use strict';\n\tvar UI = {\n\t\tinit: function () {\n\t\t\t// UI.props = {\n\t\t\t//   $myProp     : $('#someID'),\n\t\t\t//   $myOtherProp  : $('.someClass'),\n\t\t\t// };\n\t\t},\n\t\t_groupItemsByPropsInArray: function ( _array, f ) {\n\t\t\t/***\n\t\t\t * Will document use later - simari\n\t\t\t ***/\n\t\t\tvar groups = {};\n\t\t\t_array.forEach( function ( o ) {\n\t\t\t\tvar group = JSON.stringify( f( o ) );\n\t\t\t\tgroups[ group ] = groups[ group ] || [];\n\t\t\t\tgroups[ group ].push( o );\n\t\t\t} );\n\t\t\treturn Object.keys( groups ).map( function ( group ) {\n\t\t\t\treturn groups[ group ];\n\t\t\t} );\n\t\t},\n\t\t_findMatchingPropsInArray: function ( _array, checkProp ) {\n\t\t\t/***\n\t\t\t * Will document use later - simari\n\t\t\t ***/\n\t\t\treturn _array.filter( function ( entry ) {\n\t\t\t\treturn Object.keys( checkProp ).every( function ( key ) {\n\t\t\t\t\treturn entry[ key ] === checkProp[ key ];\n\t\t\t\t} );\n\t\t\t} );\n\t\t},\n\t\t_deleteEmptyObjsByValFromArray: function ( _array, deleteValue ) {\n\t\t\t/***\n\t\t\t * Will document use later - simari\n\t\t\t ***/\n\t\t\tfor ( var i = 0; i < _array.length; i++ ) {\n\t\t\t\tif ( _array[ i ] == deleteValue ) {\n\t\t\t\t\t_array.splice( i, 1 );\n\t\t\t\t\ti--;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn _array;\n\t\t},\n\t\t_sortPropByAlphaInArray: function ( _array, sortProp ) {\n\t\t\t/***\n\t\t\t * Will document use later - simari\n\t\t\t ***/\n\t\t\treturn _array.sort( function ( a, b ) {\n\t\t\t\tif ( a[ sortProp ] < b[ sortProp ] ) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tif ( a[ sortProp ] > b[ sortProp ] ) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t} );\n\t\t},\n\t\t_removeDuplicateObjectsFromArray: function ( _array, filterProp ) {\n\t\t\t/***\n\t\t\t * Will document use later - simari\n\t\t\t ***/\n\t\t\tvar _tempArr = new Array();\n\t\t\tvar _matchLocTitle = {};\n\t\t\tfor ( var i in _array ) {\n\t\t\t\t( typeof _array[ i ] != 'function' ) ? _matchLocTitle[ _array[ i ][ filterProp ] ] = _array[ i ] : void(0);\n\t\t\t}\n\t\t\tfor ( var i in _matchLocTitle ) {\n\t\t\t\t_tempArr.push( ( typeof _array[ i ] != 'function' ) ?  _matchLocTitle[ i ] : void(0));\n\t\t\t}\n\t\t\treturn _tempArr;\n\t\t},\n\t\t_checkValueAlreadyExistsInArray: function ( _array, value ) {\n\t\t\t/***\n\t\t\t * Will document use later - simari\n\t\t\t ***/\n\t\t\treturn _array.indexOf( value ) > -1;\n\t\t\t}\n\t\t\t// ,\n\t\t\t// manageResize : function() {\n\t\t\t//   /* Anything that this module may need to do upon resize. */\n\t\t\t// }\n\t\t};\n\t\treturn UI;\n\t} )();\n\n;\nvar AE = AE || {};\n/*Specifically for Safari Private Browsing mode.*/\nAE.privateBrowsing = AE.privateBrowsing || (function () {\n    /*DEPENDENCIES: AE.js*/\n    'use strict';\n\n\n\n\n    var UI = {\n        init: function () {\n\n             var cookieCheck = AECookie.props.cookiesEnabled();\n\n            UI.props = {\n                _localStorage: '',\n                _sessionStorage: '',\n                checkCookies: cookieCheck,\n                privateSessionPolyfill: UI._checkLocalStorageAvailability,\n                usePolyfill: UI._localStoragePolyfill,\n                requireCookieNotification: true,\n                cookieNotificationShown: (cookieCheck && (AECookie != undefined && AECookie.read('cookieNotificationShown'))) ? true : false,\n                userEngagedNotification: (cookieCheck && (AECookie != undefined && AECookie.read('userEngagedNotification'))) ? true : false,\n                cookieExpires: 60,\n                activeNotification: '',\n                messaging: {\n                    // defaultCookieMessage: AE.props.cookie_support.DEFAULT_COOKIE_USE,\n                    defaultCookieMessage: AE.props.cookie_support.DEFAULT_FROM_AE2,\n                    defaultCloseButton: AE.props.cookie_support.CLOSE_BUTTON,\n                    noCookieSupportTitle: AE.props.cookie_support.WARNING_TITLE,\n                    noCookieSupportMessage: AE.props.cookie_support.WARNING_TEXT,\n                    moreInfoMessage: AE.props.cookie_support.INFO_LINK, // privacy text\n                    moreInfoLink: location.origin + '/' + AE.props.cookie_support.INFO_LINK_URL, // link to privacy\n                    confirmCookieSupportMessage: AE.props.cookie_support.DEFAULT_COOKIE_USE\n                }\n            };\n            if ($('.whitelabel-if')[0]) {// WEBAE3-4006 Suppress cookie alert for iframes\n                UI.props.cookieNotificationShown = true;\n            }\n            AE.ui.addBodyClickTask({\n                func: UI.onBodyClick\n            });\n\n            /*\n             * Pass: var $obj = {'title':…,'message':…}; into UI._tryLaunch();\n             */\n            UI.mainSearch();\n        },\n        mainSearch: function () {\n            /* Check for cookie support before augmenting localStorage polyfill. */\n            if (UI.props.checkCookies) {\n                if (AE.props.bWhiteLabel || AE.props.bIsTpDomain) {//WEBAE3-2442 - no cookie notice on TP sites\n                    UI.props.cookieNotificationShown = true;\n                } else {\n                    UI._cookiesEnabled();\n                }\n            } else {\n                UI._cookiesDisabled();\n            }\n        },\n        _cookiesEnabled: function () {\n                UI._tryLaunch({\n                    'title': '',\n                    'message': UI.props.messaging.defaultCookieMessage\n                });\n                /* Cookies are enabled, check for localStorage support. Augment as necessary.*/\n                return UI.props.privateSessionPolyfill() ? UI.props.usePolyfill() : false;\n        },\n\n        _cookiesDisabled: function () {\n            UI._tryLaunch({\n                    'title': UI.props.messaging.noCookieSupportTitle,\n                    'message': UI.props.messaging.noCookieSupportMessage\n                }, false);\n\n                return false;\n        },\n\n        _tryLaunch: function (obj, cookieSupport) {\n            var _title = obj.title || false;\n            var _message = obj.message || false;\n            var hasCookieSupport = cookieSupport || true;\n\n\n           // WEBAE3-4907 -  Remove the setting of \"cookieNotificationShown\" & \"userEngagedNotification\" cookies\n           /*\n                if (!UI.props.cookieNotificationShown) {    //  || !UI.props.userEngagedNotification\n\n                        if (!UI.props.cookieNotificationShown) {\n                            UI.props.cookieNotificationShown = true;\n                            AECookie.new({\n                                name: 'cookieNotificationShown',\n                                value: 'true',\n                                encodeValue: 'true',\n                                daysToLive: 0,\n                                minutesToLive: UI.props.cookieExpires\n                            });\n                        }\n\n                    // WEBAE3-4868 Remove existing cookie consent bar\n                        UI._showCookieNotification({\n                            'title': _title,\n                            'message': _message\n                        }, hasCookieSupport);\n                    \n                }\n            */\n\n        },\n        _showCookieNotification: function (obj, cookieSupport) {\n            \n            var _title = obj.title || false;\n            var _message = obj.message || false;\n\n\n            var hasCookieSupport = cookieSupport || true;\n            var $warningTitleHolder = '';\n            var $warningTitle = '';\n            var notificationHtml='';\n            var $warningMessage = $('<p/>', {\n                'html': _message\n            });\n\n            if (_title) {\n                /*\n                 * This is a default cookie notification with a title…\n                 */\n                $warningTitleHolder = $('<div/>', {\n                    class: 'ui-cookie-support-wrap--inner ui-cookie-support-title'\n                });\n                $warningTitle = $('<h2/>', {\n                    'html': _title\n                });\n            }else{\n                $warningMessage.addClass('valign--middle');\n            }\n\n            var $cookieSupportNotificationWindow = $('<div/>', {\n                id: 'ui-cookie-support-notification',\n                role: 'alertdialog'\n            });\n            var $warningMsgWrapper = $('<div/>', {\n                class: 'ui-cookie-support-message-wrap'\n            });\n            var $warningTitleHolder = $('<div/>', {\n                class: 'ui-cookie-support-wrap--inner ui-cookie-support-title'\n            });\n            var $warningMessageHolder = $('<div/>', {\n                class: 'ui-cookie-support-wrap--inner ui-cookie-support-message message-flex-start'\n            });\n            var _notificationRef = $cookieSupportNotificationWindow.attr('id');\n\n            UI.props.activeNotification = _notificationRef;\n\n        /*WEBAE3-4470\n          1-  Replace \"ok\" button in current Cookie Notification with \"Accept\", \"Decline\" & \"Customize \n          2- Settings\" buttons\n          3- When \"customize Settings\" button is clicked, launch new “Cookie Preference” modal\n        */\n// change to say accept \n            var $dismissNotificationBtn = $('<button/>', {\n                class: 'ui-cookie-support-dismiss-button ui-cookie-support-dismiss-link ui-warn-flag-close-btn ui-top-notification-close-btn',\n                html: UI.props.messaging.defaultCloseButton,\n                for: UI.props.activeNotification\n            });\n//add decline btn need to fix border so it fits \n           var $dismissNotificationBtnDecline = $('<button/>', {\n                class: 'ui-cookie-support-dismiss-button ui-cookie-support-dismiss-link ui-warn-flag-close-btn ui-top-notification-close-btn declineBtn',\n                html: \"decline\"\n                //for: UI.props.activeNotification\n            });\n            //customize btn\n             var $dismissNotificationBtnCustSet = $('<button/>', {\n                class: 'ui-cookie-support-dismiss-button ui-cookie-support-dismiss-link ui-warn-flag-close-btn ui-top-notification-close-btn custSetBtn',\n                html: \"customize Settings \"\n                //for: UI.props.activeNotification\n            });\n\n\n\n\n\n\n            if(_message == UI.props.messaging.defaultCookieMessage){\n                notificationHtml = '';\n            }else{\n                notificationHtml = '<small><a class=\"ui-cookie-support-dismiss-link\" for=\"' + UI.props.activeNotification + '\" href=\"' + UI.props.messaging.moreInfoLink + '\"> ' + UI.props.messaging.moreInfoMessage + '</a></small>';\n            }\n\n            var $moreInfoLink = $('<span/>', {\n                'html': notificationHtml\n            });\n\n            var $btnWrap = $('<div/>', {\n                'class': 'message-flex-end'\n            });\n\n            var $moreInfoWrapper = $('<div/>', {\n                'class': 'more-info-wrapper'\n            });\n\n            $warningTitleHolder.append($warningTitle);\n            $btnWrap.append($dismissNotificationBtn);\n//4470 add new btn to container \n            $btnWrap.append($dismissNotificationBtnDecline);\n            $btnWrap.append($dismissNotificationBtnCustSet);\n//          \n\n            $warningMsgWrapper.append($warningTitleHolder, $moreInfoWrapper\n                              .append($warningMessageHolder\n                              .append($warningMessage, $moreInfoLink), $btnWrap));\n\n            if (!_title) {\n                \n                $warningTitleHolder.remove();\n            }\n            $cookieSupportNotificationWindow.prepend($warningMsgWrapper);\n\n            return (AE.props.$scrollContent.has('#' + UI.props.activeNotification).length == 0) ? UI._fn_launchNotification($dismissNotificationBtn, $cookieSupportNotificationWindow, hasCookieSupport) : false;\n        },\n\n        _hideCookieNotification: function (trigger, dialog) {\n\n            var $trigger = trigger;\n            var $notification = dialog;\n            $trigger.addClass('ui-warn--out').removeClass('ui-warn--in');\n\n            return $notification.slideUp('slow');\n        },\n\n        _fn_launchNotification: function (trigger, dialog, hasCookieSupport) {\n\n            if (!hasCookieSupport) {\n                AE.ga.gaArrayProcess([{\n                    GACATEGORY: 'cookieSupport',\n                    GAACTION: 'noCookieSupport',\n                    GALABEL: 'noCookieSupportMessage'\n                }]);\n            }\n\n            AE.props.$scrollContent.prepend(dialog.hide());\n\n            return dialog.slideDown('slow');\n        },\n\n        _checkLocalStorageAvailability: function () {\n            var _reqPolyfill;\n            try {\n                if (!window.localStorage || !window.sessionStorage) throw \"exception\";\n                localStorage.setItem('storage_test', 1);\n                localStorage.removeItem('storage_test');\n                _reqPolyfill = false;\n            } catch (e) {\n                _reqPolyfill = true;\n            }\n            return _reqPolyfill;\n        },\n\n        _localStoragePolyfill: function () {\n            /*HAD TO MOVE FUNCTION INTO AE.JS AS I'M CURRENTLY UNABLE TO OVERWRITE WINDOW.LOCALSTORAGE FROM THIS MODULE, WILL INVESTIGATE FURTHER*/\n            return AE._augmentPrivateBrowsingLocalStorage();\n        },\n        onBodyClick: function (event, target) {\n\n            var $target = $(target);\n            var shouldCloseNotification = $target.hasClass('ui-cookie-support-dismiss-link');\n            var $notification = $('#' + $target.attr('for'));\n            var isCloseBtn = $target.hasClass('ui-cookie-support-dismiss-button');\n            var $getCloseBtn = isCloseBtn ? $target : $notification.find('.ui-cookie-support-dismiss-button');\n\n\n//WEBAE-4470\n//var testcontent = AEdata.booking.quote.oLang.CANCELINS_MODAL;   \n//this is for local testing puposes for demo and placement \nvar ModalTextTest =\"<h4>Privacy Preference Center</h4><p>In order for websites to provide relevant information to its visitors, and cater their experience, websites may store and retrieve data from your web browser. This action is done in the form of cookies. Cookies are generally installed on your browser to be used by the same website at a later date to enhance your overall experience. Cookies may contain information about you, your device, your technical hardware, your preferences, and any other relevant information that will help in providing visitors with a more personalized visit. <br/><br/>The use of cookies is optional, and as Auto Europe takes privacy seriously, we provide you with an option not to use these during your visit. You can pick and choose what cookie types to accept and reject – however, by restricting some cookies, we may not be able to provide you with the full website experience, offer certain services and can even stop the website from working properly. Following is a more in-depth explanation of the cookies we use on our site.</p> <a href='/privacy#agb8'>[More Information]</a><p></p>\";\n// mocked up here  \n/*var accordion =\"<div class='AccContainer'> <div class='openShut'> <div class='plus-minus'></div><h4>Header 1 </h4> </div><div class='Acontent'> <div> this is content 1 </div></div></div><div class='AccContainer'> <div class='openShut'> <div class='plus-minus'></div><h4>Header 2 </h4> </div><div class='Acontent'> <div class='inline-block pos-l'> this is content 3 </div><div class='inline-block pos-r'> <label class='switch'> <input type='checkbox'> <span class='slider round'></span> </label> </div></div></div><div class='AccContainer'> <div class='openShut'> <div class='plus-minus'></div><h4>Header 3 </h4> </div><div class='Acontent'> <div class='inline-block pos-l'> this is content 3 </div><div class='inline-block pos-r'> <label class='switch'> <input type='checkbox'> <span class='slider round'></span> </label> </div></div></div><div class='AccContainer'> <div class='openShut'> <div class='plus-minus'></div><h4>Header 4 </h4> </div><div class='Acontent'> <div class='inline-block pos-l'> this is content 4 </div><div class='inline-block pos-r'> <label class='switch'> <input type='checkbox'> <span class='slider round'></span> </label> </div></div></div>\" ;\n\n*/\n\nvar accordion=\"<div class='AccContainer'><div class='openShut'><div class='pos-l'><div class='plus-minus'></div><h4>Functional cookies </h4></div><div class='pos-r allways_txt'>Always Active</div></div><div class='Acontent'><div>this is content 1 </div></div></div><div class='AccContainer'><div class='openShut'><div class='pos-l'><div class='plus-minus'></div><h4>Analytical cookies </h4></div><div class='pos-r w_switch'><label class='switch'> <input type='checkbox'> <span class='slider round'></span></label></div></div><div class='Acontent'><div>this is content 1 </div></div></div><div class='AccContainer'><div class='openShut'><div class='pos-l'><div class='plus-minus'></div><h4>Marketing cookies </h4></div><div class='pos-r w_switch'><label class='switch'> <input type='checkbox'> <span class='slider round'></span></label></div></div><div class='Acontent'><div>this is content 1 </div></div></div>\"\n//\n\n          //this is behaving wonky\n\n//var openFirst =false;\n            //$(\".Acontent\").hide();\n            /*if(openFirst){\n                 $(\".Acontent\").first().show();\n                $(\".plus-minus\").first().addClass(\"minus\");\n                        }*/\n        \n            $('.openShut').click(function(){\n               // $(this).children('.plus-minus').toggleClass('minus');\n                \n                if($(this).next().is(':visible')){\n                    $(this).next().hide();\n                    $(this).parent().removeClass('AccContainerActive');\n\n                }else{\n                    $(this).next().show();\n                    $(this).parent().addClass('AccContainerActive');\n                }\n            });\n\n//to do: see if all UI elements shown in description exist or I need to create them \n//does decline have any functionality \n//display these button in line with eachother not stacked \n   if($target.hasClass('custSetBtn')){\n  \n      AE.ui.dialog.launch(\"#save-quote\", { content:\"\" } );\n      AE.ui.dialog.addContent( ModalTextTest + accordion );\n     }\n//\n\n//// function for ok/accept btn-------\n            if (shouldCloseNotification) {\n//console.log(\"shouldCloseNotification\");\n                // WEBAE3-4907 -  Remove the setting of \"cookieNotificationShown\" & \"userEngagedNotification\" cookies\n                /*\n                if (!UI.props.userEngagedNotification) {\n                    UI.props.userEngagedNotification = true;\n                    AECookie.new({\n                        name: 'userEngagedNotification',\n                        value: 'true',\n                        encodeValue: 'true',\n                        daysToLive: 0,\n                        minutesToLive: UI.props.cookieExpires\n                    });\n                }\n                */\n\n                if (isCloseBtn) {\n                    event.preventDefault ? event.preventDefault() : (event.returnValue = false);\n                }\n\n                return UI._hideCookieNotification($getCloseBtn, $notification);\n            }///end function for ok/accept btn-----\n        }\n    };\n    return UI;\n\n\n})();\nfunction initMap() {\r\n //console.log('Here')\r\n   };\r\n\r\n;var AE = AE || {}; /* Add to Base object or create it if it doesn't exist. */\r\n\r\n/*\r\n*/\r\nAE.maps = AE.maps || (function(){\r\n\t/*\r\n\tDEPENDENCIES: AE, AE.ui\r\n\t*/\r\n\tvar APP = {\r\n\t\tinit:function() {\r\n\t\t\tAPP.props = {\r\n\t\t\t\t$mapAPILoaded\t\t: false,\t\t// is Map API currently loaded\r\n\t\t\t\t$dfd_api\t\t\t: $.Deferred(),\t// Deferred API script\r\n\t\t\t\t$dfd_markers\t\t: $.Deferred()\t// Deferred Markers with labels script\r\n\t\t\t};\r\n\r\n\t\t\t// Map pins image locations should be moved to a global folder\r\n\t\t\t// probably need to refresh look after it's all working.\r\n\t\t\tAPP.pin_image = {\r\n\t\t\t\tD: {//city\r\n\t\t\t\t\ticon: AE.props.muraThemePath+'/images/map/city_green.png',\r\n\t\t\t\t\tnone: AE.props.muraThemePath+'/images/map/city_red.png',\r\n\t\t\t\t\tpickup: AE.props.muraThemePath+'/images/map/city_blue.png',\r\n\t\t\t\t\tchosen: AE.props.muraThemePath+'/images/map/chosen.png'\r\n\t\t\t\t},\r\n\t\t\t\tO: {//other (given city icon)\r\n\t\t\t\t\ticon: AE.props.muraThemePath+'/images/map/city_green.png',\r\n\t\t\t\t\tnone: AE.props.muraThemePath+'/images/map/city_red.png',\r\n\t\t\t\t\tpickup: AE.props.muraThemePath+'/images/map/city_blue.png',\r\n\t\t\t\t\tchosen: AE.props.muraThemePath+'/images/map/chosen.png'\r\n\t\t\t\t},\r\n\t\t\t\tR: {//rail\r\n\t\t\t\t\ticon: AE.props.muraThemePath+'/images/map/rail_green.png',\r\n\t\t\t\t\tselected: AE.props.muraThemePath+'/images/map/rail_green.png',\r\n\t\t\t\t\tnone: AE.props.muraThemePath+'/images/map/rail_red.png',\r\n\t\t\t\t\tpickup: AE.props.muraThemePath+'/images/map/rail_blue.png',\r\n\t\t\t\t\tchosen: AE.props.muraThemePath+'/images/map/chosen.png'\r\n\t\t\t\t},\r\n\t\t\t\tA: {//air\r\n\t\t\t\t\ticon: AE.props.muraThemePath+'/images/map/air_green.png',\r\n\t\t\t\t\tnone: AE.props.muraThemePath+'/images/map/air_red.png',\r\n\t\t\t\t\tpickup: AE.props.muraThemePath+'/images/map/air_blue.png',\r\n\t\t\t\t\tchosen: AE.props.muraThemePath+'/images/map/chosen.png'\r\n\t\t\t\t},\r\n\t\t\t\tchosen: AE.props.muraThemePath+'/images/map/chosen.png'\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t/* SHARED & GENERAL MAP FUNCTIONS */\r\n\t/* ================================== */\r\n\r\n\t\t// FUNCTION: Prevent map from loading until ui slide down is complete\r\n\t\trunDrawMap : function($target, dfd_myDeferred) {\r\n\t\t\t// toggle has finished opening run map functions\r\n\t\t\tif ( $target.hasClass('open') ) {\r\n\t\t\t\tdfd_myDeferred.resolve();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// FUNCTION: Load Google Maps API and Marker label script\r\n\t\tloadGoogleMapsAPI : function() {\r\n\t\t\t// OPTIONAL API KEY\r\n\t\t\t// - if global variable has a key add it to API string call otherwise use free blank version\r\n\t\t\t// - also if a key is present it must be an allowed URL set in map admin account\r\n\t\t\tvar stringAPI = (AE.props.googleMapsAPIKey != '') ? '?key=' + AE.props.googleMapsAPIKey + '' : '';\r\n\t\t\t//stringAPI += '&v=3.57';//WEBAEW3-6668 opt out of new version til we can handle it\r\n\t\t\t// CALL GOOGLE MAPS API\r\n\t\t\t$.getScript(\"https://maps.google.com/maps/api/js\"+stringAPI+\"&callback=initMap\", function( data, textStatus, jqxhr ) {\r\n\t\t\t\tAPP.props.$dfd_api.resolve(); // resolve api function\r\n\t\t\t\t\r\n\t\t\t\t// AJAX call to load marker label script after the api is finished loading\r\n\t\t\t\tif (textStatus === 'success') {\r\n\t\t\t\t\t$.ajax({\r\n\t\t\t\t\t\ttype: \"GET\",\r\n\t\t\t\t\t\turl: ''+AE.props.muraThemePath+'/assets/markerwithlabel/markerwithlabel.min.js',\r\n\t\t\t\t\t\tcache: true,\r\n\t\t\t\t\t\tsuccess: function () {\r\n\t\t\t\t\t\t\tAPP.props.$mapAPILoaded = true; // set flag that API and Labels have been loaded\r\n\t\t\t\t\t\t\tAPP.props.$dfd_markers.resolve(); // resolve markers function\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\r\n\r\n\t/* DISPLAY OBJECT MAP FUNCTIONS */\r\n\t/* ================================== */\r\n\r\n\t\t// FUNCTION: Call Search Controller to load locations based on City and Country Code parameters\r\n\t\tloadDisplayObjectMap : function (cityName, cntryCode, container, suppName) {\r\n\t\t\tsuppName = suppName || '';\r\n\t\t\t// Call location data from New location build data\r\n\t\t\t$.ajax({\r\n\t\t\t\turl: '/plugins/ae3/lib/searchController.cfc',\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tmethod: 'getCityLocations',\r\n\t\t\t\t\tccc: cntryCode,\r\n\t\t\t\t\tccn: cityName,\r\n\t\t\t\t\tcsn: suppName\r\n\t\t\t\t},\r\n\t\t\t\tsuccess: function( data ) {\r\n\t\t\t\t\t// Search controller retured valid location data\r\n\t\t\t\t\t//if (!window.google && typeof !window.google === 'object' && typeof window.google.maps === 'object')\r\n\t\t\t\t\tif (!window.google || window.google !== 'object') {\r\n\t\t\t\t\t\tAPP.buildRichSnippetJSON(data, cityName, cntryCode);\t// Build Rich Snippets JSON file\r\n\r\n\t\t\t\t\t\tAPP.loadGoogleMapsAPI();\t// Call the function to load maps API\r\n\r\n\t\t\t\t\t\t// When both API and custom markers are done loading draw the map\r\n\t\t\t\t\t\t$.when( APP.props.$dfd_api, APP.props.$dfd_markers ).then(function() {\r\n\t\t\t\t\t\t\tAE.maps.drawLandingLocationMap( data, container, cityName, cntryCode );\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// This is for editing purposes when adjusting the map size and position\r\n\t\t\t\t\t\t// resizing the map does not work and only applies when editing display object\r\n\t\t\t\t\t\tAE.maps.drawLandingLocationMap( data, container, cityName, cntryCode );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t// FUNCTION: draw maps on landing pages, this is a display object include\r\n\t\tdrawLandingLocationMap : function (json, container, city, country) {\r\n\t\t\tif(typeof(muraInlineEditor) !== 'undefined'){\r\n\t\t\t\t$(container).append('Mura Admin Note: Map content will be provided by Google Maps API on live page.');\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tvar mapOptions = {\r\n\t\t\t\tmapTypeControl: false,\r\n\t\t\t\tstreetViewControl: false,\r\n\t\t\t\tscrollwheel: false,\r\n\t\t\t\tmapTypeId: google.maps.MapTypeId.ROADMAP\r\n\t\t\t};\r\n\t\t\tvar map = new google.maps.Map( $(container)[0], mapOptions);\r\n\t\t\tvar bounds = new google.maps.LatLngBounds();\r\n\t\t\tvar markers = [];\r\n\t\t\tvar infowindow = '';\r\n\t\t\tvar locationPoints = [];\r\n\r\n\t\t\t$.each(json, function(index, item) {\r\n\r\n\t\t\t\tvar thisLatLng = new google.maps.LatLng(item.latitude, item.longitude);\t// Add geo coordinates for each location\r\n\t\t\t\tvar pin = setMarkerType(item.hubtype_id);\r\n\t\t\t\tlocationPoints.push({ geo: {lat: item.latitude, lng: item.longitude}, item: item, marker: pin });\t// push coordinates to array\r\n\t\t\t\tbounds.extend(thisLatLng);\t// add marker to larger bounds object\r\n\t\t\t});\r\n\t\t\tmap.fitBounds(bounds);\t// set bounds to encompass all map markers\r\n\t\t\tdrop();\t// drop markers function\r\n\r\n\t\t\t/* Add function if change map object to be a size that is not a fixed width\r\n\t\t\t// Reset map pins to be contained by bounding box on resize\r\n\t\t\tAE.addResizeTask({\r\n\t\t\t\tfunc:function() {\r\n\t\t\t\t\tmap.fitBounds(bounds);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t*/\r\n\r\n\t\t\t// Set hubtype to correct marker image\r\n\t\t\tfunction setMarkerType(hub) {\r\n\t\t\t\tvar pin = 'D';\r\n\t\t\t\tswitch(hub){\r\n\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\tpin = 'A';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\tpin = 'R';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 3,4,5:\r\n\t\t\t\t\t\tpin = 'D';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\treturn pin\r\n\t\t\t}\r\n\r\n\t\t\tfunction drop() {\r\n\t\t\t\t// loop through each location from location array\r\n\t\t\t\tfor (var i = 0; i < locationPoints.length; i++) {\r\n\t\t\t\t\t// drop all markers in two sets\r\n\t\t\t\t\taddMarkerWithTimeout(locationPoints[i], (i % 2) ? 1000 : 2000);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Drop Marker based on time out\r\n\t\t\tfunction addMarkerWithTimeout(items, timeout) {\r\n\t\t\t\twindow.setTimeout(function() {\r\n\t\t\t\t\tvar marker = new google.maps.Marker({\r\n\t\t\t\t\t\ticon: APP.pin_image[items.marker].icon,\r\n\t\t\t\t\t\tposition: items.geo,\r\n\t\t\t\t\t\tmap: map,\r\n\t\t\t\t\t\tanimation: google.maps.Animation.BOUNCE,\r\n\t\t\t\t\t\toptimized: false\r\n\t\t\t\t\t});\r\n\t\t\t\t\tmarkers.push(marker);\r\n\r\n\t\t\t\t\t// Bounce once then stop animation\r\n\t\t\t\t\tsetTimeout(function(){ marker.setAnimation(null); }, 750);\r\n\r\n\t\t\t\t\tvar addressa = (items.item.locationlabela !== '') ? items.item.locationlabela+'<br/>' : '';\r\n\t\t\t\t\tvar addressb = (items.item.locationlabelb !== '') ? items.item.locationlabelb+'<br/>' : '';\r\n\t\t\t\t\tvar addressc = (items.item.locationlabelc !== '') ? items.item.locationlabelc+'<br/>' : '';\r\n\r\n\t\t\t\t\t// LISENTER EVENT: Marker Click\r\n\t\t\t\t\tgoogle.maps.event.addListener(marker, 'click', function() {\r\n\t\t\t\t\t\tif (infowindow) {\r\n\t\t\t\t\t\t\tinfowindow.close(); // Close all infowindows before opening a new one\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// Create infowindow for current marker\r\n\t\t\t\t\t\tinfowindow = new google.maps.InfoWindow();\r\n\t\t\t\t\t\tvar infowindow_markup =\r\n\t\t\t\t\t\t\t'<h6 class=\"push-half--bottom\">'+addressa+addressb+addressc+city+', '+country+'</h6>'+\r\n\t\t\t\t\t\t\t'<div><b>lat: </b>'+items.geo.lat+'&deg;, &nbsp;&nbsp;<b>long: </b>'+items.geo.lng+'&deg;</div>';\r\n\r\n\t\t\t\t\t\tinfowindow.setContent(infowindow_markup);\r\n\t\t\t\t\t\tinfowindow.open(map, marker);\r\n\r\n\t\t\t\t\t\t// sets marker and brings it to front\r\n\t\t\t\t\t\tthis.setZIndex(google.maps.Marker.MAX_ZINDEX + 1);\r\n\t\t\t\t\t});\r\n\t\t\t\t}, timeout);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// FUNCTION: Build Rich Snippet markup JSON file so all map markers show up as a place\r\n\t\tbuildRichSnippetJSON : function (json, city, country) {\r\n\t\t\tvar jsonLD = [];\t// create object\r\n\t\t\t// loop through each item build up in rich snippet format\r\n\t\t\t$.each(json, function(index, item) {\r\n\t\t\t\t// if third address is not blank add it to the address string\r\n\t\t\t\tvar address = (item.locationlabelc !== '') ? item.locationlabelb+' '+item.locationlabelc : item.locationlabelb;\r\n\t\t\t\t// build JSON item with specific rich snippet markup\r\n\t\t\t\tvar json_item = {\r\n\t\t\t\t\t\"@context\" : \"http://schema.org\",\r\n\t\t\t\t\t\"@type\"\t: \"Place\",\r\n\t\t\t\t\t\"name\" : item.locationlabelb,\r\n\t\t\t\t\t\"address\":\r\n\t\t\t\t\t\t[{\r\n\t\t\t\t\t\t\t\"@type\" : \"PostalAddress\",\r\n\t\t\t\t\t\t\t\"addressLocality\" : city,\r\n\t\t\t\t\t\t\t\"addressRegion\" : country,\r\n\t\t\t\t\t\t\t\"streetAddress\" : address,\r\n\t\t\t\t\t\t}],\r\n\t\t\t\t\t\"geo\" :\r\n\t\t\t\t\t\t[{\r\n\t\t\t\t\t\t\t\"@type\" :\"GeoCoordinates\",\r\n\t\t\t\t\t\t\t\"latitude\" : item.latitude,\r\n\t\t\t\t\t\t\t\"longitude\" : item.longitude\r\n\t\t\t\t\t\t}]\r\n\t\t\t\t};\r\n\t\t\t\tjsonLD.push(json_item); // push each item to one array\r\n\t\t\t});\r\n\t\t\t// append json+ld file to head of document so rich snippets are loaded\r\n\t\t\t// $('head').append('<script type=\"application/ld+json\">'+JSON.stringify(jsonLD)+'<\\/script>');\r\n\r\n\t\t\t// WEBAE3-1427\r\n\t\t\t// Now appending to body so that Google's Structured Data Tool may pick it up\r\n\t\t\t// Vanilla JS seems to fail here, jQuery method is working?\r\n\r\n\t\t\tvar code = JSON.stringify(jsonLD);\r\n\t\t\tvar script = document.createElement('script');\r\n\t\t\tscript.setAttribute('type', 'application/ld+json');\r\n\r\n\t\t\tscript.appendChild(document.createTextNode(code));\r\n\t\t\tdocument.body.appendChild(script);\r\n\r\n\t\t\t// $('body').append('<script type=\"application/ld+json\">'+JSON.stringify(jsonLD)+'<\\/script>');\r\n\t\t}\r\n\t}\r\n\treturn APP;\r\n})();\n;var AE = AE || {}; /* Add to Base object or create it if it doesn't exist. */\n/*\nThis object will be the returned result of a self-invoked function. This allows us to expose methods \nfor use by other modules while protecting some variables in a closure. If the object is already \ndefined then it's not altered. This prevents us from running the entire function each time one of its \ninternal methods are called.\n*/\nAE.affiliate = AE.affiliate || (function(){\n\t/*\n\tDEPENDENCIES: AE.ui, AE.ui.dialog\n\t*/\n\tvar APP = {\n\t\tinit:function() {\n\t\t\tAPP.props = {\n\t\t\t\t$checkBox\t\t: \t\t$('#afftools__signup #terms'),\n\t\t\t\t$termsLink\t\t: \t\t$('#afftools__signup label[for=\"terms\"] a'),\n\t\t\t\ttermsAccepted\t:\t\tfalse\n\t\t\t};\n\t\t\t\n\t\t\t// Affiliate navigation tabs\n\t\t\tAE.ui.contentGroup( $('.aff__nav-link'), $('.aff__content'), {visual:true, willSlide:false} );\n\n\t\t\tAE.ui.addBodyClickTask({func: APP.onBodyClick});\n\t\t\tAE.ui.addBodyChangeTask({func:function(event){APP.onBodyChange(event);}});\n\n\t\t\t// Affiliate Terms and Conditions Checkbox\n\t\t\tAPP.props.$checkBox.on('click',function(event){\n\t\t\t\tif(!APP.props.termsAccepted) {\n\t\t\t\t\tAPP.props.$termsLink.click();\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\t// Affiliate Terms and Conditions Terms Link\n\t\t\tAPP.props.$termsLink.on('click',function(event){\n\t\t\t\tAPP.affTerms(event);\n\t\t\t});\n\n\t\t\tif(AEdata.affiliate && AEdata.affiliate.props){\n\t\t\t\tif(AEdata.affiliate.selectedTab && AEdata.affiliate.selectedTab !== ''){\n\t\t\t\t\t$('.aff__nav-link[data-content=\"'+AEdata.affiliate.selectedTab+'\"]').click();\n\t\t\t\t} else {\n\t\t\t\t\t// Travel Partner accounts default to account view\n\t\t\t\t\tif(AEdata.affiliate.props.isTP && AEdata.affiliate.props.isTP == true) {\n\t\t\t\t\t\t$('#acct').removeClass('visuallyhidden');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$('#settings').removeClass('visuallyhidden');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(AEdata.affiliate.props.loadColors){\n\t\t\t\t\t// Color Changer Utility Docs: https://github.com/nathanielwiley/conpigurator\n\t\t\t\t\t/*new Conpigurator('color1',true).addTarget('color1','backgroundColor').update();\n\t\t\t\t\tnew Conpigurator('color2',true).addTarget('color2','backgroundColor').update();\n\t\t\t\t\tnew Conpigurator('color3',true).addTarget('color3','backgroundColor').update();\n\t\t\t\t\tnew Conpigurator('color4',true).addTarget('color4','backgroundColor').update();*/\n\t\t\t\t\t// Color Changer Utility Docs: https://bgrins.github.io/spectrum/\n\t\t\t\t\t$('input.input--spectrum').spectrum({\n\t\t\t\t\t\tpreferredFormat:'hex',\n\t\t\t\t\t\tshowInput:true,\n\t\t\t\t\t\tshowButtons:true,\n\t\t\t\t\t\tchooseText:AEdata.affiliate.oLang.colors.choose,\n\t\t\t\t\t\tcancelText:AEdata.affiliate.oLang.colors.cancel\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\n\t\taffTerms:function(event){\t\n\t\t\tvar haveTerms = (APP.props.$termsLink.data('aff-terms') && APP.props.$termsLink.data('aff-terms').length) ? true : false;\n\t\t\tvar showBtns = true;\n\n\t\t\t// Prevent link for bubbling and also register as a checkbox click\n\t\t\tevent.preventDefault();\n\t\t\t\n\t\t\t// Don't show accept and decline if terms have been checked\n\t\t\tif(APP.props.termsAccepted) { showBtns = false;\t}\n\t\t\t\n\t\t\tif (haveTerms) {\n\t\t\t\tvar termsData = JSON.parse(decodeURIComponent(APP.props.$termsLink.data('aff-terms')));\n\t\t\t\tvar buttonOptions = {};\n\t\t\t\t\n\t\t\t\t// If terms checkbox is not checked show accept and decline buttons\n\t\t\t\tif(showBtns) {\n\t\t\t\t\tvar oButtons = {};// Preparing the Object ahead of the dialog operation allows for Dynamic Button name/text\n\t\t\t\t\toButtons[termsData.ACCEPT] = function() {// Accept Button\n\t\t\t\t\t\tAPP.props.$checkBox.prop('checked',true);\n\t\t\t\t\t\tAPP.props.termsAccepted = true;\n\t\t\t\t\t\tAPP.props.$checkBox.parent().removeClass('ui-state-invalid');\n\t\t\t\t\t\tAE.ui.dialog.close();\n\t\t\t\t\t}\n\t\t\t\t\toButtons[termsData.DECLINE] = function() {// Decline Button\n\t\t\t\t\t\tAPP.props.$checkBox.prop('checked',false);\n\t\t\t\t\t\tAPP.props.$checkBox.parent().addClass('ui-state-invalid');\n\t\t\t\t\t\tAE.ui.dialog.close();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// Accept and Decline Terms\n\t\t\t\t\tAE.ui.dialog.launch({\n\t\t\t\t\t\tid:'aff-terms',\n\t\t\t\t\t\tdialogClass: 'top-dialog',\n\t\t\t\t\t\ttitle: termsData.HEAD,\n\t\t\t\t\t\ttype:'standard',\n\t\t\t\t\t\tcontent: termsData.BODY,\n\t\t\t\t\t\tbuttons: oButtons,\n\t\t\t\t\t\tbuttonOpts: {\n\t\t\t\t\t\t\tsetClass: 'align-center',\n\t\t\t\t\t\t\tlastButtonClass: 'btn--base',\n\t\t\t\t\t\t\tfirstButtonClass: 'btn--primary',\n\t\t\t\t\t\t\texclusiveClose: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\twidth: ($(window).width() > 900) ? 850 : '80%'\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// No Buttons as terms already accepted\n\t\t\t\t\tAE.ui.dialog.launch({\n\t\t\t\t\t\tid:'aff-terms',\n\t\t\t\t\t\tdialogClass: 'top-dialog',\n\t\t\t\t\t\ttitle: termsData.HEAD,\n\t\t\t\t\t\ttype:'standard',\n\t\t\t\t\t\tcontent: termsData.BODY,\n\t\t\t\t\t\twidth: ($(window).width() > 900) ? 850 : '80%'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tonBodyChange: function(event,$target){\n\t\t\tif(event.target.id === 'affLogo' && event.target.type === 'file'){\n\t\t\t\tif(event.target.value !== ''){\n\t\t\t\t\t$('button.trg--affSiteLogo').attr('type','submit')\n\t\t\t\t\t\t.addClass('btn--primary btn--affOp')\n\t\t\t\t\t\t.removeClass('btn--cancel btn--disabled');\n\t\t\t\t} else {\n\t\t\t\t\t$('button.trg--affSiteLogo').attr('type','button')\n\t\t\t\t\t\t.removeClass('btn--primary btn--affOp')\n\t\t\t\t\t\t.addClass('btn--cancel btn--disabled');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonBodyClick: function(event,$target){\n\t\t\tif($target.hasClass('btn--affOp')){\n\t\t\t\tAE.ui.disableClicks();\n\t\t\t\tAE.forms.addSpinGear( $target );\n\t\t\t\tif($target.hasClass('trg--affSiteColors')){\n\t\t\t\t\t$('input.sp-input').change();\n\t\t\t\t}\n\t\t\t\tsetTimeout(function(){\n\t\t\t\t\tif($('.ui-state-invalid').length > 0){\n\t\t\t\t\t\tAE.ui.enableClicks();\n\t\t\t\t\t\tAE.forms.removeSpinGear( $target );\n\t\t\t\t\t\t$('.ui-state-invalid').first().focus();\n\t\t\t\t\t}\n\t\t\t\t},250);\n\t\t\t}\n\t\t}\n\t}\n\treturn APP;\n})();\n;var AE = AE || {}; /* Add to Base object or create it if it doesn't exist. */\n\nAE.feeds = AE.feeds || (function() {\n\t/*\n\tDEPENDENCIES: AE\n\t*/\n\tvar APP = {\n\t\tinit:function() {\n\t\t\tAPP.props = {\n\t\t\t\t$keywords: $('.feedkeywordSearch:visible'),\n\t\t\t\t$bttnfeedSearch: $('.btnFeedSearch:visible'),\n\t\t\t\tstorageAvailable: true\n\t\t\t},\n\n\t\t\tAE.ui.addBodyClickTask({\n\t\t\t\tfunc: APP.onBodyClick\n\t\t\t});\n\n\t\t\t\t\t\ttry { sessionStorage; }\n\t\t\tcatch (err) { APP.props.storageAvailable = false; }\n\n\t\t\tif (!$('div#blog_posts').length) {\n\t\t\t\tif (APP.props.storageAvailable) {\n\t\t\t\t\tsessionStorage.removeItem(\"keywords\");\n\t\t\t\t\tsessionStorage.removeItem(\"isSearch\");\n\t\t\t\t\tsessionStorage.removeItem(\"feedListing\");\n\t\t\t\t\tsessionStorage.removeItem(\"isFromPost\");\n\t\t\t\t\tsessionStorage.removeItem(\"pageNo\");\n\t\t\t\t\tsessionStorage.removeItem(\"remoteID\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (APP.props.storageAvailable) {\n\t\t\t\t\tif (!sessionStorage.getItem(\"pageNo\")) { sessionStorage.setItem(\"pageNo\", '1'); }\n\n\t\t\t\t\tif (!sessionStorage.getItem(\"keywords\")) {\n\t\t\t\t\t\tsessionStorage.setItem(\"isSearch\", false);\n\t\t\t\t\t\tsessionStorage.setItem(\"keywords\", '');\n\t\t\t\t\t}\n\n\t\t\t\t\tif (APP.props.$bttnfeedSearch.hasClass('blog_post')) {\n\t\t\t\t\t\tsessionStorage.setItem(\"isFromPost\",false);\n\t\t\t\t\t\tsessionStorage.setItem(\"feedListing\",false);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsessionStorage.setItem(\"feedListing\",true);\n\t\t\t\t\t\tsessionStorage.setItem(\"remoteID\",$(\"#feedRemoteID\").val());\n\t\t\t\t\t}\n\n\t\t\t\t\tif (sessionStorage.getItem(\"keywords\")) {\n\t\t\t\t\t\t$(\"input#keywords\").val(decodeURI(sessionStorage.getItem(\"keywords\")));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t$(\"#feedResultsBykeyword\").html('');\n\t\t\t\t$(\"#feedResults\").addClass('visuallyhidden');\n\t\t\t\t$(\"#feedResultsBykeyword\").addClass('visuallyhidden');\n\n\t\t\t\tif (APP.props.storageAvailable) {\n\t\t\t\t\tif (sessionStorage.getItem(\"feedListing\") && sessionStorage.getItem(\"feedListing\")=='true' && sessionStorage.getItem(\"isSearch\") == 'true') {\n\t\t\t\t\t\tAPP.loadCustomFeed(false,APP.props.$bttnfeedSearch);\n\t\t\t\t\t\t$(\"div#feedResults\").addClass('visuallyhidden');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(\"div#feedResults\").removeClass('visuallyhidden');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t$('#keywords,.btnFeedSearch').keydown(function(e) {\n\t\t\t\t\tvar key = e.which;\n\t\t\t\t\tif (key == 13) {\n\t\t\t\t\t\tif (e.which == 13) {\n\t\t\t\t\t\t\tjQuery(this).blur();\n\t\t\t\t\t\t\tjQuery('.btnFeedSearch').focus().click();\n\t\t\t\t\t\t\treturn false;\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\tonBodyClick: function (event, $target) {\n\t\t\tif (event.which !== 13) {\n\t\t\t\tif ($target.attr('id') == 'category_select' && $target.val() != '') {\n\t\t\t\t\tif (APP.props.storageAvailable) {\n\t\t\t\t\t\tsessionStorage.removeItem(\"keywords\");\n\t\t\t\t\t\tsessionStorage.removeItem(\"isSearch\");\n\t\t\t\t\t\tsessionStorage.setItem(\"feedListing\", false);\n\t\t\t\t\t\tsessionStorage.setItem(\"isFromPost\", false);\n\t\t\t\t\t\tsessionStorage.setItem(\"pageNo\", 1);\n\t\t\t\t\t}\n\t\t\t\t\tvar pathname = window.location.pathname;\n\t\t\t\t\tif\t(pathname != $target.val())\t{\n\t\t\t\t\t\tAPP.changeCategories($target.val());\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (APP.props.storageAvailable) {\n\t\t\t\t\tif ($target.parent().hasClass('readmore')) {\n\t\t\t\t\t\tsessionStorage.setItem(\"feedListing\", false);\n\t\t\t\t\t\tsessionStorage.setItem(\"keywords\", '');\n\t\t\t\t\t\tsessionStorage.setItem(\"isSearch\", false);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsessionStorage.setItem(\"feedListing\", true);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ($target.hasClass(\"btnFeedSearch\")) {\n\t\t\t\t\tevent.preventDefault() ;\n\t\t\t\t\tif (APP.props.storageAvailable) { sessionStorage.setItem(\"feedListing\",true); }\n\t\t\t\t\tvar currentSearch = sessionStorage.getItem(\"keywords\");\n\n\t\t\t\t\tvar keywords = encodeURIComponent($(\".feedkeywordSearch:visible\").val());\n\t\t\t\t\tvar baseURL  = $($target).data(\"url\");\n\n\t\t\t\t\tif (APP.props.storageAvailable) {\n\t\t\t\t\t\tif ($($target).hasClass(\"blog_post\")) {\n\t\t\t\t\t\t\tsessionStorage.setItem(\"isFromPost\", true);\n\t\t\t\t\t\t\tAE.forms.addSpinGear($target);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsessionStorage.setItem(\"isFromPost\", false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (keywords.length != 0) {\n\t\t\t\t\t\tif (APP.props.storageAvailable) {\n\t\t\t\t\t\t\tsessionStorage.setItem(\"keywords\", keywords);\n\t\t\t\t\t\t\tsessionStorage.setItem(\"isSearch\", true);\n\t\t\t\t\t\t\tif (sessionStorage.getItem(\"keywords\") != currentSearch) {\n\t\t\t\t\t\t\t\tsessionStorage.setItem(\"pageNo\", 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (sessionStorage.getItem(\"isFromPost\") == 'true') {\n\t\t\t\t\t\t\t\twindow.location.href = baseURL;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tAPP.loadCustomFeed(false,$target);\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\t$(\"#currentSearch\").val('');\n\t\t\t\t\t\t$(\"#currentPage\").val('');\n\t\t\t\t\t\tif (APP.props.storageAvailable) {\n\t\t\t\t\t\t\tsessionStorage.setItem(\"keywords\", '');\n\t\t\t\t\t\t\tsessionStorage.setItem(\"pageNo\", '1');\n\t\t\t\t\t\t\tsessionStorage.setItem(\"isSearch\", false);\n\t\t\t\t\t\t\tif (sessionStorage.getItem(\"isFromPost\") == 'true') {\n\t\t\t\t\t\t\t\twindow.location.href = baseURL;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$(\"#feedResultsBykeyword\").addClass('visuallyhidden');\n\t\t\t\t\t\t\t\t$(\"#feedResults\").removeClass('visuallyhidden');\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\tif ($target.is(\"#blog-page-number\")) {\n\t\t\t\t\tevent.preventDefault() ;\n\t\t\t\t\tif (APP.props.storageAvailable) { sessionStorage.setItem(\"pageNo\", $(event.target).attr('data-page')); }\n\t\t\t\t\tvar str = $target.attr(\"href\");\n\t\t\t\t\tAPP.loadCustomFeed(true,'');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tloadCustomFeed:function(scrollTop,$target) {\n\t\t\tvar cfc = '/plugins/ae3/lib/customFeeds.cfc?method=searchFeed';\n\t\t\tvar remoteID = (APP.props.storageAvailable) ? sessionStorage.getItem('remoteID') : \"\";\n\t\t\tvar keywords = (APP.props.storageAvailable) ? sessionStorage.getItem('keywords') : \"\";\n\t\t\tvar pageNo = (APP.props.storageAvailable) ? sessionStorage.getItem('pageNo') : \"\";\n\n\t\t\t/*WEBAE3-3504: hide so that the searching blog shows up in content_blog.cfm $(\"#search_wait_mess\").html('');\t*/\n\t\t\t$(\"div#search_wait_mess\").removeClass('visuallyhidden');\n\n\t\t\tif ($target && $target.hasClass(\"btnFeedSearch\")) {\n\t\t\t\tAE.forms.addSpinGear($target);\n\t\t\t\t/*WEBAE3-3504: set empty $(\"#feedResultsBykeyword\").html('<h4>Searching Blogs.....</h4>');*/\n\t\t\t\t$(\"#feedResultsBykeyword\").html('');\n\t\t\t}\n\t\t\t\n\t\t\t$.ajax({\n\t\t\t\ttype: \"POST\",\n\t\t\t\turl: cfc,\n\t\t\t\tdataType: 'json',\n\t\t\t\tdata: { remoteID:remoteID, keywords:keywords, pageNo:pageNo },\n\t\t\t\tsuccess: function(result) {\n\t\t\t\t\t$(\"div#search_wait_mess\").addClass('visuallyhidden');\n\t\t\t\t\t$(\"#feedResultsBykeyword\").html('');\n\t\t\t\t\t$(\"#feedResultsBykeyword\").html(result);\n\t\t\t\t\tAPP.showHide('feedResultsBykeyword','feedResults');\n\t\t\t\t\tAE.forms.removeSpinGear($target);\n\t\t\t\t\tif (scrollTop) {\n\t\t\t\t\t\t$('#blog-scroll')[0].scrollIntoView({behavior:'smooth',block: 'start'});\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: function (xhr, ajaxOptions, thrownError) {\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tshowHide:function(show,hide) {\n\t\t\t$(\"#\" + hide).addClass('visuallyhidden');\n\t\t\t$(\"#\" + show).removeClass('visuallyhidden');\n\t\t},\n\t\tgetUrlParameter:function(name,str) {\n\t\t\tname = name.replace(/[\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\n\t\t\tvar regex = new RegExp('[\\\\?&]' + name + '=([^&#]*)');\n\t\t\tvar results = regex.exec(str);\n\n\t\t\treturn (results === null) ? '' : decodeURIComponent(results[1].replace(/\\+/g, ' '));\n\t\t},\n\t\tchangeCategories:function(url) {\n\t\t\tdocument.location.href = url;\n\t\t}\n\t};\n\n\treturn APP;\n})();\n\n/*\nAE.init.general: Resolves the deferred object for the general list of modules.\n*/\nobjDFD.general.resolve();"],"names":["AE","APP","resizeTasks","scrollTasks","transitionTasks","displayObjects","components","init","props","$bodyElement","$","$scrollContainer","$scrollContent","$stickyWrapper","$siteContainer","$mainFooter","$mainFooterContent","$mainNav","$masthead","$mainNavLink","$mainNavFull","add","isLegacy","hasClass","isIE","googleMapsAPIKey","isAUNZ","oSite","_","isObject","extend","chaosSystem","buildURLObject","transEnd","t","el","document","createElement","transitions","transition","OTransition","MozTransition","WebkitTransition","undefined","style","windowSize","getSiteViewType","aeDataLayer","push","criteoSiteType","getCriteoTagSiteViewType","width","privateBrowsing","nav","legacy","grief","utils","ui","ga","AECookie","read","cd","window","addEventListener","checkAEcd","removeEventListener","forms","maps","account","modal","mura","checkMura","newsletter","feeds","booking","checkWlIframeResizer","wlIframePagesNotToScrollToTheTop","indexOf","path_info","parentIFrame","getPageInfo","parentPageInfo","distanceFromParentTopToIframe","offsetTop","amountToScrollParentWindow","scrollTo","setTimeout","removeAttr","removeClass","find","remove","css","attr","length","matrix","search","debounced","debounce","manageResize","debounceScroll","on","manageScroll","initTasks","func","siteSize","palmTransition","args","addResizeTask","dfd_ready","resolve","postAutoForm","_augmentPrivateBrowsingLocalStorage","Storage","type","createCookie","name","value","days","date","expires","Date","setTime","getTime","toGMTString","cookie","readCookie","c","nameEQ","ca","split","i","charAt","substring","setData","data","encodeURIComponent","JSON","stringify","getSessionName","parse","decodeURIComponent","clear","this","getItem","key","k","ctr","removeItem","setItem","localStorage","sessionStorage","__proto__","task","addScrollTask","addTransitionTask","unshift","footerHeight","newWidth","outerWidth","outerHeight","height","apply","heightAdjust","eleHeight","arguments","each","toPalm","sizes","currentSize","sizeType","url","host","location","hostname","path","pathname","protcol","protocol","query","href","aPairs","aKeyVal","trim","show","getElementById","$resetInput","$resetBttn","$isInCheckout","$isInMemberAccount","$accountLoginForm","$isInLogin","$isLoggedIn","jsloginStatus","$memberDefaultSection","$ObjMember","$ObjAff","e","which","preventDefault","click","let","countryStates","load","selectedName","val","includes","hide","change","chosenCountry","isValid","parent","isInValid","ele","$formId","parents","$fld","clearServerError","$match","$checkOther","initCustomMatchVerification","removeGuardianError","checkPasswordLegacy","checkPassword","$error_ele","getErrorEle","html","loadAccountInformation","getPayOptions","isString","navigateMemberPageLocalStorage","addBodyClickTask","onBodyClick","event","$target","memberEmail","thisForm","frm_selector","$forms","dialog","launch","selector","dialogClass","titleBar","is","replace","closest","setHTML","hideEle","showEle","target","applyGuardian","addSpinGear","submit","removeSpinGear","$thisForm","id","sendResetAff","submitAndCheckresetPasswordAff","scrollIntoView","behavior","block","err","logOutMember","prop","checkAccountFormsPreSubmit","submitMemberAccountCreateForm","eleSaveCard","checkMemberExistsByEmail","handleCreateAccountFormCheckout","callback","loadAccountUpdateForm","showHide","deleteWarning","cookieValue","row","startsWith","existing","boxexisting","reload","submitMemberUpdate","sendReset","submitAndCheckresetPassword","toggleAddCard","getAddCardWidget","deleteCCWarning","dataset","cardid","datepicker","addClass","showDobClear","hideAddCardUI","empty","$el","loadAccountReservations","navigateMemberPage","section","$sectionToOpen","$sectionToScrollTo","trigger","duplicateAccountWarning","msg","oButtons","AEdata","duplicateModal","btn_reset","close","btn_login","content","docFrag","createDocumentFragment","append","buttons","applyUI","buttonOpts","setClass","lastButtonClass","firstButtonClass","duplicateAccountWarningUpdate","$msg","duplicateModalUpdate","btn_cancel","cardId","oStoredPaymentLang","button_delete","deletePaymentOption","button_cancel","cardDetails","findWhere","CARDS","CARDID","modalCardSummary","cardTypeDisplay","oCClogos","CARDTYPE","toLowerCase","cardLast4","LAST4","cardExp","EXP","txt_card_summary","confirm_delete_card_header","confirm_delete_card_body","$Target","deleteModal","btn_delete","$suid","deleteSFRecord","delete_warn_head","delete_warn","addInvalidClass","$ele","$parent","addValidClass","removeInvalidClass","$thisEle","querySelector","parentNode","removeValidClass","thisEle","removeValidClassByClass","eleClass","showGridDiv","showGridDivByClass","getWhichReset","hideGridDiv","hideGridDivByClass","$eleClass","SetErrorText","$str","innerHTML","scrollTop","cfc","ajax","dataType","success","result","hideShow","error","xhr","ajaxOptions","thrownError","$checkEmail","$currentemail","getElementsByClassName","$errorFirst","checkMemberExists","$elemID","submitAndCheckMemberAccountForm","submitAffiliateForm","isEmpty","markup","arrstates","states","applyJQUI","selectmenu","getUrlParameter","sParam","sParameterName","sURLVariables","index","resetResetStatus","tokenExpired","isReset","$hasBlanks","$form","$messDiv","$frmInstructions","$resetFormDiv","$atv2","checkBlank","$formVals","serialize","post","RESULT","MESS","$isMobile","$eleLookup","$resetFld","checkIfMobile","$email","member_email","INVALID","MESSAGE","checkEmail","$emailFld","suid","$ObjpwdEle","validatePwd","jQuery","$error_item","validated","$errorGuardian","getGuardianErrorEle","$errorEle_guardian","$messfield","$mess","validatePwdLegacy","$fldEle","$errorMessageEle","verifyMatch","formId","matchEle","errorMessDspEle","$data","$matchEle","$errorMessDspEle","$current_mess","$thisFld","$matchField","$noCase","$strDspMess","$isValid","$isMatch","toUpperCase","$pwdVer","$hasBlank","$isValid_pwd","$pwdMatch","scrollToErrors","$errorflds","querySelectorAll","$position","position","top","$thisposition","$isValidPwd","$errorEleNotFound","$postForm","$elesuccessMsg","$elepwdChanged","PWD_CHANGED","AFF_FOUND","enableClicks","$fieldToCheck","$cfc","$isNav","$strSingle","$hasErrors","$currEle","$currEleVal","$currEle_curr_val","$do_nothing","cache","len","$password_changed","strSingle","addUpdateSalesforce","formVals","handleSalesforceLogin","fieldToCheck","$formAction","$ele_guardian","formvals","formvalsDes","deparam","member_emaillist","str","isMobile","test","navigator","userAgent","substr","$eleGuardian","$clear_ele","$flds","$isVisible","classList","contains","$error_ele_guardian","$errorMess1","getAttribute","$errorMess2","$errorMess","after","parentElement","$eleState","isTwoCol","pwd","pwd_length","pwd_number","pwd_special","pwd_upper","pwd_lower","match","$name","remoteId","myRemoteId","showCurrentCards","ccWidgetUrl","showAddCard","SUCCESS","URL","showAddCardWidgetFail","showAddCardUI","text","hideMyCCLoader","widgetUrl","src","payment_added_failed","savePaymentMsg","savePaymentMsgDiv","newCardBlock","newCardId","isDuplicateCard","payment_method_exists","payment_added_success","savePaymentMsgClass","forEach","item","cardType","carLabelClass","cardLogoKey","cardSummary","displayHTML","no_saved_payments","paymentId","lookupPage","hasOwnProperty","stMemberVoucherInfo","renderAccountReservations","stMemberVoucherLang","LOOKUP_URL","voucherError","objMemberVoucherInfo","$dfAccountReservations","vouchers","isArray","current","past","vouchKey","theseVouchers","$thisGrid","$thisGridItem","classKey","langKey","$thisTable","HEADER_RESERVATIONS_CONTENT","$labelRow","PUDATE_LABEL","VOUCHER_LABEL","PULOC_LABEL","STATUS_LABEL","thisVouch","$thisRow","$linkCell","DATE","VOUCHNUM","PICKUP","STATUSDISPLAY","STATUS","VIEW_LINK","renderAccountReservationLookupError","VOUCHER_LOOKUP_ERROR","pairs","map","slice","keyValuePair","$modalLink","$devheight","$devWidth","strUrl","openPageModal","currFontSize","mheight","mwidth","resizable","autoOpen","open","bind","initMap","customerService","$customerServiceForm","$serviceFormType","noEBSites","allowExcessBreakdown","siteList","formOnVoucher","hasAltERFields","commentsMaxChars","characterCounter","customerservice","formAction","showGenericUploadFields","formFineUploaderInstance","showOtherUploadFields","pageText_chooseFile","pageText_removeFile","pageText_dropFile","jumpToClaimForm","mouseenter","siblings","mouseleave","selLoad","setInquiryType","selChange","changeCity","ererror","resetFileUploadInput","prev","siteCode","toggleRESubsection","st","offset","fileUploadInput","formfield","next","beatrate","setDOCode","thispucode","parseInt","ch","selType","required","inquiryTypeOptionSpecific","subsection","slideDown","slideUp","menuType","qq","FineUploader","multiple","element","template","request","endpoint","retry","enableAuto","thumbnails","placeholders","waitingPath","fineUploaderFolder","notAvailablePath","validation","itemLimit","sizeLimit","maxSingleFileSize","allowedExtensions","allowedFileExtensions","messages","typeError","errorMessageFileType","sizeError","errorMessageFileSize","callbacks","onUpload","onComplete","responseJSON","server_filename","$autoForms","$validateForm","$moreInfoBtn","$ageMin","$ageMax","$ageInfoBtn","$ageInfoText","$modalCloseBtn","$groupCheckboxes","$groupCheckinputs","$checkboxes","$paymentRequire","$debitRequire","$payOptional","$formLabels","checkoutPassedAjax","loginInputValid","addBodyChangeTask","onBodyChange","blur","jsonToCheck","pcode","done","isValidTBIPromo","fail","$targetElement","children","pos","my","at","of","checkout","rq","theForm","guardian","validateCheckbox","$spinGear","addPattern","alnum","alnumsp","numsp","alnumspdot","alnumspecial","alphasp","anything","anythingcheckout","email","hexcolor","lead0num","notblank","notblankcheckout","wphone","aunzphone","ae_affiliatepassword","ae_currency","ae_memberage","ae_membername","ae_memberpassword","ae_numericdate","ae_postalcode","ae_voucher","before","addGroup","$groups","carcategory","$inputs","checkoutSubmitBtn","billingrequired","setBillingInputRequiredStatus","validateMatch","noCase","validationHandler","validateSelect","selectValid","addInput","state","checkedCount","count","validateFile","validateCheckout","disableSubmit","$dfd","Deferred","clicked","notclicked","tbiPromo","values","cardnumber","device","first","focus","validateCreditCard","validateAccountLogin","method","password","$oStored","tmpAge","AGE","handleLoginAge","showSubscribe","step","searchAgeCheckbox","searchAge","quote","oQuote","oRules","applyMemberDU","autocomplete","setFromQuote","loggedInAt","formSubmit","useWEBAE3_4453","CHANGEPASSWORD","handleLoginChangePassword","UID","console","log","failure","disableClicks","$button","nCheck","nDigit","bEven","n","cDigit","stateMenus","handleVoucherLookup","$vEmailDateDiv","$vInputToggleIcon","$vNumDiv","emailClean","inputID","cleanEmail","atPos","join","cleanWhitespace","targetID","input","quoteSwap","clone","ready","fadeIn","toggleClass","thisInput","ogDate","formatDate","targetTag","tagName","targetType","targetName","histUrl","sslDomain","history","replaceState","title","resultMess","uuid","age","updateSearchFormAge","inModifyProcess","ismodify","useStoredSearch","oStoredSearch","_obj","setAge","setDefaultAgeOverride","inputs","status","moduleFolder","itemlimit","$form_submit_btn","uploadlimit","POS","whichIE","isIE7","isIE8","isIE9","isIE10","isIE11","_isLegacyBrowser","versionOfBrowser","_getLegacyBrowserVersion","_ops","_isLegacy","_currentVersion","_legacyBrowser","IE7","IE8","IE9","IE10","IE11","_browser","polyfill","arrayEvery","_augmentArrayPrototypeEvery","arrayFilter","_augmentArrayPrototypeFilter","arrayForEach","_augmentArrayPrototypeForEach","arrayIndexOf","_augmentArrayPrototypeIndexOf","arrayMap","_augmentArrayPrototypeMap","objectKeys","_augmentObjectKeys","objectCreate","_augmentObjectCreate","stringTrim","_augmentStringTrim","textContent","_augmentTextContent","_augmentBrowserFunction","_availablePolyfills","Array","prototype","every","filter","Object","keys","create","String","defineProperty","getOwnPropertyDescriptor","Element","get","callbackfn","thisArg","T","TypeError","O","kValue","call","fun","res","searchElement","fromIndex","o","Math","abs","Infinity","max","A","mappedValue","propertiesObject","Temp","defineProperties","hasDontEnumBug","toString","propertyIsEnumerable","dontEnumsLength","dontEnums","obj","innerText","set","s","DisplayObject","Form","reopen","onAfterRender","asyncFormsRendered","$requiredInputs","$checksAndRadios","$requiredCheckboxes","$stateDropdowns","$countryDropdowns","$motorHomeCountryDropdowns","$motorHomeCityDropdowns","$chauffeurCountryDropdowns","$chauffeurCityDropdowns","wrap","j","rawDataAttr","theseDataAttr","dtat","thisAttr","this_selector","this_label","insertBefore","l","parseHTML","rawCountryClass","countryCode","handleStateMenus","handleMotorHomeCityMenus","handleChauffeurCityMenus","validateAll","validInputs","flexNavHeight","temp_loginStatus","$primnav","$primnavList","$primnavTop","$primDropLinks","$primDropDowns","$primnavAcct","$primnavMember","$primnavModify","$primnavManage","$secnav","$altnavToggler","$altnavAcct","$altnavContact","$altnav","$altnavList","$altDropDowns","$selCountry","$countryDD","$countryDDclose","$selLanguage","$languageDD","$selCtryMobile","$spContMobile","$acctContDesk","$acctContMobile","$modContDesk","$modContMobile","$contactMobile","$memberLoginStatus","$allDropDowns","$allSubmenus","touchstart touchmove","touchend","closeAllMenus","toggleSubMenus","handleToggle","stopImmediatePropagation","off","offsetLeft","left","toggle","$contentDesk","pickerMenuWidth","$offset","leftPos","bIsTpDomain","pickerNavWidth","innerWidth","palmContent","has","mobileAccountForm","$contentMobile","handleNavDropdown","$submenu","footerSubscribe","fromPromo","$input","inputContainerSelector","addSpinner","size","color","genericSubscribe","diagSubscribe","subsource","removeSpinner","MSG","oLang","TXT_TRY_AGAIN","showSubscribePopup","returned","inline","update","$page_type","AECustomDimension","getrates_Cookie_Value","Session_Cookie_Value","getCookieValue","setCookieValue","makeid","updateSingleValueCookie","$cn_user_id","$user_id","incrementNumberOfVisits","$visitsIncreased","gaArrayProcess","GACATEGORY","GAACTION","GALABEL","$numVisits","$direction","$pickup","$dropoff","$loctype","zeroPad","getCurrentCookieValue","setDimension","$targetLI","tempData","$cn_cc_used","GAVALUE","$ccUsed","$ccValue","$gaClick","$gaAuto","$gaChange","$gaChild","$gaCheck","$gaTime","attributes","gaArray","timeOnPage","gaLogEvent","gaTrackEvent","gaCategory","gaAction","gaLabel","gaValue","eventCategory","eventAction","eventLabel","eventValue","gaObject","cbStatus","addStatus","selectVal","referrer","_groupItemsByPropsInArray","_array","f","groups","group","_findMatchingPropsInArray","checkProp","entry","_deleteEmptyObjsByValFromArray","deleteValue","splice","_sortPropByAlphaInArray","sortProp","sort","a","b","_removeDuplicateObjectsFromArray","filterProp","_tempArr","_matchLocTitle","_checkValueAlreadyExistsInArray","UI","cookieCheck","cookiesEnabled","_localStorage","_sessionStorage","checkCookies","privateSessionPolyfill","_checkLocalStorageAvailability","usePolyfill","_localStoragePolyfill","requireCookieNotification","cookieNotificationShown","userEngagedNotification","cookieExpires","activeNotification","messaging","defaultCookieMessage","cookie_support","DEFAULT_FROM_AE2","defaultCloseButton","CLOSE_BUTTON","noCookieSupportTitle","WARNING_TITLE","noCookieSupportMessage","WARNING_TEXT","moreInfoMessage","INFO_LINK","moreInfoLink","origin","INFO_LINK_URL","confirmCookieSupportMessage","DEFAULT_COOKIE_USE","mainSearch","bWhiteLabel","_cookiesEnabled","_cookiesDisabled","_tryLaunch","message","cookieSupport","_showCookieNotification","_title","_message","hasCookieSupport","$warningTitleHolder","$warningTitle","notificationHtml","$warningMessage","$cookieSupportNotificationWindow","class","role","$warningMsgWrapper","$warningMessageHolder","_notificationRef","$dismissNotificationBtn","for","$dismissNotificationBtnDecline","$dismissNotificationBtnCustSet","$moreInfoLink","$btnWrap","$moreInfoWrapper","prepend","_fn_launchNotification","_hideCookieNotification","$notification","_reqPolyfill","shouldCloseNotification","isCloseBtn","$getCloseBtn","addContent","ModalTextTest","returnValue","$mapAPILoaded","$dfd_api","$dfd_markers","pin_image","D","icon","muraThemePath","none","pickup","chosen","R","selected","runDrawMap","dfd_myDeferred","loadGoogleMapsAPI","stringAPI","getScript","textStatus","jqxhr","loadDisplayObjectMap","cityName","cntryCode","container","suppName","ccc","ccn","csn","google","drawLandingLocationMap","buildRichSnippetJSON","when","then","json","city","country","mapOptions","mapTypeControl","streetViewControl","scrollwheel","mapTypeId","MapTypeId","ROADMAP","Map","bounds","LatLngBounds","markers","infowindow","locationPoints","thisLatLng","LatLng","latitude","longitude","pin","hub","hubtype_id","geo","lat","lng","marker","fitBounds","addMarkerWithTimeout","items","timeout","Marker","animation","Animation","BOUNCE","optimized","addressa","setAnimation","locationlabela","addressb","locationlabelb","addressc","locationlabelc","addListener","InfoWindow","infowindow_markup","setContent","setZIndex","MAX_ZINDEX","jsonLD","code","address","json_item","@context","@type","addressLocality","addressRegion","streetAddress","script","setAttribute","appendChild","createTextNode","body","affiliate","$checkBox","$termsLink","termsAccepted","contentGroup","visual","willSlide","affTerms","selectedTab","isTP","loadColors","spectrum","preferredFormat","showInput","showButtons","chooseText","colors","choose","cancelText","cancel","haveTerms","showBtns","termsData","ACCEPT","DECLINE","HEAD","BODY","exclusiveClose","$keywords","$bttnfeedSearch","storageAvailable","decodeURI","loadCustomFeed","keydown","currentSearch","keywords","baseURL","changeCategories","remoteID","pageNo","results","RegExp","exec","objDFD","general"],"mappings":"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"}