PageSourceSearch

https://planetarioroma.it/sites/default/files/js/js_220mWXnhLpOtZQqWNay5Gbyr9CotU-fBtdWhs9e7oFw.js

js planetarioroma.it collected 2026-09-26 01:50:23 UTC 96,425 bytes, 1,208 lines download raw bytes

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&&gt(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Ce.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&gt(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">&nbsp;</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 &lt; and &gt; 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.