/* Minification failed. Returning unminified contents.
(2402,55-56): run-time error JS1014: Invalid character: `
(2402,63-64): run-time error JS1193: Expected ',' or ')': {
(2402,73-74): run-time error JS1195: Expected expression: )
(2402,74-75): run-time error JS1004: Expected ';': :
(2402,90-91): run-time error JS1014: Invalid character: `
(2402,91-92): run-time error JS1195: Expected expression: )
(2404,17-18): run-time error JS1002: Syntax error: }
 */
/*! jQuery Migrate v3.0.0 | (c) jQuery Foundation and other contributors | jquery.org/license */
"undefined"==typeof jQuery.migrateMute&&(jQuery.migrateMute=!0),function(a,b){"use strict";function c(c){var d=b.console;e[c]||(e[c]=!0,a.migrateWarnings.push(c),d&&d.warn&&!a.migrateMute&&(d.warn("JQMIGRATE: "+c),a.migrateTrace&&d.trace&&d.trace()))}function d(a,b,d,e){Object.defineProperty(a,b,{configurable:!0,enumerable:!0,get:function(){return c(e),d}})}a.migrateVersion="3.0.0",function(){var c=b.console&&b.console.log&&function(){b.console.log.apply(b.console,arguments)},d=/^[12]\./;c&&(a&&!d.test(a.fn.jquery)||c("JQMIGRATE: jQuery 3.0.0+ REQUIRED"),a.migrateWarnings&&c("JQMIGRATE: Migrate plugin loaded multiple times"),c("JQMIGRATE: Migrate is installed"+(a.migrateMute?"":" with logging active")+", version "+a.migrateVersion))}();var e={};a.migrateWarnings=[],void 0===a.migrateTrace&&(a.migrateTrace=!0),a.migrateReset=function(){e={},a.migrateWarnings.length=0},"BackCompat"===document.compatMode&&c("jQuery is not compatible with Quirks Mode");var f=a.fn.init,g=a.isNumeric,h=a.find,i=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,j=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g;a.fn.init=function(a){var b=Array.prototype.slice.call(arguments);return"string"==typeof a&&"#"===a&&(c("jQuery( '#' ) is not a valid selector"),b[0]=[]),f.apply(this,b)},a.fn.init.prototype=a.fn,a.find=function(a){var b=Array.prototype.slice.call(arguments);if("string"==typeof a&&i.test(a))try{document.querySelector(a)}catch(d){a=a.replace(j,function(a,b,c,d){return"["+b+c+'"'+d+'"]'});try{document.querySelector(a),c("Attribute selector with '#' must be quoted: "+b[0]),b[0]=a}catch(e){c("Attribute selector with '#' was not fixed: "+b[0])}}return h.apply(this,b)};var k;for(k in h)Object.prototype.hasOwnProperty.call(h,k)&&(a.find[k]=h[k]);a.fn.size=function(){return c("jQuery.fn.size() is deprecated; use the .length property"),this.length},a.parseJSON=function(){return c("jQuery.parseJSON is deprecated; use JSON.parse"),JSON.parse.apply(null,arguments)},a.isNumeric=function(b){function d(b){var c=b&&b.toString();return!a.isArray(b)&&c-parseFloat(c)+1>=0}var e=g(b),f=d(b);return e!==f&&c("jQuery.isNumeric() should not be called on constructed objects"),f},d(a,"unique",a.uniqueSort,"jQuery.unique is deprecated, use jQuery.uniqueSort"),d(a.expr,"filters",a.expr.pseudos,"jQuery.expr.filters is now jQuery.expr.pseudos"),d(a.expr,":",a.expr.pseudos,'jQuery.expr[":"] is now jQuery.expr.pseudos');var l=a.ajax;a.ajax=function(){var a=l.apply(this,arguments);return a.promise&&(d(a,"success",a.done,"jQXHR.success is deprecated and removed"),d(a,"error",a.fail,"jQXHR.error is deprecated and removed"),d(a,"complete",a.always,"jQXHR.complete is deprecated and removed")),a};var m=a.fn.removeAttr,n=a.fn.toggleClass,o=/\S+/g;a.fn.removeAttr=function(b){var d=this;return a.each(b.match(o),function(b,e){a.expr.match.bool.test(e)&&(c("jQuery.fn.removeAttr no longer sets boolean properties: "+e),d.prop(e,!1))}),m.apply(this,arguments)},a.fn.toggleClass=function(b){return void 0!==b&&"boolean"!=typeof b?n.apply(this,arguments):(c("jQuery.fn.toggleClass( boolean ) is deprecated"),this.each(function(){var c=this.getAttribute&&this.getAttribute("class")||"";c&&a.data(this,"__className__",c),this.setAttribute&&this.setAttribute("class",c||b===!1?"":a.data(this,"__className__")||"")}))};var p=!1;a.swap&&a.each(["height","width","reliableMarginRight"],function(b,c){var d=a.cssHooks[c]&&a.cssHooks[c].get;d&&(a.cssHooks[c].get=function(){var a;return p=!0,a=d.apply(this,arguments),p=!1,a})}),a.swap=function(a,b,d,e){var f,g,h={};p||c("jQuery.swap() is undocumented and deprecated");for(g in b)h[g]=a.style[g],a.style[g]=b[g];f=d.apply(a,e||[]);for(g in b)a.style[g]=h[g];return f};var q=a.data;a.data=function(b,d,e){var f;return d&&d!==a.camelCase(d)&&(f=a.hasData(b)&&q.call(this,b),f&&d in f)?(c("jQuery.data() always sets/gets camelCased names: "+d),arguments.length>2&&(f[d]=e),f[d]):q.apply(this,arguments)};var r=a.Tween.prototype.run;a.Tween.prototype.run=function(b){a.easing[this.easing].length>1&&(c('easing function "jQuery.easing.'+this.easing.toString()+'" should use only first argument'),a.easing[this.easing]=a.easing[this.easing].bind(a.easing,b,this.options.duration*b,0,1,this.options.duration)),r.apply(this,arguments)};var s=a.fn.load,t=a.event.fix;a.event.props=[],a.event.fixHooks={},a.event.fix=function(b){var d,e=b.type,f=this.fixHooks[e],g=a.event.props;if(g.length)for(c("jQuery.event.props are deprecated and removed: "+g.join());g.length;)a.event.addProp(g.pop());if(f&&!f._migrated_&&(f._migrated_=!0,c("jQuery.event.fixHooks are deprecated and removed: "+e),(g=f.props)&&g.length))for(;g.length;)a.event.addProp(g.pop());return d=t.call(this,b),f&&f.filter?f.filter(d,b):d},a.each(["load","unload","error"],function(b,d){a.fn[d]=function(){var a=Array.prototype.slice.call(arguments,0);return"load"===d&&"string"==typeof a[0]?s.apply(this,a):(c("jQuery.fn."+d+"() is deprecated"),a.splice(0,0,d),arguments.length?this.on.apply(this,a):(this.triggerHandler.apply(this,a),this))}}),a(function(){a(document).triggerHandler("ready")}),a.event.special.ready={setup:function(){this===document&&c("'ready' event is deprecated")}},a.fn.extend({bind:function(a,b,d){return c("jQuery.fn.bind() is deprecated"),this.on(a,null,b,d)},unbind:function(a,b){return c("jQuery.fn.unbind() is deprecated"),this.off(a,null,b)},delegate:function(a,b,d,e){return c("jQuery.fn.delegate() is deprecated"),this.on(b,a,d,e)},undelegate:function(a,b,d){return c("jQuery.fn.undelegate() is deprecated"),1===arguments.length?this.off(a,"**"):this.off(b,a||"**",d)}});var u=a.fn.offset;a.fn.offset=function(){var b,d=this[0],e={top:0,left:0};return d&&d.nodeType?(b=(d.ownerDocument||document).documentElement,a.contains(b,d)?u.apply(this,arguments):(c("jQuery.fn.offset() requires an element connected to a document"),e)):(c("jQuery.fn.offset() requires a valid DOM element"),e)};var v=a.param;a.param=function(b,d){var e=a.ajaxSettings&&a.ajaxSettings.traditional;return void 0===d&&e&&(c("jQuery.param() no longer uses jQuery.ajaxSettings.traditional"),d=e),v.call(this,b,d)};var w=a.fn.andSelf||a.fn.addBack;a.fn.andSelf=function(){return c("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()"),w.apply(this,arguments)};var x=a.Deferred,y=[["resolve","done",a.Callbacks("once memory"),a.Callbacks("once memory"),"resolved"],["reject","fail",a.Callbacks("once memory"),a.Callbacks("once memory"),"rejected"],["notify","progress",a.Callbacks("memory"),a.Callbacks("memory")]];a.Deferred=function(b){var d=x(),e=d.promise();return d.pipe=e.pipe=function(){var b=arguments;return c("deferred.pipe() is deprecated"),a.Deferred(function(c){a.each(y,function(f,g){var h=a.isFunction(b[f])&&b[f];d[g[1]](function(){var b=h&&h.apply(this,arguments);b&&a.isFunction(b.promise)?b.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[g[0]+"With"](this===e?c.promise():this,h?[b]:arguments)})}),b=null}).promise()},b&&b.call(d,d),d}}(jQuery,window);;
/*! modernizr 3.4.0 (Custom Build) | MIT *
 * https://modernizr.com/download/?-flexbox-flexboxlegacy-flexwrap-svg-touchevents-setclasses !*/
!function(e,n,t){function r(e,n){return typeof e===n}function o(){var e,n,t,o,s,i,a;for(var l in x)if(x.hasOwnProperty(l)){if(e=[],n=x[l],n.name&&(e.push(n.name.toLowerCase()),n.options&&n.options.aliases&&n.options.aliases.length))for(t=0;t<n.options.aliases.length;t++)e.push(n.options.aliases[t].toLowerCase());for(o=r(n.fn,"function")?n.fn():n.fn,s=0;s<e.length;s++)i=e[s],a=i.split("."),1===a.length?Modernizr[a[0]]=o:(!Modernizr[a[0]]||Modernizr[a[0]]instanceof Boolean||(Modernizr[a[0]]=new Boolean(Modernizr[a[0]])),Modernizr[a[0]][a[1]]=o),w.push((o?"":"no-")+a.join("-"))}}function s(e){var n=S.className,t=Modernizr._config.classPrefix||"";if(_&&(n=n.baseVal),Modernizr._config.enableJSClass){var r=new RegExp("(^|\\s)"+t+"no-js(\\s|$)");n=n.replace(r,"$1"+t+"js$2")}Modernizr._config.enableClasses&&(n+=" "+t+e.join(" "+t),_?S.className.baseVal=n:S.className=n)}function i(e,n){return!!~(""+e).indexOf(n)}function a(){return"function"!=typeof n.createElement?n.createElement(arguments[0]):_?n.createElementNS.call(n,"https://www.w3.org/2000/svg",arguments[0]):n.createElement.apply(n,arguments)}function l(e){return e.replace(/([a-z])-([a-z])/g,function(e,n,t){return n+t.toUpperCase()}).replace(/^-/,"")}function f(e,n){return function(){return e.apply(n,arguments)}}function u(e,n,t){var o;for(var s in e)if(e[s]in n)return t===!1?e[s]:(o=n[e[s]],r(o,"function")?f(o,t||n):o);return!1}function c(e){return e.replace(/([A-Z])/g,function(e,n){return"-"+n.toLowerCase()}).replace(/^ms-/,"-ms-")}function d(n,t,r){var o;if("getComputedStyle"in e){o=getComputedStyle.call(e,n,t);var s=e.console;if(null!==o)r&&(o=o.getPropertyValue(r));else if(s){var i=s.error?"error":"log";s[i].call(s,"getComputedStyle returning null, its possible modernizr test results are inaccurate")}}else o=!t&&n.currentStyle&&n.currentStyle[r];return o}function p(){var e=n.body;return e||(e=a(_?"svg":"body"),e.fake=!0),e}function m(e,t,r,o){var s,i,l,f,u="modernizr",c=a("div"),d=p();if(parseInt(r,10))for(;r--;)l=a("div"),l.id=o?o[r]:u+(r+1),c.appendChild(l);return s=a("style"),s.type="text/css",s.id="s"+u,(d.fake?d:c).appendChild(s),d.appendChild(c),s.styleSheet?s.styleSheet.cssText=e:s.appendChild(n.createTextNode(e)),c.id=u,d.fake&&(d.style.background="",d.style.overflow="hidden",f=S.style.overflow,S.style.overflow="hidden",S.appendChild(d)),i=t(c,e),d.fake?(d.parentNode.removeChild(d),S.style.overflow=f,S.offsetHeight):c.parentNode.removeChild(c),!!i}function v(n,r){var o=n.length;if("CSS"in e&&"supports"in e.CSS){for(;o--;)if(e.CSS.supports(c(n[o]),r))return!0;return!1}if("CSSSupportsRule"in e){for(var s=[];o--;)s.push("("+c(n[o])+":"+r+")");return s=s.join(" or "),m("@supports ("+s+") { #modernizr { position: absolute; } }",function(e){return"absolute"==d(e,null,"position")})}return t}function h(e,n,o,s){function f(){c&&(delete P.style,delete P.modElem)}if(s=r(s,"undefined")?!1:s,!r(o,"undefined")){var u=v(e,o);if(!r(u,"undefined"))return u}for(var c,d,p,m,h,g=["modernizr","tspan","samp"];!P.style&&g.length;)c=!0,P.modElem=a(g.shift()),P.style=P.modElem.style;for(p=e.length,d=0;p>d;d++)if(m=e[d],h=P.style[m],i(m,"-")&&(m=l(m)),P.style[m]!==t){if(s||r(o,"undefined"))return f(),"pfx"==n?m:!0;try{P.style[m]=o}catch(y){}if(P.style[m]!=h)return f(),"pfx"==n?m:!0}return f(),!1}function g(e,n,t,o,s){var i=e.charAt(0).toUpperCase()+e.slice(1),a=(e+" "+T.join(i+" ")+i).split(" ");return r(n,"string")||r(n,"undefined")?h(a,n,o,s):(a=(e+" "+z.join(i+" ")+i).split(" "),u(a,n,t))}function y(e,n,r){return g(e,t,t,n,r)}var w=[],x=[],C={_version:"3.4.0",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,n){var t=this;setTimeout(function(){n(t[e])},0)},addTest:function(e,n,t){x.push({name:e,fn:n,options:t})},addAsyncTest:function(e){x.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=C,Modernizr=new Modernizr,Modernizr.addTest("svg",!!n.createElementNS&&!!n.createElementNS("https://www.w3.org/2000/svg","svg").createSVGRect);var S=n.documentElement,_="svg"===S.nodeName.toLowerCase(),b="Moz O ms Webkit",T=C._config.usePrefixes?b.split(" "):[];C._cssomPrefixes=T;var z=C._config.usePrefixes?b.toLowerCase().split(" "):[];C._domPrefixes=z;var E={elem:a("modernizr")};Modernizr._q.push(function(){delete E.elem});var P={style:E.elem.style};Modernizr._q.unshift(function(){delete P.style}),C.testAllProps=g,C.testAllProps=y,Modernizr.addTest("flexbox",y("flexBasis","1px",!0)),Modernizr.addTest("flexboxlegacy",y("boxDirection","reverse",!0)),Modernizr.addTest("flexwrap",y("flexWrap","wrap",!0));var N=C._config.usePrefixes?" -webkit- -moz- -o- -ms- ".split(" "):["",""];C._prefixes=N;var j=C.testStyles=m;Modernizr.addTest("touchevents",function(){var t;if("ontouchstart"in e||e.DocumentTouch&&n instanceof DocumentTouch)t=!0;else{var r=["@media (",N.join("touch-enabled),("),"heartz",")","{#modernizr{top:9px;position:absolute}}"].join("");j(r,function(e){t=9===e.offsetTop})}return t}),o(),s(w),delete C.addTest,delete C.addAsyncTest;for(var k=0;k<Modernizr._q.length;k++)Modernizr._q[k]();e.Modernizr=Modernizr}(window,document);;
!function(e){e(["jquery"],function(e){return function(){function t(e,t,n){return f({type:O.error,iconClass:g().iconClasses.error,message:e,optionsOverride:n,title:t})}function n(t,n){return t||(t=g()),v=e("#"+t.containerId),v.length?v:(n&&(v=c(t)),v)}function i(e,t,n){return f({type:O.info,iconClass:g().iconClasses.info,message:e,optionsOverride:n,title:t})}function o(e){w=e}function s(e,t,n){return f({type:O.success,iconClass:g().iconClasses.success,message:e,optionsOverride:n,title:t})}function a(e,t,n){return f({type:O.warning,iconClass:g().iconClasses.warning,message:e,optionsOverride:n,title:t})}function r(e){var t=g();v||n(t),l(e,t)||u(t)}function d(t){var i=g();return v||n(i),t&&0===e(":focus",t).length?void h(t):void(v.children().length&&v.remove())}function u(t){for(var n=v.children(),i=n.length-1;i>=0;i--)l(e(n[i]),t)}function l(t,n){return t&&0===e(":focus",t).length?(t[n.hideMethod]({duration:n.hideDuration,easing:n.hideEasing,complete:function(){h(t)}}),!0):!1}function c(t){return v=e("<div/>").attr("id",t.containerId).addClass(t.positionClass).attr("aria-live","polite").attr("role","alert"),v.appendTo(e(t.target)),v}function p(){return{tapToDismiss:!0,toastClass:"toast",containerId:"toast-container",debug:!1,showMethod:"fadeIn",showDuration:900,showEasing:"swing",onShown:void 0,hideMethod:"fadeOut",hideDuration:1e3,hideEasing:"swing",onHidden:void 0,extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},iconClass:"toast-info",positionClass:"toast-top-right",timeOut:5e3,titleClass:"toast-title",messageClass:"toast-message",target:"body",closeHtml:'<button type="button">&times;</button>',newestOnTop:!0,preventDuplicates:!1,progressBar:!1}}function m(e){w&&w(e)}function f(t){function i(t){return!e(":focus",l).length||t?(clearTimeout(O.intervalId),l[r.hideMethod]({duration:r.hideDuration,easing:r.hideEasing,complete:function(){h(l),r.onHidden&&"hidden"!==b.state&&r.onHidden(),b.state="hidden",b.endTime=new Date,m(b)}})):void 0}function o(){(r.timeOut>0||r.extendedTimeOut>0)&&(u=setTimeout(i,r.extendedTimeOut),O.maxHideTime=parseFloat(r.extendedTimeOut),O.hideEta=(new Date).getTime()+O.maxHideTime)}function s(){clearTimeout(u),O.hideEta=0,l.stop(!0,!0)[r.showMethod]({duration:r.showDuration,easing:r.showEasing})}function a(){var e=(O.hideEta-(new Date).getTime())/O.maxHideTime*100;f.width(e+"%")}var r=g(),d=t.iconClass||r.iconClass;if("undefined"!=typeof t.optionsOverride&&(r=e.extend(r,t.optionsOverride),d=t.optionsOverride.iconClass||d),r.preventDuplicates){if(t.message===C)return;C=t.message}T++,v=n(r,!0);var u=null,l=e("<div/>"),c=e("<div/>"),p=e("<div/>"),f=e("<div/>"),w=e(r.closeHtml),O={intervalId:null,hideEta:null,maxHideTime:null},b={toastId:T,state:"visible",startTime:new Date,options:r,map:t};return t.iconClass&&l.addClass(r.toastClass).addClass(d),t.title&&(c.append(t.title).addClass(r.titleClass),l.append(c)),t.message&&(p.append(t.message).addClass(r.messageClass),l.append(p)),r.closeButton&&(w.addClass("toast-close-button").attr("role","button"),l.prepend(w)),r.progressBar&&(f.addClass("toast-progress"),l.prepend(f)),l.hide(),r.newestOnTop?v.prepend(l):v.append(l),l[r.showMethod]({duration:r.showDuration,easing:r.showEasing,complete:r.onShown}),r.timeOut>0&&(u=setTimeout(i,r.timeOut),O.maxHideTime=parseFloat(r.timeOut),O.hideEta=(new Date).getTime()+O.maxHideTime,r.progressBar&&(O.intervalId=setInterval(a,10))),l.hover(s,o),!r.onclick&&r.tapToDismiss&&l.click(i),r.closeButton&&w&&w.click(function(e){e.stopPropagation?e.stopPropagation():void 0!==e.cancelBubble&&e.cancelBubble!==!0&&(e.cancelBubble=!0),i(!0)}),r.onclick&&l.click(function(){r.onclick(),i()}),m(b),r.debug&&console&&console.log(b),l}function g(){return e.extend({},p(),b.options)}function h(e){v||(v=n()),e.is(":visible")||(e.remove(),e=null,0===v.children().length&&(v.remove(),C=void 0))}var v,w,C,T=0,O={error:"error",info:"info",success:"success",warning:"warning"},b={clear:r,remove:d,error:t,getContainer:n,info:i,options:{},subscribe:o,success:s,version:"2.1.0",warning:a};return b}()})}("function"==typeof define&&define.amd?define:function(e,t){"undefined"!=typeof module&&module.exports?module.exports=t(require("jquery")):window.toastr=t(window.jQuery)});
;
if(typeof jQuery=="undefined")throw new Error("Bootstrap's JavaScript requires jQuery");+function(n){"use strict";var t=n.fn.jquery.split(" ")[0].split(".");if(t[0]<2&&t[1]<9||t[0]==1&&t[1]==9&&t[2]<1||t[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4");}(jQuery);+function(n){"use strict";function t(){var i=document.createElement("bootstrap"),n={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var t in n)if(i.style[t]!==undefined)return{end:n[t]};return!1}n.fn.emulateTransitionEnd=function(t){var i=!1,u=this,r;n(this).one("bsTransitionEnd",function(){i=!0});return r=function(){i||n(u).trigger(n.support.transition.end)},setTimeout(r,t),this};n(function(){(n.support.transition=t(),n.support.transition)&&(n.event.special.bsTransitionEnd={bindType:n.support.transition.end,delegateType:n.support.transition.end,handle:function(t){if(n(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}})})}(jQuery);+function(n){"use strict";function u(i){return this.each(function(){var r=n(this),u=r.data("bs.alert");u||r.data("bs.alert",u=new t(this));typeof i=="string"&&u[i].call(r)})}var i='[data-dismiss="alert"]',t=function(t){n(t).on("click",i,this.close)},r;t.VERSION="3.3.7";t.TRANSITION_DURATION=150;t.prototype.close=function(i){function e(){r.detach().trigger("closed.bs.alert").remove()}var f=n(this),u=f.attr("data-target"),r;(u||(u=f.attr("href"),u=u&&u.replace(/.*(?=#[^\s]*$)/,"")),r=n(u==="#"?[]:u),i&&i.preventDefault(),r.length||(r=f.closest(".alert")),r.trigger(i=n.Event("close.bs.alert")),i.isDefaultPrevented())||(r.removeClass("in"),n.support.transition&&r.hasClass("fade")?r.one("bsTransitionEnd",e).emulateTransitionEnd(t.TRANSITION_DURATION):e())};r=n.fn.alert;n.fn.alert=u;n.fn.alert.Constructor=t;n.fn.alert.noConflict=function(){return n.fn.alert=r,this};n(document).on("click.bs.alert.data-api",i,t.prototype.close)}(jQuery);+function(n){"use strict";function i(i){return this.each(function(){var u=n(this),r=u.data("bs.button"),f=typeof i=="object"&&i;r||u.data("bs.button",r=new t(this,f));i=="toggle"?r.toggle():i&&r.setState(i)})}var t=function(i,r){this.$element=n(i);this.options=n.extend({},t.DEFAULTS,r);this.isLoading=!1},r;t.VERSION="3.3.7";t.DEFAULTS={loadingText:"loading..."};t.prototype.setState=function(t){var i="disabled",r=this.$element,f=r.is("input")?"val":"html",u=r.data();t+="Text";u.resetText==null&&r.data("resetText",r[f]());setTimeout(n.proxy(function(){r[f](u[t]==null?this.options[t]:u[t]);t=="loadingText"?(this.isLoading=!0,r.addClass(i).attr(i,i).prop(i,!0)):this.isLoading&&(this.isLoading=!1,r.removeClass(i).removeAttr(i).prop(i,!1))},this),0)};t.prototype.toggle=function(){var t=!0,i=this.$element.closest('[data-toggle="buttons"]'),n;i.length?(n=this.$element.find("input"),n.prop("type")=="radio"?(n.prop("checked")&&(t=!1),i.find(".active").removeClass("active"),this.$element.addClass("active")):n.prop("type")=="checkbox"&&(n.prop("checked")!==this.$element.hasClass("active")&&(t=!1),this.$element.toggleClass("active")),n.prop("checked",this.$element.hasClass("active")),t&&n.trigger("change")):(this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active"))};r=n.fn.button;n.fn.button=i;n.fn.button.Constructor=t;n.fn.button.noConflict=function(){return n.fn.button=r,this};n(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(t){var r=n(t.target).closest(".btn");i.call(r,"toggle");n(t.target).is('input[type="radio"], input[type="checkbox"]')||(t.preventDefault(),r.is("input,button")?r.trigger("focus"):r.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(t){n(t.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(t.type))})}(jQuery);+function(n){"use strict";function i(i){return this.each(function(){var u=n(this),r=u.data("bs.carousel"),f=n.extend({},t.DEFAULTS,u.data(),typeof i=="object"&&i),e=typeof i=="string"?i:f.slide;r||u.data("bs.carousel",r=new t(this,f));typeof i=="number"?r.to(i):e?r[e]():f.interval&&r.pause().cycle()})}var t=function(t,i){this.$element=n(t);this.$indicators=this.$element.find(".carousel-indicators");this.options=i;this.paused=null;this.sliding=null;this.interval=null;this.$active=null;this.$items=null;this.options.keyboard&&this.$element.on("keydown.bs.carousel",n.proxy(this.keydown,this));this.options.pause!="hover"||"ontouchstart"in document.documentElement||this.$element.on("mouseenter.bs.carousel",n.proxy(this.pause,this)).on("mouseleave.bs.carousel",n.proxy(this.cycle,this))},u,r;t.VERSION="3.3.7";t.TRANSITION_DURATION=600;t.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0};t.prototype.keydown=function(n){if(!/input|textarea/i.test(n.target.tagName)){switch(n.which){case 37:this.prev();break;case 39:this.next();break;default:return}n.preventDefault()}};t.prototype.cycle=function(t){return t||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(n.proxy(this.next,this),this.options.interval)),this};t.prototype.getItemIndex=function(n){return this.$items=n.parent().children(".item"),this.$items.index(n||this.$active)};t.prototype.getItemForDirection=function(n,t){var i=this.getItemIndex(t),f=n=="prev"&&i===0||n=="next"&&i==this.$items.length-1,r,u;return f&&!this.options.wrap?t:(r=n=="prev"?-1:1,u=(i+r)%this.$items.length,this.$items.eq(u))};t.prototype.to=function(n){var i=this,t=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(n>this.$items.length-1)&&!(n<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){i.to(n)}):t==n?this.pause().cycle():this.slide(n>t?"next":"prev",this.$items.eq(n))};t.prototype.pause=function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&n.support.transition&&(this.$element.trigger(n.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this};t.prototype.next=function(){if(!this.sliding)return this.slide("next")};t.prototype.prev=function(){if(!this.sliding)return this.slide("prev")};t.prototype.slide=function(i,r){var e=this.$element.find(".item.active"),u=r||this.getItemForDirection(i,e),l=this.interval,f=i=="next"?"left":"right",a=this,o,s,h,c;return u.hasClass("active")?this.sliding=!1:(o=u[0],s=n.Event("slide.bs.carousel",{relatedTarget:o,direction:f}),this.$element.trigger(s),s.isDefaultPrevented())?void 0:(this.sliding=!0,l&&this.pause(),this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),h=n(this.$indicators.children()[this.getItemIndex(u)]),h&&h.addClass("active")),c=n.Event("slid.bs.carousel",{relatedTarget:o,direction:f}),n.support.transition&&this.$element.hasClass("slide")?(u.addClass(i),u[0].offsetWidth,e.addClass(f),u.addClass(f),e.one("bsTransitionEnd",function(){u.removeClass([i,f].join(" ")).addClass("active");e.removeClass(["active",f].join(" "));a.sliding=!1;setTimeout(function(){a.$element.trigger(c)},0)}).emulateTransitionEnd(t.TRANSITION_DURATION)):(e.removeClass("active"),u.addClass("active"),this.sliding=!1,this.$element.trigger(c)),l&&this.cycle(),this)};u=n.fn.carousel;n.fn.carousel=i;n.fn.carousel.Constructor=t;n.fn.carousel.noConflict=function(){return n.fn.carousel=u,this};r=function(t){var o,r=n(this),u=n(r.attr("data-target")||(o=r.attr("href"))&&o.replace(/.*(?=#[^\s]+$)/,"")),e,f;u.hasClass("carousel")&&(e=n.extend({},u.data(),r.data()),f=r.attr("data-slide-to"),f&&(e.interval=!1),i.call(u,e),f&&u.data("bs.carousel").to(f),t.preventDefault())};n(document).on("click.bs.carousel.data-api","[data-slide]",r).on("click.bs.carousel.data-api","[data-slide-to]",r);n(window).on("load",function(){n('[data-ride="carousel"]').each(function(){var t=n(this);i.call(t,t.data())})})}(jQuery);+function(n){"use strict";function r(t){var i,r=t.attr("data-target")||(i=t.attr("href"))&&i.replace(/.*(?=#[^\s]+$)/,"");return n(r)}function i(i){return this.each(function(){var u=n(this),r=u.data("bs.collapse"),f=n.extend({},t.DEFAULTS,u.data(),typeof i=="object"&&i);!r&&f.toggle&&/show|hide/.test(i)&&(f.toggle=!1);r||u.data("bs.collapse",r=new t(this,f));typeof i=="string"&&r[i]()})}var t=function(i,r){this.$element=n(i);this.options=n.extend({},t.DEFAULTS,r);this.$trigger=n('[data-toggle="collapse"][href="#'+i.id+'"],[data-toggle="collapse"][data-target="#'+i.id+'"]');this.transitioning=null;this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger);this.options.toggle&&this.toggle()},u;t.VERSION="3.3.7";t.TRANSITION_DURATION=350;t.DEFAULTS={toggle:!0};t.prototype.dimension=function(){var n=this.$element.hasClass("width");return n?"width":"height"};t.prototype.show=function(){var f,r,e,u,o,s;if(!this.transitioning&&!this.$element.hasClass("in")&&(r=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing"),!r||!r.length||(f=r.data("bs.collapse"),!f||!f.transitioning))&&(e=n.Event("show.bs.collapse"),this.$element.trigger(e),!e.isDefaultPrevented())){if(r&&r.length&&(i.call(r,"hide"),f||r.data("bs.collapse",null)),u=this.dimension(),this.$element.removeClass("collapse").addClass("collapsing")[u](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1,o=function(){this.$element.removeClass("collapsing").addClass("collapse in")[u]("");this.transitioning=0;this.$element.trigger("shown.bs.collapse")},!n.support.transition)return o.call(this);s=n.camelCase(["scroll",u].join("-"));this.$element.one("bsTransitionEnd",n.proxy(o,this)).emulateTransitionEnd(t.TRANSITION_DURATION)[u](this.$element[0][s])}};t.prototype.hide=function(){var r,i,u;if(!this.transitioning&&this.$element.hasClass("in")&&(r=n.Event("hide.bs.collapse"),this.$element.trigger(r),!r.isDefaultPrevented())){if(i=this.dimension(),this.$element[i](this.$element[i]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1,u=function(){this.transitioning=0;this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")},!n.support.transition)return u.call(this);this.$element[i](0).one("bsTransitionEnd",n.proxy(u,this)).emulateTransitionEnd(t.TRANSITION_DURATION)}};t.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};t.prototype.getParent=function(){return n(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(n.proxy(function(t,i){var u=n(i);this.addAriaAndCollapsedClass(r(u),u)},this)).end()};t.prototype.addAriaAndCollapsedClass=function(n,t){var i=n.hasClass("in");n.attr("aria-expanded",i);t.toggleClass("collapsed",!i).attr("aria-expanded",i)};u=n.fn.collapse;n.fn.collapse=i;n.fn.collapse.Constructor=t;n.fn.collapse.noConflict=function(){return n.fn.collapse=u,this};n(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(t){var u=n(this);u.attr("data-target")||t.preventDefault();var f=r(u),e=f.data("bs.collapse"),o=e?"toggle":u.data();i.call(f,o)})}(jQuery);+function(n){"use strict";function r(t){var i=t.attr("data-target"),r;return i||(i=t.attr("href"),i=i&&/#[A-Za-z]/.test(i)&&i.replace(/.*(?=#[^\s]*$)/,"")),r=i&&n(i),r&&r.length?r:t.parent()}function u(t){t&&t.which===3||(n(e).remove(),n(i).each(function(){var u=n(this),i=r(u),f={relatedTarget:this};i.hasClass("open")&&(t&&t.type=="click"&&/input|textarea/i.test(t.target.tagName)&&n.contains(i[0],t.target)||(i.trigger(t=n.Event("hide.bs.dropdown",f)),t.isDefaultPrevented())||(u.attr("aria-expanded","false"),i.removeClass("open").trigger(n.Event("hidden.bs.dropdown",f))))}))}function o(i){return this.each(function(){var r=n(this),u=r.data("bs.dropdown");u||r.data("bs.dropdown",u=new t(this));typeof i=="string"&&u[i].call(r)})}var e=".dropdown-backdrop",i='[data-toggle="dropdown"]',t=function(t){n(t).on("click.bs.dropdown",this.toggle)},f;t.VERSION="3.3.7";t.prototype.toggle=function(t){var f=n(this),i,o,e;if(!f.is(".disabled, :disabled")){if(i=r(f),o=i.hasClass("open"),u(),!o){if("ontouchstart"in document.documentElement&&!i.closest(".navbar-nav").length)n(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(n(this)).on("click",u);if(e={relatedTarget:this},i.trigger(t=n.Event("show.bs.dropdown",e)),t.isDefaultPrevented())return;f.trigger("focus").attr("aria-expanded","true");i.toggleClass("open").trigger(n.Event("shown.bs.dropdown",e))}return!1}};t.prototype.keydown=function(t){var e,o,s,h,f,u;if(/(38|40|27|32)/.test(t.which)&&!/input|textarea/i.test(t.target.tagName)&&(e=n(this),t.preventDefault(),t.stopPropagation(),!e.is(".disabled, :disabled"))){if(o=r(e),s=o.hasClass("open"),!s&&t.which!=27||s&&t.which==27)return t.which==27&&o.find(i).trigger("focus"),e.trigger("click");(h=" li:not(.disabled):visible a",f=o.find(".dropdown-menu"+h),f.length)&&(u=f.index(t.target),t.which==38&&u>0&&u--,t.which==40&&u<f.length-1&&u++,~u||(u=0),f.eq(u).trigger("focus"))}};f=n.fn.dropdown;n.fn.dropdown=o;n.fn.dropdown.Constructor=t;n.fn.dropdown.noConflict=function(){return n.fn.dropdown=f,this};n(document).on("click.bs.dropdown.data-api",u).on("click.bs.dropdown.data-api",".dropdown form",function(n){n.stopPropagation()}).on("click.bs.dropdown.data-api",i,t.prototype.toggle).on("keydown.bs.dropdown.data-api",i,t.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",t.prototype.keydown)}(jQuery);+function(n){"use strict";function i(i,r){return this.each(function(){var f=n(this),u=f.data("bs.modal"),e=n.extend({},t.DEFAULTS,f.data(),typeof i=="object"&&i);u||f.data("bs.modal",u=new t(this,e));typeof i=="string"?u[i](r):e.show&&u.show(r)})}var t=function(t,i){this.options=i;this.$body=n(document.body);this.$element=n(t);this.$dialog=this.$element.find(".modal-dialog");this.$backdrop=null;this.isShown=null;this.originalBodyPad=null;this.scrollbarWidth=0;this.ignoreBackdropClick=!1;this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,n.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))},r;t.VERSION="3.3.7";t.TRANSITION_DURATION=300;t.BACKDROP_TRANSITION_DURATION=150;t.DEFAULTS={backdrop:!0,keyboard:!0,show:!0};t.prototype.toggle=function(n){return this.isShown?this.hide():this.show(n)};t.prototype.show=function(i){var r=this,u=n.Event("show.bs.modal",{relatedTarget:i});if(this.$element.trigger(u),!this.isShown&&!u.isDefaultPrevented()){this.isShown=!0;this.checkScrollbar();this.setScrollbar();this.$body.addClass("modal-open");this.escape();this.resize();this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',n.proxy(this.hide,this));this.$dialog.on("mousedown.dismiss.bs.modal",function(){r.$element.one("mouseup.dismiss.bs.modal",function(t){n(t.target).is(r.$element)&&(r.ignoreBackdropClick=!0)})});this.backdrop(function(){var f=n.support.transition&&r.$element.hasClass("fade"),u;r.$element.parent().length||r.$element.appendTo(r.$body);r.$element.show().scrollTop(0);r.adjustDialog();f&&r.$element[0].offsetWidth;r.$element.addClass("in");r.enforceFocus();u=n.Event("shown.bs.modal",{relatedTarget:i});f?r.$dialog.one("bsTransitionEnd",function(){r.$element.trigger("focus").trigger(u)}).emulateTransitionEnd(t.TRANSITION_DURATION):r.$element.trigger("focus").trigger(u)})}};t.prototype.hide=function(i){(i&&i.preventDefault(),i=n.Event("hide.bs.modal"),this.$element.trigger(i),this.isShown&&!i.isDefaultPrevented())&&(this.isShown=!1,this.escape(),this.resize(),n(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),n.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",n.proxy(this.hideModal,this)).emulateTransitionEnd(t.TRANSITION_DURATION):this.hideModal())};t.prototype.enforceFocus=function(){n(document).off("focusin.bs.modal").on("focusin.bs.modal",n.proxy(function(n){document===n.target||this.$element[0]===n.target||this.$element.has(n.target).length||this.$element.trigger("focus")},this))};t.prototype.escape=function(){if(this.isShown&&this.options.keyboard)this.$element.on("keydown.dismiss.bs.modal",n.proxy(function(n){n.which==27&&this.hide()},this));else this.isShown||this.$element.off("keydown.dismiss.bs.modal")};t.prototype.resize=function(){if(this.isShown)n(window).on("resize.bs.modal",n.proxy(this.handleUpdate,this));else n(window).off("resize.bs.modal")};t.prototype.hideModal=function(){var n=this;this.$element.hide();this.backdrop(function(){n.$body.removeClass("modal-open");n.resetAdjustments();n.resetScrollbar();n.$element.trigger("hidden.bs.modal")})};t.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove();this.$backdrop=null};t.prototype.backdrop=function(i){var e=this,f=this.$element.hasClass("fade")?"fade":"",r,u;if(this.isShown&&this.options.backdrop){r=n.support.transition&&f;this.$backdrop=n(document.createElement("div")).addClass("modal-backdrop "+f).appendTo(this.$body);this.$element.on("click.dismiss.bs.modal",n.proxy(function(n){if(this.ignoreBackdropClick){this.ignoreBackdropClick=!1;return}n.target===n.currentTarget&&(this.options.backdrop=="static"?this.$element[0].focus():this.hide())},this));if(r&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!i)return;r?this.$backdrop.one("bsTransitionEnd",i).emulateTransitionEnd(t.BACKDROP_TRANSITION_DURATION):i()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),u=function(){e.removeBackdrop();i&&i()},n.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",u).emulateTransitionEnd(t.BACKDROP_TRANSITION_DURATION):u()):i&&i()};t.prototype.handleUpdate=function(){this.adjustDialog()};t.prototype.adjustDialog=function(){var n=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&n?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!n?this.scrollbarWidth:""})};t.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})};t.prototype.checkScrollbar=function(){var n=window.innerWidth,t;n||(t=document.documentElement.getBoundingClientRect(),n=t.right-Math.abs(t.left));this.bodyIsOverflowing=document.body.clientWidth<n;this.scrollbarWidth=this.measureScrollbar()};t.prototype.setScrollbar=function(){var n=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"";this.bodyIsOverflowing&&this.$body.css("padding-right",n+this.scrollbarWidth)};t.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)};t.prototype.measureScrollbar=function(){var n=document.createElement("div"),t;return n.className="modal-scrollbar-measure",this.$body.append(n),t=n.offsetWidth-n.clientWidth,this.$body[0].removeChild(n),t};r=n.fn.modal;n.fn.modal=i;n.fn.modal.Constructor=t;n.fn.modal.noConflict=function(){return n.fn.modal=r,this};n(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(t){var r=n(this),f=r.attr("href"),u=n(r.attr("data-target")||f&&f.replace(/.*(?=#[^\s]+$)/,"")),e=u.data("bs.modal")?"toggle":n.extend({remote:!/#/.test(f)&&f},u.data(),r.data());r.is("a")&&t.preventDefault();u.one("show.bs.modal",function(n){if(!n.isDefaultPrevented())u.one("hidden.bs.modal",function(){r.is(":visible")&&r.trigger("focus")})});i.call(u,e,this)})}(jQuery);+function(n){"use strict";function r(i){return this.each(function(){var u=n(this),r=u.data("bs.tooltip"),f=typeof i=="object"&&i;(r||!/destroy|hide/.test(i))&&(r||u.data("bs.tooltip",r=new t(this,f)),typeof i=="string"&&r[i]())})}var t=function(n,t){this.type=null;this.options=null;this.enabled=null;this.timeout=null;this.hoverState=null;this.$element=null;this.inState=null;this.init("tooltip",n,t)},i;t.VERSION="3.3.7";t.TRANSITION_DURATION=150;t.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"><\/div><div class="tooltip-inner"><\/div><\/div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}};t.prototype.init=function(t,i,r){var f,e,u,o,s;if(this.enabled=!0,this.type=t,this.$element=n(i),this.options=this.getOptions(r),this.$viewport=this.options.viewport&&n(n.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(f=this.options.trigger.split(" "),e=f.length;e--;)if(u=f[e],u=="click")this.$element.on("click."+this.type,this.options.selector,n.proxy(this.toggle,this));else if(u!="manual"){o=u=="hover"?"mouseenter":"focusin";s=u=="hover"?"mouseleave":"focusout";this.$element.on(o+"."+this.type,this.options.selector,n.proxy(this.enter,this));this.$element.on(s+"."+this.type,this.options.selector,n.proxy(this.leave,this))}this.options.selector?this._options=n.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()};t.prototype.getDefaults=function(){return t.DEFAULTS};t.prototype.getOptions=function(t){return t=n.extend({},this.getDefaults(),this.$element.data(),t),t.delay&&typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),t};t.prototype.getDelegateOptions=function(){var t={},i=this.getDefaults();return this._options&&n.each(this._options,function(n,r){i[n]!=r&&(t[n]=r)}),t};t.prototype.enter=function(t){var i=t instanceof this.constructor?t:n(t.currentTarget).data("bs."+this.type);if(i||(i=new this.constructor(t.currentTarget,this.getDelegateOptions()),n(t.currentTarget).data("bs."+this.type,i)),t instanceof n.Event&&(i.inState[t.type=="focusin"?"focus":"hover"]=!0),i.tip().hasClass("in")||i.hoverState=="in"){i.hoverState="in";return}if(clearTimeout(i.timeout),i.hoverState="in",!i.options.delay||!i.options.delay.show)return i.show();i.timeout=setTimeout(function(){i.hoverState=="in"&&i.show()},i.options.delay.show)};t.prototype.isInStateTrue=function(){for(var n in this.inState)if(this.inState[n])return!0;return!1};t.prototype.leave=function(t){var i=t instanceof this.constructor?t:n(t.currentTarget).data("bs."+this.type);if(i||(i=new this.constructor(t.currentTarget,this.getDelegateOptions()),n(t.currentTarget).data("bs."+this.type,i)),t instanceof n.Event&&(i.inState[t.type=="focusout"?"focus":"hover"]=!1),!i.isInStateTrue()){if(clearTimeout(i.timeout),i.hoverState="out",!i.options.delay||!i.options.delay.hide)return i.hide();i.timeout=setTimeout(function(){i.hoverState=="out"&&i.hide()},i.options.delay.hide)}};t.prototype.show=function(){var c=n.Event("show.bs."+this.type),l,p,e,w,h;if(this.hasContent()&&this.enabled){if(this.$element.trigger(c),l=n.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]),c.isDefaultPrevented()||!l)return;var u=this,r=this.tip(),a=this.getUID(this.type);this.setContent();r.attr("id",a);this.$element.attr("aria-describedby",a);this.options.animation&&r.addClass("fade");var i=typeof this.options.placement=="function"?this.options.placement.call(this,r[0],this.$element[0]):this.options.placement,v=/\s?auto?\s?/i,y=v.test(i);y&&(i=i.replace(v,"")||"top");r.detach().css({top:0,left:0,display:"block"}).addClass(i).data("bs."+this.type,this);this.options.container?r.appendTo(this.options.container):r.insertAfter(this.$element);this.$element.trigger("inserted.bs."+this.type);var f=this.getPosition(),o=r[0].offsetWidth,s=r[0].offsetHeight;y&&(p=i,e=this.getPosition(this.$viewport),i=i=="bottom"&&f.bottom+s>e.bottom?"top":i=="top"&&f.top-s<e.top?"bottom":i=="right"&&f.right+o>e.width?"left":i=="left"&&f.left-o<e.left?"right":i,r.removeClass(p).addClass(i));w=this.getCalculatedOffset(i,f,o,s);this.applyPlacement(w,i);h=function(){var n=u.hoverState;u.$element.trigger("shown.bs."+u.type);u.hoverState=null;n=="out"&&u.leave(u)};n.support.transition&&this.$tip.hasClass("fade")?r.one("bsTransitionEnd",h).emulateTransitionEnd(t.TRANSITION_DURATION):h()}};t.prototype.applyPlacement=function(t,i){var r=this.tip(),l=r[0].offsetWidth,e=r[0].offsetHeight,o=parseInt(r.css("margin-top"),10),s=parseInt(r.css("margin-left"),10),h,f,u;isNaN(o)&&(o=0);isNaN(s)&&(s=0);t.top+=o;t.left+=s;n.offset.setOffset(r[0],n.extend({using:function(n){r.css({top:Math.round(n.top),left:Math.round(n.left)})}},t),0);r.addClass("in");h=r[0].offsetWidth;f=r[0].offsetHeight;i=="top"&&f!=e&&(t.top=t.top+e-f);u=this.getViewportAdjustedDelta(i,t,h,f);u.left?t.left+=u.left:t.top+=u.top;var c=/top|bottom/.test(i),a=c?u.left*2-l+h:u.top*2-e+f,v=c?"offsetWidth":"offsetHeight";r.offset(t);this.replaceArrow(a,r[0][v],c)};t.prototype.replaceArrow=function(n,t,i){this.arrow().css(i?"left":"top",50*(1-n/t)+"%").css(i?"top":"left","")};t.prototype.setContent=function(){var n=this.tip(),t=this.getTitle();n.find(".tooltip-inner")[this.options.html?"html":"text"](t);n.removeClass("fade in top bottom left right")};t.prototype.hide=function(i){function e(){r.hoverState!="in"&&u.detach();r.$element&&r.$element.removeAttr("aria-describedby").trigger("hidden.bs."+r.type);i&&i()}var r=this,u=n(this.$tip),f=n.Event("hide.bs."+this.type);if(this.$element.trigger(f),!f.isDefaultPrevented())return u.removeClass("in"),n.support.transition&&u.hasClass("fade")?u.one("bsTransitionEnd",e).emulateTransitionEnd(t.TRANSITION_DURATION):e(),this.hoverState=null,this};t.prototype.fixTitle=function(){var n=this.$element;(n.attr("title")||typeof n.attr("data-original-title")!="string")&&n.attr("data-original-title",n.attr("title")||"").attr("title","")};t.prototype.hasContent=function(){return this.getTitle()};t.prototype.getPosition=function(t){t=t||this.$element;var r=t[0],u=r.tagName=="BODY",i=r.getBoundingClientRect();i.width==null&&(i=n.extend({},i,{width:i.right-i.left,height:i.bottom-i.top}));var f=window.SVGElement&&r instanceof window.SVGElement,e=u?{top:0,left:0}:f?null:t.offset(),o={scroll:u?document.documentElement.scrollTop||document.body.scrollTop:t.scrollTop()},s=u?{width:n(window).width(),height:n(window).height()}:null;return n.extend({},i,o,s,e)};t.prototype.getCalculatedOffset=function(n,t,i,r){return n=="bottom"?{top:t.top+t.height,left:t.left+t.width/2-i/2}:n=="top"?{top:t.top-r,left:t.left+t.width/2-i/2}:n=="left"?{top:t.top+t.height/2-r/2,left:t.left-i}:{top:t.top+t.height/2-r/2,left:t.left+t.width}};t.prototype.getViewportAdjustedDelta=function(n,t,i,r){var f={top:0,left:0},e,u,o,s,h,c;return this.$viewport?(e=this.options.viewport&&this.options.viewport.padding||0,u=this.getPosition(this.$viewport),/right|left/.test(n)?(o=t.top-e-u.scroll,s=t.top+e-u.scroll+r,o<u.top?f.top=u.top-o:s>u.top+u.height&&(f.top=u.top+u.height-s)):(h=t.left-e,c=t.left+e+i,h<u.left?f.left=u.left-h:c>u.right&&(f.left=u.left+u.width-c)),f):f};t.prototype.getTitle=function(){var t=this.$element,n=this.options;return t.attr("data-original-title")||(typeof n.title=="function"?n.title.call(t[0]):n.title)};t.prototype.getUID=function(n){do n+=~~(Math.random()*1e6);while(document.getElementById(n));return n};t.prototype.tip=function(){if(!this.$tip&&(this.$tip=n(this.options.template),this.$tip.length!=1))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip};t.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")};t.prototype.enable=function(){this.enabled=!0};t.prototype.disable=function(){this.enabled=!1};t.prototype.toggleEnabled=function(){this.enabled=!this.enabled};t.prototype.toggle=function(t){var i=this;t&&(i=n(t.currentTarget).data("bs."+this.type),i||(i=new this.constructor(t.currentTarget,this.getDelegateOptions()),n(t.currentTarget).data("bs."+this.type,i)));t?(i.inState.click=!i.inState.click,i.isInStateTrue()?i.enter(i):i.leave(i)):i.tip().hasClass("in")?i.leave(i):i.enter(i)};t.prototype.destroy=function(){var n=this;clearTimeout(this.timeout);this.hide(function(){n.$element.off("."+n.type).removeData("bs."+n.type);n.$tip&&n.$tip.detach();n.$tip=null;n.$arrow=null;n.$viewport=null;n.$element=null})};i=n.fn.tooltip;n.fn.tooltip=r;n.fn.tooltip.Constructor=t;n.fn.tooltip.noConflict=function(){return n.fn.tooltip=i,this}}(jQuery);+function(n){"use strict";function r(i){return this.each(function(){var u=n(this),r=u.data("bs.popover"),f=typeof i=="object"&&i;(r||!/destroy|hide/.test(i))&&(r||u.data("bs.popover",r=new t(this,f)),typeof i=="string"&&r[i]())})}var t=function(n,t){this.init("popover",n,t)},i;if(!n.fn.tooltip)throw new Error("Popover requires tooltip.js");t.VERSION="3.3.7";t.DEFAULTS=n.extend({},n.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"><\/div><h3 class="popover-title"><\/h3><div class="popover-content"><\/div><\/div>'});t.prototype=n.extend({},n.fn.tooltip.Constructor.prototype);t.prototype.constructor=t;t.prototype.getDefaults=function(){return t.DEFAULTS};t.prototype.setContent=function(){var n=this.tip(),i=this.getTitle(),t=this.getContent();n.find(".popover-title")[this.options.html?"html":"text"](i);n.find(".popover-content").children().detach().end()[this.options.html?typeof t=="string"?"html":"append":"text"](t);n.removeClass("fade top bottom left right in");n.find(".popover-title").html()||n.find(".popover-title").hide()};t.prototype.hasContent=function(){return this.getTitle()||this.getContent()};t.prototype.getContent=function(){var t=this.$element,n=this.options;return t.attr("data-content")||(typeof n.content=="function"?n.content.call(t[0]):n.content)};t.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};i=n.fn.popover;n.fn.popover=r;n.fn.popover.Constructor=t;n.fn.popover.noConflict=function(){return n.fn.popover=i,this}}(jQuery);+function(n){"use strict";function t(i,r){this.$body=n(document.body);this.$scrollElement=n(i).is(document.body)?n(window):n(i);this.options=n.extend({},t.DEFAULTS,r);this.selector=(this.options.target||"")+" .nav li > a";this.offsets=[];this.targets=[];this.activeTarget=null;this.scrollHeight=0;this.$scrollElement.on("scroll.bs.scrollspy",n.proxy(this.process,this));this.refresh();this.process()}function i(i){return this.each(function(){var u=n(this),r=u.data("bs.scrollspy"),f=typeof i=="object"&&i;r||u.data("bs.scrollspy",r=new t(this,f));typeof i=="string"&&r[i]()})}t.VERSION="3.3.7";t.DEFAULTS={offset:10};t.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)};t.prototype.refresh=function(){var t=this,i="offset",r=0;this.offsets=[];this.targets=[];this.scrollHeight=this.getScrollHeight();n.isWindow(this.$scrollElement[0])||(i="position",r=this.$scrollElement.scrollTop());this.$body.find(this.selector).map(function(){var f=n(this),u=f.data("target")||f.attr("href"),t=/^#./.test(u)&&n(u);return t&&t.length&&t.is(":visible")&&[[t[i]().top+r,u]]||null}).sort(function(n,t){return n[0]-t[0]}).each(function(){t.offsets.push(this[0]);t.targets.push(this[1])})};t.prototype.process=function(){var i=this.$scrollElement.scrollTop()+this.options.offset,f=this.getScrollHeight(),e=this.options.offset+f-this.$scrollElement.height(),t=this.offsets,r=this.targets,u=this.activeTarget,n;if(this.scrollHeight!=f&&this.refresh(),i>=e)return u!=(n=r[r.length-1])&&this.activate(n);if(u&&i<t[0])return this.activeTarget=null,this.clear();for(n=t.length;n--;)u!=r[n]&&i>=t[n]&&(t[n+1]===undefined||i<t[n+1])&&this.activate(r[n])};t.prototype.activate=function(t){this.activeTarget=t;this.clear();var r=this.selector+'[data-target="'+t+'"],'+this.selector+'[href="'+t+'"]',i=n(r).parents("li").addClass("active");i.parent(".dropdown-menu").length&&(i=i.closest("li.dropdown").addClass("active"));i.trigger("activate.bs.scrollspy")};t.prototype.clear=function(){n(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var r=n.fn.scrollspy;n.fn.scrollspy=i;n.fn.scrollspy.Constructor=t;n.fn.scrollspy.noConflict=function(){return n.fn.scrollspy=r,this};n(window).on("load.bs.scrollspy.data-api",function(){n('[data-spy="scroll"]').each(function(){var t=n(this);i.call(t,t.data())})})}(jQuery);+function(n){"use strict";function r(i){return this.each(function(){var u=n(this),r=u.data("bs.tab");r||u.data("bs.tab",r=new t(this));typeof i=="string"&&r[i]()})}var t=function(t){this.element=n(t)},u,i;t.VERSION="3.3.7";t.TRANSITION_DURATION=150;t.prototype.show=function(){var t=this.element,f=t.closest("ul:not(.dropdown-menu)"),i=t.data("target"),u;if(i||(i=t.attr("href"),i=i&&i.replace(/.*(?=#[^\s]*$)/,"")),!t.parent("li").hasClass("active")){var r=f.find(".active:last a"),e=n.Event("hide.bs.tab",{relatedTarget:t[0]}),o=n.Event("show.bs.tab",{relatedTarget:r[0]});(r.trigger(e),t.trigger(o),o.isDefaultPrevented()||e.isDefaultPrevented())||(u=n(i),this.activate(t.closest("li"),f),this.activate(u,u.parent(),function(){r.trigger({type:"hidden.bs.tab",relatedTarget:t[0]});t.trigger({type:"shown.bs.tab",relatedTarget:r[0]})}))}};t.prototype.activate=function(i,r,u){function o(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1);i.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0);e?(i[0].offsetWidth,i.addClass("in")):i.removeClass("fade");i.parent(".dropdown-menu").length&&i.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0);u&&u()}var f=r.find("> .active"),e=u&&n.support.transition&&(f.length&&f.hasClass("fade")||!!r.find("> .fade").length);f.length&&e?f.one("bsTransitionEnd",o).emulateTransitionEnd(t.TRANSITION_DURATION):o();f.removeClass("in")};u=n.fn.tab;n.fn.tab=r;n.fn.tab.Constructor=t;n.fn.tab.noConflict=function(){return n.fn.tab=u,this};i=function(t){t.preventDefault();r.call(n(this),"show")};n(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',i).on("click.bs.tab.data-api",'[data-toggle="pill"]',i)}(jQuery);+function(n){"use strict";function i(i){return this.each(function(){var u=n(this),r=u.data("bs.affix"),f=typeof i=="object"&&i;r||u.data("bs.affix",r=new t(this,f));typeof i=="string"&&r[i]()})}var t=function(i,r){this.options=n.extend({},t.DEFAULTS,r);this.$target=n(this.options.target).on("scroll.bs.affix.data-api",n.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",n.proxy(this.checkPositionWithEventLoop,this));this.$element=n(i);this.affixed=null;this.unpin=null;this.pinnedOffset=null;this.checkPosition()},r;t.VERSION="3.3.7";t.RESET="affix affix-top affix-bottom";t.DEFAULTS={offset:0,target:window};t.prototype.getState=function(n,t,i,r){var u=this.$target.scrollTop(),f=this.$element.offset(),e=this.$target.height();if(i!=null&&this.affixed=="top")return u<i?"top":!1;if(this.affixed=="bottom")return i!=null?u+this.unpin<=f.top?!1:"bottom":u+e<=n-r?!1:"bottom";var o=this.affixed==null,s=o?u:f.top,h=o?e:t;return i!=null&&u<=i?"top":r!=null&&s+h>=n-r?"bottom":!1};t.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(t.RESET).addClass("affix");var n=this.$target.scrollTop(),i=this.$element.offset();return this.pinnedOffset=i.top-n};t.prototype.checkPositionWithEventLoop=function(){setTimeout(n.proxy(this.checkPosition,this),1)};t.prototype.checkPosition=function(){var i,e,o;if(this.$element.is(":visible")){var s=this.$element.height(),r=this.options.offset,f=r.top,u=r.bottom,h=Math.max(n(document).height(),n(document.body).height());if(typeof r!="object"&&(u=f=r),typeof f=="function"&&(f=r.top(this.$element)),typeof u=="function"&&(u=r.bottom(this.$element)),i=this.getState(h,s,f,u),this.affixed!=i){if(this.unpin!=null&&this.$element.css("top",""),e="affix"+(i?"-"+i:""),o=n.Event(e+".bs.affix"),this.$element.trigger(o),o.isDefaultPrevented())return;this.affixed=i;this.unpin=i=="bottom"?this.getPinnedOffset():null;this.$element.removeClass(t.RESET).addClass(e).trigger(e.replace("affix","affixed")+".bs.affix")}i=="bottom"&&this.$element.offset({top:h-s-u})}};r=n.fn.affix;n.fn.affix=i;n.fn.affix.Constructor=t;n.fn.affix.noConflict=function(){return n.fn.affix=r,this};n(window).on("load",function(){n('[data-spy="affix"]').each(function(){var r=n(this),t=r.data();t.offset=t.offset||{};t.offsetBottom!=null&&(t.offset.bottom=t.offsetBottom);t.offsetTop!=null&&(t.offset.top=t.offsetTop);i.call(r,t)})})}(jQuery);
//# sourceMappingURL=bootstrap.min.js.map
;
//! moment.js
//! version : 2.13.0
//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
//! license : MIT
//! momentjs.com
!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){"use strict";function a(){return fd.apply(null,arguments)}function b(a){fd=a}function c(a){return a instanceof Array||"[object Array]"===Object.prototype.toString.call(a)}function d(a){return a instanceof Date||"[object Date]"===Object.prototype.toString.call(a)}function e(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function f(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function g(a,b){for(var c in b)f(b,c)&&(a[c]=b[c]);return f(b,"toString")&&(a.toString=b.toString),f(b,"valueOf")&&(a.valueOf=b.valueOf),a}function h(a,b,c,d){return Ja(a,b,c,d,!0).utc()}function i(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null}}function j(a){return null==a._pf&&(a._pf=i()),a._pf}function k(a){if(null==a._isValid){var b=j(a),c=gd.call(b.parsedDateParts,function(a){return null!=a});a._isValid=!isNaN(a._d.getTime())&&b.overflow<0&&!b.empty&&!b.invalidMonth&&!b.invalidWeekday&&!b.nullInput&&!b.invalidFormat&&!b.userInvalidated&&(!b.meridiem||b.meridiem&&c),a._strict&&(a._isValid=a._isValid&&0===b.charsLeftOver&&0===b.unusedTokens.length&&void 0===b.bigHour)}return a._isValid}function l(a){var b=h(NaN);return null!=a?g(j(b),a):j(b).userInvalidated=!0,b}function m(a){return void 0===a}function n(a,b){var c,d,e;if(m(b._isAMomentObject)||(a._isAMomentObject=b._isAMomentObject),m(b._i)||(a._i=b._i),m(b._f)||(a._f=b._f),m(b._l)||(a._l=b._l),m(b._strict)||(a._strict=b._strict),m(b._tzm)||(a._tzm=b._tzm),m(b._isUTC)||(a._isUTC=b._isUTC),m(b._offset)||(a._offset=b._offset),m(b._pf)||(a._pf=j(b)),m(b._locale)||(a._locale=b._locale),hd.length>0)for(c in hd)d=hd[c],e=b[d],m(e)||(a[d]=e);return a}function o(b){n(this,b),this._d=new Date(null!=b._d?b._d.getTime():NaN),id===!1&&(id=!0,a.updateOffset(this),id=!1)}function p(a){return a instanceof o||null!=a&&null!=a._isAMomentObject}function q(a){return 0>a?Math.ceil(a):Math.floor(a)}function r(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=q(b)),c}function s(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&r(a[d])!==r(b[d]))&&g++;return g+f}function t(b){a.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+b)}function u(b,c){var d=!0;return g(function(){return null!=a.deprecationHandler&&a.deprecationHandler(null,b),d&&(t(b+"\nArguments: "+Array.prototype.slice.call(arguments).join(", ")+"\n"+(new Error).stack),d=!1),c.apply(this,arguments)},c)}function v(b,c){null!=a.deprecationHandler&&a.deprecationHandler(b,c),jd[b]||(t(c),jd[b]=!0)}function w(a){return a instanceof Function||"[object Function]"===Object.prototype.toString.call(a)}function x(a){return"[object Object]"===Object.prototype.toString.call(a)}function y(a){var b,c;for(c in a)b=a[c],w(b)?this[c]=b:this["_"+c]=b;this._config=a,this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function z(a,b){var c,d=g({},a);for(c in b)f(b,c)&&(x(a[c])&&x(b[c])?(d[c]={},g(d[c],a[c]),g(d[c],b[c])):null!=b[c]?d[c]=b[c]:delete d[c]);return d}function A(a){null!=a&&this.set(a)}function B(a){return a?a.toLowerCase().replace("_","-"):a}function C(a){for(var b,c,d,e,f=0;f<a.length;){for(e=B(a[f]).split("-"),b=e.length,c=B(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=D(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&s(e,c,!0)>=b-1)break;b--}f++}return null}function D(a){var b=null;if(!nd[a]&&"undefined"!=typeof module&&module&&module.exports)try{b=ld._abbr,require("./locale/"+a),E(b)}catch(c){}return nd[a]}function E(a,b){var c;return a&&(c=m(b)?H(a):F(a,b),c&&(ld=c)),ld._abbr}function F(a,b){return null!==b?(b.abbr=a,null!=nd[a]?(v("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale"),b=z(nd[a]._config,b)):null!=b.parentLocale&&(null!=nd[b.parentLocale]?b=z(nd[b.parentLocale]._config,b):v("parentLocaleUndefined","specified parentLocale is not defined yet")),nd[a]=new A(b),E(a),nd[a]):(delete nd[a],null)}function G(a,b){if(null!=b){var c;null!=nd[a]&&(b=z(nd[a]._config,b)),c=new A(b),c.parentLocale=nd[a],nd[a]=c,E(a)}else null!=nd[a]&&(null!=nd[a].parentLocale?nd[a]=nd[a].parentLocale:null!=nd[a]&&delete nd[a]);return nd[a]}function H(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return ld;if(!c(a)){if(b=D(a))return b;a=[a]}return C(a)}function I(){return kd(nd)}function J(a,b){var c=a.toLowerCase();od[c]=od[c+"s"]=od[b]=a}function K(a){return"string"==typeof a?od[a]||od[a.toLowerCase()]:void 0}function L(a){var b,c,d={};for(c in a)f(a,c)&&(b=K(c),b&&(d[b]=a[c]));return d}function M(b,c){return function(d){return null!=d?(O(this,b,d),a.updateOffset(this,c),this):N(this,b)}}function N(a,b){return a.isValid()?a._d["get"+(a._isUTC?"UTC":"")+b]():NaN}function O(a,b,c){a.isValid()&&a._d["set"+(a._isUTC?"UTC":"")+b](c)}function P(a,b){var c;if("object"==typeof a)for(c in a)this.set(c,a[c]);else if(a=K(a),w(this[a]))return this[a](b);return this}function Q(a,b,c){var d=""+Math.abs(a),e=b-d.length,f=a>=0;return(f?c?"+":"":"-")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}function R(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(sd[a]=e),b&&(sd[b[0]]=function(){return Q(e.apply(this,arguments),b[1],b[2])}),c&&(sd[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function S(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function T(a){var b,c,d=a.match(pd);for(b=0,c=d.length;c>b;b++)sd[d[b]]?d[b]=sd[d[b]]:d[b]=S(d[b]);return function(b){var e,f="";for(e=0;c>e;e++)f+=d[e]instanceof Function?d[e].call(b,a):d[e];return f}}function U(a,b){return a.isValid()?(b=V(b,a.localeData()),rd[b]=rd[b]||T(b),rd[b](a)):a.localeData().invalidDate()}function V(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(qd.lastIndex=0;d>=0&&qd.test(a);)a=a.replace(qd,c),qd.lastIndex=0,d-=1;return a}function W(a,b,c){Kd[a]=w(b)?b:function(a,d){return a&&c?c:b}}function X(a,b){return f(Kd,a)?Kd[a](b._strict,b._locale):new RegExp(Y(a))}function Y(a){return Z(a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}))}function Z(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function $(a,b){var c,d=b;for("string"==typeof a&&(a=[a]),"number"==typeof b&&(d=function(a,c){c[b]=r(a)}),c=0;c<a.length;c++)Ld[a[c]]=d}function _(a,b){$(a,function(a,c,d,e){d._w=d._w||{},b(a,d._w,d,e)})}function aa(a,b,c){null!=b&&f(Ld,a)&&Ld[a](b,c._a,c,a)}function ba(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function ca(a,b){return c(this._months)?this._months[a.month()]:this._months[Vd.test(b)?"format":"standalone"][a.month()]}function da(a,b){return c(this._monthsShort)?this._monthsShort[a.month()]:this._monthsShort[Vd.test(b)?"format":"standalone"][a.month()]}function ea(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],d=0;12>d;++d)f=h([2e3,d]),this._shortMonthsParse[d]=this.monthsShort(f,"").toLocaleLowerCase(),this._longMonthsParse[d]=this.months(f,"").toLocaleLowerCase();return c?"MMM"===b?(e=md.call(this._shortMonthsParse,g),-1!==e?e:null):(e=md.call(this._longMonthsParse,g),-1!==e?e:null):"MMM"===b?(e=md.call(this._shortMonthsParse,g),-1!==e?e:(e=md.call(this._longMonthsParse,g),-1!==e?e:null)):(e=md.call(this._longMonthsParse,g),-1!==e?e:(e=md.call(this._shortMonthsParse,g),-1!==e?e:null))}function fa(a,b,c){var d,e,f;if(this._monthsParseExact)return ea.call(this,a,b,c);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),d=0;12>d;d++){if(e=h([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}}function ga(a,b){var c;if(!a.isValid())return a;if("string"==typeof b)if(/^\d+$/.test(b))b=r(b);else if(b=a.localeData().monthsParse(b),"number"!=typeof b)return a;return c=Math.min(a.date(),ba(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a}function ha(b){return null!=b?(ga(this,b),a.updateOffset(this,!0),this):N(this,"Month")}function ia(){return ba(this.year(),this.month())}function ja(a){return this._monthsParseExact?(f(this,"_monthsRegex")||la.call(this),a?this._monthsShortStrictRegex:this._monthsShortRegex):this._monthsShortStrictRegex&&a?this._monthsShortStrictRegex:this._monthsShortRegex}function ka(a){return this._monthsParseExact?(f(this,"_monthsRegex")||la.call(this),a?this._monthsStrictRegex:this._monthsRegex):this._monthsStrictRegex&&a?this._monthsStrictRegex:this._monthsRegex}function la(){function a(a,b){return b.length-a.length}var b,c,d=[],e=[],f=[];for(b=0;12>b;b++)c=h([2e3,b]),d.push(this.monthsShort(c,"")),e.push(this.months(c,"")),f.push(this.months(c,"")),f.push(this.monthsShort(c,""));for(d.sort(a),e.sort(a),f.sort(a),b=0;12>b;b++)d[b]=Z(d[b]),e[b]=Z(e[b]),f[b]=Z(f[b]);this._monthsRegex=new RegExp("^("+f.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+e.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+d.join("|")+")","i")}function ma(a){var b,c=a._a;return c&&-2===j(a).overflow&&(b=c[Nd]<0||c[Nd]>11?Nd:c[Od]<1||c[Od]>ba(c[Md],c[Nd])?Od:c[Pd]<0||c[Pd]>24||24===c[Pd]&&(0!==c[Qd]||0!==c[Rd]||0!==c[Sd])?Pd:c[Qd]<0||c[Qd]>59?Qd:c[Rd]<0||c[Rd]>59?Rd:c[Sd]<0||c[Sd]>999?Sd:-1,j(a)._overflowDayOfYear&&(Md>b||b>Od)&&(b=Od),j(a)._overflowWeeks&&-1===b&&(b=Td),j(a)._overflowWeekday&&-1===b&&(b=Ud),j(a).overflow=b),a}function na(a){var b,c,d,e,f,g,h=a._i,i=$d.exec(h)||_d.exec(h);if(i){for(j(a).iso=!0,b=0,c=be.length;c>b;b++)if(be[b][1].exec(i[1])){e=be[b][0],d=be[b][2]!==!1;break}if(null==e)return void(a._isValid=!1);if(i[3]){for(b=0,c=ce.length;c>b;b++)if(ce[b][1].exec(i[3])){f=(i[2]||" ")+ce[b][0];break}if(null==f)return void(a._isValid=!1)}if(!d&&null!=f)return void(a._isValid=!1);if(i[4]){if(!ae.exec(i[4]))return void(a._isValid=!1);g="Z"}a._f=e+(f||"")+(g||""),Ca(a)}else a._isValid=!1}function oa(b){var c=de.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(na(b),void(b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b))))}function pa(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 100>a&&a>=0&&isFinite(h.getFullYear())&&h.setFullYear(a),h}function qa(a){var b=new Date(Date.UTC.apply(null,arguments));return 100>a&&a>=0&&isFinite(b.getUTCFullYear())&&b.setUTCFullYear(a),b}function ra(a){return sa(a)?366:365}function sa(a){return a%4===0&&a%100!==0||a%400===0}function ta(){return sa(this.year())}function ua(a,b,c){var d=7+b-c,e=(7+qa(a,0,d).getUTCDay()-b)%7;return-e+d-1}function va(a,b,c,d,e){var f,g,h=(7+c-d)%7,i=ua(a,d,e),j=1+7*(b-1)+h+i;return 0>=j?(f=a-1,g=ra(f)+j):j>ra(a)?(f=a+1,g=j-ra(a)):(f=a,g=j),{year:f,dayOfYear:g}}function wa(a,b,c){var d,e,f=ua(a.year(),b,c),g=Math.floor((a.dayOfYear()-f-1)/7)+1;return 1>g?(e=a.year()-1,d=g+xa(e,b,c)):g>xa(a.year(),b,c)?(d=g-xa(a.year(),b,c),e=a.year()+1):(e=a.year(),d=g),{week:d,year:e}}function xa(a,b,c){var d=ua(a,b,c),e=ua(a+1,b,c);return(ra(a)-d+e)/7}function ya(a,b,c){return null!=a?a:null!=b?b:c}function za(b){var c=new Date(a.now());return b._useUTC?[c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()]:[c.getFullYear(),c.getMonth(),c.getDate()]}function Aa(a){var b,c,d,e,f=[];if(!a._d){for(d=za(a),a._w&&null==a._a[Od]&&null==a._a[Nd]&&Ba(a),a._dayOfYear&&(e=ya(a._a[Md],d[Md]),a._dayOfYear>ra(e)&&(j(a)._overflowDayOfYear=!0),c=qa(e,0,a._dayOfYear),a._a[Nd]=c.getUTCMonth(),a._a[Od]=c.getUTCDate()),b=0;3>b&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;7>b;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[Pd]&&0===a._a[Qd]&&0===a._a[Rd]&&0===a._a[Sd]&&(a._nextDay=!0,a._a[Pd]=0),a._d=(a._useUTC?qa:pa).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[Pd]=24)}}function Ba(a){var b,c,d,e,f,g,h,i;b=a._w,null!=b.GG||null!=b.W||null!=b.E?(f=1,g=4,c=ya(b.GG,a._a[Md],wa(Ka(),1,4).year),d=ya(b.W,1),e=ya(b.E,1),(1>e||e>7)&&(i=!0)):(f=a._locale._week.dow,g=a._locale._week.doy,c=ya(b.gg,a._a[Md],wa(Ka(),f,g).year),d=ya(b.w,1),null!=b.d?(e=b.d,(0>e||e>6)&&(i=!0)):null!=b.e?(e=b.e+f,(b.e<0||b.e>6)&&(i=!0)):e=f),1>d||d>xa(c,f,g)?j(a)._overflowWeeks=!0:null!=i?j(a)._overflowWeekday=!0:(h=va(c,d,e,f,g),a._a[Md]=h.year,a._dayOfYear=h.dayOfYear)}function Ca(b){if(b._f===a.ISO_8601)return void na(b);b._a=[],j(b).empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,k=0;for(e=V(b._f,b._locale).match(pd)||[],c=0;c<e.length;c++)f=e[c],d=(h.match(X(f,b))||[])[0],d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&j(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),k+=d.length),sd[f]?(d?j(b).empty=!1:j(b).unusedTokens.push(f),aa(f,d,b)):b._strict&&!d&&j(b).unusedTokens.push(f);j(b).charsLeftOver=i-k,h.length>0&&j(b).unusedInput.push(h),j(b).bigHour===!0&&b._a[Pd]<=12&&b._a[Pd]>0&&(j(b).bigHour=void 0),j(b).parsedDateParts=b._a.slice(0),j(b).meridiem=b._meridiem,b._a[Pd]=Da(b._locale,b._a[Pd],b._meridiem),Aa(b),ma(b)}function Da(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&12>b&&(b+=12),d||12!==b||(b=0),b):b}function Ea(a){var b,c,d,e,f;if(0===a._f.length)return j(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;e<a._f.length;e++)f=0,b=n({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._f=a._f[e],Ca(b),k(b)&&(f+=j(b).charsLeftOver,f+=10*j(b).unusedTokens.length,j(b).score=f,(null==d||d>f)&&(d=f,c=b));g(a,c||b)}function Fa(a){if(!a._d){var b=L(a._i);a._a=e([b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],function(a){return a&&parseInt(a,10)}),Aa(a)}}function Ga(a){var b=new o(ma(Ha(a)));return b._nextDay&&(b.add(1,"d"),b._nextDay=void 0),b}function Ha(a){var b=a._i,e=a._f;return a._locale=a._locale||H(a._l),null===b||void 0===e&&""===b?l({nullInput:!0}):("string"==typeof b&&(a._i=b=a._locale.preparse(b)),p(b)?new o(ma(b)):(c(e)?Ea(a):e?Ca(a):d(b)?a._d=b:Ia(a),k(a)||(a._d=null),a))}function Ia(b){var f=b._i;void 0===f?b._d=new Date(a.now()):d(f)?b._d=new Date(f.valueOf()):"string"==typeof f?oa(b):c(f)?(b._a=e(f.slice(0),function(a){return parseInt(a,10)}),Aa(b)):"object"==typeof f?Fa(b):"number"==typeof f?b._d=new Date(f):a.createFromInputFallback(b)}function Ja(a,b,c,d,e){var f={};return"boolean"==typeof c&&(d=c,c=void 0),f._isAMomentObject=!0,f._useUTC=f._isUTC=e,f._l=c,f._i=a,f._f=b,f._strict=d,Ga(f)}function Ka(a,b,c,d){return Ja(a,b,c,d,!1)}function La(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return Ka();for(d=b[0],e=1;e<b.length;++e)(!b[e].isValid()||b[e][a](d))&&(d=b[e]);return d}function Ma(){var a=[].slice.call(arguments,0);return La("isBefore",a)}function Na(){var a=[].slice.call(arguments,0);return La("isAfter",a)}function Oa(a){var b=L(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._milliseconds=+k+1e3*j+6e4*i+1e3*h*60*60,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=H(),this._bubble()}function Pa(a){return a instanceof Oa}function Qa(a,b){R(a,0,0,function(){var a=this.utcOffset(),c="+";return 0>a&&(a=-a,c="-"),c+Q(~~(a/60),2)+b+Q(~~a%60,2)})}function Ra(a,b){var c=(b||"").match(a)||[],d=c[c.length-1]||[],e=(d+"").match(ie)||["-",0,0],f=+(60*e[1])+r(e[2]);return"+"===e[0]?f:-f}function Sa(b,c){var e,f;return c._isUTC?(e=c.clone(),f=(p(b)||d(b)?b.valueOf():Ka(b).valueOf())-e.valueOf(),e._d.setTime(e._d.valueOf()+f),a.updateOffset(e,!1),e):Ka(b).local()}function Ta(a){return 15*-Math.round(a._d.getTimezoneOffset()/15)}function Ua(b,c){var d,e=this._offset||0;return this.isValid()?null!=b?("string"==typeof b?b=Ra(Hd,b):Math.abs(b)<16&&(b=60*b),!this._isUTC&&c&&(d=Ta(this)),this._offset=b,this._isUTC=!0,null!=d&&this.add(d,"m"),e!==b&&(!c||this._changeInProgress?jb(this,db(b-e,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?e:Ta(this):null!=b?this:NaN}function Va(a,b){return null!=a?("string"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Wa(a){return this.utcOffset(0,a)}function Xa(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Ta(this),"m")),this}function Ya(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Ra(Gd,this._i)),this}function Za(a){return this.isValid()?(a=a?Ka(a).utcOffset():0,(this.utcOffset()-a)%60===0):!1}function $a(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function _a(){if(!m(this._isDSTShifted))return this._isDSTShifted;var a={};if(n(a,this),a=Ha(a),a._a){var b=a._isUTC?h(a._a):Ka(a._a);this._isDSTShifted=this.isValid()&&s(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function ab(){return this.isValid()?!this._isUTC:!1}function bb(){return this.isValid()?this._isUTC:!1}function cb(){return this.isValid()?this._isUTC&&0===this._offset:!1}function db(a,b){var c,d,e,g=a,h=null;return Pa(a)?g={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(g={},b?g[b]=a:g.milliseconds=a):(h=je.exec(a))?(c="-"===h[1]?-1:1,g={y:0,d:r(h[Od])*c,h:r(h[Pd])*c,m:r(h[Qd])*c,s:r(h[Rd])*c,ms:r(h[Sd])*c}):(h=ke.exec(a))?(c="-"===h[1]?-1:1,g={y:eb(h[2],c),M:eb(h[3],c),w:eb(h[4],c),d:eb(h[5],c),h:eb(h[6],c),m:eb(h[7],c),s:eb(h[8],c)}):null==g?g={}:"object"==typeof g&&("from"in g||"to"in g)&&(e=gb(Ka(g.from),Ka(g.to)),g={},g.ms=e.milliseconds,g.M=e.months),d=new Oa(g),Pa(a)&&f(a,"_locale")&&(d._locale=a._locale),d}function eb(a,b){var c=a&&parseFloat(a.replace(",","."));return(isNaN(c)?0:c)*b}function fb(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function gb(a,b){var c;return a.isValid()&&b.isValid()?(b=Sa(b,a),a.isBefore(b)?c=fb(a,b):(c=fb(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c):{milliseconds:0,months:0}}function hb(a){return 0>a?-1*Math.round(-1*a):Math.round(a)}function ib(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(v(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period)."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=db(c,d),jb(this,e,a),this}}function jb(b,c,d,e){var f=c._milliseconds,g=hb(c._days),h=hb(c._months);b.isValid()&&(e=null==e?!0:e,f&&b._d.setTime(b._d.valueOf()+f*d),g&&O(b,"Date",N(b,"Date")+g*d),h&&ga(b,N(b,"Month")+h*d),e&&a.updateOffset(b,g||h))}function kb(a,b){var c=a||Ka(),d=Sa(c,this).startOf("day"),e=this.diff(d,"days",!0),f=-6>e?"sameElse":-1>e?"lastWeek":0>e?"lastDay":1>e?"sameDay":2>e?"nextDay":7>e?"nextWeek":"sameElse",g=b&&(w(b[f])?b[f]():b[f]);return this.format(g||this.localeData().calendar(f,this,Ka(c)))}function lb(){return new o(this)}function mb(a,b){var c=p(a)?a:Ka(a);return this.isValid()&&c.isValid()?(b=K(m(b)?"millisecond":b),"millisecond"===b?this.valueOf()>c.valueOf():c.valueOf()<this.clone().startOf(b).valueOf()):!1}function nb(a,b){var c=p(a)?a:Ka(a);return this.isValid()&&c.isValid()?(b=K(m(b)?"millisecond":b),"millisecond"===b?this.valueOf()<c.valueOf():this.clone().endOf(b).valueOf()<c.valueOf()):!1}function ob(a,b,c,d){return d=d||"()",("("===d[0]?this.isAfter(a,c):!this.isBefore(a,c))&&(")"===d[1]?this.isBefore(b,c):!this.isAfter(b,c))}function pb(a,b){var c,d=p(a)?a:Ka(a);return this.isValid()&&d.isValid()?(b=K(b||"millisecond"),"millisecond"===b?this.valueOf()===d.valueOf():(c=d.valueOf(),this.clone().startOf(b).valueOf()<=c&&c<=this.clone().endOf(b).valueOf())):!1}function qb(a,b){return this.isSame(a,b)||this.isAfter(a,b)}function rb(a,b){return this.isSame(a,b)||this.isBefore(a,b)}function sb(a,b,c){var d,e,f,g;return this.isValid()?(d=Sa(a,this),d.isValid()?(e=6e4*(d.utcOffset()-this.utcOffset()),b=K(b),"year"===b||"month"===b||"quarter"===b?(g=tb(this,d),"quarter"===b?g/=3:"year"===b&&(g/=12)):(f=this-d,g="second"===b?f/1e3:"minute"===b?f/6e4:"hour"===b?f/36e5:"day"===b?(f-e)/864e5:"week"===b?(f-e)/6048e5:f),c?g:q(g)):NaN):NaN}function tb(a,b){var c,d,e=12*(b.year()-a.year())+(b.month()-a.month()),f=a.clone().add(e,"months");return 0>b-f?(c=a.clone().add(e-1,"months"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,"months"),d=(b-f)/(c-f)),-(e+d)||0}function ub(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function vb(){var a=this.clone().utc();return 0<a.year()&&a.year()<=9999?w(Date.prototype.toISOString)?this.toDate().toISOString():U(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):U(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function wb(b){b||(b=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var c=U(this,b);return this.localeData().postformat(c)}function xb(a,b){return this.isValid()&&(p(a)&&a.isValid()||Ka(a).isValid())?db({to:this,from:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function yb(a){return this.from(Ka(),a)}function zb(a,b){return this.isValid()&&(p(a)&&a.isValid()||Ka(a).isValid())?db({from:this,to:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function Ab(a){return this.to(Ka(),a)}function Bb(a){var b;return void 0===a?this._locale._abbr:(b=H(a),null!=b&&(this._locale=b),this)}function Cb(){return this._locale}function Db(a){switch(a=K(a)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a&&this.weekday(0),"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this}function Eb(a){return a=K(a),void 0===a||"millisecond"===a?this:("date"===a&&(a="day"),this.startOf(a).add(1,"isoWeek"===a?"week":a).subtract(1,"ms"))}function Fb(){return this._d.valueOf()-6e4*(this._offset||0)}function Gb(){return Math.floor(this.valueOf()/1e3)}function Hb(){return this._offset?new Date(this.valueOf()):this._d}function Ib(){var a=this;return[a.year(),a.month(),a.date(),a.hour(),a.minute(),a.second(),a.millisecond()]}function Jb(){var a=this;return{years:a.year(),months:a.month(),date:a.date(),hours:a.hours(),minutes:a.minutes(),seconds:a.seconds(),milliseconds:a.milliseconds()}}function Kb(){return this.isValid()?this.toISOString():null}function Lb(){return k(this)}function Mb(){return g({},j(this))}function Nb(){return j(this).overflow}function Ob(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Pb(a,b){R(0,[a,a.length],0,b)}function Qb(a){return Ub.call(this,a,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function Rb(a){return Ub.call(this,a,this.isoWeek(),this.isoWeekday(),1,4)}function Sb(){return xa(this.year(),1,4)}function Tb(){var a=this.localeData()._week;return xa(this.year(),a.dow,a.doy)}function Ub(a,b,c,d,e){var f;return null==a?wa(this,d,e).year:(f=xa(a,d,e),b>f&&(b=f),Vb.call(this,a,b,c,d,e))}function Vb(a,b,c,d,e){var f=va(a,b,c,d,e),g=qa(f.year,0,f.dayOfYear);return this.year(g.getUTCFullYear()),this.month(g.getUTCMonth()),this.date(g.getUTCDate()),this}function Wb(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)}function Xb(a){return wa(a,this._week.dow,this._week.doy).week}function Yb(){return this._week.dow}function Zb(){return this._week.doy}function $b(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function _b(a){var b=wa(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")}function ac(a,b){return"string"!=typeof a?a:isNaN(a)?(a=b.weekdaysParse(a),"number"==typeof a?a:null):parseInt(a,10)}function bc(a,b){return c(this._weekdays)?this._weekdays[a.day()]:this._weekdays[this._weekdays.isFormat.test(b)?"format":"standalone"][a.day()]}function cc(a){return this._weekdaysShort[a.day()]}function dc(a){return this._weekdaysMin[a.day()]}function ec(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],d=0;7>d;++d)f=h([2e3,1]).day(d),this._minWeekdaysParse[d]=this.weekdaysMin(f,"").toLocaleLowerCase(),this._shortWeekdaysParse[d]=this.weekdaysShort(f,"").toLocaleLowerCase(),this._weekdaysParse[d]=this.weekdays(f,"").toLocaleLowerCase();return c?"dddd"===b?(e=md.call(this._weekdaysParse,g),-1!==e?e:null):"ddd"===b?(e=md.call(this._shortWeekdaysParse,g),-1!==e?e:null):(e=md.call(this._minWeekdaysParse,g),-1!==e?e:null):"dddd"===b?(e=md.call(this._weekdaysParse,g),-1!==e?e:(e=md.call(this._shortWeekdaysParse,g),-1!==e?e:(e=md.call(this._minWeekdaysParse,g),-1!==e?e:null))):"ddd"===b?(e=md.call(this._shortWeekdaysParse,g),-1!==e?e:(e=md.call(this._weekdaysParse,g),-1!==e?e:(e=md.call(this._minWeekdaysParse,g),-1!==e?e:null))):(e=md.call(this._minWeekdaysParse,g),-1!==e?e:(e=md.call(this._weekdaysParse,g),-1!==e?e:(e=md.call(this._shortWeekdaysParse,g),-1!==e?e:null)))}function fc(a,b,c){var d,e,f;if(this._weekdaysParseExact)return ec.call(this,a,b,c);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),d=0;7>d;d++){if(e=h([2e3,1]).day(d),c&&!this._fullWeekdaysParse[d]&&(this._fullWeekdaysParse[d]=new RegExp("^"+this.weekdays(e,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[d]=new RegExp("^"+this.weekdaysShort(e,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[d]=new RegExp("^"+this.weekdaysMin(e,"").replace(".",".?")+"$","i")),this._weekdaysParse[d]||(f="^"+this.weekdays(e,"")+"|^"+this.weekdaysShort(e,"")+"|^"+this.weekdaysMin(e,""),this._weekdaysParse[d]=new RegExp(f.replace(".",""),"i")),c&&"dddd"===b&&this._fullWeekdaysParse[d].test(a))return d;if(c&&"ddd"===b&&this._shortWeekdaysParse[d].test(a))return d;if(c&&"dd"===b&&this._minWeekdaysParse[d].test(a))return d;if(!c&&this._weekdaysParse[d].test(a))return d}}function gc(a){if(!this.isValid())return null!=a?this:NaN;var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=ac(a,this.localeData()),this.add(a-b,"d")):b}function hc(a){if(!this.isValid())return null!=a?this:NaN;var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")}function ic(a){return this.isValid()?null==a?this.day()||7:this.day(this.day()%7?a:a-7):null!=a?this:NaN}function jc(a){return this._weekdaysParseExact?(f(this,"_weekdaysRegex")||mc.call(this),a?this._weekdaysStrictRegex:this._weekdaysRegex):this._weekdaysStrictRegex&&a?this._weekdaysStrictRegex:this._weekdaysRegex}function kc(a){return this._weekdaysParseExact?(f(this,"_weekdaysRegex")||mc.call(this),a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):this._weekdaysShortStrictRegex&&a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex}function lc(a){return this._weekdaysParseExact?(f(this,"_weekdaysRegex")||mc.call(this),a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):this._weekdaysMinStrictRegex&&a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex}function mc(){function a(a,b){return b.length-a.length}var b,c,d,e,f,g=[],i=[],j=[],k=[];for(b=0;7>b;b++)c=h([2e3,1]).day(b),d=this.weekdaysMin(c,""),e=this.weekdaysShort(c,""),f=this.weekdays(c,""),g.push(d),i.push(e),j.push(f),k.push(d),k.push(e),k.push(f);for(g.sort(a),i.sort(a),j.sort(a),k.sort(a),b=0;7>b;b++)i[b]=Z(i[b]),j[b]=Z(j[b]),k[b]=Z(k[b]);this._weekdaysRegex=new RegExp("^("+k.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+j.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+g.join("|")+")","i")}function nc(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function oc(){return this.hours()%12||12}function pc(){return this.hours()||24}function qc(a,b){R(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function rc(a,b){return b._meridiemParse}function sc(a){return"p"===(a+"").toLowerCase().charAt(0)}function tc(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function uc(a,b){b[Sd]=r(1e3*("0."+a))}function vc(){return this._isUTC?"UTC":""}function wc(){return this._isUTC?"Coordinated Universal Time":""}function xc(a){return Ka(1e3*a)}function yc(){return Ka.apply(null,arguments).parseZone()}function zc(a,b,c){var d=this._calendar[a];return w(d)?d.call(b,c):d}function Ac(a){var b=this._longDateFormat[a],c=this._longDateFormat[a.toUpperCase()];return b||!c?b:(this._longDateFormat[a]=c.replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a])}function Bc(){return this._invalidDate}function Cc(a){return this._ordinal.replace("%d",a)}function Dc(a){return a}function Ec(a,b,c,d){var e=this._relativeTime[c];return w(e)?e(a,b,c,d):e.replace(/%d/i,a)}function Fc(a,b){var c=this._relativeTime[a>0?"future":"past"];return w(c)?c(b):c.replace(/%s/i,b)}function Gc(a,b,c,d){var e=H(),f=h().set(d,b);return e[c](f,a)}function Hc(a,b,c){if("number"==typeof a&&(b=a,a=void 0),a=a||"",null!=b)return Gc(a,b,c,"month");var d,e=[];for(d=0;12>d;d++)e[d]=Gc(a,d,c,"month");return e}function Ic(a,b,c,d){"boolean"==typeof a?("number"==typeof b&&(c=b,b=void 0),b=b||""):(b=a,c=b,a=!1,"number"==typeof b&&(c=b,b=void 0),b=b||"");var e=H(),f=a?e._week.dow:0;if(null!=c)return Gc(b,(c+f)%7,d,"day");var g,h=[];for(g=0;7>g;g++)h[g]=Gc(b,(g+f)%7,d,"day");return h}function Jc(a,b){return Hc(a,b,"months")}function Kc(a,b){return Hc(a,b,"monthsShort")}function Lc(a,b,c){return Ic(a,b,c,"weekdays")}function Mc(a,b,c){return Ic(a,b,c,"weekdaysShort")}function Nc(a,b,c){return Ic(a,b,c,"weekdaysMin")}function Oc(){var a=this._data;return this._milliseconds=Le(this._milliseconds),this._days=Le(this._days),this._months=Le(this._months),a.milliseconds=Le(a.milliseconds),a.seconds=Le(a.seconds),a.minutes=Le(a.minutes),a.hours=Le(a.hours),a.months=Le(a.months),a.years=Le(a.years),this}function Pc(a,b,c,d){var e=db(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function Qc(a,b){return Pc(this,a,b,1)}function Rc(a,b){return Pc(this,a,b,-1)}function Sc(a){return 0>a?Math.floor(a):Math.ceil(a)}function Tc(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;return f>=0&&g>=0&&h>=0||0>=f&&0>=g&&0>=h||(f+=864e5*Sc(Vc(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=q(f/1e3),i.seconds=a%60,b=q(a/60),i.minutes=b%60,c=q(b/60),i.hours=c%24,g+=q(c/24),e=q(Uc(g)),h+=e,g-=Sc(Vc(e)),d=q(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function Uc(a){return 4800*a/146097}function Vc(a){return 146097*a/4800}function Wc(a){var b,c,d=this._milliseconds;if(a=K(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+Uc(b),"month"===a?c:c/12;switch(b=this._days+Math.round(Vc(this._months)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3;case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}}function Xc(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*r(this._months/12)}function Yc(a){return function(){return this.as(a)}}function Zc(a){
return a=K(a),this[a+"s"]()}function $c(a){return function(){return this._data[a]}}function _c(){return q(this.days()/7)}function ad(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function bd(a,b,c){var d=db(a).abs(),e=_e(d.as("s")),f=_e(d.as("m")),g=_e(d.as("h")),h=_e(d.as("d")),i=_e(d.as("M")),j=_e(d.as("y")),k=e<af.s&&["s",e]||1>=f&&["m"]||f<af.m&&["mm",f]||1>=g&&["h"]||g<af.h&&["hh",g]||1>=h&&["d"]||h<af.d&&["dd",h]||1>=i&&["M"]||i<af.M&&["MM",i]||1>=j&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,ad.apply(null,k)}function cd(a,b){return void 0===af[a]?!1:void 0===b?af[a]:(af[a]=b,!0)}function dd(a){var b=this.localeData(),c=bd(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function ed(){var a,b,c,d=bf(this._milliseconds)/1e3,e=bf(this._days),f=bf(this._months);a=q(d/60),b=q(a/60),d%=60,a%=60,c=q(f/12),f%=12;var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(0>m?"-":"")+"P"+(g?g+"Y":"")+(h?h+"M":"")+(i?i+"D":"")+(j||k||l?"T":"")+(j?j+"H":"")+(k?k+"M":"")+(l?l+"S":""):"P0D"}var fd,gd;gd=Array.prototype.some?Array.prototype.some:function(a){for(var b=Object(this),c=b.length>>>0,d=0;c>d;d++)if(d in b&&a.call(this,b[d],d,b))return!0;return!1};var hd=a.momentProperties=[],id=!1,jd={};a.suppressDeprecationWarnings=!1,a.deprecationHandler=null;var kd;kd=Object.keys?Object.keys:function(a){var b,c=[];for(b in a)f(a,b)&&c.push(b);return c};var ld,md,nd={},od={},pd=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,qd=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,rd={},sd={},td=/\d/,ud=/\d\d/,vd=/\d{3}/,wd=/\d{4}/,xd=/[+-]?\d{6}/,yd=/\d\d?/,zd=/\d\d\d\d?/,Ad=/\d\d\d\d\d\d?/,Bd=/\d{1,3}/,Cd=/\d{1,4}/,Dd=/[+-]?\d{1,6}/,Ed=/\d+/,Fd=/[+-]?\d+/,Gd=/Z|[+-]\d\d:?\d\d/gi,Hd=/Z|[+-]\d\d(?::?\d\d)?/gi,Id=/[+-]?\d+(\.\d{1,3})?/,Jd=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Kd={},Ld={},Md=0,Nd=1,Od=2,Pd=3,Qd=4,Rd=5,Sd=6,Td=7,Ud=8;md=Array.prototype.indexOf?Array.prototype.indexOf:function(a){var b;for(b=0;b<this.length;++b)if(this[b]===a)return b;return-1},R("M",["MM",2],"Mo",function(){return this.month()+1}),R("MMM",0,0,function(a){return this.localeData().monthsShort(this,a)}),R("MMMM",0,0,function(a){return this.localeData().months(this,a)}),J("month","M"),W("M",yd),W("MM",yd,ud),W("MMM",function(a,b){return b.monthsShortRegex(a)}),W("MMMM",function(a,b){return b.monthsRegex(a)}),$(["M","MM"],function(a,b){b[Nd]=r(a)-1}),$(["MMM","MMMM"],function(a,b,c,d){var e=c._locale.monthsParse(a,d,c._strict);null!=e?b[Nd]=e:j(c).invalidMonth=a});var Vd=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/,Wd="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Xd="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Yd=Jd,Zd=Jd,$d=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/,_d=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/,ae=/Z|[+-]\d\d(?::?\d\d)?/,be=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],ce=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],de=/^\/?Date\((\-?\d+)/i;a.createFromInputFallback=u("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),R("Y",0,0,function(){var a=this.year();return 9999>=a?""+a:"+"+a}),R(0,["YY",2],0,function(){return this.year()%100}),R(0,["YYYY",4],0,"year"),R(0,["YYYYY",5],0,"year"),R(0,["YYYYYY",6,!0],0,"year"),J("year","y"),W("Y",Fd),W("YY",yd,ud),W("YYYY",Cd,wd),W("YYYYY",Dd,xd),W("YYYYYY",Dd,xd),$(["YYYYY","YYYYYY"],Md),$("YYYY",function(b,c){c[Md]=2===b.length?a.parseTwoDigitYear(b):r(b)}),$("YY",function(b,c){c[Md]=a.parseTwoDigitYear(b)}),$("Y",function(a,b){b[Md]=parseInt(a,10)}),a.parseTwoDigitYear=function(a){return r(a)+(r(a)>68?1900:2e3)};var ee=M("FullYear",!0);a.ISO_8601=function(){};var fe=u("moment().min is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var a=Ka.apply(null,arguments);return this.isValid()&&a.isValid()?this>a?this:a:l()}),ge=u("moment().max is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var a=Ka.apply(null,arguments);return this.isValid()&&a.isValid()?a>this?this:a:l()}),he=function(){return Date.now?Date.now():+new Date};Qa("Z",":"),Qa("ZZ",""),W("Z",Hd),W("ZZ",Hd),$(["Z","ZZ"],function(a,b,c){c._useUTC=!0,c._tzm=Ra(Hd,a)});var ie=/([\+\-]|\d\d)/gi;a.updateOffset=function(){};var je=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?\d*)?$/,ke=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;db.fn=Oa.prototype;var le=ib(1,"add"),me=ib(-1,"subtract");a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",a.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var ne=u("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(a){return void 0===a?this.localeData():this.locale(a)});R(0,["gg",2],0,function(){return this.weekYear()%100}),R(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Pb("gggg","weekYear"),Pb("ggggg","weekYear"),Pb("GGGG","isoWeekYear"),Pb("GGGGG","isoWeekYear"),J("weekYear","gg"),J("isoWeekYear","GG"),W("G",Fd),W("g",Fd),W("GG",yd,ud),W("gg",yd,ud),W("GGGG",Cd,wd),W("gggg",Cd,wd),W("GGGGG",Dd,xd),W("ggggg",Dd,xd),_(["gggg","ggggg","GGGG","GGGGG"],function(a,b,c,d){b[d.substr(0,2)]=r(a)}),_(["gg","GG"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),R("Q",0,"Qo","quarter"),J("quarter","Q"),W("Q",td),$("Q",function(a,b){b[Nd]=3*(r(a)-1)}),R("w",["ww",2],"wo","week"),R("W",["WW",2],"Wo","isoWeek"),J("week","w"),J("isoWeek","W"),W("w",yd),W("ww",yd,ud),W("W",yd),W("WW",yd,ud),_(["w","ww","W","WW"],function(a,b,c,d){b[d.substr(0,1)]=r(a)});var oe={dow:0,doy:6};R("D",["DD",2],"Do","date"),J("date","D"),W("D",yd),W("DD",yd,ud),W("Do",function(a,b){return a?b._ordinalParse:b._ordinalParseLenient}),$(["D","DD"],Od),$("Do",function(a,b){b[Od]=r(a.match(yd)[0],10)});var pe=M("Date",!0);R("d",0,"do","day"),R("dd",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),R("ddd",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),R("dddd",0,0,function(a){return this.localeData().weekdays(this,a)}),R("e",0,0,"weekday"),R("E",0,0,"isoWeekday"),J("day","d"),J("weekday","e"),J("isoWeekday","E"),W("d",yd),W("e",yd),W("E",yd),W("dd",function(a,b){return b.weekdaysMinRegex(a)}),W("ddd",function(a,b){return b.weekdaysShortRegex(a)}),W("dddd",function(a,b){return b.weekdaysRegex(a)}),_(["dd","ddd","dddd"],function(a,b,c,d){var e=c._locale.weekdaysParse(a,d,c._strict);null!=e?b.d=e:j(c).invalidWeekday=a}),_(["d","e","E"],function(a,b,c,d){b[d]=r(a)});var qe="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),re="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),se="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),te=Jd,ue=Jd,ve=Jd;R("DDD",["DDDD",3],"DDDo","dayOfYear"),J("dayOfYear","DDD"),W("DDD",Bd),W("DDDD",vd),$(["DDD","DDDD"],function(a,b,c){c._dayOfYear=r(a)}),R("H",["HH",2],0,"hour"),R("h",["hh",2],0,oc),R("k",["kk",2],0,pc),R("hmm",0,0,function(){return""+oc.apply(this)+Q(this.minutes(),2)}),R("hmmss",0,0,function(){return""+oc.apply(this)+Q(this.minutes(),2)+Q(this.seconds(),2)}),R("Hmm",0,0,function(){return""+this.hours()+Q(this.minutes(),2)}),R("Hmmss",0,0,function(){return""+this.hours()+Q(this.minutes(),2)+Q(this.seconds(),2)}),qc("a",!0),qc("A",!1),J("hour","h"),W("a",rc),W("A",rc),W("H",yd),W("h",yd),W("HH",yd,ud),W("hh",yd,ud),W("hmm",zd),W("hmmss",Ad),W("Hmm",zd),W("Hmmss",Ad),$(["H","HH"],Pd),$(["a","A"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),$(["h","hh"],function(a,b,c){b[Pd]=r(a),j(c).bigHour=!0}),$("hmm",function(a,b,c){var d=a.length-2;b[Pd]=r(a.substr(0,d)),b[Qd]=r(a.substr(d)),j(c).bigHour=!0}),$("hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[Pd]=r(a.substr(0,d)),b[Qd]=r(a.substr(d,2)),b[Rd]=r(a.substr(e)),j(c).bigHour=!0}),$("Hmm",function(a,b,c){var d=a.length-2;b[Pd]=r(a.substr(0,d)),b[Qd]=r(a.substr(d))}),$("Hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[Pd]=r(a.substr(0,d)),b[Qd]=r(a.substr(d,2)),b[Rd]=r(a.substr(e))});var we=/[ap]\.?m?\.?/i,xe=M("Hours",!0);R("m",["mm",2],0,"minute"),J("minute","m"),W("m",yd),W("mm",yd,ud),$(["m","mm"],Qd);var ye=M("Minutes",!1);R("s",["ss",2],0,"second"),J("second","s"),W("s",yd),W("ss",yd,ud),$(["s","ss"],Rd);var ze=M("Seconds",!1);R("S",0,0,function(){return~~(this.millisecond()/100)}),R(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),R(0,["SSS",3],0,"millisecond"),R(0,["SSSS",4],0,function(){return 10*this.millisecond()}),R(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),R(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),R(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),R(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),R(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),J("millisecond","ms"),W("S",Bd,td),W("SS",Bd,ud),W("SSS",Bd,vd);var Ae;for(Ae="SSSS";Ae.length<=9;Ae+="S")W(Ae,Ed);for(Ae="S";Ae.length<=9;Ae+="S")$(Ae,uc);var Be=M("Milliseconds",!1);R("z",0,0,"zoneAbbr"),R("zz",0,0,"zoneName");var Ce=o.prototype;Ce.add=le,Ce.calendar=kb,Ce.clone=lb,Ce.diff=sb,Ce.endOf=Eb,Ce.format=wb,Ce.from=xb,Ce.fromNow=yb,Ce.to=zb,Ce.toNow=Ab,Ce.get=P,Ce.invalidAt=Nb,Ce.isAfter=mb,Ce.isBefore=nb,Ce.isBetween=ob,Ce.isSame=pb,Ce.isSameOrAfter=qb,Ce.isSameOrBefore=rb,Ce.isValid=Lb,Ce.lang=ne,Ce.locale=Bb,Ce.localeData=Cb,Ce.max=ge,Ce.min=fe,Ce.parsingFlags=Mb,Ce.set=P,Ce.startOf=Db,Ce.subtract=me,Ce.toArray=Ib,Ce.toObject=Jb,Ce.toDate=Hb,Ce.toISOString=vb,Ce.toJSON=Kb,Ce.toString=ub,Ce.unix=Gb,Ce.valueOf=Fb,Ce.creationData=Ob,Ce.year=ee,Ce.isLeapYear=ta,Ce.weekYear=Qb,Ce.isoWeekYear=Rb,Ce.quarter=Ce.quarters=Wb,Ce.month=ha,Ce.daysInMonth=ia,Ce.week=Ce.weeks=$b,Ce.isoWeek=Ce.isoWeeks=_b,Ce.weeksInYear=Tb,Ce.isoWeeksInYear=Sb,Ce.date=pe,Ce.day=Ce.days=gc,Ce.weekday=hc,Ce.isoWeekday=ic,Ce.dayOfYear=nc,Ce.hour=Ce.hours=xe,Ce.minute=Ce.minutes=ye,Ce.second=Ce.seconds=ze,Ce.millisecond=Ce.milliseconds=Be,Ce.utcOffset=Ua,Ce.utc=Wa,Ce.local=Xa,Ce.parseZone=Ya,Ce.hasAlignedHourOffset=Za,Ce.isDST=$a,Ce.isDSTShifted=_a,Ce.isLocal=ab,Ce.isUtcOffset=bb,Ce.isUtc=cb,Ce.isUTC=cb,Ce.zoneAbbr=vc,Ce.zoneName=wc,Ce.dates=u("dates accessor is deprecated. Use date instead.",pe),Ce.months=u("months accessor is deprecated. Use month instead",ha),Ce.years=u("years accessor is deprecated. Use year instead",ee),Ce.zone=u("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Va);var De=Ce,Ee={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Fe={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Ge="Invalid date",He="%d",Ie=/\d{1,2}/,Je={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Ke=A.prototype;Ke._calendar=Ee,Ke.calendar=zc,Ke._longDateFormat=Fe,Ke.longDateFormat=Ac,Ke._invalidDate=Ge,Ke.invalidDate=Bc,Ke._ordinal=He,Ke.ordinal=Cc,Ke._ordinalParse=Ie,Ke.preparse=Dc,Ke.postformat=Dc,Ke._relativeTime=Je,Ke.relativeTime=Ec,Ke.pastFuture=Fc,Ke.set=y,Ke.months=ca,Ke._months=Wd,Ke.monthsShort=da,Ke._monthsShort=Xd,Ke.monthsParse=fa,Ke._monthsRegex=Zd,Ke.monthsRegex=ka,Ke._monthsShortRegex=Yd,Ke.monthsShortRegex=ja,Ke.week=Xb,Ke._week=oe,Ke.firstDayOfYear=Zb,Ke.firstDayOfWeek=Yb,Ke.weekdays=bc,Ke._weekdays=qe,Ke.weekdaysMin=dc,Ke._weekdaysMin=se,Ke.weekdaysShort=cc,Ke._weekdaysShort=re,Ke.weekdaysParse=fc,Ke._weekdaysRegex=te,Ke.weekdaysRegex=jc,Ke._weekdaysShortRegex=ue,Ke.weekdaysShortRegex=kc,Ke._weekdaysMinRegex=ve,Ke.weekdaysMinRegex=lc,Ke.isPM=sc,Ke._meridiemParse=we,Ke.meridiem=tc,E("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===r(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),a.lang=u("moment.lang is deprecated. Use moment.locale instead.",E),a.langData=u("moment.langData is deprecated. Use moment.localeData instead.",H);var Le=Math.abs,Me=Yc("ms"),Ne=Yc("s"),Oe=Yc("m"),Pe=Yc("h"),Qe=Yc("d"),Re=Yc("w"),Se=Yc("M"),Te=Yc("y"),Ue=$c("milliseconds"),Ve=$c("seconds"),We=$c("minutes"),Xe=$c("hours"),Ye=$c("days"),Ze=$c("months"),$e=$c("years"),_e=Math.round,af={s:45,m:45,h:22,d:26,M:11},bf=Math.abs,cf=Oa.prototype;cf.abs=Oc,cf.add=Qc,cf.subtract=Rc,cf.as=Wc,cf.asMilliseconds=Me,cf.asSeconds=Ne,cf.asMinutes=Oe,cf.asHours=Pe,cf.asDays=Qe,cf.asWeeks=Re,cf.asMonths=Se,cf.asYears=Te,cf.valueOf=Xc,cf._bubble=Tc,cf.get=Zc,cf.milliseconds=Ue,cf.seconds=Ve,cf.minutes=We,cf.hours=Xe,cf.days=Ye,cf.weeks=_c,cf.months=Ze,cf.years=$e,cf.humanize=dd,cf.toISOString=ed,cf.toString=ed,cf.toJSON=ed,cf.locale=Bb,cf.localeData=Cb,cf.toIsoString=u("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",ed),cf.lang=ne,R("X",0,0,"unix"),R("x",0,0,"valueOf"),W("x",Fd),W("X",Id),$("X",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),$("x",function(a,b,c){c._d=new Date(r(a))}),a.version="2.13.0",b(Ka),a.fn=De,a.min=Ma,a.max=Na,a.now=he,a.utc=h,a.unix=xc,a.months=Jc,a.isDate=d,a.locale=E,a.invalid=l,a.duration=db,a.isMoment=p,a.weekdays=Lc,a.parseZone=yc,a.localeData=H,a.isDuration=Pa,a.monthsShort=Kc,a.weekdaysMin=Nc,a.defineLocale=F,a.updateLocale=G,a.locales=I,a.weekdaysShort=Mc,a.normalizeUnits=K,a.relativeTimeThreshold=cd,a.prototype=De;var df=a;return df});;
(function(n){var t=!1,r,i;typeof define=="function"&&define.amd&&(define(n),t=!0);typeof exports=="object"&&(module.exports=n(),t=!0);t||(r=window.Cookies,i=window.Cookies=n(),i.noConflict=function(){return window.Cookies=r,i})})(function(){function n(){for(var n=0,r={},t,i;n<arguments.length;n++){t=arguments[n];for(i in t)r[i]=t[i]}return r}function t(i){function r(t,u,f){var o,h,l,e,s;if(typeof document!="undefined"){if(arguments.length>1){f=n({path:"/"},r.defaults,f);typeof f.expires=="number"&&(h=new Date,h.setMilliseconds(h.getMilliseconds()+f.expires*864e5),f.expires=h);try{o=JSON.stringify(u);/^[\{\[]/.test(o)&&(u=o)}catch(y){}return u=i.write?i.write(u,t):encodeURIComponent(String(u)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),t=encodeURIComponent(String(t)),t=t.replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent),t=t.replace(/[\(\)]/g,escape),document.cookie=[t,"=",u,f.expires?"; expires="+f.expires.toUTCString():"",f.path?"; path="+f.path:"",f.domain?"; domain="+f.domain:"",f.secure?"; secure":""].join("")}t||(o={});for(var a=document.cookie?document.cookie.split("; "):[],v=/(%[0-9A-Z]{2})+/g,c=0;c<a.length;c++){l=a[c].split("=");e=l.slice(1).join("=");e.charAt(0)==='"'&&(e=e.slice(1,-1));try{if(s=l[0].replace(v,decodeURIComponent),e=i.read?i.read(e,s):i(e,s)||e.replace(v,decodeURIComponent),this.json)try{e=JSON.parse(e)}catch(y){}if(t===s){o=e;break}t||(o[s]=e)}catch(y){}}return o}}return r.set=r,r.get=function(n){return r.call(r,n)},r.getJSON=function(){return r.apply({json:!0},[].slice.call(arguments))},r.defaults={},r.remove=function(t,i){r(t,"",n(i,{expires:-1}))},r.withConverter=t,r}return t(function(){})});
//# sourceMappingURL=js.cookie.min.js.map
;
(function (cp, $) {

    cp.pages = {};

    cp.updateQueryStringParameter = function (url, key, value) {
        var re = new RegExp('([?&])' + key + '=.*?(&|$)', 'i');
        var separator = url.indexOf('?') !== -1 ? '&' : '?';
        if (url.match(re)) {
            return url.replace(re, '$1' + key + '=' + value + '$2');
        } else {
            return url + separator + key + '=' + value;
        }
    }


    cp.getUrlParameter = function (param) {

        var pageUrl = decodeURIComponent(window.location.search.substring(1)),
            urlVariables = pageUrl.split('&'), parameterName, i;

        for (var i = 0; i < urlVariables.length; i++) {
            parameterName = urlVariables[i].split('=');

            if (parameterName[0].toLocaleLowerCase() === param.toLocaleLowerCase()) {
                return parameterName[1] === undefined ? true : parameterName[1];
            }
        }

        return '';
    }

    cp.activeNav = function (elem) {
        $('a', elem).each(function () {
            if (window.location.pathname.indexOf($(this).attr('href')) != -1) {
                $(this).addClass('active'); // this style has pointer-events: none;
            }
        })
    }

    cp.linkCallback = function (evt) {
        var applicationId = cp.getUrlParameter('applicationId');
        var href = $(this).attr('href');

        // if we have an appID
        // AND the link we have clicked has no got an appID
        // AND the link we have clicked goes/remains in the dashboard OR messages OR events
        if (applicationId && href.indexOf('applicationId') === -1 && (href.indexOf('dashboard') !== -1) || href.indexOf('messages') !== -1 || href.indexOf('events') !== -1) {
            $(this).attr('href', cp.updateQueryStringParameter(href, 'applicationId', applicationId));
        }
    }

    cp.ajaxPost = function(url, data, success, error) {
        return this.ajaxRequest(url, data, success, error, "POST");
    }

    cp.ajaxGet = function (url, data, success, error) {
        return this.ajaxRequest(url, data, success, error, "GET");
    }

    cp.ajaxRequest = function(url, data, success, error, method, additionalOptions) {

        var settings = $.extend({
            url: url,
            data: data,
            method: method,
            contentType: "application/json;charset=utf-8"
        }, additionalOptions);

        try {
            return $.ajax(settings)
                .done(success)
                .fail(error)
                .always(function (jqXhr, textStatus) {

                    if (jqXhr.statusText == "Unauthorized") {
                        console.log("always : " + textStatus);
                        window.location = "/login";
                    }
            });

        } catch (e) {
            console.log("ERROR OCCURED :" + e.message);
        } 
    }

    cp.checkRequestAuthorisation = function(xhr,textstatus) {
        if (textstatus.status == "401") {
            window.location = "/login";
        }
    }

    $(document).ready(function () {
        cp.activeNav($('.panel-candidate-menu'));
    })

})(window.cp = window.cp || {}, jQuery)

if (!String.prototype.endsWith) {
    String.prototype.endsWith = function (str, this_len) {
        if (this_len === undefined || this_len > this.length) {
            this_len = this.length;
        }
        return this.substring(this_len - str.length, this_len) === str;
    }
}

if (!String.prototype.startsWith) {
    String.prototype.startsWith = function (str, prefix) {
        return str.indexOf(prefix) === 0
    }
};
(function(n){var t=navigator.userAgent;n.HTMLPictureElement&&/ecko/.test(t)&&t.match(/rv\:(\d+)/)&&RegExp.$1<45&&addEventListener("resize",function(){var r,u=document.createElement("source"),e=function(n){var i,r,t=n.parentNode;t.nodeName.toUpperCase()==="PICTURE"?(i=u.cloneNode(),t.insertBefore(i,t.firstElementChild),setTimeout(function(){t.removeChild(i)})):(!n._pfLastSize||n.offsetWidth>n._pfLastSize)&&(n._pfLastSize=n.offsetWidth,r=n.sizes,n.sizes+=",100vw",setTimeout(function(){n.sizes=r}))},o=function(){for(var t=document.querySelectorAll("picture > img, img[srcset][sizes]"),n=0;n<t.length;n++)e(t[n])},t=function(){clearTimeout(r);r=setTimeout(o,99)},i=n.matchMedia&&matchMedia("(orientation: landscape)"),f=function(){t();i&&i.addListener&&i.addListener(t)};return u.srcset="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",/^[c|i]|d$/.test(document.readyState||"")?f():document.addEventListener("DOMContentLoaded",f),t}())})(window),function(n,t,i){"use strict";function b(n){return n===" "||n==="\t"||n==="\n"||n==="\f"||n==="\r"}function fi(t,i){var r=new n.Image;return r.onerror=function(){o[t]=!1;f()},r.onload=function(){o[t]=r.width===1;f()},r.src=i,"pending"}function ei(){p=!1;a=n.devicePixelRatio;h={};w={};r.DPR=a||1;u.width=Math.max(n.innerWidth||0,e.clientWidth);u.height=Math.max(n.innerHeight||0,e.clientHeight);u.vw=u.width/100;u.vh=u.height/100;v=[u.height,u.width,a].join("-");u.em=r.getEmValue();u.rem=u.em}function oi(n,t,i,r){var f,o,e,u;return y.algorithm==="saveData"?n>2.7?u=i+1:(o=t-i,f=Math.pow(n-.6,1.5),e=o*f,r&&(e+=.1*f),u=n+e):u=i>1?Math.sqrt(n*t):n,u>i}function si(n){var i,t=r.getSet(n),u=!1;t!=="pending"&&(u=v,t&&(i=r.setRes(t),r.applySetCandidate(i,n)));n[r.ns].evaled=u}function hi(n,t){return n.res-t.res}function ci(n,t,i){var u;return!i&&t&&(i=n[r.ns].sets,i=i&&i[i.length-1]),u=pt(t,i),u&&(t=r.makeUrl(t),n[r.ns].curSrc=t,n[r.ns].curCan=u,u.res||ft(u,u.set.sizes)),u}function pt(n,t){var i,f,u;if(n&&t)for(u=r.parseSet(t),n=r.makeUrl(n),i=0;i<u.length;i++)if(n===r.makeUrl(u[i].url)){f=u[i];break}return f}function li(n,t){for(var i,f,o=n.getElementsByTagName("source"),u=0,e=o.length;u<e;u++)i=o[u],i[r.ns]=!0,f=i.getAttribute("srcset"),f&&t.push({srcset:f,media:i.getAttribute("media"),type:i.getAttribute("type"),sizes:i.getAttribute("sizes")})}function ai(n,t){function h(t){var i,r=t.exec(n.substring(e));if(r)return i=r[0],e+=i.length,i}function s(){for(var n=!1,u,r,e,i={},h,v,s,l,y,a=0;a<f.length;a++)h=f[a],v=h[h.length-1],s=h.substring(0,h.length-1),l=parseInt(s,10),y=parseFloat(s),at.test(s)&&v==="w"?((u||r)&&(n=!0),l===0?n=!0:u=l):ui.test(s)&&v==="x"?((u||r||e)&&(n=!0),y<0?n=!0:r=y):at.test(s)&&v==="h"?((e||r)&&(n=!0),l===0?n=!0:e=l):n=!0;n||(i.url=o,u&&(i.w=u),r&&(i.d=r),e&&(i.h=e),e||r||u||(i.d=1),i.d===1&&(t.has1x=!0),i.set=t,c.push(i))}function a(){for(h(ni),i="",u="in descriptor";;){if(r=n.charAt(e),u==="in descriptor")if(b(r))i&&(f.push(i),i="",u="after descriptor");else{if(r===","){e+=1;i&&f.push(i);s();return}if(r==="(")i=i+r,u="in parens";else{if(r===""){i&&f.push(i);s();return}i=i+r}}else if(u==="in parens")if(r===")")i=i+r,u="in descriptor";else{if(r===""){f.push(i);s();return}i=i+r}else if(u==="after descriptor"&&!b(r)){if(r===""){s();return}u="in descriptor";e-=1}e+=1}}for(var l=n.length,o,f,i,u,r,e=0,c=[];;){if(h(ti),e>=l)return c;o=h(ii);f=[];o.slice(-1)===","?(o=o.replace(ri,""),s()):a()}}function vi(n){function c(n){function f(){r&&(u.push(r),r="")}function h(){u[0]&&(s.push(u),u=[])}for(var i,r="",u=[],s=[],e=0,t=0,o=!1;;){if(i=n.charAt(t),i==="")return f(),h(),s;if(o)if(i==="*"&&n[t+1]==="/"){o=!1;t+=2;f();continue}else{t+=1;continue}else if(b(i))if(n.charAt(t-1)&&b(n.charAt(t-1))||!r){t+=1;continue}else if(e===0){f();t+=1;continue}else i=" ";else if(i==="(")e+=1;else if(i===")")e-=1;else if(i===","){f();h();t+=1;continue}else if(i==="/"&&n.charAt(t+1)==="*"){o=!0;t+=2;continue}r=r+i;t+=1}}function l(n){return s.test(n)&&parseFloat(n)>=0?!0:h.test(n)?!0:n==="0"||n==="-0"||n==="+0"?!0:!1}var s=/^(?:[+-]?[0-9]+|[0-9]*\.[0-9]+)(?:[eE][+-]?[0-9]+)?(?:ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmin|vmax|vw)$/i,h=/^calc\((?:[0-9a-z \.\+\-\*\/\(\)]+)\)$/i,i,u,o,t,f,e;for(u=c(n),o=u.length,i=0;i<o;i++){if(t=u[i],f=t[t.length-1],l(f))e=f,t.pop();else continue;if(t.length===0)return e;if(t=t.join(" "),r.matchesMedia(t))return e}return"100vw"}t.createElement("picture");var wt,c,et,v,r={},k=!1,l=function(){},s=t.createElement("img"),d=s.getAttribute,ot=s.setAttribute,st=s.removeAttribute,e=t.documentElement,o={},y={algorithm:""},g="data-pfsrc",ht=g+"set",nt=navigator.userAgent,bt=/rident/.test(nt)||/ecko/.test(nt)&&nt.match(/rv\:(\d+)/)&&RegExp.$1>35,tt="currentSrc",kt=/\s+\+?\d+(e\d+)?w/,dt=/(\([^)]+\))?\s*(.+)/,it=n.picturefillCFG,gt="position:absolute;left:0;visibility:hidden;display:block;padding:0;border:none;font-size:1em;width:1em;overflow:hidden;clip:rect(0px, 0px, 0px, 0px)",ct="font-size:100%!important;",p=!0,h={},w={},a=n.devicePixelRatio,u={px:1,"in":96},lt=t.createElement("a"),rt=!1,ni=/^[ \t\n\r\u000c]+/,ti=/^[, \t\n\r\u000c]+/,ii=/^[^ \t\n\r\u000c]+/,ri=/[,]+$/,at=/^\d+$/,ui=/^-?(?:[0-9]+|[0-9]*\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/,vt=function(n,t,i,r){n.addEventListener?n.addEventListener(t,i,r||!1):n.attachEvent&&n.attachEvent("on"+t,i)},ut=function(n){var t={};return function(i){return i in t||(t[i]=n(i)),t[i]}};var yt=function(){var n=/^([\d\.]+)(em|vw|px)$/,t=function(){for(var n=arguments,t=0,i=n[0];++t in n;)i=i.replace(n[t],n[++t]);return i},i=ut(function(n){return"return "+t((n||"").toLowerCase(),/\band\b/g,"&&",/,/g,"||",/min-([a-z-\s]+):/g,"e.$1>=",/max-([a-z-\s]+):/g,"e.$1<=",/calc([^)]+)/g,"($1)",/(\d+[\.]*[\d]*)([a-z]+)/g,"($1 * e.$2)",/^(?!(e.[a-z]|[0-9\.&=|><\+\-\*\(\)\/])).*/ig,"")+";"});return function(t,r){var f;if(!(t in h))if(h[t]=!1,r&&(f=t.match(n)))h[t]=f[1]*u[f[2]];else try{h[t]=new Function("e",i(t))(u)}catch(e){}return h[t]}}(),ft=function(n,t){return n.w?(n.cWidth=r.calcListLength(t||"100vw"),n.res=n.w/n.cWidth):n.res=n.d,n},f=function(n){if(k){var f,u,e,i=n||{};if(i.elements&&i.elements.nodeType===1&&(i.elements.nodeName.toUpperCase()==="IMG"?i.elements=[i.elements]:(i.context=i.elements,i.elements=null)),f=i.elements||r.qsa(i.context||t,i.reevaluate||i.reselect?r.sel:r.selShort),e=f.length){for(r.setupRun(i),rt=!0,u=0;u<e;u++)r.fillImg(f[u],i);r.teardownRun(i)}}};for(wt=n.console&&console.warn?function(n){console.warn(n)}:l,(tt in s)||(tt="src"),o["image/jpeg"]=!0,o["image/gif"]=!0,o["image/png"]=!0,o["image/svg+xml"]=t.implementation.hasFeature("https://www.w3.org/TR/SVG11/feature#Image","1.1"),r.ns=("pf"+(new Date).getTime()).substr(0,9),r.supSrcset=("srcset"in s),r.supSizes=("sizes"in s),r.supPicture=!!n.HTMLPictureElement,r.supSrcset&&r.supPicture&&!r.supSizes&&function(n){s.srcset="data:,a";n.src="data:,a";r.supSrcset=s.complete===n.complete;r.supPicture=r.supSrcset&&r.supPicture}(t.createElement("img")),r.supSrcset&&!r.supSizes?function(){var i="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",n=t.createElement("img"),u=function(){var t=n.width;t===2&&(r.supSizes=!0);et=r.supSrcset&&!r.supSizes;k=!0;setTimeout(f)};n.onload=u;n.onerror=u;n.setAttribute("sizes","9px");n.srcset=i+" 1w,data:image/gif;base64,R0lGODlhAgABAPAAAP///wAAACH5BAAAAAAALAAAAAACAAEAAAICBAoAOw== 9w";n.src=i}():k=!0,r.selShort="picture>img,img[srcset]",r.sel=r.selShort,r.cfg=y,r.DPR=a||1,r.u=u,r.types=o,r.setSize=l,r.makeUrl=ut(function(n){return lt.href=n,lt.href}),r.qsa=function(n,t){return"querySelector"in n?n.querySelectorAll(t):[]},r.matchesMedia=function(){return r.matchesMedia=n.matchMedia&&(matchMedia("(min-width: 0.1em)")||{}).matches?function(n){return!n||matchMedia(n).matches}:r.mMQ,r.matchesMedia.apply(this,arguments)},r.mMQ=function(n){return n?yt(n):!0},r.calcLength=function(n){var t=yt(n,!0)||!1;return t<0&&(t=!1),t},r.supportsType=function(n){return n?o[n]:!0},r.parseSize=ut(function(n){var t=(n||"").match(dt);return{media:t&&t[1],length:t&&t[2]}}),r.parseSet=function(n){return n.cands||(n.cands=ai(n.srcset,n)),n.cands},r.getEmValue=function(){var n;if(!c&&(n=t.body)){var i=t.createElement("div"),r=e.style.cssText,u=n.style.cssText;i.style.cssText=gt;e.style.cssText=ct;n.style.cssText=ct;n.appendChild(i);c=i.offsetWidth;n.removeChild(i);c=parseFloat(c,10);e.style.cssText=r;n.style.cssText=u}return c||16},r.calcListLength=function(n){if(!(n in w)||y.uT){var t=r.calcLength(vi(n));w[n]=t?t:u.width}return w[n]},r.setRes=function(n){var t,i,u;if(n)for(t=r.parseSet(n),i=0,u=t.length;i<u;i++)ft(t[i],n.sizes);return t},r.setRes.res=ft,r.applySetCandidate=function(n,t){if(n.length){var f,e,o,l,i,s,u,a,v,h=t[r.ns],c=r.DPR;if(s=h.curSrc||t[tt],u=h.curCan||ci(t,s,n[0].set),u&&u.set===n[0].set&&(v=bt&&!t.complete&&u.res-.1>c,v||(u.cached=!0,u.res>=c&&(i=u))),!i)for(n.sort(hi),l=n.length,i=n[l-1],e=0;e<l;e++)if(f=n[e],f.res>=c){o=e-1;i=n[o]&&(v||s!==r.makeUrl(f.url))&&oi(n[o].res,f.res,c,n[o].cached)?n[o]:f;break}i&&(a=r.makeUrl(i.url),h.curSrc=a,h.curCan=i,a!==s&&r.setSrc(t,i),r.setSize(t))}},r.setSrc=function(n,t){var i;n.src=t.url;t.set.type==="image/svg+xml"&&(i=n.style.width,n.style.width=n.offsetWidth+1+"px",n.offsetWidth+1&&(n.style.width=i))},r.getSet=function(n){for(var t,u,f=!1,e=n[r.ns].sets,i=0;i<e.length&&!f;i++)if(t=e[i],t.srcset&&r.matchesMedia(t.media)&&(u=r.supportsType(t.type))){u==="pending"&&(t=u);f=t;break}return f},r.parseSets=function(n,t,u){var o,e,s,h,c=t&&t.nodeName.toUpperCase()==="PICTURE",f=n[r.ns];(f.src===i||u.src)&&(f.src=d.call(n,"src"),f.src?ot.call(n,g,f.src):st.call(n,g));(f.srcset===i||u.srcset||!r.supSrcset||n.srcset)&&(o=d.call(n,"srcset"),f.srcset=o,h=!0);f.sets=[];c&&(f.pic=!0,li(t,f.sets));f.srcset?(e={srcset:f.srcset,sizes:d.call(n,"sizes")},f.sets.push(e),s=(et||f.src)&&kt.test(f.srcset||""),s||!f.src||pt(f.src,e)||e.has1x||(e.srcset+=", "+f.src,e.cands.push({url:f.src,d:1,set:e}))):f.src&&f.sets.push({srcset:f.src,sizes:null});f.curCan=null;f.curSrc=i;f.supported=!(c||e&&!r.supSrcset||s&&!r.supSizes);h&&r.supSrcset&&!f.supported&&(o?(ot.call(n,ht,o),n.srcset=""):st.call(n,ht));f.supported&&!f.srcset&&(!f.src&&n.src||n.src!==r.makeUrl(f.src))&&(f.src===null?n.removeAttribute("src"):n.src=f.src);f.parsed=!0},r.fillImg=function(n,t){var i,u=t.reselect||t.reevaluate;(n[r.ns]||(n[r.ns]={}),i=n[r.ns],u||i.evaled!==v)&&((!i.parsed||t.reevaluate)&&r.parseSets(n,n.parentNode,t),i.supported?i.evaled=v:si(n))},r.setupRun=function(){(!rt||p||a!==n.devicePixelRatio)&&ei()},r.supPicture?(f=l,r.fillImg=l):function(){var i,h=n.attachEvent?/d$|^c/:/d$|^c|^i/,f=function(){var n=t.readyState||"";o=setTimeout(f,n==="loading"?200:999);t.body&&(r.fillImgs(),i=i||h.test(n),i&&clearTimeout(o))},o=setTimeout(f,t.body?9:99),c=function(n,t){var i,r,u=function(){var f=new Date-r;f<t?i=setTimeout(u,t-f):(i=null,n())};return function(){r=new Date;i||(i=setTimeout(u,t))}},s=e.clientHeight,l=function(){p=Math.max(n.innerWidth||0,e.clientWidth)!==u.width||e.clientHeight!==s;s=e.clientHeight;p&&r.fillImgs()};vt(n,"resize",c(l,99));vt(t,"readystatechange",f)}(),r.picturefill=f,r.fillImgs=f,r.teardownRun=l,f._=r,n.picturefillCFG={pf:r,push:function(n){var t=n.shift();typeof r[t]=="function"?r[t].apply(r,n):(y[t]=n[0],rt&&r.fillImgs({reselect:!0}))}};it&&it.length;)n.picturefillCFG.push(it.shift());n.picturefill=f;typeof module=="object"&&typeof module.exports=="object"?module.exports=f:typeof define=="function"&&define.amd&&define("picturefill",function(){return f});r.supPicture||(o["image/webp"]=fi("image/webp","data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA=="))}(window,document);
//# sourceMappingURL=picturefill.min.js.map
;
/*!
  hey, [be]Lazy.js - v1.8.2 - 2016.10.25
  A fast, small and dependency free lazy load script (https://github.com/dinbror/blazy)
  (c) Bjoern Klinggaard - @bklinggaard - https://dinbror.dk/blazy
*/
  (function(q,m){"function"===typeof define&&define.amd?define(m):"object"===typeof exports?module.exports=m():q.Blazy=m()})(this,function(){function q(b){var c=b._util;c.elements=E(b.options);c.count=c.elements.length;c.destroyed&&(c.destroyed=!1,b.options.container&&l(b.options.container,function(a){n(a,"scroll",c.validateT)}),n(window,"resize",c.saveViewportOffsetT),n(window,"resize",c.validateT),n(window,"scroll",c.validateT));m(b)}function m(b){for(var c=b._util,a=0;a<c.count;a++){var d=c.elements[a],e;a:{var g=d;e=b.options;var p=g.getBoundingClientRect();if(e.container&&y&&(g=g.closest(e.containerClass))){g=g.getBoundingClientRect();e=r(g,f)?r(p,{top:g.top-e.offset,right:g.right+e.offset,bottom:g.bottom+e.offset,left:g.left-e.offset}):!1;break a}e=r(p,f)}if(e||t(d,b.options.successClass))b.load(d),c.elements.splice(a,1),c.count--,a--}0===c.count&&b.destroy()}function r(b,c){return b.right>=c.left&&b.bottom>=c.top&&b.left<=c.right&&b.top<=c.bottom}function z(b,c,a){if(!t(b,a.successClass)&&(c||a.loadInvisible||0<b.offsetWidth&&0<b.offsetHeight))if(c=b.getAttribute(u)||b.getAttribute(a.src)){c=c.split(a.separator);var d=c[A&&1<c.length?1:0],e=b.getAttribute(a.srcset),g="img"===b.nodeName.toLowerCase(),p=(c=b.parentNode)&&"picture"===c.nodeName.toLowerCase();if(g||void 0===b.src){var h=new Image,w=function(){a.error&&a.error(b,"invalid");v(b,a.errorClass);k(h,"error",w);k(h,"load",f)},f=function(){g?p||B(b,d,e):b.style.backgroundImage='url("'+d+'")';x(b,a);k(h,"load",f);k(h,"error",w)};p&&(h=b,l(c.getElementsByTagName("source"),function(b){var c=a.srcset,e=b.getAttribute(c);e&&(b.setAttribute("srcset",e),b.removeAttribute(c))}));n(h,"error",w);n(h,"load",f);B(h,d,e)}else b.src=d,x(b,a)}else"video"===b.nodeName.toLowerCase()?(l(b.getElementsByTagName("source"),function(b){var c=a.src,e=b.getAttribute(c);e&&(b.setAttribute("src",e),b.removeAttribute(c))}),b.load(),x(b,a)):(a.error&&a.error(b,"missing"),v(b,a.errorClass))}function x(b,c){v(b,c.successClass);c.success&&c.success(b);b.removeAttribute(c.src);b.removeAttribute(c.srcset);l(c.breakpoints,function(a){b.removeAttribute(a.src)})}function B(b,c,a){a&&b.setAttribute("srcset",a);b.src=c}function t(b,c){return-1!==(" "+b.className+" ").indexOf(" "+c+" ")}function v(b,c){t(b,c)||(b.className+=" "+c)}function E(b){var c=[];b=b.root.querySelectorAll(b.selector);for(var a=b.length;a--;c.unshift(b[a]));return c}function C(b){f.bottom=(window.innerHeight||document.documentElement.clientHeight)+b;f.right=(window.innerWidth||document.documentElement.clientWidth)+b}function n(b,c,a){b.attachEvent?b.attachEvent&&b.attachEvent("on"+c,a):b.addEventListener(c,a,{capture:!1,passive:!0})}function k(b,c,a){b.detachEvent?b.detachEvent&&b.detachEvent("on"+c,a):b.removeEventListener(c,a,{capture:!1,passive:!0})}function l(b,c){if(b&&c)for(var a=b.length,d=0;d<a&&!1!==c(b[d],d);d++);}function D(b,c,a){var d=0;return function(){var e=+new Date;e-d<c||(d=e,b.apply(a,arguments))}}var u,f,A,y;return function(b){if(!document.querySelectorAll){var c=document.createStyleSheet();document.querySelectorAll=function(a,b,d,h,f){f=document.all;b=[];a=a.replace(/\[for\b/gi,"[htmlFor").split(",");for(d=a.length;d--;){c.addRule(a[d],"k:v");for(h=f.length;h--;)f[h].currentStyle.k&&b.push(f[h]);c.removeRule(0)}return b}}var a=this,d=a._util={};d.elements=[];d.destroyed=!0;a.options=b||{};a.options.error=a.options.error||!1;a.options.offset=a.options.offset||100;a.options.root=a.options.root||document;a.options.success=a.options.success||!1;a.options.selector=a.options.selector||".b-lazy";a.options.separator=a.options.separator||"|";a.options.containerClass=a.options.container;a.options.container=a.options.containerClass?document.querySelectorAll(a.options.containerClass):!1;a.options.errorClass=a.options.errorClass||"b-error";a.options.breakpoints=a.options.breakpoints||!1;a.options.loadInvisible=a.options.loadInvisible||!1;a.options.successClass=a.options.successClass||"b-loaded";a.options.validateDelay=a.options.validateDelay||25;a.options.saveViewportOffsetDelay=a.options.saveViewportOffsetDelay||50;a.options.srcset=a.options.srcset||"data-srcset";a.options.src=u=a.options.src||"data-src";y=Element.prototype.closest;A=1<window.devicePixelRatio;f={};f.top=0-a.options.offset;f.left=0-a.options.offset;a.revalidate=function(){q(a)};a.load=function(a,b){var c=this.options;void 0===a.length?z(a,b,c):l(a,function(a){z(a,b,c)})};a.destroy=function(){var a=this._util;this.options.container&&l(this.options.container,function(b){k(b,"scroll",a.validateT)});k(window,"scroll",a.validateT);k(window,"resize",a.validateT);k(window,"resize",a.saveViewportOffsetT);a.count=0;a.elements.length=0;a.destroyed=!0};d.validateT=D(function(){m(a)},a.options.validateDelay,a);d.saveViewportOffsetT=D(function(){C(a.options.offset)},a.options.saveViewportOffsetDelay,a);C(a.options.offset);l(a.options.breakpoints,function(a){if(a.width>=window.screen.width)return u=a.src,!1});setTimeout(function(){q(a)})}});;
/***********************************************************/
/* marketing.army-reserve-centre-search.js                 */
/***********************************************************/

var marketing = marketing ? marketing : {};

(function ($) {
    $.extend(marketing,
        {
            reserveCentre: {
                nationalCentresLoaded: false,

                // Loads national centre data for army reserve centres. 
                // contentContainerSelector is the jQuery selector where we're going to put results on success
                loadNationalCentres: function (contentContainerSelector) {
                    if (this.nationalCentresLoaded) {
                        return;
                    }

                    $.ajax({
                        type: 'POST',
                        contentType: 'application/json; charset=utf-8',
                        url: '/api/sitecore/armyreservecentresearch/getNationalUnits',
                        cache: false,
                        error: function (e) {
                            console.log('Error!', e);
                        }
                    }).done(function (results) {
                        marketing.reserveCentre.nationalCentresLoaded = true;
                        $(contentContainerSelector).append(results);
                    });
                }
            }
        });
}(jQuery));;
var marketing = marketing ? marketing : {};

(function ($) {
    $.extend(marketing,
        {
            basefeature: {

                selectedFilters: [],

                initFilters: function() {

                    var selector = new Selectr('.filter-bar', {
                        searchable: false,
                        multiple: true,
                        nativeDropdown: true
                    });
                    
                    selector.on('selectr.select', function (o) {
                        marketing.basefeature.applyFilters($(o).html(), "");
                    });

                    selector.on('selectr.deselect', function (o) {
                        marketing.basefeature.applyFilters("", $(o).html());
                    });

                    marketing.basefeature.setUrlTagFilters(selector);
                },

                setUrlTagFilters: function(selector){
                    var urlTags = cp.getUrlParameter("tags");
                    if (urlTags === "") {
                        return;
                    }

                    var urlTagList = urlTags.split("|");
                    for (var o = 0; o < urlTagList.length; o++)
                    {
                        var urlTag = urlTagList[o];
                        for (var a = 0; a < selector.items.length; a++) {
                            if (selector.items[a].innerText === urlTag) {
                                selector.select(a);
                            }
                        }
                    }
                },

                applyFilters: function (selectedFilterValue, deselectedFilterValue) {
                    if ((selectedFilterValue === "" || selectedFilterValue === undefined)
                        && (deselectedFilterValue === "" || deselectedFilterValue === undefined)) {
                        return;
                    }

                    if (selectedFilterValue !== "" && selectedFilterValue !== undefined) {

                        if ($.inArray(selectedFilterValue, marketing.basefeature.selectedFilters) === -1) {
                            marketing.basefeature.selectedFilters.push(selectedFilterValue);
                        }
                    }

                    if (deselectedFilterValue !== "" && deselectedFilterValue !== undefined) {
                        // remove from filter list
                        var index = marketing.basefeature.selectedFilters.indexOf(deselectedFilterValue);
                        if (index !== -1) {
                            marketing.basefeature.selectedFilters.splice(index, 1);
                        }
                    }

                    $("#filteredView").remove();

                    if (marketing.basefeature.selectedFilters.length === 0) {
                        $(".card").parent().parent().show();        // show all flex-grid items
                        history.pushState(null, null, location.origin + location.pathname);
                    } else {
                        $(".card").parent().parent().hide();
                        // add new flex-grid div to the page and copy all the selected cards into it..
                        $(".card:first").parent().parent().parent().append("<div id='filteredView' class='flex-grid -three margin-top'></div>");

                        var qs = "?tags=";
                        for (var a = 0; a < marketing.basefeature.selectedFilters.length; a++) {
                            qs = qs += marketing.basefeature.selectedFilters[a] + "|";
                            $(".card[data-tags*='" + marketing.basefeature.selectedFilters[a] + "']").parent().clone().appendTo("#filteredView");
                        }

                        history.pushState(null, null, location.origin + location.pathname + qs.substr(0, qs.length-1));
                    }
                }
            }
        })
}(jQuery));;
var marketing = marketing ? marketing : {};

(function ($) {
    $.extend(marketing,
        {
            baseparentstudent: {
                init: function () {
                    this.initEvents();
                },

                _redirectToResults: function (geolocatedData) {
                    var resultPage = $("input.header__search--bar").data("resultpage"),
                        lat = geolocatedData.results[0].position.lat,
                        lng = geolocatedData.results[0].position.lon;

                    location.href = resultPage + "?lat=" + lat + "&lng=" + lng;
                },

                initEvents: function () {
                    this.initEventSearchEvents();
                    this.initVideoView();
                },

                initFAQSearch: function () {
                    $(".faq-search input.search__box").on("keydown", function (e) {
                        location.href = location.origin + location.pathname + "?q="
                    });
                },

                initVideoView: function () {
                    $(document).on("click", ".video-container__link a", function (e) {
                        e.preventDefault();
                        $(this).parent().parent().addClass("video-active");
                        $(this).parent().parent().find("iframe").css("display", "block").removeClass("video-container__iframe");
                    });
                },

                initEventSearchEvents: function () {
                    $("input.header__search--bar").on("keydown", function (e) {
                        var code = e.key;
                        if (code === "Enter") {
                            e.preventDefault();
                            var locationValue = $(marketing.mapSearch.locationInputSelector).val();
                            marketing.geolocation.geolocatePosition(marketing.baseparentstudent._redirectToResults, locationValue);
                        }
                    });
                },

                initEventMap: function (lat, lng) {
                    marketing.mapSearch.initDetail(lat, lng, "100%");

                    var markerPins = [];
                    markerPins.push({ lat: lat, lng: lng });

                    marketing.mapSearch.mapLat = lat;
                    marketing.mapSearch.mapLng = lng;
                    marketing.map.addPinsByArray(markerPins);

                    marketing.mapSearch.setMapDisplay();
                }
            }
        })
}(jQuery));;
var marketing = marketing ? marketing : {};

(function ($) {
    $.extend(marketing,
        {
            baseparentstudentnews: {
                urlEndpoint: "",
                newsPageNumberStorageKey: "recce-newspagenumber",
                pageNumber: 1,
                selectedFilters: [],
                i: "",
                newsList: [],

                initDetail: function () {
                    $(document).on("click", ".back-to-news", function (e) {

                        e.preventDefault();

                        var pageNumber = sessionStorage.getItem(marketing.baseparentstudentnews.newsPageNumberStorageKey);
                        if (pageNumber === "") {
                            return;
                        }

                        var url = location.origin + $(this).data("url") + "?pg=" + pageNumber;
                        location.href = url;
                    });
                },

                initBrowser: function (endpoint, i) {
                    this.initLoadMore();
                    marketing.baseparentstudentnews.urlEndpoint = endpoint;
                    marketing.baseparentstudentnews.i = i;

                    var pageNumber = parseInt(cp.getUrlParameter('pg'));
                    if (pageNumber > 200) {
                        pageNumber = 200;
                    }

                    if (!isNaN(pageNumber)) {
                        for (var count = 2; count <= pageNumber; count++) {
                            marketing.baseparentstudentnews.pageNumber = count;
                            marketing.baseparentstudentnews.updateBrowser(true);
                        }
                    }
                },

                initLoadMore: function () {
                    $(document).on("click", ".newsbrowser--showmore a", function () {
                        marketing.baseparentstudentnews.pageNumber++;
                        marketing.baseparentstudentnews.updateBrowser(true);
                        sessionStorage.setItem(marketing.baseparentstudentnews.newsPageNumberStorageKey,
                            marketing.baseparentstudentnews.pageNumber);
                    });
                },

                updateBrowser: function (isAppend) {
                    var endpoint = marketing.baseparentstudentnews.urlEndpoint
                       + "?p=" + marketing.baseparentstudentnews.pageNumber
                       + "&i=" + marketing.baseparentstudentnews.i
                       + "&f=" + marketing.baseparentstudentnews.selectedFilters.join(",");

                    var itemSelector = ".newsbrowser";

                    if (!isAppend) {
                        $(itemSelector).empty();
                    }
                    $(itemSelector).append("<div class='spinner'></div>");

                    $.ajax({
                        url: endpoint,
                        type: 'GET'
                    }).done(function (data) {
                        $(itemSelector).append(data);
                        $(itemSelector).parent().find(".spinner").remove();

                        var isMoreData = $(data).data("moreresults");
                        if (isMoreData === "False") {
                            $(".newsbrowser--showmore").css("display", "none");
                        } else {
                            $(".newsbrowser--showmore").css("display", "");
                        }
                    });

                    return endpoint;
                },

                applyBrowserFilters: function (selectedFilterValue, deselectedFilterValue) {
                    if ((selectedFilterValue === "" || selectedFilterValue === undefined)
                        && (deselectedFilterValue === "" || deselectedFilterValue === undefined)) {
                        return;
                    }

                    if (selectedFilterValue !== "" && selectedFilterValue !== undefined) {
                        marketing.baseparentstudentnews.selectedFilters.push(selectedFilterValue);
                    }

                    if (deselectedFilterValue !== "" && deselectedFilterValue !== undefined) {
                        // remove from filter list
                        var index = marketing.baseparentstudentnews.selectedFilters.indexOf(deselectedFilterValue);
                        if (index !== -1) {
                            marketing.baseparentstudentnews.selectedFilters.splice(index, 1);
                        }
                    }

                    // Make sure we reset the page number otherwise we'll end up skipping the first few content items on reload:
                    marketing.baseparentstudentnews.pageNumber = 1;

                    return this.updateBrowser(false);
                }
            }
        })
}(jQuery));;
var marketing = marketing ? marketing : {};

(function ($) {
    $.extend(marketing,
        {
            baseducation: {
                dataEndpoint: "/api/sitecore/baselessonfinder/updatelessonfinder",
                pageNumber: 0,
                resultText: "",
                sessionStorageUrlKey: "lessonFinderUrl",
                endpoint: "/api/sitecore/baselessonratings/postrating",
                alreadyRated: false,

                initLessonFinder: function (vanillaResultText) {
                    this.resultText = vanillaResultText;
                    this.initLessonFinderEvents();
                    this.initLessonFinderFilters();
                    this.fixTagPositioning();
                },

                initLessonDetail: function () {
                    $(".lesson-library-back").on("click", function (e) {
                        e.preventDefault();
                        var url = sessionStorage.getItem(marketing.baseducation.sessionStorageUrlKey);
                        if (url !== null) {
                            location.href = url;
                        } else {
                            location.href = $(this).attr("href");
                        }
                    });

                    this.fixTagPositioning();
                    this.initRelatedLessons();
                },

                initLessonRater: function () {
                    $(".fa-star-o").on("click", function () {
                        if (marketing.baseducation.alreadyRated) {
                            alert("You have already rated this lesson");
                            return;
                        }

                        var chosenRating = $(this).data("value"),
                            data = "{'lessonId': '" + $(".lesson-rater").data("lessonid") + "', 'rating': '" + chosenRating + "' }";

                        $.ajax({
                            type: 'POST',
                            contentType: 'application/json; charset=utf-8;',
                            url: marketing.baseducation.endpoint,
                            data: data,
                            cache: false,
                            error: function (e) {
                                console.log('Error!', e);
                                alert("We could not register your rating right now. Please try again later");
                            }
                        }).done(function (results) {
                            for (var a = 0; a < chosenRating; a++) {
                                $($(".rating-star")[a])
                                    .removeClass("fa-star-o")
                                    .addClass("fa-star");
                            }
                            marketing.baseducation.alreadyRated = true;
                        });
                    });
                },

                initRelatedLessons: function () {
                    var adjustRelatedLessonView = function () {
                        var cardDisplayCount = 0,
                            lessonCards = $(".related-lessons div.lesson-card").parent();

                        if (window.matchMedia("(max-width: " + marketing.constants.breakpoints.max_Desktop + "px)").matches) {
                            cardDisplayCount = 2;
                        }

                        if (window.matchMedia("(max-width: " + marketing.constants.breakpoints.min_mobile + "px)").matches) {
                            // display all:
                            (lessonCards).each(function () { $(this).removeClass("hidden"); })
                            return;
                        }

                        if (window.matchMedia("(min-width: " + parseInt(marketing.constants.breakpoints.max_Desktop + 1) + "px)").matches) {
                            (lessonCards).each(function () { $(this).removeClass("hidden"); })
                            cardDisplayCount = 3;
                        }
                        
                        if (lessonCards.length > cardDisplayCount) {
                            for (var a = cardDisplayCount; a < lessonCards.length; a++) {
                                $(lessonCards[a]).addClass("hidden");
                            }
                        }
                    }

                    $(window).resize(debounce(adjustRelatedLessonView, 100));
                    adjustRelatedLessonView();
                },

                initLessonFinderEvents: function () {
                    this.initClearFilter();

                    $(".lesson-finder-load-more").on("click", function (e) {
                        marketing.baseducation.pageNumber++;
                        marketing.baseducation.updateLessonFinderResults(true);
                    });

                    $(".lesson-sortopts-option").on("click", function (e) {
                        if ($(this).hasClass("active")) {
                            return;
                        }

                        $(".lesson-sortopts-option").removeClass("active");
                        $(this).addClass("active");

                        marketing.baseducation.resetPageNumber();
                        marketing.baseducation.updateLessonFinderResults();
                    });

                    $(".subject-filter, .age-group-filter").on("change", function () {
                        if ($(".subject-filter option:selected").val() === ""
                            && $(".age-group-filter option:selected").val() === "") {
                            $(".clear-filters--link").addClass("hidden");
                        } else {
                            $(".clear-filters--link").removeClass("hidden");
                        }

                        marketing.baseducation.resetPageNumber();
                        marketing.baseducation.updateLessonFinderResults();
                    });
                },

                initClearFilter: function () {
                    $(".clear-filters--link").on("click", function () {
                        $(".clear-filters--link").addClass("hidden");
                        $(".subject-filter, .age-group-filter").val("");

                        marketing.baseducation.resetPageNumber();
                        marketing.baseducation.updateLessonFinderResults();
                    });
                },

                resetPageNumber: function () {
                    marketing.baseducation.pageNumber = 0;
                },

                initLessonFinderFilters: function () {
                    var subject = cp.getUrlParameter("sub"),
                        agerange = cp.getUrlParameter("age"),
                        sorting = cp.getUrlParameter("s");

                    if (subject !== "") {
                        $(".subject-filter").val(subject);
                        $(".clear-filters--link").removeClass("hidden");
                    }

                    if (agerange !== "") {
                        $(".age-group-filter").val(agerange);
                        $(".clear-filters--link").removeClass("hidden");
                    }

                    if (sorting !== "") {
                        $(".lesson-sortopts-option").removeClass("active");
                        $(".lesson-sortopts-option[data-sortby='" + sorting + "']").addClass("active");
                    }
                },

                updateLessonFinderResults: function (isAppend) {
                    var endpoint = marketing.baseducation.buildEndpoint(),
                        itemSelector = ".lesson-finder-results";

                    history.pushState(null, null, endpoint.browserUrl);

                    var containerHeight = $(itemSelector).height();
                    $(itemSelector).css("min-height", containerHeight);
                    if (!isAppend) {
                        $(itemSelector).empty();
                    }

                    $(itemSelector).append("<div class='spinner'></div>");


                    $.ajax({
                        url: endpoint.url,
                        type: 'GET'
                    })
                    .done(function (data) {
                        $(itemSelector).append(data);
                        $(itemSelector).parent().find(".spinner").remove();

                        var resultText = marketing.baseducation.resultText
                            .replace("{0}", $(data).data("totalpayloadrecordcount") + "/" + $(".finder-result-content").data("resultcount"));
                        var isMoreData = $(data).data("moreresults");

                        $(".lesson-finder-result-count").text(resultText);
                        $(itemSelector).css("min-height", 0);

                        if (isMoreData === "False") {
                            $(".lesson-finder-load-more").addClass("hidden");
                        } else {
                            $(".lesson-finder-load-more").removeClass("hidden");
                        }

                        sessionStorage.setItem(marketing.baseducation.sessionStorageUrlKey, endpoint.browserUrl);
                        marketing.baseducation.fixTagPositioning();
                        marketing.datalayer.satelliteTrackVirtualPage();
                    });
                },

                buildEndpoint: function () {
                    var url = marketing.baseducation.dataEndpoint,
                        subjectSelection = $(".subject-filter option:selected").val(),
                        ageSelection = $(".age-group-filter option:selected").val(),
                        sortSelection = $(".lesson-sortopts-option.active").data("sortby"),
                        endpointQuerystring = "page=" + marketing.baseducation.pageNumber,
                        browserQuerystring = "";

                    if (subjectSelection !== undefined) {
                        endpointQuerystring += "&sub=" + subjectSelection
                        browserQuerystring += "?sub=" + subjectSelection;
                    }

                    if (ageSelection !== undefined) {
                        endpointQuerystring += "&age=" + ageSelection;
                        browserQuerystring += (browserQuerystring === "" ? "?age=" : "&age=") + ageSelection;
                    }

                    endpointQuerystring += "&s=" + sortSelection;
                    browserQuerystring += (browserQuerystring === "" ? "?s=" + sortSelection : "&s=" + sortSelection);

                    url += (endpointQuerystring !== "" ? "?" + endpointQuerystring : "");

                    return { url: url, browserUrl: location.pathname + (browserQuerystring !== "" ? browserQuerystring : "") };
                },

                fixTagPositioning: function (html) {
                    marketing.baseducation._fixTagPositioningAtLevel(1, html);
                    marketing.baseducation._fixTagPositioningAtLevel(2, html);
                },

                _fixTagPositioningAtLevel: function (level, html) {
                    var dom = html === undefined ? document : html;

                    $(dom).find(".lesson-card__tags .lesson-card__tag").each(function () {
                        var top = $(this).position().top;
                        if (top > 0 && level == 2) {
                            $(this).prev().remove();
                            $(this).text("+" + level + " MORE");
                        }
                    });
                }
            }
        })
}(jQuery));;
/***********************************************************/
/* marketing.constants.js                                  */
/*                                                         */
/* Commonly used front-end constants file                  */
/***********************************************************/

var marketing = marketing ? marketing : {};

(function ($) {
    $.extend(marketing,
        {
            constants: {
                breakpoints: {
                    // These should match the css breakpoints
                    min_mobileSmall: 320,
                    min_mobileMid: 420,
                    min_mobile: 600,
                    min_tablet: 768,
                    min_desktop: 992,
                    min_desktopWide: 1200,
                    max_MobileMid: 419,
                    max_Mobile: 599,
                    max_Tablet: 767,
                    max_Desktop: 991,
                    max_DesktopWide: 1199
                },
                locationSearch: {
                    locationSearchBarSessionStorageKey: "locationSearch"
                },
                navigation: {
                    dynamicLinkSelectors: "h2, h3"
                },
                dataLayer: {
                    freeTextSearchCategory: "Free Text",
                    searchMethod: {
                        generic: "Generic",
                        location: "Location",
                        jobRole: "Job Role"
                    },
                    formStatus: {
                        saved: "Saved",
                        resumed: "Resumed",
                        completed: "Completed",
                        started: "Started",
                        cancelled: "Cancelled"
                    }
                }
            }
        })
}(jQuery));;
var marketing = marketing ? marketing : {};

(function ($) {
    $.extend(marketing,
        {
            contenthub: {
                urlEndpoint: "",
                pageNumber: 1,
                browserContentEnd: document.querySelector("#browser-content-end"),

                initBrowser: function (url) {
                    if (document.location.search.length) {
                        $(".clear-filter").removeClass("hidden");
                    }
                    marketing.contenthub.urlEndpoint = url;
                    this.initEvents();
                    this.initFilters();
                    this.initInfiniteScroll();
                },

                initInfiniteScroll: function () {
                    if (marketing.contenthub.browserContentEnd == null) {
                        return;
                    }

                    window.addEventListener('scroll', function (event) {
                        if (marketing.utility.isInViewport(marketing.contenthub.browserContentEnd)) {
                            marketing.contenthub.pageContentHub();
                        }
                    });

                    var resetTileClasses = function () {
                        marketing.contenthub.fixTileColumnClasses();
                    };

                    $(window).resize(debounce(resetTileClasses, 100));
                },

                initPlaylist: function () {
                    this.initPlaylistEvents();
                },

                initFilters: function () {
                    var categories = cp.getUrlParameter("c"),
                        type = cp.getUrlParameter("t");

                    if (categories !== "") {
                        var selectedCategories = categories.split(',');
                        for (var i = 0; i < selectedCategories.length; i++) {
                            $(".content-categories__filter[data-categorycode='" + selectedCategories[i] + "']").addClass("active");
                        }
                    }

                    $(".content-types__filter[data-typefilter='" + type + "']").addClass("active");
                },

                initPlaylistEvents: function () {
                    $(".playlist-controls .fa-angle-down, .playlist-controls .fa-angle-right").on("click", function () {
                        var playState = marketing.contenthub.getPlayState("down");

                        marketing.contenthub.showSlide(playState.newItemId, playState.currentItemId);
                        marketing.contenthub.updatePlayState(playState.newItemId);
                    });

                    $(".playlist-controls .fa-angle-up, .playlist-controls .fa-angle-left").on("click", function () {
                        var playState = marketing.contenthub.getPlayState("up");

                        marketing.contenthub.showSlide(playState.newItemId, playState.currentItemId);
                        marketing.contenthub.updatePlayState(playState.newItemId);
                    });
                },

                updatePlayState: function (newItemId) {
                    var selector = ".playlist-controls span[data-currentitemid]";
                    $(selector).data("currentitemid", newItemId);
                    $(selector).html(newItemId);
                },

                getPlayState: function (direction) {
                    var state = {
                        currentItemId: parseInt($(".playlist-controls span[data-currentitemid]").data("currentitemid")),
                        totalItemCount: parseInt($(".playlist-controls span[data-totalitemcount]").data("totalitemcount")),
                        newItemId: parseInt($(".playlist-controls span[data-currentitemid]").data("currentitemid"))
                    }

                    if (direction === "down") {
                        state.newItemId++;
                    } else {
                        state.newItemId--;
                    }

                    if (state.newItemId > state.totalItemCount) {
                        state.newItemId = 1
                    }

                    if (state.newItemId < 1) {
                        state.newItemId = state.totalItemCount;
                    }

                    return state;
                },

                showSlide: function (itemIdToShow, currentItemId) {
                    $("a[data-itemid='" + currentItemId + "']").hide();
                    $("a[data-itemid='" + itemIdToShow + "']").show("fade", 500);
                },

                initEvents: function () {
                    this.initClearFilter();
                    this.initFilterEvents();
                },

                initBacklinkIntercept: function () {
                    $("a[data-isbacklink]").on("click", function (e) {
                        e.preventDefault();
                        var data = sessionStorage.getItem('filteredContentUrl');
                        location.href = data;
                    });
                },

                initClearFilter: function () {
                    $(".clear-filter").on("click", function () {
                        $(".clear-filter").addClass("hidden");
                        $(".content-categories__filter, .content-types__filter").removeClass("active");
                       
                        marketing.contenthub.reloadContentHub();
                        marketing.datalayer.pushSatelliteEvent("conFilter", JSON.stringify({ "category": "content filter", "value": "", "updateType" : "clear filters" }));
                        marketing.datalayer.removeValues("page:contentFilter");
                    });
                },

                initFilterEvents: function () {
                    $(".content-categories__filter, .content-types__filter").on("click", function () {
                        if ($(this).hasClass("clear-filter")) {
                            return;
                        }

                        if ($(this).hasClass("content-categories__filter")) {
                            $(this).toggleClass("active");
                        }

                        if ($(this).hasClass("content-types__filter")) {
                            $(".content-types__filter").not(this).removeClass("active");
                            $(this).toggleClass("active");
                        }

                        var querystring = marketing.contenthub.reloadContentHub(),
                            activeContentFilterList = marketing.contenthub._getActiveContentFilterList();
                       
                        marketing.datalayer.pushValues("page", "contentFilter," + activeContentFilterList);
                        marketing.datalayer.pushSatelliteEvent("conFilter", JSON.stringify({ "category": "content filter", "value": $(this).text().trim(), "updateType" : "filter add"}));

                        $(".clear-filter").removeClass("hidden");
                        if (!$(".content-categories__filter").hasClass("active")
                            && !$(".content-types__filter").hasClass("active")) {
                                $(".clear-filter").addClass("hidden");
                        }
                    });
                },

                _getActiveContentFilterList: function () {
                    var activeContentFilterList = [];
                    $(".content-categories__filter.active").each(function () {
                        activeContentFilterList += $(this).data("categoryname") + "|";
                    });
                    $(".content-types__filter.active").each(function () {
                        activeContentFilterList += $(this).data("typefilter") + "|";
                    });

                    if (activeContentFilterList.endsWith("|")) {
                        activeContentFilterList = activeContentFilterList.substring(0, activeContentFilterList.length - 1);
                    }

                    return activeContentFilterList;
                },

                pageContentHub: function () {

                    var pagingFunction = debounce(function () {
                        // check we haven't reached end of results:
                        if ($("span[data-endofresults='true']").length > 0) {
                            return;
                        }

                        if (marketing.contenthub.urlEndpoint === undefined || marketing.contenthub.urlEndpoint === "") {
                            return;
                        }

                        marketing.contenthub.pageNumber++;

                        var urlData = marketing.contenthub.buildEndpointQueryAndBrowserUrl(),
                            itemSelector = ".browser-content-items";

                        sessionStorage.setItem("filteredContentUrl", urlData.browserUrl);

                        if ($(itemSelector).parent().find(".spinner").length === 0) {
                            $(itemSelector).parent().append("<div class='spinner'></div>");
                        }
                        
                        $("<div>").load(urlData.endpoint + " #data", function (html) {
                            $(itemSelector).append(html);
                            marketing.contenthub.fixTileColumnClasses();
                            $(itemSelector).parent().find(".spinner").remove();
                            marketing.datalayer.satelliteTrackVirtualPage();
                        });
                    }, 275);

                    pagingFunction();
                },

                // Fix tile classes on infinite content load. The issue is when we reload, the reload has no knowledge of prior loads so 
                // the classes could be out of sync. This method resyncs them and makes sure they're all in the order they should be.
                fixTileColumnClasses: function () {
                    var internalCount = 1,
                        countThreshold = 3;

                    // <= 1199px
                    if (window.matchMedia('(max-width: ' + marketing.constants.breakpoints.max_DesktopWide + 'px)').matches) {
                        countThreshold = 2;
                    }

                    $(".content-hub-tile").removeClass("col-1-tile").removeClass("col-2-tile").removeClass("col-3-tile")
                        .removeClass("coltwo-1-tile").removeClass("coltwo-2-tile").removeClass("coltwo-3-tile");

                    $(".content-hub-tile").each(function () {
                        $(this).addClass("col-" + internalCount + "-tile").addClass("coltwo-" + internalCount + "-tile");

                        if (internalCount === countThreshold) {
                            internalCount = 0;
                        }

                        internalCount++;
                    });
                },

                reloadContentHub: function () {
                    if (marketing.contenthub.urlEndpoint === undefined || marketing.contenthub.urlEndpoint === "") {
                        return;
                    }

                    // Make sure we reset the page number otherwise we'll end up skipping the first few content items on reload:
                    marketing.contenthub.pageNumber = 1;

                    var urlData = this.buildEndpointQueryAndBrowserUrl(),
                        itemSelector = ".browser-content-items";

                    history.pushState(null, null, urlData.browserUrl);

                    sessionStorage.setItem("filteredContentUrl", urlData.browserUrl);

                    $(itemSelector).empty();
                    $(itemSelector).append("<div class='spinner'></div>");

                    $(itemSelector).load(urlData.endpoint);

                    return urlData.querystring;
                },

                buildEndpointQueryAndBrowserUrl: function () {
                    var url = marketing.contenthub.urlEndpoint,
                        categorySelection = [],
                        typeSelection = [],
                        endpointQuerystring = "pageNumber=" +marketing.contenthub.pageNumber,
                        querystring = "",
                        multiParameter = false;

                    $(".content-categories__filter.active").each(function () {
                        categorySelection.push($(this).data("categorycode"));
                    });

                    $(".content-types__filter.active").each(function () {
                        typeSelection.push($(this).text());
                    });

                    if (categorySelection.length > 0) {

                        endpointQuerystring += "&c=" + categorySelection.join(",");
                        querystring += "?c=" + categorySelection.join(",");
                    }

                    if (typeSelection.length > 0) {
                        endpointQuerystring += "&t=" + typeSelection.join(",");
                        querystring += (querystring === "" ? "?t=" : "&t=") + typeSelection.join(",");
                    }

                    url += (endpointQuerystring !== "" ? "?" +endpointQuerystring: "");

                    return { endpoint: url, browserUrl: location.pathname + (querystring !== "" ? querystring : ""), querystring: querystring };
                }
            }
        })
}(jQuery));;
"use strict";

var marketing = marketing ? marketing : {};

(function ($) {
    $.extend(marketing,
        {
            datalayer: {
                scrollPercentStorageKey: "scrollPercent",
                previousPageNameStorageKey: "previousPageName",
                drsUserDataStorageKey: "drsUserData",
                startRoots: ["site", "page", "user", "interactions", "form", "search"],        // each newly added element must start in one of these root paths
                interactionType:
                {
                    "homepageBanner": { "contentBlock": "Marketing", "position": "Banner" },
                    "homepageGridColumn1": { "contentBlock": "GridItem", "position": "Component 1" },
                    "homepageGridColumn2": { "contentBlock": "GridItem", "position": "Component 2" },
                    "homepageGridColumn3": { "contentBlock": "GridItem", "position": "Component 3" },
                    "homepageFooterButton1": { "contentBlock": "Footer Buttons", "position": "Button 1" },
                    "homepageFooterButton2": { "contentBlock": "Footer Buttons", "position": "Button 2" },
                    "mainHeader": { "contentBlock": "Header", "position": "Main Header" },
                    "subHeader": { "contentBlock": "Header", "position": "Sub Header" },
                    "headerLogo": { "contentBlock": "Header", "position": "Logo" },
                    "footerHelpBrowseArmyRoles": { "contentBlock": "Footer", "position": "Help" },
                    "footerHelpGetInTouch": { "contentBlock": "Footer", "position": "Get in touch" },
                    "footerHelpMainArmySite": { "contentBlock": "Footer", "position": "Main Army Site" },
                    "roleDetailFooterButton1": { "contentBlock": "Footer Buttons", "position": "Button 1" },
                    "roleDetailFooterButton2": { "contentBlock": "Footer Buttons", "position": "Button 2" },
                    "contentHubFilter": { "contentBlock": "Content Filters", "position": "Header" },
                    "articleContentTag": { "contentBlock": "Content Hub", "position": "Header Text" },
                    "Locker Online": { "contentBlock": "Marketing", "position": "Banner" }
                },
                findingMethod: {
                    navigation: "Navigation",
                    search: "Search",
                    relatedContent: "Related Content",
                    relatedRoles: "Related Roles"
                },
                jobFindingMethodKey: "jobFindingMethod",
                contentFindingMethodKey: "contentFindingMethod",

                initMarketingDataLayer: function () {
                    var previousPageName = sessionStorage.getItem(this.previousPageNameStorageKey);
                    this.pushValues("page", "previousPageName," + previousPageName);
                    this.pushValues("page", "pathName," + location.pathname + location.search);

                    this._processNextPageInteractions();
                    this._initNextPageInteractionEvents();
                    this._initJobRoleFilterEvents();
                    this._initInternalRoleClick();
                    this._initTelephoneClick();
                    this._initFileDownloadEvents();
                    this.initMoxieEvents();

                    sessionStorage.setItem(this.previousPageNameStorageKey, digitalData.page.pageName);

                    this.calculateScrollAmount();
                },

                initCandidatePortalDataLayer: function () {
                    var previousPageName = sessionStorage.getItem(this.previousPageNameStorageKey);
                    this.pushValues("page", "previousPageName," + previousPageName);

                    this.pushValues("page", "pathName," + location.pathname + location.search);
                    this._processNextPageInteractions();
                    this._initFormErrorTracking();
                    this._initFormEventTracking();
                    this._initNextPageInteractionEvents();
                    this._initLoginEvents();
                    this._initDRSUserData();
                    this._initFileDownloadEvents();
                    this.initMoxieEvents();

                    sessionStorage.setItem(this.previousPageNameStorageKey, digitalData.page.pageName);
                },

                writeCandidateNextEvent: function () {
                    var nextEvent = $(".my-events:first .root-pad-x:first strong").text().trim();
                    this.pushValues("user", "eventNext," + nextEvent);
                },

                writeCandidateUnreadMessageCount: function () {
                    var unreadMessageCount = $("#messageLink .unread-count").text();
                    if (unreadMessageCount === "" || unreadMessageCount === undefined) {
                        unreadMessageCount = 0;
                    }

                    $.extend(true, digitalData, {
                        user: {
                            inboxUnread: unreadMessageCount
                        }
                    });
                },

                writeCandidatePortalFormData: function (code, name, stage, pageName, status) {
                    if (code === "" && name === "" && stage === "" && pageName === "" & status === "") {
                        return;
                    }

                    if (code === undefined && name === undefined && stage === undefined && pageName === undefined && status === undefined) {
                        return;
                    }

                    this.pushValues("form", "code," + code + ":name," + name + ":stage," + stage + ":pageName," + pageName + ":status," + status);
                },

                _initFileDownloadEvents: function () {
                    $(document).on("click", ".file-download", function () {
                        var documentName = $(this).data("filename");
                        marketing.datalayer.pushSatelliteEvent("downloadEvents", JSON.stringify({ "event": "Document", "name": documentName }));
                    });
                },

                _initLoginEvents: function () {
                    $("#headerMenu a[href$='logout']").on("click", function () {
                        marketing.datalayer.loginTracking(false);
                    });

                    var previousPage = digitalData.page.pagePrevious.trim();
                    var isLogin = previousPage.indexOf("/login", previousPage.length - "/login".length) !== -1;
                    if (isLogin) {
                        marketing.datalayer.loginTracking(true);
                    }
                },

                _initDRSUserData: function () {
                    var drsUserData = sessionStorage.getItem(marketing.datalayer.drsUserDataStorageKey);
                    if (drsUserData === "" || drsUserData === undefined || drsUserData === null) {
                        return;
                    }

                    marketing.datalayer.saveDRSUserData(drsUserData);
                },

                updatePasswordEvent: function () {
                    marketing.datalayer.pushSatelliteEvent("passEvent", JSON.stringify({ "event": "TRUE" }));
                },

                initMoxieEvents: function () {
                    if (window.GoMoxie === undefined) {
                        //Moxie not available
                        return;
                    }

                    window.addEventListener("GoMoxie:widget:chat:chatSessionStarted",
                        function (e) {
                            var timeStamp = new Date().toLocaleString("en-GB").replace(",", ""),
                                json = JSON.stringify({ 'status': 'start', 'chatID': e.detail.sessionId, 'timestamp': timeStamp });
                            marketing.datalayer.pushSatelliteEvent("chatStatus", json);
                        });

                    window.addEventListener("GoMoxie:widgetMinimized",
                        function (e) {
                            var timeStamp = new Date().toLocaleString("en-GB").replace(",", ""),
                                json = JSON.stringify({ 'status': 'minimized', 'chatID': e.detail.sessionId, 'timestamp': timeStamp });
                            marketing.datalayer.pushSatelliteEvent("chatStatus", json);
                        });

                    window.addEventListener("GoMoxie:widget:chat:chatSessionEnded",
                        function (e) {
                            var timeStamp = new Date().toLocaleString("en-GB").replace(",", ""),
                                json = JSON.stringify({ 'status': 'end', 'chatID': e.detail.sessionId, 'timestamp': timeStamp });
                            marketing.datalayer.pushSatelliteEvent("chatStatus", json);
                        });

                    window.addEventListener("GoMoxie:widget:chat:agentJoinedSession",
                        function (e) {
                            var timeStamp = new Date().toLocaleString("en-GB").replace(",", ""),
                                json = JSON.stringify({ 'agentStatus': 'joined', 'chatID': e.detail.sessionId, 'timestamp': timeStamp });
                            marketing.datalayer.pushSatelliteEvent("chatAgentStatus", json);
                        });

                    window.addEventListener("GoMoxie:widget:chat:agentLeftSession",
                        function (e) {
                            var timeStamp = new Date().toLocaleString("en-GB").replace(",", ""),
                                json = JSON.stringify({ 'agentStatus': 'left', 'chatID': e.detail.sessionId, 'timestamp': timeStamp });
                            marketing.datalayer.pushSatelliteEvent("chatAgentStatus", json);
                        });

                    window.addEventListener("GoMoxie:widget:chat:surveyLoaded",
                        function (e) {
                            var timeStamp = new Date().toLocaleString("en-GB").replace(",", ""),
                                json = JSON.stringify({ 'survey': 'TRUE', 'chatID': e.detail.sessionId });
                            marketing.datalayer.pushSatelliteEvent("chatSurvey", json);
                        });
                },

                _initFormEventTracking: function () {
                    $(document).ajaxComplete(function (event, xhr, settings) {
                        var ajaxUrl = settings.url;

                        if (ajaxUrl.indexOf("/ffrd/load/") > -1) {
                            // FFRD LOADED
                            var started = marketing.constants.dataLayer.formStatus.started,
                                additionalParams = $("#AdditionalParamsAsJson", event.target).val()

                            if (additionalParams === undefined || additionalParams === null || additionalParams === "") {
                                return;
                            }

                            var formData;
                            try {
                                formData = JSON.parse(additionalParams);
                            } catch (e) {
                                return;
                            }

                            if (formData.catalogue === undefined) {
                                formData.catalogue = window.digitalData.form.name;
                            }

                            if (formData.pageName === undefined) {
                                formData.pageName = window.digitalData.form.pageName;
                            }

                            marketing.datalayer.writeCandidatePortalFormData(formData.formcode, formData.catalogue, "", formData.pageName, started);
                            marketing.datalayer.pushSatelliteEvent("formEvent", JSON.stringify({ "event": started, "formID": formData.formcode }));
                        }

                        if (ajaxUrl.indexOf("/ffrd/save/") > -1) {
                            // FFRD SAVED
                            var saved = marketing.constants.dataLayer.formStatus.saved;
                            marketing.datalayer.pushValues("form", "status," + saved);
                            marketing.datalayer.pushSatelliteEvent("formEvent", JSON.stringify({ "event": saved, "formID": digitalData.form.code }));
                        }

                        if (ajaxUrl.indexOf("/ffrd/cancel/") > -1) {
                            // FFRD CANCELLED
                            marketing.datalayer.pushSatelliteEvent("formEvent", JSON.stringify({ "event": marketing.constants.dataLayer.formStatus.cancelled, "formID": digitalData.form.code }));
                        }

                        if (ajaxUrl.indexOf("/ffrd/submit/") > -1) {
                            // FFRD SUBMITTED
                            marketing.datalayer.pushSatelliteEvent("formEvent", JSON.stringify({ "event": marketing.constants.dataLayer.formStatus.completed, "formID": digitalData.form.code }));
                        }
                    });
                },

                _initFormErrorTracking: function () {
                    $("form").bind("invalid-form.validate", function (form, validator) {
                        marketing.datalayer.pushValues("page:errors", "type,Form Validation");
                        var validationErrors = [];
                        $.each(validator.errorList, function (i, e) {
                            validationErrors.push(e.message)
                            marketing.datalayer.pushSatelliteEvent("errors", JSON.stringify({ "event": "TRUE" }));
                        });

                        marketing.datalayer.pushValues("page:errors", "message," + validationErrors.join("|"));
                    });

                    $(document).bind("ajaxError", function (e, xhr, ajaxSettings, thrownError) {
                        if (xhr.statusText === "timeout") {
                            marketing.datalayer.pushValues("page:errors", "type,Timeout:message,Timeout");
                            marketing.datalayer.pushSatelliteEvent("errors", JSON.stringify({ "event": "TRUE" }));
                        }
                    });
                },

                _initTelephoneClick: function () {
                    $("a[href^='tel:']").on("click", function () {
                        var office = $(this).text().trim();

                        if ($(this).hasClass("postcode-tel") || $(this).hasClass("orange-link")) {
                            office = $(this).data("location");
                        }

                        if ($(this).data("metadata") !== undefined) {
                            office = $(this).data("metadata");
                        }

                        marketing.datalayer.pushSatelliteEvent("phoneNum", JSON.stringify({ "number": $(this).prop("href").replace("tel:", ""), "office": office }));
                    });

                },

                // This is for only the army roles page. Role click is the name of any of the internal buttons/links that takes
                // the visitor to somewhere else on the same Army Roles page
                _initInternalRoleClick: function () {
                    $(".hero-link-container a").on("click", function () {
                        if (location.pathname.startsWith("/roles/")) {
                            marketing.datalayer.pushSatelliteEvent("armyRole", JSON.stringify({ "roleClick": $(this).text().trim() }));
                        }
                    });

                    $(".role-type-tab a, .hero-tag").on("click", function () {
                        marketing.datalayer.pushSatelliteEvent("armyRole", JSON.stringify({ "roleClick": $(this).text().trim() }));
                    });
                },

                _initJobRoleFilterEvents: function () {
                    $("#role-finder-filter-panel .k-checkbox-label").on("click", function (e) {

                        var category = $(this).closest("section").find("h2:first").text().trim(),
                            text = $(this).text().trim();

                        // At the point this fires, the checkbox is still in it's original state. So if the user has just checked the filter, 
                        // the status is unchecked, so the logic is swapped as per below:
                        if ($(this).parent().find("input:first").is(":checked")) {
                            marketing.datalayer.pushSatelliteEvent("filterRef", JSON.stringify({ 'filterCategory': category, 'filterValue': text, 'updateType': 'filter remove' }));
                        } else {
                            marketing.datalayer.pushSatelliteEvent("filterRef", JSON.stringify({ 'filterCategory': category, 'filterValue': text, 'updateType': 'filter add' }));
                        }
                    });

                    $(".role-finder-filter-clear").on("click", function (e) {
                        marketing.datalayer.pushSatelliteEvent("filterRef", JSON.stringify({ 'filterCategory': "", 'filterValue': "", 'updateType': 'clear all filters' }));
                    });
                },

                _processNextPageInteractions: function () {
                    for (var property in marketing.datalayer.interactionType) {
                        var propertyValue = sessionStorage.getItem(property);
                        if (propertyValue !== null) {
                            marketing.datalayer.pushValues("interactions",
                                "contentBlock," + marketing.datalayer.interactionType[property].contentBlock
                                + ":position," + marketing.datalayer.interactionType[property].position + ":name," + propertyValue);
                            sessionStorage.removeItem(property);
                        }
                    };

                    // Deal with contentFindingMethod...
                    var contentFindingMethod = sessionStorage.getItem(marketing.datalayer.contentFindingMethodKey);
                    if (contentFindingMethod !== null) {
                        marketing.datalayer.pushValues("page", "contentFindingMethod," + contentFindingMethod);
                        sessionStorage.removeItem(marketing.datalayer.contentFindingMethodKey);
                    }

                    // Deal with jobFindingMethod...
                    var jobFindingMethod = sessionStorage.getItem(marketing.datalayer.jobFindingMethodKey);
                    if (jobFindingMethod !== null) {
                        marketing.datalayer.pushValues("page", "jobFindingMethod," + jobFindingMethod);
                        sessionStorage.removeItem(marketing.datalayer.jobFindingMethodKey);
                    }
                },

                _initNextPageInteractionEvents: function () {
                    // HOMEPAGE
                    $(document).on("click", ".article-info-link-basic a", function () { marketing.datalayer._setNextPageSessionItem("homepageBanner", "/", $(this)); });
                    $(document).on("click", ".home h2 a:first", function () { marketing.datalayer._setNextPageSessionItem("homepageGridColumn1", "/", $(this)); });
                    $(document).on("click", ".home h2 a:eq(1)", function () { marketing.datalayer._setNextPageSessionItem("homepageGridColumn2", "/", $(this)); });
                    $(document).on("click", ".home h2 a:eq(2)", function () { marketing.datalayer._setNextPageSessionItem("homepageGridColumn3", "/", $(this)); });
                    $(document).on("click", ".cta-footer-buttons a:first", function () {
                        marketing.datalayer._setNextPageSessionItem("homepageFooterButton1", "/", $(this));                 // HOMEPAGE BUTTON
                        marketing.datalayer._setNextPageSessionItem("roleDetailFooterButton1", "/roles/*", $(this));        // ARMY ROLES BUTTON
                    });
                    $(document).on("click", ".cta-footer-buttons a:eq(1)", function () {
                        marketing.datalayer._setNextPageSessionItem("homepageFooterButton2", "/", $(this));                 // HOMEPAGE BUTTON
                        marketing.datalayer._setNextPageSessionItem("roleDetailFooterButton2", "/roles/*", $(this));        // ARMY ROLES BUTTON
                    });

                    // HEADER
                    $(document).on("click", ".header-main a", function () { marketing.datalayer._setNextPageSessionItem("mainHeader", "", $(this)); });
                    $(document).on("click", ".header-sub a", function () { marketing.datalayer._setNextPageSessionItem("subHeader", "", $(this)); });
                    $(document).on("click", ".logo-wrapper", function () { marketing.datalayer._setNextPageSessionItem("headerLogo", "", $(this)); });

                    // FOOTER
                    $(document).on("click", ".footer .help-col a", function () { marketing.datalayer._setNextPageSessionItem("footerHelpBrowseArmyRoles", "", $(this)); });
                    $(document).on("click", ".footer .touch-col a", function () { marketing.datalayer._setNextPageSessionItem("footerHelpGetInTouch", "", $(this)); });
                    $(document).on("click", ".end-of-footer a", function () { marketing.datalayer._setNextPageSessionItem("footerHelpMainArmySite", "", $(this)); });

                    // FINDING METHOD VARIABLE ON RELATED ROLES/CONTENT
                    $(document).on("click", ".component.related-roles a, .content-hub-recommendedroles--gobutton", function () {
                        sessionStorage.setItem(marketing.datalayer.jobFindingMethodKey, marketing.datalayer.findingMethod.relatedRoles);
                    });

                    $(document).on("click", ".content-hub-tile", function () {
                        sessionStorage.setItem(marketing.datalayer.contentFindingMethodKey, marketing.datalayer.findingMethod.navigation);
                    });

                    $(document).on("click", ".content-hub-related .content-hub-tile", function (e) {
                        sessionStorage.setItem(marketing.datalayer.contentFindingMethodKey, marketing.datalayer.findingMethod.relatedContent);
                    });

                    $(document).on("click", ".role-list__item a", function () {
                        var method = sessionStorage.getItem("q") === ""
                            ? marketing.datalayer.findingMethod.navigation
                            : marketing.datalayer.findingMethod.search;

                        sessionStorage.setItem(marketing.datalayer.jobFindingMethodKey, method);
                    });

                    $(document).on("click", ".search-results-wrapper a", function () {
                        if ($(this).attr("href").indexOf("/roles/") > 0) {
                            sessionStorage.setItem(marketing.datalayer.jobFindingMethodKey, marketing.datalayer.findingMethod.search);
                        } else {
                            sessionStorage.setItem(marketing.datalayer.contentFindingMethodKey, marketing.datalayer.findingMethod.search);
                        }
                    });

                    $(document).on("click", "footer a", function () {
                        sessionStorage.setItem(marketing.datalayer.contentFindingMethodKey, marketing.datalayer.findingMethod.navigation);
                    });

                    $(document).on("click", "header a", function () {
                        sessionStorage.setItem(marketing.datalayer.contentFindingMethodKey, marketing.datalayer.findingMethod.navigation);
                    });

                    // CONTENT FILTERS
                    $(document).on("click", ".content-categories__filter", function () {
                        var values = [];
                        $(".content-categories__filter.active").each(function () {
                            values.push($(this).text().trim());
                        });

                        if (values.length > 0) {
                            sessionStorage.setItem("contentHubFilter", values.join("|"));
                        } else {
                            sessionStorage.removeItem("contentHubFilter");
                        }
                    });

                    $(document).on("click", ".tag-category > a", function () {
                        sessionStorage.setItem("articleContentTag", $(this).text().trim());
                    });

                    // The Locker
                    $(document).on("click", "a[href*='thelocker']", function () {
                        marketing.datalayer._setNextPageSessionItem("Locker Online", "", $(this));
                    });

                },

                _setNextPageSessionItem: function (interactionType, pathName, $ele) {
                    if (location.pathname === pathName || pathName === undefined || pathName === "") {
                        var name = $ele.text().trim();
                        if (name === "") {
                            name = $ele.data("datalayername");
                        }

                        sessionStorage.setItem(interactionType, name);
                        return;
                    }

                    if (pathName.endsWith("*") && location.pathname.startsWith(pathName.replace("*", ""))) {
                        sessionStorage.setItem(interactionType, $ele.text().trim());
                    }
                },

                loginTracking: function (isLogin) {
                    var loginValue = "FALSE";

                    if (isLogin !== "" && isLogin !== undefined) {
                        var loginValue = isLogin ? "TRUE" : "FALSE";
                    }

                    marketing.datalayer.pushSatelliteEvent("loginEvent", JSON.stringify({ "event": loginValue }));
                },

                saveDRSUserData: function (data) {
                    if (data === "" || data === undefined) {
                        return;
                    }

                    var jsonData = JSON.parse(data);

                    try {
                        var applicationStatusId = jsonData.ApplicationStatusId,
                            userStatus = jsonData.UserStatus,
                            roleInterestId = jsonData.RoleInterestId,
                            gender = jsonData.Gender,
                            age = jsonData.Age !== "" && jsonData.Age.length > 2 ? jsonData.Age.substring(0, 2) : jsonData.Age,
                            marketingMethod = jsonData.MarketingMethod,
                            marketingPreference = jsonData.MarketingPreference;

                        if (applicationStatusId === "00000000-0000-0000-0000-000000000000") {
                            applicationStatusId = null;
                        }

                        marketing.datalayer.pushValues("user",
                            "applicationStatusID," + applicationStatusId
                            + ":applicationStatus," + userStatus
                            + ":roleInterestID," + roleInterestId
                            + ":Gender," + gender
                            + ":age," + age
                            + ":marketingPref," + marketingPreference
                            + ":marketingMethod," + marketingMethod);

                        // store in local session for later use:
                        sessionStorage.setItem(marketing.datalayer.drsUserDataStorageKey, data);
                    }
                    catch (e) {
                        console.log(e);
                    }
                },

                // Push values into the datalayer.
                // layerPath = colon separated path to where the new values should be placed eg ("data:page:metrics")
                // keyValues = colon separated value list; within each colon should be key/value as comma separated pair (eg "location,london:locationLat,2.344:locationLng,-1.2000")
                // Full usage eg: marketing.datalayer.pushValues("page:pageDetails:locationDetails", "location,london:locationLat,2.344:locationLng,-1.2000")
                pushValues: function (layerPath, keyValues) {
                    if (layerPath === undefined || layerPath === "") {
                        return;
                    }

                    if (keyValues === undefined || keyValues === "") {
                        return;
                    }

                    if (keyValues.indexOf(":") === 0 || keyValues.indexOf(",") === 0) {
                        return;
                    }

                    var layerPathEntries = layerPath.split(":");

                    // enforce root path:
                    if (this.startRoots.indexOf(layerPathEntries[0]) == -1) {
                        return;
                    }

                    var json = "{";
                    for (var a = 0; a < layerPathEntries.length; a++) {
                        json += "\"" + layerPathEntries[a] + "\":{"
                    }

                    var keyEntryList = keyValues.split(":"),
                        propertyObjectHasAdditions = false;

                    for (var i = 0; i < keyEntryList.length; i++) {
                        var kvp = keyEntryList[i].split(",");

                        if (kvp.length < 2 || kvp[1] === "null") {
                            continue;
                        }

                        propertyObjectHasAdditions = true;
                        json += "\"" + kvp[0] + "\"" + ":\"" + unescape(decodeURIComponent(kvp[1])) + "\",";
                    }

                    if (propertyObjectHasAdditions) {
                        json = json.substring(0, json.length - 1);
                    }

                    for (var a = 0; a < layerPathEntries.length; a++) {
                        json += "} "
                    }

                    json += "}";

                    var parsedJson = JSON.parse(json);
                    $.extend(true, digitalData, parsedJson);
                },

                // layerPath = colon separated path to where the new values should be placed eg ("data:page:metrics")
                removeValues: function (layerPath) {
                    if (layerPath === undefined || layerPath === "" || layerPath.indexOf(":") === -1) {
                        return;
                    }

                    var pathEntries = layerPath.split(":");

                    if (pathEntries.length === 2) {
                        delete digitalData[pathEntries[0]][pathEntries[1]];
                    }
                    if (pathEntries.length === 3) {
                        delete digitalData[pathEntries[0]][pathEntries[1]][pathEntries[2]];
                    }
                    if (pathEntries.length === 4) {
                        delete digitalData[pathEntries[0]][pathEntries[1]][pathEntries[2]][pathEntries[3]];
                    }
                    if (pathEntries.length === 5) {
                        delete digitalData[pathEntries[0]][pathEntries[1]][pathEntries[2]][pathEntries[3]][pathEntries[4]];
                    }
                },

                // Used to store next page interactions (data layer updates as a result of clicks on previous page)
                // These are stored in session storage and loaded into the data layer once the next page has bee loaded
                // They're then cleared so they don't keep getting set.
                storeNextPageInteraction: function (interactionType, interactionValue) {
                    if (interactionName === undefined || interactionName === "") {
                        return;
                    }

                    if (interactionValue === undefined || interactionValue === "") {
                        return;
                    }

                    sessionStorage.setItem(interactionName, interactionValue);
                },

                satelliteTrackVirtualPage: function () {
                    console.log("satellite vp track");

                    if (typeof _satellite === "undefined") {
                        return;
                    }

                    try {
                        _satellite.track('pageload');
                    }
                    catch (e) {
                        return;
                    }
                },

                // calls Adobe _satellite.track method if available.
                // eventName = string name of the event to push into Adobe
                // eventData = json data to put into the object
                pushSatelliteEvent: function (eventName, eventData) {
                    console.log("satellite data push: eventName: " + eventName + ", " + eventData);
                    if (typeof _satellite === "undefined") {
                        return;
                    }

                    if (eventName === undefined || eventName === "") {
                        return;
                    }

                    if (eventData === undefined || eventData === "") {
                        return;
                    }

                    var json;

                    try {
                        json = JSON.parse(eventData);
                    }
                    catch (e) {
                        return;
                    }

                    try {
                        _satellite.track(eventName, json);
                    }
                    catch (e) {
                        return;
                    }
                },

                calculateScrollAmount: function () {
                    var scrollPercent = sessionStorage.getItem(marketing.datalayer.scrollPercentStorageKey);

                    if (scrollPercent === null || scrollPercent === undefined || scrollPercent === "") {
                        scrollPercent = 0;
                    }

                    marketing.datalayer.pushValues("page", "scrollDepth," + scrollPercent);

                    // Reset the scroll percent value on page load
                    scrollPercent = 0;
                    sessionStorage.setItem(marketing.datalayer.scrollPercentStorageKey, scrollPercent);

                    var calcScroll = function () {
                        scrollPercent = marketing.utility.calculateScrollAmount();
                        sessionStorage.setItem(marketing.datalayer.scrollPercentStorageKey, scrollPercent);
                    };

                    $(window).on("scroll", debounce(calcScroll, 150));
                },

                initAppStoreLink: function () {
                    $(document).on("click", ".appStoreLink", function () {
                        var storeName = $(this).data("storename");
                        $.extend(true, digitalData, {
                            navigation: {
                                app: {
                                    appStore: storeName
                                }
                            }
                        });
                    });
                }
            }
        })
}(jQuery));;
/************************************************************************************/
/* marketing.equalheight.js                                                         */
/*                                                                                  */
/* Functionality for making DOM elements with the same selector all the same height */
/************************************************************************************/

var marketing = marketing ? marketing : {};

(function ($) {
    $.extend(marketing,
        {
            equalheight: {

                setHeights: function (itemSelector, resetHeight) {

                    //reset any existing set heights:
                    if (resetHeight) {
                        $(itemSelector).css('height', '');
                    }

                    if (window.matchMedia("(max-width: " + marketing.constants.breakpoints.max_Tablet + "px)").matches) {
                        return;
                    }

                    var heightArray = []; // Create an empty array to take all the item heights

                    // get the height of every element and push it into the array
                    $(itemSelector).each(function() {
                        heightArray.push($(this).outerHeight(true));
                    });

                    // Get the largest height in the array
                    var largestHeightValue = Math.max.apply(Math, heightArray);

                    //Now resize the item
                    $(itemSelector).each(function() {
                        $(this).outerHeight(largestHeightValue);
                    });
                }
            }
        });
}(jQuery));;
/***********************************************************/
/* marketing.events.js                                     */
/*                                                         */
/* Functionality for making all (marketing, not CP) events */
/***********************************************************/

var marketing = marketing ? marketing : {};

(function ($) {
    $.extend(marketing,
        {
            events: {
                searchRequestBody: {"lat":0, "lng": 0},
                eventSearchEndpoint: '/api/eventsearch',

                init: function () {
                    marketing.events.searchEvents();
                    marketing.events.initFilterEvents();
                    marketing.events.initModal();

                    marketing.map.initMap("eventmap", "", 9);

                    // !!!!!!!!!!!!!!!!!!!!!! IMPORTANT !!!!!!!!!!!!!!!!!!!!!!!
                    //TODO: REMOVE:
                    $("body").css("opacity", "1");
                    // REMOVE THIS ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                },

                initModal: function () {
                    $(document).on("click", ".event-tile", function () {
                        var eventData = $(this).find(".event-data");

                        if (eventData.length === 0) {
                            return;
                        }

                        var title = $(eventData[0]).data("title"),
                            dates = $(eventData[0]).data("dates"),
                            description = $(eventData[0]).data("desc"),
                            address = $(eventData[0]).data("address"),
                            postcode = $(eventData[0]).data("postcode") === undefined ? "" : $(eventData[0]).data("postcode"),
                            ctalinkurl = $(eventData[0]).data("linkurl"),
                            ctalinktext = $(eventData[0]).data("linktext"),
                            lat = $(eventData[0]).data("lat"),
                            lng = $(eventData[0]).data("lng");

                        $(".modal").find(".map__info-title").html(title);
                        $(".modal").find(".map__info-text").html(description);
                        $(".modal").find(".map__info-dates").html(dates);

                        if (ctalinkurl !== "") {
                            $(".modal").find(".map__info-ctalink").attr("href", ctalinkurl);
                            $(".modal").find(".map__info-ctalink-text").html(ctalinktext);
                            $(".modal").find(".map__info-ctalink").show();
                        } else {
                            $(".modal").find(".map__info-ctalink").hide();
                        }

                        if (address !== undefined) {
                            $(".modal").find(".map__info-address").html(address + "<br/>" + postcode);
                            $(".modal").find(".map__info-address").show();
                        } else {
                            $(".modal").find(".map__info-address").hide();
                        }

                        $(".modal").find(".map__info-date").html($(eventData[0]).data("firsteventdate") + " - " + $(eventData[0]).data("lasteventdate"));

                        $(".modal").find(".map__info").removeClass("wide");
                        $(".modal").find(".map__wrap").removeClass("narrow");

                        if (lat === undefined && lng === undefined) {
                            $(".modal").find(".map__info").addClass("wide");
                            $(".modal").find(".map__wrap").addClass("narrow");
                            $(".modal").toggleClass("open");
                            return;
                        }

                        // remove any previous map iframes:
                        $(".map__wrap > iframe").remove();

                        marketing.mapSearch.initDetail(lat, lng, "100%");

                        var markerPins = [];
                        markerPins.push({ lat: lat, lng: lng });

                        marketing.mapSearch.mapLat = lat;
                        marketing.mapSearch.mapLng = lng;
                        marketing.map.addPinsByArray(markerPins);

                        marketing.mapSearch.setMapDisplay();

                        $(".modal").toggleClass("open");
                    });

                    $(document).on("click", ".modal-close", function () {
                        $(".modal").toggleClass("open");
                    });
                },

                _searchEventsCallback: function (geolocatedData) {
                    if (geolocatedData !== undefined && geolocatedData !== null && geolocatedData.results.length > 0) {
                        var lat = geolocatedData.results[0].position.lat,
                            lng = geolocatedData.results[0].position.lon;

                        marketing.events.searchRequestBody["lat"] = lat;
                        marketing.events.searchRequestBody["lng"] = lng;
                    }

                    var requestData = JSON.stringify(marketing.events.searchRequestBody);

                    var $eventListContainer = $(".event-list");

                    $.ajax({
                        type: 'POST',
                        contentType: 'application/json; charset=utf-8',
                        url: marketing.events.eventSearchEndpoint,
                        data: requestData,
                        cache: false
                    })
					.done(function (response) {
					    // Render all the results
					    $eventListContainer.empty();
					    $("#event-item-template").tmpl(response).appendTo($eventListContainer);

					    if (response.length === 0) {
					        $(".result-count").text("0 Events Found");
					    } else {
					        $(".result-count").text(response.totalRecordCount + " Events Found");
					    }

					    $("#map-settings").data("google-maps-key", response.GoogleMapsKey);
					    $("#map-settings").data("use-map-functionality", response.UseMapsFunctionality);

					    marketing.datalayer.satelliteTrackVirtualPage();

					    if (typeof (window.bLazy) !== "undefined") {
					        window.bLazy.revalidate();
                        }

                        marketing.events._setupMap(response.events, response.hasCoordinates);
					});
                },

                _setupMap: function (events, hasCoordinates) {

                    if (marketing.mapSearch.useMapFunctionality === "True" && hasCoordinates) {
                        $(".result-tabs, .result-tabs-mapview").removeClass("hidden");

                        var markerPins = [];
                        for (var a = 0; a <= events.length - 1; a++) {
                            var lat = events[a].lat,
                                lng = events[a].lng;

                            if (lat !== 0) {
                                markerPins.push({ lat: lat, lng: lng, name: events[a].title, address: events[a].address });
                                marketing.mapSearch.mapLat = lat;
                                marketing.mapSearch.mapLng = lng;
                            }

                            $("#eventmap").height("500px");
                            marketing.map.setCentre(marketing.mapSearch.mapLng, marketing.mapSearch.mapLat);
                        }

                        marketing.map.addPinsByArray(markerPins);

                    } else {
                        $("#eventmap").removeClass("active");
                        $("#eventlist").addClass("active");
                        $(".result-tabs, .result-tabs-mapview").addClass("hidden");
                    }
                },

                _setClearFilter: function () {
                    $(".clear-filters--link").addClass("hidden");
                    var clearFilterSet = false;

                    $(".filter-panel select").each(function () {
                        if ($(this).find("option:selected").val() !== "") {
                            $(".clear-filters--link").removeClass("hidden");
                            clearFilterSet = true;
                            return false;
                        }
                    });

                    if (clearFilterSet) {
                        return;
                    }

                    $(".filter-panel input").each(function () {
                        if ($(this).val() !== "") {
                            $(".clear-filters--link").removeClass("hidden");
                            return false;
                        }
                    });
                },

                initFilterEvents: function () {
                    $("#dateFrom").datepicker({ dateFormat: "dd/mm/yy"})
                        .change(function(){
                            var date = $(this).datepicker('getDate');
                            date.setDate(date.getDate() + 7);
                            $("#dateTo").datepicker("setDate", date);
                        });
                    $("#dateTo").datepicker({ dateFormat: "dd/mm/yy" });

                    $(".filter-panel select").on("change", function (e) {
                        e.preventDefault();
                        marketing.events._setClearFilter();
                    });

                    $(".filter-panel input").on("change", this._setClearFilter);

                    $("#event-filter-search").on("click", function () {
                        marketing.events.searchEvents();
                    });

                    $("#location-input").on("keyup", function (e) {
                        if (e.keyCode === 13) {
                            marketing.events.searchEvents();
                        }
                    });

                    $(".clear-filters--link").on("click", function (e) {
                        e.preventDefault();
                        $(".clear-filters--link").addClass("hidden");

                        $(".filter-dropdown, .filter-panel input[type='text']").each(function () {
                            $(this).val("");
                        });

                        marketing.events.searchEvents();
                    });
                },

                searchEvents: function () {
                    $(".filter-panel select option:selected").map(function (i, o) {
                        var selectedVal = $(o).val();
                        marketing.events.searchRequestBody[$(o).parent().data("prop")] = selectedVal;
                    });

                    marketing.events.searchRequestBody["dateFrom"] = $("#dateFrom").val();
                    marketing.events.searchRequestBody["dateTo"] = $("#dateTo").val();

                    var locationValue = $("#location-input").val();
                    if (locationValue === "") {
                        marketing.events._searchEventsCallback(null);
                        return;
                    }

                    if (marketing.mapSearch.useAutoLocation) {
                        marketing.geolocation.getUserPosition(marketing.events._searchEventsCallback);
                    }

                    marketing.geolocation.geolocatePosition(marketing.events._searchEventsCallback, locationValue);
                }
            }
        });
}(jQuery));
;
var marketing = marketing ? marketing : {};

(function ($) {
    $.extend(marketing,
        {
            faq: {
                urlEndpoint: "",
                pageNumber: 1,
                selectedFilters: [],
                i: "",
                faqList: [],

                initBrowser: function (endpoint, i) {
                    this.initLoadMore();
                    marketing.faq.urlEndpoint = endpoint;
                    marketing.faq.i = i;

                    this.initNextPrevious();
                },

                initNextPrevious: function () {
                    marketing.faq.faqList = [];         // empty the existing array

                    var currentCount = 0;
                    var faqCount = $(".modal").length;
                    if (faqCount === 0) {
                        return;
                    }

                    $(".modal .faq-previous, .modal .faq-next").removeClass("hidden");

                    $(document).off("click", ".faq-next");
                    $(document).off("click", ".faq-previous");

                    for (var i = 0; i < faqCount; i++) {
                            var modalItem = {
                            id: $(".modal")[i].getAttribute("id"),
                            previousId: i > 0 ? $(".modal")[i - 1].getAttribute("id") : "",
                            nextId: i < faqCount - 1 ? $(".modal")[i + 1].getAttribute("id") : ""
                        };

                        if (modalItem.previousId === "") {
                            $($(".modal")[i]).find(".faq-previous").addClass("hidden");
                        }

                        if (modalItem.nextId === "") {
                            $($(".modal")[i]).find(".faq-next").addClass("hidden");
                        }

                        marketing.faq.faqList.push(modalItem);
                    }

                    $(document).on("click", ".faq-next", function (e) {
                        e.preventDefault();
                        var currentModalId = $(this).closest(".modal").attr("id");
                        marketing.faq._showNextModal(currentModalId, true);
                    });

                    $(document).on("click", ".faq-previous", function (e) {
                        e.preventDefault();
                        var currentModalId = $(this).closest(".modal").attr("id");
                        marketing.faq._showNextModal(currentModalId, false);
                    });
                },

                /// Closes the current modal and then opens the next modal
                /// currentModalId is the modal that is currently being displayed
                /// isNext - if true, then we use the nextId, if false, then we use the previousId
                _showNextModal: function (currentModalId, isNext) {
                    var currentModalEntry = marketing.faq.faqList.filter(function (e) { return e.id == currentModalId; });

                    if (currentModalEntry !== undefined && currentModalEntry.length >= 0) {
                        var currentModal = document.querySelector("#" + currentModalId);
                        currentModal.classList.toggle("open");                           // closes the current modal

                        var nextModal = document.querySelector("#" + (isNext ? currentModalEntry[0].nextId : currentModalEntry[0].previousId));

                        nextModal.getElementsByClassName('modal-close')[0].addEventListener('click', function (e) {
                            nextModal.classList.remove("open");
                        });
                        nextModal.getElementsByClassName('modal-shadow')[0].addEventListener('click', function (e) {
                            nextModal.classList.remove("open");
                        });

                        nextModal.classList.toggle("open");
                    }
                },

                initLoadMore: function () {
                    $(document).on("click", ".faqbrowser--showmore a", function () {
                        marketing.faq.pageNumber++;
                        marketing.faq.updateBrowser(true);
                    });
                },

                updateBrowser: function (isAppend) {
                    var endpoint = marketing.faq.urlEndpoint
                       + "?p=" + marketing.faq.pageNumber
                       + "&i=" + marketing.faq.i
                       + "&f=" + marketing.faq.selectedFilters.join(",");

                    var itemSelector = ".faqbrowser";

                    if (!isAppend) {
                        $(itemSelector).empty();
                    }
                    $(itemSelector).append("<div class='spinner'></div>");

                    $.ajax({
                        url: endpoint,
                        type: 'GET'
                    }).done(function (data) {
                        $(itemSelector).append(data);
                        $(itemSelector).parent().find(".spinner").remove();

                        var isMoreData = $(data).data("moreresults");
                        if (isMoreData === "False") {
                            $(".faqbrowser--showmore").css("display", "none");
                        } else {
                            $(".faqbrowser--showmore").css("display", "");
                        }

                        marketing.faq.initNextPrevious();           // update next/previous list with any new faq items
                        marketing.datalayer.satelliteTrackVirtualPage();
                    });


                    return endpoint;
                },

                applyBrowserFilters: function (selectedFilterValue, deselectedFilterValue) {
                    if ((selectedFilterValue === "" || selectedFilterValue === undefined)
                        && (deselectedFilterValue === "" || deselectedFilterValue === undefined)) {
                        return;
                    }

                    if (selectedFilterValue !== "" && selectedFilterValue !== undefined) {
                        marketing.faq.selectedFilters.push(selectedFilterValue);
                    }

                    if (deselectedFilterValue !== "" && deselectedFilterValue !== undefined) {
                        // remove from filter list
                        var index = marketing.faq.selectedFilters.indexOf(deselectedFilterValue);
                        if (index !== -1) {
                            marketing.faq.selectedFilters.splice(index, 1);
                        }
                    }

                    // Make sure we reset the page number otherwise we'll end up skipping the first few content items on reload:
                    marketing.faq.pageNumber = 1;

                    return this.updateBrowser(false);
                }
            }
        })
}(jQuery));;
/** 2020.02.18 Not Required anymore **/

///******************************************************************/
///* marketing.feature.js                                           */
///*                                                                */
///* Functionality to help with features/articles on the CP website */
///******************************************************************/

//var marketing = marketing ? marketing : {};

//(function ($) {
//    $.extend(marketing,
//        {
//            feature: {
//                pageNumber: 1,
//                endpoint: "/api/sitecore/featurelanding/GetFeatureLandingListPaged",
//                spinnerSelector: "#feature-landing-list-waiting",
//                contentSelector: ".feature-landing-list .row:last",
//                loadMoreSelector: ".feature-landing-list .btn-load-more",
//                readMoreSelector: ".feature-readmore__mobile-button .btn-load-more",

//                initFeatureList: function () {
//                    $(document).on("click", marketing.feature.loadMoreSelector, marketing.feature.loadMore);
//                },

//                initFeatureDetail: function () {
//                    marketing.equalheight.setHeights(".equalheight");
//                    var setHeight = function () {
//                        marketing.equalheight.setHeights(".equalheight", true);
//                    }

//                    $(window).resize(debounce(setHeight, 100));

//                    $(document).on("click", marketing.feature.readMoreSelector, marketing.feature.readMore);

//                },

//                renderTags: function() {
//                    $(".feature-taster__item").each(function () {
//                        var tagList = $($(this).find(".feature-taster__tag").get().reverse()),
//                            count = 1;

//                        $(tagList).each(function () {
//                            if (count === tagList.length) {
//                                return;
//                            }

//                            count++;
//                            var width = $(this).width() + parseInt($(this).css("right").replace("px", ""));
//                            $(tagList[count - 1]).css("right", (width + 15) + "px");
//                        });
//                    });
//                },
    
//                loadMore: function () {
//                    marketing.feature.pageNumber++;
//                    marketing.feature.executeSearch();
//                },

//                readMore: function(){
//                    $(".feature-readmore__mobile-wrapper").removeClass("feature-readmore__mobile-wrapper");
//                    $(marketing.feature.readMoreSelector).addClass("hidden");
//                },

//                executeSearch: function() {
//                    $(marketing.feature.spinnerSelector).removeClass("hidden");

//                    var endpoint = marketing.feature.endpoint +
//                        "?pageNumber=" +
//                        marketing.feature.pageNumber +
//                        "&id=" +
//                        $(".feature-landing-list:first").data("id");

//                    $.ajax({
//                        type: "POST",
//                        contentType: "application/json; charset=utf-8",
//                        url: endpoint,
//                        cache: false,
//                        error: function (e) {
//                            console.log("Error!", e);
//                            $(marketing.feature.spinnerSelector).addClass("hidden");
//                            marketing.feature.pageNumber--;
//                        }
//                    }).done(function (results) {
//                        $(marketing.feature.loadMoreSelector).remove();
//                        $(marketing.feature.contentSelector).before(results);
//                        marketing.feature.renderTags();
//                        $(marketing.feature.spinnerSelector).addClass("hidden");
//                    });
//                }
//            }
//        });
//}(jQuery));;
var marketing = marketing ? marketing : {};

(function ($) {
    $.extend(marketing,
        {
            forms: {
                iti: null,

                initExpressionOfInterestForm: function (phoneValidationJsPath) {
                    $("#EOIForm").validate().settings.ignore = ".data-val-ignore, :disabled, .ignore, :hidden";

                    $(document).on("click", ".enabler", function () {
                        $(".enablee").addClass("hidden");
                        $(".enablee input").addClass("ignore");

                        $("#" + $(this).data("id")).removeClass("hidden");
                        $("#" + $(this).data("id") + " input").removeClass("ignore");
                    });

                    $("#EOIForm .k-radio-label, #EOIForm .k-radio, #EOIForm k-textbox").on("change blur focus", function () {
                        $(".btn-submit").prop("disabled", true);
                        // trigger valid check on all fields (without triggering UI - this is what checkForm() does)
                        var isValid = $("#EOIForm").validate().checkForm();
                        var smsSelected = $("#ExpressionOfInterestPostModel_PreferredContactMethod_SMS").prop("checked");

                        if (smsSelected) {
                            if (marketing.forms.iti.isValidNumber() && isValid) {
                                $(".btn-submit").prop("disabled", false);
                            }
                        }
                        else {
                            if (isValid) {
                                $(".btn-submit").prop("disabled", false);
                            }
                        }
                    });

                    // Validate on focus out (ie, eager validation)..
                    var settings = $.data($("form")[0], "validator").settings;
                    settings.onfocusout = function (element) { $(element).valid(); };

                    marketing.forms.initTelephoneValidation(phoneValidationJsPath);
                },

                initTelephoneValidation: function (phoneValidationJsPath) {
                    var input = document.querySelector(".phone-control"),
                    errorMsg = document.querySelector("#phone-error-msg")

                    // here, the index maps to the error code returned from getValidationError - see readme
                    var errorMap = ["Invalid number", "Invalid country code", "Too short", "Too long", "Invalid number"];

                    // initialise plugin
                    marketing.forms.iti = window.intlTelInput(input, {
                        utilsScript: phoneValidationJsPath
                    });

                    var reset = function () {
                        input.classList.remove("error");
                        errorMsg.innerHTML = "";
                        errorMsg.classList.add("hide");
                        errorMsg.classList.remove("has-error");
                    };

                    var showPhoneValidation = function () {
                        input.classList.add("error");
                        var errorCode = marketing.forms.iti.getValidationError();
                        errorMsg.innerHTML = errorMap[errorCode];
                        errorMsg.classList.remove("hide");
                        errorMsg.classList.add("has-error");

                        errorMsg.parentNode.classList.add("has-error");
                        errorMsg.parentNode.classList.add("field-validation-error");
                    };

                    // on blur: validate
                    input.addEventListener('blur', function () {
                        reset();
                        if (input.value.trim()) {
                            if (marketing.forms.iti.isValidNumber()) {

                                //getnumber() returns the number with country code and leading 0 of the number removed - EG - UK Mobile will return as +447123123123
                                var getPhoneNumber = marketing.forms.iti.getNumber();

                                //remove '+' from country code
                                var n = getPhoneNumber.indexOf("+");
                                if (n >= -1) {
                                    getPhoneNumber = getPhoneNumber.replace(/[A-Za-z0-9àÀâÂäÄáÁéÉèÈêÊëËìÌîÎïÏòÒôÔöÖùÙûÛüÜçÇñ]*\S*/g, function (txt) {
                                        return txt.substr(n + 1);
                                        n = 0;
                                    });
                                }
                                //replace phone number with formatted version from getNumber()
                                $('#ExpressionOfInterestPostModel_MobileNumber').val(getPhoneNumber);
                            } else {
                                showPhoneValidation();
                            }
                        } else {
                            showPhoneValidation();
                        }
                    });

                    //// on keyup / change flag: reset
                    input.addEventListener('change', reset);
                    input.addEventListener('keyup', reset);
                }
            }
        });
}(jQuery));;
var marketing = marketing ? marketing : {};

(function ($) {
    $.extend(marketing,
        {
            geolocation: {
                geolocatePosition: function (callback, locationValue, endpoint) {
                    // var locationInput = $(marketing.mapSearch.locationInputSelector);

                    if (locationValue === "" || locationValue === undefined) {
                        callback();
                        return;
                    }

                    if (!endpoint && marketing.mapSearch.mapEndpoint !== undefined) {
                        endpoint = marketing.mapSearch.mapEndpoint.replace("{query}", locationValue);
                    }

                    if (endpoint === "" || endpoint === undefined) {
                        callback();
                        return;
                    }

                    $.ajax({
                        type: 'GET',
                        contentType: 'application/json; charset=utf-8',
                        url: endpoint,
                        cache: false,
                        error: function (e) {
                            console.log('Error!', e);
                        }
                    }).done(callback);
                },

                getUserPosition: function (fn) {
                    var options = { enableHighAccuracy: true, timeout: 3000, maximumAge: 0 };

                    navigator.geolocation.getCurrentPosition(
                        function (pos) {
                            var dataArray =
                            {
                                results: [{ position: { lat: pos.coords.latitude, lon: pos.coords.longitude } }]
                            };

                            fn(dataArray);
                        },
                        function (err) { console.warn(`ERROR(${err.code}): ${err.message}`); },
                        options);
                },


            }
        });
}(jQuery));;
var marketing = marketing ? marketing : {};

(function ($) {
    $.extend(marketing,
        {
            map: {
                mapCenterPosition: [-1.78956, 53.95617],
                mapElement: null,
                popupTemplate: '<div class="customInfobox">' + 
                    '<div class="name"><a href="{link}">{name}</a></div>{address}<div class="link">' + 
                    '<a href="{link}">{linkText}</a>' + 
                    '<a href="https://www.google.co.uk/maps/dir//{address}" target="_blank">Find Directions</a>' + 
                    '</div></div>',
                popupLinkText: null, 
                popup: null,
                dataSource: null,
                centrePinDataSource: null,
                infoWindows: [],
                markers: [],

                initMap: function (mapElement, linkText, zoomLevel, referralCallback, backButtonReferrer) {
                    if (typeof google === "undefined") {
                        return;
                    }

                    this.popupLinkText = linkText;

                    marketing.map.mapElement = new google.maps.Map(document.getElementById(mapElement), {
                        center: { lat: 52.636879, lng: -1.139759 },
                        zoom: zoomLevel === undefined || zoomLevel == null ? 8 : zoomLevel
                    });

                    if (referralCallback !== undefined) {
                        referralCallback(backButtonReferrer);
                    }
                },

                addPinsByArray: function (pinArray) {
                    if (typeof google === "undefined") {
                        return;
                    }

                    marketing.map.clearMarkersFromMap();

                    for (var a = 0; a < pinArray.length; a++) {
                        var marker = new google.maps.Marker(
                            {
                                position: { lng: pinArray[a].lng, lat: pinArray[a].lat }, map: marketing.map.mapElement
                            }),
                            infowindow = new google.maps.InfoWindow();

                            marketing.map.markers.push(marker);

                        var infoWindowContent = marketing.map.popupTemplate
                            .replace(/{name}/g, pinArray[a].name)
                            .replace(/{address}/g, pinArray[a].address)
                            .replace(/{link}/g, pinArray[a].link)
                            .replace(/{lat}/g, pinArray[a].lat)
                            .replace(/{lng}/g, pinArray[a].lng)
                            .replace(/{linkText}/g, marketing.map.popupLinkText);

                        google.maps.event.addListener(marker, 'click', (function (marker, infoWindowContent, infowindow) {
                            return function () {

                                /* close the previous info-window */
                                marketing.map.closeInfos();

                                infowindow.setContent(infoWindowContent);
                                infowindow.open(marketing.map.mapElement, marker);

                                /* keep the handle, in order to close it on next click event */
                                marketing.map.infoWindows[0] = infowindow;

                            };
                        })(marker, infoWindowContent, infowindow));
                    }
                },

                //Clears all markers from the current map
                clearMarkersFromMap: function(){
                    for(var a = 0; a<marketing.map.markers.length; a++) {
                        marketing.map.markers[a].setMap(null);
                    }
                },

                closeInfos: function () {
                    if (marketing.map.infoWindows.length > 0) {
                        marketing.map.infoWindows[0].set("marker", null);
                        marketing.map.infoWindows[0].close();
                        marketing.map.infoWindows.length = 0;
                    }
                },

                setCentre: function (lng, lat) {
                    if(marketing.map.mapElement!==null) {
                        marketing.map.mapElement.setCenter({ lat: lat, lng: lng });
                        }
                }
            }
        });
}(jQuery));;
var marketing = marketing ? marketing : {};

(function ($) {
    $.extend(marketing,
        {
            mapSearch: {
                pageNumber: 1,
                radius: 50, 
                lat: 0,
                lng: 0,
                mapLat: 0,
                mapLng: 0,
                findButtonSelector: "#army-map-find",
                inputErrorSelector: ".pc-error",
                locationInputSelector: "#location-input",
                contentSelector: "#army-map-search-results > #content",
                searchResultSelector: "#army-map-search-results",
                resultTileSelector: ".army-map-tile",
                postcodeSearchContainerSelector: ".map-postcode",
                loadMoreButtonSelector: ".army-map-load-more",
                titleListTextSelector: "#search-result-title-list",
                titleMapTextSelector: "#search-result-title-map",
                titleNationalUnitTextSelector: "#search-result-national-unit",
                titleListTextVanillaContent: "",
                titleMapTextVanillaContent: "",
                titleNationalUnitTextVanillaContent: "", 
                spinnerSelector: "#army-map-waiting",
                resultViewToggleSelector: "#map-result-view",
                searchEndpoint: "",
                isUserPosition: false,
                nationalUnitSelector: "#nationalunits",

                get useMapFunctionality() {
                    return $("#map-settings").data("use-map-functionality");
                },
                get useAutoLocation() {
                    return $("#map-settings").data("use-auto-location");
                },
                get useNationalCentreFunctionality() {
                    return $("#map-settings").data("nationalunit-split");
                },
                get mapEndpoint() {
                    return $("#map-settings").data("geocode-endpoint");
                },
                get googleMapsKey(){
                    return $("#map-settings").data("google-maps-key");
                },
                get mapQuery(){
                    return $("#map-settings").data("map-query");
                },
                get mapPopupLinkText() {
                    return $("#map-settings").data("map-popup-link");
                },
                get mapZoomLevel(){
                    return $("#map-settings").data("zoom-level");
                },

                init: function (searchEndpoint, backButtonReferrer) {
                    if (searchEndpoint === undefined) {
                        return;
                    }

                    marketing.mapSearch.searchEndpoint = searchEndpoint;

                    this.setupSearchTrigger();
                    this.initTileClick();
                    this.setupTabClick();

                    var isReferralSearch = this.initReferralSearch();

                    if (this.useMapFunctionality) {
                        if (!isReferralSearch) {
                            marketing.map.initMap("map", this.mapPopupLinkText, this.mapZoomLevel, marketing.mapSearch.autoSearchCentres, backButtonReferrer);
                        } else {
                            marketing.map.initMap("map", this.mapPopupLinkText, this.mapZoomLevel);
                            $(this.findButtonSelector).trigger("click");
                        }
                    } else {
                        if (isReferralSearch) {
                            $(this.findButtonSelector).trigger("click");
                        }
                    }


                    this.titleListTextVanillaContent = $(this.titleListTextSelector).text();
                    this.titleMapTextVanillaContent = $(this.titleMapTextSelector).text();
                    this.titleNationalUnitTextVanillaContent = $(this.titleNationalUnitTextSelector).text();

                    $(document).on('click', this.loadMoreButtonSelector, function () {
                        marketing.mapSearch.loadMore();
                    });

                    $("#map-tab").click(function () {
                        setTimeout(function () {
                            marketing.mapSearch.setMapDisplay();
                        }, 200);
                    });
                },

                // This is triggered by a referring page/method having set the locationSearchBarSessionStorageKey elsewhere.
                // This means autosearch should be initiated.
                initReferralSearch: function () {
                    var locationValue = sessionStorage.getItem(marketing.constants.locationSearch.locationSearchBarSessionStorageKey);
                    if (locationValue === "" || locationValue === null) {
                        return false;
                    }

                    $(this.locationInputSelector).val(locationValue);
                    sessionStorage.removeItem(marketing.constants.locationSearch.locationSearchBarSessionStorageKey);

                    return true;
                },

                initTileClick: function () {
                    this.setupTileResultClick();
                },

                initDetail: function (lat, lng, mapHeight) {
                    if (!this.useMapFunctionality) {
                        return;
                    }

                    var mapQuery = marketing.mapSearch.mapQuery;

                    if (mapQuery === undefined) {
                        mapQuery = lat + "," + lng;
                    }

                    var ifrm = document.createElement("iframe");
                    ifrm.setAttribute("src", "https://www.google.com/maps/embed/v1/place?key=" 
                        + marketing.mapSearch.googleMapsKey
                        + "&q=" + mapQuery);
                    ifrm.frameBorder="0"
                    ifrm.setAttribute("style", "border:none")
                    ifrm.style.width = "100%";
                    ifrm.style.height = (mapHeight === undefined ? "300px" : mapHeight);

                    $("#map").append(ifrm);               
                },

                setupTabClick: function () {
                    $("a[data-toggle='tab'").on('shown.bs.tab', function (e) {
                        var target = $(e.target).attr("href");
                        if (target === "#content") {
                            $(marketing.mapSearch.titleListTextSelector).removeClass("hidden");
                            $(marketing.mapSearch.titleMapTextSelector).addClass("hidden");
                            $(marketing.mapSearch.titleNationalUnitTextSelector).addClass("hidden");
                        } else if (target === "#map") {
                            $(marketing.mapSearch.titleListTextSelector).addClass("hidden");
                            $(marketing.mapSearch.titleMapTextSelector).removeClass("hidden");
                            $(marketing.mapSearch.titleNationalUnitTextSelector).addClass("hidden");
                        } else {
                            $(marketing.mapSearch.titleListTextSelector).addClass("hidden");
                            $(marketing.mapSearch.titleMapTextSelector).addClass("hidden");
                            $(marketing.mapSearch.titleNationalUnitTextSelector).removeClass("hidden");
                        }
                    });
                },

                setupSearchTrigger: function () {
                    $(this.locationInputSelector).on("keyup", function (e) {
                        if (e.keyCode === 13) {
                            $(marketing.mapSearch.findButtonSelector).trigger("click");
                        }
                    });

                    $(this.findButtonSelector).on("click", function () {
                        if (!marketing.mapSearch.validateInput()) {
                            return;
                        }

                        $(marketing.mapSearch.contentSelector).empty();
                        marketing.mapSearch.pageNumber = 1;
                        sessionStorage.setItem("map-keyword", $(marketing.mapSearch.locationInputSelector).val());
                        marketing.mapSearch.isUserPosition = false;
                        var locationValue = $(marketing.mapSearch.locationInputSelector).val();
                        marketing.geolocation.geolocatePosition(marketing.mapSearch.searchCentres, locationValue);
                    });
                },

                setupTileResultClick: function () {
                    $(document).on('click', marketing.mapSearch.resultTileSelector, function () {
                        var href = $(this).find("a:first").attr("href");
                        window.location.href = href;
                    });
                },

                setMapDisplay: function () {
                    if (marketing.mapSearch.mapLng !== undefined) {
                        marketing.map.setCentre(marketing.mapSearch.mapLng, marketing.mapSearch.mapLat);
                    }
                },

                loadMore: function () {
                    this.pageNumber++;
                    var query = marketing.mapSearch.buildAndStoreSearchQuery();

                    this.executeSearch(query);

                    // remove any previously rendered load more buttons so we don't get multiple buttons (it's in the payload html)
                    $(marketing.mapSearch.loadMoreButtonSelector).remove();
                },

                validateInput: function () {
                    $(marketing.mapSearch.inputErrorSelector).removeClass("pc-error-show");

                    if ($(marketing.mapSearch.locationInputSelector).val() === "") {
                        $(marketing.mapSearch.inputErrorSelector).addClass("pc-error-show");
                        return false;
                    }

                    return true;
                },

                searchCentres: function (data) {
                    var query = marketing.mapSearch.buildAndStoreSearchQuery(data);
                    marketing.mapSearch.executeSearch(query);
                },

                _geolocateCallback: function (geolocationData) {
                    var query = marketing.mapSearch.buildAndStoreSearchQuery(geolocationData);
                    marketing.mapSearch.executeSearch(query);
                },

                autoSearchCentres: function (backButtonReferrer) {
                    var isBackReferral = false;
                    if (document.referrer.indexOf(window.location.hostname) !== -1) {
                        var referralPage = document.referrer;
                        var patternMatcher = new RegExp(backButtonReferrer);
                        isBackReferral = patternMatcher.test(referralPage.toLowerCase());
                    }

                    if (!isBackReferral && marketing.mapSearch.useAutoLocation) {
                        marketing.mapSearch.isUserPosition = true;
                        marketing.geolocation.getUserPosition(marketing.mapSearch._geolocateCallback);
                    } 
                    else {
                        if (isBackReferral) { 
                            var query = sessionStorage.getItem("map-query");
                            if (query) {
                                var keyword = sessionStorage.getItem("map-keyword");
                                $(marketing.mapSearch.locationInputSelector).val(keyword);

                                var obj = JSON.parse(query);
                                obj.isBackReferral = true;
                                marketing.mapSearch.lat = obj.lat;
                                marketing.mapSearch.lng = obj.lng;
                                marketing.mapSearch.pageNumber = obj.pageNumber;
                                marketing.mapSearch.executeSearch(JSON.stringify(obj));
                                return;
                            }
                        }
                    }
                },

                executeSearch: function (query) {
                    $(marketing.mapSearch.spinnerSelector).removeClass("hidden");

                    if (this.useNationalCentreFunctionality) {
                        marketing.reserveCentre.loadNationalCentres(this.nationalUnitSelector);
                    }

                    $.ajax({
                        type: 'POST',
                        contentType: 'application/json; charset=utf-8',
                        url: marketing.mapSearch.searchEndpoint,
                        data: query,
                        cache: false,
                        error: function (e) {
                            console.log('Error!', e);
                            $(marketing.mapSearch.spinnerSelector).addClass("hidden");
                        }
                    }).done(function (results) {
                        $(marketing.mapSearch.contentSelector).append(results);

                        marketing.mapSearch.setSearchResultTitle();
                        $(marketing.mapSearch.spinnerSelector).addClass("hidden");
                        $(marketing.mapSearch.contentSelector).parent().css("display", "block");

                        var keyword = sessionStorage.getItem("map-keyword"),
                            resultCount = $(".map-link").length;

                        marketing.datalayer.pushValues("page:pageDetails", "category," + marketing.constants.dataLayer.freeTextSearchCategory
                            + ":method," + marketing.constants.dataLayer.searchMethod.location
                            + ":searchKeyword," + keyword
                            + ":searchResultsTotal," + resultCount);

                        marketing.datalayer.pushValues("search", "locationSearched," + keyword + ":locationResults," + resultCount);

                        if (resultCount === 0) {
                            if (marketing.mapSearch.isUserPosition === true) {
                                $(marketing.mapSearch.titleListTextSelector).text("No results found for your location");
                            } else {
                                $(marketing.mapSearch.titleListTextSelector).text("No results found for " + sessionStorage.getItem("map-keyword"));
                            }
                        }

                        if (marketing.mapSearch.useMapFunctionality || marketing.mapSearch.useNationalCentreFunctionality) {
                            $(marketing.mapSearch.resultViewToggleSelector).removeClass("hidden");
                            $(marketing.mapSearch.searchResultSelector).removeClass("fix-position");
                            $(marketing.mapSearch.postcodeSearchContainerSelector).addClass("result-visible");

                            if (marketing.mapSearch.useMapFunctionality) {
                                marketing.mapSearch.setupMap();
                            }
                        }
                        $('[href="#content"]').tab('show');

                    });
                },

                setSearchResultTitle: function () {
                    var listTitleText = marketing.mapSearch.titleListTextVanillaContent
                        .replace("{itemCount}", $(".result-payload:last").data("result-count"))
                        .replace("{searchTerm}", $(marketing.mapSearch.locationInputSelector).val());

                    var mapTitleText = marketing.mapSearch.titleMapTextVanillaContent
                        .replace("{itemCount}", $(".result-payload:last").data("result-count"))
                        .replace("{searchTerm}", $(marketing.mapSearch.locationInputSelector).val());

                    var nationalUnitTitleText = marketing.mapSearch.titleNationalUnitTextVanillaContent;

                    $(marketing.mapSearch.titleListTextSelector).text(listTitleText);
                    $(marketing.mapSearch.mapListTextSelector).text(mapTitleText);
                    $(marketing.mapSearch.titleNationalUnitTextSelector).text(nationalUnitTitleText);

                    // Search for user position so makes sense to use map text for the list result title
                    if(marketing.mapSearch.isUserPosition){
                        $(marketing.mapSearch.titleListTextSelector).text(mapTitleText);
                    }
                },

    setupMap: function () {

        var coOrdinateArray = [];

        $(".map-link").each(function (i, element) {
            var $element = $(element);
            coOrdinateArray.push({
                lat: $element.data("lat"),
                lng: $element.data("lng"),
                name: $element.data("name"),
                address: $element.data("address"),
                link: $element.attr("href")
            });
        });

        marketing.mapSearch.mapLat = $(".map-link:first").data("lat");
        marketing.mapSearch.mapLng = $(".map-link:first").data("lng");
        marketing.map.addPinsByArray(coOrdinateArray);

        marketing.mapSearch.setMapDisplay();
    },

    getTextWidth: function (text, font) {
        var canvas = this.getTextWidth.canvas || (this.getTextWidth.canvas = document.createElement("canvas"));
        var context = canvas.getContext("2d");
        context.font = font;
        var metrics = context.measureText(text);
        return metrics.width;
    },

    buildAndStoreSearchQuery: function (geolocatedData) {
        if (!geolocatedData) {
            var qsLat = cp.getUrlParameter("lat");
            var qsLng = cp.getUrlParameter("lng");

            if (qsLat) {
                marketing.mapSearch.lat = qsLat;
            }

            if (qsLng) {
                marketing.mapSearch.lng = qsLng;
            }
        } else {
            marketing.mapSearch.lat = geolocatedData.results[0].position.lat;
            marketing.mapSearch.lng = geolocatedData.results[0].position.lon;
        }

        var data = {
            lat: marketing.mapSearch.lat,
            lng: marketing.mapSearch.lng,
            radius: 50,
            pageNumber: marketing.mapSearch.pageNumber
        };

        var returnVal = JSON.stringify(data);

        sessionStorage.setItem("map-query", returnVal);
        return returnVal;
    }
}
});
}(jQuery));;
var marketing = marketing ? marketing : {};

(function ($) {
    $.extend(marketing,
        {
            multistepform: {
                selectors: {
                    nextButton: '.form-step-next',
                    previousButton: '.form-step-previous',
                    formStep: ".form-step-panel"
                },
                alertValues: [],
                panelOverrideData: [],
                panelTitleVariations: [],
                originalPanelTitleValues: [],

                init: function () {
                    this.initForm();
                    this.initPreviousNextButtons();
                    this.storeOriginalPanelTitleValues();
                    this.parseAlertAnswers();
                    this.initPanelChecking();
                },

                initForm: function () {
                    var $initialStep = $(this.selectors.formStep + ":first");
                    this.validateStep($initialStep);
                },

                initPreviousNextButtons: function () {
                    $(document).on("click", this.selectors.nextButton, { modRef: this }, function (e) {
                        var modRef = e.data.modRef;

                        var $targetPanel = $("#" + $(this).data("panel"));
                        var targetPanelOverride = modRef.handleTargetPanelDestinationOverride($(this));

                        if (targetPanelOverride !== undefined) {
                            $targetPanel = $("#" + targetPanelOverride);
                        }

                        if ($targetPanel.data("is-end-form").toLowerCase() === "true") {
                            $(".form-title").hide();
                            $(".form-introduction").hide();
                        }

                        modRef.handleTargetPanelTitleOverride($targetPanel);
                        modRef.validateStep($targetPanel);
                        $(this).closest(modRef.selectors.formStep).addClass("hidden");
                        $targetPanel.removeClass("hidden");
                        $targetPanel.find(modRef.selectors.previousButton).data("panel", $(this).closest(modRef.selectors.formStep).prop("id"));
                    });

                    $(document).on("click", this.selectors.previousButton, function () {
                        $(this).closest(marketing.multistepform.selectors.formStep).addClass("hidden");
                        $("#" + $(this).data("panel")).removeClass("hidden");
                    });
                },

                storeOriginalPanelTitleValues: function () {
                    $(".question-title").each(function () {
                        var questionId = $(this).closest(".form-question").data("question-id"),
                            panelTitleValue = { questionId: questionId, panelTitleValue: $(this).html() };
                        marketing.multistepform.originalPanelTitleValues.push(panelTitleValue);
                    });
                },

                handleTargetPanelTitleOverride: function ($panel) {
                    // Reset title to original value
                    $panel.find(".form-question").each(function () {
                        var panelQuestion = $(this);
                        var originalQuestion = marketing.multistepform.originalPanelTitleValues
                            .filter(function (e) {
                                return e.questionId.indexOf(panelQuestion.data("question-id")) >= 0;
                            });

                        $(this).find(".question-title").html(originalQuestion[0].panelTitleValue);
                    });

                    // Now apply any title overrides...
                    for (var a = 0; a < marketing.multistepform.panelTitleVariations.length; a++) {
                        var panelTitleVariation = marketing.multistepform.panelTitleVariations[a],
                            $previousQuestionAnswerElement = $(".form-question[data-question-id='" + panelTitleVariation.previousQuestionId + "']"),
                            previousQuestionAnswer = marketing.multistepform.getSelectedAnswerForQuestion($previousQuestionAnswerElement);

                        if (previousQuestionAnswer === undefined) {
                            continue;
                        }

                        var overrideAnswerList = panelTitleVariation.previousQuestionAnswer.split('|');
                        for (var b = 0; b < overrideAnswerList.length; b++) {
                            if (previousQuestionAnswer.toLowerCase() === overrideAnswerList[b].toLowerCase()) {
                                $(".form-question[data-question-id='" + panelTitleVariation.thisQuestionId + "']")
                                    .find(".question-title")
                                    .html(panelTitleVariation.title);
                            }
                        }
                    }
                },

                handleTargetPanelDestinationOverride: function ($nextPreviousButton) {
                    // Currently, can only handle single question/answer-per-panel override.
                    var $question = $nextPreviousButton.closest(this.selectors.formStep).find(".form-question:first");
                    for (var a = 0; a < this.panelOverrideData.length; a++) {
                        var panelOverride = this.panelOverrideData[a];

                        if (panelOverride.thisQuestionId !== $question.data("question-id")) {
                            continue;
                        }

                        var currentQuestionAnswer = this.getSelectedAnswerForQuestion($question).toLowerCase();
                        var $previousQuestionAnswerElement = $(".form-question[data-question-id='" + panelOverride.previousQuestionId + "']");
                        var previousQuestionAnswer = this.getSelectedAnswerForQuestion($previousQuestionAnswerElement);
                        var previousQuestionAnswerList = panelOverride.previousQuestionAnswer.toLowerCase().split("|");
                        var currentQuestionAnswerList = panelOverride.thisQuestionAnswer.toLowerCase().split("|");

                        if (currentQuestionAnswerList.indexOf(currentQuestionAnswer) >= 0 && panelOverride.previousQuestionAnswer === "") {
                            return "panel-" + panelOverride.nextQuestionPanel.replace(/ /g, "-");
                        }

                        if (currentQuestionAnswerList.indexOf(currentQuestionAnswer) >= 0 && previousQuestionAnswerList.indexOf(previousQuestionAnswer) >= 0) {
                            return "panel-" + panelOverride.nextQuestionPanel.replace(/ /g, "-");
                        }
                    }
                },

                getSelectedAnswerForQuestion: function ($question) {
                    // Check any radiobutton lists on the form step:
                    var $panel = $question.closest(this.selectors.formStep);

                    var radioButtonGroups = $.unique($panel.find("input[type='radio']")
                        .map(function () { return this.name; }));

                    for (var c = 0; c < radioButtonGroups.length; c++) {
                        var checkedVal = $("input[name='" + radioButtonGroups[c] + "']:checked").val();
                        if (checkedVal !== undefined
                            && !$("input[name='" + radioButtonGroups[c] + "']").closest(".form-question").hasClass("hidden")) {
                            return checkedVal;
                        }
                    }

                    // Check any dropdowns on the form step:
                    var selectAnswer = $panel.find("select").not(".hidden");
                    if (selectAnswer.length > 0) {
                        var $selectedValue = $(selectAnswer[0]).children("option:selected").val();
                        if ($selectedValue !== "") {
                            return $selectedValue;
                        }
                    }
                },

                parseAlertAnswers: function () {
                    $("span[data-alert-values]").each(function () {
                        var spanElement = $(this),
                            alertValues = $(this).data("alert-values");

                        if (alertValues === "") {
                            return;
                        }

                        var values = alertValues.split("&");
                        for (var i = 0; i < values.length; i++) {
                            var kvp = values[i].split("=");
                            var obj = {
                                questionId: spanElement.closest(".form-question").data("question-id"),
                                parent: spanElement.closest(marketing.multistepform.selectors.formStep).prop("id"),
                                alertValue: kvp[0],
                                alertText: decodeURIComponent(kvp[1] === undefined ? "" : kvp[1].replace(/\+/g, " "))
                            };
                            marketing.multistepform.alertValues.push(obj);
                        }
                    });
                },

                initPanelChecking: function () {
                    $(document).on("change", "input[type='radio'], select", { modRef: this }, function (e) {
                        var modRef = e.data.modRef;

                        var $formStepElement = $(this).closest(modRef.selectors.formStep);
                        var $formQuestion = $(this).closest(".form-question");
                        var selectedValue = $(this).val();

                        var alertValuesFound = modRef.alertValues
                            .filter(function (e) {
                                return e.questionId === $formQuestion.data("question-id") && e.alertValue.toLowerCase().indexOf(selectedValue.toLowerCase()) >= 0;
                            });

                        // set next to not allowed regardless of circumstances. It will be the job of the checking code in the validateStep function to re-enable this
                        $formStepElement.find(".form-step-next").prop("disabled", "disabled");

                        if (alertValuesFound.length >= 1) {
                            modRef.showPopup(alertValuesFound.map(function (e) { return e.alertText; }).join("<br/>"));
                        }

                        modRef.validateStep($formStepElement, $(this));
                    });
                },

                showPopup: function (message) {
                    var popupWindow = $("<div/>").kendoWindow({ title: "Notice", resizable: false, modal: true });
                    popupWindow.data("kendoWindow").content($("#popup-message").html()).center().open();

                    $(".confirm-message").html(message);

                    popupWindow.find("#ok-confirm").click(function () { popupWindow.data("kendoWindow").close(); }).end();
                },

                // Check all questions of a form step are valid/have been answered:
                validateStep: function ($formStepElement, $input) {
                    var validAnswerCount = 0,
                        $selector = $formStepElement.find(".form-question > div[data-ismandatory='true']").parent();

                    // Check for dependent questions:
                    if ($input !== undefined && $input.val() !== "") {
                        var questionsWithDependencies = $formStepElement.find("div[data-dependent-question='" + $input.closest(".form-question").data("question-id") + "']");
                        questionsWithDependencies.each(function () {
                            $(this).addClass("hidden");

                            var dependentQuestionAnswer = $(this).data("dependent-question-answer").toLowerCase();
                            if (dependentQuestionAnswer.indexOf($input.val().toLowerCase()) > -1 || dependentQuestionAnswer === "") {
                                $(this).removeClass("hidden");
                            }
                        });
                    }

                    // Check any radiobutton lists on the form step:
                    var radioButtonGroups = $.unique($selector.find("input[type='radio']")
                        .map(function () { return this.name; }));

                    for (var c = 0; c < radioButtonGroups.length; c++) {
                        if ($("input[name='" + radioButtonGroups[c] + "']:checked").val() !== undefined
                            && !$("input[name='" + radioButtonGroups[c] + "']").closest(".form-question").hasClass("hidden")) {
                            validAnswerCount++;
                        }
                    }

                    // Check any dropdowns on the form step:
                    var selectAnswer = $selector.find("select").not(".hidden");
                    if (selectAnswer.length > 0) {
                        if ($(selectAnswer[0]).children("option:selected").val() !== "") {
                            validAnswerCount++;
                        }
                    }

                    var requiredValidAnswerCount = $formStepElement.find(".form-question:not('.hidden') > div[data-ismandatory='true']").length;

                    if (requiredValidAnswerCount === validAnswerCount || requiredValidAnswerCount === 0) {
                        // allow progress and enable the next button:
                        $formStepElement.find(".form-step-next").prop("disabled", "");
                    }
                }
            }
        }
    );
}(jQuery));;
var marketing = marketing ? marketing : {};

(function ($) {
    $.extend(marketing,
        {
            navigation: {
                exclusionList: [],
                cookieTriggerName: "iscontentredirect",
                cookieReferrerUrlName: "referrer",

                /// Deals with content redirect referral URL for Adobe Analytics (using the global 's' variable)
                /// This mechanism uses cookies to help with this. It should be a one shot deal, so it needs to cleanup 
                /// after itself to prevent pollution on pages without a content redirect happening.
                initContentReferrer: function () {
                    if (Cookies.get(this.cookieTriggerName) !== "y") {
                        return;
                    }

                    var referrerUrl = Cookies.get(this.cookieReferrerUrlName);
                    if (referrerUrl === "undefined") {
                        return;
                    }

                    if (typeof s !== "undefined") {
                        s.referrer = referrerUrl;
                    }

                    if (typeof digitalData !== "undefined") {

                        digitalData.page.pagePrevious = referrerUrl;
                        digitalData.page.pageReferrer = (new URL(referrerUrl).hostname);
                    }

                    Cookies.remove(this.cookieReferrerUrlName);
                    Cookies.remove(this.cookieTriggerName);
                },

                initDynamicLinks: function (anchorListSelector, appendToContainer, exclusionList) {
                    if (anchorListSelector === "" || anchorListSelector === undefined) {
                        return;
                    }

                    if (appendToContainer === "" || appendToContainer === undefined) {
                        return;
                    }

                    if (exclusionList !== undefined) {
                        this.exclusionList = exclusionList.split(",");
                    }

                    dynamicLinkCount = this.setupDynamicLinkDisplay(anchorListSelector, appendToContainer);
                    this.setupDynamicLinkEvents(anchorListSelector);

                    return dynamicLinkCount;
                },

                setupDynamicLinkDisplay: function (anchorListSelector, appendToContainer) {
                    var anchorList = $(anchorListSelector).map(function (i, o) {
                        var $closestRid = $(o).closest("[data-rid]");
                        if($closestRid === undefined){
                            return;
                        }
                        if ($closestRid.data("rid") === undefined) {
                            return;
                        }

                        if (marketing.navigation.exclusionList.indexOf($closestRid.data("rid").toLowerCase()) < 0
                            && $(o).text().trim() !== "") {
                                return $(o).text().trim();
                        }
                    });

                    if (anchorList.length > 3) {
                        var col1 = anchorList.filter(function (index, headerText) { return index % 2 === 0; }),
                            col2 = anchorList.filter(function (index, headerText) { return index % 2 !== 0; }),
                            templateData = { anchorItemList1: col1, anchorItemList2: col2 };

                        $("#two-column").tmpl({ data: templateData }).appendTo(appendToContainer);
                    } else {
                        var templateData = { anchorItemList: anchorList };
                        $("#single-column").tmpl({ data: templateData }).appendTo(appendToContainer);
                    }

                    return anchorList.length;
                },

                setupDynamicLinkEvents: function (anchorListSelector) {
                    $(document).on("click", ".dynamic-link", function () {
                        var selector,
                            containsSelect = ':contains("' + $(this).text() + '")';

                        if (anchorListSelector.indexOf(",") > -1) {
                            selector = anchorListSelector.replace(/, /g, containsSelect + ", ") + containsSelect;
                        } else {
                            selector = anchorListSelector + containsSelect;
                        }

                        var target = $(selector);
                        if (target.length) {
                            $('html,body').animate({ scrollTop: target.offset().top - 50 }, 700);
                        }
                    });
                }
            }
        })
}(jQuery));;
var marketing = marketing ? marketing : {};

(function ($) {
    $.extend(marketing,
        {
            podcast: {
                podcastInitialized: false,
                analyticsProviders: [],

                init: function () {
                    this.initPlayerEvents();

                },

                initPlayerEvents: function () {
                    $("audio").each(function () {
                        var audioElement = document.getElementById($(this).prop("id"));
                        audioElement.onloadedmetadata = function () {
                            marketing.podcast._setupPlayer(audioElement, $(this).prop("id"), $(this).data("title"));
                        }
                    });
                },

                play: function (o) {
                    var id = o.currentTarget.id;
                    var analyticsProvider = $.grep(marketing.podcast.analyticsProviders, function (e) { return e.playerName === id; });

                    if (analyticsProvider[0].provider._mediaHeartbeat._isInSession() === undefined) {
                        var mediaObject = analyticsProvider[0].provider.mediaObject;
                        analyticsProvider[0].provider._mediaHeartbeat.trackSessionStart(mediaObject, {});
                    }
                    analyticsProvider[0].provider._mediaHeartbeat.trackPlay();
                },

                pause: function (o) {
                    var id = o.currentTarget.id;

                    var analyticsProvider = $.grep(marketing.podcast.analyticsProviders, function (e) { return e.playerName.toString() === id.toString(); });
                    if (analyticsProvider.length === 0) {
                        return;
                    }
                    analyticsProvider[0].provider._mediaHeartbeat.trackPause();
                },

                ended: function (o) {
                    var id = o.currentTarget.id;

                    var analyticsProvider = $.grep(marketing.podcast.analyticsProviders, function (e) { return e.playerName.toString() === id.toString(); });
                    if (analyticsProvider.length === 0) {
                        return;
                    }
                    analyticsProvider[0].provider._mediaHeartbeat.trackComplete();
                    analyticsProvider[0].provider._mediaHeartbeat.trackSessionEnd();
                },

                _setupPlayer: function (audioElement, id, podcastTitle) {
                    var provider = new marketing.podcast.adobePodcastAnalyticsProvider(audioElement, "HTML5 Podcast", podcastTitle, audioElement.duration, podcastTitle);
                    marketing.podcast.analyticsProviders.push({ playerName: id, provider: provider });

                    audioElement.addEventListener('play', marketing.podcast.play);
                    audioElement.addEventListener('pause', marketing.podcast.pause);
                    audioElement.addEventListener('ended', marketing.podcast.ended);
                },

                _getCurrentPlaybackTime: function (player) {
                    return player.currentTime;
                },

                adobePodcastAnalyticsProvider: function (player, playerName, podcastTitle, duration, podcastId) {
                    var self = this;

                    if (!player) {
                        throw new Error("Illegal argument. Player reference cannot be null.")
                    }
                    this._player = player;
                    this._playerName = playerName;
                    this._currentTime = 0;
                    this._mediaDelegate = new MAO.MediaHeartbeatDelegate();

                    this.mediaObject = MAO.MediaHeartbeat.createMediaObject(podcastTitle, "'" + podcastId + "'", duration, "PODCAST", "Audio");
                    this.mediaObject.mediaType = "Audio";
                    this._mediaDelegate.getCurrentPlaybackTime = function () { return marketing.podcast._getCurrentPlaybackTime(player); };     // heartbeat needs an initial value

                    //var mediaObject = this.mediaObject;

                    MAO.MediaHeartbeat.getInstance(this._mediaDelegate, { playerName: playerName })
                        .then(function (instance) {
                            self._mediaHeartbeat = instance;
                        }).catch(function (err) {
                            console.log(err);
                        });
                }
            }
        })
}(jQuery));;
/// **************************************************************** ///
/// ******************** ROLE FINDER FAVOURITES ******************** ///
/// **************************************************************** ///

// Note, this library contains methods for both the role search results and role details pages
var marketing = marketing ? marketing : {};

(function ($) {
    $.extend(marketing,
        {
            rolefinder: {
                faves: [],

                initRoleFavouriteList: function () {
                    this.initFavouriteEvents();
                    this.loadFavourites();

                    $(document).ajaxComplete(function () {
                        marketing.rolefinder.markFavouritesInDOM();
                    });
                },

                initRoleDetail: function () {
                    marketing.rolefinder.appendAnalyticsIdToDigitalDataObject();
                },

                initRoleFavouriteDetail: function () {
                    marketing.rolefinder.initFavouriteEventsDetail();

                    var storedFavourites = localStorage.getItem('storedFavsLocal');
                    if (storedFavourites === null) {
                        return;
                    }

                    marketing.rolefinder.faves = JSON.parse(storedFavourites);
                    this.markFavouritesInDOM();
                },

                /// Initialises favourite roles events for the role detail page
                initFavouriteEventsDetail: function () {
                    $(document).on("click", ".fa-star-o", function () {
                        var title = $('.hero-title > h1').text().trim(),
                            url = window.location.href,
                            analyticsId = $(this).data("analyticsid");

                        $(this).removeClass("fa-star-o").addClass("fa-star");

                        marketing.rolefinder.writeFavouriteRoleToLocalStorage(title, url, analyticsId);
                    });

                    $(document).on("click", ".fa-star", function () {
                        var analyticsId = $(this).data("analyticsid");

                        $(this).removeClass("fa-star").addClass("fa-star-o");
                        marketing.rolefinder.removeFavouriteRoleFromLocalStorage(analyticsId);
                    });
                },

                appendAnalyticsIdToDigitalDataObject: function () {
                    var analyticsId = $(".favStar").data("analyticsid");
                    if (analyticsId === undefined) {
                        return;
                    }

                    $.extend(true, digitalData, { page: { roleId: analyticsId.toString() } });
                },

                writeFavouriteRoleToLocalStorage: function (title, url, analyticsId) {
                    if (title === "undefined" || title === null) {
                        return;
                    }

                    if (url === "undefined" || url === null) {
                        return;
                    }

                    if (analyticsId === "undefined" || analyticsId === null) {
                        return;
                    }

                    for (var i = this.faves.length - 1; i >= 0; --i) {
                        if (this.faves[i].analyticsId === analyticsId) {
                            return;     // already in the list somehow
                        }
                    }

                    var favouriteObject = { 'title': title, 'url': url, 'analyticsId': analyticsId };

                    this.faves.push(favouriteObject);
                    localStorage.setItem("storedFavsLocal", JSON.stringify(this.faves));
                },

                trackFavouriteEventWithSatellite: function (title, analyticsId, isFavourite) {
                    marketing.datalayer.pushSatelliteEvent("jobFav", JSON.stringify({ "jobRole": title, "updateType": isFavourite ? "favourite" : "unfavourite", "jobID": analyticsId }));
                },

                removeFavouriteRoleFromLocalStorage: function (analyticsId) {
                    if (analyticsId === "undefined" || analyticsId === null) {
                        return;
                    }

                    for (var i = marketing.rolefinder.faves.length - 1; i >= 0; --i) {
                        if (marketing.rolefinder.faves[i].analyticsId === analyticsId) {
                            marketing.rolefinder.faves.splice(i, 1);
                            localStorage.setItem("storedFavsLocal", JSON.stringify(marketing.rolefinder.faves));
                        }
                    }
                },

                ///Initialises favourite roles events for the role search/results page
                initFavouriteEvents: function () {
                    $(document).on("click", ".fa-star-o", function () {
                        var closestItem = $(this).closest('.role-list__item');
                        var title = closestItem.find('.heading').text(),
                            url = closestItem.find('a').attr('href'),
                            analyticsId = closestItem.find('.heading').data("analyticsid");

                        marketing.rolefinder.writeFavouriteRoleToLocalStorage(title, url, analyticsId);
                        marketing.rolefinder.trackFavouriteEventWithSatellite(title, analyticsId, true);
                        marketing.rolefinder.loadFavourites();

                        if ($(".role-favourite-list").hasClass("closeFilter")) {
                            $(".role-favourite-list").removeClass("closeFilter")
                            $(".role-favourite-list").parent().find(".header-arrow").removeClass("downArrow");
                        }
                    });

                    $(document).on("click", ".fa-star, .fa-trash", function () {
                        //remove from favourites
                        var title = $(this).closest('.role-list__item').find('.heading').text(),
                            analyticsId = $(this).data("analyticsid");
                        $(".fa-star[data-analyticsid='" + analyticsId + "']").removeClass("fa-star").addClass("fa-star-o");

                        marketing.rolefinder.removeFavouriteRoleFromLocalStorage(analyticsId);
                        marketing.rolefinder.trackFavouriteEventWithSatellite(title, analyticsId, false);
                        marketing.rolefinder.loadFavourites();
                    });
                },

                /// Loads favourite roles into the list for the role search/results page
                loadFavourites: function () {
                    var storedFavourites = localStorage.getItem('storedFavsLocal');
                    if (storedFavourites === null) {
                        return;
                    }

                    marketing.rolefinder.faves = JSON.parse(storedFavourites);
                    if (marketing.rolefinder.faves.length === 0) {
                        $(".favourites-list").addClass("hidden");
                        return;
                    }

                    $("#favResults").empty();

                    $("#favRoleTemplate")
                        .tmpl(marketing.rolefinder.faves)
                        .appendTo("#favResults");

                    this.markFavouritesInDOM();

                    $(".favourites-list").removeClass("hidden");
                },

                /// Matches all items in the local storage array to role search/results page results by analytic id
                /// Any matches found in the results list have their star highlighted.
                markFavouritesInDOM: function () {
                    for (var i = 0; i < this.faves.length; i++) {
                        $(".favStar[data-analyticsid='" + this.faves[i].analyticsId + "']")
                            .removeClass("fa-star-o")
                            .addClass("fa-star");
                    }
                }
            }
        });
}(jQuery));;
/*****************************************************************************/
/* marketing.storyblok.events.js                                             */
/*                                                                           */
/* Functionality for making all (marketing, not CP) events (storyblok style) */
/*****************************************************************************/

var marketing = marketing ? marketing : {};

(function ($) {
    $.extend(marketing,
        {
            storyblok:
            {
                events: {
                    eventSearchEndpoint: '/api/eventsearch',
                    rightArrowHtml: '<svg xmlns="https://www.w3.org/2000/svg" width="14" height="22" viewBox="0 0 14 22"><path d="M0.879 3L3 0.879 13.121 11 3 21.121 0.879 19 8.879 11z"></path></svg>',        // TODO: Should be global!
                    stories:[],
                    map: null,
                    homeMarker: null,
                    initZoomLevel: 12,
                    
                    bindInfoWindow: function (marker, map, infowindow, html) {
                        marker.addListener('click', function() {
                            infowindow.setContent(html);
                            infowindow.open(map, this);
                        });
                    },

                    initMap: function (stories, query) {
                        var latlng = new google.maps.LatLng(query.lat, query.lng);
                        //console.log("Location :: " + query.lat + " - " + query.lng);
                        
                        map = new google.maps.Map(document.getElementById('map_pins'), {
                            zoom: marketing.storyblok.events.initZoomLevel,
                            center: latlng,
                            mapTypeId: google.maps.MapTypeId.ROADMAP
                        });
                        var infowindow = new google.maps.InfoWindow();
                        
                        // Home marker
                        if(marketing.storyblok.events.homeMarker === null){
                            marketing.storyblok.events.homeMarker = new google.maps.Marker({
                                position: latlng,
                                map: map,
                                icon: {
                                    url: "https://maps.google.com/mapfiles/ms/icons/blue-dot.png"
                                }, 
                                visible: true
                            });
                        }
                        else{
                            marketing.storyblok.events.homeMarker.setPosition(latlng);
                            marketing.storyblok.events.homeMarker.setVisible(true);
                            marketing.storyblok.events.homeMarker.setMap(map);
                        }                        

                        var marker, i;
                        /* Hack for multiple pins on same location */
                        var baseJitter = 0.0000000001;
                        var clusterJitterMax = 0.0000001;
                        var rnd = Math.random;
                        var markers = [];

                        for (i = 0; i < stories.length; i++) {
                            var story = stories[i];
                            if (story.content.Location === "undefined") return;

                            var loc = story.content.Location[0];

                            var baseLon = loc.longitude - baseJitter / 2 + rnd() * baseJitter;
                            var baseLat = loc.latitude - baseJitter / 2 + rnd() * baseJitter;
                            var clusterJitter = clusterJitterMax * rnd();                            
                            
                            var lng = baseLon - clusterJitter + rnd() * clusterJitter;
                            var lat = baseLat - clusterJitter + rnd() * clusterJitter;                            
                            
                            marker = new google.maps.Marker({
                                position: new google.maps.LatLng(lat, lng),
                                map: map
                            });
                            markers.push(marker);
                            
                            var contentString = '<div id="content" style="width: 200px; height: 150px;">' + 
                                                    '<h6>' + story.name + '</h6>' +
                                                    '<p>' + story.content.leadUnit + '</p>' +
                                                    //'<p>Command - ' + story.content.command + '</p>' +
                                                    '<div>' + loc.address1 + ' ' + loc.address2 + '<br />' + loc.city + ' ' + loc.postcode + '</div>' + 
                                                '</div>';
                            marketing.storyblok.events.bindInfoWindow(marker, map, infowindow, contentString);
                        }
                        
                        /* Set Zoom level of the map */
                        if(stories.length){
                            var bounds = new google.maps.LatLngBounds();
                            bounds.extend(latlng);
                            for (var i = 0; i < markers.length; i++) {
                             bounds.extend(markers[i].position);
                            }
                            map.fitBounds(bounds);
                            
                            //marketing.storyblok.events.initZoomLevel = map.getZoom();
                            // set a minimum zoom 
                            google.maps.event.addListenerOnce(map, 'bounds_changed', function(event) {
                              //this.setZoom(map.getZoom() - 2);
                              if (this.getZoom() === 0) {
                                //this.setZoom(marketing.storyblok.events.initZoomLevel); // Initial zoom level
                              }
                              
                              if (this.getZoom() > 17) {
                                this.setZoom(17);
                              }
                            });
                            // Show only the check box is checked
                            if($('#mapToggle').is(':checked')){
                                $('#map_pins').show();
                            }
                            
                            $('#no-results').hide();
                        }
                        else{
                            $('#map_pins').hide();
                            $('#no-results').show();
                            $('#mapToggle').prop('checked', false); // Unchecks it
                        }
                    },
                    
                    showMap: function(){
                        if(marketing.storyblok.events.map){
                            marketing.storyblok.events.map.setZoom(marketing.storyblok.events.initZoomLevel);
                        }
                    },
                    
                    getLatlong : function() {
                        var address = document.getElementById('location-input').value;
                        var addressClean = address.replace(/\s+/g, '+');

                        marketing.geolocation.geolocatePosition(marketing.storyblok.events.searchCentres, addressClean);

                    },
                    
                    buildAndStoreSearchQuery: function (geolocatedData) {
                        var lat = 0, lng = 0;
                        if (!geolocatedData) {
                            var qsLat = cp.getUrlParameter("lat");
                            var qsLng = cp.getUrlParameter("lng");
                
                            if (qsLat) {
                                lat = qsLat;
                            }
                
                            if (qsLng) {
                                lng = qsLng;
                            }
                        } else {
                            lat = geolocatedData.results[0].position.lat;
                            lng = geolocatedData.results[0].position.lon;
                        }
                        
                        var data = {
                            lat: lat,
                            lng: lng,
                            radius: 50,
                            pageNumber: marketing.mapSearch.pageNumber
                        };
                
                        sessionStorage.setItem("map-sb-query", JSON.stringify(data));
                        return data;;
                    },
                    
                    compare: function ( a, b ) {
                      if ( a.content.distance < b.content.distance ){
                        return -1;
                      }
                      if ( a.content.distance > b.content.distance ){
                        return 1;
                      }
                      return 0;
                    },
                    
                    rad: function(x) {
                      return x * Math.PI / 180;
                    },
                    
                    getDistance: function(p1, p2) {
                      var R = 6378137; // Earth’s mean radius in meter
                      var dLat = marketing.storyblok.events.rad(p2.lat - p1.lat);
                      var dLong = marketing.storyblok.events.rad(p2.lng - p1.lng);
                      var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
                        Math.cos(marketing.storyblok.events.rad(p1.lat)) * Math.cos(marketing.storyblok.events.rad(p2.lat)) *
                        Math.sin(dLong / 2) * Math.sin(dLong / 2);
                      var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
                      var d = R * c;
                      return d*0.000621371192; // returns the distance in miles return i*0.000621371192;
                    },                    
                    
                    searchCentres: function (data) {
                        var query = marketing.storyblok.events.buildAndStoreSearchQuery(data);
                        var range = document.getElementById("range").value;
                        
                        var stories = [];
                        // Sort the data
                        marketing.storyblok.events.stories.forEach(function(entry) {
                            var story = entry;
                            // Find the distance
                            var p1 = {lat : query.lat, lng: query.lng};
                            var p2 = {lat : entry.content.Location[0].latitude, lng: entry.content.Location[0].longitude};
                            story.content.distance = marketing.storyblok.events.getDistance(p1, p2);
                            
                            if(story.content.distance <= range){
                                stories.push(story);
                            }
                        });
                        stories.sort(marketing.storyblok.events.compare);

                        // Render the data
                        marketing.storyblok.events.renderEvents(stories);
                        // Init Locations Map
                        marketing.storyblok.events.initMap(stories, query);
                    },  

                    sortByDistance : function(){
                        var loc = marketing.storyblok.events.getLatlong();
                    },
                    
                    init: function () {

                        //marketing.storyblok.events.setupMap();
                        marketing.storyblok.events.searchEvents();
                        marketing.storyblok.events.initFilterEvents();
                        //marketing.storyblok.events.initModal();
                        //marketing.map.initMap("eventmap", "", 9);
                    },

                    resizeImage: function (image) {
                        if (image === "") {
                            return "";
                        }

                        var imageService = '//img2.storyblok.com/'
                        var path = image.replace('https://a.storyblok.com', '')
                        return imageService + '900x500' + path
                    },

                    getDate: function (mnt) {
                        var d = new Date();

                        var month = d.getMonth() + 1 + mnt;
                        var day = d.getDate();

                        var output = d.getFullYear() + '-' +
                            (month < 10 ? '0' : '') + month + '-' +
                            (day < 10 ? '0' : '') + day;
                        return output;
                    },

                    addDays: function (date, days) {
                        var result = new Date(date);
                        result.setDate(result.getDate() + parseInt(days));

                        var month = result.getMonth() + 1;
                        var day = result.getDate();

                        var output = result.getFullYear() + '-' +
                            (month < 10 ? '0' : '') + month + '-' +
                            (day < 10 ? '0' : '') + day;
                        return output;
                    },

                    groupData: function (data) {
                        var result = data.reduce(function (r, a) {
                            r[a.content.eventFormat] = r[a.content.eventFormat] || [];
                            r[a.content.eventFormat].push(a);
                            return r;
                        }, Object.create(null));

                        return result;
                    },

                    setupMap: function () {
                        //var requestData = marketing.events._getRequestData();
                        var requestData = { "eventFormat": "all" };

                        $.ajax({
                            type: 'POST',
                            contentType: 'application/json; charset=utf-8',
                            url: marketing.events.eventSearchEndpoint,
                            data: requestData,
                            cache: true
                        })
                            .done(function (response) {
                                $("#map-settings").data("google-maps-key", response.GoogleMapsKey);
                                $("#map-settings").data("use-map-functionality", response.UseMapsFunctionality);
                            });
                    },
                    
                    getImage: function(category){
                        var assetUrl = "";
                        switch (category)
                        {
                            case "CommunityGroup":
                                assetUrl = "1024x682/f29c0c6090/engt-community.jpg";
                                break;
                            case "School":
                                assetUrl = "1214x850/d3a6c4a554/engt-schools.jpg";
                                break;
                            case "Employer":
                                assetUrl = "1275x849/ba9ae13beb/engt-employer.jpg";
                                break;
                            case "Cadets":
                                assetUrl = "1024x683/e3bf3db920/engt-cadets.jpg";
                                break;
                            case "YouthGroup":
                                assetUrl = "1800x1319/b6bf09d6e2/engt-youth.JPG";
                                break;
                            case "KeyLeaderStakeholder":
                                assetUrl = "1490x885/a1255fa1e0/engt-kle.jpg";
                                break;
                            case "GeneralPublic":
                                assetUrl = "1512x2016/73d2f5fd17/engt-general-public.jpg";
                                break;
                            default:
                                assetUrl = "1512x2016/73d2f5fd17/engt-general-public.jpg";
                        }
                        return "background-image: url('https://img2.storyblok.com/0x800/filters:focal(450x500:550x600)/f/88791/" + assetUrl + "');";
                    },
                    
                    getEventUrl: function(eventFormat, type, uceCode){
                        var eventUrl = "";
                        if(eventFormat !== "Virtual"){
                            switch (type)
                            {
                                case "Engagement":
                                    eventUrl = "https://apply.army.mod.uk/eoi/event1?eventcode=" + uceCode;
                                    break;
                                case "Recruiting":
                                    eventUrl = "https://apply.army.mod.uk/eoi/rg1?eventcode=" + uceCode;
                                    break;
                                default:
                                    eventUrl = "";
                            }
                        }
                        return eventUrl;
                    },
                    
                    toggleMap: function(state){
                        if(state){
                            $(".modal").find("#map").show();
                            $(".modal").find(".map__info").addClass('showModalMap');
                            $(".modal").find(".modal-content").addClass('narrowModalWidth');
                            $(".modal").find(".map__info").removeClass('hideModalMap');
                            $(".modal").find(".modal-content").removeClass('wideModalWidth');
                            
                        }
                        else{
                            $(".modal").find("#map").hide();
                            $(".modal").find(".map__info").removeClass('showModalMap');
                            $(".modal").find(".modal-content").removeClass('narrowModalWidth');
                            $(".modal").find(".map__info").addClass('hideModalMap');
                            $(".modal").find(".modal-content").addClass('wideModalWidth');
                        }
                    },
                    
                    initModal: function () {
                        $(document).on("click", ".event-tile", function () {
                            var eventData = $(this).find(".event-data");

                            if (eventData.length === 0) {
                                return;
                            }

                            var title = $(eventData[0]).data("title"),
                                description = $(eventData[0]).data("description"),
                                address = $(eventData[0]).data("address"),
                                postcode = $(eventData[0]).data("postcode"),
                                dates = $(eventData[0]).data("dates"),
                                lat = $(eventData[0]).data("lat"),
                                lng = $(eventData[0]).data("lng"),
                                startTime = $(eventData[0]).data("starttime"),
                                endTime = $(eventData[0]).data("endtime"),
                                mapLinkUrl = $(eventData[0]).data("linkurl"),
                                mapLinkText = $(eventData[0]).data("linktext"),
                                mapAltText = $(eventData[0]).data("alttext"),
                                eventFormat = $(eventData[0]).data("eventformat"),
                                eventCategory = $(eventData[0]).data("eventcategory"),
                                eventType = $(eventData[0]).data("eventtype"),
                                command = $(eventData[0]).data("command"),
                                uceCode = $(eventData[0]).data("ucecode"),
                                image = marketing.storyblok.events.getImage(eventCategory);

                            $(".modal").find(".map__info-title").html(title);
                            
                            $(".modal").find(".map__info-inner").attr("style", image);
                            
                            if (eventFormat !== "Virtual") {
                                $(".modal").find(".map__info-address").html(address + "<br/>" + postcode);
                                $(".modal").find(".map__info-address").show();
                                marketing.storyblok.events.toggleMap(true);
                            } else {
                                $(".modal").find(".map__info-address").hide();
                                marketing.storyblok.events.toggleMap(false);
                            }

                            $(".modal").find(".map__info-date").html("<strong>" + dates + "</strong><br/>" + startTime + " - " + endTime);

                            $(".modal").find(".map__info-description").html(description);
                            
                            // Modal Link buttons
                            var primaryUrl = marketing.storyblok.events.getEventUrl(eventFormat, eventType, uceCode);
                            $(".modal").find("#btnPrimary").attr("href", primaryUrl);
                            $(".modal").find("#btnPrimary").html("REGISTER FOR EVENT " + marketing.storyblok.events.rightArrowHtml);
                            if(!primaryUrl){
                                $(".modal").find("#btnPrimary").attr("style", "display:none !important;");
                            }
                            else{
                                $(".modal").find("#btnPrimary").removeAttr("style");
                            }
                            
                            //if(!mapLinkText) { 
                                if(eventFormat === "Virtual"){
                                    mapLinkText = "JOIN THIS EVENT"; 
                                }
                                else{
                                    mapLinkText = "MORE INFO"; 
                                }
                            //}
                            $(".modal").find("#btnSecondary").attr("href", mapLinkUrl);
                            $(".modal").find("#btnSecondary").attr("alt", mapAltText);
                            $(".modal").find("#btnSecondary").html(mapLinkText + " " + marketing.storyblok.events.rightArrowHtml);
                            if(!mapLinkUrl){
                                $(".modal").find("#btnSecondary").attr("style", "display:none !important;")
                            }
                            else{
                                $(".modal").find("#btnSecondary").removeAttr("style");
                            }
                            
                            
                            $(".modal").find(".map__info").removeClass("wide");
                            $(".modal").find(".map__wrap").removeClass("narrow");

                            if (lat === undefined && lng === undefined) {
                                $(".modal").find(".map__info").addClass("wide");
                                $(".modal").find(".map__wrap").addClass("narrow");
                                $(".modal").toggleClass("open");
                                return;
                            }

                            if (postcode !== undefined) {
                                $(".modal").find(".map-directions").prop("href", "https://www.google.co.uk/maps/dir//" + postcode);
                            }
                            else{
                                $(".modal").find(".map-directions").attr("style", "display:none !important;")
                            }

                            $(".modal").find(".map__info-command").html("Unit - " + command);
                            // marketing.mapSearch.initDetail(lat, lng, "100%");

                            var markerPins = [];
                            markerPins.push({ lat: lat, lng: lng });

                            //marketing.mapSearch.mapLat = lat;
                            //marketing.mapSearch.mapLng = lng;
                            //marketing.map.addPinsByArray(markerPins);

                            //marketing.mapSearch.setMapDisplay();
                            if (!$(".modal").hasClass("open")) {
                                $(".modal").toggleClass("open");
                            }
                            $(".modal")[0].style.setProperty('display', 'block', 'important');
                        });

                        $(document).on("click", ".modal-close", function () {
                            $(".modal").toggleClass("open");
                            $(".modal").attr("display", "none");
                            $(".modal")[0].style.setProperty('display', 'none', 'important');
                        });
                    },
                    
                    _geolocateCallback: function (geolocationData) {
                        marketing.storyblok.events.searchCentres(geolocationData);
                    },                    
                    
                    renderEvents: function(stories) {
                        // Render all the results
                        var $eventListContainer = $(".event-list");
                        $eventListContainer.empty();
                        $("#event-item-template").tmpl(stories).appendTo($eventListContainer);

                        if (stories.length === 0) {
                            $(".result-count").text("0 Events Found");
                        } else {
                            var selectedDays = $(".days-filter :selected").text();
                            $(".result-count-head").text("Showing events in the next " + selectedDays + " days.");
                        }
                    },

                    searchEvents: function () {
                        var evFormat = sessionStorage.getItem("EventFormat");
                        if(evFormat === null) evFormat = "Virtual";
                        
                        var filter = "";
                        $('#loader').show();

                        var startDate = marketing.storyblok.events.getDate(0);
                        if (startDate !== "") {
                            filter += "&filter_query[startDate][gt_date]=" + startDate;
                        }

                        var selectedDays = $(".days-filter :selected").text();
                        var endDate = marketing.storyblok.events.addDays(startDate, selectedDays);
                        if (endDate !== "") {
                            filter += "&filter_query[endDate][lt_date]=" + endDate;
                        }

                        var eventFormatFilter = "";
                        if (evFormat === "undefined") evFormat = $("#filter-eventFormat > li.active").text();

                        if (evFormat == "Virtual")
                            eventFormatFilter = "Virtual,Blended";
                        else
                            eventFormatFilter = "FacetoFace,Blended";

                        filter += "&filter_query[eventFormat][in]=" + eventFormatFilter;

                        filter += "&per_page=100"; // Return max results
                        filter += "&sort_by=content.startDate:asc"; // Sorting
                        var versionCacheVersion = marketing.storyblok.events._getCacheVersion();

                        var url = 'https://api.storyblok.com/v1/cdn/stories?starts_with=meet-your-army&token=9ftlaH0Pkcu4Zbn9DxaSbQtt&cv=' + versionCacheVersion;
                        if (filter !== "") {
                            url += filter;
                        }

                        $.ajax({
                            type: 'GET',
                            url: url,
                            //data: requestData,
                            async: true,
                            crossDomain: true,
                            headers: { "cache-control": "no-cache" }
                        })
                            .done(function (response, status, xhr) {
                                marketing.storyblok.events.stories = response.stories;
                                //Render the data
                                if (evFormat === "Virtual"){
                                    marketing.storyblok.events.renderEvents(response.stories);
                                }
                                else{
                                    // Sort the data and then render
                                    var loc = document.getElementById("location-input");
                                    // Sort the data and then render
                                    if(loc.value === ""){
                                        marketing.geolocation.getUserPosition(marketing.storyblok.events._geolocateCallback);
                                    }
                                    else{
                                        marketing.storyblok.events.sortByDistance();
                                    }
                                }
                            })
                            .complete(function () {
                                $('#loader').hide();
                            });
                        marketing.storyblok.events.initModal();
                    },

                    _getCacheVersion: function () {
                        var cv = "";

                        $.ajax({
                            type: 'GET',
                            url: 'https://api.storyblok.com/v1/cdn/spaces/me?token=9ftlaH0Pkcu4Zbn9DxaSbQtt',
                            async: false,
                            crossDomain: true,
                            headers: { "cache-control": "no-cache" }
                        })
                            .done(function (response) {
                                cv = response.space.version;
                            });

                        return cv;
                    },
                    
                    searchData: function(){
                        var slider = document.getElementById("range");
                        var output = document.getElementById("rangeValue");
                        
                        var radius = document.getElementById("location-radius");
                        var loc = document.getElementById("location-input");
                        
                        var evFormat = sessionStorage.getItem("EventFormat");
                        if(evFormat === null) evFormat = "Virtual";

                        if(evFormat === "Virtual"){
                            marketing.storyblok.events.searchEvents();
                        }
                        else{
                            output.innerHTML = slider.value + " miles";
                            
                            // Sort the data and then render
                            if(loc.value === ""){
                                radius.innerHTML = "Events within " + slider.value + " miles of you";
                                marketing.geolocation.getUserPosition(marketing.storyblok.events._geolocateCallback);
                            }
                            else{
                                radius.innerHTML = "Events within " + slider.value + " miles of " + loc.value;
                                marketing.storyblok.events.sortByDistance();
                            }
                        }
                    },

                    initFilterEvents: function () {
                        $(".filter-dropdown").on("change", function (e) {
                            e.preventDefault();
                            if ($(this).find("option:selected").val() === "") {
                                $(".clear-event-filters").addClass("hidden");
                            } else {
                                $(".clear-event-filters").removeClass("hidden");
                            }
                            marketing.storyblok.events.searchEvents();
                        });

                        $(".clear-filters--link").on("click", function (e) {
                            $(".clear-event-filters").addClass("hidden");

                            $(".filter-dropdown > [class$=-filter]").each(function () {
                                $(this).val("");
                            });
                            marketing.storyblok.events.searchEvents();
                        });
                    },

                    _getFilters: function () {
                        var requestBody = {};

                        requestBody["startDate"] = $("#dateFrom").val();
                        requestBody["endDate"] = $("#dateTo").val();
                        //requestBody["eventFormat"] = $(".filter-dropdown :selected").text()

                        //var anchorList = $("[class$=-filter] option:selected").map(function (i, o) {
                        //    var selectedVal = $(o).val();
                        //    requestBody[$(o).parent().data("prop")] = selectedVal;

                        //});
                        return requestBody;
                    },

                    _getRequestData: function () {
                        var requestBody = {};

                        var anchorList = $("[class$=-filter] option:selected").map(function (i, o) {
                            var selectedVal = $(o).val();
                            requestBody[$(o).parent().data("prop")] = selectedVal;

                        });
                        return JSON.stringify(requestBody);
                    }
                }
            }
        });
}(jQuery));;
/************************************************************************************************************************************/
/* marketing.utility.js                                                                                                             */
/*                                                                                                                                  */
/* Functionality to help random front-end helpers. This is not intended as a dumping ground for miscellaneous methods - keep sparse */
/************************************************************************************************************************************/

var marketing = marketing ? marketing : {};

(function ($) {
    $.extend(marketing,
        {
            utility: {
                scrollToElement: function (el, offset, delay, func) {
                    var offset = offset || 100;
                    var timing = delay || 300;

                    $('html, body').animate({
                        scrollTop: el.offset().top + offset
                    }, timing)
                    .promise()
                    .then(function () {
                        if (func) {
                            func.apply(this);
                        }
                    });
                },

                calculateScrollAmount: function () {
                    var winHeight = $(window).height(),
                        docHeight = $(document).height(),
                        scrollTop = $(window).scrollTop(),
                        trackLength = docHeight - winHeight,
                        pctScrolled = Math.floor(scrollTop / trackLength * 100);

                    return pctScrolled;
                },

                isInViewport: function (elem) {
                    var elemRect = elem.getBoundingClientRect();
                    return (
                        elemRect.top >= 0 &&
                        elemRect.left >= 0 &&
                        elemRect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
                        elemRect.right <= (window.innerWidth || document.documentElement.clientWidth)
                    );
                }
            }
        })
}(jQuery));

var debounce = function (func, wait) {
    var timeout, timestamp;
    var later = function () {
        var last = (new Date()) - timestamp;

        if (last < wait) {
            timeout = setTimeout(later, wait - last);
        } else {
            timeout = null;
            func();
        }
    };

    return function () {
        timestamp = new Date();

        if (!timeout) {
            timeout = setTimeout(later, wait);
        }
    };
};
;
var marketing = marketing ? marketing : {};

(function ($) {
    $.extend(marketing,
        {
            video: {
                youtubeInitialised: false,
                vimeoInitialised: false,
                videoAnalyticsProviders: [],
                playerNames: {
                    youtube: "Youtube Player",
                    vimeo: "Vimeo Player"
                },
                selectors: {
                    youtubeSelector: "www.youtube.com",
                    vimeoSelector: "vimeo.com"
                },

                initAllPlayers: function () {
                    this.youtube.initYoutube();
                    this.vimeo.initVimeo();
                    this.initPlayerEvents();
                },

                initPlayerEvents: function () {
                    $(document).on("click", ".video-popup", function () {
                        var videoId = $(this).find(".video-container > .video-player").data("video-location").split("/")[4];;

                        var analyticsProvider = $.grep(marketing.video.videoAnalyticsProviders, function (e) { return e.playerName === videoId; });

                        if (analyticsProvider.length !== 0){
                            analyticsProvider[0].provider._player.pauseVideo();
                        }
                    });
                },

                youtube: {
                    initYoutube: function () {
                        if (this.youtubeInitialised) {
                            return;
                        }

                        $.getScript("https://www.youtube.com/iframe_api");
                        // This function will only fire once as it is called by Youtube's API once ready:
                        window.onYouTubeIframeAPIReady = function () {
                            $(".video-player[data-video-location*='" + marketing.video.selectors.youtubeSelector + "']").each(function () {
                                var videoLocationSplit = $(this).data("video-location").split("/"),
                                    videoId = videoLocationSplit[videoLocationSplit.length - 1];

                                new YT.Player($(this).prop("id"), {
                                    videoId: videoId,
                                    playerVars: { 'origin': 'apply.army.mod.uk' },
                                    events: {
                                        'onStateChange': marketing.video.youtube.onPlayerStateChange,
                                        'onReady': marketing.video.youtube.onPlayerReady
                                    }
                                });
                            });
                        };

                        marketing.video.youtubeInitialised = true;
                    },

                    onPlayerStateChange: function (event) {
                        var analyticsProvider = $.grep(marketing.video.videoAnalyticsProviders, function (e) { return e.playerName === event.target.getVideoData().video_id; });

                        switch (event.data) {
                            case YT.PlayerState.PLAYING:
                                if (analyticsProvider.length === 0) {
                                    var youtubeAnalyticsProvider = new marketing.video.adobeVideoAnalyticsProvider(event.target, marketing.video.playerNames.youtube);
                                    marketing.video.videoAnalyticsProviders.push({ playerName: event.target.getVideoData().video_id, provider: youtubeAnalyticsProvider });
                                } else {
                                    if (analyticsProvider[0].provider._mediaHeartbeat._isInSession() === undefined) {
                                        var mediaObject = analyticsProvider[0].provider.mediaObject;
                                        analyticsProvider[0].provider._mediaHeartbeat.trackSessionStart(mediaObject, {});
                                    }
                                    analyticsProvider[0].provider._mediaHeartbeat.trackPlay();
                                }

                                break;
                            case YT.PlayerState.ENDED:
                                analyticsProvider[0].provider._mediaHeartbeat.trackComplete();
                                analyticsProvider[0].provider._mediaHeartbeat.trackSessionEnd();
                                break;
                            case YT.PlayerState.PAUSED:
                                analyticsProvider[0].provider._mediaHeartbeat.trackPause();
                                break;
                        }
                    }
                },

                vimeo: {
                    initVimeo: function () {
                        if (this.vimeoInitialised) {
                            return;
                        }

                        this.vimeoInitialised = true;

                        $.getScript("https://player.vimeo.com/api/player.js", function () {
                            $(".video-player[data-video-location*='" + marketing.video.selectors.vimeoSelector + "']").each(function () {
                                var player = new Vimeo.Player($(this).prop("id"), { url: $(this).data("video-location") });

                                player.on('timeupdate', function (data) {
                                    player.getVideoId().then(function (id) {
                                        var analyticsProvider = $.grep(marketing.video.videoAnalyticsProviders, function (e) { return e.playerName === id; });
                                        if (analyticsProvider.length === 0) { return; }

                                        analyticsProvider[0].provider._mediaDelegate.getCurrentPlaybackTime = function () { return data.seconds; };
                                    });
                                });

                                player.on('play', function (data) {
                                    if (data === undefined) {
                                        // skipping vimeo using the video player progress bar seems to render data as undefined by the vimeo library
                                        return;
                                    }

                                    player.getVideoId().then(function (id) {
                                        player.getDuration().then(function (duration) {
                                            player.getVideoTitle().then(function (title) {
                                                var analyticsProvider = $.grep(marketing.video.videoAnalyticsProviders, function (e) { return e.playerName.toString() === id.toString(); });

                                                if (analyticsProvider.length === 0) {
                                                    var vimeoAnalyticsProvider = new marketing.video.adobeVideoAnalyticsProvider(player, marketing.video.playerNames.vimeo, title, duration, id);
                                                    marketing.video.videoAnalyticsProviders.push({ playerName: id, provider: vimeoAnalyticsProvider });
                                                } else {
                                                    if (analyticsProvider[0].provider._mediaHeartbeat._isInSession() === undefined) {
                                                        var mediaObject = analyticsProvider[0].provider.mediaObject;
                                                        analyticsProvider[0].provider._mediaHeartbeat.trackSessionStart(mediaObject, {});
                                                    }
                                                    analyticsProvider[0].provider._mediaHeartbeat.trackPlay();
                                                }
                                            });
                                        });
                                    });
                                });

                                player.on('pause', function (data) {
                                    if (data === undefined) {
                                        // skipping vimeo using the video player progress bar seems to render data as undefined by the vimeo library
                                        return;
                                    }

                                    player.getVideoId().then(function (id) {
                                        var analyticsProvider = $.grep(marketing.video.videoAnalyticsProviders, function (e) { return e.playerName.toString() === id.toString(); });
                                        if (analyticsProvider.length === 0) { return; }
                                        analyticsProvider[0].provider._mediaHeartbeat.trackPause();
                                    });
                                });

                                player.on('ended', function (data) {
                                    if (data === undefined) {
                                        // skipping vimeo using the video player progress bar seems to render data as undefined by the vimeo library
                                        return;
                                    }

                                    player.getVideoId().then(function (id) {
                                        var analyticsProvider = $.grep(marketing.video.videoAnalyticsProviders, function (e) { return e.playerName.toString() === id.toString(); });
                                        if (analyticsProvider.length === 0) { return; }
                                        analyticsProvider[0].provider._mediaHeartbeat.trackComplete();
                                        analyticsProvider[0].provider._mediaHeartbeat.trackSessionEnd();
                                    });
                                });
                            });
                        });
                    },
                },

                adobeVideoAnalyticsProvider: function (player, playerName, videoTitle, duration, videoId) {
                    var self = this;

                    if (!player) {
                        throw new Error("Illegal argument. Player reference cannot be null.")
                    }
                    this._player = player;
                    this._playerName = playerName;
                    this._currentTime = 0;
                    this._mediaDelegate = new MAO.MediaHeartbeatDelegate();

                    if (playerName === marketing.video.playerNames.youtube) {
                        this.mediaObject = MAO.MediaHeartbeat
                            .createMediaObject(player.getVideoData().title, player.getVideoData().video_id, player.getDuration(), "VOD", "Video");

                        this._mediaDelegate.getCurrentPlaybackTime = function () { return player.getCurrentTime(); };
                    } else if (playerName === marketing.video.playerNames.vimeo) {
                        this.mediaObject = MAO.MediaHeartbeat.createMediaObject(videoTitle, "'" + videoId + "'", duration, "VOD", "Video");
                        this._mediaDelegate.getCurrentPlaybackTime = function () { return 0; };     // heartbeat needs an initial value
                    }

                    var mediaObject = this.mediaObject;

                    MAO.MediaHeartbeat.getInstance(this._mediaDelegate, { playerName: playerName })
                        .then(function (instance) {
                            self._mediaHeartbeat = instance;
                            instance.trackSessionStart(mediaObject, {});
                            instance.trackPlay();
                        }).catch(function (err) {
                            console.log(err);
                        });
                }
            }
        })
}(jQuery));;
/*! npm.im/object-fit-images 3.2.4 */
var objectFitImages=function(){"use strict";function t(t,e){return"data:image/svg+xml,%3Csvg xmlns='https://www.w3.org/2000/svg' width='"+t+"' height='"+e+"'%3E%3C/svg%3E"}function e(t){if(t.srcset&&!p&&window.picturefill){var e=window.picturefill._;t[e.ns]&&t[e.ns].evaled||e.fillImg(t,{reselect:!0}),t[e.ns].curSrc||(t[e.ns].supported=!1,e.fillImg(t,{reselect:!0})),t.currentSrc=t[e.ns].curSrc||t.src}}function i(t){for(var e,i=getComputedStyle(t).fontFamily,r={};null!==(e=u.exec(i));)r[e[1]]=e[2];return r}function r(e,i,r){var n=t(i||1,r||0);b.call(e,"src")!==n&&h.call(e,"src",n)}function n(t,e){t.naturalWidth?e(t):setTimeout(n,100,t,e)}function c(t){var c=i(t),o=t[l];if(c["object-fit"]=c["object-fit"]||"fill",!o.img){if("fill"===c["object-fit"])return;if(!o.skipTest&&f&&!c["object-position"])return}if(!o.img){o.img=new Image(t.width,t.height),o.img.srcset=b.call(t,"data-ofi-srcset")||t.srcset,o.img.src=b.call(t,"data-ofi-src")||t.src,h.call(t,"data-ofi-src",t.src),t.srcset&&h.call(t,"data-ofi-srcset",t.srcset),r(t,t.naturalWidth||t.width,t.naturalHeight||t.height),t.srcset&&(t.srcset="");try{s(t)}catch(t){window.console&&console.warn("https://bit.ly/ofi-old-browser")}}e(o.img),t.style.backgroundImage='url("'+(o.img.currentSrc||o.img.src).replace(/"/g,'\\"')+'")',t.style.backgroundPosition=c["object-position"]||"center",t.style.backgroundRepeat="no-repeat",t.style.backgroundOrigin="content-box",/scale-down/.test(c["object-fit"])?n(o.img,function(){o.img.naturalWidth>t.width||o.img.naturalHeight>t.height?t.style.backgroundSize="contain":t.style.backgroundSize="auto"}):t.style.backgroundSize=c["object-fit"].replace("none","auto").replace("fill","100% 100%"),n(o.img,function(e){r(t,e.naturalWidth,e.naturalHeight)})}function s(t){var e={get:function(e){return t[l].img[e?e:"src"]},set:function(e,i){return t[l].img[i?i:"src"]=e,h.call(t,"data-ofi-"+i,e),c(t),e}};Object.defineProperty(t,"src",e),Object.defineProperty(t,"currentSrc",{get:function(){return e.get("currentSrc")}}),Object.defineProperty(t,"srcset",{get:function(){return e.get("srcset")},set:function(t){return e.set(t,"srcset")}})}function o(){function t(t,e){return t[l]&&t[l].img&&("src"===e||"srcset"===e)?t[l].img:t}d||(HTMLImageElement.prototype.getAttribute=function(e){return b.call(t(this,e),e)},HTMLImageElement.prototype.setAttribute=function(e,i){return h.call(t(this,e),e,String(i))})}function a(t,e){var i=!y&&!t;if(e=e||{},t=t||"img",d&&!e.skipTest||!m)return!1;"img"===t?t=document.getElementsByTagName("img"):"string"==typeof t?t=document.querySelectorAll(t):"length"in t||(t=[t]);for(var r=0;r<t.length;r++)t[r][l]=t[r][l]||{skipTest:e.skipTest},c(t[r]);i&&(document.body.addEventListener("load",function(t){"IMG"===t.target.tagName&&a(t.target,{skipTest:e.skipTest})},!0),y=!0,t="img"),e.watchMQ&&window.addEventListener("resize",a.bind(null,t,{skipTest:e.skipTest}))}var l="fregante:object-fit-images",u=/(object-fit|object-position)\s*:\s*([-.\w\s%]+)/g,g="undefined"==typeof Image?{style:{"object-position":1}}:new Image,f="object-fit"in g.style,d="object-position"in g.style,m="background-size"in g.style,p="string"==typeof g.currentSrc,b=g.getAttribute,h=g.setAttribute,y=!1;return a.supportsObjectFit=f,a.supportsObjectPosition=d,o(),a}();
;
/******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId]) {
/******/ 			return installedModules[moduleId].exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			i: moduleId,
/******/ 			l: false,
/******/ 			exports: {}
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.l = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// define getter function for harmony exports
/******/ 	__webpack_require__.d = function(exports, name, getter) {
/******/ 		if(!__webpack_require__.o(exports, name)) {
/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ 		}
/******/ 	};
/******/
/******/ 	// define __esModule on exports
/******/ 	__webpack_require__.r = function(exports) {
/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 		}
/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
/******/ 	};
/******/
/******/ 	// create a fake namespace object
/******/ 	// mode & 1: value is a module id, require it
/******/ 	// mode & 2: merge all properties of value into the ns
/******/ 	// mode & 4: return value when already ns object
/******/ 	// mode & 8|1: behave like require
/******/ 	__webpack_require__.t = function(value, mode) {
/******/ 		if(mode & 1) value = __webpack_require__(value);
/******/ 		if(mode & 8) return value;
/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ 		var ns = Object.create(null);
/******/ 		__webpack_require__.r(ns);
/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ 		return ns;
/******/ 	};
/******/
/******/ 	// getDefaultExport function for compatibility with non-harmony modules
/******/ 	__webpack_require__.n = function(module) {
/******/ 		var getter = module && module.__esModule ?
/******/ 			function getDefault() { return module['default']; } :
/******/ 			function getModuleExports() { return module; };
/******/ 		__webpack_require__.d(getter, 'a', getter);
/******/ 		return getter;
/******/ 	};
/******/
/******/ 	// Object.prototype.hasOwnProperty.call
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "/";
/******/
/******/
/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(__webpack_require__.s = 0);
/******/ })
/************************************************************************/
/******/ ({

/***/ "./resources/assets/js/scripts.js":
/*!****************************************!*\
  !*** ./resources/assets/js/scripts.js ***!
  \****************************************/
/*! no static exports found */
/***/ (function(module, exports) {

function findAncestor(el, cls) {
  while ((el = el.parentElement) && !el.classList.contains(cls)) {
    return el;
  }
}

if (window.NodeList && !NodeList.prototype.forEach) {
  NodeList.prototype.forEach = function (callback, thisArg) {
    thisArg = thisArg || window;

    for (var i = 0; i < this.length; i++) {
      callback.call(thisArg, this[i], i, this);
    }
  };
}

function debounce(func, wait, immediate) {
  var timeout;
  return function () {
    var context = this;
    var args = arguments;

    var later = function later() {
      timeout = null;

      if (!immediate) {
        func.apply(context, args);
      }
    };

    var callNow = immediate && !timeout;
    clearTimeout(timeout);
    timeout = setTimeout(later, wait);

    if (callNow) {
      func.apply(context, args);
    }
  };
}

var initWidth;

function checkWidth() {
  // vanilla JS window width and height
  var w = window;
  var d = document;
  var e = d.documentElement;
  var g = d.getElementsByTagName('body')[0];
  initWidth = w.innerWidth || e.clientWidth || g.clientWidth; // y = w.innerHeight || e.clientHeight || g.clientHeight
  // console.log('width = ' + initWidth)
}

if (!Element.prototype.matches) {
  Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
}

if (!Element.prototype.closest) {
  Element.prototype.closest = function (s) {
    var el = this;

    if (!document.documentElement.contains(el)) {
      return null;
    }

    do {
      if (el.matches(s)) {
        return el;
      }

      el = el.parentElement || el.parentNode;
    } while (el !== null && el.nodeType === 1);

    return null;
  };
}

if (!String.prototype.includes) {
  String.prototype.includes = function (search, start) {
    'use strict';

    if (search instanceof RegExp) {
      throw TypeError('first argument must not be a RegExp');
    }

    if (start === undefined) {
      start = 0;
    }

    return this.indexOf(search, start) !== -1;
  };
}

var addDebounce = debounce(function () {
  checkWidth();
}, 300);
var x, i, j, selElmnt, a, b, c;
x = document.getElementsByClassName("custom-select");

for (i = 0; i < x.length; i++) {
  selElmnt = x[i].getElementsByTagName("select")[0];
  a = document.createElement("DIV");
  a.setAttribute("class", "select-selected");
  a.innerHTML = selElmnt.options[selElmnt.selectedIndex].innerHTML;
  x[i].appendChild(a);
  b = document.createElement("DIV");
  b.setAttribute("class", "select-items select-hide");

  for (j = 1; j < selElmnt.length; j++) {
    c = document.createElement("DIV");
    c.innerHTML = selElmnt.options[j].innerHTML;
    c.addEventListener("click", function (e) {
      var y, i, k, s, h;
      s = this.parentNode.parentNode.getElementsByTagName("select")[0];
      h = this.parentNode.previousSibling;

      for (i = 0; i < s.length; i++) {
        if (s.options[i].innerHTML == this.innerHTML) {
          s.selectedIndex = i;
          h.innerHTML = this.innerHTML;
          y = this.parentNode.getElementsByClassName("same-as-selected");

          for (k = 0; k < y.length; k++) {
            y[k].removeAttribute("class");
          }

          this.setAttribute("class", "same-as-selected");
          break;
        }
      }

      h.click();
    });
    b.appendChild(c);
  }

  x[i].appendChild(b);
  a.addEventListener("click", function (e) {
    e.stopPropagation();
    closeAllSelect(this);
    this.nextSibling.classList.toggle("select-hide");
    this.classList.toggle("select-arrow-active");
  });
}

function closeAllSelect(elmnt) {
  var x,
      y,
      i,
      arrNo = [];
  x = document.getElementsByClassName("select-items");
  y = document.getElementsByClassName("select-selected");

  for (i = 0; i < y.length; i++) {
    if (elmnt == y[i]) {
      arrNo.push(i);
    } else {
      y[i].classList.remove("select-arrow-active");
    }
  }

  for (i = 0; i < x.length; i++) {
    if (arrNo.indexOf(i)) {
      x[i].classList.add("select-hide");
    }
  }
}

document.addEventListener("click", closeAllSelect);
document.addEventListener('click', function (event) {
    if (event.target.id == 'menu-icon') {
        if (document.querySelector('.header__search') !== null) {
            document.querySelector('.header__search').classList.toggle('open');
        }
        if (document.querySelector('.header__links') != null) {
            document.querySelector('.header__links').classList.toggle('open');
        }
    }
    else {
    var checkParents = findAncestor(event.target, 'header'); // Fix this

    if (checkParents < 1) {
        if (document.querySelector('.header__search') !== null) {
            document.querySelector('.header__search').classList.remove('open');
        }
        if (document.querySelector('.header__links') != null) {
            document.querySelector('.header__links').classList.remove('open');
        }
    }
  }

  var searchBtns = document.querySelectorAll('.header__links--search');
  var searchBar = document.querySelector('.header__search--bar');
  var nav = document.querySelector('.header__links');
  var searchWrapper = document.querySelector('.header__search');

  if (event.target.parentNode.classList.contains('header__links--search')) {
    if (window.innerWidth > 1270) {
      for (var _i = 0; _i < searchBtns.length; _i++) {
        if (searchBtns[_i].nodeName == 'A') {
          searchBtns[_i].classList.add('display-flex');

          searchBar.classList.add('display-block');
          nav.classList.add('display-none');
        } else {
          searchBtns[_i].classList.add('display-none');

          searchWrapper.classList.add('search-open');
        }
      }
    }
  } else if (event.target.parentNode.nodeName != 'FORM') {
    for (var _i2 = 0; _i2 < searchBtns.length; _i2++) {
      searchBtns[_i2].classList.remove('display-flex');

      searchBtns[_i2].classList.remove('display-none');

      searchBar.classList.remove('display-block');
      nav.classList.remove('display-none');
      searchWrapper.classList.remove('search-open');
    }
  }
});

function modalController(modalData) {
  var modal = document.querySelector("#modal-".concat(modalData));
  var modalContent = modal.querySelector('DIV');
  modal.classList.toggle("open");
  modal.getElementsByClassName('modal-close')[0].addEventListener('click', function (e) {
    modal.classList.remove("open");
  });
  modal.getElementsByClassName('modal-shadow')[0].addEventListener('click', function (e) {
    modal.classList.remove("open");
  });
}

document.addEventListener('click', function (event) {
  if (event.target.classList.contains('modal-trigger')) {
    event.preventDefault();
    modalController(event.target.dataset.modal);
  }
});

/***/ }),

/***/ "./resources/assets/scss/style.scss":
/*!******************************************!*\
  !*** ./resources/assets/scss/style.scss ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports) {

// removed by extract-text-webpack-plugin

/***/ }),

/***/ 0:
/*!*********************************************************************************!*\
  !*** multi ./resources/assets/js/scripts.js ./resources/assets/scss/style.scss ***!
  \*********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(/*! /Users/ahill/Projects/capita-base/resources/assets/js/scripts.js */"./resources/assets/js/scripts.js");
module.exports = __webpack_require__(/*! /Users/ahill/Projects/capita-base/resources/assets/scss/style.scss */"./resources/assets/scss/style.scss");


/***/ })

/******/ });
//# sourceMappingURL=scripts.js.map;
/*
 Selectr 2.4.13
 https://mobius.ovh/docs/selectr

 Released under the MIT license
*/
(function(g,k){"function"===typeof define&&define.amd?define([],k):"object"===typeof exports?module.exports=k("Selectr"):g.Selectr=k("Selectr")})(this,function(g){function k(a,c){return a.hasOwnProperty(c)&&(!0===a[c]||a[c].length)}function n(a,c,e){a.parentNode?a.parentNode.parentNode||c.appendChild(a.parentNode):c.appendChild(a);b.removeClass(a,"excluded");e||(a.innerHTML=a.textContent)}var l=function(){};l.prototype={on:function(a,c){this._events=this._events||{};this._events[a]=this._events[a]||
[];this._events[a].push(c)},off:function(a,c){this._events=this._events||{};!1!==a in this._events&&this._events[a].splice(this._events[a].indexOf(c),1)},emit:function(a){this._events=this._events||{};if(!1!==a in this._events)for(var c=0;c<this._events[a].length;c++)this._events[a][c].apply(this,Array.prototype.slice.call(arguments,1))}};l.mixin=function(a){for(var c=["on","off","emit"],b=0;b<c.length;b++)"function"===typeof a?a.prototype[c[b]]=l.prototype[c[b]]:a[c[b]]=l.prototype[c[b]];return a};
var b={extend:function(a,c){for(var e in c)if(c.hasOwnProperty(e)){var d=c[e];d&&"[object Object]"===Object.prototype.toString.call(d)?(a[e]=a[e]||{},b.extend(a[e],d)):a[e]=d}return a},each:function(a,c,b){if("[object Object]"===Object.prototype.toString.call(a))for(var d in a)Object.prototype.hasOwnProperty.call(a,d)&&c.call(b,d,a[d],a);else{d=0;for(var e=a.length;d<e;d++)c.call(b,d,a[d],a)}},createElement:function(a,c){var b=document,d=b.createElement(a);if(c&&"[object Object]"===Object.prototype.toString.call(c))for(var f in c)if(f in
d)d[f]=c[f];else if("html"===f)d.innerHTML=c[f];else if("text"===f){var h=b.createTextNode(c[f]);d.appendChild(h)}else d.setAttribute(f,c[f]);return d},hasClass:function(a,b){if(a)return a.classList?a.classList.contains(b):!!a.className&&!!a.className.match(new RegExp("(\\s|^)"+b+"(\\s|$)"))},addClass:function(a,c){b.hasClass(a,c)||(a.classList?a.classList.add(c):a.className=a.className.trim()+" "+c)},removeClass:function(a,c){b.hasClass(a,c)&&(a.classList?a.classList.remove(c):a.className=a.className.replace(new RegExp("(^|\\s)"+
c.split(" ").join("|")+"(\\s|$)","gi")," "))},closest:function(a,c){return a&&a!==document.body&&(c(a)?a:b.closest(a.parentNode,c))},isInt:function(a){return"number"===typeof a&&isFinite(a)&&Math.floor(a)===a},debounce:function(a,b,e){var d;return function(){var c=this,h=arguments,g=e&&!d;clearTimeout(d);d=setTimeout(function(){d=null;e||a.apply(c,h)},b);g&&a.apply(c,h)}},rect:function(a,b){var c=window,d=a.getBoundingClientRect(),f=b?c.pageXOffset:0;c=b?c.pageYOffset:0;return{bottom:d.bottom+c,height:d.height,
left:d.left+f,right:d.right+f,top:d.top+c,width:d.width}},includes:function(a,b){return-1<a.indexOf(b)},startsWith:function(a,b){return a.substr(0,b.length)===b},truncate:function(a){for(;a.firstChild;)a.removeChild(a.firstChild)}},p=function(){if(this.items.length){var a=document.createDocumentFragment();if(this.config.pagination){var c=this.pages.slice(0,this.pageIndex);b.each(c,function(c,d){b.each(d,function(d,b){n(b,a,this.customOption)},this)},this)}else b.each(this.items,function(b,d){n(d,
a,this.customOption)},this);a.childElementCount&&(b.removeClass(this.items[this.navIndex],"active"),this.navIndex=(a.querySelector(".selectr-option.selected")||a.querySelector(".selectr-option")).idx,b.addClass(this.items[this.navIndex],"active"));this.tree.appendChild(a)}},t=function(a){this.container.contains(a.target)||!this.opened&&!b.hasClass(this.container,"notice")||this.close()},m=function(a,c){var e=this.customOption?this.config.renderOption(c||a):a.textContent;e=b.createElement("li",{"class":"selectr-option",
html:e,role:"treeitem","aria-selected":!1});e.idx=a.idx;this.items.push(e);a.defaultSelected&&this.defaultSelected.push(a.idx);a.disabled&&(e.disabled=!0,b.addClass(e,"disabled"));return e},u=function(){this.requiresPagination=this.config.pagination&&0<this.config.pagination;k(this.config,"width")&&(b.isInt(this.config.width)?this.width=this.config.width+"px":"auto"===this.config.width?this.width="100%":b.includes(this.config.width,"%")&&(this.width=this.config.width));this.container=b.createElement("div",
{"class":"selectr-container"});this.config.customClass&&b.addClass(this.container,this.config.customClass);this.mobileDevice?b.addClass(this.container,"selectr-mobile"):b.addClass(this.container,"selectr-desktop");this.el.tabIndex=-1;this.config.nativeDropdown||this.mobileDevice?b.addClass(this.el,"selectr-visible"):b.addClass(this.el,"selectr-hidden");this.selected=b.createElement("div",{"class":"selectr-selected",disabled:this.disabled,tabIndex:0,"aria-expanded":!1});this.label=b.createElement(this.el.multiple?
"ul":"span",{"class":"selectr-label"});var a=b.createElement("div",{"class":"selectr-options-container"});this.tree=b.createElement("ul",{"class":"selectr-options",role:"tree","aria-hidden":!0,"aria-expanded":!1});this.notice=b.createElement("div",{"class":"selectr-notice"});this.el.setAttribute("aria-hidden",!0);this.disabled&&(this.el.disabled=!0);this.el.multiple&&(b.addClass(this.label,"selectr-tags"),b.addClass(this.container,"multiple"),this.tags=[],this.selectedValues=this.getSelectedProperties("value"),
this.selectedIndexes=this.getSelectedProperties("idx"));this.selected.appendChild(this.label);this.config.clearable&&(this.selectClear=b.createElement("button",{"class":"selectr-clear",type:"button"}),this.container.appendChild(this.selectClear),b.addClass(this.container,"clearable"));if(this.config.taggable){var c=b.createElement("li",{"class":"input-tag"});this.input=b.createElement("input",{"class":"selectr-tag-input",placeholder:this.config.tagPlaceholder,tagIndex:0,autocomplete:"off",autocorrect:"off",
autocapitalize:"off",spellcheck:"false",role:"textbox",type:"search"});c.appendChild(this.input);this.label.appendChild(c);b.addClass(this.container,"taggable");this.tagSeperators=[","];this.config.tagSeperators&&(this.tagSeperators=this.tagSeperators.concat(this.config.tagSeperators))}this.config.searchable&&(this.input=b.createElement("input",{"class":"selectr-input",tagIndex:-1,autocomplete:"off",autocorrect:"off",autocapitalize:"off",spellcheck:"false",role:"textbox",type:"search"}),this.inputClear=
b.createElement("button",{"class":"selectr-input-clear",type:"button"}),this.inputContainer=b.createElement("div",{"class":"selectr-input-container"}),this.inputContainer.appendChild(this.input),this.inputContainer.appendChild(this.inputClear),a.appendChild(this.inputContainer));a.appendChild(this.notice);a.appendChild(this.tree);this.items=[];this.options=[];this.el.options.length&&(this.options=[].slice.call(this.el.options));var e=!1,d=0;this.el.children.length&&b.each(this.el.children,function(a,
c){"OPTGROUP"===c.nodeName?(e=b.createElement("ul",{"class":"selectr-optgroup",role:"group",html:"<li class='selectr-optgroup--label'>"+c.label+"</li>"}),b.each(c.children,function(a,b){b.idx=d;e.appendChild(m.call(this,b,e));d++},this)):(c.idx=d,m.call(this,c),d++)},this);if(this.config.data&&Array.isArray(this.config.data)){this.data=[];var f=!1,h;e=!1;d=0;b.each(this.config.data,function(a,c){k(c,"children")?(f=b.createElement("optgroup",{label:c.text}),e=b.createElement("ul",{"class":"selectr-optgroup",
role:"group",html:"<li class='selectr-optgroup--label'>"+c.text+"</li>"}),b.each(c.children,function(a,b){h=new Option(b.text,b.value,!1,b.hasOwnProperty("selected")&&!0===b.selected);h.disabled=k(b,"disabled");this.options.push(h);f.appendChild(h);h.idx=d;e.appendChild(m.call(this,h,b));this.data[d]=b;d++},this),this.el.appendChild(f)):(h=new Option(c.text,c.value,!1,c.hasOwnProperty("selected")&&!0===c.selected),h.disabled=k(c,"disabled"),this.options.push(h),h.idx=d,m.call(this,h,c),this.data[d]=
c,d++)},this)}this.setSelected(!0);for(var g=this.navIndex=0;g<this.items.length;g++)if(c=this.items[g],!b.hasClass(c,"disabled")){b.addClass(c,"active");this.navIndex=g;break}this.requiresPagination&&(this.pageIndex=1,this.paginate());this.container.appendChild(this.selected);this.container.appendChild(a);this.placeEl=b.createElement("div",{"class":"selectr-placeholder"});this.setPlaceholder();this.selected.appendChild(this.placeEl);this.disabled&&this.disable();this.el.parentNode.insertBefore(this.container,
this.el);this.container.appendChild(this.el)},v=function(a){a=a||window.event;if(this.items.length&&this.opened&&b.includes([13,38,40],a.which)){a.preventDefault();if(13===a.which)return this.noResults||this.config.taggable&&0<this.input.value.length?!1:this.change(this.navIndex);var c=this.items[this.navIndex],e=this.navIndex;switch(a.which){case 38:var d=0;0<this.navIndex&&this.navIndex--;break;case 40:d=1,this.navIndex<this.items.length-1&&this.navIndex++}for(this.navigating=!0;b.hasClass(this.items[this.navIndex],
"disabled")||b.hasClass(this.items[this.navIndex],"excluded");){if(0<this.navIndex&&this.navIndex<this.items.length-1)d?this.navIndex++:this.navIndex--;else{this.navIndex=e;break}if(this.searching)if(this.navIndex>this.tree.lastElementChild.idx){this.navIndex=this.tree.lastElementChild.idx;break}else if(this.navIndex<this.tree.firstElementChild.idx){this.navIndex=this.tree.firstElementChild.idx;break}}a=b.rect(this.items[this.navIndex]);d?(0===this.navIndex?this.tree.scrollTop=0:a.top+a.height>this.optsRect.top+
this.optsRect.height&&(this.tree.scrollTop+=a.top+a.height-(this.optsRect.top+this.optsRect.height)),this.navIndex===this.tree.childElementCount-1&&this.requiresPagination&&r.call(this)):0===this.navIndex?this.tree.scrollTop=0:0>a.top-this.optsRect.top&&(this.tree.scrollTop+=a.top-this.optsRect.top);c&&b.removeClass(c,"active");b.addClass(this.items[this.navIndex],"active")}else this.navigating=!1},w=function(a){var c=this,e=document.createDocumentFragment(),d=this.options[a.idx],f=this.data?this.data[a.idx]:
d;f=this.customSelected?this.config.renderSelection(f):d.textContent;f=b.createElement("li",{"class":"selectr-tag",html:f});var h=b.createElement("button",{"class":"selectr-tag-remove",type:"button"});f.appendChild(h);f.idx=a.idx;f.tag=d.value;this.tags.push(f);if(this.config.sortSelected){a=this.tags.slice();var g=function(a,b){a.replace(/(\d+)|(\D+)/g,function(a,d,c){b.push([d||Infinity,c||""])})};a.sort(function(a,b){var d=[],e=[];if(!0===c.config.sortSelected){var f=a.tag;var h=b.tag}else"text"===
c.config.sortSelected&&(f=a.textContent,h=b.textContent);g(f,d);for(g(h,e);d.length&&e.length;)if(f=d.shift(),h=e.shift(),f=f[0]-h[0]||f[1].localeCompare(h[1]))return f;return d.length-e.length});b.each(a,function(a,b){e.appendChild(b)});this.label.innerHTML=""}else e.appendChild(f);this.config.taggable?this.label.insertBefore(e,this.input.parentNode):this.label.appendChild(e)},x=function(a){var c=!1;b.each(this.tags,function(b,d){d.idx===a.idx&&(c=d)},this);c&&(this.label.removeChild(c),this.tags.splice(this.tags.indexOf(c),
1))},r=function(){var a=this.tree;if(a.scrollTop>=a.scrollHeight-a.offsetHeight&&this.pageIndex<this.pages.length){var c=document.createDocumentFragment();b.each(this.pages[this.pageIndex],function(a,b){n(b,c,this.customOption)},this);a.appendChild(c);this.pageIndex++;this.emit("selectr.paginate",{items:this.items.length,total:this.data.length,page:this.pageIndex,pages:this.pages.length})}},q=function(){if(this.config.searchable||this.config.taggable)this.input.value=null,this.searching=!1,this.config.searchable&&
      b.removeClass(this.inputContainer, "active"), b.hasClass(this.container, "notice") && (b.removeClass(this.container, "notice"), b.addClass(this.container, "open"), this.input.focus()), b.each(this.items, function (a, c) { b.removeClass(c, "excluded"); this.customOption || (c.innerHTML = c.textContent) }, this)
    }; g = function (a, b) {
    this.defaultConfig = {
      defaultSelected: !0, width: "auto", disabled: !1, searchable: !0, clearable: !1, sortSelected: !1, allowDeselect: !1, closeOnScroll: !1, nativeDropdown: !1, nativeKeyboard: !1, placeholder: "<span>Filter by Subject</span><svg viewBox='0 0 14 22'><path d='M0.879 3L3 0.879 13.121 11 3 21.121 0.879 19 8.879 11z'></path></svg>",
taggable:!1,tagPlaceholder:"Enter a tag...",messages:{noResults:"No results.",noOptions:"No options available.",maxSelections:"A maximum of {max} items can be selected.",tagDuplicate:"That tag is already in use."}};if(!a)throw Error("You must supply either a HTMLSelectElement or a CSS3 selector string.");this.el=a;"string"===typeof a&&(this.el=document.querySelector(a));if(null===this.el)throw Error("The element you passed to Selectr can not be found.");if("select"!==this.el.nodeName.toLowerCase())throw Error("The element you passed to Selectr is not a HTMLSelectElement.");
this.render(b)};g.prototype.render=function(a){if(!this.rendered){this.el.selectr=this;this.config=b.extend(this.defaultConfig,a);this.originalType=this.el.type;this.originalIndex=this.el.tabIndex;this.defaultSelected=[];this.originalOptionCount=this.el.options.length;if(this.config.multiple||this.config.taggable)this.el.multiple=!0;this.disabled=k(this.config,"disabled");this.opened=!1;this.config.taggable&&(this.config.searchable=!1);this.mobileDevice=this.navigating=!1;/Android|webOS|iPhone|iPad|BlackBerry|Windows Phone|Opera Mini|IEMobile|Mobile/i.test(navigator.userAgent)&&
(this.mobileDevice=!0);this.customOption=this.config.hasOwnProperty("renderOption")&&"function"===typeof this.config.renderOption;this.customSelected=this.config.hasOwnProperty("renderSelection")&&"function"===typeof this.config.renderSelection;this.supportsEventPassiveOption=this.detectEventPassiveOption();l.mixin(this);u.call(this);this.bindEvents();this.update();this.optsRect=b.rect(this.tree);this.rendered=!0;this.el.multiple||(this.el.selectedIndex=this.selectedIndex);var c=this;setTimeout(function(){c.emit("selectr.init")},
20)}};g.prototype.getSelected=function(){return this.el.querySelectorAll("option:checked")};g.prototype.getSelectedProperties=function(a){var b=this.getSelected();return[].slice.call(b).map(function(b){return b[a]}).filter(function(a){return null!==a&&void 0!==a})};g.prototype.detectEventPassiveOption=function(){var a=!1;try{var b=Object.defineProperty({},"passive",{get:function(){a=!0}});window.addEventListener("test",null,b)}catch(e){}return a};g.prototype.bindEvents=function(){var a=this;this.events=
{};this.events.dismiss=t.bind(this);this.events.navigate=v.bind(this);this.events.reset=this.reset.bind(this);if(this.config.nativeDropdown||this.mobileDevice){this.container.addEventListener("touchstart",function(b){b.changedTouches[0].target===a.el&&a.toggle()},this.supportsEventPassiveOption?{passive:!0}:!1);this.container.addEventListener("click",function(b){b.target===a.el&&a.toggle()});var c=function(a,b){for(var d=[],c=a.slice(0),e,f=0;f<b.length;f++)e=c.indexOf(b[f]),-1<e?c.splice(e,1):d.push(b[f]);
return[d,c]};this.el.addEventListener("change",function(d){a.el.multiple?(d=a.getSelectedProperties("idx"),d=c(a.selectedIndexes,d),b.each(d[0],function(b,d){a.select(d)},a),b.each(d[1],function(b,d){a.deselect(d)},a)):-1<a.el.selectedIndex&&a.select(a.el.selectedIndex)})}this.container.addEventListener("keydown",function(b){"Escape"===b.key&&a.close();"Enter"===b.key&&a.selected===document.activeElement&&"undefined"!==typeof a.el.form.submit&&a.el.form.submit();" "!==b.key&&"ArrowUp"!==b.key&&"ArrowDown"!==
b.key||a.selected!==document.activeElement||(setTimeout(function(){a.toggle()},200),a.config.nativeDropdown&&setTimeout(function(){a.el.focus()},200))});this.selected.addEventListener("click",function(b){a.disabled||a.toggle();b.preventDefault()});if(this.config.nativeKeyboard){var e="";this.selected.addEventListener("keydown",function(b){if(!(a.disabled||a.selected!==document.activeElement||b.altKey||b.ctrlKey||b.metaKey))if(" "===b.key||!a.opened&&-1<["Enter","ArrowUp","ArrowDown"].indexOf(b.key))a.toggle(),
b.preventDefault(),b.stopPropagation();else if(2>=b.key.length&&String[String.fromCodePoint?"fromCodePoint":"fromCharCode"](b.key[String.codePointAt?"codePointAt":"charCodeAt"](0))===b.key){if(a.config.multiple)a.open(),a.config.searchable&&(a.input.value=b.key,a.input.focus(),a.search(null,!0));else{e+=b.key;var c=a.search(e,!0);c&&c.length&&(a.clear(),a.setValue(c[0].value));setTimeout(function(){e=""},1E3)}b.preventDefault();b.stopPropagation()}});this.container.addEventListener("keyup",function(b){a.opened&&
"Escape"===b.key&&(a.close(),b.stopPropagation(),a.selected.focus())})}this.label.addEventListener("click",function(c){b.hasClass(c.target,"selectr-tag-remove")&&a.deselect(c.target.parentNode.idx)});this.selectClear&&this.selectClear.addEventListener("click",this.clear.bind(this));this.tree.addEventListener("mousedown",function(a){a.preventDefault()});this.tree.addEventListener("click",function(c){var d=b.closest(c.target,function(a){return a&&b.hasClass(a,"selectr-option")});d&&!b.hasClass(d,"disabled")&&
(b.hasClass(d,"selected")?(a.el.multiple||!a.el.multiple&&a.config.allowDeselect)&&a.deselect(d.idx):a.select(d.idx),a.opened&&!a.el.multiple&&a.close());c.preventDefault();c.stopPropagation()});this.tree.addEventListener("mouseover",function(c){b.hasClass(c.target,"selectr-option")&&!b.hasClass(c.target,"disabled")&&(b.removeClass(a.items[a.navIndex],"active"),b.addClass(c.target,"active"),a.navIndex=[].slice.call(a.items).indexOf(c.target))});this.config.searchable&&(this.input.addEventListener("focus",
function(b){a.searching=!0}),this.input.addEventListener("blur",function(b){a.searching=!1}),this.input.addEventListener("keyup",function(c){a.search();a.config.taggable||(this.value.length?b.addClass(this.parentNode,"active"):b.removeClass(this.parentNode,"active"))}),this.inputClear.addEventListener("click",function(b){a.input.value=null;q.call(a);a.tree.childElementCount||p.call(a)}));this.config.taggable&&this.input.addEventListener("keyup",function(c){a.search();if(a.config.taggable&&this.value.length){var d=
this.value.trim();if(13===c.which||b.includes(a.tagSeperators,c.key))b.each(a.tagSeperators,function(a,b){d=d.replace(b,"")}),a.add({value:d,text:d,selected:!0},!0)?(a.close(),q.call(a)):(this.value="",a.setMessage(a.config.messages.tagDuplicate))}});this.update=b.debounce(function(){a.opened&&a.config.closeOnScroll&&a.close();a.width&&(a.container.style.width=a.width);a.invert()},50);this.requiresPagination&&(this.paginateItems=b.debounce(function(){r.call(this)},50),this.tree.addEventListener("scroll",
this.paginateItems.bind(this)));document.addEventListener("click",this.events.dismiss);window.addEventListener("keydown",this.events.navigate);window.addEventListener("resize",this.update);window.addEventListener("scroll",this.update);this.on("selectr.destroy",function(){document.removeEventListener("click",this.events.dismiss);window.removeEventListener("keydown",this.events.navigate);window.removeEventListener("resize",this.update);window.removeEventListener("scroll",this.update)});this.el.form&&
(this.el.form.addEventListener("reset",this.events.reset),this.on("selectr.destroy",function(){this.el.form.removeEventListener("reset",this.events.reset)}))};g.prototype.setSelected=function(a){this.config.data||this.el.multiple||!this.el.options.length||(0!==this.el.selectedIndex||this.el.options[0].defaultSelected||this.config.defaultSelected||(this.el.selectedIndex=-1),this.selectedIndex=this.el.selectedIndex,-1<this.selectedIndex&&this.select(this.selectedIndex));this.config.multiple&&"select-one"===
this.originalType&&!this.config.data&&this.el.options[0].selected&&!this.el.options[0].defaultSelected&&(this.el.options[0].selected=!1);b.each(this.options,function(a,b){b.selected&&b.defaultSelected&&this.select(b.idx)},this);this.config.selectedValue&&this.setValue(this.config.selectedValue);if(this.config.data){!this.el.multiple&&this.config.defaultSelected&&0>this.el.selectedIndex&&this.select(0);var c=0;b.each(this.config.data,function(a,d){k(d,"children")?b.each(d.children,function(a,b){b.hasOwnProperty("selected")&&
!0===b.selected&&this.select(c);c++},this):(d.hasOwnProperty("selected")&&!0===d.selected&&this.select(c),c++)},this)}};g.prototype.destroy=function(){this.rendered&&(this.emit("selectr.destroy"),"select-one"===this.originalType&&(this.el.multiple=!1),this.config.data&&(this.el.innerHTML=""),b.removeClass(this.el,"selectr-hidden"),this.container.parentNode.replaceChild(this.el,this.container),this.rendered=!1,delete this.el.selectr)};g.prototype.change=function(a){var c=this.items[a],e=this.options[a];
e.disabled||(e.selected&&b.hasClass(c,"selected")?this.deselect(a):this.select(a),this.opened&&!this.el.multiple&&this.close())};g.prototype.select=function(a){var c=this.items[a],e=[].slice.call(this.el.options),d=this.options[a];if(this.el.multiple){if(b.includes(this.selectedIndexes,a))return!1;if(this.config.maxSelections&&this.tags.length===this.config.maxSelections)return this.setMessage(this.config.messages.maxSelections.replace("{max}",this.config.maxSelections),!0),!1;this.selectedValues.push(d.value);
this.selectedIndexes.push(a);w.call(this,c)}else{var f=this.data?this.data[a]:d;this.label.innerHTML=this.customSelected?this.config.renderSelection(f):d.textContent;this.selectedValue=d.value;this.selectedIndex=a;b.each(this.options,function(c,d){var e=this.items[c];c!==a&&(e&&b.removeClass(e,"selected"),d.selected=!1,d.removeAttribute("selected"))},this)}b.includes(e,d)||this.el.add(d);c.setAttribute("aria-selected",!0);b.addClass(c,"selected");b.addClass(this.container,"has-selected");d.selected=
!0;d.setAttribute("selected","");this.emit("selectr.change",d);this.emit("selectr.select",d);"createEvent"in document?(c=document.createEvent("HTMLEvents"),c.initEvent("change",!0,!0),this.el.dispatchEvent(c)):this.el.fireEvent("onchange")};g.prototype.deselect=function(a,c){var e=this.items[a],d=this.options[a];if(this.el.multiple){var f=this.selectedIndexes.indexOf(a);this.selectedIndexes.splice(f,1);f=this.selectedValues.indexOf(d.value);this.selectedValues.splice(f,1);x.call(this,e);this.tags.length||
b.removeClass(this.container,"has-selected")}else{if(!c&&!this.config.clearable&&!this.config.allowDeselect)return!1;this.label.innerHTML="";this.selectedValue=null;this.el.selectedIndex=this.selectedIndex=-1;b.removeClass(this.container,"has-selected")}this.items[a].setAttribute("aria-selected",!1);b.removeClass(this.items[a],"selected");d.selected=!1;d.removeAttribute("selected");this.emit("selectr.change",null);this.emit("selectr.deselect",d);"createEvent"in document?(e=document.createEvent("HTMLEvents"),
e.initEvent("change",!0,!0),this.el.dispatchEvent(e)):this.el.fireEvent("onchange")};g.prototype.setValue=function(a){var c=Array.isArray(a);c||(a=a.toString().trim());if(!this.el.multiple&&c)return!1;b.each(this.options,function(b,d){(c&&-1<a.indexOf(d.value)||d.value===a)&&this.change(d.idx)},this)};g.prototype.getValue=function(a,c){if(this.el.multiple)if(a){if(this.selectedIndexes.length){var e={values:[]};b.each(this.selectedIndexes,function(a,b){var c=this.options[b];e.values[a]={value:c.value,
text:c.textContent}},this)}}else e=this.selectedValues.slice();else if(a){var d=this.options[this.selectedIndex];e={value:d.value,text:d.textContent}}else e=this.selectedValue;a&&c&&(e=JSON.stringify(e));return e};g.prototype.add=function(a,c){if(a){this.data=this.data||[];this.items=this.items||[];this.options=this.options||[];if(Array.isArray(a))b.each(a,function(a,b){this.add(b,c)},this);else if("[object Object]"===Object.prototype.toString.call(a)){if(c){var e=!1;b.each(this.options,function(b,
c){c.value.toLowerCase()===a.value.toLowerCase()&&(e=!0)});if(e)return!1}var d=b.createElement("option",a);this.data.push(a);this.options.push(d);d.idx=0<this.options.length?this.options.length-1:0;m.call(this,d);a.selected&&this.select(d.idx);this.setPlaceholder();return d}this.config.pagination&&this.paginate();return!0}};g.prototype.remove=function(a){var c=[];Array.isArray(a)?b.each(a,function(a,e){b.isInt(e)?c.push(this.getOptionByIndex(e)):"string"===typeof e&&c.push(this.getOptionByValue(e))},
this):b.isInt(a)?c.push(this.getOptionByIndex(a)):"string"===typeof a&&c.push(this.getOptionByValue(a));if(c.length){var e;b.each(c,function(a,c){e=c.idx;this.el.remove(c);this.options.splice(e,1);var d=this.items[e].parentNode;d&&d.removeChild(this.items[e]);this.items.splice(e,1);b.each(this.options,function(a,b){b.idx=a;this.items[a].idx=a},this)},this);this.setPlaceholder();this.config.pagination&&this.paginate()}};g.prototype.removeAll=function(){this.clear(!0);b.each(this.el.options,function(a,
b){this.el.remove(b)},this);b.truncate(this.tree);this.items=[];this.options=[];this.data=[];this.navIndex=0;this.requiresPagination&&(this.requiresPagination=!1,this.pageIndex=1,this.pages=[]);this.setPlaceholder()};g.prototype.search=function(a,c){if(!this.navigating){var e=!1;a||(a=this.input.value,e=!0,this.removeMessage(),b.truncate(this.tree));var d=[],f=document.createDocumentFragment();a=a.trim().toLowerCase();if(0<a.length){var g=c?b.startsWith:b.includes;b.each(this.options,function(c,h){var k=
this.items[h.idx];if(g(h.textContent.trim().toLowerCase(),a)&&!h.disabled){if(d.push({text:h.textContent,value:h.value}),e&&(n(k,f,this.customOption),b.removeClass(k,"excluded"),!this.customOption)){var l=(l=(new RegExp(a,"i")).exec(h.textContent))?h.textContent.replace(l[0],"<span class='selectr-match'>"+l[0]+"</span>"):!1;k.innerHTML=l}}else e&&b.addClass(k,"excluded")},this);if(e){if(f.childElementCount){var k=this.items[this.navIndex],l=f.querySelector(".selectr-option:not(.excluded)");this.noResults=
!1;b.removeClass(k,"active");this.navIndex=l.idx;b.addClass(l,"active")}else this.config.taggable||(this.noResults=!0,this.setMessage(this.config.messages.noResults));this.tree.appendChild(f)}}else p.call(this);return d}};g.prototype.toggle=function(){this.disabled||(this.opened?this.close():this.open())};g.prototype.open=function(){var a=this;if(!this.options.length)return!1;this.opened||this.emit("selectr.open");this.opened=!0;this.mobileDevice||this.config.nativeDropdown?(b.addClass(this.container,
"native-open"),this.config.data&&b.each(this.options,function(a,b){this.el.add(b)},this)):(b.addClass(this.container,"open"),p.call(this),this.invert(),this.tree.scrollTop=0,b.removeClass(this.container,"notice"),this.selected.setAttribute("aria-expanded",!0),this.tree.setAttribute("aria-hidden",!1),this.tree.setAttribute("aria-expanded",!0),this.config.searchable&&!this.config.taggable&&setTimeout(function(){a.input.focus();a.input.tabIndex=0},10))};g.prototype.close=function(){this.opened&&this.emit("selectr.close");
this.navigating=this.opened=!1;if(this.mobileDevice||this.config.nativeDropdown)b.removeClass(this.container,"native-open");else{var a=b.hasClass(this.container,"notice");this.config.searchable&&!a&&(this.input.blur(),this.input.tabIndex=-1,this.searching=!1);a&&(b.removeClass(this.container,"notice"),this.notice.textContent="");b.removeClass(this.container,"open");b.removeClass(this.container,"native-open");this.selected.setAttribute("aria-expanded",!1);this.tree.setAttribute("aria-hidden",!0);this.tree.setAttribute("aria-expanded",
!1);b.truncate(this.tree);q.call(this);this.selected.focus()}};g.prototype.enable=function(){this.disabled=!1;this.el.disabled=!1;this.selected.tabIndex=this.originalIndex;this.el.multiple&&b.each(this.tags,function(a,b){b.lastElementChild.tabIndex=0});b.removeClass(this.container,"selectr-disabled")};g.prototype.disable=function(a){a||(this.el.disabled=!0);this.selected.tabIndex=-1;this.el.multiple&&b.each(this.tags,function(a,b){b.lastElementChild.tabIndex=-1});this.disabled=!0;b.addClass(this.container,
"selectr-disabled")};g.prototype.reset=function(){this.disabled||(this.clear(),this.setSelected(!0),b.each(this.defaultSelected,function(a,b){this.select(b)},this),this.emit("selectr.reset"))};g.prototype.clear=function(a){this.el.multiple?this.selectedIndexes.length&&(a=this.selectedIndexes.slice(),b.each(a,function(a,b){this.deselect(b)},this)):-1<this.selectedIndex&&this.deselect(this.selectedIndex,a);this.emit("selectr.clear")};g.prototype.serialise=function(a){var c=[];b.each(this.options,function(a,
b){var d={value:b.value,text:b.textContent};b.selected&&(d.selected=!0);b.disabled&&(d.disabled=!0);c[a]=d});return a?JSON.stringify(c):c};g.prototype.serialize=function(a){return this.serialise(a)};g.prototype.setPlaceholder=function(a){a=a||this.config.placeholder||this.el.getAttribute("placeholder");this.options.length||(a=this.config.messages.noOptions);this.placeEl.innerHTML=a};g.prototype.paginate=function(){if(this.items.length){var a=this;return this.pages=this.items.map(function(b,e){return 0===
e%a.config.pagination?a.items.slice(e,e+a.config.pagination):null}).filter(function(a){return a})}};g.prototype.setMessage=function(a,c){c&&this.close();b.addClass(this.container,"notice");this.notice.textContent=a};g.prototype.removeMessage=function(){b.removeClass(this.container,"notice");this.notice.innerHTML=""};g.prototype.invert=function(){var a=b.rect(this.selected);a.top+a.height+this.tree.parentNode.offsetHeight>window.innerHeight?(b.addClass(this.container,"inverted"),this.isInverted=!0):
(b.removeClass(this.container,"inverted"),this.isInverted=!1);this.optsRect=b.rect(this.tree)};g.prototype.getOptionByIndex=function(a){return this.options[a]};g.prototype.getOptionByValue=function(a){for(var b=!1,e=0,d=this.options.length;e<d;e++)if(this.options[e].value.trim()===a.toString().trim()){b=this.options[e];break}return b};return g});;
