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