{"version":3,"sources":["HoverFX.js","countup.js","progressbar.js","video-bg.js","libs/jquery.backstretch.js","scripts.js"],"names":["$","window","initHoverFX","options","isUI","resizeEvent","defaults","item","opts","instanceName","className","classElements","supportRGBA","getDimms","elem","width","height","Math","abs","parseFloat","outerHeight","genRGBA","hex","alpha","indexOf","rgba","opacity","toFixed","rgb","values","exec","length","r","round","g","b","toString","substring","toUpperCase","convertRGBDecimalToHex","replace","m","result","alhpaToHex","val","num","floor","css","parseInt","join","background","filter","zoom","fallback","each","self","params","inner","overlay","initial","type","transitionProp","easeType","source","target","ml","mr","mt","floatVal","applyTransition","prop","easeCSS","duration","includeTiming","transitionValue","effectDelay","-webkit-transition","-moz-transition","-o-transition","transition","attr","this","unbind","split","i","setParams","find","getInner","contentType","overlayColor","innerColor","removeAttr","mb","float","margin-left","margin-right","margin-top","margin-bottom","ease","oldWebkit","toLowerCase","prefixes","getEaseType","effectEasing","icon","parent","captionWrap","addClass","wrap","add","effectType","loaded","initialDims","on","imageDims","outerWidth","background-color","overlayAlpha","showCaption","hideCaption","isMobile","Android","navigator","userAgent","match","BlackBerry","iOS","Opera","Windows","any","document","_isMobile","link","bind","openPage","location","assign","open","direction","setTimeout","insertBefore","captionType","position","z-index","captionHeight","jQuery","root","factory","define","amd","exports","module","require","CountUp","startVal","endVal","decimals","version","useEasing","useGrouping","separator","decimal","easingFn","t","c","d","pow","formattingFn","x1","rgx","x","x2","test","numerals","w","prefix","suffix","onUpdate","key","hasOwnProperty","lastTime","vendors","requestAnimationFrame","cancelAnimationFrame","ensureNumber","n","isNaN","callback","element","currTime","Date","getTime","timeToCall","max","id","clearTimeout","initialize","initialized","error","getElementById","Number","dec","countDown","frameVal","printValue","value","tagName","textContent","innerHTML","count","timestamp","startTime","progress","remaining","rAF","start","pauseResume","paused","reset","update","newEndVal","fn","LineProgressbar","extend","min","stop","ShowProgressCount","color","backgroundColor","text","radius","index","el","html","progressFill","progressBar","progressText","borderRadius","animate","step","progressTo","next","videoSize","videoElement","$videoElement","$header","videoWidth","videoHeight","marginLeft","left","addEventListener","querySelector","__cpVideoElementFirstPlayed","iframeVideo","undefined","YOUTUBE_REGEXP","isVideoSource","url","isVideo","backstretch","images","returnValues","args","arguments","scrollTop","scrollTo","eachIndex","$this","obj","data","returnValue","apply","Array","prototype","slice","call","destroy","cssBackgroundImage","Backstretch","expr","transitionDuration","animateFirst","alignX","alignY","preload","preloadSize","resolutionRefreshRate","resolutionChangeRatioThreshold","replaceTagsInUrl","cache","styles","top","overflow","margin","padding","zIndex","itemWrapper","display","border","maxWidth","optimalSizeImages","templateReplacer","src","$container","containerWidth","containerHeight","chosenImages","isArray","arr","tmp","j","widthInsertSort","chosen","imageSizes","testWidth","image","devicePixelRatio","deviceOrientation","getDeviceOrientation","wrapperOrientation","getWindowOrientation","lastAllowedImage","pixelRatio","windowOrientation","orientation","selectBest","push","sources","startAt","batchSize","countLoaded","Image","caching","complete","last","processImagesArray","processed","processOptions","required","centeredX","centeredY","console","log","speed","resolutionChangeRatioTreshold","fadeFirst","fade","processAlignOptions","container","firstShow","isBody","body","$window","$root","supportsFixedPosition","originalImages","alwaysTestWindowResolution","$existing","children","first","$wrap","bypassCss","appendTo","show","proxy","resize","pageYOffset","that","$resTest","newContainerWidth","newContainerHeight","changeRatioW","_lastResizeContainerWidth","changeRatioH","_lastResizeContainerHeight","_currentImage","_selectAnotherResolutionTimeout","bgCSS","right","bottom","rootWidth","innerWidth","rootHeight","innerHeight","bgWidth","bgHeight","$itemWrapper","evt","Event","relatedTarget","not","trigger","err","newIndex","overrideOptions","$oldItemWrapper","oldVideoWrapper","videoWrapper","evtOptions","selectedImage","_cycleTimeout","VideoWrapper","$item","$video","append","e","$wrapper","imgWidth","naturalWidth","imgHeight","naturalHeight","getOption","opt","transitionEasing","bringInNextImage","remove","cycle","play","random","$new","$old","fadeIn","easing","fadeInNew","fadeOut","transitionParts","animProp","newCssStart","newCssAnim","oldCssAnim","performTransition","new","old","alt","current","unshift","prev","pause","resume","callNext","lastFrameTimeout","off","loop","player","getDuration","getCurrentTime","preserveBackground","removeData","init","setVideoElement","video","videoType","loadYoutubeAPI","ytId","encodeURIComponent","origin","__ytStartMuted","mute","src_to_load","__manuallyStopped","ytReady","_initYoutube","one","poster","sourceItem","canPlayType","YT","$tmpParent","hasParent","parentNode","Player","events","onReady","detach","_updateYoutubeSize","onStateChange","event","PlayerState","PLAYING","ENDED","PAUSED","BUFFERING","CUED","onPlaybackQualityChange","onError","hasError","ytPlayer","getPlaybackQuality","playVideo","pauseVideo","seekTo","currentTime","seconds","setCurrentTime","ytAPILoadInt","setInterval","ua","platform","wkmatch","wkversion","ffmatch","ffversion","operammobilematch","matchMedia","matches","screen","omversion","ieversion","iematch","operamini","contentSwap","contentswap-effect","overflowEnabled","name","operationType","hasls","additionalWrapperClasses","useSameTemplate","ready","contentSwapTimeout"],"mappings":"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","file":"companion.bundle.min.js","sourcesContent":["(function($) {\n\n window.initHoverFX = function(options, isUI, resizeEvent) {\n var defaults, item, opts, params, instanceName, className, classElements, doesCSS3, supportRGBA;\n item = $('.contentswap-effect');\n supportRGBA = true;\n doesCSS3 = true;\n\n opts = options;\n\n function setParams(elem) {\n\n className = $(elem).attr('class');\n classElements = className.split(\" \");\n for (var i = 0; i <= item.length; i++) {\n for (var prop in opts) {\n if (classElements[i] === prop) {\n instanceName = prop;\n }\n }\n }\n\n return opts ? params = opts[instanceName] : params = defaults[instanceName];\n }\n\n function getInner(elem, type) {\n\n var inner;\n switch (type) {\n case \"overlay\":\n inner = $(elem).find('.swap-inner');\n break;\n case \"imageSwap\":\n inner = $(elem).find('.second-image');\n break;\n case \"caption\":\n inner = $(elem).find('.swap-inner');\n break;\n }\n return inner;\n }\n\n function getDimms(elem) {\n var dims = {\n width: '100%',\n height: Math.abs(parseFloat($(elem).outerHeight(false)))\n };\n return dims\n }\n\n function moveCSSProps(source, target) {\n var ml = source.css('margin-left');\n var mr = source.css('margin-right');\n var mt = source.css('margin-top');\n var mb = source.css('margin-bottom');\n var floatVal = source.css('float');\n source.css({\n 'float': 'none',\n 'margin-left': '0px',\n 'margin-right': '0px',\n 'margin-top': '0px',\n 'margin-bottom': '0px'\n })\n target.css({\n 'float': floatVal,\n 'margin-left': ml,\n 'margin-right': mr,\n 'margin-top': mt,\n 'margin-bottom': mb\n })\n\n }\n\n function setCaptionHeight(height, elem) {\n if (height != 'auto' || height != 'undefined') elem.css('height', parseInt(height) + 'px');\n }\n\n function genRGBA(hex, alpha, elem) {\n // with both longhand and shorthand support (accepts both #fff or #fffff)\n if (hex.indexOf('#') == -1 || hex.indexOf('rgb(') > -1 || hex.indexOf('rgba') > -1) {\n return {\n rgba: hex\n };\n }\n var opacity;\n alpha ? opacity = (alpha / 100).toFixed(2) : opacity = 1;\n\n function convertRGBDecimalToHex(rgb) {\n\n // check for RGB\n var regexRGB = /rgb *\\( *([0-9]{1,3}) *, *([0-9]{1,3}) *, *([0-9]{1,3}) *\\)/;\n var values = regexRGB.exec(rgb);\n\n // check for RGBA\n if (!values) {\n var regexRGBA = /rgba *\\( *([0-9]{1,3}) *, *([0-9]{1,3}) *, *([0-9]{1,3}) *, *(0.+[0-9]) *\\)/;\n values = regexRGBA.exec(rgb);\n }\n\n if (!values) return rgb;\n if (values.length != 5) {\n return rgb; // fall back to what was given. \n }\n var r = Math.round(parseFloat(values[1]));\n var g = Math.round(parseFloat(values[2]));\n var b = Math.round(parseFloat(values[3]));\n if (values[4]) {\n opacity = values[4];\n }\n return \"#\" + (r + 0x10000).toString(16).substring(3).toUpperCase() + (g + 0x10000).toString(16).substring(3).toUpperCase() + (b + 0x10000).toString(16).substring(3).toUpperCase();\n }\n\n hex = convertRGBDecimalToHex(hex);\n\n var shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n hex = hex.replace(shorthandRegex, function(m, r, g, b) {\n return r + r + g + g + b + b;\n });\n\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n\n function alhpaToHex(val) {\n var num = val * 255;\n return Math.floor(num).toString(16);\n }\n\n if (typeof(elem) !== 'undefined' && result) {\n switch (supportRGBA) {\n case true:\n elem.css('background-color', 'rgba(' + [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)].join(\",\") + ',' + opacity + ')');\n break;\n case false:\n elem.css({\n 'background': 'transparent',\n 'filter': 'progid:DXImageTransform.Microsoft.gradient(startColorstr=#' + alhpaToHex(opacity) + result[0].replace('#', '') + ',endColorstr=#' + alhpaToHex(opacity) + result[0].replace('#', '') + ');',\n 'zoom': 1\n });\n break;\n }\n }\n\n return result ? {\n rgba: 'rgba(' + [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)].join(\",\") + ',' + opacity + ')',\n fallback: alhpaToHex(opacity) + result[0].replace('#', '')\n } : null;\n }\n\n function getEaseType(ease) {\n // Add more ease types - work in progress\n var easeCSS = \"\";\n var easeType;\n var oldWebkit = false;\n\n switch (ease.toLowerCase()) {\n case 'easeinoutback':\n easeType = 'cubic-bezier(0.680, -0.550, 0.265, 1.550)';\n oldWebkit = 'cubic-bezier(0.680, 0, 0.265, 1)';\n break;\n case 'quick-in':\n easeType = \"cubic-bezier(0.315, -0.185, 0.000, 1.270)\";\n oldWebkit = \"cubic-bezier(0.315, 0, 0.000, 1)\";\n break;\n case 'accelerate':\n easeType = \"cubic-bezier(0.885, 0.420, 0.000, 1.270)\";\n oldWebkit = \"cubic-bezier(0.885, 0.420, 0.000, 1)\";\n break;\n case 'super-fast':\n easeType = \"cubic-bezier(0.000, 0.870, 0.000, 0.890)\";\n break;\n case 'ease-in-out-back':\n easeType = \"cubic-bezier(0.680, -0.550, 0.265, 1.550)\";\n oldWebkit = \"cubic-bezier(0.680, 0, 0.265, 1)\";\n break;\n case 'ease-in-out-expo':\n easeType = \"cubic-bezier(1.000, 0.000, 0.000, 1.000)\";\n break;\n case 'ease-out-back':\n easeType = \"cubic-bezier(0.175, 0.885, 0.320, 1.275)\";\n oldWebkit = \"cubic-bezier(0.175, 0.885, 0.320, 1)\";\n break;\n case 'ease-out-circ':\n easeType = \"cubic-bezier(0.075, 0.820, 0.165, 1.000)\";\n break;\n case 'ease-in-back':\n easeType = \"cubic-bezier(0.600, -0.280, 0.735, 0.045)\";\n oldWebkit = \"cubic-bezier(0.600, 0, 0.735, 0.045)\";\n break;\n case 'ease-in-circ':\n easeType = \"cubic-bezier(0.600, 0.040, 0.980, 0.335)\";\n oldWebkit = \"cubic-bezier(0.600, 0.040, 0.980, 0.335)\";\n break;\n case 'ease':\n easeType = \"ease\";\n break;\n case \"ease-in\":\n easeType = \"ease-in\";\n break;\n case \"ease-in-out\":\n easeType = \"ease-in-out\";\n break;\n case \"ease-out\":\n easeType = \"ease-out\";\n break;\n }\n\n if (oldWebkit) {\n easeType = oldWebkit;\n // easeCSS += \"-webkit-transition-timing-function:\" + oldWebkit + \";\";\n }\n var prefixes = [\"-webkit-\", \"-moz-\", \"-o-\", \"\"];\n for (var i = 0; i < prefixes.length; i++) {\n easeCSS += prefixes[i] + \"transition-timing-function:\" + easeType + \";\"\n }\n\n return easeCSS;\n\n\n };\n\n\n function centerIcon(icon) {\n var elem = $(icon);\n elem\n .parent()\n .css({\n 'width': elem.width(),\n 'height': elem.height()\n })\n }\n options.resizeEvent = resizeEvent ? true : false;\n\n\n start(options);\n\n function start(options) {\n var addEffects = $();\n\n item.each(function() {\n\n var self, params, inner, overlay, initial, dims, type, transitionProp, easeType, icon;\n self = $(this);\n self.unbind('.hoverfx');\n self.css({\n \"width\": \"\",\n \"height\": \"\"\n });\n\n\n params = setParams(self);\n inner = getInner(self, params.contentType);\n initial = self.find('.initial-image');\n overlay = self.find('.overlay');\n params.overlayColor = inner.css('background-color');\n params.innerColor = inner.css('background-color');\n inner.removeAttr('style');\n overlay.removeAttr('style');\n initial.removeAttr('style');\n\n moveCSSProps(initial, self);\n\n dims = getDimms(self);\n //console.log(dims);\n easeType = getEaseType(params.effectEasing);\n type = params.contentType;\n\n icon = inner.find('.swap-icons img');\n centerIcon(icon);\n if (type == 'overlay') {\n transitionProp = 'all';\n } else {\n transitionProp = 'margin';\n }\n initial.css('float', 'none');\n\n if (type == \"caption\") {\n if (self.find('.caption-wrap').length == 0) {\n var captionWrap = $('
').addClass('caption-wrap overlay');\n inner.wrap(captionWrap);\n }\n overlay = self.find('.caption-wrap');\n } else {\n overlay = self.find('.overlay');\n }\n overlay.add(inner).css('display', 'block');\n\n\n\n function applyTransition(elem, prop, easeCSS, duration, includeTiming) {\n var property = prop ? prop : \"all\";\n var customEase = \"\";\n var dur = params.effectDelay + \"ms\";\n var delay = \"\";\n\n\n\n var transitionValue = property + \" \" + dur;\n elem.css({\n '-webkit-transition': transitionValue,\n '-moz-transition': transitionValue,\n '-o-transition': transitionValue,\n 'transition': transitionValue\n })\n if (includeTiming) {\n applyTiming(elem, easeCSS);\n }\n }\n\n function applyTiming(elem, easeCSS) {\n elem.attr('style', elem.attr('style') + easeCSS);\n }\n\n self.addClass(params.effectType);\n\n var loaded = false;\n\n if (initial.height() > 0) {\n\n loaded = true;\n var initialDims = getDimms(initial);\n self.css({\n 'width': initialDims.width/*,\n 'height': initialDims.height*/\n });\n\n if (type == \"overlay\") {\n applyTransition(inner, transitionProp, easeType, params.effectDelay, true);\n }\n }\n\n initial.on('load', function() {\n var imageDims = getDimms($(this));\n\n self.css({\n 'width': imageDims.width/*,\n 'height': imageDims.height*/\n });\n if (type == 'overlay') {\n inner.css({\n 'margin-top': 0 / 2,\n 'margin-left': Math.abs(imageDims.width - inner.outerWidth()) / 2\n });\n }\n if (type == \"overlay\") {\n applyTransition(inner, transitionProp, easeType, params.effectDelay);\n }\n\n });\n\n inner.css({\n 'background-color': genRGBA(params.overlayColor, params.overlayAlpha).rgba\n });\n\n if (type == \"overlay\") {\n applyTransition(overlay, 'opacity', easeType, params.effectDelay, true);\n }\n\n\n\n var showCaption, hideCaption;\n\n var isMobile = {\n Android: function() {\n return navigator.userAgent.match(/Android/i);\n },\n BlackBerry: function() {\n return navigator.userAgent.match(/BlackBerry/i);\n },\n iOS: function() {\n return navigator.userAgent.match(/iPhone|iPad|iPod/i);\n },\n Opera: function() {\n return navigator.userAgent.match(/Opera Mini/i);\n },\n Windows: function() {\n return navigator.userAgent.match(/IEMobile/i);\n },\n any: function() {\n return !!(isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows() || (\"ontouchstart\" in document));\n }\n };\n\n var _isMobile = isMobile.any();\n\n\n if (params.link) {\n if (_isMobile == true) {\n\n } else {\n self.bind('click.hoverfx', function() {\n if (params.openPage === 'same') {\n window.location.assign(params['link']);\n } else {\n window.open(params['link'], '_blank');\n }\n });\n }\n }\n\n\n if (type == 'overlay') {\n self.unbind('.caption');\n self.addClass('contentswap-overlay');\n var initialDims = getDimms(initial);\n //console.log(dims.width + \" .. \" + inner.outerWidth());\n if (initial.height() > 0) {\n inner.css({\n // 'margin-top': Math.abs(initialDims.height - inner.outerHeight()) / 2,\n 'margin-top': 0 / 2,\n 'margin-left': Math.abs(initialDims.width - inner.outerWidth()) / 2\n });\n }\n\n }\n\n if (type == 'caption') {\n self.addClass('caption');\n\n if (params.direction == 'top') {\n if (!loaded) {\n setTimeout(function() {\n overlay.css({\n 'margin-top': (-inner.outerHeight() - 1) + 'px',\n 'opacity': 1\n });\n }, 10);\n\n } else {\n overlay.css({\n 'margin-top': (-inner.outerHeight() - 1) + 'px',\n 'opacity': 1\n });\n }\n\n setTimeout(function() {\n overlay.insertBefore(initial);\n\n }, 10);\n } else {\n\n setTimeout(function() {\n overlay.css({\n 'opacity': 1\n });\n }, 10);\n }\n //else applyTransition(initial,transitionProp);\n var showCaption, hideCaption;\n\n\n //work in progress\n if (params.captionType == \"over\") {\n\n if (params.direction == 'top') {\n overlay.css({\n 'position': 'absolute',\n 'z-index': 9991\n\n });\n } else {\n overlay.css({\n 'margin-top': '1px'\n });\n }\n applyTransition(overlay, 'margin', easeType, params.effectDelay, true);\n\n showCaption = function() {\n\n overlay.css({\n 'margin-top': (-inner.outerHeight()) + 'px'\n });\n if (params.direction == 'top') overlay.css('margin-top', 0);\n };\n hideCaption = function() {\n overlay.css({\n 'margin-top': \"0px\"\n });\n if (params.direction == 'top') overlay.css('margin-top', (-inner.outerHeight()) + 'px');\n }\n } else {\n applyTransition(overlay, \"margin\", easeType, params.effectDelay, true);\n applyTransition(initial, \"margin\", easeType, params.effectDelay, true);\n\n\n showCaption = function() {\n\n if (params.captionHeight <= inner.outerHeight()) {\n setCaptionHeight(params.captionHeight, inner);\n }\n\n if (params.direction == 'top' && params.captionType != 'over') {\n\n overlay.css({\n 'margin-top': '0px'\n });\n } else {\n overlay.css({\n 'margin-top': -inner.outerHeight()\n })\n initial.css({\n 'margin-top': -inner.outerHeight(),\n 'margin-bottom': inner.outerHeight()\n })\n\n }\n }\n\n hideCaption = function() {\n if (params.direction == 'top') {\n overlay.css({\n 'margin-top': (-inner.outerHeight() - 1) + 'px'\n })\n } else {\n overlay.css({\n 'margin-top': '1px'\n })\n initial.css({\n 'margin-top': '0px',\n 'margin-bottom': '0px'\n })\n }\n }\n }\n\n\n }\n\n if (_isMobile == true) {\n self.addClass('hover');\n if (type == \"caption\") {\n showCaption();\n } else {\n\n }\n\n } else {\n if (type == \"caption\") {\n self.bind('mouseenter.hoverfx', showCaption)\n .bind('mouseleave.hoverfx', hideCaption);\n }\n\n }\n\n\n\n\n });\n }\n\n }\n})(jQuery);\n","(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require, exports, module);\n } else {\n root.CountUp = factory();\n }\n}(this, function (require, exports, module) {\n\n /*\n\n countUp.js\n by @inorganik\n\n */\n\n// target = id of html element or var of previously selected html element where counting occurs\n// startVal = the value you want to begin at\n// endVal = the value you want to arrive at\n// decimals = number of decimal places, default 0\n// duration = duration of animation in seconds, default 2\n// options = optional object of options (see below)\n\n var CountUp = function (target, startVal, endVal, decimals, duration, options) {\n\n var self = this;\n self.version = function () {\n return '1.9.1';\n };\n\n // default options\n self.options = {\n useEasing: true, // toggle easing\n useGrouping: true, // 1,000,000 vs 1000000\n separator: ',', // character to use as a separator\n decimal: '.', // character to use as a decimal\n easingFn: easeOutExpo, // optional custom easing function, default is Robert Penner's easeOutExpo\n formattingFn: formatNumber, // optional custom formatting function, default is formatNumber above\n prefix: '', // optional text before the result\n suffix: '', // optional text after the result\n numerals: [], // optionally pass an array of custom numerals for 0-9\n onUpdate: false\n };\n\n // extend default options with passed options object\n if (options && typeof options === 'object') {\n for (var key in self.options) {\n if (options.hasOwnProperty(key) && options[key] !== null) {\n self.options[key] = options[key];\n }\n }\n }\n\n if (self.options.separator === '') self.options.useGrouping = false;\n\n // make sure requestAnimationFrame and cancelAnimationFrame are defined\n // polyfill for browsers without native support\n // by Opera engineer Erik Möller\n var lastTime = 0;\n var vendors = ['webkit', 'moz', 'ms', 'o'];\n for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\n window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\n window.cancelAnimationFrame =\n window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];\n }\n if (!window.requestAnimationFrame) {\n window.requestAnimationFrame = function (callback, element) {\n var currTime = new Date().getTime();\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\n var id = window.setTimeout(function () {\n callback(currTime + timeToCall);\n },\n timeToCall);\n lastTime = currTime + timeToCall;\n return id;\n };\n }\n if (!window.cancelAnimationFrame) {\n window.cancelAnimationFrame = function (id) {\n clearTimeout(id);\n };\n }\n\n function formatNumber(num) {\n num = num.toFixed(self.decimals);\n num += '';\n var x, x1, x2, rgx;\n x = num.split('.');\n x1 = x[0];\n x2 = x.length > 1 ? self.options.decimal + x[1] : '';\n rgx = /(\\d+)(\\d{3})/;\n if (self.options.useGrouping) {\n while (rgx.test(x1)) {\n x1 = x1.replace(rgx, '$1' + self.options.separator + '$2');\n }\n }\n // optional numeral substitution\n if (self.options.numerals.length) {\n x1 = x1.replace(/[0-9]/g, function (w) {\n return self.options.numerals[+w];\n })\n x2 = x2.replace(/[0-9]/g, function (w) {\n return self.options.numerals[+w];\n })\n }\n return self.options.prefix + x1 + x2 + self.options.suffix;\n }\n\n // Robert Penner's easeOutExpo\n function easeOutExpo(t, b, c, d) {\n return c * (-Math.pow(2, -10 * t / d) + 1) * 1024 / 1023 + b;\n }\n\n function ensureNumber(n) {\n return (typeof n === 'number' && !isNaN(n));\n }\n\n self.initialize = function () {\n if (self.initialized) return true;\n\n self.error = '';\n self.d = (typeof target === 'string') ? document.getElementById(target) : target;\n if (!self.d) {\n self.error = '[CountUp] target is null or undefined'\n return false;\n }\n self.startVal = Number(startVal);\n self.endVal = Number(endVal);\n // error checks\n if (ensureNumber(self.startVal) && ensureNumber(self.endVal)) {\n self.decimals = Math.max(0, decimals || 0);\n self.dec = Math.pow(10, self.decimals);\n self.duration = Number(duration) * 1000 || 4000;\n self.countDown = (self.startVal > self.endVal);\n self.frameVal = self.startVal;\n self.initialized = true;\n return true;\n }\n else {\n self.error = '[CountUp] startVal (' + startVal + ') or endVal (' + endVal + ') is not a number';\n return false;\n }\n };\n\n // Print value to target\n self.printValue = function (value) {\n var result = self.options.formattingFn(value);\n // var sizeKeeper = self.options.formattingFn(endVal);\n\n // sizeKeeper = ''+sizeKeeper+'';\n\n // result = sizeKeeper+result;\n\n if (self.d.tagName === 'INPUT') {\n this.d.value = result;\n }\n else if (self.d.tagName === 'text' || self.d.tagName === 'tspan') {\n this.d.textContent = result;\n }\n else {\n this.d.innerHTML = result;\n }\n };\n\n self.count = function (timestamp) {\n\n if (!self.startTime) {\n self.startTime = timestamp;\n }\n\n self.timestamp = timestamp;\n var progress = timestamp - self.startTime;\n self.remaining = self.duration - progress;\n\n // to ease or not to ease\n if (self.options.useEasing) {\n if (self.countDown) {\n self.frameVal = self.startVal - self.options.easingFn(progress, 0, self.startVal - self.endVal, self.duration);\n } else {\n self.frameVal = self.options.easingFn(progress, self.startVal, self.endVal - self.startVal, self.duration);\n }\n } else {\n if (self.countDown) {\n self.frameVal = self.startVal - ((self.startVal - self.endVal) * (progress / self.duration));\n } else {\n self.frameVal = self.startVal + (self.endVal - self.startVal) * (progress / self.duration);\n }\n }\n\n // don't go past endVal since progress can exceed duration in the last frame\n if (self.countDown) {\n self.frameVal = (self.frameVal < self.endVal) ? self.endVal : self.frameVal;\n } else {\n self.frameVal = (self.frameVal > self.endVal) ? self.endVal : self.frameVal;\n }\n\n // decimal\n self.frameVal = Math.round(self.frameVal * self.dec) / self.dec;\n\n // format and print value\n self.printValue(self.frameVal);\n\n if (self.options.onUpdate) {\n self.options.onUpdate(self.frameVal);\n }\n\n // whether to continue\n if (progress < self.duration) {\n self.rAF = requestAnimationFrame(self.count);\n } else {\n if (self.callback) self.callback();\n }\n };\n // start your animation\n self.start = function (callback) {\n if (!self.initialize()) return;\n self.callback = callback;\n self.rAF = requestAnimationFrame(self.count);\n };\n // toggles pause/resume animation\n self.pauseResume = function () {\n if (!self.paused) {\n self.paused = true;\n cancelAnimationFrame(self.rAF);\n } else {\n self.paused = false;\n delete self.startTime;\n self.duration = self.remaining;\n self.startVal = self.frameVal;\n requestAnimationFrame(self.count);\n }\n };\n // reset to startVal so animation can be run again\n self.reset = function () {\n self.paused = false;\n delete self.startTime;\n self.initialized = false;\n if (self.initialize()) {\n cancelAnimationFrame(self.rAF);\n self.printValue(self.startVal);\n }\n };\n // pass a new endVal and start animation\n self.update = function (newEndVal) {\n if (!self.initialize()) return;\n newEndVal = Number(newEndVal);\n if (!ensureNumber(newEndVal)) {\n self.error = '[CountUp] update() - new endVal is not a number: ' + newEndVal;\n return;\n }\n self.error = '';\n if (newEndVal === self.frameVal) return;\n cancelAnimationFrame(self.rAF);\n self.paused = false;\n delete self.startTime;\n self.startVal = self.frameVal;\n self.endVal = newEndVal;\n self.countDown = (self.startVal > self.endVal);\n self.rAF = requestAnimationFrame(self.count);\n };\n\n // format startVal on initialization\n if (self.initialize()) self.printValue(self.startVal);\n };\n\n return CountUp;\n\n}));","/**\n * jQuery Line Progressbar\n * Author: KingRayhan\n * Author URL: http://rayhan.info\n * Version: 1.0.0\n */\n\n(function ($) {\n 'use strict';\n\n\n $.fn.LineProgressbar = function (options) {\n\n options = $.extend({\n min: 0,\n max: 100,\n stop: 50,\n ShowProgressCount: true,\n duration: 2000,\n color: '#654ea3',\n backgroundColor: '#f5f5f5',\n suffix: '%',\n text: 'Category',\n radius: '0px',\n height: '10px',\n width: '100%'\n }, options);\n\n $.options = options;\n return this.each(function (index, el) {\n // Markup\n $(el).html('
');\n\n\n\n var progressFill = $(el).find('.proggress');\n var progressBar = $(el).find('.progressbar');\n var progressText = $(el).find('.counterText');\n\n\n progressFill.css({\n backgroundColor: options.color,\n height: options.height,\n borderRadius: options.radius\n });\n progressBar.css({\n width: options.width,\n backgroundColor: options.backgroundColor,\n borderRadius: options.radius\n });\n\n progressText.html(options.text);\n\n // Progressing\n progressFill.animate(\n {\n width: options.stop + \"%\"\n },\n {\n step: function (x) {\n if (options.ShowProgressCount) {\n $(el).find(\".percentCount\").text(Math.round(x) + options.suffix);\n }\n },\n duration: options.duration\n }\n );\n ////////////////////////////////////////////////////////////////////\n });\n }\n $.fn.progressTo = function (next) {\n\n var options = $.options;\n\n return this.each(function (index, el) {\n\n var progressFill = $(el).find('.proggress');\n var progressBar = $(el).find('.progressbar');\n\n progressFill.animate(\n {\n width: next + \"%\"\n },\n {\n step: function (x) {\n if (options.ShowProgressCount) {\n $(el).find(\".percentCount\").text(Math.round(x) + options.suffix);\n }\n },\n duration: options.duration\n }\n );\n ////////////////////////////////////////////////////////////////////\n });\n }\n\n})(jQuery);\n","(function ($) {\n\n window.addEventListener('resize', function () {\n var videoElement = document.querySelector('video#wp-custom-header-video') || document.querySelector('iframe#wp-custom-header-video');\n if (videoElement) {\n videoSize(videoElement);\n }\n });\n\n function videoSize(videoElement, animate) {\n var $videoElement = jQuery(videoElement);\n var $header = jQuery(\".header-homepage.cp-video-bg\");\n var videoWidth = $header.width(),\n videoHeight = $header.height();\n\n videoWidth = Math.max(videoWidth,videoHeight); \n\n if (videoWidth < videoHeight * 16 / 9) {\n videoWidth = 16 / 9 * videoHeight;\n } else {\n videoHeight = videoWidth * 9 / 16;\n }\n\n var marginLeft = -0.5 * (videoWidth - $header.width());\n\n $videoElement.css({\n width: videoWidth,\n height: videoHeight,\n \"opacity\": 1,\n \"left\": marginLeft\n });\n\n if (animate === false) {\n return;\n }\n\n\n }\n\n jQuery(function () {\n var videoElement = document.querySelector('video#wp-custom-header-video') || document.querySelector('iframe#wp-custom-header-video');\n if (videoElement) {\n videoSize(videoElement, false);\n }\n });\n\n __cpVideoElementFirstPlayed = false;\n\n document.addEventListener('wp-custom-header-video-loaded', function () {\n var videoElement = document.querySelector('video#wp-custom-header-video');\n\n if (videoElement) {\n videoSize(videoElement);\n return;\n }\n\n document.querySelector('#wp-custom-header').addEventListener('play', function () {\n var iframeVideo = document.querySelector('iframe#wp-custom-header-video');\n var videoElement = document.querySelector('video#wp-custom-header-video') || iframeVideo;\n \n if (videoElement && !__cpVideoElementFirstPlayed) {\n __cpVideoElementFirstPlayed = true;\n videoSize(videoElement);\n }\n \n });\n\n });\n})(jQuery);","/*\n * Backstretch\n * http://srobbin.com/jquery-plugins/backstretch/\n *\n * Copyright (c) 2013 Scott Robbin\n * Licensed under the MIT license.\n */\n\n;(function ($, window, undefined) {\n 'use strict';\n\n /** @const */\n var YOUTUBE_REGEXP = /^.*(youtu\\.be\\/|youtube\\.com\\/v\\/|youtube\\.com\\/embed\\/|youtube\\.com\\/watch\\?v=|youtube\\.com\\/watch\\?.*\\&v=)([^#\\&\\?]*).*/i;\n \n /* PLUGIN DEFINITION\n * ========================= */\n\n $.fn.backstretch = function (images, options) {\n var args = arguments;\n\n /*\n * Scroll the page one pixel to get the right window height on iOS\n * Pretty harmless for everyone else\n */\n if ($(window).scrollTop() === 0 ) {\n window.scrollTo(0, 0);\n }\n\n var returnValues;\n \n this.each(function (eachIndex) {\n var $this = $(this)\n , obj = $this.data('backstretch');\n\n // Do we already have an instance attached to this element?\n if (obj) {\n\n // Is this a method they're trying to execute?\n if (typeof args[0] === 'string' &&\n typeof obj[args[0]] === 'function') {\n \n // Call the method\n var returnValue = obj[args[0]].apply(obj, Array.prototype.slice.call(args, 1));\n if (returnValue === obj) { // If a method is chaining\n returnValue = undefined;\n }\n if (returnValue !== undefined) {\n returnValues = returnValues || [];\n returnValues[eachIndex] = returnValue;\n }\n \n return; // Nothing further to do\n }\n\n // Merge the old options with the new\n options = $.extend(obj.options, options);\n\n // Remove the old instance\n if ( obj.hasOwnProperty('destroy') ) {\n obj.destroy(true);\n }\n }\n\n // We need at least one image\n if (!images || (images && images.length === 0)) {\n var cssBackgroundImage = $this.css('background-image');\n if (cssBackgroundImage && cssBackgroundImage !== 'none') {\n images = [ { url: $this.css('backgroundImage').replace(/url\\(|\\)|\"|'/g,\"\") } ];\n } else {\n $.error('No images were supplied for Backstretch, or element must have a CSS-defined background image.');\n }\n }\n\n obj = new Backstretch(this, images, options || {});\n $this.data('backstretch', obj);\n });\n \n return returnValues ? returnValues.length === 1 ? returnValues[0] : returnValues : this;\n };\n\n // If no element is supplied, we'll attach to body\n $.backstretch = function (images, options) {\n // Return the instance\n return $('body')\n .backstretch(images, options)\n .data('backstretch');\n };\n\n // Custom selector\n $.expr[':'].backstretch = function(elem) {\n return $(elem).data('backstretch') !== undefined;\n };\n\n /* DEFAULTS\n * ========================= */\n\n $.fn.backstretch.defaults = {\n duration: 5000 // Amount of time in between slides (if slideshow)\n , transition: 'fade' // Type of transition between slides\n , transitionDuration: 0 // Duration of transition between slides\n , animateFirst: true // Animate the transition of first image of slideshow in?\n , alignX: 0.5 // The x-alignment for the image, can be 'left'|'center'|'right' or any number between 0.0 and 1.0\n , alignY: 0.5 // The y-alignment for the image, can be 'top'|'center'|'bottom' or any number between 0.0 and 1.0\n , paused: false // Whether the images should slide after given duration\n , start: 0 // Index of the first image to show\n , preload: 2 // How many images preload at a time?\n , preloadSize: 1 // How many images can we preload in parallel?\n , resolutionRefreshRate: 2500 // How long to wait before switching resolution?\n , resolutionChangeRatioThreshold: 0.1 // How much a change should it be before switching resolution?\n };\n\n /* STYLES\n *\n * Baked-in styles that we'll apply to our elements.\n * In an effort to keep the plugin simple, these are not exposed as options.\n * That said, anyone can override these in their own stylesheet.\n * ========================= */\n var styles = {\n wrap: {\n left: 0\n , top: 0\n , overflow: 'hidden'\n , margin: 0\n , padding: 0\n , height: '100%'\n , width: '100%'\n , zIndex: -999999\n }\n , itemWrapper: {\n position: 'absolute'\n , display: 'none'\n , margin: 0\n , padding: 0\n , border: 'none'\n , width: '100%'\n , height: '100%'\n , zIndex: -999999\n }\n , item: {\n position: 'absolute'\n , margin: 0\n , padding: 0\n , border: 'none'\n , width: '100%'\n , height: '100%'\n , maxWidth: 'none'\n }\n };\n\n /* Given an array of different options for an image,\n * choose the optimal image for the container size.\n *\n * Given an image template (a string with {{ width }} and/or\n * {{height}} inside) and a container object, returns the\n * image url with the exact values for the size of that\n * container.\n *\n * Returns an array of urls optimized for the specified resolution.\n *\n */\n var optimalSizeImages = (function () {\n\n /* Sorts the array of image sizes based on width */\n var widthInsertSort = function (arr) {\n for (var i = 1; i < arr.length; i++) {\n var tmp = arr[i],\n j = i;\n while (arr[j - 1] && parseInt(arr[j - 1].width, 10) > parseInt(tmp.width, 10)) {\n arr[j] = arr[j - 1];\n --j;\n }\n arr[j] = tmp;\n }\n\n return arr;\n };\n\n /* Given an array of various sizes of the same image and a container width,\n * return the best image.\n */\n var selectBest = function (containerWidth, containerHeight, imageSizes) {\n\n var devicePixelRatio = window.devicePixelRatio || 1;\n var deviceOrientation = getDeviceOrientation();\n var windowOrientation = getWindowOrientation();\n var wrapperOrientation = (containerHeight > containerWidth) ?\n 'portrait' :\n (containerWidth > containerHeight ? 'landscape' : 'square');\n\n var lastAllowedImage = 0;\n var testWidth;\n\n for (var j = 0, image; j < imageSizes.length; j++) {\n\n image = imageSizes[j];\n\n // In case a new image was pushed in, process it:\n if (typeof image === 'string') {\n image = imageSizes[j] = { url: image };\n }\n\n if (image.pixelRatio && image.pixelRatio !== 'auto' && parseFloat(image.pixelRatio) !== devicePixelRatio) {\n // We disallowed choosing this image for current device pixel ratio,\n // So skip this one.\n continue;\n }\n\n if (image.deviceOrientation && image.deviceOrientation !== deviceOrientation) {\n // We disallowed choosing this image for current device orientation,\n // So skip this one.\n continue;\n }\n\n if (image.windowOrientation && image.windowOrientation !== deviceOrientation) {\n // We disallowed choosing this image for current window orientation,\n // So skip this one.\n continue;\n }\n\n if (image.orientation && image.orientation !== wrapperOrientation) {\n // We disallowed choosing this image for current element's orientation,\n // So skip this one.\n continue;\n }\n\n // Mark this one as the last one we investigated\n // which does not violate device pixel ratio rules.\n // We may choose this one later if there's no match.\n lastAllowedImage = j;\n\n // For most images, we match the specified width against element width,\n // And enforcing a limit depending on the \"pixelRatio\" property if specified.\n // But if a pixelRatio=\"auto\", then we consider the width as the physical width of the image,\n // And match it while considering the device's pixel ratio.\n testWidth = containerWidth;\n if (image.pixelRatio === 'auto') {\n containerWidth *= devicePixelRatio;\n }\n\n // Stop when the width of the image is larger or equal to the container width\n if (image.width >= testWidth) {\n break;\n }\n }\n\n // Use the image located at where we stopped\n return imageSizes[Math.min(j, lastAllowedImage)];\n };\n \n var replaceTagsInUrl = function (url, templateReplacer) {\n \n if (typeof url === 'string') {\n url = url.replace(/{{(width|height)}}/g, templateReplacer);\n } else if (url instanceof Array) {\n for (var i = 0; i < url.length; i++) {\n if (url[i].src) {\n url[i].src = replaceTagsInUrl(url[i].src, templateReplacer);\n } else {\n url[i] = replaceTagsInUrl(url[i], templateReplacer);\n }\n }\n }\n \n return url;\n };\n\n return function ($container, images) {\n var containerWidth = $container.width(),\n containerHeight = $container.height();\n\n var chosenImages = [];\n\n var templateReplacer = function (match, key) {\n if (key === 'width') {\n return containerWidth;\n }\n if (key === 'height') {\n return containerHeight;\n }\n return match;\n };\n\n for (var i = 0; i < images.length; i++) {\n if ($.isArray(images[i])) {\n images[i] = widthInsertSort(images[i]);\n var chosen = selectBest(containerWidth, containerHeight, images[i]);\n chosenImages.push(chosen);\n } else {\n // In case a new image was pushed in, process it:\n if (typeof images[i] === 'string') {\n images[i] = { url: images[i] };\n }\n\n var item = $.extend({}, images[i]);\n item.url = replaceTagsInUrl(item.url, templateReplacer);\n chosenImages.push(item);\n }\n }\n return chosenImages;\n };\n\n })();\n \n var isVideoSource = function (source) {\n return YOUTUBE_REGEXP.test(source.url) || source.isVideo;\n };\n\n /* Preload images */\n var preload = (function (sources, startAt, count, batchSize, callback) {\n // Plugin cache\n var cache = [];\n\n // Wrapper for cache\n var caching = function(image){\n for (var i = 0; i < cache.length; i++) {\n if (cache[i].src === image.src) {\n return cache[i];\n }\n }\n cache.push(image);\n return image;\n };\n\n // Execute callback\n var exec = function(sources, callback, last){\n if (typeof callback === 'function') {\n callback.call(sources, last);\n }\n };\n\n // Closure to hide cache\n return function preload (sources, startAt, count, batchSize, callback){\n // Check input data\n if (typeof sources === 'undefined') {\n return;\n }\n if (!$.isArray(sources)) {\n sources = [sources];\n }\n\n if (arguments.length < 5 && typeof arguments[arguments.length - 1] === 'function') {\n callback = arguments[arguments.length - 1];\n }\n\n startAt = (typeof startAt === 'function' || !startAt) ? 0 : startAt;\n count = (typeof count === 'function' || !count || count < 0) ? sources.length : Math.min(count, sources.length);\n batchSize = (typeof batchSize === 'function' || !batchSize) ? 1 : batchSize;\n\n if (startAt >= sources.length) {\n startAt = 0;\n count = 0;\n }\n if (batchSize < 0) {\n batchSize = count;\n }\n batchSize = Math.min(batchSize, count);\n\n var next = sources.slice(startAt + batchSize, count - batchSize);\n sources = sources.slice(startAt, batchSize);\n count = sources.length;\n\n // If sources array is empty\n if (!count) {\n exec(sources, callback, true);\n return;\n }\n\n // Image loading callback\n var countLoaded = 0;\n\n var loaded = function() {\n countLoaded++;\n if (countLoaded !== count) {\n return;\n }\n\n exec(sources, callback, !next);\n preload(next, 0, 0, batchSize, callback);\n };\n\n // Loop sources to preload\n var image;\n\n for (var i = 0; i < sources.length; i++) {\n \n if (isVideoSource(sources[i])) {\n \n // Do not preload videos. There are issues with that.\n // First - we need to keep an instance of the preloaded and use that exactly, not a copy.\n // Second - there are memory issues.\n // If there will be a requirement from users - I'll try to implement this.\n\n continue;\n \n } else {\n \n image = new Image();\n image.src = sources[i].url;\n\n image = caching(image);\n\n if (image.complete) {\n loaded();\n } else {\n $(image).on('load error', loaded);\n }\n \n }\n \n }\n };\n })();\n\n /* Process images array */\n var processImagesArray = function (images) {\n var processed = [];\n for (var i = 0; i < images.length; i++) {\n if (typeof images[i] === 'string') {\n processed.push({ url: images[i] });\n }\n else if ($.isArray(images[i])) {\n processed.push(processImagesArray(images[i]));\n }\n else {\n processed.push(processOptions(images[i]));\n }\n }\n return processed;\n };\n\n /* Process options */\n var processOptions = function (options, required) {\n\n // Convert old options\n\n // centeredX/centeredY are deprecated\n if (options.centeredX || options.centeredY) {\n if (window.console && window.console.log) {\n window.console.log('jquery.backstretch: `centeredX`/`centeredY` is deprecated, please use `alignX`/`alignY`');\n }\n if (options.centeredX) {\n options.alignX = 0.5;\n }\n if (options.centeredY) {\n options.alignY = 0.5;\n }\n }\n\n // Deprecated spec\n if (options.speed !== undefined) {\n\n if (window.console && window.console.log) {\n window.console.log('jquery.backstretch: `speed` is deprecated, please use `transitionDuration`');\n }\n\n options.transitionDuration = options.speed;\n options.transition = 'fade';\n }\n\n // Typo\n if (options.resolutionChangeRatioTreshold !== undefined) {\n window.console.log('jquery.backstretch: `treshold` is a typo!');\n options.resolutionChangeRatioThreshold = options.resolutionChangeRatioTreshold;\n }\n\n // Current spec that needs processing\n\n if (options.fadeFirst !== undefined) {\n options.animateFirst = options.fadeFirst;\n }\n\n if (options.fade !== undefined) {\n options.transitionDuration = options.fade;\n options.transition = 'fade';\n }\n\n return processAlignOptions(options);\n };\n\n /* Process align options */\n var processAlignOptions = function (options, required) {\n if (options.alignX === 'left') {\n options.alignX = 0.0;\n }\n else if (options.alignX === 'center') {\n options.alignX = 0.5;\n }\n else if (options.alignX === 'right') {\n options.alignX = 1.0;\n }\n else {\n if (options.alignX !== undefined || required) {\n options.alignX = parseFloat(options.alignX);\n if (isNaN(options.alignX)) {\n options.alignX = 0.5;\n }\n }\n }\n\n if (options.alignY === 'top') {\n options.alignY = 0.0;\n }\n else if (options.alignY === 'center') {\n options.alignY = 0.5;\n }\n else if (options.alignY === 'bottom') {\n options.alignY = 1.0;\n }\n else {\n if (options.alignX !== undefined || required) {\n options.alignY = parseFloat(options.alignY);\n if (isNaN(options.alignY)) {\n options.alignY = 0.5;\n }\n }\n }\n\n return options;\n };\n\n /* CLASS DEFINITION\n * ========================= */\n var Backstretch = function (container, images, options) {\n this.options = $.extend({}, $.fn.backstretch.defaults, options || {});\n\n this.firstShow = true;\n\n // Process options\n processOptions(this.options, true);\n\n /* In its simplest form, we allow Backstretch to be called on an image path.\n * e.g. $.backstretch('/path/to/image.jpg')\n * So, we need to turn this back into an array.\n */\n this.images = processImagesArray($.isArray(images) ? images : [images]);\n\n /**\n * Paused-Option\n */\n if (this.options.paused) {\n this.paused = true;\n }\n\n /**\n * Start-Option (Index)\n */\n if (this.options.start >= this.images.length)\n {\n this.options.start = this.images.length - 1;\n }\n if (this.options.start < 0)\n {\n this.options.start = 0;\n }\n\n // Convenience reference to know if the container is body.\n this.isBody = container === document.body;\n\n /* We're keeping track of a few different elements\n *\n * Container: the element that Backstretch was called on.\n * Wrap: a DIV that we place the image into, so we can hide the overflow.\n * Root: Convenience reference to help calculate the correct height.\n */\n var $window = $(window);\n this.$container = $(container);\n this.$root = this.isBody ? supportsFixedPosition ? $window : $(document) : this.$container;\n\n this.originalImages = this.images;\n this.images = optimalSizeImages(\n this.options.alwaysTestWindowResolution ? $window : this.$root, \n this.originalImages);\n\n /**\n * Pre-Loading.\n * This is the first image, so we will preload a minimum of 1 images.\n */\n preload(this.images, this.options.start || 0, this.options.preload || 1);\n\n // Don't create a new wrap if one already exists (from a previous instance of Backstretch)\n var $existing = this.$container.children(\".backstretch\").first();\n this.$wrap = $existing.length ? $existing : \n $('
')\n .css(this.options.bypassCss ? {} : styles.wrap)\n .appendTo(this.$container);\n\n if (!this.options.bypassCss) {\n \n // Non-body elements need some style adjustments\n if (!this.isBody) {\n // If the container is statically positioned, we need to make it relative,\n // and if no zIndex is defined, we should set it to zero.\n var position = this.$container.css('position')\n , zIndex = this.$container.css('zIndex');\n\n this.$container.css({\n position: position === 'static' ? 'relative' : position\n , zIndex: zIndex === 'auto' ? 0 : zIndex\n });\n\n // Needs a higher z-index\n this.$wrap.css({zIndex: -999998});\n }\n\n // Fixed or absolute positioning?\n this.$wrap.css({\n position: this.isBody && supportsFixedPosition ? 'fixed' : 'absolute'\n });\n \n }\n\n // Set the first image\n this.index = this.options.start;\n this.show(this.index);\n\n // Listen for resize\n $window.on('resize.backstretch', $.proxy(this.resize, this))\n .on('orientationchange.backstretch', $.proxy(function () {\n // Need to do this in order to get the right window height\n if (this.isBody && window.pageYOffset === 0) {\n window.scrollTo(0, 1);\n this.resize();\n }\n }, this));\n };\n\n var performTransition = function (options) {\n\n var transition = options.transition || 'fade';\n\n // Look for multiple options\n if (typeof transition === 'string' && transition.indexOf('|') > -1) {\n transition = transition.split('|');\n }\n\n if (transition instanceof Array) {\n transition = transition[Math.round(Math.random() * (transition.length - 1))];\n }\n \n var $new = options['new'];\n var $old = options['old'] ? options['old'] : $([]);\n\n switch (transition.toString().toLowerCase()) {\n\n default:\n case 'fade':\n $new.fadeIn({\n duration: options.duration,\n complete: options.complete,\n easing: options.easing || undefined\n });\n break;\n \n case 'fadeinout':\n case 'fade_in_out':\n \n var fadeInNew = function () {\n $new.fadeIn({\n duration: options.duration / 2,\n complete: options.complete,\n easing: options.easing || undefined\n });\n };\n \n if ($old.length) {\n $old.fadeOut({\n duration: options.duration / 2,\n complete: fadeInNew,\n easing: options.easing || undefined\n });\n } else {\n fadeInNew();\n }\n \n break;\n\n case 'pushleft':\n case 'push_left':\n case 'pushright':\n case 'push_right':\n case 'pushup':\n case 'push_up':\n case 'pushdown':\n case 'push_down':\n case 'coverleft':\n case 'cover_left':\n case 'coverright':\n case 'cover_right':\n case 'coverup':\n case 'cover_up':\n case 'coverdown':\n case 'cover_down':\n\n var transitionParts = transition.match(/^(cover|push)_?(.*)$/);\n\n var animProp = transitionParts[2] === 'left' ? 'right' :\n transitionParts[2] === 'right' ? 'left' :\n transitionParts[2] === 'down' ? 'top' :\n transitionParts[2] === 'up' ? 'bottom' :\n 'right';\n\n var newCssStart = {\n 'display': ''\n }, newCssAnim = {};\n newCssStart[animProp] = '-100%';\n newCssAnim[animProp] = 0;\n\n $new\n .css(newCssStart)\n .animate(newCssAnim, {\n duration: options.duration,\n complete: function () {\n $new.css(animProp, '');\n options.complete.apply(this, arguments);\n },\n easing: options.easing || undefined\n });\n\n if (transitionParts[1] === 'push' && $old.length) {\n var oldCssAnim = {};\n oldCssAnim[animProp] = '100%';\n\n $old\n .animate(oldCssAnim, {\n duration: options.duration,\n complete: function () {\n $old.css('display', 'none');\n },\n easing: options.easing || undefined\n });\n }\n\n break;\n }\n\n };\n\n /* PUBLIC METHODS\n * ========================= */\n Backstretch.prototype = {\n\n resize: function () {\n try {\n\n // Check for a better suited image after the resize\n var $resTest = this.options.alwaysTestWindowResolution ? $(window) : this.$root;\n var newContainerWidth = $resTest.width();\n var newContainerHeight = $resTest.height();\n var changeRatioW = newContainerWidth / (this._lastResizeContainerWidth || 0);\n var changeRatioH = newContainerHeight / (this._lastResizeContainerHeight || 0);\n var resolutionChangeRatioThreshold = this.options.resolutionChangeRatioThreshold || 0.0;\n\n // check for big changes in container size\n if ((newContainerWidth !== this._lastResizeContainerWidth ||\n newContainerHeight !== this._lastResizeContainerHeight) &&\n ((Math.abs(changeRatioW - 1) >= resolutionChangeRatioThreshold || isNaN(changeRatioW)) ||\n (Math.abs(changeRatioH - 1) >= resolutionChangeRatioThreshold || isNaN(changeRatioH)))) {\n\n this._lastResizeContainerWidth = newContainerWidth;\n this._lastResizeContainerHeight = newContainerHeight;\n\n // Big change: rebuild the entire images array\n this.images = optimalSizeImages($resTest, this.originalImages);\n\n // Preload them (they will be automatically inserted on the next cycle)\n if (this.options.preload) {\n preload(this.images, (this.index + 1) % this.images.length, this.options.preload);\n }\n\n // In case there is no cycle and the new source is different than the current\n if (this.images.length === 1 &&\n this._currentImage.url !== this.images[0].url) {\n\n // Wait a little an update the image being showed\n var that = this;\n clearTimeout(that._selectAnotherResolutionTimeout);\n that._selectAnotherResolutionTimeout = setTimeout(function () {\n that.show(0);\n }, this.options.resolutionRefreshRate);\n }\n }\n\n var bgCSS = {left: 0, top: 0, right: 'auto', bottom: 'auto'}\n , rootWidth = this.isBody ? this.$root.width() : this.$root.innerWidth()\n , rootHeight = this.isBody ? ( window.innerHeight ? window.innerHeight : this.$root.height() ) : this.$root.innerHeight()\n , bgWidth = rootWidth\n , bgHeight = bgWidth / this.$itemWrapper.data('ratio')\n , evt = $.Event('backstretch.resize', {\n relatedTarget: this.$container[0]\n })\n , bgOffset\n , alignX = this._currentImage.alignX === undefined ? this.options.alignX : this._currentImage.alignX\n , alignY = this._currentImage.alignY === undefined ? this.options.alignY : this._currentImage.alignY;\n\n // Make adjustments based on image ratio\n if (bgHeight >= rootHeight) {\n bgCSS.top = -(bgHeight - rootHeight) * alignY;\n } else {\n bgHeight = rootHeight;\n bgWidth = bgHeight * this.$itemWrapper.data('ratio');\n bgOffset = (bgWidth - rootWidth) / 2;\n bgCSS.left = -(bgWidth - rootWidth) * alignX;\n }\n\n if (!this.options.bypassCss) {\n\n this.$wrap\n .css({width: rootWidth, height: rootHeight})\n .find('>.backstretch-item').not('.deleteable')\n .each(function () {\n var $wrapper = $(this);\n $wrapper.find('img,video,iframe')\n .css({width: bgWidth, height: bgHeight})\n .css(bgCSS);\n });\n }\n\n this.$container.trigger(evt, this);\n } catch(err) {\n // IE7 seems to trigger resize before the image is loaded.\n // This try/catch block is a hack to let it fail gracefully.\n }\n\n return this;\n }\n\n // Show the slide at a certain position\n , show: function (newIndex, overrideOptions) {\n\n // Validate index\n if (Math.abs(newIndex) > this.images.length - 1) {\n return;\n }\n\n // Vars\n var that = this\n , $oldItemWrapper = that.$wrap.find('>.backstretch-item').addClass('deleteable')\n , oldVideoWrapper = that.videoWrapper\n , evtOptions = { relatedTarget: that.$container[0] };\n\n // Trigger the \"before\" event\n that.$container.trigger($.Event('backstretch.before', evtOptions), [that, newIndex]);\n\n // Set the new frame index\n this.index = newIndex;\n var selectedImage = that.images[newIndex];\n\n // Pause the slideshow\n clearTimeout(that._cycleTimeout);\n\n // New image\n\n delete that.videoWrapper; // Current item may not be a video\n\n var isVideo = isVideoSource(selectedImage);\n if (isVideo) {\n that.videoWrapper = new VideoWrapper(selectedImage);\n that.$item = that.videoWrapper.$video.css('pointer-events', 'none');\n } else {\n that.$item = $('');\n }\n\n that.$itemWrapper = $('
')\n .append(that.$item);\n\n if (this.options.bypassCss) {\n that.$itemWrapper.css({\n 'display': 'none'\n });\n } else {\n that.$itemWrapper.css(styles.itemWrapper);\n that.$item.css(styles.item);\n }\n\n that.$item.bind(isVideo ? 'canplay' : 'load', function (e) {\n var $this = $(this)\n , $wrapper = $this.parent()\n , options = $wrapper.data('options');\n \n if (overrideOptions) {\n options = $.extend({}, options, overrideOptions);\n }\n\n var imgWidth = this.naturalWidth || this.videoWidth || this.width\n , imgHeight = this.naturalHeight || this.videoHeight || this.height;\n\n // Save the ratio\n $wrapper.data('ratio', imgWidth / imgHeight);\n\n var getOption = function (opt) {\n return options[opt] !== undefined ?\n options[opt] :\n that.options[opt];\n };\n\n var transition = getOption('transition');\n var transitionEasing = getOption('transitionEasing');\n var transitionDuration = getOption('transitionDuration');\n\n // Show the image, then delete the old one\n var bringInNextImage = function () {\n \n if (oldVideoWrapper) {\n oldVideoWrapper.stop();\n oldVideoWrapper.destroy();\n }\n \n $oldItemWrapper.remove();\n\n // Resume the slideshow\n if (!that.paused && that.images.length > 1) {\n that.cycle();\n }\n\n // Now we can clear the background on the element, to spare memory\n if (!that.options.bypassCss && !that.isBody) {\n that.$container.css('background-image', 'none');\n }\n\n // Trigger the \"after\" and \"show\" events\n // \"show\" is being deprecated\n $(['after', 'show']).each(function () {\n that.$container.trigger($.Event('backstretch.' + this, evtOptions), [that, newIndex]);\n });\n \n if (isVideo) {\n that.videoWrapper.play();\n }\n };\n\n if ((that.firstShow && !that.options.animateFirst) || !transitionDuration || !transition) {\n // Avoid transition on first show or if there's no transitionDuration value\n $wrapper.show();\n bringInNextImage();\n } else {\n\n performTransition({\n 'new': $wrapper,\n old: $oldItemWrapper,\n transition: transition,\n duration: transitionDuration,\n easing: transitionEasing,\n complete: bringInNextImage\n });\n\n }\n\n that.firstShow = false;\n\n // Resize\n that.resize();\n });\n\n that.$itemWrapper.appendTo(that.$wrap);\n\n that.$item.attr('alt', selectedImage.alt || '');\n that.$itemWrapper.data('options', selectedImage);\n\n if (!isVideo) {\n that.$item.attr('src', selectedImage.url);\n }\n \n that._currentImage = selectedImage;\n\n return that;\n }\n\n , current: function () {\n return this.index;\n }\n\n , next: function () {\n var args = Array.prototype.slice.call(arguments, 0);\n args.unshift(this.index < this.images.length - 1 ? this.index + 1 : 0);\n return this.show.apply(this, args);\n }\n\n , prev: function () {\n var args = Array.prototype.slice.call(arguments, 0);\n args.unshift(this.index === 0 ? this.images.length - 1 : this.index - 1);\n return this.show.apply(this, args);\n }\n\n , pause: function () {\n // Pause the slideshow\n this.paused = true;\n \n if (this.videoWrapper) {\n this.videoWrapper.pause();\n }\n \n return this;\n }\n\n , resume: function () {\n // Resume the slideshow\n this.paused = false;\n \n if (this.videoWrapper) {\n this.videoWrapper.play();\n }\n \n this.cycle();\n return this;\n }\n\n , cycle: function () {\n // Start/resume the slideshow\n if(this.images.length > 1) {\n // Clear the timeout, just in case\n clearTimeout(this._cycleTimeout);\n\n var duration = (this._currentImage && this._currentImage.duration) || this.options.duration;\n var isVideo = isVideoSource(this._currentImage);\n \n var callNext = function () {\n this.$item.off('.cycle');\n \n // Check for paused slideshow\n if (!this.paused) {\n this.next();\n }\n };\n\n // Special video handling\n if (isVideo) {\n\n // Leave video at last frame\n if (!this._currentImage.loop) {\n var lastFrameTimeout = 0;\n\n this.$item\n .on('playing.cycle', function () {\n var player = $(this).data('player');\n\n clearTimeout(lastFrameTimeout);\n lastFrameTimeout = setTimeout(function () {\n player.pause();\n player.$video.trigger('ended');\n }, (player.getDuration() - player.getCurrentTime()) * 1000);\n })\n .on('ended.cycle', function () {\n clearTimeout(lastFrameTimeout);\n });\n }\n\n // On error go to next\n this.$item.on('error.cycle initerror.cycle', $.proxy(callNext, this));\n }\n\n if (isVideo && !this._currentImage.duration) {\n // It's a video - playing until end\n this.$item.on('ended.cycle', $.proxy(callNext, this));\n \n } else {\n // Cycling according to specified duration\n this._cycleTimeout = setTimeout($.proxy(callNext, this), duration);\n }\n \n }\n return this;\n }\n\n , destroy: function (preserveBackground) {\n // Stop the resize events\n $(window).off('resize.backstretch orientationchange.backstretch');\n\n // Stop any videos\n if (this.videoWrapper) {\n this.videoWrapper.destroy();\n }\n \n // Clear the timeout\n clearTimeout(this._cycleTimeout);\n\n // Remove Backstretch\n if(!preserveBackground) {\n this.$wrap.remove();\n }\n this.$container.removeData('backstretch');\n }\n };\n \n /**\n * Video Abstraction Layer\n *\n * Static methods:\n * > VideoWrapper.loadYoutubeAPI() -> Call in order to load the Youtube API. \n * An 'youtube_api_load' event will be triggered on $(window) when the API is loaded.\n *\n * Generic:\n * > player.type -> type of the video\n * > player.video / player.$video -> contains the element holding the video\n * > player.play() -> plays the video\n * > player.pause() -> pauses the video\n * > player.setCurrentTime(position) -> seeks to a position by seconds\n * \n * Youtube:\n * > player.ytId will contain the youtube ID if the source is a youtube url\n * > player.ytReady is a flag telling whether the youtube source is ready for playback\n * */\n\n var VideoWrapper = function () { this.init.apply(this, arguments); };\n\n /**\n * @param {Object} options\n * @param {String|Array|Array<{{src: String, type: String?}}>} options.url\n * @param {Boolean} options.loop=false\n * @param {Boolean?} options.mute=true\n * @param {String?} options.poster\n * loop, mute, poster\n */\n VideoWrapper.prototype.init = function (options) {\n\n var that = this;\n \n var $video;\n\n var setVideoElement = function () {\n that.$video = $video;\n that.video = $video[0];\n };\n \n // Determine video type\n \n var videoType = 'video';\n \n if (!(options.url instanceof Array) &&\n YOUTUBE_REGEXP.test(options.url)) {\n videoType = 'youtube';\n }\n \n that.type = videoType;\n\n if (videoType === 'youtube') {\n\n // Try to load the API in the meantime\n VideoWrapper.loadYoutubeAPI();\n\n that.ytId = options.url.match(YOUTUBE_REGEXP)[2];\n var src = 'https://www.youtube.com/embed/' + that.ytId +\n '?rel=0&autoplay=0&showinfo=0&controls=0&modestbranding=1' +\n '&cc_load_policy=0&disablekb=1&iv_load_policy=3&loop=0' +\n '&enablejsapi=1&origin=' + encodeURIComponent(window.location.origin);\n\n that.__ytStartMuted = !!options.mute || options.mute === undefined;\n\n $video = $('