/* * Copyright © 2019 Regular Labs - All Rights Reserved * License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL */ (function($,document,window){var defaults={html:false,photo:false,iframe:false,inline:false,transition:"elastic",speed:300,fadeOut:300,width:false,initialWidth:"600",innerWidth:false,maxWidth:false,height:false,initialHeight:"450",innerHeight:false,maxHeight:false,scalePhotos:true,scrolling:true,opacity:.9,preloading:true,className:false,overlay:true,overlayClose:true,escKey:true,arrowKey:true,top:false,bottom:false,left:false,right:false,fixed:false,data:undefined,closeButton:true,fastIframe:true, open:false,reposition:true,loop:true,slideshow:false,slideshowAuto:true,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",photoRegex:/\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\?).*)?$/i,retinaImage:false,retinaUrl:false,retinaSuffix:"@2x.$1",current:"image {current} of {total}",previous:"previous",next:"next",close:"close",xhrError:"This content failed to load.",imgError:"This image failed to load.",returnFocus:true,trapFocus:true,onOpen:false,onLoad:false, onComplete:false,onCleanup:false,onClosed:false,rel:function(){return this.rel},href:function(){return $(this).attr("href")},title:function(){return this.title},createImg:function(){var img=new Image;var attrs=$(this).data(prefix+"-img-attrs");if(typeof attrs==="object")$.each(attrs,function(key,val){img[key]=val});return img},createIframe:function(){var iframe=document.createElement("iframe");var attrs=$(this).data(prefix+"-iframe-attrs");if(typeof attrs==="object")$.each(attrs,function(key,val){iframe[key]= val});if("frameBorder"in iframe)iframe.frameBorder=0;if("allowTransparency"in iframe)iframe.allowTransparency="true";iframe.name=(new Date).getTime();iframe.allowFullscreen=true;return iframe}},colorbox="rl_modals",prefix="rl_modals",boxElement=$prefix("element"),event_open=$prefix("open"),event_load=$prefix("load"),event_complete=$prefix("complete"),event_cleanup=$prefix("cleanup"),event_closed=$prefix("closed"),event_purge=$prefix("purge"),$overlay,$box,$wrap,$content,$topBorder,$leftBorder,$rightBorder, $bottomBorder,$related,$window,$loaded,$loadingBay,$loadingOverlay,$title,$current,$slideshow,$next,$prev,$close,$groupControls,$events=$(""),settings,interfaceHeight,interfaceWidth,loadedHeight,loadedWidth,index,photo,open,active,closing,loadingTimer,publicMethod,div="div",requests=0,previousCSS={},init;function $prefix(string){return prefix+"_"+string}function $tag(tag,id,css){var element=document.createElement(tag);if(id)element.id=$prefix(id);if(css)element.style.cssText=css;return $(element)} function winheight(){return window.innerHeight?window.innerHeight:$(window).height()}function focusableEls($e){return $e.find('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [tabindex="0"]')}function firstFocusableEl($e){return focusableEls($e).first()}function lastFocusableEl($e){return focusableEls($e).last()}function Settings(element,options){if(options!==Object(options))options={};this.cache={};this.el=element;this.value=function(key){var dataAttr; if(this.cache[key]===undefined){dataAttr=$(this.el).attr("data-"+prefix+"-"+key);if(dataAttr!==undefined)this.cache[key]=dataAttr;else if(options[key]!==undefined)this.cache[key]=options[key];else if(defaults[key]!==undefined)this.cache[key]=defaults[key]}return this.cache[key]};this.get=function(key){var value=this.value(key);return $.isFunction(value)?value.call(this.el,this):value}}function getIndex(increment){var max=$related.length,newIndex=(index+increment)%max;return newIndex<0?max+newIndex: newIndex}function setSize(size,dimension){var size_int=parseInt(size,10);if(/%/.test(size)){var window_size=dimension==="x"?$window.width():winheight();return Math.round(window_size/100*size_int)}if(/v[wh]$/.test(size)){var unit=size.match(/v[wh]$/)[0];var window_size=unit==="vw"?$window.width():winheight();return Math.round(window_size/100*size_int)}return Math.round(size_int)}function isImage(settings,url){return settings.get("photo")||settings.get("photoRegex").test(url)}function retinaUrl(settings, url){return settings.get("retinaUrl")&&window.devicePixelRatio>1?url.replace(settings.get("photoRegex"),settings.get("retinaSuffix")):url}function setClass(str){if(setClass.str!==str){$box.add($overlay).removeClass(setClass.str).addClass(str);setClass.str=str}}function getRelated(rel){index=0;if(rel&&rel!==false&&rel!=="nofollow"){$related=$("."+boxElement).filter(function(){var options=$.data(this,colorbox);var settings=new Settings(this,options);return settings.get("rel")===rel});index=$related.index(settings.el); if(index===-1){$related=$related.add(settings.el);index=$related.length-1}}else $related=$(settings.el)}function trigger(event){$(document).trigger(event);$events.triggerHandler(event)}var slideshow=function(){var active,className=$prefix("slideshow"),click="click."+prefix+" rl_modals_touchstart."+prefix,timeOut;function clear(){clearTimeout(timeOut)}function set(){if(settings.get("loop")||$related[index+1]){clear();timeOut=setTimeout(publicMethod.next,settings.get("slideshowSpeed"))}}function start(){$slideshow.html(settings.get("slideshowStop")).attr("aria-label", settings.get("slideshowStop")).unbind(click).one(click,stop);$events.bind(event_complete,set).bind(event_load,clear);$box.removeClass(className+"_off").addClass(className+"_on")}function stop(){clear();$events.unbind(event_complete,set).unbind(event_load,clear);$slideshow.html(settings.get("slideshowStart")).attr("aria-label",settings.get("slideshowStart")).unbind(click).one(click,function(){publicMethod.next();start()});$box.removeClass(className+"on").addClass(className+"off")}function reset(){active= false;$slideshow.attr("aria-hidden","true").hide();clear();$events.unbind(event_complete,set).unbind(event_load,clear);$box.removeClass(className+"off "+className+"on")}return function(){if(active){if(!settings.get("slideshow")){$events.unbind(event_cleanup,reset);reset()}}else if(settings.get("slideshow")&&$related[1]){active=true;$events.one(event_cleanup,reset);if(settings.get("slideshowAuto"))start();else stop();$slideshow.attr("aria-hidden","false").show()}}}();function launch(element){var options; if(!closing){options=$(element).data(colorbox);settings=new Settings(element,options);getRelated(settings.get("rel"));if(!open){open=active=true;setClass(settings.get("className"));$box.css({visibility:"hidden",display:"block",opacity:""}).attr("aria-hidden","true");$loaded=$tag(div,"loaded_content","width:0; height:0; overflow:hidden; visibility:hidden");$content.css({width:"",height:""}).append($loaded);interfaceHeight=$topBorder.height()+$bottomBorder.height()+$content.outerHeight(true)-$content.height(); interfaceWidth=$leftBorder.width()+$rightBorder.width()+$content.outerWidth(true)-$content.width();loadedHeight=$loaded.outerHeight(true);loadedWidth=$loaded.outerWidth(true);var initialWidth=setSize(settings.get("initialWidth"),"x");var initialHeight=setSize(settings.get("initialHeight"),"y");var maxWidth=settings.get("maxWidth");var maxHeight=settings.get("maxHeight");settings.w=Math.max((maxWidth!==false?Math.min(initialWidth,setSize(maxWidth,"x")):initialWidth)-loadedWidth-interfaceWidth,0);settings.h= Math.max((maxHeight!==false?Math.min(initialHeight,setSize(maxHeight,"y")):initialHeight)-loadedHeight-interfaceHeight,0);$loaded.css({width:"",height:settings.h});publicMethod.position();trigger(event_open);settings.get("onOpen");$groupControls.add($title).hide();$box.attr("aria-hidden","false");if(settings.get("returnFocus"))$events.one(event_closed,function(){$(settings.el).focus()})}var opacity=parseFloat(settings.get("opacity"));$overlay.css({opacity:opacity===opacity?opacity:"",cursor:settings.get("overlayClose")? "pointer":"",visibility:"visible"});if(settings.get("overlay"))$overlay.show();if(settings.get("closeButton"))$close.html(settings.get("close")).attr("aria-hidden","false").appendTo($content);else $close.appendTo("
");load()}}function appendHTML(){if(!$box){init=false;$window=$(window);$box=$tag(div).attr({id:colorbox,role:"dialog","aria-hidden":"true","aria-labelledby":$prefix("title"),"aria-describedby":$prefix("current")}).hide();$overlay=$tag(div,"overlay").hide();$loadingOverlay=$([$tag(div, "loading_overlay")[0],$tag(div,"loading_graphic")[0]]);$wrap=$tag(div,"wrapper");$content=$tag(div,"content").append($title=$tag(div,"title").attr("aria-live","polite"),$current=$tag(div,"current"),$prev=$('').attr({id:$prefix("previous"),"aria-hidden":"true"}),$next=$('').attr({id:$prefix("next"),"aria-hidden":"true"}),$slideshow=$('').attr({id:$prefix("slideshow"),"aria-hidden":"true"}), $loadingOverlay);$close=$('').attr({id:$prefix("close"),"aria-hidden":"true"});$wrap.append($tag(div).append($tag(div,"top_left"),$topBorder=$tag(div,"top_center"),$tag(div,"top_right")),$tag(div,false,"clear:left").append($leftBorder=$tag(div,"middle_left"),$content,$rightBorder=$tag(div,"middle_right")),$tag(div,false,"clear:left").append($tag(div,"bottom_left"),$bottomBorder=$tag(div,"bottom_center"),$tag(div,"bottom_right"))).find("div div").css({"float":"left"}); $loadingBay=$tag(div,false,"position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;");$groupControls=$next.add($prev).add($current).add($slideshow)}if(document.body&&!$box.parent().length)$(document.body).append($overlay,$box.append($wrap,$loadingBay))}function addBindings(){function clickHandler(e){if(!(e.which>1||e.shiftKey||e.altKey||e.metaKey||e.ctrlKey)){e.preventDefault();launch(this)}}if($box){if(!init){init=true;$next.on("click rl_modals_touchstart",function(){publicMethod.next()}); $prev.on("click rl_modals_touchstart",function(){publicMethod.prev()});$close.on("click rl_modals_touchstart",function(){publicMethod.close()});$overlay.on("click rl_modals_touchstart",function(){if(settings.get("overlayClose"))publicMethod.close()});$(document).bind("keydown."+prefix,function(e){var key=e.keyCode;if(open&&settings.get("escKey")&&key===27){e.preventDefault();publicMethod.close()}if(open&&settings.get("arrowKey")&&$related[1]&&!e.altKey)if(key===37){e.preventDefault();$prev.click()}else if(key=== 39){e.preventDefault();$next.click()}if(open&&settings.get("trapFocus")&&key===9)if(focusableEls($box).length===1)e.preventDefault();else if(e.shiftKey){if(document.activeElement===firstFocusableEl($box)[0]){e.preventDefault();lastFocusableEl($box).focus()}}else if(document.activeElement===lastFocusableEl($box)[0]){e.preventDefault();firstFocusableEl($box).focus()}});if($.isFunction($.fn.on))$(document).on("click."+prefix+" rl_modals_touchstart."+prefix,"."+boxElement,clickHandler);else $("."+boxElement).live("click."+ prefix+" rl_modals_touchstart."+prefix,clickHandler)}return true}return false}if($[colorbox])return;$(appendHTML);publicMethod=$.fn[colorbox]=$[colorbox]=function(options,callback){var settings;var $obj=this;options=options||{};if($.isFunction($obj)){$obj=$("");options.open=true}if(!$obj[0])return $obj;appendHTML();if(addBindings()){if(callback)options.onComplete=callback;$obj.each(function(){var old=$.data(this,colorbox)||{};$.data(this,colorbox,$.extend(old,options))}).addClass(boxElement); settings=new Settings($obj[0],options);if(settings.get("open"))launch($obj[0])}return $obj};publicMethod.position=function(speed,loadedCallback){var css,top=0,left=0,offset=$box.offset(),scrollTop,scrollLeft,paddingWidth,paddingHeight;$window.unbind("resize."+prefix);$box.css({top:-9E4,left:-9E4});scrollTop=$window.scrollTop();scrollLeft=$window.scrollLeft();paddingWidth=parseInt($loaded.css("padding-left"))+parseInt($loaded.css("padding-right"));paddingHeight=parseInt($loaded.css("padding-top"))+ parseInt($loaded.css("padding-bottom"));if(settings.get("fixed")){offset.top-=scrollTop;offset.left-=scrollLeft;$box.css({position:"fixed"})}else{top=scrollTop;left=scrollLeft;$box.css({position:"absolute"})}if(settings.get("right")!==false)left+=Math.max($window.width()-settings.w-paddingWidth-interfaceWidth-setSize(settings.get("right"),"x"),0);else if(settings.get("left")!==false)left+=setSize(settings.get("left"),"x");else left+=Math.round(Math.max($window.width()-settings.w-paddingWidth-interfaceWidth, 0)/2);if(settings.get("bottom")!==false)top+=Math.max(winheight()-settings.h-loadedHeight-interfaceHeight-setSize(settings.get("bottom"),"y"),0);else if(settings.get("top")!==false)top+=setSize(settings.get("top"),"y");else top+=Math.round(Math.max(winheight()-settings.h-loadedHeight-interfaceHeight,0)/2);$box.css({top:offset.top,left:offset.left,visibility:"visible"}).attr("aria-hidden","false");$wrap[0].style.width=$wrap[0].style.height="9999px";function modalDimensions(){$topBorder[0].style.width= $bottomBorder[0].style.width=$content[0].style.width=parseInt($box[0].style.width,10)-interfaceWidth+"px";$content[0].style.height=$leftBorder[0].style.height=$rightBorder[0].style.height=parseInt($box[0].style.height,10)-interfaceHeight+"px"}css={width:settings.w+paddingWidth+interfaceWidth,height:settings.h+loadedHeight+interfaceHeight,top:top,left:left};if(speed){var tempSpeed=0;$.each(css,function(i){if(css[i]!==previousCSS[i]){tempSpeed=speed;return}});speed=tempSpeed}previousCSS=css;if(!speed)$box.css(css); $box.dequeue().animate(css,{duration:speed||0,complete:function(){modalDimensions();active=false;$wrap[0].style.width=settings.w+paddingWidth+interfaceWidth+"px";$wrap[0].style.height=settings.h+loadedHeight+interfaceHeight+"px";if(settings.get("reposition"))$window.bind("resize."+prefix,publicMethod.position);if($.isFunction(loadedCallback))loadedCallback()},step:modalDimensions})};publicMethod.resize=function(options){var scrolltop;if(!open)return;options=options||{};if(options.width)settings.w= setSize(options.width,"x")-loadedWidth-interfaceWidth;if(options.innerWidth)settings.w=setSize(options.innerWidth,"x");$loaded.css({width:settings.w});if(options.height)settings.h=setSize(options.height,"y")-loadedHeight-interfaceHeight;if(options.innerHeight)settings.h=setSize(options.innerHeight,"y");if(!options.innerHeight&&!options.height){scrolltop=$loaded.scrollTop();$loaded.css({height:"auto"});settings.h=$loaded.height()}$loaded.css({height:settings.h});if(scrolltop)$loaded.scrollTop(scrolltop); var transition=options.transition!==undefined?options.transition:settings.get("transition");var speed=options.speed!==undefined?options.speed:settings.get("speed");publicMethod.position(transition==="none"?0:speed)};publicMethod.prep=function(object){if(!open)return;var callback,speed=settings.get("transition")==="none"?0:settings.get("speed");$loaded.remove();$loaded=$tag(div,"loaded_content").append(object);function getWidth(){settings.w=settings.w||$loaded.width();settings.w=settings.mw&&settings.mw< settings.w?settings.mw:settings.w;return settings.w}function getHeight(){settings.h=settings.h||$loaded.height();settings.h=settings.mh&&settings.mh1){if(typeof settings.get("current")==="string")$current.html(settings.get("current").replace("{current}",index+1).replace("{total}",total)).attr("aria-live","polite").show();$showNext=settings.get("loop")||index").hide().insertBefore($target);$events.one(event_purge,function(){$inline.replaceWith($target)});prep($target)}else if(settings.get("iframe"))prep(" ");else if(settings.get("html"))prep(settings.get("html"));else if(isImage(settings,href)){href=retinaUrl(settings,href);photo=settings.get("createImg");$(photo).addClass($prefix("photo")).bind("error."+ prefix,function(){prep($tag(div,"error").html(settings.get("imgError")))}).one("load",function(){if(request!==requests)return;setTimeout(function(){var percent;if(settings.get("retinaImage")&&window.devicePixelRatio>1){photo.height=photo.height/window.devicePixelRatio;photo.width=photo.width/window.devicePixelRatio}if(settings.get("scalePhotos")){setResize=function(){photo.height-=photo.height*percent;photo.width-=photo.width*percent};if(settings.mw&&photo.width>settings.mw){percent=(photo.width- settings.mw)/photo.width;setResize()}if(settings.mh&&photo.height>settings.mh){percent=(photo.height-settings.mh)/photo.height;setResize()}}if(settings.h)photo.style.marginTop=Math.max(settings.mh-photo.height,0)/2+"px";if($related[1]&&(settings.get("loop")||$related[index+1])){photo.style.cursor="pointer";$(photo).bind("click."+prefix+" rl_modals_touchstart."+prefix,function(){publicMethod.next()})}photo.style.width=photo.width+"px";photo.style.height=photo.height+"px";prep(photo)},1)});photo.src= href}else if(href)$loadingBay.load(href,settings.get("data"),function(data,status){if(request===requests)prep(status==="error"?$tag(div,"error").html(settings.get("xhrError")):$(this).contents())})}publicMethod.next=function(){if(!active&&$related[1]&&(settings.get("loop")||$related[index+1])){index=getIndex(1);launch($related[index])}};publicMethod.prev=function(){if(!active&&$related[1]&&(settings.get("loop")||index)){index=getIndex(-1);launch($related[index])}};publicMethod.close=function(){if(open&& !closing){closing=true;open=false;trigger(event_cleanup);settings.get("onCleanup");$window.unbind("."+prefix);$overlay.fadeTo(settings.get("fadeOut")||0,0);$box.stop().fadeTo(settings.get("fadeOut")||0,0,function(){$box.hide().attr("aria-hidden","true");$overlay.hide();trigger(event_purge);$loaded.remove();setTimeout(function(){closing=false;trigger(event_closed);settings.get("onClosed")},1)})}};publicMethod.remove=function(){if(!$box)return;$box.stop();$[colorbox].close();$box.stop(false,true).remove(); $overlay.remove();closing=false;$box=null;$("."+boxElement).removeData(colorbox).removeClass(boxElement);$(document).unbind("click."+prefix+" rl_modals_touchstart."+prefix).unbind("keydown."+prefix)};publicMethod.element=function(){return $(settings.el)};publicMethod.settings=defaults;$.event.special.rl_modals_touchstart={setup:function(data,namespaces,eventHandle){this.addEventListener("touchstart",eventHandle,{passive:false})}}})(jQuery,document,window);