{"version":3,"file":"javascript-ff.js","sources":["javascript-ff.js"],"sourcesContent":["var isV1GT = true;\n/*\nDONT MODIFY OR UPDATE/REPLACE THIS FILE\n\n- new option appendToBody\n- line 132: prevent focus on input element after selecting an item automatically\n- line 210: auto open dropdown suggestion when focusing on input element\n*/\n/**\n * \n/*\n JavaScript autoComplete v1.0.4\n Copyright (c) 2014 Simon Steinberger / Pixabay\n GitHub: https://github.com/Pixabay/JavaScript-autoComplete\n License: http://www.opensource.org/licenses/mit-license.php\n*/\n\nvar autoComplete = (function(){\n // \"use strict\";\n function autoComplete(options){\n if (!document.querySelector) return;\n\n // helpers\n function hasClass(el, className){ return el.classList ? el.classList.contains(className) : new RegExp('\\\\b'+ className+'\\\\b').test(el.className); }\n\n function addEvent(el, type, handler){\n if (el.attachEvent) el.attachEvent('on'+type, handler); else el.addEventListener(type, handler);\n }\n function removeEvent(el, type, handler){\n // if (el.removeEventListener) not working in IE11\n if (el.detachEvent) el.detachEvent('on'+type, handler); else el.removeEventListener(type, handler);\n }\n function live(elClass, event, cb, context){\n addEvent(context || document, event, function(e){\n var found, el = e.target || e.srcElement;\n while (el && !(found = hasClass(el, elClass))) el = el.parentElement;\n if (found) cb.call(el, e);\n });\n }\n\n var o = {\n selector: 0,\n source: 0,\n minChars: 3,\n delay: 150,\n offsetLeft: 0,\n offsetTop: 1,\n cache: 1,\n appendToBody: 0,\n menuClass: '',\n renderItem: function (item, search){\n // escape special characters\n search = search.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n var re = new RegExp(\"(\" + search.split(' ').join('|') + \")\", \"gi\");\n return '
' + item.replace(re, \"$1\") + '
';\n },\n onSelect: function(e, term, item){}\n };\n for (var k in options) { if (options.hasOwnProperty(k)) o[k] = options[k]; }\n\n // init\n var elems = typeof o.selector == 'object' ? [o.selector] : document.querySelectorAll(o.selector);\n for (var i=0; i 0)\n that.sc.scrollTop = selTop + that.sc.suggestionHeight + scrTop - that.sc.maxHeight;\n else if (selTop < 0)\n that.sc.scrollTop = selTop + scrTop;\n }\n that.sc.style.display = 'block';\n }\n }\n addEvent(window, 'resize', that.updateSC);\n\n if(o.appendToBody)\n document.body.appendChild(that.sc);\n else\n that.insertAdjacentElement(\"afterend\", that.sc);\n\n live('autocomplete-suggestion', 'mouseleave', function(e){\n var sel = that.sc.querySelector('.autocomplete-suggestion.selected');\n if (sel) setTimeout(function(){ sel.className = sel.className.replace('selected', ''); }, 20);\n }, that.sc);\n\n live('autocomplete-suggestion', 'mouseover', function(e){\n var sel = that.sc.querySelector('.autocomplete-suggestion.selected');\n if (sel) sel.className = sel.className.replace('selected', '');\n this.className += ' selected';\n }, that.sc);\n\n live('autocomplete-suggestion', 'mousedown', function(e){\n if (hasClass(this, 'autocomplete-suggestion')) { // else outside click\n var v = this.getAttribute('data-val');\n that.value = v;\n o.onSelect(e, v, this);\n that.sc.style.display = 'none';\n }\n }, that.sc);\n\n that.blurHandler = function(){\n try { var over_sb = document.querySelector('.autocomplete-suggestions:hover'); } catch(e){ var over_sb = 0; }\n if (!over_sb) {\n that.last_val = that.value;\n that.sc.style.display = 'none';\n setTimeout(function(){ that.sc.style.display = 'none'; }, 350); // hide suggestions on fast input\n }\n // } else if (that !== document.activeElement) setTimeout(function(){ that.focus(); }, 20);\n };\n addEvent(that, 'blur', that.blurHandler);\n\n var suggest = function(data){\n var val = that.value;\n that.cache[val] = data;\n if (data.length && val.length >= o.minChars) {\n var s = '';\n for (var i=0;i\"+s+\"\";\n that.updateSC(0);\n }\n else\n that.sc.style.display = 'none';\n }\n\n that.keydownHandler = function(e){\n var key = window.event ? e.keyCode : e.which;\n // down (40), up (38)\n if ((key == 40 || key == 38) && that.sc.innerHTML) {\n var next, sel = that.sc.querySelector('.autocomplete-suggestion.selected');\n if (!sel) {\n next = (key == 40) ? that.sc.querySelector('.autocomplete-suggestion') : that.sc.childNodes[that.sc.childNodes.length - 1]; // first : last\n next.className += ' selected';\n that.value = next.getAttribute('data-val');\n } else {\n next = (key == 40) ? sel.nextSibling : sel.previousSibling;\n if (next) {\n sel.className = sel.className.replace('selected', '');\n next.className += ' selected';\n that.value = next.getAttribute('data-val');\n }\n else { sel.className = sel.className.replace('selected', ''); that.value = that.last_val; next = 0; }\n }\n that.updateSC(0, next);\n return false;\n }\n // esc\n else if (key == 27) { that.value = that.last_val; that.sc.style.display = 'none'; }\n // enter\n else if (key == 13 || key == 9) {\n var sel = that.sc.querySelector('.autocomplete-suggestion.selected');\n if (sel && that.sc.style.display != 'none') { o.onSelect(e, sel.getAttribute('data-val'), sel); setTimeout(function(){ that.sc.style.display = 'none'; }, 20); }\n }\n };\n addEvent(that, 'keydown', that.keydownHandler);\n\n that.keyupHandler = function(e){\n var key = window.event ? e.keyCode : e.which;\n if (!key || (key < 35 || key > 40) && key != 13 && key != 27) {\n var val = that.value;\n if (val.length >= o.minChars) {\n if (val != that.last_val) {\n that.last_val = val;\n clearTimeout(that.timer);\n if (o.cache) {\n if (val in that.cache) { suggest(that.cache[val]); return; }\n // no requests if previous suggestions were empty\n for (var i=1; i' ).html( value ).text();\n }\n }\n }\n catch( totalParseError ){\n // This wasn't JSON after all!\n }\n finally {\n return value;\n }\n }\n};\n/*!\n * THIS FILE HAS BEEN CUSTOMIZED, DONT NOT UPGRADE TO A NEW VERSION!!!\n\n1. return current instance after run event fire\n\n //OLD\n Events.emit('run.after', _this.move);\n Events.emit('run.before', this);\n Events.emit('run', this.move);\n Events.emit('swipe.start');\n Events.emit('swipe.move');\n Events.emit('swipe.end');\n\n //NEW\n Events.emit('run.after', {\n \"move\": _this.move, \n \"instance\": Glide\n });\n\n Events.emit('run', {\n \"move\": _this.move, \n \"instance\": Glide\n });\n\n Events.emit('run.before', {\n \"move\": _this.move, \n \"instance\": Glide\n });\n\n Events.emit('swipe.start', {\n \"move\": -1, \n \"instance\": Glide\n });\n\n Events.emit('swipe.move', {\n \"move\": -1, \n \"instance\": Glide\n });\n\n Events.emit('swipe.end', {\n \"move\": steps, \n \"instance\": Glide\n });\n\n2. Update calculate function, improve carousel animated effect\n\n3. Modify collect function, should clone all items to improve carousel animated effect\n\n * Glide.js v3.4.1\n * (c) 2013-2019 Jędrzej Chałubek (http://jedrzejchalubek.com/)\n * Released under the MIT License.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.Glide = factory());\n}(this, (function () { 'use strict';\n\n var defaults = {\n /**\n * Type of the movement.\n *\n * Available types:\n * `slider` - Rewinds slider to the start/end when it reaches the first or last slide.\n * `carousel` - Changes slides without starting over when it reaches the first or last slide.\n *\n * @type {String}\n */\n type: 'slider',\n\n /**\n * Start at specific slide number defined with zero-based index.\n *\n * @type {Number}\n */\n startAt: 0,\n\n /**\n * A number of slides visible on the single viewport.\n *\n * @type {Number}\n */\n perView: 1,\n\n /**\n * Focus currently active slide at a specified position in the track.\n *\n * Available inputs:\n * `center` - Current slide will be always focused at the center of a track.\n * `0,1,2,3...` - Current slide will be focused on the specified zero-based index.\n *\n * @type {String|Number}\n */\n focusAt: 0,\n\n /**\n * A size of the gap added between slides.\n *\n * @type {Number}\n */\n gap: 10,\n\n /**\n * Change slides after a specified interval. Use `false` for turning off autoplay.\n *\n * @type {Number|Boolean}\n */\n autoplay: false,\n\n /**\n * Stop autoplay on mouseover event.\n *\n * @type {Boolean}\n */\n hoverpause: true,\n\n /**\n * Allow for changing slides with left and right keyboard arrows.\n *\n * @type {Boolean}\n */\n keyboard: true,\n\n /**\n * Stop running `perView` number of slides from the end. Use this\n * option if you don't want to have an empty space after\n * a slider. Works only with `slider` type and a\n * non-centered `focusAt` setting.\n *\n * @type {Boolean}\n */\n bound: false,\n\n /**\n * Minimal swipe distance needed to change the slide. Use `false` for turning off a swiping.\n *\n * @type {Number|Boolean}\n */\n swipeThreshold: 80,\n\n /**\n * Minimal mouse drag distance needed to change the slide. Use `false` for turning off a dragging.\n *\n * @type {Number|Boolean}\n */\n dragThreshold: 120,\n\n /**\n * A maximum number of slides to which movement will be made on swiping or dragging. Use `false` for unlimited.\n *\n * @type {Number|Boolean}\n */\n perTouch: false,\n\n /**\n * Moving distance ratio of the slides on a swiping and dragging.\n *\n * @type {Number}\n */\n touchRatio: 0.5,\n\n /**\n * Angle required to activate slides moving on swiping or dragging.\n *\n * @type {Number}\n */\n touchAngle: 45,\n\n /**\n * Duration of the animation in milliseconds.\n *\n * @type {Number}\n */\n animationDuration: 400,\n\n /**\n * Allows looping the `slider` type. Slider will rewind to the first/last slide when it's at the start/end.\n *\n * @type {Boolean}\n */\n rewind: true,\n\n /**\n * Duration of the rewinding animation of the `slider` type in milliseconds.\n *\n * @type {Number}\n */\n rewindDuration: 800,\n\n /**\n * Easing function for the animation.\n *\n * @type {String}\n */\n animationTimingFunc: 'cubic-bezier(.165, .840, .440, 1)',\n\n /**\n * Throttle costly events at most once per every wait milliseconds.\n *\n * @type {Number}\n */\n throttle: 10,\n\n /**\n * Moving direction mode.\n *\n * Available inputs:\n * - 'ltr' - left to right movement,\n * - 'rtl' - right to left movement.\n *\n * @type {String}\n */\n direction: 'ltr',\n\n /**\n * The distance value of the next and previous viewports which\n * have to peek in the current view. Accepts number and\n * pixels as a string. Left and right peeking can be\n * set up separately with a directions object.\n *\n * For example:\n * `100` - Peek 100px on the both sides.\n * { before: 100, after: 50 }` - Peek 100px on the left side and 50px on the right side.\n *\n * @type {Number|String|Object}\n */\n peek: 0,\n\n /**\n * Collection of options applied at specified media breakpoints.\n * For example: display two slides per view under 800px.\n * `{\n * '800px': {\n * perView: 2\n * }\n * }`\n */\n breakpoints: {},\n\n /**\n * Collection of internally used HTML classes.\n *\n * @todo Refactor `slider` and `carousel` properties to single `type: { slider: '', carousel: '' }` object\n * @type {Object}\n */\n classes: {\n direction: {\n ltr: 'glide--ltr',\n rtl: 'glide--rtl'\n },\n slider: 'glide--slider',\n carousel: 'glide--carousel',\n swipeable: 'glide--swipeable',\n dragging: 'glide--dragging',\n cloneSlide: 'glide__slide--clone',\n activeNav: 'glide__bullet--active',\n activeSlide: 'glide__slide--active',\n disabledArrow: 'glide__arrow--disabled'\n }\n };\n\n /**\n * Outputs warning message to the bowser console.\n *\n * @param {String} msg\n * @return {Void}\n */\n function warn(msg) {\n console.error(\"[Glide warn]: \" + msg);\n }\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n var classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n\n var createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n var get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n };\n\n var possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n };\n\n /**\n * Converts value entered as number\n * or string to integer value.\n *\n * @param {String} value\n * @returns {Number}\n */\n function toInt(value) {\n return parseInt(value);\n }\n\n /**\n * Converts value entered as number\n * or string to flat value.\n *\n * @param {String} value\n * @returns {Number}\n */\n function toFloat(value) {\n return parseFloat(value);\n }\n\n /**\n * Indicates whether the specified value is a string.\n *\n * @param {*} value\n * @return {Boolean}\n */\n function isString(value) {\n return typeof value === 'string';\n }\n\n /**\n * Indicates whether the specified value is an object.\n *\n * @param {*} value\n * @return {Boolean}\n *\n * @see https://github.com/jashkenas/underscore\n */\n function isObject(value) {\n var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);\n\n return type === 'function' || type === 'object' && !!value; // eslint-disable-line no-mixed-operators\n }\n\n /**\n * Indicates whether the specified value is a number.\n *\n * @param {*} value\n * @return {Boolean}\n */\n function isNumber(value) {\n return typeof value === 'number';\n }\n\n /**\n * Indicates whether the specified value is a function.\n *\n * @param {*} value\n * @return {Boolean}\n */\n function isFunction(value) {\n return typeof value === 'function';\n }\n\n /**\n * Indicates whether the specified value is undefined.\n *\n * @param {*} value\n * @return {Boolean}\n */\n function isUndefined(value) {\n return typeof value === 'undefined';\n }\n\n /**\n * Indicates whether the specified value is an array.\n *\n * @param {*} value\n * @return {Boolean}\n */\n function isArray(value) {\n return value.constructor === Array;\n }\n\n /**\n * Creates and initializes specified collection of extensions.\n * Each extension receives access to instance of glide and rest of components.\n *\n * @param {Object} glide\n * @param {Object} extensions\n *\n * @returns {Object}\n */\n function mount(glide, extensions, events) {\n var components = {};\n\n for (var name in extensions) {\n if (isFunction(extensions[name])) {\n components[name] = extensions[name](glide, components, events);\n } else {\n warn('Extension must be a function');\n }\n }\n\n for (var _name in components) {\n if (isFunction(components[_name].mount)) {\n components[_name].mount();\n }\n }\n\n return components;\n }\n\n /**\n * Defines getter and setter property on the specified object.\n *\n * @param {Object} obj Object where property has to be defined.\n * @param {String} prop Name of the defined property.\n * @param {Object} definition Get and set definitions for the property.\n * @return {Void}\n */\n function define(obj, prop, definition) {\n Object.defineProperty(obj, prop, definition);\n }\n\n /**\n * Sorts aphabetically object keys.\n *\n * @param {Object} obj\n * @return {Object}\n */\n function sortKeys(obj) {\n return Object.keys(obj).sort().reduce(function (r, k) {\n r[k] = obj[k];\n\n return r[k], r;\n }, {});\n }\n\n /**\n * Merges passed settings object with default options.\n *\n * @param {Object} defaults\n * @param {Object} settings\n * @return {Object}\n */\n function mergeOptions(defaults, settings) {\n var options = _extends({}, defaults, settings);\n\n // `Object.assign` do not deeply merge objects, so we\n // have to do it manually for every nested object\n // in options. Although it does not look smart,\n // it's smaller and faster than some fancy\n // merging deep-merge algorithm script.\n if (settings.hasOwnProperty('classes')) {\n options.classes = _extends({}, defaults.classes, settings.classes);\n\n if (settings.classes.hasOwnProperty('direction')) {\n options.classes.direction = _extends({}, defaults.classes.direction, settings.classes.direction);\n }\n }\n\n if (settings.hasOwnProperty('breakpoints')) {\n options.breakpoints = _extends({}, defaults.breakpoints, settings.breakpoints);\n }\n\n return options;\n }\n\n var EventsBus = function () {\n /**\n * Construct a EventBus instance.\n *\n * @param {Object} events\n */\n function EventsBus() {\n var events = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, EventsBus);\n\n this.events = events;\n this.hop = events.hasOwnProperty;\n }\n\n /**\n * Adds listener to the specifed event.\n *\n * @param {String|Array} event\n * @param {Function} handler\n */\n\n\n createClass(EventsBus, [{\n key: 'on',\n value: function on(event, handler) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.on(event[i], handler);\n }\n }\n\n // Create the event's object if not yet created\n if (!this.hop.call(this.events, event)) {\n this.events[event] = [];\n }\n\n // Add the handler to queue\n var index = this.events[event].push(handler) - 1;\n\n // Provide handle back for removal of event\n return {\n remove: function remove() {\n delete this.events[event][index];\n }\n };\n }\n\n /**\n * Runs registered handlers for specified event.\n *\n * @param {String|Array} event\n * @param {Object=} context\n */\n\n }, {\n key: 'emit',\n value: function emit(event, context) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.emit(event[i], context);\n }\n }\n\n // If the event doesn't exist, or there's no handlers in queue, just leave\n if (!this.hop.call(this.events, event)) {\n return;\n }\n\n // Cycle through events queue, fire!\n this.events[event].forEach(function (item) {\n item(context || {});\n });\n }\n }]);\n return EventsBus;\n }();\n\n var Glide = function () {\n /**\n * Construct glide.\n *\n * @param {String} selector\n * @param {Object} options\n */\n function Glide(selector) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, Glide);\n\n this._c = {};\n this._t = [];\n this._e = new EventsBus();\n\n this.disabled = false;\n this.selector = selector;\n this.settings = mergeOptions(defaults, options);\n this.index = this.settings.startAt;\n }\n\n /**\n * Initializes glide.\n *\n * @param {Object} extensions Collection of extensions to initialize.\n * @return {Glide}\n */\n\n\n createClass(Glide, [{\n key: 'mount',\n value: function mount$$1() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this._e.emit('mount.before');\n\n if (isObject(extensions)) {\n this._c = mount(this, extensions, this._e);\n } else {\n warn('You need to provide a object on `mount()`');\n }\n\n this._e.emit('mount.after', {\n instance: this\n });\n\n return this;\n }\n\n /**\n * Collects an instance `translate` transformers.\n *\n * @param {Array} transformers Collection of transformers.\n * @return {Void}\n */\n\n }, {\n key: 'mutate',\n value: function mutate() {\n var transformers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (isArray(transformers)) {\n this._t = transformers;\n } else {\n warn('You need to provide a array on `mutate()`');\n }\n\n return this;\n }\n\n /**\n * Updates glide with specified settings.\n *\n * @param {Object} settings\n * @return {Glide}\n */\n\n }, {\n key: 'update',\n value: function update() {\n var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.settings = mergeOptions(this.settings, settings);\n\n if (settings.hasOwnProperty('startAt')) {\n this.index = settings.startAt;\n }\n\n this._e.emit('update');\n\n return this;\n }\n\n /**\n * Change slide with specified pattern. A pattern must be in the special format:\n * `>` - Move one forward\n * `<` - Move one backward\n * `={i}` - Go to {i} zero-based slide (eq. '=1', will go to second slide)\n * `>>` - Rewinds to end (last slide)\n * `<<` - Rewinds to start (first slide)\n *\n * @param {String} pattern\n * @return {Glide}\n */\n\n }, {\n key: 'go',\n value: function go(pattern) {\n this._c.Run.make(pattern);\n\n return this;\n }\n\n /**\n * Move track by specified distance.\n *\n * @param {String} distance\n * @return {Glide}\n */\n\n }, {\n key: 'move',\n value: function move(distance) {\n this._c.Transition.disable();\n this._c.Move.make(distance);\n\n return this;\n }\n\n /**\n * Destroy instance and revert all changes done by this._c.\n *\n * @return {Glide}\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n this._e.emit('destroy');\n\n return this;\n }\n\n /**\n * Start instance autoplaying.\n *\n * @param {Boolean|Number} interval Run autoplaying with passed interval regardless of `autoplay` settings\n * @return {Glide}\n */\n\n }, {\n key: 'play',\n value: function play() {\n var interval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (interval) {\n this.settings.autoplay = interval;\n }\n\n this._e.emit('play');\n\n return this;\n }\n\n /**\n * Stop instance autoplaying.\n *\n * @return {Glide}\n */\n\n }, {\n key: 'pause',\n value: function pause() {\n this._e.emit('pause');\n\n return this;\n }\n\n /**\n * Sets glide into a idle status.\n *\n * @return {Glide}\n */\n\n }, {\n key: 'disable',\n value: function disable() {\n this.disabled = true;\n\n return this;\n }\n\n /**\n * Sets glide into a active status.\n *\n * @return {Glide}\n */\n\n }, {\n key: 'enable',\n value: function enable() {\n this.disabled = false;\n\n return this;\n }\n\n /**\n * Adds cuutom event listener with handler.\n *\n * @param {String|Array} event\n * @param {Function} handler\n * @return {Glide}\n */\n\n }, {\n key: 'on',\n value: function on(event, handler) {\n this._e.on(event, handler);\n\n return this;\n }\n\n /**\n * Checks if glide is a precised type.\n *\n * @param {String} name\n * @return {Boolean}\n */\n\n }, {\n key: 'isType',\n value: function isType(name) {\n return this.settings.type === name;\n }\n\n /**\n * Gets value of the core options.\n *\n * @return {Object}\n */\n\n }, {\n key: 'settings',\n get: function get$$1() {\n return this._o;\n }\n\n /**\n * Sets value of the core options.\n *\n * @param {Object} o\n * @return {Void}\n */\n ,\n set: function set$$1(o) {\n if (isObject(o)) {\n this._o = o;\n } else {\n warn('Options must be an `object` instance.');\n }\n }\n\n /**\n * Gets current index of the slider.\n *\n * @return {Object}\n */\n\n }, {\n key: 'index',\n get: function get$$1() {\n return this._i;\n }\n\n /**\n * Sets current index a slider.\n *\n * @return {Object}\n */\n ,\n set: function set$$1(i) {\n this._i = toInt(i);\n }\n\n /**\n * Gets type name of the slider.\n *\n * @return {String}\n */\n\n }, {\n key: 'type',\n get: function get$$1() {\n return this.settings.type;\n }\n\n /**\n * Gets value of the idle status.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'disabled',\n get: function get$$1() {\n return this._d;\n }\n\n /**\n * Sets value of the idle status.\n *\n * @return {Boolean}\n */\n ,\n set: function set$$1(status) {\n this._d = !!status;\n }\n }]);\n return Glide;\n }();\n\n function Run (Glide, Components, Events) {\n var Run = {\n /**\n * Initializes autorunning of the glide.\n *\n * @return {Void}\n */\n mount: function mount() {\n this._o = false;\n },\n\n\n /**\n * Makes glides running based on the passed moving schema.\n *\n * @param {String} move\n */\n make: function make(move) {\n var _this = this;\n\n if (!Glide.disabled) {\n Glide.disable();\n\n this.move = move;\n\n Events.emit('run.before', {\n \"move\": _this.move, \n \"instance\": Glide\n });\n\n this.calculate();\n\n Events.emit('run', {\n \"move\": _this.move, \n \"instance\": Glide\n });\n\n Components.Transition.after(function () {\n if (_this.isStart()) {\n Events.emit('run.start', {\n \"move\": _this.move, \n \"instance\": Glide\n });\n }\n\n if (_this.isEnd()) {\n Events.emit('run.end', {\n \"move\": _this.move, \n \"instance\": Glide\n });\n }\n\n if (_this.isOffset('<') || _this.isOffset('>')) {\n _this._o = false;\n\n Events.emit('run.offset', {\n \"move\": _this.move, \n \"instance\": Glide\n });\n }\n\n Events.emit('run.after', {\n \"move\": _this.move, \n \"instance\": Glide\n });\n\n Glide.enable();\n });\n }\n },\n\n\n /**\n * Calculates current index based on defined move.\n *\n * @return {Void}\n */\n calculate: function calculate() {\n var move = this.move,\n length = this.length;\n var steps = Glide.settings.steps || move.steps,\n direction = move.direction;\n\n if(move.direction == \"=\") steps = move.steps;\n\n var countableSteps = isNumber(toInt(steps)) && toInt(steps) !== 0;\n let oldDuartion = Glide.settings.animationDuration;\n\n switch (direction) {\n case '>':\n if (steps === '>') {\n Glide.index = length;\n } else if (this.isEnd()) {\n if (!(Glide.isType('slider') && !Glide.settings.rewind)) {\n this._o = true;\n\n Glide.index = 0;\n }\n } else if (countableSteps) {\n Glide.index += Math.abs(steps);\n \n if(Glide.index > length)\n setTimeout(function(){\n Components.Transition.disable();\n Glide.index = Glide.index - length - 1;\n Components.Translate.set(Components.Sizes.slideWidth * steps);\n Components.Move.make();\n }, oldDuartion)\n } else {\n Glide.index++;\n }\n break;\n\n case '<':\n if (steps === '<' || (Glide.isType('slider') && isNumber(toInt(steps)) && this.isStart())) {\n Glide.index = 0;\n } else if (this.isStart() && (!countableSteps || Math.abs(steps) == 1)) {\n if (!(Glide.isType('slider') && !Glide.settings.rewind)) {\n this._o = true;\n\n Glide.index = length;\n }\n } else if (countableSteps) {\n Glide.index -= Math.abs(steps);\n \n if(Glide.index < 0)\n setTimeout(function(){\n Components.Transition.disable();\n Glide.index = length - Math.abs(Glide.index) + 1;\n Components.Translate.set(Components.Sizes.slideWidth * steps);\n Components.Move.make();\n }, oldDuartion)\n } else {\n Glide.index--;\n }\n break;\n\n case '=':\n if(Glide.settings.type == \"slider\" && Components.Sizes.length - steps - 1 < Glide.settings.perView) {\n Glide.index = Components.Sizes.length - Glide.settings.perView;\n } else\n Glide.index = steps;\n break;\n\n default:\n warn('Invalid direction pattern [' + direction + steps + '] has been used');\n break;\n }\n },\n\n\n /**\n * Checks if we are on the first slide.\n *\n * @return {Boolean}\n */\n isStart: function isStart() {\n return Glide.index === 0;\n },\n\n\n /**\n * Checks if we are on the last slide.\n *\n * @return {Boolean}\n */\n isEnd: function isEnd() {\n return Glide.index === this.length;\n },\n\n\n /**\n * Checks if we are making a offset run.\n *\n * @param {String} direction\n * @return {Boolean}\n */\n isOffset: function isOffset(direction) {\n return this._o && this.move.direction === direction;\n }\n };\n\n define(Run, 'move', {\n /**\n * Gets value of the move schema.\n *\n * @returns {Object}\n */\n get: function get() {\n return this._m;\n },\n\n\n /**\n * Sets value of the move schema.\n *\n * @returns {Object}\n */\n set: function set(value) {\n var step = value.substr(1);\n\n this._m = {\n direction: value.substr(0, 1),\n steps: step ? toInt(step) ? toInt(step) : step : 0\n };\n }\n });\n\n define(Run, 'length', {\n /**\n * Gets value of the running distance based\n * on zero-indexing number of slides.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n var length = Components.Html.slides.length;\n\n // If the `bound` option is acitve, a maximum running distance should be\n // reduced by `perView` and `focusAt` settings. Running distance\n // should end before creating an empty space after instance.\n\n if (Glide.isType('slider') && settings.focusAt !== 'center' && settings.bound) {\n return length - 1 - (toInt(settings.perView) - 1) + toInt(settings.focusAt);\n }\n\n return length - 1;\n }\n });\n\n define(Run, 'offset', {\n /**\n * Gets status of the offsetting flag.\n *\n * @return {Boolean}\n */\n get: function get() {\n return this._o;\n }\n });\n\n return Run;\n }\n\n /**\n * Returns a current time.\n *\n * @return {Number}\n */\n function now() {\n return new Date().getTime();\n }\n\n /**\n * Returns a function, that, when invoked, will only be triggered\n * at most once during a given window of time.\n *\n * @param {Function} func\n * @param {Number} wait\n * @param {Object=} options\n * @return {Function}\n *\n * @see https://github.com/jashkenas/underscore\n */\n function throttle(func, wait, options) {\n var timeout = void 0,\n context = void 0,\n args = void 0,\n result = void 0;\n var previous = 0;\n if (!options) options = {};\n\n var later = function later() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function throttled() {\n var at = now();\n if (!previous && options.leading === false) previous = at;\n var remaining = wait - (at - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = at;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n }\n\n var MARGIN_TYPE = {\n ltr: ['marginLeft', 'marginRight'],\n rtl: ['marginRight', 'marginLeft']\n };\n\n function Gaps (Glide, Components, Events) {\n var Gaps = {\n /**\n * Applies gaps between slides. First and last\n * slides do not receive it's edge margins.\n *\n * @param {HTMLCollection} slides\n * @return {Void}\n */\n apply: function apply(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n var direction = Components.Direction.value;\n\n if (i !== 0) {\n style[MARGIN_TYPE[direction][0]] = this.value / 2 + 'px';\n } else {\n style[MARGIN_TYPE[direction][0]] = '';\n }\n\n if (i !== slides.length - 1) {\n style[MARGIN_TYPE[direction][1]] = this.value / 2 + 'px';\n } else {\n style[MARGIN_TYPE[direction][1]] = '';\n }\n }\n },\n\n\n /**\n * Removes gaps from the slides.\n *\n * @param {HTMLCollection} slides\n * @returns {Void}\n */\n remove: function remove(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n\n style.marginLeft = '';\n style.marginRight = '';\n }\n }\n };\n\n define(Gaps, 'value', {\n /**\n * Gets value of the gap.\n *\n * @returns {Number}\n */\n get: function get() {\n return toInt(Glide.settings.gap);\n }\n });\n\n define(Gaps, 'grow', {\n /**\n * Gets additional dimentions value caused by gaps.\n * Used to increase width of the slides wrapper.\n *\n * @returns {Number}\n */\n get: function get() {\n return Gaps.value * (Components.Sizes.length - 1);\n }\n });\n\n define(Gaps, 'reductor', {\n /**\n * Gets reduction value caused by gaps.\n * Used to subtract width of the slides.\n *\n * @returns {Number}\n */\n get: function get() {\n var perView = Glide.settings.perView;\n\n return Gaps.value * (perView - 1) / perView;\n }\n });\n\n /**\n * Apply calculated gaps:\n * - after building, so slides (including clones) will receive proper margins\n * - on updating via API, to recalculate gaps with new options\n */\n Events.on(['build.after', 'update'], throttle(function () {\n Gaps.apply(Components.Html.wrapper.children);\n }, 30));\n\n /**\n * Remove gaps:\n * - on destroying to bring markup to its inital state\n */\n Events.on('destroy', function () {\n Gaps.remove(Components.Html.wrapper.children);\n });\n\n return Gaps;\n }\n\n /**\n * Finds siblings nodes of the passed node.\n *\n * @param {Element} node\n * @return {Array}\n */\n function siblings(node) {\n if (node && node.parentNode) {\n var n = node.parentNode.firstChild;\n var matched = [];\n\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== node) {\n matched.push(n);\n }\n }\n\n return matched;\n }\n\n return [];\n }\n\n /**\n * Checks if passed node exist and is a valid element.\n *\n * @param {Element} node\n * @return {Boolean}\n */\n function exist(node) {\n if (node && node instanceof window.HTMLElement) {\n return true;\n }\n\n return false;\n }\n\n var TRACK_SELECTOR = '[data-glide-el=\"track\"]';\n\n function Html (Glide, Components) {\n var Html = {\n /**\n * Setup slider HTML nodes.\n *\n * @param {Glide} glide\n */\n mount: function mount() {\n this.root = Glide.selector;\n this.track = this.root.querySelector(TRACK_SELECTOR);\n this.slides = Array.prototype.slice.call(this.wrapper.children).filter(function (slide) {\n return !slide.classList.contains(Glide.settings.classes.cloneSlide);\n });\n }\n };\n\n define(Html, 'root', {\n /**\n * Gets node of the glide main element.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._r;\n },\n\n\n /**\n * Sets node of the glide main element.\n *\n * @return {Object}\n */\n set: function set(r) {\n if (isString(r)) {\n r = document.querySelector(r);\n }\n\n if (exist(r)) {\n Html._r = r;\n } else {\n warn('Root element must be a existing Html node');\n }\n }\n });\n\n define(Html, 'track', {\n /**\n * Gets node of the glide track with slides.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._t;\n },\n\n\n /**\n * Sets node of the glide track with slides.\n *\n * @return {Object}\n */\n set: function set(t) {\n if (exist(t)) {\n Html._t = t;\n } else {\n warn('Could not find track element. Please use ' + TRACK_SELECTOR + ' attribute.');\n }\n }\n });\n\n define(Html, 'wrapper', {\n /**\n * Gets node of the slides wrapper.\n *\n * @return {Object}\n */\n get: function get() {\n return Html.track.children[0];\n }\n });\n\n return Html;\n }\n\n function Peek (Glide, Components, Events) {\n var Peek = {\n /**\n * Setups how much to peek based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.peek;\n }\n };\n\n define(Peek, 'value', {\n /**\n * Gets value of the peek.\n *\n * @returns {Number|Object}\n */\n get: function get() {\n return Peek._v;\n },\n\n\n /**\n * Sets value of the peek.\n *\n * @param {Number|Object} value\n * @return {Void}\n */\n set: function set(value) {\n if (isObject(value)) {\n value.before = toInt(value.before);\n value.after = toInt(value.after);\n } else {\n value = toInt(value);\n }\n\n Peek._v = value;\n }\n });\n\n define(Peek, 'reductor', {\n /**\n * Gets reduction value caused by peek.\n *\n * @returns {Number}\n */\n get: function get() {\n var value = Peek.value;\n var perView = Glide.settings.perView;\n\n if (isObject(value)) {\n return value.before / perView + value.after / perView;\n }\n\n return value * 2 / perView;\n }\n });\n\n /**\n * Recalculate peeking sizes on:\n * - when resizing window to update to proper percents\n */\n Events.on(['resize', 'update'], function () {\n Peek.mount();\n });\n\n return Peek;\n }\n\n function Move (Glide, Components, Events) {\n var Move = {\n /**\n * Constructs move component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n this._o = 0;\n },\n\n\n /**\n * Calculates a movement value based on passed offset and currently active index.\n *\n * @param {Number} offset\n * @return {Void}\n */\n make: function make() {\n var _this = this;\n\n var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n this.offset = offset;\n\n Events.emit('move', {\n movement: this.value\n });\n\n Components.Transition.after(function () {\n Events.emit('move.after', {\n movement: _this.value\n });\n });\n }\n };\n\n define(Move, 'offset', {\n /**\n * Gets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n get: function get() {\n return Move._o;\n },\n\n\n /**\n * Sets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n set: function set(value) {\n Move._o = !isUndefined(value) ? toInt(value) : 0;\n }\n });\n\n define(Move, 'translate', {\n /**\n * Gets a raw movement value.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Sizes.slideWidth * Glide.index;\n }\n });\n\n define(Move, 'value', {\n /**\n * Gets an actual movement value corrected by offset.\n *\n * @return {Number}\n */\n get: function get() {\n var offset = this.offset;\n var translate = this.translate;\n\n if (Components.Direction.is('rtl')) {\n return translate + offset;\n }\n\n return translate - offset;\n }\n });\n\n /**\n * Make movement to proper slide on:\n * - before build, so glide will start at `startAt` index\n * - on each standard run to move to newly calculated index\n */\n Events.on(['build.before', 'run'], function () {\n Move.make();\n });\n\n return Move;\n }\n\n function Sizes (Glide, Components, Events) {\n var Sizes = {\n /**\n * Setups dimentions of slides.\n *\n * @return {Void}\n */\n setupSlides: function setupSlides() {\n var width = this.slideWidth + 'px';\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = width;\n }\n },\n\n\n /**\n * Setups dimentions of slides wrapper.\n *\n * @return {Void}\n */\n setupWrapper: function setupWrapper(dimention) {\n Components.Html.wrapper.style.width = this.wrapperSize + 'px';\n },\n\n\n /**\n * Removes applied styles from HTML elements.\n *\n * @returns {Void}\n */\n remove: function remove() {\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = '';\n }\n\n Components.Html.wrapper.style.width = '';\n }\n };\n\n define(Sizes, 'length', {\n /**\n * Gets count number of the slides.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.slides.length;\n }\n });\n\n define(Sizes, 'width', {\n /**\n * Gets width value of the glide.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.root.offsetWidth;\n }\n });\n\n define(Sizes, 'wrapperSize', {\n /**\n * Gets size of the slides wrapper.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.slideWidth * Sizes.length + Components.Gaps.grow + Components.Clones.grow;\n }\n });\n\n define(Sizes, 'slideWidth', {\n /**\n * Gets width value of the single slide.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.width / Glide.settings.perView - Components.Peek.reductor - Components.Gaps.reductor;\n }\n });\n\n /**\n * Apply calculated glide's dimensions:\n * - before building, so other dimentions (e.g. translate) will be calculated propertly\n * - when resizing window to recalculate sildes dimensions\n * - on updating via API, to calculate dimensions based on new options\n */\n Events.on(['build.before', 'resize', 'update'], function () {\n Sizes.setupSlides();\n Sizes.setupWrapper();\n });\n\n /**\n * Remove calculated glide's dimensions:\n * - on destoting to bring markup to its inital state\n */\n Events.on('destroy', function () {\n Sizes.remove();\n });\n\n return Sizes;\n }\n\n function Build (Glide, Components, Events) {\n var Build = {\n /**\n * Init glide building. Adds classes, sets\n * dimensions and setups initial state.\n *\n * @return {Void}\n */\n mount: function mount() {\n Events.emit('build.before');\n\n this.typeClass();\n this.activeClass();\n\n Events.emit('build.after');\n },\n\n\n /**\n * Adds `type` class to the glide element.\n *\n * @return {Void}\n */\n typeClass: function typeClass() {\n Components.Html.root.classList.add(Glide.settings.classes[Glide.settings.type]);\n },\n\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n activeClass: function activeClass() {\n var classes = Glide.settings.classes;\n var slide = Components.Html.slides[Glide.index];\n\n if (slide) {\n slide.classList.add(classes.activeSlide);\n\n siblings(slide).forEach(function (sibling) {\n sibling.classList.remove(classes.activeSlide);\n });\n }\n },\n\n\n /**\n * Removes HTML classes applied at building.\n *\n * @return {Void}\n */\n removeClasses: function removeClasses() {\n var classes = Glide.settings.classes;\n\n Components.Html.root.classList.remove(classes[Glide.settings.type]);\n\n Components.Html.slides.forEach(function (sibling) {\n sibling.classList.remove(classes.activeSlide);\n });\n }\n };\n\n /**\n * Clear building classes:\n * - on destroying to bring HTML to its initial state\n * - on updating to remove classes before remounting component\n */\n Events.on(['destroy', 'update'], function () {\n Build.removeClasses();\n });\n\n /**\n * Remount component:\n * - on resizing of the window to calculate new dimentions\n * - on updating settings via API\n */\n Events.on(['resize', 'update'], function () {\n Build.mount();\n });\n\n /**\n * Swap active class of current slide:\n * - after each move to the new index\n */\n Events.on('move.after', function () {\n Build.activeClass();\n });\n\n return Build;\n }\n\n function Clones (Glide, Components, Events) {\n var Clones = {\n /**\n * Create pattern map and collect slides to be cloned.\n */\n mount: function mount() {\n this.items = [];\n\n if (Glide.isType('carousel')) {\n this.items = this.collect();\n }\n },\n\n\n /**\n * Collect clones with pattern.\n *\n * @return {Void}\n */\n collect: function collect() {\n var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var slides = Components.Html.slides;\n var _Glide$settings = Glide.settings,\n perView = _Glide$settings.perView,\n classes = _Glide$settings.classes;\n\n\n // var peekIncrementer = +!!Glide.settings.peek;\n // var part = perView + peekIncrementer;\n var part = slides.length - 1;\n var start = slides.slice(0, part);\n var end = slides.slice(-part);\n\n for (var r = 0; r < Math.max(1, Math.floor(perView / slides.length)); r++) {\n for (var i = 0; i < start.length; i++) {\n var clone = start[i].cloneNode(true);\n\n clone.classList.add(classes.cloneSlide);\n\n items.push(clone);\n }\n\n for (var _i = 0; _i < end.length; _i++) {\n var _clone = end[_i].cloneNode(true);\n\n _clone.classList.add(classes.cloneSlide);\n\n items.unshift(_clone);\n }\n }\n\n return items;\n },\n\n\n /**\n * Append cloned slides with generated pattern.\n *\n * @return {Void}\n */\n append: function append() {\n var items = this.items;\n var _Components$Html = Components.Html,\n wrapper = _Components$Html.wrapper,\n slides = _Components$Html.slides;\n\n\n var half = Math.floor(items.length / 2);\n var prepend = items.slice(0, half).reverse();\n var append = items.slice(half, items.length);\n var width = Components.Sizes.slideWidth + 'px';\n\n for (var i = 0; i < append.length; i++) {\n wrapper.appendChild(append[i]);\n }\n\n for (var _i2 = 0; _i2 < prepend.length; _i2++) {\n wrapper.insertBefore(prepend[_i2], slides[0]);\n }\n\n for (var _i3 = 0; _i3 < items.length; _i3++) {\n items[_i3].style.width = width;\n }\n },\n\n\n /**\n * Remove all cloned slides.\n *\n * @return {Void}\n */\n remove: function remove() {\n var items = this.items;\n\n\n for (var i = 0; i < items.length; i++) {\n Components.Html.wrapper.removeChild(items[i]);\n }\n }\n };\n\n define(Clones, 'grow', {\n /**\n * Gets additional dimentions value caused by clones.\n *\n * @return {Number}\n */\n get: function get() {\n return (Components.Sizes.slideWidth + Components.Gaps.value) * Clones.items.length;\n }\n });\n\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n Events.on('update', function () {\n Clones.remove();\n Clones.mount();\n Clones.append();\n });\n\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n Events.on('build.before', function () {\n if (Glide.isType('carousel')) {\n Clones.append();\n }\n });\n\n /**\n * Remove clones HTMLElements:\n * - on destroying, to bring HTML to its initial state\n */\n Events.on('destroy', function () {\n Clones.remove();\n });\n\n return Clones;\n }\n\n var EventsBinder = function () {\n /**\n * Construct a EventsBinder instance.\n */\n function EventsBinder() {\n var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, EventsBinder);\n\n this.listeners = listeners;\n }\n\n /**\n * Adds events listeners to arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Function} closure\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n\n createClass(EventsBinder, [{\n key: 'on',\n value: function on(events, el, closure) {\n var capture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n this.listeners[events[i]] = closure;\n\n el.addEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n\n /**\n * Removes event listeners from arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n }, {\n key: 'off',\n value: function off(events, el) {\n var capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n el.removeEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n\n /**\n * Destroy collected listeners.\n *\n * @returns {Void}\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n delete this.listeners;\n }\n }]);\n return EventsBinder;\n }();\n\n function Resize (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var Resize = {\n /**\n * Initializes window bindings.\n */\n mount: function mount() {\n this.bind();\n },\n\n\n /**\n * Binds `rezsize` listener to the window.\n * It's a costly event, so we are debouncing it.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('resize', window, throttle(function () {\n Events.emit('resize');\n }, Glide.settings.throttle));\n },\n\n\n /**\n * Unbinds listeners from the window.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('resize', window);\n }\n };\n\n /**\n * Remove bindings from window:\n * - on destroying, to remove added EventListener\n */\n Events.on('destroy', function () {\n Resize.unbind();\n Binder.destroy();\n });\n\n return Resize;\n }\n\n var VALID_DIRECTIONS = ['ltr', 'rtl'];\n var FLIPED_MOVEMENTS = {\n '>': '<',\n '<': '>',\n '=': '='\n };\n\n function Direction (Glide, Components, Events) {\n var Direction = {\n /**\n * Setups gap value based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.direction;\n },\n\n\n /**\n * Resolves pattern based on direction value\n *\n * @param {String} pattern\n * @returns {String}\n */\n resolve: function resolve(pattern) {\n var token = pattern.slice(0, 1);\n\n if (this.is('rtl')) {\n return pattern.split(token).join(FLIPED_MOVEMENTS[token]);\n }\n\n return pattern;\n },\n\n\n /**\n * Checks value of direction mode.\n *\n * @param {String} direction\n * @returns {Boolean}\n */\n is: function is(direction) {\n return this.value === direction;\n },\n\n\n /**\n * Applies direction class to the root HTML element.\n *\n * @return {Void}\n */\n addClass: function addClass() {\n Components.Html.root.classList.add(Glide.settings.classes.direction[this.value]);\n },\n\n\n /**\n * Removes direction class from the root HTML element.\n *\n * @return {Void}\n */\n removeClass: function removeClass() {\n Components.Html.root.classList.remove(Glide.settings.classes.direction[this.value]);\n }\n };\n\n define(Direction, 'value', {\n /**\n * Gets value of the direction.\n *\n * @returns {Number}\n */\n get: function get() {\n return Direction._v;\n },\n\n\n /**\n * Sets value of the direction.\n *\n * @param {String} value\n * @return {Void}\n */\n set: function set(value) {\n if (VALID_DIRECTIONS.indexOf(value) > -1) {\n Direction._v = value;\n } else {\n warn('Direction value must be `ltr` or `rtl`');\n }\n }\n });\n\n /**\n * Clear direction class:\n * - on destroy to bring HTML to its initial state\n * - on update to remove class before reappling bellow\n */\n Events.on(['destroy', 'update'], function () {\n Direction.removeClass();\n });\n\n /**\n * Remount component:\n * - on update to reflect changes in direction value\n */\n Events.on('update', function () {\n Direction.mount();\n });\n\n /**\n * Apply direction class:\n * - before building to apply class for the first time\n * - on updating to reapply direction class that may changed\n */\n Events.on(['build.before', 'update'], function () {\n Direction.addClass();\n });\n\n return Direction;\n }\n\n /**\n * Reflects value of glide movement.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n function Rtl (Glide, Components) {\n return {\n /**\n * Negates the passed translate if glide is in RTL option.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Components.Direction.is('rtl')) {\n return -translate;\n }\n\n return translate;\n }\n };\n }\n\n /**\n * Updates glide movement with a `gap` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n function Gap (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with number in the `gap` settings.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n return translate + Components.Gaps.value * Glide.index;\n }\n };\n }\n\n /**\n * Updates glide movement with width of additional clones width.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n function Grow (Glide, Components) {\n return {\n /**\n * Adds to the passed translate width of the half of clones.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n return translate + Components.Clones.grow / 2;\n }\n };\n }\n\n /**\n * Updates glide movement with a `peek` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n function Peeking (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with a `peek` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Glide.settings.focusAt >= 0) {\n var peek = Components.Peek.value;\n\n if (isObject(peek)) {\n return translate - peek.before;\n }\n\n return translate - peek;\n }\n\n return translate;\n }\n };\n }\n\n /**\n * Updates glide movement with a `focusAt` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n function Focusing (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with index in the `focusAt` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var gap = Components.Gaps.value;\n var width = Components.Sizes.width;\n var focusAt = Glide.settings.focusAt;\n var slideWidth = Components.Sizes.slideWidth;\n\n if (focusAt === 'center') {\n return translate - (width / 2 - slideWidth / 2);\n }\n\n return translate - slideWidth * focusAt - gap * focusAt;\n }\n };\n }\n\n /**\n * Applies diffrent transformers on translate value.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n function mutator (Glide, Components, Events) {\n /**\n * Merge instance transformers with collection of default transformers.\n * It's important that the Rtl component be last on the list,\n * so it reflects all previous transformations.\n *\n * @type {Array}\n */\n var TRANSFORMERS = [Gap, Grow, Peeking, Focusing].concat(Glide._t, [Rtl]);\n\n return {\n /**\n * Piplines translate value with registered transformers.\n *\n * @param {Number} translate\n * @return {Number}\n */\n mutate: function mutate(translate) {\n for (var i = 0; i < TRANSFORMERS.length; i++) {\n var transformer = TRANSFORMERS[i];\n\n if (isFunction(transformer) && isFunction(transformer().modify)) {\n translate = transformer(Glide, Components, Events).modify(translate);\n } else {\n warn('Transformer should be a function that returns an object with `modify()` method');\n }\n }\n\n return translate;\n }\n };\n }\n\n function Translate (Glide, Components, Events) {\n var Translate = {\n /**\n * Sets value of translate on HTML element.\n *\n * @param {Number} value\n * @return {Void}\n */\n set: function set(value) {\n var transform = mutator(Glide, Components).mutate(value);\n\n Components.Html.wrapper.style.transform = 'translate3d(' + -1 * transform + 'px, 0px, 0px)';\n },\n\n\n /**\n * Removes value of translate from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transform = '';\n }\n };\n\n /**\n * Set new translate value:\n * - on move to reflect index change\n * - on updating via API to reflect possible changes in options\n */\n Events.on('move', function (context) {\n var gap = Components.Gaps.value;\n var length = Components.Sizes.length;\n var width = Components.Sizes.slideWidth;\n\n if (Glide.isType('carousel') && Components.Run.isOffset('<')) {\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n\n Translate.set(width * (length - 1));\n });\n\n return Translate.set(-width - gap * length);\n }\n\n if (Glide.isType('carousel') && Components.Run.isOffset('>')) {\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n\n Translate.set(0);\n });\n\n return Translate.set(width * length + gap * length);\n }\n\n return Translate.set(context.movement);\n });\n\n /**\n * Remove translate:\n * - on destroying to bring markup to its inital state\n */\n Events.on('destroy', function () {\n Translate.remove();\n });\n\n return Translate;\n }\n\n function Transition (Glide, Components, Events) {\n /**\n * Holds inactivity status of transition.\n * When true transition is not applied.\n *\n * @type {Boolean}\n */\n var disabled = false;\n\n var Transition = {\n /**\n * Composes string of the CSS transition.\n *\n * @param {String} property\n * @return {String}\n */\n compose: function compose(property) {\n var settings = Glide.settings;\n\n if (!disabled) {\n return property + ' ' + this.duration + 'ms ' + settings.animationTimingFunc;\n }\n\n return property + ' 0ms ' + settings.animationTimingFunc;\n },\n\n\n /**\n * Sets value of transition on HTML element.\n *\n * @param {String=} property\n * @return {Void}\n */\n set: function set() {\n var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n\n Components.Html.wrapper.style.transition = this.compose(property);\n },\n\n\n /**\n * Removes value of transition from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transition = '';\n },\n\n\n /**\n * Runs callback after animation.\n *\n * @param {Function} callback\n * @return {Void}\n */\n after: function after(callback) {\n setTimeout(function () {\n callback();\n }, this.duration);\n },\n\n\n /**\n * Enable transition.\n *\n * @return {Void}\n */\n enable: function enable() {\n disabled = false;\n\n this.set();\n },\n\n\n /**\n * Disable transition.\n *\n * @return {Void}\n */\n disable: function disable() {\n disabled = true;\n\n this.set();\n }\n };\n\n define(Transition, 'duration', {\n /**\n * Gets duration of the transition based\n * on currently running animation type.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n\n if (Glide.isType('slider') && Components.Run.offset) {\n return settings.rewindDuration;\n }\n\n return settings.animationDuration;\n }\n });\n\n /**\n * Set transition `style` value:\n * - on each moving, because it may be cleared by offset move\n */\n Events.on('move', function () {\n Transition.set();\n });\n\n /**\n * Disable transition:\n * - before initial build to avoid transitioning from `0` to `startAt` index\n * - while resizing window and recalculating dimentions\n * - on jumping from offset transition at start and end edges in `carousel` type\n */\n Events.on(['build.before', 'resize', 'translate.jump'], function () {\n Transition.disable();\n });\n\n /**\n * Enable transition:\n * - on each running, because it may be disabled by offset move\n */\n Events.on('run', function () {\n Transition.enable();\n });\n\n /**\n * Remove transition:\n * - on destroying to bring markup to its inital state\n */\n Events.on('destroy', function () {\n Transition.remove();\n });\n\n return Transition;\n }\n\n /**\n * Test via a getter in the options object to see\n * if the passive property is accessed.\n *\n * @see https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n */\n\n var supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n } catch (e) {}\n\n var supportsPassive$1 = supportsPassive;\n\n var START_EVENTS = ['touchstart', 'mousedown'];\n var MOVE_EVENTS = ['touchmove', 'mousemove'];\n var END_EVENTS = ['touchend', 'touchcancel', 'mouseup', 'mouseleave'];\n var MOUSE_EVENTS = ['mousedown', 'mousemove', 'mouseup', 'mouseleave'];\n\n function Swipe (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var swipeSin = 0;\n var swipeStartX = 0;\n var swipeStartY = 0;\n var disabled = false;\n var capture = supportsPassive$1 ? { passive: true } : false;\n\n var Swipe = {\n /**\n * Initializes swipe bindings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bindSwipeStart();\n },\n\n\n /**\n * Handler for `swipestart` event. Calculates entry points of the user's tap.\n *\n * @param {Object} event\n * @return {Void}\n */\n start: function start(event) {\n if (!disabled && !Glide.disabled) {\n this.disable();\n\n var swipe = this.touches(event);\n\n swipeSin = null;\n swipeStartX = toInt(swipe.pageX);\n swipeStartY = toInt(swipe.pageY);\n\n this.bindSwipeMove();\n this.bindSwipeEnd();\n\n Events.emit('swipe.start', {\n \"move\": -1, \n \"instance\": Glide\n });\n }\n },\n\n\n /**\n * Handler for `swipemove` event. Calculates user's tap angle and distance.\n *\n * @param {Object} event\n */\n move: function move(event) {\n if (!Glide.disabled) {\n var _Glide$settings = Glide.settings,\n touchAngle = _Glide$settings.touchAngle,\n touchRatio = _Glide$settings.touchRatio,\n classes = _Glide$settings.classes;\n\n\n var swipe = this.touches(event);\n\n var subExSx = toInt(swipe.pageX) - swipeStartX;\n var subEySy = toInt(swipe.pageY) - swipeStartY;\n var powEX = Math.abs(subExSx << 2);\n var powEY = Math.abs(subEySy << 2);\n var swipeHypotenuse = Math.sqrt(powEX + powEY);\n var swipeCathetus = Math.sqrt(powEY);\n\n swipeSin = Math.asin(swipeCathetus / swipeHypotenuse);\n\n if (swipeSin * 180 / Math.PI < touchAngle) {\n event.stopPropagation();\n\n Components.Move.make(subExSx * toFloat(touchRatio));\n\n Components.Html.root.classList.add(classes.dragging);\n\n Events.emit('swipe.move', {\n \"move\": -1, \n \"instance\": Glide\n });\n } else {\n return false;\n }\n }\n },\n\n\n /**\n * Handler for `swipeend` event. Finitializes user's tap and decides about glide move.\n *\n * @param {Object} event\n * @return {Void}\n */\n end: function end(event) {\n if (!Glide.disabled) {\n var settings = Glide.settings;\n\n var swipe = this.touches(event);\n var threshold = this.threshold(event);\n\n var swipeDistance = swipe.pageX - swipeStartX;\n var swipeDeg = swipeSin * 180 / Math.PI;\n var steps = Math.round(swipeDistance / Components.Sizes.slideWidth);\n\n this.enable();\n\n if (swipeDistance > threshold && swipeDeg < settings.touchAngle) {\n // While swipe is positive and greater than threshold move backward.\n if (settings.perTouch) {\n steps = Math.min(steps, toInt(settings.perTouch));\n }\n\n if (Components.Direction.is('rtl')) {\n steps = -steps;\n }\n\n if(settings.type == \"slider\" && Glide.index - steps < 0)\n Components.Run.make(Components.Direction.resolve('<<'));\n else\n Components.Run.make(Components.Direction.resolve('<' + steps));\n } else if (swipeDistance < -threshold && swipeDeg < settings.touchAngle) {\n // While swipe is negative and lower than negative threshold move forward.\n if (settings.perTouch) {\n steps = Math.max(steps, -toInt(settings.perTouch));\n }\n\n if (Components.Direction.is('rtl')) {\n steps = -steps;\n }\n \n if(settings.type == \"slider\" && toInt(settings.perView) + Math.abs(steps) >= parseInt(Glide.selector.dataset.totalItems) - 1)\n Components.Run.make(Components.Direction.resolve('>>'));\n else\n Components.Run.make(Components.Direction.resolve('>' + steps));\n } else {\n // While swipe don't reach distance apply previous transform.\n Components.Move.make();\n }\n\n Components.Html.root.classList.remove(settings.classes.dragging);\n\n this.unbindSwipeMove();\n this.unbindSwipeEnd();\n\n Events.emit('swipe.end', {\n \"move\": steps, \n \"instance\": Glide\n });\n }\n },\n\n\n /**\n * Binds swipe's starting event.\n *\n * @return {Void}\n */\n bindSwipeStart: function bindSwipeStart() {\n var _this = this;\n\n var settings = Glide.settings;\n\n if (settings.swipeThreshold) {\n Binder.on(START_EVENTS[0], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n\n if (settings.dragThreshold) {\n Binder.on(START_EVENTS[1], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n },\n\n\n /**\n * Unbinds swipe's starting event.\n *\n * @return {Void}\n */\n unbindSwipeStart: function unbindSwipeStart() {\n Binder.off(START_EVENTS[0], Components.Html.wrapper, capture);\n Binder.off(START_EVENTS[1], Components.Html.wrapper, capture);\n },\n\n\n /**\n * Binds swipe's moving event.\n *\n * @return {Void}\n */\n bindSwipeMove: function bindSwipeMove() {\n var _this2 = this;\n\n Binder.on(MOVE_EVENTS, Components.Html.wrapper, throttle(function (event) {\n _this2.move(event);\n }, Glide.settings.throttle), capture);\n },\n\n\n /**\n * Unbinds swipe's moving event.\n *\n * @return {Void}\n */\n unbindSwipeMove: function unbindSwipeMove() {\n Binder.off(MOVE_EVENTS, Components.Html.wrapper, capture);\n },\n\n\n /**\n * Binds swipe's ending event.\n *\n * @return {Void}\n */\n bindSwipeEnd: function bindSwipeEnd() {\n var _this3 = this;\n\n Binder.on(END_EVENTS, Components.Html.wrapper, function (event) {\n _this3.end(event);\n });\n },\n\n\n /**\n * Unbinds swipe's ending event.\n *\n * @return {Void}\n */\n unbindSwipeEnd: function unbindSwipeEnd() {\n Binder.off(END_EVENTS, Components.Html.wrapper);\n },\n\n\n /**\n * Normalizes event touches points accorting to different types.\n *\n * @param {Object} event\n */\n touches: function touches(event) {\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n\n /**\n * Gets value of minimum swipe distance settings based on event type.\n *\n * @return {Number}\n */\n threshold: function threshold(event) {\n var settings = Glide.settings;\n\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return settings.dragThreshold;\n }\n\n return settings.swipeThreshold;\n },\n\n\n /**\n * Enables swipe event.\n *\n * @return {self}\n */\n enable: function enable() {\n disabled = false;\n\n Components.Transition.enable();\n\n return this;\n },\n\n\n /**\n * Disables swipe event.\n *\n * @return {self}\n */\n disable: function disable() {\n disabled = true;\n\n Components.Transition.disable();\n\n return this;\n }\n };\n\n /**\n * Add component class:\n * - after initial building\n */\n Events.on('build.after', function () {\n Components.Html.root.classList.add(Glide.settings.classes.swipeable);\n });\n\n /**\n * Remove swiping bindings:\n * - on destroying, to remove added EventListeners\n */\n Events.on('destroy', function () {\n Swipe.unbindSwipeStart();\n Swipe.unbindSwipeMove();\n Swipe.unbindSwipeEnd();\n Binder.destroy();\n });\n\n return Swipe;\n }\n\n function Images (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var Images = {\n /**\n * Binds listener to glide wrapper.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bind();\n },\n\n\n /**\n * Binds `dragstart` event on wrapper to prevent dragging images.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('dragstart', Components.Html.wrapper, this.dragstart);\n },\n\n\n /**\n * Unbinds `dragstart` event on wrapper.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('dragstart', Components.Html.wrapper);\n },\n\n\n /**\n * Event handler. Prevents dragging.\n *\n * @return {Void}\n */\n dragstart: function dragstart(event) {\n event.preventDefault();\n }\n };\n\n /**\n * Remove bindings from images:\n * - on destroying, to remove added EventListeners\n */\n Events.on('destroy', function () {\n Images.unbind();\n Binder.destroy();\n });\n\n return Images;\n }\n\n function Anchors (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n /**\n * Holds detaching status of anchors.\n * Prevents detaching of already detached anchors.\n *\n * @private\n * @type {Boolean}\n */\n var detached = false;\n\n /**\n * Holds preventing status of anchors.\n * If `true` redirection after click will be disabled.\n *\n * @private\n * @type {Boolean}\n */\n var prevented = false;\n\n var Anchors = {\n /**\n * Setups a initial state of anchors component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n /**\n * Holds collection of anchors elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._a = Components.Html.wrapper.querySelectorAll('a');\n\n this.bind();\n },\n\n\n /**\n * Binds events to anchors inside a track.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('click', Components.Html.wrapper, this.click);\n },\n\n\n /**\n * Unbinds events attached to anchors inside a track.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('click', Components.Html.wrapper);\n },\n\n\n /**\n * Handler for click event. Prevents clicks when glide is in `prevent` status.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n if (prevented) {\n event.stopPropagation();\n event.preventDefault();\n }\n },\n\n\n /**\n * Detaches anchors click event inside glide.\n *\n * @return {self}\n */\n detach: function detach() {\n prevented = true;\n\n if (!detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = false;\n //THIS ONE CAUSES THE BLINK ISSUE\n // this.items[i].setAttribute('data-href', this.items[i].getAttribute('href'));\n\n // this.items[i].removeAttribute('href');\n }\n\n detached = true;\n }\n\n return this;\n },\n\n\n /**\n * Attaches anchors click events inside glide.\n *\n * @return {self}\n */\n attach: function attach() {\n prevented = false;\n\n if (detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = true;\n //THIS ONE CAUSES THE BLINK ISSUE\n // this.items[i].setAttribute('href', this.items[i].getAttribute('data-href'));\n }\n\n detached = false;\n }\n\n return this;\n }\n };\n\n define(Anchors, 'items', {\n /**\n * Gets collection of the arrows HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Anchors._a;\n }\n });\n\n /**\n * Detach anchors inside slides:\n * - on swiping, so they won't redirect to its `href` attributes\n */\n Events.on('swipe.move', function () {\n Anchors.detach();\n });\n\n /**\n * Attach anchors inside slides:\n * - after swiping and transitions ends, so they can redirect after click again\n */\n Events.on('swipe.end', function () {\n Components.Transition.after(function () {\n Anchors.attach();\n });\n });\n\n /**\n * Unbind anchors inside slides:\n * - on destroying, to bring anchors to its initial state\n */\n Events.on('destroy', function () {\n Anchors.attach();\n Anchors.unbind();\n Binder.destroy();\n });\n\n return Anchors;\n }\n\n var NAV_SELECTOR = '[data-glide-el=\"controls[nav]\"]';\n var CONTROLS_SELECTOR = '[data-glide-el^=\"controls\"]';\n\n function Controls (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var capture = supportsPassive$1 ? { passive: true } : false;\n\n var Controls = {\n /**\n * Inits arrows. Binds events listeners\n * to the arrows HTML elements.\n *\n * @return {Void}\n */\n mount: function mount() {\n /**\n * Collection of navigation HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._n = Components.Html.root.querySelectorAll(NAV_SELECTOR);\n\n /**\n * Collection of controls HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._c = Components.Html.root.querySelectorAll(CONTROLS_SELECTOR);\n\n this.addBindings();\n },\n\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n setActive: function setActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.addClass(this._n[i].children);\n }\n },\n\n\n /**\n * Removes active class to current slide.\n *\n * @return {Void}\n */\n removeActive: function removeActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.removeClass(this._n[i].children);\n }\n },\n\n\n /**\n * Toggles active class on items inside navigation.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n addClass: function addClass(controls) {\n var settings = Glide.settings;\n var item = controls[Glide.index];\n\n if (item) {\n item.classList.add(settings.classes.activeNav);\n\n siblings(item).forEach(function (sibling) {\n sibling.classList.remove(settings.classes.activeNav);\n });\n }\n },\n\n\n /**\n * Removes active class from active control.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n removeClass: function removeClass(controls) {\n var item = controls[Glide.index];\n\n if (item) {\n item.classList.remove(Glide.settings.classes.activeNav);\n }\n },\n\n\n /**\n * Adds handles to the each group of controls.\n *\n * @return {Void}\n */\n addBindings: function addBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.bind(this._c[i].children);\n }\n },\n\n\n /**\n * Removes handles from the each group of controls.\n *\n * @return {Void}\n */\n removeBindings: function removeBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.unbind(this._c[i].children);\n }\n },\n\n\n /**\n * Binds events to arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n bind: function bind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.on('click', elements[i], this.click);\n Binder.on('touchstart', elements[i], this.click, capture);\n }\n },\n\n\n /**\n * Unbinds events binded to the arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n unbind: function unbind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.off(['click', 'touchstart'], elements[i]);\n }\n },\n\n\n /**\n * Handles `click` event on the arrows HTML elements.\n * Moves slider in driection precised in\n * `data-glide-dir` attribute.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n event.preventDefault();\n\n Components.Run.make(Components.Direction.resolve(event.currentTarget.getAttribute('data-glide-dir')));\n }\n };\n\n define(Controls, 'items', {\n /**\n * Gets collection of the controls HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Controls._c;\n }\n });\n\n /**\n * Swap active class of current navigation item:\n * - after mounting to set it to initial index\n * - after each move to the new index\n */\n Events.on(['mount.after', 'move.after'], function () {\n Controls.setActive();\n });\n\n /**\n * Remove bindings and HTML Classes:\n * - on destroying, to bring markup to its initial state\n */\n Events.on('destroy', function () {\n Controls.removeBindings();\n Controls.removeActive();\n Binder.destroy();\n });\n\n return Controls;\n }\n\n function Keyboard (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var Keyboard = {\n /**\n * Binds keyboard events on component mount.\n *\n * @return {Void}\n */\n mount: function mount() {\n if (Glide.settings.keyboard) {\n this.bind();\n }\n },\n\n\n /**\n * Adds keyboard press events.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('keyup', document, this.press);\n },\n\n\n /**\n * Removes keyboard press events.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('keyup', document);\n },\n\n\n /**\n * Handles keyboard's arrows press and moving glide foward and backward.\n *\n * @param {Object} event\n * @return {Void}\n */\n press: function press(event) {\n if (event.keyCode === 39) {\n Components.Run.make(Components.Direction.resolve('>'));\n }\n\n if (event.keyCode === 37) {\n Components.Run.make(Components.Direction.resolve('<'));\n }\n }\n };\n\n /**\n * Remove bindings from keyboard:\n * - on destroying to remove added events\n * - on updating to remove events before remounting\n */\n Events.on(['destroy', 'update'], function () {\n Keyboard.unbind();\n });\n\n /**\n * Remount component\n * - on updating to reflect potential changes in settings\n */\n Events.on('update', function () {\n Keyboard.mount();\n });\n\n /**\n * Destroy binder:\n * - on destroying to remove listeners\n */\n Events.on('destroy', function () {\n Binder.destroy();\n });\n\n return Keyboard;\n }\n\n function Autoplay (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var Autoplay = {\n /**\n * Initializes autoplaying and events.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.start();\n\n if (Glide.settings.hoverpause) {\n this.bind();\n }\n },\n\n\n /**\n * Starts autoplaying in configured interval.\n *\n * @param {Boolean|Number} force Run autoplaying with passed interval regardless of `autoplay` settings\n * @return {Void}\n */\n start: function start() {\n var _this = this;\n\n if (Glide.settings.autoplay) {\n if (isUndefined(this._i)) {\n this._i = setInterval(function () {\n _this.stop();\n\n Components.Run.make('>');\n\n _this.start();\n }, this.time);\n }\n }\n },\n\n\n /**\n * Stops autorunning of the glide.\n *\n * @return {Void}\n */\n stop: function stop() {\n this._i = clearInterval(this._i);\n },\n\n\n /**\n * Stops autoplaying while mouse is over glide's area.\n *\n * @return {Void}\n */\n bind: function bind() {\n var _this2 = this;\n\n Binder.on('mouseover', Components.Html.root, function () {\n _this2.stop();\n });\n\n Binder.on('mouseout', Components.Html.root, function () {\n _this2.start();\n });\n },\n\n\n /**\n * Unbind mouseover events.\n *\n * @returns {Void}\n */\n unbind: function unbind() {\n Binder.off(['mouseover', 'mouseout'], Components.Html.root);\n }\n };\n\n define(Autoplay, 'time', {\n /**\n * Gets time period value for the autoplay interval. Prioritizes\n * times in `data-glide-autoplay` attrubutes over options.\n *\n * @return {Number}\n */\n get: function get() {\n var autoplay = Components.Html.slides[Glide.index].getAttribute('data-glide-autoplay');\n\n if (autoplay) {\n return toInt(autoplay);\n }\n\n return toInt(Glide.settings.autoplay);\n }\n });\n\n /**\n * Stop autoplaying and unbind events:\n * - on destroying, to clear defined interval\n * - on updating via API to reset interval that may changed\n */\n Events.on(['destroy', 'update'], function () {\n Autoplay.unbind();\n });\n\n /**\n * Stop autoplaying:\n * - before each run, to restart autoplaying\n * - on pausing via API\n * - on destroying, to clear defined interval\n * - while starting a swipe\n * - on updating via API to reset interval that may changed\n */\n Events.on(['run.before', 'pause', 'destroy', 'swipe.start', 'update'], function () {\n Autoplay.stop();\n });\n\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n Events.on(['run.after', 'play', 'swipe.end'], function () {\n Autoplay.start();\n });\n\n /**\n * Remount autoplaying:\n * - on updating via API to reset interval that may changed\n */\n Events.on('update', function () {\n Autoplay.mount();\n });\n\n /**\n * Destroy a binder:\n * - on destroying glide instance to clearup listeners\n */\n Events.on('destroy', function () {\n Binder.destroy();\n });\n\n return Autoplay;\n }\n\n /**\n * Sorts keys of breakpoint object so they will be ordered from lower to bigger.\n *\n * @param {Object} points\n * @returns {Object}\n */\n function sortBreakpoints(points) {\n if (isObject(points)) {\n return sortKeys(points);\n } else {\n warn('Breakpoints option must be an object');\n }\n\n return {};\n }\n\n function Breakpoints (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n /**\n * Holds reference to settings.\n *\n * @type {Object}\n */\n var settings = Glide.settings;\n\n /**\n * Holds reference to breakpoints object in settings. Sorts breakpoints\n * from smaller to larger. It is required in order to proper\n * matching currently active breakpoint settings.\n *\n * @type {Object}\n */\n var points = sortBreakpoints(settings.breakpoints);\n\n /**\n * Cache initial settings before overwritting.\n *\n * @type {Object}\n */\n var defaults = _extends({}, settings);\n\n var Breakpoints = {\n /**\n * Matches settings for currectly matching media breakpoint.\n *\n * @param {Object} points\n * @returns {Object}\n */\n match: function match(points) {\n if (typeof window.matchMedia !== 'undefined') {\n for (var point in points) {\n if (points.hasOwnProperty(point)) {\n if (window.matchMedia('(max-width: ' + point + 'px)').matches) {\n return points[point];\n }\n }\n }\n }\n\n return defaults;\n }\n };\n\n /**\n * Overwrite instance settings with currently matching breakpoint settings.\n * This happens right after component initialization.\n */\n _extends(settings, Breakpoints.match(points));\n\n /**\n * Update glide with settings of matched brekpoint:\n * - window resize to update slider\n */\n Binder.on('resize', window, throttle(function () {\n Glide.settings = mergeOptions(settings, Breakpoints.match(points));\n }, Glide.settings.throttle));\n\n /**\n * Resort and update default settings:\n * - on reinit via API, so breakpoint matching will be performed with options\n */\n Events.on('update', function () {\n points = sortBreakpoints(points);\n\n defaults = _extends({}, settings);\n });\n\n /**\n * Unbind resize listener:\n * - on destroying, to bring markup to its initial state\n */\n Events.on('destroy', function () {\n Binder.off('resize', window);\n });\n\n return Breakpoints;\n }\n\n var COMPONENTS = {\n // Required\n Html: Html,\n Translate: Translate,\n Transition: Transition,\n Direction: Direction,\n Peek: Peek,\n Sizes: Sizes,\n Gaps: Gaps,\n Move: Move,\n Clones: Clones,\n Resize: Resize,\n Build: Build,\n Run: Run,\n\n // Optional\n Swipe: Swipe,\n Images: Images,\n Anchors: Anchors,\n Controls: Controls,\n Keyboard: Keyboard,\n Autoplay: Autoplay,\n Breakpoints: Breakpoints\n };\n\n var Glide$1 = function (_Core) {\n inherits(Glide$$1, _Core);\n\n function Glide$$1() {\n classCallCheck(this, Glide$$1);\n return possibleConstructorReturn(this, (Glide$$1.__proto__ || Object.getPrototypeOf(Glide$$1)).apply(this, arguments));\n }\n\n createClass(Glide$$1, [{\n key: 'mount',\n value: function mount() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n return get(Glide$$1.prototype.__proto__ || Object.getPrototypeOf(Glide$$1.prototype), 'mount', this).call(this, _extends({}, COMPONENTS, extensions));\n }\n }]);\n return Glide$$1;\n }(Glide);\n\n return Glide$1;\n\n})));\nclass GTHelper {\n constructor() {}\n\n validateEmail(email){\n return String(email)\n .toLowerCase()\n .match(\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|.(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n );\n };\n\n \n detectDOMChange(parentElement, callback){\n let observer = new MutationObserver(function(mutations) {\n let hasChangeNode = false;\n mutations.forEach(mutation => {\n if(mutation.addedNodes.length)\n hasChangeNode = true;\n })\n\n if(hasChangeNode) {\n callback && callback(mutations);\n }\n });\n\n observer.observe(parentElement, {childList: true, subtree: true});\n }\n\n dispatchEvt(name, elm, data) {\n const evt = new CustomEvent(name, {\n bubbles: true,\n detail: data,\n });\n elm.dispatchEvent(evt);\n }\n}\nclass HttpService {\n METHODS = {\n DELETE: \"delete\",\n GET: \"get\",\n PUT: \"put\",\n POST: \"post\",\n UPLOAD: \"uploadFile\",\n PATCH: \"patch\"\n }\n\n constructor() { }\n\n sendRequest(method, url, data = null, requestHeaders = {}, isAsync = true, xhr = null) {\n return new Promise(function (resolve, reject) {\n xhr = xhr || new XMLHttpRequest();\n if (method == \"POST_FILE\") {\n xhr.open(\"POST\", url, isAsync);\n /*xhr.setRequestHeader('Content-type', 'multipart/form-data');*/\n } else {\n xhr.open(method, url, isAsync);\n xhr.setRequestHeader('Content-type', 'application/json; charset=UTF-8');\n }\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n //\n let body = document.getElementsByTagName('body');\n let fromPage = 0;\n if (body != undefined && body.length > 0) {\n fromPage = body[0].getAttribute('p');\n }\n xhr.setRequestHeader('bro-p', fromPage);\n\n if (requestHeaders) {\n Object.keys(requestHeaders).forEach(headerKey => {\n xhr.setRequestHeader(headerKey, requestHeaders[headerKey]);\n });\n }\n\n //Add default forgery token to header of post method\n if (!requestHeaders || !requestHeaders.hasOwnProperty('RequestVerificationToken')) {\n let tokens = document.getElementsByName('__RequestVerificationToken');\n if (tokens != null && tokens != undefined && tokens.length > 0) {\n xhr.setRequestHeader('RequestVerificationToken', tokens[0]?.value);\n }\n }\n \n xhr.onload = function () {\n try {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve(xhr.responseText ? JSON.parse(xhr.responseText) : {});\n } else {\n let resError = {};\n resError = JSON.parse(xhr.responseText);\n resolve(Object.assign({\n status: xhr.status,\n statusText: xhr.statusText,\n error: true\n }, resError));\n }\n } catch (error) {\n resolve({\n status: xhr.status,\n statusText: xhr.statusText,\n error: true\n });\n console.error(\"Content is malformed \", error);\n }\n };\n xhr.onerror = function (e) {\n reject({\n status: xhr.status,\n statusText: xhr.statusText\n });\n };\n \n if (method == \"POST_FILE\") {\n xhr.send(data);\n } else {\n xhr.send(data ? JSON.stringify(data) : null);\n }\n });\n }\n\n getHtmlContent(url, data = null, requestHeaders = {}, isAsync = true) {\n return new Promise(function (resolve, reject) {\n let xhr = new XMLHttpRequest();\n xhr.open('GET', url, isAsync);\n xhr.setRequestHeader('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9');\n if (requestHeaders) {\n Object.keys(requestHeaders).forEach(headerKey => {\n xhr.setRequestHeader(headerKey, requestHeaders['headerKey']);\n });\n }\n xhr.onload = function () {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve(xhr.responseText);\n } else {\n reject({\n status: xhr.status,\n statusText: xhr.statusText\n });\n }\n };\n xhr.onerror = function () {\n reject({\n status: xhr.status,\n statusText: xhr.statusText\n });\n };\n xhr.send(JSON.stringify(data));\n });\n }\n \n get(url, data, requestHeaders, isAsync = true, xhr = null) {\n return this.sendRequest('GET', url, data, requestHeaders, isAsync, xhr);\n }\n\n post(url, data, requestHeaders, isAsync = true, xhr = null) {\n return this.sendRequest('POST', url, data, requestHeaders, isAsync, xhr);\n }\n\n patch(url, data, requestHeaders, isAsync = true, xhr = null) {\n return this.sendRequest('PATCH', url, data, requestHeaders, isAsync, xhr);\n }\n\n uploadFile(url, data, requestHeaders, isAsync = true, xhr = null) {\n return this.sendRequest('POST_FILE', url, data, requestHeaders, isAsync, xhr);\n }\n \n put(url, data, requestHeaders, isAsync = true, xhr = null) {\n return this.sendRequest('PUT', url, data, requestHeaders, isAsync, xhr);\n }\n\n update(url, data, requestHeaders, isAsync = true, xhr = null) {\n return this.sendRequest('PUT', url, data, requestHeaders, isAsync, xhr);\n }\n\n delete(url, data, requestHeaders, isAsync = true, xhr = null) {\n return this.sendRequest('DELETE', url, data, requestHeaders, isAsync, xhr);\n }\n\n getPromise(method, endPoint, data, isAsync, doNotShowErrorMSG){\n let self = this;\n return new Promise((resolve, reject) => {\n self[method](endPoint, data, null, isAsync)\n .then(res => {\n if(!doNotShowErrorMSG && res.error && res.message) {\n // BN.toastService.displayToast(res.message, \"error\");\n }\n resolve(res);\n }\n )\n .catch(e => {\n // BN.toastService.displayToast(\"Something wrong!\", \"error\");\n console.log(e);\n reject(e);\n });\n });\n }\n\n getPromiseWithoutMSG(method, endPoint, data, isAsync){\n return this.getPromise(method, endPoint, data, isAsync, true);\n }\n}\n/*!\n * jQuery Validation Plugin v1.17.0\n *\n * https://jqueryvalidation.org/\n *\n * Copyright (c) 2017 Jörn Zaefferer\n * Released under the MIT license\n * \n * Edited: 2018 by Szymon Grzybek, POSSIBLE\n */\n\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n$.extend( $.fn, {\n\n\t// https://jqueryvalidation.org/validate/\n\tvalidate: function( options ) {\n\n\t\t// If nothing is selected, return nothing; can't chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if a validator for this form was already created\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\n\t\tvalidator = new $.validator( options, this[ 0 ] );\n\t\t$.data( this[ 0 ], \"validator\", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\n\n\t\t\t\t// Track the used submit button to properly handle scripted\n\t\t\t\t// submits later.\n\t\t\t\tvalidator.submitButton = event.currentTarget;\n\n\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\n\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Validate the form on submit\n\t\t\tthis.on( \"submit.validate\", function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\n\t\t\t\t\t// Prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden, result;\n\n\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t// The hidden input is inserted in two cases:\n\t\t\t\t\t// - A user defined a `submitHandler`\n\t\t\t\t\t// - There was a pending request due to `remote` method and `stopRequest()`\n\t\t\t\t\t// was called to submit the form in case it's valid\n\t\t\t\t\tif ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {\n\t\t\t\t\t\thidden = $( \"\" )\n\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\n\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\n\t\t\t\t\t\t\t.appendTo( validator.currentForm );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( validator.settings.submitHandler ) {\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( hidden ) {\n\n\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( result !== undefined ) {\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn validator;\n\t},\n\n\t// https://jqueryvalidation.org/valid/\n\tvalid: function() {\n\t\tvar valid, validator, errorList;\n\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\n\t\t\tvalid = this.validate().form();\n\t\t} else {\n\t\t\terrorList = [];\n\t\t\tvalid = true;\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\n\t\t\tthis.each( function() {\n\t\t\t\tvalid = validator.element( this ) && valid;\n\t\t\t\tif ( !valid ) {\n\t\t\t\t\terrorList = errorList.concat( validator.errorList );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tvalidator.errorList = errorList;\n\t\t}\n\t\treturn valid;\n\t},\n\n\t// https://jqueryvalidation.org/rules/\n\trules: function( command, argument ) {\n\t\tvar element = this[ 0 ],\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\n\n\t\t// If nothing is selected, return empty object; can't chain anyway\n\t\tif ( element == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !element.form && element.hasAttribute( \"contenteditable\" ) ) {\n\t\t\telement.form = this.closest( \"form\" )[ 0 ];\n\t\t\telement.name = this.attr( \"name\" );\n\t\t}\n\n\t\tif ( element.form == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( command ) {\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\n\t\t\tstaticRules = settings.rules;\n\t\t\texistingRules = $.validator.staticRules( element );\n\t\t\tswitch ( command ) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\n\n\t\t\t\t// Remove messages from rules, but allow them to be set separately\n\t\t\t\tdelete existingRules.messages;\n\t\t\t\tstaticRules[ element.name ] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[ element.name ];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tfiltered = {};\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\n\t\t\t\t\tdelete existingRules[ method ];\n\t\t\t\t} );\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tdata = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules( element ),\n\t\t\t$.validator.attributeRules( element ),\n\t\t\t$.validator.dataRules( element ),\n\t\t\t$.validator.staticRules( element )\n\t\t), element );\n\n\t\t// Make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tparam = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend( { required: param }, data );\n\t\t}\n\n\t\t// Make sure remote is at back\n\t\tif ( data.remote ) {\n\t\t\tparam = data.remote;\n\t\t\tdelete data.remote;\n\t\t\tdata = $.extend( data, { remote: param } );\n\t\t}\n\n\t\treturn data;\n\t}\n} );\n\n// Custom selectors\n$.extend( $.expr.pseudos || $.expr[ \":\" ], {\t\t// '|| $.expr[ \":\" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support\n\n\t// https://jqueryvalidation.org/blank-selector/\n\tblank: function( a ) {\n\t\treturn !$.trim( \"\" + $( a ).val() );\n\t},\n\n\t// https://jqueryvalidation.org/filled-selector/\n\tfilled: function( a ) {\n\t\tvar val = $( a ).val();\n\t\treturn val !== null && !!$.trim( \"\" + val );\n\t},\n\n\t// https://jqueryvalidation.org/unchecked-selector/\n\tunchecked: function( a ) {\n\t\treturn !$( a ).prop( \"checked\" );\n\t}\n} );\n\n// Constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n// https://jqueryvalidation.org/jQuery.validator.format/\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray( arguments );\n\t\t\targs.unshift( source );\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( params === undefined ) {\n\t\treturn source;\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\n\t\tparams = $.makeArray( arguments ).slice( 1 );\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each( params, function( i, n ) {\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\n\t\t\treturn n;\n\t\t} );\n\t} );\n\treturn source;\n};\n\n$.extend( $.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tpendingClass: \"pending\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusCleanup: false,\n\t\tfocusInvalid: true,\n\t\terrorContainer: $( [] ),\n\t\terrorLabelContainer: $( [] ),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tonfocusin: function( element ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// Hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element ) {\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\n\t\t\t// Shift => 16\n\t\t\t// Ctrl => 17\n\t\t\t// Alt => 18\n\t\t\t// Caps lock => 20\n\t\t\t// End => 35\n\t\t\t// Home => 36\n\t\t\t// Left arrow => 37\n\t\t\t// Up arrow => 38\n\t\t\t// Right arrow => 39\n\t\t\t// Down arrow => 40\n\t\t\t// Insert => 45\n\t\t\t// Num lock => 144\n\t\t\t// AltGr key => 225\n\t\t\tvar excludedKeys = [\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\n\t\t\t\t38, 39, 40, 45, 144, 225\n\t\t\t];\n\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonclick: function( element ) {\n\n\t\t\t// Click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element( element );\n\n\t\t\t// Or option elements, check parent select in that case\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element( element.parentNode );\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\n\t\t\t}\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.setDefaults/\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\n\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar groups = ( this.groups = {} ),\n\t\t\t\trules;\n\t\t\t$.each( this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\tvalue = value.split( /\\s/ );\n\t\t\t\t}\n\t\t\t\t$.each( value, function( index, name ) {\n\t\t\t\t\tgroups[ name ] = key;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\trules = this.settings.rules;\n\t\t\t$.each( rules, function( key, value ) {\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\n\t\t\t} );\n\n\t\t\tfunction delegate( event ) {\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( !this.form && this.hasAttribute( \"contenteditable\" ) ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = $( this ).attr( \"name\" );\n\t\t\t\t}\n\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\n\t\t\t\t\tsettings = validator.settings;\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\",\n\t\t\t\t\t\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], \" +\n\t\t\t\t\t\"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], \" +\n\t\t\t\t\t\"[type='radio'], [type='checkbox'], [contenteditable], [type='button']\", delegate )\n\n\t\t\t\t// Support: Chrome, oldIE\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\n\t\t\t\t.on( \"click.validate\", \"select, option, [type='radio'], [type='checkbox']\", delegate );\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.form/\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend( this.submitted, this.errorMap );\n\t\t\tthis.invalid = $.extend( {}, this.errorMap );\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\n\t\t\t\tthis.check( elements[ i ] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.element/\n\t\telement: function( element ) {\n\t\t\tvar cleanElement = this.clean( element ),\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\n\t\t\t\tv = this,\n\t\t\t\tresult = true,\n\t\t\t\trs, group;\n\n\t\t\tif ( checkElement === undefined ) {\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\n\t\t\t} else {\n\t\t\t\tthis.prepareElement( checkElement );\n\t\t\t\tthis.currentElements = $( checkElement );\n\n\t\t\t\t// If this element is grouped, then validate all group elements already\n\t\t\t\t// containing a value\n\t\t\t\tgroup = this.groups[ checkElement.name ];\n\t\t\t\tif ( group ) {\n\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\n\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\n\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\n\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\n\t\t\t\t\t\t\t\tv.currentElements.push( cleanElement );\n\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\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\trs = this.check( checkElement ) !== false;\n\t\t\t\tresult = result && rs;\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\n\t\t\t\t}\n\n\t\t\t\tif ( !this.numberOfInvalids() ) {\n\n\t\t\t\t\t// Hide error containers on last error\n\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t\t}\n\t\t\t\tthis.showErrors();\n\n\t\t\t\t// Add aria-invalid status for screen readers\n\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.showErrors/\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\tvar validator = this;\n\n\t\t\t\t// Add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\t// Remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !( element.name in errors );\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.resetForm/\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t}\n\t\t\tthis.invalid = {};\n\t\t\tthis.submitted = {};\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tvar elements = this.elements()\n\t\t\t\t.removeData( \"previousValue\" )\n\t\t\t\t.removeAttr( \"aria-invalid\" );\n\n\t\t\tthis.resetElements( elements );\n\t\t},\n\n\t\tresetElements: function( elements ) {\n\t\t\tvar i;\n\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\n\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telements\n\t\t\t\t\t.removeClass( this.settings.errorClass )\n\t\t\t\t\t.removeClass( this.settings.validClass );\n\t\t\t}\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength( this.invalid );\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\t/* jshint unused: false */\n\t\t\tvar count = 0,\n\t\t\t\ti;\n\t\t\tfor ( i in obj ) {\n\n\t\t\t\t// This check allows counting elements with empty error\n\t\t\t\t// message as invalid elements\n\t\t\t\tif ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.hideThese( this.toHide );\n\t\t},\n\n\t\thideThese: function( errors ) {\n\t\t\terrors.not( this.containers ).text( \"\" );\n\t\t\tthis.addWrapper( errors ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\n\t\t\t\t\t.filter( \":visible\" )\n\t\t\t\t\t.focus()\n\n\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger( \"focusin\" );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t} ).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $( this.currentForm )\n\t\t\t.find( \"input, select, textarea, [contenteditable]\" )\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter( function() {\n\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\n\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\n\t\t\t\t}\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( this.hasAttribute( \"contenteditable\" ) ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = name;\n\t\t\t\t}\n\n\t\t\t\t// Select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[ name ] = true;\n\t\t\t\treturn true;\n\t\t\t} );\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $( selector )[ 0 ];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t},\n\n\t\tresetInternals: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $( [] );\n\t\t\tthis.toHide = $( [] );\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.resetInternals();\n\t\t\tthis.currentElements = $( [] );\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor( element );\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar $element = $( element ),\n\t\t\t\ttype = element.type,\n\t\t\t\tval, idx;\n\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\n\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\n\t\t\t}\n\n\t\t\tif ( element.hasAttribute( \"contenteditable\" ) ) {\n\t\t\t\tval = $element.text();\n\t\t\t} else {\n\t\t\t\tval = $element.val();\n\t\t\t}\n\n\t\t\tif ( type === \"file\" ) {\n\n\t\t\t\t// Modern browser (chrome & safari)\n\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\n\t\t\t\t\treturn val.substr( 12 );\n\t\t\t\t}\n\n\t\t\t\t// Legacy browsers\n\t\t\t\t// Unix-based path\n\t\t\t\tidx = val.lastIndexOf( \"/\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Windows-based path\n\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Just the file name\n\t\t\t\treturn val;\n\t\t\t}\n\n\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\treturn val.replace( /\\r/g, \"\" );\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $( element ).rules(),\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\n\t\t\t\t\treturn i;\n\t\t\t\t} ).length,\n\t\t\t\tdependencyMismatch = false,\n\t\t\t\tval = this.elementValue( element ),\n\t\t\t\tresult, method, rule, normalizer;\n\n\t\t\t// Prioritize the local normalizer defined for this element over the global one\n\t\t\t// if the former exists, otherwise user the global one in case it exists.\n\t\t\tif ( typeof rules.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = rules.normalizer;\n\t\t\t} else if (\ttypeof this.settings.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = this.settings.normalizer;\n\t\t\t}\n\n\t\t\t// If normalizer is defined, then call it to retreive the changed value instead\n\t\t\t// of using the real one.\n\t\t\t// Note that `this` in the normalizer is `element`.\n\t\t\tif ( normalizer ) {\n\t\t\t\tval = normalizer.call( element, val );\n\n\t\t\t\tif ( typeof val !== \"string\" ) {\n\t\t\t\t\tthrow new TypeError( \"The normalizer should return a string value.\" );\n\t\t\t\t}\n\n\t\t\t\t// Delete the normalizer from rules to avoid treating it as a pre-defined method.\n\t\t\t\tdelete rules.normalizer;\n\t\t\t}\n\n\t\t\tfor ( method in rules ) {\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\n\t\t\t\ttry {\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t}\n\t\t\t\t\tif ( e instanceof TypeError ) {\n\t\t\t\t\t\te.message += \". Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength( rules ) ) {\n\t\t\t\tthis.successList.push( element );\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// Return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\t// return the generic message if present and no method specific message is present\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\n\t\t},\n\n\t\t// Return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[ name ];\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\n\t\t},\n\n\t\t// Return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\n\t\t\t\t\treturn arguments[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\n\t\t// of the following form:\n\t\t// rule = {\n\t\t// method: \"method name\",\n\t\t// parameters: \"the given method parameters\"\n\t\t// }\n\t\t//\n\t\t// The old behavior still supported, kept to maintain backward compatibility with\n\t\t// old code, and will be removed in the next major release.\n\t\tdefaultMessage: function( element, rule ) {\n\t\t\tif ( typeof rule === \"string\" ) {\n\t\t\t\trule = { method: rule };\n\t\t\t}\n\n\t\t\tvar message = this.findDefined(\n\t\t\t\t\tthis.customMessage( element.name, rule.method ),\n\t\t\t\t\tthis.customDataMessage( element, rule.method ),\n\n\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\n\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t\t$.validator.messages[ rule.method ],\n\t\t\t\t\t\"Warning: No message defined for \" + element.name + \"\"\n\t\t\t\t),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\n\t\t\t} else if ( theregex.test( message ) ) {\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\n\t\t\t}\n\n\t\t\treturn message;\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule );\n\n\t\t\tthis.errorList.push( {\n\t\t\t\tmessage: message,\n\t\t\t\telement: element,\n\t\t\t\tmethod: rule.method\n\t\t\t} );\n\n\t\t\tthis.errorMap[ element.name ] = message;\n\t\t\tthis.submitted[ element.name ] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements, error;\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\n\t\t\t\terror = this.errorList[ i ];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not( this.invalidElements() );\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $( this.errorList ).map( function() {\n\t\t\t\treturn this.element;\n\t\t\t} );\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar place, group, errorID, v,\n\t\t\t\terror = this.errorsFor( element ),\n\t\t\t\telementID = this.idOrName( element ),\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\n\t\t\tif ( error.length ) {\n\n\t\t\t\t// Refresh error/success class\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\n\t\t\t\t// Replace message on existing label\n\t\t\t\terror.html( message );\n\t\t\t} else {\n\n\t\t\t\t// Create error element\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\n\t\t\t\t\t.addClass( this.settings.errorClass )\n\t\t\t\t\t.html( message || \"\" );\n\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\n\t\t\t\tplace = error;\n\t\t\t\tif ( this.settings.wrapper ) {\n\n\t\t\t\t\t// Make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\n\t\t\t\t}\n\t\t\t\tif ( this.labelContainer.length ) {\n\t\t\t\t\tthis.labelContainer.append( place );\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\n\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\n\t\t\t\t} else {\n\t\t\t\t\tplace.insertAfter( element );\n\t\t\t\t}\n\n\t\t\t\t// Link error back to the element\n\t\t\t\tif ( error.is( \"label\" ) ) {\n\n\t\t\t\t\t// If the error is a label, then associate using 'for'\n\t\t\t\t\terror.attr( \"for\", elementID );\n\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\n\t\t\t\t\t// to explicitly apply aria-describedby\n\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\n\t\t\t\t\terrorID = error.attr( \"id\" );\n\n\t\t\t\t\t// Respect existing non-error aria-describedby\n\t\t\t\t\tif ( !describedBy ) {\n\t\t\t\t\t\tdescribedBy = errorID;\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\n\n\t\t\t\t\t\t// Add to end of list if not already present\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\n\t\t\t\t\t}\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\n\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\n\t\t\t\t\tgroup = this.groups[ element.name ];\n\t\t\t\t\tif ( group ) {\n\t\t\t\t\t\tv = this;\n\t\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\n\t\t\t\t\t\t\tif ( testgroup === group ) {\n\t\t\t\t\t\t\t\t$( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm )\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\terror.text( \"\" );\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\terror.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( error, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add( error );\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\n\n\t\t\t// 'aria-describedby' should directly reference the error element\n\t\t\tif ( describer ) {\n\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\n\t\t\t\t\t.replace( /\\s+/g, \", #\" );\n\t\t\t}\n\n\t\t\treturn this\n\t\t\t\t.errors()\n\t\t\t\t.filter( selector );\n\t\t},\n\n\t\t// See https://api.jquery.com/category/selectors/, for CSS\n\t\t// meta-characters that should be escaped in order to be used with JQuery\n\t\t// as a literal part of a name/id or any selector.\n\t\tescapeCssMeta: function( string ) {\n\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\n\t\t\t// If radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\telement = this.findByName( element.name );\n\t\t\t}\n\n\t\t\t// Always apply ignore filter\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + this.escapeCssMeta( name ) + \"']\" );\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\n\t\t\tcase \"select\":\n\t\t\t\treturn $( \"option:selected\", element ).length;\n\t\t\tcase \"input\":\n\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function( param ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function( param, element ) {\n\t\t\t\treturn !!$( param, element.form ).length;\n\t\t\t},\n\t\t\t\"function\": function( param, element ) {\n\t\t\t\treturn param( element );\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue( element );\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[ element.name ] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\t$( element ).addClass( this.settings.pendingClass );\n\t\t\t\tthis.pending[ element.name ] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\n\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[ element.name ];\n\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {\n\t\t\t\t$( this.currentForm ).submit();\n\n\t\t\t\t// Remove the hidden input that was used as a replacement for the\n\t\t\t\t// missing submit button. The hidden input is added by `handle()`\n\t\t\t\t// to ensure that the value of the used submit button is passed on\n\t\t\t\t// for scripted submits triggered by this method\n\t\t\t\tif ( this.submitButton ) {\n\t\t\t\t\t$( \"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm ).remove();\n\t\t\t\t}\n\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element, method ) {\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\n\t\t\t} );\n\t\t},\n\n\t\t// Cleans up all forms and elements, removes validator-specific events\n\t\tdestroy: function() {\n\t\t\tthis.resetForm();\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.off( \".validate\" )\n\t\t\t\t.removeData( \"validator\" )\n\t\t\t\t.find( \".validate-equalTo-blur\" )\n\t\t\t\t\t.off( \".validate-equalTo\" )\n\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" );\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: { required: true },\n\t\temail: { email: true },\n\t\turl: { url: true },\n\t\tdate: { date: true },\n\t\tdateISO: { dateISO: true },\n\t\tnumber: { number: true },\n\t\tdigits: { digits: true },\n\t\tcreditcard: { creditcard: true }\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[ className ] = rules;\n\t\t} else {\n\t\t\t$.extend( this.classRuleSettings, className );\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tclasses = $( element ).attr( \"class\" );\n\n\t\tif ( classes ) {\n\t\t\t$.each( classes.split( \" \" ), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\n\n\t\t// Convert the value to a number for number inputs, and for text for backwards compability\n\t\t// allows type=\"date\" and others to be compared as strings\n\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\tvalue = Number( value );\n\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\n\t\t\tif ( isNaN( value ) ) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( value || value === 0 ) {\n\t\t\trules[ method ] = value;\n\t\t} else if ( type === method && type !== \"range\" ) {\n\n\t\t\t// Exception: the jquery validate 'range' method\n\t\t\t// does not test for the html5 'range' type\n\t\t\trules[ method ] = true;\n\t\t}\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\n\t\t\t// Support for in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = element.getAttribute( method );\n\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\n\t\t\t\t// Force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr( method );\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\n\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tvalidator = $.data( element.form, \"validator\" );\n\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\n\t\t// Handle dependency check\n\t\t$.each( rules, function( prop, val ) {\n\n\t\t\t// Ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[ prop ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch ( typeof val.depends ) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\n\t\t\t\t\tdelete rules[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Evaluate parameters\n\t\t$.each( rules, function( rule, parameter ) {\n\t\t\trules[ rule ] = $.isFunction( parameter ) && rule !== \"normalizer\" ? parameter( element ) : parameter;\n\t\t} );\n\n\t\t// Clean number parameters\n\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\trules[ this ] = Number( rules[ this ] );\n\t\t\t}\n\t\t} );\n\t\t$.each( [ \"rangelength\", \"range\" ], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\tif ( $.isArray( rules[ this ] ) ) {\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\n\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\n\t\t\t// Auto-create ranges\n\t\t\tif ( rules.min != null && rules.max != null ) {\n\t\t\t\trules.range = [ rules.min, rules.max ];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each( data.split( /\\s/ ), function() {\n\t\t\t\ttransformed[ this ] = true;\n\t\t\t} );\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.addMethod/\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[ name ] = method;\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.methods/\n\tmethods: {\n\n\t\t// https://jqueryvalidation.org/required-method/\n\t\trequired: function( value, element, param ) {\n\n\t\t\t// Check if dependency is met\n\t\t\tif ( !this.depend( param, element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\n\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $( element ).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\treturn this.getLength( value, element ) > 0;\n\t\t\t}\n\t\t\treturn value.length > 0;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/email-method/\n\t\temail: function( value, element ) {\n\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n\t\t\t// Retrieved 2014-01-14\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\n\t\t\t// Or use custom methods to implement your own email validation\n\t\t\treturn this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/url-method/\n\t\turl: function( value, element ) {\n\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\n\t\t\t// https://gist.github.com/dperini/729294\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\n\t\t\t// modified to allow protocol-relative URLs\n\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})).?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/date-method/\n\t\tdate: function( value, element ) {\n\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/dateISO-method/\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/number-method/\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/digits-method/\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/minlength-method/\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/maxlength-method/\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/rangelength-method/\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/min-method/\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/max-method/\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/range-method/\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/step-method/\n\t\tstep: function( value, element, param ) {\n\t\t\tvar type = $( element ).attr( \"type\" ),\n\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\n\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\n\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\n\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\n\t\t\t\tdecimalPlaces = function( num ) {\n\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Number of digits right of decimal point.\n\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\n\t\t\t\t},\n\t\t\t\ttoInt = function( num ) {\n\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\n\t\t\t\t},\n\t\t\t\tvalid = true,\n\t\t\t\tdecimals;\n\n\t\t\t// Works only for text, number and range input types\n\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\n\t\t\tif ( notSupported ) {\n\t\t\t\tthrow new Error( errorMessage );\n\t\t\t}\n\n\t\t\tdecimals = decimalPlaces( param );\n\n\t\t\t// Value can't have too many decimals\n\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\n\t\t\t\tvalid = false;\n\t\t\t}\n\n\t\t\treturn this.optional( element ) || valid;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/equalTo-method/\n\t\tequalTo: function( value, element, param ) {\n\n\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\tvar target = $( param );\n\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\n\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\n\t\t\t\t\t$( element ).valid();\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/remote-method/\n\t\tremote: function( value, element, param, method ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\tvar previous = this.previousValue( element, method ),\n\t\t\t\tvalidator, data, optionDataString;\n\n\t\t\tif ( !this.settings.messages[ element.name ] ) {\n\t\t\t\tthis.settings.messages[ element.name ] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\n\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\n\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\n\t\t\tif ( previous.old === optionDataString ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = optionDataString;\n\t\t\tvalidator = this;\n\t\t\tthis.startRequest( element );\n\t\t\tdata = {};\n\t\t\tdata[ element.name ] = value;\n\t\t\t$.ajax( $.extend( true, {\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: \"validate\" + element.name,\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tcontext: validator.currentForm,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvar valid = response === true || response === \"true\",\n\t\t\t\t\t\terrors, message, submitted;\n\n\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.resetInternals();\n\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push( element );\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors = {};\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\n\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\n\t\t\t\t\t\tvalidator.showErrors( errors );\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest( element, valid );\n\t\t\t\t}\n\t\t\t}, param ) );\n\t\t\treturn \"pending\";\n\t\t}\n\t}\n\n} );\n\n// Ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n\nvar pendingRequests = {},\n\tajax;\n\n// Use a prefilter if available (1.5+)\nif ( $.ajaxPrefilter ) {\n\t$.ajaxPrefilter( function( settings, _, xhr ) {\n\t\tvar port = settings.port;\n\t\tif ( settings.mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = xhr;\n\t\t}\n\t} );\n} else {\n\n\t// Proxy ajax\n\tajax = $.ajax;\n\t$.ajax = function( settings ) {\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\tif ( mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\n\t\t\treturn pendingRequests[ port ];\n\t\t}\n\t\treturn ajax.apply( this, arguments );\n\t};\n}\nreturn $;\n}));\n\n// Unobtrusive validation support library for jQuery and jQuery Validate\n// Copyright (C) Microsoft Corporation. All rights reserved.\n// @version v3.2.7\n\n/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */\n/*global document: false, jQuery: false */\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(\"jquery.validate.unobtrusive\", ['jquery.validate'], factory);\n } else if (typeof module === 'object' && module.exports) {\n // CommonJS-like environments that support module.exports \n module.exports = factory(require('jquery-validation'));\n } else {\n // Browser global\n jQuery.validator.unobtrusive = factory(jQuery);\n }\n}(function ($) {\n var $jQval = $.validator,\n adapters,\n data_validation = \"unobtrusiveValidation\";\n\n function setValidationValues(options, ruleName, value) {\n options.rules[ruleName] = value;\n if (options.message) {\n options.messages[ruleName] = options.message;\n }\n }\n\n function splitAndTrim(value) {\n return value.replace(/^\\s+|\\s+$/g, \"\").split(/\\s*,\\s*/g);\n }\n\n function escapeAttributeValue(value) {\n // As mentioned on http://api.jquery.com/category/selectors/\n return value.replace(/([!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^`{|}~])/g, \"\\\\$1\");\n }\n\n function getModelPrefix(fieldName) {\n return fieldName.substr(0, fieldName.lastIndexOf(\".\") + 1);\n }\n\n function appendModelPrefix(value, prefix) {\n if (value.indexOf(\"*.\") === 0) {\n value = value.replace(\"*.\", prefix);\n }\n return value;\n }\n\n function onError(error, inputElement) { // 'this' is the form element\n var container = $(this).find(\"[data-valmsg-for='\" + escapeAttributeValue(inputElement[0].name) + \"']\"),\n replaceAttrValue = container.attr(\"data-valmsg-replace\"),\n replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null;\n\n container.removeClass(\"field-validation-valid\").addClass(\"field-validation-error\");\n error.data(\"unobtrusiveContainer\", container);\n\n if (replace) {\n container.empty();\n error.removeClass(\"input-validation-error\").appendTo(container);\n }\n else {\n error.hide();\n }\n }\n\n function onErrors(event, validator) { // 'this' is the form element\n var container = $(this).find(\"[data-valmsg-summary=true]\"),\n list = container.find(\"ul\");\n\n if (list && list.length && validator.errorList.length) {\n list.empty();\n container.addClass(\"validation-summary-errors\").removeClass(\"validation-summary-valid\");\n\n $.each(validator.errorList, function () {\n $(\"
  • \").html(this.message).appendTo(list);\n });\n }\n }\n\n function onSuccess(error) { // 'this' is the form element\n var container = error.data(\"unobtrusiveContainer\");\n\n if (container) {\n var replaceAttrValue = container.attr(\"data-valmsg-replace\"),\n replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null;\n\n container.addClass(\"field-validation-valid\").removeClass(\"field-validation-error\");\n error.removeData(\"unobtrusiveContainer\");\n\n if (replace) {\n container.empty();\n }\n }\n }\n\n function onReset(event) { // 'this' is the form element\n var $form = $(this),\n key = '__jquery_unobtrusive_validation_form_reset';\n if ($form.data(key)) {\n return;\n }\n // Set a flag that indicates we're currently resetting the form.\n $form.data(key, true);\n try {\n $form.data(\"validator\").resetForm();\n } finally {\n $form.removeData(key);\n }\n\n $form.find(\".validation-summary-errors\")\n .addClass(\"validation-summary-valid\")\n .removeClass(\"validation-summary-errors\");\n $form.find(\".field-validation-error\")\n .addClass(\"field-validation-valid\")\n .removeClass(\"field-validation-error\")\n .removeData(\"unobtrusiveContainer\")\n .find(\">*\") // If we were using valmsg-replace, get the underlying error\n .removeData(\"unobtrusiveContainer\");\n }\n\n function validationInfo(form) {\n var $form = $(form),\n result = $form.data(data_validation),\n onResetProxy = $.proxy(onReset, form),\n defaultOptions = $jQval.unobtrusive.options || {},\n execInContext = function (name, args) {\n var func = defaultOptions[name];\n func && $.isFunction(func) && func.apply(form, args);\n }\n\n if (!result) {\n result = {\n options: { // options structure passed to jQuery Validate's validate() method\n errorClass: defaultOptions.errorClass || \"input-validation-error\",\n errorElement: defaultOptions.errorElement || \"span\",\n errorPlacement: function () {\n onError.apply(form, arguments);\n execInContext(\"errorPlacement\", arguments);\n },\n invalidHandler: function () {\n onErrors.apply(form, arguments);\n execInContext(\"invalidHandler\", arguments);\n },\n messages: {},\n rules: {},\n success: function () {\n onSuccess.apply(form, arguments);\n execInContext(\"success\", arguments);\n }\n },\n attachValidation: function () {\n $form\n .off(\"reset.\" + data_validation, onResetProxy)\n .on(\"reset.\" + data_validation, onResetProxy)\n .validate(this.options);\n },\n validate: function () { // a validation function that is called by unobtrusive Ajax\n $form.validate();\n return $form.valid();\n }\n };\n $form.data(data_validation, result);\n }\n\n return result;\n }\n\n $jQval.unobtrusive = {\n adapters: [],\n\n parseElement: function (element, skipAttach) {\n /// \n /// Parses a single HTML element for unobtrusive validation attributes.\n /// \n /// The HTML element to be parsed.\n /// [Optional] true to skip attaching the\n /// validation to the form. If parsing just this single element, you should specify true.\n /// If parsing several elements, you should specify false, and manually attach the validation\n /// to the form when you are finished. The default is false.\n var $element = $(element),\n form = $element.parents(\"form\")[0],\n valInfo, rules, messages;\n\n if (!form) { // Cannot do client-side validation without a form\n return;\n }\n\n valInfo = validationInfo(form);\n valInfo.options.rules[element.name] = rules = {};\n valInfo.options.messages[element.name] = messages = {};\n\n $.each(this.adapters, function () {\n var prefix = \"data-val-\" + this.name,\n message = $element.attr(prefix),\n paramValues = {};\n\n if (message !== undefined) { // Compare against undefined, because an empty message is legal (and falsy)\n prefix += \"-\";\n\n $.each(this.params, function () {\n paramValues[this] = $element.attr(prefix + this);\n });\n\n this.adapt({\n element: element,\n form: form,\n message: message,\n params: paramValues,\n rules: rules,\n messages: messages\n });\n }\n });\n\n $.extend(rules, { \"__dummy__\": true });\n\n if (!skipAttach) {\n valInfo.attachValidation();\n }\n },\n\n parse: function (selector) {\n /// \n /// Parses all the HTML elements in the specified selector. It looks for input elements decorated\n /// with the [data-val=true] attribute value and enables validation according to the data-val-*\n /// attribute values.\n /// \n /// Any valid jQuery selector.\n\n // $forms includes all forms in selector's DOM hierarchy (parent, children and self) that have at least one\n // element with data-val=true\n var $selector = $(selector),\n $forms = $selector.parents()\n .addBack()\n .filter(\"form\")\n .add($selector.find(\"form\"))\n .has(\"[data-val=true]\");\n\n $selector.find(\"[data-val=true]\").each(function () {\n $jQval.unobtrusive.parseElement(this, true);\n });\n\n $forms.each(function () {\n var info = validationInfo(this);\n if (info) {\n info.attachValidation();\n }\n });\n }\n };\n\n adapters = $jQval.unobtrusive.adapters;\n\n adapters.add = function (adapterName, params, fn) {\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation.\n /// The name of the adapter to be added. This matches the name used\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\n /// [Optional] An array of parameter names (strings) that will\n /// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and\n /// mmmm is the parameter name).\n /// The function to call, which adapts the values from the HTML\n /// attributes into jQuery Validate rules and/or messages.\n /// \n if (!fn) { // Called with no params, just a function\n fn = params;\n params = [];\n }\n this.push({ name: adapterName, params: params, adapt: fn });\n return this;\n };\n\n adapters.addBool = function (adapterName, ruleName) {\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\n /// the jQuery Validate validation rule has no parameter values.\n /// The name of the adapter to be added. This matches the name used\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\n /// [Optional] The name of the jQuery Validate rule. If not provided, the value\n /// of adapterName will be used instead.\n /// \n return this.add(adapterName, function (options) {\n setValidationValues(options, ruleName || adapterName, true);\n });\n };\n\n adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) {\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\n /// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and\n /// one for min-and-max). The HTML parameters are expected to be named -min and -max.\n /// The name of the adapter to be added. This matches the name used\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\n /// The name of the jQuery Validate rule to be used when you only\n /// have a minimum value.\n /// The name of the jQuery Validate rule to be used when you only\n /// have a maximum value.\n /// The name of the jQuery Validate rule to be used when you\n /// have both a minimum and maximum value.\n /// [Optional] The name of the HTML attribute that\n /// contains the minimum value. The default is \"min\".\n /// [Optional] The name of the HTML attribute that\n /// contains the maximum value. The default is \"max\".\n /// \n return this.add(adapterName, [minAttribute || \"min\", maxAttribute || \"max\"], function (options) {\n var min = options.params.min,\n max = options.params.max;\n\n if (min && max) {\n setValidationValues(options, minMaxRuleName, [min, max]);\n }\n else if (min) {\n setValidationValues(options, minRuleName, min);\n }\n else if (max) {\n setValidationValues(options, maxRuleName, max);\n }\n });\n };\n\n adapters.addSingleVal = function (adapterName, attribute, ruleName) {\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\n /// the jQuery Validate validation rule has a single value.\n /// The name of the adapter to be added. This matches the name used\n /// in the data-val-nnnn HTML attribute(where nnnn is the adapter name).\n /// [Optional] The name of the HTML attribute that contains the value.\n /// The default is \"val\".\n /// [Optional] The name of the jQuery Validate rule. If not provided, the value\n /// of adapterName will be used instead.\n /// \n return this.add(adapterName, [attribute || \"val\"], function (options) {\n setValidationValues(options, ruleName || adapterName, options.params[attribute]);\n });\n };\n\n $jQval.addMethod(\"__dummy__\", function (value, element, params) {\n return true;\n });\n\n $jQval.addMethod(\"regex\", function (value, element, params) {\n var match;\n if (this.optional(element)) {\n return true;\n }\n\n match = new RegExp(params).exec(value);\n return (match && (match.index === 0) && (match[0].length === value.length));\n });\n\n $jQval.addMethod(\"nonalphamin\", function (value, element, nonalphamin) {\n var match;\n if (nonalphamin) {\n match = value.match(/\\W/g);\n match = match && match.length >= nonalphamin;\n }\n return match;\n });\n\n if ($jQval.methods.extension) {\n adapters.addSingleVal(\"accept\", \"mimtype\");\n adapters.addSingleVal(\"extension\", \"extension\");\n } else {\n // for backward compatibility, when the 'extension' validation method does not exist, such as with versions\n // of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for\n // validating the extension, and ignore mime-type validations as they are not supported.\n adapters.addSingleVal(\"extension\", \"extension\", \"accept\");\n }\n\n adapters.addSingleVal(\"regex\", \"pattern\");\n adapters.addBool(\"creditcard\").addBool(\"date\").addBool(\"digits\").addBool(\"email\").addBool(\"number\").addBool(\"url\");\n adapters.addMinMax(\"length\", \"minlength\", \"maxlength\", \"rangelength\").addMinMax(\"range\", \"min\", \"max\", \"range\");\n adapters.addMinMax(\"minlength\", \"minlength\").addMinMax(\"maxlength\", \"minlength\", \"maxlength\");\n adapters.add(\"equalto\", [\"other\"], function (options) {\n var prefix = getModelPrefix(options.element.name),\n other = options.params.other,\n fullOtherName = appendModelPrefix(other, prefix),\n element = $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(fullOtherName) + \"']\")[0];\n\n setValidationValues(options, \"equalTo\", element);\n });\n adapters.add(\"required\", function (options) {\n\t\t\t\t// jQuery Validate equates \"required\" with \"mandatory\" for checkbox elements\n\t\n if (options.element.tagName.toUpperCase() !== \"INPUT\" || options.element.type.toUpperCase() !== \"CHECKBOX\") {\n\t\t\t\t\t\tsetValidationValues(options, \"required\", true);\n\t\t\t\t}\n\t\t\t// added if statement for Policy Accept checkbox in Content Hub\n\t\t\t\tif (options.element.id == \"ContentHubFormPolicyAccept\") {\n\t\t\t\t\tsetValidationValues(options, \"required\", true);\n\t\t\t}\n\t\t\t\t\n\n });\n adapters.add(\"remote\", [\"url\", \"type\", \"additionalfields\"], function (options) {\n var value = {\n url: options.params.url,\n type: options.params.type || \"GET\",\n data: {}\n },\n prefix = getModelPrefix(options.element.name);\n\n $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) {\n var paramName = appendModelPrefix(fieldName, prefix);\n value.data[paramName] = function () {\n var field = $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(paramName) + \"']\");\n // For checkboxes and radio buttons, only pick up values from checked fields.\n if (field.is(\":checkbox\")) {\n return field.filter(\":checked\").val() || field.filter(\":hidden\").val() || '';\n }\n else if (field.is(\":radio\")) {\n return field.filter(\":checked\").val() || '';\n }\n return field.val();\n };\n });\n\n setValidationValues(options, \"remote\", value);\n });\n adapters.add(\"password\", [\"min\", \"nonalphamin\", \"regex\"], function (options) {\n if (options.params.min) {\n setValidationValues(options, \"minlength\", options.params.min);\n }\n if (options.params.nonalphamin) {\n setValidationValues(options, \"nonalphamin\", options.params.nonalphamin);\n }\n if (options.params.regex) {\n setValidationValues(options, \"regex\", options.params.regex);\n }\n });\n adapters.add(\"fileextensions\", [\"extensions\"], function (options) {\n setValidationValues(options, \"extension\", options.params.extensions);\n });\n\n $(function () {\n $jQval.unobtrusive.parse(document);\n });\n\n return $jQval.unobtrusive;\n}));\n/**\n * Copyright (C) 2017 Kyle Florence\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * @website https://github.com/kflorence/jquery-deserialize/\n * @version 1.3.7\n *\n * Dual licensed under the MIT and GPLv2 licenses.\n */\n!function(a){\"object\"==typeof module&&module.exports?module.exports=a(require(\"jquery\")):a(window.jQuery)}(function(a){function g(b,c){return b.map(function(){return this.elements?a.makeArray(this.elements):this}).filter(c||\":input:not(:disabled)\").get()}function h(b){var c,d={};return a.each(b,function(a,b){c=d[b.name],void 0===c&&(d[b.name]=[]),d[b.name].push(b)}),d}var b=Array.prototype.push,c=/^(?:radio|checkbox)$/i,d=/\\+/g,e=/^(?:option|select-one|select-multiple)$/i,f=/^(?:button|color|date|datetime|datetime-local|email|hidden|month|number|password|range|reset|search|submit|tel|text|textarea|time|url|week)$/i;a.fn.deserialize=function(i,j){var k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A=a.noop,B=a.noop,C={},D=[];if(j=j||{},a.isFunction(j)?B=j:(A=a.isFunction(j.change)?j.change:A,B=a.isFunction(j.complete)?j.complete:B),m=g(this,j.filter),!i||!m.length)return this;if(a.isArray(i))D=i;else if(a.isPlainObject(i))for(r in i)a.isArray(z=i[r])?b.apply(D,a.map(z,function(a){return{name:r,value:a}})):b.call(D,{name:r,value:z});else if(\"string\"==typeof i){var E;for(i=i.split(\"&\"),o=0,t=i.length;o= 0 && boundingRect.top <= GT.wHeight + safeDistance)\n || (boundingRect.bottom <= 0 && boundingRect.bottom + safeDistance >= 0)\n || (boundingRect.top >= 0 && boundingRect.bottom <= GT.wHeight)\n ) {\n item.dataset.lazyeventTriggered = true;\n event(item);\n }\n }\n }\n }\n// console.log(Object.keys(GT.listFunctionsTriggerInScrollEvent).length, event__KEY, old_event__KEY);\n if(old_event__KEY) {\n delete GT.listFunctionsTriggerInScrollEvent[old_event__KEY];\n delete GT.windowResizeFncList[old_event__KEY];\n }\n\n if(!event__KEY)\n event__KEY = 'lazy_RandomEvt_' + (Math.random() * (1000000 - 0) + 0);\n \n lazyLoad(isForceReExec);\n GT.listFunctionsTriggerInScrollEvent[event__KEY] = lazyLoad;\n GT.windowResizeFncList[event__KEY] = function(){\n lazyLoad(true);\n }\n // console.log(Object.keys(GT.listFunctionsTriggerInScrollEvent).length);\n\n};\n\n // CODE FOR TESTING. DONT NOT REMOVE THIS BLOCK!\n // let countClamp = 0;\n // Object.keys(GT.listFunctionsTriggerInScrollEvent).forEach(function(key){\n // if(key.indexOf(\"clampKey\") > 1) {\n // if(!document.querySelector('[data-clampkey=\"'+key+'\"]'))\n // console.log(key);\n // countClamp++;\n // }\n // })\n // console.log(countClamp)\n/*respimg polyfill plugin*/\n\n(function(window, factory) {\n\tif(!window) {return;}\n\tvar globalInstall = function(){\n\t\tfactory(window.lazySizes);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if (typeof define == 'function' && define.amd) {\n\t\tdefine(['lazysizes'], factory);\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(typeof window != 'undefined' ?\n\twindow : 0, function(window, document, lazySizes) {\n\t/*jshint eqnull:true */\n\t'use strict';\n\tvar polyfill;\n\tvar lazySizesCfg = lazySizes.cfg;\n\tvar img = document.createElement('img');\n\tvar supportSrcset = ('sizes' in img) && ('srcset' in img);\n\tvar regHDesc = /\\s+\\d+h/g;\n\tvar fixEdgeHDescriptor = (function(){\n\t\tvar regDescriptors = /\\s+(\\d+)(w|h)\\s+(\\d+)(w|h)/;\n\t\tvar forEach = Array.prototype.forEach;\n\n\t\treturn function(){\n\t\t\tvar img = document.createElement('img');\n\t\t\tvar removeHDescriptors = function(source){\n\t\t\t\tvar ratio, match;\n\t\t\t\tvar srcset = source.getAttribute(lazySizesCfg.srcsetAttr);\n\t\t\t\tif(srcset){\n\t\t\t\t\tif((match = srcset.match(regDescriptors))){\n\t\t\t\t\t\tif(match[2] == 'w'){\n\t\t\t\t\t\t\tratio = match[1] / match[3];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tratio = match[3] / match[1];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(ratio){\n\t\t\t\t\t\t\tsource.setAttribute('data-aspectratio', ratio);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsource.setAttribute(lazySizesCfg.srcsetAttr, srcset.replace(regHDesc, ''));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\tvar handler = function(e){\n\t\t\t\tif(e.detail.instance != lazySizes){return;}\n\t\t\t\tvar picture = e.target.parentNode;\n\n\t\t\t\tif(picture && picture.nodeName == 'PICTURE'){\n\t\t\t\t\tforEach.call(picture.getElementsByTagName('source'), removeHDescriptors);\n\t\t\t\t}\n\t\t\t\tremoveHDescriptors(e.target);\n\t\t\t};\n\n\t\t\tvar test = function(){\n\t\t\t\tif(!!img.currentSrc){\n\t\t\t\t\tdocument.removeEventListener('lazybeforeunveil', handler);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdocument.addEventListener('lazybeforeunveil', handler);\n\n\t\t\timg.onload = test;\n\t\t\timg.onerror = test;\n\n\t\t\timg.srcset = 'data:,a 1w 1h';\n\n\t\t\tif(img.complete){\n\t\t\t\ttest();\n\t\t\t}\n\t\t};\n\t})();\n\n\tif(!lazySizesCfg.supportsType){\n\t\tlazySizesCfg.supportsType = function(type/*, elem*/){\n\t\t\treturn !type;\n\t\t};\n\t}\n\n\tif (window.HTMLPictureElement && supportSrcset) {\n\t\tif(!lazySizes.hasHDescriptorFix && document.msElementsFromPoint){\n\t\t\tlazySizes.hasHDescriptorFix = true;\n\t\t\tfixEdgeHDescriptor();\n\t\t}\n\t\treturn;\n\t}\n\n\tif(window.picturefill || lazySizesCfg.pf){return;}\n\n\tlazySizesCfg.pf = function(options){\n\t\tvar i, len;\n\t\tif(window.picturefill){return;}\n\t\tfor(i = 0, len = options.elements.length; i < len; i++){\n\t\t\tpolyfill(options.elements[i]);\n\t\t}\n\t};\n\n\t// partial polyfill\n\tpolyfill = (function(){\n\t\tvar ascendingSort = function( a, b ) {\n\t\t\treturn a.w - b.w;\n\t\t};\n\t\tvar regPxLength = /^\\s*\\d+\\.*\\d*px\\s*$/;\n\t\tvar reduceCandidate = function (srces) {\n\t\t\tvar lowerCandidate, bonusFactor;\n\t\t\tvar len = srces.length;\n\t\t\tvar candidate = srces[len -1];\n\t\t\tvar i = 0;\n\n\t\t\tfor(i; i < len;i++){\n\t\t\t\tcandidate = srces[i];\n\t\t\t\tcandidate.d = candidate.w / srces.w;\n\n\t\t\t\tif(candidate.d >= srces.d){\n\t\t\t\t\tif(!candidate.cached && (lowerCandidate = srces[i - 1]) &&\n\t\t\t\t\t\tlowerCandidate.d > srces.d - (0.13 * Math.pow(srces.d, 2.2))){\n\n\t\t\t\t\t\tbonusFactor = Math.pow(lowerCandidate.d - 0.6, 1.6);\n\n\t\t\t\t\t\tif(lowerCandidate.cached) {\n\t\t\t\t\t\t\tlowerCandidate.d += 0.15 * bonusFactor;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(lowerCandidate.d + ((candidate.d - srces.d) * bonusFactor) > srces.d){\n\t\t\t\t\t\t\tcandidate = lowerCandidate;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn candidate;\n\t\t};\n\n\t\tvar parseWsrcset = (function(){\n\t\t\tvar candidates;\n\t\t\tvar regWCandidates = /(([^,\\s].[^\\s]+)\\s+(\\d+)w)/g;\n\t\t\tvar regMultiple = /\\s/;\n\t\t\tvar addCandidate = function(match, candidate, url, wDescriptor){\n\t\t\t\tcandidates.push({\n\t\t\t\t\tc: candidate,\n\t\t\t\t\tu: url,\n\t\t\t\t\tw: wDescriptor * 1\n\t\t\t\t});\n\t\t\t};\n\n\t\t\treturn function(input){\n\t\t\t\tcandidates = [];\n\t\t\t\tinput = input.trim();\n\t\t\t\tinput\n\t\t\t\t\t.replace(regHDesc, '')\n\t\t\t\t\t.replace(regWCandidates, addCandidate)\n\t\t\t\t;\n\n\t\t\t\tif(!candidates.length && input && !regMultiple.test(input)){\n\t\t\t\t\tcandidates.push({\n\t\t\t\t\t\tc: input,\n\t\t\t\t\t\tu: input,\n\t\t\t\t\t\tw: 99\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn candidates;\n\t\t\t};\n\t\t})();\n\n\t\tvar runMatchMedia = function(){\n\t\t\tif(runMatchMedia.init){return;}\n\n\t\t\trunMatchMedia.init = true;\n\t\t\taddEventListener('resize', (function(){\n\t\t\t\tvar timer;\n\t\t\t\tvar matchMediaElems = document.getElementsByClassName('lazymatchmedia');\n\t\t\t\tvar run = function(){\n\t\t\t\t\tvar i, len;\n\t\t\t\t\tfor(i = 0, len = matchMediaElems.length; i < len; i++){\n\t\t\t\t\t\tpolyfill(matchMediaElems[i]);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\treturn function(){\n\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\ttimer = setTimeout(run, 66);\n\t\t\t\t};\n\t\t\t})());\n\t\t};\n\n\t\tvar createSrcset = function(elem, isImage){\n\t\t\tvar parsedSet;\n\t\t\tvar srcSet = elem.getAttribute('srcset') || elem.getAttribute(lazySizesCfg.srcsetAttr);\n\n\t\t\tif(!srcSet && isImage){\n\t\t\t\tsrcSet = !elem._lazypolyfill ?\n\t\t\t\t\t(elem.getAttribute(lazySizesCfg.srcAttr) || elem.getAttribute('src')) :\n\t\t\t\t\telem._lazypolyfill._set\n\t\t\t\t;\n\t\t\t}\n\n\t\t\tif(!elem._lazypolyfill || elem._lazypolyfill._set != srcSet){\n\n\t\t\t\tparsedSet = parseWsrcset( srcSet || '' );\n\t\t\t\tif(isImage && elem.parentNode){\n\t\t\t\t\tparsedSet.isPicture = elem.parentNode.nodeName.toUpperCase() == 'PICTURE';\n\n\t\t\t\t\tif(parsedSet.isPicture){\n\t\t\t\t\t\tif(window.matchMedia){\n\t\t\t\t\t\t\tlazySizes.aC(elem, 'lazymatchmedia');\n\t\t\t\t\t\t\trunMatchMedia();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tparsedSet._set = srcSet;\n\t\t\t\tObject.defineProperty(elem, '_lazypolyfill', {\n\t\t\t\t\tvalue: parsedSet,\n\t\t\t\t\twritable: true\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tvar getX = function(elem){\n\t\t\tvar dpr = window.devicePixelRatio || 1;\n\t\t\tvar optimum = lazySizes.getX && lazySizes.getX(elem);\n\t\t\treturn Math.min(optimum || dpr, 2.5, dpr);\n\t\t};\n\n\t\tvar matchesMedia = function(media){\n\t\t\tif(window.matchMedia){\n\t\t\t\tmatchesMedia = function(media){\n\t\t\t\t\treturn !media || (matchMedia(media) || {}).matches;\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\treturn !media;\n\t\t\t}\n\n\t\t\treturn matchesMedia(media);\n\t\t};\n\n\t\tvar getCandidate = function(elem){\n\t\t\tvar sources, i, len, media, source, srces, src, width;\n\n\t\t\tsource = elem;\n\t\t\tcreateSrcset(source, true);\n\t\t\tsrces = source._lazypolyfill;\n\n\t\t\tif(srces.isPicture){\n\t\t\t\tfor(i = 0, sources = elem.parentNode.getElementsByTagName('source'), len = sources.length; i < len; i++){\n\t\t\t\t\tif( lazySizesCfg.supportsType(sources[i].getAttribute('type'), elem) && matchesMedia( sources[i].getAttribute('media')) ){\n\t\t\t\t\t\tsource = sources[i];\n\t\t\t\t\t\tcreateSrcset(source);\n\t\t\t\t\t\tsrces = source._lazypolyfill;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(srces.length > 1){\n\t\t\t\twidth = source.getAttribute('sizes') || '';\n\t\t\t\twidth = regPxLength.test(width) && parseInt(width, 10) || lazySizes.gW(elem, elem.parentNode);\n\t\t\t\tsrces.d = getX(elem);\n\t\t\t\tif(!srces.src || !srces.w || srces.w < width){\n\t\t\t\t\tsrces.w = width;\n\t\t\t\t\tsrc = reduceCandidate(srces.sort(ascendingSort));\n\t\t\t\t\tsrces.src = src;\n\t\t\t\t} else {\n\t\t\t\t\tsrc = srces.src;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsrc = srces[0];\n\t\t\t}\n\n\t\t\treturn src;\n\t\t};\n\n\t\tvar p = function(elem){\n\t\t\tif(supportSrcset && elem.parentNode && elem.parentNode.nodeName.toUpperCase() != 'PICTURE'){return;}\n\t\t\tvar candidate = getCandidate(elem);\n\n\t\t\tif(candidate && candidate.u && elem._lazypolyfill.cur != candidate.u){\n\t\t\t\telem._lazypolyfill.cur = candidate.u;\n\t\t\t\tcandidate.cached = true;\n\t\t\t\telem.setAttribute(lazySizesCfg.srcAttr, candidate.u);\n\t\t\t\telem.setAttribute('src', candidate.u);\n\t\t\t}\n\t\t};\n\n\t\tp.parse = parseWsrcset;\n\n\t\treturn p;\n\t})();\n\n\tif(lazySizesCfg.loadedClass && lazySizesCfg.loadingClass){\n\t\t(function(){\n\t\t\tvar sels = [];\n\t\t\t['img[sizes$=\"px\"][srcset].', 'picture > img:not([srcset]).'].forEach(function(sel){\n\t\t\t\tsels.push(sel + lazySizesCfg.loadedClass);\n\t\t\t\tsels.push(sel + lazySizesCfg.loadingClass);\n\t\t\t});\n\t\t\tlazySizesCfg.pf({\n\t\t\t\telements: document.querySelectorAll(sels.join(', '))\n\t\t\t});\n\t\t})();\n\n\t}\n}));\n\n/*! lazysizes - v5.3.0 - Core */\n(function(window, factory) {\n\tvar lazySizes = factory(window, window.document, Date);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(typeof window != 'undefined' ?\n window : {}, function l(window, document, Date) { // Pass in the windoe Date function also for SSR because the Date class can be lost\n\t'use strict';\n\t/*jshint eqnull:true */\n\n\tvar lazysizes, lazySizesCfg;\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tfastLoadedClass: 'ls-is-cached',\n\t\t\tiframeLoadMode: 0,\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\t})();\n\n\tif (!document || !document.getElementsByClassName) {\n\t\treturn {\n\t\t\tinit: function () {},\n\t\t\tcfg: lazySizesCfg,\n\t\t\tnoSupport: true,\n\t\t};\n\t}\n\n\tvar docElem = document.documentElement;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\t/**\n\t * Update to bind to window because 'this' becomes null during SSR\n\t * builds.\n\t */\n\tvar addEventListener = window[_addEventListener].bind(window);\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth = parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning = true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || !(getCSS(elem.parentNode, 'visibility') == 'hidden' && getCSS(elem, 'visibility') == 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\tvar loadMode = elem.getAttribute('data-load-mode') || lazySizesCfg.iframeLoadMode;\n\n\t\t\t// loadMode can be also a string!\n\t\t\tif (loadMode == 0) {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} else if (loadMode == 1) {\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.fastLoadedClass);\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('pageshow', function (e) {\n\t\t\t\t\tif (e.persisted) {\n\t\t\t\t\t\tvar loadingElements = document.querySelectorAll('.' + lazySizesCfg.loadingClass);\n\n\t\t\t\t\t\tif (loadingElements.length && loadingElements.forEach) {\n\t\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\t\tloadingElements.forEach( function (img) {\n\t\t\t\t\t\t\t\t\tif (img.complete) {\n\t\t\t\t\t\t\t\t\t\tunveilElement(img);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i && document.getElementsByClassName){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tsetTimeout(function(){\n\t\tif(lazySizesCfg.init){\n\t\t\tinit();\n\t\t}\n\t});\n\n\tlazysizes = {\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n\n/*! lazysizes - v5.3.0 - BGset*/\n(function(window, factory) {\n\tvar globalInstall = function(){\n\t\tfactory(window.lazySizes);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if (typeof define == 'function' && define.amd) {\n\t\tdefine(['lazysizes'], factory);\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(window, function(window, document, lazySizes) {\n\t'use strict';\n\tif(!window.addEventListener){return;}\n\n\tvar lazySizesCfg = lazySizes.cfg;\n\tvar regWhite = /\\s+/g;\n\tvar regSplitSet = /\\s*\\|\\s+|\\s+\\|\\s*/g;\n\tvar regSource = /^(.+?)(?:\\s+\\[\\s*(.+?)\\s*\\])(?:\\s+\\[\\s*(.+?)\\s*\\])?$/;\n\tvar regType = /^\\s*\\(*\\s*type\\s*:\\s*(.+?)\\s*\\)*\\s*$/;\n\tvar regBgUrlEscape = /\\(|\\)|'/;\n\tvar allowedBackgroundSize = {contain: 1, cover: 1};\n\tvar proxyWidth = function(elem){\n\t\tvar width = lazySizes.gW(elem, elem.parentNode);\n\n\t\tif(!elem._lazysizesWidth || width > elem._lazysizesWidth){\n\t\t\telem._lazysizesWidth = width;\n\t\t}\n\t\treturn elem._lazysizesWidth;\n\t};\n\tvar getBgSize = function(elem){\n\t\tvar bgSize;\n\n\t\tbgSize = (getComputedStyle(elem) || {getPropertyValue: function(){}}).getPropertyValue('background-size');\n\n\t\tif(!allowedBackgroundSize[bgSize] && allowedBackgroundSize[elem.style.backgroundSize]){\n\t\t\tbgSize = elem.style.backgroundSize;\n\t\t}\n\n\t\treturn bgSize;\n\t};\n\tvar setTypeOrMedia = function(source, match){\n\t\tif(match){\n\t\t\tvar typeMatch = match.match(regType);\n\t\t\tif(typeMatch && typeMatch[1]){\n\t\t\t\tsource.setAttribute('type', typeMatch[1]);\n\t\t\t} else {\n\t\t\t\tsource.setAttribute('media', lazySizesCfg.customMedia[match] || match);\n\t\t\t}\n\t\t}\n\t};\n\tvar createPicture = function(sets, elem, img){\n\t\tvar picture = document.createElement('picture');\n\t\tvar sizes = elem.getAttribute(lazySizesCfg.sizesAttr);\n\t\tvar ratio = elem.getAttribute('data-ratio');\n\t\tvar optimumx = elem.getAttribute('data-optimumx');\n\n\t\tif(elem._lazybgset && elem._lazybgset.parentNode == elem){\n\t\t\telem.removeChild(elem._lazybgset);\n\t\t}\n\n\t\tObject.defineProperty(img, '_lazybgset', {\n\t\t\tvalue: elem,\n\t\t\twritable: true\n\t\t});\n\t\tObject.defineProperty(elem, '_lazybgset', {\n\t\t\tvalue: picture,\n\t\t\twritable: true\n\t\t});\n\n\t\tsets = sets.replace(regWhite, ' ').split(regSplitSet);\n\n\t\tpicture.style.display = 'none';\n\t\timg.className = lazySizesCfg.lazyClass;\n\n\t\tif(sets.length == 1 && !sizes){\n\t\t\tsizes = 'auto';\n\t\t}\n\n\t\tsets.forEach(function(set){\n\t\t\tvar match;\n\t\t\tvar source = document.createElement('source');\n\n\t\t\tif(sizes && sizes != 'auto'){\n\t\t\t\tsource.setAttribute('sizes', sizes);\n\t\t\t}\n\n\t\t\tif((match = set.match(regSource))){\n\t\t\t\tsource.setAttribute(lazySizesCfg.srcsetAttr, match[1]);\n\n\t\t\t\tsetTypeOrMedia(source, match[2]);\n\t\t\t\tsetTypeOrMedia(source, match[3]);\n\t\t\t} else {\n\t\t\t\tsource.setAttribute(lazySizesCfg.srcsetAttr, set);\n\t\t\t}\n\n\t\t\tpicture.appendChild(source);\n\t\t});\n\n\t\tif(sizes){\n\t\t\timg.setAttribute(lazySizesCfg.sizesAttr, sizes);\n\t\t\telem.removeAttribute(lazySizesCfg.sizesAttr);\n\t\t\telem.removeAttribute('sizes');\n\t\t}\n\t\tif(optimumx){\n\t\t\timg.setAttribute('data-optimumx', optimumx);\n\t\t}\n\t\tif(ratio) {\n\t\t\timg.setAttribute('data-ratio', ratio);\n\t\t}\n\n\t\tpicture.appendChild(img);\n\n\t\telem.appendChild(picture);\n\t};\n\n\tvar proxyLoad = function(e){\n\t\tif(!e.target._lazybgset){return;}\n\n\t\tvar image = e.target;\n\t\tvar elem = image._lazybgset;\n\t\tvar bg = image.currentSrc || image.src;\n\n\n\t\tif(bg){\n\t\t\tvar useSrc = regBgUrlEscape.test(bg) ? JSON.stringify(bg) : bg;\n\t\t\tvar event = lazySizes.fire(elem, 'bgsetproxy', {\n\t\t\t\tsrc: bg,\n\t\t\t\tuseSrc: useSrc,\n\t\t\t\tfullSrc: null,\n\t\t\t});\n\n\t\t\tif(!event.defaultPrevented){\n\t\t\t\telem.style.backgroundImage = event.detail.fullSrc || 'url(' + event.detail.useSrc + ')';\n\t\t\t}\n\t\t}\n\n\t\tif(image._lazybgsetLoading){\n\t\t\tlazySizes.fire(elem, '_lazyloaded', {}, false, true);\n\t\t\tdelete image._lazybgsetLoading;\n\t\t}\n\t};\n\n\taddEventListener('lazybeforeunveil', function(e){\n\t\tvar set, image, elem;\n\n\t\tif(e.defaultPrevented || !(set = e.target.getAttribute('data-bgset'))){return;}\n\n\t\telem = e.target;\n\t\timage = document.createElement('img');\n\n\t\timage.alt = '';\n\n\t\timage._lazybgsetLoading = true;\n\t\te.detail.firesLoad = true;\n\n\t\tcreatePicture(set, elem, image);\n\n\t\tsetTimeout(function(){\n\t\t\tlazySizes.loader.unveil(image);\n\n\t\t\tlazySizes.rAF(function(){\n\t\t\t\tlazySizes.fire(image, '_lazyloaded', {}, true, true);\n\t\t\t\tif(image.complete) {\n\t\t\t\t\tproxyLoad({target: image});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t});\n\n\tdocument.addEventListener('load', proxyLoad, true);\n\n\twindow.addEventListener('lazybeforesizes', function(e){\n\t\tif(e.detail.instance != lazySizes){return;}\n\t\tif(e.target._lazybgset && e.detail.dataAttr){\n\t\t\tvar elem = e.target._lazybgset;\n\t\t\tvar bgSize = getBgSize(elem);\n\n\t\t\tif(allowedBackgroundSize[bgSize]){\n\t\t\t\te.target._lazysizesParentFit = bgSize;\n\n\t\t\t\tlazySizes.rAF(function(){\n\t\t\t\t\te.target.setAttribute('data-parent-fit', bgSize);\n\t\t\t\t\tif(e.target._lazysizesParentFit){\n\t\t\t\t\t\tdelete e.target._lazysizesParentFit;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, true);\n\n\tdocument.documentElement.addEventListener('lazybeforesizes', function(e){\n\t\tif(e.defaultPrevented || !e.target._lazybgset || e.detail.instance != lazySizes){return;}\n\t\te.detail.width = proxyWidth(e.target._lazybgset);\n\t});\n}));\n/*! modernizr 3.3.1 (Custom Build) | MIT *\n * https://modernizr.com/download/?-mq-setclasses-shiv-teststyles !*/\n!function(e,t,n){function a(e,t){return typeof e===t}function r(){var e,t,n,r,o,i,s;for(var l in d)if(d.hasOwnProperty(l)){if(e=[],t=d[l],t.name&&(e.push(t.name.toLowerCase()),t.options&&t.options.aliases&&t.options.aliases.length))for(n=0;n\"+t+\"\",a.insertBefore(n.lastChild,a.firstChild)}function a(){var e=E.elements;return\"string\"==typeof e?e.split(\" \"):e}function r(e,t){var n=E.elements;\"string\"!=typeof n&&(n=n.join(\" \")),\"string\"!=typeof e&&(e=e.join(\" \")),E.elements=n+\" \"+e,c(t)}function o(e){var t=y[e[g]];return t||(t={},v++,e[g]=v,y[v]=t),t}function i(e,n,a){if(n||(n=t),u)return n.createElement(e);a||(a=o(n));var r;return r=a.cache[e]?a.cache[e].cloneNode():p.test(e)?(a.cache[e]=a.createElem(e)).cloneNode():a.createElem(e),!r.canHaveChildren||h.test(e)||r.tagUrn?r:a.frag.appendChild(r)}function s(e,n){if(e||(e=t),u)return e.createDocumentFragment();n=n||o(e);for(var r=n.frag.cloneNode(),i=0,s=a(),l=s.length;l>i;i++)r.createElement(s[i]);return r}function l(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return E.shivMethods?i(n,e,t):t.createElem(n)},e.createDocumentFragment=Function(\"h,f\",\"return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(\"+a().join().replace(/[\\w\\-:]+/g,function(e){return t.createElem(e),t.frag.createElement(e),'c(\"'+e+'\")'})+\");return n}\")(E,t.frag)}function c(e){e||(e=t);var a=o(e);return!E.shivCSS||d||a.hasCSS||(a.hasCSS=!!n(e,\"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}\")),u||l(e,a),e}var d,u,f=\"3.7.3\",m=e.html5||{},h=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,g=\"_html5shiv\",v=0,y={};!function(){try{var e=t.createElement(\"a\");e.innerHTML=\"\",d=\"hidden\"in e,u=1==e.childNodes.length||function(){t.createElement(\"a\");var e=t.createDocumentFragment();return\"undefined\"==typeof e.cloneNode||\"undefined\"==typeof e.createDocumentFragment||\"undefined\"==typeof e.createElement}()}catch(n){d=!0,u=!0}}();var E={elements:m.elements||\"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video\",version:f,shivCSS:m.shivCSS!==!1,supportsUnknownElements:u,shivMethods:m.shivMethods!==!1,type:\"default\",shivDocument:c,createElement:i,createDocumentFragment:s,addElements:r};e.html5=E,c(t),\"object\"==typeof module&&module.exports&&(module.exports=E)}(\"undefined\"!=typeof e?e:this,t);var h=function(){var t=e.matchMedia||e.msMatchMedia;return t?function(e){var n=t(e);return n&&n.matches||!1}:function(t){var n=!1;return l(\"@media \"+t+\" { #modernizr { position: absolute; } }\",function(t){n=\"absolute\"==(e.getComputedStyle?e.getComputedStyle(t,null):t.currentStyle).position}),n}}();u.mq=h;u.testStyles=l;r(),o(c),delete u.addTest,delete u.addAsyncTest;for(var p=0;pn[h]&&(a.reach[i]=\"start\"),n[h]>a[f]-a[g]-1&&(a.reach[i]=\"end\"),b&&(n.dispatchEvent(k(\"ps-scroll-\"+i)),0>b?n.dispatchEvent(k(\"ps-scroll-\"+l)):0=a.railXWidth-a.scrollbarXWidth&&(a.scrollbarXLeft=a.railXWidth-a.scrollbarXWidth),a.scrollbarYTop>=a.railYHeight-a.scrollbarYHeight&&(a.scrollbarYTop=a.railYHeight-a.scrollbarYHeight),s(c,a),a.scrollbarXActive?c.classList.add(z.state.active(\"x\")):(c.classList.remove(z.state.active(\"x\")),a.scrollbarXWidth=0,a.scrollbarXLeft=0,c.scrollLeft=!0===a.isRtl?a.contentWidth:0),a.scrollbarYActive?c.classList.add(z.state.active(\"y\")):(c.classList.remove(z.state.active(\"y\")),a.scrollbarYHeight=0,a.scrollbarYTop=0,c.scrollTop=0)}function r(a,b){var c=Math.min,d=Math.max;return a.settings.minScrollbarLength&&(b=d(b,a.settings.minScrollbarLength)),a.settings.maxScrollbarLength&&(b=c(b,a.settings.maxScrollbarLength)),b}function s(a,c){var d={width:c.railXWidth},e=v(a.scrollTop);d.left=c.isRtl?c.negativeScrollAdjustment+a.scrollLeft+c.containerWidth-c.contentWidth:a.scrollLeft,c.isScrollbarXUsingBottom?d.bottom=c.scrollbarXBottom-e:d.top=c.scrollbarXTop+e,b(c.scrollbarXRail,d);var f={top:e,height:c.railYHeight};c.isScrollbarYUsingRight?c.isRtl?f.right=c.contentWidth-(c.negativeScrollAdjustment+a.scrollLeft)-c.scrollbarYRight-c.scrollbarYOuterWidth-9:f.right=c.scrollbarYRight-a.scrollLeft:c.isRtl?f.left=c.negativeScrollAdjustment+a.scrollLeft+2*c.containerWidth-c.contentWidth-c.scrollbarYLeft-c.scrollbarYOuterWidth:f.left=c.scrollbarYLeft+a.scrollLeft,b(c.scrollbarYRail,f),b(c.scrollbarX,{left:c.scrollbarXLeft,width:c.scrollbarXWidth-c.railBorderXWidth}),b(c.scrollbarY,{top:c.scrollbarYTop,height:c.scrollbarYHeight-c.railBorderYWidth})}function t(a,b){function c(b){b.touches&&b.touches[0]&&(b[k]=b.touches[0].pageY),s[o]=t+v*(b[k]-u),g(a,p),q(a),b.stopPropagation(),b.preventDefault()}function d(){h(a,p),a[r].classList.remove(z.state.clicking),a.event.unbind(a.ownerDocument,\"mousemove\",c)}function f(b,e){t=s[o],e&&b.touches&&(b[k]=b.touches[0].pageY),u=b[k],v=(a[j]-a[i])/(a[l]-a[n]),e?a.event.bind(a.ownerDocument,\"touchmove\",c):(a.event.bind(a.ownerDocument,\"mousemove\",c),a.event.once(a.ownerDocument,\"mouseup\",d),b.preventDefault()),a[r].classList.add(z.state.clicking),b.stopPropagation()}var i=b[0],j=b[1],k=b[2],l=b[3],m=b[4],n=b[5],o=b[6],p=b[7],r=b[8],s=a.element,t=null,u=null,v=null;a.event.bind(a[m],\"mousedown\",function(a){f(a)}),a.event.bind(a[m],\"touchstart\",function(a){f(a,!0)})}var w=\"undefined\"!=typeof Element&&(Element.prototype.matches||Element.prototype.webkitMatchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector),z={main:\"ps\",rtl:\"ps__rtl\",element:{thumb:function(a){return\"ps__thumb-\"+a},rail:function(a){return\"ps__rail-\"+a},consuming:\"ps__child--consume\"},state:{focus:\"ps--focus\",clicking:\"ps--clicking\",active:function(a){return\"ps--active-\"+a},scrolling:function(a){return\"ps--scrolling-\"+a}}},A={x:null,y:null},B=function(a){this.element=a,this.handlers={}},C={isEmpty:{configurable:!0}};B.prototype.bind=function(a,b){\"undefined\"==typeof this.handlers[a]&&(this.handlers[a]=[]),this.handlers[a].push(b),this.element.addEventListener(a,b,!1)},B.prototype.unbind=function(a,b){var c=this;this.handlers[a]=this.handlers[a].filter(function(d){return!!(b&&d!==b)||(c.element.removeEventListener(a,d,!1),!1)})},B.prototype.unbindAll=function(){for(var a in this.handlers)this.unbind(a)},C.isEmpty.get=function(){var a=this;return Object.keys(this.handlers).every(function(b){return 0===a.handlers[b].length})},Object.defineProperties(B.prototype,C);var D=function(){this.eventElements=[]};D.prototype.eventElement=function(a){var b=this.eventElements.filter(function(b){return b.element===a})[0];return b||(b=new B(a),this.eventElements.push(b)),b},D.prototype.bind=function(a,b,c){this.eventElement(a).bind(b,c)},D.prototype.unbind=function(a,b,c){var d=this.eventElement(a);d.unbind(b,c),d.isEmpty&&this.eventElements.splice(this.eventElements.indexOf(d),1)},D.prototype.unbindAll=function(){this.eventElements.forEach(function(a){return a.unbindAll()}),this.eventElements=[]},D.prototype.once=function(a,b,c){var d=this.eventElement(a),e=function(a){d.unbind(b,e),c(a)};d.bind(b,e)};var E={isWebKit:\"undefined\"!=typeof document&&\"WebkitAppearance\"in document.documentElement.style,supportsTouch:\"undefined\"!=typeof window&&(\"ontouchstart\"in window||\"maxTouchPoints\"in window.navigator&&0a.scrollbarYTop?1:-1;a.element.scrollTop+=d*a.containerHeight,q(a),b.stopPropagation()}),a.event.bind(a.scrollbarX,\"mousedown\",function(a){return a.stopPropagation()}),a.event.bind(a.scrollbarXRail,\"mousedown\",function(b){var c=b.pageX-window.pageXOffset-a.scrollbarXRail.getBoundingClientRect().left,d=c>a.scrollbarXLeft?1:-1;a.element.scrollLeft+=d*a.containerWidth,q(a),b.stopPropagation()})},\"drag-thumb\":function(a){t(a,[\"containerWidth\",\"contentWidth\",\"pageX\",\"railXWidth\",\"scrollbarX\",\"scrollbarXWidth\",\"scrollLeft\",\"x\",\"scrollbarXRail\"]),t(a,[\"containerHeight\",\"contentHeight\",\"pageY\",\"railYHeight\",\"scrollbarY\",\"scrollbarYHeight\",\"scrollTop\",\"y\",\"scrollbarYRail\"])},keyboard:function(a){function b(b,d){var e=v(c.scrollTop);if(0===b){if(!a.scrollbarYActive)return!1;if(0===e&&0=a.contentHeight-a.containerHeight&&0>d)return!a.settings.wheelPropagation}var f=c.scrollLeft;if(0===d){if(!a.scrollbarXActive)return!1;if(0===f&&0>b||f>=a.contentWidth-a.containerWidth&&0u(a)?f||g:i||j,!d||!b.settings.wheelPropagation}function d(a){var b=a.deltaX,c=-1*a.deltaY;return(\"undefined\"==typeof b||\"undefined\"==typeof c)&&(b=-1*a.wheelDeltaX/6,c=a.wheelDeltaY/6),a.deltaMode&&1===a.deltaMode&&(b*=10,c*=10),b!==b&&c!==c/* NaN checks */&&(b=0,c=a.wheelDelta),a.shiftKey?[-c,-b]:[b,c]}function f(b,c,d){// FIXME: this is a workaround for \",{class:s.classes.input,readonly:s.utils.isMobile()}),n=e(\"
    \",{class:s.classes.items,tabindex:0}),a=e(\"
    \",{class:s.classes.scroll}),o=e(\"
    \",{class:s.classes.prefix,html:s.options.arrowButtonMarkup}),r=e(\"\",{class:\"label\"}),u=s.$element.wrap(\"
    \").parent().append(o.prepend(r),n,l),p=e(\"
    \",{class:s.classes.hideselect});s.elements={input:l,items:n,itemsScroll:a,wrapper:o,label:r,outerWrapper:u},s.options.nativeOnMobile&&s.utils.isMobile()&&(s.elements.input=void 0,p.addClass(s.classes.prefix+\"-is-native\"),s.$element.on(\"change\",function(){s.refresh()})),s.$element.on(s.eventTriggers).wrap(p),s.originalTabindex=s.$element.prop(\"tabindex\"),s.$element.prop(\"tabindex\",0),s.populate(),s.activate(),s.utils.triggerCallback(\"Init\",s)},activate:function(){var e=this,t=e.elements.items.closest(\":visible\").children(\":hidden\").addClass(e.classes.tempshow),s=e.$element.width();t.removeClass(e.classes.tempshow),e.utils.triggerCallback(\"BeforeActivate\",e),e.elements.outerWrapper.prop(\"class\",e.utils.arrayToClassname([e.classes.wrapper,e.$element.prop(\"class\").replace(/\\S+/g,e.classes.prefix+\"-$&\"),e.options.responsive?e.classes.responsive:\"\"])),e.options.inheritOriginalWidth&&s>0&&e.elements.outerWrapper.width(s),e.unbindEvents(),e.$element.prop(\"disabled\")?(e.elements.outerWrapper.addClass(e.classes.disabled),e.elements.input&&e.elements.input.prop(\"disabled\",!0)):(e.state.enabled=!0,e.elements.outerWrapper.removeClass(e.classes.disabled),e.$li=e.elements.items.removeAttr(\"style\").find(\"li\"),e.bindEvents()),e.utils.triggerCallback(\"Activate\",e)},getClassNames:function(){var t=this,s=t.options.customClass,i={};return e.each(l.split(\" \"),function(e,l){var n=s.prefix+l;i[l.toLowerCase()]=s.camelCase?n:t.utils.toDash(n)}),i.prefix=s.prefix,i},setLabel:function(){var t=this,s=t.options.labelBuilder;if(t.state.multiple){var i=e.isArray(t.state.currValue)?t.state.currValue:[t.state.currValue];i=0===i.length?[0]:i;var l=e.map(i,function(s){return e.grep(t.lookupItems,function(e){return e.index===s})[0]});l=e.grep(l,function(t){return l.length>1||0===l.length?\"\"!==e.trim(t.value):t}),l=e.map(l,function(i){return e.isFunction(s)?s(i):t.utils.format(s,i)}),t.options.multiple.maxLabelEntries&&(l.length>=t.options.multiple.maxLabelEntries+1?(l=l.slice(0,t.options.multiple.maxLabelEntries),l.push(e.isFunction(s)?s({text:\"...\"}):t.utils.format(s,{text:\"...\"}))):l.slice(l.length-1)),t.elements.label.html(l.join(t.options.multiple.separator))}else{var n=t.lookupItems[t.state.currValue];t.elements.label.html(e.isFunction(s)?s(n):t.utils.format(s,n))}},populate:function(){var t=this,s=t.$element.children(),i=t.$element.find(\"option\"),l=i.filter(\":selected\"),n=i.index(l),a=0,o=t.state.multiple?[]:0;l.length>1&&t.state.multiple&&(n=[],l.each(function(){n.push(e(this).index())})),t.state.currValue=~n?n:o,t.state.selectedIdx=t.state.currValue,t.state.highlightedIdx=t.state.currValue,t.items=[],t.lookupItems=[],s.length&&(s.each(function(s){var i=e(this);if(i.is(\"optgroup\")){var l={element:i,label:i.prop(\"label\"),groupDisabled:i.prop(\"disabled\"),items:[]};i.children().each(function(s){var i=e(this);l.items[s]=t.getItemData(a,i,l.groupDisabled||i.prop(\"disabled\")),t.lookupItems[a]=l.items[s],a++}),t.items[s]=l}else t.items[s]=t.getItemData(a,i,i.prop(\"disabled\")),t.lookupItems[a]=t.items[s],a++}),t.setLabel(),t.elements.items.append(t.elements.itemsScroll.html(t.getItemsMarkup(t.items))))},getItemData:function(t,s,i){var l=this;return{index:t,element:s,value:s.val(),className:s.prop(\"class\"),text:s.html(),slug:e.trim(l.utils.replaceDiacritics(s.html())),selected:s.prop(\"selected\"),disabled:i}},getItemsMarkup:function(t){var s=this,i=\"
      \";return e.isFunction(s.options.listBuilder)&&s.options.listBuilder&&(t=s.options.listBuilder(t)),e.each(t,function(t,l){void 0!==l.label?(i+=s.utils.format('
      • {3}
      • ',s.utils.arrayToClassname([s.classes.group,l.groupDisabled?\"disabled\":\"\",l.element.prop(\"class\")]),s.classes.grouplabel,l.element.prop(\"label\")),e.each(l.items,function(e,t){i+=s.getItemMarkup(t.index,t)}),i+=\"
      \"):i+=s.getItemMarkup(l.index,l)}),i+\"
    \"},getItemMarkup:function(t,s){var i=this,l=i.options.optionsItemBuilder,n={value:s.value,text:s.text,slug:s.slug,index:s.index};return i.utils.format('
  • {3}
  • ',t,i.utils.arrayToClassname([s.className,t===i.items.length-1?\"last\":\"\",s.disabled?\"disabled\":\"\",s.selected?\"selected\":\"\"]),e.isFunction(l)?i.utils.format(l(s),s):i.utils.format(l,n))},unbindEvents:function(){var e=this;e.elements.wrapper.add(e.$element).add(e.elements.outerWrapper).add(e.elements.input).off(n)},bindEvents:function(){var t=this;t.elements.outerWrapper.on(\"mouseenter\"+n+\" mouseleave\"+n,function(s){e(this).toggleClass(t.classes.hover,\"mouseenter\"===s.type),t.options.openOnHover&&(clearTimeout(t.closeTimer),\"mouseleave\"===s.type?t.closeTimer=setTimeout(e.proxy(t.close,t),t.options.hoverIntentTimeout):t.open())}),t.elements.wrapper.on(\"click\"+n,function(e){t.state.opened?t.close():t.open(e)}),t.options.nativeOnMobile&&t.utils.isMobile()||(t.$element.on(\"focus\"+n,function(){t.elements.input.focus()}),t.elements.input.prop({tabindex:t.originalTabindex,disabled:!1}).on(\"keydown\"+n,e.proxy(t.handleKeys,t)).on(\"focusin\"+n,function(e){t.elements.outerWrapper.addClass(t.classes.focus),t.elements.input.one(\"blur\",function(){t.elements.input.blur()}),t.options.openOnFocus&&!t.state.opened&&t.open(e)}).on(\"focusout\"+n,function(){t.elements.outerWrapper.removeClass(t.classes.focus)}).on(\"input propertychange\",function(){var s=t.elements.input.val(),i=new RegExp(\"^\"+t.utils.escapeRegExp(s),\"i\");clearTimeout(t.resetStr),t.resetStr=setTimeout(function(){t.elements.input.val(\"\")},t.options.keySearchTimeout),s.length&&e.each(t.items,function(e,s){if(!s.disabled&&i.test(s.text)||i.test(s.slug))return void t.highlight(e)})})),t.$li.on({mousedown:function(e){e.preventDefault(),e.stopPropagation()},click:function(){return t.select(e(this).data(\"index\")),!1}})},handleKeys:function(t){var s=this,i=t.which,l=s.options.keys,n=e.inArray(i,l.previous)>-1,a=e.inArray(i,l.next)>-1,o=e.inArray(i,l.select)>-1,r=e.inArray(i,l.open)>-1,u=s.state.highlightedIdx,p=n&&0===u||a&&u+1===s.items.length,c=0;if(13!==i&&32!==i||t.preventDefault(),n||a){if(!s.options.allowWrap&&p)return;n&&(c=s.utils.previousEnabledItem(s.lookupItems,u)),a&&(c=s.utils.nextEnabledItem(s.lookupItems,u)),s.highlight(c)}return o&&s.state.opened?(s.select(u),void(s.state.multiple&&s.options.multiple.keepMenuOpen||s.close())):void(r&&!s.state.opened&&s.open())},refresh:function(){var e=this;e.populate(),e.activate(),e.utils.triggerCallback(\"Refresh\",e)},setOptionsDimensions:function(){var e=this,t=e.elements.items.closest(\":visible\").children(\":hidden\").addClass(e.classes.tempshow),s=e.options.maxHeight,i=e.elements.items.outerWidth(),l=e.elements.wrapper.outerWidth()-(i-e.elements.items.width());!e.options.expandToItemText||l>i?e.finalWidth=l:(e.elements.items.css(\"overflow\",\"scroll\"),e.elements.outerWrapper.width(9e4),e.finalWidth=e.elements.items.width(),e.elements.items.css(\"overflow\",\"\"),e.elements.outerWrapper.width(\"\")),e.elements.items.width(e.finalWidth).height()>s&&e.elements.items.height(s),t.removeClass(e.classes.tempshow)},isInViewport:function(){var e=this,t=s.scrollTop(),i=s.height(),l=e.elements.outerWrapper.offset().top,n=e.elements.outerWrapper.outerHeight(),a=l+n+e.itemsHeight<=t+i,o=l-e.itemsHeight>t,r=!a&&o;e.elements.outerWrapper.toggleClass(e.classes.above,r)},detectItemVisibility:function(t){var s=this,i=s.$li.filter(\"[data-index]\");s.state.multiple&&(t=e.isArray(t)&&0===t.length?0:t,t=e.isArray(t)?Math.min.apply(Math,t):t);var l=i.eq(t).outerHeight(),n=i[t].offsetTop,a=s.elements.itemsScroll.scrollTop(),o=n+2*l;s.elements.itemsScroll.scrollTop(o>a+s.itemsHeight?o-s.itemsHeight:n-l0)&&t.preventDefault()}),l.detectItemVisibility(l.state.selectedIdx),l.highlight(l.state.multiple?-1:l.state.selectedIdx),l.utils.triggerCallback(\"Open\",l))))},close:function(){var e=this;e.utils.triggerCallback(\"BeforeClose\",e),t.off(n),e.elements.outerWrapper.removeClass(e.classes.open),e.state.opened=!1,e.utils.triggerCallback(\"Close\",e)},change:function(){var t=this;t.utils.triggerCallback(\"BeforeChange\",t),t.state.multiple?(e.each(t.lookupItems,function(e){t.lookupItems[e].selected=!1,t.$element.find(\"option\").prop(\"selected\",!1)}),e.each(t.state.selectedIdx,function(e,s){t.lookupItems[s].selected=!0,t.$element.find(\"option\").eq(s).prop(\"selected\",!0)}),t.state.currValue=t.state.selectedIdx,t.setLabel(),t.utils.triggerCallback(\"Change\",t)):t.state.currValue!==t.state.selectedIdx&&(t.$element.prop(\"selectedIndex\",t.state.currValue=t.state.selectedIdx).data(\"value\",t.lookupItems[t.state.selectedIdx].text),t.setLabel(),t.utils.triggerCallback(\"Change\",t))},highlight:function(e){var t=this,s=t.$li.filter(\"[data-index]\").removeClass(\"highlighted\");t.utils.triggerCallback(\"BeforeHighlight\",t),void 0===e||e===-1||t.lookupItems[e].disabled||(s.eq(t.state.highlightedIdx=e).addClass(\"highlighted\"),t.detectItemVisibility(e),t.utils.triggerCallback(\"Highlight\",t))},select:function(t){var s=this,i=s.$li.filter(\"[data-index]\");if(s.utils.triggerCallback(\"BeforeSelect\",s,t),void 0!==t&&t!==-1&&!s.lookupItems[t].disabled){if(s.state.multiple){s.state.selectedIdx=e.isArray(s.state.selectedIdx)?s.state.selectedIdx:[s.state.selectedIdx];var l=e.inArray(t,s.state.selectedIdx);l!==-1?s.state.selectedIdx.splice(l,1):s.state.selectedIdx.push(t),i.removeClass(\"selected\").filter(function(t){return e.inArray(t,s.state.selectedIdx)!==-1}).addClass(\"selected\")}else i.removeClass(\"selected\").eq(s.state.selectedIdx=t).addClass(\"selected\");s.state.multiple&&s.options.multiple.keepMenuOpen||s.close(),s.change(),s.utils.triggerCallback(\"Select\",s,t)}},destroy:function(e){var t=this;t.state&&t.state.enabled&&(t.elements.items.add(t.elements.wrapper).add(t.elements.input).remove(),e||t.$element.removeData(i).removeData(\"value\"),t.$element.prop(\"tabindex\",t.originalTabindex).off(n).off(t.eventTriggers).unwrap().unwrap(),t.state.enabled=!1)}},e.fn[i]=function(t){return this.each(function(){var s=e.data(this,i);s&&!s.disableOnMobile?\"string\"==typeof t&&s[t]?s[t]():s.init(t):e.data(this,i,new r(this,t))})},e.fn[i].defaults={onChange:function(t){e(t).change()},maxHeight:300,keySearchTimeout:500,arrowButtonMarkup:'',disableOnMobile:!1,nativeOnMobile:!0,openOnFocus:!0,openOnHover:!1,hoverIntentTimeout:500,expandToItemText:!1,responsive:!1,preventWindowScroll:!0,inheritOriginalWidth:!1,allowWrap:!0,stopPropagation:!0,optionsItemBuilder:\"{text}\",labelBuilder:\"{text}\",listBuilder:!1,keys:{previous:[37,38],next:[39,40],select:[9,13,27],open:[13,32,37,38,39,40],close:[9,27]},customClass:{prefix:i,camelCase:!1},multiple:{separator:\", \",keepMenuOpen:!0,maxLabelEntries:!1}}});\n/*\nDONT MODIFY OR UPDATE/REPLACE THIS FILE\n\nThese lines below were commented out to disable Shave elements automatically generating.\n- line 163 - 168: removed diff string element\n- line 196 - 111: removed span tag that wraps ... characters\n*/\n/**\n shave - Shave is a javascript plugin that truncates multi-line text within a html element based on set max height\n @version v5.0.2\n @link https://github.com/yowainwright/shave#readme\n @author Jeff Wainwright (jeffry.in)\n @license MIT\n**/\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.shave = factory());\n})(this, (function () { 'use strict';\n\n /******************************************************************************\n Copyright (c) Microsoft Corporation.\n\n Permission to use, copy, modify, and/or distribute this software for any\n purpose with or without fee is hereby granted.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n PERFORMANCE OF THIS SOFTWARE.\n ***************************************************************************** */\n\n function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n }\n\n function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n }\n\n function generateArrayOfNodes(target) {\n if (typeof target === 'string') {\n return __spreadArray([], __read(document.querySelectorAll(target)), false);\n }\n else if ('length' in target) {\n return __spreadArray([], __read(target), false);\n }\n else {\n return [target];\n }\n }\n function shave(target, maxHeight, opts) {\n if (opts === void 0) { opts = {}; }\n if (typeof maxHeight === 'undefined' || isNaN(maxHeight)) {\n throw Error('maxHeight is required');\n }\n var els = generateArrayOfNodes(target);\n if (!els.length) {\n return;\n }\n var _a = opts.character, character = _a === void 0 ? '…' : _a, _b = opts.classname, classname = _b === void 0 ? 'js-shave' : _b, _c = opts.spaces, initialSpaces = _c === void 0 ? true : _c, _d = opts.charclassname, charclassname = _d === void 0 ? 'js-shave-char' : _d, _e = opts.link, link = _e === void 0 ? {} : _e;\n /**\n * @notes\n * the initialSpaces + spaces variable definition below fixes\n * a previous bug where spaces being a boolean type wasn't clear\n * meaning people were using (a string, in example—which is truthy)\n * hence, doing it this way is a non-breaking change\n */\n var spaces = typeof initialSpaces === 'boolean' ? initialSpaces : true;\n /**\n * @notes\n * - create a span or anchor element and assign properties to it\n * - JSON.stringify is used to support IE8+\n * - if link.href is not provided, link object properties are ignored\n */\n var isLink = link && JSON.stringify(link) !== '{}' && link.href;\n var shavedTextElType = isLink ? 'a' : 'span';\n for (var i = 0; i < els.length; i += 1) {\n var el = els[i];\n var styles = el.style;\n // var span = el.querySelector('.' + classname);\n var textProp = el.textContent === undefined ? 'innerText' : 'textContent';\n // If element text has already been shaved\n // if (span) {\n // // Remove the ellipsis to recapture the original text\n // // el.removeChild(el.querySelector('.' + charclassname));\n // // el[textProp] = el[textProp]; // eslint-disable-line\n // // nuke span, recombine text\n // }\n var fullText = el[textProp];\n var words = spaces ? fullText.split(' ') : fullText;\n // If 0 or 1 words, we're done\n if (words.length < 2) {\n continue;\n }\n // Temporarily remove any CSS height for text height calculation\n var heightStyle = styles.height;\n styles.height = 'auto';\n var maxHeightStyle = styles.maxHeight;\n styles.maxHeight = 'none';\n // If already short enough, we're done\n if (el.offsetHeight <= maxHeight) {\n styles.height = heightStyle;\n styles.maxHeight = maxHeightStyle;\n continue;\n }\n var textContent = isLink && link.textContent ? link.textContent : character;\n var shavedTextEl = document.createElement(shavedTextElType);\n var shavedTextElAttributes = {\n className: charclassname,\n textContent: textContent,\n };\n for (var property in shavedTextElAttributes) {\n shavedTextEl[property] = shavedTextElAttributes[property];\n shavedTextEl.textContent = character;\n }\n if (isLink) {\n for (var linkProperty in link) {\n shavedTextEl[linkProperty] = link[linkProperty];\n }\n }\n // Binary search for number of words which can fit in allotted height\n var max = words.length - 1;\n var min = 0;\n var pivot = void 0;\n while (min < max) {\n pivot = (min + max + 1) >> 1; // eslint-disable-line no-bitwise\n el[textProp] = spaces\n ? words.slice(0, pivot).join(' ')\n : words.slice(0, pivot);\n el.insertAdjacentHTML('beforeend', shavedTextEl.textContent);\n if (el.offsetHeight > maxHeight) {\n max = pivot - 1;\n }\n else {\n min = pivot;\n }\n }\n el[textProp] = spaces ? words.slice(0, max).join(' ') : words.slice(0, max);\n el.insertAdjacentHTML('beforeend', shavedTextEl.textContent);\n // var diff = spaces\n // ? \" \".concat(words.slice(max).join(' '))\n // : words.slice(max);\n // var shavedText = document.createTextNode(diff);\n // var elWithShavedText = document.createElement('span');\n // elWithShavedText.classList.add(classname);\n // elWithShavedText.style.display = 'none';\n // elWithShavedText.appendChild(shavedText);\n // el.insertAdjacentElement('beforeend', elWithShavedText);\n styles.height = heightStyle;\n styles.maxHeight = maxHeightStyle;\n }\n }\n\n return shave;\n\n}));\n\n/**\n * SVGInjector v1.1.3 - Fast, caching, dynamic inline SVG DOM injection library\n * https://github.com/iconic/SVGInjector\n *\n * Copyright (c) 2014-2015 Waybury \n * @license MIT\n */\n!function(t,e){\"use strict\";function r(t){t=t.split(\" \");for(var e={},r=t.length,n=[];r--;)e.hasOwnProperty(t[r])||(e[t[r]]=1,n.unshift(t[r]));return n.join(\" \")}var n=\"file:\"===t.location.protocol,i=e.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\",\"1.1\"),o=Array.prototype.forEach||function(t,e){if(void 0===this||null===this||\"function\"!=typeof t)throw new TypeError;var r,n=this.length>>>0;for(r=0;n>r;++r)r in this&&t.call(e,this[r],r,this)},a={},l=0,s=[],u=[],c={},f=function(t){return t.cloneNode(!0)},p=function(t,e){u[t]=u[t]||[],u[t].push(e)},d=function(t){for(var e=0,r=u[t].length;r>e;e++)!function(e){setTimeout(function(){u[t][e](f(a[t]))},0)}(e)},v=function(e,r){if(void 0!==a[e])a[e]instanceof SVGSVGElement?r(f(a[e])):p(e,r);else{if(!t.XMLHttpRequest)return r(\"Browser does not support XMLHttpRequest\"),!1;a[e]={},p(e,r);var i=new XMLHttpRequest;i.onreadystatechange=function(){if(4===i.readyState){if(404===i.status||null===i.responseXML)return r(\"Unable to load SVG file: \"+e),n&&r(\"Note: SVG injection ajax calls do not work locally without adjusting security setting in your browser. Or consider using a local webserver.\"),r(),!1;if(!(200===i.status||n&&0===i.status))return r(\"There was a problem injecting the SVG: \"+i.status+\" \"+i.statusText),!1;if(i.responseXML instanceof Document)a[e]=i.responseXML.documentElement;else if(DOMParser&&DOMParser instanceof Function){var t;try{var o=new DOMParser;t=o.parseFromString(i.responseText,\"text/xml\")}catch(l){t=void 0}if(!t||t.getElementsByTagName(\"parsererror\").length)return r(\"Unable to parse SVG file: \"+e),!1;a[e]=t.documentElement}d(e)}},i.open(\"GET\",e),i.overrideMimeType&&i.overrideMimeType(\"text/xml\"),i.send()}},h=function(e,n,a,u){var f=e.getAttribute(\"data-src\")||e.getAttribute(\"src\");if(!/\\.svg/i.test(f))return void u(\"Attempted to inject a file with a non-svg extension: \"+f);if(!i){var p=e.getAttribute(\"data-fallback\")||e.getAttribute(\"data-png\");return void(p?(e.setAttribute(\"src\",p),u(null)):a?(e.setAttribute(\"src\",a+\"/\"+f.split(\"/\").pop().replace(\".svg\",\".png\")),u(null)):u(\"This browser does not support SVG and no PNG fallback was defined.\"))}-1===s.indexOf(e)&&(s.push(e),e.setAttribute(\"src\",\"\"),v(f,function(i){if(\"undefined\"==typeof i||\"string\"==typeof i)return u(i),!1;var a=e.getAttribute(\"id\");a&&i.setAttribute(\"id\",a);var p=e.getAttribute(\"title\");p&&i.setAttribute(\"title\",p);var d=[].concat(i.getAttribute(\"class\")||[],\"injected-svg\",e.getAttribute(\"class\")||[]).join(\" \");i.setAttribute(\"class\",r(d));var v=e.getAttribute(\"style\");v&&i.setAttribute(\"style\",v);var h=[].filter.call(e.attributes,function(t){return/^data-\\w[\\w\\-]*$/.test(t.name)});o.call(h,function(t){t.name&&t.value&&i.setAttribute(t.name,t.value)});var g,m,b,y,A,w={clipPath:[\"clip-path\"],\"color-profile\":[\"color-profile\"],cursor:[\"cursor\"],filter:[\"filter\"],linearGradient:[\"fill\",\"stroke\"],marker:[\"marker\",\"marker-start\",\"marker-mid\",\"marker-end\"],mask:[\"mask\"],pattern:[\"fill\",\"stroke\"],radialGradient:[\"fill\",\"stroke\"]};Object.keys(w).forEach(function(t){g=t,b=w[t],m=i.querySelectorAll(\"defs \"+g+\"[id]\");for(var e=0,r=m.length;r>e;e++){y=m[e].id,A=y+\"-\"+l;var n;o.call(b,function(t){n=i.querySelectorAll(\"[\"+t+'*=\"'+y+'\"]');for(var e=0,r=n.length;r>e;e++)n[e].setAttribute(t,\"url(#\"+A+\")\")}),m[e].id=A}}),i.removeAttribute(\"xmlns:a\");for(var x,S,k=i.querySelectorAll(\"script\"),j=[],G=0,T=k.length;T>G;G++)S=k[G].getAttribute(\"type\"),S&&\"application/ecmascript\"!==S&&\"application/javascript\"!==S||(x=k[G].innerText||k[G].textContent,j.push(x),i.removeChild(k[G]));if(j.length>0&&(\"always\"===n||\"once\"===n&&!c[f])){for(var M=0,V=j.length;V>M;M++)new Function(j[M])(t);c[f]=!0}var E=i.querySelectorAll(\"style\");o.call(E,function(t){t.textContent+=\"\"}),e.parentNode.replaceChild(i,e),delete s[s.indexOf(e)],e=null,l++,u(i)}))},g=function(t,e,r){e=e||{};var n=e.evalScripts||\"always\",i=e.pngFallback||!1,a=e.each;if(void 0!==t.length){var l=0;o.call(t,function(e){h(e,n,i,function(e){a&&\"function\"==typeof a&&a(e),r&&t.length===++l&&r(l)})})}else t?h(t,n,i,function(e){a&&\"function\"==typeof a&&a(e),r&&r(1),t=null}):r&&r(0)};\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=exports=g:\"function\"==typeof define&&define.amd?define(function(){return g}):\"object\"==typeof t&&(t.SVGInjector=g)}(window,document);\n/**\n * Swiper 3.4.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * \n * http://www.idangero.us/swiper/\n * \n * Copyright 2016, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n * \n * Licensed under MIT\n * \n * Released on: December 13, 2016\n */\n(function () {\n 'use strict';\n var $;\n /*===========================\n Swiper\n ===========================*/\n var Swiper = function (container, params) {\n if (!(this instanceof Swiper)) return new Swiper(container, params);\n\n var defaults = {\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n // autoplay\n autoplay: false,\n autoplayDisableOnInteraction: true,\n autoplayStopOnLast: false,\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n iOSEdgeSwipeDetection: false,\n iOSEdgeSwipeThreshold: 20,\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n coverflow: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n modifier: 1,\n slideShadows : true\n },\n flip: {\n slideShadows : true,\n limitRotation: true\n },\n cube: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n },\n fade: {\n crossFade: false\n },\n // Parallax\n parallax: false,\n // Zoom\n zoom: false,\n zoomMax: 3,\n zoomMin: 1,\n zoomToggle: true,\n // Scrollbar\n scrollbar: null,\n scrollbarHide: true,\n scrollbarDraggable: false,\n scrollbarSnapOnRelease: false,\n // Keyboard Mousewheel\n keyboardControl: false,\n mousewheelControl: false,\n mousewheelReleaseOnEdges: false,\n mousewheelInvert: false,\n mousewheelForceToAxis: false,\n mousewheelSensitivity: 1,\n mousewheelEventsTarged: 'container',\n // Hash Navigation\n hashnav: false,\n hashnavWatchState: false,\n // History\n history: false,\n // Commong Nav State\n replaceState: false,\n // Breakpoints\n breakpoints: undefined,\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n centeredSlides: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n onlyExternal: false,\n threshold: 0,\n touchMoveStopPropagation: true,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Pagination\n pagination: null,\n paginationElement: 'span',\n paginationClickable: false,\n paginationHide: false,\n paginationBulletRender: null,\n paginationProgressRender: null,\n paginationFractionRender: null,\n paginationCustomRender: null,\n paginationType: 'bullets', // 'bullets' or 'progress' or 'fraction' or 'custom'\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Next/prev buttons\n nextButton: null,\n prevButton: null,\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Lazy Loading\n lazyLoading: false,\n lazyLoadingInPrevNext: false,\n lazyLoadingInPrevNextAmount: 1,\n lazyLoadingOnTransitionStart: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n // Control\n control: undefined,\n controlInverse: false,\n controlBy: 'slide', //or 'container'\n normalizeSlideIndex: true,\n // Swiping/no swiping\n allowSwipeToPrev: true,\n allowSwipeToNext: true,\n swipeHandler: null, //'.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n // Passive Listeners\n passiveListeners: true,\n // NS\n containerModifierClass: 'swiper-container-', // NEW\n slideClass: 'swiper-slide',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n buttonDisabledClass: 'swiper-button-disabled',\n paginationCurrentClass: 'swiper-pagination-current',\n paginationTotalClass: 'swiper-pagination-total',\n paginationHiddenClass: 'swiper-pagination-hidden',\n paginationProgressbarClass: 'swiper-pagination-progressbar',\n paginationClickableClass: 'swiper-pagination-clickable', // NEW\n paginationModifierClass: 'swiper-pagination-', // NEW\n lazyLoadingClass: 'swiper-lazy',\n lazyStatusLoadingClass: 'swiper-lazy-loading',\n lazyStatusLoadedClass: 'swiper-lazy-loaded',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n notificationClass: 'swiper-notification',\n preloaderClass: 'preloader',\n zoomContainerClass: 'swiper-zoom-container',\n \n // Observer\n observer: false,\n observeParents: false,\n // Accessibility\n a11y: false,\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n // Callbacks\n runCallbacksOnInit: true\n /*\n Callbacks:\n onInit: function (swiper)\n onDestroy: function (swiper)\n onClick: function (swiper, e)\n onTap: function (swiper, e)\n onDoubleTap: function (swiper, e)\n onSliderMove: function (swiper, e)\n onSlideChangeStart: function (swiper)\n onSlideChangeEnd: function (swiper)\n onTransitionStart: function (swiper)\n onTransitionEnd: function (swiper)\n onImagesReady: function (swiper)\n onProgress: function (swiper, progress)\n onTouchStart: function (swiper, e)\n onTouchMove: function (swiper, e)\n onTouchMoveOpposite: function (swiper, e)\n onTouchEnd: function (swiper, e)\n onReachBeginning: function (swiper)\n onReachEnd: function (swiper)\n onSetTransition: function (swiper, duration)\n onSetTranslate: function (swiper, translate)\n onAutoplayStart: function (swiper)\n onAutoplayStop: function (swiper),\n onLazyImageLoad: function (swiper, slide, image)\n onLazyImageReady: function (swiper, slide, image)\n */\n \n };\n var initialVirtualTranslate = params && params.virtualTranslate;\n \n params = params || {};\n var originalParams = {};\n for (var param in params) {\n if (typeof params[param] === 'object' && params[param] !== null && !(params[param].nodeType || params[param] === window || params[param] === document || (typeof Dom7 !== 'undefined' && params[param] instanceof Dom7) || (typeof jQuery !== 'undefined' && params[param] instanceof jQuery))) {\n originalParams[param] = {};\n for (var deepParam in params[param]) {\n originalParams[param][deepParam] = params[param][deepParam];\n }\n }\n else {\n originalParams[param] = params[param];\n }\n }\n for (var def in defaults) {\n if (typeof params[def] === 'undefined') {\n params[def] = defaults[def];\n }\n else if (typeof params[def] === 'object') {\n for (var deepDef in defaults[def]) {\n if (typeof params[def][deepDef] === 'undefined') {\n params[def][deepDef] = defaults[def][deepDef];\n }\n }\n }\n }\n \n // Swiper\n var s = this;\n \n // Params\n s.params = params;\n s.originalParams = originalParams;\n \n // Classname\n s.classNames = [];\n /*=========================\n Dom Library and plugins\n ===========================*/\n if (typeof $ !== 'undefined' && typeof Dom7 !== 'undefined'){\n $ = Dom7;\n }\n if (typeof $ === 'undefined') {\n if (typeof Dom7 === 'undefined') {\n $ = window.Dom7 || window.Zepto || window.jQuery;\n }\n else {\n $ = Dom7;\n }\n if (!$) return;\n }\n // Export it to Swiper instance\n s.$ = $;\n \n /*=========================\n Breakpoints\n ===========================*/\n s.currentBreakpoint = undefined;\n s.getActiveBreakpoint = function () {\n //Get breakpoint for window width\n if (!s.params.breakpoints) return false;\n var breakpoint = false;\n var points = [], point;\n for ( point in s.params.breakpoints ) {\n if (s.params.breakpoints.hasOwnProperty(point)) {\n points.push(point);\n }\n }\n points.sort(function (a, b) {\n return parseInt(a, 10) > parseInt(b, 10);\n });\n for (var i = 0; i < points.length; i++) {\n point = points[i];\n if (point >= window.innerWidth && !breakpoint) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n };\n s.setBreakpoint = function () {\n //Set breakpoint for window width and update parameters\n var breakpoint = s.getActiveBreakpoint();\n if (breakpoint && s.currentBreakpoint !== breakpoint) {\n var breakPointsParams = breakpoint in s.params.breakpoints ? s.params.breakpoints[breakpoint] : s.originalParams;\n var needsReLoop = s.params.loop && (breakPointsParams.slidesPerView !== s.params.slidesPerView);\n for ( var param in breakPointsParams ) {\n s.params[param] = breakPointsParams[param];\n }\n s.currentBreakpoint = breakpoint;\n if(needsReLoop && s.destroyLoop) {\n s.reLoop(true);\n }\n }\n };\n // Set breakpoint on load\n if (s.params.breakpoints) {\n s.setBreakpoint();\n }\n \n /*=========================\n Preparation - Define Container, Wrapper and Pagination\n ===========================*/\n s.container = $(container);\n if (s.container.length === 0) return;\n if (s.container.length > 1) {\n var swipers = [];\n s.container.each(function () {\n var container = this;\n swipers.push(new Swiper(this, params));\n });\n return swipers;\n }\n \n // Save instance in container HTML Element and in data\n s.container[0].swiper = s;\n s.container.data('swiper', s);\n \n s.classNames.push(s.params.containerModifierClass + s.params.direction);\n \n if (s.params.freeMode) {\n s.classNames.push(s.params.containerModifierClass + 'free-mode');\n }\n if (!s.support.flexbox) {\n s.classNames.push(s.params.containerModifierClass + 'no-flexbox');\n s.params.slidesPerColumn = 1;\n }\n if (s.params.autoHeight) {\n s.classNames.push(s.params.containerModifierClass + 'autoheight');\n }\n // Enable slides progress when required\n if (s.params.parallax || s.params.watchSlidesVisibility) {\n s.params.watchSlidesProgress = true;\n }\n // Max resistance when touchReleaseOnEdges\n if (s.params.touchReleaseOnEdges) {\n s.params.resistanceRatio = 0;\n }\n // Coverflow / 3D\n if (['cube', 'coverflow', 'flip'].indexOf(s.params.effect) >= 0) {\n if (s.support.transforms3d) {\n s.params.watchSlidesProgress = true;\n s.classNames.push(s.params.containerModifierClass + '3d');\n }\n else {\n s.params.effect = 'slide';\n }\n }\n if (s.params.effect !== 'slide') {\n s.classNames.push(s.params.containerModifierClass + s.params.effect);\n }\n if (s.params.effect === 'cube') {\n s.params.resistanceRatio = 0;\n s.params.slidesPerView = 1;\n s.params.slidesPerColumn = 1;\n s.params.slidesPerGroup = 1;\n s.params.centeredSlides = false;\n s.params.spaceBetween = 0;\n s.params.virtualTranslate = true;\n s.params.setWrapperSize = false;\n }\n if (s.params.effect === 'fade' || s.params.effect === 'flip') {\n s.params.slidesPerView = 1;\n s.params.slidesPerColumn = 1;\n s.params.slidesPerGroup = 1;\n s.params.watchSlidesProgress = true;\n s.params.spaceBetween = 0;\n s.params.setWrapperSize = false;\n if (typeof initialVirtualTranslate === 'undefined') {\n s.params.virtualTranslate = true;\n }\n }\n \n // Grab Cursor\n if (s.params.grabCursor && s.support.touch) {\n s.params.grabCursor = false;\n }\n \n // Wrapper\n s.wrapper = s.container.children('.' + s.params.wrapperClass);\n \n // Pagination\n if (s.params.pagination) {\n s.paginationContainer = $(s.params.pagination);\n if (s.params.uniqueNavElements && typeof s.params.pagination === 'string' && s.paginationContainer.length > 1 && s.container.find(s.params.pagination).length === 1) {\n s.paginationContainer = s.container.find(s.params.pagination);\n }\n \n if (s.params.paginationType === 'bullets' && s.params.paginationClickable) {\n s.paginationContainer.addClass(s.params.paginationModifierClass + 'clickable');\n }\n else {\n s.params.paginationClickable = false;\n }\n s.paginationContainer.addClass(s.params.paginationModifierClass + s.params.paginationType);\n }\n // Next/Prev Buttons\n if (s.params.nextButton || s.params.prevButton) {\n if (s.params.nextButton) {\n s.nextButton = $(s.params.nextButton);\n if (s.params.uniqueNavElements && typeof s.params.nextButton === 'string' && s.nextButton.length > 1 && s.container.find(s.params.nextButton).length === 1) {\n s.nextButton = s.container.find(s.params.nextButton);\n }\n }\n if (s.params.prevButton) {\n s.prevButton = $(s.params.prevButton);\n if (s.params.uniqueNavElements && typeof s.params.prevButton === 'string' && s.prevButton.length > 1 && s.container.find(s.params.prevButton).length === 1) {\n s.prevButton = s.container.find(s.params.prevButton);\n }\n }\n }\n \n // Is Horizontal\n s.isHorizontal = function () {\n return s.params.direction === 'horizontal';\n };\n // s.isH = isH;\n \n // RTL\n s.rtl = s.isHorizontal() && (s.container[0].dir.toLowerCase() === 'rtl' || s.container.css('direction') === 'rtl');\n if (s.rtl) {\n s.classNames.push(s.params.containerModifierClass + 'rtl');\n }\n \n // Wrong RTL support\n if (s.rtl) {\n s.wrongRTL = s.wrapper.css('display') === '-webkit-box';\n }\n \n // Columns\n if (s.params.slidesPerColumn > 1) {\n s.classNames.push(s.params.containerModifierClass + 'multirow');\n }\n \n // Check for Android\n if (s.device.android) {\n s.classNames.push(s.params.containerModifierClass + 'android');\n }\n \n // Add classes\n s.container.addClass(s.classNames.join(' '));\n \n // Translate\n s.translate = 0;\n \n // Progress\n s.progress = 0;\n \n // Velocity\n s.velocity = 0;\n \n /*=========================\n Locks, unlocks\n ===========================*/\n s.lockSwipeToNext = function () {\n s.params.allowSwipeToNext = false;\n if (s.params.allowSwipeToPrev === false && s.params.grabCursor) {\n s.unsetGrabCursor();\n }\n };\n s.lockSwipeToPrev = function () {\n s.params.allowSwipeToPrev = false;\n if (s.params.allowSwipeToNext === false && s.params.grabCursor) {\n s.unsetGrabCursor();\n }\n };\n s.lockSwipes = function () {\n s.params.allowSwipeToNext = s.params.allowSwipeToPrev = false;\n if (s.params.grabCursor) s.unsetGrabCursor();\n };\n s.unlockSwipeToNext = function () {\n s.params.allowSwipeToNext = true;\n if (s.params.allowSwipeToPrev === true && s.params.grabCursor) {\n s.setGrabCursor();\n }\n };\n s.unlockSwipeToPrev = function () {\n s.params.allowSwipeToPrev = true;\n if (s.params.allowSwipeToNext === true && s.params.grabCursor) {\n s.setGrabCursor();\n }\n };\n s.unlockSwipes = function () {\n s.params.allowSwipeToNext = s.params.allowSwipeToPrev = true;\n if (s.params.grabCursor) s.setGrabCursor();\n };\n \n /*=========================\n Round helper\n ===========================*/\n function round(a) {\n return Math.floor(a);\n }\n /*=========================\n Set grab cursor\n ===========================*/\n s.setGrabCursor = function(moving) {\n s.container[0].style.cursor = 'move';\n s.container[0].style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n s.container[0].style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n s.container[0].style.cursor = moving ? 'grabbing': 'grab';\n };\n s.unsetGrabCursor = function () {\n s.container[0].style.cursor = '';\n };\n if (s.params.grabCursor) {\n s.setGrabCursor();\n }\n /*=========================\n Update on Images Ready\n ===========================*/\n s.imagesToLoad = [];\n s.imagesLoaded = 0;\n \n s.loadImage = function (imgElement, src, srcset, sizes, checkForComplete, callback) {\n var image;\n function onReady () {\n if (callback) callback();\n }\n if (!imgElement.complete || !checkForComplete) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n \n } else {//image already loaded...\n onReady();\n }\n };\n s.preloadImages = function () {\n s.imagesToLoad = s.container.find('img');\n function _onReady() {\n if (typeof s === 'undefined' || s === null || !s) return;\n if (s.imagesLoaded !== undefined) s.imagesLoaded++;\n if (s.imagesLoaded === s.imagesToLoad.length) {\n if (s.params.updateOnImagesReady) s.update();\n s.emit('onImagesReady', s);\n }\n }\n for (var i = 0; i < s.imagesToLoad.length; i++) {\n s.loadImage(s.imagesToLoad[i], (s.imagesToLoad[i].currentSrc || s.imagesToLoad[i].getAttribute('src')), (s.imagesToLoad[i].srcset || s.imagesToLoad[i].getAttribute('srcset')), s.imagesToLoad[i].sizes || s.imagesToLoad[i].getAttribute('sizes'), true, _onReady);\n }\n };\n \n /*=========================\n Autoplay\n ===========================*/\n s.autoplayTimeoutId = undefined;\n s.autoplaying = false;\n s.autoplayPaused = false;\n function autoplay() {\n var autoplayDelay = s.params.autoplay;\n var activeSlide = s.slides.eq(s.activeIndex);\n if (activeSlide.attr('data-swiper-autoplay')) {\n autoplayDelay = activeSlide.attr('data-swiper-autoplay') || s.params.autoplay;\n }\n s.autoplayTimeoutId = setTimeout(function () {\n if (s.params.loop) {\n s.fixLoop();\n s._slideNext();\n s.emit('onAutoplay', s);\n }\n else {\n if (!s.isEnd) {\n s._slideNext();\n s.emit('onAutoplay', s);\n }\n else {\n if (!params.autoplayStopOnLast) {\n s._slideTo(0);\n s.emit('onAutoplay', s);\n }\n else {\n s.stopAutoplay();\n }\n }\n }\n }, autoplayDelay);\n }\n s.startAutoplay = function () {\n if (typeof s.autoplayTimeoutId !== 'undefined') return false;\n if (!s.params.autoplay) return false;\n if (s.autoplaying) return false;\n s.autoplaying = true;\n s.emit('onAutoplayStart', s);\n autoplay();\n };\n s.stopAutoplay = function (internal) {\n if (!s.autoplayTimeoutId) return;\n if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId);\n s.autoplaying = false;\n s.autoplayTimeoutId = undefined;\n s.emit('onAutoplayStop', s);\n };\n s.pauseAutoplay = function (speed) {\n if (s.autoplayPaused) return;\n if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId);\n s.autoplayPaused = true;\n if (speed === 0) {\n s.autoplayPaused = false;\n autoplay();\n }\n else {\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.autoplayPaused = false;\n if (!s.autoplaying) {\n s.stopAutoplay();\n }\n else {\n autoplay();\n }\n });\n }\n };\n /*=========================\n Min/Max Translate\n ===========================*/\n s.minTranslate = function () {\n return (-s.snapGrid[0]);\n };\n s.maxTranslate = function () {\n return (-s.snapGrid[s.snapGrid.length - 1]);\n };\n /*=========================\n Slider/slides sizes\n ===========================*/\n s.updateAutoHeight = function () {\n var activeSlides = [];\n var newHeight = 0;\n var i;\n \n // Find slides currently in view\n if(s.params.slidesPerView !== 'auto' && s.params.slidesPerView > 1) {\n for (i = 0; i < Math.ceil(s.params.slidesPerView); i++) {\n var index = s.activeIndex + i;\n if(index > s.slides.length) break;\n activeSlides.push(s.slides.eq(index)[0]);\n }\n } else {\n activeSlides.push(s.slides.eq(s.activeIndex)[0]);\n }\n \n // Find new height from heighest slide in view\n for (i = 0; i < activeSlides.length; i++) {\n if (typeof activeSlides[i] !== 'undefined') {\n var height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n \n // Update Height\n if (newHeight) s.wrapper.css('height', newHeight + 'px');\n };\n s.updateContainerSize = function () {\n var width, height;\n if (typeof s.params.width !== 'undefined') {\n width = s.params.width;\n }\n else {\n width = s.container[0].clientWidth;\n }\n if (typeof s.params.height !== 'undefined') {\n height = s.params.height;\n }\n else {\n height = s.container[0].clientHeight;\n }\n if (width === 0 && s.isHorizontal() || height === 0 && !s.isHorizontal()) {\n return;\n }\n \n //Subtract paddings\n width = width - parseInt(s.container.css('padding-left'), 10) - parseInt(s.container.css('padding-right'), 10);\n height = height - parseInt(s.container.css('padding-top'), 10) - parseInt(s.container.css('padding-bottom'), 10);\n \n // Store values\n s.width = width;\n s.height = height;\n s.size = s.isHorizontal() ? s.width : s.height;\n };\n \n s.updateSlidesSize = function () {\n s.slides = s.wrapper.children('.' + s.params.slideClass);\n s.snapGrid = [];\n s.slidesGrid = [];\n s.slidesSizesGrid = [];\n \n var spaceBetween = s.params.spaceBetween,\n slidePosition = -s.params.slidesOffsetBefore,\n i,\n prevSlideSize = 0,\n index = 0;\n if (typeof s.size === 'undefined') return;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * s.size;\n }\n \n s.virtualSize = -spaceBetween;\n // reset margins\n if (s.rtl) s.slides.css({marginLeft: '', marginTop: ''});\n else s.slides.css({marginRight: '', marginBottom: ''});\n \n var slidesNumberEvenToRows;\n if (s.params.slidesPerColumn > 1) {\n if (Math.floor(s.slides.length / s.params.slidesPerColumn) === s.slides.length / s.params.slidesPerColumn) {\n slidesNumberEvenToRows = s.slides.length;\n }\n else {\n slidesNumberEvenToRows = Math.ceil(s.slides.length / s.params.slidesPerColumn) * s.params.slidesPerColumn;\n }\n if (s.params.slidesPerView !== 'auto' && s.params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, s.params.slidesPerView * s.params.slidesPerColumn);\n }\n }\n \n // Calc slides\n var slideSize;\n var slidesPerColumn = s.params.slidesPerColumn;\n var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n var numFullColumns = slidesPerRow - (s.params.slidesPerColumn * slidesPerRow - s.slides.length);\n for (i = 0; i < s.slides.length; i++) {\n slideSize = 0;\n var slide = s.slides.eq(i);\n if (s.params.slidesPerColumn > 1) {\n // Set slides order\n var newSlideOrderIndex;\n var column, row;\n if (s.params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - column * slidesPerColumn;\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn-1)) {\n if (++row >= slidesPerColumn) {\n row = 0;\n column++;\n }\n }\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n 'order': newSlideOrderIndex\n });\n }\n else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide\n .css(\n 'margin-' + (s.isHorizontal() ? 'top' : 'left'),\n (row !== 0 && s.params.spaceBetween) && (s.params.spaceBetween + 'px')\n )\n .attr('data-swiper-column', column)\n .attr('data-swiper-row', row);\n \n }\n if (slide.css('display') === 'none') continue;\n if (s.params.slidesPerView === 'auto') {\n slideSize = s.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n if (s.params.roundLengths) slideSize = round(slideSize);\n }\n else {\n slideSize = (s.size - (s.params.slidesPerView - 1) * spaceBetween) / s.params.slidesPerView;\n if (s.params.roundLengths) slideSize = round(slideSize);\n \n if (s.isHorizontal()) {\n s.slides[i].style.width = slideSize + 'px';\n }\n else {\n s.slides[i].style.height = slideSize + 'px';\n }\n }\n s.slides[i].swiperSlideSize = slideSize;\n s.slidesSizesGrid.push(slideSize);\n \n \n if (s.params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (i === 0) slidePosition = slidePosition - s.size / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition);\n s.slidesGrid.push(slidePosition);\n }\n else {\n if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition);\n s.slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n \n s.virtualSize += slideSize + spaceBetween;\n \n prevSlideSize = slideSize;\n \n index ++;\n }\n s.virtualSize = Math.max(s.virtualSize, s.size) + s.params.slidesOffsetAfter;\n var newSlidesGrid;\n \n if (\n s.rtl && s.wrongRTL && (s.params.effect === 'slide' || s.params.effect === 'coverflow')) {\n s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'});\n }\n if (!s.support.flexbox || s.params.setWrapperSize) {\n if (s.isHorizontal()) s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'});\n else s.wrapper.css({height: s.virtualSize + s.params.spaceBetween + 'px'});\n }\n \n if (s.params.slidesPerColumn > 1) {\n s.virtualSize = (slideSize + s.params.spaceBetween) * slidesNumberEvenToRows;\n s.virtualSize = Math.ceil(s.virtualSize / s.params.slidesPerColumn) - s.params.spaceBetween;\n if (s.isHorizontal()) s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'});\n else s.wrapper.css({height: s.virtualSize + s.params.spaceBetween + 'px'});\n if (s.params.centeredSlides) {\n newSlidesGrid = [];\n for (i = 0; i < s.snapGrid.length; i++) {\n if (s.snapGrid[i] < s.virtualSize + s.snapGrid[0]) newSlidesGrid.push(s.snapGrid[i]);\n }\n s.snapGrid = newSlidesGrid;\n }\n }\n \n // Remove last grid elements depending on width\n if (!s.params.centeredSlides) {\n newSlidesGrid = [];\n for (i = 0; i < s.snapGrid.length; i++) {\n if (s.snapGrid[i] <= s.virtualSize - s.size) {\n newSlidesGrid.push(s.snapGrid[i]);\n }\n }\n s.snapGrid = newSlidesGrid;\n if (Math.floor(s.virtualSize - s.size) - Math.floor(s.snapGrid[s.snapGrid.length - 1]) > 1) {\n s.snapGrid.push(s.virtualSize - s.size);\n }\n }\n if (s.snapGrid.length === 0) s.snapGrid = [0];\n \n if (s.params.spaceBetween !== 0) {\n if (s.isHorizontal()) {\n if (s.rtl) s.slides.css({marginLeft: spaceBetween + 'px'});\n else s.slides.css({marginRight: spaceBetween + 'px'});\n }\n else s.slides.css({marginBottom: spaceBetween + 'px'});\n }\n if (s.params.watchSlidesProgress) {\n s.updateSlidesOffset();\n }\n };\n s.updateSlidesOffset = function () {\n for (var i = 0; i < s.slides.length; i++) {\n s.slides[i].swiperSlideOffset = s.isHorizontal() ? s.slides[i].offsetLeft : s.slides[i].offsetTop;\n }\n };\n \n /*=========================\n Dynamic Slides Per View\n ===========================*/\n s.currentSlidesPerView = function () {\n var spv = 1, i, j;\n if (s.params.centeredSlides) {\n var size = s.slides[s.activeIndex].swiperSlideSize;\n var breakLoop;\n for (i = s.activeIndex + 1; i < s.slides.length; i++) {\n if (s.slides[i] && !breakLoop) {\n size += s.slides[i].swiperSlideSize;\n spv ++;\n if (size > s.size) breakLoop = true;\n }\n }\n for (j = s.activeIndex - 1; j >= 0; j--) {\n if (s.slides[j] && !breakLoop) {\n size += s.slides[j].swiperSlideSize;\n spv ++;\n if (size > s.size) breakLoop = true;\n }\n }\n }\n else {\n for (i = s.activeIndex + 1; i < s.slides.length; i++) {\n if (s.slidesGrid[i] - s.slidesGrid[s.activeIndex] < s.size) {\n spv++;\n }\n }\n }\n return spv;\n };\n /*=========================\n Slider/slides progress\n ===========================*/\n s.updateSlidesProgress = function (translate) {\n if (typeof translate === 'undefined') {\n translate = s.translate || 0;\n }\n if (s.slides.length === 0) return;\n if (typeof s.slides[0].swiperSlideOffset === 'undefined') s.updateSlidesOffset();\n \n var offsetCenter = -translate;\n if (s.rtl) offsetCenter = translate;\n \n // Visible Slides\n s.slides.removeClass(s.params.slideVisibleClass);\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides[i];\n var slideProgress = (offsetCenter + (s.params.centeredSlides ? s.minTranslate() : 0) - slide.swiperSlideOffset) / (slide.swiperSlideSize + s.params.spaceBetween);\n if (s.params.watchSlidesVisibility) {\n var slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n var slideAfter = slideBefore + s.slidesSizesGrid[i];\n var isVisible =\n (slideBefore >= 0 && slideBefore < s.size) ||\n (slideAfter > 0 && slideAfter <= s.size) ||\n (slideBefore <= 0 && slideAfter >= s.size);\n if (isVisible) {\n s.slides.eq(i).addClass(s.params.slideVisibleClass);\n }\n }\n slide.progress = s.rtl ? -slideProgress : slideProgress;\n }\n };\n s.updateProgress = function (translate) {\n if (typeof translate === 'undefined') {\n translate = s.translate || 0;\n }\n var translatesDiff = s.maxTranslate() - s.minTranslate();\n var wasBeginning = s.isBeginning;\n var wasEnd = s.isEnd;\n if (translatesDiff === 0) {\n s.progress = 0;\n s.isBeginning = s.isEnd = true;\n }\n else {\n s.progress = (translate - s.minTranslate()) / (translatesDiff);\n s.isBeginning = s.progress <= 0;\n s.isEnd = s.progress >= 1;\n }\n if (s.isBeginning && !wasBeginning) s.emit('onReachBeginning', s);\n if (s.isEnd && !wasEnd) s.emit('onReachEnd', s);\n \n if (s.params.watchSlidesProgress) s.updateSlidesProgress(translate);\n s.emit('onProgress', s, s.progress);\n };\n s.updateActiveIndex = function () {\n var translate = s.rtl ? s.translate : -s.translate;\n var newActiveIndex, i, snapIndex;\n for (i = 0; i < s.slidesGrid.length; i ++) {\n if (typeof s.slidesGrid[i + 1] !== 'undefined') {\n if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1] - (s.slidesGrid[i + 1] - s.slidesGrid[i]) / 2) {\n newActiveIndex = i;\n }\n else if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1]) {\n newActiveIndex = i + 1;\n }\n }\n else {\n if (translate >= s.slidesGrid[i]) {\n newActiveIndex = i;\n }\n }\n }\n // Normalize slideIndex\n if(s.params.normalizeSlideIndex){\n if (newActiveIndex < 0 || typeof newActiveIndex === 'undefined') newActiveIndex = 0;\n }\n // for (i = 0; i < s.slidesGrid.length; i++) {\n // if (- translate >= s.slidesGrid[i]) {\n // newActiveIndex = i;\n // }\n // }\n snapIndex = Math.floor(newActiveIndex / s.params.slidesPerGroup);\n if (snapIndex >= s.snapGrid.length) snapIndex = s.snapGrid.length - 1;\n \n if (newActiveIndex === s.activeIndex) {\n return;\n }\n s.snapIndex = snapIndex;\n s.previousIndex = s.activeIndex;\n s.activeIndex = newActiveIndex;\n s.updateClasses();\n s.updateRealIndex();\n };\n s.updateRealIndex = function(){\n s.realIndex = parseInt(s.slides.eq(s.activeIndex).attr('data-swiper-slide-index') || s.activeIndex, 10);\n };\n \n /*=========================\n Classes\n ===========================*/\n s.updateClasses = function () {\n s.slides.removeClass(s.params.slideActiveClass + ' ' + s.params.slideNextClass + ' ' + s.params.slidePrevClass + ' ' + s.params.slideDuplicateActiveClass + ' ' + s.params.slideDuplicateNextClass + ' ' + s.params.slideDuplicatePrevClass);\n var activeSlide = s.slides.eq(s.activeIndex);\n // Active classes\n activeSlide.addClass(s.params.slideActiveClass);\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(s.params.slideDuplicateClass)) {\n s.wrapper.children('.' + s.params.slideClass + ':not(.' + s.params.slideDuplicateClass + ')[data-swiper-slide-index=\"' + s.realIndex + '\"]').addClass(s.params.slideDuplicateActiveClass);\n }\n else {\n s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass + '[data-swiper-slide-index=\"' + s.realIndex + '\"]').addClass(s.params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n var nextSlide = activeSlide.next('.' + s.params.slideClass).addClass(s.params.slideNextClass);\n if (s.params.loop && nextSlide.length === 0) {\n nextSlide = s.slides.eq(0);\n nextSlide.addClass(s.params.slideNextClass);\n }\n // Prev Slide\n var prevSlide = activeSlide.prev('.' + s.params.slideClass).addClass(s.params.slidePrevClass);\n if (s.params.loop && prevSlide.length === 0) {\n prevSlide = s.slides.eq(-1);\n prevSlide.addClass(s.params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(s.params.slideDuplicateClass)) {\n s.wrapper.children('.' + s.params.slideClass + ':not(.' + s.params.slideDuplicateClass + ')[data-swiper-slide-index=\"' + nextSlide.attr('data-swiper-slide-index') + '\"]').addClass(s.params.slideDuplicateNextClass);\n }\n else {\n s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass + '[data-swiper-slide-index=\"' + nextSlide.attr('data-swiper-slide-index') + '\"]').addClass(s.params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(s.params.slideDuplicateClass)) {\n s.wrapper.children('.' + s.params.slideClass + ':not(.' + s.params.slideDuplicateClass + ')[data-swiper-slide-index=\"' + prevSlide.attr('data-swiper-slide-index') + '\"]').addClass(s.params.slideDuplicatePrevClass);\n }\n else {\n s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass + '[data-swiper-slide-index=\"' + prevSlide.attr('data-swiper-slide-index') + '\"]').addClass(s.params.slideDuplicatePrevClass);\n }\n }\n \n // Pagination\n if (s.paginationContainer && s.paginationContainer.length > 0) {\n // Current/Total\n var current,\n total = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length;\n if (s.params.loop) {\n current = Math.ceil((s.activeIndex - s.loopedSlides)/s.params.slidesPerGroup);\n if (current > s.slides.length - 1 - s.loopedSlides * 2) {\n current = current - (s.slides.length - s.loopedSlides * 2);\n }\n if (current > total - 1) current = current - total;\n if (current < 0 && s.params.paginationType !== 'bullets') current = total + current;\n }\n else {\n if (typeof s.snapIndex !== 'undefined') {\n current = s.snapIndex;\n }\n else {\n current = s.activeIndex || 0;\n }\n }\n // Types\n if (s.params.paginationType === 'bullets' && s.bullets && s.bullets.length > 0) {\n s.bullets.removeClass(s.params.bulletActiveClass);\n if (s.paginationContainer.length > 1) {\n s.bullets.each(function () {\n if ($(this).index() === current) $(this).addClass(s.params.bulletActiveClass);\n });\n }\n else {\n s.bullets.eq(current).addClass(s.params.bulletActiveClass);\n }\n }\n if (s.params.paginationType === 'fraction') {\n s.paginationContainer.find('.' + s.params.paginationCurrentClass).text(current + 1);\n s.paginationContainer.find('.' + s.params.paginationTotalClass).text(total);\n }\n if (s.params.paginationType === 'progress') {\n var scale = (current + 1) / total,\n scaleX = scale,\n scaleY = 1;\n if (!s.isHorizontal()) {\n scaleY = scale;\n scaleX = 1;\n }\n s.paginationContainer.find('.' + s.params.paginationProgressbarClass).transform('translate3d(0,0,0) scaleX(' + scaleX + ') scaleY(' + scaleY + ')').transition(s.params.speed);\n }\n if (s.params.paginationType === 'custom' && s.params.paginationCustomRender) {\n s.paginationContainer.html(s.params.paginationCustomRender(s, current + 1, total));\n s.emit('onPaginationRendered', s, s.paginationContainer[0]);\n }\n }\n \n // Next/active buttons\n if (!s.params.loop) {\n if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) {\n if (s.isBeginning) {\n s.prevButton.addClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.disable(s.prevButton);\n }\n else {\n s.prevButton.removeClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.enable(s.prevButton);\n }\n }\n if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) {\n if (s.isEnd) {\n s.nextButton.addClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.disable(s.nextButton);\n }\n else {\n s.nextButton.removeClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.enable(s.nextButton);\n }\n }\n }\n };\n \n /*=========================\n Pagination\n ===========================*/\n s.updatePagination = function () {\n if (!s.params.pagination) return;\n if (s.paginationContainer && s.paginationContainer.length > 0) {\n var paginationHTML = '';\n if (s.params.paginationType === 'bullets') {\n var numberOfBullets = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length;\n for (var i = 0; i < numberOfBullets; i++) {\n if (s.params.paginationBulletRender) {\n paginationHTML += s.params.paginationBulletRender(s, i, s.params.bulletClass);\n }\n else {\n paginationHTML += '<' + s.params.paginationElement+' class=\"' + s.params.bulletClass + '\">';\n }\n }\n s.paginationContainer.html(paginationHTML);\n s.bullets = s.paginationContainer.find('.' + s.params.bulletClass);\n if (s.params.paginationClickable && s.params.a11y && s.a11y) {\n s.a11y.initPagination();\n }\n }\n if (s.params.paginationType === 'fraction') {\n if (s.params.paginationFractionRender) {\n paginationHTML = s.params.paginationFractionRender(s, s.params.paginationCurrentClass, s.params.paginationTotalClass);\n }\n else {\n paginationHTML =\n '' +\n ' / ' +\n '';\n }\n s.paginationContainer.html(paginationHTML);\n }\n if (s.params.paginationType === 'progress') {\n if (s.params.paginationProgressRender) {\n paginationHTML = s.params.paginationProgressRender(s, s.params.paginationProgressbarClass);\n }\n else {\n paginationHTML = '';\n }\n s.paginationContainer.html(paginationHTML);\n }\n if (s.params.paginationType !== 'custom') {\n s.emit('onPaginationRendered', s, s.paginationContainer[0]);\n }\n }\n };\n /*=========================\n Common update method\n ===========================*/\n s.update = function (updateTranslate) {\n if (!s) return;\n s.updateContainerSize();\n s.updateSlidesSize();\n s.updateProgress();\n s.updatePagination();\n s.updateClasses();\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.set();\n }\n function forceSetTranslate() {\n var translate = s.rtl ? -s.translate : s.translate;\n newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate());\n s.setWrapperTranslate(newTranslate);\n s.updateActiveIndex();\n s.updateClasses();\n }\n if (updateTranslate) {\n var translated, newTranslate;\n if (s.controller && s.controller.spline) {\n s.controller.spline = undefined;\n }\n if (s.params.freeMode) {\n forceSetTranslate();\n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n }\n else {\n if ((s.params.slidesPerView === 'auto' || s.params.slidesPerView > 1) && s.isEnd && !s.params.centeredSlides) {\n translated = s.slideTo(s.slides.length - 1, 0, false, true);\n }\n else {\n translated = s.slideTo(s.activeIndex, 0, false, true);\n }\n if (!translated) {\n forceSetTranslate();\n }\n }\n }\n else if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n };\n \n /*=========================\n Resize Handler\n ===========================*/\n s.onResize = function (forceUpdatePagination) {\n //Breakpoints\n if (s.params.breakpoints) {\n s.setBreakpoint();\n }\n \n // Disable locks on resize\n var allowSwipeToPrev = s.params.allowSwipeToPrev;\n var allowSwipeToNext = s.params.allowSwipeToNext;\n s.params.allowSwipeToPrev = s.params.allowSwipeToNext = true;\n \n s.updateContainerSize();\n s.updateSlidesSize();\n if (s.params.slidesPerView === 'auto' || s.params.freeMode || forceUpdatePagination) s.updatePagination();\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.set();\n }\n if (s.controller && s.controller.spline) {\n s.controller.spline = undefined;\n }\n var slideChangedBySlideTo = false;\n if (s.params.freeMode) {\n var newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate());\n s.setWrapperTranslate(newTranslate);\n s.updateActiveIndex();\n s.updateClasses();\n \n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n }\n else {\n s.updateClasses();\n if ((s.params.slidesPerView === 'auto' || s.params.slidesPerView > 1) && s.isEnd && !s.params.centeredSlides) {\n slideChangedBySlideTo = s.slideTo(s.slides.length - 1, 0, false, true);\n }\n else {\n slideChangedBySlideTo = s.slideTo(s.activeIndex, 0, false, true);\n }\n }\n if (s.params.lazyLoading && !slideChangedBySlideTo && s.lazy) {\n s.lazy.load();\n }\n // Return locks after resize\n s.params.allowSwipeToPrev = allowSwipeToPrev;\n s.params.allowSwipeToNext = allowSwipeToNext;\n };\n \n /*=========================\n Events\n ===========================*/\n \n //Define Touch Events\n s.touchEventsDesktop = {start: 'mousedown', move: 'mousemove', end: 'mouseup'};\n if (window.navigator.pointerEnabled) s.touchEventsDesktop = {start: 'pointerdown', move: 'pointermove', end: 'pointerup'};\n else if (window.navigator.msPointerEnabled) s.touchEventsDesktop = {start: 'MSPointerDown', move: 'MSPointerMove', end: 'MSPointerUp'};\n s.touchEvents = {\n start : s.support.touch || !s.params.simulateTouch ? 'touchstart' : s.touchEventsDesktop.start,\n move : s.support.touch || !s.params.simulateTouch ? 'touchmove' : s.touchEventsDesktop.move,\n end : s.support.touch || !s.params.simulateTouch ? 'touchend' : s.touchEventsDesktop.end\n };\n \n \n // WP8 Touch Events Fix\n if (window.navigator.pointerEnabled || window.navigator.msPointerEnabled) {\n (s.params.touchEventsTarget === 'container' ? s.container : s.wrapper).addClass('swiper-wp8-' + s.params.direction);\n }\n \n // Attach/detach events\n s.initEvents = function (detach) {\n var actionDom = detach ? 'off' : 'on';\n var action = detach ? 'removeEventListener' : 'addEventListener';\n var touchEventsTarget = s.params.touchEventsTarget === 'container' ? s.container[0] : s.wrapper[0];\n var target = s.support.touch ? touchEventsTarget : document;\n \n var capture = s.params.nested ? true : false;\n \n //Touch Events\n if (s.browser.ie) {\n touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, false);\n target[action](s.touchEvents.move, s.onTouchMove, capture);\n target[action](s.touchEvents.end, s.onTouchEnd, false);\n }\n else {\n if (s.support.touch) {\n var passiveListener = s.touchEvents.start === 'touchstart' && s.support.passiveListener && s.params.passiveListeners ? {passive: true, capture: false} : false;\n touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, passiveListener); \n touchEventsTarget[action](s.touchEvents.move, s.onTouchMove, s.support.passiveListener ? { passive: false, capture: capture } : capture);\n touchEventsTarget[action](s.touchEvents.end, s.onTouchEnd, passiveListener);\n }\n if ((params.simulateTouch && !s.device.ios && !s.device.android) || (params.simulateTouch && !s.support.touch && s.device.ios)) {\n touchEventsTarget[action]('mousedown', s.onTouchStart, false);\n document[action]('mousemove', s.onTouchMove, capture);\n document[action]('mouseup', s.onTouchEnd, false);\n }\n }\n window[action]('resize', s.onResize);\n \n // Next, Prev, Index\n if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) {\n s.nextButton[actionDom]('click', s.onClickNext);\n if (s.params.a11y && s.a11y) s.nextButton[actionDom]('keydown', s.a11y.onEnterKey);\n }\n if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) {\n s.prevButton[actionDom]('click', s.onClickPrev);\n if (s.params.a11y && s.a11y) s.prevButton[actionDom]('keydown', s.a11y.onEnterKey);\n }\n if (s.params.pagination && s.params.paginationClickable) {\n s.paginationContainer[actionDom]('click', '.' + s.params.bulletClass, s.onClickIndex);\n if (s.params.a11y && s.a11y) s.paginationContainer[actionDom]('keydown', '.' + s.params.bulletClass, s.a11y.onEnterKey);\n }\n \n // Prevent Links Clicks\n if (s.params.preventClicks || s.params.preventClicksPropagation) touchEventsTarget[action]('click', s.preventClicks, true);\n };\n s.attachEvents = function () {\n s.initEvents();\n };\n s.detachEvents = function () {\n s.initEvents(true);\n };\n \n /*=========================\n Handle Clicks\n ===========================*/\n // Prevent Clicks\n s.allowClick = true;\n s.preventClicks = function (e) {\n if (!s.allowClick) {\n if (s.params.preventClicks) e.preventDefault();\n if (s.params.preventClicksPropagation && s.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n };\n // Clicks\n s.onClickNext = function (e) {\n e.preventDefault();\n if (s.isEnd && !s.params.loop) return;\n s.slideNext();\n };\n s.onClickPrev = function (e) {\n e.preventDefault();\n if (s.isBeginning && !s.params.loop) return;\n s.slidePrev();\n };\n s.onClickIndex = function (e) {\n e.preventDefault();\n var index = $(this).index() * s.params.slidesPerGroup;\n if (s.params.loop) index = index + s.loopedSlides;\n s.slideTo(index);\n };\n \n /*=========================\n Handle Touches\n ===========================*/\n function findElementInEvent(e, selector) {\n var el = $(e.target);\n if (!el.is(selector)) {\n if (typeof selector === 'string') {\n el = el.parents(selector);\n }\n else if (selector.nodeType) {\n var found;\n el.parents().each(function (index, _el) {\n if (_el === selector) found = selector;\n });\n if (!found) return undefined;\n else return selector;\n }\n }\n if (el.length === 0) {\n return undefined;\n }\n return el[0];\n }\n s.updateClickedSlide = function (e) {\n var slide = findElementInEvent(e, '.' + s.params.slideClass);\n var slideFound = false;\n if (slide) {\n for (var i = 0; i < s.slides.length; i++) {\n if (s.slides[i] === slide) slideFound = true;\n }\n }\n \n if (slide && slideFound) {\n s.clickedSlide = slide;\n s.clickedIndex = $(slide).index();\n }\n else {\n s.clickedSlide = undefined;\n s.clickedIndex = undefined;\n return;\n }\n if (s.params.slideToClickedSlide && s.clickedIndex !== undefined && s.clickedIndex !== s.activeIndex) {\n var slideToIndex = s.clickedIndex,\n realIndex,\n duplicatedSlides,\n slidesPerView = s.params.slidesPerView === 'auto' ? s.currentSlidesPerView() : s.params.slidesPerView;\n if (s.params.loop) {\n if (s.animating) return;\n realIndex = parseInt($(s.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (s.params.centeredSlides) {\n if ((slideToIndex < s.loopedSlides - slidesPerView/2) || (slideToIndex > s.slides.length - s.loopedSlides + slidesPerView/2)) {\n s.fixLoop();\n slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index=\"' + realIndex + '\"]:not(.' + s.params.slideDuplicateClass + ')').eq(0).index();\n setTimeout(function () {\n s.slideTo(slideToIndex);\n }, 0);\n }\n else {\n s.slideTo(slideToIndex);\n }\n }\n else {\n if (slideToIndex > s.slides.length - slidesPerView) {\n s.fixLoop();\n slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index=\"' + realIndex + '\"]:not(.' + s.params.slideDuplicateClass + ')').eq(0).index();\n setTimeout(function () {\n s.slideTo(slideToIndex);\n }, 0);\n }\n else {\n s.slideTo(slideToIndex);\n }\n }\n }\n else {\n s.slideTo(slideToIndex);\n }\n }\n };\n \n var isTouched,\n isMoved,\n allowTouchCallbacks,\n touchStartTime,\n isScrolling,\n currentTranslate,\n startTranslate,\n allowThresholdMove,\n // Form elements to match\n formElements = 'input, select, textarea, button, video',\n // Last click time\n lastClickTime = Date.now(), clickTimeout,\n //Velocities\n velocities = [],\n allowMomentumBounce;\n \n // Animating Flag\n s.animating = false;\n \n // Touches information\n s.touches = {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n };\n \n // Touch handlers\n var isTouchEvent, startMoving;\n s.onTouchStart = function (e) {\n if (e.originalEvent) e = e.originalEvent;\n isTouchEvent = e.type === 'touchstart';\n if (!isTouchEvent && 'which' in e && e.which === 3) return;\n if (s.params.noSwiping && findElementInEvent(e, '.' + s.params.noSwipingClass)) {\n s.allowClick = true;\n return;\n }\n if (s.params.swipeHandler) {\n if (!findElementInEvent(e, s.params.swipeHandler)) return;\n }\n \n var startX = s.touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n var startY = s.touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n \n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n if(s.device.ios && s.params.iOSEdgeSwipeDetection && startX <= s.params.iOSEdgeSwipeThreshold) {\n return;\n }\n \n isTouched = true;\n isMoved = false;\n allowTouchCallbacks = true;\n isScrolling = undefined;\n startMoving = undefined;\n s.touches.startX = startX;\n s.touches.startY = startY;\n touchStartTime = Date.now();\n s.allowClick = true;\n s.updateContainerSize();\n s.swipeDirection = undefined;\n if (s.params.threshold > 0) allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n var preventDefault = true;\n if ($(e.target).is(formElements)) preventDefault = false;\n if (document.activeElement && $(document.activeElement).is(formElements)) {\n document.activeElement.blur();\n }\n if (preventDefault) {\n e.preventDefault();\n }\n }\n s.emit('onTouchStart', s, e);\n };\n \n s.onTouchMove = function (e) {\n if (e.originalEvent) e = e.originalEvent;\n if (isTouchEvent && e.type === 'mousemove') return;\n if (e.preventedByNestedSwiper) {\n s.touches.startX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n s.touches.startY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n return;\n }\n if (s.params.onlyExternal) {\n // isMoved = true;\n s.allowClick = false;\n if (isTouched) {\n s.touches.startX = s.touches.currentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n s.touches.startY = s.touches.currentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = Date.now();\n }\n return;\n }\n if (isTouchEvent && s.params.touchReleaseOnEdges && !s.params.loop) {\n if (!s.isHorizontal()) {\n // Vertical\n if (\n (s.touches.currentY < s.touches.startY && s.translate <= s.maxTranslate()) ||\n (s.touches.currentY > s.touches.startY && s.translate >= s.minTranslate())\n ) {\n return;\n }\n }\n else {\n if (\n (s.touches.currentX < s.touches.startX && s.translate <= s.maxTranslate()) ||\n (s.touches.currentX > s.touches.startX && s.translate >= s.minTranslate())\n ) {\n return;\n }\n }\n }\n if (isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(formElements)) {\n isMoved = true;\n s.allowClick = false;\n return;\n }\n }\n if (allowTouchCallbacks) {\n s.emit('onTouchMove', s, e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n \n s.touches.currentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n s.touches.currentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n \n if (typeof isScrolling === 'undefined') {\n var touchAngle;\n if (s.isHorizontal() && s.touches.currentY === s.touches.startY || !s.isHorizontal() && s.touches.currentX === s.touches.startX) {\n isScrolling = false;\n }\n else {\n touchAngle = Math.atan2(Math.abs(s.touches.currentY - s.touches.startY), Math.abs(s.touches.currentX - s.touches.startX)) * 180 / Math.PI;\n isScrolling = s.isHorizontal() ? touchAngle > s.params.touchAngle : (90 - touchAngle > s.params.touchAngle);\n }\n }\n if (isScrolling) {\n s.emit('onTouchMoveOpposite', s, e);\n }\n if (typeof startMoving === 'undefined' && s.browser.ieTouch) {\n if (s.touches.currentX !== s.touches.startX || s.touches.currentY !== s.touches.startY) {\n startMoving = true;\n }\n }\n if (!isTouched) return;\n if (isScrolling) {\n isTouched = false;\n return;\n }\n if (!startMoving && s.browser.ieTouch) {\n return;\n }\n s.allowClick = false;\n s.emit('onSliderMove', s, e);\n e.preventDefault();\n if (s.params.touchMoveStopPropagation && !s.params.nested) {\n e.stopPropagation();\n }\n \n if (!isMoved) {\n if (params.loop) {\n s.fixLoop();\n }\n startTranslate = s.getWrapperTranslate();\n s.setWrapperTransition(0);\n if (s.animating) {\n s.wrapper.trigger('webkitTransitionEnd transitionend oTransitionEnd MSTransitionEnd msTransitionEnd');\n }\n if (s.params.autoplay && s.autoplaying) {\n if (s.params.autoplayDisableOnInteraction) {\n s.stopAutoplay();\n }\n else {\n s.pauseAutoplay();\n }\n }\n allowMomentumBounce = false;\n //Grab Cursor\n if (s.params.grabCursor && (s.params.allowSwipeToNext === true || s.params.allowSwipeToPrev === true)) {\n s.setGrabCursor(true);\n }\n }\n isMoved = true;\n \n var diff = s.touches.diff = s.isHorizontal() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY;\n \n diff = diff * s.params.touchRatio;\n if (s.rtl) diff = -diff;\n \n s.swipeDirection = diff > 0 ? 'prev' : 'next';\n currentTranslate = diff + startTranslate;\n \n var disableParentSwiper = true;\n if ((diff > 0 && currentTranslate > s.minTranslate())) {\n disableParentSwiper = false;\n if (s.params.resistance) currentTranslate = s.minTranslate() - 1 + Math.pow(-s.minTranslate() + startTranslate + diff, s.params.resistanceRatio);\n }\n else if (diff < 0 && currentTranslate < s.maxTranslate()) {\n disableParentSwiper = false;\n if (s.params.resistance) currentTranslate = s.maxTranslate() + 1 - Math.pow(s.maxTranslate() - startTranslate - diff, s.params.resistanceRatio);\n }\n \n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n \n // Directions locks\n if (!s.params.allowSwipeToNext && s.swipeDirection === 'next' && currentTranslate < startTranslate) {\n currentTranslate = startTranslate;\n }\n if (!s.params.allowSwipeToPrev && s.swipeDirection === 'prev' && currentTranslate > startTranslate) {\n currentTranslate = startTranslate;\n }\n \n \n // Threshold\n if (s.params.threshold > 0) {\n if (Math.abs(diff) > s.params.threshold || allowThresholdMove) {\n if (!allowThresholdMove) {\n allowThresholdMove = true;\n s.touches.startX = s.touches.currentX;\n s.touches.startY = s.touches.currentY;\n currentTranslate = startTranslate;\n s.touches.diff = s.isHorizontal() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY;\n return;\n }\n }\n else {\n currentTranslate = startTranslate;\n return;\n }\n }\n \n if (!s.params.followFinger) return;\n \n // Update active index in free mode\n if (s.params.freeMode || s.params.watchSlidesProgress) {\n s.updateActiveIndex();\n }\n if (s.params.freeMode) {\n //Velocity\n if (velocities.length === 0) {\n velocities.push({\n position: s.touches[s.isHorizontal() ? 'startX' : 'startY'],\n time: touchStartTime\n });\n }\n velocities.push({\n position: s.touches[s.isHorizontal() ? 'currentX' : 'currentY'],\n time: (new window.Date()).getTime()\n });\n }\n // Update progress\n s.updateProgress(currentTranslate);\n // Update translate\n s.setWrapperTranslate(currentTranslate);\n };\n s.onTouchEnd = function (e) {\n if (e.originalEvent) e = e.originalEvent;\n if (allowTouchCallbacks) {\n s.emit('onTouchEnd', s, e);\n }\n allowTouchCallbacks = false;\n if (!isTouched) return;\n //Return Grab Cursor\n if (s.params.grabCursor && isMoved && isTouched && (s.params.allowSwipeToNext === true || s.params.allowSwipeToPrev === true)) {\n s.setGrabCursor(false);\n }\n \n // Time diff\n var touchEndTime = Date.now();\n var timeDiff = touchEndTime - touchStartTime;\n \n // Tap, doubleTap, Click\n if (s.allowClick) {\n s.updateClickedSlide(e);\n s.emit('onTap', s, e);\n if (timeDiff < 300 && (touchEndTime - lastClickTime) > 300) {\n if (clickTimeout) clearTimeout(clickTimeout);\n clickTimeout = setTimeout(function () {\n if (!s) return;\n if (s.params.paginationHide && s.paginationContainer.length > 0 && !$(e.target).hasClass(s.params.bulletClass)) {\n s.paginationContainer.toggleClass(s.params.paginationHiddenClass);\n }\n s.emit('onClick', s, e);\n }, 300);\n \n }\n if (timeDiff < 300 && (touchEndTime - lastClickTime) < 300) {\n if (clickTimeout) clearTimeout(clickTimeout);\n s.emit('onDoubleTap', s, e);\n }\n }\n \n lastClickTime = Date.now();\n setTimeout(function () {\n if (s) s.allowClick = true;\n }, 0);\n \n if (!isTouched || !isMoved || !s.swipeDirection || s.touches.diff === 0 || currentTranslate === startTranslate) {\n isTouched = isMoved = false;\n return;\n }\n isTouched = isMoved = false;\n \n var currentPos;\n if (s.params.followFinger) {\n currentPos = s.rtl ? s.translate : -s.translate;\n }\n else {\n currentPos = -currentTranslate;\n }\n if (s.params.freeMode) {\n if (currentPos < -s.minTranslate()) {\n s.slideTo(s.activeIndex);\n return;\n }\n else if (currentPos > -s.maxTranslate()) {\n if (s.slides.length < s.snapGrid.length) {\n s.slideTo(s.snapGrid.length - 1);\n }\n else {\n s.slideTo(s.slides.length - 1);\n }\n return;\n }\n \n if (s.params.freeModeMomentum) {\n if (velocities.length > 1) {\n var lastMoveEvent = velocities.pop(), velocityEvent = velocities.pop();\n \n var distance = lastMoveEvent.position - velocityEvent.position;\n var time = lastMoveEvent.time - velocityEvent.time;\n s.velocity = distance / time;\n s.velocity = s.velocity / 2;\n if (Math.abs(s.velocity) < s.params.freeModeMinimumVelocity) {\n s.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (new window.Date().getTime() - lastMoveEvent.time) > 300) {\n s.velocity = 0;\n }\n } else {\n s.velocity = 0;\n }\n s.velocity = s.velocity * s.params.freeModeMomentumVelocityRatio;\n \n velocities.length = 0;\n var momentumDuration = 1000 * s.params.freeModeMomentumRatio;\n var momentumDistance = s.velocity * momentumDuration;\n \n var newPosition = s.translate + momentumDistance;\n if (s.rtl) newPosition = - newPosition;\n var doBounce = false;\n var afterBouncePosition;\n var bounceAmount = Math.abs(s.velocity) * 20 * s.params.freeModeMomentumBounceRatio;\n if (newPosition < s.maxTranslate()) {\n if (s.params.freeModeMomentumBounce) {\n if (newPosition + s.maxTranslate() < -bounceAmount) {\n newPosition = s.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = s.maxTranslate();\n doBounce = true;\n allowMomentumBounce = true;\n }\n else {\n newPosition = s.maxTranslate();\n }\n }\n else if (newPosition > s.minTranslate()) {\n if (s.params.freeModeMomentumBounce) {\n if (newPosition - s.minTranslate() > bounceAmount) {\n newPosition = s.minTranslate() + bounceAmount;\n }\n afterBouncePosition = s.minTranslate();\n doBounce = true;\n allowMomentumBounce = true;\n }\n else {\n newPosition = s.minTranslate();\n }\n }\n else if (s.params.freeModeSticky) {\n var j = 0,\n nextSlide;\n for (j = 0; j < s.snapGrid.length; j += 1) {\n if (s.snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n \n }\n if (Math.abs(s.snapGrid[nextSlide] - newPosition) < Math.abs(s.snapGrid[nextSlide - 1] - newPosition) || s.swipeDirection === 'next') {\n newPosition = s.snapGrid[nextSlide];\n } else {\n newPosition = s.snapGrid[nextSlide - 1];\n }\n if (!s.rtl) newPosition = - newPosition;\n }\n //Fix duration\n if (s.velocity !== 0) {\n if (s.rtl) {\n momentumDuration = Math.abs((-newPosition - s.translate) / s.velocity);\n }\n else {\n momentumDuration = Math.abs((newPosition - s.translate) / s.velocity);\n }\n }\n else if (s.params.freeModeSticky) {\n s.slideReset();\n return;\n }\n \n if (s.params.freeModeMomentumBounce && doBounce) {\n s.updateProgress(afterBouncePosition);\n s.setWrapperTransition(momentumDuration);\n s.setWrapperTranslate(newPosition);\n s.onTransitionStart();\n s.animating = true;\n s.wrapper.transitionEnd(function () {\n if (!s || !allowMomentumBounce) return;\n s.emit('onMomentumBounce', s);\n \n s.setWrapperTransition(s.params.speed);\n s.setWrapperTranslate(afterBouncePosition);\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.onTransitionEnd();\n });\n });\n } else if (s.velocity) {\n s.updateProgress(newPosition);\n s.setWrapperTransition(momentumDuration);\n s.setWrapperTranslate(newPosition);\n s.onTransitionStart();\n if (!s.animating) {\n s.animating = true;\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.onTransitionEnd();\n });\n }\n \n } else {\n s.updateProgress(newPosition);\n }\n \n s.updateActiveIndex();\n }\n if (!s.params.freeModeMomentum || timeDiff >= s.params.longSwipesMs) {\n s.updateProgress();\n s.updateActiveIndex();\n }\n return;\n }\n \n // Find current slide\n var i, stopIndex = 0, groupSize = s.slidesSizesGrid[0];\n for (i = 0; i < s.slidesGrid.length; i += s.params.slidesPerGroup) {\n if (typeof s.slidesGrid[i + s.params.slidesPerGroup] !== 'undefined') {\n if (currentPos >= s.slidesGrid[i] && currentPos < s.slidesGrid[i + s.params.slidesPerGroup]) {\n stopIndex = i;\n groupSize = s.slidesGrid[i + s.params.slidesPerGroup] - s.slidesGrid[i];\n }\n }\n else {\n if (currentPos >= s.slidesGrid[i]) {\n stopIndex = i;\n groupSize = s.slidesGrid[s.slidesGrid.length - 1] - s.slidesGrid[s.slidesGrid.length - 2];\n }\n }\n }\n \n // Find current slide size\n var ratio = (currentPos - s.slidesGrid[stopIndex]) / groupSize;\n \n if (timeDiff > s.params.longSwipesMs) {\n // Long touches\n if (!s.params.longSwipes) {\n s.slideTo(s.activeIndex);\n return;\n }\n if (s.swipeDirection === 'next') {\n if (ratio >= s.params.longSwipesRatio) s.slideTo(stopIndex + s.params.slidesPerGroup);\n else s.slideTo(stopIndex);\n \n }\n if (s.swipeDirection === 'prev') {\n if (ratio > (1 - s.params.longSwipesRatio)) s.slideTo(stopIndex + s.params.slidesPerGroup);\n else s.slideTo(stopIndex);\n }\n }\n else {\n // Short swipes\n if (!s.params.shortSwipes) {\n s.slideTo(s.activeIndex);\n return;\n }\n if (s.swipeDirection === 'next') {\n s.slideTo(stopIndex + s.params.slidesPerGroup);\n \n }\n if (s.swipeDirection === 'prev') {\n s.slideTo(stopIndex);\n }\n }\n };\n /*=========================\n Transitions\n ===========================*/\n s._slideTo = function (slideIndex, speed) {\n return s.slideTo(slideIndex, speed, true, true);\n };\n s.slideTo = function (slideIndex, speed, runCallbacks, internal) {\n if (typeof runCallbacks === 'undefined') runCallbacks = true;\n if (typeof slideIndex === 'undefined') slideIndex = 0;\n if (slideIndex < 0) slideIndex = 0;\n s.snapIndex = Math.floor(slideIndex / s.params.slidesPerGroup);\n if (s.snapIndex >= s.snapGrid.length) s.snapIndex = s.snapGrid.length - 1;\n \n var translate = - s.snapGrid[s.snapIndex];\n // Stop autoplay\n if (s.params.autoplay && s.autoplaying) {\n if (internal || !s.params.autoplayDisableOnInteraction) {\n s.pauseAutoplay(speed);\n }\n else {\n s.stopAutoplay();\n }\n }\n // Update progress\n s.updateProgress(translate);\n \n // Normalize slideIndex\n if(s.params.normalizeSlideIndex){\n for (var i = 0; i < s.slidesGrid.length; i++) {\n if (- Math.floor(translate * 100) >= Math.floor(s.slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n \n // Directions locks\n if (!s.params.allowSwipeToNext && translate < s.translate && translate < s.minTranslate()) {\n return false;\n }\n if (!s.params.allowSwipeToPrev && translate > s.translate && translate > s.maxTranslate()) {\n if ((s.activeIndex || 0) !== slideIndex ) return false;\n }\n \n // Update Index\n if (typeof speed === 'undefined') speed = s.params.speed;\n s.previousIndex = s.activeIndex || 0;\n s.activeIndex = slideIndex;\n s.updateRealIndex();\n if ((s.rtl && -translate === s.translate) || (!s.rtl && translate === s.translate)) {\n // Update Height\n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n s.updateClasses();\n if (s.params.effect !== 'slide') {\n s.setWrapperTranslate(translate);\n }\n return false;\n }\n s.updateClasses();\n s.onTransitionStart(runCallbacks);\n \n if (speed === 0 || s.browser.lteIE9) {\n s.setWrapperTranslate(translate);\n s.setWrapperTransition(0);\n s.onTransitionEnd(runCallbacks);\n }\n else {\n s.setWrapperTranslate(translate);\n s.setWrapperTransition(speed);\n if (!s.animating) {\n s.animating = true;\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.onTransitionEnd(runCallbacks);\n });\n }\n \n }\n \n return true;\n };\n \n s.onTransitionStart = function (runCallbacks) {\n if (typeof runCallbacks === 'undefined') runCallbacks = true;\n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n if (s.lazy) s.lazy.onTransitionStart();\n if (runCallbacks) {\n s.emit('onTransitionStart', s);\n if (s.activeIndex !== s.previousIndex) {\n s.emit('onSlideChangeStart', s);\n if (s.activeIndex > s.previousIndex) {\n s.emit('onSlideNextStart', s);\n }\n else {\n s.emit('onSlidePrevStart', s);\n }\n }\n \n }\n };\n s.onTransitionEnd = function (runCallbacks) {\n s.animating = false;\n s.setWrapperTransition(0);\n if (typeof runCallbacks === 'undefined') runCallbacks = true;\n if (s.lazy) s.lazy.onTransitionEnd();\n if (runCallbacks) {\n s.emit('onTransitionEnd', s);\n if (s.activeIndex !== s.previousIndex) {\n s.emit('onSlideChangeEnd', s);\n if (s.activeIndex > s.previousIndex) {\n s.emit('onSlideNextEnd', s);\n }\n else {\n s.emit('onSlidePrevEnd', s);\n }\n }\n }\n if (s.params.history && s.history) {\n s.history.setHistory(s.params.history, s.activeIndex);\n }\n if (s.params.hashnav && s.hashnav) {\n s.hashnav.setHash();\n }\n \n };\n s.slideNext = function (runCallbacks, speed, internal) {\n if (s.params.loop) {\n if (s.animating) return false;\n s.fixLoop();\n var clientLeft = s.container[0].clientLeft;\n return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal);\n }\n else return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal);\n };\n s._slideNext = function (speed) {\n return s.slideNext(true, speed, true);\n };\n s.slidePrev = function (runCallbacks, speed, internal) {\n if (s.params.loop) {\n if (s.animating) return false;\n s.fixLoop();\n var clientLeft = s.container[0].clientLeft;\n return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal);\n }\n else return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal);\n };\n s._slidePrev = function (speed) {\n return s.slidePrev(true, speed, true);\n };\n s.slideReset = function (runCallbacks, speed, internal) {\n return s.slideTo(s.activeIndex, speed, runCallbacks);\n };\n \n s.disableTouchControl = function () {\n s.params.onlyExternal = true;\n return true;\n };\n s.enableTouchControl = function () {\n s.params.onlyExternal = false;\n return true;\n };\n \n /*=========================\n Translate/transition helpers\n ===========================*/\n s.setWrapperTransition = function (duration, byController) {\n s.wrapper.transition(duration);\n if (s.params.effect !== 'slide' && s.effects[s.params.effect]) {\n s.effects[s.params.effect].setTransition(duration);\n }\n if (s.params.parallax && s.parallax) {\n s.parallax.setTransition(duration);\n }\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.setTransition(duration);\n }\n if (s.params.control && s.controller) {\n s.controller.setTransition(duration, byController);\n }\n s.emit('onSetTransition', s, duration);\n };\n s.setWrapperTranslate = function (translate, updateActiveIndex, byController) {\n var x = 0, y = 0, z = 0;\n if (s.isHorizontal()) {\n x = s.rtl ? -translate : translate;\n }\n else {\n y = translate;\n }\n \n if (s.params.roundLengths) {\n x = round(x);\n y = round(y);\n }\n \n if (!s.params.virtualTranslate) {\n if (s.support.transforms3d) s.wrapper.transform('translate3d(' + x + 'px, ' + y + 'px, ' + z + 'px)');\n else s.wrapper.transform('translate(' + x + 'px, ' + y + 'px)');\n }\n \n s.translate = s.isHorizontal() ? x : y;\n \n // Check if we need to update progress\n var progress;\n var translatesDiff = s.maxTranslate() - s.minTranslate();\n if (translatesDiff === 0) {\n progress = 0;\n }\n else {\n progress = (translate - s.minTranslate()) / (translatesDiff);\n }\n if (progress !== s.progress) {\n s.updateProgress(translate);\n }\n \n if (updateActiveIndex) s.updateActiveIndex();\n if (s.params.effect !== 'slide' && s.effects[s.params.effect]) {\n s.effects[s.params.effect].setTranslate(s.translate);\n }\n if (s.params.parallax && s.parallax) {\n s.parallax.setTranslate(s.translate);\n }\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.setTranslate(s.translate);\n }\n if (s.params.control && s.controller) {\n s.controller.setTranslate(s.translate, byController);\n }\n s.emit('onSetTranslate', s, s.translate);\n };\n \n s.getTranslate = function (el, axis) {\n var matrix, curTransform, curStyle, transformMatrix;\n \n // automatic axis detection\n if (typeof axis === 'undefined') {\n axis = 'x';\n }\n \n if (s.params.virtualTranslate) {\n return s.rtl ? -s.translate : s.translate;\n }\n \n curStyle = window.getComputedStyle(el, null);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(function(a){\n return a.replace(',','.');\n }).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n }\n else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n \n if (axis === 'x') {\n //Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix)\n curTransform = transformMatrix.m41;\n //Crazy IE10 Matrix\n else if (matrix.length === 16)\n curTransform = parseFloat(matrix[12]);\n //Normal Browsers\n else\n curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n //Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix)\n curTransform = transformMatrix.m42;\n //Crazy IE10 Matrix\n else if (matrix.length === 16)\n curTransform = parseFloat(matrix[13]);\n //Normal Browsers\n else\n curTransform = parseFloat(matrix[5]);\n }\n if (s.rtl && curTransform) curTransform = -curTransform;\n return curTransform || 0;\n };\n s.getWrapperTranslate = function (axis) {\n if (typeof axis === 'undefined') {\n axis = s.isHorizontal() ? 'x' : 'y';\n }\n return s.getTranslate(s.wrapper[0], axis);\n };\n \n /*=========================\n Observer\n ===========================*/\n s.observers = [];\n function initObserver(target, options) {\n options = options || {};\n // create an observer instance\n var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n var observer = new ObserverFunc(function (mutations) {\n mutations.forEach(function (mutation) {\n s.onResize(true);\n s.emit('onObserverUpdate', s, mutation);\n });\n });\n \n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n \n s.observers.push(observer);\n }\n s.initObservers = function () {\n if (s.params.observeParents) {\n var containerParents = s.container.parents();\n for (var i = 0; i < containerParents.length; i++) {\n initObserver(containerParents[i]);\n }\n }\n \n // Observe container\n initObserver(s.container[0], {childList: false});\n \n // Observe wrapper\n initObserver(s.wrapper[0], {attributes: false});\n };\n s.disconnectObservers = function () {\n for (var i = 0; i < s.observers.length; i++) {\n s.observers[i].disconnect();\n }\n s.observers = [];\n };\n /*=========================\n Loop\n ===========================*/\n // Create looped slides\n s.createLoop = function () {\n // Remove duplicated slides\n s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove();\n \n var slides = s.wrapper.children('.' + s.params.slideClass);\n \n if(s.params.slidesPerView === 'auto' && !s.params.loopedSlides) s.params.loopedSlides = slides.length;\n \n s.loopedSlides = parseInt(s.params.loopedSlides || s.params.slidesPerView, 10);\n s.loopedSlides = s.loopedSlides + s.params.loopAdditionalSlides;\n if (s.loopedSlides > slides.length) {\n s.loopedSlides = slides.length;\n }\n \n var prependSlides = [], appendSlides = [], i;\n slides.each(function (index, el) {\n var slide = $(this);\n if (index < s.loopedSlides) appendSlides.push(el);\n if (index < slides.length && index >= slides.length - s.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index);\n });\n for (i = 0; i < appendSlides.length; i++) {\n s.wrapper.append($(appendSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass));\n }\n for (i = prependSlides.length - 1; i >= 0; i--) {\n s.wrapper.prepend($(prependSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass));\n }\n };\n s.destroyLoop = function () {\n s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove();\n s.slides.removeAttr('data-swiper-slide-index');\n };\n s.reLoop = function (updatePosition) {\n var oldIndex = s.activeIndex - s.loopedSlides;\n s.destroyLoop();\n s.createLoop();\n s.updateSlidesSize();\n if (updatePosition) {\n s.slideTo(oldIndex + s.loopedSlides, 0, false);\n }\n \n };\n s.fixLoop = function () {\n var newIndex;\n //Fix For Negative Oversliding\n if (s.activeIndex < s.loopedSlides) {\n newIndex = s.slides.length - s.loopedSlides * 3 + s.activeIndex;\n newIndex = newIndex + s.loopedSlides;\n s.slideTo(newIndex, 0, false, true);\n }\n //Fix For Positive Oversliding\n else if ((s.params.slidesPerView === 'auto' && s.activeIndex >= s.loopedSlides * 2) || (s.activeIndex > s.slides.length - s.params.slidesPerView * 2)) {\n newIndex = -s.slides.length + s.activeIndex + s.loopedSlides;\n newIndex = newIndex + s.loopedSlides;\n s.slideTo(newIndex, 0, false, true);\n }\n };\n /*=========================\n Append/Prepend/Remove Slides\n ===========================*/\n s.appendSlide = function (slides) {\n if (s.params.loop) {\n s.destroyLoop();\n }\n if (typeof slides === 'object' && slides.length) {\n for (var i = 0; i < slides.length; i++) {\n if (slides[i]) s.wrapper.append(slides[i]);\n }\n }\n else {\n s.wrapper.append(slides);\n }\n if (s.params.loop) {\n s.createLoop();\n }\n if (!(s.params.observer && s.support.observer)) {\n s.update(true);\n }\n };\n s.prependSlide = function (slides) {\n if (s.params.loop) {\n s.destroyLoop();\n }\n var newActiveIndex = s.activeIndex + 1;\n if (typeof slides === 'object' && slides.length) {\n for (var i = 0; i < slides.length; i++) {\n if (slides[i]) s.wrapper.prepend(slides[i]);\n }\n newActiveIndex = s.activeIndex + slides.length;\n }\n else {\n s.wrapper.prepend(slides);\n }\n if (s.params.loop) {\n s.createLoop();\n }\n if (!(s.params.observer && s.support.observer)) {\n s.update(true);\n }\n s.slideTo(newActiveIndex, 0, false);\n };\n s.removeSlide = function (slidesIndexes) {\n if (s.params.loop) {\n s.destroyLoop();\n s.slides = s.wrapper.children('.' + s.params.slideClass);\n }\n var newActiveIndex = s.activeIndex,\n indexToRemove;\n if (typeof slidesIndexes === 'object' && slidesIndexes.length) {\n for (var i = 0; i < slidesIndexes.length; i++) {\n indexToRemove = slidesIndexes[i];\n if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex--;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n else {\n indexToRemove = slidesIndexes;\n if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex--;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n \n if (s.params.loop) {\n s.createLoop();\n }\n \n if (!(s.params.observer && s.support.observer)) {\n s.update(true);\n }\n if (s.params.loop) {\n s.slideTo(newActiveIndex + s.loopedSlides, 0, false);\n }\n else {\n s.slideTo(newActiveIndex, 0, false);\n }\n \n };\n s.removeAllSlides = function () {\n var slidesIndexes = [];\n for (var i = 0; i < s.slides.length; i++) {\n slidesIndexes.push(i);\n }\n s.removeSlide(slidesIndexes);\n };\n \n\n /*=========================\n Effects\n ===========================*/\n s.effects = {\n fade: {\n setTranslate: function () {\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides.eq(i);\n var offset = slide[0].swiperSlideOffset;\n var tx = -offset;\n if (!s.params.virtualTranslate) tx = tx - s.translate;\n var ty = 0;\n if (!s.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n var slideOpacity = s.params.fade.crossFade ?\n Math.max(1 - Math.abs(slide[0].progress), 0) :\n 1 + Math.min(Math.max(slide[0].progress, -1), 0);\n slide\n .css({\n opacity: slideOpacity\n })\n .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px)');\n \n }\n \n },\n setTransition: function (duration) {\n s.slides.transition(duration);\n if (s.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n s.slides.transitionEnd(function () {\n if (eventTriggered) return;\n if (!s) return;\n eventTriggered = true;\n s.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'];\n for (var i = 0; i < triggerEvents.length; i++) {\n s.wrapper.trigger(triggerEvents[i]);\n }\n });\n }\n }\n },\n flip: {\n setTranslate: function () {\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides.eq(i);\n var progress = slide[0].progress;\n if (s.params.flip.limitRotation) {\n progress = Math.max(Math.min(slide[0].progress, 1), -1);\n }\n var offset = slide[0].swiperSlideOffset;\n var rotate = -180 * progress,\n rotateY = rotate,\n rotateX = 0,\n tx = -offset,\n ty = 0;\n if (!s.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n }\n else if (s.rtl) {\n rotateY = -rotateY;\n }\n \n slide[0].style.zIndex = -Math.abs(Math.round(progress)) + s.slides.length;\n \n if (s.params.flip.slideShadows) {\n //Set shadows\n var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top');\n var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $('
    ');\n slide.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $('
    ');\n slide.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n \n slide\n .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)');\n }\n },\n setTransition: function (duration) {\n s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n if (s.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n s.slides.eq(s.activeIndex).transitionEnd(function () {\n if (eventTriggered) return;\n if (!s) return;\n if (!$(this).hasClass(s.params.slideActiveClass)) return;\n eventTriggered = true;\n s.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'];\n for (var i = 0; i < triggerEvents.length; i++) {\n s.wrapper.trigger(triggerEvents[i]);\n }\n });\n }\n }\n },\n cube: {\n setTranslate: function () {\n var wrapperRotate = 0, cubeShadow;\n if (s.params.cube.shadow) {\n if (s.isHorizontal()) {\n cubeShadow = s.wrapper.find('.swiper-cube-shadow');\n if (cubeShadow.length === 0) {\n cubeShadow = $('
    ');\n s.wrapper.append(cubeShadow);\n }\n cubeShadow.css({height: s.width + 'px'});\n }\n else {\n cubeShadow = s.container.find('.swiper-cube-shadow');\n if (cubeShadow.length === 0) {\n cubeShadow = $('
    ');\n s.container.append(cubeShadow);\n }\n }\n }\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides.eq(i);\n var slideAngle = i * 90;\n var round = Math.floor(slideAngle / 360);\n if (s.rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n var progress = Math.max(Math.min(slide[0].progress, 1), -1);\n var tx = 0, ty = 0, tz = 0;\n if (i % 4 === 0) {\n tx = - round * 4 * s.size;\n tz = 0;\n }\n else if ((i - 1) % 4 === 0) {\n tx = 0;\n tz = - round * 4 * s.size;\n }\n else if ((i - 2) % 4 === 0) {\n tx = s.size + round * 4 * s.size;\n tz = s.size;\n }\n else if ((i - 3) % 4 === 0) {\n tx = - s.size;\n tz = 3 * s.size + s.size * 4 * round;\n }\n if (s.rtl) {\n tx = -tx;\n }\n \n if (!s.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n \n var transform = 'rotateX(' + (s.isHorizontal() ? 0 : -slideAngle) + 'deg) rotateY(' + (s.isHorizontal() ? slideAngle : 0) + 'deg) translate3d(' + tx + 'px, ' + ty + 'px, ' + tz + 'px)';\n if (progress <= 1 && progress > -1) {\n wrapperRotate = i * 90 + progress * 90;\n if (s.rtl) wrapperRotate = -i * 90 - progress * 90;\n }\n slide.transform(transform);\n if (s.params.cube.slideShadows) {\n //Set shadows\n var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top');\n var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $('
    ');\n slide.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $('
    ');\n slide.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n s.wrapper.css({\n '-webkit-transform-origin': '50% 50% -' + (s.size / 2) + 'px',\n '-moz-transform-origin': '50% 50% -' + (s.size / 2) + 'px',\n '-ms-transform-origin': '50% 50% -' + (s.size / 2) + 'px',\n 'transform-origin': '50% 50% -' + (s.size / 2) + 'px'\n });\n \n if (s.params.cube.shadow) {\n if (s.isHorizontal()) {\n cubeShadow.transform('translate3d(0px, ' + (s.width / 2 + s.params.cube.shadowOffset) + 'px, ' + (-s.width / 2) + 'px) rotateX(90deg) rotateZ(0deg) scale(' + (s.params.cube.shadowScale) + ')');\n }\n else {\n var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n var scale1 = s.params.cube.shadowScale,\n scale2 = s.params.cube.shadowScale / multiplier,\n offset = s.params.cube.shadowOffset;\n cubeShadow.transform('scale3d(' + scale1 + ', 1, ' + scale2 + ') translate3d(0px, ' + (s.height / 2 + offset) + 'px, ' + (-s.height / 2 / scale2) + 'px) rotateX(-90deg)');\n }\n }\n var zFactor = (s.isSafari || s.isUiWebView) ? (-s.size / 2) : 0;\n s.wrapper.transform('translate3d(0px,0,' + zFactor + 'px) rotateX(' + (s.isHorizontal() ? 0 : wrapperRotate) + 'deg) rotateY(' + (s.isHorizontal() ? -wrapperRotate : 0) + 'deg)');\n },\n setTransition: function (duration) {\n s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n if (s.params.cube.shadow && !s.isHorizontal()) {\n s.container.find('.swiper-cube-shadow').transition(duration);\n }\n }\n },\n coverflow: {\n setTranslate: function () {\n var transform = s.translate;\n var center = s.isHorizontal() ? -transform + s.width / 2 : -transform + s.height / 2;\n var rotate = s.isHorizontal() ? s.params.coverflow.rotate: -s.params.coverflow.rotate;\n var translate = s.params.coverflow.depth;\n //Each slide offset from center\n for (var i = 0, length = s.slides.length; i < length; i++) {\n var slide = s.slides.eq(i);\n var slideSize = s.slidesSizesGrid[i];\n var slideOffset = slide[0].swiperSlideOffset;\n var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * s.params.coverflow.modifier;\n \n var rotateY = s.isHorizontal() ? rotate * offsetMultiplier : 0;\n var rotateX = s.isHorizontal() ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n var translateZ = -translate * Math.abs(offsetMultiplier);\n \n var translateY = s.isHorizontal() ? 0 : s.params.coverflow.stretch * (offsetMultiplier);\n var translateX = s.isHorizontal() ? s.params.coverflow.stretch * (offsetMultiplier) : 0;\n \n //Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n \n var slideTransform = 'translate3d(' + translateX + 'px,' + translateY + 'px,' + translateZ + 'px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)';\n \n slide.transform(slideTransform);\n slide[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (s.params.coverflow.slideShadows) {\n //Set shadows\n var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top');\n var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $('
    ');\n slide.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $('
    ');\n slide.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfter.length) shadowAfter[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n }\n }\n \n //Set correct perspective for IE10\n if (s.browser.ie) {\n var ws = s.wrapper[0].style;\n ws.perspectiveOrigin = center + 'px 50%';\n }\n },\n setTransition: function (duration) {\n s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n }\n }\n };\n\n /*=========================\n Images Lazy Loading\n ===========================*/\n s.lazy = {\n initialImageLoaded: false,\n loadImageInSlide: function (index, loadInDuplicate) {\n if (typeof index === 'undefined') return;\n if (typeof loadInDuplicate === 'undefined') loadInDuplicate = true;\n if (s.slides.length === 0) return;\n \n var slide = s.slides.eq(index);\n var img = slide.find('.' + s.params.lazyLoadingClass + ':not(.' + s.params.lazyStatusLoadedClass + '):not(.' + s.params.lazyStatusLoadingClass + ')');\n if (slide.hasClass(s.params.lazyLoadingClass) && !slide.hasClass(s.params.lazyStatusLoadedClass) && !slide.hasClass(s.params.lazyStatusLoadingClass)) {\n img = img.add(slide[0]);\n }\n if (img.length === 0) return;\n \n img.each(function () {\n var _img = $(this);\n _img.addClass(s.params.lazyStatusLoadingClass);\n var background = _img.attr('data-background');\n var src = _img.attr('data-src'),\n srcset = _img.attr('data-srcset'),\n sizes = _img.attr('data-sizes');\n s.loadImage(_img[0], (src || background), srcset, sizes, false, function () {\n if (background) {\n _img.css('background-image', 'url(\"' + background + '\")');\n _img.removeAttr('data-background');\n }\n else {\n if (srcset) {\n _img.attr('srcset', srcset);\n _img.removeAttr('data-srcset');\n }\n if (sizes) {\n _img.attr('sizes', sizes);\n _img.removeAttr('data-sizes');\n }\n if (src) {\n _img.attr('src', src);\n _img.removeAttr('data-src');\n }\n \n }\n \n _img.addClass(s.params.lazyStatusLoadedClass).removeClass(s.params.lazyStatusLoadingClass);\n slide.find('.' + s.params.lazyPreloaderClass + ', .' + s.params.preloaderClass).remove();\n if (s.params.loop && loadInDuplicate) {\n var slideOriginalIndex = slide.attr('data-swiper-slide-index');\n if (slide.hasClass(s.params.slideDuplicateClass)) {\n var originalSlide = s.wrapper.children('[data-swiper-slide-index=\"' + slideOriginalIndex + '\"]:not(.' + s.params.slideDuplicateClass + ')');\n s.lazy.loadImageInSlide(originalSlide.index(), false);\n }\n else {\n var duplicatedSlide = s.wrapper.children('.' + s.params.slideDuplicateClass + '[data-swiper-slide-index=\"' + slideOriginalIndex + '\"]');\n s.lazy.loadImageInSlide(duplicatedSlide.index(), false);\n }\n }\n s.emit('onLazyImageReady', s, slide[0], _img[0]);\n });\n \n s.emit('onLazyImageLoad', s, slide[0], _img[0]);\n });\n \n },\n load: function () {\n var i;\n var slidesPerView = s.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n if (!s.lazy.initialImageLoaded) s.lazy.initialImageLoaded = true;\n if (s.params.watchSlidesVisibility) {\n s.wrapper.children('.' + s.params.slideVisibleClass).each(function () {\n s.lazy.loadImageInSlide($(this).index());\n });\n }\n else {\n if (slidesPerView > 1) {\n for (i = s.activeIndex; i < s.activeIndex + slidesPerView ; i++) {\n if (s.slides[i]) s.lazy.loadImageInSlide(i);\n }\n }\n else {\n s.lazy.loadImageInSlide(s.activeIndex);\n }\n }\n if (s.params.lazyLoadingInPrevNext) {\n if (slidesPerView > 1 || (s.params.lazyLoadingInPrevNextAmount && s.params.lazyLoadingInPrevNextAmount > 1)) {\n var amount = s.params.lazyLoadingInPrevNextAmount;\n var spv = slidesPerView;\n var maxIndex = Math.min(s.activeIndex + spv + Math.max(amount, spv), s.slides.length);\n var minIndex = Math.max(s.activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (i = s.activeIndex + slidesPerView; i < maxIndex; i++) {\n if (s.slides[i]) s.lazy.loadImageInSlide(i);\n }\n // Prev Slides\n for (i = minIndex; i < s.activeIndex ; i++) {\n if (s.slides[i]) s.lazy.loadImageInSlide(i);\n }\n }\n else {\n var nextSlide = s.wrapper.children('.' + s.params.slideNextClass);\n if (nextSlide.length > 0) s.lazy.loadImageInSlide(nextSlide.index());\n \n var prevSlide = s.wrapper.children('.' + s.params.slidePrevClass);\n if (prevSlide.length > 0) s.lazy.loadImageInSlide(prevSlide.index());\n }\n }\n },\n onTransitionStart: function () {\n if (s.params.lazyLoading) {\n if (s.params.lazyLoadingOnTransitionStart || (!s.params.lazyLoadingOnTransitionStart && !s.lazy.initialImageLoaded)) {\n s.lazy.load();\n }\n }\n },\n onTransitionEnd: function () {\n if (s.params.lazyLoading && !s.params.lazyLoadingOnTransitionStart) {\n s.lazy.load();\n }\n }\n };\n \n\n /*=========================\n Scrollbar\n ===========================*/\n s.scrollbar = {\n isTouched: false,\n setDragPosition: function (e) {\n var sb = s.scrollbar;\n var x = 0, y = 0;\n var translate;\n var pointerPosition = s.isHorizontal() ?\n ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX) :\n ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY) ;\n var position = (pointerPosition) - sb.track.offset()[s.isHorizontal() ? 'left' : 'top'] - sb.dragSize / 2;\n var positionMin = -s.minTranslate() * sb.moveDivider;\n var positionMax = -s.maxTranslate() * sb.moveDivider;\n if (position < positionMin) {\n position = positionMin;\n }\n else if (position > positionMax) {\n position = positionMax;\n }\n position = -position / sb.moveDivider;\n s.updateProgress(position);\n s.setWrapperTranslate(position, true);\n },\n dragStart: function (e) {\n var sb = s.scrollbar;\n sb.isTouched = true;\n e.preventDefault();\n e.stopPropagation();\n \n sb.setDragPosition(e);\n clearTimeout(sb.dragTimeout);\n \n sb.track.transition(0);\n if (s.params.scrollbarHide) {\n sb.track.css('opacity', 1);\n }\n s.wrapper.transition(100);\n sb.drag.transition(100);\n s.emit('onScrollbarDragStart', s);\n },\n dragMove: function (e) {\n var sb = s.scrollbar;\n if (!sb.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n sb.setDragPosition(e);\n s.wrapper.transition(0);\n sb.track.transition(0);\n sb.drag.transition(0);\n s.emit('onScrollbarDragMove', s);\n },\n dragEnd: function (e) {\n var sb = s.scrollbar;\n if (!sb.isTouched) return;\n sb.isTouched = false;\n if (s.params.scrollbarHide) {\n clearTimeout(sb.dragTimeout);\n sb.dragTimeout = setTimeout(function () {\n sb.track.css('opacity', 0);\n sb.track.transition(400);\n }, 1000);\n \n }\n s.emit('onScrollbarDragEnd', s);\n if (s.params.scrollbarSnapOnRelease) {\n s.slideReset();\n }\n },\n draggableEvents: (function () {\n if ((s.params.simulateTouch === false && !s.support.touch)) return s.touchEventsDesktop;\n else return s.touchEvents;\n })(),\n enableDraggable: function () {\n var sb = s.scrollbar;\n var target = s.support.touch ? sb.track : document;\n $(sb.track).on(sb.draggableEvents.start, sb.dragStart);\n $(target).on(sb.draggableEvents.move, sb.dragMove);\n $(target).on(sb.draggableEvents.end, sb.dragEnd);\n },\n disableDraggable: function () {\n var sb = s.scrollbar;\n var target = s.support.touch ? sb.track : document;\n $(sb.track).off(sb.draggableEvents.start, sb.dragStart);\n $(target).off(sb.draggableEvents.move, sb.dragMove);\n $(target).off(sb.draggableEvents.end, sb.dragEnd);\n },\n set: function () {\n if (!s.params.scrollbar) return;\n var sb = s.scrollbar;\n sb.track = $(s.params.scrollbar);\n if (s.params.uniqueNavElements && typeof s.params.scrollbar === 'string' && sb.track.length > 1 && s.container.find(s.params.scrollbar).length === 1) {\n sb.track = s.container.find(s.params.scrollbar);\n }\n sb.drag = sb.track.find('.swiper-scrollbar-drag');\n if (sb.drag.length === 0) {\n sb.drag = $('
    ');\n sb.track.append(sb.drag);\n }\n sb.drag[0].style.width = '';\n sb.drag[0].style.height = '';\n sb.trackSize = s.isHorizontal() ? sb.track[0].offsetWidth : sb.track[0].offsetHeight;\n \n sb.divider = s.size / s.virtualSize;\n sb.moveDivider = sb.divider * (sb.trackSize / s.size);\n sb.dragSize = sb.trackSize * sb.divider;\n \n if (s.isHorizontal()) {\n sb.drag[0].style.width = sb.dragSize + 'px';\n }\n else {\n sb.drag[0].style.height = sb.dragSize + 'px';\n }\n \n if (sb.divider >= 1) {\n sb.track[0].style.display = 'none';\n }\n else {\n sb.track[0].style.display = '';\n }\n if (s.params.scrollbarHide) {\n sb.track[0].style.opacity = 0;\n }\n },\n setTranslate: function () {\n if (!s.params.scrollbar) return;\n var diff;\n var sb = s.scrollbar;\n var translate = s.translate || 0;\n var newPos;\n \n var newSize = sb.dragSize;\n newPos = (sb.trackSize - sb.dragSize) * s.progress;\n if (s.rtl && s.isHorizontal()) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = sb.dragSize - newPos;\n newPos = 0;\n }\n else if (-newPos + sb.dragSize > sb.trackSize) {\n newSize = sb.trackSize + newPos;\n }\n }\n else {\n if (newPos < 0) {\n newSize = sb.dragSize + newPos;\n newPos = 0;\n }\n else if (newPos + sb.dragSize > sb.trackSize) {\n newSize = sb.trackSize - newPos;\n }\n }\n if (s.isHorizontal()) {\n if (s.support.transforms3d) {\n sb.drag.transform('translate3d(' + (newPos) + 'px, 0, 0)');\n }\n else {\n sb.drag.transform('translateX(' + (newPos) + 'px)');\n }\n sb.drag[0].style.width = newSize + 'px';\n }\n else {\n if (s.support.transforms3d) {\n sb.drag.transform('translate3d(0px, ' + (newPos) + 'px, 0)');\n }\n else {\n sb.drag.transform('translateY(' + (newPos) + 'px)');\n }\n sb.drag[0].style.height = newSize + 'px';\n }\n if (s.params.scrollbarHide) {\n clearTimeout(sb.timeout);\n sb.track[0].style.opacity = 1;\n sb.timeout = setTimeout(function () {\n sb.track[0].style.opacity = 0;\n sb.track.transition(400);\n }, 1000);\n }\n },\n setTransition: function (duration) {\n if (!s.params.scrollbar) return;\n s.scrollbar.drag.transition(duration);\n }\n };\n\n /*=========================\n Controller\n ===========================*/\n s.controller = {\n LinearSpline: function (x, y) {\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n var i1, i3;\n var l = this.x.length;\n \n this.interpolate = function (x2) {\n if (!x2) return 0;\n \n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n \n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n \n var binarySearch = (function() {\n var maxIndex, minIndex, guess;\n return function(array, val) {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1)\n if (array[guess = maxIndex + minIndex >> 1] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n return maxIndex;\n };\n })();\n },\n //xxx: for now i will just save one spline function to to\n getInterpolateFunction: function(c){\n if(!s.controller.spline) s.controller.spline = s.params.loop ?\n new s.controller.LinearSpline(s.slidesGrid, c.slidesGrid) :\n new s.controller.LinearSpline(s.snapGrid, c.snapGrid);\n },\n setTranslate: function (translate, byController) {\n var controlled = s.params.control;\n var multiplier, controlledTranslate;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n translate = c.rtl && c.params.direction === 'horizontal' ? -s.translate : s.translate;\n if (s.params.controlBy === 'slide') {\n s.controller.getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -s.controller.spline.interpolate(-translate);\n }\n \n if(!controlledTranslate || s.params.controlBy === 'container'){\n multiplier = (c.maxTranslate() - c.minTranslate()) / (s.maxTranslate() - s.minTranslate());\n controlledTranslate = (translate - s.minTranslate()) * multiplier + c.minTranslate();\n }\n \n if (s.params.controlInverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setWrapperTranslate(controlledTranslate, false, s);\n c.updateActiveIndex();\n }\n if (s.isArray(controlled)) {\n for (var i = 0; i < controlled.length; i++) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n }\n else if (controlled instanceof Swiper && byController !== controlled) {\n \n setControlledTranslate(controlled);\n }\n },\n setTransition: function (duration, byController) {\n var controlled = s.params.control;\n var i;\n function setControlledTransition(c) {\n c.setWrapperTransition(duration, s);\n if (duration !== 0) {\n c.onTransitionStart();\n c.wrapper.transitionEnd(function(){\n if (!controlled) return;\n if (c.params.loop && s.params.controlBy === 'slide') {\n c.fixLoop();\n }\n c.onTransitionEnd();\n \n });\n }\n }\n if (s.isArray(controlled)) {\n for (i = 0; i < controlled.length; i++) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n }\n else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n };\n\n /*=========================\n Hash Navigation\n ===========================*/\n s.hashnav = {\n onHashCange: function (e, a) {\n var newHash = document.location.hash.replace('#', '');\n var activeSlideHash = s.slides.eq(s.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n s.slideTo(s.wrapper.children('.' + s.params.slideClass + '[data-hash=\"' + (newHash) + '\"]').index());\n }\n },\n attachEvents: function (detach) {\n var action = detach ? 'off' : 'on';\n $(window)[action]('hashchange', s.hashnav.onHashCange);\n },\n setHash: function () {\n if (!s.hashnav.initialized || !s.params.hashnav) return;\n if (s.params.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, ('#' + s.slides.eq(s.activeIndex).attr('data-hash') || ''));\n } else {\n var slide = s.slides.eq(s.activeIndex);\n var hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n }\n },\n init: function () {\n if (!s.params.hashnav || s.params.history) return;\n s.hashnav.initialized = true;\n var hash = document.location.hash.replace('#', '');\n if (hash) {\n var speed = 0;\n for (var i = 0, length = s.slides.length; i < length; i++) {\n var slide = s.slides.eq(i);\n var slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(s.params.slideDuplicateClass)) {\n var index = slide.index();\n s.slideTo(index, speed, s.params.runCallbacksOnInit, true);\n }\n }\n }\n if (s.params.hashnavWatchState) s.hashnav.attachEvents();\n },\n destroy: function () {\n if (s.params.hashnavWatchState) s.hashnav.attachEvents(true);\n }\n };\n\n /*=========================\n History Api with fallback to Hashnav\n ===========================*/\n s.history = {\n init: function () {\n if (!s.params.history) return;\n if (!window.history || !window.history.pushState) {\n s.params.history = false;\n s.params.hashnav = true;\n return;\n }\n s.history.initialized = true;\n this.paths = this.getPathValues();\n if (!this.paths.key && !this.paths.value) return;\n this.scrollToSlide(0, this.paths.value, s.params.runCallbacksOnInit);\n if (!s.params.replaceState) {\n window.addEventListener('popstate', this.setHistoryPopState);\n }\n },\n setHistoryPopState: function() {\n s.history.paths = s.history.getPathValues();\n s.history.scrollToSlide(s.params.speed, s.history.paths.value, false);\n },\n getPathValues: function() {\n var pathArray = window.location.pathname.slice(1).split('/');\n var total = pathArray.length;\n var key = pathArray[total - 2];\n var value = pathArray[total - 1];\n return { key: key, value: value };\n },\n setHistory: function (key, index) {\n if (!s.history.initialized || !s.params.history) return;\n var slide = s.slides.eq(index);\n var value = this.slugify(slide.attr('data-history'));\n if (!window.location.pathname.includes(key)) {\n value = key + '/' + value;\n }\n if (s.params.replaceState) {\n window.history.replaceState(null, null, value);\n } else {\n window.history.pushState(null, null, value);\n }\n },\n slugify: function(text) {\n return text.toString().toLowerCase()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w\\-]+/g, '')\n .replace(/\\-\\-+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n },\n scrollToSlide: function(speed, value, runCallbacks) {\n if (value) {\n for (var i = 0, length = s.slides.length; i < length; i++) {\n var slide = s.slides.eq(i);\n var slideHistory = this.slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(s.params.slideDuplicateClass)) {\n var index = slide.index();\n s.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n s.slideTo(0, speed, runCallbacks);\n }\n }\n };\n\n /*=========================\n Keyboard Control\n ===========================*/\n function handleKeyboard(e) {\n if (e.originalEvent) e = e.originalEvent; //jquery fix\n var kc = e.keyCode || e.charCode;\n // Directions locks\n if (!s.params.allowSwipeToNext && (s.isHorizontal() && kc === 39 || !s.isHorizontal() && kc === 40)) {\n return false;\n }\n if (!s.params.allowSwipeToPrev && (s.isHorizontal() && kc === 37 || !s.isHorizontal() && kc === 38)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return;\n }\n if (kc === 37 || kc === 39 || kc === 38 || kc === 40) {\n var inView = false;\n //Check that swiper should be inside of visible area of window\n if (s.container.parents('.' + s.params.slideClass).length > 0 && s.container.parents('.' + s.params.slideActiveClass).length === 0) {\n return;\n }\n var windowScroll = {\n left: window.pageXOffset,\n top: window.pageYOffset\n };\n var windowWidth = window.innerWidth;\n var windowHeight = window.innerHeight;\n var swiperOffset = s.container.offset();\n if (s.rtl) swiperOffset.left = swiperOffset.left - s.container[0].scrollLeft;\n var swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + s.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + s.height],\n [swiperOffset.left + s.width, swiperOffset.top + s.height]\n ];\n for (var i = 0; i < swiperCoord.length; i++) {\n var point = swiperCoord[i];\n if (\n point[0] >= windowScroll.left && point[0] <= windowScroll.left + windowWidth &&\n point[1] >= windowScroll.top && point[1] <= windowScroll.top + windowHeight\n ) {\n inView = true;\n }\n \n }\n if (!inView) return;\n }\n if (s.isHorizontal()) {\n if (kc === 37 || kc === 39) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if ((kc === 39 && !s.rtl) || (kc === 37 && s.rtl)) s.slideNext();\n if ((kc === 37 && !s.rtl) || (kc === 39 && s.rtl)) s.slidePrev();\n }\n else {\n if (kc === 38 || kc === 40) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (kc === 40) s.slideNext();\n if (kc === 38) s.slidePrev();\n }\n }\n s.disableKeyboardControl = function () {\n s.params.keyboardControl = false;\n $(document).off('keydown', handleKeyboard);\n };\n s.enableKeyboardControl = function () {\n s.params.keyboardControl = true;\n $(document).on('keydown', handleKeyboard);\n };\n \n\n /*=========================\n Mousewheel Control\n ===========================*/\n s.mousewheel = {\n event: false,\n lastScrollTime: (new window.Date()).getTime()\n };\n if (s.params.mousewheelControl) {\n /**\n * The best combination if you prefer spinX + spinY normalization. It favors\n * the older DOMMouseScroll for Firefox, as FF does not include wheelDelta with\n * 'wheel' event, making spin speed determination impossible.\n */\n s.mousewheel.event = (navigator.userAgent.indexOf('firefox') > -1) ?\n 'DOMMouseScroll' :\n isEventSupported() ?\n 'wheel' : 'mousewheel';\n }\n \n function isEventSupported() {\n var eventName = 'onwheel';\n var isSupported = eventName in document;\n \n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n \n if (!isSupported &&\n document.implementation &&\n document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n \n return isSupported;\n }\n \n function handleMousewheel(e) {\n if (e.originalEvent) e = e.originalEvent; //jquery fix\n var delta = 0;\n var rtlFactor = s.rtl ? -1 : 1;\n \n var data = normalizeWheel( e );\n \n if (s.params.mousewheelForceToAxis) {\n if (s.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor;\n else return;\n }\n else {\n if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY;\n else return;\n }\n }\n else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? - data.pixelX * rtlFactor : - data.pixelY;\n }\n \n if (delta === 0) return;\n \n if (s.params.mousewheelInvert) delta = -delta;\n \n if (!s.params.freeMode) {\n if ((new window.Date()).getTime() - s.mousewheel.lastScrollTime > 60) {\n if (delta < 0) {\n if ((!s.isEnd || s.params.loop) && !s.animating) {\n s.slideNext();\n s.emit('onScroll', s, e);\n }\n else if (s.params.mousewheelReleaseOnEdges) return true;\n }\n else {\n if ((!s.isBeginning || s.params.loop) && !s.animating) {\n s.slidePrev();\n s.emit('onScroll', s, e);\n }\n else if (s.params.mousewheelReleaseOnEdges) return true;\n }\n }\n s.mousewheel.lastScrollTime = (new window.Date()).getTime();\n \n }\n else {\n //Freemode or scrollContainer:\n var position = s.getWrapperTranslate() + delta * s.params.mousewheelSensitivity;\n var wasBeginning = s.isBeginning,\n wasEnd = s.isEnd;\n \n if (position >= s.minTranslate()) position = s.minTranslate();\n if (position <= s.maxTranslate()) position = s.maxTranslate();\n \n s.setWrapperTransition(0);\n s.setWrapperTranslate(position);\n s.updateProgress();\n s.updateActiveIndex();\n \n if (!wasBeginning && s.isBeginning || !wasEnd && s.isEnd) {\n s.updateClasses();\n }\n \n if (s.params.freeModeSticky) {\n clearTimeout(s.mousewheel.timeout);\n s.mousewheel.timeout = setTimeout(function () {\n s.slideReset();\n }, 300);\n }\n else {\n if (s.params.lazyLoading && s.lazy) {\n s.lazy.load();\n }\n }\n // Emit event\n s.emit('onScroll', s, e);\n \n // Stop autoplay\n if (s.params.autoplay && s.params.autoplayDisableOnInteraction) s.stopAutoplay();\n \n // Return page scroll on edge positions\n if (position === 0 || position === s.maxTranslate()) return;\n }\n \n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n }\n s.disableMousewheelControl = function () {\n if (!s.mousewheel.event) return false;\n var target = s.container;\n if (s.params.mousewheelEventsTarged !== 'container') {\n target = $(s.params.mousewheelEventsTarged);\n }\n target.off(s.mousewheel.event, handleMousewheel);\n return true;\n };\n \n s.enableMousewheelControl = function () {\n if (!s.mousewheel.event) return false;\n var target = s.container;\n if (s.params.mousewheelEventsTarged !== 'container') {\n target = $(s.params.mousewheelEventsTarged);\n }\n target.on(s.mousewheel.event, handleMousewheel);\n return true;\n };\n \n /**\n * Mouse wheel (and 2-finger trackpad) support on the web sucks. It is\n * complicated, thus this doc is long and (hopefully) detailed enough to answer\n * your questions.\n *\n * If you need to react to the mouse wheel in a predictable way, this code is\n * like your bestest friend. * hugs *\n *\n * As of today, there are 4 DOM event types you can listen to:\n *\n * 'wheel' -- Chrome(31+), FF(17+), IE(9+)\n * 'mousewheel' -- Chrome, IE(6+), Opera, Safari\n * 'MozMousePixelScroll' -- FF(3.5 only!) (2010-2013) -- don't bother!\n * 'DOMMouseScroll' -- FF(0.9.7+) since 2003\n *\n * So what to do? The is the best:\n *\n * normalizeWheel.getEventType();\n *\n * In your event callback, use this code to get sane interpretation of the\n * deltas. This code will return an object with properties:\n *\n * spinX -- normalized spin speed (use for zoom) - x plane\n * spinY -- \" - y plane\n * pixelX -- normalized distance (to pixels) - x plane\n * pixelY -- \" - y plane\n *\n * Wheel values are provided by the browser assuming you are using the wheel to\n * scroll a web page by a number of lines or pixels (or pages). Values can vary\n * significantly on different platforms and browsers, forgetting that you can\n * scroll at different speeds. Some devices (like trackpads) emit more events\n * at smaller increments with fine granularity, and some emit massive jumps with\n * linear speed or acceleration.\n *\n * This code does its best to normalize the deltas for you:\n *\n * - spin is trying to normalize how far the wheel was spun (or trackpad\n * dragged). This is super useful for zoom support where you want to\n * throw away the chunky scroll steps on the PC and make those equal to\n * the slow and smooth tiny steps on the Mac. Key data: This code tries to\n * resolve a single slow step on a wheel to 1.\n *\n * - pixel is normalizing the desired scroll delta in pixel units. You'll\n * get the crazy differences between browsers, but at least it'll be in\n * pixels!\n *\n * - positive value indicates scrolling DOWN/RIGHT, negative UP/LEFT. This\n * should translate to positive value zooming IN, negative zooming OUT.\n * This matches the newer 'wheel' event.\n *\n * Why are there spinX, spinY (or pixels)?\n *\n * - spinX is a 2-finger side drag on the trackpad, and a shift + wheel turn\n * with a mouse. It results in side-scrolling in the browser by default.\n *\n * - spinY is what you expect -- it's the classic axis of a mouse wheel.\n *\n * - I dropped spinZ/pixelZ. It is supported by the DOM 3 'wheel' event and\n * probably is by browsers in conjunction with fancy 3D controllers .. but\n * you know.\n *\n * Implementation info:\n *\n * Examples of 'wheel' event if you scroll slowly (down) by one step with an\n * average mouse:\n *\n * OS X + Chrome (mouse) - 4 pixel delta (wheelDelta -120)\n * OS X + Safari (mouse) - N/A pixel delta (wheelDelta -12)\n * OS X + Firefox (mouse) - 0.1 line delta (wheelDelta N/A)\n * Win8 + Chrome (mouse) - 100 pixel delta (wheelDelta -120)\n * Win8 + Firefox (mouse) - 3 line delta (wheelDelta -120)\n *\n * On the trackpad:\n *\n * OS X + Chrome (trackpad) - 2 pixel delta (wheelDelta -6)\n * OS X + Firefox (trackpad) - 1 pixel delta (wheelDelta N/A)\n *\n * On other/older browsers.. it's more complicated as there can be multiple and\n * also missing delta values.\n *\n * The 'wheel' event is more standard:\n *\n * http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents\n *\n * The basics is that it includes a unit, deltaMode (pixels, lines, pages), and\n * deltaX, deltaY and deltaZ. Some browsers provide other values to maintain\n * backward compatibility with older events. Those other values help us\n * better normalize spin speed. Example of what the browsers provide:\n *\n * | event.wheelDelta | event.detail\n * ------------------+------------------+--------------\n * Safari v5/OS X | -120 | 0\n * Safari v5/Win7 | -120 | 0\n * Chrome v17/OS X | -120 | 0\n * Chrome v17/Win7 | -120 | 0\n * IE9/Win7 | -120 | undefined\n * Firefox v4/OS X | undefined | 1\n * Firefox v4/Win7 | undefined | 3\n *\n */\n function normalizeWheel( /*object*/ event ) /*object*/ {\n // Reasonable defaults\n var PIXEL_STEP = 10;\n var LINE_HEIGHT = 40;\n var PAGE_HEIGHT = 800;\n \n var sX = 0, sY = 0, // spinX, spinY\n pX = 0, pY = 0; // pixelX, pixelY\n \n // Legacy\n if( 'detail' in event ) {\n sY = event.detail;\n }\n if( 'wheelDelta' in event ) {\n sY = -event.wheelDelta / 120;\n }\n if( 'wheelDeltaY' in event ) {\n sY = -event.wheelDeltaY / 120;\n }\n if( 'wheelDeltaX' in event ) {\n sX = -event.wheelDeltaX / 120;\n }\n \n // side scrolling on FF with DOMMouseScroll\n if( 'axis' in event && event.axis === event.HORIZONTAL_AXIS ) {\n sX = sY;\n sY = 0;\n }\n \n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n \n if( 'deltaY' in event ) {\n pY = event.deltaY;\n }\n if( 'deltaX' in event ) {\n pX = event.deltaX;\n }\n \n if( (pX || pY) && event.deltaMode ) {\n if( event.deltaMode === 1 ) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n \n // Fall-back if spin cannot be determined\n if( pX && !sX ) {\n sX = (pX < 1) ? -1 : 1;\n }\n if( pY && !sY ) {\n sY = (pY < 1) ? -1 : 1;\n }\n \n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n\n /*=========================\n Parallax\n ===========================*/\n function setParallaxTransform(el, progress) {\n el = $(el);\n var p, pX, pY;\n var rtlFactor = s.rtl ? -1 : 1;\n \n p = el.attr('data-swiper-parallax') || '0';\n pX = el.attr('data-swiper-parallax-x');\n pY = el.attr('data-swiper-parallax-y');\n if (pX || pY) {\n pX = pX || '0';\n pY = pY || '0';\n }\n else {\n if (s.isHorizontal()) {\n pX = p;\n pY = '0';\n }\n else {\n pY = p;\n pX = '0';\n }\n }\n \n if ((pX).indexOf('%') >= 0) {\n pX = parseInt(pX, 10) * progress * rtlFactor + '%';\n }\n else {\n pX = pX * progress * rtlFactor + 'px' ;\n }\n if ((pY).indexOf('%') >= 0) {\n pY = parseInt(pY, 10) * progress + '%';\n }\n else {\n pY = pY * progress + 'px' ;\n }\n \n el.transform('translate3d(' + pX + ', ' + pY + ',0px)');\n }\n s.parallax = {\n setTranslate: function () {\n s.container.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){\n setParallaxTransform(this, s.progress);\n \n });\n s.slides.each(function () {\n var slide = $(this);\n slide.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function () {\n var progress = Math.min(Math.max(slide[0].progress, -1), 1);\n setParallaxTransform(this, progress);\n });\n });\n },\n setTransition: function (duration) {\n if (typeof duration === 'undefined') duration = s.params.speed;\n s.container.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){\n var el = $(this);\n var parallaxDuration = parseInt(el.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n el.transition(parallaxDuration);\n });\n }\n };\n \n\n /*=========================\n Zoom\n ===========================*/\n s.zoom = {\n // \"Global\" Props\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n slide: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n image: undefined,\n imageWrap: undefined,\n zoomMax: s.params.zoomMax\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n },\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches: function (e) {\n if (e.targetTouches.length < 2) return 1;\n var x1 = e.targetTouches[0].pageX,\n y1 = e.targetTouches[0].pageY,\n x2 = e.targetTouches[1].pageX,\n y2 = e.targetTouches[1].pageY;\n var distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));\n return distance;\n },\n // Events\n onGestureStart: function (e) {\n var z = s.zoom;\n if (!s.support.gestures) {\n if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n return;\n }\n z.gesture.scaleStart = z.getDistanceBetweenTouches(e);\n }\n if (!z.gesture.slide || !z.gesture.slide.length) {\n z.gesture.slide = $(this);\n if (z.gesture.slide.length === 0) z.gesture.slide = s.slides.eq(s.activeIndex);\n z.gesture.image = z.gesture.slide.find('img, svg, canvas');\n z.gesture.imageWrap = z.gesture.image.parent('.' + s.params.zoomContainerClass);\n z.gesture.zoomMax = z.gesture.imageWrap.attr('data-swiper-zoom') || s.params.zoomMax ;\n if (z.gesture.imageWrap.length === 0) {\n z.gesture.image = undefined;\n return;\n }\n }\n z.gesture.image.transition(0);\n z.isScaling = true;\n },\n onGestureChange: function (e) {\n var z = s.zoom;\n if (!s.support.gestures) {\n if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n return;\n }\n z.gesture.scaleMove = z.getDistanceBetweenTouches(e);\n }\n if (!z.gesture.image || z.gesture.image.length === 0) return;\n if (s.support.gestures) {\n z.scale = e.scale * z.currentScale;\n }\n else {\n z.scale = (z.gesture.scaleMove / z.gesture.scaleStart) * z.currentScale;\n }\n if (z.scale > z.gesture.zoomMax) {\n z.scale = z.gesture.zoomMax - 1 + Math.pow((z.scale - z.gesture.zoomMax + 1), 0.5);\n }\n if (z.scale < s.params.zoomMin) {\n z.scale = s.params.zoomMin + 1 - Math.pow((s.params.zoomMin - z.scale + 1), 0.5);\n }\n z.gesture.image.transform('translate3d(0,0,0) scale(' + z.scale + ')');\n },\n onGestureEnd: function (e) {\n var z = s.zoom;\n if (!s.support.gestures) {\n if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2) {\n return;\n }\n }\n if (!z.gesture.image || z.gesture.image.length === 0) return;\n z.scale = Math.max(Math.min(z.scale, z.gesture.zoomMax), s.params.zoomMin);\n z.gesture.image.transition(s.params.speed).transform('translate3d(0,0,0) scale(' + z.scale + ')');\n z.currentScale = z.scale;\n z.isScaling = false;\n if (z.scale === 1) z.gesture.slide = undefined;\n },\n onTouchStart: function (s, e) {\n var z = s.zoom;\n if (!z.gesture.image || z.gesture.image.length === 0) return;\n if (z.image.isTouched) return;\n if (s.device.os === 'android') e.preventDefault();\n z.image.isTouched = true;\n z.image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n z.image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove: function (e) {\n var z = s.zoom;\n if (!z.gesture.image || z.gesture.image.length === 0) return;\n s.allowClick = false;\n if (!z.image.isTouched || !z.gesture.slide) return;\n \n if (!z.image.isMoved) {\n z.image.width = z.gesture.image[0].offsetWidth;\n z.image.height = z.gesture.image[0].offsetHeight;\n z.image.startX = s.getTranslate(z.gesture.imageWrap[0], 'x') || 0;\n z.image.startY = s.getTranslate(z.gesture.imageWrap[0], 'y') || 0;\n z.gesture.slideWidth = z.gesture.slide[0].offsetWidth;\n z.gesture.slideHeight = z.gesture.slide[0].offsetHeight;\n z.gesture.imageWrap.transition(0);\n if (s.rtl) z.image.startX = -z.image.startX;\n if (s.rtl) z.image.startY = -z.image.startY;\n }\n // Define if we need image drag\n var scaledWidth = z.image.width * z.scale;\n var scaledHeight = z.image.height * z.scale;\n \n if (scaledWidth < z.gesture.slideWidth && scaledHeight < z.gesture.slideHeight) return;\n \n z.image.minX = Math.min((z.gesture.slideWidth / 2 - scaledWidth / 2), 0);\n z.image.maxX = -z.image.minX;\n z.image.minY = Math.min((z.gesture.slideHeight / 2 - scaledHeight / 2), 0);\n z.image.maxY = -z.image.minY;\n \n z.image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n z.image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n \n if (!z.image.isMoved && !z.isScaling) {\n if (s.isHorizontal() &&\n (Math.floor(z.image.minX) === Math.floor(z.image.startX) && z.image.touchesCurrent.x < z.image.touchesStart.x) ||\n (Math.floor(z.image.maxX) === Math.floor(z.image.startX) && z.image.touchesCurrent.x > z.image.touchesStart.x)\n ) {\n z.image.isTouched = false;\n return;\n }\n else if (!s.isHorizontal() &&\n (Math.floor(z.image.minY) === Math.floor(z.image.startY) && z.image.touchesCurrent.y < z.image.touchesStart.y) ||\n (Math.floor(z.image.maxY) === Math.floor(z.image.startY) && z.image.touchesCurrent.y > z.image.touchesStart.y)\n ) {\n z.image.isTouched = false;\n return;\n }\n }\n e.preventDefault();\n e.stopPropagation();\n \n z.image.isMoved = true;\n z.image.currentX = z.image.touchesCurrent.x - z.image.touchesStart.x + z.image.startX;\n z.image.currentY = z.image.touchesCurrent.y - z.image.touchesStart.y + z.image.startY;\n \n if (z.image.currentX < z.image.minX) {\n z.image.currentX = z.image.minX + 1 - Math.pow((z.image.minX - z.image.currentX + 1), 0.8);\n }\n if (z.image.currentX > z.image.maxX) {\n z.image.currentX = z.image.maxX - 1 + Math.pow((z.image.currentX - z.image.maxX + 1), 0.8);\n }\n \n if (z.image.currentY < z.image.minY) {\n z.image.currentY = z.image.minY + 1 - Math.pow((z.image.minY - z.image.currentY + 1), 0.8);\n }\n if (z.image.currentY > z.image.maxY) {\n z.image.currentY = z.image.maxY - 1 + Math.pow((z.image.currentY - z.image.maxY + 1), 0.8);\n }\n \n //Velocity\n if (!z.velocity.prevPositionX) z.velocity.prevPositionX = z.image.touchesCurrent.x;\n if (!z.velocity.prevPositionY) z.velocity.prevPositionY = z.image.touchesCurrent.y;\n if (!z.velocity.prevTime) z.velocity.prevTime = Date.now();\n z.velocity.x = (z.image.touchesCurrent.x - z.velocity.prevPositionX) / (Date.now() - z.velocity.prevTime) / 2;\n z.velocity.y = (z.image.touchesCurrent.y - z.velocity.prevPositionY) / (Date.now() - z.velocity.prevTime) / 2;\n if (Math.abs(z.image.touchesCurrent.x - z.velocity.prevPositionX) < 2) z.velocity.x = 0;\n if (Math.abs(z.image.touchesCurrent.y - z.velocity.prevPositionY) < 2) z.velocity.y = 0;\n z.velocity.prevPositionX = z.image.touchesCurrent.x;\n z.velocity.prevPositionY = z.image.touchesCurrent.y;\n z.velocity.prevTime = Date.now();\n \n z.gesture.imageWrap.transform('translate3d(' + z.image.currentX + 'px, ' + z.image.currentY + 'px,0)');\n },\n onTouchEnd: function (s, e) {\n var z = s.zoom;\n if (!z.gesture.image || z.gesture.image.length === 0) return;\n if (!z.image.isTouched || !z.image.isMoved) {\n z.image.isTouched = false;\n z.image.isMoved = false;\n return;\n }\n z.image.isTouched = false;\n z.image.isMoved = false;\n var momentumDurationX = 300;\n var momentumDurationY = 300;\n var momentumDistanceX = z.velocity.x * momentumDurationX;\n var newPositionX = z.image.currentX + momentumDistanceX;\n var momentumDistanceY = z.velocity.y * momentumDurationY;\n var newPositionY = z.image.currentY + momentumDistanceY;\n \n //Fix duration\n if (z.velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - z.image.currentX) / z.velocity.x);\n if (z.velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - z.image.currentY) / z.velocity.y);\n var momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n \n z.image.currentX = newPositionX;\n z.image.currentY = newPositionY;\n \n // Define if we need image drag\n var scaledWidth = z.image.width * z.scale;\n var scaledHeight = z.image.height * z.scale;\n z.image.minX = Math.min((z.gesture.slideWidth / 2 - scaledWidth / 2), 0);\n z.image.maxX = -z.image.minX;\n z.image.minY = Math.min((z.gesture.slideHeight / 2 - scaledHeight / 2), 0);\n z.image.maxY = -z.image.minY;\n z.image.currentX = Math.max(Math.min(z.image.currentX, z.image.maxX), z.image.minX);\n z.image.currentY = Math.max(Math.min(z.image.currentY, z.image.maxY), z.image.minY);\n \n z.gesture.imageWrap.transition(momentumDuration).transform('translate3d(' + z.image.currentX + 'px, ' + z.image.currentY + 'px,0)');\n },\n onTransitionEnd: function (s) {\n var z = s.zoom;\n if (z.gesture.slide && s.previousIndex !== s.activeIndex) {\n z.gesture.image.transform('translate3d(0,0,0) scale(1)');\n z.gesture.imageWrap.transform('translate3d(0,0,0)');\n z.gesture.slide = z.gesture.image = z.gesture.imageWrap = undefined;\n z.scale = z.currentScale = 1;\n }\n },\n // Toggle Zoom\n toggleZoom: function (s, e) {\n var z = s.zoom;\n if (!z.gesture.slide) {\n z.gesture.slide = s.clickedSlide ? $(s.clickedSlide) : s.slides.eq(s.activeIndex);\n z.gesture.image = z.gesture.slide.find('img, svg, canvas');\n z.gesture.imageWrap = z.gesture.image.parent('.' + s.params.zoomContainerClass);\n }\n if (!z.gesture.image || z.gesture.image.length === 0) return;\n \n var touchX, touchY, offsetX, offsetY, diffX, diffY, translateX, translateY, imageWidth, imageHeight, scaledWidth, scaledHeight, translateMinX, translateMinY, translateMaxX, translateMaxY, slideWidth, slideHeight;\n \n if (typeof z.image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n }\n else {\n touchX = z.image.touchesStart.x;\n touchY = z.image.touchesStart.y;\n }\n \n if (z.scale && z.scale !== 1) {\n // Zoom Out\n z.scale = z.currentScale = 1;\n z.gesture.imageWrap.transition(300).transform('translate3d(0,0,0)');\n z.gesture.image.transition(300).transform('translate3d(0,0,0) scale(1)');\n z.gesture.slide = undefined;\n }\n else {\n // Zoom In\n z.scale = z.currentScale = z.gesture.imageWrap.attr('data-swiper-zoom') || s.params.zoomMax;\n if (e) {\n slideWidth = z.gesture.slide[0].offsetWidth;\n slideHeight = z.gesture.slide[0].offsetHeight;\n offsetX = z.gesture.slide.offset().left;\n offsetY = z.gesture.slide.offset().top;\n diffX = offsetX + slideWidth/2 - touchX;\n diffY = offsetY + slideHeight/2 - touchY;\n \n imageWidth = z.gesture.image[0].offsetWidth;\n imageHeight = z.gesture.image[0].offsetHeight;\n scaledWidth = imageWidth * z.scale;\n scaledHeight = imageHeight * z.scale;\n \n translateMinX = Math.min((slideWidth / 2 - scaledWidth / 2), 0);\n translateMinY = Math.min((slideHeight / 2 - scaledHeight / 2), 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n \n translateX = diffX * z.scale;\n translateY = diffY * z.scale;\n \n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n \n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n }\n else {\n translateX = 0;\n translateY = 0;\n }\n z.gesture.imageWrap.transition(300).transform('translate3d(' + translateX + 'px, ' + translateY + 'px,0)');\n z.gesture.image.transition(300).transform('translate3d(0,0,0) scale(' + z.scale + ')');\n }\n },\n // Attach/Detach Events\n attachEvents: function (detach) {\n var action = detach ? 'off' : 'on';\n \n if (s.params.zoom) {\n var target = s.slides;\n var passiveListener = s.touchEvents.start === 'touchstart' && s.support.passiveListener && s.params.passiveListeners ? {passive: true, capture: false} : false;\n // Scale image\n if (s.support.gestures) {\n s.slides[action]('gesturestart', s.zoom.onGestureStart, passiveListener);\n s.slides[action]('gesturechange', s.zoom.onGestureChange, passiveListener);\n s.slides[action]('gestureend', s.zoom.onGestureEnd, passiveListener);\n }\n else if (s.touchEvents.start === 'touchstart') {\n s.slides[action](s.touchEvents.start, s.zoom.onGestureStart, passiveListener);\n s.slides[action](s.touchEvents.move, s.zoom.onGestureChange, passiveListener);\n s.slides[action](s.touchEvents.end, s.zoom.onGestureEnd, passiveListener);\n }\n \n // Move image\n s[action]('touchStart', s.zoom.onTouchStart);\n s.slides.each(function (index, slide){\n if ($(slide).find('.' + s.params.zoomContainerClass).length > 0) {\n $(slide)[action](s.touchEvents.move, s.zoom.onTouchMove);\n }\n });\n s[action]('touchEnd', s.zoom.onTouchEnd);\n \n // Scale Out\n s[action]('transitionEnd', s.zoom.onTransitionEnd);\n if (s.params.zoomToggle) {\n s.on('doubleTap', s.zoom.toggleZoom);\n }\n }\n },\n init: function () {\n s.zoom.attachEvents();\n },\n destroy: function () {\n s.zoom.attachEvents(true);\n }\n };\n\n /*=========================\n Plugins API. Collect all and init all plugins\n ===========================*/\n s._plugins = [];\n for (var plugin in s.plugins) {\n var p = s.plugins[plugin](s, s.params[plugin]);\n if (p) s._plugins.push(p);\n }\n // Method to call all plugins event/method\n s.callPlugins = function (eventName) {\n for (var i = 0; i < s._plugins.length; i++) {\n if (eventName in s._plugins[i]) {\n s._plugins[i][eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n }\n };\n\n /*=========================\n Events/Callbacks/Plugins Emitter\n ===========================*/\n function normalizeEventName (eventName) {\n if (eventName.indexOf('on') !== 0) {\n if (eventName[0] !== eventName[0].toUpperCase()) {\n eventName = 'on' + eventName[0].toUpperCase() + eventName.substring(1);\n }\n else {\n eventName = 'on' + eventName;\n }\n }\n return eventName;\n }\n s.emitterEventListeners = {\n \n };\n s.emit = function (eventName) {\n // Trigger callbacks\n if (s.params[eventName]) {\n s.params[eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n var i;\n // Trigger events\n if (s.emitterEventListeners[eventName]) {\n for (i = 0; i < s.emitterEventListeners[eventName].length; i++) {\n s.emitterEventListeners[eventName][i](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n }\n // Trigger plugins\n if (s.callPlugins) s.callPlugins(eventName, arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n };\n s.on = function (eventName, handler) {\n eventName = normalizeEventName(eventName);\n if (!s.emitterEventListeners[eventName]) s.emitterEventListeners[eventName] = [];\n s.emitterEventListeners[eventName].push(handler);\n return s;\n };\n s.off = function (eventName, handler) {\n var i;\n eventName = normalizeEventName(eventName);\n if (typeof handler === 'undefined') {\n // Remove all handlers for such event\n s.emitterEventListeners[eventName] = [];\n return s;\n }\n if (!s.emitterEventListeners[eventName] || s.emitterEventListeners[eventName].length === 0) return;\n for (i = 0; i < s.emitterEventListeners[eventName].length; i++) {\n if(s.emitterEventListeners[eventName][i] === handler) s.emitterEventListeners[eventName].splice(i, 1);\n }\n return s;\n };\n s.once = function (eventName, handler) {\n eventName = normalizeEventName(eventName);\n var _handler = function () {\n handler(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]);\n s.off(eventName, _handler);\n };\n s.on(eventName, _handler);\n return s;\n };\n\n // Accessibility tools\n s.a11y = {\n makeFocusable: function ($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n addRole: function ($el, role) {\n $el.attr('role', role);\n return $el;\n },\n \n addLabel: function ($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n \n disable: function ($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n \n enable: function ($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n \n onEnterKey: function (event) {\n if (event.keyCode !== 13) return;\n if ($(event.target).is(s.params.nextButton)) {\n s.onClickNext(event);\n if (s.isEnd) {\n s.a11y.notify(s.params.lastSlideMessage);\n }\n else {\n s.a11y.notify(s.params.nextSlideMessage);\n }\n }\n else if ($(event.target).is(s.params.prevButton)) {\n s.onClickPrev(event);\n if (s.isBeginning) {\n s.a11y.notify(s.params.firstSlideMessage);\n }\n else {\n s.a11y.notify(s.params.prevSlideMessage);\n }\n }\n if ($(event.target).is('.' + s.params.bulletClass)) {\n $(event.target)[0].click();\n }\n },\n \n liveRegion: $(''),\n \n notify: function (message) {\n var notification = s.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n init: function () {\n // Setup accessibility\n if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) {\n s.a11y.makeFocusable(s.nextButton);\n s.a11y.addRole(s.nextButton, 'button');\n s.a11y.addLabel(s.nextButton, s.params.nextSlideMessage);\n }\n if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) {\n s.a11y.makeFocusable(s.prevButton);\n s.a11y.addRole(s.prevButton, 'button');\n s.a11y.addLabel(s.prevButton, s.params.prevSlideMessage);\n }\n \n $(s.container).append(s.a11y.liveRegion);\n },\n initPagination: function () {\n if (s.params.pagination && s.params.paginationClickable && s.bullets && s.bullets.length) {\n s.bullets.each(function () {\n var bullet = $(this);\n s.a11y.makeFocusable(bullet);\n s.a11y.addRole(bullet, 'button');\n s.a11y.addLabel(bullet, s.params.paginationBulletMessage.replace(/{{index}}/, bullet.index() + 1));\n });\n }\n },\n destroy: function () {\n if (s.a11y.liveRegion && s.a11y.liveRegion.length > 0) s.a11y.liveRegion.remove();\n }\n };\n \n\n /*=========================\n Init/Destroy\n ===========================*/\n s.init = function () {\n if (s.params.loop) s.createLoop();\n s.updateContainerSize();\n s.updateSlidesSize();\n s.updatePagination();\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.set();\n if (s.params.scrollbarDraggable) {\n s.scrollbar.enableDraggable();\n }\n }\n if (s.params.effect !== 'slide' && s.effects[s.params.effect]) {\n if (!s.params.loop) s.updateProgress();\n s.effects[s.params.effect].setTranslate();\n }\n if (s.params.loop) {\n s.slideTo(s.params.initialSlide + s.loopedSlides, 0, s.params.runCallbacksOnInit);\n }\n else {\n s.slideTo(s.params.initialSlide, 0, s.params.runCallbacksOnInit);\n if (s.params.initialSlide === 0) {\n if (s.parallax && s.params.parallax) s.parallax.setTranslate();\n if (s.lazy && s.params.lazyLoading) {\n s.lazy.load();\n s.lazy.initialImageLoaded = true;\n }\n }\n }\n s.attachEvents();\n if (s.params.observer && s.support.observer) {\n s.initObservers();\n }\n if (s.params.preloadImages && !s.params.lazyLoading) {\n s.preloadImages();\n }\n if (s.params.zoom && s.zoom) {\n s.zoom.init();\n }\n if (s.params.autoplay) {\n s.startAutoplay();\n }\n if (s.params.keyboardControl) {\n if (s.enableKeyboardControl) s.enableKeyboardControl();\n }\n if (s.params.mousewheelControl) {\n if (s.enableMousewheelControl) s.enableMousewheelControl();\n }\n // Deprecated hashnavReplaceState changed to replaceState for use in hashnav and history\n if (s.params.hashnavReplaceState) {\n s.params.replaceState = s.params.hashnavReplaceState;\n }\n if (s.params.history) {\n if (s.history) s.history.init();\n }\n if (s.params.hashnav) {\n if (s.hashnav) s.hashnav.init();\n }\n if (s.params.a11y && s.a11y) s.a11y.init();\n s.emit('onInit', s);\n };\n \n // Cleanup dynamic styles\n s.cleanupStyles = function () {\n // Container\n s.container.removeClass(s.classNames.join(' ')).removeAttr('style');\n \n // Wrapper\n s.wrapper.removeAttr('style');\n \n // Slides\n if (s.slides && s.slides.length) {\n s.slides\n .removeClass([\n s.params.slideVisibleClass,\n s.params.slideActiveClass,\n s.params.slideNextClass,\n s.params.slidePrevClass\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-column')\n .removeAttr('data-swiper-row');\n }\n \n // Pagination/Bullets\n if (s.paginationContainer && s.paginationContainer.length) {\n s.paginationContainer.removeClass(s.params.paginationHiddenClass);\n }\n if (s.bullets && s.bullets.length) {\n s.bullets.removeClass(s.params.bulletActiveClass);\n }\n \n // Buttons\n if (s.params.prevButton) $(s.params.prevButton).removeClass(s.params.buttonDisabledClass);\n if (s.params.nextButton) $(s.params.nextButton).removeClass(s.params.buttonDisabledClass);\n \n // Scrollbar\n if (s.params.scrollbar && s.scrollbar) {\n if (s.scrollbar.track && s.scrollbar.track.length) s.scrollbar.track.removeAttr('style');\n if (s.scrollbar.drag && s.scrollbar.drag.length) s.scrollbar.drag.removeAttr('style');\n }\n };\n \n // Destroy\n s.destroy = function (deleteInstance, cleanupStyles) {\n // Detach evebts\n s.detachEvents();\n // Stop autoplay\n s.stopAutoplay();\n // Disable draggable\n if (s.params.scrollbar && s.scrollbar) {\n if (s.params.scrollbarDraggable) {\n s.scrollbar.disableDraggable();\n }\n }\n // Destroy loop\n if (s.params.loop) {\n s.destroyLoop();\n }\n // Cleanup styles\n if (cleanupStyles) {\n s.cleanupStyles();\n }\n // Disconnect observer\n s.disconnectObservers();\n \n // Destroy zoom\n if (s.params.zoom && s.zoom) {\n s.zoom.destroy();\n }\n // Disable keyboard/mousewheel\n if (s.params.keyboardControl) {\n if (s.disableKeyboardControl) s.disableKeyboardControl();\n }\n if (s.params.mousewheelControl) {\n if (s.disableMousewheelControl) s.disableMousewheelControl();\n }\n // Disable a11y\n if (s.params.a11y && s.a11y) s.a11y.destroy();\n // Delete history popstate\n if (s.params.history && !s.params.replaceState) {\n window.removeEventListener('popstate', s.history.setHistoryPopState);\n }\n if (s.params.hashnav && s.hashnav) {\n s.hashnav.destroy();\n }\n // Destroy callback\n s.emit('onDestroy');\n // Delete instance\n if (deleteInstance !== false) s = null;\n };\n \n s.init();\n \n\n \n // Return swiper instance\n return s;\n };\n \n\n /*==================================================\n Prototype\n ====================================================*/\n Swiper.prototype = {\n isSafari: (function () {\n var ua = window.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n })(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n isArray: function (arr) {\n return Object.prototype.toString.apply(arr) === '[object Array]';\n },\n /*==================================================\n Browser\n ====================================================*/\n browser: {\n ie: window.navigator.pointerEnabled || window.navigator.msPointerEnabled,\n ieTouch: (window.navigator.msPointerEnabled && window.navigator.msMaxTouchPoints > 1) || (window.navigator.pointerEnabled && window.navigator.maxTouchPoints > 1),\n lteIE9: (function() {\n // create temporary DIV\n var div = document.createElement('div');\n // add content to tmp DIV which is wrapped into the IE HTML conditional statement\n div.innerHTML = '';\n // return true / false value based on what will browser render\n return div.getElementsByTagName('i').length === 1;\n })()\n },\n /*==================================================\n Devices\n ====================================================*/\n device: (function () {\n var ua = window.navigator.userAgent;\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/);\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n var iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n return {\n ios: ipad || iphone || ipod,\n android: android\n };\n })(),\n /*==================================================\n Feature Detection\n ====================================================*/\n support: {\n touch : (window.Modernizr && Modernizr.touch === true) || (function () {\n return !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch);\n })(),\n \n transforms3d : (window.Modernizr && Modernizr.csstransforms3d === true) || (function () {\n var div = document.createElement('div').style;\n return ('webkitPerspective' in div || 'MozPerspective' in div || 'OPerspective' in div || 'MsPerspective' in div || 'perspective' in div);\n })(),\n \n flexbox: (function () {\n var div = document.createElement('div').style;\n var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' ');\n for (var i = 0; i < styles.length; i++) {\n if (styles[i] in div) return true;\n }\n })(),\n \n observer: (function () {\n return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n })(),\n \n passiveListener: (function () {\n var supportsPassive = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {}\n return supportsPassive;\n })(),\n \n gestures: (function () {\n return 'ongesturestart' in window;\n })()\n },\n /*==================================================\n Plugins\n ====================================================*/\n plugins: {}\n };\n \n\n /*===========================\n Dom7 Library\n ===========================*/\n var Dom7 = (function () {\n var Dom7 = function (arr) {\n var _this = this, i = 0;\n // Create array-like object\n for (i = 0; i < arr.length; i++) {\n _this[i] = arr[i];\n }\n _this.length = arr.length;\n // Return collection with methods\n return this;\n };\n var $ = function (selector, context) {\n var arr = [], i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n var els, tempParent, html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n var toCreate = 'div';\n if (html.indexOf(':~]/)) {\n // Pure ID selector\n els = [document.getElementById(selector.split('#')[1])];\n }\n else {\n // Other selectors\n els = (context || document).querySelectorAll(selector);\n }\n for (i = 0; i < els.length; i++) {\n if (els[i]) arr.push(els[i]);\n }\n }\n }\n // Node/element\n else if (selector.nodeType || selector === window || selector === document) {\n arr.push(selector);\n }\n //Array of elements or instance of Dom\n else if (selector.length > 0 && selector[0].nodeType) {\n for (i = 0; i < selector.length; i++) {\n arr.push(selector[i]);\n }\n }\n }\n return new Dom7(arr);\n };\n Dom7.prototype = {\n // Classes and attriutes\n addClass: function (className) {\n if (typeof className === 'undefined') {\n return this;\n }\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i++) {\n for (var j = 0; j < this.length; j++) {\n this[j].classList.add(classes[i]);\n }\n }\n return this;\n },\n removeClass: function (className) {\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i++) {\n for (var j = 0; j < this.length; j++) {\n this[j].classList.remove(classes[i]);\n }\n }\n return this;\n },\n hasClass: function (className) {\n if (!this[0]) return false;\n else return this[0].classList.contains(className);\n },\n toggleClass: function (className) {\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i++) {\n for (var j = 0; j < this.length; j++) {\n this[j].classList.toggle(classes[i]);\n }\n }\n return this;\n },\n attr: function (attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n else return undefined;\n }\n else {\n // Set attrs\n for (var i = 0; i < this.length; i++) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n }\n else {\n // Object\n for (var attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n }\n },\n removeAttr: function (attr) {\n for (var i = 0; i < this.length; i++) {\n this[i].removeAttribute(attr);\n }\n return this;\n },\n data: function (key, value) {\n if (typeof value === 'undefined') {\n // Get value\n if (this[0]) {\n var dataKey = this[0].getAttribute('data-' + key);\n if (dataKey) return dataKey;\n else if (this[0].dom7ElementDataStorage && (key in this[0].dom7ElementDataStorage)) return this[0].dom7ElementDataStorage[key];\n else return undefined;\n }\n else return undefined;\n }\n else {\n // Set value\n for (var i = 0; i < this.length; i++) {\n var el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n }\n },\n // Transforms\n transform : function (transform) {\n for (var i = 0; i < this.length; i++) {\n var elStyle = this[i].style;\n elStyle.webkitTransform = elStyle.MsTransform = elStyle.msTransform = elStyle.MozTransform = elStyle.OTransform = elStyle.transform = transform;\n }\n return this;\n },\n transition: function (duration) {\n if (typeof duration !== 'string') {\n duration = duration + 'ms';\n }\n for (var i = 0; i < this.length; i++) {\n var elStyle = this[i].style;\n elStyle.webkitTransitionDuration = elStyle.MsTransitionDuration = elStyle.msTransitionDuration = elStyle.MozTransitionDuration = elStyle.OTransitionDuration = elStyle.transitionDuration = duration;\n }\n return this;\n },\n //Events\n on: function (eventName, targetSelector, listener, capture) {\n function handleLiveEvent(e) {\n var target = e.target;\n if ($(target).is(targetSelector)) listener.call(target, e);\n else {\n var parents = $(target).parents();\n for (var k = 0; k < parents.length; k++) {\n if ($(parents[k]).is(targetSelector)) listener.call(parents[k], e);\n }\n }\n }\n var events = eventName.split(' ');\n var i, j;\n for (i = 0; i < this.length; i++) {\n if (typeof targetSelector === 'function' || targetSelector === false) {\n // Usual events\n if (typeof targetSelector === 'function') {\n listener = arguments[1];\n capture = arguments[2] || false;\n }\n for (j = 0; j < events.length; j++) {\n this[i].addEventListener(events[j], listener, capture);\n }\n }\n else {\n //Live events\n for (j = 0; j < events.length; j++) {\n if (!this[i].dom7LiveListeners) this[i].dom7LiveListeners = [];\n this[i].dom7LiveListeners.push({listener: listener, liveListener: handleLiveEvent});\n this[i].addEventListener(events[j], handleLiveEvent, capture);\n }\n }\n }\n \n return this;\n },\n off: function (eventName, targetSelector, listener, capture) {\n var events = eventName.split(' ');\n for (var i = 0; i < events.length; i++) {\n for (var j = 0; j < this.length; j++) {\n if (typeof targetSelector === 'function' || targetSelector === false) {\n // Usual events\n if (typeof targetSelector === 'function') {\n listener = arguments[1];\n capture = arguments[2] || false;\n }\n this[j].removeEventListener(events[i], listener, capture);\n }\n else {\n // Live event\n if (this[j].dom7LiveListeners) {\n for (var k = 0; k < this[j].dom7LiveListeners.length; k++) {\n if (this[j].dom7LiveListeners[k].listener === listener) {\n this[j].removeEventListener(events[i], this[j].dom7LiveListeners[k].liveListener, capture);\n }\n }\n }\n }\n }\n }\n return this;\n },\n once: function (eventName, targetSelector, listener, capture) {\n var dom = this;\n if (typeof targetSelector === 'function') {\n targetSelector = false;\n listener = arguments[1];\n capture = arguments[2];\n }\n function proxy(e) {\n listener(e);\n dom.off(eventName, targetSelector, proxy, capture);\n }\n dom.on(eventName, targetSelector, proxy, capture);\n },\n trigger: function (eventName, eventData) {\n for (var i = 0; i < this.length; i++) {\n var evt;\n try {\n evt = new window.CustomEvent(eventName, {detail: eventData, bubbles: true, cancelable: true});\n }\n catch (e) {\n evt = document.createEvent('Event');\n evt.initEvent(eventName, true, true);\n evt.detail = eventData;\n }\n this[i].dispatchEvent(evt);\n }\n return this;\n },\n transitionEnd: function (callback) {\n var events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'],\n i, j, dom = this;\n function fireCallBack(e) {\n /*jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i++) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i++) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n },\n // Sizing/Styles\n width: function () {\n if (this[0] === window) {\n return window.innerWidth;\n }\n else {\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n else {\n return null;\n }\n }\n },\n outerWidth: function (includeMargins) {\n if (this.length > 0) {\n if (includeMargins)\n return this[0].offsetWidth + parseFloat(this.css('margin-right')) + parseFloat(this.css('margin-left'));\n else\n return this[0].offsetWidth;\n }\n else return null;\n },\n height: function () {\n if (this[0] === window) {\n return window.innerHeight;\n }\n else {\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n else {\n return null;\n }\n }\n },\n outerHeight: function (includeMargins) {\n if (this.length > 0) {\n if (includeMargins)\n return this[0].offsetHeight + parseFloat(this.css('margin-top')) + parseFloat(this.css('margin-bottom'));\n else\n return this[0].offsetHeight;\n }\n else return null;\n },\n offset: function () {\n if (this.length > 0) {\n var el = this[0];\n var box = el.getBoundingClientRect();\n var body = document.body;\n var clientTop = el.clientTop || body.clientTop || 0;\n var clientLeft = el.clientLeft || body.clientLeft || 0;\n var scrollTop = window.pageYOffset || el.scrollTop;\n var scrollLeft = window.pageXOffset || el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n else {\n return null;\n }\n },\n css: function (props, value) {\n var i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n }\n else {\n for (i = 0; i < this.length; i++) {\n for (var prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n for (i = 0; i < this.length; i++) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n },\n \n //Dom manipulation\n each: function (callback) {\n for (var i = 0; i < this.length; i++) {\n callback.call(this[i], i, this[i]);\n }\n return this;\n },\n html: function (html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n else {\n for (var i = 0; i < this.length; i++) {\n this[i].innerHTML = html;\n }\n return this;\n }\n },\n text: function (text) {\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n else return null;\n }\n else {\n for (var i = 0; i < this.length; i++) {\n this[i].textContent = text;\n }\n return this;\n }\n },\n is: function (selector) {\n if (!this[0]) return false;\n var compareWith, i;\n if (typeof selector === 'string') {\n var el = this[0];\n if (el === document) return selector === document;\n if (el === window) return selector === window;\n \n if (el.matches) return el.matches(selector);\n else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n else if (el.mozMatchesSelector) return el.mozMatchesSelector(selector);\n else if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n else {\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i++) {\n if (compareWith[i] === this[0]) return true;\n }\n return false;\n }\n }\n else if (selector === document) return this[0] === document;\n else if (selector === window) return this[0] === window;\n else {\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i++) {\n if (compareWith[i] === this[0]) return true;\n }\n return false;\n }\n return false;\n }\n \n },\n index: function () {\n if (this[0]) {\n var child = this[0];\n var i = 0;\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i++;\n }\n return i;\n }\n else return undefined;\n },\n eq: function (index) {\n if (typeof index === 'undefined') return this;\n var length = this.length;\n var returnIndex;\n if (index > length - 1) {\n return new Dom7([]);\n }\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0) return new Dom7([]);\n else return new Dom7([this[returnIndex]]);\n }\n return new Dom7([this[index]]);\n },\n append: function (newChild) {\n var i, j;\n for (i = 0; i < this.length; i++) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n }\n else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j++) {\n this[i].appendChild(newChild[j]);\n }\n }\n else {\n this[i].appendChild(newChild);\n }\n }\n return this;\n },\n prepend: function (newChild) {\n var i, j;\n for (i = 0; i < this.length; i++) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j--) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n // this[i].insertAdjacentHTML('afterbegin', newChild);\n }\n else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j++) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n }\n else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n },\n insertBefore: function (selector) {\n var before = $(selector);\n for (var i = 0; i < this.length; i++) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n }\n else if (before.length > 1) {\n for (var j = 0; j < before.length; j++) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n },\n insertAfter: function (selector) {\n var after = $(selector);\n for (var i = 0; i < this.length; i++) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n }\n else if (after.length > 1) {\n for (var j = 0; j < after.length; j++) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n },\n next: function (selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) return new Dom7([this[0].nextElementSibling]);\n else return new Dom7([]);\n }\n else {\n if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);\n else return new Dom7([]);\n }\n }\n else return new Dom7([]);\n },\n nextAll: function (selector) {\n var nextEls = [];\n var el = this[0];\n if (!el) return new Dom7([]);\n while (el.nextElementSibling) {\n var next = el.nextElementSibling;\n if (selector) {\n if($(next).is(selector)) nextEls.push(next);\n }\n else nextEls.push(next);\n el = next;\n }\n return new Dom7(nextEls);\n },\n prev: function (selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].previousElementSibling && $(this[0].previousElementSibling).is(selector)) return new Dom7([this[0].previousElementSibling]);\n else return new Dom7([]);\n }\n else {\n if (this[0].previousElementSibling) return new Dom7([this[0].previousElementSibling]);\n else return new Dom7([]);\n }\n }\n else return new Dom7([]);\n },\n prevAll: function (selector) {\n var prevEls = [];\n var el = this[0];\n if (!el) return new Dom7([]);\n while (el.previousElementSibling) {\n var prev = el.previousElementSibling;\n if (selector) {\n if($(prev).is(selector)) prevEls.push(prev);\n }\n else prevEls.push(prev);\n el = prev;\n }\n return new Dom7(prevEls);\n },\n parent: function (selector) {\n var parents = [];\n for (var i = 0; i < this.length; i++) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n }\n else {\n parents.push(this[i].parentNode);\n }\n }\n return $($.unique(parents));\n },\n parents: function (selector) {\n var parents = [];\n for (var i = 0; i < this.length; i++) {\n var parent = this[i].parentNode;\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n }\n else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $($.unique(parents));\n },\n find : function (selector) {\n var foundElements = [];\n for (var i = 0; i < this.length; i++) {\n var found = this[i].querySelectorAll(selector);\n for (var j = 0; j < found.length; j++) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n },\n children: function (selector) {\n var children = [];\n for (var i = 0; i < this.length; i++) {\n var childNodes = this[i].childNodes;\n \n for (var j = 0; j < childNodes.length; j++) {\n if (!selector) {\n if (childNodes[j].nodeType === 1) children.push(childNodes[j]);\n }\n else {\n if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) children.push(childNodes[j]);\n }\n }\n }\n return new Dom7($.unique(children));\n },\n remove: function () {\n for (var i = 0; i < this.length; i++) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n return this;\n },\n add: function () {\n var dom = this;\n var i, j;\n for (i = 0; i < arguments.length; i++) {\n var toAdd = $(arguments[i]);\n for (j = 0; j < toAdd.length; j++) {\n dom[dom.length] = toAdd[j];\n dom.length++;\n }\n }\n return dom;\n }\n };\n $.fn = Dom7.prototype;\n $.unique = function (arr) {\n var unique = [];\n for (var i = 0; i < arr.length; i++) {\n if (unique.indexOf(arr[i]) === -1) unique.push(arr[i]);\n }\n return unique;\n };\n \n return $;\n })();\n \n\n /*===========================\n Get Dom libraries\n ===========================*/\n var swiperDomPlugins = ['jQuery', 'Zepto', 'Dom7'];\n for (var i = 0; i < swiperDomPlugins.length; i++) {\n \tif (window[swiperDomPlugins[i]]) {\n \t\taddLibraryPlugin(window[swiperDomPlugins[i]]);\n \t}\n }\n // Required DOM Plugins\n var domLib;\n if (typeof Dom7 === 'undefined') {\n \tdomLib = window.Dom7 || window.Zepto || window.jQuery;\n }\n else {\n \tdomLib = Dom7;\n }\n\n /*===========================\n Add .swiper plugin from Dom libraries\n ===========================*/\n function addLibraryPlugin(lib) {\n lib.fn.swiper = function (params) {\n var firstInstance;\n lib(this).each(function () {\n var s = new Swiper(this, params);\n if (!firstInstance) firstInstance = s;\n });\n return firstInstance;\n };\n }\n \n if (domLib) {\n if (!('transitionEnd' in domLib.fn)) {\n domLib.fn.transitionEnd = function (callback) {\n var events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'],\n i, j, dom = this;\n function fireCallBack(e) {\n /*jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i++) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i++) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n };\n }\n if (!('transform' in domLib.fn)) {\n domLib.fn.transform = function (transform) {\n for (var i = 0; i < this.length; i++) {\n var elStyle = this[i].style;\n elStyle.webkitTransform = elStyle.MsTransform = elStyle.msTransform = elStyle.MozTransform = elStyle.OTransform = elStyle.transform = transform;\n }\n return this;\n };\n }\n if (!('transition' in domLib.fn)) {\n domLib.fn.transition = function (duration) {\n if (typeof duration !== 'string') {\n duration = duration + 'ms';\n }\n for (var i = 0; i < this.length; i++) {\n var elStyle = this[i].style;\n elStyle.webkitTransitionDuration = elStyle.MsTransitionDuration = elStyle.msTransitionDuration = elStyle.MozTransitionDuration = elStyle.OTransitionDuration = elStyle.transitionDuration = duration;\n }\n return this;\n };\n }\n if (!('outerWidth' in domLib.fn)) {\n domLib.fn.outerWidth = function (includeMargins) {\n if (this.length > 0) {\n if (includeMargins)\n return this[0].offsetWidth + parseFloat(this.css('margin-right')) + parseFloat(this.css('margin-left'));\n else\n return this[0].offsetWidth;\n }\n else return null;\n };\n }\n }\n\n window.Swiper = Swiper;\n})();\n/*===========================\nSwiper AMD Export\n===========================*/\nif (typeof(module) !== 'undefined')\n{\n module.exports = window.Swiper;\n}\nelse if (typeof define === 'function' && define.amd) {\n define([], function () {\n 'use strict';\n return window.Swiper;\n });\n}\n//# sourceMappingURL=maps/swiper.js.map\n\n/*\n* This content is licensed according to the W3C Software License at\n* https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n*/\nfunction TabPanelActionHandler(tablist) {\n var tabs;\n var panels;\n\n generateArrays();\n\n function generateArrays () {\n tabs = tablist.querySelectorAll('[role=\"tab\"]');\n panels = tablist.querySelectorAll('[role=\"tabpanel\"]');\n };\n\n // For easy reference\n var keys = {\n end: 35,\n home: 36,\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n delete: 46,\n enter: 13,\n space: 32\n };\n\n // Add or subtract depending on key pressed\n var direction = {\n 37: -1,\n 38: -1,\n 39: 1,\n 40: 1\n };\n\n // Bind listeners\n for (i = 0; i < tabs.length; ++i) {\n addListeners(i);\n };\n\n function addListeners (index) {\n tabs[index].addEventListener('click', clickEventListener);\n tabs[index].addEventListener('keydown', keydownEventListener);\n tabs[index].addEventListener('keyup', keyupEventListener);\n\n // Build an array with all tabs (';\n }\n bulletsElm.innerHTML = bulletHTML;\n }\n }\n\n if(glide_controls) \n ((currentPerView && (currentPerView < totalItems || (currentPerView == totalItems && loadMoreBtn))) || isHomepageColumnSlider) ? glide_controls.classList.add(\"show\") : glide_controls.classList.remove(\"show\");\n\n // if(elm.dataset.glidename.indexOf(\"fcb\") == 0 && totalItems > 3) {\n if(containerW >= GT.wWidth - 50 && containerW > 1024) {\n let containerElm = (elm.closest(\".container\") || elm.closest(\".container-fluid\"));\n if(containerElm)\n containerElm.classList.add(currentPerView && currentPerView <= totalItems ? \"wideGlide\" : \"tinyWideGlide\");\n }\n\n if(elm.dataset.perview == 1)\n gap = 0;\n else if(elm.dataset.gap)\n gap = elm.dataset.gap;\n \n if((currentPerView && (currentPerView < totalItems || (currentPerView == totalItems && loadMoreBtn))) || isHomepageColumnSlider) {\n\n if(isHomepageColumnSlider)\n currentPerView = 4;\n\n if(GT.wWidth <= 768) {\n // peek = 0;\n elm.dataset.focusat = 0;\n }\n\n if(!currentGlide) {\n currentGlide = new Glide(elm, {\n startAt: elm.dataset.startAt ? elm.dataset.startAt : 0,\n bound: true,\n rewind: false,\n perView: currentPerView,\n direction: document.dir == 'rtl' ? 'rtl' : 'ltr',\n gap: gap,\n focusAt: elm.dataset.focusat ? elm.dataset.focusat : 0,\n type: elm.dataset.type ? elm.dataset.type : 'carousel',\n breakpoints: breakpoints,\n peek: { before: 0, after: peek },\n keyboard: false,\n animationDuration: isHomepageColumnSlider ? 600 : 400,\n autoplay: (isHomepageColumnSlider && elm.dataset.rotatetime && !GT.isMobileCached && !GT.isScreenReader) ? elm.dataset.rotatetime * 1000 : false,\n perTouch: (loadMoreBtn || elm.dataset.sync) ? 1 : null\n });\n\n function setTabable(isMove){\n Array.prototype.slice.call(document.querySelectorAll(\".glide\")).forEach(function(elm) {\n let glideItem = GT.glides[elm.dataset.glidename];\n if(glideItem && !elm.dataset.ishomepagecolumnslider) {\n let countGlideItemElm = -1;\n\n if(!isMove) {\n elm.querySelector(\".glide__slides\").setAttribute(\"role\", \"none\");\n }\n\n Array.prototype.slice.call(elm.querySelectorAll(\".glide__slide\")).forEach(function(item, index)\n {\n let aElms = Array.prototype.slice.call(item.querySelectorAll(\"a, button, [role='button'], [role='link']\"));\n if(item.classList.contains(\"glide__slide--active\")) {\n countGlideItemElm = 0;\n }\n\n if(!isMove) {\n if(!item.classList.contains(\"glide__slide--clone\")) {\n item.setAttribute(\"role\", \"group\");\n // item.setAttribute(\"aria-roledescription\", (parseInt(item.dataset.index) + 1));\n item.setAttribute(\"aria-label\", \"slide \" + (parseInt(item.dataset.index) + 1));\n }\n }\n\n if(countGlideItemElm >= 0 && !item.classList.contains(\"glide__slide--clone\") && glideItem.settings.perView > countGlideItemElm) {\n aElms.forEach(function(aElm, aIdx){\n aElm.setAttribute(\"tabindex\", 0);\n })\n \n item.setAttribute(\"tabindex\", 0);\n if(isMove && countGlideItemElm == 0 && glideItem.isMoveByTabEvt) {\n glideItem.isMoveByTabEvt = false;\n item.focus();\n }\n countGlideItemElm++;\n } else {\n item.setAttribute(\"tabindex\", -1);\n aElms.forEach(function(aElm, aIdx){\n aElm.setAttribute(\"tabindex\", -1);\n })\n }\n })\n\n let currentBulletsCtrl = elm.querySelector(\".glide__bullets.is-parrent\") || elm.querySelector(\".glide__bullets\");\n if(currentBulletsCtrl) {\n let currentBulletPos = Math.floor(glideItem.index / glideItem.settings.perView),\n bulletElms = currentBulletsCtrl.querySelectorAll(\"button\"),\n isEnd = glideItem.index + glideItem.settings.perView >= glideItem.selector.dataset.totalItems;\n bulletElmsLength = bulletElms.length,\n glideType = glideItem.settings.type;\n \n Array.prototype.slice.call(bulletElms).forEach(function(bulletElm, bulletElmIndex){ \n bulletElm.classList.remove(\"glide__bullet--active\");\n let isActiveBullet = (isEnd && bulletElmIndex == bulletElmsLength - 1) || (!isEnd && currentBulletPos == bulletElmIndex);\n if(glideType == \"carousel\")\n isActiveBullet = currentBulletPos == bulletElmIndex\n \n if(isActiveBullet)\n bulletElm.classList.add(\"glide__bullet--active\");\n\n if(isActiveBullet || (!isMove && bulletElmIndex == 0))\n bulletElm.setAttribute(\"aria-current\", \"true\");\n else\n bulletElm.setAttribute(\"aria-current\", \"false\");\n \n if(!isMove) {\n let bulletLabel = currentBulletsCtrl.dataset.label || \"\";\n bulletLabel = bulletLabel.replace(\"{0}\", bulletElmIndex + 1);\n bulletLabel = bulletLabel.replace(\"{1}\", bulletElmsLength);\n if(!bulletLabel) bulletLabel = \"Slide\";\n bulletElm.setAttribute(\"title\", bulletLabel);\n }\n })\n\n }\n }\n })\n }\n \n currentGlide.on('swipe.start', function(ev){\n ev.instance.isMoveByUser = true;\n })\n \n currentGlide.on(\"run.after\", function(e){\n\n let glideItem = e.instance,\n currentSelector = glideItem.selector,\n willTriggerLoadMore = false,\n loadMoreContainer = currentSelector.parentElement.nextElementSibling,\n currentLoadmoreBtn = loadMoreContainer ? loadMoreContainer.querySelector(\".\" + currentSelector.dataset.loadmorebtn) : null;\n \n setTabable(true);\n\n Array.prototype.slice.call(currentSelector.querySelectorAll(\".glide__slide\")).forEach(function(item, index){\n if(glideItem.index == item.dataset.index) {\n \n if(!item.classList.contains(\"glide__slide--clone\")) {\n if(currentSelector.dataset.totalItems - (GT.wWidth > 768 ? 2 : 1) == parseInt(item.dataset.index) + 1)\n willTriggerLoadMore = true;\n }\n \n } \n })\n\n\n if(willTriggerLoadMore && currentLoadmoreBtn && !currentLoadmoreBtn.classList.contains(\"hidden\")) {\n currentSelector.classList.add(\"loading\");\n currentSelector.dataset.startAt = glideItem.index;\n let glideTrackElm = currentSelector.querySelector(\".glide__track\");\n glideTrackElm.style.height = glideTrackElm.offsetHeight + \"px\";\n glideItem.disable();\n currentLoadmoreBtn.click();\n }\n\n if(currentSelector.dataset.disabled == \"true\")\n setTimeout(function(){\n glideItem.disable();\n }, 50)\n\n Object.keys(GT.glides).forEach(key => {\n GT.glides[key].isMoveByUser = false;\n })\n glideItem.isMoving = false;\n });\n\n currentGlide.on('run', function(ev){\n let glideItem = ev.instance;\n if(glideItem) {\n if(glideItem.isMoveByUser && !glideItem.isMoving)\n sync2Slider(glideItem, ev.move.direction, ev.move.steps);\n \n glideItem.isMoving = true;\n \n let currentSelector = glideItem.selector,\n parentBlock = currentSelector.dataset.ishomepagecolumnslider == \"true\" ? currentSelector.closest(\".columns-carousel\") : null;\n\n Array.prototype.slice.call(currentSelector.querySelectorAll(\".glide__slide\")).forEach(function(item, index){\n if(glideItem.index == item.dataset.index) {\n item.classList.add(\"glide__slide--custom-active\");\n \n if(currentSelector.dataset.ishomepagecolumnslider == \"true\" && parentBlock) {\n Array.prototype.slice.call(parentBlock.querySelectorAll(\".columns-carousel__hero .hero-item\")).forEach(function(bgItem, bgItemIndex){\n if(bgItemIndex == item.dataset.index)\n bgItem.classList.add(\"active\");\n else\n bgItem.classList.remove(\"active\");\n })\n }\n } else\n item.classList.remove(\"glide__slide--custom-active\");\n })\n }\n });\n GT.glides[elm.dataset.glidename] = currentGlide;\n\n currentGlide.on(['mount.after'], function(e) {\n let glideItem = e.instance;\n if(glideItem) {\n let currentSelector = glideItem.selector,\n parentBlock = currentSelector.closest(\".columns-carousel\");\n if(currentSelector.dataset.ishomepagecolumnslider == \"true\") {\n\n Array.prototype.slice.call(currentSelector.querySelectorAll(\".glide__slide\")).forEach(function(glideElmItem, glideElmIndex){\n let aElm = glideElmItem.querySelector(\"a\");\n \n if(!glideElmItem.classList.contains(\"glide__slide--clone\")) {\n aElm.setAttribute(\"tabindex\", 0);\n if(glideElmItem.classList.contains(\"glide__slide--active\"))\n glideElmItem.classList.add(\"glide__slide--custom-active\");\n aElm.onfocus = function(e){\n Array.prototype.slice.call(document.querySelectorAll(\".columns-carousel__main .glide__slide--custom-active\")).forEach(function(activatingElm){\n activatingElm.classList.remove(\"glide__slide--custom-active\");\n })\n setActiveBg(e.currentTarget.closest(\".columns-carousel\"), e.currentTarget.parentElement.dataset.index);\n }\n } else {\n aElm.setAttribute(\"tabindex\", -1);\n }\n glideElmItem.addEventListener(\"mouseenter\", function(e){\n setActiveBg(e.currentTarget.closest(\".columns-carousel\"), e.currentTarget.dataset.index);\n Array.prototype.slice.call(document.querySelectorAll(\".columns-carousel__main .glide__slide--custom-active\")).forEach(function(activatingElm){\n activatingElm.classList.remove(\"glide__slide--custom-active\");\n })\n e.currentTarget.classList.add(\"glide__slide--custom-active\");\n })\n })\n\n parentBlock.addEventListener(\"keydown\", function(e){\n let keycode = e.keyCode || e.which;\n if(!e.shiftKey && keycode == 9)\n Array.prototype.slice.call(currentSelector.querySelectorAll(\".glide__slide\")).forEach(function(glideElmItem, glideElmIndex){ \n if(!glideElmItem.classList.contains(\"glide__slide--clone\") && glideElmIndex == 0) {\n glideElmItem.querySelector(\"a\").focus();\n }\n }) \n })\n\n parentBlock.onfocus = function(e){\n let glideItemWillPause = GT.glides[e.currentTarget.closest(\".columns-carousel__main\").querySelector(\".glide\").dataset.glidename];\n glideItemWillPause.go(\"<<\");\n setTimeout(function(){\n glideItemWillPause.pause();\n }, glideItemWillPause.settings.animationDuration)\n }\n\n if(GT.GTColumnSlider)\n GT.GTColumnSlider();\n } else {\n setTabable();\n \n let loadMoreContainer = currentSelector.parentElement.nextElementSibling,\n currentLoadmoreBtn = loadMoreContainer ? loadMoreContainer.querySelector(\".\" + currentSelector.dataset.loadmorebtn) : null;\n \n if(currentSelector.dataset.totalItems == glideItem.settings.perView && GT.wWidth > 768 && currentLoadmoreBtn && !currentLoadmoreBtn.classList.contains(\"hidden\")) {\n glideItem.disable();\n currentSelector.classList.add(\"loading\");\n let glideTrackElm = currentSelector.querySelector(\".glide__track\");\n glideTrackElm.style.height = glideTrackElm.offsetHeight + \"px\";\n setTimeout(function(){\n currentLoadmoreBtn.click();\n })\n }\n\n\n let parentGlideSelector = currentSelector.closest(\".glide\");\n if(parentGlideSelector) {\n let currentVisitedElm;\n\n currentSelector.addEventListener(\"mousemove\", function(e){\n let parentGlide = GT.glides[parentGlideSelector.dataset.glidename],\n currentGlideSelector = e.target.closest(\".glide\"),\n currentGlideName = currentGlideSelector.dataset.glidename,\n currentTotalItems = currentGlideSelector.dataset.totalItems;\n\n if(currentVisitedElm != currentGlideName && e.which == 0 && parentGlide) {\n if(currentGlideName != parentGlideSelector.dataset.glidename && currentTotalItems > 1) {\n currentVisitedElm = currentGlideName;\n parentGlide.disable();\n parentGlideSelector.dataset.disabled = true;\n } else {\n currentVisitedElm = parentGlideSelector.dataset.glidename;\n parentGlide.enable();\n parentGlideSelector.dataset.disabled = false;\n }\n }\n \n })\n }\n }\n }\n })\n\n let bulletItems = Array.prototype.slice.call(elm.querySelectorAll(\".glide__bullet\"));\n bulletItems.forEach(function(bulletItem){\n bulletItem.addEventListener(\"click\", function(e){\n let glideItem = GT.glides[this.parentElement.closest(\".glide\").dataset.glidename];\n if(!e.pointerType)\n glideItem.isMoveByTabEvt = true;\n glideItem.go(\"=\" + this.dataset.go);\n sync2Slider(glideItem, \"=\", this.dataset.go);\n })\n })\n\n currentGlide.mount();\n //Fix issue: move 2 articels per click in safari\n let prevElm = elm.querySelector(\".slider__prev\"),\n nextElm = elm.querySelector(\".slider__next\");\n \n if(prevElm && nextElm) {\n prevElm.dataset.glideCtrlName = elm.dataset.glidename;\n nextElm.dataset.glideCtrlName = elm.dataset.glidename;\n prevElm.onclick = function(e){\n let glideItem = GT.glides[this.dataset.glideCtrlName],\n glideItemSelector = glideItem.selector,\n glideItemChildSelectors = glideItemSelector.querySelectorAll(\".glide\"),\n glideItemChildSelector,\n childGlide;\n \n if(glideItemChildSelectors.length)\n glideItemChildSelector = glideItemChildSelectors[glideItem.index];\n\n if(glideItemChildSelector)\n childGlide = GT.glides[glideItemChildSelector.dataset.glidename];\n\n if(e.buttons)\n glideItem.isMoveByTabEvt = true;\n \n if(childGlide && childGlide.index > 0)\n childGlide.go(\"<\");\n else\n glideItem.go(\"<\");\n sync2Slider(glideItem, \"<\", 1);\n }\n nextElm.onclick = function(e){\n let glideItem = GT.glides[this.dataset.glideCtrlName],\n glideItemSelector = glideItem.selector,\n glideItemChildSelectors = glideItemSelector.querySelectorAll(\".glide\"),\n glideItemChildSelector,\n childGlide;\n \n if(glideItemChildSelectors.length)\n glideItemChildSelector = glideItemChildSelectors[glideItem.index];\n\n if(glideItemChildSelector)\n childGlide = GT.glides[glideItemChildSelector.dataset.glidename];\n\n if(e.buttons)\n glideItem.isMoveByTabEvt = true;\n \n if(childGlide && childGlide.index < glideItemChildSelector.dataset.totalItems - 1)\n childGlide.go(\">\");\n else\n ((glideItem._i < glideItemSelector.dataset.totalItems - 1 && glideItemSelector.dataset.type == \"slider\") || glideItemSelector.dataset.type != \"slider\") && glideItem.go(\">\");\n\n sync2Slider(glideItem, \">\", 1);\n }\n }\n\n // GT.glides.push(currentGlide);\n } else {\n currentGlide.perView = totalItems;\n currentGlide.breakpoints = breakpoints;\n currentGlide.update();\n currentGlide.enable();\n GT.glides[elm.dataset.glidename] = currentGlide;\n }\n } else {\n glideSlides.forEach(function(glideItem, glideItemIndex){\n glideItem.setAttribute(\"tabindex\", 0);\n })\n }\n\n // elm.dataset.renderedGlide = true;\n // if(!(isHomepageColumnSlider && GT.isMobileCached))\n elm.classList.add(\"glide--show-item\");\n //wait for Glide initialization completed fully\n // setTimeout(function(){\n // elm.dataset.renderedGlide = true;\n // elm.classList.add(\"showitem\");\n // }, 200)\n\n if(elm.dataset.clampname)\n setTimeout(function(){\n GT.clampText(elm.dataset.clampname, true);\n }, 750);\n }\n\n if(element)\n doInitGlide(element);\n else\n Array.prototype.slice.call(document.querySelectorAll(\".glide\")).forEach(function(elm) {\n doInitGlide(elm);\n })\n\n Array.prototype.slice.call(document.querySelectorAll(\".glide-custom-control\")).forEach(function(controlContainer){\n controlContainer.querySelector(\".slider__prev\").onclick = function(e){\n let glideItem = GT.glides[e.currentTarget.parentElement.dataset.glideCtrlName];\n if(e.buttons)\n glideItem.isMoveByTabEvt = true;\n glideItem.go(\"<\");\n sync2Slider(glideItem, \"<\", 1);\n }\n controlContainer.querySelector(\".slider__next\").onclick = function(e){\n let glideItem = GT.glides[e.currentTarget.parentElement.dataset.glideCtrlName];\n if(e.buttons)\n glideItem.isMoveByTabEvt = true;\n glideItem.go(\">\");\n sync2Slider(glideItem, \">\", 1);\n }\n })\n\n function sync2Slider(slider, direction, steps){\n let targetSlider = GT.glides[slider.selector.dataset.sync];\n if(!targetSlider)\n return;\n\n let nextIndex = slider.index;\n let nextSlide = slider.selector.querySelector('.glide__slide:not(.glide__slide--clone)[data-index=\"'+ nextIndex +'\"]');\n let currentIdx = nextSlide ? nextSlide.dataset.parent : -100;\n if(currentIdx == -100) {\n currentIdx = nextIndex;\n }\n\n if(typeof currentIdx == \"undefined\") {\n targetGlide__slide = targetSlider.selector.querySelector('.glide__slide:not(.glide__slide--clone)[data-parent=\"'+ nextIndex +'\"]');\n if(targetGlide__slide) {\n currentIdx = targetGlide__slide.dataset.index;\n if(direction == \"=\")\n targetSlider.go(\"=\" + currentIdx);\n else {\n let steps = currentIdx - targetSlider.index;\n targetSlider.go(direction + steps);\n }\n }\n } else if(targetSlider.index != currentIdx)\n targetSlider.go(direction + (direction == \"=\" ? currentIdx : \"\"));\n }\n}\n\nGT.reinitializeGlide = function(){\n Object.keys(GT.glides).forEach(function(key){\n GT.glides[key].destroy();\n })\n \n Array.prototype.slice.call(document.querySelectorAll(\".glide\")).forEach(function(elm) {\n // elm.dataset.renderedGlide = false;\n elm.classList.remove(\"glide--show-item\");\n let containerElm = (elm.closest(\".container\") || elm.closest(\".container-fluid\"));\n if(containerElm) {\n let elmParentClasses = containerElm.classList;\n elmParentClasses.remove(\"wideGlide\");\n elmParentClasses.remove(\"tinyWideGlide\");\n }\n })\n GT.glides = {};\n GT.Glide();\n}\n\nGT.destroyGlide = function(elm){\n GT.glides[elm.dataset.glidename].destroy();\n \n // elm.dataset.renderedGlide = false;\n elm.classList.remove(\"glide--show-item\");\n let containerElm = (elm.closest(\".container\") || elm.closest(\".container-fluid\"));\n if(containerElm) {\n let elmParentClasses = containerElm.classList;\n elmParentClasses.remove(\"wideGlide\");\n elmParentClasses.remove(\"tinyWideGlide\");\n }\n\n delete GT.glides[elm.dataset.glidename];\n}\n\nGT.domContentLoadedFncList.push(function(){\n LazyEvent(document.querySelectorAll(\".glide\"), GT.Glide, null, null, \"lazy_DOMContentLoadedEvt__GTGlide\");\n});\n\n\nGT.windowResizeFncList[\"resizeEvt__GTGlide\"] = function(){\n //wait for GT.wWidth update new value\n setTimeout(function(){\n GT.reinitializeGlide();\n }, 50)\n}\nGT.glidesV2 = {};\nGT.GlideV2 = function(specificElm){\n function doInitGlide(elm) {\n if(elm.attributes[\"disable-on-desktop\"] && GT.wWidth >= 960)\n return;\n if (elm.attributes[\"disable-on-tablet\"] && GT.wWidth >= 768)\n return;\n \n let glideSlides = Array.prototype.slice.call(elm.querySelectorAll(\":scope > .glide__track > .glide__slides > .glide__slide:not(.glide__slide--clone)\")),\n totalItems = glideSlides.length;\n gap = elm.classList.contains(\"has-shadow\") ? 0 : 32,\n steps = 0,\n currentPerView = 0,\n currentGlide = GT.glidesV2[elm.dataset.glidename],\n breakpoints = {},\n count_breakpoint = 0,\n loadMoreBtn = document.querySelector(\".\" + elm.dataset.loadmorebtn),\n containerW = elm.closest(\".container-fluid\") ? GT.bodyWidth : elm.offsetWidth,\n hasPeek = elm.dataset.haspeek === \"true\" || (elm.dataset.haspeek === \"mobile\" && (GT.bodyWidth < 1300 || containerW >= GT.bodyWidth)),\n bulletSize = GT.wWidth < 960 ? 24 : 28;\n tmp_breakpoints = {\n 3200: {\n perView: 7\n },\n 2999: {\n perView: 6\n },\n 2100: {\n perView: 5\n },\n 1700: {\n perView: 4\n },\n 1200: {\n perView: 3\n },\n 960: {\n perView: 2\n },\n 600: {\n perView: 1\n }\n },\n glide_controls = elm.querySelector(\".glide-controls\");\n \n if(elm.classList.contains(\"ibc-glide__container\"))\n elm.dataset.isIBCD = true;\n\n glideSlides.forEach(function(glideItem, glideItemIndex){\n glideItem.dataset.index = glideItemIndex;\n })\n\n if(containerW < GT.bodyWidth) {\n if(elm.dataset.glidename.indexOf(\"fcb\") != 0 && !elm.dataset.perview)\n tmp_breakpoints = {\n 3200: {\n perView: 3\n },\n 1200: {\n perView: 3\n },\n 960: {\n perView: 2\n },\n 600: {\n perView: 1\n }\n }\n }\n\n if(elm.dataset.steps && GT.isDesktopView())\n steps = elm.dataset.steps;\n\n if(!elm.dataset.itemwidth)\n elm.dataset.itemwidth = 0;\n\n let itemW = parseInt(elm.dataset.itemwidth);\n if(elm.dataset.itemMobileWidth && GT.wWidth <= 960) itemW = parseInt(elm.dataset.itemMobileWidth);\n\n if(!itemW) {\n itemW = GT.wWidth < 960 ? 327 : (containerW >= GT.bodyWidth ? 380 : 390.5);\n }\n \n if(itemW) {\n breakpoints = {};\n currentPerView = Math.floor(containerW / itemW);\n if(elm.dataset.perview && elm.dataset.perview < currentPerView)\n currentPerView = elm.dataset.perview;\n if(GT.wWidth <= 450 && !currentPerView) {\n currentPerView = 1;\n }\n\n let mobilePerview = parseInt(elm.dataset.mobilePerview),\n tabletPerview = parseInt(elm.dataset.tabletPerview);\n \n if(GT.bodyWidth < 450 && mobilePerview > 0) {\n currentPerView = mobilePerview;\n } else if(!GT.isDesktopView() && tabletPerview > 0) {\n currentPerView = tabletPerview;\n }\n\n breakpoints[containerW] = {perView: currentPerView};\n } else {\n Object.keys(tmp_breakpoints).forEach(function(key) {\n let breakpoint = tmp_breakpoints[key];\n if(!currentPerView || breakpoint.perView < currentPerView) {\n breakpoints[key] = breakpoint;\n // Ngoc Nguyen change for calculate item per view\n if(parseInt(key) >= containerW && !currentPerView)\n currentPerView = breakpoint.perView;\n }\n })\n\n\n //Max perview from [View].cshtml\n // Ngoc Nguyen change for calculate item per view\n if(elm.dataset.perview && (!currentPerView || currentPerView > elm.dataset.perview)) {\n currentPerView = elm.dataset.perview;\n let tmp2_breakpoints = [];\n Object.keys(tmp_breakpoints).forEach(function(key) {\n let breakpoint = tmp_breakpoints[key];\n if(breakpoint.perView <= currentPerView && key < containerW) {\n tmp2_breakpoints[key] = breakpoint;\n } else {\n tmp2_breakpoints[containerW] = {perView: currentPerView};\n }\n })\n breakpoints = tmp2_breakpoints;\n }\n }\n\n let peek = 0;\n if(hasPeek) {\n let numberItemsCanShow = containerW / itemW;\n\n if(containerW < itemW * totalItems && (containerW <= GT.bodyWidth || currentPerView == 1) && itemW < containerW) {\n let _perview = Math.floor(numberItemsCanShow);\n if(_perview <= 0)\n _perview = 1;\n peek = containerW - _perview * itemW;\n }\n }\n\n elm.dataset.totalItems = totalItems;\n\n let bulletsElm = elm.querySelector(\".glide__bullets.is-parrent\") || elm.querySelector(\".glide__bullets\");\n let glideNavButtons = elm.querySelector(\".glide-nav__buttons\");\n let elmDataset = elm.dataset;\n\n if(bulletsElm || glideNavButtons) {\n if(!currentPerView || currentPerView >= totalItems) {\n bulletsElm?.classList.remove(\"show\");\n glideNavButtons?.classList.remove(\"show\");\n } else {\n if (elmDataset.hideBullets !== 'true')\n bulletsElm?.classList.add(\"show\");\n glideNavButtons?.classList.add(\"show\");\n\n if(bulletsElm) {\n let bulletHTML = \"\";\n let maxBullets = steps ? Math.ceil(totalItems / steps) : totalItems;\n if(maxBullets > totalItems) maxBullets = totalItems;\n\n if(elm.dataset.type == \"slider\" && !steps) {\n maxBullets = totalItems - currentPerView + 1;\n }\n for(let bullet_i = 0; bullet_i < maxBullets; bullet_i++){\n bulletHTML += '
  • ';\n }\n bulletsElm.innerHTML = bulletHTML;\n elm.dataset.totalBullets = maxBullets;\n elm.style.removeProperty(\"--bullet-translate-x\");\n elm.dataset.lastindex = 0;\n }\n }\n }\n\n if(glide_controls) \n ((currentPerView && (currentPerView < totalItems || (currentPerView == totalItems && loadMoreBtn)))) ? glide_controls.classList.add(\"show\") : glide_controls.classList.remove(\"show\");\n\n // If totalItems <= 3, Use container instead of container-fluid\n if(containerW >= GT.wWidth - 50 && containerW > 1024 || elm.closest(\".container-fluid\")) {\n let containerElm = elm.closest(\".container-fluid, .container\");\n if(containerElm && totalItems > 3)\n containerElm.classList.add(currentPerView && currentPerView < totalItems ? \"wideGlide\" : \"tinyWideGlide\");\n }\n\n if(elm.dataset.perview == 1)\n gap = 0;\n else if(elm.dataset.gap)\n gap = elm.dataset.gap;\n \n if((currentPerView && (currentPerView < totalItems || (currentPerView == totalItems && loadMoreBtn)))) {\n\n if(GT.wWidth <= 768) {\n // peek = 0;\n elm.dataset.focusat = 0;\n }\n\n if(!currentGlide) {\n let clickableElms = \"a, button, [role='button'], [role='link'], [tabindex='0']\";\n\n currentGlide = new Glide(elm, {\n startAt: elm.dataset.startAt ? elm.dataset.startAt : 0,\n rewind: false,\n bound: true,\n perView: currentPerView,\n direction: document.dir == 'rtl' ? 'rtl' : 'ltr',\n gap: gap,\n focusAt: elm.dataset.focusat ? elm.dataset.focusat : 0,\n type: elm.dataset.type ? elm.dataset.type : 'carousel',\n breakpoints: breakpoints,\n peek: { before: 0, after: peek },\n keyboard: false,\n animationDuration: 400,\n autoplay: (elm.dataset.rotatetime && !GT.isMobileCached && !GT.isScreenReader) ? elm.dataset.rotatetime * 1000 : false,\n perTouch: 1,\n steps: steps\n // perTouch: (loadMoreBtn || elm.dataset.sync) ? 1 : null\n });\n\n function setTabable(isMove){\n Array.prototype.slice.call(document.querySelectorAll(\".glide-v2\")).forEach(function(elm) {\n let glideItem = GT.glidesV2[elm.dataset.glidename];\n if(glideItem) {\n let countGlideItemElm = -1;\n\n if(!isMove) {\n elm.querySelector(\".glide__slides\").setAttribute(\"role\", \"none\");\n }\n let currentSelector = glideItem.selector;\n let prevElm = currentSelector.querySelector(\".slider__prev\"), \n nextElm = currentSelector.querySelector(\".slider__next\");\n if(glideItem.settings.type == \"slider\") {\n if(glideItem.index == 0) {\n prevElm.classList.add(\"disabled\");\n prevElm.setAttribute(\"disabled\", true);\n nextElm.classList.remove(\"disabled\");\n nextElm.removeAttribute(\"disabled\");\n } else {\n prevElm.classList.remove(\"disabled\");\n prevElm.removeAttribute(\"disabled\");\n }\n\n let isEnd = parseInt(glideItem.index) >= parseInt(currentSelector.dataset.totalItems) - glideItem.settings.perView;\n if(isEnd) {\n nextElm.classList.add(\"disabled\");\n nextElm.setAttribute(\"disabled\", true);\n prevElm.classList.remove(\"disabled\");\n prevElm.removeAttribute(\"disabled\");\n } else {\n nextElm.classList.remove(\"disabled\");\n nextElm.removeAttribute(\"disabled\");\n }\n }\n\n Array.prototype.slice.call(elm.querySelectorAll(\".glide__slide\")).forEach(function(item, index)\n {\n let aElms = Array.prototype.slice.call(item.querySelectorAll(clickableElms));\n if(item.classList.contains(\"glide__slide--active\")) {\n countGlideItemElm = 0;\n }\n\n if(!isMove) {\n if(!item.classList.contains(\"glide__slide--clone\")) {\n item.setAttribute(\"role\", \"group\");\n // item.setAttribute(\"aria-roledescription\", (parseInt(item.dataset.index) + 1));\n item.setAttribute(\"aria-label\", \"slide \" + (parseInt(item.dataset.index) + 1));\n }\n }\n\n if(countGlideItemElm >= 0 && !item.classList.contains(\"glide__slide--clone\") && glideItem.settings.perView > countGlideItemElm) {\n aElms.forEach(function(aElm, aIdx){\n aElm.setAttribute(\"tabindex\", 0);\n })\n \n if(isMove && countGlideItemElm == 0 && glideItem.isMoveByTabEvt) {\n glideItem.isMoveByTabEvt = false;\n if(item.classList.contains(\"glide__slide--active\")) {\n let firstChildCanClick = item.firstElementChild.closest(clickableElms);\n if(firstChildCanClick) firstChildCanClick.focus();\n else {\n item.setAttribute(\"tabindex\", 0);\n item.focus();\n setTimeout(() => {\n item.removeAttribute(\"tabindex\", -1);\n }, 250)\n }\n }\n }\n countGlideItemElm++;\n } else {\n // item.setAttribute(\"tabindex\", -1);\n aElms.forEach(function(aElm, aIdx){\n aElm.setAttribute(\"tabindex\", -1);\n })\n }\n })\n\n setTimeout(e => {\n let currentBulletsCtrl = elm.querySelector(\".glide__bullets.is-parrent\") || elm.querySelector(\".glide__bullets\");\n if(currentBulletsCtrl) {\n let bulletElms = currentBulletsCtrl.querySelectorAll(\"button\"),\n bulletElmsLength = bulletElms.length;\n \n Array.prototype.slice.call(bulletElms).forEach(function(bulletElm, bulletElmIndex){ \n bulletElm.classList.remove(\"glide__bullet--active\");\n bulletElm.classList.remove(\"show\");\n bulletElm.setAttribute(\"aria-current\", \"false\");\n\n let currentSteps = (elm.dataset.steps && GT.isDesktopView()) ? elm.dataset.steps : 0;\n const realGlideIndex = currentSteps ? glideItem.index / currentSteps : glideItem.index;\n \n if(realGlideIndex == bulletElmIndex) {\n //========= Animated Bullets\n elm.style.removeProperty(\"--bullet-active-translate-x\");\n elm.style.removeProperty(\"--bullet-last-active-translate-x\");\n bulletElm.classList.add(\"glide__bullet--active\");\n elm.querySelector(\".glide__bullet--target\")?.classList.remove(\"glide__bullet--target\");\n elm.querySelector(\".glide__bullet--old-active\")?.classList.remove(\"glide__bullet--old-active\");\n bulletElm.setAttribute(\"aria-current\", \"true\");\n elm.classList.remove(\"glide__bullet-animate\");\n //END========= Animated Bullets\n }\n\n if(!isMove) {\n let bulletLabel = currentBulletsCtrl.dataset.label || \"\";\n bulletLabel = bulletLabel.replace(\"{0}\", bulletElmIndex + 1);\n bulletLabel = bulletLabel.replace(\"{1}\", bulletElmsLength);\n if(!bulletLabel) bulletLabel = \"Slide\";\n bulletElm.setAttribute(\"title\", bulletLabel);\n }\n })\n }\n }, 100)\n }\n })\n }\n \n currentGlide.on('swipe.start', function(ev){\n ev.instance.isMoveByUser = true;\n })\n \n currentGlide.on(\"run.after\", function(e){\n let glideItem = e.instance,\n currentSelector = glideItem.selector,\n willTriggerLoadMore = false,\n loadMoreContainer = currentSelector.closest(\".extended-search\"),\n currentLoadmoreBtn = loadMoreContainer ? loadMoreContainer.querySelector(\".\" + currentSelector.dataset.loadmorebtn) : null;\n\n setTabable(true);\n\n Array.prototype.slice.call(currentSelector.querySelectorAll(\".glide__slide\")).forEach(function(item, index){\n if(glideItem.index == item.dataset.index) {\n \n if(!item.classList.contains(\"glide__slide--clone\")) {\n if(currentSelector.dataset.totalItems - (GT.wWidth > 768 ? 2 : 1) == parseInt(item.dataset.index) + 1)\n willTriggerLoadMore = true;\n }\n \n } \n })\n \n if(willTriggerLoadMore && currentLoadmoreBtn && !currentLoadmoreBtn.classList.contains(\"hidden\")) {\n currentSelector.dataset.startAt = glideItem.index;\n let glideTrackElm = currentSelector.querySelector(\".glide__track\");\n glideTrackElm.style.height = glideTrackElm.offsetHeight + \"px\";\n glideItem.disable();\n if(!loadMoreContainer.classList.contains(\"fetching\"))\n currentLoadmoreBtn.click();\n loadMoreContainer.classList.add(\"fetching\");\n }\n\n if(currentSelector.dataset.disabled == \"true\")\n setTimeout(function(){\n glideItem.disable();\n }, 50)\n\n Object.keys(GT.glidesV2).forEach(key => {\n GT.glidesV2[key].isMoveByUser = false;\n })\n\n //Prevent double click. wait for the bullet's animation finishes\n setTimeout(e => {\n glideItem.isMoving = false;\n }, 350)\n });\n\n currentGlide.on('run', function(ev){\n let glideItem = ev.instance;\n if(glideItem) {\n if(glideItem.isMoveByUser && !glideItem.isMoving)\n sync2Slider(glideItem, ev.move.direction, ev.move.steps);\n \n glideItem.isMoving = true;\n \n let currentSelector = glideItem.selector;\n Array.prototype.slice.call(currentSelector.querySelectorAll(\".glide__slide\")).forEach(function(item, index){\n if(glideItem.index == item.dataset.index) {\n item.classList.add(\"glide__slide--custom-active\");\n } else\n item.classList.remove(\"glide__slide--custom-active\");\n })\n\n\n //========= Animated Bullets\n let currentSteps = (currentSelector.dataset.steps && GT.isDesktopView()) ? currentSelector.dataset.steps : 0,\n lastIndex = parseInt(currentSelector.dataset.lastindex) || 0,\n realGlideIndex = currentSteps ? glideItem.index / currentSteps : glideItem.index,\n totalBullets = currentSelector.dataset.totalBullets || 0;\n \n realGlideIndex = realGlideIndex >= totalBullets ? 0 : realGlideIndex;\n realGlideIndex = realGlideIndex < 0 ? totalBullets - 1 : realGlideIndex;\n \n let translateX = 0,\n bullet_steps = lastIndex - realGlideIndex,\n distance = bullet_steps * bulletSize;\n\n if(Math.abs(distance) < 3) distance = 0;\n if(realGlideIndex > 2) translateX = (bullet_steps < 0 ? bulletSize*3 : bulletSize*2) - realGlideIndex * bulletSize;\n if(realGlideIndex >= totalBullets - 3) translateX = 0 - (totalBullets - 6) * bulletSize;\n \n if(totalBullets > 6) {\n currentSelector.querySelector(\".has-more\")?.classList.remove(\"has-more\");\n currentSelector.style.setProperty(\"--bullet-translate-x\", translateX + \"px\");\n let hiddenItems = translateX / bulletSize * -1 + 6;\n currentSelector.querySelector(\".glide__bullets li:nth-child(\"+ hiddenItems +\") .glide__bullet\")?.classList.add(\"has-more\");\n }\n\n if(document.dir == \"rtl\") {\n distance *= -1;\n }\n\n currentSelector.style.setProperty(\"--bullet-active-translate-x\", distance + \"px\");\n currentSelector.style.setProperty(\"--bullet-last-active-translate-x\", (distance * -1) + \"px\");\n currentSelector.querySelector(\".glide__bullets .glide__bullet--active\")?.classList.add(\"glide__bullet--old-active\");\n currentSelector.querySelector(\".glide__bullets li:nth-child(\"+ (realGlideIndex + 1) +\") .glide__bullet\")?.classList.add(\"glide__bullet--target\");\n currentSelector.dataset.lastindex = realGlideIndex;\n currentSelector.classList.add(\"glide__bullet-animate\");\n if(currentSelector.dataset.steps && glideItem.index % currentSelector.dataset.steps == 0)\n currentSelector.classList.add(\"glide__slide--group-active\");\n else\n currentSelector.classList.remove(\"glide__slide--group-active\");\n //END========= Animated Bullets\n\n }\n });\n GT.glidesV2[elm.dataset.glidename] = currentGlide;\n\n currentGlide.on(['mount.after'], function(e) {\n let glideItem = e.instance;\n if(glideItem) {\n let currentSelector = glideItem.selector;\n \n setTabable();\n \n let loadMoreContainer = currentSelector.closest(\".extended-search\"),\n currentLoadmoreBtn = loadMoreContainer ? loadMoreContainer.querySelector(\".\" + currentSelector.dataset.loadmorebtn) : null;\n \n if(currentSelector.dataset.totalItems == glideItem.settings.perView && GT.wWidth > 768 && currentLoadmoreBtn && !currentLoadmoreBtn.classList.contains(\"hidden\")) {\n glideItem.disable();\n loadMoreContainer.classList.add(\"fetching\");\n let glideTrackElm = currentSelector.querySelector(\".glide__track\");\n glideTrackElm.style.height = glideTrackElm.offsetHeight + \"px\";\n setTimeout(function(){\n currentLoadmoreBtn.click();\n })\n }\n\n\n let parentGlideSelector = currentSelector.closest(\".glide-v2\");\n if(parentGlideSelector) {\n let currentVisitedElm;\n\n currentSelector.addEventListener(\"mousemove\", function(e){\n let parentGlide = GT.glidesV2[parentGlideSelector.dataset.glidename],\n currentGlideSelector = e.target.closest(\".glide-v2\"),\n currentGlideName = currentGlideSelector.dataset.glidename,\n currentTotalItems = currentGlideSelector.dataset.totalItems;\n\n if(currentVisitedElm != currentGlideName && e.which == 0 && parentGlide) {\n if(currentGlideName != parentGlideSelector.dataset.glidename && currentTotalItems > 1) {\n currentVisitedElm = currentGlideName;\n parentGlide.disable();\n parentGlideSelector.dataset.disabled = true;\n } else {\n currentVisitedElm = parentGlideSelector.dataset.glidename;\n parentGlide.enable();\n parentGlideSelector.dataset.disabled = false;\n }\n }\n \n })\n }\n }\n })\n\n let bulletItems = Array.prototype.slice.call(elm.querySelectorAll(\".glide__bullet\"));\n bulletItems.forEach(function(bulletItem){\n let detectClickEvt = false;\n bulletItem.addEventListener(\"mousedown\", function(e){\n detectClickEvt = true;\n })\n bulletItem.addEventListener(\"touchstart\", function(e){\n detectClickEvt = true;\n })\n bulletItem.addEventListener(\"mouseup\", function(e){\n detectClickEvt = false;\n })\n bulletItem.addEventListener(\"touchend\", function(e){\n detectClickEvt = false;\n })\n\n bulletItem.addEventListener(\"click\", function(e){\n let glideItem = GT.glidesV2[this.parentElement.closest(\".glide-v2\").dataset.glidename];\n if(glideItem.isMoving) return;\n glideItem.isMoving = true;\n if(!e.pointerType)\n glideItem.isMoveByTabEvt = true;\n glideItem.go(\"=\" + this.dataset.go);\n sync2Slider(glideItem, \"=\", this.dataset.go);\n })\n\n bulletItem.addEventListener(\"focus\", e => {\n if(detectClickEvt) return;\n let bulletIndex = e.target.dataset.go;\n let glideItem = GT.glidesV2[e.target.closest(\".glide-v2\").dataset.glidename];\n let translateX = 0;\n if(bulletIndex > 2) translateX = bulletSize*3 - bulletIndex * bulletSize;\n if(bulletIndex >= glideItem.selector.dataset.totalItems - 3) translateX = bulletSize*3 - (glideItem.selector.dataset.totalItems - 3) * bulletSize;\n\n glideItem.selector.style.setProperty(\"--bullet-translate-x\", translateX + \"px\");\n })\n })\n\n currentGlide.mount();\n //Fix issue: move 2 articels per click in safari\n let prevElm = elm.querySelector(\".slider__prev\"),\n nextElm = elm.querySelector(\".slider__next\");\n \n if(prevElm && nextElm) {\n prevElm.dataset.glideCtrlName = elm.dataset.glidename;\n nextElm.dataset.glideCtrlName = elm.dataset.glidename;\n prevElm.onclick = function(e){\n let glideItem = GT.glidesV2[this.dataset.glideCtrlName],\n glideItemSelector = glideItem.selector,\n glideItemChildSelectors = glideItemSelector.querySelectorAll(\".glide-v2\"),\n glideItemChildSelector,\n childGlide;\n\n if(glideItem.isMoving) return;\n if(glideItem.settings.type != \"slider\" || (glideItem.settings.type == \"slider\" && glideItem.index > 0))\n glideItem.isMoving = true;\n\n if(glideItemChildSelectors.length)\n glideItemChildSelector = glideItemChildSelectors[glideItem.index];\n\n if(glideItemChildSelector)\n childGlide = GT.glidesV2[glideItemChildSelector.dataset.glidename];\n\n if(e.buttons)\n glideItem.isMoveByTabEvt = true;\n \n if(childGlide && childGlide.index > 0)\n childGlide.go(\"<\");\n else\n glideItem.go(\"<\");\n sync2Slider(glideItem, \"<\", 1);\n }\n nextElm.onclick = function(e){\n let glideItem = GT.glidesV2[this.dataset.glideCtrlName],\n glideItemSelector = glideItem.selector,\n glideItemChildSelectors = glideItemSelector.querySelectorAll(\".glide-v2\"),\n glideItemChildSelector,\n childGlide;\n \n if(glideItem.isMoving) return;\n if(glideItem.settings.type != \"slider\" || (glideItem.settings.type == \"slider\" && glideItem.index < glideItemSelector.dataset.totalItems - 1))\n glideItem.isMoving = true;\n\n if(glideItemChildSelectors.length)\n glideItemChildSelector = glideItemChildSelectors[glideItem.index];\n\n if(glideItemChildSelector)\n childGlide = GT.glidesV2[glideItemChildSelector.dataset.glidename];\n\n if(e.buttons)\n glideItem.isMoveByTabEvt = true;\n \n if(childGlide && childGlide.index < glideItemChildSelector.dataset.totalItems - 1)\n childGlide.go(\">\");\n else\n ((glideItem._i < glideItemSelector.dataset.totalItems - 1 && glideItemSelector.dataset.type == \"slider\") || glideItemSelector.dataset.type != \"slider\") && glideItem.go(\">\");\n\n sync2Slider(glideItem, \">\", 1);\n }\n }\n } else {\n currentGlide.perView = totalItems;\n currentGlide.breakpoints = breakpoints;\n currentGlide.update();\n currentGlide.enable();\n GT.glidesV2[elm.dataset.glidename] = currentGlide;\n }\n } else {\n glideSlides.forEach(function(glideItem, glideItemIndex){\n // glideItem.setAttribute(\"tabindex\", 0);\n })\n }\n\n if(elm.querySelector(\".article-tile\"))\n GT.clampArticle(true);\n\n Object.keys(GT.retriggerClampList).forEach(clampItemKey => {\n GT.retriggerClampList[clampItemKey]();\n })\n\n setTimeout(function(){\n elm.classList.add(\"glide--show-item\");\n GT.clampText(elm.dataset.clampname, true);\n }, 750);\n }\n\n if(specificElm)\n doInitGlide(specificElm);\n else\n Array.prototype.slice.call(document.querySelectorAll(\".glide-v2\")).forEach(function(elm) {\n doInitGlide(elm);\n })\n\n function sync2Slider(slider, direction, steps){\n let targetSlider = GT.glidesV2[slider.selector.dataset.sync];\n if(!targetSlider)\n return;\n\n let nextIndex = slider.index;\n let nextSlide = slider.selector.querySelector('.glide__slide:not(.glide__slide--clone)[data-index=\"'+ nextIndex +'\"]');\n let currentIdx = nextSlide ? nextSlide.dataset.parent : -100;\n if(currentIdx == -100) {\n currentIdx = nextIndex;\n }\n\n if(typeof currentIdx == \"undefined\") {\n targetGlide__slide = targetSlider.selector.querySelector('.glide__slide:not(.glide__slide--clone)[data-parent=\"'+ nextIndex +'\"]');\n if(targetGlide__slide) {\n currentIdx = targetGlide__slide.dataset.index;\n if(direction == \"=\")\n targetSlider.go(\"=\" + currentIdx);\n else {\n let steps = currentIdx - targetSlider.index;\n targetSlider.go(direction + steps);\n }\n }\n } else if(targetSlider.index != currentIdx)\n targetSlider.go(direction + (direction == \"=\" ? currentIdx : \"\"));\n }\n}\n\nGT.reinitializeGlideV2 = function(){\n Object.keys(GT.glidesV2).forEach(function(key){\n GT.glidesV2[key].destroy();\n })\n \n Array.prototype.slice.call(document.querySelectorAll(\".glide-v2\")).forEach(function(elm) {\n // elm.dataset.renderedGlide = false;\n elm.classList.remove(\"glide--show-item\");\n let containerElm = (elm.closest(\".container\") || elm.closest(\".container-fluid\"));\n if(containerElm) {\n let elmParentClasses = containerElm.classList;\n elmParentClasses.remove(\"wideGlide\");\n elmParentClasses.remove(\"tinyWideGlide\");\n }\n })\n GT.glidesV2 = {};\n GT.GlideV2();\n}\n\nGT.destroyGlideV2 = function(elm, usingFadeAnimation){\n GT.glidesV2[elm.dataset.glidename].destroy();\n \n if(usingFadeAnimation)\n elm.classList.remove(\"glide--show-item\");\n \n let containerElm = (elm.closest(\".container\") || elm.closest(\".container-fluid\"));\n if(containerElm) {\n let elmParentClasses = containerElm.classList;\n elmParentClasses.remove(\"wideGlide\");\n elmParentClasses.remove(\"tinyWideGlide\");\n }\n\n delete GT.glidesV2[elm.dataset.glidename];\n}\n\nGT.domContentLoadedFncList.push(function(){\n LazyEvent(document.querySelectorAll(\".glide-v2\"), GT.GlideV2, null, null, \"lazy_DOMContentLoadedEvt__GTGlideV2\");\n});\n\n\nGT.windowResizeFncList[\"resizeEvt__GTGlideV2\"] = function(){\n //wait for GT.wWidth update new value\n setTimeout(function(){\n GT.reinitializeGlideV2();\n }, 50)\n}\nGT.GlobalPeopleFinder = function(){\n if(globalPeople && globalPeople.People) {\n\n let app = new Vue({\n el: '.globalPeopleFinderApp',\n data: {\n countries: [],\n peoples: [],\n filter: {\n firm: \"-1\",\n name: \"\",\n contact: \"\",\n job: \"\"\n },\n limitItems: 20,\n filteredPeoples: []\n },\n methods: {\n filterPeoples\n },\n mounted: function(){\n this.$nextTick(function () {\n filterPeoples();\n })\n }\n })\n\n let tmpCountries = [],\n tmpPeoples = [];\n globalPeople.People.forEach(function(item){\n if(!item.Phone)\n item.Phone = \"\";\n if(!item.Email)\n item.Email = \"\";\n if(!item.JobTitle)\n item.JobTitle = \"\";\n\n if(tmpCountries.indexOf(item.Firm) == -1)\n tmpCountries.push(item.Firm);\n\n tmpPeoples.push(item);\n })\n\n app.countries = tmpCountries;\n app.peoples = tmpPeoples;\n\n function filterPeoples(){\n app.filteredPeoples = doFilterPeoples(app.peoples);\n }\n\n function doFilterPeoples(peoples){\n return peoples.filter(function(people) {\n let regex = new RegExp('(' + app.filter.name + ')', 'i'),\n regexContact = new RegExp('(' + app.filter.contact + ')', 'i'),\n regexJob = new RegExp('(' + app.filter.job + ')', 'i');\n return (people.Name.match(regex) && (people.Phone.match(regexContact) || people.Email.match(regexContact)) && people.JobTitle.match(regexJob))\n && (app.filter.firm == -1 || (app.filter.firm != -1 && people.Firm == app.filter.firm));\n })\n }\n }\n}\n\n\nif(typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n GT.GlobalPeopleFinder();\n });\nGT.HeadSearch = function ($element) {\n var me = this,\n $toggle = $element.find('.icon-link'),\n $content = $element.find('.header__search-form'),\n $search = $content.find('.searchBox'),\n $close = $element.find('.h-search__close'),\n\n $parent = $element.parent(),\n $globalreach = $parent.find('.header__global-reach-toggle'),\n $lang = $parent.find('.header__lang'),\n $login = $parent.find('.header__login');\n $header = $parent.parent();\n\n function is_iOS() {\n var iDevices = [\n 'iPad Simulator',\n 'iPhone Simulator',\n 'iPod Simulator',\n 'iPad',\n 'iPhone',\n 'iPod'\n ];\n\n while (iDevices.length) {\n if (navigator.platform === iDevices.pop()) {\n return true;\n }\n }\n\n return false;\n }\n\n\n function fixNav() {\n if (is_iOS()) {\n $('body').css('overflow-y', 'auto');\n $('body').css('position', 'absolute');\n $('body').css('top', 0);\n $('body').css('bottom', 0);\n $('body').css('-webkit-overflow-scrolling', 'touch');\n\n $(document).on('resize', function () {\n $('body').scrollTop(topShift);\n })\n }\n }\n function unfixNav() {\n if (is_iOS()) {\n $('html, body').removeClass('absolute');\n }\n }\n function closeSearch() { \n $element.removeClass('open');\n $content.removeClass('open');\n $toggle.css({ 'display': '' });\n $lang.css({ 'display': '' });\n $login.css({ 'display': '' });\n $globalreach.css({ 'display': '' });\n $content.css({ 'position': 'absolute' });\n $('.mobile-logo').removeClass('hide');\n document.getElementById('searchField').blur();\n setTimeout(function(){\n $toggle.focus();\n }, 50)\n }\n\n me.init = function () {\n\n // fixNav();\n\n var $toggle = $element.find('.icon-link'),\n $content = $element.find('.header__search-form'),\n $close = $element.find('.h-search__close');\n $parent = $element.parent();\n $globalreach = $parent.find('.header__global-reach-toggle');\n $lang = $parent.find('.header__lang');\n $login = $parent.find('.header__login');\n\n topShift = $(window).scrollTop();\n\n $('body').on('touchmove', function () {\n topShift = $(window).scrollTop();\n document.activeElement.blur();\n })\n\n $toggle.on('click keydown', function (e) { \n if (!e.keyCode || e.keyCode === '13') {\n $('.insight-menu__toggle').removeClass('open');\n $element.addClass('open');\n $content.addClass('open');\n $search.focus();\n $(this).css({ 'display': 'none' });\n $globalreach.css({ 'display': 'none' });\n $lang.css({ 'display': 'none' });\n $login.css({ 'display': 'none' });\n $content.css({ 'position': 'relative' });\n $('.mobile-logo').addClass('hide');\n document.getElementById('searchField').focus();\n }\n });\n\n $close.on('click keydown', function (e) {\n if (!e.keyCode || e.keyCode === 13) {\n closeSearch();\n }\n });\n\n // $content.find('.searchBox').blur(function () {\n // closeSearch();\n // });\n\n\n }\n me.init();\n};\nGT.GTHomepageBannerCarousel = function (mainSlide) {\n if (mainSlide) {\n\n let controlSlide = mainSlide.querySelector(\".hero-carousel-tabs\"),\n mainSliderContainer = mainSlide.querySelector(\".container\"),\n mainSlideItems = mainSlide.querySelectorAll(\".hero-carousel-slide\"),\n backgroundItems = mainSlide.querySelectorAll(\".hero-carousel__background\"),\n controlSlideItems = controlSlide.querySelectorAll(\"li\"),\n dotItems = mainSlide.querySelectorAll(\".hero-carousel__dot\"),\n nextBtn = mainSlide.querySelector(\".hero-carousel__button-next\"),\n preBtn = mainSlide.querySelector(\".hero-carousel__button-prev\"),\n itemNum = mainSlideItems.length,\n directionIsLTR = true,\n firstChildClonedElm,\n lastChildClonedElm,\n timeout,\n timeoutList = [],\n hasOutAnimation = false,\n _timer,\n transitionTime = mainSlide.dataset.slideTransitionTime ? parseInt(mainSlide.dataset.slideTransitionTime) * 1000 : 3000,\n isRTL = document.querySelector(\".RTL\");\n\n function triggerAnimation(currentSlide, currentBackground) {\n if (GT.wWidth > GT.breakPoints.tablet_lg && (!currentBackground || currentBackground.dataset.loaded)) {\n currentBackground?.querySelectorAll(\".animation-item\").forEach(function (animateItem) {\n animateItem.classList.add(animateItem.dataset.transition);\n })\n currentSlide.querySelectorAll(\".animation-item\").forEach(function (animateItem) {\n animateItem.classList.add(animateItem.dataset.transition);\n })\n }\n }\n\n function resetState(idx, isTriggerByPaginationItem) {\n timeoutList.forEach(function (timerItem) {\n clearTimeout(timerItem);\n })\n mainSlideItems = mainSlide.querySelectorAll(\".hero-carousel-slide\");\n backgroundItems = mainSlide.querySelectorAll(\".hero-carousel__background\");\n\n let isMobileView = GT.isMobileView();\n controlSlideItems.forEach(function (elm) {\n elm.classList.remove(\"active\", \"animate\");\n elm.querySelector(\".hero-carousel-tab\").removeAttribute(\"aria-current\");\n let buttonElm = elm.querySelector(\"[role=button]\");\n if(buttonElm) {\n buttonElm.setAttribute(\"tabindex\", isMobileView ? -1 : 0);\n if(isMobileView)\n buttonElm.setAttribute(\"aria-hidden\", true);\n else\n buttonElm.removeAttribute(\"aria-hidden\", true);\n }\n })\n\n\n dotItems.forEach(function (elm) {\n elm.classList.remove(\"active\");\n elm.removeAttribute(\"aria-current\");\n })\n let currentDotItem = dotItems[idx];\n currentDotItem.classList.add(\"active\");\n currentDotItem.setAttribute(\"aria-current\", true);\n\n let currentControlSlideItem = controlSlideItems[idx];\n currentControlSlideItem.classList.add(\"active\", \"animate\");\n currentControlSlideItem.querySelector(\".hero-carousel-tab\").setAttribute(\"aria-current\", true);\n\n let currentSlide = mainSlideItems[idx],\n currentBackground = backgroundItems.length ? backgroundItems[idx] : null;\n\n if (GT.wWidth > GT.breakPoints.tablet_lg) {\n if(!hasOutAnimation)\n currentSlide.querySelectorAll(\".animation-item\").forEach(function (animateItem) {\n animateItem.classList.remove(animateItem.dataset.transition);\n })\n }\n\n function triggerAnimationOnImageLoaded(elm, elmIndex) {\n if(!elm.dataset.loaded) {\n elm.dataset.loaded = true;\n if(idx == elmIndex) {\n elm.classList.add(\"active\");\n currentBackground = elm;\n triggerAnimation(currentSlide, currentBackground);\n }\n }\n }\n\n backgroundItems.forEach(function (elm, elmIndex) {\n //show background item firstly, animation issue with display none\n elm.classList.add(\"show\");\n //only trigger animation on unloaded image\n if(!elm.dataset.loaded) {\n const imgElm = elm.querySelector(\"img\");\n //trigger animation on image: loaded or error\n [\"load\", \"error\"].forEach(function (evt) {\n imgElm?.addEventListener(evt, function() {\n triggerAnimationOnImageLoaded(elm, elmIndex);\n })\n });\n \n //handle first item and no image cases\n if(elmIndex == 0 || !imgElm) {\n elm.dataset.loaded = true;\n }\n }\n \n // trigger animation after 2 seconds if image is not loaded completely\n // force trigger animation\n setTimeout(() => {\n triggerAnimationOnImageLoaded(elm, elmIndex);\n }, 2000)\n })\n\n let currentTimeout = setTimeout(function () {\n if (backgroundItems.length)\n backgroundItems.forEach(function (elm) {\n elm.classList.remove(\"active\");\n if (GT.wWidth > GT.breakPoints.tablet_lg)\n elm.querySelectorAll(\".animation-item\").forEach(function (animateItem) {\n animateItem.classList.remove(animateItem.dataset.transition);\n })\n })\n\n mainSlideItems.forEach(function (elm) {\n elm.classList.add(\"show\");\n elm.classList.remove(\"active\");\n elm.setAttribute(\"aria-hidden\", true);\n elm.removeAttribute(\"tabindex\");\n elm.querySelector('a')?.setAttribute(\"tabindex\", -1);\n })\n\n if (GT.wWidth > GT.breakPoints.tablet_lg) {\n if(hasOutAnimation)\n mainSlide.querySelectorAll(\".animation-item\").forEach(function (animateItem) {\n animateItem.classList.remove(\"use-block-element-fade-out\");\n })\n }\n\n\n currentSlide.classList.add(\"active\");\n currentSlide.removeAttribute(\"aria-hidden\");\n currentSlide.querySelector('a')?.removeAttribute(\"tabindex\");\n if(isTriggerByPaginationItem) {\n currentSlide.setAttribute(\"tabindex\", 0);\n setTimeout(() => {\n if(GT.isScreenReader)\n currentSlide.focus();\n setTimeout(() => {\n currentSlide.removeAttribute(\"tabindex\");\n }, 1000)\n }, 50)\n }\n \n if (currentBackground?.dataset.loaded)\n currentBackground.classList.add(\"active\");\n\n triggerAnimation(currentSlide, currentBackground);\n\n }, hasOutAnimation && GT.wWidth >= GT.breakPoints.tablet_lg ? 1600 : 200)\n\n if (GT.wWidth < GT.breakPoints.tablet_lg) {\n controlSlide.classList.add(\"animate\");\n\n let tmpIdx = idx;\n\n if (!isTriggerByPaginationItem) {\n if (directionIsLTR) {\n if (idx == 0 && lastChildClonedElm) {\n tmpIdx = itemNum;\n lastChildClonedElm.classList.add(\"active\");\n }\n } else {\n if (idx == itemNum - 1 && firstChildClonedElm) {\n tmpIdx = -1;\n firstChildClonedElm.classList.add(\"active\");\n }\n }\n }\n\n controlSlide.style.transform = \"translateX(calc(100% * \" + ((isRTL ? 1 : -1) * (tmpIdx + 2)) + \"))\";\n timeout = setTimeout(function () {\n controlSlide.classList.remove(\"animate\");\n controlSlide.style.transform = \"translateX(calc(100% * \" + ((isRTL ? 1 : -1) * (idx + 2)) + \"))\";\n firstChildClonedElm.classList.remove(\"active\");\n lastChildClonedElm.classList.remove(\"active\");\n timeout = null;\n }, 400);\n }\n \n timeoutList.push(currentTimeout);\n }\n\n mainSlide.querySelectorAll(\".animation-item\").forEach(function (animateItem) {\n animateItem.classList.remove(animateItem.dataset.transition);\n })\n\n let currentActivatedItem = mainSlide.querySelector(\".gt-small-title.active\")\n mainSlide.currentItemIdx = 0;\n\n mainSlide.querySelector(\".first_time\")?.classList.add(\"active\");\n\n if (currentActivatedItem)\n currentActivatedItem.classList.add(\"animate\");\n \n\n\n function genClone() {\n cloneItems = controlSlide.querySelectorAll(\".clone\");\n if (GT.wWidth >= GT.breakPoints.tablet_lg) {\n cloneItems.forEach(function (item) {\n item.remove();\n })\n controlSlide.style.transform = \"translateX(0)\";\n return;\n }\n\n if (cloneItems.length)\n return;\n\n let firstChild = controlSlideItems[0],\n lastChild = controlSlideItems[itemNum - 1],\n cloneLastChild = lastChild.cloneNode(true),\n cloneFirstChild = firstChild.cloneNode(true);\n cloneLastChild.classList.add(\"clone\");\n cloneFirstChild.classList.add(\"clone\");\n cloneFirstChild.classList.remove(\"active\");\n cloneFirstChild.classList.remove(\"animate\");\n controlSlide.insertBefore(cloneLastChild, firstChild);\n controlSlide.insertBefore(cloneFirstChild, lastChild.nextSibling);\n\n controlSlide.style.transform = \"translateX(calc(100% * \" + ((isRTL ? 1 : -1) * (mainSlide.currentItemIdx + 2)) + \"))\";\n firstChildClonedElm = cloneLastChild;\n lastChildClonedElm = cloneFirstChild;\n\n let preFirstChild = controlSlideItems[1],\n preLastChild = controlSlideItems[itemNum - 2],\n clonePreLastChild = preFirstChild.cloneNode(true),\n clonePreFirstChild = preLastChild.cloneNode(true);\n\n clonePreLastChild.classList.add(\"clone\");\n clonePreFirstChild.classList.add(\"clone\");\n clonePreFirstChild.classList.remove(\"active\");\n clonePreFirstChild.classList.remove(\"animate\");\n controlSlide.insertBefore(clonePreFirstChild, cloneLastChild);\n controlSlide.insertBefore(clonePreLastChild, cloneFirstChild.nextSibling);\n }\n\n if (controlSlideItems.length && controlSlideItems.length > 1) {\n let isMobile = GT.isMobileView();\n controlSlideItems.forEach(function (item) {\n [\"click\", \"keydown\"].forEach(evt => {\n item.querySelector(\".hero-carousel-tab\").addEventListener(evt, function (e) {\n if(!e.key || e.key == \"Enter\") {\n const _currentItemIdx = parseInt(e.currentTarget.dataset.index);\n resetState(_currentItemIdx, true);\n clearInterval(_timer);\n mainSlide.currentItemIdx = _currentItemIdx;\n if (GT.isScreenReader)\n setTimeout(function () {\n mainSlideItems[_currentItemIdx].focus();\n }, 100)\n }\n })\n \n }) \n\n if(!isMobile) {\n let focusableElm = item.querySelector(\".hero-carousel-tab\");\n if(focusableElm) {\n focusableElm.setAttribute(\"tabindex\", 0);\n focusableElm.removeAttribute(\"aria-hidden\");\n }\n }\n })\n\n // mainSlideItems.forEach(function (elm) {\n // elm.addEventListener(\"focus\", function () {\n // if (isScreenReader !== 0) {\n // isScreenReader = true;\n // clearInterval(_timer);\n // }\n // })\n // elm.addEventListener(\"mouseenter\", function () {\n // isScreenReader = 0;\n // })\n // })\n\n\n dotItems.forEach(function (elm) {\n elm.addEventListener('click', function (e) {\n if (timeout)\n return;\n\n mainSlide.currentItemIdx = parseInt(e.target.dataset.index);\n\n resetState(mainSlide.currentItemIdx, true);\n clearInterval(_timer); \n })\n })\n\n nextBtn.addEventListener(\"click\", function () {\n if (timeout)\n return;\n\n if (mainSlide.currentItemIdx + 1 >= itemNum)\n mainSlide.currentItemIdx = 0;\n else\n mainSlide.currentItemIdx++;\n directionIsLTR = true;\n resetState(mainSlide.currentItemIdx);\n clearInterval(_timer); \n })\n\n preBtn.addEventListener(\"click\", function () {\n if (timeout)\n return;\n\n if (mainSlide.currentItemIdx - 1 < 0)\n mainSlide.currentItemIdx = itemNum - 1;\n else\n mainSlide.currentItemIdx--;\n directionIsLTR = false;\n resetState(mainSlide.currentItemIdx);\n clearInterval(_timer); \n })\n\n\n //=============================\n //=======DETECT SWIPE DIRECTION\n //=============================\n\n let touchstartX = 0\n let touchendX = 0\n\n function checkDirection() {\n if (touchstartX - touchendX > 50) {\n //swiped left!\n if (isRTL)\n preBtn.click();\n else\n nextBtn.click();\n }\n\n if (touchendX - touchstartX > 50) {\n //swiped right!\n if (isRTL)\n nextBtn.click();\n else\n preBtn.click();\n }\n }\n\n if (mainSliderContainer) {\n mainSliderContainer.addEventListener('touchstart', function (e) {\n touchstartX = e.changedTouches[0].screenX;\n clearInterval(_timer);\n }, { passive: true })\n\n mainSliderContainer.addEventListener('touchend', function (e) {\n touchendX = e.changedTouches[0].screenX;\n checkDirection(); \n })\n }\n\n GT.windowResizeFncList[\"GTHomepageBannerCarousel\" + Math.random(0, 100000)] = function () {\n resetState(mainSlide.currentItemIdx);\n genClone();\n }\n \n genClone();\n }\n }\n}\n\nGT.domContentLoadedFncList.push(function () {\n document.querySelectorAll(\".hero-carousel\").forEach(function (item) {\n GT.GTHomepageBannerCarousel(item);\n })\n});\nGT.HomeIndustryBlock = function () {\n document.querySelectorAll(\".homepage-industry__block\").forEach((block) => {\n block.querySelectorAll(\".homepage-industry__links\").forEach((link) => {\n link.addEventListener(\"mouseenter\", (e) => {\n const target = e.currentTarget;\n const parent = target.closest(\".homepage-industry__block\");\n const images = parent.querySelectorAll(\".homepage-industry__background.hide-to-desktop img\");\n const targetIndex = target.dataset.index;\n const targetImage = Array.from(images).find(image => image.getAttribute('data-index') === targetIndex);\n\n if (!targetImage) return;\n images.forEach((img) => img.classList.remove(\"active\"));\n targetImage.classList.add(\"active\");\n });\n });\n });\n};\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function () {\n GT.HomeIndustryBlock();\n });\n\nGT.HomeInsightsNewsPromoBlock = function () {\n let __ths = {};//should not use __ths = this; because of global scope, impact to the other blocks\n init();\n function init() {\n\n let _tagFilterTabItems = document.querySelectorAll('.tag-filter__tab--item');\n \n [].forEach.call(_tagFilterTabItems, function(tabFilter) {\n tabFilter.addEventListener('click', function() {\n let _this = this;\n if(_this.classList.contains('selected')) return;\n\n let _tagFilterTabContainer = _this.parentNode;\n if(_tagFilterTabContainer) {\n //Remove old active tab\n let _activeTab = _tagFilterTabContainer.querySelector('.tag-filter__tab--item.selected');\n if(_activeTab) _activeTab.classList.remove('selected');\n\n _this.classList.add('selected');\n _this.classList.add('focus');\n\n let _tabEndpointInput = document.getElementById('searchEndpoint');\n if(!_tabEndpointInput) return;\n\n let _endpointUri = _tabEndpointInput.getAttribute('data-endpoint'); \n\n let _ajaxUrl = _endpointUri;\n\n let _filterTag = _this.getAttribute('data-tag');\n\n if(_filterTag) _ajaxUrl += '&tags=' + _filterTag;\n \n function successCallback(contextRef, data) {\n let _insightsPromoContainerBlock = _this.closest('.insight-promo__block--container');\n if(!_insightsPromoContainerBlock) return;\n let _replaceResultContainer = _insightsPromoContainerBlock.querySelector('.insight-promo__list--items');\n if(_replaceResultContainer) {\n __ths.replaceResults(data, _replaceResultContainer);\n _this.blur();\n }\n }\n \n __ths.ajaxCall(__ths.escapeQueryChars(_ajaxUrl), successCallback); \n }\n });\n\n tabFilter.addEventListener(\"mouseout\", mouseOut);\n function mouseOut() {\n this.classList.remove('focus');\n isClicked = false;\n }\n });\n }\n\n __ths.escapeQueryChars = function (url) {\n return url ? url\n .replace(/\\s/gi, '+')\n .replace(/\\%20/gi, '+')\n .replace(/\\%(3C|3E)/gi, function (match, dec) {\n return encodeURI('%') + dec;\n }) : url;\n };\n\n\n __ths.ajaxCall = function (url, successCallback) {\n var contextRef = this;\n let __url = url;\n var xhttp = new XMLHttpRequest();\n xhttp.onreadystatechange = function () {\n if (this.readyState == 4) {\n if (this.response && this.status == 200) {\n successCallback(contextRef, this.response);\n } else {\n // isInited = false;\n }\n }\n };\n xhttp.open(\"GET\", __url, true);\n xhttp.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n xhttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhttp.send();\n }\n\n __ths.replaceResults = function (data, _replaceContainer) {\n if(_replaceContainer) {\n //WILL_REMOVE gt-newtypo\n data = data.replaceAll('class=\"title \"', 'class=\"title gt-newtypo\"');\n data = data.replaceAll('class=\"category \"', 'class=\"category gt-newtypo\"');\n _replaceContainer.innerHTML = data;\n GT.FakeHyperlink();\n }\n\n // TODO, check if text is blink\n setTimeout(function() {\n GT.clampArticle();\n GT.GTBookmarkArticle && GT.GTBookmarkArticle();\n }, 100);\n }\n};\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function () {\n GT.HomeInsightsNewsPromoBlock();\n });\nGT.HorizontalTable = function ($elem) {\n $.each($elem, function (index, element) {\n var $table = $(element).find('table');\n $(window).on('resize', function () {\n changeRowBorder($table, index);\n });\n changeRowBorder($table, index);\n });\n\n function changeRowBorder($table, index) {\n var styleId = 'gt-hr-' + index;\n var tableId = 'gt-hr-tb-' + index;\n $table.attr('id', tableId);\n var styleDom = $('#' + styleId);\n var $tr = $table.find('tbody tr');\n if ($tr.length > 0 && $tr.width() > $table.width()) {\n var trWidth = $tr.width();\n var borderWidth = (trWidth - 32);\n if (styleDom.length > 0) styleDom.remove();\n var dom = $('');\n $('body').append(dom);\n } else {\n if (styleDom.length > 0) {\n styleDom.remove();\n }\n }\n }\n};\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n GT.HorizontalTable($(\".gt-horizontal-table\"));\n });\nGT.IBCDListingPage = function() {\n document.addEventListener(\"click\", function(e){\n let trackingElm = e.target.closest(\"[data-gtm-tracking]\");\n if(trackingElm) {\n dataLayer.push({ 'event': 'ibcd_listing', 'eventAction': trackingElm.dataset.gtmTracking, \"eventLabel\": trackingElm.closest(\".t4-single__expert\").dataset.trackingLabel });\n }\n })\n}\n\nGT.domContentLoadedFncList.push(function(){\n GT.IBCDListingPage();\n});\nGT.GTIBCFinder = function () {\n let _currentSelectedCountry = '',\n _suggestSection = document.querySelector('.ibc-suggested__section'),\n autoCompleteObj;\n\n let countriesListElm = document.getElementById('countriesList');\n \n let ibcFinderLatLongEndpoint = document.getElementById('ibcFinderLatLongEndpoint');\n let ibcSearchbox = document.getElementById('ibc_finder_searchbox');\n let ibcFinderSelectContainer = document.querySelector('.ibc-finder__select--container');\n \n if(!ibcSearchbox || !ibcFinderSelectContainer || !ibcFinderLatLongEndpoint || !_suggestSection)\n return;\n\n _currentSelectedCountry = ibcSearchbox.getAttribute('placeholder');\n\n initDropdown();\n useMyLocation();\n function initDropdown() {\n selectCountry();\n if(ibcSearchbox) {\n ibcSearchbox.addEventListener('click', initIbcSelectbox);\n }\n\n function initIbcSelectbox() {\n ibcSearchbox.value = \"\";\n ibcSearchbox.setAttribute('placeholder', _currentSelectedCountry);\n \n if(ibcFinderSelectContainer.classList.contains('dropdown-expanded')) {\n ibcFinderSelectContainer.classList.remove('dropdown-expanded');\n } else {\n ibcFinderSelectContainer.classList.add('dropdown-expanded');\n }\n }\n\n document.addEventListener('click', function(event) {\n let _autoCompleteSelect = event.target;\n ibcSearchbox.value = \"\";\n\n ibcSearchbox.setAttribute('placeholder', _currentSelectedCountry);\n \n if (!_autoCompleteSelect.closest('.bc-finder__select--container')\n && !_autoCompleteSelect.closest('.ibc-finder__select--searchbox')) {\n\n let autoCompleteElm = document.querySelector('.ibc-finder__autocomplete-suggestions');\n if(autoCompleteElm) autoCompleteElm.style.display = 'none';\n if(ibcFinderSelectContainer) ibcFinderSelectContainer.classList.remove('dropdown-expanded');\n\n if(!_currentSelectedCountry) {\n let __countrySelected = document.getElementById('countrySelected');\n _currentSelectedCountry = __countrySelected.getAttribute('data-value');\n }\n\n ibcSearchbox.setAttribute('placeholder', _currentSelectedCountry);\n ibcSearchbox.blur();\n }\n return true;\n });\n\n \n let __countrySelected = document.getElementById('countrySelected');\n if(__countrySelected) {\n dataLayer.push({ 'event': 'ibcd', 'eventAction': 'selected_country', 'eventLabel': __countrySelected.getAttribute('data-value')});\n dataLayer.push({ 'event': 'ibcd', 'eventAction': 'locationdeteced', 'eventLabel': 'by_maxmind'});\n peopleTracking();\n }\n }\n\n function countriesLookup(query) {\n let result = [],\n countriesList = countriesListElm.getAttribute('data-value');\n countriesList = JSON.parse(countriesList);\n \n if(!query) return countriesList;\n \n if(countriesList && countriesList.length > 0) {\n result = countriesList.filter(function(obj) {\n return (obj.value.toLowerCase().indexOf(query.toLowerCase()) > -1) || (obj.data.toLowerCase().indexOf(query.toLowerCase()) > -1);\n });\n return result;\n }\n }\n\n function selectCountry() {\n if(autoCompleteObj) autoCompleteObj.destroy();\n\n autoCompleteObj = new autoComplete({\n selector: '#ibc_finder_searchbox',\n minChars: 0,\n cache: 0,\n menuClass: 'ibc-finder__autocomplete-suggestions',\n source: function(term, suggest){\n term = term.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n let tmpArr = countriesLookup(term);\n suggest(tmpArr);\n },\n renderItem: function (item, search){\n search = search.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n var re = new RegExp(\"(\" + search.split(' ').join('|') + \")\", \"gi\");\n return '
    ' + item.value.replace(re, \"$1\") + '
    ';\n },\n onSelect: function (event, term, item) {\n ibcFinderSelectContainer.classList.remove('dropdown-expanded');\n \n let __countrySelected = document.getElementById('countrySelected');\n if(__countrySelected)\n __countrySelected.setAttribute('data-value', term);\n\n getSelectedCountry(term);\n _currentSelectedCountry = term;\n\n },\n })\n }\n\n function peopleTracking(){\n document.querySelectorAll(\".ibc-contact\").forEach(function(item) {\n item.addEventListener(\"click\", function(ev){\n let item = ev.target;\n let peopleName = item.closest(\".contact-details\").querySelector(\".ibc-suggested__title\");\n peopleName = peopleName ? peopleName.innerText : \"Unknown People\";\n\n let currentFirm = item.closest(\".ibc-glide__container\").querySelector(\".firm .glide__slide--active\") || item.closest(\".ibc-glide__container\").querySelector(\".firm .glide__slide\");\n currentFirm = currentFirm ? currentFirm.querySelector(\".ibc-suggested__title\").innerText : \"Unknown Firm\";\n\n dataLayer.push({ 'event': 'ibcd', 'eventAction': 'selected_member_firm', 'eventLabel': currentFirm + \" / \" + peopleName});\n })\n })\n }\n\n function getSelectedCountry(selectedCountry) {\n let _endPointUrl = document.getElementById('ibcFinderEndpoint').getAttribute('data-endpoint'),\n _lastSectionHeight = _suggestSection.offsetHeight;\n\n let xhttp = new XMLHttpRequest();\n xhttp.onreadystatechange = function () {\n if (this.readyState == 4) {\n let data = this.response;\n if (data && this.status == 200) {\n ibcFinderSelectContainer.classList.remove('dropdown-expanded');\n _suggestSection.style.opacity = 0;\n GT.disableDetectScrollUpOrDown = true;\n if (!document.querySelector('.no-ibc__support')) {\n _suggestSection.style.height = _lastSectionHeight + 'px';\n _suggestSection.style.overflow = 'hidden';\n }\n\n setTimeout(function() {\n _suggestSection.innerHTML = data;\n let _ibcGlide = document.querySelector('.ibc-glide__container');\n\n if(_ibcGlide) {\n _ibcGlide.querySelectorAll(\".glide\").forEach(function(item) {\n GT.Glide(item);\n })\n } else {\n GT.clampText(\"ibcblock\");\n }\n\n \n dataLayer.push({ 'event': 'ibcd', 'eventAction': 'selected_country', 'eventLabel': selectedCountry});\n\n \n setTimeout(function() {\n _suggestSection.style.removeProperty('height');\n _suggestSection.style.removeProperty('overflow');\n _suggestSection.style.opacity = 1;\n GT.disableDetectScrollUpOrDown = false;\n _lastSectionHeight = _suggestSection.offsetHeight;\n setSearchboxValue();\n peopleTracking();\n }, _ibcGlide ? 800 : 100);\n }, 100);\n }\n }\n };\n xhttp\n xhttp.open(\"GET\", _endPointUrl + '/?country=' + encodeURIComponent(selectedCountry), true);\n xhttp.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n xhttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhttp.send();\n }\n\n function getIBCByLatLong(latitude, longitude) {\n let _endPointUrl = ibcFinderLatLongEndpoint.getAttribute('data-endpoint');\n let _lastSectionHeight = _suggestSection.offsetHeight;\n \n let xhttp = new XMLHttpRequest();\n xhttp.onreadystatechange = function () {\n if (this.readyState == 4) {\n let data = this.response;\n if (data && this.status == 200) {\n _suggestSection.style.opacity = 0;\n GT.disableDetectScrollUpOrDown = true;\n if (!document.querySelector('.no-ibc__support')) {\n _suggestSection.style.height = _lastSectionHeight + 'px';\n _suggestSection.style.overflow = 'hidden';\n }\n setTimeout(function() {\n _suggestSection.innerHTML = data;\n setSearchboxValue();\n let _ibcGlide = document.querySelector('.ibc-glide__container');\n \n if(_ibcGlide) {\n _ibcGlide.querySelectorAll(\".glide\").forEach(function(item) {\n GT.Glide(item);\n })\n } else {\n GT.clampText(\"ibcblock\");\n }\n\n setTimeout(function() {\n _suggestSection.style.removeProperty('height');\n _suggestSection.style.removeProperty('overflow');\n _suggestSection.style.opacity = 1;\n GT.disableDetectScrollUpOrDown = false;\n _lastSectionHeight = _suggestSection.offsetHeight;\n\n let __currentCountry = document.getElementById('countrySelected');\n if(__currentCountry) {\n ibcSearchbox.setAttribute('placeholder', __currentCountry.getAttribute('data-value'));\n _currentSelectedCountry = __currentCountry.getAttribute('data-value');\n dataLayer.push({ 'event': 'ibcd', 'eventAction': 'selected_country', 'eventLabel': _currentSelectedCountry});\n dataLayer.push({ 'event': 'ibcd', 'eventAction': 'locationdeteced', 'eventLabel': 'by_googlemap'});\n ibcSearchbox.value = \"\";\n ibcSearchbox.blur();\n peopleTracking();\n }\n }, _ibcGlide ? 800 : 100);\n }, 100);\n }\n }\n };\n xhttp.open(\"GET\", _endPointUrl + '?latitude=' + latitude + '&longitude=' + longitude, true);\n xhttp.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n xhttp.send();\n }\n\n function setSearchboxValue() {\n let __countrySelected = document.getElementById('countrySelected');\n let _selectedCountry = __countrySelected.getAttribute('data-value');\n _currentSelectedCountry = _selectedCountry;\n\n ibcSearchbox.setAttribute('placeholder', _currentSelectedCountry);\n ibcSearchbox.blur();\n\n let autoCompleteElm = document.querySelector('.ibc-finder__autocomplete-suggestions');\n if(autoCompleteElm) autoCompleteElm.style.display = 'none';\n }\n\n function useMyLocation() {\n \n let ibcCurrentLocationElm = document.querySelector('.ibc-current__location');\n if(ibcCurrentLocationElm) {\n ibcCurrentLocationElm.addEventListener('click', function() {\n if (navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(successFunction, errorFunction);\n }\n this.blur();\n });\n }\n }\n\n function successFunction(position) {\n getIBCByLatLong(position.coords.latitude, position.coords.longitude);\n }\n \n function errorFunction() {\n var accessErrorMessage = document.getElementById('cannotAccessErrorMessage').getAttribute('data-value');\n if (!accessErrorMessage) {\n accessErrorMessage = 'Access device location is required to use this feature.';\n }\n _suggestSection.innerHTML = '
    ' + accessErrorMessage + '
    ';\n }\n};\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\t\n\t\tnew GT.GTIBCFinder();\n });\n\nGT.ImagesGallery = function ($element) {\n var $modal = $element.find('.gt-modal');\n var $img = $element.find('.lightbox');\n var $close = $element.find('.close');\n var $next = $element.find('.next');\n var $prev = $element.find('.prev');\n var slideIndex = 1;\n\n function closeModal() {\n $($element).removeClass('active');\n $modal.find('img').remove();\n }\n \n function plusSlides(n) {\n showSlides(slideIndex += n);\n }\n\n function currentSlide(n) {\n showSlides(slideIndex = n);\n }\n\n function showSlides(n) {\n var slides = $('.gt-gallery__block.active').find(\".gallery-item\");\n if (n > slides.length) {\n slideIndex = 1\n }\n if (n < 1) {\n slideIndex = slides.length\n }\n var img = '\"'';\n $('.gt-gallery__block.active .gt-modal .modal-content img').remove();\n $('.gt-gallery__block.active .gt-modal .modal-content').append(img);\n }\n\n $img.on('click keydown', function () {\n $(this).parents($element).addClass('active');\n var $item = parseInt($(this).attr(\"data-order\"));\n currentSlide($item);\n });\n\n $close.on('click keydown', function () {\n closeModal();\n });\n\n $modal.on('click keydown', function (e) {\n if (e.target.classList != \"next\" && e.target.classList != 'prev' && e.target.classList != 'light_view') closeModal();\n });\n\n $next.on('click keydown', function () {\n plusSlides(1);\n });\n\n $prev.on('click keydown', function () {\n plusSlides(-1);\n });\n\n $(document).keydown(function (event) {\n if (event.keyCode == 37) {\n plusSlides(1);\n } else if (event.keyCode == 39) {\n plusSlides(-1);\n }else if (event.keyCode === 27){\n closeModal();\n }\n });\n};\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n new GT.ImagesGallery($('.gt-gallery__block'));\n });\n\nGT.InputLabel = function ($elem) {\n\n var input = $($elem).children('input');\n var label = $($elem).children('label');\n\n input.on('input', function (e) {\n if (input.val() != 0) {\n label.css('opacity', '0');\n } else {\n label.css('opacity', '1');\n }\n });\n\n};\n\nGT.GTInsightArticle = function () {\n contributorPopover();\n wrapWideImage();\n checkBookmark();\n addToReadingListEvent();\n\n //stickyEnabled\n var stickyEnabled = stickyHeaderState(); \n\n //topBannerExist\n var topBannerExist = isMessageTopBannerExist();\n\n if (!isMobileWidth() && !stickyEnabled && topBannerExist ) {\n $('.insight-page header').find('.header-top-wrapper').css({'position':'absolute','top':'30px'});\n }\n\n function contributorPopover() {\n $('.contributor-has_social').each(function () {\n var _this = $(this);\n var popoverTimer = (function () {\n var timer;\n return function () {\n clearTimeout(timer); \n timer = setTimeout(function(){\n _this.find('.contributor-social__link').hide(); \n },2000); \n };\n })();\n \n _this.on('mouseenter touchstart', function () { \n _this.siblings().find('.contributor-social__link').hide();\n _this.find('.contributor-social__link').show();\n _this.find('.contributor-name').css(\"text-decoration\", \"underline\"); \n }).on('mouseleave touchend', function () {\n _this.find('.contributor-name').css(\"text-decoration\", \"none\");\n popoverTimer();\n });\n });\n\n $(document).on('click', function (event) {\n if (!$(event.target).closest('.contributor-has_social').length) {\n $('.contributor-social__link').hide(); \n }\n return true;\n });\n }\n\n function wrapWideImage() {\n $('.text-area__contents img.img-wide').wrap('
    ');\n }\n\n function stickyHeaderState() {\n var stickyState = $('.insight-page header').data('sticky');\n return stickyState;\n }\n\n function isMessageTopBannerExist() {\n var topBannerstate = $('.header').find('.header-message-top-banner-wrapper').length;\n return topBannerstate;\n }\n\n function checkRPIavailable() {\n var _rpi = $('.header').find('.rpi-progress-bar').length;\n return _rpi;\n }\n\n function checkBookmark(){\n var isBookmarked = $('.bookmark-article__button').attr('data-isbookmarked');\n if (isBookmarked === \"True\"){\n $('.add-to-reading-list').hide();\n }\n }\n\n function addToReadingListEvent(){\n $('.add-to-reading-list__button').click(function () {\n $('.bookmark-article__button').trigger('click');\n });\n }\n\n function isMobileWidth() {\n return $(window).width() < 961;\n }\n};\n\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n GT.GTInsightArticle();\n });\n\n\nGT.InsightFilters = function ($element, obj) {\n let __ths = this;\n let _filterTagsTaxonomies = [];\n\n init();\n\n function taxonomyFilterTabs() {\n let _insightLandingFilters = document.querySelector('.insight-landing__filters');\n if(!_insightLandingFilters) return;\n let _taxonomyTabItems = _insightLandingFilters.querySelectorAll('.select-filter__item');\n [].forEach.call(_taxonomyTabItems, function(tabItem) {\n tabItem.addEventListener('click', function(e) {\n let _this = this;\n let _child = e.target.closest('.select-filter__condition');\n if(_child) return;\n \n if(_this.classList.contains('expanded')) {\n _this.classList.remove('expanded');\n _this.querySelector(\".select-filter__button\").setAttribute(\"aria-expanded\", false);\n window.removeEventListener(\"keydown\", pressESCToClose);\n } else {\n let _oldActiveTab = _insightLandingFilters.querySelector('.select-filter__item.expanded');\n if(_oldActiveTab && _oldActiveTab.classList.contains('expanded')) _oldActiveTab.classList.remove('expanded');\n\n window.addEventListener(\"keydown\", pressESCToClose);\n _this.classList.add('expanded');\n _this.querySelector(\".select-filter__button\").setAttribute(\"aria-expanded\", true);\n }\n });\n\n if(!GT.isMobileCached) {\n tabItem.querySelector(\".select-filter__button\").addEventListener(\"keydown\", function(e) {\n if(e.key == \"Tab\" && e.shiftKey && this.closest(\".expanded\")) {\n e.preventDefault();\n this.closest(\".expanded\").querySelector(\".insight-apply__filters--btn\").focus();\n }\n })\n }\n });\n }\n \n function processFilterCheckbox(_filterCheckbox) {\n let _filterCheckboxValue = _filterCheckbox.value;\n if(_filterCheckbox.checked) {\n let _parentTaxonomy = _filterCheckbox.getAttribute('parent-taxonomy');\n let _parentTaxonomyArr = _filterTagsTaxonomies[_parentTaxonomy];\n if(_parentTaxonomyArr) {\n if(_parentTaxonomyArr.indexOf(_filterCheckboxValue) < 0) _parentTaxonomyArr.push(_filterCheckboxValue);\n } else {\n _parentTaxonomyArr = [];\n _parentTaxonomyArr.push(_filterCheckboxValue);\n }\n\n _filterTagsTaxonomies[_parentTaxonomy] = _parentTaxonomyArr;\n }\n }\n\n function processFilterTagLabel(_tagLabel) {\n if(_tagLabel) {\n let _tagLabelValue = _tagLabel.getAttribute('data-value');\n let _parentTaxonomy = _tagLabel.getAttribute('data-parenttagkey');\n if(_parentTaxonomy) {\n let _parentTaxonomyArr = _filterTagsTaxonomies[_parentTaxonomy];\n if(_parentTaxonomyArr) {\n if(_parentTaxonomyArr.indexOf(_tagLabelValue) < 0) _parentTaxonomyArr.push(_tagLabelValue);\n } else {\n _parentTaxonomyArr = [];\n _parentTaxonomyArr.push(_tagLabelValue);\n }\n\n _filterTagsTaxonomies[_parentTaxonomy] = _parentTaxonomyArr;\n }\n }\n }\n\n function initFilterByLabel() {\n let filterButtonsContainer = document.querySelector('.filter-result__tags--buttons');\n if(filterButtonsContainer) {\n // Get all current taxonomies are filterred and push into _filterTagsTaxonomies array.\n getAllFilterredTaxonomies();\n\n let _filterLables = filterButtonsContainer.querySelectorAll('button.filter-result__tag-item');\n [].forEach.call(_filterLables, function(filterBtn){\n filterBtn.addEventListener('click', function(e) {\n let _this = this;\n let _taxFilterValue = _this.getAttribute('data-value');\n if(!_filterTagsTaxonomies) _filterTagsTaxonomies = [];\n let _parentTaxonomy = _this.getAttribute('data-parenttagkey');\n let _parentTaxonomyArr = _filterTagsTaxonomies[_parentTaxonomy];\n if(_parentTaxonomyArr) {\n for(let i = 0; i < _parentTaxonomyArr.length; i++) {\n let _childTaxonomy = _parentTaxonomyArr[i];\n if(_taxFilterValue == _childTaxonomy) {\n _parentTaxonomyArr.splice(i, 1);\n break;\n }\n }\n }\n\n if(_this.getAttribute('data-people')) {\n let _urlSearchParams = new URLSearchParams(window.location.search);\n let _filterByPeoples = _urlSearchParams.getAll('people');\n let _people = _this.getAttribute('data-people');\n if(_filterByPeoples && _filterByPeoples.length > 0) {\n for(let i = 0; i < _filterByPeoples.length; i++) {\n let _existedPeople = _filterByPeoples[i];\n if(_people == _existedPeople) {\n _filterByPeoples.splice(i, 1);\n break;\n }\n }\n __ths.setParameterInQueryString(\"people\", _people, true);\n if(_filterByPeoples && _filterByPeoples.length > 0) {\n [].forEach.call(_filterByPeoples, function(people){\n _urlSearchParams.append('people', people);\n });\n history.replaceState(null, null, \"?\" + _urlSearchParams.toString() + location.hash);\n }\n }\n }\n\n _filterTagsTaxonomies[_parentTaxonomy] = _parentTaxonomyArr;\n\n __ths.searchResultsByTaxonomies([], false, '', ''); \n });\n });\n }\n }\n\n function initClearFilterByLabel() {\n let _clearFilterLabelBtns = document.querySelectorAll('button.search-filters__reset-btn');\n [].forEach.call(_clearFilterLabelBtns, function(_clearFilterLabel){\n _clearFilterLabel.addEventListener('click', function(e) { \n // Clear all data get from filter checkboxes\n _filterTagsTaxonomies = [];\n\n // Delete all peoples in queries string\n __ths.setParameterInQueryString(\"people\", '', true);\n __ths.setParameterInQueryString(\"hubtag\", '', true);\n __ths.setParameterInQueryString(\"Sort\", '', true);\n\n __ths.searchResultsByTaxonomies([], false, '', '');\n });\n });\n }\n\n function pressESCToClose(e){\n if(e.key == \"Escape\") {\n let currentCursorActiveElm = document.querySelector(\".select-filter__item.expanded button\");\n if(currentCursorActiveElm) {\n currentCursorActiveElm.focus();\n currentCursorActiveElm.click();\n }\n }\n }\n \n // Search Filter Select Handling On Desktop\n function insightsFilterHandle() {\n let _applyFilterBtns = document.querySelectorAll('.insight-apply__filters--btn');\n [].forEach.call(_applyFilterBtns, function(applyFilterBtn) {\n\n applyFilterBtn.addEventListener('click', function() {\n let _insightsFilterContainer = document.querySelector('.search-filters__tabs');\n if(_insightsFilterContainer) {\n _filterTagsTaxonomies = [];\n let _insightsFilterItems = _insightsFilterContainer.querySelectorAll('input[type=\"checkbox\"].filters__item:checked');\n [].forEach.call(_insightsFilterItems, function(checkedItem){\n if(checkedItem) {\n processFilterCheckbox(checkedItem);\n }\n });\n }\n\n let _queryParams = new URLSearchParams(window.location.search);\n let _params = [];\n let _currentPageIndex = parseInt(document.getElementById('CurrentPageIndex').value);\n\n // Clear all pagination when apply new filter\n if(_queryParams.get('CurrentPageIndex')){\n _queryParams.delete('CurrentPageIndex');\n }\n\n // Clear all hub tag when apply new filter\n if(_queryParams.get('hubtag')){\n _queryParams.delete('hubtag');\n }\n\n if(_currentPageIndex <= 0) {\n if(_queryParams.get('page')){\n _queryParams.delete('page');\n }\n }\n __ths.searchResultsByTaxonomies(_params, false, '', '');\n });\n\n if(!GT.isMobileCached) {\n applyFilterBtn.addEventListener(\"keydown\", function(e) {\n if(e.key == \"Tab\" && !e.shiftKey) {\n e.preventDefault();\n this.closest(\".expanded\").querySelector(\".select-filter__button\").focus();\n }\n })\n }\n });\n }\n\n function queryParams(_urlSearchParams, params) {\n for (var key in params) {\n if(key == 'peoples') {\n let _peoples = params[key];\n if(_peoples && _peoples.length > 0) {\n [].forEach.call(_peoples, function(people){\n _urlSearchParams.append('people', people);\n });\n }\n } else if(key == 'hubtag') {\n let _hubtag = params[key];\n if(_hubtag && _hubtag.length > 0) {\n _urlSearchParams.append('hubtag', _hubtag);\n }\n } else {\n _urlSearchParams.set(key, params[key]);\n }\n }\n\n if(_filterTagsTaxonomies) {\n for (var key in _filterTagsTaxonomies) {\n let _tagsArr = _filterTagsTaxonomies[key];\n if(!_tagsArr) return;\n let _tagsStr = '';\n let _counter = 0;\n [].forEach.call(_tagsArr, function(_tagValue){\n if(_tagValue && _tagValue.length > 0) _tagsStr += _tagValue;\n if(_counter < _tagsArr.length - 1 ) {\n _tagsStr += '+';\n }\n _counter++;\n });\n if(_tagsStr && _tagsStr.length > 0) _urlSearchParams.append('tags', _tagsStr);\n }\n }\n\n return _urlSearchParams.toString();\n }\n\n __ths.setParameterInQueryString = function(key, value, isDelete) {\n var queryParams = new URLSearchParams(window.location.search);\n if(isDelete)\n queryParams.delete(key);\n else\n queryParams.set(key, value);\n history.replaceState(null, null, \"?\" + queryParams.toString() + location.hash);\n }\n\n __ths.getParameterInQueryString = function(key) {\n var queryParams = new URLSearchParams(window.location.search);\n return queryParams.get(key);\n }\n\n function toggleFiltersForm() {\n let _filtersContainer = document.getElementById('insightLandingFilters'),\n _filtersContainerToggle = document.querySelectorAll('[data-toggle=\"insightLandingFilters\"]'),\n _filterBtn = document.querySelector(\".insight-filter__header-mobile button\");\n\n if (_filtersContainerToggle)\n for (var i = 0; i < _filtersContainerToggle.length; i++) {\n _filtersContainerToggle[i].addEventListener('click', function () {\n if(_filtersContainer.classList.contains(\"active\")) {\n _filtersContainer.classList.remove('active');\n document.querySelector(\".gt-wrapper\").classList.remove(\"opening-mobile-filter\");\n if(_filterBtn) {\n _filterBtn.focus();\n _filterBtn.setAttribute(\"aria-expanded\", false);\n }\n } else {\n _filtersContainer.classList.add('active');\n _filterBtn?.setAttribute(\"aria-expanded\", true);\n setTimeout(e => {\n document.querySelector(\"#filtersFormCloseBtn\")?.focus();\n document.querySelector(\".gt-wrapper\").classList.add(\"opening-mobile-filter\");\n }, 1000)\n }\n })\n }\n\n if (_filtersContainer)\n document.querySelector('.main-header .menu-toggle').addEventListener('click', function() {\n _filtersContainer.classList.remove('active');\n })\n }\n\n function showActiveFilters () {\n let _selectFilterItems = document.querySelectorAll('.select-filter__item');\n [].forEach.call(_selectFilterItems, function(checkedItem){\n let checkedCheckbox = checkedItem.querySelector('[type=\"checkbox\"].filters__item:checked');\n if(checkedCheckbox) {\n checkedItem.classList.add('expanded');\n }\n });\n }\n\n function toggleOverhiddenHTML() {\n let _filtersShowBtn = document.querySelector('.search-results__filters-show'),\n _filtersHideBtn = document.querySelector('.search-filters__close-btn');\n\n if (_filtersShowBtn)\n _filtersShowBtn.addEventListener('click', function() {\n document.querySelector('html').classList.add('overflowHidden--mobile');\n })\n\n if (_filtersHideBtn)\n _filtersHideBtn.addEventListener('click', function() {\n document.querySelector('html').classList.remove('overflowHidden--mobile');\n })\n }\n\n function init() {\n\n if( /Android/i.test(navigator.userAgent) ) {\n let insightResultContainer = document.querySelector('.insight-results__container');\n if(insightResultContainer) {\n insightResultContainer.classList.add('android-devices');\n }\n }\n\n taxonomyFilterTabs();\n insightsFilterHandle();\n initClearFilterByLabel();\n initFilterByLabel();\n initLoadmoreButton();\n registerSortEvt();\n\n toggleFiltersForm();\n toggleOverhiddenHTML();\n if(GT.isMobileView()) {\n showActiveFilters();\n }\n\n clickOutsideFilterContainer();\n }\n\n function initLoadmoreButton() {\n let _loadmoreButton = document.getElementById('insightFilterLoadmore');\n if(_loadmoreButton) {\n _loadmoreButton.addEventListener('click', function(e) {\n e.preventDefault();\n let _this = this;\n let _loadmoreEndpoint = _this.getAttribute('data-endpoint') || '';\n __ths.loadMoreResultsByTag(_loadmoreEndpoint);\n });\n }\n }\n\n __ths.escapeQueryChars = function (url) {\n return url ? url\n .replace(/\\s/gi, '+')\n .replace(/\\%20/gi, '+')\n .replace(/\\%(3C|3E)/gi, function (match, dec) {\n return encodeURI('%') + dec;\n }) : url;\n };\n\n function getAllFilterredTaxonomies() {\n let _currentTagsFilterred = document.querySelectorAll('button.filter-result__tag-item');\n if(_currentTagsFilterred && _currentTagsFilterred.length > 0) {\n [].forEach.call(_currentTagsFilterred, function(filterredByTaxonomy){\n if(filterredByTaxonomy) {\n processFilterTagLabel(filterredByTaxonomy);\n }\n });\n }\n }\n\n __ths.loadMoreResultsByTag = function (_loadmoreEndpoint) {\n \n let _currentPageIndex = parseInt(document.getElementById('CurrentPageIndex').value);\n let _params = [];\n _params['CurrentPageIndex'] = _currentPageIndex + 1;\n\n getAllFilterredTaxonomies();\n\n __ths.searchResultsByTaxonomies(_params, true, _loadmoreEndpoint);\n };\n\n __ths.ajaxCall = function (url, successCallback) {\n var contextRef = this;\n let __url = url;\n var xhttp = new XMLHttpRequest();\n xhttp.onreadystatechange = function () {\n if (this.readyState == 4) {\n if (this.response && this.status == 200) {\n successCallback(contextRef, this.response);\n } else {\n // isInited = false;\n }\n }\n };\n xhttp.open(\"GET\", __url, true);\n xhttp.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n xhttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhttp.send();\n }\n\n __ths.searchResultsByTaxonomies = function (_queryParams, _isAppendResults, _otherEndpoint, _replaceContainer) {\n let _ajaxUrl = '';\n if(_isAppendResults) {\n _ajaxUrl = queriesStringBuilder(_queryParams, _otherEndpoint, true);\n __ths.ajaxCall(_ajaxUrl, successCallback);\n return false;\n } else {\n _ajaxUrl = queriesStringBuilder(_queryParams);\n }\n\n function successCallback(contextRef, data) {\n __ths.appendResults(contextRef, data);\n setTimeout(function() {\n GT.clampArticle(true);\n GT.GTBookmarkArticle && GT.GTBookmarkArticle();\n }, 500);\n }\n //dataLayer.push({ 'event': 'global_search', 'eventAction': 'search', 'eventLabel': _ajaxUrl });\n window.location.href = _ajaxUrl;\n };\n\n function registerSortEvt(){\n let _sortSelectBoxesContainer = document.querySelectorAll('.search-results__sort-select');\n\n [].forEach.call(_sortSelectBoxesContainer, function(_sortSelectBoxContainer){\n if(_sortSelectBoxContainer) {\n let _sortingSelectBox = _sortSelectBoxContainer.querySelector('.styleSelBox');\n //update sort params when change sort select\n if(_sortingSelectBox) {\n _sortingSelectBox.addEventListener('change', function (e) {\n let _params = [];\n \n let _urlSearchParams = new URLSearchParams(window.location.search);\n // Clear all pagination when sorting\n if(_urlSearchParams.get('CurrentPageIndex')){\n _urlSearchParams.delete('CurrentPageIndex');\n }\n\n let _filterByHubTag = _urlSearchParams.getAll('hubtag');\n if(_filterByHubTag && _filterByHubTag.length > 0) {\n _params['hubtag'] = _filterByHubTag;\n }\n\n __ths.searchResultsByTaxonomies(_params, false,'', '');\n });\n }\n }\n });\n }\n \n function queriesStringBuilder(_params, _otherEndpoint, _isLoadmore) {\n\n if(!_params) _params = [];\n\n let _urlSearchParams = new URLSearchParams(window.location.search);\n \n let _filterByPeoples = _urlSearchParams.getAll('people');\n if(_filterByPeoples && _filterByPeoples.length > 0) {\n _params['peoples'] = _filterByPeoples;\n }\n\n _urlSearchParams = new URLSearchParams();\n let _searchSorting = '';\n let _sortingSelectBox = document.getElementById('select_sorting_desktop');\n\n if(_sortingSelectBox) {\n _searchSorting = _sortingSelectBox.value;\n }\n\n if(_searchSorting && _searchSorting.length > 0) {\n _params['Sort'] = _searchSorting;\n } else {\n _urlSearchParams.delete('Sort');\n }\n\n let _ajaxUrl = '';\n if(_isLoadmore) {\n if(_otherEndpoint && _otherEndpoint.length > 0) {\n _ajaxUrl = _otherEndpoint;\n }\n } else {\n _ajaxUrl = '?';\n }\n \n let _queryParams = queryParams(_urlSearchParams, _params);\n if(_queryParams && _queryParams.length > 0) {\n if(_isLoadmore ) _ajaxUrl += '&';\n _ajaxUrl += _queryParams;\n }\n\n return __ths.escapeQueryChars(_ajaxUrl);\n }\n\n __ths.appendResults = function (contextRef, data) {\n let _insightResultsContainer = document.getElementById('insightResultsContainer');\n _insightResultsContainer.insertAdjacentHTML(\"beforeend\", data);\n let _currentPageIndex = parseInt(document.getElementById('CurrentPageIndex').value);\n document.getElementById('CurrentPageIndex').value = _currentPageIndex + 1;\n __ths.setParameterInQueryString(\"page\", _currentPageIndex + 1);\n __ths.setShowingNumber();\n \n shouldLoadMore();\n }\n\n __ths.setShowingNumber = function () {\n let _showedInsightItems = document.querySelectorAll('.insight-article__item').length || 0;\n let _showingNumberElement = document.querySelector('#totalResultShowing');\n if(_showingNumberElement) _showingNumberElement.innerHTML = _showedInsightItems;\n }\n\n function clickOutsideFilterContainer() {\n document.addEventListener('mouseup', function(e) {\n let _filterItemContainers = document.querySelectorAll('.select-filter__item');\n \n [].forEach.call(_filterItemContainers, function(_filterItem){\n let _filterConditionContainer = _filterItem.querySelector('.select-filter__condition');\n if (!_filterConditionContainer.contains(e.target) && !_filterItem.contains(e.target)) {\n _filterItem.classList.remove('expanded');\n }\n });\n });\n }\n\n function shouldLoadMore() {\n let _loadBtn = document.getElementById('insightFilterLoadmore');\n\n if(!_loadBtn) \n return;\n\n let _pageIndexByTags = parseInt(document.getElementById('CurrentPageIndex').value);\n let totalItems = parseInt(document.getElementById('TotalItemsCount').value);\n \n let _pageSize = parseInt(document.getElementById('PageSize').value);\n let maxPage = Math.ceil(totalItems / _pageSize);\n let loadMoreContainer = document.querySelector(\".load-more-container\")\n\n if (maxPage <= (_pageIndexByTags + 1)) {\n if(loadMoreContainer)\n loadMoreContainer.classList.add(\"hidden\");\n else\n _loadBtn.classList.add('hidden');\n\n } else {\n if(loadMoreContainer) {\n loadMoreContainer.classList.remove(\"hidden\");\n }\n else {\n _loadBtn.classList.remove('hidden');\n }\n \n if(_loadBtn.href) {\n _loadBtn.href = location.href.replace(\"page=\" + _pageIndexByTags, \"page=\" + (_pageIndexByTags + 1));\n }\n }\n \n let canonicalElm = document.querySelector('link[rel=\"canonical\"]');\n if(canonicalElm)\n canonicalElm.href = location.origin + location.pathname + (_pageIndexByTags > 0 ? \"?page=\" + _pageIndexByTags : \"\"); \n };\n};\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function () {\n GT.InsightFilters();\n });\nGT.InsightFiltersV2 = function ($element, obj) {\n let __ths = {},\n _loadBtn;\n _filterTagsTaxonomies = [],\n __ths.UNACTIVE = 0, \n __ths.ACTIVE = 1,\n __ths.searchState = __ths.ACTIVE,\n __ths.currentFilterTabIndex = -1;\n\n\n __ths.currentTotalDisplayingItems = function(currentElm) {\n return currentElm.querySelectorAll(\".insight-article__item\").length;\n }\n\n function taxonomyFilterTabs() {\n let _insightLandingFilters = document.querySelector('.insight-landing__filters');\n if(!_insightLandingFilters) return;\n let _taxonomyTabItems = _insightLandingFilters.querySelectorAll('.select-filter__item');\n [].forEach.call(_taxonomyTabItems, function(tabItem, idx) {\n tabItem.dataset.index = idx;\n tabItem.addEventListener('click', function(e) {\n let _this = this;\n let _child = e.target.closest('.select-filter__condition');\n if(_child) return;\n \n \n if(_this.classList.contains('expanded')) {\n _this.classList.remove('expanded');\n _this.querySelector(\".select-filter__button\").setAttribute(\"aria-expanded\", false);\n window.removeEventListener(\"keydown\", pressESCToClose);\n __ths.currentFilterTabIndex = -1;\n } else {\n let _oldActiveTab = _insightLandingFilters.querySelector('.select-filter__item.expanded');\n if(_oldActiveTab && _oldActiveTab.classList.contains('expanded')) _oldActiveTab.classList.remove('expanded');\n\n window.addEventListener(\"keydown\", pressESCToClose);\n _this.classList.add('expanded');\n _this.querySelector(\".select-filter__button\").setAttribute(\"aria-expanded\", true);\n __ths.currentFilterTabIndex = parseInt(e.target.closest(\".select-filter__item\")?.dataset.index || -1);\n }\n });\n\n if(!GT.isMobileCached) {\n tabItem.querySelector(\".select-filter__button\").addEventListener(\"keydown\", function(e) {\n if(e.key == \"Tab\" && e.shiftKey && this.closest(\".expanded\")) {\n e.preventDefault();\n this.closest(\".expanded\").querySelector(\".insight-apply__filters--btn\").focus();\n }\n })\n }\n });\n }\n \n function processFilterCheckbox(_filterCheckbox) {\n let _filterCheckboxValue = _filterCheckbox.value;\n if(_filterCheckbox.checked) {\n let _parentTaxonomy = _filterCheckbox.getAttribute('parent-taxonomy');\n let _parentTaxonomyArr = _filterTagsTaxonomies[_parentTaxonomy];\n if(_parentTaxonomyArr) {\n if(_parentTaxonomyArr.indexOf(_filterCheckboxValue) < 0) _parentTaxonomyArr.push(_filterCheckboxValue);\n } else {\n _parentTaxonomyArr = [];\n _parentTaxonomyArr.push(_filterCheckboxValue);\n }\n\n _filterTagsTaxonomies[_parentTaxonomy] = _parentTaxonomyArr;\n }\n }\n\n function processFilterTagLabel(_tagLabel) {\n if(_tagLabel) {\n let _tagLabelValue = _tagLabel.getAttribute('data-value');\n let _parentTaxonomy = _tagLabel.getAttribute('data-parenttagkey');\n if(_parentTaxonomy) {\n let _parentTaxonomyArr = _filterTagsTaxonomies[_parentTaxonomy];\n if(_parentTaxonomyArr) {\n if(_parentTaxonomyArr.indexOf(_tagLabelValue) < 0) _parentTaxonomyArr.push(_tagLabelValue);\n } else {\n _parentTaxonomyArr = [];\n _parentTaxonomyArr.push(_tagLabelValue);\n }\n\n _filterTagsTaxonomies[_parentTaxonomy] = _parentTaxonomyArr;\n }\n }\n }\n\n function initFilterByLabel() {\n let filterButtonsContainer = document.querySelector('.filter-result__tags--buttons');\n if(filterButtonsContainer) {\n // Get all current taxonomies are filterred and push into _filterTagsTaxonomies array.\n getAllFilterredTaxonomies();\n\n let _filterLables = filterButtonsContainer.querySelectorAll('button.filter-result__tag-item');\n [].forEach.call(_filterLables, function(filterBtn){\n filterBtn.addEventListener('click', function(e) {\n let _this = this;\n let _taxFilterValue = _this.getAttribute('data-value');\n if(!_filterTagsTaxonomies) _filterTagsTaxonomies = [];\n let _parentTaxonomy = _this.getAttribute('data-parenttagkey');\n let _parentTaxonomyArr = _filterTagsTaxonomies[_parentTaxonomy];\n if(_parentTaxonomyArr) {\n for(let i = 0; i < _parentTaxonomyArr.length; i++) {\n let _childTaxonomy = _parentTaxonomyArr[i];\n if(_taxFilterValue == _childTaxonomy) {\n _parentTaxonomyArr.splice(i, 1);\n break;\n }\n }\n }\n\n if(_this.getAttribute('data-people')) {\n let _urlSearchParams = new URLSearchParams(window.location.search);\n let _filterByPeoples = _urlSearchParams.getAll('people');\n let _people = _this.getAttribute('data-people');\n if(_filterByPeoples && _filterByPeoples.length > 0) {\n for(let i = 0; i < _filterByPeoples.length; i++) {\n let _existedPeople = _filterByPeoples[i];\n if(_people == _existedPeople) {\n _filterByPeoples.splice(i, 1);\n break;\n }\n }\n __ths.setParameterInQueryString(\"people\", _people, true);\n if(_filterByPeoples && _filterByPeoples.length > 0) {\n [].forEach.call(_filterByPeoples, function(people){\n _urlSearchParams.append('people', people);\n });\n history.replaceState(null, null, \"?\" + _urlSearchParams.toString() + location.hash);\n }\n }\n }\n\n _filterTagsTaxonomies[_parentTaxonomy] = _parentTaxonomyArr;\n\n __ths.searchResultsByTaxonomies([], false); \n });\n });\n }\n }\n\n function initClearFilterByLabel() {\n let _clearFilterLabelBtns = document.querySelectorAll('button.search-filters__reset-btn');\n [].forEach.call(_clearFilterLabelBtns, function(_clearFilterLabel){\n _clearFilterLabel.addEventListener('click', function(e) { \n // Clear all data get from filter checkboxes\n _filterTagsTaxonomies = [];\n\n // Delete all peoples in queries string\n __ths.setParameterInQueryString(\"people\", '', true);\n __ths.setParameterInQueryString(\"hubtag\", '', true);\n __ths.setParameterInQueryString(\"Sort\", '', true);\n\n __ths.searchResultsByTaxonomies([], false);\n });\n });\n }\n\n function pressESCToClose(e){\n if(e.key == \"Escape\") {\n let currentCursorActiveElm = document.querySelector(\".select-filter__item.expanded button\");\n if(currentCursorActiveElm) {\n currentCursorActiveElm.focus();\n currentCursorActiveElm.click();\n }\n }\n }\n \n // Search Filter Select Handling On Desktop\n function insightsFilterHandle() {\n let _applyFilterBtns = document.querySelectorAll('.insight-apply__filters--btn');\n [].forEach.call(_applyFilterBtns, function(applyFilterBtn) {\n\n applyFilterBtn.addEventListener('click', function() {\n let _insightsFilterContainer = document.querySelector('.search-filters__tabs');\n if(_insightsFilterContainer) {\n _filterTagsTaxonomies = [];\n let _insightsFilterItems = _insightsFilterContainer.querySelectorAll('input[type=\"checkbox\"].filters__item:checked');\n [].forEach.call(_insightsFilterItems, function(checkedItem){\n if(checkedItem) {\n processFilterCheckbox(checkedItem);\n }\n });\n }\n\n let _queryParams = new URLSearchParams(window.location.search);\n let _params = [];\n\n // Clear all pagination when apply new filter\n if(_queryParams.get('page')){\n _queryParams.delete('page');\n }\n\n // Clear all hub tag when apply new filter\n if(_queryParams.get('hubtag')){\n _queryParams.delete('hubtag');\n }\n \n _params['CurrentPageIndex'] = __ths.config.previousPageIndex = __ths.config.nextPageIndex = 1;\n __ths.searchResultsByTaxonomies(_params, false);\n });\n\n if(!GT.isMobileCached) {\n applyFilterBtn.addEventListener(\"keydown\", function(e) {\n if(e.key == \"Tab\" && !e.shiftKey) {\n e.preventDefault();\n this.closest(\".expanded\").querySelector(\".select-filter__button\").focus();\n }\n })\n }\n });\n }\n\n function queryParams(_urlSearchParams, params) {\n let hasFilter = false;\n for (var key in params) {\n if(key == 'peoples') {\n let _peoples = params[key];\n if(_peoples && _peoples.length > 0) {\n [].forEach.call(_peoples, function(people){\n _urlSearchParams.append('people', people);\n hasFilter = true;\n });\n }\n } else if(key == 'hubtag') {\n let _hubtag = params[key];\n if(_hubtag && _hubtag.length > 0) {\n _urlSearchParams.append('hubtag', _hubtag);\n hasFilter = true;\n }\n } else {\n _urlSearchParams.set(key, params[key]);\n }\n }\n\n if(_filterTagsTaxonomies) {\n for (var key in _filterTagsTaxonomies) {\n let _tagsArr = _filterTagsTaxonomies[key];\n if(!_tagsArr) return;\n let _tagsStr = '';\n let _counter = 0;\n [].forEach.call(_tagsArr, function(_tagValue){\n if(_tagValue && _tagValue.length > 0) _tagsStr += _tagValue;\n if(_counter < _tagsArr.length - 1 ) {\n _tagsStr += '+';\n }\n _counter++;\n });\n if(_tagsStr && _tagsStr.length > 0) {\n _urlSearchParams.append('tags', _tagsStr);\n hasFilter = true;\n }\n }\n }\n\n return _urlSearchParams.toString();\n }\n\n __ths.setParameterInQueryString = function(key, value, isDelete) {\n var queryParams = new URLSearchParams(window.location.search);\n if(isDelete)\n queryParams.delete(key);\n else\n queryParams.set(key, value);\n history.replaceState(null, null, \"?\" + queryParams.toString() + location.hash);\n }\n\n __ths.getParameterInQueryString = function(key) {\n var queryParams = new URLSearchParams(window.location.search);\n return queryParams.get(key);\n }\n\n function toggleFiltersForm() {\n let _filtersContainer = document.getElementById('insightLandingFilters'),\n _filtersContainerToggle = document.querySelectorAll('[data-toggle=\"insightLandingFilters\"]'),\n _filterBtn = document.querySelector(\".insight-filter__header-mobile button\");\n\n if (_filtersContainerToggle)\n for (var i = 0; i < _filtersContainerToggle.length; i++) {\n _filtersContainerToggle[i].addEventListener('click', function () {\n if(_filtersContainer.classList.contains(\"active\")) {\n _filtersContainer.classList.remove('active');\n document.querySelector(\".gt-wrapper\").classList.remove(\"opening-mobile-filter\");\n if(_filterBtn) {\n _filterBtn.focus();\n _filterBtn.setAttribute(\"aria-expanded\", false);\n }\n } else {\n _filtersContainer.classList.add('active');\n _filterBtn?.setAttribute(\"aria-expanded\", true);\n setTimeout(e => {\n document.querySelector(\"#filtersFormCloseBtn\")?.focus();\n document.querySelector(\".gt-wrapper\").classList.add(\"opening-mobile-filter\");\n }, 1000)\n }\n })\n }\n\n if (_filtersContainer)\n document.querySelector('.main-header .menu-toggle').addEventListener('click', function() {\n _filtersContainer.classList.remove('active');\n })\n }\n\n function showActiveFilters () {\n let _selectFilterItems = document.querySelectorAll('.select-filter__item');\n [].forEach.call(_selectFilterItems, function(checkedItem){\n let checkedCheckbox = checkedItem.querySelector('[type=\"checkbox\"].filters__item:checked');\n if(checkedCheckbox) {\n checkedItem.classList.add('expanded');\n }\n });\n }\n\n function toggleOverhiddenHTML() {\n let _filtersShowBtn = document.querySelector('.search-results__filters-show'),\n _filtersHideBtn = document.querySelector('.search-filters__close-btn');\n\n if (_filtersShowBtn)\n _filtersShowBtn.addEventListener('click', function() {\n document.querySelector('html').classList.add('overflowHidden--mobile');\n })\n\n if (_filtersHideBtn)\n _filtersHideBtn.addEventListener('click', function() {\n document.querySelector('html').classList.remove('overflowHidden--mobile');\n })\n }\n\n function init() {\n\n if( /Android/i.test(navigator.userAgent) ) {\n let insightResultContainer = document.querySelector('.insight-results__container');\n if(insightResultContainer) {\n insightResultContainer.classList.add('android-devices');\n }\n }\n\n\n let loadmoreConfig = document.querySelector(\".loadmore-config\");\n if(!loadmoreConfig) return;\n loadmoreConfig = JSON.parse(loadmoreConfig.textContent);\n\n _loadBtn = document.getElementById('insightFilterLoadmore'); \n _loadBtn?.addEventListener('click', function(e) {\n e.preventDefault();\n __ths.loadMoreResultsByTag();\n });\n \n let currentPage = loadmoreConfig.currentPageIndex;\n \n __ths.sParams = {\n CurrentPageIndex: currentPage\n };\n\n __ths.config = {\n previousPageIndex: currentPage, \n nextPageIndex: currentPage, \n totalDisplayingItems: loadmoreConfig.totalDisplayingItems, \n pageSize: loadmoreConfig.pageSize, \n totalItemsCount: loadmoreConfig.totalItemsCount, \n loadEndPoint: loadmoreConfig.loadMoreEndPoint,\n insightResultsContainer: document.getElementById('insightResultsContainer'),\n insightListingContainer: document.getElementById('insightListingContainer'),\n resultContainerOffsetTop: 0\n };\n\n taxonomyFilterTabs();\n insightsFilterHandle();\n initClearFilterByLabel();\n initFilterByLabel();\n registerSortEvt();\n\n toggleFiltersForm();\n toggleOverhiddenHTML();\n if(GT.isMobileView()) {\n showActiveFilters();\n }\n clickOutsideFilterContainer();\n loadPreviousHandler();\n\n \n __ths.config.insightResultsContainer.querySelectorAll(\".insight-article__item\").forEach(articleItem => {\n articleItem.dataset.page = currentPage;\n __ths.observerElm(articleItem);\n })\n }\n\n __ths.escapeQueryChars = function (url) {\n return url ? url\n .replace(/\\s/gi, '+')\n .replace(/\\%20/gi, '+')\n .replace(/\\%(3C|3E)/gi, function (match, dec) {\n return encodeURI('%') + dec;\n }) : url;\n };\n \n\n function getAllFilterredTaxonomies() {\n let _currentTagsFilterred = document.querySelectorAll('button.filter-result__tag-item');\n if(_currentTagsFilterred && _currentTagsFilterred.length > 0) {\n [].forEach.call(_currentTagsFilterred, function(filterredByTaxonomy){\n if(filterredByTaxonomy) {\n processFilterTagLabel(filterredByTaxonomy);\n }\n });\n }\n }\n\n __ths.loadMoreResultsByTag = function (isLoadPrevious) {\n if(__ths.searchState == __ths.UNACTIVE) return;\n\n if(isLoadPrevious) {\n __ths.config.previousPageIndex -= 1;\n } else {\n __ths.config.nextPageIndex += 1;\n }\n __ths.sParams['CurrentPageIndex'] = isLoadPrevious ? __ths.config.previousPageIndex : __ths.config.nextPageIndex;\n getAllFilterredTaxonomies();\n __ths.searchResultsByTaxonomies(__ths.sParams, true, isLoadPrevious);\n };\n\n __ths.ajaxCall = function (url, successCallback) {\n var contextRef = this;\n let __url = url;\n var xhttp = new XMLHttpRequest();\n __ths.searchState = __ths.UNACTIVE;\n __ths.config.insightListingContainer.classList.add(\"fetching\");\n xhttp.onreadystatechange = function () {\n if (this.readyState == 4) {\n if (this.response && this.status == 200) {\n successCallback(contextRef, this.response);\n } else {\n // isInited = false;\n }\n setTimeout(e => {\n __ths.config.insightListingContainer.classList.remove(\"fetching\");\n __ths.searchState = __ths.ACTIVE;\n }, 500);\n }\n };\n xhttp.open(\"GET\", __url, true);\n xhttp.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n xhttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhttp.send();\n }\n\n __ths.searchResultsByTaxonomies = function (_queryParams, _isAppendResults, _isLoadPrevious) {\n let _url = queriesStringBuilder(_queryParams);\n let _ajaxUrl = queriesStringBuilder(_queryParams, _isAppendResults ? __ths.config.loadEndPoint : filterEndpoint, true);\n __ths.ajaxCall(_ajaxUrl, function(contextRef, data){ \n\n if(_isAppendResults) {\n if(__ths.config.insightResultsContainer) {\n old_DOM_height = document.querySelector(\".gt-wrapper\").offsetHeight,\n old_scroll = GT.lastScrollTop;\n\n GT.preventHeaderFromFlickeringWhileBodyHeightIsChanging();\n __ths.config.insightResultsContainer.insertAdjacentHTML(_isLoadPrevious ? \"afterbegin\" : \"beforeend\", data);\n \n let focusableItem;\n __ths.config.insightResultsContainer.querySelectorAll(\".insight-article__item:not([data-page])\").forEach(articleItem => {\n articleItem.dataset.page = __ths.sParams.CurrentPageIndex;\n __ths.observerElm(articleItem);\n if(!focusableItem) focusableItem = articleItem;\n })\n\n if(!_isLoadPrevious) {\n let lstFocusableElms = GT.getListFocusableElms(focusableItem);\n if(lstFocusableElms.length)\n lstFocusableElms[0].focus();\n __ths.setParameterInQueryString(\"page\", __ths.sParams.CurrentPageIndex);\n } else {\n window.scrollTo({ top: (old_scroll + document.querySelector(\".gt-wrapper\").offsetHeight - old_DOM_height), left:0, behavior: \"instant\"});\n }\n }\n } else {\n if(__ths.config.insightListingContainer) {\n if(GT.wWidth < 1024) {\n document.querySelector('.gt-wrapper').classList.remove(\"opening-mobile-filter\");\n document.querySelector('html').classList.remove('overflowHidden--mobile');\n }\n __ths.config.insightListingContainer.innerHTML = data;\n __ths.setParameterInQueryString(\"page\", 1);\n GT.FormSelect($('.form-select'));\n init();\n \n document.querySelector('.select-filter__item:nth-child('+ (__ths.currentFilterTabIndex + 1) +')')?.focus();\n\n }\n }\n // Add the event listener again to redirect to the anchor when clicking on an article tile.\n GT.FakeHyperlink();\n\n __ths.setShowingNumber();\n \n shouldLoadMore();\n\n if(data.trim().length) {\n setTimeout(function() {\n GT.clampArticle(true);\n GT.GTBookmarkArticle && GT.GTBookmarkArticle();\n if(document.querySelector(\".insight-landing-promoted\")) {\n GT.clampText(null,true);\n GT.InsightPageV2();\n }\n }, 500);\n }\n });\n\n if(!_isAppendResults) {\n if(_url.length > 1)\n history.replaceState(null, null, _url.replace(\"CurrentPageIndex\", \"page\"));\n else \n history.replaceState(null, null, \"\");\n }\n //dataLayer.push({ 'event': 'global_search', 'eventAction': 'search', 'eventLabel': _ajaxUrl });\n // window.location.href = _ajaxUrl;\n };\n\n function loadPreviousHandler(){\n let currentTotalDisplayingItems = __ths.currentTotalDisplayingItems(__ths.config.insightResultsContainer);\n if(currentTotalDisplayingItems <= __ths.config.totalItemsCount) {\n __ths.config.resultContainerOffsetTop = 0;\n GT.listFunctionsTriggerInScrollEvent['checkScrollPosInsightListing'] = () => {\n\n if(!__ths.config.resultContainerOffsetTop)\n __ths.config.resultContainerOffsetTop = GT.getElementOffset(__ths.config.insightResultsContainer).top;\n\n if(__ths.config.previousPageIndex > 1 && GT.isScrollingUp && GT.lastScrollTop - __ths.config.resultContainerOffsetTop < 300 && __ths.searchState == __ths.ACTIVE) {\n __ths.loadMoreResultsByTag(true);\n }\n }\n }\n }\n\n function registerSortEvt(){\n let _sortSelectBoxesContainer = document.querySelectorAll('.search-results__sort-select');\n\n [].forEach.call(_sortSelectBoxesContainer, function(_sortSelectBoxContainer){\n if(_sortSelectBoxContainer) {\n let _sortingSelectBox = _sortSelectBoxContainer.querySelector('.styleSelBox');\n //update sort params when change sort select\n if(_sortingSelectBox) {\n _sortingSelectBox.addEventListener('change', function (e) {\n let _params = [];\n \n let _urlSearchParams = new URLSearchParams(window.location.search);\n // Clear all pagination when sorting\n if(_urlSearchParams.get('page')){\n _urlSearchParams.delete('page');\n }\n\n let _filterByHubTag = _urlSearchParams.getAll('hubtag');\n if(_filterByHubTag && _filterByHubTag.length > 0) {\n _params['hubtag'] = _filterByHubTag;\n }\n\n __ths.searchResultsByTaxonomies(_params, false);\n });\n }\n }\n });\n }\n \n function queriesStringBuilder(_params, _otherEndpoint, _isLoadmore) {\n\n if(!_params) _params = [];\n\n let _urlSearchParams = new URLSearchParams(window.location.search);\n \n let _filterByPeoples = _urlSearchParams.getAll('people');\n if(_filterByPeoples && _filterByPeoples.length > 0) {\n _params['peoples'] = _filterByPeoples;\n }\n\n _urlSearchParams = new URLSearchParams();\n let _searchSorting = '';\n let _sortingSelectBox = document.getElementById('select_sorting_desktop');\n\n if(_sortingSelectBox) {\n _searchSorting = _sortingSelectBox.value;\n }\n\n if(_searchSorting && _searchSorting.length > 0) {\n _params['Sort'] = _searchSorting;\n } else {\n _urlSearchParams.delete('Sort');\n }\n\n let _ajaxUrl = '';\n if(_isLoadmore) {\n if(_otherEndpoint && _otherEndpoint.length > 0) {\n _ajaxUrl = _otherEndpoint;\n }\n } else {\n _ajaxUrl = '?';\n }\n \n let _queryParams = queryParams(_urlSearchParams, _params);\n if(_queryParams && _queryParams.length > 0) {\n if(_isLoadmore ) _ajaxUrl += '&';\n _ajaxUrl += _queryParams;\n }\n\n return __ths.escapeQueryChars(_ajaxUrl);\n }\n\n __ths.observerElm = (elm) => {\n if(!elm.dataset.observed) {\n elm.dataset.observed = true;\n GT.checkElmVisible(elm, function(e){\n __ths.updatePageIndex(elm.dataset.page);\n }, true, 1)\n }\n }\n\n \n __ths.updatePageIndex = (pageIndex) => {\n if(pageIndex > 1) {\n __ths.setParameterInQueryString(\"page\", pageIndex);\n } else {\n __ths.setParameterInQueryString(\"page\", pageIndex, true);\n }\n \n let canonicalElm = document.querySelector('link[rel=\"canonical\"]');\n if(canonicalElm)\n canonicalElm.href = location.origin + location.pathname + (pageIndex > 1 ? \"?page=\" + pageIndex : \"\"); \n }\n\n __ths.setShowingNumber = function () {\n let _showedInsightItems = document.querySelectorAll('.insight-article__item').length || 0;\n let _showingNumberElement = document.querySelector('#totalResultShowing');\n if(_showingNumberElement) _showingNumberElement.innerHTML = _showedInsightItems;\n }\n\n function clickOutsideFilterContainer() {\n document.addEventListener('mouseup', function(e) {\n if(!e.target.closest(\".select-filter__item\")) {\n __ths.currentFilterTabIndex = -1;\n document.querySelectorAll('.select-filter__item').forEach(_filterItem => {\n _filterItem.classList.remove('expanded');\n _filterItem.querySelector(\".select-filter__button\").setAttribute(\"aria-expanded\", false);\n })\n }\n // [].forEach.call(_filterItemContainers, function(_filterItem){\n // let _filterConditionContainer = _filterItem.querySelector('.select-filter__condition');\n // if (!_filterConditionContainer.contains(e.target) && !_filterItem.contains(e.target)) {\n // _filterItem.classList.remove('expanded');\n // _filterItem.querySelector(\".select-filter__button\").setAttribute(\"aria-expanded\", false);\n // __ths.currentFilterTabIndex = -1;\n // }\n // });\n });\n }\n\n function shouldLoadMore() {\n if(!_loadBtn) \n return;\n\n let _pageIndexByTags = __ths.config.nextPageIndex;\n let maxPage = Math.ceil(__ths.config.totalItemsCount / __ths.config.pageSize);\n let loadMoreContainer = document.querySelector(\".load-more-container\")\n\n if (maxPage < (_pageIndexByTags + 1)) {\n if(loadMoreContainer)\n loadMoreContainer.classList.add(\"hidden\");\n else\n _loadBtn.classList.add('hidden');\n\n } else {\n if(loadMoreContainer) {\n loadMoreContainer.classList.remove(\"hidden\");\n }\n else {\n _loadBtn.classList.remove('hidden');\n }\n \n if(_loadBtn.href) {\n _loadBtn.href = location.href.replace(\"page=\" + _pageIndexByTags, \"page=\" + (_pageIndexByTags + 1));\n }\n }\n \n let canonicalElm = document.querySelector('link[rel=\"canonical\"]');\n if(canonicalElm)\n canonicalElm.href = location.origin + location.pathname + (_pageIndexByTags > 0 ? \"?page=\" + _pageIndexByTags : \"\"); \n };\n\n init();\n};\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function () {\n GT.InsightFiltersV2();\n });\nvar GTInsightHubOverlays;\n\nGT.GTInsightHubOverlays = function($elements, settings) {\n $.each($elements, function(index, element) {\n var component = GTInsightHubOverlays = new GT.GTInsightHubOverlay(element);\n component.init();\n });\n};\n\nGT.GTInsightHubOverlay = function(element) {\n var $element = $(element);\n this.element = element;\n this.$element = $element;\n this.hubid = $element.data('hub');\n this.percent = $element.data('percent');\n if (!this.percent || this.percent <= 0) this.percent = 60;\n this.fadeOutTime = $element.data('fadeout');\n this.showDialog = $element.data('dialog');\n this.storageKey = 'insight-hub-' + this.hubid;\n this.maxApperance = 3;\n var sessionDuration = $element.data('session');\n if (!sessionDuration || sessionDuration <= 0) sessionDuration = 24;\n this.sessionDuration = sessionDuration * 60 * 60 * 1000;\n var ignoreDuration = $element.data('ignored');\n if (!ignoreDuration || ignoreDuration <= 0) ignoreDuration = 365;\n this.ignoreDuration = ignoreDuration * 86400000;\n};\n\nGT.GTInsightHubOverlay.prototype.onScrollHandler = function(e) {\n var $this = GTInsightHubOverlays;\n var scrollPercent = $this.getScrollPercent();\n if (scrollPercent < 0 || scrollPercent >= $this.percent) {\n // window.removeEventListener('scroll', $this.onScrollHandler);\n delete GT.listFunctionsTriggerInScrollEvent.GTInsightHubOverlay;\n if(!$this.appear()) {\n $this.element.classList.add(\"animated\", \"fadeInUpShort\", \"delay-250\");\n $this.element.style.display = \"block\";\n $this.element.classList.add(\"go\");\n }\n }\n};\n\nGT.GTInsightHubOverlay.prototype.getScrollPercent = function() {\n var s = $(window).scrollTop(),\n d = $(document).height(),\n c = $(window).height();\n var footerHeight = $('footer').outerHeight();\n var scrollPercent = (s / (d - c - footerHeight)) * 100;\n return scrollPercent;\n};\n\n\nGT.GTInsightHubOverlay.prototype.init = function () {\n var currentState = this.getState();\n if (!currentState || currentState.hubid !== this.hubid) {\n currentState = this.defaultState();\n this.saveState(currentState);\n }\n if (currentState.ignored) return;\n\n var $this = this;\n\n var onClickIgnoreHandler = function(e) {\n if (e.target && $(e.target).closest('.js-hub-overlay').length === 0 && $(e.target).closest('header').length === 0) {\n $this.$element.fadeOut();\n }\n };\n\n var onResizeHandler = function onResize(e) {\n var isLandscape = window.innerHeight < window.innerWidth;\n if (isLandscape) {\n var overlayTop = $this.$element.position().top;\n if (overlayTop < 64) {\n $(document).on('click', onClickIgnoreHandler);\n return;\n }\n }\n $(document).off('click', onClickIgnoreHandler);\n };\n\n if (window.innerWidth < 959) {\n $(window).on('resize', onResizeHandler);\n onResizeHandler();\n }\n\n if ($(window).scrollTop() === 0 && this.percent === 0) {\n if(!$this.appear()) {\n $this.element.classList.add(\"animated\", \"fadeInUpShort\", \"delay-250\");\n $this.element.style.display = \"block\";\n $this.element.classList.add(\"go\");\n }\n } else {\n GT.listFunctionsTriggerInScrollEvent.GTInsightHubOverlay = GTInsightHubOverlays.onScrollHandler;\n // window.addEventListener('scroll', onScrollHandler);\n }\n\n this.bindEvent();\n};\n\nGT.GTInsightHubOverlay.prototype.bindEvent = function() {\n var $this = this;\n var $closeBtn = $this.$element.find('.h-widget__close');\n $closeBtn.on('click', function(e) { $this.$element.fadeOut(); });\n\n var $ctaBtn = $this.$element.find('.js-overlay-cta');\n $ctaBtn.on('click', function(e) {\n e.preventDefault();\n var currentState = $this.getState();\n if (!currentState) currentState = $this.defaultState();\n $this.setExpireState(currentState);\n $this.saveState(currentState);\n var href = $(this).attr('href');\n var targetFrame = $(this).attr('target');\n if (targetFrame && targetFrame === \"_blank\"){\n window.open(href, '_blank');\n } else {\n window.location.href = href;\n }\n });\n};\n\nGT.GTInsightHubOverlay.prototype.defaultState = function(state) {\n return {\n 'hubid': this.hubid,\n 'expiredOn': new Date().getTime() + this.sessionDuration,\n 'appearance': 0\n };\n};\n\nGT.GTInsightHubOverlay.prototype.setExpireState = function(state) {\n state.expiredOn = new Date().getTime() + this.ignoreDuration;\n state.ignored = true;\n};\n\nGT.GTInsightHubOverlay.prototype.appear = function () {\n var $this = this;\n var currentState = $this.getState();\n if (!currentState) currentState = $this.defaultState();\n currentState.appearance = currentState.appearance + 1;\n if (currentState.appearance >= $this.maxApperance) {\n $this.setExpireState(currentState);\n if ($this.showDialog) {\n $this.saveState(currentState);\n $this.openDialog();\n return true;\n }\n }\n\n $this.saveState(currentState);\n if ($this.fadeOutTime) {\n var fadeOutTime = $this.fadeOutTime * 1000;\n setTimeout(function () {\n $this.$element.fadeOut();\n }, fadeOutTime);\n }\n};\n\nGT.GTInsightHubOverlay.prototype.openDialog = function() {\n var containerWidth = 640;\n var containerHeight = 475;\n var winWidth = $(window).innerWidth();\n if (containerWidth > winWidth) {\n containerWidth = winWidth;\n }\n var $form = this.$element.next('.newsletter-container');\n if ($form) {\n var formReferenceID = 'overlay-form-' + new Date().getTime();\n $form.attr('id', formReferenceID);\n var formBody = $('#' + formReferenceID).find(\".Form__MainBody\").show();\n var formStatus = $('#' + formReferenceID).find(\".Form__Status\");\n formStatus.html('');\n var formDialogDom = document.querySelector('#' + formReferenceID);\n GT.Overlays.runOverlay(formDialogDom, '#' + formReferenceID, containerWidth, containerHeight, true, true, false);\n setTimeout(function() {\n var $formEl = $form.find('.Form__Element');\n for (var i = 0; i < $formEl.length; i++) {\n var textInput = $formEl.eq(i).find('input[type=\"text\"]');\n if (textInput.length > 0) {\n textInput.focus();\n break;\n }\n var checkboxes = $formEl.eq(i).find('input[type=\"checkbox\"]');\n if (checkboxes.length > 0) {\n checkboxes.focus();\n break;\n }\n var selects = $formEl.eq(i).find('select');\n if (selects.length > 0) {\n selects.focus();\n break;\n }\n }\n }, 500);\n }\n\n};\n\nGT.GTInsightHubOverlay.prototype.saveState = function(state) {\n if (!state) return;\n var data = JSON.stringify(state);\n localStorage.setItem(this.storageKey, data);\n};\n\nGT.GTInsightHubOverlay.prototype.getState = function() {\n var storedData = localStorage.getItem(this.storageKey);\n if (storedData) {\n var objStoredData = JSON.parse(storedData);\n if (objStoredData.expiredOn && objStoredData.expiredOn < new Date().getTime()) {\n localStorage.removeItem(this.storageKey);\n return null;\n }\n return objStoredData;\n }\n return null;\n};\n\nGT.domContentLoadedFncList.push(function(){\n GT.GTInsightHubOverlays($(\".js-hub-overlay\"));\n});\n\nGT.InsightPageV2 = function () {\n function init() {\n var promotedBlock = document.querySelector('.insight-landing-promoted'), \n popularBlock = document.querySelector('.insight-landing-popular'),\n promotedSidebar = document.querySelector('.insight-landing-promoted__sidebar');\n\n if(GT.isTabletView()) {\n if (promotedSidebar && popularBlock) {\n promotedSidebar.prepend(popularBlock);\n }\n if (promotedBlock) promotedBlock.classList.add('visible');\n } else {\n if (promotedBlock && popularBlock) {\n promotedBlock.querySelector('.container').prepend(popularBlock);\n }\n }\n }\n init()\n}\n\nGT.domContentLoadedFncList.push(function(){\n GT.InsightPageV2();\n});\n\nGT.windowResizeFncList.GTInsightPageV2 = function() {\n GT.clampText(null,true);\n GT.InsightPageV2();\n}\n\nvar GTIntenationalMemberFirms = function () {\n tabsHandle();\n continentsHandle();\n jumpToList();\n bookmarkEventHandle();\n bookmarkContinentUrlHandle();\n function tabsHandle() {\n let _memberFirmTabs = document.querySelector('.member-firm__tabs');\n if(!_memberFirmTabs) return;\n let _firmTabs = _memberFirmTabs.querySelectorAll('.firm-tab');\n\n [].forEach.call(_firmTabs, function(_firmTab){\n if(!_firmTab) return;\n _firmTab.addEventListener('click', function() {\n if(this.classList.contains('.active')) return;\n let _siblingChilds = this.parentNode.querySelectorAll('.firm-tab');\n removeSiblingsClass(_siblingChilds, 'active');\n this.classList.add('active');\n\n let __siblingFirmContents = document.querySelectorAll('.firm-tab__contents');\n removeSiblingsClass(__siblingFirmContents, 'active');\n\n let _firmTarget = this.getAttribute('data-target');\n if(_firmTarget) {\n let _currentFirmContents = document.getElementById(_firmTarget);\n if(_currentFirmContents) _currentFirmContents.classList.add('active');\n }\n });\n });\n }\n\n function continentsHandle() {\n let _continentsList = document.querySelectorAll('.member-firms__continents');\n if(!_continentsList) return;\n [].forEach.call(_continentsList, function(_continents) {\n let _continentsHeader = _continents.querySelector('.firms--continents__header');\n _continentsHeader.querySelector(\".firms-continents__title\").addEventListener(\"click\", (e) => {\n e.preventDefault();\n })\n _continentsHeader.addEventListener('click', function (e) {\n collapseExpandContinent(_continents);\n let targetElm = e.target.closest(\".firms--continents__header\");\n if(targetElm) {\n if(targetElm.closest(\".member-firms__continents\").classList.contains(\"active\")) {\n location.hash = targetElm.dataset.hash;\n scroll2Elm(targetElm.offsetTop, 0);\n } else\n history.pushState('', document.title, window.location.pathname);\n }\n });\n\n _continents.addEventListener('beforematch', function() {\n GT.hideHyperLinkAnimation();\n _continents.classList.add('active');\n });\n });\n }\n\n function jumpToList() {\n let _jumpTolistElm = document.querySelector('.jump-to__list');\n if(!_jumpTolistElm) return;\n _jumpTolistElm.addEventListener('click', jumpToListHandle);\n }\n\n function jumpToListHandle(e) {\n e.preventDefault();\n let _targetID = this.getAttribute(\"href\");\n\n let _targetElem = document.querySelector(_targetID);\n if(!_targetElem) return;\n\n // get padding of list continents container \n let style = _targetElem.currentStyle || window.getComputedStyle(_targetElem);\n let _paddingElm = parseInt(style.paddingTop) + parseInt(style.paddingBottom);\n\n let offsetTop = _targetElem.offsetTop - _paddingElm; \n scroll2Elm(offsetTop);\n }\n\n function removeSiblingsClass(elms, className) {\n [].forEach.call(elms, function(_otherChild) {\n _otherChild.classList.remove(className);\n });\n }\n\n function bookmarkContinentUrlHandle() {\n var currentFragment = window.location.hash;\n var locationHashIndex = currentFragment.indexOf(\"#\");\n if (locationHashIndex === 0) {\n currentFragment = currentFragment.substr(1);\n }\n if (currentFragment) {\n let _targetElem = document.querySelector(\"#\" + currentFragment.toLowerCase());\n if (!_targetElem) {\n expandContinentByGeo();\n } else {\n collapseExpandContinent(_targetElem.parentElement);\n scroll2Elm(_targetElem.offsetTop - 100, 1000);\n }\n } else {\n expandContinentByGeo();\n }\n }\n\n function expandContinentByGeo() {\n let _continentsList = document.querySelectorAll('.member-firms__continents');\n if (!_continentsList) return;\n [].forEach.call(_continentsList, function (_continents) {\n let isSelected = $(_continents).data('is-selected-continent');\n if (isSelected && isSelected.toLowerCase() == \"true\") {\n collapseExpandContinent(_continents);\n }\n });\n }\n\n function collapseExpandContinent(continent) {\n continent.classList.toggle('active');\n\n let _firmsList = continent.querySelector('.firms-continents__list');\n if(_firmsList) {\n if (continent.classList.contains('active')) {\n GT.hideHyperLinkAnimation();\n _firmsList.getAttribute(\"hidden\");\n _firmsList.removeAttribute(\"hidden\");\n } else {\n _firmsList.hidden = 'until-found';\n }\n }\n }\n\n function bookmarkEventHandle() {\n let _continentBookmarks = document.querySelectorAll('.continent-bookmark');\n if (!_continentBookmarks) return;\n [].forEach.call(_continentBookmarks, function (_continents) {\n _continents.addEventListener('click', function (e) {\n e.preventDefault();\n });\n });\n }\n\n function scroll2Elm(offset, timeout = 150){\n setTimeout(() => {\n scroll({ top: offset - 200 });\n }, timeout)\n }\n};\n\nGT.domContentLoadedFncList.push(function(){\n GT.IntenationalMemberFirms = new GTIntenationalMemberFirms();\n});\nGT.triggerClampKeyContentBlock = (elm, isForceReRender) => {\n let textElm = elm.querySelector('.text'),\n titleElm = elm.querySelector('.title'),\n isMediumDesktopView = GT.isMediumDesktopView(),\n textElmNumLine = 3,\n titleElmNumLine = 3;\n\n\n if(textElm && !textElm.dataset.clamptext) {\n textElm.dataset.clamptext = textElm.textContent;\n }\n\n if(titleElm && !titleElm.dataset.clamptext) {\n titleElm.dataset.clamptext = titleElm.textContent;\n }\n\n titleElmNumLine = GT.getNumberLineContent(titleElm) || 0;\n textElmNumLine = GT.getNumberLineContent(titleElm) || 0;\n if(titleElmNumLine > 4) titleElmNumLine = 4;\n\n const objTitle = {\n settings: { clamp: titleElmNumLine, isHidden: true}\n }\n\n if(isForceReRender) {\n titleElm.removeAttribute(\"data-lazyevent-triggered\");\n titleElm.textContent = titleElm.dataset.clamptext;\n }\n GT.Clamp(titleElm, objTitle, isForceReRender);\n elm.setAttribute('clamp', true);\n\n textElmNumLine = (isMediumDesktopView ? 7 : 6) - titleElmNumLine;\n\n\n if(textElm) {\n const objText = {\n settings: { clamp: textElmNumLine, isHidden: true}\n }\n\n if(isForceReRender) {\n textElm.removeAttribute(\"data-lazyevent-triggered\");\n textElm.textContent = textElm.dataset.clamptext;\n }\n GT.Clamp(textElm, objText, isForceReRender);\n elm.setAttribute('clamp', true);\n }\n}\n\nGT.clampKeyContentBlock = function (isForceReRender){\n document.querySelectorAll('.career-story-item').forEach(elm => {\n GT.triggerClampKeyContentBlock(elm, isForceReRender);\n });\n}\n\n\nGT.domContentLoadedFncList.push(function(){\n GT.clampKeyContentBlock();\n\n GT.retriggerClampList.keyContent = () => {\n GT.clampKeyContentBlock(true);\n }\n});\n\nGT.KeyQuestion = function ($element, obj) {\n\n var keyIcon = $($element).find('.key-icon');\n var keyQuestion = 'key-question';\n var keyQuestionBox = '.key-question-box';\n var expanded = 'expanded';\n var contentQuestion = '.content-question';\n\n // GT.ProgressBarRPI object method\n function rpiUpdate() {\n if (GT.ProgressBarRPI) {\n GT.ProgressBarRPI.update();\n }\n }\n\n $(keyIcon).each(function () {\n var _this = $(this);\n _this.click(function (e) {\n var _this = $(this);\n _this.parents(keyQuestion).siblings().find('.key-question-model').removeClass(expanded).find(keyQuestionBox).removeClass('no-margin__right').hide();\n var keyQuestionModel = _this.parents('.key-question');\n $(keyQuestionModel).toggleClass(expanded);\n $(keyQuestionModel).find(contentQuestion).slideToggle(300, function () {\n $(this).parents(keyQuestionBox).toggleClass('no-margin__right');\n });\n\n // update progress bar indicator\n rpiUpdate();\n });\n });\n\n $('.key-question, .keyquestionblock, .podcast-block, .podcastblock, .gt-dataTable-wrapper, .datatableblock').each(function () {\n var _this = $(this);\n if (_this.next().hasClass('key-question')\n || _this.next().hasClass('keyquestionblock')\n || _this.next().hasClass('podcastblock')\n || _this.next().css('float') == 'left'\n || _this.next().css('float') == 'right') {\n _this.addClass('closed-float__group');\n _this.next().addClass('closed-float__group');\n }\n\n if (_this.prev().hasClass('key-question')\n || _this.prev().hasClass('keyquestionblock')\n || _this.prev().hasClass('podcastblock')\n || _this.prev().css('float') == 'left'\n || _this.prev().css('float') == 'right') {\n _this.addClass('closed-float__group');\n _this.prev().addClass('closed-float__group');\n }\n });\n};\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n GT.KeyQuestion('.key-question');\n });\n'use strict';\nGT.LazyBackgrounds = function ($element, obj) {\n var doLazyLoad = function lazyLoad(element) {\n if (element.hasAttribute(\"data-src\")) {\n var url = element.getAttribute(\"data-src\");\n var backgroundImage = element.style.backgroundImage;\n if (url && url.length > 0 && backgroundImage.length === 0) {\n element.style.backgroundImage = 'url(' + url + ')';\n }\n }\n };\n var safeDistance = obj.settings && obj.settings.safeDistance ? obj.settings.safeDistance : 150;\n LazyEvent($element, doLazyLoad, safeDistance);\n};\n\n$.fn.valueAsObject = function valueAsObject(input) {\n var $element = this;\n var value = $element.val();\n\n // Write\n if (/array|object/.test(typeof input)) {\n return $element.val(JSON.stringify(input));\n }\n // Read\n try {\n try {\n value = JSON.parse(value);\n } catch (rawParseError) {\n try {\n value = JSON.parse(value.replace(/"/g, '\"'));\n } catch (quoteParseError) {\n value = $('').html(value).text();\n }\n }\n } catch (ignore) {\n // This wasn't JSON after all!\n } finally {\n return value;\n }\n};\nGT.LazyLoad = function ($elem, obj) {\n this.settings = obj.settings || {};\n this.current = $elem;\n if (this.settings.run) {\n this[this.settings.run]($elem);\n };\n};\n\n\nGT.LazyLoad.prototype.loadArticles = function ($elem) {\n var me = this;\n var i = 0;\n var showItemOnClick = 8;\n var rovLenght = 4;\n var jsonUrl = $elem.attr(\"data-json\");\n $($elem).click(function (e) {\n $.ajax({\n cache: false,\n url: jsonUrl,\n dataType: \"json\",\n success: function (json) {\n var len = 0;\n var relatedItems;\n var _format,\n _len,\n _heading,\n _header,\n _date,\n _url,\n lenLong;\n while (len < showItemOnClick) {\n if (i < json.relatedContent.length) {\n relatedItems = json.relatedContent[i];\n\n _format = relatedItems.format;\n _len = relatedItems.len;\n _heading = relatedItems.heading;\n _header = relatedItems.header;\n _date = relatedItems.date;\n _url = relatedItems.url;\n if (len === 0 || len === rovLenght) {\n _format += \" firstOfItem \";\n }\n if (len === 2 || len === (rovLenght + 2)) {\n _format += \" firstOfItemTablet \";\n }\n lenLong = _len;\n if (parseFloat(_len) === 6.5) {\n lenLong = \"6-5\";\n } else if (parseFloat(_len) === 12.5) {\n lenLong = \"12-5\";\n }\n _format += \" g\" + lenLong;\n //me.loadMoreArticles(_format, _heading, _header, _date, i, _url);\n $(\"#art_id\" + i).css('opacity', 0).slideDown('fast').animate({\n opacity: 1\n }, {\n queue: true,\n duration: 'fast'\n });\n len++;\n }\n if (++i >= json.relatedContent.length) {\n $(\".loadMore\").css('opacity', 1).slideUp('fast').animate({\n opacity: 0\n }, {\n queue: false,\n duration: 'slow'\n });\n len = showItemOnClick;\n }\n }\n\n }\n });\n e.preventDefault();\n });\n};\n\n/**\n * Lazy loading of articles tiles - Loading more items on \"More\" button click\n */\nGT.LazyLoad.prototype.LazyLoadMoreLinkRemove = function ($moreLink) {\n $moreLink.remove();\n};\n\n/**\n * Takes fetched JSON and renders new items from it\n */\nGT.LazyLoad.prototype.appendArticles = function (items, promoblocks, $relatedItemsContainer, readMoreText) {\n // Promo blocks templates to fill with data\n // large promo block\n var largePromoTemplate = '
    ' +\n '
    ' +\n '
    ' +\n '

    {{LinkOpen}}{{Title}}{{LinkClose}}

    ' +\n '

    {{Summary}}

    ' +\n '
    ';\n // medium promo block\n var mediumPromoTemplate = '
    ' +\n '
    ' +\n '

    {{LinkOpen}}{{Title}}{{LinkClose}}

    ' +\n '
    ' +\n '

    {{Summary}}

    ' +\n '

    ' + readMoreText + '

    ' +\n '
    ';\n // small square promo block\n var smallPromoTemplate = '

    {{LinkOpen}}{{Title}}{{LinkClose}}

    ' +\n '

    {{Summary}}

    ' +\n '' + readMoreText + '' +\n '
    ';\n // small square promo block in defined different color\n var smallPromoColorTemplate = '
    {{PromoTitle}}' +\n '{{PromoLinkBegin}}

    {{PromoContent}}

    {{PromoLinkEnd}}
    ';\n\n //var promocount = promoblocks.length;\n var promoOutput = [];\n\n //sometimes we need to add a promoblock in with onother block\n var comboBlock = '
    {{block1}}{{block2}}
    ';\n\n //go through the promoblocks\n $.each(promoblocks, function (index, block) {\n var blockMarkup = smallPromoColorTemplate;\n //var $block;\n\n blockMarkup = blockMarkup.replace('{{PromoTitle}}', block.Title);\n blockMarkup = blockMarkup.replace('{{PromoContent}}', block.Summary);\n blockMarkup = blockMarkup.replace('{{PromoColour}}', 'solid-b');\n\n try {\n if (block.Url != null) {\n var linkContent = '';\n blockMarkup = blockMarkup.replace('{{PromoLinkBegin}}', linkContent);\n blockMarkup = blockMarkup.replace('{{PromoLinkEnd}}', '');\n } else {\n blockMarkup = blockMarkup.replace('{{PromoLinkBegin}}', '');\n blockMarkup = blockMarkup.replace('{{PromoLinkEnd}}', '');\n }\n } catch (e) {\n blockMarkup = blockMarkup.replace('{{PromoLinkBegin}}', '');\n blockMarkup = blockMarkup.replace('{{PromoLinkEnd}}', '');\n }\n promoOutput.push(blockMarkup);\n });\n\n //go through the regular blocks\n $.each(items, function (index, item) {\n var itemMarkup = largePromoTemplate;\n var $item;\n var medPromoClass = \"gmp1\";\n var largePromoClass = \"\";\n\n if (index === 3) {\n medPromoClass = \"gmt1\";\n }\n\n if (index === 5) {\n largePromoClass = \"gmp1\";\n }\n\n if (index !== 0 && index !== 5) {\n itemMarkup = mediumPromoTemplate;\n }\n\n if (((index === 1) && (promoOutput[0])) || ((index === 3) && (promoOutput[1]))) {\n itemMarkup = smallPromoTemplate;\n }\n\n // image\n var bgrImageTpl = 'style=\"background-image: url({{Image}});\"';\n // if image is not null - add it. If not - don't\n if (item.Image !== null) {\n bgrImageTpl = bgrImageTpl.replace('{{Image}}', item.Image);\n } else {\n bgrImageTpl = '';\n }\n itemMarkup = itemMarkup.replace('{{bgrImageStyle}}', bgrImageTpl);\n //itemMarkup = itemMarkup.replace('{{Image}}', item.Image);\n itemMarkup = itemMarkup.replace('{{Title}}', item.Title);\n itemMarkup = itemMarkup.replace('{{Url}}', item.UrlPath);\n itemMarkup = itemMarkup.replace('{{Summary}}', item.Summary);\n itemMarkup = itemMarkup.replace('{{MedPromoClass}}', medPromoClass);\n itemMarkup = itemMarkup.replace('{{LargePromoClass}}', largePromoClass);\n\n try {\n if (item.TitleUrl) {\n itemMarkup = itemMarkup.replace('{{LinkOpen}}', (''));\n itemMarkup = itemMarkup.replace('{{LinkClose}}', '');\n } else {\n itemMarkup = itemMarkup.replace('{{LinkOpen}}', '');\n itemMarkup = itemMarkup.replace('{{LinkClose}}', '');\n }\n } catch (e) {\n itemMarkup = itemMarkup.replace('{{LinkOpen}}', '');\n itemMarkup = itemMarkup.replace('{{LinkClose}}', '');\n }\n\n if (index === 1) {\n try {\n if (promoOutput[0]) {\n itemMarkup = itemMarkup.replace('gmt1', '');\n itemMarkup = comboBlock.replace('{{block1}}', itemMarkup);\n itemMarkup = itemMarkup.replace('{{block2}}', promoOutput[0]);\n }\n } catch (ignore) {\n //do nothing\n }\n } else if (index === 3) {\n try {\n if (promoOutput[1]) {\n itemMarkup = comboBlock.replace('{{block2}}', itemMarkup);\n // GTE-783 Ensure that we don't indent the wrong blocks\n // index 3 is the left edge of a row so no indent required...\n itemMarkup = itemMarkup.replace('gmp1', 'first-in-row');\n promoOutput[1] = promoOutput[1].replace('gmt1', '');\n itemMarkup = itemMarkup.replace('{{block1}}', promoOutput[1]);\n }\n } catch (ignore) {\n //do nothing\n }\n }\n $item = $(itemMarkup);\n // Append and fade in new item\n $item.css({\n opacity: 0\n });\n $relatedItemsContainer.append($item);\n $item.animate({\n opacity: 1\n }, 400);\n });\n};\n\nGT.LazyLoad.prototype.LazyLoadingArticles = function ($elem) {\n var me = this;\n // Hide \"More\" button and exit when there's not enough items to enable lazy loading\n var $moreLink = $('.js-more-articles');\n if (parseInt($('#enableLazyLoading').val(), 10) !== 1) {\n me.LazyLoadMoreLinkRemove($moreLink);\n return;\n }\n\n var startIndex = isNaN($('#initialStartIndex').val()) ? 100 : parseInt($('#initialStartIndex').val(), 10);\n var itemsPerPage = isNaN($('#itemsPerPage').val()) ? 200 : parseInt($('#itemsPerPage').val(), 10);\n\n var $relatedItemsContainer = $(\".relatedContainer\");\n // url to get json data from\n var url = $elem.attr(\"data-json\");\n var queryParams = $('#searchQuery').valueAsObject();\n // Get translated \"Read more\" text\n var readMoreText = $elem.closest('div[data-readmore]').attr('data-readmore');\n\n // Bind \"More\" button\n $moreLink.click(function (e) {\n e.preventDefault();\n var _this = $(this);\n\n // Throttle fast button clicking\n if ($elem.hasClass('loading-more')) {\n return;\n }\n\n $elem.addClass('loading-more');\n\n $.ajax({\n cache: false,\n url: url,\n dataType: \"json\",\n data: $.param(queryParams, true),\n success: function (result) {\n $elem.removeClass('loading-more');\n _this.blur();\n if (!result || !result.Items || !result.Items.length) {\n me.LazyLoadMoreLinkRemove($moreLink);\n return;\n }\n me.appendArticles(result.Items, result.PromoBlocks, $relatedItemsContainer, readMoreText);\n startIndex += itemsPerPage;\n ++queryParams.CurrentPageIndex;\n //lastIndex\n\n // Hide \"More\" button when reached the end\n if (startIndex >= result.TotalResultsNumber) {\n me.LazyLoadMoreLinkRemove($moreLink);\n }\n }\n });\n\n });\n\n};\n\n/**\n * Lazy loading articles on Media Center page\n */\nGT.LazyLoad.prototype.appendMediaArticles = function (items, $resultsContainer) {\n var itemTemplate = '

    {{Title}}

    {{PublishDate}}


    ';\n $.each(items, function (index, item) {\n // create media center article element\n var publishDate = item.PublishDateFormated;\n var itemClass = (item.CssClass !== null) ? 'class=\"' + item.CssClass + '\"' : '';\n var elem = itemTemplate.replace(\"{{Url}}\", item.Url).replace(\"{{Title}}\", item.Summary).replace(\"{{PublishDate}}\", publishDate).replace(\"{{class}}\", itemClass);\n var $element = $(elem);\n $element.css({\n 'opacity': 0\n });\n $resultsContainer.append($element);\n $element.animate({\n 'opacity': 1\n });\n });\n};\n\nGT.LazyLoad.prototype.LazyLoadingMediaItemsArticles = function ($elem) {\n var me = this;\n\n var $moreLink = $('.js-mediacenter-more-articles');\n var $resultsContainer = $('.results-container');\n if (parseInt($('#enableLazyLoading').val(), 10) !== 1) {\n me.LazyLoadMoreLinkRemove($moreLink);\n return;\n }\n var initialStartIndex = $('#initialStartIndex').val();\n var itemsRequested = isNaN(parseInt(initialStartIndex, 10)) ? 100 : parseInt(initialStartIndex, 10);\n var itemsPerPage = $('#itemsPerPage').val();\n itemsPerPage = isNaN(parseInt(itemsPerPage, 10)) ? 200 : parseInt(itemsPerPage, 10);\n\n var url = $elem.attr(\"data-json\");\n var queryParams = $('#searchQuery').valueAsObject();\n\n // Bind \"More\" button\n $moreLink.on(\"click\", function (e) {\n e.preventDefault();\n\n var _this = $(this);\n\n // Throttle fast button clicking\n if ($elem.hasClass('loading-more')) {\n return;\n }\n $elem.addClass('loading-more');\n\n $.ajax({\n cache: false,\n url: url,\n dataType: \"json\",\n data: $.param(queryParams, true),\n success: function (result) {\n $elem.removeClass('loading-more');\n _this.blur();\n if (!result || !result.Items || !result.Items.length) {\n me.LazyLoadMoreLinkRemove($moreLink);\n return;\n }\n me.appendMediaArticles(result.Items, $resultsContainer);\n itemsRequested += itemsPerPage;\n ++queryParams.CurrentPageIndex;\n\n // Hide \"More\" button when reached the end\n if (itemsRequested >= result.TotalResultsNumber) {\n me.LazyLoadMoreLinkRemove($moreLink);\n }\n }\n });\n\n });\n};\n\n/**\n * Lazy loading people on experts page\n */\nGT.LazyLoad.prototype.appendExperts = function (items, $expertsContainer, hideLocation) {\n $.each(items, function (index, item) {\n var itemTemplate = '
    ' +\n '{{Title}}' +\n '{{Name}}';\n\n if (hideLocation == 'False') {\n itemTemplate += '

    ' + item.Location + '

    ';\n }\n itemTemplate += '

    {{Phone}}

      ';\n if (item.EmailAddress) {\n itemTemplate += '
    • Email address
    • ';\n }\n if (item.TwitterUrl) {\n itemTemplate += '
    • {{TwitterUrl}}
    • ';\n }\n if (item.LinkedInUrl) {\n itemTemplate += '
    • {{LinkedInUrl}}
    • ';\n }\n if (item.VCardDownloadDisabled != true) {\n itemTemplate += '
    • {{Name}} VCard
    • ';\n } +\n '
    ' +\n '
    ';\n var $item;\n\n if (item.Phone != null && item.Phone != \"\") {\n var tmpPhone = \"\" + item.Phone + \"\";\n item.Phone = tmpPhone;\n }\n\n itemTemplate = itemTemplate.replace('{{Title}}', item.Title);\n itemTemplate = itemTemplate.replace(/\\{{Name}}/g, item.Name);\n // itemTemplate = itemTemplate.replace('{{Location}}', item.Location);\n itemTemplate = itemTemplate.replace('{{Phone}}', item.Phone);\n itemTemplate = itemTemplate.replace('{{EmailAddress}}', item.EmailAddress);\n itemTemplate = itemTemplate.replace(/\\{{TwitterUrl}}/g, item.TwitterUrl);\n itemTemplate = itemTemplate.replace(/\\{{LinkedInUrl}}/g, item.LinkedInUrl);\n itemTemplate = itemTemplate.replace('{{PhotoUrl}}', item.PhotoUrl);\n itemTemplate = itemTemplate.replace('{{ProfileUrl}}', item.ProfileUrl);\n itemTemplate = itemTemplate.replace('{{ProfileGuid}}', item.Guid);\n itemTemplate = itemTemplate.replace('{{vCardTitle}}', item.VCardTitle);\n\n var language = (window.gtConfig.currentLanguageId || \"\");\n\n itemTemplate = itemTemplate.replace('{{Language}}', language);\n\n $item = $(itemTemplate);\n\n // Hide empty elements\n if (!item.EmailAddress) {\n $item.find('.sbEmail').remove();\n }\n if (!item.TwitterUrl) {\n $item.find('.sbTwitter').remove();\n }\n if (!item.LinkedInUrl) {\n $item.find('.sbLinkedIn').remove();\n }\n\n // Append and fade in new item\n $item.css({\n opacity: 0\n });\n $expertsContainer.append($item);\n $item.animate({\n opacity: 1\n }, 400);\n\n });\n};\n\nGT.LazyLoad.prototype.LazyLoadingPeople = function ($elem) {\n var me = this;\n\n // Hide \"More\" button and exit when there's not enough items to enable lazy loading\n var $moreLink = $('.js-more-experts');\n if ($('#enableLazyLoading').val() !== \"1\") {\n me.LazyLoadMoreLinkRemove($moreLink);\n return;\n }\n\n\n\n var initialStartIndex = isNaN(parseInt($('#initialStartIndex').val(), 10)) ? 100 : parseInt($('#initialStartIndex').val(), 10);\n var itemsPerPage = isNaN(parseInt($('#itemsPerPage').val(), 10)) ? 200 : parseInt($('#itemsPerPage').val(), 10);\n var lastIndex = isNaN(parseInt($('#totalItemsCount').val(), 10)) ? 0 : parseInt($('#totalItemsCount').val(), 10) - 1;\n var $expertsContainer = $(\".expert-container\");\n var nameSearch = ($(\"#name-search\").val() || \"\");\n var serviceSearch = ($(\"#serv\").val() || $(\"#lastUrlServicec\").val() || \"\");\n var industrySearch = ($(\"#ind\").val() || $(\"#lastUrlIndustries\").val() || \"\");\n var locationSearch = ($(\"#exLoc\").val() || $(\"#lastUrlLocations\").val() || \"\");\n var langSearch = (window.gtConfig.currentLanguageId || \"\");\n\n if (nameSearch === \"by name\") {\n nameSearch = \"\";\n }\n\n\n\n // Unchangeable part of the url\n var url = $elem.attr(\"data-json\") + '?' +\n \"service=\" + serviceSearch +\n \"&industry=\" + industrySearch +\n \"&location=\" + locationSearch +\n \"&lang=\" + langSearch +\n \"&name=\" + nameSearch +\n \"&count=\" + itemsPerPage.toString();\n\n var startIndex = initialStartIndex;\n // reset url when user press 'go to previous page' button in browser\n $(window).bind(\"pageshow\", function () {\n if (($(location).attr('search'))){\n url = $elem.attr(\"data-json\") + $(location).attr('search') + \"&lang=\" + langSearch + \"&count=\" + itemsPerPage.toString();\n }\n });\n\n // Bind \"More\" button\n $moreLink.click(function (e) {\n e.preventDefault();\n var _this = $(this);\n // Throttle fast button clicking\n if ($elem.hasClass('loading-more')) {\n return;\n }\n\n $elem.addClass('loading-more');\n var hideLocation = $elem.attr(\"data-hidelocation\");\n $.ajax({\n cache: false,\n url: url + '&start=' + startIndex.toString(), // start is 0-based\n dataType: \"json\",\n success: function (data) {\n $elem.removeClass('loading-more');\n _this.blur();\n if (!data || !data.People || !data.People.length) {\n me.LazyLoadMoreLinkRemove($moreLink);\n return;\n }\n // Take fetched JSON and render new items from it\n me.appendExperts(data.People, $expertsContainer, hideLocation);\n GT.GTPeopleLandingPage();\n\n startIndex += itemsPerPage;\n\n // Hide \"More\" button when reached the end\n if (startIndex > lastIndex) {\n me.LazyLoadMoreLinkRemove($moreLink);\n }\n }\n });\n\n });\n\n};\n\nGT.LazyLoad.prototype.loadMoreVacancies = function (department, jobTitle, jobLocation, jobUrl, index) {\n // html mark up in here\n\n var html = '
    ' + department + '
    ' + jobLocation +\n '
    ';\n\n $(\".vacancy-list-view\").append(html);\n};\n\nGT.LazyLoad.prototype.loadVacancies = function ($elem) {\n var me = this;\n\n var currentIndex = $elem.data(\"initialindex\");\n var pagesize = $elem.data(\"loadmore\");\n var totalCount = $elem.data(\"total\");\n var languageSymbol = $elem.data(\"language\");\n\n $elem.click(function (e) {\n var jsonUrl = \"/CareerService/GetJobLists/?start=\" + currentIndex + \"&count=\" + pagesize + \"&languageSymbol=\" + languageSymbol;\n\n $.ajax({\n cache: false,\n url: jsonUrl,\n dataType: \"json\",\n success: function (json) {\n var i;\n var moreVacancies,\n _jobSect,\n _jobName,\n _jobLoc,\n _jobUrl;\n var currentID;\n for (i = 0; i < json.length; i++) {\n moreVacancies = json[i];\n _jobSect = moreVacancies.Department;\n _jobName = moreVacancies.JobTitle;\n _jobLoc = moreVacancies.Location;\n _jobUrl = moreVacancies.JobUrl;\n\n me.loadMoreVacancies(_jobSect, _jobName, _jobLoc, _jobUrl, currentIndex + i);\n\n currentID = currentIndex + i;\n $(\"#job_id\" + currentID).css('opacity', 0).slideDown('fast').animate({\n opacity: 1\n }, {\n queue: true,\n duration: 'fast'\n });\n\n }\n\n currentIndex = currentIndex + pagesize; //increment the current index so the next ajax call gets the right content.\n\n if (currentIndex >= totalCount) {\n $(\".loadmore-container\").fadeOut(\"fast\", function () {\n $(this).remove();\n });\n }\n }\n });\n e.preventDefault();\n });\n};\n\nGT.LazyLoad.prototype.appendEvents = function (items, $resultsContainer) {\n var itemTemplate;\n var status;\n $.each(items, function (index, item) {\n status = item.Status;\n itemTemplate = '
    ';\n itemTemplate += '
    {{Date}}
    ';\n if (status && (status !== \"\")) {\n itemTemplate += '
    {{Title}}(' + status + ')
    ';\n } else {\n itemTemplate += '';\n }\n if (item.Location.length > 0) {\n itemTemplate += '
    {{Location}}
    ';\n }\n itemTemplate += '
    ';\n // create event item\n var elem = itemTemplate.replace(\"{{Url}}\", item.Url).replace(\"{{Title}}\", item.Title).replace(\"{{Date}}\", item.Date).replace(\"{{Location}}\", item.Location).replace(\"{{DateMarkupContent}}\", item.DateMarkupContent);\n var $element = $(elem);\n $element.css({\n 'opacity': 0\n });\n $resultsContainer.append($element);\n GT.Clamp($element.find('.event-name-single span a, .event-name span a'), {\n settings: {\n clamp: 2\n }\n });\n (function ($element) {\n setTimeout(function () {\n if (typeof GT.Equalise != \"undefined\") {\n GT.Equalise('.single-event-block');\n }\n $element.animate({\n 'opacity': 1\n });\n }, 100);\n })($element);\n\n });\n};\n\nGT.LazyLoad.prototype.LoadMoreEvents = function (serviceUrl, queryParams, $moreLink, itemsPerPage, itemsRequested, $resultsContainer) {\n var me = this;\n $.ajax({\n cache: false,\n url: serviceUrl,\n dataType: \"json\",\n data: $.param(queryParams, true),\n success: function (result) {\n $moreLink.removeClass('loading-more');\n $moreLink.blur();\n if (!result || !result.Items || !result.Items.length) {\n me.LazyLoadMoreLinkRemove($moreLink);\n return;\n }\n //appendItems(result.Items);\n me.appendEvents(result.Items, $resultsContainer);\n itemsRequested += itemsPerPage;\n ++queryParams.CurrentPageIndex;\n me.lazyLoadingStatus = true;\n\n // Hide \"More\" button when reached the end\n if ($('.single-event-block').length === result.TotalResultsNumber) {\n\n me.LazyLoadMoreLinkRemove($moreLink);\n }\n }\n });\n};\n\nGT.LazyLoad.prototype.LazyLoadingEvents = function ($elem) {\n var me = this;\n // Hide \"More\" button and exit when there's not enough items to enable lazy loading\n var $moreLink = $('.js-more-events');\n if (parseInt($('#enableLazyLoading').val(), 10) !== 1) {\n me.LazyLoadMoreLinkRemove($moreLink);\n return;\n }\n var itemsRequested = $('#initialStartIndex').val();\n itemsRequested = isNaN(itemsRequested) ? 20 : parseInt(itemsRequested, 10);\n var itemsPerPage = $('#itemsPerPage').val();\n itemsPerPage = isNaN(itemsPerPage) ? 20 : parseInt(itemsPerPage, 10);\n\n var url = $elem.attr(\"data-json\");\n\n var queryParams = $('#searchQuery').valueAsObject();\n\n var $resultsContainer = $('.listing-container');\n $($elem).on('click', function (e) {\n e.preventDefault();\n me.lazyLoadingStatus = false;\n\n // Throttle fast button clicking\n if ($elem.hasClass('loading-more')) {\n return;\n }\n $elem.addClass('loading-more');\n // check if filters has been set?\n var filter = $('#show-location').find('option:selected').val();\n queryParams.Location = filter;\n\n itemsRequested += itemsPerPage;\n me.LoadMoreEvents(url, queryParams, $elem, itemsPerPage, itemsRequested, $resultsContainer);\n });\n};\n\nGT.LazyLoad.prototype.FilterEvents = function ($elem) {\n $elem.on('change', function () {\n var $form = $elem.closest('form');\n $form.submit();\n });\n};\n\nGT.LazyLoad.prototype.getOfficeTemplate = function (_smallPrint, _additionalInfo, key, _employeesLink) {\n var addressTemplate = '';\n if (parseInt(key, 10) === 0) {\n addressTemplate += '
    {{OfficeName}}, {{Location}}
    ';\n }\n addressTemplate += '
    ';\n addressTemplate += '\"\"{{LocalLang}}
    ';\n addressTemplate += '

    {{Office}}

      ';\n addressTemplate += '
    • {{Phone}}
    • {{EmailUs}}
    • ';\n addressTemplate += '
      • {{Address}}
    • ';\n if (_smallPrint !== undefined) {\n addressTemplate += '
    • {{SmallPrint}}
    • ';\n }\n addressTemplate += '
    ';\n addressTemplate += '';\n if ((_employeesLink !== undefined) && (_employeesLink !== null) && (_employeesLink.length > 0)) {\n addressTemplate += '{{ViewEmployees}}';\n }\n addressTemplate += '
    ';\n addressTemplate += '
    ';\n if (_additionalInfo !== undefined) {\n addressTemplate += '
    {{AdditionalInfo}}
    ';\n }\n addressTemplate += '
    ';\n\n return addressTemplate;\n};\n\nGT.LazyLoad.prototype.loadOffices = function (key, _office, _location, _mapImg, _mapURL, _phone, _email, _addAry, _smallPrint, _additionalInfo, _emailUs, officeName, _employeesLink) {\n var me = this;\n var _addressAppend = _addAry ? _addAry.replace(/\\n/g, '
    ') : '';\n var $offices = $('.offices');\n var viewEmployees = $offices.closest('.container').attr('data-employees');\n\n if (!viewEmployees || (viewEmployees.length === 0)) {\n viewEmployees = \"View employees\";\n }\n var _defaultMapImgPath = $offices.closest('.container').attr('data-default-map-img');\n var $localLang = $offices.closest('.container').attr('data-location');\n var $localCountry = $offices.closest('.container').attr('data-country');\n\n var addressTemplate = me.getOfficeTemplate(_smallPrint, _additionalInfo, key, _employeesLink);\n if (_phone != null && _phone != \"\") {\n var tmpPhone = \"\" + _phone + \"\";\n _phone = tmpPhone;\n }\n\n // fill template with data\n addressTemplate = addressTemplate.replace(/\\{\\{OfficeName\\}\\}/g, officeName);\n addressTemplate = addressTemplate.replace(/\\{\\{Office\\}\\}/g, _office);\n addressTemplate = addressTemplate.replace(/\\{\\{Location\\}\\}/g, $localCountry);\n if (_mapImg === '') {\n addressTemplate = addressTemplate.replace(/\\{\\{MapImg\\}\\}/g, _defaultMapImgPath);\n } else {\n addressTemplate = addressTemplate.replace(/\\{\\{MapImg\\}\\}/g, _mapImg);\n }\n addressTemplate = addressTemplate.replace(/\\{\\{MapUrl\\}\\}/g, _mapURL);\n addressTemplate = addressTemplate.replace(/\\{\\{LocalLang\\}\\}/g, $localLang);\n addressTemplate = addressTemplate.replace(/\\{\\{Phone\\}\\}/g, _phone);\n addressTemplate = addressTemplate.replace(/\\{\\{Email\\}\\}/g, _email);\n addressTemplate = addressTemplate.replace(/\\{\\{EmailUs\\}\\}/g, _emailUs);\n addressTemplate = addressTemplate.replace(/\\{\\{Address\\}\\}/g, _addressAppend);\n addressTemplate = addressTemplate.replace(/\\{\\{SmallPrint\\}\\}/g, _smallPrint);\n addressTemplate = addressTemplate.replace(/\\{\\{AdditionalInfo\\}\\}/g, _additionalInfo);\n addressTemplate = addressTemplate.replace(/\\{\\{EmployeesLink\\}\\}/g, _employeesLink);\n addressTemplate = addressTemplate.replace(/\\{\\{ViewEmployees\\}\\}/g, viewEmployees);\n\n $(\".offices\").append(addressTemplate);\n};\n\nGT.LazyLoad.prototype.getLocationData = function ($locElem, locationList) {\n var me = this;\n var locData = $locElem.attr('data-loc');\n var locDataArray = locData.split('||');\n var locationData = locDataArray[0];\n var locationNiceUrl = locDataArray[1];\n var officeName = $locElem.attr('data-name');\n // is not active so remove active class\n locationList.removeClass(\"active\");\n // add class active to clicked item\n $locElem.addClass(\"active\");\n\n // remove current offices\n $(\".offices\").children().fadeOut('fast', function () {\n $(this).remove();\n });\n\n var locationUrl = (locationNiceUrl || officeName || locationData);\n var locationParam = \"?location=\" + locationUrl;\n if (me.hasHistorySupport()) {\n history.pushState(null, document.title, locationParam);\n } else {\n // otherwise - reload page\n var currentUrl = window.location.href;\n currentUrl = currentUrl.replace(window.location.search, \"\");\n window.location.href = currentUrl + locationParam;\n }\n\n // test using AJAX instead:\n $.ajax({\n type: 'GET',\n ///LocationService/GetOfficeContactDetails parm: string city\n url: '/LocationService/GetOfficeContactDetails/',\n data: {\n city: locationData,\n locationString: '',\n lang: window.gtConfig.currentLanguageId\n },\n success: function (data, textStatus) {\n // Handle success\n //var _location = data.OfficeLocation;\n console.log(data);\n var key,\n _office,\n _location,\n _mapImg,\n _mapURL,\n _phone,\n _emailObfuscate,\n _addAry,\n _additionalInfo,\n _emailUsObfuscate,\n _smallPrint,\n _employeesLink;\n for (key in data.OfficeLists) {\n if (data.OfficeLists.hasOwnProperty(key)) {\n _office = data.OfficeLists[key].Office;\n _location = data.OfficeLists[key].locat;\n _mapImg = data.OfficeLists[key].LocationImage;\n _mapURL = data.OfficeLists[key].MapUrl;\n _phone = data.OfficeLists[key].PhoneNumber;\n _emailObfuscate = data.OfficeLists[key].EmailAddressObfuscate;\n _addAry = data.OfficeLists[key].Address;\n _additionalInfo = data.OfficeLists[key].AdditionalInfo;\n _emailUsObfuscate = data.OfficeLists[key].EmailUsCaptionObfuscate;\n _smallPrint = data.OfficeLists[key].smallprint;\n _employeesLink = data.OfficeLists[key].EmployeesLink;\n // if smallprint exists\n // if (data.OfficeLists[key].smallprint !== undefined) {\n // _smallPrint = data.OfficeLists[key].smallprint;\n // } else {\n // _smallPrint = undefined;\n // }\n\n me.loadOffices(key, _office, _location, _mapImg, _mapURL, _phone, _emailObfuscate, _addAry, _smallPrint, _additionalInfo, _emailUsObfuscate, officeName, _employeesLink);\n }\n }\n if (data.OfficeLists[0]) {\n me.scrollDownToOffices();\n }\n },\n error: function (xhr, textStatus, errorThrown) {\n // Handle error\n }\n });\n};\n\nGT.LazyLoad.prototype.getLocation = function ($elem) {\n var me = this;\n // make this better...\n var locationList = $('.locations-list span.office a');\n\n locationList.click(function () {\n var $locElem = $(this);\n if (!$locElem.hasClass('active')) {\n me.getLocationData($locElem, locationList);\n }\n\n // json function\n return false;\n });\n};\n\nGT.LazyLoad.prototype.scrollToLocation = function ($elem) {\n var me = this;\n\n var currentUrl = window.location.href;\n if (currentUrl.match(/\\?location=/)) {\n setTimeout(function () {\n me.scrollDownToOffices();\n }, 750);\n }\n};\n\nGT.LazyLoad.prototype.scrollDownToOffices = function () {\n $('html, body').animate({\n scrollTop: $(\".offices\").offset().top\n }, 950);\n};\n\nGT.LazyLoad.prototype.hasHistorySupport = function () {\n return !!(window.history && history.pushState);\n};\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n [\n { elm: $('.js-more-experts'), settings: { run: 'LazyLoadingPeople' } }\n ].map(function (item) {\n if (item.elm.length) {\n new GT.LazyLoad(item.elm, item);\n }\n })\n });\n\nlet linkTertiaryList = [];\n\nGT.LinkTertiary = function () {\n linkTertiaryList.push(setTimeout(() => {\n let hiddenLinkAnimation = document.querySelector(\"body\");\n if(hiddenLinkAnimation) {\n hiddenLinkAnimation.classList.remove(\"hidden-link__animation\");\n }\n }, 350))\n}\n\nGT.hideHyperLinkAnimation = function() {\n linkTertiaryList.forEach(timer => {\n clearTimeout(timer);\n })\n \n let _body = document.querySelector(\"body\");\n if(!_body.classList.contains('hidden-link__animation')) _body.classList.add('hidden-link__animation');\n GT.LinkTertiary();\n}\n\nGT.domContentLoadedFncList.push(function(){\n GT.LinkTertiary();\n});\n\nGT.expandBanner = function ($elem) {\n var copy = $($elem).find('.content-copy');\n var readMore = $($elem).find('.route-link.down.pull-right');\n var readLess = $($elem).find('.route-link.up.pull-right');\n readLess.hide();\n if (copy.height() <= 96) {\n readMore.hide();\n }\n else {\n copy.css('max-height','96px');\n readMore.show();\n readMore.on('click', function () {\n copy.css('max-height','none');\n readMore.hide();\n readLess.show();\n readLess.on('click', function () {\n copy.css('max-height','96px');\n readMore.show();\n readLess.hide();\n });\n });\n }\n};\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function () {\n new GT.expandBanner($('.content_hub.content_hub-container--wide'));\n });\nGT.popupLocation = function (position) {\n\tvar pickedPos = position;\n\tvar mapBlock = $('.map-block .popup-content');\n\tmapBlock.find('.close').on('click', function (event) {\n\t\tmapBlock.css('display', 'none');\n\t});\n\tvar getdirectiontextlocal;\n\tif (!getDirectionTextGoogleMap) {\n\t\tgetdirectiontextlocal = \"Get directions\";\n\t} else {\n\t\tgetdirectiontextlocal = getDirectionTextGoogleMap;\n\t}\n\tvar currentLocation = JSON.parse(localStorage.getItem('location'));\n\tvar latLngAddToMap = '';\n\tif (currentLocation.lat && currentLocation.lng && currentLocation.lat > 0 && currentLocation.lng > 0) {\n\t\tlatLngAddToMap = currentLocation.lat + ',' + currentLocation.lng\n\t}\n\tfor (var i = 0; i < listDetailLocation.length; i++) {\n\t\tif (listDetailLocation[i].officeId === pickedPos) {\n\t\t\tmapBlock.css('display', 'block');\n\t\t\tmapBlock.find('.map-title').empty().append(listDetailLocation[i].office);\n\t\t\tmapBlock.find('.map-address .address').empty().append(listDetailLocation[i].address);\n\t\t\t// var tollFreeNumberText = '';\n\t\t\t// if (listDetailLocation[i].isShowTollFree)\n\t\t\t// {\n\t\t\t// \ttollFreeNumberText = '

    ' + listDetailLocation[i].tollFreeNumberTextNoClass+'' + listDetailLocation[i].tollFreeNumber +'

    ';\n\t\t\t// }\n\t\t\t// var faxNumberText = '';\n\t\t\t// if (listDetailLocation[i].isShowFax) {\n\t\t\t// \tfaxNumberText = '

    ' + listDetailLocation[i].faxNumber + '

    \\n';\n\t\t\t// }\n\n\t\t\tmapBlock.find('.map-links .map-link__location a').attr(\"href\", listDetailLocation[i].mapUrl + latLngAddToMap);\n\t\t\tmapBlock.find('.map-links .map-link__location a').attr(\"title\", listDetailLocation[i].mapUrlTitle);\n\t\t\tmapBlock.find('.map-links .map-link__phone a').text(listDetailLocation[i].phoneNo);\n\t\t\tmapBlock.find('.map-links .map-link__phone a').attr(\"href\", \"tel:\" + listDetailLocation[i].phoneNo);\n\t\t\t// mapBlock.find('.map-links').empty().append(' \\n' +\n\t\t\t// \t' '+ faxNumberText + tollFreeNumberText\n\t\t\t// );\n\t\t\tmapBlock.find('.btn.btn-primary-teal').attr('href', listDetailLocation[i].linkLocation);\n\t\t}\n\t}\n};\nGT.checkMapDirection = function () {\n\tvar currentLocation = JSON.parse(localStorage.getItem('location'));\n\tif (currentLocation) {\n\t\tif (currentLocation.lat && currentLocation.lng && currentLocation.lat > 0 && currentLocation.lng > 0) {\n\t\t\t$('.google-map-direction').each(function () {\n\t\t\t\t\tvar newURL = $(this).attr('href') + currentLocation.lat + ',' + currentLocation.lng;\n\t\t\t\t\t$(this).attr('href', newURL);\n\t\t\t});\n\t\t\t}\n\t}\n};\nGT.checkMapDirectionLittleLotOffice = function () {\n\tvar currentLocation = JSON.parse(localStorage.getItem('location'));\n\tif (currentLocation) {\n\t\tif (currentLocation.lat && currentLocation.lng && currentLocation.lat > 0 && currentLocation.lng > 0) {\n\t\t\t$('.google-map-direction-litle-lot').each(function () {\n\t\t\t\tvar currentHref = $(this).attr('href');\n\t\t\t\tif(currentHref) {\n\t\t\t\t\tvar locationArray = currentHref.split('&saddr=');\n\t\t\t\t\tif (locationArray && locationArray[1]===\"\") {\n\t\t\t\t\t\tvar newURL = $(this).attr('href') + currentLocation.lat + ',' + currentLocation.lng;\n\t\t\t\t\t\t$(this).attr('href', newURL);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n};\nGT.checkMapDirection();\nGT.FilterOffice = function ($elem, opts) {\n\tif(typeof lotsofficeservicefilter == \"undefined\")\n\t\treturn;\n\n\tvar dataModel = JSON.parse(JSON.stringify(lotsofficeservicefilter));\n\tvar $this = this;\n\tvar showBtn = $($elem).find(\".show-more-btn\");\n\tvar filterContainer = $($elem).find('.filter_list');\n\tvar clearFilterContainer = $($elem).find(\".filter-count\");\n\tvar clearFilter = $($elem).find(\".clear-filter\");\n\tvar filterNumber = $($elem).find(\".filter-number\");\n\tvar accordionList = $($elem).find(\".accordion .accordion__items\");\n\tvar resultNumber = $($elem).find('.result-number');\n\tvar backToTop = $($elem).find('.route-link.up');\n\tvar is1stTime = true;\n\tvar currentLocation = JSON.parse(localStorage.getItem('location'));\n\tvar latLngAddToMap = '';\n\tif (currentLocation.lat && currentLocation.lng && currentLocation.lat > 0 && currentLocation.lng > 0) {\n\t\tlatLngAddToMap = currentLocation.lat + ',' + currentLocation.lng\n\t}\n\tvar defaultSelectedList = null;\n\t// DEFINE TEMPLATE\n\tvar accordionItem = $('
    \\n' +\n\t\t'
    \\n' +\n\t\t'
    \\n' +\n\t\t' \\n' +\n\t\t'
    \\n' +\n\t\t'
    \\n' +\n\t\t'
    ');\n\tvar accordionHeading = $('
    ');\n\n\t// FUNCTIONS\n\tfunction init() {\n\n\t\tinitFilter();\n\t\tupdateResults(defaultSelectedList);\n\t\tupdateFilterNumber();\n\t}\n\n\tshowBtn.on('click', function (event) {\n\t\t$(this).toggleClass('show-less');\n\t\tif ($(this).hasClass('show-less')) {\n\t\t\tif (showLessText) {\n\t\t\t\t$(this).text(showLessText);\n\t\t\t} else {\n\t\t\t\t$(this).text('Show less');\n\t\t\t}\n\n\t\t\tfilterContainer.css('max-height', 'none');\n\t\t} else {\n\t\t\tif (showMoreText) {\n\t\t\t\t$(this).text(showMoreText);\n\t\t\t} else {\n\t\t\t\t$(this).text('Show more');\n\t\t\t}\n\t\t\tfilterContainer.css('max-height', opts.height);\n\t\t}\n\t});\n\tbackToTop.on('click', function (event) {\n\t\tvar $container = $(\"html,body\");\n\t\t$container.animate({\n\t\t\tscrollTop: ($($elem).offset().top)\n\t\t}, 500, function(){\n\t\t\t$($elem).find(\".filter-pill:eq(0)\").focus();\n\t\t});\n\t});\n\t$(opts.filterSelector).on('click', opts.triggerSelector, function (event) {\n\t\tis1stTime = false;\n\t\t$(this).toggleClass('selected');\n\t\tvar selectedList = [];\n\t\t$(opts.triggerSelector + '.selected').each(function () {\n\t\t\tselectedList.push($(this).val());\n\t\t});\n\t\tif (selectedList.length === 0) {\n\t\t\tselectedList = defaultSelectedList;\n\t\t\tis1stTime = true;\n\t\t\tclearFilterContainer.hide();\n\t\t} else {\n\t\t\tclearFilterContainer.show();\n\t\t}\n\t\tif($(this).hasClass(\"selected\"))\n\t\t\t$(this).attr(\"aria-selected\", \"true\");\n\t\t$('.map-block .popup-content').css('display', 'none');\n\t\tupdateResults(selectedList);\n\t\tupdateFilterNumber();\n\t});\n\tclearFilter.on('click', function (event) {\n\t\t$(opts.triggerSelector).each(function () {\n\t\t\t$(this).removeClass('selected').attr(\"aria-selected\", \"false\");\n\t\t});\n\t\tis1stTime = true;\n\t\tupdateResults(defaultSelectedList);\n\t\tupdateFilterNumber();\n\t\t$('.map-block .popup-content').css('display', 'none');\n\t\tclearFilterContainer.hide();\n\t\t$($elem).find(\".filter-pill:eq(0)\").focus();\n\t});\n\n\tvar updateFilterNumber = function () {\n\t\tlet filterNumberStr = $(opts.filterSelector).find(\".selected\").length + ' filters chosen';\n\t\tfilterNumber.text(filterNumberStr);\n\t\tclearFilter.attr(\"aria-description\", filterNumberStr);\n\t\tif (is1stTime === true) {\n\t\t\tresultNumber.hide();\n\t\t} else {\n\t\t\tresultNumber.show();\n\t\t}\n\t};\n\tvar initFilter = function () {\n\t\tif (dataModel.isHideFilter === true || dataModel.listFilters.length <= 0) {\n\t\t\t$($elem).find(\".filter-control\").remove();\n\t\t} else {\n\t\t\tvar filterPill = $(' ');\n\t\t\tfilterContainer.empty();\n\t\t\tfor (var i = 0; i < dataModel.listFilters.length; i++) {\n\t\t\t\tvar filterPillInstance = filterPill.clone().text(dataModel.listFilters[i].text).val(dataModel.listFilters[i].value);\n\t\t\t\tfilterPillInstance.appendTo(filterContainer);\n\t\t\t}\n\t\t\tif ($(window).width() < 1024) {\n\t\t\t\topts.height = '236px';\n\n\t\t\t\tif (filterContainer.height() <= opts.height) {\n\t\t\t\t\tshowBtn.hide();\n\t\t\t\t} else {\n\t\t\t\t\tfilterContainer.css('max-height', opts.height);\n\t\t\t\t\tshowBtn.show();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (filterContainer.height() <= 116) {\n\t\t\t\t\tshowBtn.hide();\n\t\t\t\t} else {\n\t\t\t\t\tfilterContainer.css('max-height', opts.height);\n\t\t\t\t\tshowBtn.show();\n\t\t\t\t}\n\t\t\t}\n\t\t\twindow.addEventListener('resize', function () {\n\t\t\t\tif ($(window).width() < 1024) {\n\t\t\t\t\topts.height = '236px';\n\t\t\t\t\tfilterContainer.css('max-height', 'none');\n\t\t\t\t\tif (filterContainer.height() <= 236) {\n\t\t\t\t\t\tshowBtn.hide();\n\t\t\t\t\t\tfilterContainer.css('max-height', opts.height);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfilterContainer.css('max-height', opts.height);\n\t\t\t\t\t\tshowBtn.show();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\topts.height = '116px';\n\t\t\t\t\tfilterContainer.css('max-height', 'none');\n\t\t\t\t\tif (filterContainer.height() <= 116) {\n\t\t\t\t\t\tfilterContainer.css('max-height', opts.height);\n\t\t\t\t\t\tshowBtn.hide();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfilterContainer.css('max-height', opts.height);\n\t\t\t\t\t\tshowBtn.show();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t\tclearFilterContainer.hide();\n\t\t}\n\n\t};\n\n\n\tvar updateResults = function (selectedData) {\n\t\taccordionList.empty();\n\t\tresultNumber.empty();\n\t\tresultNumber.hide();\n\t\t$($elem).find('.filter-result .row').empty();\n\t\tvar resultCount = 0;\n\t\tvar dataClone = JSON.parse(JSON.stringify(dataModel));\n\t\tvar defaultOffice;\n\t\tlistLocation = [];\n\t\tvar getdirectiontextlocal;\n\t\tif (!getDirectionText) {\n\t\t\tgetdirectiontextlocal = \"Get directions\";\n\t\t} else {\n\t\t\tgetdirectiontextlocal = getDirectionText;\n\t\t}\n\t\tif (dataClone.isLittleOffice === false) {\n\t\t\tvar removeValFromIndex = [];\n\t\t\tfor (var a = 0; a < dataClone.data.length; a++) {\n\t\t\t\tvar temp1 = [];\n\t\t\t\tfor (var b = 0; b < dataClone.data[a].subData.length; b++) {\n\t\t\t\t\tvar flag = false;\n\t\t\t\t\tif (dataClone.data[a].subData[b].officeId.toString() === $('#defaultFocusOffice').val()) {\n\t\t\t\t\t\tdefaultOffice = a;\n\t\t\t\t\t}\n\t\t\t\t\tif (selectedData && selectedData.length > 0) {\n\t\t\t\t\t\tif (dataClone.data[a].subData[b].code) {\n\t\t\t\t\t\t\tfor (var c = 0; c < dataClone.data[a].subData[b].code.length; c++) {\n\n\t\t\t\t\t\t\t\tif (selectedData.includes(dataClone.data[a].subData[b].code[c])) {\n\t\t\t\t\t\t\t\t\tflag = true;\n\t\t\t\t\t\t\t\t\tbreak;\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} else {\n\t\t\t\t\t\tflag = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (flag === true) {\n\t\t\t\t\t\ttemp1.push(dataClone.data[a].subData[b]);\n\t\t\t\t\t\tlistDetailLocation.push(dataClone.data[a].subData[b]);\n\t\t\t\t\t\tlistLocation.push({\n\t\t\t\t\t\t\tofficeId: dataClone.data[a].subData[b].officeId,\n\t\t\t\t\t\t\toffice: dataClone.data[a].subData[b].office,\n\t\t\t\t\t\t\tcoordinate: {\n\t\t\t\t\t\t\t\t'lat': dataClone.data[a].subData[b].lat,\n\t\t\t\t\t\t\t\t'lng': dataClone.data[a].subData[b].lng\n\t\t\t\t\t\t\t}\n\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\tif (temp1.length > 0) {\n\t\t\t\t\tdataClone.data[a].subData = temp1;\n\t\t\t\t\tresultCount += temp1.length;\n\t\t\t\t\tif (is1stTime === false) {\n\t\t\t\t\t\tdataClone.data[a].count = ' (' + temp1.length + ')';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdataClone.data[a].count = '';\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tremoveValFromIndex.push(a);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (var r = removeValFromIndex.length - 1; r >= 0; r--) {\n\t\t\t\tdataClone.data.splice(removeValFromIndex[r], 1);\n\t\t\t}\n\t\t\tresultNumber.append(resultCount + ' results');\n\n\t\t\treloadMarkers();\n\t\t\tfor (var i = 0; i < dataClone.data.length; i++) {\n\t\t\t\tvar accClone = accordionItem.clone();\n\t\t\t\taccordionHeading.text(dataClone.data[i].heading + dataClone.data[i].count).clone().prependTo(accClone);\n\n\t\t\t\tfor (var j = 0; j < dataClone.data[i].subData.length; j++) {\n\t\t\t\t\tvar tollFreeNumberText = '';\n\t\t\t\t\tif (dataClone.data[i].subData[j].isShowTollFree) {\n\t\t\t\t\t\ttollFreeNumberText = ' ';\n\t\t\t\t\t}\n\t\t\t\t\tvar faxNumberText = '';\n\t\t\t\t\tif (dataClone.data[i].subData[j].isShowFax) {\n\t\t\t\t\t\tfaxNumberText = '\\n';\n\t\t\t\t\t}\n\t\t\t\t\taccClone.find('.accordion-item__content .row').append('
    \\n' +\n\t\t\t\t\t\t'
    \\n' +\n\t\t\t\t\t\t' \\n' +\n\t\t\t\t\t\t'

    ' + dataClone.data[i].subData[j].address + '

    \\n' +\n\t\t\t\t\t\t'
    \\n' +\n\t\t\t\t\t\t' \\n' +\n\t\t\t\t\t\t' \\n' + faxNumberText +\n\t\t\t\t\t\ttollFreeNumberText+\n\t\t\t\t\t\t'
    \\n' +\n\t\t\t\t\t\t'
    \\n' +\n\t\t\t\t\t\t'
    ');\n\t\t\t\t}\n\t\t\t\taccClone.appendTo(accordionList);\n\t\t\t}\n\t\t\tif (is1stTime) {\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t$('.accordion-item').eq(defaultOffice).find('.accordion-item__trigger').click();\n\t\t\t\t}, 100);\n\t\t\t} else {\n\t\t\t\t$('.accordion-item__trigger').first().click();\n\t\t\t}\n\t\t} else {\n\t\t\tvar temp2 = [];\n\t\t\tfor (var a = 0; a < dataClone.datalittle.length; a++) {\n\t\t\t\tvar flag = false;\n\t\t\t\tif (selectedData && selectedData.length > 0) {\n\t\t\t\t\tif (dataClone.datalittle[a].code) {\n\t\t\t\t\t\tfor (var b = 0; b < dataClone.datalittle[a].code.length; b++) {\n\t\t\t\t\t\t\tif (selectedData.includes(dataClone.datalittle[a].code[b])) {\n\t\t\t\t\t\t\t\tflag = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tflag = true;\n\t\t\t\t}\n\t\t\t\tif (flag === true) {\n\t\t\t\t\ttemp2.push(dataClone.datalittle[a]);\n\t\t\t\t\tlistDetailLocation.push(dataClone.datalittle[a]);\n\t\t\t\t\tlistLocation.push({\n\t\t\t\t\t\tofficeId: dataClone.datalittle[a].officeId,\n\t\t\t\t\t\toffice: dataClone.datalittle[a].office,\n\t\t\t\t\t\tcoordinate: {\n\t\t\t\t\t\t\t'lat': dataClone.datalittle[a].lat,\n\t\t\t\t\t\t\t'lng': dataClone.datalittle[a].lng\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (temp2.length > 0) {\n\t\t\t\tdataClone.datalittle = temp2;\n\t\t\t\tresultCount += temp2.length;\n\t\t\t}\n\t\t\treloadMarkers();\n\t\t\tresultNumber.append(resultCount + ' results');\n\t\t\tfor (var i = 0; i < dataClone.datalittle.length; i++) {\n\t\t\t\tvar tollFreeNumberText = '';\n\t\t\t\tif (dataClone.datalittle[i].isShowTollFree) {\n\t\t\t\t\ttollFreeNumberText = ' ';\n\t\t\t\t}\n\t\t\t\tvar faxNumberText = '';\n\t\t\t\tif (listDetailLocation[i].isShowFax) {\n\t\t\t\t\tfaxNumberText = '\\n';\n\t\t\t\t}\n\t\t\t\t$($elem).find('.filter-result .row').append('
    \\n' +\n\t\t\t\t\t'
    \\n' +\n\t\t\t\t\t' \\n' +\n\t\t\t\t\t'

    ' + dataClone.datalittle[i].address + '

    \\n' +\n\t\t\t\t\t'
    \\n' +\n\t\t\t\t\t' \\n' +\n\t\t\t\t\t' \\n' + faxNumberText +\n\t\t\t\t\ttollFreeNumberText +\n\t\t\t\t\t'
    \\n' +\n\t\t\t\t\t'
    \\n' +\n\t\t\t\t\t'
    ');\n\t\t\t}\n\t\t}\n\t};\n\n\tinit();\n};\nGT.CheckClosestOffice = function ($elem) {\n\tnavigator.geolocation.getCurrentPosition(function (position) {\n\t\tif (position) {\n\t\t\t\tvar lat = position.coords.latitude;\n\t\t\t\tvar lon = position.coords.longitude;\n\t\t\t\tvar $blockValue = $elem.find('#officeCloseToServiceBlockValue');\n\t\t\t\tvar $locationId = $elem.find('#officeCloseToServiceBlockLocationId');\n\t\t\t\tvar $pageId = $elem.find('#officeCloseToCurrentPageId');\n\t\t\t\tif ($blockValue.length && $locationId.length && $pageId.length) {\n\t\t\t\t\t$.get(\n\t\t\t\t\t\t'/LocationService/GetOneOfficeCloseServiceTo',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocationPage: $locationId.val(),\n\t\t\t\t\t\t\tlocationBannerOfficeCloseBlock: $blockValue.val(),\n\t\t\t\t\t\t\tlanguage: $('#officeCloseToServiceBlockLanguageBranch').val(),\n\t\t\t\t\t\t\tcurrentPageId: $pageId.val(),\n\t\t\t\t\t\t\tlatitude: lat,\n\t\t\t\t\t\t\tlongitude: lon\n\t\t\t\t\t\t}\n\t\t\t\t\t).done(function (data) {\n\t\t\t\t\t\tif (data && data !== '') {\n\t\t\t\t\t\t\t$('#officeCloseToService').html(data);\n\t\t\t\t\t\t\tvar elementToUpdateLatLng = $('#one-office-google-map-direction');\n\t\t\t\t\t\t\tvar newURL = elementToUpdateLatLng.attr('href') + lat + ',' + lon;\n\t\t\t\t\t\t\telementToUpdateLatLng.attr('href', newURL);\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\tfunction (error) {\n\t\t\tconsole.log(error);\n\t\t},\n\t\t{ timeout: 60000 }\n\t);\n};\n\nGT.Maps = function(){\n let currentLocations = [],\n mapElm = document.getElementById('location');\n \n function autoZoomFnc() {\n if(!mapElm || typeof mapConfig == \"undefined\")\n return;\n if(mapConfig.boundCoordinates) {\n let GLOBE_WIDTH = 256, // a constant in Google's map projection\n angle = mapConfig.boundCoordinates.startLat - mapConfig.boundCoordinates.endLat;\n \n if (angle < 0) {\n angle += 360;\n }\n\n let zoomByHeight = Math.log(mapElm.offsetHeight * 360 / angle / GLOBE_WIDTH) / Math.LN2;\n\n angle = mapConfig.boundCoordinates.startLng - mapConfig.boundCoordinates.endLng;\n if (angle < 0) {\n angle += 360;\n }\n\n let zoomByWidth = Math.log(mapElm.offsetWidth * 360 / angle / GLOBE_WIDTH) / Math.LN2;\n\n mapConfig.oldMapZoomLevel = mapConfig.mapZoomLevel;\n mapConfig.mapZoomLevel = zoomByHeight > zoomByWidth ? zoomByWidth : zoomByHeight;\n\n if(map) {\n map.setZoom(mapConfig.mapZoomLevel);\n }\n }\n }\n\n function initMap() {\n\n if(!mapElm || typeof mapConfig == \"undefined\")\n return;\n\n if (mapConfig.mapZoomLevelMobile && GT.wWidth < 768) {\n mapConfig.mapZoomLevel = mapConfig.mapZoomLevelMobile;\n }\n autoZoomFnc();\n\n if (isNaN(mapConfig.mapZoomLevel) || mapConfig.mapZoomLevel <= 0)\n mapConfig.mapZoomLevel = -1;\n\n if(parseFloat(mapConfig.defaultCenter.lat) == 0 && locations.length) {\n mapConfig.defaultCenter = locations[0];\n }\n\n mapConfig.defaultCenter.lat = parseFloat(mapConfig.defaultCenter.lat);\n mapConfig.defaultCenter.lng = parseFloat(mapConfig.defaultCenter.lng);\n map = new google.maps.Map(mapElm, {\n mapTypeControl: mapConfig.mapTypeControl || false,\n streetViewControl: mapConfig.streetViewControl || false,\n fullscreenControl: mapConfig.fullscreenControl || false,\n zoomControl: mapConfig.zoomControl || false,\n gestureHandling: mapConfig.gestureHandling || \"none\",\n zoom: mapConfig.mapZoomLevel,\n center: mapConfig.defaultCenter,\n styles: [\n {\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#f5f5f5\"\n }\n ]\n },\n {\n \"elementType\": \"labels.icon\",\n \"stylers\": [\n {\n \"visibility\": \"off\"\n }\n ]\n },\n {\n \"elementType\": \"labels.text.fill\",\n \"stylers\": [\n {\n \"color\": \"#616161\"\n }\n ]\n },\n {\n \"elementType\": \"labels.text.stroke\",\n \"stylers\": [\n {\n \"color\": \"#f5f5f5\"\n }\n ]\n },\n {\n \"featureType\": \"administrative.land_parcel\",\n \"elementType\": \"labels.text.fill\",\n \"stylers\": [\n {\n \"color\": \"#bdbdbd\"\n }\n ]\n },\n {\n \"featureType\": \"poi\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#eeeeee\"\n }\n ]\n },\n {\n \"featureType\": \"poi\",\n \"elementType\": \"labels.text.fill\",\n \"stylers\": [\n {\n \"color\": \"#757575\"\n }\n ]\n },\n {\n \"featureType\": \"poi.park\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#e5e5e5\"\n }\n ]\n },\n {\n \"featureType\": \"poi.park\",\n \"elementType\": \"labels.text.fill\",\n \"stylers\": [\n {\n \"color\": \"#9e9e9e\"\n }\n ]\n },\n {\n \"featureType\": \"road\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#ffffff\"\n }\n ]\n },\n {\n \"featureType\": \"road.arterial\",\n \"elementType\": \"labels.text.fill\",\n \"stylers\": [\n {\n \"color\": \"#757575\"\n }\n ]\n },\n {\n \"featureType\": \"road.highway\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#dadada\"\n }\n ]\n },\n {\n \"featureType\": \"road.highway\",\n \"elementType\": \"labels.text.fill\",\n \"stylers\": [\n {\n \"color\": \"#616161\"\n }\n ]\n },\n {\n \"featureType\": \"road.local\",\n \"elementType\": \"labels.text.fill\",\n \"stylers\": [\n {\n \"color\": \"#9e9e9e\"\n }\n ]\n },\n {\n \"featureType\": \"transit.line\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#e5e5e5\"\n }\n ]\n },\n {\n \"featureType\": \"transit.station\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#eeeeee\"\n }\n ]\n },\n {\n \"featureType\": \"water\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#c9c9c9\"\n }\n ]\n },\n {\n \"featureType\": \"water\",\n \"elementType\": \"labels.text.fill\",\n \"stylers\": [\n {\n \"color\": \"#9e9e9e\"\n }\n ]\n }\n ]\n });\n\n \n if(mapConfig.defaultCenterAsMaker)\n locations.unshift(mapConfig.defaultCenter);\n\n locations.forEach(function(element, idx) {\n locations[idx].lat = parseFloat(element.lat);\n locations[idx].lng = parseFloat(element.lng);\n });\n setMarkers(locations);\n }\n\n function setMarkers(locations) {\n var bounds = new google.maps.LatLngBounds();\n for (var i = 0; i < locations.length; i++) {\n let cur_location = locations[i],\n markerObj = {\n position: cur_location,\n icon: {\n url: '/dist/icons/' + (mapConfig.markerIcon ? mapConfig.markerIcon : (i == 0 && mapConfig.makeDiff ? 'marker' : \"marker-white\")) +'.svg',\n scaledSize: new google.maps.Size(50, 50),\n },\n map: map,\n optimized: false\n };\n\n if(mapConfig.makeDiff && i == 0) {\n markerObj.zIndex = 999;\n }\n\n let marker = new google.maps.Marker(markerObj);\n\n if (mapConfig.mapZoomLevel === -1)\n bounds.extend(marker.position);\n \n if(mapConfig.callbackWhenClickingOnMarker)\n marker.addListener('click', function (e) {\n mapConfig.callbackWhenClickingOnMarker(e, cur_location);\n });\n // Push marker to markers array\n currentLocations.push(marker);\n }\n if (mapConfig.mapZoomLevel === -1)\n map.fitBounds(bounds);\n }\n\n\n initMap();\n GT.windowResizeFncList.maps = autoZoomFnc;\n}\n\n\nGT.domContentLoadedFncList.push(function () {\n GT.Maps();\n});\nGT.MarketoEmbedForms = function () {\n let lang = document.querySelector(\"html\").lang,\n script_src = 'https://www.google.com/recaptcha/api.js?onload=CallbackGReCaptchaInited&render=explicit' + (lang ? '&hl=' + lang : \"\"),\n gReCaptchaPubKey = document.querySelector(\".g-recaptcha-key\");\n\n if (typeof MktoForms2 !== 'undefined') {\n\n let mkForms = document.querySelectorAll(\".marketo-embed-form form\"),\n filteredIDList = [],\n filteredList = [],\n filteredConfigList = [];\n\n mkForms.forEach(function(elm, idx) {\n let existedID;\n filteredIDList.forEach(function(idArr, idxArr){\n if(idArr.indexOf(elm.id) >= 0) {\n existedID = elm.id;\n idArr.push(elm.id);\n filteredList[idxArr].push(elm);\n filteredConfigList[idxArr].push(marketoConfig[idx]);\n }\n })\n if(!existedID) {\n filteredIDList.push([elm.id]);\n filteredList.push([elm]);\n filteredConfigList.push([marketoConfig[idx]]);\n }\n })\n\n filteredIDList.forEach(function(idArr, idxArr){\n let currentList = filteredList[idxArr];\n renderMkForm(currentList, filteredConfigList[idxArr], currentList.length);\n })\n\n function renderMkForm(mkElmArr, mkConfigArr, listLength, countForm) {\n if(!countForm)\n countForm = 0;\n\n let mkForm = mkElmArr[countForm],\n renderMkFormFnc = mkConfigArr[countForm];\n mkForm.id = mkForm.id.replace(\"__\", \"_\");\n\n renderMkFormFnc(function(form){\n mkForm.id = mkForm.id.replace(\"_\", \"__\" + countForm);\n GT.marketoElm = new GT.MarketoEmbedForm(mkForm, form, script_src, gReCaptchaPubKey);\n countForm++;\n if(countForm < listLength){\n renderMkForm(mkElmArr, mkConfigArr, listLength, countForm);\n }\n });\n }\n }\n};\n\nGT.MarketoEmbedForm = function (mkFormElm, form, script_src, gReCaptchaPubKey) {\n let _this = this;\n _this.formElement = mkFormElm;\n let container = _this.formElement.closest(\".marketo-embed-form\");\n let _iOS = GT.isIOS();\n let _isMobile = GT.isMobileCached;\n\n _this.isStripCss = container.dataset.stripCss;\n _this.container = container;\n _this.isBannerForm = _this.formElement.closest('.campaign-banner');\n _this.campaignGAClass = 't33-campaign-page-form-submit';\n _this.isHomepageBlock = document.querySelector('.homepagecontactblock');\n _this.enableFeatureFlag = container.dataset.enableFeatureFlag;\n\n if (_this.formElement) {\n form.submittable(false);\n form.onValidate(function(builtInValidation) {\n let recaptchaResponseElm = _this.formElement.querySelector(\".g-recaptcha-response\"),\n recaptchaContainerElm = _this.formElement.querySelector(\".g-recaptcha-container\"),\n isReCaptchaOK = true,\n lastRecaptchaUserInput = _this.formElement.querySelector(\"input[name=lastRecaptchaUserInput]\");\n\n if (recaptchaResponseElm && lastRecaptchaUserInput) {\n lastRecaptchaUserInput.value = recaptchaResponseElm.value;\n\n let recaptchaMsgMkto = recaptchaContainerElm.querySelector(\".captcha-error\");\n if(recaptchaMsgMkto)\n recaptchaMsgMkto.remove();\n\n if(lastRecaptchaUserInput.value.trim().length == 0) {\n isReCaptchaOK = false;\n recaptchaContainerElm.insertAdjacentHTML(\"beforeend\", \"
    \" + recaptchaRequireMessage + \"
    \");\n }\n } \n\n if (!builtInValidation || !isReCaptchaOK) {\n \n setTimeout(() => {\n let errorMsgLabel = _this.formElement.querySelector(\".mktoErrorMsg\")?.closest(\".mktoFormRow\")?.querySelector(\".mktoLabel\")?.innerText;\n if(errorMsgLabel) {\n errorMsgLabel = errorMsgLabel.replace(/[\\*|:|\\n]/gm, \"\");\n }\n\n dataLayer.push({\n \"event\": \"marketoError\",\n \"errorMessage\": errorMsgLabel || (!isReCaptchaOK ? \"ReCaptcha\" : \"\"),\n \"marketoID\": form.getId(),\n \"marketoMunchkinId\": _this.formElement.querySelector('[name=munchkinId]')?.value || \"\"\n });\n }, 500)\n\n return;\n }\n form.submittable(true);\n })\n\n form.onSuccess(function (values, followUpUrl) {\n if (container.dataset.displaySuccessMsg === \"true\") {\n let successMessage = container.querySelector('.success-msg');\n if (successMessage) {\n _this.formElement.remove();\n successMessage.style.display = \"block\";\n window.scrollTo(0, GT.getElementOffset(successMessage).top - GT.wHeight/2);\n dataLayer.push({\n \"event\": \"contactForm\",\n \"eventAction\": 'form submission',\n \"marketo.form_id\": _this.formElement.id,\n \"marketo.form_values\": values,\n \"marketo.follow_up_url\": followUpUrl\n });\n return false;\n }\n }\n });\n\n\n let lastRecaptchaUserInput = _this.formElement.querySelector(\"input[name=lastRecaptchaUserInput]\");\n if(lastRecaptchaUserInput && gReCaptchaPubKey) {\n\n if(!document.querySelector('script[src^=\"'+ script_src +'\"]')) {\n let script = document.createElement('script');\n\n script.src = script_src;\n script.defer = \"defer\";\n document.head.append(script);\n }\n\n let captchaContainer = _this.formElement.querySelector(\".g-recaptcha-container\");\n if(!captchaContainer) {\n _this.formElement.querySelector(\"button[type=submit].mktoButton\").insertAdjacentHTML(\"beforebegin\", \"
    \");\n captchaContainer = _this.formElement.querySelector(\".g-recaptcha-container\");\n }\n \n if(captchaContainer && !captchaContainer.innerHTML) {\n GT.RecaptchaCallbackFnList[\"marketoEmbedForm\" + _this.formElement.id] = {fnc: null, isExecuted: false};\n GT.RecaptchaCallbackFnList[\"marketoEmbedForm\" + _this.formElement.id].fnc = function(){\n try{\n setTimeout(function() {\n grecaptcha.render(captchaContainer, {\n 'sitekey' : gReCaptchaPubKey.dataset.sitekey.trim(),\n 'callback': function(){\n let recaptchaMsgMkto = elm.querySelector(\".captcha-error\");\n if(recaptchaMsgMkto)\n recaptchaMsgMkto.remove();\n }\n });\n }, 500)\n } catch(ex){\n console.log(ex);\n }\n }\n\n if(typeof grecaptcha != \"undefined\") {\n console.log(\"inited captcha\", grecaptcha);\n CallbackGReCaptchaInited();\n }\n }\n lastRecaptchaUserInput.closest(\".mktoFieldDescriptor\").classList.add(\"hide\");\n lastRecaptchaUserInput.classList.remove(\"mktoRequired\");\n lastRecaptchaUserInput.removeAttribute(\"aria-required\");\n lastRecaptchaUserInput.type = \"hidden\";\n }\n\n if (_this.stripCss) {\n _this.stripCss();\n window.addEventListener(\"resize\", function(){\n _this.stripCss();\n });\n }\n\n if (!_iOS && !_isMobile && _this.isBannerForm) {\n _this.recalculateHeight();\n }\n \n _this.addGaClass();\n\n function modifyStyle(doStripCss) {\n if (doStripCss && _this.stripCss)\n _this.stripCss();\n\n _this.addClassTocheckboxes();\n \n if (_this.enableFeatureFlag && !_this.isHomepageBlock) {\n _this.addClassToRadio();\n _this.addClassToSelect();\n _this.addFloatingClass();\n } else {\n _this.modifyCheckboxLabel();\n _this.addIconToSelect();\n }\n \n if (_this.isHomepageBlock) // //run only on homepage mkt form\n _this.addIconToRadio();\n }\n\n modifyStyle();\n\n\n //========= DETECT FORM's ELEMENTS CHANGE\n let gtHelper = new GTHelper();\n gtHelper.detectDOMChange(_this.formElement, function(mutations){\n modifyStyle(true);\n })\n }\n};\n\nGT.MarketoEmbedForm.prototype.addGaClass = function () {\n let _this = this;\n let submitBtn = document.querySelectorAll('#' + _this.formElement.id + ' .mktoButtonRow button[type=\"submit\"]')[0];\n if (submitBtn && document.querySelector('.campaign-page')) {\n submitBtn.classList.add(_this.campaignGAClass);\n }\n};\n\nGT.MarketoEmbedForm.prototype.stripCss = function () {\n let _this = this,\n successMessage = document.querySelector('.marketo-embed-form .success-msg');\n if (_this.isStripCss || _this.isHomepageBlock) {\n let childElements = document.querySelectorAll('#' + _this.formElement.id + ' *');\n for (let i = 0; i < childElements.length; i++) {\n childElements[i].removeAttribute('style');\n }\n let dom = document.querySelectorAll('#' + _this.formElement.id);\n for (let i = 0; i < dom.length; i++) {\n dom[i].removeAttribute('style');\n }\n let styles = document.querySelectorAll('#' + _this.formElement.id + ' style');\n for (let i = 0; i < styles.length; i++) {\n styles[i].remove();\n }\n \n if (_this.isHomepageBlock && successMessage) // //run only on homepage mkt form\n successMessage.style.removeProperty('padding');\n }\n};\n\n//remove extra checkbox label to meet WCAG\nGT.MarketoEmbedForm.prototype.modifyCheckboxLabel = function () {\n let _this = this,\n checkboxes = _this.formElement.querySelectorAll('input[type=\"checkbox\"]');\n\n checkboxes.forEach(function(element){\n if(!element.dataset.initializedCheckboxLabel) {\n element.dataset.initializedCheckboxLabel = true;\n _this.formElement.querySelectorAll('label[for=\"' + element.name + '\"]').forEach(function(labelEl){\n if (labelEl.classList.contains('mktoLabel')) {\n labelEl.setAttibute(\"for\", labelEl.getAttribute(\"for\") + \"2\");\n labelEl.classList.add(\"mktoExtraLabel\");\n labelEl.style.display = \"inline-block\";\n } else {\n labelEl.innerHTML = '' + element.name + '';\n }\n });\n }\n })\n};\n\nGT.MarketoEmbedForm.prototype.recalculateHeight = function () {\n let _this = this;\n if (_this.isBannerForm) {\n let banner = _this.container.closest('.campaign-banner');\n let formHeight = _this.formElement.offsetHeight;\n if (formHeight + 150 > 600) {\n banner.style.minHeight = (formHeight + 150) + 'px';\n }\n }\n};\n\nGT.MarketoEmbedForm.prototype.addClassTocheckboxes = function () {\n let _this = this;\n let form = _this.formElement;\n let checkboxes = form.querySelectorAll('.mktoCheckboxList');\n \n checkboxes.forEach(function(element) {\n if(!element.dataset.initializedCheckbox) {\n element.dataset.initializedCheckbox = true;\n let wrapper = element.closest('.mktoFieldWrap');\n let isMulticheckboxes = element.querySelectorAll('input').length > 1;\n\n wrapper.classList.add('mktoCheckboxWrapper');\n _this.modifyFieldID(wrapper, _this.formElement);\n\n if (isMulticheckboxes) {\n wrapper.classList.add('mktMultiCheckboxes');\n } else {\n wrapper.classList.add('mktSingleCheckbox');\n }\n }\n })\n};\nGT.MarketoEmbedForm.prototype.addIconToSelect = function () {\n this.formElement.querySelectorAll(\"select\").forEach(function(element){\n if(!element.dataset.initializedSelectIcon) {\n element.dataset.initializedSelectIcon = true;\n let parentElement = element.parentElement;\n if(parentElement.querySelector('.custom-selection-icon')) {\n parentElement.insertAdjacentHTML(\"beforeend\", '
    ');\n }\n }\n })\n};\n\nGT.MarketoEmbedForm.prototype.addIconToRadio = function () {\n this.formElement.querySelectorAll(\".mktoRadioList\").forEach(function(element){\n if(!element.dataset.initializedRadioIcon) {\n element.dataset.initializedRadioIcon = true;\n if(element.querySelector('input')) {\n element.parentElement.classList.add(\"mktMultiRadios\");\n element.querySelector('label').insertAdjacentHTML(\"afterbegin\", '');\n }\n }\n })\n};\n\nGT.MarketoEmbedForm.prototype.addClassToRadio = function () {\n let _this = this;\n let form = _this.formElement;\n let checkboxes = form.querySelectorAll('.mktoRadioList');\n \n checkboxes.forEach(function(element) {\n if(!element.dataset.initializedRadio) {\n element.dataset.initializedRadio = true;\n let wrapper = element.closest('.mktoFieldWrap');\n wrapper.classList.add('mktoRadioWrapper');\n _this.modifyFieldID(wrapper, _this.formElement);\n }\n })\n};\n\nGT.MarketoEmbedForm.prototype.addClassToSelect = function () {\n let _this = this;\n let form = _this.formElement;\n let selects = form.querySelectorAll('select.mktoField');\n \n selects.forEach(function(element) {\n if(!element.dataset.initializedSelect) {\n element.dataset.initializedSelect = true;\n element.closest('.mktoFieldWrap').classList.add('mktoSelectWrapper');\n let fieldLabel = element.closest('.mktoFieldWrap').querySelector('.mktoLabel');\n if (fieldLabel.innerText == '') {\n fieldLabel.classList.add('mktoLabel--empty-text')\n }\n }\n })\n};\n\nGT.MarketoEmbedForm.prototype.modifyFieldID = function(fieldWrap, formElement) {\n fieldWrap.querySelectorAll(\"*\").forEach(function(elm){\n if(elm.id && elm.id != \"lastRecaptchaUserInput\")\n elm.id += formElement.id;\n \n const forAttr = elm.getAttribute(\"for\");\n if(forAttr)\n elm.setAttribute(\"for\", forAttr + formElement.id);\n })\n}\n\nGT.MarketoEmbedForm.prototype.addFloatingClass = function() {\n let _this = this;\n let form = _this.formElement;\n\n function errorClassHandle(field) {\n let wrapper = field.closest('.mktoFieldWrap');\n if (field.classList.contains('mktoInvalid') && wrapper.querySelector('.mktoError')) {\n wrapper.classList.add('error');\n } else {\n wrapper.classList.remove('error');\n }\n }\n function filledClassHandle(item) {\n let parent = item.closest('.mktoFieldWrap');\n if (item.value.length) {\n parent.classList.add('filled');\n } else {\n parent.classList.remove('filled');\n }\n }\n \n let inputFields = form.querySelectorAll('.mktoTextField, .mktoEmailField, .mktoTelField, .mktoDateField, select, textarea');\n\n if (inputFields) {\n inputFields.forEach(function(element) {\n let fieldWrap = element.closest('.mktoFieldWrap');\n\n if(fieldWrap && !element.dataset.initializedFloatingStyle) {\n element.dataset.initializedFloatingStyle = true;\n fieldWrap.classList.add('floating-label');\n _this.modifyFieldID(fieldWrap, _this.formElement);\n \n errorClassHandle(element);\n \n setTimeout(function() {\n filledClassHandle(element);\n }, 1000)\n \n element.addEventListener('focusin', function(e) {\n errorClassHandle(e.target);\n fieldWrap.classList.add('focus');\n })\n element.addEventListener('focusout', function(e) {\n errorClassHandle(e.target);\n fieldWrap.classList.remove('focus');\n })\n element.addEventListener('change', function(e) {\n filledClassHandle(e.target);\n \n setTimeout(function() {\n errorClassHandle(e.target);\n }, 1000)\n })\n }\n });\n }\n}\n\nif(typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n GT.MarketoEmbedForms();\n });\nGT.GTMarketoEmbedFormEventRegistrationPage = function (elem) {\n\tif (typeof MktoForms2 !== 'undefined') {\n\t\tMktoForms2.whenReady(function (form) {\n\t\t\tform.onSuccess(function () {\n\t\t\t\tif ($(elem).val()) {\n\t\t\t\t\t//waiting for GTM fetchs completely\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\twindow.location.href = $(elem).val();\n\t\t\t\t\t}, 500)\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n};\nif (typeof isV1GT == \"undefined\")\n\tGT.domContentLoadedFncList.push(function(){\n\t\tnew GT.GTMarketoEmbedFormEventRegistrationPage($('#event-confimation-page-link'));\n\t});\n////////////////////////////\n// GT CAROUSELS FUNCTIONS //\n////////////////////////////\n\nGT.MediaCarousel = function ($elem) {\n\n var me = this;\n\n me.tabNavigation = function ($tabContent, $tabItems) {\n var $tabHead = $elem.find('.tab-drawer-heading');\n\n // if in tab mode\n $tabItems.click(function (e) {\n var $tabItem = $(this);\n var _activeTab = $tabItem.attr('data-tab');\n\n if ($tabItem.parent().hasClass('active')) {\n return false;\n }\n $tabContent.hide();\n $('#' + _activeTab).fadeIn();\n\n $tabItems.parent().removeClass('active');\n $tabItem.parent().addClass('active');\n\n $tabHead.removeClass('d-active');\n $tabHead.each(function () {\n var $tHead = $(this);\n if ($tHead.attr('data-tab') === _activeTab) {\n $tHead.addClass('d-active');\n }\n });\n\n return false;\n });\n\n // if in drawer mode\n $tabHead.click(function (e) {\n e.preventDefault();\n var $tabHeader = $(this),\n dActiveTab = $tabHeader.attr('data-tab'),\n offset = $tabHeader.offset();\n\n if ($tabHeader.hasClass('d-active')) {\n $tabHeader.removeClass('d-active');\n $('#' + dActiveTab).slideUp('slow');\n } else {\n $tabContent.slideUp('slow');\n $('#' + dActiveTab).slideDown('slow', function () {\n $tabHead.removeClass('d-active');\n $tabHeader.addClass('d-active');\n //add scrolltop function here\n offset = $tabHeader.offset();\n offset.left -= 20;\n offset.top -= 50;\n\n $tabItems.parent().removeClass('active');\n $tabItems.each(function () {\n if ($(this).attr('data-tab') === dActiveTab) {\n $(this).parent().addClass('active');\n }\n });\n });\n }\n });\n };\n\n me.adjustItems = function () {\n var $tabItems = $elem.find('ul.tabs li .tab-link'),\n $tabContent = $elem.find('.tab-content');\n\n var highest = 0;\n\n $tabContent.each(function (index) {\n if (highest < $(this).height()) {\n highest = $(this).height();\n }\n });\n\n itemCount = $tabItems.length,\n newHeight = highest / itemCount;\n\n $tabItems.css({ 'min-height': newHeight });\n\n var $tabs = $elem.find('ul.tabs');\n\n $('.page-promo-item').each(function () {\n if ($(this).height() < $tabs.height()) {\n $(this).css({ 'min-height': $tabs.height() });\n }\n\n })\n }\n\n me.init = function () {\n\n var $tabItems = $elem.find('ul.tabs li .tab-link'),\n $tabContent = $elem.find('.tab-content');\n\n $tabContent.hide();\n $tabContent.first().show();\n\n me.tabNavigation($tabContent, $tabItems);\n\n //equalize list-item heights with tabContent\n me.adjustItems();\n\n $(window).on('resize', function () {\n me.adjustItems();\n });\n };\n\n me.init();\n};\n\nGT.OfficeBanner = function ($element) {\n $(window).resize(function () {\n handleResize();\n });\n function handleResize() {\n var bannerBgColorClasses = [\"purple\",\"orange\",\"green\",\"teal\",\"white\",\"transparent\"];\n var $bannerContainer = $element.find('.container .title');\n var $me = $element.find('.ww');\n var $extraClass = null;\n\n if ($bannerContainer.length > 0 && $me.length > 0) {\n for (var i = 0; i < bannerBgColorClasses.length; i++) {\n if ($bannerContainer.hasClass(bannerBgColorClasses[i]) || $me.hasClass(bannerBgColorClasses[i])){\n $extraClass = bannerBgColorClasses[i];\n break;\n }\n }\n\n if (screen.width <= 767) {\n $bannerContainer.removeClass($extraClass);\n $me.addClass($extraClass);\n } else {\n $me.removeClass($extraClass);\n $bannerContainer.addClass($extraClass);\n }\n }\n }\n handleResize();\n};\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function () {\n new GT.OfficeBanner($('.office-banner'));\n });\nGT.OnPageNavigation = function () {\n const htmlElm = document.firstElementChild;\n const CLASSES = {\n ON_PAGE_NAV: \".onpage-navigation\",\n ON_PAGE_NAV_CONT: \".onpage-navigation__container\",\n EXPAND_BTN: \".onpage-navigation__expand\",\n CLOSE_BTN: \".onpage-navigation__close\",\n CURRENT_ITEM: \".onpage-navigation__current\",\n LINK_ITEMS: \".onpage-navigation__link\",\n OUT_VIEWPORT: \"out-viewport\",\n EXPANDED: \"expanded\",\n SHOW_OVERLAY: \"showing-overlay\",\n SHOW_ONPAGE_NAVIGATION: \"showing-onpage-navigation\"\n }\n const onPageNav = document.querySelector(CLASSES.ON_PAGE_NAV);\n if (!onPageNav) return;\n const expandedBtn = onPageNav.querySelector(CLASSES.EXPAND_BTN);\n const currentItem = onPageNav.querySelector(CLASSES.CURRENT_ITEM);\n const closeBtn = onPageNav.querySelector(CLASSES.CLOSE_BTN);\n\n init();\n\n function closeOnPageNav() {\n onPageNav.classList.remove(CLASSES.EXPANDED);\n htmlElm.classList.remove(CLASSES.SHOW_OVERLAY);\n GT.disableDetectScrollUpOrDown = false;\n }\n\n function setActiveNavItem(id) {\n const activeLink = htmlElm.querySelector('.onpage-navigation__link[href^=\"#' + id + '\"]');\n if (!activeLink) return;\n if(!htmlElm.classList.contains(\"animating\")) {\n htmlElm.querySelectorAll('.onpage-navigation__link').forEach(link => link.classList.remove('active'));\n activeLink.classList.add(\"active\");\n currentItem.innerHTML = activeLink.getAttribute(\"title\");\n window.location.hash = activeLink.hash;\n }\n currentItem.classList.add(\"active\");\n }\n\n function isElementInViewport(el) {\n const elmOffset = GT.getElementOffset(el).top;\n return (elmOffset < GT.lastScrollTop + GT.wHeight / 3 && elmOffset + el.clientHeight - (GT.wHeight / 4) > GT.lastScrollTop);\n }\n\n function needToScrollDirection(el) {\n if (!el) return;\n const rect = el.getBoundingClientRect();\n const windowHeight = window.innerHeight || document.documentElement.clientHeight;\n\n if (rect.top < 0) {\n return 'up';\n } else if (rect.bottom > windowHeight) {\n return 'down';\n } else {\n return 'in view';\n }\n }\n\n function menuActiveTracking() {\n handleNavPosition();\n const sections = htmlElm.querySelectorAll(\"[data-block-id]\");\n const isAnimating = htmlElm.classList.contains(\"animating\");\n if(!isAnimating)\n currentItem.classList.remove(\"active\");\n\n let set = false;\n sections.forEach((section, index) => {\n const id = section.getAttribute(\"data-block-id\");\n if (isElementInViewport(section) && !set) {\n setActiveNavItem(id);\n set = true;\n } else if(!isAnimating) {\n htmlElm.querySelector('.onpage-navigation__link[href^=\"#' + id + '\"]')?.classList.remove(\"active\");\n }\n });\n }\n\n function hasMenuV3() {\n return htmlElm.classList.contains(\"has-menu-v3\");\n }\n\n function handleNavPosition() {\n const targetOffset = GT.getElementOffset(onPageNav).top - (GT.isScrollingUp ? GT.headerElmHeight : (hasMenuV3() ? 0 : GT.mainHeaderElmHeight));\n const isDesktopView = GT.isDesktopView();\n\n if (hasMenuV3()) {\n \n if (GT.lastScrollTop > targetOffset) {\n onPageNav.classList.add(\"visible\");\n htmlElm.classList.add(CLASSES.SHOW_ONPAGE_NAVIGATION);\n } else {\n if (GT.lastScrollTop < onPageNav.offsetTop - onPageNav.clientHeight && isDesktopView) {\n onPageNav.classList.remove(\"visible\");\n htmlElm.classList.remove(CLASSES.SHOW_ONPAGE_NAVIGATION);\n }\n }\n\n } else {\n if (GT.lastScrollTop > targetOffset) {\n onPageNav.classList.add(\"visible\");\n htmlElm.classList.add(CLASSES.SHOW_ONPAGE_NAVIGATION);\n } else if(isDesktopView) {\n onPageNav.classList.remove(\"visible\");\n htmlElm.classList.remove(CLASSES.SHOW_ONPAGE_NAVIGATION);\n }\n }\n }\n\n function scrollIntoView(href) {\n const hrefArr = href.split(\"#\");\n const id = hrefArr[1]?.split(\"_\")[0];\n const scrollTarget = document.querySelector(\"[data-block-id='\" + id + \"']\");\n if (!scrollTarget) return;\n let scrollDirection = needToScrollDirection(scrollTarget);\n let targetOffsetTop = GT.getElementOffset(scrollTarget).top;\n let scrollOffset = targetOffsetTop - GT.headerElm.clientHeight - onPageNav.clientHeight - 16;\n \n\n if (hasMenuV3()) {\n scrollOffset = targetOffsetTop - onPageNav.clientHeight - 16;\n if (scrollDirection == \"up\")\n scrollOffset -= GT.headerElm.clientHeight;\n }\n\n setActiveNavItem(hrefArr[1]);\n GT.preventOpeningMenu(1000);\n window.scrollTo(0, scrollOffset);\n }\n\n function handleLinkClick() {\n htmlElm.querySelectorAll(CLASSES.LINK_ITEMS).forEach(item => {\n item.addEventListener(\"click\", e => {\n const targetElm = e.target;\n e.preventDefault();\n if(!targetElm.classList.contains(\"active\")) {\n GT.preventHeaderFromFlickeringWhileBodyHeightIsChanging();\n closeOnPageNav();\n scrollIntoView(targetElm.href);\n }\n })\n })\n }\n\n\n function init() {\n expandedBtn?.addEventListener(\"click\", () => {\n onPageNav.classList.add(CLASSES.EXPANDED);\n GT.disableDetectScrollUpOrDown = true;\n GT.lockScrollBehindOverlay(CLASSES.ON_PAGE_NAV_CONT);\n htmlElm.classList.add(CLASSES.SHOW_OVERLAY);\n })\n closeBtn?.addEventListener(\"click\", () => {\n closeOnPageNav();\n })\n\n GT.listFunctionsTriggerInScrollEvent.onPageNav = menuActiveTracking;\n\n if(location.hash) {\n GT.preventHeaderFromFlickeringWhileBodyHeightIsChanging();\n menuActiveTracking();\n setTimeout(() => {\n document.querySelector(\".onpage-navigation__link[href='\" + location.hash + \"']\")?.click();\n }, 300)\n } else if(!GT.isDesktopView()) {\n htmlElm.classList.add(CLASSES.SHOW_ONPAGE_NAVIGATION);\n onPageNav.classList.add(\"visible\");\n }\n handleLinkClick();\n }\n};\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n GT.OnPageNavigation();\n });\n///////////////////////////\n// GT OVERLAYS FUNCTIONS //\n///////////////////////////\n\nfunction GTOverlays() {\n\n var me = this;\n var lastFocusElement;\n\n this._clientY = null; // remember Y position on touch start\n\n this.calculateOverlayH = function ($container, screenH, overlayH) {\n var offSetH = 0;\n $container.removeClass(\"full-height\");\n if (overlayH > screenH) {\n $container.addClass(\"full-height\");\n } else {\n offSetH = (screenH - overlayH) / 2;\n }\n\n return offSetH;\n };\n\n this.getWindowWidth = function ($window) {\n var winWidth;\n if ($('html').hasClass('lt-ie9')) {\n winWidth = document.body.clientWidth;\n } else {\n winWidth = $window.width();\n }\n\n return winWidth;\n };\n\n this.getWindowHeight = function ($window) {\n var winHeight;\n if ($('html').hasClass('lt-ie9')) {\n winHeight = document.body.clientHeight / 4;\n } else {\n winHeight = Math.max($window.height(), window.innerHeight);\n }\n\n return winHeight;\n };\n\n this.disableRubberBand = function (event, container) {\n var clientY = event.targetTouches[0].clientY - me._clientY;\n\n if (container.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll\n event.preventDefault();\n }\n\n if (me.isOverlayTotallyScrolled(container) && clientY < 0) {\n //element is at the top of its scroll\n event.preventDefault();\n }\n }\n\n this.isOverlayTotallyScrolled = function (overlay) {\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\n return overlay.scrollHeight - overlay.scrollTop <= overlay.clientHeight;\n }\n\n //reset Epi form\n this.resetEpiForm = function(){\n setTimeout(function(){\n if ($('.newsletter-container').length >= 1) \n $('.newsletter-container .content > div').removeAttr('style');\n }, 600);\n }\n\n function autoFocusAtFirstElm(elm){\n var tabbable = elm.find('select, input, textarea, button, a, [role=\"button\"]').filter(':visible');\n var firstTabbable = tabbable.first();\n var lastTabbable = tabbable.last();\n /*set focus on first input*/\n setTimeout(() => {\n firstTabbable.focus();\n }, 500)\n\n /*redirect last tab to first input*/\n lastTabbable.on('keydown', function (e) {\n if ((e.which === 9 && !e.shiftKey)) {\n e.preventDefault();\n firstTabbable.focus();\n }\n });\n\n /*redirect first shift+tab to last input*/\n firstTabbable.on('keydown', function (e) {\n if ((e.which === 9 && e.shiftKey)) {\n e.preventDefault();\n lastTabbable.focus();\n }\n });\n }\n\n // try this\n this.runOverlay = function (htmlOrRef, container, containerWidth, containerHeight, checkH, isNewsletter, doNotAddBindings, callbackOnClose) {\n var screenW, screenH;\n\n var $window = $(window);\n var screenW = me.getWindowWidth($window);\n var screenH = me.getWindowHeight($window);\n var removeOnClose = false;\n\n var $body = $('body');\n $body.addClass('overlay-no-scroll');\n $('html').addClass('overflowHidden');\n\n if (!$(\".overlay\").length) {\n $body.append('
    ');\n } else {\n $(\".overlay\").show();\n }\n if (typeof htmlOrRef === 'string' || htmlOrRef instanceof String) {\n $(\".overlay\").after(htmlOrRef);\n removeOnClose = true;\n } else if (htmlOrRef instanceof Element) {\n\n } else {\n return false;\n }\n\n // ok, so we have to check if our overlay isn't heigher than window\n var $container = $(container);\n if (checkH) {\n $container.width('100%');\n }\n var overlayH = $container.outerHeight(true);\n var offSetH = me.calculateOverlayH($container, screenH, overlayH);\n\n var scrollTop = $(window).scrollTop();\n var offSetL = (screenW - containerWidth) / 2;\n\n // Blur all inputs / textareas with placeholders to init on browsers LTE IE9\n if ($(\"html\").hasClass('lte-ie9')) {\n $container.find(\"[placeholder]\").blur();\n }\n\n // if offset is <0 make offset 10 else the overlay will appear off the screen on mobile.\n if (offSetL < 0) {\n offSetL = 0;\n }\n\n if (isNewsletter) {\n $container.css({ 'position': 'fixed' });\n } else {\n offSetH = offSetH + scrollTop;\n }\n\n $('.overlay').bind('touchmove', function (event) {\n event.preventDefault();\n })\n\n var closeOverlay = function(){\n //issue: cannot remove container in T32, so have to query selector again\n let _container = $(container);\n if ($('.overlay').is(':visible')) {\n me.hideOverlay();\n if (lastFocusElement) {\n lastFocusElement.focus();\n }\n if (removeOnClose) {\n _container.remove();\n } else {\n _container.fadeOut();\n me.resetEpiForm();\n }\n if (GT.isFunction(callbackOnClose)) {\n callbackOnClose();\n }\n }\n }\n\n if (!doNotAddBindings) {\n $container.bind('touchstart', function (event) {\n me._clientY = event.targetTouches[0].clientY;\n });\n\n $container.bind('touchmove', function (event) {\n me.disableRubberBand(event, this);\n });\n\n $(document).on('resize', function () {\n setTimeout(function () {\n $container.css({ 'overflow': 'auto' });\n $container.css('-webkit-overflow-scrolling', 'touch');\n $container.css('max-height', 'calc(100vh - 40px)');\n }, 1000)\n });\n\n $(document).on('keydown', function (e) {\n if (e.keyCode === 27) { // ESC\n closeOverlay();\n }\n });\n\n $('.js-close-overlay').on('click', function () {\n //lastFocusElement = this;\n closeOverlay();\n return false;\n });\n }\n\n $('.overlay').on('click', function (e) {\n // lastFocusElement = this;\n closeOverlay();\n e.stopImmediatePropagation();\n return false;\n });\n\n $container.fadeIn();\n if (!$container.is(\".contact-form-popup\") && !$container.is(\".popup-contact-me-form\") && !$container.is(\".focusable-form\")) {\n me.overlayTabNavHandlerOnOpen();\n } else {\n $container.css('display','flex');\n // if($container.is(\".focusable-form\")) {\n // }\n \n autoFocusAtFirstElm($container);\n }\n GT.hideHyperLinkAnimation();\n return true;\n };\n // / try this\n\n // hide overlay function\n this.hideOverlay = function () {\n\n $('.overlay').off('click');\n var $body = $('body');\n $body.removeClass('overlay-no-scroll');\n if(!document.firstElementChild.classList.contains(\"opening-mobile-menu\"))\n $('html').removeClass('overflowHidden');\n\n var $window = $(window);\n var screenW = me.getWindowWidth($window);\n\n\n var top = Math.abs(parseInt($('body').css('top'), 10));\n\n GT.setInertWhileOpeningDialog(false);\n $('.overlay').fadeOut('slow');\n me.overlayTabNavHandlerOnClose();\n };\n\n // youtube overlay\n this.youTubeOverlay = function (url) {\n var winWidth = $(window).innerWidth();\n var winHeight = $(window).innerHeight();\n var playerWidth = winWidth * 0.8;//560,\n\n //if(playerWidth > 1000) playerWidth = 1000;\n\n var playerHeight = playerWidth / 1.6;//315,\n\n if (playerHeight > winHeight) {\n playerHeight = winHeight * 0.8;\n playerWidth = playerHeight * 1.6;\n }\n\n if (winWidth <= 480) {\n playerWidth = 320;\n playerHeight = 200;\n }\n\n var regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=)([^#\\&\\?]*).*/;\n var videoID = url.match(regExp);\n\n if (videoID && videoID[2].length == 11) {\n videoID = videoID[2];\n } else {\n videoID = false;\n }\n\n if (videoID) {\n url = 'https://www.youtube.com/embed/' + videoID;\n }\n // var htmlMarkup = '
    \"close
    ';\n var htmlMarkup = '
    ';\n var container = '.youtube-container';\n\n me.runOverlay(htmlMarkup, container, playerWidth, playerHeight, false, false);\n me.hideRelatedVideoInYoutube(container);\n };\n\n // vimeo overlay\n this.vimeoVideoOverlay = function (me, id, playerWidth, playerHeight) {\n var htmlMarkup = '
    ';\n\n var container = '.youtube-container';\n\n me.runOverlay(htmlMarkup, container, playerWidth, playerHeight, false, false);\n };\n\n // vimeo thumbnail\n this.vimeoVideoThumbNail = function (me, currentElem, videoID) {\n currentElem.addClass(\"lazyload\");\n currentElem.attr('data-bgset', 'https://vumbnail.com/' + videoID + '.jpg');\n };\n\n // youtube overlay\n this.youTubeVideoOverlay = function (me, id, playerWidth, playerHeight) {\n var htmlMarkup = '
    ';\n var container = '.youtube-container';\n me.runOverlay(htmlMarkup, container, playerWidth, playerHeight, false, false);\n me.hideRelatedVideoInYoutube(container);\n };\n\n var player;\n this.loadPlayer = function (playerFrame) {\n if (typeof (YT) == 'undefined' || typeof (YT.Player) == 'undefined') {\n var tag = document.createElement('script');\n tag.src = \"https://www.youtube.com/iframe_api\";\n var firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n\n window.onYouTubePlayerAPIReady = function () {\n me.onYouTubePlayer(playerFrame);\n };\n } else {\n me.onYouTubePlayer(playerFrame);\n }\n }\n\n this.onYouTubePlayer = function (playerFrame) {\n player = new YT.Player(playerFrame, {\n videoId: playerFrame,\n events: {\n 'onReady': me.onPlayerReady,\n 'onStateChange': me.onPlayerStateChange\n }\n });\n }\n \n this.onPlayerReady = function (event) {\n event.target.playVideo();\n }\n\n this.onPlayerStateChange = function (event) {\n if (event.data == YT.PlayerState.ENDED) {\n if (typeof player !== 'undefined' && typeof player.seekTo != \"function\"){\n event.target.a.contentWindow.postMessage('{\"event\":\"command\",\"func\":\"' + 'stopVideo' + '\",\"args\":\"\"}', '*');\n }else{\n player.seekTo(0, false);\n player.stopVideo();\n }\n }\n }\n this.hideRelatedVideoInYoutube = function (container) {\n var playerFrame = $(container).find(\"iframe\");\n me.loadPlayer(playerFrame.attr(\"id\"));\n }\n\n // generic overlay\n this.newsletterOverlay = function () {\n\n var containerWidth = 640,\n containerHeight = 457;\n var winWidth = $(window).innerWidth();\n if (containerWidth < winWidth) {\n containerWidth = winWidth;\n }\n\n // html content\n var heading = 'Subscribe to our newsletters',\n newsletter1 = 'Email newsletter option 1',\n newsletter1copy = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eu ante lorem. Phasellus at lacinia nunc. Nullam iaculis quis nunc facilisis luctus.',\n newsletter2 = 'Email newsletter option 2',\n newsletter2copy = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eu ante lorem. Phasellus at lacinia nunc. Nullam iaculis quis nunc facilisis luctus.',\n submitURL = '#';\n\n var htmlMarkup = '

    ' + heading + '

    Close

    ' + newsletter1copy + '

    ' + newsletter2copy + '

    Subscribe here
    ';\n\n var container = '.newsletter-container';\n\n me.runOverlay(htmlMarkup, container, containerWidth, containerHeight, true, true);\n };\n\n this.openVideoInNewTab = function (currentElem) {\n\n currentElem.blur();\n var EXIT = true,\n CONTINUE = false;\n var win = false;\n\n if (currentElem.hasClass('video__open-in-new-tab')) {\n win = window.open(currentElem.attr(\"href\"), '_blank');\n if (win) {\n //Browser has allowed it to be opened\n win.focus();\n }\n return EXIT;\n }\n return CONTINUE;\n }\n\n this.launchOverlay = function ($elem, obj) {\n function handleClick(e){\n if (!e.keyCode || e.keyCode === '13') {\n e.preventDefault();\n if (!me.openVideoInNewTab($(e.srcElement))) {\n // on click - button name changes to \"loading...\" at the end\n // open the modal\n var youtubeLink = e.srcElement.href;\n if (youtubeLink && youtubeLink.length > 0) {\n me.youTubeOverlay(youtubeLink);\n }\n }\n }\n }\n $elem.each(function(idx, item){\n item.onclick = handleClick;\n item.onkeydown = handleClick;\n })\n };\n\n this.launchVideoOverlay = function (elem, obj) {\n var\n vimeoRegExp = /https?:\\/\\/(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^\\/]*)\\/videos\\/|album\\/(\\d+)\\/video\\/|video\\/|[\\w]+\\/review\\/|)(\\d+)(?:\\/(\\w+))?(?:$|\\/|\\?)/,\n youtubeRegExp = /^.*(?:(?:youtu\\.be\\/|v\\/|vi\\/|u\\/\\w\\/|embed\\/)|(?:(?:watch)?\\?v(?:i)?=|\\&v(?:i)?=))([^#\\&\\?]*).*/,\n playerWidth = 560,\n playerHeight = 315,\n winWidth = $(window).innerWidth();\n\n if (winWidth <= 480) {\n playerWidth = 320;\n playerHeight = 200;\n }\n\n function handleLaunchOfVideoOverlay(videoID, playerWidth, playerHeight, videoFunction) {\n // on click - button name changes to \"loading...\" at the end\n // open the modal\n videoFunction(me, videoID, playerWidth, playerHeight);\n };\n\n elem.each(function () {\n var $current = $(this),\n videoLink = $current.attr(\"href\"),\n videoID = 0;\n var vimeoMatch, youtubeMatch;\n if (videoLink && videoLink.length > 0) {\n vimeoMatch = videoLink.match(vimeoRegExp);\n youtubeMatch = videoLink.match(youtubeRegExp);\n }\n\n if (vimeoMatch) {\n videoID = vimeoMatch[3];\n if(!$current.parent(\".press-video\").length)\n me.vimeoVideoThumbNail(me, $current, videoID);\n } else if (youtubeMatch) {\n videoID = youtubeMatch[1];\n if(!$current.parent(\".press-video\").length) {\n $current.addClass(\"lazyload\");\n $current.attr('data-bgset', 'https://img.youtube.com/vi/' + videoID + '/maxresdefault.jpg');\n }\n // $current.attr('style', 'background-image: url(\" https://img.youtube.com/vi/' + videoID + '/maxresdefault.jpg\");');\n }\n })\n\n \n function handleClick(e){\n if (!e.keyCode || e.keyCode === '13') {\n var currentElm = e.srcElement,\n videoLink = currentElm.href,\n videoID = 0;\n var vimeoMatch, youtubeMatch;\n if (videoLink && videoLink.length > 0) {\n vimeoMatch = videoLink.match(vimeoRegExp);\n youtubeMatch = videoLink.match(youtubeRegExp);\n }\n e.preventDefault();\n if (!me.openVideoInNewTab($(currentElm))) {\n if (vimeoMatch) {\n videoID = vimeoMatch[3];\n handleLaunchOfVideoOverlay(videoID, playerWidth, playerHeight, me.vimeoVideoOverlay);\n } else if (youtubeMatch) {\n videoID = youtubeMatch[1];\n handleLaunchOfVideoOverlay(videoID, playerWidth, playerHeight, me.youTubeVideoOverlay);\n }\n }\n \n }\n }\n\n elem.each(function (idx, item) {\n item.onclick = handleClick;\n item.onkeydown = handleClick;\n });\n };\n\n this.launchNewsletter = function ($elem) {\n\n //opening the overlay and the basket\n $($elem).on('click keydown', function (e) {\n if (!e.keyCode || e.keyCode === '13') {\n // on click - button name changes to \"loading...\" at the end\n // open the modal\n me.newsletterOverlay();\n return false;\n }\n });\n };\n\n this.overlayContactProcess = function(elem, container, postFormURL){\n var $optionErrors = $(container).find(\".checkbox-inline .error\");\n var $emailErrors = $(container).find(\".footer .error\");\n // FocusTrap\n var findInsiders = function (elem) {\n //reset\n var content = elem.find('.content');\n content.find('input, textarea, select').val('');\n content.find('input[type=checkbox], input[type=radio]').prop('checked', false); \n $optionErrors.empty().addClass('hide');\n $emailErrors.empty().addClass('hide');\n \n autoFocusAtFirstElm(elem);\n\n /* allow escape key to close insiders div */\n elem.on('keyup', function (e) {\n if (e.keyCode === 27) {\n lastFocusElement.focus();\n me.resetEpiForm();\n elem.hide();\n };\n });\n };\n\n findInsiders($(container));\n var recaptchaContainer = $(container).find(\".g-recaptcha\");\n var recaptcha = null;\n if (recaptchaContainer.length) {\n recaptcha = new GT.Captcha(recaptchaContainer, {\n settings: {\n error_origin: \"selector\",\n error_value: \"\",\n error_selector: \"data-captcha-error\",\n error_where: \"after\"\n }\n });\n }\n $(container).find(\"a.subscribe-btn\").click(function (e) {\n e.preventDefault();\n\n var $btn = $(this);\n if ($btn.attr('disabled') === 'disabled') {\n return false;\n }\n\n var $selectedCbxs = $(container).find(\".checkbox-inline input:checked\");\n var email = $(container).find(\"input#subscribeEmail\").val();\n var keys = [];\n var hpc = $(container).find('.hpc').val();\n var recaptchaVal = \"\";\n if (recaptcha) {\n recaptchaVal = $(container).find('.g-recaptcha-response').val();\n }\n\n if ((recaptcha && !recaptcha.captchaChecked)) {\n recaptcha.showRecaptchaErrorMsg();\n return false;\n }\n $btn.attr('disabled', 'disabled');\n\n $.each($selectedCbxs, function (i, val) {\n keys.push($(val).attr(\"id\"));\n });\n var subscribeFormModel = {\n Email: email,\n Keys: keys,\n HoneyPotCaptcha: hpc,\n CurrentLanguage: window.gtConfig.currentLanguageId,\n ReCaptchaToken: recaptchaVal,\n ContactPageId: $(\"#ContactPageId\").val()\n };\n var jsonData = JSON.stringify(subscribeFormModel);\n var postFormAjaxOptions = {\n url: postFormURL,\n type: \"POST\",\n data: jsonData,\n contentType: \"application/json; charset=utf-8\",\n dataType: \"json\",\n success: function (data, results, info) {\n $btn.removeAttr('disabled');\n if (data.Success) {\n $('.newsletter-container .content').children('div:not(.thanks)').hide();\n $('.thanks').find('a.close').addClass('link-btn link-btn-page');\n $('.newsletter-container .thanks').show();\n findInsiders($(container));\n $('.newsletter-container .thanks').find('.close').on('click', function (e) {\n e.preventDefault();\n $(container).find(\".js-close-overlay\").click();\n me.resetEpiForm();\n lastFocusElement.focus();\n });\n } else {\n if (!data.IsEmailValid) {\n $.each(data.EmailErrors, function (i, val) {\n $emailErrors.empty();\n $emailErrors.append($(\"

    \").text(val));\n $emailErrors.removeClass(\"hide\");\n });\n } else {\n $emailErrors.addClass(\"hide\");\n }\n \n if (!data.AreKeysValid) {\n $.each(data.KeysErrors, function (i, val) {\n $optionErrors.empty();\n $optionErrors.append($(\"

    \").text(val));\n $optionErrors.removeClass(\"hide\");\n });\n } else {\n $optionErrors.addClass(\"hide\");\n }\n }\n },\n // if error (302) - honeypot GTE-462\n error: function (data) {\n //$('.newsletter-container .content').empty().append(data.responseText);\n $optionErrors.empty().append(data.responseText).removeClass('hide');\n $btn.removeAttr('disabled');\n }\n };\n $.ajax(postFormAjaxOptions);\n });\n }\n\n this.loadOverlayContact = function (elem) {\n\n $(elem).click(function (e) {\n e.preventDefault();\n lastFocusElement = this;\n var postFormURL = $(this).data('postajax');\n var url = $(this).data('href');\n var containerWidth = 640, containerHeight = 457;\n var container = '.newsletter-container';\n var winWidth = $(window).innerWidth();\n\n //FocusTrap\n if (containerWidth > winWidth) {\n containerWidth = winWidth;\n }\n\n if (url != \"#\") {\n container = '.newsletter-container[subscribe-overlay]';\n var options = {\n url: url,\n success: function (data, results, info) {\n me.runOverlay(data, container, containerWidth, containerHeight, true, true);\n me.overlayContactProcess(elem, container, postFormURL);\n }\n };\n $.ajax(options);\n }else{\n me.runOverlay(document.getElementsByClassName('newsletter-container')[0], container, containerWidth, containerHeight, true, true);\n me.overlayContactProcess(elem, container, postFormURL);\n }\n });\n },\n this.loadOverlaySeminar = function (elem) {\n elem.click(function (e) {\n e.preventDefault();\n var postFormURL = $(this).data('postajax');\n var options = {\n url: $(this).attr('href'),\n success: function (data, results, info) {\n var containerWidth = 640, containerHeight = 457;\n var container = 'form.subscribe-semminars-container';\n var winWidth = $(window).innerWidth();\n if (containerWidth > winWidth) {\n containerWidth = winWidth;\n }\n me.runOverlay(data, container, containerWidth, containerHeight, true, true);\n var $container = $(container);\n var recaptchaContainer = $container.find(\".g-recaptcha\");\n var recaptcha = null;\n if (recaptchaContainer.length) {\n recaptcha = new GT.Captcha(recaptchaContainer, {\n settings: {\n error_origin: \"selector\",\n error_value: \"\",\n error_selector: \"data-captcha-error\",\n error_where: \"after\"\n }\n });\n }\n\n $(document).on(\"submit\", container, function (e) {\n e.preventDefault();\n\n var current = this;\n var $nameError = $(current).find(\"#nameErrorMessage\");\n var $emailError = $(current).find(\"#emailErrorMessage\");\n var $optionsError = $(current).find(\"#optionsErrorMessage\");\n var $optinError = $(current).find(\"#optinErrorMessage\");\n\n $nameError.addClass(\"hide\");\n $nameError.prev().removeClass(\"errors\");\n $emailError.addClass(\"hide\");\n $emailError.prev().removeClass(\"errors\");\n $optinError.addClass(\"hide\");\n $optionsError.addClass(\"hide\");\n\n var $btn = $(this).find(\".subscribe-btn\");\n if ($btn.attr('disabled') === 'disabled') {\n return false;\n }\n var $selectedCbxs = $(current).find(\".js-seminar-keys .checkbox-inline input:checked\");\n var $selectedOptin = $(current).find(\".js-seminar-optin .checkbox-inline input:checked\");\n var name = $(current).find(\"input#subscribeName\").val();\n var email = $(current).find(\"input#subscribeEmail\").val();\n var hpc = $(current).find('.hpc').val();\n var valid = {};\n valid.Email = /^[-a-z0-9~!$%^&*_=+}{\\'?]+(\\.[-a-z0-9~!$%^&*_=+}{\\'?]+)*@([a-z0-9_][-a-z0-9_]*(\\.[-a-z0-9_]+)*\\.([a-z]([a-z])+)|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))(:[0-9]{1,5})?$/i.test(email);\n valid.Name = name.length > 0 && /^\\D+$/i.test(name);\n valid.Optin = $selectedOptin.length;\n valid.Keys = $selectedCbxs.length;\n\n if (!valid.Name) {\n $nameError.removeClass(\"hide\");\n $nameError.prev().addClass(\"errors\");\n }\n if (!valid.Email) {\n $emailError.removeClass(\"hide\");\n $emailError.prev().addClass(\"errors\");\n }\n if (!valid.Optin) {\n $optinError.removeClass(\"hide\");\n }\n if (!valid.Keys) {\n $optionsError.removeClass(\"hide\");\n }\n if (valid.Email && valid.Keys && valid.Name && valid.Optin && hpc.length === 0) {\n var postFormAjaxOptions = {\n url: postFormURL,\n type: \"POST\",\n dataType: \"json\",\n data: $(current).serialize(),\n contentType: \"application/json; charset=utf-8\",\n dataType: \"json\",\n success: function (data) {\n $btn.removeAttr('disabled');\n $nameError.addClass(\"hide\");\n $emailError.addClass(\"hide\");\n $optinError.removeClass(\"hide\");\n $optionsError.addClass(\"hide\");\n\n $('.subscribe-semminars-container .content').children().hide();\n $('.thanks').show().parent().show();\n $('.field-group, .footer').hide();\n $('.thanks').find('a.close').addClass('link-btn link-btn-page');\n $('.subscribe-semminars-container .thanks').show().find('.close').on('click', function (e) {\n e.preventDefault();\n $(current).find(\".js-close-overlay\").click();\n });\n },\n // if error (302) - honeypot GTE-462\n error: function (data) {\n // $('.subscribe-semminars-container .content').empty().append(data.responseText);\n $btn.removeAttr('disabled');\n }\n };\n try {\n if ((recaptcha && recaptcha.captchaChecked) || !recaptcha) {\n $.ajax(postFormAjaxOptions);\n }\n } catch (ex) {\n console.warn(ex);\n }\n }\n });\n\n }\n };\n $.ajax(options);\n });\n };\n\n this.calculateAndSetOverlayPos = function ($overlay, isNewsletter) {\n\n // get window width & height\n var $window = $(window);\n var winWidth = me.getWindowWidth($window);\n var winHeight = me.getWindowHeight($window);\n\n // get overlay width & height\n var overlayW = $overlay.outerWidth(true);\n $overlay.css({ 'height': '' });\n var overlayH = $overlay.outerHeight(true);\n // if overlay is heigher or wider than window - adjust it's size\n // center overlay in window (vertically & horizontally)\n if (overlayH > winHeight) {\n $overlay.css({ 'height': winHeight + 'px', 'overflow': 'auto' });\n // no need to center\n } else {\n // center vertically\n if (isNewsletter) {\n var topOffset = (winHeight - overlayH) / 2;\n } else {\n var topOffset = ((winHeight - overlayH) / 2) + $window.scrollTop();\n }\n $overlay.css({ 'top': topOffset + 'px' });\n }\n\n if (overlayW > winWidth) {\n $overlay.width(winWidth);\n // no need to center\n } else {\n // center horizontally\n var leftOffset = (winWidth - overlayW) / 2;\n $overlay.css({ 'left': leftOffset + 'px' });\n }\n\n };\n\n this.resizeOverlay = function ($elem) {\n\n // resize overlay if it's open\n $(window).resize(function () {\n var $overlay = $('.overlay');\n if ($overlay.length && $overlay.css('display') !== 'none') {\n //me.calculateAndSetOverlayPos($('.newsletter-container'), true);\n }\n });\n };\n\n this.overlayTabNavHandlerOnOpen = function () {\n\n $(\"*[tabindex != '-1']:visible\").each(function () {\n var $this = $(this);\n if (!$this.closest('.newsletter-container').length && !$this.closest('.expert-modal').length) {\n $this.attr('tabindex', '-1').addClass('js-tabbable-blocked');\n }\n });\n };\n\n this.overlayTabNavHandlerOnClose = function () {\n\n $('.js-tabbable-blocked').each(function () {\n $(this).removeAttr('tabindex').removeClass('js-tabbable-blocked');\n });\n };\n\n let htmlElm = document.firstElementChild; \n\n //Performance issue\n // this.initHeaderOverlay = function () {\n // let headerOverlayHtml = '

    ',\n // body = htmlElm.querySelector('body');\n \n // // body.innerHTML += headerOverlayHtml;\n // body.insertAdjacentHTML(\"beforeend\", headerOverlayHtml);\n // }\n // this.initHeaderOverlay()\n \n \n this.toggleHeaderOverlay = function() { \n htmlElm.classList.toggle('opening-header-overlay')\n }\n \n this.showHeaderOverlay = function() { \n htmlElm.classList.add('opening-header-overlay')\n }\n \n this.hideHeaderOverlay = function() { \n htmlElm.classList.remove('opening-header-overlay')\n }\n\n};\n\n\nGT.Overlays = new GTOverlays();\nGT.domContentLoadedFncList.push(function(){\n if(typeof isV1GT == \"undefined\") {\n GT.Overlays.launchVideoOverlay($('.video__with-overlay'));\n GT.Overlays.launchOverlay($('.youtube-video'));\n GT.Overlays.loadOverlayContact($('#launchContactFormSubscribe:not([data-epiforms-overlay])'));\n GT.Overlays.loadOverlaySeminar($('#launchSemminarsFormSubscribe'));\n }\n});\n\nGT.PeopleFilters = function ($element, obj) {\n let __ths = this;\n let _filterTagsTaxonomies = [];\n\n function taxonomyFilterTabs() {\n let _insightLandingFilters = document.querySelector('.insight-landing__filters');\n if(!_insightLandingFilters) return;\n let _taxonomyTabItems = _insightLandingFilters.querySelectorAll('.select-filter__item');\n [].forEach.call(_taxonomyTabItems, function(tabItem) {\n tabItem.addEventListener('click', function(e) {\n let _this = this;\n let _child = e.target.closest('.select-filter__condition');\n if(_child) return;\n \n if(_this.classList.contains('expanded')) {\n _this.classList.remove('expanded');\n _this.querySelector(\".select-filter__button\").setAttribute(\"aria-expanded\", false);\n window.removeEventListener(\"keydown\", pressESCToClose);\n } else {\n let _oldActiveTab = _insightLandingFilters.querySelector('.select-filter__item.expanded');\n if(_oldActiveTab && _oldActiveTab.classList.contains('expanded')) _oldActiveTab.classList.remove('expanded');\n\n window.addEventListener(\"keydown\", pressESCToClose);\n _this.classList.add('expanded');\n _this.querySelector(\".select-filter__button\").setAttribute(\"aria-expanded\", true);\n }\n });\n\n if(!GT.isMobileCached) {\n tabItem.querySelector(\".select-filter__button\").addEventListener(\"keydown\", function(e) {\n if(e.key == \"Tab\" && e.shiftKey && this.closest(\".expanded\")) {\n e.preventDefault();\n this.closest(\".expanded\").querySelector(\".insight-apply__filters--btn\").focus();\n }\n })\n }\n });\n }\n\n function pressESCToClose(e){\n if(e.key == \"Escape\") {\n let currentCursorActiveElm = document.querySelector(\".select-filter__item.expanded button\");\n if(currentCursorActiveElm) {\n currentCursorActiveElm.focus();\n currentCursorActiveElm.click();\n }\n }\n }\n \n function processFilterCheckbox(_filterCheckbox) {\n let _filterCheckboxValue = _filterCheckbox.value;\n if(_filterCheckbox.checked) {\n let _parentTaxonomy = _filterCheckbox.getAttribute('parent-taxonomy');\n let _parentTaxonomyArr = _filterTagsTaxonomies[_parentTaxonomy];\n if(_parentTaxonomyArr) {\n if(_parentTaxonomyArr.indexOf(_filterCheckboxValue) < 0) _parentTaxonomyArr.push(_filterCheckboxValue);\n } else {\n _parentTaxonomyArr = [];\n _parentTaxonomyArr.push(_filterCheckboxValue);\n }\n\n _filterTagsTaxonomies[_parentTaxonomy] = _parentTaxonomyArr;\n }\n }\n\n function processFilterTagLabel(_tagLabel) {\n if(_tagLabel) {\n let _tagLabelValue = _tagLabel.getAttribute('data-value');\n let _parentTaxonomy = _tagLabel.getAttribute('data-parenttagkey');\n let _parentTaxonomyArr = _filterTagsTaxonomies[_parentTaxonomy];\n if(_parentTaxonomyArr) {\n if(_parentTaxonomyArr.indexOf(_tagLabelValue) < 0) _parentTaxonomyArr.push(_tagLabelValue);\n } else {\n _parentTaxonomyArr = [];\n _parentTaxonomyArr.push(_tagLabelValue);\n }\n\n _filterTagsTaxonomies[_parentTaxonomy] = _parentTaxonomyArr;\n }\n }\n\n function initFilterByLabel() {\n let filterButtonsContainer = document.querySelector('.filter-result__tags--buttons');\n if(filterButtonsContainer) {\n // Get all current taxonomies are filterred and push into _filterTagsTaxonomies array.\n getAllFilterredTaxonomies();\n\n let _filterLables = filterButtonsContainer.querySelectorAll('button.filter-result__tag-item');\n [].forEach.call(_filterLables, function(filterBtn){\n filterBtn.addEventListener('click', function(e) {\n let _this = this;\n let _taxFilterValue = _this.getAttribute('data-value');\n if(!_filterTagsTaxonomies) _filterTagsTaxonomies = [];\n let _parentTaxonomy = _this.getAttribute('data-parenttagkey');\n let _parentTaxonomyArr = _filterTagsTaxonomies[_parentTaxonomy];\n if(_parentTaxonomyArr) {\n for(let i = 0; i < _parentTaxonomyArr.length; i++) {\n let _childTaxonomy = _parentTaxonomyArr[i];\n if(_taxFilterValue == _childTaxonomy) {\n _parentTaxonomyArr.splice(i, 1);\n break;\n }\n }\n }\n\n _filterTagsTaxonomies[_parentTaxonomy] = _parentTaxonomyArr;\n\n __ths.searchResultsByTaxonomies([], false, '', ''); \n });\n });\n }\n }\n\n function initClearFilterByLabel() {\n let _clearFilterLabelBtns = document.querySelectorAll('button.search-filters__reset-btn');\n [].forEach.call(_clearFilterLabelBtns, function(_clearFilterLabel){\n _clearFilterLabel.addEventListener('click', function(e) { \n // Clear all data get from filter checkboxes\n _filterTagsTaxonomies = [];\n\n __ths.searchResultsByTaxonomies([], false, '', '');\n });\n });\n }\n\n // Search Filter Select Handling On Desktop\n function insightsFilterHandle() {\n let _applyFilterBtns = document.querySelectorAll('.insight-apply__filters--btn');\n [].forEach.call(_applyFilterBtns, function(applyFilterBtn) {\n\n applyFilterBtn.addEventListener('click', function() {\n let _insightsFilterContainer = document.querySelector('.search-filters__tabs');\n if(_insightsFilterContainer) {\n _filterTagsTaxonomies = [];\n let _insightsFilterItems = _insightsFilterContainer.querySelectorAll('input[type=\"checkbox\"].filters__item:checked');\n [].forEach.call(_insightsFilterItems, function(checkedItem){\n if(checkedItem) {\n processFilterCheckbox(checkedItem);\n }\n });\n }\n\n let _queryParams = new URLSearchParams(window.location.search);\n let _params = [];\n\n // Clear all pagination when apply new filter\n if(_queryParams.get('CurrentPageIndex')){\n _queryParams.delete('CurrentPageIndex');\n }\n\n if(__ths.config.currentPageIndex <= 0) {\n if(_queryParams.get('page')){\n _queryParams.delete('page');\n }\n }\n __ths.searchResultsByTaxonomies(_params, false, '', '');\n });\n\n if(!GT.isMobileCached) {\n applyFilterBtn.addEventListener(\"keydown\", function(e) {\n if(e.key == \"Tab\" && !e.shiftKey) {\n e.preventDefault();\n this.closest(\".expanded\").querySelector(\".select-filter__button\").focus();\n }\n })\n }\n });\n }\n\n function queryParams(_urlSearchParams, params) {\n for (var key in params) {\n _urlSearchParams.set(key, params[key]);\n }\n\n if(_filterTagsTaxonomies) {\n for (var key in _filterTagsTaxonomies) {\n let _tagsArr = _filterTagsTaxonomies[key];\n let _tagsStr = '';\n let _counter = 0;\n [].forEach.call(_tagsArr, function(_tagValue){\n if(_tagValue && _tagValue.length > 0) _tagsStr += _tagValue;\n if(_counter < _tagsArr.length - 1 ) {\n _tagsStr += '+';\n }\n _counter++;\n });\n if(_tagsStr && _tagsStr.length > 0) _urlSearchParams.append('tags', _tagsStr);\n }\n }\n\n return _urlSearchParams.toString();\n }\n\n __ths.setParameterInQueryString = function(key, value, isDelete) {\n var queryParams = new URLSearchParams(window.location.search);\n if(isDelete)\n queryParams.delete(key);\n else\n queryParams.set(key, value);\n \n let queryStr = queryParams.toString();\n history.replaceState(null, null, (queryStr.length ? \"?\" + queryStr : location.href.split(\"?\")[0].split(\"#\")[0]) + location.hash);\n }\n\n __ths.getParameterInQueryString = function(key) {\n var queryParams = new URLSearchParams(window.location.search);\n return queryParams.get(key);\n }\n\n function toggleFiltersForm() {\n let _filtersContainer = document.getElementById('insightLandingFilters'),\n _filtersContainerToggle = document.querySelectorAll('[data-toggle=\"insightLandingFilters\"]'),\n _filterBtn = document.querySelector(\".insight-filter__header-mobile button\");\n\n if (_filtersContainerToggle)\n for (var i = 0; i < _filtersContainerToggle.length; i++) {\n _filtersContainerToggle[i].addEventListener('click', function () {\n if(_filtersContainer.classList.contains(\"active\")) {\n _filtersContainer.classList.remove('active');\n document.querySelector(\".gt-wrapper\").classList.remove(\"opening-mobile-filter\");\n if(_filterBtn) {\n _filterBtn.focus();\n _filterBtn.setAttribute(\"aria-expanded\", false);\n }\n } else {\n _filtersContainer.classList.add('active');\n _filterBtn?.setAttribute(\"aria-expanded\", true);\n setTimeout(e => {\n document.querySelector(\"#filtersFormCloseBtn\")?.focus();\n document.querySelector(\".gt-wrapper\").classList.add(\"opening-mobile-filter\");\n }, 1000)\n }\n })\n }\n\n if (_filtersContainer)\n document.querySelector('.main-header .menu-toggle').addEventListener('click', function() {\n _filtersContainer.classList.remove('active');\n })\n }\n\n function showActiveFilters () {\n let _selectFilterItems = document.querySelectorAll('.select-filter__item');\n [].forEach.call(_selectFilterItems, function(checkedItem){\n let checkedCheckbox = checkedItem.querySelector('[type=\"checkbox\"].filters__item:checked');\n if(checkedCheckbox) {\n checkedItem.classList.add('expanded');\n }\n });\n }\n\n function toggleOverhiddenHTML() {\n let _filtersShowBtn = document.querySelector('.search-results__filters-show'),\n _filtersHideBtn = document.querySelector('.search-filters__close-btn');\n\n if (_filtersShowBtn)\n _filtersShowBtn.addEventListener('click', function() {\n document.querySelector('html').classList.add('overflowHidden--mobile');\n })\n\n if (_filtersHideBtn)\n _filtersHideBtn.addEventListener('click', function() {\n document.querySelector('html').classList.remove('overflowHidden--mobile');\n })\n }\n\n function init() {\n\n if( /Android/i.test(navigator.userAgent) ) {\n let insightResultContainer = document.querySelector('.insight-results__container');\n if(insightResultContainer) {\n insightResultContainer.classList.add('android-devices');\n }\n }\n\n \n let currentPageIndex = parseInt(document.getElementById('CurrentPageIndex')?.value || 1);\n __ths.config = {\n totalItemsCount: parseInt(document.querySelector(\"#totalItemsCount\")?.value || 0),\n totalDisplayingItems: parseInt(document.querySelector(\"#totalDisplayingItems\")?.value || 0),\n loadmoreEndpoint: document.querySelector(\"#dataEndpoint\")?.value || \"\",\n pageSize: parseInt(document.querySelector(\"#itemsPerPage\")?.value || 0),\n currentPageIndex: currentPageIndex,\n currentNextPageIndex: currentPageIndex,\n currentPreviousPageIndex: currentPageIndex,\n resultContainerElm: document.querySelector(\".expert-search__results\"),\n fetchingAPI: false\n }\n\n \n if(__ths.config.resultContainerElm.firstElementChild != __ths.config.resultContainerElm.lastElementChild) {\n __ths.config.resultContainerElm.lastElementChild.dataset.page = currentPageIndex;\n __ths.observerElm(__ths.config.resultContainerElm.lastElementChild);\n }\n\n if(__ths.config.resultContainerElm.firstElementChild) {\n __ths.config.resultContainerElm.firstElementChild.dataset.page = currentPageIndex;\n __ths.observerElm(__ths.config.resultContainerElm.firstElementChild);\n }\n \n\n taxonomyFilterTabs();\n insightsFilterHandle();\n initClearFilterByLabel();\n initFilterByLabel();\n initLoadmoreButton();\n loadPreviousHandler();\n\n toggleFiltersForm();\n toggleOverhiddenHTML();\n if(GT.isMobileView()) {\n showActiveFilters();\n }\n\n clickOutsideFilterContainer();\n }\n\n function initLoadmoreButton() {\n let _loadmoreButton = document.getElementById('peopleFilterLoadmore');\n if(_loadmoreButton) {\n _loadmoreButton.addEventListener('click', function(e) {\n e.preventDefault();\n __ths.loadMoreResultsByTag();\n });\n }\n }\n\n __ths.escapeQueryChars = function (url) {\n return url ? url\n .replace(/\\s/gi, '+')\n .replace(/\\%20/gi, '+')\n .replace(/\\%(3C|3E)/gi, function (match, dec) {\n return encodeURI('%') + dec;\n }) : url;\n };\n\n function getAllFilterredTaxonomies() {\n let _currentTagsFilterred = document.querySelectorAll('button.filter-result__tag-item');\n if(_currentTagsFilterred && _currentTagsFilterred.length > 0) {\n [].forEach.call(_currentTagsFilterred, function(filterredByTaxonomy){\n if(filterredByTaxonomy) {\n processFilterTagLabel(filterredByTaxonomy);\n }\n });\n }\n }\n\n __ths.loadMoreResultsByTag = function (isLoadPrevious) {\n if(__ths.config.fetchingAPI) return;\n if(isLoadPrevious) {\n __ths.config.currentPreviousPageIndex--;\n __ths.config.currentPageIndex = __ths.config.currentPreviousPageIndex;\n } else {\n __ths.config.currentNextPageIndex++;\n __ths.config.currentPageIndex = __ths.config.currentNextPageIndex;\n }\n \n\n let _params = [];\n _params['CurrentPageIndex'] = __ths.config.currentPageIndex;\n\n getAllFilterredTaxonomies();\n __ths.searchResultsByTaxonomies(_params, true, __ths.config.loadmoreEndpoint, null, function(contextRef, data){\n GT.preventHeaderFromFlickeringWhileBodyHeightIsChanging();\n __ths.appendResults(contextRef, data, isLoadPrevious);\n setTimeout(e => {\n __ths.config.fetchingAPI = false;\n }, 500)\n });\n };\n\n __ths.ajaxCall = function (url, successCallback) {\n var contextRef = this;\n let __url = url;\n var xhttp = new XMLHttpRequest();\n xhttp.onreadystatechange = function () {\n if (this.readyState == 4) {\n if (this.response && this.status == 200) {\n successCallback(contextRef, this.response);\n }\n }\n };\n xhttp.open(\"GET\", __url, true);\n xhttp.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n xhttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhttp.send();\n }\n\n __ths.searchResultsByTaxonomies = function (_queryParams, _isAppendResults, _otherEndpoint, _replaceContainer, successCallback) {\n let _ajaxUrl = '';\n if(_isAppendResults) {\n __ths.config.fetchingAPI = true;\n _ajaxUrl = queriesStringBuilder(_queryParams, _otherEndpoint, true);\n __ths.ajaxCall(_ajaxUrl, successCallback);\n return false;\n } else {\n _ajaxUrl = queriesStringBuilder(_queryParams);\n }\n window.location.href = _ajaxUrl;\n };\n\n function queriesStringBuilder(_params, _otherEndpoint, _isLoadmore) {\n\n if(!_params) _params = [];\n\n let _urlSearchParams = new URLSearchParams();\n\n let _ajaxUrl = '';\n if(_isLoadmore) {\n if(_otherEndpoint && _otherEndpoint.length > 0) {\n _ajaxUrl = _otherEndpoint;\n }\n } else {\n _ajaxUrl = '?';\n }\n \n let _queryParams = queryParams(_urlSearchParams, _params);\n if(_queryParams && _queryParams.length > 0) {\n if(_isLoadmore ) _ajaxUrl += '&';\n _ajaxUrl += _queryParams;\n }\n\n return __ths.escapeQueryChars(_ajaxUrl);\n }\n \n function loadPreviousHandler(){\n if(__ths.currentTotalDisplayingItems() <= __ths.config.totalDisplayingItems) {\n let resultContainerElmOffset = 0;\n GT.listFunctionsTriggerInScrollEvent.checkScrollPosExtendedSearch = () => {\n if(!resultContainerElmOffset)\n resultContainerElmOffset = GT.getElementOffset(__ths.config.resultContainerElm).top;\n if(__ths.config.currentPreviousPageIndex > 1 && GT.isScrollingUp && GT.lastScrollTop - resultContainerElmOffset < 300 && !__ths.config.fetchingAPI) {\n __ths.loadMoreResultsByTag(true);\n }\n }\n }\n }\n\n __ths.currentTotalDisplayingItems = () => {\n let currentTotalDisplayingItems = document.getElementById('peopleResultsContainer')?.querySelectorAll(\".t4-single__expert:not(.expert-facts__container)\").length || 0;\n return parseInt(currentTotalDisplayingItems);\n }\n\n __ths.appendResults = function (contextRef, data, isLoadPrevious) {\n let _insightResultsContainer = document.getElementById('peopleResultsContainer'),\n firstItem = __ths.config.resultContainerElm.firstElementChild,\n lastItem = __ths.config.resultContainerElm.lastElementChild,\n old_DOM_height = document.querySelector(\".gt-wrapper\").offsetHeight,\n old_scroll = GT.lastScrollTop;\n\n _insightResultsContainer.insertAdjacentHTML(isLoadPrevious ? \"afterbegin\" : \"beforeend\", data);\n\n if(!isLoadPrevious) {\n __ths.setParameterInQueryString(\"page\", __ths.config.currentPageIndex);\n shouldLoadMore();\n\n __ths.config.totalDisplayingItems += __ths.config.pageSize;\n if(__ths.config.totalDisplayingItems > __ths.config.totalItemsCount) __ths.config.totalDisplayingItems = __ths.config.totalItemsCount;\n\n document.querySelector(\".load-more-stats__showing-items\").innerText = __ths.config.totalDisplayingItems;\n document.querySelector(\".load-more-stats__progressbar-loaded\").style.width = Math.ceil(__ths.config.totalDisplayingItems / __ths.config.totalItemsCount * 100) + \"%\";\n\n \n let _showingNumberElement = document.querySelector('#totalResultShowing');\n if(_showingNumberElement) _showingNumberElement.innerHTML = __ths.config.totalDisplayingItems;\n\n if(firstItem) {\n __ths.config.resultContainerElm.lastElementChild.dataset.page = lastItem.nextElementSibling.dataset.page = __ths.config.currentPageIndex;\n __ths.observerElm(__ths.config.resultContainerElm.lastElementChild);\n __ths.observerElm(lastItem.nextElementSibling);\n }\n } else {\n if(firstItem) {\n __ths.config.resultContainerElm.firstElementChild.dataset.page = firstItem.previousElementSibling.dataset.page = __ths.config.currentPageIndex;\n __ths.observerElm(__ths.config.resultContainerElm.firstElementChild);\n __ths.observerElm(firstItem.previousElementSibling);\n }\n window.scrollTo({ top: (old_scroll + document.querySelector(\".gt-wrapper\").offsetHeight - old_DOM_height), left:0, behavior: \"instant\"});\n }\n }\n\n\n __ths.updatePageIndex = (pageIndex) => {\n if(pageIndex > 1) {\n __ths.setParameterInQueryString(\"page\", pageIndex);\n } else {\n __ths.setParameterInQueryString(\"page\", pageIndex, true);\n }\n \n let canonicalElm = document.querySelector('link[rel=\"canonical\"]');\n if(canonicalElm)\n canonicalElm.href = location.origin + location.pathname + (pageIndex > 1 ? \"?page=\" + pageIndex : \"\"); \n }\n \n __ths.observerElm = (elm) => {\n if(!elm.dataset.observed) {\n elm.dataset.observed = true;\n GT.checkElmVisible(elm, function(e){\n __ths.updatePageIndex(elm.dataset.page);\n }, true, 1)\n }\n }\n\n function clickOutsideFilterContainer() {\n document.addEventListener('mouseup', function(e) {\n let _filterItemContainers = document.querySelectorAll('.select-filter__item');\n \n [].forEach.call(_filterItemContainers, function(_filterItem){\n let _filterConditionContainer = _filterItem.querySelector('.select-filter__condition');\n if (!_filterConditionContainer.contains(e.target) && !_filterItem.contains(e.target)) {\n _filterItem.classList.remove('expanded');\n }\n });\n });\n }\n\n function shouldLoadMore() {\n let _loadBtn = document.getElementById('peopleFilterLoadmore');\n\n if(!_loadBtn) \n return;\n\n let _pageIndexByTags = __ths.config.currentPageIndex;\n let totalItems = __ths.config.totalItemsCount;\n \n let maxPage = Math.ceil(totalItems / __ths.config.pageSize);\n let loadMoreContainer = document.querySelector(\".load-more-container\")\n\n if (maxPage <= _pageIndexByTags) {\n if(loadMoreContainer)\n loadMoreContainer.classList.add(\"hidden\");\n else\n _loadBtn.classList.add('hidden');\n\n } else {\n if(loadMoreContainer) {\n loadMoreContainer.classList.remove(\"hidden\");\n }\n else {\n _loadBtn.classList.remove('hidden');\n }\n \n if(_loadBtn.href) {\n _loadBtn.href = location.href.replace(\"page=\" + _pageIndexByTags, \"page=\" + (_pageIndexByTags + 1));\n }\n }\n \n let canonicalElm = document.querySelector('link[rel=\"canonical\"]');\n if(canonicalElm)\n canonicalElm.href = location.origin + location.pathname + (_pageIndexByTags > 0 ? \"?page=\" + _pageIndexByTags : \"\"); \n };\n\n \n init();\n};\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function () {\n GT.PeopleFilters();\n });\nGT.GTPeopleLandingPage = function($elem) {\n handleVCardEvent();\n function handleVCardEvent() {\n var vcards = document.querySelectorAll('a.vcard-download');\n for (var i = 0; i < vcards.length; i++) {\n var ctn = vcards[i];\n ctn.addEventListener('click', function () {\n var $this = this;\n var contactName = $this.getAttribute(\"data-vcard-name\");\n dataLayer.push({ 'event': 'vcard', 'eventAction': \"download\", \"eventLabel\": contactName });\n });\n }\n }\n};\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n new GT.GTPeopleLandingPage($('.people-landing-page'));\n });\n// var div = document.querySelector('.richtext-block');\n// var hasHorizontalScrollbar = div.scrollWidth > div.clientWidth;\nvar listPerfectScrollbar = [];\nvar GTPerfectScrollbar = function (elm) {\n let $table = elm ? $(elm) : $('table').not(\".no-perfect-sb\");\n if($table.hasClass(\"table-v2__area\")) return;\n if ($table.length > 0) {\n \n //prevent duplicate events\n if(listPerfectScrollbar.length) {\n listPerfectScrollbar.forEach(function(ps){\n ps.destroy();\n ps = null; \n })\n listPerfectScrollbar = [];\n }\n\n for (let i = 0; i < $table.length; i++) {\n let currentTB = $table[i];\n if(!currentTB.parentNode.classList.contains(\"gtscroll\")) {\n let scrollElmStr = \"
    \";\n currentTB.insertAdjacentHTML(\"beforebegin\", \"
    \" + scrollElmStr + \"
    \");\n let gtscrollWrapper = currentTB.previousElementSibling;\n gtscrollWrapper.appendChild(currentTB);\n gtscrollWrapper.insertAdjacentHTML(\"beforeend\", scrollElmStr);\n }\n }\n\n let gtscrollbars = Array.prototype.slice.call(document.querySelectorAll('.gtscroll'));\n\n for (let i = 0; i < gtscrollbars.length; i++) {\n let currentScrollBar = gtscrollbars[i],\n currentTB = $table[i];\n \n if(!currentTB.querySelector(\"tbody\")) return;\n\n let currentScrollWrapper = currentScrollBar.querySelector(\".gtscroll-wrapper\"),\n currentScrollThumbs = Array.prototype.slice.call(currentScrollBar.querySelectorAll(\".gtscroll-thumb\")),\n currentScrollContents = Array.prototype.slice.call(currentScrollBar.querySelectorAll(\".gtscroll-content\")),\n currentTBComputedStyle = window.getComputedStyle(currentTB),\n currentTBodyWidth = currentTB.querySelector(\"tbody\").clientWidth + parseInt(currentTBComputedStyle.paddingLeft.replace(\"px\", \"\")) + parseInt(currentTBComputedStyle.paddingRight.replace(\"px\", \"\")) + parseInt(window.getComputedStyle(currentTB.querySelector(\"tbody\")).marginLeft.replace(\"px\", \"\")),\n currentTBWidth = currentTB.clientWidth,\n currentThumbWidth = currentTBWidth / currentTBodyWidth * currentTBWidth,\n isHoverOnGTScroll = false;\n \n if(currentTBodyWidth > currentTBWidth) {\n currentScrollBar.classList.remove(\"gtscroll-hide\");\n currentScrollBar.style.margin = currentTBComputedStyle.margin;\n\n currentScrollContents.forEach(function(contentItem){\n contentItem.style.width = currentTBodyWidth + \"px\";\n })\n \n currentScrollThumbs.forEach(function(thumb){\n thumb.style.width = currentThumbWidth + \"px\";\n })\n\n currentScrollWrapper.onscroll = function(e){\n if(isHoverOnGTScroll && !GT.isMobileCached)\n currentTB.scrollLeft = e.target.scrollLeft;\n }\n \n currentTB.onscroll = function(e){\n if(!isHoverOnGTScroll) {\n let currentThumbPosition = currentThumbWidth / currentTBWidth * e.target.scrollLeft;\n if(!GT.isMobileCached)\n currentScrollWrapper.scrollLeft = e.target.scrollLeft;\n currentScrollThumbs.forEach(function(thumb){\n thumb.style.transform = \"translateX(\" + currentThumbPosition + \"px)\";\n })\n }\n }\n\n if(!GT.isMobileCached) {\n currentScrollBar.classList.remove(\"gtscroll-mobile\");\n listPerfectScrollbar.push(new PerfectScrollbar(currentTB));\n listPerfectScrollbar.push(new PerfectScrollbar(currentScrollWrapper));\n \n currentScrollWrapper.onmouseenter = function(){\n isHoverOnGTScroll = true;\n }\n\n currentTB.querySelector(\".ps__rail-x\").onmouseenter = function(){\n isHoverOnGTScroll = false;\n }\n } else {\n currentScrollBar.classList.add(\"gtscroll-mobile\");\n }\n } else \n currentScrollBar.classList.add(\"gtscroll-hide\");\n }\n }\n};\n\nGT.destroyScrollbar = function () {\n if (listPerfectScrollbar.length) {\n listPerfectScrollbar.forEach(function (ps) {\n ps.destroy();\n ps = null;\n })\n listPerfectScrollbar = [];\n }\n}\n\nGT.reInitScrollbar = function () {\n GTPerfectScrollbar($('table').not(\".no-perfect-sb\"));\n}\n\nvar removeScrollbarWhenPrint = function () {\n var beforePrint = function () {\n GT.destroyScrollbar();\n };\n\n var afterPrint = function () {\n GTPerfectScrollbar($('table').not(\".no-perfect-sb\"));\n };\n\n if (window.matchMedia) {\n var mediaQueryList = window.matchMedia('print');\n mediaQueryList.addListener(function (mql) {\n if (mql.matches) {\n beforePrint();\n } else {\n afterPrint();\n }\n });\n }\n\n window.onbeforeprint = beforePrint;\n window.onafterprint = afterPrint;\n} \n\nremoveScrollbarWhenPrint();\n\nif(typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n GTPerfectScrollbar($('table').not(\".no-perfect-sb\"));\n });\nelse {\n GTPerfectScrollbar($('table').not(\".no-perfect-sb\"));\n}\n\nlet debounceGTPerfectScrollbar = [];\nwindow.addEventListener(\"resize\", function(){\n if(debounceGTPerfectScrollbar.length) {\n let tmpdebounceGTPerfectScrollbarLength = debounceGTPerfectScrollbar.length;\n for(let i = 0; i < tmpdebounceGTPerfectScrollbarLength; i++) {\n clearTimeout(debounceGTPerfectScrollbar[i]);\n }\n debounceGTPerfectScrollbar = [];\n }\n let tmpTimer = setTimeout(function(){\n GTPerfectScrollbar($('table').not(\".no-perfect-sb\"));\n }, 500)\n debounceGTPerfectScrollbar.push(tmpTimer);\n})\nGT.PressCarouselBanner = function() {\n let controlItems = Array.prototype.slice.call(document.querySelectorAll(\".press-details__carousel-banner .press-banner__item\")),\n contentItems = Array.prototype.slice.call(document.querySelectorAll(\".press-details__carousel-banner .press-banner__content\")),\n backgroundItems = Array.prototype.slice.call(document.querySelectorAll(\".press-details__carousel-banner .background\")),\n totalItems = contentItems.length,\n isScreenReader = false;\n \n function resetState(idx){\n controlItems.forEach(function(elm){\n elm.classList.remove(\"active\");\n elm.classList.remove(\"animate\");\n })\n contentItems.forEach(function(elm){\n elm.classList.remove(\"active\");\n elm.setAttribute(\"tabindex\", -1);\n })\n backgroundItems.forEach(function(elm){\n elm.classList.remove(\"active\");\n })\n\n controlItems[idx].classList.add(\"active\");\n controlItems[idx].classList.add(\"animate\");\n contentItems[idx].classList.add(\"active\");\n backgroundItems[idx].classList.add(\"active\");\n }\n\n let currentActivatedItem = document.querySelector(\".press-banner__item.active\")\n currentItemIdx = 0;\n \n if(currentActivatedItem)\n currentActivatedItem.classList.add(\"animate\");\n\n let _timer; \n\n function triggerAnimate(){\n currentItemIdx++;\n if(currentItemIdx > totalItems - 1)\n currentItemIdx = 0;\n resetState(currentItemIdx);\n }\n\n controlItems.forEach(function(item){\n item.addEventListener(\"click\", function(e){\n const _currentItemIdx = e.currentTarget.dataset.index;\n clearInterval(_timer);\n currentItemIdx = _currentItemIdx - 1;\n triggerAnimate(); \n let currentContentItem = contentItems[_currentItemIdx];\n currentContentItem.setAttribute(\"tabindex\", 0);\n setTimeout(function(){\n currentContentItem.focus();\n setTimeout(() => {\n currentContentItem.removeAttribute(\"tabindex\");\n }, 1000)\n }, 100)\n })\n })\n\n contentItems.forEach(function(elm){\n elm.addEventListener(\"focus\", function(){\n if(isScreenReader !== 0) {\n isScreenReader = true;\n clearInterval(_timer);\n }\n })\n elm.addEventListener(\"mouseenter\", function(){\n isScreenReader = 0;\n })\n }) \n}\n\nGT.domContentLoadedFncList.push(function(){\n GT.PressCarouselBanner();\n});\nGT.GTPressPage = function ($element) { \n wrapWideImage();\n \n function wrapWideImage() {\n\n $('.image-container').each(function() {\n var _this = $(this);\n var imgViewmode = _this.find('img');\n\n _this.removeClass('img-wide img-full-width img-narrow');\n if(imgViewmode.hasClass('img-wide')) {\n imgViewmode.parent().addClass('img-wide');\n } else if(imgViewmode.hasClass('img-full-width')) {\n imgViewmode.parent().addClass('img-full-width');\n } else {\n imgViewmode.parent().addClass('img-narrow');\n }\n }); \n }\n\n\n function pressBalanceHeight() {\n let balanceHeightElms = document.querySelectorAll(\"[balance-height]\");\n [].forEach.call(balanceHeightElms, function(balanceHeight) {\n GT.BalanceHeight(balanceHeight); \n });\n }\n \n pressBalanceHeight();\n\n GT.windowResizeFncList.blanceHeightPressContacts = function() {\n if(GT.wWidth > 960)\n pressBalanceHeight();\n }\n\n};\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n GT.GTPressPage();\n });\nGT.PressVideo = function () {\n function copyTextToClipboard(text) {\n var textArea = document.createElement(\"textarea\");\n \n // Place in the top-left corner of screen regardless of scroll position.\n textArea.style.position = 'fixed';\n textArea.style.top = 0;\n textArea.style.left = 0;\n \n // Ensure it has a small width and height. Setting to 1px / 1em\n // doesn't work as this gives a negative w/h on some browsers.\n textArea.style.width = '2em';\n textArea.style.height = '2em';\n \n // We don't need padding, reducing the size if it does flash render.\n textArea.style.padding = 0;\n \n // Clean up any borders.\n textArea.style.border = 'none';\n textArea.style.outline = 'none';\n textArea.style.boxShadow = 'none';\n \n // Avoid flash of the white box if rendered for any reason.\n textArea.style.background = 'transparent';\n \n \n textArea.value = text;\n \n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n \n try {\n var successful = document.execCommand('copy');\n var msg = successful ? 'successful' : 'unsuccessful';\n console.log('Copying text command was ' + msg);\n } catch (err) {\n console.log('Oops, unable to copy');\n }\n \n document.body.removeChild(textArea);\n }\n\n function pressEmbedBtnHandle(e) {\n let currentTarget = e.target;\n currentTarget.nextElementSibling.classList.add(\"show\");\n \n let videoLink = \"about:blank\",\n link = currentTarget.parentElement.previousElementSibling.querySelector(\"a\").href;\n\n if(link.indexOf(\"vimeo\") < 0) {\n videoLink = \"https://www.youtube.com/embed/\" + getVideoID(link) + \"?autoplay=1&rel=0\";\n } else {\n videoLink = \"https://player.vimeo.com/video/\" + getVideoID(link) + \"?title=1&byline=0&portrait=0&autoplay=true\";\n }\n\n copyTextToClipboard('');\n currentTarget.setAttribute(\"tabindex\", -1);\n currentTarget.parentElement.previousElementSibling.querySelector(\"a\").focus();\n }\n\n Array.prototype.slice.call(document.querySelectorAll(\".press-video-embed\")).forEach(function(pressEmbedBtn){\n pressEmbedBtn.addEventListener(\"click\", pressEmbedBtnHandle);\n pressEmbedBtn.addEventListener(\"keydown\", function(e){\n if(e.keyCode == 13) {\n pressEmbedBtnHandle(e);\n }\n });\n })\n\n Array.prototype.slice.call(document.querySelectorAll(\".press-video\")).forEach(function(pressVideoElm){\n backgroundElm = pressVideoElm.querySelector(\".background\");\n if(!backgroundElm.dataset.bgset) {\n let videoLink = pressVideoElm.querySelector(\"a\").href,\n videoID = getVideoID(videoLink);\n\n if(videoLink.indexOf(\"vimeo\") < 0) {\n backgroundElm.dataset.bgset = 'https://img.youtube.com/vi/' + videoID + '/maxresdefault.jpg';\n } else {\n backgroundElm.dataset.bgset = 'https://vumbnail.com/' + videoID + '.jpg';\n }\n backgroundElm.classList.add(\"lazyload\");\n }\n })\n\n function getVideoID(link){\n let videoID;\n if(link.indexOf(\"vimeo\") < 0) {\n videoID = link.match(/^(https?:)?(\\/\\/)?((www\\.|m\\.)?youtube(-nocookie)?\\.com\\/((watch)?\\?(feature=\\w*&)?vi?=|embed\\/|vi?\\/|e\\/)|youtu.be\\/)([\\w\\-]{10,20})/i);\n videoID = videoID ? videoID[9] : \"\";\n } else {\n videoID = link.match(/https?:\\/\\/(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^\\/]*)\\/videos\\/|album\\/(\\d+)\\/video\\/|video\\/|[\\w]+\\/review\\/|)(\\d+)(?:\\/(\\w+))?(?:$|\\/|\\?)/);\n videoID = videoID ? videoID[3] : \"\";\n }\n return videoID;\n }\n}\n\nGT.domContentLoadedFncList.push(function(){\n GT.PressVideo();\n});\nGT.domContentLoadedFncList.push(function(){\n if(document.querySelector('header[data-sticky=\"true\"] .rpi-progress-bar')){\n GT.listFunctionsTriggerInScrollEvent.progressBarHandler = function(){\n if(!GT.ProgressBarRPI)\n GT.ProgressBarRPI = new ReadingPositionIndicator({\n rpiArea: '[data-rpi-area]',\n progressBar: {\n show: true\n }\n }).init();\n GT.ProgressBarRPI.update();\n }\n }\n});\nGT.RDStationForms = function(){\n if(typeof RDStationFormConfig == \"undefined\")\n return;\n\n GT.waitForElmRendering(\".rd-form form\").then(function(elm){\n let RDForm = document.querySelector(\".rd-form form\");\n RDForm.action = RDStationFormConfig.endPoint;\n RDForm.enctype = \"multipart/form-data\";\n\n \n let lang = document.querySelector(\"html\").lang,\n script_src = 'https://www.google.com/recaptcha/api.js?onload=CallbackGReCaptchaInited&render=explicit';\n\n if(lang)\n script_src += '&hl=' + lang;\n\n if(RDStationFormConfig.captchaKey) {\n GT.RecaptchaCallbackFnList.rdstationform = {fnc: null, isExecuted: false};\n GT.RecaptchaCallbackFnList.rdstationform.fnc = function(){\n Array.prototype.slice.call(RDForm.querySelectorAll(\".g-recaptcha-container\")).forEach(function(elm){\n let currentForm = elm.closest(\"form\");\n try {\n grecaptcha.render(elm, {\n 'sitekey' : RDStationFormConfig.captchaKey,\n 'callback': function(e){\n let recaptchaMsg = elm.querySelector(\".captcha-error\") || currentForm.querySelector(\"[for=validateCaptcha].error\");\n if(recaptchaMsg)\n recaptchaMsg.remove();\n currentForm.querySelector(\"#validateCaptcha\").checked = true;\n },\n 'expired-callback': function(e){\n currentForm.querySelector(\"#validateCaptcha\").checked = false;\n }\n });\n \n } catch(ex){\n console.log(ex);\n }\n let gCaptchaResponseElm = currentForm.querySelector(\".g-recaptcha-response\");\n if(gCaptchaResponseElm) {\n gCaptchaResponseElm.classList.add(\"required\");\n gCaptchaResponseElm.setAttribute(\"required\", \"required\");\n currentForm.querySelector(\"#validateCaptcha\").checked = false;\n }\n })\n }\n }\n\n if(RDStationFormConfig.maxFile) {\n let privacyElm = document.querySelector(\".bricks-form__privacy\") || document.querySelector(\".bricks-form__terms\"),\n strAppend = '
    ';\n\n if(privacyElm)\n privacyElm.insertAdjacentHTML(\"beforebegin\", strAppend);\n else\n RDForm.querySelector(\".bricks-form__fieldset\").insertAdjacentHTML(\"beforeend\", strAppend);\n\n let _GTFileUpload = new GT.FileUpload(\"#uploadInputElm\");\n _GTFileUpload.allowUploadMaxItemLabel = RDStationFormConfig.invalidFileQuantity.replace(\"{0}\", RDStationFormConfig.maxFile);\n _GTFileUpload.invalidMineTypes = RDStationFormConfig.invalidMineTypes;\n _GTFileUpload.invalidFileSize = RDStationFormConfig.invalidFileSize;\n _GTFileUpload.maxFile = RDStationFormConfig.maxFile;\n\n _GTFileUpload.onChange = function(files){\n let tmpUploadArea = document.querySelector(\"#tmpUploadArea\");\n tmpUploadArea.innerHTML = \"\";\n Array.from(files).forEach(function(item, idx){\n let reader = new FileReader();\n // Closure to capture the file information.\n reader.onload = (function() {\n return function(evt) {\n const htmlStr = '' + '';\n tmpUploadArea.insertAdjacentHTML(\"afterbegin\", htmlStr);\n };\n })(item);\n\n // Read in the image file as a data URL.\n reader.readAsDataURL(item);\n })\n }\n }\n\n RDForm.querySelector(\".bricks-form__fieldset\").insertAdjacentHTML(\"beforeend\", \"
    \");\n RDForm.querySelector(\".bricks-form__fieldset\").insertAdjacentHTML(\"beforeend\", \"\");\n \n setTimeout(checkBlockedEmailDomain, 500);\n function checkBlockedEmailDomain() {\n if(!RDStationFormConfig.emailDomainsBlocked) return;\n\n let _emailInput = RDForm.querySelector(\"[type=email]\");\n let _blockEmailChkContainer = \"\";\n _emailInput.closest('.bricks-form__field').insertAdjacentHTML(\"beforeend\", _blockEmailChkContainer);\n checkValidEmailDomain(_emailInput);\n _emailInput.addEventListener(\"blur\", function(){\n checkValidEmailDomain(_emailInput);\n });\n }\n\n function checkValidEmailDomain(_emailInput) {\n\n let _emailAddress = _emailInput.value;\n if(!_emailAddress) return;\n // Email block domain function\n let _emailDomainStr = RDStationFormConfig.emailDomainsBlocked.replace(/\\s/g, \"\");\n let _emailDomainArr = _emailDomainStr.split(',');\n if(_emailDomainArr.length <= 0) return;\n\n let _blockEmailChk = RDForm.querySelector('input[name=\"blockedemaildomain\"]');\n let _blockedemaildomainMsg = RDForm.querySelector('label.blockedemaildomain-msg');\n let _currentEmailDomain = _emailAddress.split('@');\n if(_currentEmailDomain.length < 2) return;\n _currentEmailDomain = _currentEmailDomain[1].trim();\n let _submitBtn = RDForm.querySelector(\".bricks-form__submit button\");\n if(_currentEmailDomain.indexOf(\".\") == -1) {\n if(_submitBtn) _submitBtn.click();\n return;\n }\n if(_emailDomainArr.includes(_currentEmailDomain)) {\n if(_blockEmailChk) _blockEmailChk.value = '';\n _emailInput.classList.remove('valid');\n _emailInput.classList.add('error');\n _emailInput.focus();\n if(_blockedemaildomainMsg) _blockedemaildomainMsg.style.display = \"block\";\n return;\n } else {\n if(_blockEmailChk) _blockEmailChk.value = _emailDomainStr;\n _emailInput.classList.remove('error');\n _emailInput.classList.add('valid');\n if(_blockedemaildomainMsg) _blockedemaildomainMsg.style.display = \"none\";\n\n let divideNumber = typeof RDStationFormConfig.numberOfFieldsPerStep == \"undefined\" ? 0 : RDStationFormConfig.numberOfFieldsPerStep;\n if(divideNumber > 0) {\n if(_submitBtn) _submitBtn.click();\n return;\n }\n }\n }\n \n if(!document.querySelector('script[src^=\"'+ script_src +'\"]')) {\n let script = document.createElement('script');\n\n script.src = script_src;\n script.defer = \"defer\";\n\n document.head.append(script);\n } else \n CallbackGReCaptchaInited();\n\n let divideNumber = typeof RDStationFormConfig.numberOfFieldsPerStep == \"undefined\" ? 0 : RDStationFormConfig.numberOfFieldsPerStep;\n if(divideNumber > 0) {\n let currentStep = 0,\n allFields = RDForm.querySelectorAll(\".bricks-form__fieldset .bricks-form__field\"),\n totalFields = allFields.length,\n totalSteps = Math.round(totalFields / divideNumber),\n nextLabel = RDStationFormConfig.nextStep ? RDStationFormConfig.nextStep : \"Next\",\n backLabel = RDStationFormConfig.backStep ? RDStationFormConfig.backStep : \"Back\";\n\n if(totalSteps > 1) {\n RDForm.classList.add(\"mutiple-steps\");\n RDForm.querySelector(\".bricks-form__submit\").insertAdjacentHTML(\"afterbegin\", \"\");\n RDForm.querySelector(\".bricks-form__submit\").classList.add(\"custom-submit\");\n\n\n let nextBtn = RDForm.querySelector(\".next-btn\"),\n backBtn = RDForm.querySelector(\".back-btn\"),\n submitBtn = RDForm.querySelector(\".bricks-form__submit button\");\n \n backBtn.classList.add(\"visually-hidden\");\n submitBtn.classList.add(\"visually-hidden\");\n\n function focusOnFirstElm(e){\n if(e) {\n let firstFocusableElm = RDForm.querySelector(\".bricks-form__fieldset .bricks-form__field:not(.hide-rd-field) [name]\");\n if(firstFocusableElm)\n firstFocusableElm.focus();\n }\n }\n\n function nextBtnHandler(e){\n setTimeout(function(){\n if(isValid()) {\n displayFields();\n if(currentStep >= totalSteps) {\n nextBtn.classList.add(\"visually-hidden\");\n submitBtn.classList.remove(\"visually-hidden\");\n } else {\n submitBtn.classList.add(\"visually-hiddenx\");\n }\n backBtn.classList.remove(\"visually-hidden\");\n focusOnFirstElm(e);\n } else {\n submitBtn.click();\n }\n }, 50);\n }\n\n function backBtnHandler(e){\n displayFields(true);\n if(currentStep <= 1) {\n backBtn.classList.add(\"visually-hidden\");\n }\n submitBtn.classList.add(\"visually-hidden\");\n nextBtn.classList.remove(\"visually-hidden\");\n focusOnFirstElm(e);\n }\n\n nextBtn.addEventListener(\"keypress\", function(e){\n if(e.key == \"Enter\")\n nextBtnHandler(e);\n })\n nextBtn.addEventListener(\"click\", function(){\n nextBtnHandler();\n })\n \n backBtn.addEventListener(\"keypress\", function(e){\n if(e.key == \"Enter\")\n backBtnHandler(e);\n })\n \n backBtn.addEventListener(\"click\", function(){\n backBtnHandler();\n })\n\n submitBtn.addEventListener(\"click\", function(){\n setTimeout(function(){\n if(RDForm.querySelector('[name].error')) {\n let errorElm = RDForm.querySelector('[name].error').closest(\".bricks-form__field\");\n if(errorElm) {\n const errorIdx = parseInt(errorElm.dataset.index) + 1;\n const targetStep = Math.ceil(errorIdx / divideNumber);\n if(targetStep < currentStep) {\n displayFields(null, targetStep);\n if(targetStep == 1)\n backBtn.classList.add(\"visually-hidden\");\n submitBtn.classList.add(\"visually-hidden\");\n nextBtn.classList.remove(\"visually-hidden\");\n }\n }\n }\n }, 500);\n })\n\n displayFields();\n\n function displayFields(isBack, _currentStep){\n if(!_currentStep) {\n if(isBack)\n currentStep--;\n else\n currentStep++;\n } else {\n currentStep = _currentStep;\n }\n\n let minPoint = (currentStep - 1) * divideNumber,\n maxPoint = currentStep * divideNumber;\n allFields.forEach(function(item, idx) {\n if(((idx < maxPoint && currentStep < totalSteps) || (currentStep >= totalSteps)) && idx >= minPoint) {\n item.classList.remove(\"hide-rd-field\");\n } else {\n item.classList.add(\"hide-rd-field\");\n }\n item.dataset.index = idx;\n })\n }\n\n function isValid() {\n let minPoint = (currentStep - 1) * divideNumber,\n maxPoint = currentStep * divideNumber,\n _isValid = true;\n allFields.forEach(function(item, idx) {\n if(((idx < maxPoint && currentStep < totalSteps) || (currentStep >= totalSteps)) && idx >= minPoint) {\n let inputElm = item.querySelector('[name]');\n if(inputElm && (!inputElm.validity.valid || inputElm.classList.contains('error'))) {\n _isValid = false;\n if(inputElm.type == \"email\") {\n validEmailElm(inputElm);\n }\n }\n\n let _blockedEmailDomain = item.querySelector('input[name=\"blockedemaildomain\"]');\n if(_blockedEmailDomain && _blockedEmailDomain.classList.contains('error')) {\n _isValid = false;\n }\n\n if(inputElm.type == \"tel\") {\n let minTelLength = 18;//default for Brazil\n if(inputElm.dataset.country != \"BR\") {\n minTelLength = inputElm.dataset.lastCountryCode.length + 10;// \"+ \".length + [country code].length + 8\n }\n if(inputElm.value.length < minTelLength) {\n _isValid = false;\n setTimeout(function(){\n let realErrorLabel = inputElm.closest(\".bricks-form__field\").querySelector('label.error[for]');\n if(realErrorLabel) {\n realErrorLabel.style.display = \"block\";\n }\n }, 500)\n }\n }\n } else {\n if(item.querySelector('label.error:not(.blockedemaildomain-msg)')) {\n item.querySelector('label.error:not(.blockedemaildomain-msg)').remove();\n }\n let _blockedEmailDomainChk = RDForm.querySelector('input[name=\"blockedemaildomain\"]');\n if(_blockedEmailDomainChk && _blockedEmailDomainChk.value.length <= 0) {\n let _inputEmail = _blockedEmailDomainChk.closest('.bricks-form__field').querySelector('input[type=\"email\"]');\n if(_inputEmail) {\n _inputEmail.classList.add('error');\n _inputEmail.classList.remove('valid');\n _inputEmail.focus();\n }\n return false;\n } else {\n if(item.querySelector('.error:not(.blockedemaildomain-msg)') && item.querySelector('.error:not(input[name=\"blockedemaildomain\"])')) {\n item.querySelector('.error').classList.remove(\"error\");\n }\n }\n }\n })\n return _isValid;\n }\n\n //check UTF-8 characters\n function validEmailElm(emailElm){\n if(!emailElm.validationMessage) {\n let _emailErrorMsgElm = emailElm.closest(\".bricks-form__field\").querySelector('label.email-validate__failed');\n if(_emailErrorMsgElm) _emailErrorMsgElm.remove();\n let _emailBlockedErrorMsgElm = emailElm.closest(\".bricks-form__field\").querySelector('label.blockedemaildomain-msg');\n setTimeout(function() {\n if(_emailBlockedErrorMsgElm.style.display == \"none\") {\n emailElm.classList.remove(\"error\");\n emailElm.classList.add('valid');\n } else {\n emailElm.classList.remove('valid');\n emailElm.classList.add(\"error\");\n }\n }, 50);\n\n let domainEmail = emailElm.value.split('@');\n if(domainEmail.length > 1 && domainEmail[1].indexOf(\".\") == -1) {\n submitBtn.click();\n }\n return;\n }\n\n setTimeout(function(){\n if(!emailElm.classList.contains('error'))\n emailElm.classList.add('error');\n \n let realErrorLabel = emailElm.closest(\".bricks-form__field\").querySelector('label.error[for]:not(.blockedemaildomain-msg)');\n if(!realErrorLabel) {\n if(!emailElm.nextElementSibling)\n emailElm.insertAdjacentHTML(\"afterend\", '');\n else\n emailElm.nextElementSibling.style.display = \"block\";\n } else {\n if(emailElm.nextElementSibling && !emailElm.nextElementSibling.getAttribute(\"for\")) {\n let _nextElm = emailElm.nextElementSibling;\n if(_nextElm.name != 'blockedemaildomain') emailElm.nextElementSibling.remove();\n }\n\n if(!realErrorLabel.dataset.errStr) {\n realErrorLabel.dataset.errStr = realErrorLabel.innerHTML;\n }\n realErrorLabel.innerHTML = realErrorLabel.dataset.errStr + \" (\"+ emailElm.validationMessage +\")\";\n realErrorLabel.style.display = \"block\";\n }\n }, 500)\n }\n\n let emailElm = RDForm.querySelector(\"[type=email]\");\n if(emailElm) {\n emailElm.addEventListener(\"blur\", function(){\n validEmailElm(emailElm);\n })\n }\n }\n }\n })\n}\n\n\nGT.domContentLoadedFncList.push(function(){\n GT.RDStationForms();\n});\nGT.RangeSlider = function () {\n document.querySelectorAll('input[type=\"range\"]').forEach(function(item){\n let tooltipTitle = item.getAttribute(\"title\");\n if(tooltipTitle) {\n item.insertAdjacentHTML('afterend', '
    '+ tooltipTitle +'
    ');\n item.setAttribute(\"title\", \"\");\n }\n item.insertAdjacentHTML('afterend', '');\n })\n document.querySelectorAll('input[type=\"range\"]').forEach(function(item){\n let formRangeWrapper = item.closest(\".FormRange__Wrapper\");\n if(formRangeWrapper) {\n currentValueElm = formRangeWrapper.querySelector(\".rangeslider__value\");\n currentValueElm.innerText = item.value;\n item.addEventListener(\"input\", function(e){\n e.target.nextElementSibling.innerText = e.target.value;\n })\n\n function moveTooltipPoint(e) {\n let toolTipElm = e.target.nextElementSibling.nextElementSibling;\n if(toolTipElm.querySelector(\".down-arrow\")) {\n let toolTipPointElm = toolTipElm.querySelector(\".down-arrow\");\n let left = e.offsetX < 10 ? 10 : e.offsetX - 5;\n left = left > toolTipElm.offsetWidth - 20 ? left - 20 : left;\n toolTipPointElm.style.left = left + \"px\";\n }\n }\n\n item.addEventListener(\"mouseenter\", function(e){\n moveTooltipPoint(e);\n })\n \n item.addEventListener(\"touchstart\", function(e){\n moveTooltipPoint(e);\n })\n }\n })\n};\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n new GT.RangeSlider();\n });\n\nGT.Reach = function() {\n let htmlElm = document.firstElementChild;\n let globalReachElm = htmlElm.querySelector(\".global-reach\");\n if (!globalReachElm) return;\n let isInited = false;\n let globalReachToggleBtn = GT.headerElm.querySelector(\".global-reach__toggle\");\n let globalReachTabElms = globalReachElm.querySelectorAll('.reach-region-selector li');\n let isDesktop = GT.isDesktopView();\n \n if(typeof isNav3 == \"undefined\") {\n globalReachToggleBtn = GT.isMobileView() ? GT.headerElm.querySelector(\".global-toggle-m\") : GT.headerElm.querySelector(\".global-reach__toggle\");\n }\n\n function disableScroll(isDisable){\n if(GT.wWidth >= 992) {\n if(isDisable) {\n typeof isNav3 != \"undefined\" && GT.Overlays.showHeaderOverlay();\n htmlElm.classList.add(\"global-reach--opening\");\n GT.headerElm.querySelector(\".menu-link.open\")?.classList.remove(\"open\");\n } else {\n GT.preventHeaderFromFlickeringWhileBodyHeightIsChanging();\n GT.headerElm.style.setProperty(\"--globalreach-height\", 0);\n GT.headerElm.classList.remove(\"trigger-animation\");\n htmlElm.classList.remove(\"global-reach--opening\");\n setTimeout(() => {\n typeof isNav3 != \"undefined\" && GT.Overlays.hideHeaderOverlay();\n }, 350);\n }\n }\n\n if(!isDisable)\n setTimeout(e => {\n globalReachToggleBtn?.focus();\n }, 1000)\n }\n\n function calcActivatedTabHeight() {\n GT.headerElm.style.setProperty(\"--globalreach-height\", globalReachElm.querySelector(\".global-reach__list.active\")?.offsetHeight + \"px\");\n }\n\n function initReachToggle() {\n if(globalReachToggleBtn.dataset.inited)\n return;\n\n globalReachToggleBtn.dataset.inited = true;\n\n function pressESCToClose(e){\n if(e.key == \"Escape\") {\n globalReachToggleBtn.click();\n }\n }\n \n const globalReachHeadTitle = globalReachElm.querySelector('.global-reach__head .title');\n\n globalReachHeadTitle?.addEventListener('keydown', tabify);\n\n globalReachToggleBtn.addEventListener('click', function(e) {\n e.preventDefault();\n // if ($(e.target).hasClass('lang-dropdown-arrow')) {\n // e.stopPropagation();\n // return;\n // }\n \n let closeMegaNav2Btn = document.querySelector(\".close-mega__menu\");\n if(GT.isNav2 && closeMegaNav2Btn && GT.wWidth >= GT.breakPoints.tablet_lg) {\n closeMegaNav2Btn.click();\n }\n\n if (globalReachElm.classList.contains(\"open\")) {\n globalReachElm.classList.remove(\"open\");\n globalReachToggleBtn.setAttribute(\"aria-expanded\", false);\n globalReachElm.setAttribute(\"aria-hidden\", true);\n disableScroll();\n window.removeEventListener(\"keydown\", pressESCToClose);\n } else {\n window.addEventListener(\"keydown\", pressESCToClose);\n globalReachElm.classList.add(\"open\");\n globalReachElm.removeAttribute(\"aria-hidden\");\n globalReachToggleBtn.setAttribute(\"aria-expanded\", true);\n \n globalReachTabElms.forEach(tabItem => {\n if(!isInited) {\n tabItem.addEventListener(\"click\", tabify);\n tabItem.addEventListener(\"keydown\", tabify);\n }\n \n if(GT.isMobileCached) {\n tabItem.setAttribute(\"tabindex\", 0);\n tabItem.setAttribute(\"aria-expanded\", false);\n } else {\n tabItem.setAttribute(\"role\", \"tab\");\n tabItem.setAttribute(\"aria-selected\", false);\n tabItem.removeAttribute(\"aria-expanded\");\n tabItem.setAttribute(\"tabindex\", -1);\n\n if(tabItem.classList.contains(\"active\")) {\n tabItem.setAttribute(\"tabindex\", 0);\n tabItem.setAttribute(\"aria-selected\", true);\n tabItem.closest(\"ul\").setAttribute(\"role\", \"tablist\");\n if(!isInited) {\n setTimeout(() => {\n TabPanelActionHandler(tabItem.closest(\"ul\"));\n }, 500);\n }\n }\n }\n })\n\n\n if(!isInited) {\n GT.headerElm.classList.add(\"fetching\");\n isInited = true;\n \n globalReachElm.querySelector('.global-reach__close').addEventListener(\"click\", () => {\n globalReachElm.classList.remove(\"open\");\n globalReachElm.setAttribute(\"aria-hidden\", true);\n globalReachToggleBtn.setAttribute(\"aria-expanded\", false);\n disableScroll();\n });\n\n\n httpService = new HttpService();\n httpService.getHtmlContent(globalReachLink, null, {\"Content-type\": \"application/x-www-form-urlencoded\"}, true).then(response => {\n\n let globalReachRegionsMoileLV1Elm = document.querySelector(\".mobile__global--level-1 .list\");\n if(globalReachRegionsMoileLV1Elm)\n globalReachRegionsMoileLV1Elm.classList.remove(\"hide\");\n\n globalReachElm.querySelector(\"#global-reach-regions\").insertAdjacentHTML(\"beforeend\", `\n
    \n
    \n ${response}\n
    \n
    \n `);\n GT.hideHyperLinkAnimation();\n calcActivatedTabHeight();\n setTimeout(function() {\n GT.headerElm.classList.add(\"trigger-animation\");\n }, 100);\n GT.GTMGlobal.megaMenu();\n })\n .catch((rej) => {\n isInited = false;\n })\n .finally(() => {\n GT.headerElm.classList.remove(\"fetching\");\n });\n\n } else {\n GT.headerElm.classList.add(\"trigger-animation\");\n calcActivatedTabHeight();\n }\n\n disableScroll(true);\n setTimeout(function() {\n globalReachElm.querySelector(\".global-reach__head a\")?.focus();\n linkHandle();\n }, 1000);\n }\n });\n\n }\n\n\n function tabify(e) {\n if (e.key != \"Tab\") {\n e.preventDefault();\n }\n\n if (e.key == \"Tab\" && isDesktop) {\n const target = e.target;\n const activeLinks = globalReachElm.querySelectorAll('.global-reach__list.active .local-site-link');\n const lastActiveLink = activeLinks[activeLinks.length - 1];\n\n if (e.shiftKey && target.closest('.global-reach__head') && lastActiveLink) {\n e.preventDefault();\n lastActiveLink.focus();\n }\n }\n\n if (!e.keyCode || e.key == \"Enter\" || e.key == \" \") {\n GT.hideHyperLinkAnimation();\n const currentTab = e.target,\n activeEl = currentTab.dataset.tab;\n\n if (!currentTab.classList.contains(\"active\")) {\n globalReachTabElms.forEach(tabItem => {\n tabItem.setAttribute(\"aria-selected\", false);\n })\n\n if(!GT.isMobileCached) {\n globalReachTabElms.forEach(tabItem => {\n tabItem.removeAttribute(\"aria-expanded\");\n tabItem.setAttribute(\"tabindex\", -1);\n })\n currentTab.setAttribute(\"tabindex\", 0);\n currentTab.setAttribute(\"aria-selected\", true);\n } else {\n globalReachTabElms.forEach(tabItem => {\n tabItem.setAttribute(\"aria-expanded\", false);\n })\n currentTab.setAttribute(\"aria-expanded\", true);\n }\n\n setTimeout(() => {\n globalReachTabElms.forEach(tabItem => {\n tabItem.classList.remove(\"active\");\n })\n currentTab.classList.add(\"active\");\n\n document.querySelectorAll(\".global-reach .global-reach__list\").forEach(listPanelItem => {\n listPanelItem.classList.remove(\"active\");\n \n if (listPanelItem.classList.contains(activeEl)) {\n listPanelItem.classList.add(\"active\");\n calcActivatedTabHeight();\n if(GT.isScreenReader && GT.isMobileCached)\n setTimeout(e => {\n document.querySelector(\".global-reach__list.active a\")?.focus();\n }, 500)\n }\n })\n }, GT.isMobileCached ? 500 : 0)\n }\n }\n }\n\n function linkHandle() {\n document.querySelectorAll('.global-reach__list a').forEach(item => {\n let parentElm = item.closest('li');\n item.addEventListener('keydown', function(e) {\n if (e.key == 'Tab' && !e.shiftKey && !parentElm.nextElementSibling) {\n e.preventDefault();\n document.querySelector('.global-reach__head .title').focus();\n }\n });\n });\n }\n\n initReachToggle();\n \n GT.windowResizeFncList.globalReach = function(){\n if(htmlElm.classList.contains(\"global-reach--opening\"))\n globalReachToggleBtn.click();\n\n if(typeof isNav3 == \"undefined\") {\n globalReachToggleBtn = GT.isMobileView() ? GT.headerElm.querySelector(\".global-toggle-m\") : GT.headerElm.querySelector(\".global-reach__toggle\");\n }\n }\n};\n\nGT.domContentLoadedFncList.push(function(){\n GT.Reach();\n})\nGT.ReadMore = function ($readMoreBlock) {\n var DATA_KEY = {\n READMORE_ENABLED: 'readmore-enabled',\n BLOCK_ID: 'block-id',\n MOBILE_HEIGHT: 'mobile-height',\n DESKTOP_HEIGHT: 'desktop-height'\n };\n var READMORE_STORAGE_KEY = 'readmore-states';\n var SELECTORS = {\n HINT: '.readmore_hint',\n CONTENT: '.readmore_content',\n COVER: '.readmore_cover'\n };\n var COLLAPSING_CLASS = 'collapsing';\n var MAX_HEIGHT_PROP = 'max-height';\n var PIXEL = 'px';\n var ANIMATION_DURATION = 'slow';\n\n function closingCover(readMoreBlock) {\n return function () {\n var $cover = $(readMoreBlock).find(SELECTORS.COVER)\n $cover.animate({ opacity: 0 }, {\n duration: ANIMATION_DURATION,\n done: function () {\n $cover.remove();\n }\n });\n }\n }\n\n function getIsExpandingById(blockId) {\n var readmoreState = JSON.parse(localStorage.getItem(READMORE_STORAGE_KEY));\n readmoreState = readmoreState ? readmoreState : {};\n return readmoreState && readmoreState[blockId] || false;\n }\n\n function setIsExpandingById(blockId, isExpanding) {\n var readmoreState = JSON.parse(localStorage.getItem(READMORE_STORAGE_KEY));\n readmoreState = readmoreState ? readmoreState : {};\n var newState = {};\n newState[blockId] = isExpanding;\n readmoreState = $.extend({}, readmoreState, newState);\n localStorage.setItem(READMORE_STORAGE_KEY, JSON.stringify(readmoreState));\n }\n\n $readMoreBlock.each(function () {\n var _currentReadmoreBlock = this;\n var isReadMoreEnabled = $(_currentReadmoreBlock).data(DATA_KEY.READMORE_ENABLED);\n var $readmoreHint = $(_currentReadmoreBlock).find(SELECTORS.HINT);\n var $readmoreContent = $(_currentReadmoreBlock).find(SELECTORS.CONTENT);\n let focussableElements = [];\n let isByTabbing = false;\n\n if (!$readmoreContent.length) {\n return;\n }\n if (!isReadMoreEnabled) {\n $readmoreContent.removeClass(COLLAPSING_CLASS)\n return;\n }\n if (!$readmoreHint.length) {\n return;\n }\n var blockId = $readmoreHint.data(DATA_KEY.BLOCK_ID);\n if (!blockId) {\n return;\n }\n var isExpanding = _currentReadmoreBlock.dataset.reset == \"true\" ? false : getIsExpandingById(blockId);\n\n var isMobile = GT.isMobile();\n\n function expand(isExpandByUser) {\n isExpanding = true;\n $readmoreContent.parents('.readmore')?.removeClass('show-hint');\n setIsExpandingById(blockId, isExpanding);\n // $readmoreHint.attr(\"aria-expanded\", \"true\");\n $readmoreHint.remove();\n $readmoreContent.animate({ maxHeight: \"9999px\" }, {\n duration: ANIMATION_DURATION,\n start: closingCover(_currentReadmoreBlock),\n done: function () {\n $readmoreContent.removeClass(COLLAPSING_CLASS).css(MAX_HEIGHT_PROP, '');\n $readmoreContent.attr(\"role\", \"article\");\n $readmoreContent.attr(\"tabindex\", \"0\");\n focussableElements.forEach(function(focussableElement, focussableElementIdx){\n focussableElement.setAttribute(\"tabindex\", \"0\");\n })\n if(isExpandByUser)\n $readmoreContent.focus();\n }\n });\n }\n\n function collapse() {\n let isIBCDListingPage = document.querySelector(\".icb-listing-page\");\n var restrictedHeight = isIBCDListingPage ? 156 : 200; // Fallback value 4 lines\n if(!isIBCDListingPage) {\n if (isMobile) {\n var restrictedHeight = $readmoreHint.data(DATA_KEY.MOBILE_HEIGHT) || restrictedHeight;\n } else {\n var restrictedHeight = $readmoreHint.data(DATA_KEY.DESKTOP_HEIGHT) || restrictedHeight;\n }\n }\n $readmoreContent.css(MAX_HEIGHT_PROP, restrictedHeight + PIXEL);\n focussableElements.forEach(function(focussableElement){\n focussableElement.setAttribute(\"tabindex\", \"-1\");\n })\n }\n\n // Only show read more icon when height content larger than max-height in setting of block.\n isShowReadmoreIcon();\n // Adopting initial state\n if (isExpanding) {\n // Expanding (Not showing readmore)\n expand();\n } else {\n // Collapsing (Showing readmore)\n collapse();\n }\n\n focussableElements = $readmoreContent[0].querySelectorAll('a:not([disabled]), button:not([disabled]), input:not([disabled]), [tabindex]:not([disabled]):not([tabindex=\"-1\"])');\n Array.prototype.slice.call(focussableElements).forEach(function(focussableElement){\n focussableElement.setAttribute(\"tabindex\", \"-1\");\n })\n \n // Reacting to click event\n $readmoreHint.on('click', function () {\n if (!isExpanding) {\n expand(true);\n }\n });\n \n $readmoreHint.on('keydown', function (e) {\n if (e.keyCode == 13 && !isExpanding) {\n expand(true);\n }\n });\n\n function isShowReadmoreIcon() {\n if (isMobile) {\n var restrictedHeight = $readmoreHint.data(DATA_KEY.MOBILE_HEIGHT) || restrictedHeight;\n } else {\n var restrictedHeight = $readmoreHint.data(DATA_KEY.DESKTOP_HEIGHT) || restrictedHeight;\n }\n\n // Default max-height for collapsing class is 300px\n if($readmoreContent.outerHeight() >= restrictedHeight || $readmoreContent.outerHeight() >= 300) {\n $readmoreContent.parents('.readmore').addClass('show-hint');\n } else {\n $readmoreContent.parents('.readmore').removeClass('show-hint');\n }\n }\n \n // Reacting to resize event\n $(window).on('resize', GT.debounce(function () {\n if (isExpanding) {\n return;\n }\n\n isShowReadmoreIcon();\n \n var newIsMobile = GT.isMobile();\n if (isMobile !== newIsMobile) {\n isMobile = newIsMobile;\n collapse();\n }\n }, 250 /* debounce time in milisecond */));\n });\n};\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n new GT.ReadMore($('.readmore[data-readmore-enabled]'));\n });\n\nGT.GTReaderView = function ($element) {\n\n function getURL(relativeFile) {\n return \"/resources/readerview/\" + relativeFile;\n }\n\n function getResourceVIURL(relativeFile) {\n return \"/dist/\" + relativeFile;\n }\n\n // Return preloader html\n function getPreloader() {\n var fetchingContentsText = $(\"#hdfFetchingContents\").val();\n var preloader = \"
    \"\n + \"\"\n + \"
    \"\n + \"
    \"\n + \"

    \" + fetchingContentsText + \"

    \";\n\n return preloader;\n }\n\n // Added pre-loader\n function startPreloader(doc) {\n var preloader = getPreloader();\n $(doc).find(\"body\").prepend(preloader);\n }\n\n // Create iframe\n function createIframe() {\n var iframe = document.createElement('iframe');\n iframe.id = \"cr-iframe\";\n iframe.style.height = \"100%\";\n iframe.style.width = \"100%\";\n iframe.style.position = \"fixed\";\n iframe.style.top = \"0px\";\n iframe.style.right = \"0px\";\n iframe.style.zIndex = \"9000000000000000000\";\n iframe.style.backgroundColor = \"#fff\";\n\n var preloader = getPreloader();\n $(iframe).contents().find('body').html(preloader);\n\n return iframe;\n }\n\n // Add styletag to iframe\n function addStyleTags(doc) {\n var isRightToLeft = $(\"#isRightToLeft\").val();\n var styleUrls = [];\n if (isRightToLeft === \"True\") {\n styleUrls = [\n getResourceVIURL(\"css/screen-0-inline-rtl.css\"),\n getResourceVIURL(\"css/screen-1st-rtl.css\"),\n getResourceVIURL(\"css/screen-2nd-rtl.css\")\n ];\n } else {\n styleUrls = [\n getResourceVIURL(\"css/screen-0-inline.css\"),\n getResourceVIURL(\"css/screen-1st.css\"),\n getResourceVIURL(\"css/screen-2nd.css\")\n ];\n }\n var inlineStyles = $('style');\n var stylesTags = $('link[rel=\"stylesheet\"]');\n inlineStyles.each(function() {\n $(doc).find('head').append(\"\");\n });\n stylesTags.each(function() {\n if($(this).attr('href')) {\n $(doc).find('head').append(\"\");\n }\n });\n }\n\n function addFonts(doc) {\n var fontUrl = \"\";\n fontUrl = getResourceVIURL(\"fonts/GT-Walsheim-Pro-Regular/GT-Walsheim-Pro-Regular.woff\");\n $(doc).find('head').append(\"\");\n\n fontUrl = getResourceVIURL(\"fonts/GT-Walsheim-Pro-Medium/GT-Walsheim-Pro-Medium.woff\");\n $(doc).find('head').append(\"\");\n\n fontUrl = getResourceVIURL(\"fonts/GT-Walsheim-Pro-Bold/GT-Walsheim-Pro-Bold.woff\");\n $(doc).find('head').append(\"\");\n\n fontUrl = getResourceVIURL(\"fonts/GT-Walsheim-Pro-Bold-Oblique/GT-Walsheim-Pro-Bold-Oblique.woff\");\n $(doc).find('head').append(\"\");\n\n fontUrl = getResourceVIURL(\"fonts/GT-IconSet/GT-IconSet.woff\");\n $(doc).find('head').append(\"\");\n }\n\n function getParsedArticle() {\n var insightbanner = document.getElementsByClassName(\"insights-banner__block\");\n var insightbannerHtml = '';\n if (insightbanner) {\n insightbannerHtml = insightbanner[0].outerHTML;\n }\n var insightmain = document.getElementsByClassName(\"t45-insights-page\");\n var insightmainHtml = '';\n if (insightmain) {\n insightmainHtml = insightmain[0].innerHTML;\n }\n\n var excludeFromReaderView = document.querySelectorAll(\".exclude-from-reader-view\");\n if (excludeFromReaderView.length > 0) {\n for (var i = 0; i < excludeFromReaderView.length; i++) {\n insightmainHtml = insightmainHtml.replace(excludeFromReaderView[i].outerHTML, \"\");\n }\n }\n return insightbannerHtml + insightmainHtml;\n }\n\n function showAllAccordionContents() {\n // Show accordion item\n var accordion_items = $(\".accordion-item__content\");\n if (accordion_items.length > 0) {\n accordion_items.each(function () {\n var _this = $(this);\n if (_this.css(\"display\") == \"block\") {\n _this.addClass('showing');\n } else {\n $(this).css('display', 'block');\n }\n });\n }\n }\n\n function resetAccordionContents() {\n var accordion_items = $(\".accordion-item__content\");\n if (accordion_items.length > 0) {\n accordion_items.each(function () {\n var _this = $(this);\n if (!_this.hasClass('showing')) {\n _this.css('display', 'none');\n } else {\n _this.css('display', 'block');\n _this.removeClass('showing');\n }\n });\n }\n }\n\n function excludeParseArticleHtml() {\n var excludeSelector = [\n '.bookmark-sidebar',\n '.EPiServerForms',\n '.marketo-embed-form',\n '.clickdimensionsembedformblock',\n '.click-dimension__embedded--form',\n '.add-to-reading-list',\n '.service-industry-subscription',\n '.t45-page--bottom',\n '.video-block',\n '.gt-dataTable-wrapper .dataTables_length',\n '.gt-dataTable-wrapper .dataTables_filter',\n '.gt-dataTable-wrapper .dataTables_paginate'\n ];\n for (var i = 0; i < excludeSelector.length; i++) {\n $(excludeSelector[i]).addClass('exclude-from-reader-view');\n }\n }\n\n function optionsMenu(iframe) {\n var doc = iframe.contentWindow.document;\n\n // Print\n $(doc).find(\"#options-print\").click(function () {\n iframe.contentWindow.print();\n });\n\n // Close\n $(doc).find(\"#options-close\").click(function () {\n $(iframe).hide();\n showElements();\n });\n }\n\n function init() {\n var closeReaderViewText = $(\"#hdfCloseReaderView\").val();\n // Initialize iframe & doc\n var iframe = document.getElementById('cr-iframe');\n var doc = iframe.contentWindow.document;\n showAllAccordionContents();\n excludeParseArticleHtml();\n // Get parsed article\n var content = getParsedArticle();\n\n // Remove Media Playback from content\n content = content.replace(\"Media playback is unsupported on your device\", \"\");\n $.ajax({\n url: getURL('insightpage-readerview.html'),\n type: 'GET',\n success: function (data) {\n var html = applyDir();\n // Add template to doc. Prevent injected links from refresh the iframe to original content\n doc.open();\n doc.write(html);\n doc.write(data);\n doc.close();\n\n // Add preloader the second time after template was fetched\n startPreloader(doc);\n $(doc).find(\"#cr-content\").prepend(content);\n $(doc).find(\"#cr-content a\").attr(\"target\", \"_blank\");\n $(doc).find(\"#cr-content .article-summary a\").removeAttr(\"href\");\n $(doc).find(\"#cr-content #options-close\").html(closeReaderViewText);\n\n // Add Font\n addFonts(doc);\n\n // Add style tag\n addStyleTags(doc);\n\n // Options\n optionsMenu(iframe);\n\n // key question\n expandKeyQuestions(iframe);\n\n // handle events\n handleEvents(iframe);\n\n // Display iframe\n $(iframe).show();\n setTimeout(function () {\n $(doc).find(\"#cr-pre-loader\").remove();\n $(doc).find(\"#cr-body\").fadeIn();\n }, 1000);\n }\n });\n }\n\n function handleEvents(iframe) {\n var doc = iframe.contentWindow.document;\n $(document).on('keydown', function (e) {\n if (e.keyCode === 27) {\n $(iframe).hide();\n showElements();\n }\n });\n doc.addEventListener('keydown', function (e) {\n if (e.keyCode === 27) {\n $(iframe).hide();\n showElements();\n }\n });\n doc.addEventListener('click', function (e) {\n closeIframe(e, iframe);\n });\n doc.addEventListener('touchstart', function (e) {\n closeIframe(e, iframe);\n });\n }\n\n function closeIframe(e, iframe) {\n if (($(e.target).closest(\"#cr-content-container\").attr(\"id\") != \"cr-content-container\")) {\n $(iframe).hide();\n showElements();\n }\n }\n\n function expandKeyQuestions(iframe) {\n var doc = iframe.contentWindow.document;\n $(doc).find('.key-question').addClass(\"expanded\");\n $(doc).find('.key-question .content-question').css(\"display\", \"block\");\n }\n\n var latestUrl;\n function launch() {\n var iframe;\n // Detect past iframe - don't create another\n if (document.getElementById(\"cr-iframe\") === null) {\n // Create iframe and append to body\n iframe = createIframe();\n\n document.body.appendChild(iframe);\n\n latestUrl = window.location.href;\n init();\n hideElements();\n } else {\n iframe = document.getElementById(\"cr-iframe\");\n if ($(iframe).is(':visible')) {\n $(iframe).fadeOut();\n showElements();\n } else {\n // Only parse the article if the url was changed\n if (latestUrl === window.location) {\n $(iframe).fadeIn();\n hideElements();\n } else {\n latestUrl = window.location.href;\n init();\n hideElements();\n }\n }\n }\n }\n\n function applyDir() {\n var html;\n var isRightToLeft = $(\"#isRightToLeft\").val();\n if (isRightToLeft === \"True\") {\n html = \"\" +\n \"\" +\n \"\"\n } else {\n html = \"\" +\n \"\" +\n \"\"\n }\n return html;\n }\n\n function hideElements() {\n document.getElementsByClassName(\"t45-insights-page\")[0].style.display = \"none\";\n document.querySelector(\"footer\").style.display = \"none\";\n }\n\n function showElements() {\n resetAccordionContents();\n document.getElementsByClassName(\"t45-insights-page\")[0].style.display = \"block\";\n document.querySelector(\"footer\").style.display = \"block\";\n GT.reInitScrollbar();\n }\n\n $(\".reader-view-article__button\").on('click', function (e) {\n e.preventDefault();\n GT.destroyScrollbar();\n launch();\n });\n\n $(\".insight-page-print__button\").on('click', function (e) {\n e.preventDefault();\n window.print();\n });\n};\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n GT.GTReaderView();\n });\nGT.Captcha = function (elem, obj) {\n var _ths = this;\n obj.settings = obj.settings || {};\n _ths.currentElem = elem;\n _ths.errorElem = null;\n _ths.widget = null;\n _ths.captchaChecked = false;\n _ths.tempPosition = 0;\n _ths.settings = {\n creator_container: obj.settings.creator_container || \".submit.submit-element\", // true, false (added near form submit ) or selector string\n creator_where: obj.settings.creator_where || \"before\", // before, after, inside\n error_origin: obj.settings.error_origin || \"selector\", // from which origin get error message (variable, selector, etc...)\n error_variable: obj.settings.error_variable || null, // get error from variable if variable is set as origin (array of child nodes names or single string)\n error_selector: obj.settings.error_selector || null, // get error from selector\n error_value: obj.settings.error_value || \"Captcha need to be checked\", // default captcha error message\n error_containerSelector: obj.settings.error_containerSelector || \".g-recaptcha\",\n error_where: obj.settings.error_where || \"after\", // before, after, inside\n key_origin: obj.settings.key_origin || \"selector\", // from which origin key should be get (variable, selector or false for default)\n key_value: obj.settings.key_value || null, // sitekey value or null\n key_variable: obj.settings.key_variable || null, // get key from variable if variable is set as origin (array of child nodes names or single string)\n key_selector: obj.settings.key_selector || \"data-sitekey\", // get key from selector\n }\n _ths.captcha = _ths.getReCaptchaElem();\n if (_ths.captcha !== null && _ths.captcha.length) {\n _ths.renderCaptcha(_ths.captcha[0]);\n }\n};\n\nGT.Captcha.prototype.isCaptchaChecked = function () {\n var _ths = this;\n if (_ths.recaptchaIsAvailable()) {\n return grecaptcha && grecaptcha.getResponse().length !== 0;\n }\n return true;\n};\n\nGT.Captcha.prototype.recaptchaIsAvailable = function () {\n var _ths = this;\n if (_ths.currentElem.hasClass('.g-recaptcha') || _ths.currentElem.find('.g-recaptcha').length) {\n return true;\n }\n return false;\n};\n\nGT.Captcha.prototype.getReCaptchaElem = function () {\n var _ths = this;\n if (_ths.currentElem.hasClass('g-recaptcha')) {\n return _ths.currentElem;\n } else if (_ths.currentElem.find('.g-recaptcha').length) {\n return _ths.currentElem.find('.g-recaptcha');\n } else {\n return _ths.createCaptcha(_ths.settings.creator_container, _ths.settings.creator_where);\n }\n return recaptchaElem;\n};\n\nGT.Captcha.prototype.getValueFromSelector = function (selectorObj) {\n var _ths = this;\n if (_ths.currentElem.attr(selectorObj)) {\n return _ths.currentElem.attr(selectorObj)\n } else {\n return _ths.currentElem.find(\"[\" + selectorObj + \"]\").attr(selectorObj)\n }\n};\n\nGT.Captcha.prototype.getValueFromVariable = function (variableObj) {\n var _returnValue = \"\";\n var _tmp = window;\n if (typeof variableObj === \"string\" && window[variableObj]) {\n _returnValue = window[variableObj];\n } else if (Array.isArray(variableObj)) {\n for (var index in variableObj) {\n _tmp = _tmp[variableObj[index]];\n }\n if (_tmp) {\n _returnValue = _tmp;\n }\n }\n return _returnValue;\n};\n\nGT.Captcha.prototype.getValueFromOrigin = function (origin, selectorObj, variableObj, currentValue) {\n var _ths = this;\n var _tmp = null;\n switch (origin) {\n case \"selector\":\n return _ths.getValueFromSelector(selectorObj);\n break;\n case \"variable\":\n return _ths.getValueFromVariable(variableObj);\n break;\n }\n return currentValue;\n};\n\nGT.Captcha.prototype.createRecaptchaErrorMsg = function () {\n var _ths = this;\n var _error = _ths.settings.error_value;\n var _errorContainer = _ths.currentElem;\n var _errorElementInnerHTML = \"\";\n\n var errorElem = null;\n _error = _ths.getValueFromOrigin(_ths.settings.error_origin, _ths.settings.error_selector, _ths.settings.error_variable, _error)\n if (_ths.settings.error_containerSelector) {\n _errorContainer = _ths.currentElem.parent().find(_ths.settings.error_containerSelector);\n }\n\n _errorElementInnerHTML = '
    ' + _error + '
    ';\n switch (_ths.settings.error_where) {\n case \"before\":\n errorElem = $(_errorElementInnerHTML).insertBefore(_errorContainer);\n break;\n case \"after\":\n errorElem = $(_errorElementInnerHTML).insertAfter(_errorContainer);\n break;\n default:\n errorElem = $(_errorContainer).append(_errorElementInnerHTML);\n }\n _ths.errorElem = errorElem;\n return errorElem;\n};\n\nGT.Captcha.prototype.showRecaptchaErrorMsg = function () {\n var _ths = this;\n if (!_ths.errorElem) {\n _ths.errorElem = _ths.createRecaptchaErrorMsg();\n }\n _ths.errorElem.removeClass(\"hide\");\n};\n\nGT.Captcha.prototype.hideRecaptchaErrorMsg = function () {\n var _ths = this;\n if (_ths.errorElem) {\n _ths.errorElem.addClass(\"hide\");\n }\n};\n\n\nGT.Captcha.prototype.getPositionInterval = function () {\n var _ths = this;\n setInterval(function () {\n _ths.tempPosition = $(document).scrollTop();\n }, 100);\n};\n\nGT.Captcha.prototype.createCaptcha = function (container, where) {\n var _ths = this;\n var _captchaInnerHTML = \"\";\n\n var $container = $(container);\n var captchaElem = null;\n if ($container.length) {\n _captchaInnerHTML = '
    ';\n switch (where) {\n case \"before\":\n $container.parent().prepend(_captchaInnerHTML);\n captchaElem = $container.parent().find('.g-recaptcha');\n break;\n case \"after\":\n $container.parent().append(_captchaInnerHTML);\n captchaElem = $container.parent().find('.g-recaptcha');\n break;\n default:\n $container.append(_captchaInnerHTML);\n captchaElem = $container.find('.g-recaptcha');\n }\n }\n return captchaElem;\n};\n\nGT.Captcha.prototype.verifyCallback = function () {\n var _ths = this;\n _ths.hideRecaptchaErrorMsg();\n _ths.captchaChecked = true;\n $('html, body').scrollTop(_ths.tempPosition);\n};\n\nGT.Captcha.prototype.renderCaptcha = function (element, retry) {\n var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n var _ths = this;\n var _retry = retry || 0;\n // wait for captcha till loaded, try up to 30 times;\n if ((typeof grecaptcha === \"undefined\" ||\n typeof grecaptcha.render === \"undefined\" ||\n typeof grecaptcha.getResponse === \"undefined\" ||\n typeof grecaptcha.reset === \"undefined\") &&\n _retry < 30) {\n setTimeout(function () {\n _ths.renderCaptcha(element, _retry);\n }, 100);\n } else {\n _ths.widget = grecaptcha.render(element, {\n 'sitekey': _ths.getValueFromOrigin(\n _ths.settings.key_origin,\n _ths.settings.key_selector,\n _ths.settings.key_variable,\n _ths.settings.key_value),\n 'callback': function () { _ths.verifyCallback() }\n });\n _ths.handleSubmit();\n _ths.createRecaptchaErrorMsg();\n _ths.getPositionInterval();\n _ths.orientationChange();\n }\n};\n\nGT.Captcha.prototype.orientationChange = function () {\n var _ths = this;\n $(window).on(\"orientationchange\", function (event) {\n if (grecaptcha.getResponse(_ths.widget).length === 0) {\n grecaptcha.reset(_ths.widget);\n }\n });\n};\n\nGT.Captcha.prototype.handleSubmit = function () {\n var _ths = this;\n var _form = _ths.captcha.closest('form');\n _form.on('submit', function (e) {\n if (grecaptcha.getResponse(_ths.widget).length === 0) {\n e.preventDefault();\n _ths.showRecaptchaErrorMsg();\n }\n });\n};\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n [\n {\n elm: $('.g-recaptcha:not(.FormRecaptcha .g-recaptcha)'),\n settings: {\n error_origin: \"selector\",\n error_value: \"\",\n error_selector: \"data-captcha-error\"\n }\n }\n ].map(function (item) {\n if (item.elm.length) {\n new GT.Captcha(item.elm, item);\n }\n })\n });\n\nGT.Reveal = function ($elements, obj) {\n // var isMobile = GT.isMobile();\n // // $elements.forEach(elm => {\n // document.querySelectorAll(\".reveal-item\").forEach(function(childElm){\n // if(isMobile)\n // childElm.classList.add(\"use-banner-zoom\");\n // else\n // childElm.classList.add(\"use-block-element-fade-in\");\n // })\n // })\n // return;\n // var current = this;\n // if (typeof obj.settings === 'undefined') {\n // obj.settings = {};\n // }\n\n // // SETTINGS\n // current.settings = $.extend({}, {\n // animationType: 'fromBottom',\n // dataDelay: 'reveal-delay',\n // dataTransition: 'transition',\n // customAnimation: null,\n // rvlItemClass: null,\n // }, obj.settings);\n\n // // CREATE SCROLL REVEAL ANIMATION OBJECT\n // current.revealObj = ScrollReveal(current.settings.customAnimation || current.GetAnimation(current.settings.animationType));\n\n // // GET REVEAL ELEMENT AND REVEAL CONTAINER IF IT IS SET\n // current.rvlItemClass = current.settings.rvlItemClass;\n\n // // SEQUENCE ANIMATION IF CONTAINER IS SET\n // if (!GT.isMobile() && !sessionStorage['animationDone'] || $(\".\" + current.rvlItemClass).attr(\"data-replay\") == \"true\") {\n // $element.each(function () {\n // current.revealAnimation();\n // });\n // sessionStorage['animationDone'] = 'true';\n // } else {\n // $('.' + current.rvlItemClass).addClass('still');\n // $('.' + current.rvlItemClass).removeClass(current.rvlItemClass);\n // }\n};\n\n// Animations to obj prototype\nGT.Reveal.prototype.GetAnimation = function (animationType) {\n var current = this;\n var defaultAnimation = {\n duration: 0,\n easing: 'cubic-bezier(0.4, 0.0, 0.2, 1)',\n distance: '0rem',\n opacity: 1,\n scale: 1,\n viewFactor: 0.2,\n beforeReveal: function () {\n current.revealAnimation();\n }\n }\n switch (animationType) {\n case 'fromBottom':\n return $.extend({}, defaultAnimation, {\n origin: 'bottom'\n })\n default:\n return defaultAnimation\n }\n};\n\nGT.Reveal.prototype.revealAnimation = function () {\n var current = this;\n var targetElements = $('.' + current.rvlItemClass);\n for (var i = 0; i < targetElements.length; i++) {\n var elem = targetElements[i];\n var className = elem.getAttribute('data-transition');\n var delay = elem.getAttribute('data-reveal-delay');\n new revealElement(elem, className, delay);\n }\n}\n\nfunction revealElement(elem, className, delay) {\n $(elem).css({ 'animation-delay': delay + 'ms' })\n elem.classList.add(className);\n}\n\n\n'use strict';\n\nfunction scrollTop() {\n $('.c-scrollToTop').fadeOut();\n $(window).scroll(function() {\n if ($(window).scrollTop() > $(window).height()) {\n $('.c-scrollToTop').fadeIn();\n }\n else {\n $('.c-scrollToTop').fadeOut();\n }\n\n $(this).scrollTop() > 30 ? $(\".arrow\").fadeOut() : $(\".arrow\").fadeIn();\n });\n\n //Click event to scroll to top\n $('.c-scrollToTop').click(function(){\n $('html, body').animate({scrollTop : 0},800);\n });\n}\n\n$(document).ready(function(){\n var $officePage = $('.office-page');\n var $locationPage = $('.location-page');\n var isOfficePage = $officePage.length;\n var isLocationPage = $locationPage.length;\n\n if(isLocationPage || isOfficePage) {\n $officePage.append('
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ');\n $locationPage.append('
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ');\n scrollTop();\n }\n});\n\nGT.SearchInput = function($element, obj) {\n\n function resizeForText(text) {\n var $this = $(this);\n if (text) {\n var $span = $('').html($element.attr('placeholder')).css({\n position: 'absolute',\n left: -99999,\n top: -9999,\n fontSize: $element.css('font-size'),\n }).appendTo('body');\n\n var emptyInput = false\n if (!text.trim() && $this.attr('placeholder')) {\n text = $this.attr('placeholder').trim();\n emptyInput = true;\n }\n\n $span.text(text);\n\n placeWidth = $span.width();\n\n if ($span.width() < (placeWidth)) {\n $inputSize = placeWidth\n } else {\n $inputSize = $span.width();\n }\n\n if (emptyInput) {\n $this.css('min-width', $inputSize);\n $this.css('width', $inputSize);\n } else {\n $this.css('width', $inputSize);\n }\n $span.remove();\n } else {\n var placeWidth = $('#searchInputPlaceholder').width();\n $this.css('min-width', placeWidth);\n $this.css('width', placeWidth);\n }\n }\n\n $element.on('keypress', function(e) {\n if (e.which && e.charCode) {\n var c = String.fromCharCode(e.keyCode | e.charCode);\n var $this = $(this);\n resizeForText.call($this, $this.val() + c);\n }\n });\n\n $element.on('paste change', function(e) {\n var $this = $(this);\n\n setTimeout(function() {\n resizeForText.call($this, $this.val());\n }, 100);\n });\n\n // Backspace\n $element.on('keyup', function(e) {\n if (e.keyCode === 8 || e.keyCode === 46) {\n resizeForText.call($(this), $(this).val());\n }\n });\n\n resizeForText.call($element);\n\n $(window).on('resize', function() {\n resizeForText.call($element, $element.val());\n })\n\n};\n\nif(typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n function initGTSearchInput(elm) {\n GT.SearchInput($(elm));\n }\n LazyEvent(document.querySelectorAll('.name-search'), initGTSearchInput, 200, null, \"lazy_DOMContentLoadedEvt__GTSearchInput\");\n });\n\nGT.SearchResults = function ($element, obj) {\n let __ths = this;\n let _searchKeyword = '';\n\n let _tabTagsIndex = [];\n let _filterTagsTaxonomies = [];\n\n init();\n\n function horizontalTabHandle() {\n let _searchResultsTab = document.querySelector('.search-results-tab');\n let _searchBoxEndpoint = document.getElementById('searchContentEndpoint');\n if(_searchResultsTab) {\n let _searchResultsTabItems = _searchResultsTab.querySelectorAll('.search-results-tab__item');\n [].forEach.call(_searchResultsTabItems, function(tabItem) {\n tabItem.addEventListener('click', function(e) {\n let _this = this;\n\n if(_this.classList.contains('search-results-tab__item--current')) return;\n if(parseInt(_this.getAttribute('total-tag-results')) <= 0) return;\n\n let _oldActiveTab = _searchResultsTab.querySelector('.search-results-tab__item--current');\n\n if(_oldActiveTab.classList.contains('search-results-tab__item--current')) _oldActiveTab.classList.remove('search-results-tab__item--current');\n \n let _tagValue = _this.getAttribute('tag-filter-name');\n \n let _currentTagIndex = 0;\n \n if (_tabTagsIndex[_this.getAttribute('tag-filter-name')]){\n _currentTagIndex = parseInt(_tabTagsIndex[_this.getAttribute('tag-filter-name')]);\n } else {\n _currentTagIndex = 0;\n }\n\n let _queryParams = new URLSearchParams(window.location.search);\n\n let _params = [];\n _params['tags'] = _tagValue;\n if(_currentTagIndex > 0) {\n _params['CurrentPageIndex'] = _currentTagIndex;\n } else {\n \n if(_queryParams.get('page')){\n _queryParams.delete('page');\n }\n }\n\n __ths.searchResultsByTaxonomies(_params, false, _searchBoxEndpoint.getAttribute('data-endpoint'), '.search-results__replace--contents');\n });\n });\n }\n }\n\n function initFilterTags() {\n let _tagDictionaries = document.querySelectorAll('.tag-dictionary');\n if(_tagDictionaries) {\n [].forEach.call(_tagDictionaries, function(tagDictionary) {\n let _tagkey = tagDictionary.getAttribute('data-tagkey');\n let _tagValues = tagDictionary.getAttribute('data-tagvalue'); \n\n if(_tagValues) {\n if(!_filterTagsTaxonomies) _filterTagsTaxonomies = [];\n let _parentTaxonomyArr = _filterTagsTaxonomies[_tagkey];\n let _tagValuesArr = _tagValues.split('|');\n [].forEach.call(_tagValuesArr, function(_tagValue) {\n if(_parentTaxonomyArr) {\n if(_parentTaxonomyArr.indexOf(_tagValue) < 0) _parentTaxonomyArr.push(_tagValue);\n } else {\n _parentTaxonomyArr = [];\n _parentTaxonomyArr.push(_tagValue);\n }\n });\n \n _filterTagsTaxonomies[_tagkey] = _parentTaxonomyArr;\n }\n });\n }\n }\n\n function processFilterCheckbox(_filterCheckbox) {\n let _filterCheckboxValue = _filterCheckbox.value;\n if(_filterCheckbox.checked) {\n let _parentTaxonomy = _filterCheckbox.getAttribute('parent-taxonomy');\n let _parentTaxonomyArr = _filterTagsTaxonomies[_parentTaxonomy];\n if(_parentTaxonomyArr) {\n if(_parentTaxonomyArr.indexOf(_filterCheckboxValue) < 0) _parentTaxonomyArr.push(_filterCheckboxValue);\n } else {\n _parentTaxonomyArr = [];\n _parentTaxonomyArr.push(_filterCheckboxValue);\n }\n\n _filterTagsTaxonomies[_parentTaxonomy] = _parentTaxonomyArr;\n }\n }\n\n function initFilterByLabel() {\n let filterButtonsContainer = document.querySelector('.filter-result__tags--buttons');\n if(filterButtonsContainer) {\n let _filterLables = filterButtonsContainer.querySelectorAll('button.filter-result__tag-item');\n [].forEach.call(_filterLables, function(filterBtn){\n filterBtn.addEventListener('click', function(e) {\n let _this = this;\n let _taxFilterValue = _this.getAttribute('data-value');\n if(_filterTagsTaxonomies) {\n let _parentTaxonomy = _this.getAttribute('data-parentTagKey');\n let _parentTaxonomyArr = _filterTagsTaxonomies[_parentTaxonomy];\n if(_parentTaxonomyArr) {\n for(let i = 0; i < _parentTaxonomyArr.length; i++) {\n let _childTaxonomy = _parentTaxonomyArr[i];\n if(_taxFilterValue == _childTaxonomy) {\n _parentTaxonomyArr.splice(i, 1);\n break;\n }\n }\n }\n\n _filterTagsTaxonomies[_parentTaxonomy] = _parentTaxonomyArr;\n }\n\n let _currentTabItem = getCurrentTabItem();\n\n let _params = [];\n \n if(_currentTabItem) {\n _params['tags'] = _currentTabItem.getAttribute('tag-filter-name');\n }\n\n __ths.searchResultsByTaxonomies(_params, false, '', ''); \n });\n });\n }\n }\n\n function initClearFilterByLabel() {\n let _clearFilterLabelBtns = document.querySelectorAll('button.search-filters__reset-btn');\n [].forEach.call(_clearFilterLabelBtns, function(_clearFilterLabel){\n _clearFilterLabel.addEventListener('click', function(e) { \n let _clearButton = document.getElementById('resetFiltersBtn');\n if(_clearButton) {\n _clearButton.dispatchEvent(new Event('click'));\n }\n });\n })\n }\n\n // Search Filter Select Handling On Desktop\n function searchFiltersHandle() {\n let _searchBoxEndpoint = document.getElementById('searchContentEndpoint');\n let _searchResultsFilterItems = document.querySelectorAll('input[type=\"checkbox\"].filters__item');\n let _applyFiltersBtn = document.getElementById('applyFiltersBtn');\n [].forEach.call(_searchResultsFilterItems, function(filterItem) {\n filterItem.addEventListener('change', function(e) {\n let _this = this;\n let _parentTaxonomy = _this.getAttribute('parent-taxonomy');\n\n // Delete all tags by parent\n _filterTagsTaxonomies[_parentTaxonomy] = [];\n\n // Get all checked items by parent\n let _groupTagsParent = _this.closest('.select-filter__wrapper');\n if(_groupTagsParent) {\n let _checkedItemsByParent = _groupTagsParent.querySelectorAll('input[type=\"checkbox\"]:checked');\n [].forEach.call(_checkedItemsByParent, function(checkedItem){\n if(checkedItem) {\n processFilterCheckbox(checkedItem);\n }\n });\n }\n\n let _currentTabItem = getCurrentTabItem();\n\n let _params = [];\n \n if(_currentTabItem) {\n _params['tags'] = _currentTabItem.getAttribute('tag-filter-name');\n }\n\n if(GT.isTabletView()) {\n __ths.searchResultsByTaxonomies(_params, false, _searchBoxEndpoint.getAttribute('data-endpoint'), '.search-results__replace--contents'); \n }\n });\n });\n\n if (_applyFiltersBtn) {\n _applyFiltersBtn.addEventListener('click', function() {\n [].forEach.call(_searchResultsFilterItems, function(filterItem) {\n processFilterCheckbox(filterItem);\n });\n\n let _currentTabItem = getCurrentTabItem();\n\n let _params = [];\n \n if(_currentTabItem) {\n _params['tags'] = _currentTabItem.getAttribute('tag-filter-name');\n }\n __ths.searchResultsByTaxonomies(_params, false, _searchBoxEndpoint.getAttribute('data-endpoint'), '.search-results__replace--contents');\n })\n }\n }\n\n function clearFilters() {\n let _clearButton = document.getElementById('resetFiltersBtn');\n let _searchBoxEndpoint = document.getElementById('searchContentEndpoint');\n if(!_clearButton) return;\n _clearButton.addEventListener('click', function() {\n let _searchResultsFilterItems = document.querySelectorAll('input[type=\"checkbox\"].filters__item');\n [].forEach.call(_searchResultsFilterItems, function(filterItem) {\n filterItem.checked = false;\n });\n \n _filterTagsTaxonomies = [];\n \n let _currentTagIndex = 0;\n let _currentTabItem = getCurrentTabItem();\n\n let _params = [];\n \n if(_currentTabItem) {\n _params['tags'] = _currentTabItem.getAttribute('tag-filter-name');\n\n // Search keyword condition by tab tags\n if (_tabTagsIndex[_currentTabItem.getAttribute('tag-filter-name')]){\n _currentTagIndex = parseInt(_tabTagsIndex[_currentTabItem.getAttribute('tag-filter-name')]);\n } else {\n _currentTagIndex = 0;\n }\n }\n\n let _queryParams = new URLSearchParams(window.location.search);\n if(_currentTagIndex > 0) {\n _params['CurrentPageIndex'] = _currentTagIndex;\n } else {\n if(_queryParams.get('page')){\n _queryParams.delete('page');\n }\n }\n\n //keep sort value after clear filters and call ajax\n _params['sort'] = ( _queryParams.get('sort') ) ? _queryParams.get('sort') : 'rel';\n \n __ths.searchResultsByTaxonomies(_params, false, _searchBoxEndpoint.getAttribute('data-endpoint'), '.search-results__replace--contents');\n });\n }\n\n function scrollToTab (el) {\n if(!el) return;\n const elLeft = el.offsetLeft + el.offsetWidth;\n const elParentLeft = el.parentNode.offsetLeft + el.parentNode.offsetWidth;\n \n // check if element not in view\n setTimeout(function() {\n if (elLeft >= elParentLeft + el.parentNode.scrollLeft) {\n el.parentNode.scrollLeft = elLeft - elParentLeft;\n } else if (elLeft <= el.parentNode.offsetLeft + el.parentNode.scrollLeft) {\n el.parentNode.scrollLeft = el.offsetLeft - el.parentNode.offsetLeft;\n }\n }, 500);\n }\n\n function scrollToPosition(_container) {\n let _currentPos = document.documentElement.scrollTop || document.body.scrollTop;\n let _containerOffset = _container.offsetTop;\n if(_currentPos > (_containerOffset + _container.getBoundingClientRect().height)) {\n window.scrollTo({ top: _containerOffset - _container.getBoundingClientRect().height, behavior: 'smooth'});\n }\n }\n\n function getCurrentTabItem() {\n let _searchResultsTab = document.querySelector('.search-results-tab');\n if(_searchResultsTab) {\n let _searchResultsTabItem = _searchResultsTab.querySelector('.search-results-tab__item.search-results-tab__item--current');\n if(_searchResultsTabItem) {\n return _searchResultsTabItem;\n }\n }\n }\n\n function queryParams(_urlSearchParams, params) {\n for (var key in params) {\n _urlSearchParams.set(key, params[key]);\n }\n\n if(_filterTagsTaxonomies) {\n for (var key in _filterTagsTaxonomies) {\n let _tagsArr = _filterTagsTaxonomies[key];\n let _tagsStr = '';\n let _counter = 0;\n [].forEach.call(_tagsArr, function(_tagValue){\n _tagsStr += _tagValue;\n if(_counter < _tagsArr.length - 1 ) {\n _tagsStr += '+';\n }\n _counter++;\n });\n if(_tagsStr) _urlSearchParams.append('tags', _tagsStr);\n }\n }\n\n return _urlSearchParams.toString();\n }\n\n __ths.setParameterInQueryString = function(key, value, isDelete) {\n var queryParams = new URLSearchParams(window.location.search);\n if(isDelete)\n queryParams.delete(key);\n else\n queryParams.set(key, value);\n history.replaceState(null, null, \"?\" + queryParams.toString() + location.hash);\n }\n\n __ths.getParameterInQueryString = function(key) {\n var queryParams = new URLSearchParams(window.location.search);\n return queryParams.get(key);\n }\n\n function toggleFiltersForm() {\n let _filtersContainer = document.querySelector('.search-filters'),\n _filtersContainerToggle = document.querySelectorAll('[data-toggle=\"search-filters\"]');\n\n if (_filtersContainerToggle)\n for (var i = 0; i < _filtersContainerToggle.length; i++) {\n _filtersContainerToggle[i].addEventListener('click', function () {\n _filtersContainer.classList.toggle('active');\n })\n }\n\n if (_filtersContainer)\n document.querySelector('.main-header .menu-toggle').addEventListener('click', function() {\n _filtersContainer.classList.remove('active');\n })\n \n }\n\n function filterSelectToggle() {\n let _selectFilterToggles = document.querySelectorAll('[data-collapse=\"select-filter\"]');\n\n for (var i = 0; i < _selectFilterToggles.length; i++) {\n _selectFilterToggles[i].addEventListener('click', function (event) {\n var parentFilter = event.target.closest('.select-filter');\n parentFilter.classList.toggle('expanded');\n })\n }\n }\n\n function showActiveFilters () {\n let selectFilter = document.querySelectorAll('.select-filter');\n for (var i = 0; i < selectFilter.length; i++) {\n let checkedCheckbox = selectFilter[i].querySelector('[type=\"checkbox\"]:checked');\n if (checkedCheckbox) {\n selectFilter[i].classList.add('expanded')\n }\n }\n }\n\n function toggleOverhiddenHTML() {\n let _filtersShowBtn = document.querySelector('.search-results__filters-show'),\n _filtersHideBtn = document.querySelector('.search-filters__close-btn');\n\n if (_filtersShowBtn)\n _filtersShowBtn.addEventListener('click', function() {\n document.querySelector('html').classList.add('overflowHidden--mobile');\n })\n\n if (_filtersHideBtn)\n _filtersHideBtn.addEventListener('click', function() {\n document.querySelector('html').classList.remove('overflowHidden--mobile');\n })\n }\n\n function initClearSearchInput() {\n let _searchFormResetBtn = document.getElementById('searchResetBtn');\n \n if (_searchFormResetBtn != null) {\n _searchFormResetBtn.addEventListener('click', function () {\n let _searchFormInput = document.getElementById('mainSearchInput');\n if(_searchFormInput) {\n _searchFormInput.value = '';\n _searchFormInput.focus();\n }\n this.classList.remove('active');\n })\n }\n }\n\n function init() {\n initFilterTags();\n initFilterByLabel();\n initClearFilterByLabel();\n initDefaultSearchValue();\n initSearchboxInput();\n initClearSearchInput();\n horizontalTabHandle();\n searchFiltersHandle();\n clearFilters();\n initLoadmoreButton();\n registerSortEvt();\n shouldLoadMore();\n toggleFiltersForm();\n filterSelectToggle();\n showActiveFilters();\n toggleOverhiddenHTML()\n\n let _currentTabItem = getCurrentTabItem();\n if(_currentTabItem){\n scrollToTab(_currentTabItem);\n }\n }\n\n function initDefaultSearchValue() {\n let _queryParams = new URLSearchParams(window.location.search);\n\n let _currentPageIndex = _queryParams.get('page');\n let _currentTabItem = getCurrentTabItem();\n if(_currentPageIndex && _currentTabItem){\n _tabTagsIndex[_currentTabItem.getAttribute('tag-filter-name')] = parseInt(_currentPageIndex);\n scrollToTab(_currentTabItem);\n }\n }\n\n function registerSortEvt(){\n //update sort params when change sort select\n let _sortingSelectBox = document.getElementById('select_sorting');\n let _searchBoxEndpoint = document.getElementById('searchContentEndpoint');\n if(_sortingSelectBox) {\n _sortingSelectBox.addEventListener('change', function (e) {\n let _this = this;\n let _currentTabItem = getCurrentTabItem();\n\n let _params = [];\n if(_currentTabItem) {\n _params['tags'] = _currentTabItem.getAttribute('tag-filter-name');\n }\n if(_tabTagsIndex[_currentTabItem.getAttribute('tag-filter-name')]) {\n _params['CurrentPageIndex'] = _tabTagsIndex[_currentTabItem.getAttribute('tag-filter-name')];\n }\n\n __ths.searchResultsByTaxonomies(_params, false, _searchBoxEndpoint.getAttribute('data-endpoint'), '.search-results__replace--contents');\n });\n }\n }\n function initSearchboxInput() {\n // Search when press Enter key\n let _searchboxInput = document.getElementById('mainSearchInput');\n \n if(_searchboxInput) {\n let _searchInputValue = _searchboxInput.value;\n let _searchFormResetBtn = document.getElementById('searchResetBtn');\n if (_searchInputValue) {\n _searchFormResetBtn.classList.add('active');\n _searchKeyword = _searchInputValue;\n } else {\n _searchFormResetBtn.classList.remove('active');\n }\n\n _searchboxInput.addEventListener('keydown', function(e) {\n let key = e.key;\n if (key == 'Enter') {\n\n let _headerSearchboxInput = document.querySelector('.header-search__form input[name=\"q\"]');\n let _currentSearchKeyword = this.value;;\n if(_headerSearchboxInput) {\n let _isDisabledPreviousSearch = _headerSearchboxInput.getAttribute('disable-previoussearch');\n if(_isDisabledPreviousSearch && _isDisabledPreviousSearch.toLowerCase() == 'false') {\n let _userPreviousSearches = JSON.parse(localStorage.getItem('user_previous_searches'));\n const _MAX_PREVIOUS_SEARCH_ITEMS = 6; \n \n if(_currentSearchKeyword && _currentSearchKeyword.trim().length > 0) {\n //Process to save search keyword into local stograde before submit search form\n GT.processSearchKeywordBeforeSubmit(_currentSearchKeyword.trim(), _userPreviousSearches, _MAX_PREVIOUS_SEARCH_ITEMS);\n }\n }\n }\n \n // Reset tab tags index when user input search keyword.\n resetTabTagsIndex();\n\n // Reset left filter bar\n _filterTagsTaxonomies = [];\n\n _searchKeyword = _currentSearchKeyword;\n\n __ths.setParameterInQueryString('q', _currentSearchKeyword);\n __ths.searchResultsByTaxonomies([], false, '', '.main-search-wrapper');\n \n setTimeout(e => {\n dataLayer.push({\n 'search_term': _searchKeyword,\n 'search_type': \"Site Search\",\n 'search_link': location.href,\n 'search_text': _searchKeyword,\n 'event': 'search_used'\n });\n }, 50)\n }\n });\n\n _searchboxInput.addEventListener('input', GT.debounce(function(){\n let _this = this;\n let _inputValue = _this.value;\n let _searchFormResetBtn = document.getElementById('searchResetBtn');\n if(_inputValue.length > 0) {\n _searchFormResetBtn.classList.add('active');\n } else {\n _searchFormResetBtn.classList.remove('active');\n }\n }, 500));\n }\n }\n\n function initLoadmoreButton() {\n let _loadmoreButton = document.getElementById('searchResultsLoadmoreBtn');\n if(_loadmoreButton) {\n _loadmoreButton.addEventListener('click', function(e) {\n e.preventDefault();\n let _this = this;\n let _loadmoreEndpoint = _this.getAttribute('data-endpoint') || '';\n __ths.loadMoreResultsByTag(_loadmoreEndpoint);\n });\n }\n }\n \n function updateResultsCount() {\n let _allResultsCount = document.querySelectorAll('.results-count__by--tag');\n [].forEach.call(_allResultsCount, function(_resultKey) {\n let _tabKey = _resultKey.getAttribute('tag-filter-name');\n let _tabItem = document.querySelector('.search-results-tab__item[tag-filter-name=\"' + _tabKey + '\"]');\n if(_tabItem) {\n _tabItem.setAttribute('total-tag-results', _resultKey.getAttribute('data-hitcount'));\n let _resultsHitCount = _tabItem.querySelector('.results-hit__count');\n if(_resultsHitCount) {\n _resultsHitCount.innerHTML = '(' + _resultKey.getAttribute('data-hitcount') + ')';\n } else {\n _resultsHitCount = '(' + _resultKey.getAttribute('data-hitcount') + ')';\n _tabItem.insertAdjacentHTML(\"beforeend\", _resultsHitCount);\n }\n }\n });\n }\n \n function resetTabTagsIndex() {\n _tabTagsIndex = [];\n __ths.setParameterInQueryString(\"page\", \"\", true);\n }\n\n __ths.setShowingNumber = function () {\n let resultCardNumber = document.querySelectorAll('.result-card').length || 0;\n document.querySelector('#totalResultShowing').innerHTML = resultCardNumber;\n }\n\n __ths.escapeQueryChars = function (url) {\n return url ? url\n .replace(/\\s/gi, '+')\n .replace(/\\%20/gi, '+')\n .replace(/\\%(3C|3E)/gi, function (match, dec) {\n return encodeURI('%') + dec;\n }) : url;\n };\n\n __ths.loadMoreResultsByTag = function (_loadmoreEndpoint) {\n \n let _currentTabItem = getCurrentTabItem();\n let _pageIndexByTags = parseInt(document.getElementById('CurrentPageIndex').value);\n let _currentPageIndex = 0;\n let _params = [];\n if(_currentTabItem) {\n if (_tabTagsIndex[_currentTabItem.getAttribute('tag-filter-name')])\n {\n _tabTagsIndex[_currentTabItem.getAttribute('tag-filter-name')] = _tabTagsIndex[_currentTabItem.getAttribute('tag-filter-name')] + 1;\n }\n else\n {\n _tabTagsIndex[_currentTabItem.getAttribute('tag-filter-name')] = 1;\n }\n\n _currentPageIndex = _tabTagsIndex[_currentTabItem.getAttribute('tag-filter-name')];\n _params['tags'] = _currentTabItem.getAttribute('tag-filter-name');\n } else {\n _currentPageIndex = _pageIndexByTags;\n }\n\n _params['CurrentPageIndex'] = _currentPageIndex;\n\n __ths.searchResultsByTaxonomies(_params, true, _loadmoreEndpoint);\n\n __ths.setParameterInQueryString(\"page\", _currentPageIndex);\n };\n\n __ths.ajaxCall = function (url, successCallback) {\n var contextRef = this;\n let __url = url;\n var xhttp = new XMLHttpRequest();\n xhttp.onreadystatechange = function () {\n if (this.readyState == 4) {\n if (this.response && this.status == 200) {\n successCallback(contextRef, this.response);\n } else {\n // isInited = false;\n }\n }\n };\n xhttp.open(\"GET\", __url, true);\n xhttp.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n xhttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhttp.send();\n }\n\n __ths.searchResultsByTaxonomies = function (_queryParams, _isAppendResults, _otherEndpoint, _replaceContainer) {\n let _ajaxUrl = '';\n if(_isAppendResults) {\n _ajaxUrl = queriesStringBuilder(_queryParams, _otherEndpoint, true);\n __ths.ajaxCall(_ajaxUrl, successCallback);\n return false;\n } else {\n _ajaxUrl = queriesStringBuilder(_queryParams);\n }\n\n function successCallback(contextRef, data) {\n __ths.appendResults(contextRef, data);\n }\n dataLayer.push({ 'event': 'global_search', 'eventAction': 'search', 'eventLabel': _ajaxUrl });\n window.location.href = _ajaxUrl;\n };\n\n function queriesStringBuilder(_params, _otherEndpoint, _isLoadmore) {\n\n if(!_params) _params = [];\n \n let _urlSearchParams = new URLSearchParams();\n\n let _sortingSelectBox = document.getElementById('select_sorting');\n let _searchSorting = '';\n if(_sortingSelectBox) {\n _searchSorting = _sortingSelectBox.value;\n }\n\n if(_searchSorting && _searchSorting.length > 0) {\n _params['Sort'] = _searchSorting;\n } else {\n _urlSearchParams.delete('Sort');\n }\n\n let _ajaxUrl = '';\n if(_isLoadmore) {\n if(_otherEndpoint && _otherEndpoint.length > 0) {\n _ajaxUrl = _otherEndpoint;\n _ajaxUrl += '&Query=' + encodeURIComponent(_searchKeyword);\n }\n } else {\n _ajaxUrl += '?q=' + encodeURIComponent(_searchKeyword);\n }\n \n let _queryParams = queryParams(_urlSearchParams, _params);\n if(_queryParams && _queryParams.length > 0) {\n _ajaxUrl += '&' + _queryParams;\n }\n\n return __ths.escapeQueryChars(_ajaxUrl);\n }\n\n __ths.replaceResults = function (data, _replaceContainer) {\n let _mainSearchResultsContainer = document.querySelector(_replaceContainer);\n if(_mainSearchResultsContainer) {\n _mainSearchResultsContainer.innerHTML = data;\n }\n GT.clampText();\n if (typeof GT !== \"undefined\" && GT.FormSelect) {\n GT.FormSelect($('.search-results__sort-select'));\n }\n\n // Update results count in tab item.\n updateResultsCount();\n \n setTimeout(function() {\n // Register events after ajax call\n initSearchboxInput();\n initClearSearchInput();\n horizontalTabHandle();\n searchFiltersHandle();\n clearFilters();\n registerSortEvt();\n initLoadmoreButton();\n shouldLoadMore();\n toggleFiltersForm();\n filterSelectToggle();\n showActiveFilters();\n toggleOverhiddenHTML();\n let _container = document.querySelector('.search-results-container');\n if(_container) scrollToPosition(_container);\n }, 100);\n }\n\n __ths.appendResults = function (contextRef, data) {\n let _searchResultsContainer = document.getElementById('searchResultList');\n _searchResultsContainer.insertAdjacentHTML(\"beforeend\", data);\n __ths.setShowingNumber();\n shouldLoadMore();\n GT.clampText();\n }\n\n function shouldLoadMore() {\n let _loadBtn = document.getElementById('searchResultsLoadmoreBtn');\n\n if(!_loadBtn) \n return;\n\n let _currentTabItem = getCurrentTabItem();\n let _pageIndexByTags = parseInt(document.getElementById('CurrentPageIndex').value);\n let totalItems = parseInt(document.getElementById('TotalItemsCount').value);\n \n if(_currentTabItem) {\n _pageIndexByTags = parseInt(_tabTagsIndex[_currentTabItem.getAttribute('tag-filter-name')]);\n totalItems = parseInt(_currentTabItem.getAttribute('total-tag-results'));\n }\n \n let _pageSize = parseInt(document.getElementById('PageSize').value);\n let maxPage = Math.ceil(totalItems / _pageSize);\n let loadMoreContainer = document.querySelector(\".load-more-container\")\n\n if (maxPage <= (_pageIndexByTags + 1)) {\n if(loadMoreContainer)\n loadMoreContainer.classList.add(\"hidden\");\n else\n _loadBtn.classList.add('hidden');\n\n } else {\n if(loadMoreContainer) {\n loadMoreContainer.classList.remove(\"hidden\");\n }\n else {\n _loadBtn.classList.remove('hidden');\n }\n \n if(_loadBtn.href)\n _loadBtn.href = location.href.replace(\"page=\" + _pageIndexByTags, \"page=\" + (_pageIndexByTags + 1));\n }\n\n\n document.querySelectorAll(\".search-results-main-wrapper a.result-card__heading\").forEach(item => {\n if(!item.dataset.initialized) {\n item.dataset.initialized = true;\n item.addEventListener(\"click\", e => {\n let searchTerm = document.querySelector(\"#mainSearchInput\")?.value || \"\",\n currentElm = e.currentTarget || e.target;\n dataLayer.push({\n 'search_term': searchTerm,\n 'search_type': \"Your Results\", //document.querySelector(\".search-results-tab__item--current\")?.innerText.replace(/ \\(+[0-9]+\\)/, \"\") || \"\",\n 'search_link': currentElm.href,\n 'search_text': currentElm.innerText,\n 'event': 'search_used'\n });\n })\n }\n })\n };\n};\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function () {\n GT.SearchResults();\n });\nGT.SecondaryNavbar = function($navbarWrapper) {\n $.each($navbarWrapper, function(index, element) {\n function applyNavigation(element) {\n var $ul = $(element).find('ul');\n // $ul.parent().removeClass('centered');\n if (isIE()) {\n $(element).parent().addClass('ie');\n calculateListIEWidth($ul, $(element).width());\n }\n $(element).parent().addClass('gt-secondary-nav-parent');\n\n let wrapperWidth = document.querySelector('.gt-secondary-nav-wrapper ul')?.offsetWidth || 0;\n if (GT.wWidth < wrapperWidth) {\n appendArrow($(element));\n } else {\n // $ul.parent().addClass('centered');\n removeArrow($(element));\n }\n }\n applyNavigation(element);\n\n GT.windowResizeFncList.secondaryNavbar = function() {\n applyNavigation(element);\n }\n\n if (isOfficePage()) {\n moveNavigationAccordingToBanner($(element));\n $(window).on('resize', function() {\n moveNavigationAccordingToBanner($(element));\n });\n }\n });\n\n\tfunction isRTL() {\n\t\treturn $('body').hasClass('RTL');\n\t} \n\n function appendArrow($navbar) {\n var $parent = $navbar.parent();\n \n let $rightArrow = $parent.find('.gt-secondary-nav-arrow.right'),\n $lefttArrow = $parent.find('.gt-secondary-nav-arrow.left');\n var ticking = false;\n var lastScrollLeft = 0;\n var $wrapper = $navbar.find('.gt-secondary-nav-wrapper');\n var rightInterval = undefined;\n var leftInterval = undefined;\n\n var interval = 100;\n var distance = 100;\n var isClicking = false;\n\n function doScrollRight(e) {\n // if (e.cancelable) {\n // e.preventDefault();\n // }\n if (!isClicking) {\n isClicking = true;\n if (!atRightEdge($wrapper)) {\n rightInterval = setInterval(function() {\n requestAnimationFrame(function(){\n $wrapper.animate( {'scrollLeft' : '+=' + distance}, 100)\n });\n }, interval);\n }\n }\n }\n\n function stopScrollRight(e) {\n if (e.cancelable) {\n e.preventDefault();\n }\n setTimeout(function() {\n isClicking = false;\n clearInterval(rightInterval);\n }, 200);\n }\n\n function doScrollLeft(e) {\n // if (e.cancelable) {\n // e.preventDefault();\n // }\n if (!isClicking) {\n isClicking = true;\n if (!atLeftEdge($wrapper)) {\n leftInterval = setInterval(function() {\n requestAnimationFrame(function(){\n $wrapper.animate( {'scrollLeft' : '-=' + distance}, 100)\n });\n }, interval);\n }\n }\n }\n\n function stopScrollLeft(e) {\n if (e.cancelable) {\n e.preventDefault();\n }\n setTimeout(function() {\n isClicking = false;\n clearInterval(leftInterval);\n }, 200);\n }\n\n function scrollingHandler(){\n if (!ticking) {\n window.requestAnimationFrame(function() {\n var currentScrollLeft = $wrapper.scrollLeft();\n if (lastScrollLeft < currentScrollLeft) {\n lastScrollLeft = currentScrollLeft;\n if (atRightEdge($wrapper)) {\n $rightArrow.hide();\n clearInterval(rightInterval);\n $lefttArrow.show();\n }\n } else if (lastScrollLeft >= currentScrollLeft) {\n lastScrollLeft = currentScrollLeft;\n if (atLeftEdge($wrapper)) {\n $lefttArrow.hide();\n clearInterval(leftInterval);\n $rightArrow.show();\n }\n }\n ticking = false;\n });\n ticking = true;\n }\n }\n\n scrollingHandler();\n if(!$navbar.data(\"initialized\")) {\n $navbar.data(\"initialized\", true);\n\n $rightArrow.on('mousedown touchstart', function(e) {\n doScrollRight(e);\n });\n $rightArrow.on('mouseup touchend', function(e) {\n stopScrollRight(e)\n });\n $lefttArrow.on('mousedown touchstart', function(e) {\n doScrollLeft(e)\n });\n $lefttArrow.on('mouseup touchend', function(e) {\n stopScrollLeft(e);\n });\n\n $wrapper.on('scroll', function(event) {\n scrollingHandler();\n });\n }\n }\n\n function removeArrow($navbar) {\n var $parent = $navbar.parent();\n var $rightArrow = $parent.find('.gt-secondary-nav-arrow.right');\n var $lefttArrow = $parent.find('.gt-secondary-nav-arrow.left');\n $rightArrow.hide();\n $lefttArrow.hide();\n }\n\n function isIE() {\n return /MSIE|Trident/.test(navigator.userAgent);\n }\n\n function isEdge() {\n return /Edge/.test(navigator.userAgent);\n }\n\n function isOfficePage() {\n return $('.office-page').length > 0;\n }\n\n function moveNavigationAccordingToBanner($el) {\n var $parent = $el.closest('.gt-secondary-nav-parent');\n var $bannerParent = $parent.prev('div');\n var $officeBanner = $bannerParent.find('.office-banner');\n if ($officeBanner.length > 0) {\n var officeBannerRect = $officeBanner[0].getBoundingClientRect();\n var $contactBox = $officeBanner.find('.content.container');\n if ($contactBox.length > 0) {\n var officeBannerContactRect = $contactBox[0].getBoundingClientRect();\n var overlapse = false;\n if (isIE() || isEdge()) {\n if (officeBannerContactRect.top + officeBannerContactRect.height > officeBannerRect.top + officeBannerRect.height) {\n var extra = (officeBannerContactRect.top + officeBannerContactRect.height) - (officeBannerRect.top + officeBannerRect.height);\n $parent.css('margin-top', (extra + 5) + 'px');\n overlapse = true;\n }\n } else {\n if (officeBannerContactRect.y + officeBannerContactRect.height > officeBannerRect.y + officeBannerRect.height) {\n var extra = (officeBannerContactRect.y + officeBannerContactRect.height) - (officeBannerRect.y + officeBannerRect.height);\n $parent.css('margin-top', (extra + 5) + 'px');\n overlapse = true;\n }\n }\n if (overlapse && isEditMode()) {\n var styleDom = $('');\n $('body').append(styleDom);\n }\n }\n }\n }\n\n function isEditMode() {\n return $('body').hasClass('epi-editmode');\n }\n\n function calculateListIEWidth($ul, elementWidth) {\n var $li = $ul.find('li');\n var width = 0;\n $.each($li, function(index, el) {\n width += $(el).outerWidth();\n });\n if (width > elementWidth)\n $ul.css('min-width', width + 'px');\n }\n\n function atRightEdge($el) {\n //need to plus 2 for galaxy s5\n if ( isRTL() ) {\n return $el.scrollLeft() === 0;\n } else {\n return $el.scrollLeft() + $el.innerWidth() + 2 >= $el[0].scrollWidth;\n }\n }\n\n function atLeftEdge($el) {\n if ( isRTL() ) {\n return -$el.scrollLeft() + $el.innerWidth() + 2 >= $el[0].scrollWidth;\n } else {\n return $el.scrollLeft() === 0;\n }\n }\n};\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n new GT.SecondaryNavbar($('.gt-secondary-nav'));\n });\nGT.selectList = {};\nGT.Select = function ($element, obj) {\n var doSelect = function (element) {\n var $target = $(element).find('select');\n $target.selectric({\n arrowButtonMarkup: '',\n expandToItemText: false,\n onInit: function () {\n setTimeout(function () {\n var $customSelects = $('.custom-select');\n\n $customSelects.map(function (index, el) {\n var $currentCustomEl = $(el);\n var $select = $currentCustomEl.find('select');\n var ariaLabel = $select.attr(\"data-arialabel\");\n $select.attr('tabindex', -1);\n var $selectricInput = $currentCustomEl.find('.selectric-input');\n $selectricInput.attr('tabindex', -1);\n $selectricInput.attr('readonly', true);\n $selectricInput.attr('type', \"hidden\");\n\n var $selectric = $currentCustomEl.find('.selectric');\n $selectric.attr(\"aria-expanded\", \"false\");\n $selectric.attr('tabindex', 0);\n $selectric.attr('aria-label', ariaLabel);\n $selectric.attr('aria-haspopup', \"listbox\");\n $selectric.attr('role', \"button\");\n\n var $selectricItems = $currentCustomEl.find('.selectric-items');\n $selectricItems.attr('tabindex', -1);\n $selectricItems.find(\"li\").keydown(function(e){\n if(e.keyCode == 13 || e.keyCode == 32) {\n e.preventDefault();\n let currentOptionElm = e.target,\n selectricBtn = currentOptionElm.parentElement.parentElement.parentElement.previousSibling;\n currentOptionElm.click();\n selectricBtn.setAttribute(\"aria-label\", currentOptionElm.innerText);\n selectricBtn.focus();\n }\n });\n\n $selectricItems.keydown(function(e){\n if(e.keyCode == 27) {\n GT.selectList[$selectric.attr('data-selectricname')].selectric(\"close\");\n }\n }) \n\n\n if($selectric.length && !$selectric.attr('data-selectricname')) {\n $selectric[0].addEventListener(\"keydown\", function(e){\n if(e.keyCode == 13 || e.keyCode == 40 || e.keyCode == 38 || e.keyCode == 32) {\n e.preventDefault();\n GT.selectList[e.target.dataset.selectricname].selectric(\"open\");\n if(e.keyCode == 40 || e.keyCode == 38) {\n setTimeout(function(){\n document.dispatchEvent(new KeyboardEvent('keypress',{'keyCode': e.keyCode}));\n }, 100)\n }\n } else if(e.keyCode == 27) {\n GT.selectList[e.target.dataset.selectricname].selectric(\"close\");\n }\n })\n $selectric.attr('data-selectricname', Math.random() * 10000);\n GT.selectList[$selectric.attr('data-selectricname')] = $select;\n }\n }); \n });\n },\n onOpen: function () { \n var _this = $(this);\n var $selectric = _this.parents('.selectric-wrapper').find('.selectric');\n $selectric.attr(\"aria-expanded\", \"true\");\n\n let dropdownElm = _this.parents('.selectric-wrapper').find('.selectric-scroll ul');\n dropdownElm.find(\"li\").each(function(elmIdx, liElm){\n liElm.setAttribute(\"id\", \"selectric_\" + elmIdx);\n })\n \n let liElm = dropdownElm.find(\"li\"),\n liSelectedElm = dropdownElm.find(\"li.selected\");\n\n dropdownElm.attr(\"role\", \"listbox\");\n dropdownElm.attr(\"aria-activedescendant\", liSelectedElm.attr(\"id\"));\n\n liElm.attr(\"role\", \"option\");\n liElm.attr(\"tabindex\", \"0\");\n\n liSelectedElm.attr(\"selected\", \"selected\");\n setTimeout(function() {\n liSelectedElm.focus();\n GT.listboxKeyboardHandle('.selectric-scroll ul');\n }, 50);\n },\n onClose: function () {\n var _this = $(this);\n var $selectric = _this.parents('.selectric-wrapper').find('.selectric');\n $selectric.attr(\"aria-expanded\", \"false\");\n $selectric.focus(); \n },\n onHighlight: function () {\n var _this = $(this).parent().parent();\n _this.find(\"input\").val(_this.find('.highlighted').html())\n },\n nativeOnMobile: false,\n disableOnMobile: false\n });\n };\n LazyEvent($element, doSelect, 200, null, \"lazy_DOMContentLoadedEvt__GTSelect\");\n};\n\nif(typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n GT.Select(document.querySelectorAll('.custom-select'));\n });\n/**\n * This function is to update the color of a select dropdown to that of its **disabled & selected** option\n * Once the select dropdown's value has been changed, the binding will be removed\n *\n * @param {*} $container\n */\nGT.SelectPlaceholder = function ($container) {\n var SELECTORS = {\n DROPDOWN: 'select',\n DISABLED_OPTION: ':disabled',\n SELECTED_OPTION: ':selected'\n };\n var COLOR = 'color';\n var CHANGE_EVENT = 'change';\n $container.find(SELECTORS.DROPDOWN).each(function (_index, dropdown) {\n var $dropdown = $(dropdown);\n var $selected = $dropdown.find(SELECTORS.SELECTED_OPTION);\n if ($selected.is(SELECTORS.DISABLED_OPTION)) {\n $dropdown.css(COLOR, $selected.css(COLOR));\n }\n\n var removeColorFunc = function () {\n $dropdown.css(COLOR, '');\n $dropdown.off(CHANGE_EVENT, removeColorFunc);\n };\n $dropdown.on(CHANGE_EVENT, removeColorFunc);\n });\n};\n\nGT.ServiceIndustrySubMenu = function () {\n var MENU_ITEM_SELECTOR = \".service-industry-sub-menu_item\";\n var ACCORDION_TITLE_CLASS = 'sub-menu-accordion_title';\n var ACCORDION_TITLE_SELECTOR = '.' + ACCORDION_TITLE_CLASS;\n var ACCORDION_SELECTOR = '.sub-menu-accordion';\n var DATA_INDEX_KEY = 'menu-item-index';\n var COLLAPSING_ACCORDION_CLASS = 'collapsing';\n\n\n function balanceHeight() {\n let subMenus = document.querySelectorAll(\".service-industry-sub-menu_desktop\");\n [].forEach.call(subMenus, function(subMenu) {\n GT.BalanceHeight(subMenu); \n });\n }\n \n balanceHeight();\n\n let accordionTitles = document.querySelectorAll(ACCORDION_TITLE_SELECTOR);\n [].forEach.call(accordionTitles, function(accordionTitle) {\n accordionTitle.addEventListener('click', function(e) {\n let _parent = e.target.closest(MENU_ITEM_SELECTOR);\n if(!_parent) return;\n\n let _subMenuAccordion = _parent.querySelector(ACCORDION_SELECTOR);\n if(_subMenuAccordion) {\n _subMenuAccordion.classList.toggle(COLLAPSING_ACCORDION_CLASS);\n }\n });\n });\n\n GT.windowResizeFncList.blanceHeightServiceIndustrySubMenu = function() {\n if(GT.wWidth > 960)\n balanceHeight();\n }\n};\n\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n GT.ServiceIndustrySubMenu();\n });\n\nGT.ShowMore = function() {\n document.querySelectorAll(\"[data-fulltext] .showmore\").forEach(elm => {\n if(!elm.dataset.initialized) {\n elm.dataset.initialized = true;\n elm.addEventListener(\"click\", e => {\n let parentElm = e.target.closest(\"[data-fulltext]\");\n parentElm.innerHTML = parentElm.dataset.fulltext;\n })\n }\n })\n}\n\nGT.domContentLoadedFncList.push(function(){\n GT.ShowMore();\n});\nGT.SideNav = function () {\n secondaryNav();\n function secondaryNav($elem) {\n var navElements = $('.secondary-nav > li > .sectionLink');\n \n $('.highlight').parents('li').eq(1).children().addClass('highlight');\n\n navElements.click(function () {\n if ($(this).hasClass('open')) {\n $('.secondary-nav .sectionLink').removeClass('open').attr(\"aria-expanded\", \"false\");\n } else {\n $('.secondary-nav .sectionLink').removeClass('open').attr(\"aria-expanded\", \"false\");\n $(this).addClass('open').attr(\"aria-expanded\", \"true\");\n }\n return false;\n });\n };\n};\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n GT.SideNav = new GT.SideNav();\n });\nfunction GTSkipLink(){\n Array.prototype.slice.call(document.querySelectorAll(\".shortcuts a\")).forEach(function(shortcut){\n shortcut.addEventListener(\"click\", function(e){\n e.preventDefault();\n let ahref = \"#\" + e.target.href.split(\"#\")[1],\n target = document.querySelector(ahref);\n\n if(ahref == \"#skip-nav\"){\n let insightToggleBtn = document.querySelector(\".insight-menu__toggle\");\n const firstFocusableElement = target.querySelector(\"ul.level-1 li\")?.querySelector(\"a, button\");\n if(insightToggleBtn) {\n insightToggleBtn.click();\n setTimeout(function(){\n firstFocusableElement?.focus();\n }, 500)\n } else\n firstFocusableElement?.focus();\n } else if(ahref == \"#skip-cookie\") {\n let lstElm = GT.getListFocusableElms(document.querySelector(\".cookie-block\"));\n if(lstElm.length) {\n lstElm[0].focus();\n }\n } else {\n GT.getFirstFocusableVisible()?.focus();\n }\n })\n })\n}\n\nGT.domContentLoadedFncList.push(function(){\n GTSkipLink();\n});\n\nGT.SocialShareLine = function ($element, obj) {\n var scriptLoaded = false;\n function loadLineScript() {\n scriptLoaded = true;\n var script = document.createElement('script');\n script.src = \"https://d.line-scdn.net/r/web/social-plugin/js/thirdparty/loader.min.js\";\n document.head.appendChild(script);\n }\n $element.each(function (index, element) {\n $element = $(element);\n var url = $element.attr(\"data-url\");\n var lang = $element.attr(\"data-lang\");\n if (!url.length) {\n $element.attr(\"data-url\", location.href);\n }\n });\n if (!scriptLoaded) {\n loadLineScript();\n }\n};\n/** Make the targeted element to appear having the same width and height.\n * \n * Note:\n * The targeted element will not be made a square (or circle) immediately.\n * There will be a slight delay due to script loading.\n * There is no perfect CSS solution that will guarantee a square / circle for all situations.\n * This solution is glitchy but at least it will have a consistent result.\n * Also you can't test this by changing the content in the inspection mode.\n */ \nGT.Square = function ($elem) {\n $elem.each(function (_index, item) {\n var $item = $(item);\n var $word = $(item).children();\n\n // wrap each word with a span tag then calculate diameter\n $word.each(function(){\n var text = $(this).text().split(' ');\n\n for( var i = 0, len = text.length; i < len; i++ ) {\n text[i] = '' + text[i] + '';\n }\n\n $.when($(this).html(text.join(' '))).then(function(item) {\n var max = Math.max($item.outerHeight(), $item.outerWidth());\n $item.css('width', max).css('height', max);\n });\n });\n\n });\n};\n\nvar GTStickyButton = (function(container, button, onlyTriggerOnMobile){\n let containerElm = document.querySelector(container),\n buttonElm = containerElm.querySelector(button),\n isAnimated = false,\n buttonElmOffsetTop;\n \n if(!buttonElm)\n return;\n\n function doSticky(){\n if(onlyTriggerOnMobile && GT.wWidth >= 960) {\n return;\n }\n \n if(!buttonElmOffsetTop) {\n buttonElmOffsetTop = buttonElm.offsetTop;\n }\n \n if (window.pageYOffset > buttonElmOffsetTop) {\n if(!isAnimated) {\n isAnimated = true;\n containerElm.classList.add(\"stick-btn\");\n buttonElm.classList.add(\"need-stick\");\n setTimeout(function(){\n buttonElm.classList.add(\"need-stick--animate\");\n }, 50)\n }\n } else {\n isAnimated = false;\n containerElm.classList.remove(\"stick-btn\");\n buttonElm.classList.remove(\"need-stick\");\n buttonElm.classList.remove(\"need-stick--animate\");\n }\n }\n\n window.addEventListener(\"resize\", GT.debounce(function(){\n delete GT.listFunctionsTriggerInScrollEvent.GTStickyButton;\n GT.listFunctionsTriggerInScrollEvent.GTStickyButton = doSticky;\n }, 500))\n\n GT.listFunctionsTriggerInScrollEvent.GTStickyButton = doSticky;\n})\n\nif (typeof isV1GT == \"undefined\") {\n GT.domContentLoadedFncList.push(function(){\n new GTStickyButton(\".event-countdown__block\", \".register-event__btn\", true);\n });\n}\n\nGT.StickyContact = function () {\n let __stickyContactBlock = document.querySelector('.sticky-contact-block');\n // Stop if there is no sticky contact block\n if (!__stickyContactBlock) {\n return;\n }\n\n // Function that handles showing & closing sticky contact block\n var handleSticky = function () {\n // Show first (enabled) sticky contact block if having scrolled past 50% viewport\n var prevPost = document.documentElement.scrollTop || document.body.scrollTop;\n \n var scrollHandler = function () {\n let currentPos = document.documentElement.scrollTop || document.body.scrollTop;\n if(prevPost > currentPos) {\n __stickyContactBlock.classList.add(\"show\");\n } else {\n __stickyContactBlock.classList.remove(\"show\");\n }\n prevPost = currentPos;\n };\n\n GT.listFunctionsTriggerInScrollEvent.handleStickyContact = scrollHandler; \n }\n \n // Stop if it is not mobile (being mobile means at least one dimension < tablet min width)\n // Do not show on landscape mode in mobile\n var TABLET_MIN_WIDTH = 768;\n // var screenWidth = Math.min($(window).width(), $(window).height());\n // var isMobile = screenWidth < TABLET_MIN_WIDTH;\n if(GT.wWidth < TABLET_MIN_WIDTH && GT.wWidth < GT.wHeight)\n handleSticky();\n\n GT.windowResizeFncList[\"resizeEvt__GTStickyContact\"] = function(){\n if(GT.wWidth < TABLET_MIN_WIDTH && GT.wWidth < GT.wHeight)\n handleSticky();\n }\n};\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n GT.StickyContact();\n });\n'use strict';\nGT.Swiper = function($element, obj) {\n var current = this;\n if (typeof obj.settings === 'undefined') {\n obj.settings = {};\n }\n // SETTINGS\n current.settings = $.extend({}, {\n colNumber: 'number-of-columns',\n spaceBetween: 32,\n swiperPagination: '.swiper-pagination',\n type: \"default\",\n a11y: true\n }, obj.settings);\n\n current.swiper = [];\n current.getSwiperObj = getSwiperObj;\n // SEQUENCE ANIMATION IF CONTAINER IS SET\n $element.each(function(index, element) {\n (function(current, index, element) {\n //Apply lazyloading if it is home page fcb slider\n if ($(element).hasClass('fcb__slider') && $('.home-page-container').length > 0 && $(window).width() < 960) {\n LazyEvent($(element), doSwiper, null, null, \"lazy_DOMContentLoadedEvt__GTGlide_\" + index);\n return;\n }\n doSwiper(element);\n })(current, index, element);\n });\n\n function doSwiper(element) {\n setTimeout(function() {\n var $me = $(element);\n var $slidesContainer = $me.find('.swiper-wrapper');\n var $slides = $me.find('.swiper-slide');\n if ($slides.length == 1) {\n $slidesContainer.addClass(\"disabled\");\n $me.find('.swiper-pagination').remove();\n }\n $me.addClass('items-' + $slides.length);\n\n var numberOfColumns = $me.data(current.settings.colNumber);\n var originType = current.settings.type;\n if (current.settings.type === 'infinite_fcb' && $slides.length == 3) {\n current.settings.type = 'infinite_fcb_for3desktop';\n } \n else if(current.settings.type === 'infinite_fcb' && $slides.length == 4){\n current.settings.type = 'infinite_fcb_for4';\n }\n else if(current.settings.type === 'infinite_fcb' && $slides.length < 9){\n if (check3ThItems()) $me.addClass('wide');\n for(; current.settings.type === 'infinite_fcb' && $slides.length < 9;){\n $slides.clone().appendTo($slidesContainer);\n $slides = $me.find('.swiper-slide');\n }\n }\n\n if (current.settings.type === 'infinite_reb' && $slides.length <= 3) {\n $me.addClass('related-experts-slider--centered');\n }\n\n var swiperObj = current.getSwiperObj(current.settings.type, numberOfColumns, $slides.length);\n swiperObj.pagination = $me.find(\".swiper-pagination\");\n var swiperInstance = null;\n if (current.settings.type == 'mobile-only-slider' || current.settings.type == 'small-mobile-only-slider') {\n hadleResize_ExpertBlock(current, $me, swiperInstance, numberOfColumns, current.settings.type);\n } else {\n swiperInstance = $me.swiper(swiperObj);\n if (swiperInstance.slides.length === 3 && current.settings.type != 'infinite_fcb_for3desktop' && current.settings.type != 'mobile-only-slider' && current.settings.type != 'small-mobile-only-slider') {\n handleTouchControlEnableDisable(swiperInstance);\n }\n if (current.settings.type == 'infinite_fcb_for4') {\n handleResize_FCB_for4(current, $me, swiperInstance, numberOfColumns, $slides.length);\n }\n if (current.settings.type == 'infinite_fcb_for3desktop') {\n handleResize_FCB(current, $me, swiperInstance, numberOfColumns);\n }\n if (current.settings.type == 'infinite_reb') {\n handleLoop_REB(current, $me, swiperInstance, numberOfColumns, $slides.length, $element.parent());\n }\n }\n if (current.settings.type === 'infinite_fcb_for3desktop' || current.settings.type === 'infinite_fcb' || current.settings.type === 'infinite_fcb_for4') {\n new GT.LazyBackgrounds($('.js-lazy-bg'), { settings: { safeDistance: 500 } });\n }\n current.swiper.push(swiperInstance);\n if (originType === 'infinite_fcb') {\n handleTabIndex($me, $slides.length, swiperInstance);\n }\n if (originType === 'large_promo_slider' || originType === 'dotted-pagination') {\n handleTabIndex($me, $slides.length, swiperInstance);\n }\n $slides.each(function(){\n GT.clampArticleBlock($(this));\n });\n }, 100);\n }\n};\n\nfunction setTabIndex(slider, slideLength) {\n function enableTabIndex(element) {\n var aTags = element.find('a');\n aTags.attr('tabindex', 0);\n }\n\n function disableTabIndex(element) {\n var aTags = element.find('a');\n aTags.attr('tabindex', -1);\n }\n\n var resolutionArray = [{ max: 10000, min: 1278, items: 5 }, { max: 1277, min: 1200, items: 4 }, { max: 1199, min: 769, items: 2 }];\n var currentWidth = $(window).width();\n var loop = true;\n for (var i = 0; i < resolutionArray.length; i++) {\n var reso = resolutionArray[i];\n if (currentWidth >= reso.min && currentWidth <= reso.max) {\n loop = false;\n if (slideLength >= reso.items) {\n loop = true;\n break;\n }\n }\n }\n\n var itemPerView = 5;\n var swiperSlides = slider.find('.swiper-slide');\n if (swiperSlides) {\n var indexCount = 0;\n if (!check3ThItems()){\n itemPerView = 3\n }else if (currentWidth >= 2100 && currentWidth <= 2999){\n itemPerView = 7\n }else if (currentWidth >= 3000){\n itemPerView = 9;\n }\n var numberOfColumns = parseInt(slider.attr(\"data-number-of-columns\"));\n var count = 0;\n swiperSlides.each(function () {\n var _this = $(this);\n if ($(this).attr(\"clamp\") == undefined){\n clampSwiper($(this));\n }\n \n if (currentWidth < 960 || (slideLength <= 4 && loop)) {\n if ($(this).hasClass(\"swiper-slide-visible\")) {\n enableTabIndex($(this));\n } else {\n disableTabIndex($(this));\n }\n } else {\n if (slideLength > 4) {\n if ($(this).hasClass(\"swiper-slide-visible\")) {\n if (itemPerView == 9 || itemPerView == 3) {\n enableTabIndex($(this));\n } else {\n if (!$(this).hasClass(\"swiper-slide-active\") && indexCount < itemPerView) {\n if (itemPerView == 5 && !$(this).hasClass(\"swiper-slide-next\")) {\n enableTabIndex($(this));\n indexCount = indexCount + 1;\n } else if (itemPerView == 7) {\n enableTabIndex($(this));\n indexCount = indexCount + 1;\n } else {\n disableTabIndex($(this));\n }\n } else {\n disableTabIndex($(this));\n }\n }\n } else {\n disableTabIndex($(this));\n }\n } else {\n if ($(this).hasClass(\"swiper-slide-active\")) {\n enableTabIndex($(this));\n } else {\n disableTabIndex($(this));\n }\n }\n }\n if (numberOfColumns > 0 && count < numberOfColumns) {\n enableTabIndex($(this));\n } else if (numberOfColumns == 0 || count >= numberOfColumns) {\n disableTabIndex($(this));\n }\n count++;\n })\n }\n}\n\nfunction check3ThItems(){\n var _iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n var _iPhone = /iPhone/.test(navigator.userAgent) && !window.MSStream;\n var _isMobile = /Mobi/.test(navigator.userAgent) && !window.MSStream;\n var min3th = 960;\n var max3th = 1299;\n var wWidth = GT.wWidth;\n\n if (!_iOS || !_iPhone || !_isMobile){\n min3th += 17;\n max3th += 17;\n }\n if (wWidth < min3th || wWidth > max3th)\n return true;\n else \n return false;\n}\n\nfunction clampSwiper(element){\n var htmlTitle = element.find('.title').attr(\"data-clamp\");\n element.find('.title').prop('innerHTML', htmlTitle);\n var htmlText = element.find('.text').attr(\"data-clamp\");\n element.find('.text').prop('innerHTML', htmlText);\n\n GT.clampArticleBlock(element);\n}\n\nfunction handleTabIndex(slider, slideLength, swiperInstance){\n var windowWidth = $(window).width();\n $(window).resize(function () {\n if ($(window).width() != windowWidth) {\n var swiperSlides = slider.find('.swiper-slide');\n swiperSlides.removeAttr(\"clamp\");\n swiperSlides.each(function () {\n clampSwiper($(this));\n });\n\n if (slideLength > 4) {\n if (check3ThItems()) \n slider.addClass('wide');\n else\n slider.removeClass('wide');\n swiperInstance.on('progress', function () {\n setTabIndex(slider, slideLength);\n });\n } else {\n setTabIndex(slider, slideLength);\n }\n windowWidth = $(window).width();\n }\n });\n\n slider.find(\".slider__prev\").on('click', function () {\n setTabIndex(slider, slideLength);\n });\n slider.find(\".slider__next\").on('click', function () {\n setTabIndex(slider, slideLength);\n });\n slider.find(\".slider__prev\").keyup(function (event) {\n if (event.keyCode === 13) {\n setTabIndex(slider, slideLength);\n }\n });\n slider.find(\".slider__next\").keyup(function (event) {\n if (event.keyCode === 13) {\n setTabIndex(slider, slideLength);\n }\n });\n setTabIndex(slider, slideLength);\n}\n\nfunction handleResize_FCB_for4(current, slider, swiperInstance, numberOfColumns, slideLength) {\n var windowWidth = $(window).width();\n $(window).resize(function() {\n if ($(window).width() != windowWidth) {\n windowWidth = $(window).width();\n handleResize();\n }\n });\n\n function handleResize() {\n var resolutionArray = [{ max: 10000, min: 1278, items: 5 }, { max: 1277, min: 1200, items: 4 }, { max: 1199, min: 769, items: 2 }];\n var desktopstarts = 959;\n var swiperObj = undefined;\n if (GT.wWidth <= desktopstarts) {\n swiperObj = current.getSwiperObj('infinite_fcb', numberOfColumns);\n } else {\n swiperObj = current.getSwiperObj('infinite_fcb_for3desktop', numberOfColumns);\n }\n swiperInstance.destroy(true, true);\n var currentWidth = GT.wWidth;\n var loop = true;\n for (var i = 0; i < resolutionArray.length; i++) {\n var reso = resolutionArray[i];\n if (currentWidth >= reso.min && currentWidth <= reso.max) {\n loop = false;\n if (slideLength >= reso.items) {\n loop = true;\n break;\n }\n }\n }\n swiperObj.loop = loop;\n if (!loop) {\n if (currentWidth >= 1500) {\n var currentSliderWidth = 0;\n var $slides = slider.find('.swiper-slide');\n $.each($slides, function (index, el) {\n currentSliderWidth += $(el).outerWidth() + 32;\n });\n currentSliderWidth = currentSliderWidth - 32;\n var containerWidth = slider.closest('.container').outerWidth();\n var left = (currentSliderWidth - containerWidth) / 2;\n if ($('body').hasClass('RTL')) {\n slider.css('right', '-' + left + 'px');\n } else {\n slider.css('left', '-' + left + 'px');\n }\n }\n slider.find('.slider__prev, .slider__next').hide();\n swiperObj.slidesPerView = slideLength;\n } else {\n swiperObj.loopedSlides = slideLength;\n slider.find('.slider__prev, .slider__next').show();\n }\n swiperInstance = slider.swiper(swiperObj);\n }\n handleResize();\n};\n\nfunction handleResize_FCB(current, slider, swiperInstance, numberOfColumns) {\n var desktopstarts = 959;\n $(window).resize(function() {\n handleResize();\n });\n\n function handleResize() {\n swiperInstance.destroy(true, true);\n if (GT.wWidth <= desktopstarts) {\n swiperInstance = slider.swiper(current.getSwiperObj('infinite_fcb', numberOfColumns));\n } else {\n swiperInstance = slider.swiper(current.getSwiperObj('infinite_fcb_for3desktop', numberOfColumns));\n } \n }\n handleResize();\n};\n\n\nfunction hadleResize_ExpertBlock(current, slider, swiperInstance, numberOfColumns, type) {\n var breakpoint = window.matchMedia('(min-width:768px)');\n if (type == 'small-mobile-only-slider') {\n breakpoint = window.matchMedia('(min-width:480px)');\n }\n var mySwiper = swiperInstance;\n var breakpointChecker = function() {\n if (breakpoint.matches) {\n if (mySwiper !== undefined) {\n try {\n mySwiper.destroy(true, true);\n } catch (exception) {}\n }\n return;\n } else {\n return enableSwiper();\n }\n };\n var enableSwiper = function() {\n mySwiper = slider.swiper(current.getSwiperObj(type, numberOfColumns));\n };\n\n breakpoint.addListener(breakpointChecker);\n breakpointChecker();\n};\n\nfunction handleTouchControlEnableDisable(swiper) {\n $(window).resize(function() {\n enableDisableTouch(swiper);\n });\n enableDisableTouch(swiper);\n\n function enableDisableTouch(swiper) {\n try {\n var ww = GT.wWidth;\n if (ww <= 959) {\n swiper.enableTouchControl();\n } else {\n swiper.disableTouchControl();\n }\n } catch (err) {\n\n }\n }\n};\n\n\nfunction handleLoop_REB(current, slider, swiperInstance, numberOfColumns, numberOfItems, sliderWrapper) {\n var resolutionThreshold = [{\n screenSize: 1440,\n rebSize: 372,\n items: 3\n },\n {\n screenSize: 1024,\n rebSize: 372,\n items: 2\n },\n {\n screenSize: 872,\n rebSize: 320,\n items: 2\n },\n {\n screenSize: 767,\n rebSize: 320,\n items: 1\n },\n {\n screenSize: 479,\n rebSize: 300,\n items: 1\n },\n {\n screenSize: 320,\n rebSize: 250,\n items: 1\n }\n ];\n\n function getRebWidth(screenWidth) {\n var rebSize = 372;\n for (var i = 0; i < resolutionThreshold.length; i++) {\n if (screenWidth <= resolutionThreshold[i].screenSize) {\n rebSize = resolutionThreshold[i].rebSize;\n }\n }\n return rebSize;\n }\n\n function getRebItemCount(screenWidth, numberOfItems) {\n var rebItemCount = numberOfItems;\n for (var i = 0; i < resolutionThreshold.length; i++) {\n if (screenWidth <= resolutionThreshold[i].screenSize) {\n rebItemCount = resolutionThreshold[i].items;\n }\n }\n if (rebItemCount === 0) rebItemCount = numberOfItems;\n return rebItemCount;\n }\n var desktopstarts = 1440;\n var tabletstarts = 768;\n var tabletMax = 800;\n var phoneStarts = 479;\n var isSwipeEnabled = false;\n\n\n var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n var windowWidth = $(window).width();\n\n window.addEventListener(\"resize\", function() {\n if ($(window).width() != windowWidth) {\n\n // Update the window width for next time\n windowWidth = $(window).width();\n\n // Do stuff here\n handleResize();\n\n }\n }, false);\n\n if (!iOS) {\n window.addEventListener(\"resize\",\n function() {\n handleResize();\n },\n false);\n }\n\n function handleResize() {\n swiperInstance.destroy(true, true);\n var $wrapper = slider.closest('.related-experts-wrapper');\n var ua = window.navigator.userAgent;\n var isIE = /MSIE|Trident/.test(ua);\n\n var isServiceIndustryNarrowRelatedExpertBlock = $wrapper.closest('.relatedexpertsblock.Narrow').length > 0;\n function isNarrowWidthPage($wrapper) {\n if ($wrapper.closest('.t2-content').length > 0) return true;\n var $closestT3 = $wrapper.closest('.t3-content');\n if ($closestT3.length > 0) return !$closestT3.hasClass('t3-content--wide');\n if ($wrapper.closest('.related-experts-on-page').length > 0) return true;\n if (isServiceIndustryNarrowRelatedExpertBlock) return true;\n return false;\n }\n var isNarrow = isNarrowWidthPage($wrapper);\n if (isIE && !isNarrow) {\n var $blockWrapper = $wrapper.closest('.related-experts-block');\n $blockWrapper.css('padding-left', '0px');\n $blockWrapper.css('padding-right', '0px');\n }\n if (isIE && isNarrow && numberOfItems === 2) {\n slider.css(\"margin\", \"0 -150px\");\n }\n var screenWidth = GT.wWidth;\n var sliderWidth = $wrapper.width();\n var currentWidth = getRebWidth(screenWidth);\n var maximumItemInAWindow = (isNarrow ? sliderWidth : screenWidth) / currentWidth;\n isSwipeEnabled = numberOfItems > maximumItemInAWindow;\n var numberOfDisplayItem = getRebItemCount(screenWidth, numberOfItems);\n\n slider.find(\".slider__prev-new\").on('click', function (e) {\n e.preventDefault();\n swiperInstance.slidePrev();\n });\n slider.find(\".slider__next-new\").on('click', function (e) {\n e.preventDefault();\n swiperInstance.slideNext();\n });\n slider.find(\".slider__prev-new\").keyup(function (event) {\n if (event.keyCode === 13) {\n swiperInstance.slidePrev();\n }\n });\n slider.find(\".slider__next-new\").keyup(function (event) {\n if (event.keyCode === 13) {\n swiperInstance.slideNext();\n }\n });\n\n if (!isSwipeEnabled) {\n slider.find('.swiper-wrapper').addClass(\"disabled\");\n slider.find('.slider__prev').css({ \"display\": \"none\" });\n slider.find('.slider__next').css({ \"display\": \"none\" });\n slider.find('.slider__prev-new').hide();\n slider.find('.slider__next-new').hide();\n slider.find('.swiper-pagination').css({ \"display\": \"none\" });\n } else {\n slider.find('.swiper-wrapper').removeClass(\"disabled\");\n slider.find('.slider__prev').css({ \"display\": \"inline-block\" });\n slider.find('.slider__next').css({ \"display\": \"inline-block\" });\n slider.find('.slider__prev-new').removeAttr(\"style\");\n slider.find('.slider__next-new').removeAttr(\"style\");\n slider.find('.swiper-pagination').css({ \"display\": \"block\" });\n }\n var spaceBetween = isServiceIndustryNarrowRelatedExpertBlock ? 32 : 30;\n if (screenWidth >= desktopstarts && numberOfItems === 2) {\n spaceBetween = 170;\n swiperInstance = slider.swiper($.extend({},\n current.getSwiperObj('infinite_reb', numberOfColumns, numberOfItems, isSwipeEnabled), { loop: isSwipeEnabled, spaceBetween: spaceBetween }));\n return;\n }\n if (screenWidth >= 768 && screenWidth <= 1119 && numberOfItems >= 3) {\n swiperInstance = slider.swiper($.extend({},\n current.getSwiperObj('infinite_reb', numberOfColumns, numberOfItems, isSwipeEnabled), { loop: isSwipeEnabled, spaceBetween: spaceBetween }));\n return;\n }\n if (screenWidth >= 1119 && screenWidth <= 1200 && numberOfItems >= 3) {\n swiperInstance = slider.swiper($.extend({},\n current.getSwiperObj('infinite_reb', numberOfColumns, numberOfItems, isSwipeEnabled), { loop: isSwipeEnabled, spaceBetween: spaceBetween }));\n return;\n }\n if (screenWidth >= 1861 && screenWidth <= 1877 && numberOfItems >= 3) {\n swiperInstance = slider.swiper($.extend({},\n current.getSwiperObj('infinite_reb', numberOfColumns, numberOfItems, isSwipeEnabled), { loop: isSwipeEnabled, spaceBetween: spaceBetween }));\n return;\n }\n if (screenWidth > 1877 && numberOfItems >= 3) {\n swiperInstance = slider.swiper($.extend({},\n current.getSwiperObj('infinite_reb', numberOfColumns, numberOfItems, isSwipeEnabled), { loop: isSwipeEnabled, spaceBetween: spaceBetween }));\n return;\n }\n if (isSwipeEnabled && !isServiceIndustryNarrowRelatedExpertBlock) {\n spaceBetween = (screenWidth - (currentWidth * numberOfDisplayItem)) / (numberOfDisplayItem);\n if (spaceBetween > 0) {\n swiperInstance = slider.swiper($.extend({},\n current.getSwiperObj('infinite_reb', numberOfColumns, numberOfItems, isSwipeEnabled), { loop: isSwipeEnabled, spaceBetween: spaceBetween }));\n return;\n }\n }\n swiperInstance = slider.swiper($.extend({}, current.getSwiperObj('infinite_reb', numberOfColumns, numberOfItems, isSwipeEnabled), { loop: isSwipeEnabled }));\n return;\n }\n handleResize();\n}\n\nfunction getSwiperObj(type, numberOfColumns, numberOfItems, isSwipeEnabled) {\n var current = this;\n var defaultSettings = {\n a11y: true,\n keyboardControl: true,\n slidesPerView: numberOfColumns || 3,\n spaceBetween: current.settings.spaceBetween,\n nextButton: '.slider__next',\n prevButton: '.slider__prev',\n preventClicks: false\n };\n switch (type) {\n case \"infinite_reb\":\n var infinite_rebSettings = {\n a11y: true,\n keyboardControl: true,\n slidesPerView: numberOfColumns || 3,\n spaceBetween: current.settings.spaceBetween,\n preventClicks: false\n };\n if (numberOfItems < 3) {\n return $.extend({}, infinite_rebSettings, {\n slidesPerView: 'auto',\n loop: !(numberOfItems && numberOfItems <= 3),\n centeredSlides: true,\n resistance: true,\n resistanceRation: 0,\n breakpoints: {\n 1024: {\n slidesPerView: 2,\n initialSlide: 0\n },\n 959: {\n slidesPerView: 2,\n initialSlide: 0\n },\n 767: {\n slidesPerView: 2,\n centeredSlides: true,\n resistanceRatio: 0.85,\n initialSlide: 0\n },\n 671: {\n slidesPerView: 1,\n centeredSlides: true,\n resistanceRatio: 0.85,\n initialSlide: 0\n },\n }\n });\n } else {\n return $.extend({}, infinite_rebSettings, {\n slidesPerView: 'auto',\n loop: (numberOfItems && numberOfItems > 3),\n centeredSlides: true,\n resistance: true,\n resistanceRation: 0,\n breakpoints: {\n 959: {\n slidesPerView: 2,\n initialSlide: 0\n },\n 767: {\n slidesPerView: 1,\n centeredSlides: false,\n resistanceRatio: 0.85,\n initialSlide: 0\n }\n }\n });\n }\n case \"infinite_fcb\":\n var breakpoints = {\n 479: {\n slidesPerView: 1,\n initialSlide: 0\n },\n 959: {\n slidesPerView: 2,\n initialSlide: 0\n }\n };\n\n if (check3ThItems()){\n breakpoints = $.extend({}, breakpoints, {\n 1316: {\n slidesPerView: 3,\n initialSlide: 0\n }\n });\n \n }else{\n breakpoints = $.extend({}, breakpoints, {\n 1299: {\n slidesPerView: 3,\n initialSlide: 0\n }\n })\n }\n \n return $.extend({}, defaultSettings, {\n slidesPerView: 9,\n loop: true,\n watchSlidesVisibility: true,\n breakpoints: breakpoints\n });\n \n case \"infinite_fcb_for3desktop\":\n return $.extend({}, defaultSettings, {\n slidesPerView: 3,\n watchSlidesVisibility: true,\n loop: false\n });\n case \"infinite\":\n return $.extend({}, defaultSettings, {\n slidesPerView: numberOfColumns || 1,\n loop: true,\n loopAdditionalSlides: 1,\n });\n case \"next_article_slide\":\n return $.extend({}, defaultSettings, {\n slidesPerView: numberOfColumns || 1,\n loop: true,\n loopAdditionalSlides: 1,\n pagination: current.settings.swiperPagination,\n paginationClickable: true,\n paginationType: 'bullets',\n nextButton: false,\n prevButton: false,\n breakpoints: {\n 479: {\n spaceBetween: 0,\n paginationClickable: false\n },\n 767: {\n spaceBetween: 0,\n paginationClickable: false\n }\n }\n\n });\n case \"wide_carousel_slider\":\n return $.extend({}, defaultSettings, {\n slidesPerView: numberOfColumns || 1,\n loop: true,\n loopAdditionalSlides: 1,\n nextButton: '.slider__next',\n prevButton: '.slider__prev',\n breakpoints: {\n 479: {\n spaceBetween: 0\n },\n 767: {\n spaceBetween: 0\n }\n }\n });\n case \"single_slide\":\n return $.extend({}, defaultSettings, {\n slidesPerView: numberOfColumns || 1,\n loop: true,\n loopAdditionalSlides: 1,\n pagination: current.settings.swiperPagination,\n paginationClickable: true,\n paginationType: 'bullets',\n resistance: true,\n resistanceRation: 0,\n nextButton: null,\n prevButton: null,\n breakpoints: {\n 479: {\n spaceBetween: 0,\n paginationClickable: false\n },\n 767: {\n spaceBetween: 0,\n paginationClickable: false\n }\n }\n });\n case \"large_promo_slider\":\n return $.extend({}, defaultSettings, {\n slidesPerView: 1,\n loop: true,\n loopAdditionalSlides: 1,\n resistance: true,\n resistanceRation: 0,\n nextButton: null,\n prevButton: null,\n spaceBetween: 0,\n paginationType: 'bullets',\n pagination: current.settings.swiperPagination,\n paginationClickable: true\n });\n case \"mobile-only-slider\":\n return $.extend({}, defaultSettings, {\n pagination: current.settings.swiperPagination,\n paginationClickable: true,\n resistance: true,\n resistanceRatio: 0,\n breakpoints: {\n 767: {\n slidesPerView: 1,\n resistanceRatio: 0.85,\n paginationClickable: false,\n }\n }\n });\n case \"small-mobile-only-slider\":\n return $.extend({}, defaultSettings, {\n pagination: current.settings.swiperPagination,\n paginationClickable: true,\n resistance: true,\n resistanceRatio: 0,\n breakpoints: {\n 479: {\n slidesPerView: 1,\n resistanceRatio: 0.85,\n paginationClickable: false,\n }\n }\n });\n case \"dotted-pagination\":\n return $.extend({}, defaultSettings, {\n pagination: current.settings.swiperPagination,\n paginationClickable: true,\n resistance: true,\n resistanceRatio: 0,\n breakpoints: {\n 767: {\n slidesPerView: 1,\n resistanceRatio: 0.85,\n paginationClickable: false,\n },\n 961: {\n slidesPerView: 2,\n initialSlide: 0\n }\n }\n });\n default:\n return $.extend({}, defaultSettings, {\n pagination: current.settings.swiperPagination,\n paginationClickable: true,\n resistance: true,\n resistanceRatio: 0,\n nextButton: null,\n prevButton: null,\n breakpoints: {\n 767: {\n slidesPerView: 1,\n resistanceRatio: 0.85,\n paginationClickable: false\n }\n }\n });\n }\n};\n\n// if(typeof isV1GT == \"undefined\")\n// // set this function execute immediately\n// (function () {\n// [\n// {\n// elm: $('.campaign-slider:not(.slideroff)'),\n// setting: {type: 'dotted-pagination', el: '.swiper-pagination'}\n// },\n// {elm: $('.about-us-slider:not(.slideroff)')},\n// {elm: $('.news-slider:not(.slideroff)')},\n// {elm: $('.figureCarousel'), setting: {type: 'infinite_fcb'}},\n// {elm: $('.awardsCarousel'), setting: {type: 'infinite_fcb'}},\n// {elm: $('.linkListandAwardsCarousel'), setting: {type: 'infinite_fcb'}},\n// // {elm: $('.fcb__slider'), setting: {type: 'infinite_fcb'}},\n// {elm: $('.related-experts-slider'), setting: {type: 'infinite_reb'}},\n// {elm: $('.next-article-slider'), setting: {type: 'next_article_slide'}},\n// {elm: $('.industry-landing-slider'), setting: {type: 'single_slide'}},\n// {elm: $('.wide-carousel-slider'), setting: {type: 'wide_carousel_slider'}},\n// {elm: $('.large-promo-module-slider'), setting: {type: 'large_promo_slider'}},\n// {elm: $('.insightsHeroCarousel'), setting: {type: 'large_promo_slider'}},\n// {elm: $('.article-slider'), setting: {type: 'large_promo_slider'}},\n// {elm: $('.expert-container--slider'), setting: {type: 'mobile-only-slider'}},\n// {elm: $('.topic-block'), setting: {type: 'mobile-only-slider'}},\n// {elm: $('.simple-tiles--slider'), setting: {type: 'small-mobile-only-slider'}},\n// ].map(function (item) {\n// if (item.elm.length) {\n// new GT.GTSwiper(item.elm, {settings: item.setting});\n// }\n// })\n// })();\nif (typeof isV1GT == \"undefined\")\n [\n {\n elm: $('.campaign-slider:not(.slideroff)'),\n setting: {type: 'dotted-pagination', el: '.swiper-pagination'}\n }\n ].map(function (item) {\n if (item.elm.length) {\n new GT.Swiper(item.elm, {settings: item.setting});\n }\n })\n/**\n * This file is an attempt to gradually refactor GT.Swiper to\n * a more modular approach in using Swiper:\n * \n * Instead of keep adding functions and conditions to 1 file\n * This file will go with the following structure:\n * \n * It will provide a skeleton with named hooks and variables;\n * The functions for these hooks or values of these variables are customizable by settings.\n * \n * Presets of settings can be declared in the file GTSwiperNeoPreset.js\n * \n * New presets, new hooks and new variables can be added on the condition that:\n * They must be reusable (no fixed value such as class names or breakpoint values).\n * In other words:\n * - For preset: They should be functions that returning a function or objects.\n * - For hooks: Their defition should be taken from the setting object.\n * - For variables: Their value should be taken from the setting object.\n * \n * Default values for preset, hooks and variables can be set, but not fixed.\n * \n * Also a reminder: No css selector should be global\n * For example:\n * - BAD: .swiper-slide { ... }\n * - GOOD: .your-swiper-container .swiper-slide { ... }\n */\n\n /**\n * Other settings need to be declared at GTConstruct\n * \n * colNumber: data key to extract the number of column setting (not yet used in GTSwiperNeo, only in GTSwiper)\n * doSwipperAsync: function to control when to initialize the Swiper object\n * doSwipperTimeout: timeout duration for initializing Swiper object\n * extendedSettingFn: function to produce extended setting that are data dependent\n * beforeSwiperInit: function calling before swiper initialization\n * afterSwiperInit: function calling after swiper initialization\n * customInitFn: function to customize when and how to initialize swiper\n * swiperResizeFn: function to run on window resize event\n */\n\n GT.SwiperNeo = function($swiperContainer, type) {\n var current = this;\n var settings = typeof(type) == \"object\" && type.settings ? type.settings : (current.getSettingsByType(type) || {});\n\n // Some default settings\n current.settings = $.extend({}, {\n // Custom setting properties\n colNumber: 'number-of-columns',\n beforeSwiperInit: GT.SwiperNeoPreset.removePaginationOnOneSlide,\n\n // Swiper API (version 3.x.x)\n // https://github.com/nolimits4web/swiper/blob/Swiper3/API.md\n wrapperClass: 'swiper-wrapper',\n slideClass: 'swiper-slide',\n pagination: '.swiper-pagination',\n paginationType: 'bullets',\n nextButton: '.slider__next',\n prevButton: '.slider__prev',\n spaceBetween: 32,\n a11y: true,\n keyboardControl: true,\n preventClicks: false\n }, settings);\n\n var doSwipperTimeout = settings.doSwipperTimeout || 100;\n $swiperContainer.each(function (index, element) {\n if (GT.isFunction(settings.doSwiperAsync)) {\n settings.doSwiperAsync(index, element, doSwiper);\n return;\n }\n doSwiper(element);\n })\n\n // Swiper object initialization\n function doSwiper(element) {\n setTimeout(function() {\n var DOT = '.';\n var $me = $(element);\n var $slidesContainer = $me.find(DOT + current.settings.wrapperClass);\n var $slides = $me.find(DOT + current.settings.slideClass);\n var numberOfColumns = $me.data(current.settings.colNumber);\n\n var swiperDOMInfo = {\n $me: $me,\n $slidesContainer: $slidesContainer,\n $slides: $slides,\n numberOfColumns: numberOfColumns\n };\n\n // Any customized settings should be declared in settings.extendedSettingFn\n var extendedSettings = GT.isFunction(current.settings.extendedSettingFn) ? current.settings.extendedSettingFn(swiperDOMInfo) : {};\n var swiperSettingObject = $.extend({}, current.settings, extendedSettings);\n\n // DOM manipulation before swiper initialization\n if (GT.isFunction(swiperSettingObject.beforeSwiperInit)) {\n current.settings.beforeSwiperInit(swiperDOMInfo, swiperSettingObject);\n }\n\n var swiperInstance = null;\n // Initialization of swiper (slider)\n if (!GT.isFunction(swiperSettingObject.customInitFn)) {\n swiperInstance = $me.swiper(swiperSettingObject);\n } else {\n swiperInstance = swiperSettingObject.customInitFn(\n $me, // JQuery container element\n swiperInstance, // current swiper instance\n swiperDOMInfo, // swiper DOM info object\n swiperSettingObject, // current customized settings\n current.settings // customized settings that are data independent + default settings\n );\n }\n\n // DOM manipulation after swiper initialization\n if (GT.isFunction(swiperSettingObject.afterSwiperInit)) {\n swiperSettingObject.afterSwiperInit(swiperDOMInfo, swiperSettingObject);\n }\n\n // window resize\n if (GT.isFunction(swiperSettingObject.swiperResizeFn)) {\n var windowWidth = $(window).width();\n if ($(window).width() != windowWidth) {\n swiperInstance = swiperSettingObject.swiperResizeFn(\n $me,\n swiperInstance,\n swiperDOMInfo,\n swiperSettingObject,\n current.settings\n );\n windowWidth = $(window).width();\n }\n }\n }, doSwipperTimeout);\n }\n};\n\nGT.SwiperNeo.prototype.getSettingsByType = function (type) {\n 'use strict';\n switch (type) {\n case 'tcpwsb_slider':\n return {\n loop: true,\n resistance: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n paginationClickable: false,\n slidesPerView: 1,\n extendedSettingFn: function () {\n var settings = {\n breakpoints: {},\n };\n settings.breakpoints[GT.SwiperNeoPreset.breakPoints.tabletMinWidth - 1] = {\n resistanceRatio: 0.85,\n spaceBetween: 32\n };\n return settings;\n },\n afterSwiperInit: function (swiperDOMInfo) {\n new GT.LazyBackgrounds(swiperDOMInfo.$slidesContainer.find('.js-lazy-bg'), {settings: {safeDistance: 500}});\n }\n };\n case '.cswsb_slider':\n return {\n loop: true,\n resistance: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n paginationClickable: false,\n slidesPerView: 1,\n extendedSettingFn: function() {\n var settings = {\n breakpoints: {},\n };\n settings.breakpoints[GT.SwiperNeoPreset.breakPoints.tabletMinWidth - 1] = {\n resistanceRatio: 0.85,\n spaceBetween: 32\n };\n return settings;\n },\n afterSwiperInit: function (swiperDOMInfo) {\n new GT.LazyBackgrounds(swiperDOMInfo.$slidesContainer.find('.js-lazy-bg'), { settings: { safeDistance: 500 } });\n }\n };\n case 'rcwib_slider':\n return GT.SwiperNeoPreset.limitedMediaSlider(\n GT.SwiperNeoPreset.breakPoints.tabletMinWidth,\n function () {\n // Extra setting for limitedMediaSlider preset\n return {\n loop: true,\n afterSwiperInit: function (swiperDOMInfo) {\n new GT.LazyBackgrounds($('.js-lazy-bg'), { settings: { safeDistance: 500 } });\n GT.SwiperNeoPreset.clampTextContent([\n { selector: '.rcwib_item-content-category', lines: 1 },\n { selector: '.rcwib_item-content-title', lines: 2 },\n ])(swiperDOMInfo);\n }\n };\n }\n );\n }\n};\n\nif(typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n [\n {elm: $('.tcpwsb_slider'), type: 'tcpwsb_slider'},\n {elm: $('.cswsb_slider'), type: '.cswsb_slider'},\n {elm: $('.rcwib_slider'), type: 'rcwib_slider'}\n ].map(function (item) {\n if (item.elm.length) {\n new GT.SwiperNeo(item.elm, item.type);\n }\n });\n })\n\nGT.SwiperNeoPreset = {\n // SETTINGS OBJECTS\n /**\n * Properties of a setting object\n * \n * colNumber: data key to extract the number of column setting (not yet used in GTSwiperNeo, only in GTSwiper)\n * doSwipperAsync: function to control when to initialize the Swiper object\n * doSwipperTimeout: timeout duration for initializing Swiper object\n * extendedSettingFn: function to produce extended setting that are data dependent\n * beforeSwiperInit: function calling before swiper initialization\n * afterSwiperInit: function calling after swiper initialization\n * customInitFn: function to customize when and how to initialize swiper\n * swiperResizeFn: function to run on window resize event\n * \n * plus any properties from the following API\n * https://github.com/nolimits4web/swiper/blob/Swiper3/API.md\n */\n\n /**\n * This is a preset function to generate the setting object for a slider which\n * is only initialized from the target breakpoint and below\n * This can be considered to be a refactoring of both \"mobile-only-slider\" and \"small-mobile-only-slider\" in GTSwiper\n *\n * @param {Number} targetBreakPoint breakpoint (in pixel) only below which swiper will be initialized\n * @param {Function} extraSettingFn function that returns a setting object\n */\n limitedMediaSlider: function (targetBreakPoint, extraSettingFn) {\n var settings = {\n resistance: true,\n resistanceRatio: 0,\n customInitFn: GT.SwiperNeoPreset.restrictSwiperInitOnBreakpoint(targetBreakPoint),\n breakpoints: {},\n extendedSettingFn: extraSettingFn\n };\n settings.breakpoints[targetBreakPoint - 1] = {\n slidesPerView: 1,\n resistanceRatio: 0.85,\n paginationClickable: false\n };\n return settings;\n },\n\n\n // SHARED FUNCTIONS\n\n /**\n * An extended function of GTSwiper's hadleResize_ExpertBlock\n * Control at which break point the swiper shall be initialized\n *\n * @param {Number} targetBreakPoint breakpoint (in pixel) only below which swiper will be initialized\n */\n restrictSwiperInitOnBreakpoint: function (targetBreakPoint) {\n return function($me, swiperInstance, _swiperDOMInfo, swiperSettingObject, _baseSettings) {\n var breakpoint = window.matchMedia('(min-width:' + targetBreakPoint + 'px)');\n var mySwiper = swiperInstance;\n var enableSwiper = function() {\n mySwiper = $me.swiper(swiperSettingObject);\n };\n var breakpointChecker = function() {\n if (breakpoint.matches) {\n if (mySwiper && mySwiper.destroy) {\n try {\n mySwiper.destroy(true, true);\n } catch (exception) {}\n }\n return;\n } else {\n return enableSwiper();\n }\n };\n breakpoint.addListener(breakpointChecker);\n breakpointChecker();\n return mySwiper; // This is important!\n };\n },\n\n /**\n * Default beforeInitFn function\n * Remove swiper pagination and navigation buttons when there is only one slide\n */\n removePaginationOnOneSlide: function (swiperDOMInfo, swiperSettingObject) {\n if (swiperDOMInfo.$slides.length === 1) {\n swiperDOMInfo.$slidesContainer.addClass('disabled');\n swiperDOMInfo.$me.find(swiperSettingObject.pagination).remove();\n swiperDOMInfo.$me.find(swiperSettingObject.nextButton).remove();\n swiperDOMInfo.$me.find(swiperSettingObject.prevButton).remove();\n }\n },\n\n /**\n * Truncate slide text content based on the clamp options\n * \n * @param {Array} clampOptionArray each option is an object { selector: string, lines: interger | function returning integer }\n * selector: CSS selector to find the item containing the text to be truncated\n * lines: the number of lines the text is to be limited to\n * \n * @param {String} clampDataKey data key to get the original text\n */\n clampTextContent: function (clampOptionArray, clampDataKey) {\n var dataKey = clampDataKey || 'clamp';\n return function (swiperDOMInfo, _swiperSettingObject) {\n // Function to execute clamping\n var clampSwiper = function () {\n swiperDOMInfo.$slides.each(function (_index, slide) {\n clampOptionArray.map(function (option) {\n // Get the number of lines\n var lines = 3; // Default value\n if (GT.isFunction(option.lines)) {\n // option.lines is a function\n lines = option.lines($targetTextContainer);\n } else if (GT.isInteger(option.lines)) {\n // option.lines is a number\n lines = option.lines;\n }\n\n // Restore the original text\n var $targetTextContainer = $(slide).find(option.selector);\n var originalText = $targetTextContainer.data(dataKey);\n if (originalText) {\n $targetTextContainer.html(originalText);\n }\n\n // Execute clamping\n GT.Clamp($targetTextContainer, { settings: { clamp: lines }});\n });\n });\n };\n\n // Immediately run clamping\n clampSwiper();\n\n var windowWidth = $(window).width();\n // Handle window resize event\n $(window).resize(function () {\n if ($(window).width() != windowWidth) {\n clampSwiper();\n }\n });\n }\n },\n\n // POPULAR BREAKPOINTS\n breakPoints: {\n tabletMinWidth: 768\n }\n};\n\n// GT SWITCH VIEW FOR T42 EVENT BLOCK\n\nGT.SwitchView = function ($elem) {\n let GTSwitchView = this;\n try {\n $.each($elem, function() {\n let $container = $(this).closest('.events-block').find('.events-container');\n GTSwitchView.switchView($elem, $container);\n })\n } catch (e) {\n\n }\n\n};\nGT.SwitchView.prototype.changeView = function ($container, $currentElem) {\n let clampname = $container[0].dataset.clampname;\n $currentElem.closest('.change-view-cont').find('button').removeClass('enabled');\n $currentElem.addClass('enabled');\n if ($currentElem.hasClass('enable-grid-view')) {\n $container.removeClass('list-view');\n $container.addClass('grid-view');\n GT.clampRevertToOriginalText(clampname);\n GT.clampText(clampname, true);\n } else {\n $container.removeClass('grid-view');\n $container.addClass('list-view');\n GT.clampRevertToOriginalText(clampname);\n GT.clampText(clampname, true);\n }\n $(window).trigger('resize'); // to run GTEqualise\n};\n\nGT.SwitchView.prototype.switchView = function ($elem, $container) {\n var GTSwitchView = this;\n\n $elem.on('click', function (e) {\n e.preventDefault();\n var $currentElem = $(this);\n if ($currentElem.hasClass(\"enabled\")) {\n return false;\n }\n GTSwitchView.changeView($container, $currentElem);\n });\n};\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n new GT.SwitchView($('.event-switch-view'));\n new GT.SwitchView($('.seminar-switch-view'));\n })\nGT.Table = function () {\n let isRTL = document.querySelector(\".RTL\");\n document.querySelectorAll(\".table-v2__fixed-layout\").forEach(item => {\n item.addEventListener(\"scroll\", e => {\n let currentTable = e.target;\n if (currentTable.scrollLeft * (isRTL ? -1 : 1) > 0)\n currentTable.classList.add(\"scrolling\");\n else\n currentTable.classList.remove(\"scrolling\");\n })\n })\n\n document.querySelectorAll(\".table-v2__accordion-layout tr td:nth-child(1)\").forEach(item => {\n item.addEventListener(\"click\", e => {\n let currentTarget = e.target;\n let trElm = currentTarget.closest(\"tr\");\n if (![\"button\", \"a\"].includes(currentTarget.nodeName.toLowerCase())) {\n if(trElm) {\n trElm.classList.toggle(\"expand\");\n trElm.querySelectorAll(\"td\").forEach(tdElm => {\n tdElm.style.setProperty(\"--table-v2--td-height\", (tdElm.querySelector(\".table-v2__content\")?.offsetHeight || 0) + \"px\");\n })\n setTimeout(e => {\n trElm.classList.toggle(\"animate\");\n }, 300)\n }\n }\n\n if(currentTarget.classList.contains(\"table-v2__toggle-btn\")) {\n currentTarget.closest(\"td\").click();\n }\n\n trElm.querySelector(\".table-v2__toggle-btn\").setAttribute(\"aria-expanded\", trElm.classList.contains(\"expand\"));\n })\n })\n\n let lastExpandBtn;\n\n window.addEventListener(\"keydown\", e => {\n if(e.key == \"Escape\") {\n let externalTable = document.querySelector(\".external-table\");\n if(externalTable) {\n externalTable.querySelector(\".table-v2--close\")?.click();\n setTimeout(e => {\n externalTable.remove();\n lastExpandBtn?.focus();\n }, 500)\n }\n }\n })\n\n document.querySelectorAll(\".table-v2--expand\").forEach(expandBtn => {\n expandBtn.addEventListener(\"click\", e => {\n document.body.insertAdjacentHTML(\"beforeend\", `
    `);\n let currentTarget = e.target.closest(\"button\"),\n currentTable = currentTarget.closest(\".table-v2-container\").outerHTML;\n lastExpandBtn = currentTarget;\n lastExpandBtn.classList.add(\"table-v2--hide-expand\");\n let externalTable = document.querySelector(\".external-table\");\n GT.setInertWhileOpeningDialog(true);\n document.firstElementChild.classList.add(\"showing-overlay\");\n\n externalTable.innerHTML = currentTable;\n externalTable.querySelector(\".table-v2\")?.classList.add(\"table-v2__fixed-layout\");\n setTimeout(e => {\n externalTable.classList.add(\"show\");\n }, 0)\n\n let closeBtn = externalTable.querySelector(\".table-v2--close\");\n closeBtn.focus();\n closeBtn.addEventListener(\"click\", closeEvt => {\n externalTable.classList.remove(\"show\");\n setTimeout(e => {\n GT.setInertWhileOpeningDialog(false);\n lastExpandBtn?.classList.remove(\"table-v2--hide-expand\");\n document.firstElementChild.classList.remove(\"showing-overlay\");\n externalTable.remove();\n lastExpandBtn?.focus();\n }, 500)\n })\n })\n })\n}\n\nGT.domContentLoadedFncList.push(function () {\n GT.Table();\n});\n\nvar GTTabs = function () {\n this.firmTabs = function ($elem) {\n // containers: .member-firms / .correspondent-firms\n // tab btns: .firm-tabs / #membFirm / #corrFirm\n if (!$('body').hasClass('epi-editmode')) {\n $('.correspondent-firms').hide();\n } // hide if it's not in edit mode\n\n // on click event\n $elem.find('a').on('click keydown', function (e) {\n if (!e.keyCode || e.keyCode === '13') {\n // hide all tabs\n // get href from anchor\n var currentTab = $(this).attr('id');\n // append \"_container\" to end of the href (this prevents\n // the page scrolling to the content of the hash value)\n\n if (currentTab === 'membFirm') {\n $('#corrFirm').removeClass('active');\n $('.correspondent-firms').hide();\n $('.member-firms').fadeIn();\n } else if (currentTab === 'corrFirm') {\n $('#membFirm').removeClass('active');\n $('.member-firms').hide();\n $('.correspondent-firms').fadeIn();\n }\n\n $(this).addClass('active');\n\n return false;\n }\n });\n }\n};\n\nGT.domContentLoadedFncList.push(function(){\n GT.Tabs = new GTTabs();\n GT.Tabs.firmTabs($('.firm-tabs'));\n});\nGT.TombstoneTransactionEvents = {};\nGT.TombstoneTransaction = function (forceReregisterEvt) {\n flipTransaction();\n function flipTransaction() {\n if(forceReregisterEvt) {\n Array.prototype.slice.call(document.querySelectorAll('.transaction-content')).forEach(function(el) {\n delete el.dataset.initedClickEvt;\n el.removeEventListener(\"click\", GT.TombstoneTransactionEvents[el.dataset.eventClick]);\n })\n //wait for Remove Click Event completely\n Array.prototype.slice.call(document.querySelectorAll('.transaction-content')).forEach(function(el) {\n delete GT.TombstoneTransactionEvents[el.dataset.eventClick];\n })\n }\n Array.prototype.slice.call(document.querySelectorAll('.transaction-content')).forEach(function(el) {\n if(!el.dataset.initedClickEvt) {\n let eventClick = \"tombstone_evt_\" + Math.floor(Math.random() * 10000);\n el.dataset.eventClick = eventClick;\n\n function clickEvtHandler(e){\n e.stopPropagation()\n let triggerElms = el.parentElement.dataset.index != null ? Array.prototype.slice.call(document.querySelectorAll('.transaction-list__item[data-index=\"'+ el.parentElement.dataset.index +'\"]')) : [el.parentElement];\n triggerElms.forEach(function(elm){\n elm.classList.toggle('active');\n })\n }\n\n GT.TombstoneTransactionEvents[eventClick] = clickEvtHandler;\n el.addEventListener('click', clickEvtHandler);\n\n\n Array.prototype.slice.call(el.querySelectorAll('.expert-item__name')).forEach(function(child) {\n child.addEventListener('click', function(e){\n e.stopPropagation();\n });\n });\n\n Array.prototype.slice.call(el.querySelectorAll('.transaction-readmore')).forEach(function(child) {\n child.addEventListener('click', function(e){\n e.stopPropagation();\n });\n });\n el.dataset.initedClickEvt = true;\n }\n });\n }\n};\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function () {\n new GT.TombstoneTransaction(document.querySelector('.transaction-content'));\n });\nGT.TouchBlur = function ($element, obj) {\n this.current = $element;\n this.current.on('touchend', this.touchEndHandler);\n};\n\nGT.TouchBlur.prototype.touchEndHandler = function(e){\n var _this = $(this);\n _this.blur();\n};\n\n\n\n////////////////////////////\n// GT TRACKING FUNCTIONS //\n////////////////////////////\nvar GTTrack = function () {\n\n /**\n * Adds Episerver.Find tracking to SearchResults partial view\n */\n this.clickTracking = function ($elem) {\n $(\"#ResultListWrapper a\")\n .click(function (e) {\n var $link = $(this);\n $.get(\"/ClickTracking/Track\",\n { query: $link.data(\"query\"), hitId: $link.data(\"hitid\"), trackId: $link.data(\"trackid\") });\n });\n };\n\n /**\n * Track downloads of pdf or xls files attached on article pages\n */\n this.trackPDFs = function ($elem) {\n $('a').on(\"click.pdf\",\n function (e) {\n // get url, filename & filetype\n let __ths = this;\n var href = $(this).attr(\"href\");\n if (href) {\n var fourCharFileType = href.substr(href.length - 4).toLowerCase();\n var fileType = href.substr(href.length - 3).toLowerCase();\n\n if (fourCharFileType === \"xlsx\" || fourCharFileType === \"xlsm\" || fileType === \"xls\") {\n //e.preventDefault();\n var fileName = href.substr(href.lastIndexOf(\"/\") + 1);\n dataLayer.push({ 'event': 'xls', 'eventAction': 'download', 'eventLabel': fileName });\n }\n\n if (fileType === \"pdf\") {\n e.preventDefault();\n var fileName = href.substr(href.lastIndexOf(\"/\") + 1).slice(0, -4);\n dataLayer.push({ 'event': fileType, 'eventAction': 'download', 'eventLabel': fileName });\n\n // Women in Business - Outbrain Pixel Tag Implementation\n if (fileName === 'ibr2015_wib_report_final') {\n // add image with display none\n $(new Image())\n .attr('src', 'http://traffic.outbrain.com/network/trackpxl?advid=25202&action=view')\n .appendTo($(this))\n .css('display', 'none');\n // when the image has loaded - redirect to the PDF url (if this isnt added it wont fire the above)\n $('img')\n .one('load',\n function () {\n if(__ths.target)\n window.open(href, __ths.target);\n else\n window.location.href = href;\n });\n } else {\n if(__ths.target)\n window.open(href, __ths.target);\n else\n window.location.href = href;\n }\n }\n }\n });\n };\n};\n\nGT.domContentLoadedFncList.push(function(){\n GT.Track = new GTTrack();\n GT.Track.trackPDFs($('.download-pdf-link'));\n GT.Track.clickTracking($('#ResultListWrapper'));\n});\nvar initTranslationDetect = function() {\n\tvar allowTranslator = allowTranslateDetector();\n\tif(!allowTranslator) return;\n var originalLang = $('html').attr('lang');\n\tvar observer = new MutationObserver(checkLang);\n\tfunction checkLang(){\n\t\tvar currentLang = $('html').attr('lang');\n if (currentLang !== originalLang){\n \t$('body').addClass('lang-changed');\n\t\t\t$(window).trigger('user-translate');\n\t\t\toriginalLang = currentLang;\n }\n\t}\n\tvar htmlDom = document.getElementsByTagName('html')[0];\n\tobserver.observe(htmlDom, { attributes: true, childList: false, subtree: false });\n\n\tfunction allowTranslateDetector(){\n\t\tvar hasMutation = typeof MutationObserver !== undefined;\n\t\tvar isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);\n\t\tvar notMobile = window.screen.width > 768;\n\t\treturn hasMutation && isChrome && notMobile;\n\t}\n}\n\ninitTranslationDetect();\n//trimmming helper function\nfunction trimSentence(s, l) {\n /* s: string to trim\n l: length to trim to\n */\n\n //trim whitespace from beginning and end of string that episerver adds\n s = s.trim();\n\n if (s.length <= l) {\n //do nothing, string is fine as is\n } else {\n l = l - 2; //absolute max length - ellipsis\n s = s.substring(0, l);\n\n //find last occurence of a word break; trim to it\n var lastSpace = s.lastIndexOf(\" \");\n s = s.substring(0, lastSpace);\n s = s + \"…\";\n }\n return s;\n};\n\nGT.Trim = function ($element) {\n /* $element: element to act within\n */\n\n var textblocks = $($element).find('.text');\n for (var i = 0; i < textblocks.length; i++) {\n var s = trimSentence($(textblocks[i]).text(), 90);\n $(textblocks[i]).html(s);\n }\n\n var titleblocks = $($element).find('.title');\n for (var i = 0; i < titleblocks.length; i++) {\n var s = trimSentence($(titleblocks[i]).text(), 40);\n $(titleblocks[i]).html(s);\n }\n};\n/// \nGT.UpsaleEvents = function () {\n\n phoneFlagInit(document.getElementById('up-form'));\n matchClientsInput();\n addlableForInput();\n phoneFlagAccessibility();\n\n\n\n function addlableForInput() {\n var inputHint = $('.twitter-typeahead').find('.tt-input.tt-hint');\n if(inputHint.length > 0) {\n inputHint.attr('aria-hidden', 'true');\n }\n }\n\n function phoneFlagAccessibility() {\n var selectedFlag = $('.iti__selected-flag');\n if(selectedFlag) {\n selectedFlag.attr('aria-expanded', 'false');\n selectedFlag.click(function() {\n if(selectedFlag.find('.iti__arrow').hasClass('iti__arrow--up')) {\n selectedFlag.attr('aria-expanded', 'true');\n } else {\n selectedFlag.attr('aria-expanded', 'false');\n }\n });\n }\n \n \n }\n\n function matchClientsInput() {\n let nameField = document.querySelector(\"#up-client-name-input\");\n if (nameField) {\n let spinner = document.querySelector(\"#up-client-spinner\"),\n dunsField = document.querySelector(\"#up-client-dunsNo\");\n \n spinner.style.display = \"none\";\n \n function orphanCharAsWord(word) {\n return word.length > 1 ? word : ' ' + word + ' ';\n }\n\n try {\n\n if(window.currentAutoComplete)\n window.currentAutoComplete.destroy();\n\n window.currentAutoComplete = new autoComplete({\n selector: `#up-client-name-input`,\n minChars: 3,\n delay: 250,\n cache: 0,\n menuClass: 'upsale-eventform__autosuggestion',\n source: function (term, suggest) {\n term = term.toLowerCase()\n .replace(//gi, '%253E')\n .replace(/([|\\\\\\/{}[\\]^*$+?.\"'])/gi, function (match, dec) {\n return encodeURI(dec);\n })\n .replace(/[()]/gi, '\\\\$&');\n \n spinner.style.display = \"inline\";\n \n $.ajax({\n url: \"https://power.upsales.com/api/external/soliditet/clientSearch\",\n type: \"get\",\n data: { name: term },\n success: function (res) {\n suggest(res.data); \n spinner.style.display = \"none\";\n if(!res.data || res.data.length <= 0) {\n let _autoCompleteItems = document.querySelectorAll('.autocomplete-suggestion');\n \n [].forEach.call(_autoCompleteItems, function(_autoCompleteItem){\n if(_autoCompleteItem) _autoCompleteItem.remove();\n });\n } \n },\n error: function (xhr) {\n console.warn(xhr);\n }\n });\n },\n renderItem: function (item, search) {\n var decodedText = item.name.replace(/&#(\\d+);/g, function (match, dec) {\n return String.fromCharCode(dec);\n }).replace(/[\\\"]/gi, \""\");\n var re = new RegExp(\"(\" + search.split(' ').map(orphanCharAsWord).join('|').replace(/[\\(\\)\\?\\.\\*\\+\\^\\{\\}\\-\\[\\]\\$]/gi, '\\\\$&').replace(/[\\\"]/gi, \""\") + \")\", \"gi\");\n return \"
    \" + decodedText.replace(re, \"$1\") + \"
    \" + item.city + \"
    \";\n },\n onSelect: function (e, term, item) {\n dunsField.value = item.dataset.no;\n nameField.value = item.dataset.val;\n }\n });\n } catch (ex) {\n console.warn(ex);\n };\n }\n }\n function phoneFlagInit($elm) {\n var phoneFields = $elm.querySelectorAll('input[name*=phone], input[name*=Phone]');\n [].forEach.call(phoneFields, function (element) {\n window.hasPhoneFields = true;\n element.iti = window.intlTelInput(element, {\n preferredCountries: [],\n initialCountry: 'auto',\n utilsScript: '/dist/plugins/phone-utils.js',\n geoIpLookup: function (success) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', 'https://power.upsales.com/api/external/whereAmI');\n xhr.onload = function () {\n success(xhr.status === 200 ? JSON.parse(xhr.responseText).data : \"\");\n };\n xhr.send();\n }\n });\n });\n }\n\n function checkemail(str) {\n var filter = /^[a-zA-Z0-9.!#$%&�*+\\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+){1,}$/;\n\n if (filter.test(str))\n return true;\n else {\n return false;\n }\n }\n\n function checkBlockingPrivateEmail(str) {\n let blockEmailInputElm = document.querySelector(\"#formBlockPrivateEmail\"),\n blockEmailStr = \"\";\n\n if(blockEmailInputElm)\n blockEmailStr = blockEmailInputElm.value.replaceAll(\",\", \"|\").replaceAll(\" \", \"\");\n\n if (!blockEmailStr || new RegExp(blockEmailStr).test(str) == false)\n return true;\n else {\n return false;\n }\n }\n\n function validateForm(event) { \n event.preventDefault();\n var formId = document.getElementsByName('formId')[0].value;\n var form = document.forms['form_' + formId];\n var inputs = form.querySelectorAll('input');\n for (var i = 0; i < inputs.length; i++) {\n if (inputs[i].type === 'text') {\n inputs[i].value = inputs[i].value.trim();\n }\n }\n //if (!form.checkValidity()) {\n // return false;\n //}\n let isSuccess = true,\n failFlag = [];\n\n var focusField = '';\n var contactName = $('input[name=\"Contact.name\"]');\n if (!contactName.val().length) {\n contactName.parent().addClass('validate-failed');\n focusField = \"Contact.name\";\n failFlag.push(true);\n } else {\n contactName.parent().removeClass('validate-failed');\n }\n\n var contactEmail = $('input[name=\"Contact.email\"]');\n if (!contactEmail.val().length) {\n contactEmail.parent().addClass('validate-failed');\n if (!focusField) focusField = \"Contact.email\";\n failFlag.push(true);\n } else {\n contactEmail.parent().removeClass('validate-failed');\n }\n\n if (!checkemail(contactEmail.val())) {\n contactEmail.parent().removeClass('validate-failed-private-email');\n contactEmail.parent().addClass('validate-failed');\n if (!focusField) focusField = \"Contact.email\";\n failFlag.push(true);\n } else {\n contactEmail.parent().removeClass('validate-failed');\n }\n\n if(checkemail(contactEmail.val())) {\n if (!checkBlockingPrivateEmail(contactEmail.val())) {\n contactEmail.parent().addClass('validate-failed');\n contactEmail.parent().addClass('validate-failed-private-email');\n if (!focusField) focusField = \"Contact.email\";\n failFlag.push(true);\n } else {\n contactEmail.parent().removeClass('validate-failed');\n contactEmail.parent().removeClass('validate-failed-private-email');\n }\n }\n\n\n var clientsName = $('input[name=\"Client.name\"]');\n if (!clientsName.val().length) {\n clientsName.parents('.form-group').addClass('validate-failed');\n if (!focusField) focusField = \"Client.name\";\n failFlag.push(true);\n } else {\n clientsName.parents('.form-group').removeClass('validate-failed');\n }\n\n var title = $('input[name=\"Contact.title\"]');\n if (!title.val().length) {\n title.parents('.form-group').addClass('validate-failed');\n if (!focusField) focusField = \"Contact.title\";\n failFlag.push(true);\n } else {\n title.parents('.form-group').removeClass('validate-failed');\n }\n\n var cellPhone = $('input[name=\"Contact.cellPhone\"]');\n if (!cellPhone.val().length) {\n cellPhone.parents('.form-group').addClass('validate-failed');\n if (!focusField) focusField = \"Contact.cellPhone\";\n failFlag.push(true);\n } else {\n cellPhone.parents('.form-group').removeClass('validate-failed');\n }\n\n if ((recaptcha && !grecaptcha.getResponse().length)) {\n $('.g-recaptcha').parents('.form-group').find('.captcha-error').show();\n failFlag.push(true);\n } else {\n $('.g-recaptcha').parents('.form-group').find('.captcha-error').hide();\n }\n\n if(failFlag.length)\n isSuccess = false;\n else\n isSuccess = true;\n\n if (!isSuccess) {\n $('input[name=\"' + focusField + '\"]').focus();\n }\n return isSuccess;\n }\n\n $(\"#upsaleSubmitBtn\").click(function (event) { \n event.preventDefault();\n var _this = $(this);\n if (!validateForm(event)) return false;\n var formId = document.getElementsByName('formId')[0].value;\n var form = document.forms['form_' + formId];\n \n var postFormURL = $(this).data('upsalepostajax');\n \n _this.attr(\"disabled\", \"disabled\");\n var data = $(form).serialize();\n data += \"&isAjax=true\";\n var confirmLink = $('#event-confimation-page-link').val();\n $.ajax({\n type: \"POST\",\n url: postFormURL,\n data: data,\n success: function (qs) {\n $(this).removeAttr(\"disabled\");\n if (confirmLink) {\n setTimeout(function () {\n window.top.location.href = confirmLink;\n }, 333);\n } else {\n $(\"#up-form\").hide();\n $(\"#up-form-thanks\").show();\n }\n },\n error: function (res) {\n var errorHtml = '
    {{errormessage}}
    ';\n var mess = '';\n if (res && res.responseJSON && res.responseJSON.error === 'EVENT_FULL') {\n mess = $('#hdf_event_full_mess').val();\n }\n if (res && res.responseJSON && res.responseJSON.error === 'EVENT_CANCELED') {\n mess = $('#hdf_event_cancel_mess').val();\n }\n if (res && res.responseJSON && res.responseJSON.error === 'EVENT_CONTACT_DUPLICATE') {\n mess = $('#hdf_cantact_duplicate_mess').val();\n }\n if (mess) {\n errorHtml = errorHtml.replace(/\\{\\{errormessage\\}\\}/g, mess);\n if ($('#event-full-message').length) {\n $('#event-full-message').remove();\n }\n _this.before(errorHtml);\n }\n _this.removeAttr(\"disabled\");\n }\n });\n });\n};\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n GT.UpsaleEvents();\n });\nGT.UpsaleOnDemandEvents = function () {\n\n matchClientsInput();\n addlableForInput();\n function addlableForInput() {\n var inputHint = $('.twitter-typeahead').find('.tt-input.tt-hint');\n if(inputHint.length > 0) {\n inputHint.attr('aria-hidden', 'true');\n }\n }\n function matchClientsInput() {\n let nameField = document.querySelector(\"#up-client-name-input\");\n if (nameField) {\n let spinner = document.querySelector(\"#up-client-spinner\"),\n dunsField = document.querySelector(\"#up-client-dunsNo\");\n \n spinner.style.display = \"none\";\n \n function orphanCharAsWord(word) {\n return word.length > 1 ? word : ' ' + word + ' ';\n }\n\n try {\n\n if(window.currentAutoComplete)\n window.currentAutoComplete.destroy();\n\n window.currentAutoComplete = new autoComplete({\n selector: `#up-client-name-input`,\n minChars: 3,\n delay: 250,\n cache: 0,\n menuClass: 'upsale-eventform__autosuggestion',\n source: function (term, suggest) {\n term = term.toLowerCase()\n .replace(//gi, '%253E')\n .replace(/([|\\\\\\/{}[\\]^*$+?.\"'])/gi, function (match, dec) {\n return encodeURI(dec);\n })\n .replace(/[()]/gi, '\\\\$&');\n \n spinner.style.display = \"inline\";\n \n $.ajax({\n url: \"https://power.upsales.com/api/external/soliditet/clientSearch\",\n type: \"get\",\n data: { name: term },\n success: function (res) {\n suggest(res.data); \n spinner.style.display = \"none\"; \n },\n error: function (xhr) {\n console.warn(xhr);\n }\n });\n },\n renderItem: function (item, search) {\n var decodedText = item.name.replace(/&#(\\d+);/g, function (match, dec) {\n return String.fromCharCode(dec);\n }).replace(/[\\\"]/gi, \""\");\n var re = new RegExp(\"(\" + search.split(' ').map(orphanCharAsWord).join('|').replace(/[\\(\\)\\?\\.\\*\\+\\^\\{\\}\\-\\[\\]\\$]/gi, '\\\\$&').replace(/[\\\"]/gi, \""\") + \")\", \"gi\");\n return \"
    \" + decodedText.replace(re, \"$1\") + \"
    \" + item.city + \"
    \";\n },\n onSelect: function (e, term, item) {\n dunsField.value = item.dataset.no;\n nameField.value = item.dataset.val;\n }\n });\n } catch (ex) {\n console.warn(ex);\n };\n }\n }\n\n function checkemail(str) {\n var filter = /^[a-zA-Z0-9.!#$%&�*+\\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+){1,}$/;\n if (filter.test(str))\n return true;\n else {\n return false;\n }\n }\n \n function checkBlockingPrivateEmail(str) {\n let blockEmailInputElm = document.querySelector(\"#formBlockPrivateEmail\"),\n blockEmailStr = \"\";\n\n if(blockEmailInputElm)\n blockEmailStr = blockEmailInputElm.value.replaceAll(\",\", \"|\").replaceAll(\" \", \"\");\n\n if (!blockEmailStr || new RegExp(blockEmailStr).test(str) == false)\n return true;\n else {\n return false;\n }\n }\n\n function validateForm(event) { \n event.preventDefault();\n var formId = document.getElementsByName('formId')[0].value;\n var form = document.forms['form_' + formId];\n var inputs = form.querySelectorAll('input');\n for (var i = 0; i < inputs.length; i++) {\n if (inputs[i].type === 'text') {\n inputs[i].value = inputs[i].value.trim();\n }\n }\n\n let isSuccess = true,\n failFlag = [];\n var focusField = '';\n\n var contactFirstName = $('input[name=\"Contact.firstname\"]');\n if (!contactFirstName.val().length) {\n contactFirstName.parent().addClass('validate-failed');\n focusField = \"Contact.firstname\";\n failFlag.push(true);\n } else {\n contactFirstName.parent().removeClass('validate-failed');\n }\n\n var contactLastName = $('input[name=\"Contact.lastname\"]');\n if (!contactLastName.val().length) {\n contactLastName.parent().addClass('validate-failed');\n if (!focusField) focusField = \"Contact.lastname\";\n failFlag.push(true);\n } else {\n contactLastName.parent().removeClass('validate-failed');\n }\n var contactEmail = $('input[name=\"Contact.email\"]');\n if (!contactEmail.val().length) {\n contactEmail.parent().addClass('validate-failed');\n if (!focusField) focusField = \"Contact.email\";\n failFlag.push(true);\n } else {\n contactEmail.parent().removeClass('validate-failed');\n }\n\n if (!checkemail(contactEmail.val())) {\n contactEmail.parent().removeClass('validate-failed-private-email');\n contactEmail.parent().addClass('validate-failed');\n if (!focusField) focusField = \"Contact.email\";\n failFlag.push(true);\n } else {\n contactEmail.parent().removeClass('validate-failed');\n }\n\n if(checkemail(contactEmail.val())) {\n if (!checkBlockingPrivateEmail(contactEmail.val())) {\n contactEmail.parent().addClass('validate-failed');\n contactEmail.parent().addClass('validate-failed-private-email');\n if (!focusField) focusField = \"Contact.email\";\n failFlag.push(true);\n } else {\n contactEmail.parent().removeClass('validate-failed');\n contactEmail.parent().removeClass('validate-failed-private-email');\n }\n }\n\n var clientsName = $('input[name=\"Client.name\"]');\n if (!clientsName.val().length) {\n clientsName.parents('.form-group').addClass('validate-failed');\n if (!focusField) focusField = \"Client.name\";\n failFlag.push(true);\n } else {\n clientsName.parents('.form-group').removeClass('validate-failed');\n }\n\n if ((recaptcha && !grecaptcha.getResponse().length)) {\n $('.g-recaptcha').parents('.form-group').find('.captcha-error').show();\n failFlag.push(true);\n } else {\n $('.g-recaptcha').parents('.form-group').find('.captcha-error').hide();\n }\n\n if(failFlag.length)\n isSuccess = false;\n else\n isSuccess = true;\n\n if (!isSuccess) {\n $('input[name=\"' + focusField + '\"]').focus();\n }\n return isSuccess;\n }\n\n $(\"#upsaleSubmitBtn\").click(function (event) { \n event.preventDefault();\n var _this = $(this);\n if (!validateForm(event)) return false;\n var formId = document.getElementsByName('formId')[0].value;\n var form = document.forms['form_' + formId];\n \n var postFormURL = $(this).data('upsalepostajax');\n \n _this.attr(\"disabled\", \"disabled\");\n var data = $(form).serialize();\n data += \"&isAjax=true\";\n $.ajax({\n type: \"POST\",\n url: postFormURL,\n data: data,\n success: function (qs) {\n $(this).removeAttr(\"disabled\");\n $(\"#up-form\").hide();\n setCookie();\n window.location.reload();\n },\n error: function (res) {\n var errorHtml = '
    {{errormessage}}
    ';\n var mess = '';\n if (res && res.responseJSON && res.responseJSON.error === 'EVENT_FULL') {\n mess = $('#hdf_event_full_mess').val();\n }\n if (res && res.responseJSON && res.responseJSON.error === 'EVENT_CANCELED') {\n mess = $('#hdf_event_cancel_mess').val();\n }\n if (res && res.responseJSON && res.responseJSON.error === 'EVENT_CONTACT_DUPLICATE') {\n mess = $('#hdf_cantact_duplicate_mess').val();\n }\n if (mess) {\n errorHtml = errorHtml.replace(/\\{\\{errormessage\\}\\}/g, mess);\n if ($('#event-full-message').length) {\n $('#event-full-message').remove();\n }\n _this.before(errorHtml);\n }\n _this.removeAttr(\"disabled\");\n }\n });\n });\n\n function setCookie() {\n var onDemandCookieValue = document.getElementsByName('onDemandCookieValue')[0].value;\n var onDemandUpsaleCookieName = document.getElementsByName('onDemandUpsaleCookieName')[0].value;\n\t\tvar currentCookie = GT.Cookies.getCookie(onDemandUpsaleCookieName);\n\t\tif (currentCookie) {\n\t\t\tif (!currentCookie.includes(onDemandCookieValue))\n\t\t\t\tGT.Cookies.setCookieWithoutServerCheck(onDemandUpsaleCookieName, currentCookie + \",\" + onDemandCookieValue, 365, \"/\");\n\t\t} else {\n\t\t\tGT.Cookies.setCookieWithoutServerCheck(onDemandUpsaleCookieName, onDemandCookieValue, 365, \"/\");\n\t\t}\n\t}\n};\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n GT.UpsaleOnDemandEvents();\n });\nGT.ViaTTSubscribe = function() {\n let endpoint = document.querySelector(\".subscribePressEndpoint\")?.dataset.endpoint;\n if(endpoint) {\n let viaTTSubscriptionDialog = document.querySelector(\".viatt-press-subscription-dialog\"),\n successMessageElm = viaTTSubscriptionDialog.querySelector(\".success-message\"),\n errorMessageElm = viaTTSubscriptionDialog.querySelector(\".error-email\"),\n errorMessageResponseElm = viaTTSubscriptionDialog.querySelector(\".error-response\"),\n emailInputElm = document.querySelector(\"#subscribeEmail\");\n httpService = new HttpService(),\n gtHelper = new GTHelper(),\n gtRecaptcha = null,\n submitBtn = viaTTSubscriptionDialog.querySelector(\".submit-btn\");\n\n submitBtn?.addEventListener(\"click\", e => {\n let captchaElm = document.querySelector(\".g-recaptcha-response\"),\n captchaErrElm = document.querySelector(\".captcha-error\"),\n emailStr = emailInputElm?.value;\n\n errorMessageResponseElm.classList.add(\"hide\");\n errorMessageElm?.classList.add(\"hide\");\n if(!emailStr || !gtHelper.validateEmail(emailStr)) {\n errorMessageElm?.classList.remove(\"hide\");\n emailInputElm?.focus();\n return;\n }\n\n captchaErrElm && (captchaErrElm.style.display = \"none\");\n if(!captchaElm?.value) {\n captchaErrElm && (captchaErrElm.style.display = \"block\");\n return;\n }\n\n submitBtn.setAttribute(\"disabled\", true);\n httpService.get(endpoint+\"&emailAddress=\"+emailStr).then(data => {\n if(data.success) {\n successMessageElm?.classList.remove(\"hide\");\n viaTTSubscriptionDialog.querySelector(\".form-area\")?.classList.add(\"hide\");\n } else {\n errorMessageResponseElm.innerHTML = data.message;\n errorMessageResponseElm.classList.remove(\"hide\");\n submitBtn.removeAttribute(\"disabled\");\n }\n })\n })\n }\n}\n\n\nGT.domContentLoadedFncList.push(GT.ViaTTSubscribe);\nGT.VideoBannerBlocks = function($element, obj) {\n $element.each(function(index, element) {\n new GT.VideoBannerBlock(element, obj);\n return false;\n });\n};\n\nGT.VideoBannerBlock = function(element, obj) {\n var _this = this;\n var _iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n var _iPhone = /iPhone/.test(navigator.userAgent) && !window.MSStream;\n var _isMobile = /Mobi/.test(navigator.userAgent) && !window.MSStream;\n\n _this.intervalId = null;\n _this.hideTimeout = obj.settings.hideTimeout || video.data(\"hide-timeout\");\n _this.forceLoadOnMobile = obj.settings.forceLoadOnMobile || false;\n _this.videoArray = [];\n _this.isIOS = _iOS;\n _this.isMobile = _isMobile;\n _this.videoArray.push(element);\n\n if (_iOS && _iPhone && iOSversion() === 10) {\n $(element).addClass('ios10-video-fullscreen');\n }\n _this.loadVideo();\n\n function iOSversion() {\n if (/iP(hone|od|ad)/.test(navigator.platform)) {\n var v = (navigator.appVersion).match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n return parseInt(v[1], 10);\n }\n }\n \n};\n\nGT.VideoBannerBlock.prototype.hideVideoAfterTimeout = function(video) {\n var _this = this;\n var currentVideo = video[0];\n currentVideo.pause();\n video.parent().removeClass(\"video-playing\").removeClass(\"showing-video\");\n if (_this.isIOS || _this.isMobile) {\n if (typeof(currentVideo.webkitExitFullscreen) !== \"undefined\") {\n currentVideo.webkitExitFullscreen();\n } else if (typeof(currentVideo.mozCancelFullscreen) !== \"undefined\") {\n currentVideo.mozCancelFullscreen();\n } else if (typeof(currentVideo.exitFullscreen) !== \"undefined\") {\n currentVideo.exitFullscreen();\n }\n }\n};\n\nGT.VideoBannerBlock.prototype.playWhenLoaded = function(video) {\n var _this = this;\n var currentVideo = video[0];\n var $container = video.closest('.js-banner-block-video');\n var $playBtn = $container.find('.js-play-video-button');\n \n _this.checkAutoPlay(video);\n\n //only on IOS\n currentVideo.addEventListener('webkitendfullscreen', function(e) {\n video.parent().removeClass(\"video-playing\");\n $playBtn.show();\n });\n\n //container\n $container[0].addEventListener('click', function(e) {\n if (e.target.classList.contains('js-play-video-button')){\n _this.playVideo(video);\n }\n else if ($container[0].classList.contains(\"banner-block--video\") && (video.parent()[0].classList.contains('video-pause') || video.parent()[0].classList.contains('video-playing'))){\n if (!e.target.classList.contains('link') && !e.target.classList.contains('video-controls')){\n if (video.parent().hasClass(\"video-pause\")){\n _this.playVideo(video);\n }else{\n _this.pauseVideo(video);\n }\n }\n }\n });\n};\n\nGT.VideoBannerBlock.prototype.playVideo = function(video) {\n var _this = this;\n var currentVideo = video[0],\n toggleVideoBtn = currentVideo.closest(\".banner-block--video\")?.querySelector(\".b-toggle-video\");\n\n currentVideo.play();\n video.parent().addClass(\"video-playing\").removeClass(\"video-pause\");\n _this.counterTimer(video);\n if(toggleVideoBtn)\n toggleVideoBtn.setAttribute(\"title\", toggleVideoBtn.dataset.pausetitle);\n}\n\nGT.VideoBannerBlock.prototype.pauseVideo = function(video) {\n var _this = this;\n var currentVideo = video[0],\n toggleVideoBtn = currentVideo.closest(\".banner-block--video\")?.querySelector(\".b-toggle-video\");\n\n currentVideo.pause();\n video.parent().addClass(\"video-pause\").removeClass(\"video-playing\");\n if(toggleVideoBtn)\n toggleVideoBtn.setAttribute(\"title\", toggleVideoBtn.dataset.playtitle);\n \n _this.hideTimeout = parseInt(video.attr(\"data-hide-timeout\"));\n if (_this.intervalId)\n clearInterval(_this.intervalId);\n}\n\nGT.VideoBannerBlock.prototype.loadVideo = function() {\n var _this = this;\n _this.videoArray.map(function(video) {\n var _video = $(video);\n video.load();\n _this.playWhenLoaded(_video);\n });\n};\n\nGT.VideoBannerBlock.prototype.showPlayButton = function(video) {\n var _this = this;\n var currentVideo = video[0];\n var $container = video.closest('.js-banner-block-video');\n var $playBtn = $container.find('.js-play-video-button');\n\n $playBtn.addClass('is-show');\n $playBtn[0].addEventListener('click', function() {\n if (_this.videoTimeOut) {\n clearTimeout(_this.videoTimeOut);\n }\n //_this.hideVideoAfterTimeout(video);\n video.parent().addClass(\"video-playing\").addClass(\"showing-video\");\n _this.counterTimer(video);\n $playBtn.hide();\n if (_this.isIOS || _this.isMobile) {\n //for android only\n if (!_this.isIOS) {\n var isPlaying = true;\n var showBtn = function() {\n if (!isPlaying) {\n screen.orientation.unlock();\n isPlaying = true;\n video.parent().removeClass(\"video-playing\");\n $playBtn.show();\n } else if (isPlaying) {\n isPlaying = false;\n }\n };\n screen.orientation.lock(\"portrait-primary\");\n currentVideo.removeEventListener('webkitfullscreenchange', showBtn);\n currentVideo.addEventListener('webkitfullscreenchange', showBtn);\n }\n currentVideo.play();\n if (typeof(currentVideo.webkitEnterFullscreen) !== \"undefined\") {\n currentVideo.webkitEnterFullscreen();\n } else if (typeof(currentVideo.webkitRequestFullscreen) !== \"undefined\") {\n currentVideo.webkitRequestFullscreen();\n } else if (typeof(currentVideo.mozRequestFullScreen) !== \"undefined\") {\n currentVideo.mozRequestFullScreen();\n }\n return;\n }\n currentVideo.play();\n });\n};\n\nGT.VideoBannerBlock.prototype.checkAutoPlay = function(video) {\n var _this = this;\n var $container = video.closest('.js-banner-block-video');\n var $playBtn = $container.find('.js-play-video-button');\n var s = window['Promise'] ? window['Promise'].toString() : '';\n if (s.indexOf('function Promise()') !== -1 || s.indexOf('function ZoneAwarePromise()') !== -1) {\n //Add a surrounding try catch for browser that could not evaluate promise\n try {\n video[0].play().then(function() {\n if(!$container.hasClass(\"mobius\") && !$container.hasClass(\"bg-gradient-animate\"))\n $container.find('.background-underlay').hide();\n \n $playBtn.hide();\n video.parent().addClass(\"video-playing\").addClass(\"showing-video\");\n _this.counterTimer(video);\n //_this.hideVideoAfterTimeout(video);\n })\n .catch(function(error) {\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (error.name === \"NotAllowedError\" || (error.name === \"AbortError\" && isSafari)) {\n _this.showPlayButton(video);\n }\n });\n } catch (error) {\n _this.showPlayButton(video);\n }\n } else {\n _this.showPlayButton(video);\n }\n};\n\nGT.VideoBannerBlock.prototype.counterTimer = function(video) {\n var _this = this;\n if (video.attr(\"data-hide-timeout\") >= 0){\n var counter = 0;\n _this.intervalId = setInterval(function() {\n counter++;\n // Display 'counter' wherever you want to display it.\n var timeplay = parseInt(_this.hideTimeout - counter);\n video.attr(\"data-hide-timeout\", timeplay);\n\n if (counter == _this.hideTimeout) {\n // Display a login box\n clearInterval(_this.intervalId);\n _this.hideVideoAfterTimeout(video);\n }\n }, 1000);\n }\n}\n\nif(typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function () {\n [\n { elm: $('.banner-block--video .video-background'), settings: { hideTimeout: 60 } }\n ].map(function (item) {\n if (item.elm.length) {\n new GT.VideoBannerBlocks(item.elm, item);\n }\n })\n });\n\nGT.VideoBlock = function() {\n const gtHelper = new GTHelper();\n let videoType = {\n local: \"local\",\n youtube: \"youtube\",\n vimeo: \"vimeo\",\n },\n videoManager = {\n state: \"paused\",\n position: \"inline\",\n type: videoType.local,\n id: null,\n videos: {}\n },\n videoPosition = {\n inline: \"inline\",\n modal: \"modal\",\n sticky: \"sticky\"\n },\n videoState = {\n paused: \"paused\",\n buffering: \"buffering\",\n playing: \"playing\"\n };\n\n videoManager.play = (videoBlockID, type) => {\n videoManager.id = videoBlockID;\n let videoBlock = videoManager.videos[videoBlockID];\n videoManager.pauseAll(videoBlockID);\n setTimeout(e => {\n switch(type) {\n case videoType.youtube:\n videoBlock.player.playVideo();\n break;\n case videoType.local:\n case videoType.vimeo:\n videoBlock.player.play();\n break;\n }\n })\n }\n\n videoManager.pauseAll = (playingID) => {\n document.exitPictureInPicture && document.exitPictureInPicture().catch(error => {});\n Object.keys(videoManager.videos).forEach(videoBlockID => {\n const videoBlock = videoManager.videos[videoBlockID];\n if(videoBlock.videoBlockElm && videoBlockID != playingID) {\n switch(videoBlock.type) {\n case videoType.youtube:\n videoBlock.player.pauseVideo();\n break;\n case videoType.vimeo:\n case videoType.local:\n videoBlock.player.pause();\n break;\n }\n delete videoBlock.videoBlockElm.dataset.playingExternalPlayer;\n }\n })\n }\n\n Array.prototype.slice.call(document.querySelectorAll(\".video-block-v2\")).forEach(function(videoBlockElm){\n let playBtn = videoBlockElm.querySelector(\".video-block-v2__play\"),\n backgroundElm = videoBlockElm.querySelector(\".video-block-v2__poster.from-iframe\"),\n videoLink = playBtn.href,\n videoID = getVideoID(videoLink),\n hasIframe = videoBlockElm.classList.contains(\"has-iframe\"),\n type = videoType.local;\n\n if(hasIframe) type = videoLink.indexOf(\"vimeo\") >= 0 ? videoType.vimeo : videoType.youtube;\n if (hasIframe && backgroundElm && !backgroundElm.dataset.bgset) {\n if(videoLink.indexOf(\"vimeo\") < 0) {\n backgroundElm.dataset.bgset = 'https://img.youtube.com/vi/' + videoID + '/maxresdefault.jpg';\n } else {\n backgroundElm.dataset.bgset = 'https://vumbnail.com/' + videoID + '.jpg';\n }\n backgroundElm.classList.add(\"lazyload\");\n }\n\n if(!playBtn.classList.contains(\"open-in-new-tab\")) {\n videoManager.videos[videoBlockElm.id] = {\n \"state\": videoState.buffering,\n \"position\": videoPosition.inline,\n \"type\": type,\n \"player\": null\n }\n playBtn.addEventListener(\"click\", e => {\n e.preventDefault();\n let currentPlayer = (e.currentTarget || e.target).closest(\".video-block-v2\"),\n isPlaysinline = currentPlayer.dataset.playsinline == \"true\";\n\n if(!isPlaysinline) {\n if(!document.querySelector(\"#external-video-player\")) {\n const externalPlayerTemplate = ` \n
    \n
    \n \n \n
    \n
    \n
    \n
    `;\n \n document.body.insertAdjacentHTML(\"beforeend\", externalPlayerTemplate);\n document.querySelector(\"#external-video-player .video-block-v2__toggle-stretch-btn\").addEventListener(\"click\", e => {\n let currentTarget = (e.currentTarget || e.target),\n externalPlayer = currentTarget.closest(\"#external-video-player\");\n if(externalPlayer.dataset.position == videoPosition.sticky) {\n externalPlayer.dataset.position = videoPosition.modal;\n document.querySelector(\".main\")?.setAttribute(\"inert\", true);\n currentTarget.setAttribute(\"aria-pressed\", false);\n document.querySelector(\"#\" + videoManager.id).dataset.position = videoPosition.modal;\n } else {\n externalPlayer.dataset.position = videoPosition.sticky;\n document.querySelector(\".main\")?.removeAttribute(\"inert\");\n currentTarget.setAttribute(\"aria-pressed\", true);\n document.querySelector(\"#\" + videoManager.id).dataset.position = videoPosition.sticky;\n }\n })\n \n document.querySelector(\"#external-video-player .video-block-v2__close-btn\").addEventListener(\"click\", e => {\n let currentTarget = (e.currentTarget || e.target).closest(\"#external-video-player\");\n currentTarget.classList.add(\"closing\");\n let playerContainer = document.querySelector('.video-block-v2__player-container');\n setTimeout(e => {\n document.querySelector(\".main\")?.removeAttribute(\"inert\");\n videoManager.pauseAll();\n currentTarget.classList.remove(\"closing\");\n delete currentTarget.dataset.position;\n let errorMessageElm = playerContainer?.querySelector('.error-message');\n if(errorMessageElm) {\n errorMessageElm.style.display = \"none\";\n errorMessageElm.innerHTML = \"\";\n }\n\n videoManager.state = videoState.paused;\n gtHelper.dispatchEvt(\"onStateChange\", videoBlockElm);\n }, 500)\n })\n }\n\n\n let externalPlayer = document.querySelector(\"#external-video-player\");\n externalPlayer.dataset.allowsticky = currentPlayer.dataset.allowsticky ? true : false;\n externalPlayer.dataset.hasiframe = type == videoType.local ? false : true;\n currentPlayer.dataset.position = videoPosition.modal;\n } else if(!currentPlayer.querySelector(\".video-block-v2__player-area\")) {\n const playerTemplate = ` \n
    \n
    \n
    \n
    \n
    `;\n \n currentPlayer.querySelector(\".video-block-v2__container\").insertAdjacentHTML(\"beforeend\", playerTemplate);\n }\n\n let playerArea = isPlaysinline ? currentPlayer.querySelector(\".video-block-v2__player-area\") : document.querySelector(\"#external-video-player .video-block-v2__player-area\");\n \n if(!isPlaysinline) {\n setTimeout(e => {\n document.querySelector(\"#external-video-player\").dataset.position = videoPosition.modal;\n document.querySelector(\".main\")?.setAttribute(\"inert\", true);\n currentPlayer.dataset.playingExternalPlayer = true;\n })\n }\n if(isUnlistedVimeoURL(videoLink)) {\n if(videoLink.indexOf(\"player.vimeo.com\") < 0) {\n let unlisted_hash = getUnlistedHashFromPath(videoLink);\n videoLink = \"https://player.vimeo.com/video/\" + videoID + \"?h=\" + unlisted_hash;\n } \n startVideo(currentPlayer, playerArea, videoLink, type, isPlaysinline);\n } else {\n startVideo(currentPlayer, playerArea, hasIframe ? videoID : videoLink, type, isPlaysinline);\n }\n })\n\n videoBlockElm.addEventListener(\"onStateChange\", e => {\n e.target.dataset.state = videoManager.state;\n })\n }\n })\n\n function getVideoID(link){\n let videoID;\n if(link.indexOf(\"vimeo\") < 0) {\n videoID = link.match(/(?:youtube(?:-nocookie)?\\.com\\/(?:[^\\/\\n\\s]+\\/\\S+\\/|(?:v|e(?:mbed)?)\\/|\\S*?[?&]v=)|youtu\\.be\\/)([a-zA-Z0-9_-]{11})/);\n if (!videoID) {\n // check with other regex\n videoID = link.match(/^(https?:)?(\\/\\/)?((www\\.|m\\.)?youtube(-nocookie)?\\.com\\/((watch)?\\?(feature=\\w*&)?vi?=|embed\\/|vi?\\/|e\\/)|youtu.be\\/)([\\w\\-]{10,20})/i);\n videoID = videoID ? videoID[9] : \"\";\n } else {\n videoID = videoID[1];\n }\n } else {\n //videoID = link.match(/https?:\\/\\/(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^\\/]*)\\/videos\\/|album\\/(\\d+)\\/video\\/|video\\/|)(\\d+)(?:$|\\/|\\?)/);\n\n // Change regex above to new regex below to handle this url: https://vimeo.com/agencyseven/review/209433002/844533f04d\n videoID = link.match(/https?:\\/\\/(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^\\/]*)\\/videos\\/|album\\/(\\d+)\\/video\\/|video\\/|[\\w]+\\/review\\/|)(\\d+)(?:\\/(\\w+))?(?:$|\\/|\\?)/);\n videoID = videoID ? videoID[3] : \"\";\n }\n return videoID;\n }\n\n function isUnlistedVimeoURL(url) {\n let pattern = /https:\\/\\/vimeo\\.com\\/(\\d+)\\/[0-9a-fA-F]+/;\n if(url.indexOf('player.vimeo.com') >= 0) {\n pattern = /https:\\/\\/player\\.vimeo\\.com\\/video\\/(\\d+)\\?h=[0-9a-zA-Z]+/;\n }\n \n return pattern.test(url);\n }\n\n function getUnlistedHashFromPath(url) {\n const pattern = /vimeo\\.com\\/\\d+\\/([0-9a-zA-Z]+)/;\n const match = url.match(pattern);\n return match ? match[1] : null;\n }\n\n function startVideo(videoBlockElm, playerArea, videoSource, type, isPlaysinline){\n const playerID = `Player_${videoSource}`;\n\n videoManager.type = type;\n videoManager.position = videoPosition.inline;\n\n function setFocus() {\n if(isPlaysinline)\n playerArea.focus();\n else {\n setTimeout(e => {\n window.getComputedStyle(document.querySelector(\".video-block-v2__toggle-stretch-btn\")).display != \"none\" ? document.querySelector(\".video-block-v2__toggle-stretch-btn\").focus() : document.querySelector(\".video-block-v2__close-btn\").focus();\n }, 500)\n }\n }\n\n if(type == videoType.youtube) {\n function startYT(){\n if((videoBlockElm.id != videoManager.id && !isPlaysinline) || (!videoManager.videos[videoBlockElm.id].player && isPlaysinline)) {\n playerArea.innerHTML = `
    `;\n let ytplayer = new YT.Player(playerID, {\n videoId: videoSource,\n playerVars: { 'autoplay': 1, 'playsinline': 1 },\n events: {\n 'onReady': function(e){\n videoManager.play(videoBlockElm.id, type);\n },\n 'onStateChange': function(playerStatus){\n switch(playerStatus.data) {\n case 1:\n videoManager.state = videoState.playing;\n break;\n case 3:\n videoManager.state = videoState.buffering;\n break;\n default:\n videoManager.state = videoState.paused;\n break;\n }\n gtHelper.dispatchEvt(\"onStateChange\", videoBlockElm);\n },\n 'onError': function(e){\n videoManager.state = videoState.paused;\n gtHelper.dispatchEvt(\"onStateChange\", videoBlockElm);\n }\n }\n }\n );\n\n videoManager.videos[videoBlockElm.id].videoBlockElm = videoBlockElm;\n videoManager.videos[videoBlockElm.id].player = ytplayer;\n } else {\n videoManager.play(videoBlockElm.id, type);\n }\n setFocus();\n }\n \n videoManager.state = videoState.buffering;\n gtHelper.dispatchEvt(\"onStateChange\", videoBlockElm);\n if ((typeof (YT) == 'undefined' || typeof (YT.Player) == 'undefined')) {\n var tag = document.createElement('script');\n tag.src = \"https://www.youtube.com/iframe_api\";\n var firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n window.onYouTubePlayerAPIReady = function () {\n startYT();\n };\n } else\n startYT();\n } else if(type == videoType.vimeo) {\n function startVimeo(){\n if((videoBlockElm.id != videoManager.id && !isPlaysinline) || (!videoManager.videos[videoBlockElm.id].player && isPlaysinline)) {\n playerArea.innerHTML = `
    `;\n let vimeoPlayer = new Vimeo.Player(playerID, {\n id: videoSource,\n autoplay: true,\n pip: 0\n });\n // Check if un-listed video url\n if(isUnlistedVimeoURL(videoSource)) {\n vimeoPlayer = new Vimeo.Player(playerID, {\n autoplay: true,\n pip: 0,\n url: videoSource,\n });\n }\n vimeoPlayer.ready().catch(e => {\n videoManager.state = videoState.paused;\n videoManager.id = null;\n gtHelper.dispatchEvt(\"onStateChange\", videoBlockElm);\n let playerContainer = document.querySelector('.video-block-v2__player-container');\n let errorMessageElm = playerContainer?.querySelector('.error-message');\n if(errorMessageElm) {\n let errorMsg = e.toString();\n if(errorMsg.indexOf(\"not found\") >= 0 || errorMsg.indexOf(\"is not embeddable\") >= 0) {\n errorMessageElm.innerHTML = e.toString();\n errorMessageElm.style.display = \"flex\";\n }\n }\n })\n\n vimeoPlayer.on(\"play\", e => {\n videoManager.state = videoState.playing;\n gtHelper.dispatchEvt(\"onStateChange\", videoBlockElm);\n })\n vimeoPlayer.on(\"pause\", e => {\n videoManager.state = videoState.paused;\n gtHelper.dispatchEvt(\"onStateChange\", videoBlockElm);\n })\n vimeoPlayer.on(\"bufferstart\", e => {\n videoManager.state = videoState.buffering;\n gtHelper.dispatchEvt(\"onStateChange\", videoBlockElm);\n })\n vimeoPlayer.on(\"bufferend\", e => {\n videoManager.state = videoState.playing;\n gtHelper.dispatchEvt(\"onStateChange\", videoBlockElm);\n })\n\n vimeoPlayer.on('enterpictureinpicture', () => {\n videoBlockElm.dataset.playingExternalPlayer = true;\n if(!isPlaysinline) {\n delete playerArea.closest(\"#external-video-player\").dataset.position;\n document.querySelector(\".main\")?.removeAttribute(\"inert\");\n document.querySelector(\"#\" + videoManager.id).dataset.position = videoPosition.sticky;\n }\n });\n vimeoPlayer.on('leavepictureinpicture', () => {\n if(!isPlaysinline) {\n document.querySelector(\"#\" + videoManager.id).dataset.position = videoPosition.modal;\n playerArea.closest(\"#external-video-player\").dataset.position = videoPosition.modal;\n playerArea.closest(\"#external-video-player\").querySelector(\".video-block-v2__toggle-stretch-btn\").focus();\n document.querySelector(\".main\")?.setAttribute(\"inert\", true);\n }\n });\n \n videoManager.play(videoBlockElm.id, type);\n videoManager.videos[videoBlockElm.id].videoBlockElm = videoBlockElm;\n videoManager.videos[videoBlockElm.id].player = vimeoPlayer;\n } else \n videoManager.play(videoBlockElm.id, type);\n\n setFocus();\n }\n \n videoManager.state = videoState.buffering;\n gtHelper.dispatchEvt(\"onStateChange\", videoBlockElm);\n if (typeof (Vimeo) == 'undefined') {\n var tag = document.createElement('script');\n tag.src = \"https://player.vimeo.com/api/player.js\";\n tag.onload = function() {\n startVimeo();\n }\n\n var firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n } else\n startVimeo();\n } else {\n if((videoBlockElm.id != videoManager.id && !isPlaysinline) || (!videoManager.videos[videoBlockElm.id].player && isPlaysinline)) {\n playerArea.innerHTML = ``;\n let nativePlayer = playerArea.querySelector(\"video\");\n nativePlayer.addEventListener(\"playing\", e => {\n videoManager.state = videoState.playing;\n gtHelper.dispatchEvt(\"onStateChange\", videoBlockElm);\n })\n nativePlayer.addEventListener(\"pause\", e => {\n videoManager.state = videoState.paused;\n gtHelper.dispatchEvt(\"onStateChange\", videoBlockElm);\n })\n nativePlayer.addEventListener(\"waiting\", e => {\n videoManager.state = videoState.buffering;\n gtHelper.dispatchEvt(\"onStateChange\", videoBlockElm);\n })\n\n videoManager.play(videoBlockElm.id, type);\n videoManager.videos[videoBlockElm.id].videoBlockElm = videoBlockElm;\n videoManager.videos[videoBlockElm.id].player = nativePlayer;\n\n nativePlayer.addEventListener('enterpictureinpicture', () => {\n videoBlockElm.dataset.playingExternalPlayer = true;\n if(!isPlaysinline) {\n delete playerArea.closest(\"#external-video-player\").dataset.position;\n document.querySelector(\".main\")?.removeAttribute(\"inert\");\n document.querySelector(\"#\" + videoManager.id).dataset.position = videoPosition.sticky;\n }\n });\n nativePlayer.addEventListener('leavepictureinpicture', () => {\n if(!isPlaysinline) {\n playerArea.closest(\"#external-video-player\").dataset.position = videoPosition.modal;\n playerArea.closest(\"#external-video-player\").querySelector(\".video-block-v2__close-btn\").focus();\n document.querySelector(\".main\")?.setAttribute(\"inert\", true);\n document.querySelector(\"#\" + videoManager.id).dataset.position = videoPosition.modal;\n }\n });\n } else \n videoManager.play(videoBlockElm.id, type);\n\n \n setFocus();\n }\n\n\n }\n\n GT.listFunctionsTriggerInScrollEvent.videoBlock = function() {\n if(!GT.isScrollingUp && GT.wWidth >= GT.breakPoints.desktop_md) {\n let videoModal = document.querySelector(\"#external-video-player[data-position=modal][data-allowsticky=true]\");\n if(videoModal) {\n if(videoModal.dataset.hasiframe == \"true\")\n videoModal.dataset.position = videoPosition.sticky;\n else {\n let videoArea = videoModal.querySelector(\"video\");\n if(videoArea) {\n videoArea.requestPictureInPicture && videoArea.requestPictureInPicture().catch(e => {\n console.log(e);\n });\n }\n }\n document.querySelector(\".main\")?.removeAttribute(\"inert\");\n document.querySelector(\"#\" + videoModal.dataset.id).dataset.position = videoPosition.sticky;\n }\n }\n }\n}\n\nGT.domContentLoadedFncList.push(function(){\n GT.VideoBlock();\n});\nfunction GTVideoSlider(){\n let player = document.querySelector(\".main-video-slider--player\");\n if(player) {\n let thumbInPlayer = player.querySelector(\"[data-link]\"),\n playlist = document.querySelector(\".main-video-slider--list-container\"),\n scrollUpBtn = document.querySelector(\".main-video-slider--scroll.up\"),\n scrollDownBtn = document.querySelector(\".main-video-slider--scroll.down\"),\n frameInPlayer = player.querySelector(\".main-video-slider--player-container\"),\n videoSliderTitle = document.querySelector(\".video-slider-title\");\n deletedThumb = false;\n \n function startVideo(link, type){\n let videoLink = \"about:blank\";\n if(type == \"youtube\") {\n \n let videoID = link.match(/^(https?:)?(\\/\\/)?((www\\.|m\\.)?youtube(-nocookie)?\\.com\\/((watch)?\\?(feature=\\w*&)?vi?=|embed\\/|vi?\\/|e\\/)|youtu.be\\/)([\\w\\-]{10,20})/i);\n videoID = videoID ? videoID[9] : \"\";\n videoLink = \"https://www.youtube.com/embed/\" + videoID + \"?autoplay=1&rel=0\";\n frameInPlayer.innerHTML = '
    ';\n \n function startYT(){\n new YT.Player(\"YTPlayer\", {\n videoId: videoID,\n playerVars: { 'autoplay': 1, 'playsinline': 1 },\n events: {\n 'onReady': function(e){\n e.target.playVideo();\n }\n }\n }\n );\n }\n \n if ((typeof (YT) == 'undefined' || typeof (YT.Player) == 'undefined')) {\n var tag = document.createElement('script');\n tag.src = \"https://www.youtube.com/iframe_api\";\n var firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n window.onYouTubePlayerAPIReady = function () {\n startYT();\n };\n } else\n startYT();\n } else {\n let videoID = link.match(/https?:\\/\\/(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^\\/]*)\\/videos\\/|album\\/(\\d+)\\/video\\/|video\\/|[\\w]+\\/review\\/|)(\\d+)(?:\\/(\\w+))?(?:$|\\/|\\?)/);\n videoID = videoID ? videoID[3] : \"\";\n videoLink = \"https://player.vimeo.com/video/\" + videoID + \"?title=1&byline=0&portrait=0&autoplay=true\";\n frameInPlayer.innerHTML = '';\n }\n\n frameInPlayer.focus();\n }\n\n thumbInPlayer.addEventListener(\"click\", function(e){\n let currentThumb = e.currentTarget;\n startVideo(currentThumb.dataset.link, currentThumb.dataset.type);\n thumbInPlayer.remove();\n deletedThumb = true;\n })\n\n if(playlist) {\n Array.prototype.slice.call(playlist.querySelectorAll(\"[data-link]\")).forEach(function(playlistItemElm) {\n playlistItemElm.addEventListener('click', function(e){\n playlist.querySelector(\".selected\").classList.remove(\"selected\");\n let currentThumb = e.currentTarget;\n currentThumb.classList.add(\"selected\");\n if(!deletedThumb) {\n thumbInPlayer.remove();\n deletedThumb = true;\n }\n startVideo(currentThumb.dataset.link, currentThumb.dataset.type);\n })\n })\n\n scrollUpBtn.addEventListener(\"click\", function(){\n playlist.scrollTop = 0;\n scrollDownBtn.classList.remove(\"hide\");\n scrollUpBtn.classList.add(\"hide\");\n })\n scrollDownBtn.addEventListener(\"click\", function(){\n playlist.scrollTop = 1000;\n scrollUpBtn.classList.remove(\"hide\");\n scrollDownBtn.classList.add(\"hide\");\n })\n }\n }\n}\n\nGT.domContentLoadedFncList.push(function(){\n GTVideoSlider();\n});\n\n////////////////////////////\n// GT VIEWPORT FUNCTIONS //\n////////////////////////////\n\nGT.View = function ($elem) {\n try {\n this.currentElem = $elem;\n var container = $elem.closest('.change-view-cont').data('container');\n if (!container) {\n container = '.expert-container'; // just for legacy purposes\n }\n var $container = $(container);\n this.switchView($elem, $container);\n } catch(e) {\n\n }\n};\nGT.View.prototype.changeView = function ($container, $currentElem) {\n let clampname = $container[0].dataset.clampname;\n $('.change-view.enabled').removeClass('enabled').attr(\"aria-pressed\", \"false\");\n $currentElem.addClass('enabled').attr(\"aria-pressed\", \"true\");\n if ($currentElem.hasClass('change-grid-view')) {\n $container.removeClass('list-view');\n $container.addClass('grid-view');\n GT.clampRevertToOriginalText(clampname);\n GT.clampText(clampname, true);\n } else {\n $container.removeClass('grid-view');\n $container.addClass('list-view');\n GT.clampRevertToOriginalText(clampname);\n GT.clampText(clampname, true);\n }\n};\n\nGT.View.prototype.changeViewMobile = function ($container) {\n $(\".change-view.change-list-view\").removeClass('enabled');\n $(\".change-view.change-grid-view\").addClass('enabled');\n // add the class to container\n $container.removeClass(\"list-view\");\n $container.addClass(\"grid-view\");\n};\n\nGT.View.prototype.switchView = function ($elem, $container) {\n var me = this;\n\n $elem.on('click', function (e) {\n e.preventDefault();\n var $currentElem = $(this);\n if ($currentElem.hasClass(\"enabled\")) {\n return false;\n }\n me.changeView($container, $currentElem);\n });\n};\n\nif (typeof isV1GT == \"undefined\")\n GT.domContentLoadedFncList.push(function(){\n new GT.View($('.change-view'));\n });\n\nGT.GTVisitorProfile = function ($element) {\n\tvisitorProfileTabs();\n\tcloneArticleToOther();\n\tloadMoreData();\n\n\tfunction loadMoreData() {\n\t\t$(\"#bookmarks_list__loadmore\").click(function () {\n\t\t\tvar _this = $(this);\n\t\t\t_this.addClass('loading');\n\t\t\tvar pageIndexAttr = _this.attr('page-index');\n\t\t\tvar pageIndex = 1;\n\t\t\tif (pageIndexAttr)\n\t\t\t\tpageIndex = parseInt(pageIndexAttr) + 1;\n\n\t\t\tvar url = \"/Bookmark/GetMoreBookmarkedArticles\";\n\t\t\t$.get(url,\n\t\t\t\t{\n\t\t\t\t\tpageIndex: pageIndex\n\t\t\t\t}).done(function (data) {\n\t\t\t\t\tif (data && data !== '') {\n\t\t\t\t\t\t$(\"#bookmarks_list .visitor-profile__details--container\").append(data.data);\n\t\t\t\t\t\t_this.attr('page-index', pageIndex);\n\t\t\t\t\t\tif (data.showloadmore) {\n\t\t\t\t\t\t\t$(\"#bookmarks_list__loadmore\").show();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$(\"#bookmarks_list__loadmore\").hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t_this.removeClass('loading');\n\t\t\t\t\t$(\"#bookmarks_list .visitor-profile__details--container .visitor-profile__details--item.hidden\").fadeIn(1000);\n\t\t\t\t});\n\t\t\t_this.blur();\n\t\t});\n\n\t\t$(\"#archives_list__loadmore\").click(function () {\n\t\t\tvar _this = $(this);\n\t\t\t_this.addClass('loading');\n\t\t\tvar pageIndexAttr = _this.attr('page-index');\n\t\t\tvar pageIndex = 1;\n\t\t\tif (pageIndexAttr)\n\t\t\t\tpageIndex = parseInt(pageIndexAttr) + 1;\n\t\t\tvar url = \"/Bookmark/GetMoreArchivedArticle\";\n\t\t\t$.get(url,\n\t\t\t\t{\n\t\t\t\t\tpageIndex: pageIndex\n\t\t\t\t}).done(function (data) {\n\t\t\t\t\tif (data && data !== '') {\n\t\t\t\t\t\t$(\"#archives_list .visitor-profile__details--container\").append(data.data);\n\t\t\t\t\t\t_this.attr('page-index', pageIndex);\n\t\t\t\t\t\tif (data.showloadmore) {\n $(\"#archives_list__loadmore\").show();\n\t\t\t\t\t\t} else {\n $(\"#archives_list__loadmore\").hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t_this.removeClass('loading');\n\t\t\t\t\t$(\"#archives_list .visitor-profile__details--container .visitor-profile__details--item.hidden\").fadeIn(1000);\n\t\t\t\t});\n\t\t\t_this.blur();\n\t\t});\n\t}\n\n\tfunction RefreshBookmarksData() {\n\t\tvar loadMoreButton = $(\"#bookmarks_list__loadmore\");\n\t\tvar pageIndexAttr = loadMoreButton.attr('page-index');\n\t\tvar pageIndex = 1;\n\t\tif (pageIndexAttr)\n\t\t\tpageIndex = parseInt(pageIndexAttr);\n\t\tvar url = \"/Bookmark/RefreshBookmarksData\";\n\t\t$.get(url,\n\t\t\t{\n\t\t\t\tpageIndex: pageIndex\n\t\t\t}).done(function (data) {\n\t\t\t\tif (data && data !== '') {\n\t\t\t\t\t$('#visitor_archives_tab').find('.total-count').text(data.totalarchived);\n\t\t\t\t\t$('#visitor_bookmarks_tab').find('.total-count').text(data.totalbookmark);\n\t\t\t\t\t$(\"#bookmarks_list .visitor-profile__details--container\").html(data.data);\n\t\t\t\t\tif (data.showloadmore) {\n\t\t\t\t\t\t$(\"#bookmarks_list__loadmore\").css('display', 'block');\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(\"#bookmarks_list__loadmore\").hide();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t$(\"#bookmarks_list .visitor-profile__details--container .visitor-profile__details--item.hidden\").fadeIn(1000);\n\t\t\t});\n\t}\n\t\n\tfunction RefreshArchivedsData(keepSwitchTab) {\n\t\tvar _this = $(\"#archives_list__loadmore\");\n\t\tvar pageIndexAttr = _this.attr('page-index');\n\t\tvar pageIndex = 1;\n\t\tif (pageIndexAttr && keepSwitchTab)\n\t\t\tpageIndex = parseInt(pageIndexAttr);\n\t\tvar url = \"/Bookmark/RefreshArchivedsData\";\n\t\t$.get(url,\n\t\t\t{\n\t\t\t\tpageIndex: pageIndex\n\t\t\t}).done(function (data) {\n\t\t\t\tif (data && data !== '') {\n\t\t\t\t\t$('#visitor_archives_tab').find('.total-count').text(data.totalarchived);\n\t\t\t\t\t$('#visitor_archives_tab').attr('moved-item', 'false');\n\t\t\t\t\t$(\"#archives_list .visitor-profile__details--container\").html(data.data);\n\t\t\t\t\tif (data.showloadmore) {\n\t\t\t\t\t\t$(\"#archives_list__loadmore\").css('display', 'block');\n\t\t\t\t\t\t$(\"#archives_list__loadmore\").attr('page-index', pageIndex);\n\t\t\t\t\t} else {\n $(\"#archives_list__loadmore\").hide();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t$(\"#archives_list .visitor-profile__details--container .visitor-profile__details--item.hidden\").fadeIn(1000);\n\t\t\t});\n\t}\n\n\tfunction visitorProfileTabs() {\n\t\t$('.visitor-profile__tab').click(function () {\n\t\t\tvar _this = $(this);\n\t\t\t_this.parent().siblings().removeClass('active');\n\t\t\t_this.parents('.visitor-profile__container').find('.visitor-profile__details').removeClass('active');\n\t\t\t_this.parent().addClass('active');\n\t\t\tvar _showTarget = _this.attr('data-target');\n\t\t\t_this.parents('.visitor-profile__container').find(_showTarget).addClass('active');\n\t\t\tif (_this.attr('moved-item') == 'true') {\n\t\t\t\tRefreshArchivedsData();\n\t\t\t}\n\n\t\t});\n\t}\n\n\tfunction cloneArticleToOther() {\n\t\t$(document).on('click', '.remove-saved__article', function () {\n\t\t\tvar _this = $(this);\n\t\t\t_this.addClass('loading');\n\t\t\tvar url = \"/Bookmark/Archived\";\n\t\t\tvar bookMarkId = _this.attr('articlebookmark-id');\n\t\t\tvar dataObject = { \"articleBookmarkId\": bookMarkId };\n\t\t\t$.ajax({\n\t\t\t\ttype: \"POST\",\n\t\t\t\turl: url,\n\t\t\t\tcontentType: \"application/json\",\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: JSON.stringify(dataObject),\n\t\t\t\tsuccess: function (data) {\n\t\t\t\t\tif (data.data) {\n\t\t\t\t\t\t$('#visitor_archives_tab').attr('moved-item', 'true');\n\t\t\t\t\t\tRefreshBookmarksData(true);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: function (xhr) {\n\t\t\t\t\tconsole.error(xhr);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\t$(document).on('click', '.remove-archived__article', function () {\n\t\t\tvar _this = $(this);\n\t\t\t_this.addClass('loading');\n\t\t\tvar url = \"/Bookmark/RemoveArchived\";\n\t\t\tvar bookMarkId = _this.attr('articlebookmark-id');\n\t\t\tvar dataObject = { \"articleBookmarkId\": bookMarkId };\n\t\t\t$.ajax({\n\t\t\t\ttype: \"POST\",\n\t\t\t\turl: url,\n\t\t\t\tcontentType: \"application/json\",\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: JSON.stringify(dataObject),\n\t\t\t\tsuccess: function (data) {\n\t\t\t\t\tif (data.data) {\n\t\t\t\t\t\t_this.parents('.visitor-profile__details--item').remove();\n\t\t\t\t\t\tRefreshArchivedsData(true);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: function (xhr) {\n\t\t\t\t\tconsole.error(xhr);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n};\n\nGT.GTWraptextButton = function($elem, option) {\n var extra = option.settings.extra || 0;\n var padding = option.settings.padding || 0;\n var $rulerDiv = $('#rulerDiv');\n if ($rulerDiv.length === 0) {\n $('body').append('');\n $rulerDiv = $('#rulerDiv');\n }\n\n $.each($elem, function(index, element) {\n calculate(element);\n $(window).on('resize', calculate(element));\n });\n\n function calculate(element) {\n var text = $(element).text();\n var width = $(element).width();\n $rulerDiv.css('font-size', $(element).css('font-size'));\n $rulerDiv.text(text);\n var totalWidth = $rulerDiv.width() + extra;\n if (totalWidth >= width) {\n $(element).addClass('free-row-button');\n }else{\n $(element).removeClass('free-row-button');\n }\n }\n};\nvar SNE = SNE || {};\n\nSNE.mediaFiltersMobile = SNE.mediaFiltersMobile || (function () {\n\n function init() {\n\n var $toggle = $('.toggle-filters-slideout'),\n $pageContainer = $('.page'),\n $mobileFilters = $('.mobile-filters'),\n $nextButton = $('.mobile-filters li > a'),\n $checkBox = $('.mobile-filters li input'),\n $backButton = $('.filters-header .back-button'),\n $doneButton = $('.filters-header .done-button'),\n $toPage,\n toPageID,\n $currentPage = $pageContainer,\n pageNum = 0, // 0 = top level...\n pageHistory,\n shiftedClass = 'shifted',\n screenWidth = window.innerWidth,\n screenHeight = window.innerHeight,\n timer,\n cookieName = 'mobileFilterNavActive',\n resize = false,\n url;\n\n // Toggle mobile filters\n $toggle.on('click', function (e) {\n e.preventDefault();\n $mobileFilters.fadeIn(200);\n pageNum = 1;\n pageHistory = ['home'];\n // createCookie(cookieName, cookieValue, 1); // Set the cookie\n $pageContainer.toggleClass('off-screen');\n $('html').toggleClass('overflowHidden--mobile');\n });\n\n setState();\n\n // Go to children\n $nextButton.on('click', function (e) {\n var $this = $(this);\n\n if ($this.parent('li').hasClass('ctatag')) {\n return true;\n }\n e.preventDefault();\n //if the link is on the last level make the anchor control the sibling checkbox\n if (!$this.parent().hasClass('has-children')) {\n var nextCheckbox = $this.siblings('input[type=checkbox]')\n if ($this.attr('href').slice(1) == nextCheckbox.attr('id')) {\n nextCheckbox.prop('checked', !nextCheckbox.prop('checked'));\n url = nextCheckbox.attr('data-url');\n toggleCheckbox();\n }\n } else {\n // open next children pane\n toPageID = $this.siblings('ul').attr('id');\n $toPage = $('#' + toPageID);\n $currentPage = $toPage;\n $toPage.addClass('shifted');\n\n // Store the ID so we can use it when clicking the back button\n pageHistory[pageNum] = toPageID;\n pageNum += 1;\n }\n });\n\n // Go back\n $backButton.on('click', function (e) {\n resize = false;\n\n if (pageNum === 1) {\n backToSite();\n // un-lock scroll position\n var html = $('html');\n //var scrollPosition = html.data('scroll-position');\n html.css('overflow', html.data('previous-overflow'));\n } else {\n pageNum -= 1;\n // Save current page ID\n toPageID = pageHistory[pageNum];\n $currentPage = $('#' + toPageID);\n $currentPage.removeClass(shiftedClass);\n pageHistory.pop(); // Remove last item in array\n }\n\n e.preventDefault();\n });\n\n // Put the filters back to the same position after a refresh\n function setState() {\n\n var cookieValue = readCookie(cookieName);\n // console.log(pageHistory);\n if (cookieValue) {\n var cookieValueArr = cookieValue.split('|'),\n arrLen = cookieValueArr.length,\n toPageID = cookieValueArr[arrLen - 1],\n $toPage = $('#' + toPageID),\n i = 0;\n\n pageHistory = cookieValueArr;\n pageNum = pageHistory.length;\n\n // Add shifted class to each corresponding item in array\n for (i; i < arrLen; i++) {\n $('#' + cookieValueArr[i]).addClass(shiftedClass);\n }\n\n // If not on the first page\n if (arrLen > 1) {\n $mobileFilters.fadeIn(200);\n $pageContainer.addClass('off-screen');\n $('html').addClass('overflowHidden--mobile');\n }\n }\n }\n\n // Toggle Checkbox\n $checkBox.change(function () {\n url = $(this).attr('data-url')\n toggleCheckbox();\n });\n\n function toggleCheckbox() {\n\n window.location.href = url;\n\n if ($(this).is(':checked')) {\n\n // To set the cookie trail\n var cookieArr = pageHistory.join('|');\n createCookie(cookieName, cookieArr, 1); // Set the cookie\n\n // Add selected styling\n $(this).parent('li').not('.disabled').addClass('selected');\n } else {\n // Remove selected styling\n $(this).parent('li').removeClass('selected');\n }\n }\n\n // Done\n $doneButton.on('click', function (e) {\n e.preventDefault();\n\n resize = false;\n backToSite();\n });\n\n // Delay the resize function till after resizing has stopped\n $(window).bind('resize', function () {\n resize = true;\n timer && clearTimeout(timer);\n timer = setTimeout(resetOnResize, 200);\n });\n\n function resetOnResize() {\n screenWidth = window.innerWidth;\n screenHeight = window.innerHeight;\n setDimensions();\n\n if ($pageContainer.hasClass('off-screen')) {\n if (pageNum !== 1) {\n resize = false;\n }\n }\n\n if (screenWidth > 768) {\n backToSite();\n }\n }\n\n function setDimensions() { // And now a bit of layout\n $mobileFilters.css({\n height: screenHeight\n });\n }\n\n setDimensions();\n\n function backToSite() {\n $pageContainer.removeClass('off-screen');\n // Slide page back\n resize = true;\n\n $('html').removeClass('overflowHidden--mobile');\n $('.focus').removeClass('focus');\n $('.shifted').removeClass('shifted');\n // Fade out filter pages and put back into position\n $mobileFilters.fadeOut(200);\n // Reset page num to 0\n pageNum = 0;\n createCookie(cookieName, '', -1); //remove cookie\n }\n }\n\n return {\n init: init\n };\n\n}());\n\nGT.domContentLoadedFncList.push(function(){\n SNE.mediaFiltersMobile.init();\n});\nGT.Initiator = function (__object) {\n // if test passed (selector present on site) - fire function form current object on obj context (passing as argument selector and arguments or empty)\n var __$tmp = $(__object.test);\n try {\n if (__$tmp.length && __object.constr)\n new __object.constr(__$tmp, __object);\n } catch (exp) {\n console.warn(exp);\n }\n};\n\n$(function () {\n document.documentElement.setAttribute('data-useragent', navigator.userAgent);\n GT.Cookies = new GTCookies();\n GT.Cookies.cookieNotify();\n SVGInjector(document.querySelectorAll('img[src*=\".svg\"]'));\n\n GT.wHeight = window.innerHeight;\n GT.wWidth = window.innerWidth;\n GT.bodyWidth = document.body.clientWidth;\n document.documentElement.style.setProperty('--window-height', GT.wHeight + 'px');\n GT.isTouchDevice = GT.isTouchDevice();\n GT.domContentLoadedFncList.forEach(function(fnc){\n try {\n fnc();\n } catch (e) {\n console.log(e);\n }\n })\n initTabPanelActionHandler();\n\n GT.GTObjects = [\n // array of functions to check if they should be fired\n { constr: GT.StickyHeader, test: '.main-header', settings: { } },\n { constr: GT.TopBannerMessageForNoStickyHeader, test: '.main-header', settings: { } },\n { constr: GT.TopBannerMessageForNoStickyHeader, test: '.campaign-header', settings: { } },\n { constr: GT.GTInsightArticle, test: '.insights-banner__block', settings: {} },\n { constr: GT.Reveal, test: '.scroll-reveal__container', settings: { rvlItemClass: 'reveal-item' } },\n { constr: GT.Clamp, test: '.mega__level .article-tile__content-container .content .title', settings: { clamp: 2, isHidden: true } }, // megamenu promoted content heading\n { constr: GT.Clamp, test: '.mega__level .article-tile__content-container .content-bottom .text', settings: { clamp: 5, isHidden: true } }, // megamenu promoted content\n { constr: GT.Clamp, test: '.about-us-block .title', settings: { clamp: 5, charLimit: 150 } },\n { constr: GT.Clamp, test: '.about-us-block .page-name', settings: { clamp: 2, charLimit: 60 } },\n { constr: GT.Clamp, test: '.about-us-block .page-summary', settings: { clamp: 3, charLimit: 150 } },\n { constr: GT.Clamp, test: '.trending-content-block .description', settings: { clamp: 2, charLimit: 60 } },\n { constr: GT.Clamp, test: '.news-block .news-title', settings: { clamp: 3, charLimit: 60 } },\n { constr: GT.Clamp, test: '.news-block .news-text', settings: { clamp: 5, charLimit: 150 } },\n { constr: GT.Clamp, test: '.single-event-block .event-name-single span a, .single-event-block .event-name span a', settings: { clamp: 2, charLimit: 50 } },\n { constr: GT.Clamp, test: '.double-banner-block .title', settings: { clamp: 3, charLimit: 60 } },\n { constr: GT.Clamp, test: '.double-banner-block p', settings: { clamp: 6, charLimit: 200 } },\n { constr: GT.Clamp, test: '.tombstone-block-container .item-client', settings: { clamp: 4, charLimit: 120 } },\n { constr: GT.Clamp, test: '.tombstone-block-container .item-transaction', settings: { clamp: 3, charLimit: 60 } },\n { constr: GT.Clamp, test: '.tombstone-block-container .item-business', settings: { clamp: 4, charLimit: 120 } },\n { constr: GT.Clamp, test: '.career-landing-page-v2 .block-title-24', settings: { clamp: 3, charLimit: 60 } },\n { constr: GT.Clamp, test: '.career-landing-page-v2 .careers-block .btn-secondary', settings: { clamp: 4, charLimit: 200 } },\n { constr: GT.Swiper, test: '.campaign-slider:not(.slideroff)', settings: { type: \"dotted-pagination\", el: \".swiper-pagination\" } },\n { constr: GT.Swiper, test: '.about-us-slider:not(.slideroff)' },\n { constr: GT.Swiper, test: '.news-slider:not(.slideroff)' },\n { constr: GT.Swiper, test: '.figureCarousel', settings: { type: \"single_slide\" } },\n { constr: GT.Swiper, test: '.fcb__slider', settings: { type: \"infinite_fcb\" } },\n // { constr: GT.Swiper, test: '.related-experts-slider', settings: { type: \"infinite_reb\" } },\n { constr: GT.Swiper, test: '.next-article-slider', settings: { type: \"next_article_slide\" } },\n { constr: GT.Swiper, test: '.industry-landing-slider', settings: { type: \"single_slide\" } }, \n { constr: GT.Expert, test: '.experts-search-block', settings: {} },\n { constr: GT.Select, test: '.custom-select', settings: {} },\n { constr: GT.Swiper, test: '.large-promo-module-slider', settings: { type: \"large_promo_slider\" } },\n { constr: GT.Swiper, test: '.insightsHeroCarousel', settings: { type: \"large_promo_slider\" } },\n { constr: GT.Swiper, test: '.article-slider', settings: { type: \"large_promo_slider\" } },\n { constr: GT.Swiper, test: '.expert-container--slider', settings: { type: \"mobile-only-slider\" } },\n { constr: GT.Swiper, test: '.topic-block', settings: { type: \"mobile-only-slider\" } },\n { constr: GT.Swiper, test: '.simple-tiles--slider', settings: { type: \"small-mobile-only-slider\" } },\n { \n constr: GT.SwiperNeo,\n test: '.rcwib_slider',\n settings: GT.SwiperNeoPreset.limitedMediaSlider(\n GT.SwiperNeoPreset.breakPoints.tabletMinWidth,\n function () {\n // Extra setting for limitedMediaSlider preset\n return {\n loop: true,\n afterSwiperInit: function (swiperDOMInfo) {\n GT.LazyBackgrounds($('.js-lazy-bg'), { settings: { safeDistance: 500 } });\n GT.SwiperNeoPreset.clampTextContent([\n { selector: '.rcwib_item-content-category', lines: 1 },\n { selector: '.rcwib_item-content-title', lines: 2 },\n ])(swiperDOMInfo);\n }\n };\n }\n )\n },\n {\n constr: GT.SwiperNeo,\n test: '.cswsb_slider',\n settings: {\n loop: true,\n resistance: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n paginationClickable: false,\n slidesPerView: 1,\n extendedSettingFn: function() {\n var settings = {\n breakpoints: {},\n };\n settings.breakpoints[GT.SwiperNeoPreset.breakPoints.tabletMinWidth - 1] = {\n resistanceRatio: 0.85,\n spaceBetween: 32\n };\n return settings;\n },\n afterSwiperInit: function (swiperDOMInfo) {\n GT.LazyBackgrounds(swiperDOMInfo.$slidesContainer.find('.js-lazy-bg'), { settings: { safeDistance: 500 } });\n }\n }\n },\n { constr: GT.FormSelect, test: '.form-select', settings: {} },\n { constr: GT.SearchInput, test: '.name-search' },\n { constr: GT.SideNav, test: '.secondary-nav' },\n { constr: GT.Trim, test: '.mega__feature' },\n { constr: GT.Tabs.firmTabs, test: '.firm-tabs' },\n { constr: GT.MediaCarousel, test: '.article-carousel-block', settings: {} },\n { constr: GT.Overlays.launchVideoOverlay, test: '.video__with-overlay' },\n { constr: GT.Overlays.launchOverlay, test: '.youtube-video' },\n { constr: GT.EPiServerFormsOverlay, test: '#launchContactFormSubscribe[data-epiforms-overlay]' },\n { constr: GT.EPiServerFormsOverlay, test: '#launchServiceIndustryContactFormSubscribe[data-epiforms-overlay]' },\n { constr: GT.Overlays.loadOverlayContact, test: '#launchContactFormSubscribe:not([data-epiforms-overlay])' },\n { constr: GT.Overlays.loadOverlaySeminar, test: '#launchSemminarsFormSubscribe' },\n { constr: GT.Reach, test: '.global-reach' },\n { constr: GT.Filters.defineSearch, test: '.js-define-search li a' },\n { constr: GT.Filters.moreFilters, test: '.more-btn' },\n { constr: GT.Filters.tabs, test: '.filters-container' },\n { constr: GT.LazyLoad, test: '.locations-list', settings: { run: \"getLocation\" } },\n { constr: GT.LazyLoad, test: '.locations-list', settings: { run: \"scrollToLocation\" } },\n { constr: GT.LazyLoad, test: '.js-related-articles', settings: { run: \"loadArticles\" } },\n { constr: GT.LazyLoad, test: '.js-more-experts', settings: { run: \"LazyLoadingPeople\" } },\n { constr: GT.LazyLoad, test: '.js-more-articles', settings: { run: \"LazyLoadingArticles\" } },\n { constr: GT.LazyLoad, test: '.js-mediacenter-more-articles', settings: { run: \"LazyLoadingMediaItemsArticles\" } },\n { constr: GT.LazyLoad, test: '.js-more-vacancies', settings: { run: \"loadVacancies\" } },\n { constr: GT.LazyLoad, test: '.js-more-events', settings: { run: \"LazyLoadingEvents\" } },\n { constr: GT.LazyLoad, test: '#show-location', settings: { run: \"FilterEvents\" } },\n {\n constr: GT.SwiperNeo,\n test: '.tcpwsb_slider',\n settings: {\n loop: true,\n resistance: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n paginationClickable: false,\n slidesPerView: 1,\n extendedSettingFn: function() {\n var settings = {\n breakpoints: {},\n };\n settings.breakpoints[GT.SwiperNeoPreset.breakPoints.tabletMinWidth - 1] = {\n resistanceRatio: 0.85,\n spaceBetween: 32\n };\n return settings;\n },\n afterSwiperInit: function (swiperDOMInfo) {\n GT.LazyBackgrounds(swiperDOMInfo.$slidesContainer.find('.js-lazy-bg'), { settings: { safeDistance: 500 } });\n }\n }\n },\n { constr: GT.HeadSearch, test: '.h-search-container' },\n { constr: GT.MegaNavigation, test: '.mega' },\n { constr: GT.MobileNavigation, test: '.mobile' },\n { constr: GT.View, test: '.change-view' },\n { constr: GT.SwitchView, test: '.event-switch-view' }, \n { constr: GT.SwitchView, test: '.seminar-switch-view' },\n\n { constr: GT.Contact.contactForm, test: '#EnquiryType' },\n { constr: GT.Contact.updateFileUploadVisibility, test: '#EnquiryType' },\n { constr: GT.Contact.methodOfContact, test: '.event-register-form' },\n { constr: GT.Contact.privacyPolicyAccepted, test: '.event-register-form' },\n { constr: GT.Contact.contactSelector, test: '.contact-selector' },\n { constr: GT.TouchBlur, test: '.btn-primary, .btn-primary-light, .btn-primary-alt, .btn-secondary, .btn-secondary-light, .slider__next, .slider__prev' },\n // { constr: GT.Equalise, test: '.single-event-block' },\n // { constr: GT.Equalise, test: '.events-container .switchable-single-event-block' },\n // { constr: GT.Equalise, test: '.seminars-container .switchable-single-event-block' },\n { constr: GT.InputLabel, test: '.h-search' },\n { constr: GT.RangeSlider, test: 'input[type=\"range\"]' },\n { constr: GT.Track.trackPDFs, test: '.download-pdf-link' },\n { constr: GT.Track.clickTracking, test: '#ResultListWrapper' },\n { constr: GT.ClickDimensions, test: '[pageid]', settings: { parent: \".clickdform\", selector: \".clickdform *\", attr: \"style\" } },\n { constr: GT.SocialShareLine, test: '.line-it-button' },\n { constr: GT.VideoBannerBlocks, test: '.banner-block--video .video-background', settings: { hideTimeout: 60 } },\n // Dupliacate event when click to play/pause video in case study banner when open line below:\n //{ constr: GT.VideoBannerBlocks, test: '.case-study-video-banner video', settings: { hideTimeout: 60 } },\n { constr: GT.Accordion, test: '.accordion', settings: { containerSelector: '.accordion-item__content', triggerSelector: '.accordion-item__trigger' } },\n { constr: GT.FakeHyperlink, test: '[data-anchor]' },\n { constr: GT.EPiServerForms, test: '.EPiServerForms', settings: {} },\n { constr: GT.MarketoEmbedForms, test: '.marketo-embed-form', settings: {} },\n { constr: GT.CampaignBanners, test: '.campaign-banner', settings: {} },\n { constr: GT.DragNDrop, test: 'body', settings: {} },\n { constr: GT.FakeArrowTransitions, test: '.tombstone-block-container .deal-item .btn-secondary', settings: { width : 5 } },\n { constr: GT.expandBanner, test: '.content_hub.content_hub-container--wide', settings: {} },\n { constr: GT.Datatables, test: '.gt-dataTable', settings: { autoWidth: true, scrollX: true } },\n\t\t{ constr: GT.GatedPdfForm, test: '.js-gated-form', settings: {} },\n\t\t{ constr: GT.GatedPdfMarketoForm, test: '.js-gated-marketo', settings: {} },\n { constr: GT.GatedArticleForm, test: '.js-article-gated-form', settings: {} },\n { constr: GT.GatedArticleMarketoForm, test: '.js-article-gated-marketo-form', settings: {} },\n { constr: GT.SecondaryNavbar, test: '.gt-secondary-nav', settings: {} },\n { constr: GT.HorizontalTable, test: '.gt-horizontal-table', settings: {} },\n { constr: GT.LazyBackgrounds, test: '.trending-content-block .background--focus-left-center', settings: {} },\n { constr: GT.LazyBackgrounds, test: '.home-page-container .extended-banner-block > .background', settings: {} },\n { constr: GT.LazyBackgrounds, test: '.home-page-container .banner-block > .background', settings: {} },\n { constr: GT.ImagesGallery, test: '.gt-gallery__block' },\n {\n constr: GT.ExtendedSearch, test: '.extended-search', settings: {\n 'form': 'form',\n 'submitBtn': '.extended-search-bar__search-btn',\n 'loadBtn': '.extended-search__load-btn',\n 'applyFilters': '.filters__apply-close-btn',\n 'filterTags': '.filters__item',\n 'clearFiltersBtn': '.article-grid__clear-btn',\n 'sResults': '.extended-search__results',\n 'toggleFilters': '.extended-search-bar__filter-btn',\n 'searchInput': '.extended-search-bar__search-input',\n 'filters': '.extended-search-bar__filters',\n 'closeFiltersButton': '.filters__close-button a',\n 'filterHeading': '.filters__heading',\n 'isFilterField': '.isFilter',\n 'totalResultsQty': '.totalResultsQty',\n 'pageSize': '.pageSize',\n 'joinChar': '+',\n 'classes': {\n 'filtersClosed': 'filters--closed',\n 'overflowHidden': 'overflowHidden--mobile'\n }\n }\n },\n {\n constr: GT.ExtendedSearch, test: '.insights-article-block', settings: {\n 'loadBtn': '.extended-search__load-btn',\n 'sResults': '.extended-search__results',\n 'isFilterField': '.isFilter',\n 'totalResultsQty': '.totalResultsQty',\n 'pageSize': '.pageSize',\n 'joinChar': '+',\n 'classes': {\n 'filtersClosed': 'filters--closed',\n 'overflowHidden': 'overflowHidden--mobile'\n }\n }\n },\n {\n constr: GT.Captcha, test: '.g-recaptcha:not(.FormRecaptcha .g-recaptcha)', settings: {\n error_origin: \"selector\",\n error_value: \"\",\n error_selector: \"data-captcha-error\"\n }\n },\n {\n constr: GT.Captcha, test: '.royalty-calculator', settings: {\n creator_container: \".submit.submit-element\", creator_where: \"before\",\n error_origin: \"variable\", error_value: null, error_variable: [\"customCalculator\", \"errorMsg\"], error_containerSelector: \".g-recaptcha\", error_where: \"after\",\n key_origin: \"variable\", key_value: null, key_variable: [\"customCalculator\", \"captchaKey\"]\n }\n },\n\t\t{\n\t\t\tconstr: GT.EmailObfuscate,\n\t\t\ttest: $([\n\t\t\t\t'[data-obfuscate=\"true\"]',\n\t\t\t\t'.simple-contact-block'\n\t\t\t].join(','))\n\t\t},\n { constr: GT.OfficeBanner, test: '.office-banner', settings: {} },\n { constr: GT.GTWraptextButton, test: '#officeNearByRow .btn-large', settings: { extra : 12, padding : 16 } },\n { constr: GT.GTInsightHubOverlays, test: '.js-hub-overlay', settings: {} },\n { constr: GT.ArticleSummaries, test: '.t13-page .article-summary, .t45-insights-page .article-summary, .campaign-content-page .article-summary', settings: {} },\n { constr: GT.GTContactWidgetOverlay, test: '.js-contact-widget-overlay', settings: {} },\n { constr: GT.GTFindOfficesNearYou, test: '.select-offices', settings: {} }, \n { constr: GT.Footer, test: 'footer', settings: {} },\n { constr: GT.ServiceIndustrySubMenu, test: '.service-industry-sub-menu' },\n { constr: GT.ReadMore, test: '[data-readmore-enabled]' },\n { constr: GT.SelectPlaceholder, test: '.simplecontactblock' },\n\t\t{ constr: GT.ContactFormOverlay, test: '.contact-form-launcher' },\n\t\t{ constr: GT.CheckClosestOffice, test: '.closest-office-js' },\n { constr: GT.StickyContact, test: '.sticky-contact-block'},\n { constr: GT.Square, test: '.contact-actions_divider .divider-text' },\n { constr: GT.KeyQuestion, test: '.key-question' },\n { constr: GT.GTExternalLogin, test: '.externalLoginButton' },\n { constr: GT.GTVisitorProfile, test: '.visitor-profile__container' },\n { constr: GT.GTReaderView, test: '.t45-insights-page' },\n { constr: GT.GTPeopleLandingPage, test: '.people-landing-page' },\n { constr: GT.TombstoneTransaction, test: '.transaction-content' }\n ].map(GT.Initiator);\n\n});\nGT.freezeVp = function (e) {\n e.preventDefault();\n};"],"names":["isV1GT","autoComplete","options","document","querySelector","k","o","selector","source","minChars","delay","offsetLeft","offsetTop","cache","appendToBody","menuClass","renderItem","item","search","replace","re","RegExp","split","join","onSelect","e","term","hasOwnProperty","elems","querySelectorAll","i","length","suggest","data","val","that","value","s","sc","innerHTML","updateSC","style","display","createElement","className","autocompleteAttr","getAttribute","setAttribute","last_val","resize","next","rect","getBoundingClientRect","left","Math","round","window","pageXOffset","documentElement","scrollLeft","top","bottom","pageYOffset","scrollTop","width","right","maxHeight","parseInt","getComputedStyle","currentStyle","suggestionHeight","offsetHeight","scrTop","selTop","addEvent","body","appendChild","insertAdjacentElement","live","sel","setTimeout","this","v","hasClass","blurHandler","over_sb","keydownHandler","key","event","keyCode","which","nextSibling","previousSibling","childNodes","keyupHandler","clearTimeout","timer","part","slice","focusHandler","destroy","removeEvent","removeAttribute","remove","el","classList","contains","test","type","handler","attachEvent","addEventListener","detachEvent","removeEventListener","elClass","cb","context","found","target","srcElement","parentElement","call","createCookie","name","days","date","Date","expires","setTime","getTime","toGMTString","cookie","readCookie","c","nameEQ","ca","charAt","substring","indexOf","define","amd","module","exports","$","fn","valueAsObject","input","JSON","stringify","parse","rawParseError","quoteParseError","html","text","totalParseError","global","factory","Glide","defaults","startAt","perView","focusAt","gap","autoplay","hoverpause","keyboard","bound","swipeThreshold","dragThreshold","perTouch","touchRatio","touchAngle","animationDuration","rewind","rewindDuration","animationTimingFunc","throttle","direction","peek","breakpoints","classes","ltr","rtl","slider","carousel","swipeable","dragging","cloneSlide","activeNav","activeSlide","disabledArrow","warn","msg","console","error","classCallCheck","instance","Constructor","TypeError","_typeof","Symbol","iterator","obj","constructor","prototype","createClass","protoProps","staticProps","defineProperties","props","descriptor","enumerable","configurable","writable","Object","defineProperty","get","object","property","receiver","Function","desc","getOwnPropertyDescriptor","undefined","getter","parent","getPrototypeOf","_extends","assign","arguments","toInt","isString","isObject","isNumber","isFunction","isUndefined","isArray","Array","prop","definition","mergeOptions","settings","EventsBus","on","hop","events","index","push","emit","forEach","extensions","_e","_c","glide","_name","components","mount","transformers","_t","pattern","Run","make","distance","Transition","disable","Move","interval","disabled","_o","set","_i","_d","status","now","func","wait","later","previous","leading","timeout","result","apply","args","throttled","at","remaining","trailing","cancel","MARGIN_TYPE","siblings","node","parentNode","n","firstChild","matched","nodeType","exist","HTMLElement","TRACK_SELECTOR","EventsBinder","closure","capture","listeners","VALID_DIRECTIONS","FLIPED_MOVEMENTS",">","<","=","Rtl","Components","modify","translate","Direction","is","mutator","Events","TRANSFORMERS","Gaps","Clones","grow","Peek","before","Sizes","slideWidth","concat","mutate","transformer","supportsPassive","opts","supportsPassive$1","START_EVENTS","MOVE_EVENTS","END_EVENTS","MOUSE_EVENTS","sortBreakpoints","points","keys","sort","reduce","r","COMPONENTS","Html","root","track","slides","wrapper","children","filter","slide","_r","t","Translate","transform","isType","isOffset","after","movement","compose","duration","transition","callback","enable","offset","resolve","token","addClass","add","removeClass","_v","setupSlides","setupWrapper","dimention","wrapperSize","offsetWidth","reductor","len","marginLeft","marginRight","_this","items","collect","_Glide$settings","start","end","max","floor","clone","cloneNode","_clone","unshift","append","_Components$Html","half","prepend","reverse","_i2","insertBefore","_i3","removeChild","Resize","Binder","bind","unbind","off","Build","typeClass","activeClass","sibling","removeClasses","move","calculate","isStart","isEnd","steps","countableSteps","oldDuartion","abs","_m","step","substr","Swipe","swipeSin","swipeStartX","swipeStartY","passive","bindSwipeStart","swipe","touches","pageX","pageY","bindSwipeMove","bindSwipeEnd","subExSx","subEySy","powEX","powEY","swipeHypotenuse","sqrt","swipeCathetus","asin","PI","stopPropagation","parseFloat","swipeDistance","swipeDeg","threshold","min","dataset","totalItems","unbindSwipeMove","unbindSwipeEnd","unbindSwipeStart","_this2","_this3","changedTouches","Images","dragstart","preventDefault","Anchors","detached","prevented","_a","click","detach","draggable","attach","Controls","_n","addBindings","setActive","removeActive","controls","removeBindings","elements","currentTarget","Keyboard","press","Autoplay","setInterval","stop","time","clearInterval","Breakpoints","match","matchMedia","point","matches","subClass","Glide$$1","superClass","possibleConstructorReturn","self","__proto__","ReferenceError","create","setPrototypeOf","GTHelper","validateEmail","email","String","toLowerCase","detectDOMChange","let","observer","MutationObserver","mutations","hasChangeNode","mutation","addedNodes","observe","childList","subtree","dispatchEvt","elm","evt","CustomEvent","bubbles","detail","dispatchEvent","HttpService","METHODS","DELETE","GET","PUT","POST","UPLOAD","PATCH","sendRequest","method","url","requestHeaders","isAsync","xhr","Promise","reject","XMLHttpRequest","open","setRequestHeader","getElementsByTagName","fromPage","tokens","headerKey","getElementsByName","onload","resError","responseText","statusText","onerror","send","getHtmlContent","post","patch","uploadFile","put","update","delete","getPromise","endPoint","doNotShowErrorMSG","then","res","message","catch","log","getPromiseWithoutMSG","LazyEvent","$element","safedistance","isForceReExec","event__KEY","old_event__KEY","safeDistance","elmList","lLength","NodeList","isPrototypeOf","lazyLoad","forceExc","triggerEvt","lCount","boundingRect","lazyeventTriggered","GT","wHeight","listFunctionsTriggerInScrollEvent","windowResizeFncList","random","TabPanelActionHandler","tablist","tabs","panels","generateArrays","home","up","down","enter","space","37","38","39","40","clickEventListener","keydownEventListener","keyupEventListener","activateTab","focusLastTab","focusFirstTab","determineOrientation","deleteTab","panel","getElementById","proceed","pressed","focus","tab","setFocus","p","targetPanel","initTabPanelActionHandler","require","jQuery","extend","validate","validator","attr","onsubmit","submitButton","cancelSubmit","handle","hidden","submitHandler","formSubmitted","appendTo","currentForm","debug","form","pendingRequest","focusInvalid","valid","errorList","each","element","rules","command","argument","staticRules","existingRules","param","filtered","hasAttribute","closest","normalizeRule","messages","normalizeRules","classRules","attributeRules","dataRules","required","remote","expr","pseudos","blank","a","trim","filled","unchecked","init","format","params","makeArray","groups","errorClass","pendingClass","validClass","errorElement","focusCleanup","errorContainer","errorLabelContainer","ignore","ignoreTitle","onfocusin","lastActive","unhighlight","hideThese","errorsFor","onfocusout","checkable","submitted","optional","onkeyup","elementValue","inArray","invalid","onclick","highlight","findByName","setDefaults","dateISO","number","digits","equalTo","maxlength","minlength","rangelength","range","autoCreateRanges","labelContainer","errorContext","containers","valueCache","pending","reset","delegate","eventType","invalidHandler","checkForm","errorMap","triggerHandler","showErrors","prepareForm","currentElements","check","rs","group","cleanElement","clean","checkElement","validationTargetFor","prepareElement","testgroup","numberOfInvalids","toHide","errors","map","successList","grep","defaultShowErrors","resetForm","hideErrors","removeData","removeAttr","resetElements","objectLength","count","not","addWrapper","hide","size","findLastActive","trigger","rulesCache","find","resetInternals","toShow","validity","badInput","idx","lastIndexOf","rule","normalizer","rulesCount","dependencyMismatch","parameters","methods","formatAndAdd","id","customDataMessage","toUpperCase","customMessage","m","findDefined","defaultMessage","title","theregex","toToggle","showLabel","success","validElements","show","invalidElements","errorID","elementID","idOrName","describedBy","place","wrap","errorPlacement","insertAfter","parents","escapeCssMeta","describer","string","getLength","nodeName","depend","dependTypes","boolean","function","startRequest","stopRequest","submit","previousValue","old","classRuleSettings","creditcard","addClassRules","normalizeAttributeRule","Number","isNaN","depends","keepRule","parameter","parts","transformed","addMethod","toString","decimalPlaces","num","pow","decimals","errorMessage","Error","optionDataString","originalMessage","ajax","mode","port","dataType","response","pendingRequests","ajaxPrefilter","_","abort","ajaxSettings","unobtrusive","adapters","$jQval","data_validation","setValidationValues","ruleName","escapeAttributeValue","getModelPrefix","fieldName","appendModelPrefix","prefix","onReset","$form","validationInfo","execInContext","defaultOptions","onResetProxy","proxy","inputElement","container","replaceAttrValue","parseJSON","empty","list","attachValidation","parseElement","skipAttach","valInfo","paramValues","adapt","__dummy__","$selector","$forms","addBack","has","info","adapterName","addBool","addMinMax","minRuleName","maxRuleName","minMaxRuleName","minAttribute","maxAttribute","addSingleVal","attribute","exec","nonalphamin","extension","fullOtherName","other","tagName","additionalfields","paramName","field","regex","b","d","f","deserialize","j","l","q","w","x","y","z","A","noop","B","C","D","change","complete","isPlainObject","E","decodeURIComponent","u","globalInstall","lazySizes","polyfill","regDescriptors","candidates","regWCandidates","regMultiple","ascendingSort","regPxLength","reduceCandidate","parseWsrcset","createSrcset","getX","matchesMedia","sels","lazySizesCfg","cfg","img","supportSrcset","regHDesc","fixEdgeHDescriptor","removeHDescriptors","srcset","srcsetAttr","ratio","picture","currentSrc","addCandidate","candidate","wDescriptor","runMatchMedia","matchMediaElems","run","getElementsByClassName","elem","sources","srces","src","_lazypolyfill","isPicture","supportsType","gW","getCandidate","cur","cached","srcAttr","HTMLPictureElement","hasHDescriptorFix","msElementsFromPoint","picturefill","pf","lowerCandidate","bonusFactor","isImage","parsedSet","srcSet","_set","aC","dpr","devicePixelRatio","optimum","media","loadedClass","loadingClass","lazysizes","lazySizesDefaults","lazyClass","preloadClass","autosizesClass","fastLoadedClass","iframeLoadMode","sizesAttr","minSize","customMedia","expFactor","hFac","loadMode","loadHidden","ricTimeout","throttleDelay","lazySizesConfig","lazysizesConfig","noSupport","ele","cls","_getAttribute","reg","updatePolyfill","full","supportPicture","reevaluate","running","waiting","firstFns","secondFns","fns","docElem","_addEventListener","requestAnimationFrame","requestIdleCallback","regPicture","loadEvents","regClassCache","addRemoveLoadEvents","dom","action","triggerEvent","noBubbles","noCancelable","createEvent","initEvent","getCSS","getWidth","_lazysizesWidth","rAF","rafBatch","_lsFlush","runFns","shift","queue","rAFIt","simple","debounce","last","timestamp","regImg","regIframe","supportScroll","navigator","userAgent","lowRuns","isVisible","isBodyHidden","checkElements","lastTime","isLoading","currentExpand","gDelay","rICTimeout","idleCallback","rafedSwitchLoadingClass","switchLoadingClass","rafSwitchLoadingClass","lazyUnveil","isAuto","sizes","isImg","firesLoad","defaultPrevented","resetPreloadingTimer","resetPreloading","handleSources","contentWindow","location","_lazyRace","isLoaded","naturalWidth","_lazyCache","loading","afterScroll","throttledCheckElements","preloadElems","isCompleted","started","eLvW","elvH","eLtop","eLleft","eLright","eLbottom","unveilElement","loader","loadingElements","persisted","attributes","readyState","checkElems","isPriority","unveil","autoSizer","updateElem","_aLSL","altLoadmodeScrollListner","eLlen","autoLoadElem","loadedSomething","elemExpand","elemNegativeExpand","elemExpandVal","beforeExpandVal","defaultExpand","preloadExpand","lazyloadElems","prematureUnveil","expand","clientHeight","clientWidth","_defEx","innerWidth","innerHeight","outerRect","visible","offsetParent","isNestedVisible","preloadAfterLoad","sourceSrcset","sizeElement","dataAttr","autosizesElems","debouncedUpdateElementsSizes","getSizeElement","uP","rC","hC","fire","regWhite","regSplitSet","regSource","regType","regBgUrlEscape","allowedBackgroundSize","setTypeOrMedia","proxyLoad","contain","cover","typeMatch","useSrc","_lazybgset","image","bg","fullSrc","backgroundImage","_lazybgsetLoading","optimumx","alt","sets","bgSize","getPropertyValue","backgroundSize","_lazysizesParentFit","createElementNS","h","fake","styleSheet","cssText","createTextNode","background","overflow","_version","_config","classPrefix","enableClasses","enableJSClass","usePrefixes","_q","addTest","addAsyncTest","Modernizr","g","createElem","canHaveChildren","tagUrn","frag","shivCSS","hasCSS","lastChild","createFrag","createDocumentFragment","shivMethods","html5","version","supportsUnknownElements","shivDocument","addElements","msMatchMedia","position","mq","testStyles","aliases","Boolean","baseVal","PerfectScrollbar","state","scrolling","isAlive","scrollingThreshold","initCustomEvent","reach","containerWidth","containerHeight","height","contentWidth","scrollWidth","contentHeight","scrollHeight","scrollbarXRail","rail","scrollbarYRail","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXWidth","railXMarginWidth","railXRatio","scrollbarXWidth","scrollbarXLeft","negativeScrollAdjustment","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYHeight","railYMarginHeight","railYRatio","scrollbarYHeight","scrollbarYTop","isRtl","isScrollbarXUsingBottom","scrollbarXBottom","scrollbarXTop","isScrollbarYUsingRight","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarX","railBorderXWidth","scrollbarY","railBorderYWidth","active","minScrollbarLength","maxScrollbarLength","clicking","ownerDocument","once","handlers","eventElements","H","main","swipeEasing","useBothWheelAxes","wheelPropagation","wheelSpeed","isNegativeScroll","thumb","borderLeftWidth","borderRightWidth","paddingLeft","paddingRight","borderTopWidth","borderBottomWidth","marginTop","marginBottom","G","lastScrollTop","lastScrollLeft","onScroll","Element","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","consuming","isEmpty","unbindAll","every","eventElement","splice","isWebKit","supportsTouch","maxTouchPoints","DocumentTouch","supportsIePointer","msMaxTouchPoints","isChrome","click-rail","drag-thumb","isDefaultPrevented","activeElement","contentDocument","shadowRoot","metaKey","altKey","shiftKey","wheel","deltaX","deltaY","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","overflowY","overflowX","ctrlKey","onwheel","onmousewheel","touch","targetTouches","pointerType","buttons","MSPOINTER_TYPE_MOUSE","scrollY","isInitialized","PointerEvent","MSPointerEvent","removePsClasses","ReadingPositionIndicator","default","progressBar","color","opacity","percentage","displayBeforeScroll","rpiArea","scroll","last_known_scroll_position","ticking","virtualDOM","DOM","_transformName","getTransformVendorPrefixAsString","applyElements","_updateCalculationInformationAndSaveToState","applyConfiguration","applyEventListeners","_onScroll","_onResize","getScrollPosition","getDocumentHeight","_updateRpiArea","viewHeight","getViewHeight","_updateProgressBar","_updateVirtualDOM","_updateDOM","progressBarPercentageTextContent","progressBarPercentage","progressBarPositionStyleTransform","textContent","progressBarPosition","WebkitTransition","MsTransform","__esModule","multiple","enabled","opened","currValue","selectedIdx","highlightedIdx","eventTriggers","close","refresh","utils","isMobile","escapeRegExp","replaceDiacritics","nextEnabledItem","previousEnabledItem","toDash","triggerCallback","arrayToClassname","disableOnMobile","getClassNames","class","readonly","tabindex","arrowButtonMarkup","hideselect","itemsScroll","label","outerWrapper","nativeOnMobile","originalTabindex","populate","activate","tempshow","responsive","inheritOriginalWidth","unbindEvents","$li","bindEvents","customClass","camelCase","setLabel","labelBuilder","lookupItems","maxLabelEntries","separator","groupDisabled","getItemData","getItemsMarkup","slug","selected","listBuilder","grouplabel","getItemMarkup","optionsItemBuilder","toggleClass","hover","openOnHover","closeTimer","hoverIntentTimeout","handleKeys","one","blur","openOnFocus","resetStr","keySearchTimeout","mousedown","select","allowWrap","keepMenuOpen","setOptionsDimensions","outerWidth","expandToItemText","finalWidth","css","isInViewport","outerHeight","itemsHeight","above","detectItemVisibility","eq","itemsInnerHeight","preventWindowScroll","originalEvent","unwrap","onChange","globalThis","shave","__read","ar","done","__spreadArray","to","from","pack","els","character","classname","initialSpaces","spaces","charclassname","link","isLink","href","shavedTextElType","styles","textProp","fullText","words","heightStyle","maxHeightStyle","shavedTextEl","shavedTextElAttributes","linkProperty","pivot","insertAdjacentHTML","clipPath","color-profile","cursor","linearGradient","marker","mask","radialGradient","S","T","innerText","M","V","replaceChild","pop","evalScripts","pngFallback","protocol","implementation","hasFeature","SVGSVGElement","onreadystatechange","responseXML","Document","DOMParser","parseFromString","overrideMimeType","SVGInjector","Swiper","def","touchEventsTarget","initialSlide","speed","autoplayDisableOnInteraction","autoplayStopOnLast","iOSEdgeSwipeDetection","iOSEdgeSwipeThreshold","freeMode","freeModeMomentum","freeModeMomentumRatio","freeModeMomentumBounce","freeModeMomentumBounceRatio","freeModeMomentumVelocityRatio","freeModeSticky","freeModeMinimumVelocity","autoHeight","setWrapperSize","virtualTranslate","effect","coverflow","rotate","stretch","depth","modifier","slideShadows","flip","limitRotation","cube","shadow","shadowOffset","shadowScale","fade","crossFade","parallax","zoom","zoomMax","zoomMin","zoomToggle","scrollbar","scrollbarHide","scrollbarDraggable","scrollbarSnapOnRelease","keyboardControl","mousewheelControl","mousewheelReleaseOnEdges","mousewheelInvert","mousewheelForceToAxis","mousewheelSensitivity","mousewheelEventsTarged","hashnav","hashnavWatchState","history","replaceState","spaceBetween","slidesPerView","slidesPerColumn","slidesPerColumnFill","slidesPerGroup","centeredSlides","slidesOffsetBefore","slidesOffsetAfter","roundLengths","simulateTouch","shortSwipes","longSwipes","longSwipesRatio","longSwipesMs","followFinger","onlyExternal","touchMoveStopPropagation","touchReleaseOnEdges","uniqueNavElements","pagination","paginationElement","paginationClickable","paginationHide","paginationBulletRender","paginationProgressRender","paginationFractionRender","paginationCustomRender","paginationType","resistance","resistanceRatio","nextButton","prevButton","watchSlidesProgress","watchSlidesVisibility","grabCursor","preventClicks","preventClicksPropagation","slideToClickedSlide","lazyLoading","lazyLoadingInPrevNext","lazyLoadingInPrevNextAmount","lazyLoadingOnTransitionStart","preloadImages","updateOnImagesReady","loop","loopAdditionalSlides","loopedSlides","control","controlInverse","controlBy","normalizeSlideIndex","allowSwipeToPrev","allowSwipeToNext","swipeHandler","noSwiping","noSwipingClass","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideDuplicateActiveClass","slideVisibleClass","slideDuplicateClass","slideNextClass","slideDuplicateNextClass","slidePrevClass","slideDuplicatePrevClass","wrapperClass","bulletClass","bulletActiveClass","buttonDisabledClass","paginationCurrentClass","paginationTotalClass","paginationHiddenClass","paginationProgressbarClass","paginationClickableClass","paginationModifierClass","lazyLoadingClass","lazyStatusLoadingClass","lazyStatusLoadedClass","lazyPreloaderClass","notificationClass","preloaderClass","zoomContainerClass","observeParents","a11y","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","runCallbacksOnInit","initialVirtualTranslate","originalParams","Dom7","deepParam","deepDef","swipers","classNames","Zepto","currentBreakpoint","getActiveBreakpoint","breakpoint","setBreakpoint","breakPointsParams","needsReLoop","destroyLoop","reLoop","swiper","support","flexbox","transforms3d","paginationContainer","isHorizontal","dir","wrongRTL","device","android","progress","velocity","lockSwipeToNext","unsetGrabCursor","lockSwipeToPrev","lockSwipes","unlockSwipeToNext","setGrabCursor","unlockSwipeToPrev","unlockSwipes","moving","imagesToLoad","imagesLoaded","loadImage","imgElement","checkForComplete","onReady","Image","_onReady","autoplayTimeoutId","autoplaying","autoplayPaused","startAutoplay","stopAutoplay","internal","pauseAutoplay","transitionEnd","minTranslate","snapGrid","maxTranslate","updateAutoHeight","activeSlides","newHeight","ceil","activeIndex","updateContainerSize","updateSlidesSize","slidesGrid","slidesSizesGrid","slidePosition","prevSlideSize","virtualSize","slidesNumberEvenToRows","newSlidesGrid","slidesPerRow","numFullColumns","newSlideOrderIndex","column","row","slideSize","-webkit-box-ordinal-group","-moz-box-ordinal-group","-ms-flex-order","-webkit-order","order","swiperSlideSize","updateSlidesOffset","swiperSlideOffset","currentSlidesPerView","spv","breakLoop","updateSlidesProgress","offsetCenter","slideBefore","slideAfter","slideProgress","updateProgress","translatesDiff","wasBeginning","isBeginning","wasEnd","updateActiveIndex","newActiveIndex","snapIndex","previousIndex","updateClasses","updateRealIndex","realIndex","current","scaleX","scaleY","nextSlide","prevSlide","prev","total","bullets","scale","updatePagination","paginationHTML","numberOfBullets","initPagination","updateTranslate","newTranslate","forceSetTranslate","setWrapperTranslate","controller","spline","slideTo","onResize","forceUpdatePagination","slideChangedBySlideTo","lazy","load","touchEventsDesktop","pointerEnabled","msPointerEnabled","touchEvents","initEvents","actionDom","nested","browser","ie","onTouchStart","onTouchMove","onTouchEnd","passiveListener","ios","onClickNext","onEnterKey","onClickPrev","onClickIndex","attachEvents","detachEvents","allowClick","animating","stopImmediatePropagation","slideNext","slidePrev","updateClickedSlide","slideToIndex","findElementInEvent","slideFound","clickedSlide","clickedIndex","fixLoop","isTouched","isMoved","allowTouchCallbacks","touchStartTime","isScrolling","currentTranslate","startTranslate","allowThresholdMove","clickTimeout","allowMomentumBounce","isTouchEvent","startMoving","plugin","formElements","lastClickTime","velocities","startX","startY","currentX","currentY","diff","swipeDirection","preventedByNestedSwiper","atan2","ieTouch","getWrapperTranslate","setWrapperTransition","disableParentSwiper","currentPos","touchEndTime","timeDiff","lastMoveEvent","velocityEvent","afterBouncePosition","momentumDuration","momentumDistance","newPosition","doBounce","bounceAmount","slideReset","onTransitionStart","onTransitionEnd","stopIndex","groupSize","_slideTo","slideIndex","runCallbacks","lteIE9","setHistory","setHash","clientLeft","_slideNext","_slidePrev","disableTouchControl","enableTouchControl","byController","effects","setTransition","setTranslate","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","msTransform","m41","m42","observers","initObservers","containerParents","initObserver","disconnectObservers","disconnect","createLoop","prependSlides","appendSlides","updatePosition","oldIndex","newIndex","appendSlide","prependSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","tx","ty","slideOpacity","eventTriggered","triggerEvents","shadowBefore","shadowAfter","rotateY","rotateX","zIndex","wrapperRotate","cubeShadow","scale1","scale2","slideAngle","tz","-webkit-transform-origin","-moz-transform-origin","-ms-transform-origin","transform-origin","shadowAngle","multiplier","sin","cos","zFactor","isSafari","isUiWebView","center","offsetMultiplier","translateZ","translateY","translateX","slideTransform","perspectiveOrigin","initialImageLoaded","loadImageInSlide","loadInDuplicate","_img","slideOriginalIndex","duplicatedSlide","originalSlide","amount","maxIndex","minIndex","setDragPosition","sb","clientX","clientY","dragSize","positionMin","moveDivider","positionMax","dragStart","dragTimeout","drag","dragMove","returnValue","dragEnd","draggableEvents","enableDraggable","disableDraggable","trackSize","divider","newSize","newPos","LinearSpline","lastIndex","interpolate","x2","i3","binarySearch","i1","guess","array","getInterpolateFunction","controlledTranslate","controlled","setControlledTranslate","setControlledTransition","onHashCange","newHash","hash","initialized","pushState","paths","getPathValues","scrollToSlide","setHistoryPopState","pathArray","pathname","slugify","includes","disableKeyboardControl","handleKeyboard","enableKeyboardControl","mousewheel","lastScrollTime","eventName","isSupported","isEventSupported","disableMousewheelControl","handleMousewheel","enableMousewheelControl","setParallaxTransform","parallaxDuration","currentScale","isScaling","gesture","slideHeight","imageWrap","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","y2","onGestureStart","gestures","scaleStart","onGestureChange","scaleMove","onGestureEnd","os","scaledWidth","scaledHeight","newPositionY","momentumDistanceX","momentumDurationX","newPositionX","momentumDistanceY","momentumDurationY","toggleZoom","translateMinY","translateMaxY","touchY","touchX","diffX","diffY","imageWidth","imageHeight","translateMinX","translateMaxX","_plugins","plugins","callPlugins","emitterEventListeners","normalizeEventName","_handler","makeFocusable","$el","addRole","role","addLabel","notify","liveRegion","notification","bullet","hashnavReplaceState","cleanupStyles","deleteInstance","autoplayDelay","_el","WebkitMutationObserver","characterData","kc","charCode","inView","windowScroll","windowWidth","windowHeight","swiperOffset","swiperCoord","delta","rtlFactor","sX","sY","pX","pY","HORIZONTAL_AXIS","spinX","spinY","pixelX","pixelY","normalizeWheel","ua","arr","div","ipad","ipod","iphone","csstransforms3d","toggle","attrs","attrName","dom7ElementDataStorage","elStyle","webkitTransitionDuration","MsTransitionDuration","msTransitionDuration","MozTransitionDuration","OTransitionDuration","transitionDuration","targetSelector","listener","handleLiveEvent","dom7LiveListeners","liveListener","eventData","cancelable","fireCallBack","includeMargins","box","clientTop","compareWith","child","returnIndex","newChild","tempDiv","nextElementSibling","nextAll","nextEls","previousElementSibling","prevAll","prevEls","unique","foundElements","toAdd","tempParent","toCreate","domLib","swiperDomPlugins","lib","firstInstance","addLibraryPlugin","listDetailLocation","wWidth","domContentLoadedFncList","touchMoveFncList","bodyWidth","disableDetectScrollUpOrDown","stickyHeaderOffsetTop","triggerFnListAfterMainLogoLoaded","RecaptchaCallbackFnList","isScreenReader","breakPoints","tablet_lg","desktop","desktop_md","desktop_lg","isMobileView","isTabletView","isDesktopView","isMediumDesktopView","isLargeDesktopView","queryStringFocusableElm","isIOS","MSStream","iOSversion","platform","isMac","isIE","isEdge","vendor","isTouchDevice","ontouchstart","isMobileCached","immediate","callNow","throttleTimerList","timerItem","functionToCheck","isInteger","currentScrollTop","processSearchKeywordBeforeSubmit","_searchKeyword","_userPreviousSearches","_MAX_PREVIOUS_SEARCH_ITEMS","_previousSearch","localStorage","setItem","special","touchstart","setup","ns","isBeforeElement","listboxKeyboardHandle","listbox","first","initedKeyboardHandler","waitForElmRendering","checkElmVisible","recheck","IntersectionObserver","entry","entries","isIntersecting","unobserve","rootMargin","lockScrollBehindOverlay","queryStr","_overlay","_clientY","lockedScroll","webkitOverflowScrolling","isScrollingUp","preventHeaderFromFlickeringWhileBodyHeightIsChanging","preventOpeningMenu","firstElementChild","isNav2","headerElm","st","isScrollDown","CallbackGReCaptchaInited","recaptchaItem","isExecuted","fnc","observeElement","elementPrototype","oldValue","newValue","canFocus","getListFocusableElms","arrElms","outputLst","isElementVisible","getElementOffset","getElementBounds","resolveInner","boundingClientRect","firstFocusableElmKeyHandler","firstFocusableElm","lastFocusableElmKeyHandler","lastFocusableElm","loopFocus","listFocusableElms","onlyLoopFocus","tmpListFocusableElms","tmpListFocusableElmsLength","indx","pageAccessedByReload","performance","navigation","getEntriesByType","nav","clickEvt","forceInMainPage","computed","checkVisibility","checkOpacity","checkVisibilityCSS","visibility","isInMainPage","getFirstFocusableVisible","setInertWhileOpeningDialog","isLock","wrapperElm","shortcutElm","Accordion","$elem","ths","triggerSelector","itemSwitchHandler","itemsContainer","containerSelector","slideUp","slideToggle","scrollTopSpacing","$scrollContainer","animate","GTAnchor","AccordionV2","allAccordionElms","currentElm","parentElm","setProperty","scrollTo","anchorContainerElm","otherAElms","isScrollingByClickAction","AElms","scroll2Div","headerElmHeight","targetElm","AElm","AElm2","scrollTimers","anchorScrollHandler","scrollTimer","scrollTimerIndex","tmpScrollTimer","halfWH","elmWillHighLight","elmPosition","elmHeight","getCustomClampLines","clampElm","_lines","clamplines","_tmpLines","mobile","Animation","intersectObj","animationDelay","GTAnimation","ArticleSummaries","$elements","richTextSelector","query","$h2List","ArticleSummary","$h2","$rightImageTextBlock","elementCount","listHtmlStr","handleRightImageTextBlock","$closestRightImgTextBlock","elementStart","imageStart","imageEnd","$imgElement","elementRect","imgRect","h2","$h2Dom","excludedTitles","getText","dataKp","replaceWith","BalanceHeight","containerElm","beforeCalculate","afterCalculate","columnsList","childItemsColumnList","maxLength","totalColumns","columnElm","_maxLength","currentItem","minHeight","_maxHeight","excludeHeight","GTBookmarkArticle","_bookmarkButtons","_bookmarkButton","_isBookmarkRequiredLogin","articleId","_bookmarkPageId","_externalLoginButton","loginFormReferenceId","winWidth","_loginPopup","Overlays","runOverlay","isBookmarked","dataObject","language","_doBookmarkEndpointInput","_unBookmarkEndpointInput","contentType","_addToReadingListElement","_eventName","_articleTitle","dataLayer","eventAction","eventLabel","CampaignBanners","CampaignBanner","$container","isBannerForm","recalculateHeight","formHeight","Capitalize","$elementText","$elemCapitalizedText","clampData","aboutblock","lines","ibcblock","newsblock","relatedcontentwithimage","relatedcontentnoimage","event-block","semminar-block","insight-hub-block","global-article-clamp","upcoming-events__results","tombstone","tombstone-transaction","eventdetailpagev2","mega-menu-v2","renderAtPageLoad","t11-result-v2","getLineHeight","computedStyle","fontSize","lineHeight","getNumberLineContent","divheight","lineheight","clampArticleBlock","isForceReRender","articleText","articleTitle","authorElm","isNoImage","isNoDescription","isTrending","isReverse","clampText","elClamp","clamptext","numberLine","authorLine","customLineClamp","objTitle","clamp","isHidden","Clamp","objText","doClamp","lang","clampKey","clampkey","oldClampKey","initClampText","elmSelector","clampName","elms","clampname","clampElms","clampElmsLength","clampRevertToOriginalText","clampDataLength","clampItem","clampSelectors","clampSelectorsLength","clampElmIndex","clampElmName","clampArticle","$article","retriggerClampList","clampTextOnResize","clampItemKey","FitSize","SetFormResizable","initForm","replaceAll","replacement","ClickDimensionsHandleForm","SendForm","selfObj","formID","sendPageType","flag","FormValid","reqFieldList","ValidField","clickd_preview","EmailComponent","$iframe","dateField","dateFormat","dateValArr","dateValue","isReplace","fieldValue","fieldId","RemoveParam","$parent","$ths","itemsArray","exp","ClickDimensions","pageID","getScript","loc","clickd_timeStamp","textStatus","jqxhr","$clickDimensionsContainer","GTColumnSlider","_columnsCarousel","_columnsCarouselItems","heroSlider","_slideItem","_index","GTContactWidgetOverlay","GTContact","me","addMsg","fileChangeAndDrop","files","dataTransfer","file","pushFileToArray","__ext","ext_icon","__fileName","__fullName","icon","__extension","contactForm","$dropdown","updateFileUploadVisibility","updateContactDetails","triggerGACall","$selected","methodOfContact","$this","placeholderText","privacyPolicyAccepted","$policy","$submit","contactSelector","currentPosition","vector","GTCookies","Contact","ContactFormOverlay","GTConstruct","getCurrentFragment","currentFragment","PARENT_ID_DATA_KEY","_id","launcher","openPopup","_currentBtn","contactFormId","scrollmem","isOpenedByClicking","_parentSourceElm","contactFormParentId","sourceBtnElm","keydown","contactWidgetKey","cwPercent","fadeout","intervalId","sessionDuration","cwStorageKey","cwFormsubmitKey","maxSubmitFormAllowed","cwGlobalFormsubmittedKey","isFooterOverlay","cwMaxApperance","ignoreDuration","cwSessionDuration","cwIgnoreDuration","ignoreCase","cwGetScrollPercent","onScrollHandler","scrollPercent","appear","_cwGlobalFormsubmittedKey","_maxNumberOfSubmitForm","formSubmitState","getState","ignored","currentBlockState","defaultState","saveState","bindEvent","$closeBtn","closeBtnHandler","_count","$$epiforms","setExpireState","MktoForms2","whenReady","onSuccess","expiredOn","appearance","currentState","counterFadeout","focusFadeout","footerOverlayElmHeight","cssStr","styleElm","storageKey","storedData","getItem","objStoredData","removeItem","counter","timeplay","cookieName","setCookie","path","domain","today","expires_date","encodeURI","setCookieWithoutServerCheck","getCookie","c_start","c_end","decodeURI","deleteCookie","cookieNotify","cprompt","cookieCTA","GTEventDetailPageV2","CopyText","copyStr","textInput","ClipboardItem","text/plain","Blob","clipboard","write","execCommand","contentStr","targetElmDT","copied","gtm.elementID","Datatables","Datatable","translateObj","lengthMenu","dataTableTranslation","searchPlaceholder","extraSetting","scrollX","pagingType","layout","bottomEnd","paging","numbers","paginate","$overlay","useLazyLoad","tableId","automaticNumber","indexColumnTitle","setting","processing","serverSide","AutomaticNumbering","UseLazyLoad","columnDefs","searchable","orderable","targets","DataTable","dataTable","nodes","cell","_iDisplayStart","draw","header","isAdvancedUpload","__div","DragNDrop","dndContainer","DynamicPDF","scrollAnimationAreas","scrollAnimationArea","clientRect","percentInViewport","GTEPiServerFormEventRegistrationPage","param1","param2","EPiServerForms","__errorClass","removeError","__element","checkboxElm","formElement","formElm","formHeading","emptyBlockChecker","FileUpload","epiForm","submitBtn","$body","$loadingDiv","epi","EPiServer","Forms","AsyncSubmit","epiForms","ev","checkboxElms","checked","ready","multiStepForm","filteredForm","formId","workingFormInfo","StepsInfo","Steps","formData","Data","loadFormDataFromStorage","formScroll","Validators","fieldID","inputData","regexValue","model","jsPattern","fieldElm","condition","minLength","isValid","__file","droppedFiles","__input","accept","extBlackListArray","UploadExtensionBlackList","extArray","extArrayLength","filesLength","blackList","whiteList","Utils","stringFormat","__sizeInBytes","sizeInBytes","emptyTextChecker","formsNavigationNextStep","__scrollTopSpacing","__overlay","__epiForms","__scrollContainer","formsSubmitted","__el","__validationMSG","formsStepValidating","__firstFailedFormElem","__failElem","__allFailedFormElems","formsStartSubmitting","__formData","__singleFileInput","__inputName","filePicker","__fileArray","File","fileName","formsNavigationPrevStep","formsReset","formsSubmittedError","FormsStructureChange","FormsStepSubmitted","FormsSubmissionFinalized","FormsSubmitting","EPiServerFormsOverlay","inited","formReferenceID","formTemplate","EmailObfuscate","beforePrint","user","afterPrint","bccDomain","emailOnly","$emailObfucate","$buttonText","$m","subject","bccUser","isEnableMailtoDialog","mailto","bcc","newMailtoDialogTemplate","$mailtoTemplate","clientSelect","clientOpen","mailtoDialogTemplate","copyText","setSelectionRange","clientSelection","addListener","mql","onbeforeprint","onafterprint","Equalise","equalise","windowWWidth","parentnode","eqHeight","eqItem","targetH","removeProperty","EventCopyLink","inputid","copyButton","EventCountdown","initializeClock","endTime","clock","daysSpan","hoursSpan","minutesSpan","secondsSpan","updateClock","eventIsoStartDateTime","seconds","minutes","hours","remainingTotal","remainingDays","remainingHours","remainingMinutes","remainingSeconds","daysLength","timeInterval","eventIsoStartDateUtcElement","isResize","eventDetailPageV2HeaderElm","eventDetailPageV2HeaderV3","eventDetailPageV2HeaderElmHeight","eventCountDownBlock","eventCountDownBlockHeight","isLargeScreen","isInitClamp","gtPageContentAreaElm","eventDetailPageV2ScrollHandler","sticky","paddingTop","isFakeStickyData","megaMenuLV2","scrollTarget","scrollOffset","registerBtn","hideHyperLinkAnimation","timeStart","timeEnd","alert","EventListingSearch","__ths","_isFilter","applyFilters","filterTags","clearFiltersBtn","sResults","sUpcomingEventResult","sPastEventResult","sResultsLastItem","toggleFilters","searchInput","filters","closeFiltersButton","filterHeading","isFilterField","pageSize","joinChar","filtersClosed","overflowHidden","upcomingEventTotalDisplayingItems","pastEventTotalDisplayingItems","totalUpcomingEventResultsQty","totalPastEventResultsQty","upcomingEventLoadBtn","pastEventLoadBtn","upcomingEventLoadMoreEndpoint","pastEventLoadMoreEndpoint","filterForm","CLOSED","OPENED","UNACTIVE","ACTIVE","MOBILE_BREAKPOINT","TABLET_BREAKPOINT","__prevWindowWidth","filtersState","activeState","searchState","queryString","_isFilterHidden","pressESCToClose","currentCursorActiveElm","configUpcomingEvent","configPastEvent","sParams","CurrentPageIndex","isFilter","sUpcomingEventParams","sPastEventParams","observerElm","isUpcoming","observed","updatePageIndex","page","pageIndex","setParameterInQueryString","canonicalElm","origin","fireAutocomplete","orphanCharAsWord","word","currentAutoComplete","inputId","dec","escapeQueryChars","_autoCompleteItems","_autoCompleteItem","decodedText","Text","fromCharCode","Value","ex","initFiltersList","eqactive","$filterHeading","toggleFilterBtn","clearAllTagsBtn","selectedTags","tagElm","eTarget","lastClickedCheckbox","toggleFiltersDropdown","currentStatus","addClassMethod","removeClassMethod","__action","filtersMethod","overflowMethod","toggleButtonMethod","$button","$filters","__cls","_searchBarContainer","filterBody","searchBar","eventHandler","preventEvent","eventListinglazyLoad","clearEndPoint","clearFilters","searchResults","blockFilterFields","blockSearchBtn","resizeTO","__windowWidth","__MOBILE","tryAddSort","callParams","parentUrl","URL","currentUrl","parentQuery","parentParams","URLSearchParams","currentParams","ajaxCall","successCallback","contextRef","__url","selectedTagsElm","searchFilterSelected","scrollIntoViewSearchResults","unblockSearchFields","isUpcomingLazyLoad","isLoadPrevious","configKey","paramKey","__queryStringChar","__endpointUrl","loadEndPoint","__searchResults","resultContainerElms","CurrentPreviousPageIndex","CurrentNextPageIndex","currentContainer","old_DOM_height","old_scroll","bindSorting","totalDisplayingItems","totalItemsCount","focusableItem","eventItem","behavior","lstFocusableElms","rebuildClamp","endpoint","replaceResults","setQueryString","__searchParams","getSearchParams","__searchEndPoint","scrollIntoView","toggleFiltersClass","__tmpFilterStatus","__tmpData","searchFilterData","__allfilters","__activefilter","upcomingEventData","partEventData","displayClearFiltersBtn","lastClickedCheckboxElm","qsToObj","qsObj","tmp","qsURIbuilder","qsArray","__tmpkey","isDelete","queryParams","__qsString","getQueryString","serialize","serializedForm","secondpage","resultContainerOffsetTop","shouldLoadMore","__loadBtn","loadMoreContainer","currentTotalDisplayingItems","maxPage","loadPreviousHandler","resultContainerElm","__clearFiltersBtn","FakeHyperlink","Expert","tags","_hasTags","keywordInputElm","GTExpertQuickview","lastFocusElement","expertQuickviewReferenceId","expertModal","closeDialogCallback","resetHash","expertQuickviewOverlay","hideOverlay","_quickviewModalContainer","_url","ExtendedSearch","selectElm","loadBtn","filterSubHeading","totalResultsQty","loadMoreState","articleTileBlur","changeSort","slSort","query_string","search_params","selectedIndex","attackEvtforSort","attackedEvt","tombstoneContainerElm","t53NewPressContainerElm","currentPageIndex","blockindex","searchBarPos","cacheSearchBarPos","extendedSearchSticky","isParent","$filterSubHeading","parentTagInputElm","currentStateIsActive","tombstoneCheckboxElms","currentParentTagVal","currentParentTagVals","newValueElm","parentTabOfNewVal","tmpArr","currentItemElm","tmpArrPreventDuplicate","topicGlide","appendResults","currentIndex","delegateTarget","__contextElm","__searchResultsGrid","glideItemHasLoadMoreFnc","destroyGlide","lastItem","lastElementChild","TombstoneTransaction","nextToLastItem","filterByBtn","FormSelect","View","currentPageIndexElm","_loadmoreShowItems","_loadMoreProgressbar","ExtendedSearchV2","loadConfig","loadmoreConfig","config","loadMoreEndPoint","listingAreas","contentItem","loadMore","GlideV2","destroyGlideV2","elmIsFocusable","isRemove","isLoadMore","urlSParams","oldKeywords","currentURLParams","filterSelectedTags","selectedItem","parentID","tmpFilterSelectedTags","selectedTagIdx","encodeURIComponent","serializedFormParams","currentConfig","currentNextPageIndex","ShowMore","GTExternalLogin","registerFormReferenceId","registerFormReferenceElm","FakeArrowTransitions","expandWidth","endOfArrow","$dom","$arrow","fakeHyperLinkClickEvtList","fakeHyperLinkKeypressEvtList","redirectLink","linkElm","anchor","funIdx","handleClickEvt","handleKeypressEvt","i18n","languageResources","acceptedExtArray","acceptMultiple","initI18n","initDOMElements","initBindings","maxFileNameLength","maxFile","numbFile","resetFileInput","__i18n","filePickerLabel","ButtonLabel","noFileLabel","SelectFileLabel","multipleFilesLabel","MultipleFiles","dropFilesLabel","DropAreaLabel","dropOrLabel","DropOrLabel","allowUploadMaxItemLabel","AllowUploadMaxItemLabel","invalidMineTypes","invalidFileSize","listEL","removeEL","attachment","pdf","doc","__droppedFileList","__changeTrigeredByCode","changeAndDropFiles","pushFileToList","invalidMessageElm","allowedMineTypesList","maxFileSize","DataTransfer","wrongFiles","wrongFileSizeItems","flagFail","toFixed","errString","GTInsightHubOverlays","GTFilters","scrollToEl","elId","__container","__panel","__tIndex","__title","__titleTxt","outerHTML","__moreLink","__pIndex","__clicked","sectionName","section","fadeIn","moreFilters","thisID","slideDown","defineSearch","layerName","layer","GTFormInfieldLabel","Filters","GTFindOfficesNearYou","findOfficesElm","nearestOfficesContainerElm","nearestOfficesInputElm","selectOffices","autoCompleteObj","initDropdown","offices","xhttp","officesListObj","officesList","_officesByLocationArr","subData","_officeByLocationItem","office","linkLocation","findOfficesNearYou","isOpenNewTab","officesLookup","_autoCompleteSelect","FlexibleBanner","_flexibleBannerBlocks","_flexibleBannerBlock","_ctaButton","_ctaLink","_currentPageHasBannerUrl","_ctaText","bannerName","bannerLink","bannerCTAText","CTAURL","FlexibleVideoBannerBlocks","FlexibleVideoBannerBlock","_iOS","_iPhone","_isMobile","hideTimeout","video","forceLoadOnMobile","videoArray","loadVideo","hideVideoAfterTimeout","currentVideo","pause","webkitExitFullscreen","mozCancelFullscreen","exitFullscreen","playWhenLoaded","$playBtn","checkAutoPlay","playVideo","pauseVideo","play","counterTimer","_video","showPlayButton","isPlaying","showBtn","videoTimeOut","screen","orientation","unlock","lock","webkitEnterFullscreen","webkitRequestFullscreen","mozRequestFullScreen","Footer","FOOTER_NAV_MENU_EXPANDED_CLASS","_footerLinkList","_footerNavLinkItems","linkItem","_footerNavParent","_collapseButton","formInput","formSelect","formDateInput","toggleFilledClass","parentDiv","GTIntenationalMemberFirms","ffEnable","selectText","GTMGlobal","clickBlock","anchorElm","allowTracking","blockName","trackingBlock","blockLink","megaMenuV3","initializedTracking","containerClick","menuLevel_1","menuLevel_2","menuLevel_3","content","linktext","hreflang","containerLink","megaMenu","megaMenuV1Mobile","triggerTracking","globalSearch","__TYPE_POPULAR","__TYPE_PREVIOUS","__TYPE_RECENT","pushData","search_term","search_type","search_link","search_text","searchType","searchText","searchTerm","currentFormx","FormData","GTMTracking",".t6-page","firmName","t6PageTitle","peopleName",".articleinlineblock","articleInlineBlockTitle","GTGateEventResourcesEpiForm","cookieValue","currentCookie","Cookies","currentPageId","localStorageId","storedGatedArticleForm","objGatedForm","reload","GTGateEventResourcesMarketoForm","setGatedArticleMarketoFormCookie","smallImageUrl","imageUrl","finalUrl","maketoForm","getFormElem","onSubmit","maketoFormSubmit","storedGatedForm","$blockImage","$smallImageInput","$bigImageInput","bigImageUrl","GatedArticleForm","isRTL","checkElementHeight","$blockContent","$formElements","$prevElement","currentHeight","previousHeight","checkButtonPosition","$formStep","closeTolast","$checkBoxes","mgTop","GatedArticleMarketoForm","GatedPdfForm","storedGatedPdfForm","downloadLink","initMouseEvent","currentPageUrl","GatedPdfMarketoForm","gatedDownloadUrlElm","$formRows","elCount","$label","innerHtml","$fieldWrap","$checkBoxList","glides","setActiveBg","mainSlider","listElms","bgItem","index2","doInitGlide","glideSlides","itemW","currentPerView","currentGlide","glidename","count_breakpoint","isHomepageColumnSlider","ishomepagecolumnslider","loadMoreBtn","loadmorebtn","containerW","hasPeek","haspeek","tmp_breakpoints","3200","2999","2100","1700","1500","960","600","glide_controls","isIBCD","glideItem","glideItemIndex","perview","itemwidth","itemMobileWidth","tmp2_breakpoints","numberItemsCanShow","_perview","bulletsElm","bulletHTML","breakpoint_bullet","bullet_i","focusat","setTabable","isMove","countGlideItemElm","currentBulletsCtrl","aElms","aElm","aIdx","isMoveByTabEvt","currentBulletPos","bulletElms","bulletElmsLength","glideType","bulletElm","bulletElmIndex","isActiveBullet","bulletLabel","rotatetime","sync","isMoveByUser","currentSelector","willTriggerLoadMore","currentLoadmoreBtn","glideTrackElm","isMoving","sync2Slider","parentBlock","bgItemIndex","glideElmItem","glideElmIndex","onfocus","activatingElm","keycode","glideItemWillPause","go","parentGlideSelector","currentVisitedElm","parentGlide","currentGlideSelector","currentGlideName","currentTotalItems","bulletItems","prevElm","bulletItem","nextElm","glideCtrlName","glideItemSelector","glideItemChildSelectors","glideItemChildSelector","childGlide","targetSlider","nextIndex","currentIdx","targetGlide__slide","controlContainer","reinitializeGlide","elmParentClasses","glidesV2","specificElm","bulletSize","1200","mobilePerview","tabletPerview","glideNavButtons","elmDataset","hideBullets","maxBullets","totalBullets","lastindex","clickableElms","firstChildCanClick","currentSteps","realGlideIndex","bullet_steps","hiddenItems","detectClickEvt","bulletIndex","reinitializeGlideV2","usingFadeAnimation","GlobalPeopleFinder","globalPeople","People","app","Vue","countries","peoples","firm","contact","job","limitItems","filteredPeoples","filterPeoples","mounted","$nextTick","tmpCountries","tmpPeoples","people","regexContact","regexJob","Name","Phone","Email","JobTitle","Firm","HeadSearch","$toggle","$content","$search","$globalreach","$lang","$login","$header","$close","topShift","GTHomepageBannerCarousel","mainSlide","controlSlide","mainSliderContainer","mainSlideItems","backgroundItems","controlSlideItems","dotItems","nextBtn","preBtn","itemNum","directionIsLTR","firstChildClonedElm","lastChildClonedElm","timeoutList","_timer","slideTransitionTime","triggerAnimation","currentSlide","currentBackground","loaded","animateItem","resetState","isTriggerByPaginationItem","currentDotItem","buttonElm","currentControlSlideItem","triggerAnimationOnImageLoaded","elmIndex","imgElm","currentTimeout","tmpIdx","currentActivatedItem","genClone","cloneItems","cloneLastChild","cloneFirstChild","preFirstChild","currentItemIdx","preLastChild","clonePreLastChild","clonePreFirstChild","touchstartX","_currentItemIdx","focusableElm","touchendX","screenX","HomeIndustryBlock","block","images","targetIndex","targetImage","HomeInsightsNewsPromoBlock","_tagFilterTabItems","tabFilter","_tagFilterTabContainer","_activeTab","_tabEndpointInput","_ajaxUrl","_filterTag","_insightsPromoContainerBlock","_replaceResultContainer","isClicked","_replaceContainer","HorizontalTable","changeRowBorder","$table","styleId","styleDom","$tr","borderWidth","IBCDListingPage","trackingElm","gtmTracking","trackingLabel","GTIBCFinder","_currentSelectedCountry","_suggestSection","countriesListElm","ibcFinderLatLongEndpoint","ibcSearchbox","ibcFinderSelectContainer","countriesList","countriesLookup","__countrySelected","getSelectedCountry","selectedCountry","_endPointUrl","_lastSectionHeight","_ibcGlide","setSearchboxValue","peopleTracking","autoCompleteElm","useMyLocation","ibcCurrentLocationElm","geolocation","getCurrentPosition","successFunction","errorFunction","currentFirm","_selectedCountry","getIBCByLatLong","latitude","coords","longitude","__currentCountry","accessErrorMessage","ImagesGallery","$modal","$img","$next","$prev","closeModal","plusSlides","showSlides","$item","InputLabel","GTInsightArticle","popoverTimer","stickyEnabled","topBannerExist","InsightFilters","_filterTagsTaxonomies","insightResultContainer","taxonomyFilterTabs","_insightLandingFilters","_taxonomyTabItems","tabItem","_child","_oldActiveTab","_applyFilterBtns","_clearFilterLabelBtns","applyFilterBtn","_insightsFilterContainer","_insightsFilterItems","checkedItem","processFilterCheckbox","_filterCheckboxValue","_filterCheckbox","_parentTaxonomy","_parentTaxonomyArr","_queryParams","_currentPageIndex","searchResultsByTaxonomies","_clearFilterLabel","initFilterByLabel","filterButtonsContainer","getAllFilterredTaxonomies","_filterLables","filterBtn","_taxFilterValue","_urlSearchParams","_filterByPeoples","getAll","_people","initLoadmoreButton","_loadmoreButton","_loadmoreEndpoint","loadMoreResultsByTag","_sortSelectBoxesContainer","_sortSelectBoxContainer","_sortingSelectBox","_params","_filterByHubTag","toggleFiltersForm","_filtersContainer","_filtersContainerToggle","_filterBtn","toggleOverhiddenHTML","_filtersShowBtn","_filtersHideBtn","_selectFilterItems","_currentTagsFilterred","filterredByTaxonomy","_tagLabel","_tagLabelValue","queriesStringBuilder","_otherEndpoint","_isLoadmore","_searchSorting","_hubtag","_peoples","_tagsArr","_tagsStr","_counter","_tagValue","_filterItemContainers","_filterItem","_filterConditionContainer","getParameterInQueryString","_isAppendResults","_insightResultsContainer","setShowingNumber","_loadBtn","_pageIndexByTags","_pageSize","_showedInsightItems","_showingNumberElement","InsightFiltersV2","insightsFilterHandle","previousPageIndex","nextPageIndex","currentPage","insightResultsContainer","insightListingContainer","currentFilterTabIndex","articleItem","hasFilter","_isLoadPrevious","filterEndpoint","InsightPageV2","GTInsightHubOverlay","hubid","percent","fadeOutTime","showDialog","maxApperance","getScrollPercent","onClickIgnoreHandler","fadeOut","onResizeHandler","isLandscape","targetFrame","openDialog","formDialogDom","$formEl","checkboxes","selects","promotedBlock","popularBlock","promotedSidebar","GTInsightPageV2","tabsHandle","_memberFirmTabs","_firmTabs","_firmTab","removeSiblingsClass","__siblingFirmContents","_firmTarget","_currentFirmContents","_continentsList","_continents","_continentsHeader","collapseExpandContinent","scroll2Elm","jumpToList","_jumpTolistElm","jumpToListHandle","_continentBookmarks","_paddingElm","_targetID","_targetElem","paddingBottom","_otherChild","expandContinentByGeo","isSelected","continent","_firmsList","IntenationalMemberFirms","triggerClampKeyContentBlock","textElm","titleElm","textElmNumLine","titleElmNumLine","clampKeyContentBlock","keyContent","KeyQuestion","keyIcon","keyQuestionBox","keyQuestionModel","ProgressBarRPI","LazyBackgrounds","LazyLoad","loadArticles","jsonUrl","json","relatedItems","_len","relatedContent","heading","_format","lenLong","LazyLoadMoreLinkRemove","$moreLink","appendArticles","promoblocks","$relatedItemsContainer","readMoreText","mediumPromoTemplate","smallPromoTemplate","promoOutput","comboBlock","linkContent","blockMarkup","Title","Summary","Url","itemMarkup","medPromoClass","largePromoClass","bgrImageTpl","UrlPath","TitleUrl","LazyLoadingArticles","startIndex","itemsPerPage","Items","PromoBlocks","TotalResultsNumber","appendMediaArticles","$resultsContainer","publishDate","PublishDateFormated","itemClass","CssClass","LazyLoadingMediaItemsArticles","initialStartIndex","itemsRequested","appendExperts","$expertsContainer","hideLocation","itemTemplate","Location","EmailAddress","EmailAddressObfuscate","TwitterUrl","LinkedInUrl","VCardDownloadDisabled","tmpPhone","PhotoUrl","ProfileUrl","Guid","VCardTitle","gtConfig","currentLanguageId","LazyLoadingPeople","nameSearch","serviceSearch","industrySearch","locationSearch","langSearch","GTPeopleLandingPage","loadMoreVacancies","department","jobTitle","jobLocation","jobUrl","loadVacancies","pagesize","totalCount","languageSymbol","_jobSect","_jobName","_jobLoc","_jobUrl","moreVacancies","Department","JobUrl","appendEvents","Status","DateMarkupContent","LoadMoreEvents","serviceUrl","lazyLoadingStatus","LazyLoadingEvents","FilterEvents","getOfficeTemplate","_smallPrint","_additionalInfo","_employeesLink","addressTemplate","loadOffices","_office","_location","_mapImg","_mapURL","_phone","_email","_addAry","_emailUs","officeName","_addressAppend","$offices","viewEmployees","_defaultMapImgPath","$localLang","$localCountry","getLocationData","$locElem","locationList","locDataArray","locationData","locationNiceUrl","locationParam","hasHistorySupport","city","locationString","_emailObfuscate","_emailUsObfuscate","OfficeLists","Office","locat","LocationImage","MapUrl","PhoneNumber","Address","AdditionalInfo","EmailUsCaptionObfuscate","smallprint","EmployeesLink","scrollDownToOffices","errorThrown","getLocation","scrollToLocation","linkTertiaryList","GTOverlays","player","autoFocusAtFirstElm","tabbable","firstTabbable","lastTabbable","calculateOverlayH","screenH","overlayH","offSetH","getWindowWidth","$window","getWindowHeight","winHeight","disableRubberBand","isOverlayTotallyScrolled","overlay","resetEpiForm","htmlOrRef","checkH","isNewsletter","doNotAddBindings","callbackOnClose","removeOnClose","closeOverlay","_container","overlayTabNavHandlerOnOpen","overlayTabNavHandlerOnClose","youTubeOverlay","playerWidth","playerHeight","videoID","hideRelatedVideoInYoutube","vimeoVideoOverlay","vimeoVideoThumbNail","currentElem","youTubeVideoOverlay","loadPlayer","playerFrame","tag","firstScriptTag","YT","onYouTubePlayerAPIReady","onYouTubePlayer","Player","videoId","onPlayerReady","onStateChange","onPlayerStateChange","PlayerState","ENDED","seekTo","postMessage","stopVideo","newsletterOverlay","openVideoInNewTab","win","launchOverlay","handleClick","youtubeLink","onkeydown","launchVideoOverlay","vimeoRegExp","youtubeRegExp","handleLaunchOfVideoOverlay","videoFunction","videoLink","vimeoMatch","youtubeMatch","$current","launchNewsletter","overlayContactProcess","postFormURL","findInsiders","$optionErrors","$emailErrors","recaptchaContainer","recaptcha","Captcha","error_origin","error_value","error_selector","error_where","$btn","$selectedCbxs","hpc","recaptchaVal","captchaChecked","showRecaptchaErrorMsg","subscribeFormModel","Keys","HoneyPotCaptcha","CurrentLanguage","ReCaptchaToken","ContactPageId","jsonData","results","Success","IsEmailValid","EmailErrors","AreKeysValid","KeysErrors","loadOverlayContact","loadOverlaySeminar","$nameError","$emailError","$optionsError","$optinError","$selectedOptin","Optin","postFormAjaxOptions","calculateAndSetOverlayPos","overlayW","topOffset","resizeOverlay","htmlElm","toggleHeaderOverlay","showHeaderOverlay","hideHeaderOverlay","LinkTertiary","hiddenLinkAnimation","_body","expandBanner","copy","readMore","readLess","popupLocation","pickedPos","mapBlock","currentLocation","getDirectionTextGoogleMap","latLngAddToMap","lat","lng","officeId","address","mapUrl","mapUrlTitle","phoneNo","checkMapDirection","newURL","checkMapDirectionLittleLotOffice","currentHref","locationArray","FilterOffice","lotsofficeservicefilter","dataModel","filterContainer","clearFilterContainer","clearFilter","filterNumber","accordionList","resultNumber","backToTop","is1stTime","defaultSelectedList","accordionItem","accordionHeading","updateFilterNumber","showLessText","showMoreText","filterSelector","selectedList","updateResults","filterNumberStr","selectedData","defaultOffice","getdirectiontextlocal","resultCount","dataClone","listLocation","getDirectionText","isLittleOffice","removeValFromIndex","temp1","code","coordinate","reloadMarkers","accClone","prependTo","tollFreeNumberText","faxNumberText","isShowTollFree","tollFreeNumber","isShowFax","faxNumber","temp2","datalittle","isHideFilter","listFilters","filterPill","CheckClosestOffice","lon","$locationId","$pageId","$blockValue","locationPage","locationBannerOfficeCloseBlock","elementToUpdateLatLng","Maps","currentLocations","mapElm","autoZoomFnc","mapConfig","boundCoordinates","angle","startLat","endLat","zoomByHeight","LN2","zoomByWidth","startLng","endLng","oldMapZoomLevel","mapZoomLevel","setZoom","mapZoomLevelMobile","defaultCenter","locations","google","maps","Map","mapTypeControl","streetViewControl","fullscreenControl","zoomControl","gestureHandling","elementType","stylers","featureType","defaultCenterAsMaker","setMarkers","bounds","LatLngBounds","cur_location","markerObj","markerIcon","makeDiff","scaledSize","Size","optimized","Marker","callbackWhenClickingOnMarker","fitBounds","MarketoEmbedForms","script_src","gReCaptchaPubKey","mkForms","filteredIDList","filteredList","filteredConfigList","existedID","idArr","idxArr","marketoConfig","currentList","renderMkForm","mkElmArr","mkConfigArr","listLength","countForm","mkForm","renderMkFormFnc","marketoElm","MarketoEmbedForm","mkFormElm","isStripCss","stripCss","campaignGAClass","isHomepageBlock","enableFeatureFlag","submittable","onValidate","builtInValidation","recaptchaResponseElm","recaptchaContainerElm","isReCaptchaOK","lastRecaptchaUserInput","recaptchaMsgMkto","recaptchaRequireMessage","errorMsgLabel","marketoID","getId","marketoMunchkinId","values","followUpUrl","displaySuccessMsg","successMessage","marketo.form_id","marketo.form_values","marketo.follow_up_url","script","defer","head","captchaContainer","grecaptcha","render","sitekey","modifyStyle","doStripCss","addClassTocheckboxes","addClassToRadio","addClassToSelect","addFloatingClass","modifyCheckboxLabel","addIconToSelect","addIconToRadio","addGaClass","gtHelper","childElements","initializedCheckboxLabel","labelEl","setAttibute","banner","initializedCheckbox","isMulticheckboxes","modifyFieldID","initializedSelectIcon","initializedRadioIcon","initializedRadio","initializedSelect","fieldLabel","fieldWrap","forAttr","errorClassHandle","filledClassHandle","inputFields","initializedFloatingStyle","GTMarketoEmbedFormEventRegistrationPage","MediaCarousel","tabNavigation","$tabContent","$tabItems","$tabHead","$tabItem","$tHead","$tabHeader","dActiveTab","adjustItems","highest","$tabs","itemCount","min-height","OfficeBanner","handleResize","bannerBgColorClasses","$bannerContainer","$me","$extraClass","OnPageNavigation","CLASSES","ON_PAGE_NAV","ON_PAGE_NAV_CONT","EXPAND_BTN","CLOSE_BTN","CURRENT_ITEM","LINK_ITEMS","OUT_VIEWPORT","EXPANDED","SHOW_OVERLAY","SHOW_ONPAGE_NAVIGATION","onPageNav","expandedBtn","closeBtn","closeOnPageNav","setActiveNavItem","activeLink","menuActiveTracking","targetOffset","hasMenuV3","mainHeaderElmHeight","sections","isAnimating","elmOffset","hrefArr","scrollDirection","needToScrollDirection","targetOffsetTop","PeopleFilters","fetchingAPI","currentPreviousPageIndex","loadmoreEndpoint","firstItem","resultContainerElmOffset","checkScrollPosExtendedSearch","vcards","contactName","listPerfectScrollbar","GTPerfectScrollbar","ps","currentTB","scrollElmStr","gtscrollWrapper","gtscrollbars","currentScrollBar","currentScrollWrapper","currentScrollThumbs","currentScrollContents","currentTBComputedStyle","currentTBodyWidth","currentTBWidth","currentThumbWidth","isHoverOnGTScroll","margin","onscroll","currentThumbPosition","onmouseenter","removeScrollbarWhenPrint","destroyScrollbar","reInitScrollbar","debounceGTPerfectScrollbar","revealElement","animation-delay","GTSkipLink","shortcut","ahref","insightToggleBtn","firstFocusableElement","lstElm","tmpdebounceGTPerfectScrollbarLength","tmpTimer","PressCarouselBanner","controlItems","contentItems","triggerAnimate","currentContentItem","GTPressPage","pressBalanceHeight","balanceHeightElms","balanceHeight","imgViewmode","blanceHeightPressContacts","PressVideo","pressEmbedBtnHandle","copyTextToClipboard","getVideoID","textArea","padding","border","outline","boxShadow","err","pressEmbedBtn","pressVideoElm","backgroundElm","bgset","progressBarHandler","RDStationForms","RDStationFormConfig","RDForm","enctype","captchaKey","rdstationform","recaptchaMsg","expired-callback","gCaptchaResponseElm","privacyElm","strAppend","uploadFieldLabel","_GTFileUpload","invalidFileQuantity","tmpUploadArea","reader","FileReader","htmlStr","readAsDataURL","checkValidEmailDomain","_emailInput","_emailAddress","_emailDomainStr","emailDomainsBlocked","_emailDomainArr","_blockEmailChk","_blockedemaildomainMsg","_currentEmailDomain","_submitBtn","numberOfFieldsPerStep","errorMsg","cmsPageId","_blockEmailChkContainer","errorBlockEmailMsg","divideNumber","currentStep","allFields","totalFields","totalSteps","nextLabel","nextStep","backLabel","backStep","backBtn","focusOnFirstElm","nextBtnHandler","minPoint","maxPoint","_isValid","inputElm","_blockedEmailDomain","validEmailElm","minTelLength","country","lastCountryCode","realErrorLabel","_blockedEmailDomainChk","_inputEmail","displayFields","backBtnHandler","isBack","_currentStep","emailElm","validationMessage","errStr","_emailErrorMsgElm","_emailBlockedErrorMsgElm","domainEmail","targetStep","errorElm","errorIdx","RangeSlider","tooltipTitle","formRangeWrapper","moveTooltipPoint","toolTipElm","toolTipPointElm","offsetX","currentValueElm","Reach","globalReachElm","isInited","globalReachToggleBtn","globalReachTabElms","isDesktop","isNav3","globalReachHeadTitle","tabify","closeMegaNav2Btn","disableScroll","calcActivatedTabHeight","httpService","globalReachLink","Content-type","globalReachRegionsMoileLV1Elm","finally","isDisable","activeLinks","lastActiveLink","currentTab","activeEl","listPanelItem","globalReach","ReadMore","$readMoreBlock","DATA_KEY","READMORE_STORAGE_KEY","SELECTORS","HINT","CONTENT","COVER","COLLAPSING_CLASS","MAX_HEIGHT_PROP","ANIMATION_DURATION","_currentReadmoreBlock","isReadMoreEnabled","$readmoreHint","$readmoreContent","focussableElements","blockId","isExpanding","readmoreState","isExpandByUser","newState","readMoreBlock","$cover","focussableElement","focussableElementIdx","collapse","isIBCDListingPage","restrictedHeight","isShowReadmoreIcon","newIsMobile","GTReaderView","getResourceVIURL","relativeFile","getPreloader","accordion_items","closeReaderViewText","iframe","excludeSelector","insightbanner","insightbannerHtml","insightmain","insightmainHtml","excludeFromReaderView","getParsedArticle","applyDir","preloader","fontUrl","inlineStyles","stylesTags","print","showElements","closeIframe","latestUrl","launch","backgroundColor","contents","hideElements","_ths","errorElem","widget","tempPosition","creator_container","creator_where","error_variable","error_containerSelector","key_origin","key_value","key_variable","key_selector","captcha","getReCaptchaElem","renderCaptcha","isCaptchaChecked","recaptchaIsAvailable","getResponse","createCaptcha","getValueFromSelector","selectorObj","getValueFromVariable","variableObj","_returnValue","_tmp","getValueFromOrigin","currentValue","createRecaptchaErrorMsg","_errorElementInnerHTML","_error","_errorContainer","hideRecaptchaErrorMsg","getPositionInterval","where","_captchaInnerHTML","captchaElem","verifyCallback","retry","_retry","handleSubmit","orientationChange","Reveal","GetAnimation","animationType","defaultAnimation","easing","viewFactor","beforeReveal","revealAnimation","targetElements","rvlItemClass","$officePage","$locationPage","isOfficePage","SearchInput","resizeForText","$span","emptyInput","placeWidth","$inputSize","SearchResults","_tabTagsIndex","_tagDictionaries","tagDictionary","_tagkey","_tagValues","_tagValuesArr","_currentTabItem","getCurrentTabItem","_clearButton","Event","initDefaultSearchValue","scrollToTab","horizontalTabHandle","_searchResultsTab","_searchBoxEndpoint","_searchResultsTabItems","_currentTagIndex","searchFiltersHandle","_searchResultsFilterItems","_applyFiltersBtn","filterItem","_groupTagsParent","_checkedItemsByParent","elLeft","elParentLeft","_searchResultsTabItem","filterSelectToggle","_selectFilterToggles","showActiveFilters","selectFilter","initClearSearchInput","_searchFormResetBtn","_searchFormInput","registerSortEvt","initSearchboxInput","_searchboxInput","_searchInputValue","_headerSearchboxInput","_currentSearchKeyword","_isDisabledPreviousSearch","_inputValue","resultCardNumber","_mainSearchResultsContainer","_allResultsCount","_resultKey","_tabKey","_tabItem","_resultsHitCount","_currentPos","_containerOffset","_searchResultsContainer","SecondaryNavbar","$navbarWrapper","moveNavigationAccordingToBanner","officeBannerRect","overlapse","extra","$officeBanner","$contactBox","officeBannerContactRect","atRightEdge","atLeftEdge","applyNavigation","$ul","wrapperWidth","elementWidth","appendArrow","$navbar","$rightArrow","$lefttArrow","$wrapper","rightInterval","leftInterval","isClicking","scrollingHandler","currentScrollLeft","secondaryNavbar","selectList","Select","selectric","onInit","$currentCustomEl","$select","ariaLabel","$selectricInput","$selectric","$selectricItems","currentOptionElm","selectricBtn","selectricname","KeyboardEvent","onOpen","dropdownElm","liElm","elmIdx","liSelectedElm","onClose","onHighlight","SelectPlaceholder","dropdown","removeColorFunc","ServiceIndustrySubMenu","subMenus","subMenu","accordionTitles","accordionTitle","_parent","_subMenuAccordion","blanceHeightServiceIndustrySubMenu","fulltext","SideNav","navElements","SocialShareLine","Square","when","GTStickyButton","button","onlyTriggerOnMobile","isAnimated","buttonElmOffsetTop","doSticky","setTabIndex","slideLength","enableTabIndex","disableTabIndex","resolutionArray","currentWidth","reso","indexCount","numberOfColumns","itemPerView","swiperSlides","check3ThItems","clampSwiper","min3th","max3th","htmlTitle","htmlText","handleTabIndex","swiperInstance","keyup","handleResize_FCB_for4","swiperObj","getSwiperObj","currentSliderWidth","$slides","handleResize_FCB","hadleResize_ExpertBlock","breakpointChecker","mySwiper","exception","handleTouchControlEnableDisable","enableDisableTouch","handleLoop_REB","numberOfItems","sliderWrapper","resolutionThreshold","screenSize","rebSize","isSwipeEnabled","iOS","isServiceIndustryNarrowRelatedExpertBlock","isNarrow","$closestT3","isNarrowWidthPage","screenWidth","$blockWrapper","sliderWidth","getRebWidth","numberOfDisplayItem","rebItemCount","getRebItemCount","defaultSettings","infinite_rebSettings","resistanceRation","1024","959","767","671","479","1316","1299","swiperPagination","961","StickyContact","__stickyContactBlock","handleSticky","prevPost","handleStickyContact","doSwiper","$slidesContainer","colNumber","originType","SwiperNeo","$swiperContainer","getSettingsByType","doSwipperTimeout","beforeSwiperInit","SwiperNeoPreset","removePaginationOnOneSlide","swiperDOMInfo","extendedSettings","extendedSettingFn","swiperSettingObject","customInitFn","afterSwiperInit","swiperResizeFn","doSwiperAsync","tabletMinWidth","limitedMediaSlider","clampTextContent","targetBreakPoint","extraSettingFn","restrictSwiperInitOnBreakpoint","_swiperDOMInfo","_baseSettings","clampOptionArray","clampDataKey","dataKey","_swiperSettingObject","option","$targetTextContainer","originalText","SwitchView","GTSwitchView","switchView","changeView","$currentElem","Table","currentTable","trElm","tdElm","lastExpandBtn","externalTable","expandBtn","closeEvt","GTTabs","firmTabs","GTTrack","Tabs","TombstoneTransactionEvents","forceReregisterEvt","initedClickEvt","eventClick","clickEvtHandler","triggerElms","TouchBlur","touchEndHandler","clickTracking","$link","hitId","trackId","trackPDFs","fourCharFileType","fileType","initTranslationDetect","Track","originalLang","htmlDom","notMobile","currentLang","trimSentence","lastSpace","GTVideoSlider","thumbInPlayer","playlist","scrollUpBtn","scrollDownBtn","frameInPlayer","startVideo","startYT","playerVars","playsinline","deletedThumb","currentThumb","playlistItemElm","Trim","textblocks","titleblocks","UpsaleEvents","phoneFlagInit","selectedFlag","$elm","phoneFields","hasPhoneFields","iti","intlTelInput","preferredCountries","initialCountry","utilsScript","geoIpLookup","matchClientsInput","nameField","spinner","dunsField","dunsNo","no","checkemail","str","validateForm","inputs","forms","isSuccess","failFlag","focusField","contactEmail","clientsName","blockEmailInputElm","blockEmailStr","checkBlockingPrivateEmail","cellPhone","inputHint","confirmLink","qs","mess","responseJSON","errorHtml","UpsaleOnDemandEvents","contactFirstName","contactLastName","onDemandCookieValue","onDemandUpsaleCookieName","ViaTTSubscribe","viaTTSubscriptionDialog","successMessageElm","errorMessageElm","errorMessageResponseElm","emailInputElm","gtRecaptcha","captchaElm","captchaErrElm","emailStr","VideoBannerBlocks","VideoBannerBlock","toggleVideoBtn","pausetitle","playtitle","VideoBlock","videoType","local","youtube","vimeo","videoManager","videos","videoPosition","inline","modal","videoState","paused","buffering","playing","isUnlistedVimeoURL","videoBlockElm","playerArea","videoSource","isPlaysinline","playerID","ytplayer","playerStatus","onError","startVimeo","vimeoPlayer","Vimeo","pip","playerContainer","playingExternalPlayer","nativePlayer","videoBlockID","videoBlock","pauseAll","exitPictureInPicture","playingID","playBtn","hasIframe","currentPlayer","externalPlayerTemplate","minimizeBtnText","closeBtnText","externalPlayer","allowsticky","hasiframe","unlisted_hash","getUnlistedHashFromPath","videoModal","videoArea","requestPictureInPicture","changeViewMobile","GTVisitorProfile","RefreshArchivedsData","keepSwitchTab","pageIndexAttr","totalarchived","showloadmore","_showTarget","bookMarkId","articleBookmarkId","totalbookmark","GTWraptextButton","$rulerDiv","SNE","mediaFiltersMobile","$toPage","toPageID","pageHistory","$pageContainer","$mobileFilters","$nextButton","$checkBox","$backButton","$doneButton","pageNum","screenHeight","cookieValueArr","arrLen","toggleCheckbox","cookieArr","resetOnResize","setDimensions","backToSite","nextCheckbox","Initiator","__object","__$tmp","constr","GTObjects","StickyHeader","TopBannerMessageForNoStickyHeader","charLimit","MegaNavigation","MobileNavigation","autoWidth","freezeVp"],"mappings":"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"}