{"version":3,"file":"app.min.js","sources":["app.js"],"sourcesContent":["\"use strict\";\n\n/**\n * BxSlider v4.1.2 - Fully loaded, responsive content slider\n * http://bxslider.com\n *\n * Copyright 2014, Steven Wanderski - http://stevenwanderski.com - http://bxcreative.com\n * Written while drinking Belgian ales and listening to jazz\n *\n * Released under the MIT license - http://opensource.org/licenses/MIT\n */\n\n;\n(function ($) {\n var plugin = {};\n var defaults = {\n // GENERAL\n mode: 'horizontal',\n slideSelector: '',\n infiniteLoop: true,\n hideControlOnEnd: false,\n speed: 500,\n easing: null,\n slideMargin: 0,\n startSlide: 0,\n randomStart: false,\n captions: false,\n ticker: false,\n tickerHover: false,\n adaptiveHeight: false,\n adaptiveHeightSpeed: 500,\n video: false,\n useCSS: true,\n preloadImages: 'visible',\n responsive: true,\n slideZIndex: 50,\n wrapperClass: 'bx-wrapper',\n // TOUCH\n touchEnabled: true,\n swipeThreshold: 50,\n oneToOneTouch: true,\n preventDefaultSwipeX: true,\n preventDefaultSwipeY: false,\n // PAGER\n pager: true,\n pagerType: 'full',\n pagerShortSeparator: ' / ',\n pagerSelector: null,\n buildPager: null,\n pagerCustom: null,\n // CONTROLS\n controls: true,\n nextText: 'Next',\n prevText: 'Prev',\n nextSelector: null,\n prevSelector: null,\n autoControls: false,\n startText: 'Start',\n stopText: 'Stop',\n autoControlsCombine: false,\n autoControlsSelector: null,\n // AUTO\n auto: false,\n //pause: 4000,\n pause: 8000,\n autoStart: true,\n autoDirection: 'next',\n autoHover: false,\n autoDelay: 0,\n autoSlideForOnePage: false,\n // CAROUSEL\n minSlides: 1,\n maxSlides: 1,\n moveSlides: 0,\n slideWidth: 0,\n // CALLBACKS\n onSliderLoad: function onSliderLoad() {},\n onSlideBefore: function onSlideBefore() {},\n onSlideAfter: function onSlideAfter() {},\n onSlideNext: function onSlideNext() {},\n onSlidePrev: function onSlidePrev() {},\n onSliderResize: function onSliderResize() {}\n };\n $.fn.bxSlider = function (options) {\n if (this.length == 0) return this;\n\n // support mutltiple elements\n if (this.length > 1) {\n this.each(function () {\n $(this).bxSlider(options);\n });\n return this;\n }\n\n // create a namespace to be used throughout the plugin\n var slider = {};\n // set a reference to our slider element\n var el = this;\n plugin.el = this;\n\n /**\n * Makes slideshow responsive\n */\n // first get the original window dimens (thanks alot IE)\n var windowWidth = $(window).width();\n var windowHeight = $(window).height();\n\n /**\n * ===================================================================================\n * = PRIVATE FUNCTIONS\n * ===================================================================================\n */\n\n /**\n * Initializes namespace settings to be used throughout plugin\n */\n var init = function init() {\n // merge user-supplied options with the defaults\n slider.settings = $.extend({}, defaults, options);\n // parse slideWidth setting\n slider.settings.slideWidth = parseInt(slider.settings.slideWidth);\n // store the original children\n slider.children = el.children(slider.settings.slideSelector);\n // check if actual number of slides is less than minSlides / maxSlides\n if (slider.children.length < slider.settings.minSlides) slider.settings.minSlides = slider.children.length;\n if (slider.children.length < slider.settings.maxSlides) slider.settings.maxSlides = slider.children.length;\n // if random start, set the startSlide setting to random number\n if (slider.settings.randomStart) slider.settings.startSlide = Math.floor(Math.random() * slider.children.length);\n // store active slide information\n slider.active = {\n index: slider.settings.startSlide\n };\n // store if the slider is in carousel mode (displaying / moving multiple slides)\n slider.carousel = slider.settings.minSlides > 1 || slider.settings.maxSlides > 1;\n // if carousel, force preloadImages = 'all'\n if (slider.carousel) slider.settings.preloadImages = 'all';\n // calculate the min / max width thresholds based on min / max number of slides\n // used to setup and update carousel slides dimensions\n slider.minThreshold = slider.settings.minSlides * slider.settings.slideWidth + (slider.settings.minSlides - 1) * slider.settings.slideMargin;\n slider.maxThreshold = slider.settings.maxSlides * slider.settings.slideWidth + (slider.settings.maxSlides - 1) * slider.settings.slideMargin;\n // store the current state of the slider (if currently animating, working is true)\n slider.working = false;\n // initialize the controls object\n slider.controls = {};\n // initialize an auto interval\n slider.interval = null;\n // determine which property to use for transitions\n slider.animProp = slider.settings.mode == 'vertical' ? 'top' : 'left';\n // determine if hardware acceleration can be used\n slider.usingCSS = slider.settings.useCSS && slider.settings.mode != 'fade' && function () {\n // create our test div element\n var div = document.createElement('div');\n // css transition properties\n var props = ['WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective'];\n // test for each property\n for (var i in props) {\n if (div.style[props[i]] !== undefined) {\n slider.cssPrefix = props[i].replace('Perspective', '').toLowerCase();\n slider.animProp = '-' + slider.cssPrefix + '-transform';\n return true;\n }\n }\n return false;\n }();\n // if vertical mode always make maxSlides and minSlides equal\n if (slider.settings.mode == 'vertical') slider.settings.maxSlides = slider.settings.minSlides;\n // save original style data\n el.data(\"origStyle\", el.attr(\"style\"));\n el.children(slider.settings.slideSelector).each(function () {\n $(this).data(\"origStyle\", $(this).attr(\"style\"));\n });\n // perform all DOM / CSS modifications\n setup();\n };\n\n /**\n * Performs all DOM and CSS modifications\n */\n var setup = function setup() {\n // wrap el in a wrapper\n el.wrap('
');\n // store a namspace reference to .bx-viewport\n slider.viewport = el.parent();\n // add a loading div to display while images are loading\n slider.loader = $('
');\n slider.viewport.prepend(slider.loader);\n // set el to a massive width, to hold any needed slides\n // also strip any margin and padding from el\n el.css({\n width: slider.settings.mode == 'horizontal' ? slider.children.length * 100 + 215 + '%' : 'auto',\n position: 'relative'\n });\n // if using CSS, add the easing property\n if (slider.usingCSS && slider.settings.easing) {\n el.css('-' + slider.cssPrefix + '-transition-timing-function', slider.settings.easing);\n // if not using CSS and no easing value was supplied, use the default JS animation easing (swing)\n } else if (!slider.settings.easing) {\n slider.settings.easing = 'swing';\n }\n var slidesShowing = getNumberSlidesShowing();\n // make modifications to the viewport (.bx-viewport)\n slider.viewport.css({\n width: '100%',\n overflow: 'hidden',\n position: 'relative'\n });\n slider.viewport.parent().css({\n maxWidth: getViewportMaxWidth()\n });\n // make modification to the wrapper (.bx-wrapper)\n if (!slider.settings.pager) {\n slider.viewport.parent().css({\n margin: '0 auto 0px'\n });\n }\n // apply css to all slider children\n slider.children.css({\n 'float': slider.settings.mode == 'horizontal' ? 'left' : 'none',\n listStyle: 'none',\n position: 'relative'\n });\n // apply the calculated width after the float is applied to prevent scrollbar interference\n slider.children.css('width', getSlideWidth());\n // if slideMargin is supplied, add the css\n if (slider.settings.mode == 'horizontal' && slider.settings.slideMargin > 0) slider.children.css('marginRight', slider.settings.slideMargin);\n if (slider.settings.mode == 'vertical' && slider.settings.slideMargin > 0) slider.children.css('marginBottom', slider.settings.slideMargin);\n // if \"fade\" mode, add positioning and z-index CSS\n if (slider.settings.mode == 'fade') {\n slider.children.css({\n position: 'absolute',\n zIndex: 0,\n display: 'none'\n });\n // prepare the z-index on the showing element\n slider.children.eq(slider.settings.startSlide).css({\n zIndex: slider.settings.slideZIndex,\n display: 'block'\n });\n }\n // create an element to contain all slider controls (pager, start / stop, etc)\n slider.controls.el = $('
');\n // if captions are requested, add them\n if (slider.settings.captions) appendCaptions();\n // check if startSlide is last slide\n slider.active.last = slider.settings.startSlide == getPagerQty() - 1;\n // if video is true, set up the fitVids plugin\n if (slider.settings.video) el.fitVids();\n // set the default preload selector (visible)\n var preloadSelector = slider.children.eq(slider.settings.startSlide);\n if (slider.settings.preloadImages == \"all\") preloadSelector = slider.children;\n // only check for control addition if not in \"ticker\" mode\n if (!slider.settings.ticker) {\n // if pager is requested, add it\n if (slider.settings.pager) appendPager();\n // if controls are requested, add them\n if (slider.settings.controls) appendControls();\n // if auto is true, and auto controls are requested, add them\n if (slider.settings.auto && slider.settings.autoControls) appendControlsAuto();\n // if any control option is requested, add the controls wrapper\n if (slider.settings.controls || slider.settings.autoControls || slider.settings.pager) slider.viewport.after(slider.controls.el);\n // if ticker mode, do not allow a pager\n } else {\n slider.settings.pager = false;\n }\n // preload all images, then perform final DOM / CSS modifications that depend on images being loaded\n loadElements(preloadSelector, start);\n };\n var loadElements = function loadElements(selector, callback) {\n var total = selector.find('img, iframe').length;\n if (total == 0) {\n callback();\n return;\n }\n var count = 0;\n selector.find('img, iframe').each(function () {\n $(this).one('load', function () {\n if (++count == total) callback();\n }).each(function () {\n if (this.complete) $(this).load();\n });\n });\n };\n\n /**\n * Start the slider\n */\n var start = function start() {\n // if infinite loop, prepare additional slides\n if (slider.settings.infiniteLoop && slider.settings.mode != 'fade' && !slider.settings.ticker) {\n var slice = slider.settings.mode == 'vertical' ? slider.settings.minSlides : slider.settings.maxSlides;\n var sliceAppend = slider.children.slice(0, slice).clone().addClass('bx-clone');\n var slicePrepend = slider.children.slice(-slice).clone().addClass('bx-clone');\n el.append(sliceAppend).prepend(slicePrepend);\n }\n // remove the loading DOM element\n slider.loader.remove();\n // set the left / top position of \"el\"\n setSlidePosition();\n // if \"vertical\" mode, always use adaptiveHeight to prevent odd behavior\n if (slider.settings.mode == 'vertical') slider.settings.adaptiveHeight = true;\n // set the viewport height\n slider.viewport.height(getViewportHeight());\n // make sure everything is positioned just right (same as a window resize)\n el.redrawSlider();\n // onSliderLoad callback\n slider.settings.onSliderLoad(slider.active.index);\n // slider has been fully initialized\n slider.initialized = true;\n // bind the resize call to the window\n if (slider.settings.responsive) $(window).bind('resize', resizeWindow);\n // if auto is true and has more than 1 page, start the show\n if (slider.settings.auto && slider.settings.autoStart && (getPagerQty() > 1 || slider.settings.autoSlideForOnePage)) initAuto();\n // if ticker is true, start the ticker\n if (slider.settings.ticker) initTicker();\n // if pager is requested, make the appropriate pager link active\n if (slider.settings.pager) updatePagerActive(slider.settings.startSlide);\n // check for any updates to the controls (like hideControlOnEnd updates)\n if (slider.settings.controls) updateDirectionControls();\n // if touchEnabled is true, setup the touch events\n if (slider.settings.touchEnabled && !slider.settings.ticker) initTouch();\n };\n\n /**\n * Returns the calculated height of the viewport, used to determine either adaptiveHeight or the maxHeight value\n */\n var getViewportHeight = function getViewportHeight() {\n var height = 0;\n // first determine which children (slides) should be used in our height calculation\n var children = $();\n // if mode is not \"vertical\" and adaptiveHeight is false, include all children\n if (slider.settings.mode != 'vertical' && !slider.settings.adaptiveHeight) {\n children = slider.children;\n } else {\n // if not carousel, return the single active child\n if (!slider.carousel) {\n children = slider.children.eq(slider.active.index);\n // if carousel, return a slice of children\n } else {\n // get the individual slide index\n var currentIndex = slider.settings.moveSlides == 1 ? slider.active.index : slider.active.index * getMoveBy();\n // add the current slide to the children\n children = slider.children.eq(currentIndex);\n // cycle through the remaining \"showing\" slides\n for (i = 1; i <= slider.settings.maxSlides - 1; i++) {\n // if looped back to the start\n if (currentIndex + i >= slider.children.length) {\n children = children.add(slider.children.eq(i - 1));\n } else {\n children = children.add(slider.children.eq(currentIndex + i));\n }\n }\n }\n }\n // if \"vertical\" mode, calculate the sum of the heights of the children\n if (slider.settings.mode == 'vertical') {\n children.each(function (index) {\n height += $(this).outerHeight();\n });\n // add user-supplied margins\n if (slider.settings.slideMargin > 0) {\n height += slider.settings.slideMargin * (slider.settings.minSlides - 1);\n }\n // if not \"vertical\" mode, calculate the max height of the children\n } else {\n height = Math.max.apply(Math, children.map(function () {\n return $(this).outerHeight(false);\n }).get());\n }\n if (slider.viewport.css('box-sizing') == 'border-box') {\n height += parseFloat(slider.viewport.css('padding-top')) + parseFloat(slider.viewport.css('padding-bottom')) + parseFloat(slider.viewport.css('border-top-width')) + parseFloat(slider.viewport.css('border-bottom-width'));\n } else if (slider.viewport.css('box-sizing') == 'padding-box') {\n height += parseFloat(slider.viewport.css('padding-top')) + parseFloat(slider.viewport.css('padding-bottom'));\n }\n return height;\n };\n\n /**\n * Returns the calculated width to be used for the outer wrapper / viewport\n */\n var getViewportMaxWidth = function getViewportMaxWidth() {\n var width = '100%';\n if (slider.settings.slideWidth > 0) {\n if (slider.settings.mode == 'horizontal') {\n width = slider.settings.maxSlides * slider.settings.slideWidth + (slider.settings.maxSlides - 1) * slider.settings.slideMargin;\n } else {\n width = slider.settings.slideWidth;\n }\n }\n return width;\n };\n\n /**\n * Returns the calculated width to be applied to each slide\n */\n var getSlideWidth = function getSlideWidth() {\n // start with any user-supplied slide width\n var newElWidth = slider.settings.slideWidth;\n // get the current viewport width\n var wrapWidth = slider.viewport.width();\n // if slide width was not supplied, or is larger than the viewport use the viewport width\n if (slider.settings.slideWidth == 0 || slider.settings.slideWidth > wrapWidth && !slider.carousel || slider.settings.mode == 'vertical') {\n newElWidth = wrapWidth;\n // if carousel, use the thresholds to determine the width\n } else if (slider.settings.maxSlides > 1 && slider.settings.mode == 'horizontal') {\n if (wrapWidth > slider.maxThreshold) {\n // newElWidth = (wrapWidth - (slider.settings.slideMargin * (slider.settings.maxSlides - 1))) / slider.settings.maxSlides;\n } else if (wrapWidth < slider.minThreshold) {\n newElWidth = (wrapWidth - slider.settings.slideMargin * (slider.settings.minSlides - 1)) / slider.settings.minSlides;\n }\n }\n return newElWidth;\n };\n\n /**\n * Returns the number of slides currently visible in the viewport (includes partially visible slides)\n */\n var getNumberSlidesShowing = function getNumberSlidesShowing() {\n var slidesShowing = 1;\n if (slider.settings.mode == 'horizontal' && slider.settings.slideWidth > 0) {\n // if viewport is smaller than minThreshold, return minSlides\n if (slider.viewport.width() < slider.minThreshold) {\n slidesShowing = slider.settings.minSlides;\n // if viewport is larger than minThreshold, return maxSlides\n } else if (slider.viewport.width() > slider.maxThreshold) {\n slidesShowing = slider.settings.maxSlides;\n // if viewport is between min / max thresholds, divide viewport width by first child width\n } else {\n var childWidth = slider.children.first().width() + slider.settings.slideMargin;\n slidesShowing = Math.floor((slider.viewport.width() + slider.settings.slideMargin) / childWidth);\n }\n // if \"vertical\" mode, slides showing will always be minSlides\n } else if (slider.settings.mode == 'vertical') {\n slidesShowing = slider.settings.minSlides;\n }\n return slidesShowing;\n };\n\n /**\n * Returns the number of pages (one full viewport of slides is one \"page\")\n */\n var getPagerQty = function getPagerQty() {\n var pagerQty = 0;\n // if moveSlides is specified by the user\n if (slider.settings.moveSlides > 0) {\n if (slider.settings.infiniteLoop) {\n pagerQty = Math.ceil(slider.children.length / getMoveBy());\n } else {\n // use a while loop to determine pages\n var breakPoint = 0;\n var counter = 0;\n // when breakpoint goes above children length, counter is the number of pages\n while (breakPoint < slider.children.length) {\n ++pagerQty;\n breakPoint = counter + getNumberSlidesShowing();\n counter += slider.settings.moveSlides <= getNumberSlidesShowing() ? slider.settings.moveSlides : getNumberSlidesShowing();\n }\n }\n // if moveSlides is 0 (auto) divide children length by sides showing, then round up\n } else {\n pagerQty = Math.ceil(slider.children.length / getNumberSlidesShowing());\n }\n return pagerQty;\n };\n\n /**\n * Returns the number of indivual slides by which to shift the slider\n */\n var getMoveBy = function getMoveBy() {\n // if moveSlides was set by the user and moveSlides is less than number of slides showing\n if (slider.settings.moveSlides > 0 && slider.settings.moveSlides <= getNumberSlidesShowing()) {\n return slider.settings.moveSlides;\n }\n // if moveSlides is 0 (auto)\n return getNumberSlidesShowing();\n };\n\n /**\n * Sets the slider's (el) left or top position\n */\n var setSlidePosition = function setSlidePosition() {\n // if last slide, not infinite loop, and number of children is larger than specified maxSlides\n if (slider.children.length > slider.settings.maxSlides && slider.active.last && !slider.settings.infiniteLoop) {\n if (slider.settings.mode == 'horizontal') {\n // get the last child's position\n var lastChild = slider.children.last();\n var position = lastChild.position();\n // set the left position\n _setPositionProperty(-(position.left - (slider.viewport.width() - lastChild.outerWidth())), 'reset', 0);\n } else if (slider.settings.mode == 'vertical') {\n // get the last showing index's position\n var lastShowingIndex = slider.children.length - slider.settings.minSlides;\n var position = slider.children.eq(lastShowingIndex).position();\n // set the top position\n _setPositionProperty(-position.top, 'reset', 0);\n }\n // if not last slide\n } else {\n // get the position of the first showing slide\n var position = slider.children.eq(slider.active.index * getMoveBy()).position();\n // check for last slide\n if (slider.active.index == getPagerQty() - 1) slider.active.last = true;\n // set the repective position\n if (position != undefined) {\n if (slider.settings.mode == 'horizontal') _setPositionProperty(-position.left, 'reset', 0);else if (slider.settings.mode == 'vertical') _setPositionProperty(-position.top, 'reset', 0);\n }\n }\n };\n\n /**\n * Sets the el's animating property position (which in turn will sometimes animate el).\n * If using CSS, sets the transform property. If not using CSS, sets the top / left property.\n *\n * @param value (int)\n * - the animating property's value\n *\n * @param type (string) 'slider', 'reset', 'ticker'\n * - the type of instance for which the function is being\n *\n * @param duration (int)\n * - the amount of time (in ms) the transition should occupy\n *\n * @param params (array) optional\n * - an optional parameter containing any variables that need to be passed in\n */\n var _setPositionProperty = function setPositionProperty(value, type, duration, params) {\n // use CSS transform\n if (slider.usingCSS) {\n // determine the translate3d value\n var propValue = slider.settings.mode == 'vertical' ? 'translate3d(0, ' + value + 'px, 0)' : 'translate3d(' + value + 'px, 0, 0)';\n // add the CSS transition-duration\n el.css('-' + slider.cssPrefix + '-transition-duration', duration / 1000 + 's');\n if (type == 'slide') {\n // set the property value\n el.css(slider.animProp, propValue);\n // bind a callback method - executes when CSS transition completes\n el.bind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd', function () {\n // unbind the callback\n el.unbind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd');\n updateAfterSlideTransition();\n });\n } else if (type == 'reset') {\n el.css(slider.animProp, propValue);\n } else if (type == 'ticker') {\n // make the transition use 'linear'\n el.css('-' + slider.cssPrefix + '-transition-timing-function', 'linear');\n el.css(slider.animProp, propValue);\n // bind a callback method - executes when CSS transition completes\n el.bind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd', function () {\n // unbind the callback\n el.unbind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd');\n // reset the position\n _setPositionProperty(params['resetValue'], 'reset', 0);\n // start the loop again\n tickerLoop();\n });\n }\n // use JS animate\n } else {\n var animateObj = {};\n animateObj[slider.animProp] = value;\n if (type == 'slide') {\n el.animate(animateObj, duration, slider.settings.easing, function () {\n updateAfterSlideTransition();\n });\n } else if (type == 'reset') {\n el.css(slider.animProp, value);\n } else if (type == 'ticker') {\n el.animate(animateObj, speed, 'linear', function () {\n _setPositionProperty(params['resetValue'], 'reset', 0);\n // run the recursive loop after animation\n tickerLoop();\n });\n }\n }\n };\n\n /**\n * Populates the pager with proper amount of pages\n */\n var populatePager = function populatePager() {\n var pagerHtml = '';\n var pagerQty = getPagerQty();\n // loop through each pager item\n for (var i = 0; i < pagerQty; i++) {\n var linkContent = '';\n // if a buildPager function is supplied, use it to get pager link value, else use index + 1\n if (slider.settings.buildPager && $.isFunction(slider.settings.buildPager)) {\n linkContent = slider.settings.buildPager(i);\n slider.pagerEl.addClass('bx-custom-pager');\n } else {\n linkContent = i + 1;\n slider.pagerEl.addClass('bx-default-pager');\n }\n // var linkContent = slider.settings.buildPager && $.isFunction(slider.settings.buildPager) ? slider.settings.buildPager(i) : i + 1;\n // add the markup to the string\n pagerHtml += '';\n }\n ;\n // populate the pager element with pager links\n slider.pagerEl.html(pagerHtml);\n };\n\n /**\n * Appends the pager to the controls element\n */\n var appendPager = function appendPager() {\n if (!slider.settings.pagerCustom) {\n // create the pager DOM element\n slider.pagerEl = $('
');\n // if a pager selector was supplied, populate it with the pager\n if (slider.settings.pagerSelector) {\n $(slider.settings.pagerSelector).html(slider.pagerEl);\n // if no pager selector was supplied, add it after the wrapper\n } else {\n slider.controls.el.addClass('bx-has-pager').append(slider.pagerEl);\n }\n // populate the pager\n populatePager();\n } else {\n slider.pagerEl = $(slider.settings.pagerCustom);\n }\n // assign the pager click binding\n slider.pagerEl.on('click', 'a', clickPagerBind);\n };\n\n /**\n * Appends prev / next controls to the controls element\n */\n var appendControls = function appendControls() {\n slider.controls.next = $('' + slider.settings.nextText + '');\n slider.controls.prev = $('' + slider.settings.prevText + '');\n // bind click actions to the controls\n slider.controls.next.bind('click', clickNextBind);\n slider.controls.prev.bind('click', clickPrevBind);\n // if nextSlector was supplied, populate it\n if (slider.settings.nextSelector) {\n $(slider.settings.nextSelector).append(slider.controls.next);\n }\n // if prevSlector was supplied, populate it\n if (slider.settings.prevSelector) {\n $(slider.settings.prevSelector).append(slider.controls.prev);\n }\n // if no custom selectors were supplied\n if (!slider.settings.nextSelector && !slider.settings.prevSelector) {\n // add the controls to the DOM\n slider.controls.directionEl = $('
');\n // add the control elements to the directionEl\n slider.controls.directionEl.append(slider.controls.prev).append(slider.controls.next);\n // slider.viewport.append(slider.controls.directionEl);\n slider.controls.el.addClass('bx-has-controls-direction').append(slider.controls.directionEl);\n }\n };\n\n /**\n * Appends start / stop auto controls to the controls element\n */\n var appendControlsAuto = function appendControlsAuto() {\n slider.controls.start = $('');\n slider.controls.stop = $('');\n // add the controls to the DOM\n slider.controls.autoEl = $('
');\n // bind click actions to the controls\n slider.controls.autoEl.on('click', '.bx-start', clickStartBind);\n slider.controls.autoEl.on('click', '.bx-stop', clickStopBind);\n // if autoControlsCombine, insert only the \"start\" control\n if (slider.settings.autoControlsCombine) {\n slider.controls.autoEl.append(slider.controls.start);\n // if autoControlsCombine is false, insert both controls\n } else {\n slider.controls.autoEl.append(slider.controls.start).append(slider.controls.stop);\n }\n // if auto controls selector was supplied, populate it with the controls\n if (slider.settings.autoControlsSelector) {\n $(slider.settings.autoControlsSelector).html(slider.controls.autoEl);\n // if auto controls selector was not supplied, add it after the wrapper\n } else {\n slider.controls.el.addClass('bx-has-controls-auto').append(slider.controls.autoEl);\n }\n // update the auto controls\n updateAutoControls(slider.settings.autoStart ? 'stop' : 'start');\n };\n\n /**\n * Appends image captions to the DOM\n */\n var appendCaptions = function appendCaptions() {\n // cycle through each child\n slider.children.each(function (index) {\n // get the image title attribute\n var title = $(this).find('img:first').attr('title');\n // append the caption\n if (title != undefined && ('' + title).length) {\n $(this).append('
' + title + '
');\n }\n });\n };\n\n /**\n * Click next binding\n *\n * @param e (event)\n * - DOM event object\n */\n var clickNextBind = function clickNextBind(e) {\n // if auto show is running, stop it\n if (slider.settings.auto) el.stopAuto();\n el.goToNextSlide();\n e.preventDefault();\n };\n\n /**\n * Click prev binding\n *\n * @param e (event)\n * - DOM event object\n */\n var clickPrevBind = function clickPrevBind(e) {\n // if auto show is running, stop it\n if (slider.settings.auto) el.stopAuto();\n el.goToPrevSlide();\n e.preventDefault();\n };\n\n /**\n * Click start binding\n *\n * @param e (event)\n * - DOM event object\n */\n var clickStartBind = function clickStartBind(e) {\n el.startAuto();\n e.preventDefault();\n };\n\n /**\n * Click stop binding\n *\n * @param e (event)\n * - DOM event object\n */\n var clickStopBind = function clickStopBind(e) {\n el.stopAuto();\n e.preventDefault();\n };\n\n /**\n * Click pager binding\n *\n * @param e (event)\n * - DOM event object\n */\n var clickPagerBind = function clickPagerBind(e) {\n // if auto show is running, stop it\n if (slider.settings.auto) el.stopAuto();\n var pagerLink = $(e.currentTarget);\n if (pagerLink.attr('data-slide-index') !== undefined) {\n var pagerIndex = parseInt(pagerLink.attr('data-slide-index'));\n // if clicked pager link is not active, continue with the goToSlide call\n if (pagerIndex != slider.active.index) el.goToSlide(pagerIndex);\n e.preventDefault();\n }\n };\n\n /**\n * Updates the pager links with an active class\n *\n * @param slideIndex (int)\n * - index of slide to make active\n */\n var updatePagerActive = function updatePagerActive(slideIndex) {\n // if \"short\" pager type\n var len = slider.children.length; // nb of children\n if (slider.settings.pagerType == 'short') {\n if (slider.settings.maxSlides > 1) {\n len = Math.ceil(slider.children.length / slider.settings.maxSlides);\n }\n slider.pagerEl.html(slideIndex + 1 + slider.settings.pagerShortSeparator + len);\n return;\n }\n // remove all pager active classes\n slider.pagerEl.find('a').removeClass('active');\n // apply the active class for all pagers\n slider.pagerEl.each(function (i, el) {\n $(el).find('a').eq(slideIndex).addClass('active');\n });\n };\n\n /**\n * Performs needed actions after a slide transition\n */\n var updateAfterSlideTransition = function updateAfterSlideTransition() {\n // if infinte loop is true\n if (slider.settings.infiniteLoop) {\n var position = '';\n // first slide\n if (slider.active.index == 0) {\n // set the new position\n position = slider.children.eq(0).position();\n // carousel, last slide\n } else if (slider.active.index == getPagerQty() - 1 && slider.carousel) {\n position = slider.children.eq((getPagerQty() - 1) * getMoveBy()).position();\n // last slide\n } else if (slider.active.index == slider.children.length - 1) {\n position = slider.children.eq(slider.children.length - 1).position();\n }\n if (position) {\n if (slider.settings.mode == 'horizontal') {\n _setPositionProperty(-position.left, 'reset', 0);\n } else if (slider.settings.mode == 'vertical') {\n _setPositionProperty(-position.top, 'reset', 0);\n }\n }\n }\n // declare that the transition is complete\n slider.working = false;\n // onSlideAfter callback\n slider.settings.onSlideAfter(slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);\n };\n\n /**\n * Updates the auto controls state (either active, or combined switch)\n *\n * @param state (string) \"start\", \"stop\"\n * - the new state of the auto show\n */\n var updateAutoControls = function updateAutoControls(state) {\n // if autoControlsCombine is true, replace the current control with the new state\n if (slider.settings.autoControlsCombine) {\n slider.controls.autoEl.html(slider.controls[state]);\n // if autoControlsCombine is false, apply the \"active\" class to the appropriate control\n } else {\n slider.controls.autoEl.find('a').removeClass('active');\n slider.controls.autoEl.find('a:not(.bx-' + state + ')').addClass('active');\n }\n };\n\n /**\n * Updates the direction controls (checks if either should be hidden)\n */\n var updateDirectionControls = function updateDirectionControls() {\n if (getPagerQty() == 1) {\n slider.controls.prev.addClass('disabled');\n slider.controls.next.addClass('disabled');\n } else if (!slider.settings.infiniteLoop && slider.settings.hideControlOnEnd) {\n // if first slide\n if (slider.active.index == 0) {\n slider.controls.prev.addClass('disabled');\n slider.controls.next.removeClass('disabled');\n // if last slide\n } else if (slider.active.index == getPagerQty() - 1) {\n slider.controls.next.addClass('disabled');\n slider.controls.prev.removeClass('disabled');\n // if any slide in the middle\n } else {\n slider.controls.prev.removeClass('disabled');\n slider.controls.next.removeClass('disabled');\n }\n }\n };\n\n /**\n * Initialzes the auto process\n */\n var initAuto = function initAuto() {\n // if autoDelay was supplied, launch the auto show using a setTimeout() call\n if (slider.settings.autoDelay > 0) {\n var timeout = setTimeout(el.startAuto, slider.settings.autoDelay);\n // if autoDelay was not supplied, start the auto show normally\n } else {\n el.startAuto();\n }\n // if autoHover is requested\n if (slider.settings.autoHover) {\n // on el hover\n el.hover(function () {\n // if the auto show is currently playing (has an active interval)\n if (slider.interval) {\n // stop the auto show and pass true agument which will prevent control update\n el.stopAuto(true);\n // create a new autoPaused value which will be used by the relative \"mouseout\" event\n slider.autoPaused = true;\n }\n }, function () {\n // if the autoPaused value was created be the prior \"mouseover\" event\n if (slider.autoPaused) {\n // start the auto show and pass true agument which will prevent control update\n el.startAuto(true);\n // reset the autoPaused value\n slider.autoPaused = null;\n }\n });\n }\n };\n\n /**\n * Initialzes the ticker process\n */\n var initTicker = function initTicker() {\n var startPosition = 0;\n // if autoDirection is \"next\", append a clone of the entire slider\n if (slider.settings.autoDirection == 'next') {\n el.append(slider.children.clone().addClass('bx-clone'));\n // if autoDirection is \"prev\", prepend a clone of the entire slider, and set the left position\n } else {\n el.prepend(slider.children.clone().addClass('bx-clone'));\n var position = slider.children.first().position();\n startPosition = slider.settings.mode == 'horizontal' ? -position.left : -position.top;\n }\n _setPositionProperty(startPosition, 'reset', 0);\n // do not allow controls in ticker mode\n slider.settings.pager = false;\n slider.settings.controls = false;\n slider.settings.autoControls = false;\n // if autoHover is requested\n if (slider.settings.tickerHover && !slider.usingCSS) {\n // on el hover\n slider.viewport.hover(function () {\n el.stop();\n }, function () {\n // calculate the total width of children (used to calculate the speed ratio)\n var totalDimens = 0;\n slider.children.each(function (index) {\n totalDimens += slider.settings.mode == 'horizontal' ? $(this).outerWidth(true) : $(this).outerHeight(true);\n });\n // calculate the speed ratio (used to determine the new speed to finish the paused animation)\n var ratio = slider.settings.speed / totalDimens;\n // determine which property to use\n var property = slider.settings.mode == 'horizontal' ? 'left' : 'top';\n // calculate the new speed\n var newSpeed = ratio * (totalDimens - Math.abs(parseInt(el.css(property))));\n tickerLoop(newSpeed);\n });\n }\n // start the ticker loop\n tickerLoop();\n };\n\n /**\n * Runs a continuous loop, news ticker-style\n */\n var tickerLoop = function tickerLoop(resumeSpeed) {\n speed = resumeSpeed ? resumeSpeed : slider.settings.speed;\n var position = {\n left: 0,\n top: 0\n };\n var reset = {\n left: 0,\n top: 0\n };\n // if \"next\" animate left position to last child, then reset left to 0\n if (slider.settings.autoDirection == 'next') {\n position = el.find('.bx-clone').first().position();\n // if \"prev\" animate left position to 0, then reset left to first non-clone child\n } else {\n reset = slider.children.first().position();\n }\n var animateProperty = slider.settings.mode == 'horizontal' ? -position.left : -position.top;\n var resetValue = slider.settings.mode == 'horizontal' ? -reset.left : -reset.top;\n var params = {\n resetValue: resetValue\n };\n _setPositionProperty(animateProperty, 'ticker', speed, params);\n };\n\n /**\n * Initializes touch events\n */\n var initTouch = function initTouch() {\n // initialize object to contain all touch values\n slider.touch = {\n start: {\n x: 0,\n y: 0\n },\n end: {\n x: 0,\n y: 0\n }\n };\n slider.viewport.bind('touchstart', onTouchStart);\n };\n\n /**\n * Event handler for \"touchstart\"\n *\n * @param e (event)\n * - DOM event object\n */\n var onTouchStart = function onTouchStart(e) {\n if (slider.working) {\n e.preventDefault();\n } else {\n // record the original position when touch starts\n slider.touch.originalPos = el.position();\n var orig = e.originalEvent;\n // record the starting touch x, y coordinates\n slider.touch.start.x = orig.changedTouches[0].pageX;\n slider.touch.start.y = orig.changedTouches[0].pageY;\n // bind a \"touchmove\" event to the viewport\n slider.viewport.bind('touchmove', onTouchMove);\n // bind a \"touchend\" event to the viewport\n slider.viewport.bind('touchend', _onTouchEnd);\n }\n };\n\n /**\n * Event handler for \"touchmove\"\n *\n * @param e (event)\n * - DOM event object\n */\n var onTouchMove = function onTouchMove(e) {\n var orig = e.originalEvent;\n // if scrolling on y axis, do not prevent default\n var xMovement = Math.abs(orig.changedTouches[0].pageX - slider.touch.start.x);\n var yMovement = Math.abs(orig.changedTouches[0].pageY - slider.touch.start.y);\n // x axis swipe\n if (xMovement * 3 > yMovement && slider.settings.preventDefaultSwipeX) {\n e.preventDefault();\n // y axis swipe\n } else if (yMovement * 3 > xMovement && slider.settings.preventDefaultSwipeY) {\n e.preventDefault();\n }\n if (slider.settings.mode != 'fade' && slider.settings.oneToOneTouch) {\n var value = 0;\n // if horizontal, drag along x axis\n if (slider.settings.mode == 'horizontal') {\n var change = orig.changedTouches[0].pageX - slider.touch.start.x;\n value = slider.touch.originalPos.left + change;\n // if vertical, drag along y axis\n } else {\n var change = orig.changedTouches[0].pageY - slider.touch.start.y;\n value = slider.touch.originalPos.top + change;\n }\n _setPositionProperty(value, 'reset', 0);\n }\n };\n\n /**\n * Event handler for \"touchend\"\n *\n * @param e (event)\n * - DOM event object\n */\n var _onTouchEnd = function onTouchEnd(e) {\n slider.viewport.unbind('touchmove', onTouchMove);\n var orig = e.originalEvent;\n var value = 0;\n // record end x, y positions\n slider.touch.end.x = orig.changedTouches[0].pageX;\n slider.touch.end.y = orig.changedTouches[0].pageY;\n // if fade mode, check if absolute x distance clears the threshold\n if (slider.settings.mode == 'fade') {\n var distance = Math.abs(slider.touch.start.x - slider.touch.end.x);\n if (distance >= slider.settings.swipeThreshold) {\n slider.touch.start.x > slider.touch.end.x ? el.goToNextSlide() : el.goToPrevSlide();\n el.stopAuto();\n }\n // not fade mode\n } else {\n var distance = 0;\n // calculate distance and el's animate property\n if (slider.settings.mode == 'horizontal') {\n distance = slider.touch.end.x - slider.touch.start.x;\n value = slider.touch.originalPos.left;\n } else {\n distance = slider.touch.end.y - slider.touch.start.y;\n value = slider.touch.originalPos.top;\n }\n // if not infinite loop and first / last slide, do not attempt a slide transition\n if (!slider.settings.infiniteLoop && (slider.active.index == 0 && distance > 0 || slider.active.last && distance < 0)) {\n _setPositionProperty(value, 'reset', 200);\n } else {\n // check if distance clears threshold\n if (Math.abs(distance) >= slider.settings.swipeThreshold) {\n distance < 0 ? el.goToNextSlide() : el.goToPrevSlide();\n el.stopAuto();\n } else {\n // el.animate(property, 200);\n _setPositionProperty(value, 'reset', 200);\n }\n }\n }\n slider.viewport.unbind('touchend', _onTouchEnd);\n };\n\n /**\n * Window resize event callback\n */\n var resizeWindow = function resizeWindow(e) {\n // don't do anything if slider isn't initialized.\n if (!slider.initialized) return;\n // get the new window dimens (again, thank you IE)\n var windowWidthNew = $(window).width();\n var windowHeightNew = $(window).height();\n // make sure that it is a true window resize\n // *we must check this because our dinosaur friend IE fires a window resize event when certain DOM elements\n // are resized. Can you just die already?*\n if (windowWidth != windowWidthNew || windowHeight != windowHeightNew) {\n // set the new window dimens\n windowWidth = windowWidthNew;\n windowHeight = windowHeightNew;\n // update all dynamic elements\n el.redrawSlider();\n // Call user resize handler\n slider.settings.onSliderResize.call(el, slider.active.index);\n }\n };\n\n /**\n * ===================================================================================\n * = PUBLIC FUNCTIONS\n * ===================================================================================\n */\n\n /**\n * Performs slide transition to the specified slide\n *\n * @param slideIndex (int)\n * - the destination slide's index (zero-based)\n *\n * @param direction (string)\n * - INTERNAL USE ONLY - the direction of travel (\"prev\" / \"next\")\n */\n el.goToSlide = function (slideIndex, direction) {\n // if plugin is currently in motion, ignore request\n if (slider.working || slider.active.index == slideIndex) return;\n // declare that plugin is in motion\n slider.working = true;\n // store the old index\n slider.oldIndex = slider.active.index;\n // if slideIndex is less than zero, set active index to last child (this happens during infinite loop)\n if (slideIndex < 0) {\n slider.active.index = getPagerQty() - 1;\n // if slideIndex is greater than children length, set active index to 0 (this happens during infinite loop)\n } else if (slideIndex >= getPagerQty()) {\n slider.active.index = 0;\n // set active index to requested slide\n } else {\n slider.active.index = slideIndex;\n }\n // onSlideBefore, onSlideNext, onSlidePrev callbacks\n slider.settings.onSlideBefore(slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);\n if (direction == 'next') {\n slider.settings.onSlideNext(slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);\n } else if (direction == 'prev') {\n slider.settings.onSlidePrev(slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);\n }\n // check if last slide\n slider.active.last = slider.active.index >= getPagerQty() - 1;\n // update the pager with active class\n if (slider.settings.pager) updatePagerActive(slider.active.index);\n // // check for direction control update\n if (slider.settings.controls) updateDirectionControls();\n // if slider is set to mode: \"fade\"\n if (slider.settings.mode == 'fade') {\n // if adaptiveHeight is true and next height is different from current height, animate to the new height\n if (slider.settings.adaptiveHeight && slider.viewport.height() != getViewportHeight()) {\n slider.viewport.animate({\n height: getViewportHeight()\n }, slider.settings.adaptiveHeightSpeed);\n }\n // fade out the visible child and reset its z-index value\n slider.children.filter(':visible').fadeOut(slider.settings.speed).css({\n zIndex: 0\n });\n // fade in the newly requested slide\n slider.children.eq(slider.active.index).css('zIndex', slider.settings.slideZIndex + 1).fadeIn(slider.settings.speed, function () {\n $(this).css('zIndex', slider.settings.slideZIndex);\n updateAfterSlideTransition();\n });\n // slider mode is not \"fade\"\n } else {\n // if adaptiveHeight is true and next height is different from current height, animate to the new height\n if (slider.settings.adaptiveHeight && slider.viewport.height() != getViewportHeight()) {\n slider.viewport.animate({\n height: getViewportHeight()\n }, slider.settings.adaptiveHeightSpeed);\n }\n var moveBy = 0;\n var position = {\n left: 0,\n top: 0\n };\n // if carousel and not infinite loop\n if (!slider.settings.infiniteLoop && slider.carousel && slider.active.last) {\n if (slider.settings.mode == 'horizontal') {\n // get the last child position\n var lastChild = slider.children.eq(slider.children.length - 1);\n position = lastChild.position();\n // calculate the position of the last slide\n moveBy = slider.viewport.width() - lastChild.outerWidth();\n } else {\n // get last showing index position\n var lastShowingIndex = slider.children.length - slider.settings.minSlides;\n position = slider.children.eq(lastShowingIndex).position();\n }\n // horizontal carousel, going previous while on first slide (infiniteLoop mode)\n } else if (slider.carousel && slider.active.last && direction == 'prev') {\n // get the last child position\n var eq = slider.settings.moveSlides == 1 ? slider.settings.maxSlides - getMoveBy() : (getPagerQty() - 1) * getMoveBy() - (slider.children.length - slider.settings.maxSlides);\n var lastChild = el.children('.bx-clone').eq(eq);\n position = lastChild.position();\n // if infinite loop and \"Next\" is clicked on the last slide\n } else if (direction == 'next' && slider.active.index == 0) {\n // get the last clone position\n position = el.find('> .bx-clone').eq(slider.settings.maxSlides).position();\n slider.active.last = false;\n // normal non-zero requests\n } else if (slideIndex >= 0) {\n var requestEl = slideIndex * getMoveBy();\n position = slider.children.eq(requestEl).position();\n }\n\n /* If the position doesn't exist\n * (e.g. if you destroy the slider on a next click),\n * it doesn't throw an error.\n */\n if (\"undefined\" !== typeof position) {\n var value = slider.settings.mode == 'horizontal' ? -(position.left - moveBy) : -position.top;\n // plugin values to be animated\n _setPositionProperty(value, 'slide', slider.settings.speed);\n }\n }\n };\n\n /**\n * Transitions to the next slide in the show\n */\n el.goToNextSlide = function () {\n // if infiniteLoop is false and last page is showing, disregard call\n if (!slider.settings.infiniteLoop && slider.active.last) return;\n var pagerIndex = parseInt(slider.active.index) + 1;\n el.goToSlide(pagerIndex, 'next');\n };\n\n /**\n * Transitions to the prev slide in the show\n */\n el.goToPrevSlide = function () {\n // if infiniteLoop is false and last page is showing, disregard call\n if (!slider.settings.infiniteLoop && slider.active.index == 0) return;\n var pagerIndex = parseInt(slider.active.index) - 1;\n el.goToSlide(pagerIndex, 'prev');\n };\n\n /**\n * Starts the auto show\n *\n * @param preventControlUpdate (boolean)\n * - if true, auto controls state will not be updated\n */\n el.startAuto = function (preventControlUpdate) {\n // if an interval already exists, disregard call\n if (slider.interval) return;\n // create an interval\n slider.interval = setInterval(function () {\n slider.settings.autoDirection == 'next' ? el.goToNextSlide() : el.goToPrevSlide();\n }, slider.settings.pause);\n // if auto controls are displayed and preventControlUpdate is not true\n if (slider.settings.autoControls && preventControlUpdate != true) updateAutoControls('stop');\n };\n\n /**\n * Stops the auto show\n *\n * @param preventControlUpdate (boolean)\n * - if true, auto controls state will not be updated\n */\n el.stopAuto = function (preventControlUpdate) {\n // if no interval exists, disregard call\n if (!slider.interval) return;\n // clear the interval\n clearInterval(slider.interval);\n slider.interval = null;\n // if auto controls are displayed and preventControlUpdate is not true\n if (slider.settings.autoControls && preventControlUpdate != true) updateAutoControls('start');\n };\n\n /**\n * Returns current slide index (zero-based)\n */\n el.getCurrentSlide = function () {\n return slider.active.index;\n };\n\n /**\n * Returns current slide element\n */\n el.getCurrentSlideElement = function () {\n return slider.children.eq(slider.active.index);\n };\n\n /**\n * Returns number of slides in show\n */\n el.getSlideCount = function () {\n return slider.children.length;\n };\n\n /**\n * Update all dynamic slider elements\n */\n el.redrawSlider = function () {\n // resize all children in ratio to new screen size\n slider.children.add(el.find('.bx-clone')).width(getSlideWidth());\n // adjust the height\n slider.viewport.css('height', getViewportHeight());\n // update the slide position\n if (!slider.settings.ticker) setSlidePosition();\n // if active.last was true before the screen resize, we want\n // to keep it last no matter what screen size we end on\n if (slider.active.last) slider.active.index = getPagerQty() - 1;\n // if the active index (page) no longer exists due to the resize, simply set the index as last\n if (slider.active.index >= getPagerQty()) slider.active.last = true;\n // if a pager is being displayed and a custom pager is not being used, update it\n if (slider.settings.pager && !slider.settings.pagerCustom) {\n populatePager();\n updatePagerActive(slider.active.index);\n }\n };\n\n /**\n * Destroy the current instance of the slider (revert everything back to original state)\n */\n el.destroySlider = function () {\n // don't do anything if slider has already been destroyed\n if (!slider.initialized) return;\n slider.initialized = false;\n $('.bx-clone', this).remove();\n slider.children.each(function () {\n $(this).data(\"origStyle\") != undefined ? $(this).attr(\"style\", $(this).data(\"origStyle\")) : $(this).removeAttr('style');\n });\n $(this).data(\"origStyle\") != undefined ? this.attr(\"style\", $(this).data(\"origStyle\")) : $(this).removeAttr('style');\n $(this).unwrap().unwrap();\n if (slider.controls.el) slider.controls.el.remove();\n if (slider.controls.next) slider.controls.next.remove();\n if (slider.controls.prev) slider.controls.prev.remove();\n if (slider.pagerEl && slider.settings.controls) slider.pagerEl.remove();\n $('.bx-caption', this).remove();\n if (slider.controls.autoEl) slider.controls.autoEl.remove();\n clearInterval(slider.interval);\n if (slider.settings.responsive) $(window).unbind('resize', resizeWindow);\n };\n\n /**\n * Reload the slider (revert all DOM changes, and re-initialize)\n */\n el.reloadSlider = function (settings) {\n if (settings != undefined) options = settings;\n el.destroySlider();\n init();\n };\n init();\n\n // returns the current jQuery object\n return this;\n };\n})(jQuery);\njQuery(document).ready(function () {\n ShowAndHideFaqs();\n applyPageShowHide();\n initialize();\n var gaCode = getCookie(\"_ga\");\n\n /* adding class to LP nav request info button */\n jQuery('.landing-page .nav-button a').addClass('request-info-popup-LP');\n jQuery('.elementor-search-form__toggle').click(function (event) {\n event.preventDefault();\n if (event.target.className == 'fas fa-search') {\n jQuery('.elementor-search-form__toggle').html('');\n jQuery(\".dialog-close-button\").html('');\n } else {\n jQuery('.dialog-close-button').html('');\n jQuery('.elementor-search-form__toggle').html('');\n }\n });\n\n //set form button select to current program code\n jQuery(document).on('click', '.apply-now-popup, .request-info-popup-LP', function (event) {\n var code = jQuery(this).attr('data-program-code');\n console.log(code);\n popupformSelectOption(code);\n });\n jQuery('.dialog-lightbox-close-button').on('click', function (event) {\n jQuery('.elementor-search-form').submit();\n });\n jQuery('.cf-programs-groups-tab-menu .elementor-tab-title').on('click', function (event) {\n if (jQuery(\"body\").hasClass('mobile')) {\n jQuery('html, body').animate({\n scrollTop: jQuery('#degree-showcase-main').offset().top\n }, \"800\");\n }\n });\n jQuery(\".linkbox-left:empty\").closest(\"div.linkbox\").hide();\n jQuery(\".elementor-widget-cf-program-field h3:empty\").closest(\"div.elementor-widget-cf-program-field\").hide();\n jQuery('.cf-program-details-btn-close .elementor-button').on('click', function (event) {\n if (jQuery(\"body\").hasClass('mobile')) {\n jQuery('html, body').animate({\n scrollTop: jQuery('#degree-showcase-main').offset().top\n }, \"800\");\n }\n });\n jQuery('#featured-background-0').show();\n jQuery('#featured-background-2').hide();\n jQuery('#featured-background-1').hide();\n jQuery('#first').addClass('on');\n if (window.matchMedia(\"(min-width: 900px)\").matches) {\n homePageHeroSlider();\n }\n});\njQuery(window).resize(function () {\n //var win = jQuery(this); //this = window\n /*if (window.screen.width > 800) {\r\n jQuery('.cf-programs-groups-tab-menu ul li.cf-item:first-child a[href=\"education\"]').addClass('elementor-active');\r\n jQuery('.program-section div[data-programs-group-id=\"education\"]').css('display', 'block', 'important');\r\n }*/\n\n if (jQuery(window).width() > 900) {\n homePageHeroSlider();\n }\n});\nfunction homePageHeroSlider() {\n jQuery('#first').hover(function () {\n jQuery('#featured-background-2').hide();\n jQuery('#featured-background-1').hide();\n jQuery('#featured-background-0').show();\n jQuery('#featured-background-0').addClass('on');\n jQuery('#first').addClass('on');\n jQuery('#second, #third').removeClass('on');\n });\n jQuery('#second').hover(function () {\n jQuery('#featured-background-2').hide();\n jQuery('#featured-background-0').hide();\n jQuery('#featured-background-1').show();\n jQuery('#featured-background-1').addClass('on');\n jQuery('.featured-item').addClass('on');\n jQuery('#first, #third').removeClass('on');\n }, function () {\n jQuery('#featured-background-0').show();\n jQuery('#featured-background-2').hide();\n jQuery('#featured-background-1').hide();\n });\n jQuery('#third').hover(function () {\n jQuery('#featured-background-0').hide();\n jQuery('#featured-background-1').hide();\n jQuery('#featured-background-2').show();\n jQuery('#featured-background-2').addClass('on');\n jQuery('.featured-item').addClass('on');\n jQuery('#first, #second').removeClass('on');\n }, function () {\n jQuery('#featured-background-0').show();\n jQuery('#featured-background-2').hide();\n jQuery('#featured-background-1').hide();\n });\n}\nfunction getCookie(c_name) {\n var i,\n x,\n y,\n ARRcookies = document.cookie.split(\";\");\n for (i = 0; i < ARRcookies.length; i++) {\n x = ARRcookies[i].substr(0, ARRcookies[i].indexOf(\"=\"));\n y = ARRcookies[i].substr(ARRcookies[i].indexOf(\"=\") + 1);\n x = x.replace(/^\\s+|\\s+$/g, \"\");\n if (x == c_name) {\n return unescape(y);\n }\n }\n}\n\n//wcag edits\njQuery(document).on('click', '.elementor-button, .elementor-item, .request-info-popup', function (e) {\n jQuery('.dialog-close-button').attr({\n role: \"button\",\n \"aria-label\": \"Close dialog\"\n });\n var modal = document.querySelector('.elementor-popup-modal'); // select the modal by it's id\n var focusableElements = jQuery(modal).find('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])');\n var firstFocusableElement = focusableElements.first(); // get first element to be focused inside modal\n var lastFocusableElement = focusableElements.last(); // get last element to be focused inside modal\n\n /*set focus on first input*/\n firstFocusableElement.focus();\n\n /*redirect last tab to first input*/\n lastFocusableElement.on('keydown', function (e) {\n if (e.which === 9 && !e.shiftKey) {\n e.preventDefault();\n firstFocusableElement.focus();\n }\n });\n\n /*redirect first shift+tab to last input*/\n firstFocusableElement.on('keydown', function (e) {\n if (e.which === 9 && e.shiftKey) {\n e.preventDefault();\n lastFocusableElement.focus();\n }\n });\n});\nfunction ShowAndHideFaqs() {\n jQuery('#showHideFaqs').click(function () {\n if (jQuery('#showHideFaqs').text() == 'Close All [-]') {\n jQuery('.elementor-widget-container .elementor-tab-title').removeClass('elementor-active');\n jQuery('.elementor-widget-container .elementor-tab-content').hide();\n jQuery('#showHideFaqs').text('Expand All [+]');\n } else {\n jQuery('.elementor-widget-container .elementor-tab-title').addClass('elementor-active');\n jQuery('.elementor-widget-container .elementor-tab-content').show();\n jQuery('#showHideFaqs').text('Close All [-]');\n }\n });\n}\n\n//landing page collapse first program tab\n/*jQuery(window).on('load', function () {\r\n if (jQuery('body').hasClass('mobile')) {\r\n jQuery('.cf-programs-groups-tab-menu .elementor-tab-title').removeClass('elementor-active');\r\n jQuery('div[data-programs-group-id=\"business\"]').removeClass('elementor-active');\r\n jQuery('div[data-programs-group-id=\"business\"]').css('display', 'none', 'important');\r\n }\r\n});*/\n\nfunction initialize() {\n jQuery('.cf-programs-groups-tab-menu .elementor-tab-title').removeClass('elementor-active');\n jQuery('.cf-programs-groups-tab-menu .elementor-tab-title').attr('aria-expanded', 'false');\n jQuery('.cf-programs-groups-tab-menu .elementor-tab-title').first().addClass('initial');\n jQuery('.cf-programs-groups-tab-menu .elementor-tab-title').first().attr('aria-expanded', 'true');\n jQuery('.cf-programs-groups-tab-menu .elementor-tab-title.initial').addClass('elementor-active');\n jQuery('.cf-programs-group-elementor-widget ul').each(function () {\n jQuery(this).children('li').removeClass('elementor-active');\n jQuery(this).children('li').attr('aria-expanded', 'false');\n });\n jQuery('.cf-programs-group-elementor-widget ul:first').each(function () {\n jQuery(this).children('li:first').addClass('initial');\n jQuery(this).children('li:first').attr('aria-expanded', 'true');\n });\n jQuery('.cf-programs-group-elementor-widget .initial').addClass('elementor-active');\n}\n\n//validation after submit for input\njQuery(document).on('focusout', '.ap-lead-form input', function (e) {\n if (jQuery(this).val()) {\n jQuery(this).parent().parent().removeClass('gfield_error');\n jQuery(this).parent().next('div').hide('validation_message');\n }\n});\n\n//validation after submit for select\njQuery(document).on('change', '.ap-lead-form select', function (e) {\n jQuery(this).parent().parent().removeClass('gfield_error');\n jQuery(this).parent().next('div').hide('validation_message');\n});\n\n/* js for accessibility only this site */\njQuery('.header-top .request-info-btn a').attr('aria-label', 'Request info popup from top header');\njQuery('.header-top .apply-now-btn a').attr('aria-label', 'Apply now from top header');\n\n//for program poup so that select option matches program clicked on\nvar modalInterval;\nfunction popupformSelectOption(programsCode) {\n //jQuery('.cf-programs-list select').val(code);\n var currentProgramCode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var $modal = jQuery('body').find('.elementor-popup-modal');\n var $popupForm = $modal.find('.ap-lead-form');\n var $programsList = $popupForm.find('.cf-programs-list select');\n var time = 50; // Check to see if the modal's content is loaded.\n\n //console.log(currentProgramCode);\n\n if ($popupForm.length) {\n if ($programsList.length) {\n time = 0;\n }\n } // Wait until the modal's content is full loaded.\n\n clearInterval(modalInterval);\n modalInterval = setInterval(function () {\n if (time !== 0) {\n $modal = jQuery('body').find('.elementor-popup-modal');\n $popupForm = $modal.find('.ap-lead-form');\n $programsList = $popupForm.find('.cf-programs-list select');\n }\n if ($popupForm.length) {\n if ($programsList.length) {\n clearInterval(modalInterval); // Go through all the Program Options and check to see if the program must be removed from the list, or not.\n\n if (programsCode) {\n $programsList.find(\"option[value=\".concat(programsCode, \"]\")).attr('selected', 'selected');\n }\n }\n }\n }, time);\n}\n\n/*----- Apply Page Text hide -------*/\nfunction applyPageShowHide() {\n jQuery(\".apply-page-form-footer\").hide();\n jQuery(\".select-for-apply-page\").change(function () {\n if (jQuery(\"option:selected\", this).text() == \"Program of Interest\") jQuery(\".apply-page-form-footer\").hide();else jQuery(\".apply-page-form-footer\").show();\n var selectedOptionText = jQuery(\"option:selected\", this).text();\n jQuery(\".admission_requirements span\").html(selectedOptionText + \" online \");\n }).trigger(\"change\");\n}\njQuery(document).on('gform_page_loaded', function (event, form_id, current_page) {\n var selectedOptionText = jQuery('.select-for-apply-page option:selected').text();\n jQuery('.admission_requirements span').html(selectedOptionText + \" online\");\n});\n(function ($) {\n jQuery(document).ready(function ($) {\n jQuery.noConflict();\n $('div.featured-item').hover(function () {\n $background = $(this).data('background');\n $('div.featured-background').removeClass('on');\n $('div.featured-item').removeClass('on');\n $(this).addClass('on');\n $('#' + $background).addClass('on');\n });\n });\n})(jQuery);\n\n// -------------------- DEFINE VARIABLES --------------------\n\nvar animationSpeed = 250;\nvar animationSpeedSlow = 450;\nvar availableViewSpace;\nvar currentStickyTop;\nvar enableScrollFunctions = 0;\nvar hashTargetTop;\nvar headerHeightScrollDown;\nvar headerHeightAtTop;\nvar headerHeightScrollUpSome;\nvar headerHeightScrollTop;\nvar myMaxHeight = 0;\nvar myMinHeight;\nvar offsetScrollPosition = 0;\nvar pageLoadFlag = 1;\nvar prevScrollPosition = 0;\nvar scrollOffset = 0;\nvar scrollPosition = 0;\nvar scrollPositionOffset = 0;\nvar scrollThreshold = 5;\nvar scrollTimeout;\nvar stickyHeight;\nvar targetHREF;\nvar theSectionTop;\nvar theSectionHeight;\nvar theSectionBottom;\nvar theSubnavHREF;\nvar totalHeaderScrollDownHideHeight = 0;\nvar totalHeaderScrollDownHideHeightTopOnly = 0;\n\n// -------------------- END DEFINE VARIABLES --------------------\n\n// -------------------- ON PAGE LOAD EVENT --------------------\n(function ($) {\n jQuery(document).ready(function ($) {\n jQuery.noConflict();\n\n // set body class to desktop by default, then run check\n $(\"body\").addClass(\"desktop\");\n detectDesktopOrMobile();\n // move elements that switch positions between desktop and mobile\n moveThis();\n // initialize position, heights, related values\n initializePage();\n // if page loads with hash in URL, run handler to put page at correct location\n if (window.location.hash) {\n goToHash($(location).attr('hash'));\n }\n // wait 100 ms for all script checks to run, then reset page load flag and enable the scroll functions. This prevents any scroll-based functions from accidentally triggering on page load\n setTimeout(function () {\n enableScrollFunctions = 1;\n pageLoadFlag = 0;\n headerHeightHandler();\n }, 200);\n });\n\n // -------------------- END ON PAGE LOAD --------------------\n\n // -------------------- EVENTS --------------------\n\n // EVENT : scrolling\n $(window).scroll(function () {\n if (scrollTimeout) {\n // clear the timeout, if one is pending\n clearTimeout(scrollTimeout);\n scrollTimeout = null;\n }\n scrollTimeout = setTimeout(scrollHandler, 10);\n });\n\n // EVENT : resizing window\n $(window).resize(function () {\n // determine responsive view\n detectDesktopOrMobile();\n headerHeightHandler();\n tableScrolling();\n });\n\n // EVENT: clicking an anchor link\n $(document).on('click', 'a[href^=\"#\"]', function (event) {\n // optional: prevent # id from appearing in URL bar\n event.preventDefault();\n\n // get the hash target\n targetHREF = $.attr(this, 'href');\n // optional: change URL bar, but not if the href is \"#top\" or \"#\"\n if (targetHREF != \"#top\" && targetHREF != \"#\") {\n history.pushState(null, null, targetHREF);\n }\n // when the hash is #, it could mean different things. This cycles through the options and triggers a corresponding function\n if (targetHREF == \"#\") {\n if ($(this).hasClass(\"search-open\") || $(this).hasClass(\"search-close\")) {\n searchShowHide(this);\n }\n\n // basic show-hides\n if ($(this).hasClass(\"show-link\")) {\n event.stopPropagation();\n if ($(this).closest(\".show-link-parent\").next(\".show-content\").css(\"display\") == \"none\") {\n $(this).closest(\".show-link-parent\").next(\".show-content\").slideDown('fast');\n $(this).children().each(function () {\n showHideTogglesOpened($(this));\n });\n tableScrolling();\n } else {\n $(this).closest(\".show-link-parent\").next(\".show-content\").slideUp('fast');\n $(this).children().each(function () {\n showHideTogglesClosed($(this));\n });\n }\n }\n\n // expand/contract fixed-height-fade-content elements\n if ($(this).parent().hasClass(\"fixed-height-fade-content-toggle\")) {\n fixedHeightContent(this);\n }\n } else {\n // run hash animation handler\n goToHash(targetHREF);\n }\n });\n\n // EVENT: when the URL hash changes, reload page completely to reset various parameters\n $(window).on(\"hashchange\", function (event) {\n location.reload();\n });\n\n // -------------------- END EVENTS --------------------\n\n // -------------------- CALLABLE FUNCTIONS --------------------\n\n // FUNCTION : handle back-to-top link in fixed footer\n function backToTop(direction) {\n if ($(\"body\").hasClass(\"desktop\") && !$(\".back-to-top\").hasClass(\"mobile-only\")) {\n // scrolling down\n if (direction == \"down\") {\n $(\".back-to-top\").hide();\n }\n // scrolled up\n else {\n if (scrollPosition < headerHeightAtTop) {\n // hide back-to-top\n $(\".back-to-top\").hide();\n } else {\n // show back-to-top\n $(\".back-to-top\").show();\n }\n }\n } else if ($(\"body\").hasClass(\"mobile\") && !$(\".back-to-top\").hasClass(\"desktop-only\")) {\n // scrolling down\n if (direction == \"down\") {\n $(\".back-to-top\").hide();\n }\n // scrolled up\n else {\n if (scrollPosition < headerHeightAtTop) {\n // hide back-to-top\n $(\".back-to-top\").hide();\n } else {\n // show back-to-top\n $(\".back-to-top\").show();\n }\n }\n }\n }\n\n // FUNCTION : detect desktop or mobile view based on CSS\n function detectDesktopOrMobile() {\n // detect if desktop\n if ($(\"body\").css(\"max-width\") != \"9999px\") {\n // detect if transitioning to desktop from mobile\n if ($(\"body.mobile\").length) {\n $('body').removeClass('mobile');\n $('body').addClass('desktop');\n moveThis();\n // reset show/hides, heights, positioning\n initializePage();\n }\n }\n // detect if mobile\n else {\n // detect if transitioning to mobile from desktop\n if ($(\"body.desktop\").length) {\n $('body').removeClass('desktop');\n $('body').addClass('mobile');\n moveThis();\n // reset show/hides, heights, positioning\n initializePage();\n }\n }\n }\n\n // FUNCTION : fixed-height elements with fade\n function fixedHeightContent(target) {\n myParent = $(target).closest(\".fixed-height-fade-content\");\n if ($(myParent).hasClass(\"closed\")) {\n myMinHeight = $(myParent).innerHeight();\n $(myParent).removeClass(\"closed\");\n if (myMaxHeight == 0) {\n myMaxHeight = $(myParent).innerHeight() + $(target).height();\n }\n $(myParent).css({\n \"max-height\": myMinHeight\n });\n $(myParent).animate({\n \"max-height\": myMaxHeight\n }, animationSpeed);\n $(target).addClass(\"open\");\n } else {\n myMaxHeight = $(myParent).innerHeight();\n $(myParent).addClass(\"closed\");\n $(myParent).animate({\n \"max-height\": myMinHeight\n }, animationSpeed);\n $(target).removeClass(\"open\");\n }\n }\n\n // FUNCTION: handle navigating to a hash target\n function goToHash(hashTarget) {\n // if the hashtag is not just # <-- not necessary anymore, but retaining just in case\n if (hashTarget != \"#\") {\n // if the target is the top\n if (hashTarget == \"#top\") {\n $('html, body').animate({\n scrollTop: 0\n }, animationSpeed, function () {\n subnavActive();\n });\n }\n // if target is not top\n else {\n // get target top value\n hashTargetTop = $(hashTarget).offset().top;\n // initialize scroll offset value for the hash target. This is what adjusts the scroll amount to account for fixed header size.\n scrollOffset = 0;\n // only do this if header is fixed and offset is required\n if ($(\".header\").hasClass(\"fixed\")) {\n // initialize scroll offset value for the hash target. This is what adjusts the scroll amount to account for fixed header size.\n scrollOffset = 0;\n // calculate the scroll offset:\n // go through each visible, top-sticky sibling of the fixed header and look for the target. If it's not there, add the height of this element to the scroll offset total.\n $(\".header.fixed\").siblings().each(function () {\n if ($(this).find(hashTarget).length <= 0 && $(this).hasClass(\"top-sticky\") && $(this).is(\":visible\")) {\n scrollOffset = scrollOffset + $(this).outerHeight();\n }\n });\n\n // if page is just now being loaded, i.e. clicked link on another page to get here\n if (pageLoadFlag == 1) {\n //since page is already at top, header is full height. The new target scroll position should equal the full height of the header plus the total height of the visible top-sticky header siblings.\n hashTargetTop = hashTargetTop - headerHeightAtTop - scrollOffset;\n // since page is loading, no scroll animation is desired - just jump to the target point\n $('html, body').animate({\n scrollTop: hashTargetTop\n //}, 0);\n }, 10, function () {\n subnavActive();\n }); // if needing to scroll down because page is reset\n }\n\n // if page is already loaded, i.e. link clicked on same page\n else {\n // if navigating to hash target involves scrolling down\n if (hashTargetTop > scrollPosition) {\n // offset (decrease) target position by the predicted height of the header after scrolling down and the total height of the visible top-sticky header siblings.\n hashTargetTop = hashTargetTop - headerHeightScrollDown - scrollOffset;\n }\n // if navigating to hash target involves scrolling up\n else if (hashTargetTop < scrollPosition) {\n // offset (decrease) target position by the predicted height of the header after scrolling up some and the total height of the visible top-sticky header siblings.\n hashTargetTop = hashTargetTop - headerHeightScrollUpSome - scrollOffset;\n }\n // if already at hash target position, just exit\n else if (hashTargetTop == scrollPosition) {\n return;\n }\n // scroll to offset target point, slightly slower than animation speed\n $('html, body').animate({\n scrollTop: hashTargetTop\n }, animationSpeed + 100, function () {\n subnavActive();\n });\n }\n }\n }\n }\n }\n\n // FUNCTION : handle header/fixed/sticky element heights\n function headerHeightHandler() {\n // only do this if header is fixed\n if ($(\".header\").hasClass(\"fixed\")) {\n // desktop and mobile views are handled separately\n if ($(\"body\").hasClass(\"desktop\")) {\n // predict height of header when scrolled down. Start with initial value of header at top\n headerHeightScrollDown = headerHeightAtTop;\n // then subtract the heights of each element that will hide on scroll down\n $(\".desktop-scroll-down-hide\").each(function () {\n headerHeightScrollDown = headerHeightScrollDown - $(this).outerHeight();\n });\n // predict height of header when scrolled up but not all the way to top. Start with value of header when scrolled down\n headerHeightScrollUpSome = headerHeightScrollDown;\n // then add the heights of each element that will show on scroll up\n $(\".desktop-scroll-up-show\").each(function () {\n headerHeightScrollUpSome = headerHeightScrollUpSome + $(this).outerHeight();\n });\n // predict height of header when scrolled to top. In this case, it should already equal the initial value of header at top because you can't scroll down to get to the top anyway.\n headerHeightScrollTop = headerHeightAtTop;\n }\n // desktop and mobile views are handled separately\n else if ($(\"body\").hasClass(\"mobile\")) {\n // predict height of header when scrolled down. Start with initial value of header at top\n headerHeightScrollDown = headerHeightAtTop;\n // then subtract the heights of each element that will hide on scroll down\n $(\".mobile-scroll-down-hide\").each(function () {\n headerHeightScrollDown = headerHeightScrollDown - $(this).outerHeight();\n });\n // predict height of header when scrolled up but not all the way to top. Start with value of header when scrolled down\n headerHeightScrollUpSome = headerHeightScrollDown;\n // then add the heights of each element that will show on scroll up\n $(\".mobile-scroll-up-show\").each(function () {\n headerHeightScrollUpSome = headerHeightScrollUpSome + $(this).outerHeight();\n });\n // predict height of header when scrolled to top. In this case, it should already equal the initial value of header at top because you can't scroll down to get to the top anyway.\n headerHeightScrollTop = headerHeightAtTop;\n }\n }\n $(\".top-sticky:visible\").each(function () {\n stickyHeight = $(this).outerHeight();\n availableViewSpace = $(window).height() - headerHeightScrollDown;\n $(\".fixed\").not(\".header\").each(function () {\n availableViewSpace = availableViewSpace - $(this).outerHeight();\n });\n currentStickyTop = $(this).offset().top;\n $(\".top-sticky:visible\").each(function () {\n if ($(this).offset().top < currentStickyTop) {\n availableViewSpace = availableViewSpace - $(this).outerHeight();\n }\n });\n if (stickyHeight >= availableViewSpace) {\n $(this).css({\n \"position\": \"relative\"\n });\n $(this).css({\n \"top\": \"auto\"\n });\n } else {\n $(this).css({\n \"position\": \"sticky\"\n });\n }\n });\n }\n\n // FUNCTION : initialize positions, heights, related values\n function initializePage() {\n headerHeightAtTop = $(\".header\").outerHeight();\n $(\"body\").css({\n \"padding-top\": headerHeightAtTop\n });\n $(\"body.landing-page\").css({\n \"padding-top\": 0\n });\n scrollPosition = $(this).scrollTop();\n prevScrollPosition = scrollPosition;\n if ($(\"body\").hasClass(\"desktop\")) {\n $(\".desktop-scroll-down-hide\").show();\n $(\".mobile-scroll-down-hide\").show();\n } else if ($(\"body\").hasClass(\"mobile\")) {\n $(\".desktop-scroll-down-hide\").show();\n $(\".mobile-scroll-down-hide\").show();\n }\n headerHeightHandler();\n setTopStickyTops(headerHeightAtTop);\n $(\".content-section\").each(function () {\n thisSectionsTop = $(this).offset().top;\n thisSectionsHeight = $(this).outerHeight();\n thisSectionsBottom = thisSectionsTop + thisSectionsHeight;\n $(this).find(\".sectionTop\").text(\"top: \" + thisSectionsTop + \", height: \" + thisSectionsHeight + \", bottom: \" + thisSectionsBottom);\n\n //$(this).find(\".sectionTop\").text( \"top: \"+$(this).offset().top+\", bottom );\n });\n setTimeout(tableScrolling, 1);\n\n //$(\".msg\").text(scrollPosition);\n }\n\n // FUNCTION : Move things from one area to another on mobile-desktop switch\n function moveThis() {\n // Instructions: give the item you want to move the '.moveThis' class and an ID. Give the two alternating containers the same ID with -desktop and -mobile appended.\n $('.move-this').each(function () {\n var moveTargetID = $(this).attr('id');\n // Mobile\n if ($(\"body\").hasClass(\"mobile\")) {\n if ($(\"#\" + moveTargetID + \"-mobile #\" + moveTargetID + \"\").length == 0) {\n $(\"#\" + moveTargetID + \"\").appendTo($(\"#\" + moveTargetID + \"-mobile\"));\n }\n }\n // Desktop\n else if ($(\"body\").hasClass(\"desktop\")) {\n if ($(\"#\" + moveTargetID + \"-desktop #\" + moveTargetID + \"\").length == 0) {\n $(\"#\" + moveTargetID + \"\").appendTo($(\"#\" + moveTargetID + \"-desktop\"));\n }\n }\n });\n }\n\n // FUNCTION : handle what happens when you scroll\n function scrollHandler() {\n // get current scroll position\n scrollPosition = $(this).scrollTop();\n // make sure scroll amount is significant, else cancel\n if (Math.abs(prevScrollPosition - scrollPosition) <= scrollThreshold) {\n return;\n }\n // make sure scrolling functions are enabled, else cancel\n if (enableScrollFunctions == 0) {\n return;\n }\n // if scrolled down\n if (prevScrollPosition < scrollPosition && enableScrollFunctions == 1) {\n // show/hide any elements that are set to do so on scroll down, and adjust positions of related elements\n scrollShowHides(\"down\");\n backToTop(\"down\");\n headerHeightHandler();\n }\n // if scrolled up\n else if (prevScrollPosition > scrollPosition && enableScrollFunctions == 1) {\n headerHeightHandler();\n if (scrollPosition + $(window).height() < $(document).height()) {\n // scrolled to \"top\" (from zero to minimum height of fixed header)\n if (scrollPosition < headerHeightScrollDown) {\n // show/hide any elements that are set to do so on scroll to top, and adjust positions of related elements\n scrollShowHides(\"top\");\n }\n // just scrolled up some, but not all the way to top\n else {\n // show/hide any elements that are set to do so on scroll up, and adjust positions of related elements\n scrollShowHides(\"up\");\n backToTop(\"up\");\n }\n }\n }\n subnavActive();\n\n //setTimeout( $(\".msg\").text(scrollPosition), animationSpeed+50 );\n\n // mark current position as previous to prepare for further scrolling\n prevScrollPosition = scrollPosition;\n }\n\n // FUNCTION : handle scroll-based show/hides\n function scrollShowHides(direction) {\n if ($(\"body\").hasClass(\"desktop\")) {\n // scrolling down\n if (direction == \"down\") {\n // check if the entire header is meant to hide, and if so only do this if scrolled past header; otherwise just allow 100 px margin from top before activating\n if ($(\".header\").hasClass(\"desktop-scroll-down-hide\") && scrollPosition > headerHeightAtTop || !$(\".header\").hasClass(\"desktop-scroll-down-hide\") && scrollPosition > 100) {\n // hide/slide up each scroll-down-hide element\n $(\".desktop-scroll-down-hide:visible\").each(function () {\n $(this).slideUp(animationSpeedSlow, \"swing\");\n // hide any custom search overlays inside this element and switch any toggles to close\n $(this).find(\".custom-search\").hide();\n $(this).find(\".search-toggle.search-close\").addClass(\"search-open\");\n $(this).find(\".search-toggle.search-close\").removeClass(\"search-close\");\n });\n // adjust top-sticky positions to account for height of header when scrolled down\n setTopStickyTops(headerHeightScrollDown);\n }\n }\n // scrolled to top of page\n else if (direction == \"top\") {\n // show/slide down each scroll-top-show element\n $(\".desktop-scroll-top-show:hidden\").each(function () {\n $(this).slideDown(animationSpeedSlow, \"swing\");\n });\n // show/slide down each scroll-up-show element\n $(\".desktop-scroll-up-show:hidden\").each(function () {\n $(this).slideDown(animationSpeedSlow, \"swing\");\n });\n // adjust top-sticky positions to account for height of header when at top of page\n setTopStickyTops(headerHeightScrollTop);\n }\n // scrolled up a certain amount but not to top of page\n else if (direction == \"up\") {\n // show/slide down each scroll-up-show element\n $(\".desktop-scroll-up-show:hidden\").each(function () {\n $(this).slideDown(animationSpeedSlow, \"swing\");\n });\n // if you're scrolling up, but top-only elements are visible, i.e. on page load, where the whole header is reset\n $(\".desktop-scroll-top-show:visible\").each(function () {\n $(this).slideUp(animationSpeedSlow, \"swing\");\n });\n // adjust top-sticky positions to account for height of header when scrolled up some amount\n setTopStickyTops(headerHeightScrollUpSome);\n }\n } else if ($(\"body\").hasClass(\"mobile\")) {\n // scrolling down\n if (direction == \"down\") {\n // check if the entire header is meant to hide, and if so only do this if scrolled past header; otherwise just allow 100 px margin from top before activating\n if ($(\".header\").hasClass(\"mobile-scroll-down-hide\") && scrollPosition > headerHeightAtTop || !$(\".header\").hasClass(\"mobile-scroll-down-hide\") && scrollPosition > 100) {\n // hide/slide up each scroll-down-hide element\n $(\".mobile-scroll-down-hide:visible\").each(function () {\n $(this).slideUp(animationSpeedSlow, \"swing\");\n });\n // adjust top-sticky positions to account for height of header when scrolled down\n setTopStickyTops(headerHeightScrollDown);\n }\n }\n // scrolled to top of page\n else if (direction == \"top\") {\n // show/slide down each scroll-top-show element\n $(\".mobile-scroll-top-show:hidden\").each(function () {\n $(this).slideDown(animationSpeedSlow, \"swing\");\n });\n // show/slide down each scroll-up-show element\n $(\".mobile-scroll-up-show:hidden\").each(function () {\n $(this).slideDown(animationSpeedSlow, \"swing\");\n });\n // adjust top-sticky positions to account for height of header when at top of page\n setTopStickyTops(headerHeightScrollTop);\n }\n // scrolled up a certain amount but not to top of page\n else if (direction == \"up\") {\n // show/slide down each scroll-up-show element\n $(\".mobile-scroll-up-show:hidden\").each(function () {\n $(this).slideDown(animationSpeedSlow, \"swing\");\n });\n // if you're scrollin up, but top-only elements are visible, i.e. on page load, where the whole header is reset\n $(\".mobile-scroll-top-show:visible\").each(function () {\n $(this).slideUp(animationSpeedSlow, \"swing\");\n });\n // adjust top-sticky positions to account for height of header when scrolled up some amount\n setTopStickyTops(headerHeightScrollUpSome);\n }\n }\n }\n\n // FUNCTION : set top values for any visible top-sticky elements\n function setTopStickyTops(topStickyBasis) {\n // start by adjusting the top value by some base amount, usually the predicted height of the header after a given scroll\n var topStickyTop = topStickyBasis;\n // for each visible top-sticky element, set the new top amount to equal the base amount, then increment the base amount by the height of the element that was just handled\n $(\".top-sticky:visible\").each(function () {\n if ($(this).css(\"position\") == \"sticky\") {\n $(this).css({\n \"top\": topStickyTop\n });\n scrollPositionOffset = topStickyTop;\n topStickyTop = topStickyTop + $(this).outerHeight();\n }\n });\n }\n\n // FUNCTION : show/hide the custom search bar\n function searchShowHide(target) {\n if ($(target).hasClass(\"search-open\")) {\n if ($(target).hasClass(\"search-toggle\")) {\n $(target).removeClass(\"search-open\");\n $(target).addClass(\"search-close\");\n }\n if ($(target).closest(\".header-search\").hasClass(\"slide-down\")) {\n $(target).closest(\".header-search\").find(\".custom-search\").slideDown('fast');\n }\n if ($(target).closest(\".header-search\").hasClass(\"slide-left\")) {\n $(target).closest(\".header-search\").find(\".custom-search\").animate({\n width: \"100%\"\n }, animationSpeed, function () {});\n }\n } else if ($(target).hasClass(\"search-close\")) {\n if ($(target).hasClass(\"search-toggle\")) {\n $(target).removeClass(\"search-close\");\n $(target).addClass(\"search-open\");\n }\n if ($(target).closest(\".header-search\").hasClass(\"slide-down\")) {\n $(target).closest(\".header-search\").find(\".custom-search\").slideUp('fast');\n }\n if ($(target).closest(\".header-search\").hasClass(\"slide-left\")) {\n $(target).closest(\".header-search\").find(\".custom-search\").animate({\n width: \"0\"\n }, animationSpeed, function () {});\n }\n }\n }\n\n // FUNCTIONS: these two functions swap show/hide text pairs\n function showHideTogglesOpened(thisObj) {\n if (thisObj.hasClass('view-close')) {\n thisObj.html('Close');\n }\n if (thisObj.hasClass('show-hide')) {\n thisObj.html('Hide');\n }\n if (thisObj.hasClass('more-less')) {\n thisObj.html('less');\n }\n if (thisObj.hasClass('right-down')) {\n thisObj.children('img').css({\n 'transform': 'rotate(90deg)'\n });\n }\n if (thisObj.hasClass('plus-minus')) {\n thisObj.html('–');\n }\n if (thisObj.hasClass('expand-close')) {\n thisObj.html('Close [ – ]');\n }\n if (thisObj.hasClass('plus-minus-brackets')) {\n thisObj.html('[ – ]');\n }\n }\n function showHideTogglesClosed(thisObj) {\n if (thisObj.hasClass('view-close')) {\n thisObj.html('View');\n }\n if (thisObj.hasClass('show-hide')) {\n thisObj.html('Show');\n }\n if (thisObj.hasClass('more-less')) {\n thisObj.html('more');\n }\n if (thisObj.hasClass('right-down')) {\n thisObj.children('img').css({\n 'transform': 'rotate(0deg)'\n });\n }\n if (thisObj.hasClass('plus-minus')) {\n thisObj.html('+');\n }\n if (thisObj.hasClass('expand-close')) {\n thisObj.html('Expand [ + ]');\n }\n if (thisObj.hasClass('plus-minus-brackets')) {\n thisObj.html('[ + ]');\n }\n }\n\n // FUNCTION : set subnav items active or not based on scroll position\n function subnavActive() {\n // set a brief timeout so that this doesn't trigger until all scrolling/animating has completed - if this fires too early the numbers will be variable\n setTimeout(function () {\n // get the new adjusted scroll position by adding the offset value from the top-sticky function to the actual scroll position\n offsetScrollPosition = scrollPosition + scrollPositionOffset;\n // for each visible subnav link, get the HREF value; if value exists, define the top and bottom boundaries of that section. If adjusted scroll position falls between those boundaries, set that subnav link to .active, otherwise remove .active.\n $(\".subnav a:visible\").each(function () {\n theSubnavHREF = $(this).attr(\"href\");\n if ($(theSubnavHREF).length != 0) {\n theSectionTop = $(theSubnavHREF).offset().top;\n theSectionHeight = $(theSubnavHREF).outerHeight();\n theSectionBottom = theSectionTop + theSectionHeight;\n if (offsetScrollPosition >= theSectionTop && offsetScrollPosition < theSectionBottom) {\n $(this).addClass(\"active\");\n } else {\n $(this).removeClass(\"active\");\n }\n }\n });\n }, 10);\n }\n\n // FUNCTION : resize scrollable tables\n function tableScrolling() {\n $('.table-container').each(function () {\n var tableContHeight = $(this).children('table').outerHeight() + 20;\n $(this).css(\"height\", tableContHeight);\n $(this).addClass('scrollable');\n });\n }\n\n // -------------------- END CALLABLE FUNCTIONS --------------------\n})(jQuery);"],"names":["homePageHeroSlider","jQuery","hover","hide","show","addClass","removeClass","getCookie","c_name","x","y","ARRcookies","document","cookie","split","i","length","substr","indexOf","replace","unescape","ShowAndHideFaqs","click","text","initialize","attr","first","each","this","children","modalInterval","popupformSelectOption","programsCode","$modal","find","$popupForm","$programsList","time","clearInterval","setInterval","concat","applyPageShowHide","change","selectedOptionText","html","trigger","$","defaults","mode","slideSelector","infiniteLoop","hideControlOnEnd","speed","easing","slideMargin","startSlide","randomStart","captions","ticker","tickerHover","adaptiveHeight","adaptiveHeightSpeed","video","useCSS","preloadImages","responsive","slideZIndex","wrapperClass","touchEnabled","swipeThreshold","oneToOneTouch","preventDefaultSwipeX","preventDefaultSwipeY","pager","pagerType","pagerShortSeparator","pagerSelector","buildPager","pagerCustom","controls","nextText","prevText","nextSelector","prevSelector","autoControls","startText","stopText","autoControlsCombine","autoControlsSelector","auto","pause","autoStart","autoDirection","autoHover","autoDelay","autoSlideForOnePage","minSlides","maxSlides","moveSlides","slideWidth","onSliderLoad","onSlideBefore","onSlideAfter","onSlideNext","onSlidePrev","onSliderResize","fn","bxSlider","options","slider","el","windowWidth","windowHeight","init","setup","loadElements","start","getViewportHeight","getViewportMaxWidth","getSlideWidth","getNumberSlidesShowing","getPagerQty","getMoveBy","setSlidePosition","_setPositionProperty","populatePager","appendPager","appendControls","appendControlsAuto","appendCaptions","clickNextBind","clickPrevBind","clickStartBind","clickStopBind","clickPagerBind","updatePagerActive","updateAfterSlideTransition","updateAutoControls","updateDirectionControls","initAuto","initTicker","tickerLoop","initTouch","onTouchStart","onTouchMove","_onTouchEnd","resizeWindow","window","width","height","settings","extend","parseInt","Math","floor","random","active","index","carousel","minThreshold","maxThreshold","working","interval","animProp","usingCSS","div","createElement","props","undefined","style","cssPrefix","toLowerCase","data","wrap","viewport","parent","loader","prepend","css","position","overflow","maxWidth","margin","float","listStyle","zIndex","display","eq","last","fitVids","preloadSelector","after","selector","callback","count","total","one","complete","load","sliceAppend","slicePrepend","slice","clone","append","remove","redrawSlider","initialized","bind","currentIndex","add","outerHeight","max","apply","map","get","parseFloat","newElWidth","wrapWidth","childWidth","slidesShowing","pagerQty","ceil","breakPoint","counter","lastShowingIndex","lastChild","left","outerWidth","top","value","type","duration","params","animateObj","propValue","unbind","animate","pagerHtml","linkContent","isFunction","pagerEl","on","next","prev","directionEl","stop","autoEl","title","e","stopAuto","goToNextSlide","preventDefault","goToPrevSlide","startAuto","pagerLink","currentTarget","pagerIndex","goToSlide","slideIndex","len","oldIndex","state","setTimeout","autoPaused","startPosition","totalDimens","ratio","property","newSpeed","abs","resumeSpeed","reset","animateProperty","resetValue","touch","end","originalPos","orig","originalEvent","changedTouches","pageX","pageY","xMovement","yMovement","distance","windowWidthNew","windowHeightNew","call","direction","moveBy","requestEl","filter","fadeOut","fadeIn","preventControlUpdate","getCurrentSlide","getCurrentSlideElement","getSlideCount","destroySlider","removeAttr","unwrap","reloadSlider","ready","event","target","className","code","console","log","submit","hasClass","scrollTop","offset","closest","matchMedia","matches","resize","role","aria-label","modal","querySelector","focusableElements","firstFocusableElement","lastFocusableElement","focus","which","shiftKey","val","form_id","current_page","noConflict","$background","availableViewSpace","currentStickyTop","hashTargetTop","headerHeightScrollDown","headerHeightAtTop","headerHeightScrollUpSome","headerHeightScrollTop","myMinHeight","scrollTimeout","stickyHeight","targetHREF","theSectionTop","theSectionHeight","theSectionBottom","theSubnavHREF","animationSpeed","animationSpeedSlow","enableScrollFunctions","myMaxHeight","offsetScrollPosition","pageLoadFlag","prevScrollPosition","scrollOffset","scrollPosition","scrollPositionOffset","scrollThreshold","totalHeaderScrollDownHideHeight","totalHeaderScrollDownHideHeightTopOnly","backToTop","detectDesktopOrMobile","moveThis","initializePage","goToHash","hashTarget","subnavActive","siblings","is","headerHeightHandler","not","padding-top","setTopStickyTops","thisSectionsTop","thisSectionsHeight","thisSectionsBottom","tableScrolling","moveTargetID","appendTo","scrollHandler","scrollShowHides","slideUp","slideDown","topStickyBasis","topStickyTop","tableContHeight","location","hash","scroll","clearTimeout","history","pushState","stopPropagation","showHideTogglesOpened","thisObj","transform","showHideTogglesClosed","myParent","innerHeight","max-height","reload"],"mappings":"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"}