1Drupal.locale = { 'pluralFormula': function ($n) { return Number(($n!=1)); }, 'strings': {"":{"An AJAX HTTP error occurred.":"Si \u00e8 verificato un errore HTTP in AJAX.","HTTP Result Code: !status":"Codice HTTP di risposta: !status","An AJAX HTTP request terminated abnormally.":"Una richiesta AJAX HTTP \u00e8 terminata in modo anomalo.","Debugging information follows.":"Di seguito le informazioni di debug.","Path: !uri":"Percorso: !uri","StatusText: !statusText":"StatusText: !statusText","ResponseText: !responseText":"ResponseText: !responseText","ReadyState: !readyState":"ReadyState: !readyState","CustomMessage: !customMessage":"Messaggio personalizzato: !customMessage","Next":"Seguente","Disabled":"Disattivato","Enabled":"Attivato","Edit":"Modifica","Sunday":"Domenica","Monday":"Luned\u00ec","Tuesday":"Marted\u00ec","Wednesday":"Mercoled\u00ec","Thursday":"Gioved\u00ec","Friday":"Venerd\u00ec","Saturday":"Sabato","Add":"Aggiungi","View":"Visualizza","Upload":"Carica","Configure":"Configura","All":"Tutti","Done":"Fatto","This field is required.":"Questo campo \u00e8 obbligatorio.","Prev":"Precedente","Mon":"Lun","Tue":"Mar","Wed":"Mer","Thu":"Gio","Fri":"Ven","Sat":"Sab","Sun":"Dom","January":"Gennaio","February":"Febbraio","March":"Marzo","April":"Aprile","May":"Mag","June":"Giugno","July":"Luglio","August":"Agosto","September":"Settembre","October":"Ottobre","November":"Novembre","December":"Dicembre","Show":"Mostra","Select all rows in this table":"Seleziona tutte le righe in questa tabella","Deselect all rows in this table":"Deseleziona tutte le righe in questa tabella","Today":"Oggi","Jan":"Gen","Feb":"Feb","Mar":"Mar","Apr":"Apr","Jun":"Giu","Jul":"Lug","Aug":"Ago","Sep":"Set","Oct":"Ott","Nov":"Nov","Dec":"Dic","Su":"Do","Mo":"Lu","Tu":"Ma","We":"Me","Th":"Gi","Fr":"Ve","Sa":"Sa","Not published":"Non pubblicato","Please wait...":"Attendere prego...","Hide":"Nascondi","Loading":"Caricamento","mm\/dd\/yy":"mm\/gg\/aa","Only files with the following extensions are allowed: %files-allowed.":"Sono consentiti solo i file con le seguenti estensioni: %files-allowed.","By @name on @date":"Da @name il @date","By @name":"Da @name","Not in menu":"Non nel menu","Alias: @alias":"Alias: @alias","No alias":"Nessun alias","New revision":"Nuova revisione","Drag to re-order":"Trascina per riordinare","Changes made in this table will not be saved until the form is submitted.":"I cambiamenti fatti a questa tabella non saranno salvati finch\u00e8 il form non viene inviato.","The changes to these blocks will not be saved until the \u003Cem\u003ESave blocks\u003C\/em\u003E button is clicked.":"I cambiamenti a questi blocchi non saranno salvati finch\u00e9 il bottone \u003Cem\u003ESalva blocchi\u003C\/em\u003E \u00e8 cliccato.","Flag translations as outdated":"Segna traduzioni come obsolete","Show shortcuts":"Mostra scorciatoie","This permission is inherited from the authenticated user role.":"Questo permesso viene ereditato dal ruolo utente autenticato.","No revision":"Nessuna revisione","@number comments per page":"@number commenti per pagina","Requires a title":"Richiede un titolo","Not restricted":"Non limitato","(active tab)":"(scheda attiva)","Not customizable":"Non personalizzabile","Restricted to certain pages":"Limitato a certe pagine","The block cannot be placed in this region.":"Il blocco non pu\u00f2 essere posizionato in questa regione.","Customize dashboard":"Personalizza la dashboard","Hide summary":"Nascondi sommario","Edit summary":"Modifica sommario","Don\u0027t display post information":"Non mostrare le informazioni di pubblicazione","@title dialog":"Finestra di dialogo @title","The selected file %filename cannot be uploaded. Only files with the following extensions are allowed: %extensions.":"Il file selezionato %filename non pu\u00f2 essere caricato. Sono consentiti solo file con le seguenti estensioni: %extensions.","Re-order rows by numerical weight instead of dragging.":"Riordina le righe utilizzando il peso numerico invece del trascinamento.","Show row weights":"Visualizza i pesi delle righe","Hide row weights":"Nascondi i pesi delle righe","Autocomplete popup":"Popup di autocompletamento","Searching for matches...":"Ricerca in corso...","Hide shortcuts":"Nascondi scorciatoie","The response failed verification so will not be processed.":"La risposta non ha superato la verifica, quindi non verr\u00e0 elaborata.","The callback URL is not local and n
vendor: 18,605 bytes, lines 1-9
1ot trusted: !url":"L\u0027URL di callback non \u00e8 locale o non \u00e8 affidabile: !url","No results":"Nessun risultato","Read more":"Leggi tutto","The content of this section has been blocked for compliance with EU cookie regulation.":"Il contenuto di questa sezione \u00e8 stato bloccato per conformit\u00e0 con la normativa UE sui cookie.","To view the frame you need accept youtube cookies":"Per visualizzare il frame \u00e8 necessario accettare i cookie di youtube","To view the Video content you must accept YouTube cookies by clicking on the Privacy banner at the bottom of the page.":"Per visualizzare i contenuti video \u00e8 necessario accettare i cookie di YouTube cliccando sul banner Privacy in fondo pagina","To view this content you must accept the cookies. Click here or on the Cookie Preferences banner at the bottom and accept the video\/social cookies.":"Per visualizzare questo contenuto \u00e8 necessario accettare i cookie. Clicca qui o sul banner in fondo Preferenze Cookie e accetta i cookie video\/social."}} };; 2/*! 3 Colorbox 1.6.4 4 license: MIT 5 http://www.jacklmoore.com/colorbox 6*/ 7(function(t,e,i){function n(i,n,o){var r=e.createElement(i);return n&&(r.id=Z+n),o&&(r.style.cssText=o),t(r)}function o(){return i.innerHeight?i.innerHeight:t(i).height()}function r(e,i){i!==Object(i)&&(i={}),this.cache={},this.el=e,this.value=function(e){var n;return void 0===this.cache[e]&&(n=t(this.el).attr("data-cbox-"+e),void 0!==n?this.cache[e]=n:void 0!==i[e]?this.cache[e]=i[e]:void 0!==X[e]&&(this.cache[e]=X[e])),this.cache[e]},this.get=function(e){var i=this.value(e);return t.isFunction(i)?i.call(this.el,this):i}}function h(t){var e=W.length,i=(A+t)%e;return 0>i?e+i:i}function a(t,e){return Math.round((/%/.test(t)?("x"===e?E.width():o())/100:1)*parseInt(t,10))}function s(t,e){return t.get("photo")||t.get("photoRegex").test(e)}function l(t,e){return t.get("retinaUrl")&&i.devicePixelRatio>1?e.replace(t.get("photoRegex"),t.get("retinaSuffix")):e}function d(t){"contains"in x[0]&&!x[0].contains(t.target)&&t.target!==v[0]&&(t.stopPropagation(),x.focus())}function c(t){c.str!==t&&(x.add(v).removeClass(c.str).addClass(t),c.str=t)}function g(e){A=0,e&&e!==!1&&"nofollow"!==e?(W=t("."+te).filter(function(){var i=t.data(this,Y),n=new r(this,i);return n.get("rel")===e}),A=W.index(_.el),-1===A&&(W=W.add(_.el),A=W.length-1)):W=t(_.el)}function u(i){t(e).trigger(i),ae.triggerHandler(i)}function f(i){var o;if(!G){if(o=t(i).data(Y),_=new r(i,o),g(_.get("rel")),!U){U=$=!0,c(_.get("className")),x.css({visibility:"hidden",display:"block",opacity:""}),I=n(se,"LoadedContent","width:0; height:0; overflow:hidden; visibility:hidden"),b.css({width:"",height:""}).append(I),j=T.height()+k.height()+b.outerHeight(!0)-b.height(),D=C.width()+H.width()+b.outerWidth(!0)-b.width(),N=I.outerHeight(!0),z=I.outerWidth(!0);var h=a(_.get("initialWidth"),"x"),s=a(_.get("initialHeight"),"y"),l=_.get("maxWidth"),f=_.get("maxHeight");_.w=Math.max((l!==!1?Math.min(h,a(l,"x")):h)-z-D,0),_.h=Math.max((f!==!1?Math.min(s,a(f,"y")):s)-N-j,0),I.css({width:"",height:_.h}),J.position(),u(ee),_.get("onOpen"),O.add(F).hide(),x.focus(),_.get("trapFocus")&&e.addEventListener&&(e.addEventListener("focus",d,!0),ae.one(re,function(){e.removeEventListener("focus",d,!0)})),_.get("returnFocus")&&ae.one(re,function(){t(_.el).focus()})}var p=parseFloat(_.get("opacity"));v.css({opacity:p===p?p:"",cursor:_.get("overlayClose")?"pointer":"",visibility:"visible"}).show(),_.get("closeButton")?B.html(_.get("close")).appendTo(b):B.appendTo("<div/>"),w()}}function p(){x||(V=!1,E=t(i),x=n(se).attr({id:Y,"class":t.support.opacity===!1?Z+"IE":"",role:"dialog",tabindex:"-1"}).hide(),v=n(se,"Overlay").hide(),L=t([n(se,"LoadingOverlay")[0],n(se,"LoadingGraphic")[0]]),y=n(se,"Wrapper"),b=n(se,"Content").append(F=n(se,"Title"),R=n(se,"Current"),P=t('<button type="button"/>').attr({id:Z+"Previous"}),K=t('<button type="button"/>').attr({id:Z+"Next"}),S=t('<button type="button"/>').attr({id:Z+"Slideshow"}),L),B=t('<button type="button"/>').attr({id:Z+"Close"}),y.append(n(se).append(n(se,"TopLeft"),T=n(se,"TopCenter"),n(se,"TopRight")),n(se,!1,"clear:left").append(C=n(se,"MiddleLeft"),b,H=n(se,"MiddleRight")),n(se,!1,"clear:left").append(n(se,"BottomLeft"),k=n(se,"BottomCenter"),n(se,"BottomRight"))).find("div div").css({"float":"left"}),M=n(se,!1,"position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;"),O=K.add(P).add(R).add(S)),e.body&&!x.parent().length&&t(e.body).append(v,x.append(y,M))}function m(){function i(t){t.which>1||t.shiftKey||t.altKey||t.metaKey||t.ctrlKey||(t.preventDefault(),f(this))}return x?(V||(V=!0,K.click(function(){J.next()}),P.click(function(){J.prev()}),B.click(function(){J.close()}),v.click(function(){_.get("overlayClose")&&J.close()}),t(e).bind("keydown."+Z,function(t){var e=t.keyCode;U&&_.get("escKey")&&27===e&&(t.preventDefault(),J.close()),U&&_.get("arrowKey")&&W[1]&&!t.altKey&&(37===e?(t.preventDefault(),P.click()):39===e&&(t.preventDefault(),K.click()))}),t.isFunction(t.fn.on)?t(e).on("click."+Z,"."+te,i):t("."+te).live("click."+Z,i)),!0):!1}function w(){var e,o,r,h=J.prep,d=++le;if($=!0,q=!1,u(he),u(ie),_.get("onLoad"),_.h=_.get("height")?a(_.get("height"),"y")-N-j:_.get("innerHeight")&&a(_.get("innerHeight"),"y"),_.w=_.get("width")?a(_.get("width"),"x")-z-D:_.get("innerWidth")&&a(_.get("innerWidth"),"x"),_.mw=_.w,_.mh=_.h,_.get("maxWidth")&&(_.mw=a(_.get("maxWidth"),"x")-z-D,_.mw=_.w&&_.w<_.mw?_.w:_.mw),_.get("maxHeight")&&(_.mh=a(_.get("maxHeight"),"y")-N-j,_.mh=_.h&&_.h<_.mh?_.h:_.mh),e=_.get("href"),Q=setTimeout(function(){L.show()},100),_.get("inline")){var c=t(e).eq(0);r=t("<div>").hide().insertBefore(c),ae.one(he,function(){r.replaceWith(c)}),h(c)}else _.get("iframe")?h(" "):_.get("html")?h(_.get("html")):s(_,e)?(e=l(_,e),q=_.get("createImg"),t(q).addClass(Z+"Photo").bind("error."+Z,function(){h(n(se,"Error").html(_.get("imgError")))}).one("load",function(){d===le&&setTimeout(function(){var e;_.get("retinaImage")&&i.devicePixelRatio>1&&(q.height=q.height/i.devicePixelRatio,q.width=q.width/i.devicePixelRatio),_.get("scalePhotos")&&(o=function(){q.height-=q.height*e,q.width-=q.width*e},_.mw&&q.width>_.mw&&(e=(q.width-_.mw)/q.width,o()),_.mh&&q.height>_.mh&&(e=(q.height-_.mh)/q.height,o())),_.h&&(q.style.marginTop=Math.max(_.mh-q.height,0)/2+"px"),W[1]&&(_.get("loop")||W[A+1])&&(q.style.cursor="pointer",t(q).bind("click."+Z,function(){J.next()})),q.style.width=q.width+"px",q.style.height=q.height+"px",h(q)},1)}),q.src=e):e&&M.load(e,_.get("data"),function(e,i){d===le&&h("error"===i?n(se,"Error").html(_.get("xhrError")):t(this).contents())})}var v,x,y,b,T,C,H,k,W,E,I,M,L,F,R,S,K,P,B,O,_,j,D,N,z,A,q,U,$,G,Q,J,V,X={html:!1,photo:!1,iframe:!1,inline:!1,transition:"elastic",speed:300,fadeOut:300,width:!1,initialWidth:"600",innerWidth:!1,maxWidth:!1,height:!1,initialHeight:"450",innerHeight:!1,maxHeight:!1,scalePhotos:!0,scrolling:!0,opacity:.9,preloading:!0,className:!1,overlayClose:!0,escKey:!0,arrowKey:!0,top:!1,bottom:!1,left:!1,right:!1,fixed:!1,data:void 0,closeButton:!0,fastIframe:!0,open:!1,reposition:!0,loop:!0,slideshow:!1,slideshowAuto:!0,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",photoRegex:/\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\?).*)?$/i,retinaImage:!1,retinaUrl:!1,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:!0,trapFocus:!0,onOpen:!1,onLoad:!1,onComplete:!1,onCleanup:!1,onClosed:!1,rel:function(){return this.rel},href:function(){return t(this).attr("href")},title:function(){return this.title},createImg:function(){var e=new Image,i=t(this).data("cbox-img-attrs");return"object"==typeof i&&t.each(i,function(t,i){e[t]=i}),e},createIframe:function(){var i=e.createElement("iframe"),n=t(this).data("cbox-iframe-attrs");return"object"==typeof n&&t.each(n,function(t,e){i[t]=e}),"frameBorder"in i&&(i.frameBorder=0),"allowTransparency"in i&&(i.allowTransparency="true"),i.name=(new Date).getTime(),i.allowFullscreen=!0,i}},Y="colorbox",Z="cbox",te=Z+"Element",ee=Z+"_open",ie=Z+"_load",ne=Z+"_complete",oe=Z+"_cleanup",re=Z+"_closed",he=Z+"_purge",ae=t("<a/>"),se="div",le=0,de={},ce=function(){function t(){clearTimeout(h)}function e(){(_.get("loop")||W[A+1])&&(t(),h=setTimeout(J.next,_.get("slideshowSpeed")))}function i(){S.html(_.get("slideshowStop")).unbind(s).one(s,n),ae.bind(ne,e).bind(ie,t),x.removeClass(a+"off").addClass(a+"on")}function n(){t(),ae.unbind(ne,e).unbind(ie,t),S.html(_.get("slideshowStart")).unbind(s).one(s,function(){J.next(),i()}),x.removeClass(a+"on").addClass(a+"off")}function o(){r=!1,S.hide(),t(),ae.unbind(ne,e).unbind(ie,t),x.removeClass(a+"off "+a+"on")}var r,h,a=Z+"Slideshow_",s="click."+Z;return function(){r?_.get("slideshow")||(ae.unbind(oe,o),o()):_.get("slideshow")&&W[1]&&(r=!0,ae.one(oe,o),_.get("slideshowAuto")?i():n(),S.show())}}();t[Y]||(t(p),J=t.fn[Y]=t[Y]=function(e,i){var n,o=this;return e=e||{},t.isFunction(o)&&(o=t("<a/>"),e.open=!0),o[0]?(p(),m()&&(i&&(e.onComplete=i),o.each(function(){var i=t.data(this,Y)||{};t.data(this,Y,t.extend(i,e))}).addClass(te),n=new r(o[0],e),n.get("open")&&f(o[0])),o):o},J.position=function(e,i){function n(){T[0].style.width=k[0].style.width=b[0].style.width=parseInt(x[0].style.width,10)-D+"px",b[0].style.height=C[0].style.height=H[0].style.height=parseInt(x[0].style.height,10)-j+"px"}var r,h,s,l=0,d=0,c=x.offset();if(E.unbind("resize."+Z),x.css({top:-9e4,left:-9e4}),h=E.scrollTop(),s=E.scrollLeft(),_.get("fixed")?(c.top-=h,c.left-=s,x.css({position:"fixed"})):(l=h,d=s,x.css({position:"absolute"})),d+=_.get("right")!==!1?Math.max(E.width()-_.w-z-D-a(_.get("right"),"x"),0):_.get("left")!==!1?a(_.get("left"),"x"):Math.round(Math.max(E.width()-_.w-z-D,0)/2),l+=_.get("bottom")!==!1?Math.max(o()-_.h-N-j-a(_.get("bottom"),"y"),0):_.get("top")!==!1?a(_.get("top"),"y"):Math.round(Math.max(o()-_.h-N-j,0)/2),x.css({top:c.top,left:c.left,visibility:"visible"}),y[0].style.width=y[0].style.height="9999px",r={width:_.w+z+D,height:_.h+N+j,top:l,left:d},e){var g=0;t.each(r,function(t){return r[t]!==de[t]?(g=e,void 0):void 0}),e=g}de=r,e||x.css(r),x.dequeue().animate(r,{duration:e||0,complete:function(){n(),$=!1,y[0].style.width=_.w+z+D+"px",y[0].style.height=_.h+N+j+"px",_.get("reposition")&&setTimeout(function(){E.bind("resize."+Z,J.position)},1),t.isFunction(i)&&i()},step:n})},J.resize=function(t){var e;U&&(t=t||{},t.width&&(_.w=a(t.width,"x")-z-D),t.innerWidth&&(_.w=a(t.innerWidth,"x")),I.css({width:_.w}),t.height&&(_.h=a(t.height,"y")-N-j),t.innerHeight&&(_.h=a(t.innerHeight,"y")),t.innerHeight||t.height||(e=I.scrollTop(),I.css({height:"auto"}),_.h=I.height()),I.css({height:_.h}),e&&I.scrollTop(e),J.position("none"===_.get("transition")?0:_.get("speed")))},J.prep=function(i){function o(){return _.w=_.w||I.width(),_.w=_.mw&&_.mw<_.w?_.mw:_.w,_.w}function a(){return _.h=_.h||I.height(),_.h=_.mh&&_.mh<_.h?_.mh:_.h,_.h}if(U){var d,g="none"===_.get("transition")?0:_.get("speed");I.remove(),I=n(se,"LoadedContent").append(i),I.hide().appendTo(M.show()).css({width:o(),overflow:_.get("scrolling")?"auto":"hidden"}).css({height:a()}).prependTo(b),M.hide(),t(q).css({"float":"none"}),c(_.get("className")),d=function(){function i(){t.support.opacity===!1&&x[0].style.removeAttribute("filter")}var n,o,a=W.length;U&&(o=function(){clearTimeout(Q),L.hide(),u(ne),_.get("onComplete")},F.html(_.get("title")).show(),I.show(),a>1?("string"==typeof _.get("current")&&R.html(_.get("current").replace("{current}",A+1).replace("{total}",a)).show(),K[_.get("loop")||a-1>A?"show":"hide"]().html(_.get("next")),P[_.get("loop")||A?"show":"hide"]().html(_.get("previous")),ce(),_.get("preloading")&&t.each([h(-1),h(1)],function(){var i,n=W[this],o=new r(n,t.data(n,Y)),h=o.get("href");h&&s(o,h)&&(h=l(o,h),i=e.createElement("img"),i.src=h)})):O.hide(),_.get("iframe")?(n=_.get("createIframe"),_.get("scrolling")||(n.scrolling="no"),t(n).attr({src:_.get("href"),"class":Z+"Iframe"}).one("load",o).appendTo(I),ae.one(he,function(){n.src="//about:blank"}),_.get("fastIframe")&&t(n).trigger("load")):o(),"fade"===_.get("transition")?x.fadeTo(g,1,i):i())},"fade"===_.get("transition")?x.fadeTo(g,0,function(){J.position(0,d)}):J.position(g,d)}},J.next=function(){!$&&W[1]&&(_.get("loop")||W[A+1])&&(A=h(1),f(W[A]))},J.prev=function(){!$&&W[1]&&(_.get("loop")||A)&&(A=h(-1),f(W[A]))},J.close=function(){U&&!G&&(G=!0,U=!1,u(oe),_.get("onCleanup"),E.unbind("."+Z),v.fadeTo(_.get("fadeOut")||0,0),x.stop().fadeTo(_.get("fadeOut")||0,0,function(){x.hide(),v.hide(),u(he),I.remove(),setTimeout(function(){G=!1,u(re),_.get("onClosed")},1)}))},J.remove=function(){x&&(x.stop(),t[Y].close(),x.stop(!1,!0).remove(),v.remove(),G=!1,x=null,t("."+te).removeData(Y).removeClass(te),t(e).unbind("click."+Z).unbind("keydown."+Z))},J.element=function(){return t(_.el)},J.settings=X)})(jQuery,document,window);; 8/*! @license DOMPurify 3.3.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.3/LICENSE */ 9!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).DOMPurify=t()}(this,(function(){"use strict";const{entries:e,setPrototypeOf:t,isFrozen:n,getPrototypeOf:o,getOwnPropertyDescriptor:r}=Object;let{freeze:i,seal:a,create:l}=Object,{apply:c,construct:s}="undefined"!=typeof Reflect&&Reflect;i||(i=function(e){return e}),a||(a=function(e){return e}),c||(c=function(e,t){for(var n=arguments.length,o=new Array(n>2?n-2:0),r=2;r<n;r++)o[r-2]=arguments[r];return e.apply(t,o)}),s||(s=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];return new e(...n)});const u=D(Array.prototype.forEach),m=D(Array.prototype.lastIndexOf),p=D(Array.prototype.pop),f=D(Array.prototype.push),d=D(Array.prototype.splice),h=D(String.prototype.toLowerCase),g=D(String.prototype.toString),T=D(String.prototype.match),y=D(String.prototype.replace),E=D(String.prototype.indexOf),A=D(String.prototype.trim),_=D(Object.prototype.hasOwnProperty),b=D(RegExp.prototype.test),S=(N=TypeError,function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return s(N,t)});var N;function D(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,o=new Array(n>1?n-1:0),r=1;r<n;r++)o[r-1]=arguments[r];return c(e,t,o)}}function R(e,o){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:h;t&&t(e,null);let i=o.length;for(;i--;){let t=o[i];if("string"==typeof t){const e=r(t);e!==t&&(n(o)||(o[i]=e),t=e)}e[t]=!0}return e}function w(e){for(let t=0;t<e.length;t++){_(e,t)||(e[t]=null)}return e}function C(t){const n=l(null);for(const[o,r]of e(t)){_(t,o)&&(Array.isArray(r)?n[o]=w(r):r&&"object"==typeof r&&r.constructor===Object?n[o]=C(r):n[o]=r)}return n}function O(e,t){for(;null!==e;){const n=r(e,t);if(n){if(n.get)return D(n.get);if("function"==typeof n.value)return D(n.value)}e=o(e)}return function(){return null}}const v=i(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),k=i(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),x=i(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),L=i(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),I=i(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),M=i(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),U=i(["#text"]),z=i(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","
9spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),P=i(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),F=i(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),H=i(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),B=a(/\{\{[\w\W]*|[\w\W]*\}\}/gm),G=a(/<%[\w\W]*|[\w\W]*%>/gm),W=a(/\$\{[\w\W]*/gm),Y=a(/^data-[\-\w.\u00B7-\uFFFF]+$/),j=a(/^aria-[\-\w]+$/),X=a(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),q=a(/^(?:\w+script|data):/i),$=a(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),K=a(/^html$/i),V=a(/^[a-z][.\w]*(-[.\w]+)+$/i);var Z=Object.freeze({__proto__:null,ARIA_ATTR:j,ATTR_WHITESPACE:$,CUSTOM_ELEMENT:V,DATA_ATTR:Y,DOCTYPE_NAME:K,ERB_EXPR:G,IS_ALLOWED_URI:X,IS_SCRIPT_OR_DATA:q,MUSTACHE_EXPR:B,TMPLIT_EXPR:W});const J=1,Q=3,ee=7,te=8,ne=9,oe=function(){return"undefined"==typeof window?null:window};var re=function t(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:oe();const o=e=>t(e);if(o.version="3.3.3",o.removed=[],!n||!n.document||n.document.nodeType!==ne||!n.Element)return o.isSupported=!1,o;let{document:r}=n;const a=r,c=a.currentScript,{DocumentFragment:s,HTMLTemplateElement:N,Node:D,Element:w,NodeFilter:B,NamedNodeMap:G=n.NamedNodeMap||n.MozNamedAttrMap,HTMLFormElement:W,DOMParser:Y,trustedTypes:j}=n,q=w.prototype,$=O(q,"cloneNode"),V=O(q,"remove"),re=O(q,"nextSibling"),ie=O(q,"childNodes"),ae=O(q,"parentNode");if("function"==typeof N){const e=r.createElement("template");e.content&&e.content.ownerDocument&&(r=e.content.ownerDocument)}let le,ce="";const{implementation:se,createNodeIterator:ue,createDocumentFragment:me,getElementsByTagName:pe}=r,{importNode:fe}=a;let de={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};o.isSupported="function"==typeof e&&"function"==typeof ae&&se&&void 0!==se.createHTMLDocument;const{MUSTACHE_EXPR:he,ERB_EXPR:ge,TMPLIT_EXPR:Te,DATA_ATTR:ye,ARIA_ATTR:Ee,IS_SCRIPT_OR_DATA:Ae,ATTR_WHITESPACE:_e,CUSTOM_ELEMENT:be}=Z;let{IS_ALLOWED_URI:Se}=Z,Ne=null;const De=R({},[...v,...k,...x,...I,...U]);let Re=null;const we=R({},[...z,...P,...F,...H]);let Ce=Object.seal(l(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Oe=null,ve=null;
vendor: 4,218 bytes, line 9
9const ke=Object.seal(l(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let xe=!0,Le=!0,Ie=!1,Me=!0,Ue=!1,ze=!0,Pe=!1,Fe=!1,He=!1,Be=!1,Ge=!1,We=!1,Ye=!0,je=!1,Xe=!0,qe=!1,$e={},Ke=null;const Ve=R({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Ze=null;const Je=R({},["audio","video","img","source","image","track"]);let Qe=null;const et=R({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),tt="http://www.w3.org/1998/Math/MathML",nt="http://www.w3.org/2000/svg",ot="http://www.w3.org/1999/xhtml";let rt=ot,it=!1,at=null;const lt=R({},[tt,nt,ot],g);let ct=R({},["mi","mo","mn","ms","mtext"]),st=R({},["annotation-xml"]);const ut=R({},["title","style","font","a","script"]);let mt=null;const pt=["application/xhtml+xml","text/html"];let ft=null,dt=null;const ht=r.createElement("form"),gt=function(e){return e instanceof RegExp||e instanceof Function},Tt=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!dt||dt!==e){if(e&&"object"==typeof e||(e={}),e=C(e),mt=-1===pt.indexOf(e.PARSER_MEDIA_TYPE)?"text/html":e.PARSER_MEDIA_TYPE,ft="application/xhtml+xml"===mt?g:h,Ne=_(e,"ALLOWED_TAGS")?R({},e.ALLOWED_TAGS,ft):De,Re=_(e,"ALLOWED_ATTR")?R({},e.ALLOWED_ATTR,ft):we,at=_(e,"ALLOWED_NAMESPACES")?R({},e.ALLOWED_NAMESPACES,g):lt,Qe=_(e,"ADD_URI_SAFE_ATTR")?R(C(et),e.ADD_URI_SAFE_ATTR,ft):et,Ze=_(e,"ADD_DATA_URI_TAGS")?R(C(Je),e.ADD_DATA_URI_TAGS,ft):Je,Ke=_(e,"FORBID_CONTENTS")?R({},e.FORBID_CONTENTS,ft):Ve,Oe=_(e,"FORBID_TAGS")?R({},e.FORBID_TAGS,ft):C({}),ve=_(e,"FORBID_ATTR")?R({},e.FORBID_ATTR,ft):C({}),$e=!!_(e,"USE_PROFILES")&&e.USE_PROFILES,xe=!1!==e.ALLOW_ARIA_ATTR,Le=!1!==e.ALLOW_DATA_ATTR,Ie=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Me=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,Ue=e.SAFE_FOR_TEMPLATES||!1,ze=!1!==e.SAFE_FOR_XML,Pe=e.WHOLE_DOCUMENT||!1,Be=e.RETURN_DOM||!1,Ge=e.RETURN_DOM_FRAGMENT||!1,We=e.RETURN_TRUSTED_TYPE||!1,He=e.FORCE_BODY||!1,Ye=!1!==e.SANITIZE_DOM,je=e.SANITIZE_NAMED_PROPS||!1,Xe=!1!==e.KEEP_CONTENT,qe=e.IN_PLACE||!1,Se=e.ALLOWED_URI_REGEXP||X,rt=e.NAMESPACE||ot,ct=e.MATHML_TEXT_INTEGRATION_POINTS||ct,st=e.HTML_INTEGRATION_POINTS||st,Ce=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&>(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Ce.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&>(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Ce.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Ce.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Ue&&(Le=!1),Ge&&(Be=!0),$e&&(Ne=R({},U),Re=l(null),!0===$e.html&&(R(Ne,v),R(Re,z)),!0===$e.svg&&(R(Ne,k),R(Re,P),R(Re,H)),!0===$e.svgFilters&&(R(Ne,x),R(Re,P),R(Re,H)),!0===$e.mathMl&&(R(Ne,I),R(Re,F),R(Re,H))),_(e,"ADD_TAGS")||(ke.tagCheck=null),_(e,"ADD_ATTR")||(ke.attributeCheck=null),e.ADD_TAGS&&("function"==typeof e.ADD_TAGS?ke.tagCheck=e.ADD_TAGS:(Ne===De&&(Ne=C(Ne)),R(Ne,e.ADD_TAGS,ft))),e.ADD_ATTR&&("function"==typeof e.ADD_ATTR?ke.attributeCheck=e.ADD_ATTR:(Re===we&&(Re=C(Re)),R(Re,e.ADD_ATTR,ft))),e.ADD_URI_SAFE_ATTR&&R(Qe,e.ADD_URI_SAFE_ATTR,ft),e.FORBID_CONTENTS&&(Ke===Ve&&(Ke=C(Ke)),R(Ke,e.FORBID_CONTENTS,ft)),e.ADD_FORBID_CONTENTS&&(Ke===Ve&&(Ke=C(Ke)),R(Ke,e.ADD_FORBID_CONTENTS,ft)),Xe&&(Ne["#text"]=!0),Pe&&R(Ne,["html","head","body"]),Ne.table&&(R(Ne,["tbody"]),delete Oe.tbody),e.TRUSTED_TYPES_POLICY){if("function"!=typeof e.TRUSTED_TYPES_POLICY.createHTML)throw S('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof e.TRUSTED_TYPES_POLICY.createScriptURL)throw S('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');le=e.TRUSTED_TYPES_POLICY,ce=le.createHTML("")}else void 0===le&&(le=function(e,t){if("object"!=typeof e||"function"!=typeof e.createPolicy)return null;let n=null;
vendor: 7,610 bytes, line 9
9const o="data-tt-policy-suffix";t&&t.hasAttribute(o)&&(n=t.getAttribute(o));const r="dompurify"+(n?"#"+n:"");try{return e.createPolicy(r,{createHTML:e=>e,createScriptURL:e=>e})}catch(e){return console.warn("TrustedTypes policy "+r+" could not be created."),null}}(j,c)),null!==le&&"string"==typeof ce&&(ce=le.createHTML(""));i&&i(e),dt=e}},yt=R({},[...k,...x,...L]),Et=R({},[...I,...M]),At=function(e){f(o.removed,{element:e});try{ae(e).removeChild(e)}catch(t){V(e)}},_t=function(e,t){try{f(o.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){f(o.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e)if(Be||Ge)try{At(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},bt=function(e){let t=null,n=null;if(He)e="<remove></remove>"+e;else{const t=T(e,/^[\r\n\t ]+/);n=t&&t[0]}"application/xhtml+xml"===mt&&rt===ot&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");const o=le?le.createHTML(e):e;if(rt===ot)try{t=(new Y).parseFromString(o,mt)}catch(e){}if(!t||!t.documentElement){t=se.createDocument(rt,"template",null);try{t.documentElement.innerHTML=it?ce:o}catch(e){}}const i=t.body||t.documentElement;return e&&n&&i.insertBefore(r.createTextNode(n),i.childNodes[0]||null),rt===ot?pe.call(t,Pe?"html":"body")[0]:Pe?t.documentElement:i},St=function(e){return ue.call(e.ownerDocument||e,e,B.SHOW_ELEMENT|B.SHOW_COMMENT|B.SHOW_TEXT|B.SHOW_PROCESSING_INSTRUCTION|B.SHOW_CDATA_SECTION,null)},Nt=function(e){return e instanceof W&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof G)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)},Dt=function(e){return"function"==typeof D&&e instanceof D};function Rt(e,t,n){u(e,(e=>{e.call(o,t,n,dt)}))}const wt=function(e){let t=null;if(Rt(de.beforeSanitizeElements,e,null),Nt(e))return At(e),!0;const n=ft(e.nodeName);if(Rt(de.uponSanitizeElement,e,{tagName:n,allowedTags:Ne}),ze&&e.hasChildNodes()&&!Dt(e.firstElementChild)&&b(/<[/\w!]/g,e.innerHTML)&&b(/<[/\w!]/g,e.textContent))return At(e),!0;if(e.nodeType===ee)return At(e),!0;if(ze&&e.nodeType===te&&b(/<[/\w]/g,e.data))return At(e),!0;if(!(ke.tagCheck instanceof Function&&ke.tagCheck(n))&&(!Ne[n]||Oe[n])){if(!Oe[n]&&Ot(n)){if(Ce.tagNameCheck instanceof RegExp&&b(Ce.tagNameCheck,n))return!1;if(Ce.tagNameCheck instanceof Function&&Ce.tagNameCheck(n))return!1}if(Xe&&!Ke[n]){const t=ae(e)||e.parentNode,n=ie(e)||e.childNodes;if(n&&t){for(let o=n.length-1;o>=0;--o){const r=$(n[o],!0);r.__removalCount=(e.__removalCount||0)+1,t.insertBefore(r,re(e))}}}return At(e),!0}return e instanceof w&&!function(e){let t=ae(e);t&&t.tagName||(t={namespaceURI:rt,tagName:"template"});const n=h(e.tagName),o=h(t.tagName);return!!at[e.namespaceURI]&&(e.namespaceURI===nt?t.namespaceURI===ot?"svg"===n:t.namespaceURI===tt?"svg"===n&&("annotation-xml"===o||ct[o]):Boolean(yt[n]):e.namespaceURI===tt?t.namespaceURI===ot?"math"===n:t.namespaceURI===nt?"math"===n&&st[o]:Boolean(Et[n]):e.namespaceURI===ot?!(t.namespaceURI===nt&&!st[o])&&!(t.namespaceURI===tt&&!ct[o])&&!Et[n]&&(ut[n]||!yt[n]):!("application/xhtml+xml"!==mt||!at[e.namespaceURI]))}(e)?(At(e),!0):"noscript"!==n&&"noembed"!==n&&"noframes"!==n||!b(/<\/no(script|embed|frames)/i,e.innerHTML)?(Ue&&e.nodeType===Q&&(t=e.textContent,u([he,ge,Te],(e=>{t=y(t,e," ")})),e.textContent!==t&&(f(o.removed,{element:e.cloneNode()}),e.textContent=t)),Rt(de.afterSanitizeElements,e,null),!1):(At(e),!0)},Ct=function(e,t,n){if(ve[t])return!1;if(Ye&&("id"===t||"name"===t)&&(n in r||n in ht))return!1;if(Le&&!ve[t]&&b(ye,t));else if(xe&&b(Ee,t));else if(ke.attributeCheck instanceof Function&&ke.attributeCheck(t,e));else if(!Re[t]||ve[t]){if(!(Ot(e)&&(Ce.tagNameCheck instanceof RegExp&&b(Ce.tagNameCheck,e)||Ce.tagNameCheck instanceof Function&&Ce.tagNameCheck(e))&&(Ce.attributeNameCheck instanceof RegExp&&b(Ce.attributeNameCheck,t)||Ce.attributeNameCheck instanceof Function&&Ce.attributeNameCheck(t,e))||"is"===t&&Ce.allowCustomizedBuiltInElements&&(Ce.tagNameCheck instanceof RegExp&&b(Ce.tagNameCheck,n)||Ce.tagNameCheck instanceof Function&&Ce.tagNameCheck(n))))return!1}else if(Qe[t]);else if(b(Se,y(n,_e,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==E(n,"data:")||!Ze[e]){if(Ie&&!b(Ae,y(n,_e,"")));else if(n)return!1}else;return!0},Ot=function(e){return"annotation-xml"!==e&&T(e,be)},vt=function(e){Rt(de.beforeSanitizeAttributes,e,null);const{attributes:t}=e;if(!t||Nt(e))return;const n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Re,forceKeepAttr:void 0};let r=t.length;for(;r--;){const i=t[r],{name:a,namespaceURI:l,value:c}=i,s=ft(a),m=c;let f="value"===a?m:A(m);if(n.attrName=s,n.attrValue=f,n.keepAttr=!0,n.forceKeepAttr=void 0,Rt(de.uponSanitizeAttribute,e,n),f=n.attrValue,!je||"id"!==s&&"name"!==s||(_t(a,e),f="user-content-"+f),ze&&b(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,f)){_t(a,e);continue}if("attributename"===s&&T(f,"href")){_t(a,e);continue}if(n.forceKeepAttr)continue;if(!n.keepAttr){_t(a,e);continue}if(!Me&&b(/\/>/i,f)){_t(a,e);continue}Ue&&u([he,ge,Te],(e=>{f=y(f,e," ")}));const d=ft(e.nodeName);if(Ct(d,s,f)){if(le&&"object"==typeof j&&"function"==typeof j.getAttributeType)if(l);else switch(j.getAttributeType(d,s)){case"TrustedHTML":f=le.createHTML(f);break;case"TrustedScriptURL":f=le.createScriptURL(f)}if(f!==m)try{l?e.setAttributeNS(l,a,f):e.setAttribute(a,f),Nt(e)?At(e):p(o.removed)}catch(t){_t(a,e)}}else _t(a,e)}Rt(de.afterSanitizeAttributes,e,null)},kt=function e(t){let n=null;const o=St(t);for(Rt(de.beforeSanitizeShadowDOM,t,null);n=o.nextNode();)Rt(de.uponSanitizeShadowNode,n,null),wt(n),vt(n),n.content instanceof s&&e(n.content);Rt(de.afterSanitizeShadowDOM,t,null)};return o.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=null,r=null,i=null,l=null;if(it=!e,it&&(e="\x3c!--\x3e"),"string"!=typeof e&&!Dt(e)){if("function"!=typeof e.toString)throw S("toString is not a function");if("string"!=typeof(e=e.toString()))throw S("dirty is not a string, aborting")}if(!o.isSupported)return e;if(Fe||Tt(t),o.removed=[],"string"==typeof e&&(qe=!1),qe){if(e.nodeName){const t=ft(e.nodeName);if(!Ne[t]||Oe[t])throw S("root node is forbidden and cannot be sanitized in-place")}}else if(e instanceof D)n=bt("\x3c!----\x3e"),r=n.ownerDocument.importNode(e,!0),r.nodeType===J&&"BODY"===r.nodeName||"HTML"===r.nodeName?n=r:n.appendChild(r);else{if(!Be&&!Ue&&!Pe&&-1===e.indexOf("<"))return le&&We?le.createHTML(e):e;if(n=bt(e),!n)return Be?null:We?ce:""}n&&He&&At(n.firstChild);const c=St(qe?e:n);for(;i=c.nextNode();)wt(i),vt(i),i.content instanceof s&&kt(i.content);if(qe)return e;if(Be){if(Ge)for(l=me.call(n.ownerDocument);n.firstChild;)l.appendChild(n.firstChild);else l=n;return(Re.shadowroot||Re.shadowrootmode)&&(l=fe.call(a,l,!0)),l}let m=Pe?n.outerHTML:n.innerHTML;return Pe&&Ne["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&b(K,n.ownerDocument.doctype.name)&&(m="<!DOCTYPE "+n.ownerDocument.doctype.name+">\n"+m),Ue&&u([he,ge,Te],(e=>{m=y(m,e," ")})),le&&We?le.createHTML(m):m},o.setConfig=function(){Tt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),Fe=!0},o.clearConfig=function(){dt=null,Fe=!1},o.isValidAttribute=function(e,t,n){dt||Tt({});const o=ft(e),r=ft(t);return Ct(o,r,n)},o.addHook=function(e,t){"function"==typeof t&&f(de[e],t)},o.removeHook=function(e,t){if(void 0!==t){const n=m(de[e],t);
9return-1===n?void 0:d(de[e],n,1)[0]}return p(de[e])},o.removeHooks=function(e){de[e]=[]},o.removeAllHooks=function(){de={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},o}();return re})); 10 11; 12/** 13 * @file 14 * Colorbox module init js. 15 */ 16 17(function ($) { 18 19Drupal.behaviors.initColorbox = { 20 attach: function (context, settings) { 21 if (!$.isFunction($('a, area, input', context).colorbox) || typeof settings.colorbox === 'undefined') { 22 return; 23 } 24 25 if (settings.colorbox.mobiledetect && window.matchMedia) { 26 // Disable Colorbox for small screens. 27 var mq = window.matchMedia("(max-device-width: " + settings.colorbox.mobiledevicewidth + ")"); 28 if (mq.matches) { 29 return; 30 } 31 } 32 33 // Use "data-colorbox-gallery" if set otherwise use "rel". 34 settings.colorbox.rel = function () { 35 if ($(this).data('colorbox-gallery')) { 36 return $(this).data('colorbox-gallery'); 37 } 38 else { 39 return $(this).attr('rel'); 40 } 41 }; 42 43 $('.colorbox', context) 44 .once('init-colorbox').each(function(){ 45 // Only images are supported for the "colorbox" class. 46 // The "photo" setting forces the href attribute to be treated as an image. 47 var extendParams = { 48 photo: true 49 }; 50 // If a title attribute is supplied, sanitize it. 51 var title = $(this).attr('title'); 52 if (title) { 53 extendParams.title = Drupal.colorbox.sanitizeMarkup(title); 54 } 55 $(this).colorbox($.extend({}, settings.colorbox, extendParams)); 56 }); 57 58 $(context).bind('cbox_complete', function () { 59 Drupal.attachBehaviors($('#cboxLoadedContent')); 60 }); 61 } 62}; 63 64// Create colorbox namespace if it doesn't exist. 65if (!Drupal.hasOwnProperty('colorbox')) { 66 Drupal.colorbox = {}; 67} 68 69/** 70 * Global function to allow sanitizing captions and control strings. 71 * 72 * @param markup 73 * String containing potential markup. 74 * @return @string 75 * Sanitized string with potentially dangerous markup removed. 76 */ 77Drupal.colorbox.sanitizeMarkup = function(markup) { 78 // If DOMPurify installed, allow some HTML. Otherwise, treat as plain text. 79 if (typeof DOMPurify !== 'undefined') { 80 var purifyConfig = { 81 ALLOWED_TAGS: [ 82 'a', 83 'b', 84 'strong', 85 'i', 86 'em', 87 'u', 88 'cite', 89 'code', 90 'br' 91 ], 92 ALLOWED_ATTR: [ 93 'href', 94 'hreflang', 95 'title', 96 'target' 97 ] 98 } 99 if (Drupal.settings.hasOwnProperty('dompurify_custom_config')) { 100 purifyConfig = Drupal.settings.dompurify_custom_config; 101 } 102 return DOMPurify.sanitize(markup, purifyConfig); 103 } 104 else { 105 return Drupal.checkPlain(markup); 106 } 107} 108 109})(jQuery); 110; 111/** 112 * @file 113 * Colorbox module load js. 114 */ 115(function ($) { 116 117Drupal.behaviors.initColorboxLoad = { 118 attach: function (context, settings) { 119 if (!$.isFunction($.colorbox) || typeof settings.colorbox === 'undefined') { 120 return; 121 } 122 123 if (settings.colorbox.mobiledetect && window.matchMedia) { 124 // Disable Colorbox for small screens. 125 var mq = window.matchMedia("(max-device-width: " + settings.colorbox.mobiledevicewidth + ")"); 126 if (mq.matches) { 127 return; 128 } 129 } 130 131 $.urlParams = function (url) { 132 var p = {}, 133 e, 134 a = /\+/g, // Regex for replacing addition symbol with a space. 135 r = /([^&=]+)=?([^&]*)/g, 136 d = function (s) { return decodeURIComponent(s.replace(a, ' ')); }, 137 q = url.split('?'); 138 while (e = r.exec(q[1])) { 139 e[1] = d(e[1]); 140 e[2] = d(e[2]); 141 switch (e[2].toLowerCase()) { 142 case 'true': 143 case 'yes': 144 e[2] = true; 145 break; 146 case 'false': 147 case 'no': 148 e[2] = false; 149 break; 150 } 151 if (e[1] == 'width') { e[1] = 'innerWidth'; }
152 if (e[1] == 'height') { e[1] = 'innerHeight'; } 153 if (e[2]) { 154 e[2] = Drupal.checkPlain(e[2]); 155 } 156 p[e[1]] = e[2]; 157 } 158 return p; 159 }; 160 161 $('.colorbox-load', context) 162 .once('init-colorbox-load', function () { 163 var href = $(this).attr('href'); 164 165 var params = $.urlParams(href); 166 167 // Always load in an iframe. 168 params.iframe = true; 169 170 // Set inner width and height if not already specified. 171 if (!params.hasOwnProperty('innerWidth')) { 172 params.innerWidth = $(window).width() * .8; 173 } 174 if (!params.hasOwnProperty('innerHeight')) { 175 params.innerHeight = $(window).height() * .8; 176 } 177 178 if (!params.hasOwnProperty('title')) { 179 // If a title attribute is supplied, sanitize it. 180 var title = $(this).attr('title'); 181 if (title) { 182 params.title = Drupal.colorbox.sanitizeMarkup(title); 183 } 184 } 185 $(this).colorbox($.extend({}, settings.colorbox, params)); 186 }); 187 } 188}; 189 190})(jQuery); 191; 192/** 193 * @file 194 * Colorbox module inline js. 195 */ 196 197(function ($) { 198 199Drupal.behaviors.initColorboxInline = { 200 attach: function (context, settings) { 201 if (!$.isFunction($.colorbox) || typeof settings.colorbox === 'undefined') { 202 return; 203 } 204 205 if (settings.colorbox.mobiledetect && window.matchMedia) { 206 // Disable Colorbox for small screens. 207 var mq = window.matchMedia("(max-device-width: " + settings.colorbox.mobiledevicewidth + ")"); 208 if (mq.matches) { 209 return; 210 } 211 } 212 213 $.urlParam = function(name, url){ 214 if (name == 'fragment') { 215 var results = new RegExp('(#[^&#]*)').exec(url); 216 } 217 else { 218 var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(url); 219 } 220 if (!results) { return ''; } 221 return results[1] || ''; 222 }; 223 $('.colorbox-inline', context).once('init-colorbox-inline').colorbox({ 224 transition:settings.colorbox.transition, 225 speed:settings.colorbox.speed, 226 opacity:settings.colorbox.opacity, 227 slideshow:settings.colorbox.slideshow, 228 slideshowAuto:settings.colorbox.slideshowAuto, 229 slideshowSpeed:settings.colorbox.slideshowSpeed, 230 slideshowStart:settings.colorbox.slideshowStart, 231 slideshowStop:settings.colorbox.slideshowStop, 232 current:settings.colorbox.current, 233 previous:settings.colorbox.previous, 234 next:settings.colorbox.next, 235 close:settings.colorbox.close, 236 overlayClose:settings.colorbox.overlayClose, 237 maxWidth:settings.colorbox.maxWidth, 238 maxHeight:settings.colorbox.maxHeight, 239 innerWidth:function(){ 240 return $.urlParam('width', $(this).attr('href')); 241 }, 242 innerHeight:function(){ 243 return $.urlParam('height', $(this).attr('href')); 244 }, 245 title:function(){ 246 return Drupal.colorbox.sanitizeMarkup( 247 decodeURIComponent($.urlParam('title', $(this).attr('href')))); 248 }, 249 iframe:function(){ 250 return $.urlParam('iframe', $(this).attr('href')); 251 }, 252 inline:function(){ 253 return $.urlParam('inline', $(this).attr('href')); 254 }, 255 href:function(){ 256 return $.urlParam('fragment', $(this).attr('href')); 257 } 258 }); 259 } 260}; 261 262})(jQuery); 263; 264/** 265 * @file 266 * Some basic behaviors and utility functions for Views. 267 */ 268(function ($) { 269 270 Drupal.Views = {}; 271 272 /** 273 * JQuery UI tabs, Views integration component. 274 */ 275 Drupal.behaviors.viewsTabs = { 276 attach: function (context) { 277 if ($.viewsUi && $.viewsUi.tabs) { 278 $('#views-tabset').once('views-processed').viewsTabs({ 279 selectedClass: 'active' 280 }); 281 } 282 283 $('a.views-remove-link').once('views-processed').click(function (event) { 284 var id = $(this).attr('id').replace('views-remove-link-', ''); 285 $('#views-row-' + id).hide(); 286 $('#views-removed-' + id).get(0).checked = true; 287 event.preventDefault(); 288 }); 289 // Here is to handle display deletion 290 // (checking in the hidden checkbox and hiding out the row). 291 $('a.display-remove-link') 292 .addClass('display-processed') 293 .click(function () { 294 var id = $(this).attr('id').replace('display-remove-link-', ''); 295 $('#display-row-' + id).hide(); 296 $('#display-removed-' + id).get(0).checked = true; 297 return false;
298 }); 299 } 300 }; 301 302 /** 303 * Helper function to parse a querystring. 304 */ 305 Drupal.Views.parseQueryString = function (query) { 306 var args = {}; 307 var pos = query.indexOf('?'); 308 if (pos != -1) { 309 query = query.substring(pos + 1); 310 } 311 var pairs = query.split('&'); 312 for (var i in pairs) { 313 if (typeof(pairs[i]) == 'string') { 314 var pair = pairs[i].split('='); 315 // Ignore the 'q' path argument, if present. 316 if (pair[0] != 'q' && pair[1]) { 317 args[decodeURIComponent(pair[0].replace(/\+/g, ' '))] = decodeURIComponent(pair[1].replace(/\+/g, ' ')); 318 } 319 } 320 } 321 return args; 322 }; 323 324 /** 325 * Helper function to return a view's arguments based on a path. 326 */ 327 Drupal.Views.parseViewArgs = function (href, viewPath) { 328 // Provide language prefix. 329 if (Drupal.settings.pathPrefix) { 330 var viewPath = Drupal.settings.pathPrefix + viewPath; 331 } 332 var returnObj = {}; 333 var path = Drupal.Views.getPath(href); 334 // Ensure there is a correct path. 335 if (viewPath && path.substring(0, viewPath.length + 1) == viewPath + '/') { 336 var args = decodeURIComponent(path.substring(viewPath.length + 1, path.length)); 337 returnObj.view_args = args; 338 returnObj.view_path = path; 339 } 340 return returnObj; 341 }; 342 343 /** 344 * Strip off the protocol plus domain from an href. 345 */ 346 Drupal.Views.pathPortion = function (href) { 347 // Remove e.g. http://example.com if present. 348 var protocol = window.location.protocol; 349 if (href.substring(0, protocol.length) == protocol) { 350 // 2 is the length of the '//' that normally follows the protocol. 351 href = href.substring(href.indexOf('/', protocol.length + 2)); 352 } 353 return href; 354 }; 355 356 /** 357 * Return the Drupal path portion of an href. 358 */ 359 Drupal.Views.getPath = function (href) { 360 href = Drupal.Views.pathPortion(href); 361 href = href.substring(Drupal.settings.basePath.length, href.length); 362 // 3 is the length of the '?q=' added to the URL without clean URLs. 363 if (href.substring(0, 3) == '?q=') { 364 href = href.substring(3, href.length); 365 } 366 var chars = ['#', '?', '&']; 367 for (var i in chars) { 368 if (href.indexOf(chars[i]) > -1) { 369 href = href.substr(0, href.indexOf(chars[i])); 370 } 371 } 372 return href; 373 }; 374 375})(jQuery); 376; 377(function ($) { 378 379/** 380 * A progressbar object. Initialized with the given id. Must be inserted into 381 * the DOM afterwards through progressBar.element. 382 * 383 * method is the function which will perform the HTTP request to get the 384 * progress bar state. Either "GET" or "POST". 385 * 386 * e.g. pb = new progressBar('myProgressBar'); 387 * some_element.appendChild(pb.element); 388 */ 389Drupal.progressBar = function (id, updateCallback, method, errorCallback) { 390 var pb = this; 391 this.id = id; 392 this.method = method || 'GET'; 393 this.updateCallback = updateCallback; 394 this.errorCallback = errorCallback; 395 396 // The WAI-ARIA setting aria-live="polite" will announce changes after users 397 // have completed their current activity and not interrupt the screen reader. 398 this.element = $('<div class="progress" aria-live="polite"></div>').attr('id', id); 399 this.element.html('<div class="bar"><div class="filled"></div></div>' + 400 '<div class="percentage"></div>' + 401 '<div class="message"> </div>'); 402}; 403 404/** 405 * Set the percentage and status message for the progressbar. 406 */ 407Drupal.progressBar.prototype.setProgress = function (percentage, message) { 408 if (percentage >= 0 && percentage <= 100) { 409 $('div.filled', this.element).css('width', percentage + '%'); 410 $('div.percentage', this.element).html(percentage + '%'); 411 } 412 $('div.message', this.element).html(message); 413 if (this.updateCallback) { 414 this.updateCallback(percentage, message, this); 415 } 416}; 417 418/** 419 * Start monitoring progress via Ajax. 420 */ 421Drupal.progressBar.prototype.startMonitoring = function (uri, delay) { 422 this.delay = delay; 423 this.uri = uri; 424 this.sendPing(); 425}; 426 427/** 428 * Stop monitoring progress via Ajax. 429 */ 430Drupal.progressBar.prototype.stopMonitoring = function () { 431 clearTimeout(this.timer); 432 // This allows monitoring to be stopped from within the callback. 433 this.uri = null; 434}; 435 436/** 437 * Request progress data from server. 438 */ 439Drupal.progressBar.prototype.sendPing = function () { 440 if (this.timer) { 441 clearTimeout(this.timer); 442 } 443 if (this.uri) { 444 var pb = this; 445 // When doing a post request, you need non-null data. Otherwise a 446 // HTTP 411 or HTTP 406 (with Apache mod_security) error may result. 447 $.ajax({ 448 type: this.method, 449 url: this.uri, 450 data: '', 451 dataType: 'json', 452 success: function (progress) { 453 // Display errors. 454 if (progress.status == 0) { 455 pb.displayError(progress.data); 456 return; 457 } 458 // Update display. 459 pb.setProgress(progress.percentage, progress.message); 460 // Schedule next timer.
461 pb.timer = setTimeout(function () { pb.sendPing(); }, pb.delay); 462 }, 463 error: function (xmlhttp) { 464 pb.displayError(Drupal.ajaxError(xmlhttp, pb.uri)); 465 } 466 }); 467 } 468}; 469 470/** 471 * Display errors on the page. 472 */ 473Drupal.progressBar.prototype.displayError = function (string) { 474 var error = $('<div class="messages error"></div>').html(string); 475 $(this.element).before(error).hide(); 476 477 if (this.errorCallback) { 478 this.errorCallback(this); 479 } 480}; 481 482})(jQuery); 483; 484(function ($) { 485 // Implement a show/hide. 486 Drupal.behaviors.menu_attach_block = { 487 attach: function (context, settings) { 488 // Attach hover events, if this link has been defined as hoverable. 489 $('a.menu-attach-block-drop-link.expand-on-hover', context).hover( 490 /** 491 * Show on mouse in. 492 */ 493 function() { 494 // Show the block if it is not already shown. 495 if (!($(this).hasClass('dropped'))) { 496 expand_toggle($(this)); 497 } 498 }, 499 /** 500 * Hide on mouse out. 501 */ 502 function() { 503 expand_toggle($(this)); 504 } 505 ); 506 507 // Attach click events for links configured to use that. 508 $('a.menu-attach-block-drop-link.expand-on-click', context).click(function(event) { 509 expand_toggle($(this)); 510 event.preventDefault(); 511 }); 512 513 /** 514 * Shows a block embedded inside a menu item. 515 * 516 * @param link 517 * The link attached to this menu item, which triggers block show. 518 */ 519 function expand_toggle(link) { 520 if (link.hasClass('menu-ajax-enabled')) { 521 // Load contents using AJAX. 522 if (!link.hasClass('menu-ajax-loaded')) { 523 ajax_path = Drupal.settings.basePath + 'menu_attach_block/ajax/' + (link).attr('data-block-id'); 524 $.ajax({ 525 type: 'GET', 526 url: ajax_path, 527 data: '', 528 dataType: 'HTML', 529 success: function ($block_html) { 530 $(link).next('.menu-attach-block-wrapper').html($block_html); 531 Drupal.attachBehaviors(link); 532 } 533 }); 534 } 535 } 536 // Show/hide the link. 537 $(link).next('.menu-attach-block-wrapper').slideToggle('fast'); 538 $(link).toggleClass('dropped'); 539 } 540 } 541 } 542}(jQuery)); 543; 544/*! 545 * jCarousel - Riding carousels with jQuery 546 * http://sorgalla.com/jcarousel/ 547 * 548 * Copyright (c) 2006 Jan Sorgalla (http://sorgalla.com) 549 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 550 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. 551 * 552 * Built on top of the jQuery library 553 * http://jquery.com 554 * 555 * Inspired by the "Carousel Component" by Bill Scott 556 * http://billwscott.com/carousel/ 557 */ 558 559(function(c){var d={vertical:false,rtl:false,start:1,offset:1,size:null,scroll:3,visible:null,animation:"normal",easing:"swing",auto:0,wrap:null,initCallback:null,setupCallback:null,reloadCallback:null,itemLoadCallback:null,itemFirstInCallback:null,itemFirstOutCallback:null,itemLastInCallback:null,itemLastOutCallback:null,itemVisibleInCallback:null,itemVisibleOutCallback:null,animationStepCallback:null,buttonNextHTML:"<div></div>",buttonPrevHTML:"<div></div>",buttonNextEvent:"click",buttonPrevEvent:"click",buttonNextCallback:null,buttonPrevCallback:null,itemFallbackDimension:null},b=false;c(window).bind("load.jcarousel",function(){b=true});c.jcarousel=function(l,g){this.options=c.extend({},d,g||{});this.locked=false;this.autoStopped=false;this.container=null;this.clip=null;this.list=null;this.buttonNext=null;this.buttonPrev=null;this.buttonNextState=null;this.buttonPrevState=null;if(!g||g.rtl===undefined){this.options.rtl=(c(l).attr("dir")||c("html").attr("dir")||"").toLowerCase()=="rtl"}this.wh=!this.options.vertical?"width":"height";this.lt=!this.options.vertical?(this.options.rtl?"right":"left"):"top";var q="",n=l.className.split(" ");for(var k=0;k<n.length;k++){if(n[k].indexOf("jcarousel-skin")!=-1){c(l).removeClass(n[k]);q=n[k];break}}if(l.nodeName.toUpperCase()=="UL"||l.nodeName.toUpperCase()=="OL"){this.list=c(l);this.clip=this.list.parents(".jcarousel-clip");this.container=this.list.parents(".jcarousel-container")}else{this.container=c(l);this.list=this.container.find("ul,ol").eq(0);this.clip=this.container.find(".jcarousel-clip")}if(this.clip.size()===0){this.clip=this.list.wrap("<div></div>").parent()}if(this.container.size()===0){this.container=this.clip.wrap("<div></div>").parent()}if(q!==""&&this.container.parent()[0].className.indexOf("jcarousel-skin")==-1){this.container.wrap('<div class=" '+q+'"></div>')}this.buttonPrev=c(".jcarousel-prev",this.container);if(this.buttonPrev.size()===0&&this.options.buttonPrevHTML!==null){this.buttonPrev=c(this.options.buttonPrevHTML).appendTo(this.container)}this.buttonPrev.addClass(this.className("jcarousel-prev"));this.buttonNext=c(".jcarousel-next",this.container);if(this.buttonNext.size()===0&&this.options.buttonNextHTML!==null){this.buttonNext=c(this.options.buttonNextHTML).appendTo(this.container)}this.buttonNext.addClass(this.className("jcarousel-next"));this.clip.addClass(this.className("jcarousel-clip")).css({position:"relative"});this.list.addClass(this.className("jcarousel-list")).css({overflow:"hidden",position:"relative",top:0,margin:0,padding:0}).css((this.options.rtl?"right":"left"),0);this.container.addClass(this.className("jcarousel-container")).css({position:"relative"});if(!this.options.vertical&&this.options.rtl){this.container.addClass("jcarou
559sel-direction-rtl").attr("dir","rtl")}var m=this.options.visible!==null?Math.ceil(this.clipping()/this.options.visible):null;var p=this.list.children("li");var r=this;if(p.size()>0){var f=0,h=this.options.offset;p.each(function(){r.format(this,h++);f+=r.dimension(this,m)});this.list.css(this.wh,(f+100)+"px");if(!g||g.size===undefined){this.options.size=p.size()}}this.container.css("display","block");this.buttonNext.css("display","block");this.buttonPrev.css("display","block");this.funcNext=function(){r.next();return false};this.funcPrev=function(){r.prev();return false};this.funcResize=function(){if(r.resizeTimer){clearTimeout(r.resizeTimer)}r.resizeTimer=setTimeout(function(){r.reload()},100)};if(this.options.initCallback!==null){this.options.initCallback(this,"init")}if(!b&&a.isSafari()){this.buttons(false,false);c(window).bind("load.jcarousel",function(){r.setup()})}else{this.setup()}};var a=c.jcarousel;a.fn=a.prototype={jcarousel:"0.2.9"};a.fn.extend=a.extend=c.extend;a.fn.extend({setup:function(){this.first=null;this.last=null;this.prevFirst=null;this.prevLast=null;this.animating=false;this.timer=null;this.resizeTimer=null;this.tail=null;this.inTail=false;if(this.locked){return}this.list.css(this.lt,this.pos(this.options.offset)+"px");var e=this.pos(this.options.start,true);this.prevFirst=this.prevLast=null;this.animate(e,false);c(window).unbind("resize.jcarousel",this.funcResize).bind("resize.jcarousel",this.funcResize);if(this.options.setupCallback!==null){this.options.setupCallback(this)}},reset:function(){this.list.empty();this.list.css(this.lt,"0px");this.list.css(this.wh,"10px");if(this.options.initCallback!==null){this.options.initCallback(this,"reset")}this.setup()},reload:function(){if(this.tail!==null&&this.inTail){this.list.css(this.lt,a.intval(this.list.css(this.lt))+this.tail)}this.tail=null;this.inTail=false;if(this.options.reloadCallback!==null){this.options.reloadCallback(this)}if(this.options.visible!==null){var g=this;var h=Math.ceil(this.clipping()/this.options.visible),f=0,e=0;this.list.children("li").each(function(j){f+=g.dimension(this,h);if(parseInt(jQuery(this).attr("jcarouselindex"))<g.first){e=f}});this.list.css(this.wh,f+"px");this.list.css(this.lt,-e+"px")}this.scroll(this.first,false)},lock:function(){this.locked=true;this.buttons()},unlock:function(){this.locked=false;this.buttons()},size:function(e){if(e!==undefined){this.options.size=e;if(!this.locked){this.buttons()}}return this.options.size},has:function(g,h){if(h===undefined||!h){h=g}if(this.options.size!==null&&h>this.options.size){h=this.options.size}for(var f=g;f<=h;f++){var k=this.get(f);if(!k.length||k.hasClass("jcarousel-item-placeholder")){return false}}return true},get:function(e){return c(">.jcarousel-item-"+e,this.list)},add:function(l,q){var m=this.get(l),h=0,g=c(q);if(m.length===0){var p,k=a.intval(l);m=this.create(l);while(true){p=this.get(--k);if(k<=0||p.length){if(k<=0){this.list.prepend(m)}else{p.after(m)}break}}}else{h=this.dimension(m)}if(g.get(0).nodeName.toUpperCase()=="LI"){m.replaceWith(g);m=g}else{m.empty().append(q)}this.format(m.removeClass(this.className("jcarousel-item-placeholder")),l);var o=this.options.visible!==null?Math.ceil(this.clipping()/this.options.visible):null;var f=this.dimension(m,o)-h;if(l>0&&l<this.first){this.list.css(this.lt,a.intval(this.list.css(this.lt))-f+"px")}this.list.css(this.wh,a.intval(this.list.css(this.wh))+f+"px");return m},remove:function(f){var g=this.get(f);if(!g.length||(f>=this.first&&f<=this.last)){return}var h=this.dimension(g);if(f<this.first){this.list.css(this.lt,a.intval(this.list.css(this.lt))+h+"px")}g.remove();this.list.css(this.wh,a.intval(this.list.css(this.wh))-h+"px")},next:function(){if(this.tail!==null&&!this.inTail){this.scrollTail(false)}else{this.scroll(((this.options.wrap=="both"||this.options.wrap=="last")&&this.options.size!==null&&this.last==this.options.size)?1:this.first+this.options.scroll)}},prev:function(){if(this.tail!==null&&this.inTail){this.scrollTail(true)}else{this.scroll(((this.options.wrap=="both"||this.options.wrap=="first")&&this.options.size!==null&&this.first==1)?this.options.size:this.first-this.options.scroll)}},scrollTail:function(e){if(this.locked||this.animating||!this.tail){return}this.pauseAuto();var f=a.intval(this.list.css(this.lt));f=!e?f-this.tail:f+this.tail;this.inTail=!e;this.prevFirst=this.first;this.prevLast=this.last;this.animate(f)},scroll:function(f,e){if(this.locked||this.animating){return}this.pauseAuto();this.animate(this.pos(f),e)},pos:function(C,k){var n=a.intval(this.list.css(this.lt));if(this.locked||this.animating){return n}if(this.options.wrap!="circular"){C=C<1?1:(this.options.size&&C>this.options.size?this.options.size:C)}var z=this.first>C;var E=this.options.wrap!="circular"&&this.first<=1?1:this.first;var H=z?this.get(E):this.get(this.last);var B=z?E:E-1;
559var F=null,A=0,w=false,G=0,D;while(z?--B>=C:++B<C){F=this.get(B);w=!F.length;if(F.length===0){F=this.create(B).addClass(this.className("jcarousel-item-placeholder"));H[z?"before":"after"](F);if(this.first!==null&&this.options.wrap=="circular"&&this.options.size!==null&&(B<=0||B>this.options.size)){D=this.get(this.index(B));if(D.length){F=this.add(B,D.clone(true))}}}H=F;G=this.dimension(F);if(w){A+=G}if(this.first!==null&&(this.options.wrap=="circular"||(B>=1&&(this.options.size===null||B<=this.options.size)))){n=z?n+G:n-G}}var s=this.clipping(),u=[],h=0,t=0;H=this.get(C-1);B=C;while(++h){F=this.get(B);w=!F.length;if(F.length===0){F=this.create(B).addClass(this.className("jcarousel-item-placeholder"));if(H.length===0){this.list.prepend(F)}else{H[z?"before":"after"](F)}if(this.first!==null&&this.options.wrap=="circular"&&this.options.size!==null&&(B<=0||B>this.options.size)){D=this.get(this.index(B));if(D.length){F=this.add(B,D.clone(true))}}}H=F;G=this.dimension(F);if(G===0){throw new Error("jCarousel: No width/height set for items. This will cause an infinite loop. Aborting...")}if(this.options.wrap!="circular"&&this.options.size!==null&&B>this.options.size){u.push(F)}else{if(w){A+=G}}t+=G;if(t>=s){break}B++}for(var r=0;r<u.length;r++){u[r].remove()}if(A>0){this.list.css(this.wh,this.dimension(this.list)+A+"px");if(z){n-=A;this.list.css(this.lt,a.intval(this.list.css(this.lt))-A+"px")}}var q=C+h-1;if(this.options.wrap!="circular"&&this.options.size&&q>this.options.size){q=this.options.size}if(B>q){h=0;B=q;t=0;while(++h){F=this.get(B--);if(!F.length){break}t+=this.dimension(F);if(t>=s){break}}}var o=q-h+1;if(this.options.wrap!="circular"&&o<1){o=1}if(this.inTail&&z){n+=this.tail;this.inTail=false}this.tail=null;if(this.options.wrap!="circular"&&q==this.options.size&&(q-h+1)>=1){var y=a.intval(this.get(q).css(!this.options.vertical?"marginRight":"marginBottom"));if((t-y)>s){this.tail=t-s-y}}if(k&&C===this.options.size&&this.tail){n-=this.tail;this.inTail=true}while(C-->o){n+=this.dimension(this.get(C))}this.prevFirst=this.first;this.prevLast=this.last;this.first=o;this.last=q;return n},animate:function(i,e){if(this.locked||this.animating){return}this.animating=true;var f=this;var g=function(){f.animating=false;if(i===0){f.list.css(f.lt,0)}if(!f.autoStopped&&(f.options.wrap=="circular"||f.options.wrap=="both"||f.options.wrap=="last"||f.options.size===null||f.last<f.options.size||(f.last==f.options.size&&f.tail!==null&&!f.inTail))){f.startAuto()}f.buttons();f.notify("onAfterAnimation");if(f.options.wrap=="circular"&&f.options.size!==null){for(var k=f.prevFirst;k<=f.prevLast;k++){if(k!==null&&!(k>=f.first&&k<=f.last)&&(k<1||k>f.options.size)){f.remove(k)}}}};this.notify("onBeforeAnimation");if(!this.options.animation||e===false){this.list.css(this.lt,i+"px");g()}else{var j=!this.options.vertical?(this.options.rtl?{right:i}:{left:i}):{top:i};var h={duration:this.options.animation,easing:this.options.easing,complete:g};if(c.isFunction(this.options.animationStepCallback)){h.step=this.options.animationStepCallback}this.list.animate(j,h)}},startAuto:function(f){if(f!==undefined){this.options.auto=f}if(this.options.auto===0){return this.stopAuto()}if(this.timer!==null){return}this.autoStopped=false;var e=this;this.timer=window.setTimeout(function(){e.next()},this.options.auto*1000)},stopAuto:function(){this.pauseAuto();this.autoStopped=true},pauseAuto:function(){if(this.timer===null){return}window.clearTimeout(this.timer);this.timer=null},buttons:function(g,f){if(g==null){g=!this.locked&&this.options.size!==0&&((this.options.wrap&&this.options.wrap!="first")||this.options.size===null||this.last<this.options.size);if(!this.locked&&(!this.options.wrap||this.options.wrap=="first")&&this.options.size!==null&&this.last>=this.options.size){g=this.tail!==null&&!this.inTail}}if(f==null){f=!this.locked&&this.options.size!==0&&((this.options.wrap&&this.options.wrap!="last")||this.first>1);if(!this.locked&&(!this.options.wrap||this.options.wrap=="last")&&this.options.size!==null&&this.first==1){f=this.tail!==null&&this.inTail}}var e=this;if(this.buttonNext.size()>0){this.buttonNext.unbind(this.options.buttonNextEvent+".jcarousel",this.funcNext);if(g){this.buttonNext.bind(this.options.buttonNextEvent+".jcarousel",this.funcNext)}this.buttonNext[g?"removeClass":"addClass"](this.className("jcarousel-next-disabled")).attr("disabled",g?false:true);if(this.options.buttonNextCallback!==null&&this.buttonNext.data("jcarou
559selstate")!=g){this.buttonNext.each(function(){e.options.buttonNextCallback(e,this,g)}).data("jcarouselstate",g)}}else{if(this.options.buttonNextCallback!==null&&this.buttonNextState!=g){this.options.buttonNextCallback(e,null,g)}}if(this.buttonPrev.size()>0){this.buttonPrev.unbind(this.options.buttonPrevEvent+".jcarousel",this.funcPrev);if(f){this.buttonPrev.bind(this.options.buttonPrevEvent+".jcarousel",this.funcPrev)}this.buttonPrev[f?"removeClass":"addClass"](this.className("jcarousel-prev-disabled")).attr("disabled",f?false:true);if(this.options.buttonPrevCallback!==null&&this.buttonPrev.data("jcarouselstate")!=f){this.buttonPrev.each(function(){e.options.buttonPrevCallback(e,this,f)}).data("jcarouselstate",f)}}else{if(this.options.buttonPrevCallback!==null&&this.buttonPrevState!=f){this.options.buttonPrevCallback(e,null,f)}}this.buttonNextState=g;this.buttonPrevState=f},notify:function(e){var f=this.prevFirst===null?"init":(this.prevFirst<this.first?"next":"prev");this.callback("itemLoadCallback",e,f);if(this.prevFirst!==this.first){this.callback("itemFirstInCallback",e,f,this.first);this.callback("itemFirstOutCallback",e,f,this.prevFirst)}if(this.prevLast!==this.last){this.callback("itemLastInCallback",e,f,this.last);this.callback("itemLastOutCallback",e,f,this.prevLast)}this.callback("itemVisibleInCallback",e,f,this.first,this.last,this.prevFirst,this.prevLast);this.callback("itemVisibleOutCallback",e,f,this.prevFirst,this.prevLast,this.first,this.last)},callback:function(j,m,e,k,h,g,f){if(this.options[j]==null||(typeof this.options[j]!="object"&&m!="onAfterAnimation")){return}var n=typeof this.options[j]=="object"?this.options[j][m]:this.options[j];if(!c.isFunction(n)){return}var o=this;if(k===undefined){n(o,e,m)}else{if(h===undefined){this.get(k).each(function(){n(o,this,k,e,m)})}else{var p=function(q){o.get(q).each(function(){n(o,this,q,e,m)})};for(var l=k;l<=h;l++){if(l!==null&&!(l>=g&&l<=f)){p(l)}}}}},create:function(e){return this.format("<li></li>",e)},format:function(k,h){k=c(k);var g=k.get(0).className.split(" ");for(var f=0;f<g.length;f++){if(g[f].indexOf("jcarousel-")!=-1){k.removeClass(g[f])}}k.addClass(this.className("jcarousel-item")).addClass(this.className("jcarousel-item-"+h)).css({"float":(this.options.rtl?"right":"left"),"list-style":"none"}).attr("jcarouselindex",h);return k},className:function(e){return e+" "+e+(!this.options.vertical?"-horizontal":"-vertical")},dimension:function(h,i){var g=c(h);if(i==null){return !this.options.vertical?((g.innerWidth()+a.intval(g.css("margin-left"))+a.intval(g.css("margin-right"))+a.intval(g.css("border-left-width"))+a.intval(g.css("border-right-width")))||a.intval(this.options.itemFallbackDimension)):((g.innerHeight()+a.intval(g.css("margin-top"))+a.intval(g.css("margin-bottom"))+a.intval(g.css("border-top-width"))+a.intval(g.css("border-bottom-width")))||a.intval(this.options.itemFallbackDimension))}else{var f=!this.options.vertical?i-a.intval(g.css("marginLeft"))-a.intval(g.css("marginRight")):i-a.intval(g.css("marginTop"))-a.intval(g.css("marginBottom"));c(g).css(this.wh,f+"px");return this.dimension(g)}},clipping:function(){return !this.options.vertical?this.clip[0].offsetWidth-a.intval(this.clip.css("borderLeftWidth"))-a.intval(this.clip.css("borderRightWidth")):this.clip[0].offsetHeight-a.intval(this.clip.css("borderTopWidth"))-a.intval(this.clip.css("borderBottomWidth"))},index:function(e,f){if(f==null){f=this.options.size}return Math.round((((e-1)/f)-Math.floor((e-1)/f))*f)+1}});a.extend({defaults:function(e){return c.extend(d,e||{})},intval:function(e){e=parseInt(e,10);return isNaN(e)?0:e},windowLoaded:function(){b=true},isSafari:function(){var g=navigator.userAgent.toLowerCase(),f=/(chrome)[ \/]([\w.]+)/.exec(g)||/(webkit)[ \/]([\w.]+)/.exec(g)||[],e=f[1]||"";return e==="webkit"}});c.fn.jcarousel=function(g){if(typeof g=="string"){var e=c(this).data("jcarousel"),f=Array.prototype.slice.call(arguments,1);return e[g].apply(e,f)}else{return this.each(function(){var h=c(this).data("jcarousel");if(h){if(g){c.extend(h.options,g)}h.reload()}
559else{c(this).data("jcarousel",new a(this,g))}})}}})(jQuery); 560; 561/** 562 * @file 563 * Add jCarousel behaviors to the page and provide Views-support. 564 */ 565 566(function($) { 567 568Drupal.behaviors.jcarousel = {}; 569Drupal.behaviors.jcarousel.attach = function(context, settings) { 570 settings = settings || Drupal.settings; 571 572 // If no carousels exist on this part of the page, work no further. 573 if (!settings.jcarousel || !settings.jcarousel.carousels) { 574 return; 575 } 576 577 $("ul.jcarousel li").css("display", ""); 578 579 $.each(settings.jcarousel.carousels, function(key, options) { 580 var $carousel = $(options.selector + ':not(.jcarousel-processed)', context); 581 582 // If this carousel has already been processed or doesn't exist, move on. 583 if (!$carousel.length) { 584 return; 585 } 586 587 // Callbacks need to be converted from a string to an actual function. 588 $.each(options, function(optionKey) { 589 if (optionKey.match(/Callback$/) && typeof options[optionKey] == 'string') { 590 var callbackFunction = window; 591 var callbackParents = options[optionKey].split('.'); 592 $.each(callbackParents, function(objectParent) { 593 callbackFunction = callbackFunction[callbackParents[objectParent]]; 594 }); 595 options[optionKey] = callbackFunction; 596 } 597 }); 598 599 // Add standard options required for AJAX functionality. 600 if (options.ajax && !options.itemLoadCallback) { 601 options.itemLoadCallback = Drupal.jcarousel.ajaxLoadCallback; 602 } 603 604 // If auto-scrolling, pause animation when hoving over the carousel. 605 if (options.auto && options.autoPause && !options.initCallback) { 606 options.initCallback = function(carousel, state) { 607 Drupal.jcarousel.autoPauseCallback(carousel, state); 608 }; 609 } 610 611 // Add responsive behavior. 612 if (options.responsive && !options.reloadCallback) { 613 options.vertical = false;
614 options.visible = null; 615 options.reloadCallback = Drupal.jcarousel.reloadCallback; 616 } 617 618 // Add navigation to the carousel if enabled. 619 if (!options.setupCallback) { 620 options.setupCallback = function(carousel) { 621 Drupal.jcarousel.setupCarousel(carousel); 622 if (options.navigation) { 623 Drupal.jcarousel.addNavigation(carousel, options.navigation); 624 } 625 if (options.responsive) { 626 carousel.reload(); 627 } 628 }; 629 if (options.navigation && !options.itemVisibleInCallback) { 630 options.itemLastInCallback = { 631 onAfterAnimation: Drupal.jcarousel.updateNavigationActive 632 }; 633 } 634 } 635 636 if (!options.hasOwnProperty('buttonNextHTML') && !options.hasOwnProperty('buttonPrevHTML')) { 637 options.buttonNextHTML = Drupal.theme('jCarouselButton', 'next'); 638 options.buttonPrevHTML = Drupal.theme('jCarouselButton', 'previous'); 639 } 640 641 // Initialize the jcarousel. 642 $carousel.addClass('jcarousel-processed').jcarousel(options); 643 }); 644}; 645 646Drupal.jcarousel = {}; 647Drupal.jcarousel.reloadCallback = function(carousel) { 648 // Set the clip and container to auto width so that they will fill 649 // the available space. 650 carousel.container.css('width', 'auto'); 651 carousel.clip.css('width', 'auto'); 652 var clipWidth = carousel.clip.width(); 653 var containerExtra = carousel.container.width() - carousel.clip.outerWidth(true); 654 // Determine the width of an item. 655 var itemWidth = carousel.list.find('li').first().outerWidth(true); 656 var numItems = Math.floor(carousel.clip.width() / itemWidth) || 1; 657 // Set the new scroll number. 658 carousel.options.scroll = numItems; 659 var newClipWidth = numItems * itemWidth; 660 var newContainerWidth = newClipWidth + containerExtra; 661 // Resize the clip and container. 662 carousel.clip.width(newClipWidth); 663 carousel.container.width(newContainerWidth); 664}; 665Drupal.jcarousel.ajaxLoadCallback = function(jcarousel, state) { 666 // Check if the requested items already exist. 667 if (state == 'init' || jcarousel.has(jcarousel.first, jcarousel.last)) { 668 return; 669 } 670 671 var $list = jcarousel.list; 672 var $view = $list.parents('.view:first'); 673 var ajaxPath = Drupal.settings.jcarousel.ajaxPath; 674 var target = $view.get(0); 675 676 // Find this view's settings in the Views AJAX settings. 677 var settings; 678 $.each(Drupal.settings.jcarousel.carousels, function(domID, carouselSettings) { 679 if ($list.is('.' + domID)) { 680 settings = carouselSettings['view_options']; 681 } 682 }); 683 684 // Copied from ajax_view.js: 685 var viewData = { 'js': 1, 'first': jcarousel.first - 1, 'last': jcarousel.last }; 686 // Construct an object using the settings defaults and then overriding 687 // with data specific to the link. 688 $.extend( 689 viewData, 690 settings 691 ); 692 693 $.ajax({ 694 url: ajaxPath, 695 type: 'GET', 696 data: viewData, 697 success: function(response) { 698 Drupal.jcarousel.ajaxResponseCallback(jcarousel, target, response); 699 }, 700 error: function(xhr) { 701 Drupal.jcarousel.ajaxErrorCallback(xhr, ajaxPath); 702 }, 703 dataType: 'json' 704 }); 705 706}; 707 708/** 709 * Init callback for jCarousel. Pauses the carousel when hovering over. 710 */ 711Drupal.jcarousel.autoPauseCallback = function(carousel, state) { 712 function pauseAuto() { 713 carousel.stopAuto(); 714 } 715 function resumeAuto() { 716 carousel.startAuto(); 717 } 718 carousel.clip.hover(pauseAuto, resumeAuto); 719 carousel.buttonNext.hover(pauseAuto, resumeAuto); 720 carousel.buttonPrev.hover(pauseAuto, resumeAuto); 721}; 722 723/** 724 * Setup callback for jCarousel. Calculates number of pages. 725 */ 726Drupal.jcarousel.setupCarousel = function(carousel) { 727 // Determine the number of pages this carousel includes. 728 // This only works for a positive starting point. Also, .first is 1-based 729 // while .last is a count, so we need to reset the .first number to be 730 // 0-based to make the math work. 731 carousel.pageSize = carousel.last - (carousel.first - 1); 732 733 // jCarousel's Views integration sets "size" in the carousel options. Use that 734 // if available, otherwise count the number of items in the carousel. 735 var itemCount = carousel.options.size ? carousel.options.size : $(carou
735sel.list).children('li').length; 736 carousel.pageCount = Math.ceil(itemCount / carousel.pageSize); 737 carousel.pageNumber = 1; 738 739 // Disable the previous/next arrows if there is only one page. 740 if (carousel.options.wrap != 'circular' && carousel.pageCount == 1) { 741 carousel.buttons(false, false); 742 } 743 744 // Always remove the hard-coded display: block from the navigation. 745 carousel.buttonNext.css('display', ''); 746 carousel.buttonPrev.css('display', ''); 747} 748 749/** 750 * Setup callback for jCarousel. Adds the navigation to the carousel if enabled. 751 */ 752Drupal.jcarousel.addNavigation = function(carousel, position) { 753 // Don't add a pager if there's only one page of results. 754 if (carousel.pageCount <= 1) { 755 return; 756 } 757 758 // Add a class to the wrapper so it can adjust CSS. 759 $(carousel.list).parents('.jcarousel-container:first').addClass('jcarousel-navigation-' + position); 760 761 var navigation = $('<ul class="jcarousel-navigation"></ul>'); 762 763 for (var i = 1; i <= carousel.pageCount; i++) { 764 var pagerItem = $(Drupal.theme('jCarouselPageLink', i)); 765 var listItem = $('<li></li>').attr('jcarousel-page', i).append(pagerItem); 766 navigation.append(listItem); 767 768 // Make the first page active by default. 769 if (i === 1) { 770 listItem.addClass('active'); 771 } 772 773 // Scroll to the correct page when a pager is clicked. 774 pagerItem.bind('click', function() { 775 // We scroll to the new page based on item offsets. This works with 776 // circular carousels that do not divide items evenly, making it so that 777 // going back or forward in pages will not skip or repeat any items. 778 var newPageNumber = $(this).parent().attr('jcarousel-page'); 779 var itemOffset = (newPageNumber - carousel.pageNumber) * carousel.pageSize; 780 781 if (itemOffset) { 782 carousel.scroll(carousel.first + itemOffset); 783 } 784 785 return false; 786 }); 787 } 788 789 $(carousel.list).parents('.jcarousel-clip:first')[position](navigation); 790} 791 792/** 793 * itemVisibleInCallback for jCarousel. Update the navigation after page change. 794 */ 795Drupal.jcarousel.updateNavigationActive = function(carousel, item, idx, state) { 796 // The navigation doesn't even exist yet when this is called on init. 797 var $listItems = $(carousel.list).parents('.jcarousel-container:first').find('.jcarousel-navigation li'); 798 if ($listItems.length == 0) { 799 return; 800 } 801 802 // jCarousel does some very odd things with circular wraps. Items before the 803 // first item are given negative numbers and items after the last are given 804 // numbers beyond the total number of items. This complicated logic calculates 805 // which page number is active based off this numbering scheme. 806 var pageNumber = Math.ceil(idx / carousel.pageSize); 807 if (pageNumber <= 0 || pageNumber > carousel.pageCount) { 808 pageNumber = pageNumber % carousel.pageCount; 809 pageNumber = pageNumber == 0 ? carousel.pageCount : pageNumber; 810 pageNumber = pageNumber < 0 ? pageNumber + carousel.pageCount : pageNumber; 811 } 812 carousel.pageNumber = pageNumber; 813 var currentPage = $listItems.get(carousel.pageNumber - 1); 814 815 // Set the current page to be active. 816 $listItems.not(currentPage).removeClass('active'); 817 $(currentPage).addClass('active'); 818} 819 820/** 821 * AJAX callback for all jCarousel-style views. 822 */ 823Drupal.jcarousel.ajaxResponseCallback = function(jcarousel, target, response) { 824 if (response.debug) { 825 alert(response.debug); 826 } 827 828 var $view = $(target); 829 var jcarousel = $view.find('ul.jcarousel').data('jcarousel'); 830 831 // Add items to the jCarousel. 832 $('ul.jcarousel > li', response.display).each(function(i) { 833 var itemNumber = this.className.replace(/.*?jcarousel-item-(\d+).*/, '$1'); 834 jcarousel.add(itemNumber, this.innerHTML); 835 }); 836 837 // Add Drupal behaviors to the content of the carousel to affect new items. 838 Drupal.attachBehaviors(jcarousel.list.get(0)); 839 840 // Treat messages the same way that Views typically handles messages. 841 if (response.messages) { 842 // Show any messages (but first remove old ones, if there are any). 843 $view.find('.views-messages').remove().end().prepend(response.messages); 844 } 845}; 846 847/** 848 * Display error messages using the same mechanism as Views module. 849 */ 850Drupal.jcarousel.ajaxErrorCallback = function (xhr, path) { 851 var error_text = ''; 852 853 if ((xhr.status == 500 && xhr.responseText) || xhr.status == 200) { 854 error_text = xhr.responseText; 855 856 // Replace all < and > by < and > 857 error_text = error_text.replace("/&(lt|gt);/g", function (m, p) { 858 return (p == "lt")? "<" : ">"; 859 }); 860 861 // Now, replace all html tags by empty spaces 862 error_text = error_text.replace(/<("[^"]*"|'[^']*'|[^'">])*>/gi,""); 863 864 // Fix end lines 865 error_text = error_text.replace(/[\n]+\s+/g,"\n"); 866 } 867 else if (xhr.status == 500) { 868 error_text = xhr.status + ': ' + Drupal.t("Internal server error. Please see server or PHP logs for error information."); 869 } 870 else { 871 error_text = xhr.status + ': ' + xhr.statusText; 872 } 873 874 alert(Drupal.t("An error occurred at @path.\n\nError Description: @error", {'@path': path, '@error': error_text})); 875}; 876
877Drupal.theme.prototype.jCarouselButton = function(type) { 878 // Use links for buttons for accessibility. 879 return '<a href="javascript:void(0)"></a>'; 880}; 881 882Drupal.theme.prototype.jCarouselPageLink = function(pageNumber) { 883 return '<a href="javascript:void(0)"><span>' + (pageNumber) + '</span></a>'; 884}; 885 886})(jQuery); 887; 888/** 889 * @file 890 * Handles AJAX fetching of views, including filter submission and response. 891 */ 892(function ($) { 893 894 /** 895 * Attaches the AJAX behavior to exposed filter forms and key views links. 896 */ 897 Drupal.behaviors.ViewsAjaxView = {}; 898 Drupal.behaviors.ViewsAjaxView.attach = function () { 899 if (Drupal.settings && Drupal.settings.views && Drupal.settings.views.ajaxViews) { 900 $.each(Drupal.settings.views.ajaxViews, function (i, settings) { 901 Drupal.views.instances[i] = new Drupal.views.ajaxView(settings); 902 }); 903 } 904 }; 905 906 Drupal.views = {}; 907 Drupal.views.instances = {}; 908 909 /** 910 * JavaScript object for a certain view. 911 */ 912 Drupal.views.ajaxView = function (settings) { 913 var selector = '.view-dom-id-' + settings.view_dom_id; 914 this.$view = $(selector); 915 916 // If view is not present return to prevent errors. 917 if (!this.$view.length) { 918 return; 919 } 920 921 // Retrieve the path to use for views' ajax. 922 var ajax_path = Drupal.settings.views.ajax_path; 923 924 // If there are multiple views this might've ended up showing up multiple 925 // times. 926 if (ajax_path.constructor.toString().indexOf("Array") != -1) { 927 ajax_path = ajax_path[0]; 928 } 929 930 // Check if there are any GET parameters to send to views. 931 var queryString = window.location.search || ''; 932 if (queryString !== '') { 933 // Remove the question mark and Drupal path component if any. 934 var queryString = queryString.slice(1).replace(/q=[^&]+&?|&?render=[^&]+/, ''); 935 if (queryString !== '') { 936 // If there is a '?' in ajax_path, clean url are on and & should be 937 // used to add parameters. 938 queryString = ((/\?/.test(ajax_path)) ? '&' : '?') + queryString; 939 } 940 } 941 942 this.element_settings = { 943 url: ajax_path + queryString, 944 submit: settings, 945 setClick: true, 946 event: 'click', 947 selector: selector, 948 progress: { 949 type: 'throbber' 950 } 951 }; 952 953 this.settings = settings; 954 955 // Add the ajax to exposed forms. 956 this.$exposed_form = $('#views-exposed-form-' + settings.view_name.replace(/_/g, '-') + '-' + settings.view_display_id.replace(/_/g, '-')); 957 this.$exposed_form.once(jQuery.proxy(this.attachExposedFormAjax, this)); 958 959 // Store Drupal.ajax objects here for all pager links. 960 this.links = []; 961 962 // Add the ajax to pagers. 963 this.$view 964 .once(jQuery.proxy(this.attachPagerAjax, this)); 965 966 // Add a trigger to update this view specifically. In order to trigger a 967 // refresh use the following code. 968 // 969 // @code 970 // jQuery('.view-name').trigger('RefreshView'); 971 // @endcode 972 // Add a trigger to update this view specifically. 973 var self_settings = this.element_settings; 974 self_settings.event = 'RefreshView'; 975 var self = this; 976 this.$view.once('refresh', function () { 977 self.refreshViewAjax = new Drupal.ajax(self.selector, self.$view, self_settings); 978 }); 979 }; 980 981 Drupal.views.ajaxView.prototype.attachExposedFormAjax = function () { 982 var button = $('input[type=submit], button[type=submit], input[type=image]', this.$exposed_form); 983 button = button[0]; 984 985 // Call the autocomplete submit before doing AJAX. 986 $(button).click(function () { 987 if (Drupal.autocompleteSubmit) { 988 Drupal.autocompleteSubmit(); 989 } 990 }); 991 992 this.exposedFormAjax = new Drupal.ajax($(button).attr('id'), button, this.element_settings); 993 }; 994 995 /** 996 * Attach the ajax behavior to each link. 997 */ 998 Drupal.views.ajaxView.prototype.attachPagerAjax = function () { 999 this.$view.find('ul.pager > li > a, ol.pager > li > a, th.views-field a, .attachment .views-summary a') 1000 .each(jQuery.proxy(this.attachPagerLinkAjax, this)); 1001 }; 1002 1003 /** 1004 * Attach the ajax behavior to a single link. 1005 */ 1006 Drupal.views.ajaxView.prototype.attachPagerLinkAjax = function (id, link) { 1007 var $link = $(link); 1008 var viewData = {}; 1009 var href = $link.attr('href'); 1010 // Don't attach to pagers inside nested views. 1011 if ($link.closest('.view')[0] !== this.$view[0] && 1012 $link.closest('.view').parent().hasClass('attachment') === false) { 1013 return; 1014 } 1015 1016 // Provide a default page if none has been set. This must be done 1017 // prior to merging with settings to avoid accidentally using the 1018 // page landed on instead of page 1. 1019 if (typeof(viewData.page) === 'undefined') { 1020 viewData.page = 0; 1021 } 1022 1023 // Construct an object using the settings defaults and then overriding 1024 // with data specific to the link. 1025 $.extend( 1026 viewData, 1027 this.settings, 1028 Drupal.Views.parseQueryString(href), 1029 // Extract argument data from the URL. 1030 Drupal.Views.parseViewArgs(href, this.settings.view_base_path) 1031 ); 1032
1033 // For anchor tags, these will go to the target of the anchor rather 1034 // than the usual location. 1035 $.extend(viewData, Drupal.Views.parseViewArgs(href, this.settings.view_base_path)); 1036 1037 // Construct an object using the element settings defaults, 1038 // then overriding submit with viewData. 1039 var pager_settings = $.extend({}, this.element_settings); 1040 pager_settings.submit = viewData; 1041 this.pagerAjax = new Drupal.ajax(false, $link, pager_settings); 1042 this.links.push(this.pagerAjax); 1043 }; 1044 1045 Drupal.ajax.prototype.commands.viewsScrollTop = function (ajax, response, status) { 1046 // Scroll to the top of the view. This will allow users 1047 // to browse newly loaded content after e.g. clicking a pager 1048 // link. 1049 var offset = $(response.selector).offset(); 1050 // We can't guarantee that the scrollable object should be 1051 // the body, as the view could be embedded in something 1052 // more complex such as a modal popup. Recurse up the DOM 1053 // and scroll the first element that has a non-zero top. 1054 var scrollTarget = response.selector; 1055 while ($(scrollTarget).scrollTop() == 0 && $(scrollTarget).parent()) { 1056 scrollTarget = $(scrollTarget).parent(); 1057 } 1058 // Only scroll upward. 1059 if (offset.top - 10 < $(scrollTarget).scrollTop()) { 1060 $(scrollTarget).animate({scrollTop: (offset.top - 10)}, 500); 1061 } 1062 }; 1063 1064})(jQuery); 1065; 1066/** 1067 * @file 1068 * JavaScript functions of Views Refresh module. 1069 */ 1070 1071(function ($) { 1072 'use strict'; 1073 1074 function attachEvents(view, dom_id, settings, page) { 1075 var selector = '.view-dom-id-' + dom_id; 1076 // Retrieve the path to use for views' ajax. 1077 var ajax_path = Drupal.settings.views.ajax_path + '/views-refresh'; 1078 1079 // If there are multiple views this might've ended up showing up multiple times. 1080 if (ajax_path.constructor.toString().indexOf("Array") !== -1) { 1081 ajax_path = ajax_path[0]; 1082 } 1083 1084 // Check if there are any GET parameters to send to views. 1085 var queryString = window.location.search || ''; 1086 if (queryString !== '') { 1087 // Remove the question mark and Drupal path component if any. 1088 queryString = queryString.slice(1).replace(/q=[^&]+&?|&?render=[^&]+/, ''); 1089 if (queryString !== '') { 1090 // If there is a '?' in ajax_path, clean url are on and & should be used to add parameters. 1091 queryString = ((/\?/.test(ajax_path)) ? '&' : '?') + queryString; 1092 } 1093 } 1094 1095 var pageOptions = $.extend({}, settings, (page ? {page: page} : {})); 1096 var noScrollOptions = $.extend({}, pageOptions, {views_refresh_noscroll: 1}); 1097 var pageFirstOptions = $.extend({}, settings, {}); 1098 var noScrollFirstOptions = $.extend({}, pageFirstOptions, {views_refresh_noscroll: 1}); 1099 1100 var ajaxSettings = { 1101 url: ajax_path + queryString, 1102 setClick: true, 1103 selector: selector, 1104 progress: { type: 'throbber' } 1105 }; 1106 1107 var refreshAjax = new Drupal.ajax(selector, view, $.extend({}, ajaxSettings, {submit: noScrollOptions, event: 'views_refresh'})); 1108 var refreshScrollAjax = new Drupal.ajax(selector, view, $.extend({}, ajaxSettings, {submit: pageOptions, event: 'views_refresh_scroll'})); 1109 var refreshFirstAjax = new Drupal.ajax(selector, view, $.extend({}, ajaxSettings, {submit: noScrollFirstOptions, event: 'views_refresh_first'})); 1110 var refreshScrollFirstAjax = new Drupal.ajax(selector, view, $.extend({}, ajaxSettings, {submit: pageFirstOptions, event: 'views_refresh_scroll_first'})); 1111 } 1112 1113 Drupal.ajax.prototype.commands.viewsRefresh = function (ajax, response, status) { 1114 var view = $(response.selector); 1115 var event = response.first ? (response.scroll ? 'views_refresh_scroll_first' : 'views_refresh_first') : (response.scroll ? 'views_refresh_scroll' : 'views_refresh'); 1116 view.trigger(event); 1117 }; 1118 1119 Drupal.behaviors.viewsRefresh = { 1120 attach: function (context) { 1121 if (Drupal.settings && Drupal.settings.viewsRefresh && Drupal.settings.views && Drupal.settings.views.ajaxViews) { 1122 $.each(Drupal.settings.viewsRefresh, function (dom_id, page) { 1123 var view = $('.view-dom-id-' + dom_id).once('views-refresh-processed'); 1124 if ((view.length > 0) && (Drupal.settings.views.ajaxViews['views_dom_id:' + dom_id])) { 1125 attachEvents(view, dom_id, Drupal.settings.views.ajaxViews['views_dom_id:' + dom_id], page); 1126 } 1127 }); 1128 } 1129 } 1130 }; 1131 1132})(jQuery); 1133; 1134(function ($) { 1135Drupal.behaviors.lang_dropdown = { 1136 attach: function (context, settings) { 1137 var settings = settings || Drupal.settings; 1138 1139 if (settings.lang_dropdown) { 1140 var flags, msddSettings; 1141 for (key in settings.lang_dropdown) { 1142 msddSettings = settings.lang_dropdown[key].jsWidget; 1143 flags = msddSettings.languageicons; 1144 if (flags) { 1145 $.each(flags, function(index, value) { 1146 if (msddSettings.widget == "msdropdown") { 1147 $('select#lang-dropdown-select-' + key + ' option[value="' + index + '"]', context).attr('data-image', value); 1148 } 1149 else if (msddSettings.widget == "ddslick" && Boolean(msddSettings.showSelectedHTML)) { 1150 $('select#lang-dropdown-select-' + key + ' option[value="' + index + '"]', context).attr('data-imagesrc', value); 1151 } 1152 }); 1153 } 1154 1155 if (msddSettings.widget == "msdropdown") { 1156 try { 1157 $('select#lang-dropdown-select-' + key, context).msDropDown({ 1158 visibleRows: msddSettings.visibleRows, 1159 roundedCorner: Boolean(msddSettings.roundedCorner), 1160 animStyle: msddSettings.animStyle, 1161 event: msddSettings.event, 1162 mainCSS: msddSettings.mainCSS 1163 }); 1164 } 1165 catch (e) { 1166 if (console) { console.log(e); } 1167 } 1168 } 1169 else if (msddSettings.widget == "chosen") { 1170 $('select#lang-dropdown-select-' + key, context).chosen({ 1171 disable_search: msddSettings.disable_search, 1172 no_results_text: msddSettings.no_results_text 1173 }); 1174 } 1175 else if (msddSettings.widget == "ddslick") {
1176 $('select#lang-dropdown-select-' + key, context).ddslick({ 1177 width: (msddSettings.width == 0) ? null : msddSettings.width, 1178 height: (msddSettings.height == 0) ? null : msddSettings.height, 1179 showSelectedHTML: Boolean(msddSettings.showSelectedHTML), 1180 imagePosition: msddSettings.imagePosition, 1181 onSelected: function(data) { 1182 // ddselect also fires this function on initialization, so we have 1183 // to make sure this select has already been initialized. 1184 if (!data.selectedItem.parent().data('ddslick-has-been-initialized')) { 1185 data.selectedItem.parent().data('ddslick-has-been-initialized', true); 1186 return; 1187 } 1188 1189 var lang = data.selectedData.value; 1190 var href = $('#lang-dropdown-select-'+key, context).parents('form').find('input[name="' + lang + '"]').val(); 1191 window.location.href = href; 1192 } 1193 }); 1194 } 1195 } 1196 } 1197 1198 $('select.lang-dropdown-select-element', context).change(function() { 1199 var lang = this.options[this.selectedIndex].value; 1200 var href = $(this).closest('form').find('input[name="' + lang + '"]').val(); 1201 window.location.href = href; 1202 }); 1203 1204 $('form.lang-dropdown-form', context).after('<div style="clear:both;"></div>'); 1205 } 1206}; 1207})(jQuery); 1208;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.