PageSourceSearch

https://arahant.org/sites/default/files/js/js_P1BPOnxDz_rA7eI8d5GBfwgZvrv8QumLEdXAh7CatII.js

js arahant.org collected 2026-10-02 07:22:07 UTC 43,100 bytes, 951 lines download raw bytes

vendor: 11,960 bytes, lines 1-6
1/*!
2	Colorbox 1.6.4
3	license: MIT
4	http://www.jacklmoore.com/colorbox
5*/
6(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);
6;
7/**
8 * @file
9 * Colorbox module init js.
10 */
11
12(function ($) {
13
14Drupal.behaviors.initColorbox = {
15  attach: function (context, settings) {
16    if (!$.isFunction($.colorbox) || typeof settings.colorbox === 'undefined') {
17      return;
18    }
19
20    if (settings.colorbox.mobiledetect && window.matchMedia) {
21      // Disable Colorbox for small screens.
22      var mq = window.matchMedia("(max-device-width: " + settings.colorbox.mobiledevicewidth + ")");
23      if (mq.matches) {
24        return;
25      }
26    }
27
28    // Use "data-colorbox-gallery" if set otherwise use "rel".
29    settings.colorbox.rel = function () {
30      if ($(this).data('colorbox-gallery')) {
31        return $(this).data('colorbox-gallery');
32      }
33      else {
34        return $(this).attr('rel');
35      }
36    };
37
38    $('.colorbox', context)
39      .once('init-colorbox')
40      .colorbox(settings.colorbox);
41
42    $(context).bind('cbox_complete', function () {
43      Drupal.attachBehaviors('#cboxLoadedContent');
44    });
45  }
46};
47
48})(jQuery);
49;
50/**
51 * @file
52 * Colorbox module style js.
53 */
54
55(function ($) {
56
57Drupal.behaviors.initColorboxDefaultStyle = {
58  attach: function (context, settings) {
59    $(context).bind('cbox_complete', function () {
60      // Only run if there is a title.
61      if ($('#cboxTitle:empty', context).length == false) {
62        $('#cboxLoadedContent img', context).bind('mouseover', function () {
63          $('#cboxTitle', context).slideDown();
64        });
65        $('#cboxOverlay', context).bind('mouseover', function () {
66          $('#cboxTitle', context).slideUp();
67        });
68      }
69      else {
70        $('#cboxTitle', context).hide();
71      }
72    });
73  }
74};
75
76})(jQuery);
77;
78(function($) {
79  Drupal.behaviors.custom_search = {
80    attach: function(context) {
81
82      if (!Drupal.settings.custom_search.solr) {
83        // Check if the search box is not empty on submit
84        $('form.search-form', context).submit(function(){
85          var $this = $(this);
86          var box = $this.find('input.custom-search-box');
87          if (box.val() != undefined && box.val() == '') {
88            $this.find('input.custom-search-box').addClass('error');
89            return false;
90          }
91          // If basic search is hidden, copy or value to the keys
92          if ($this.find('#edit-keys').parents('div.element-invisible').attr('class') == 'element-invisible') {
93            $this.find('#edit-keys').val($this.find('#edit-or').val());
94            $this.find('#edit-or').val('');
95          }
96          return true;
97        });
98      }
99
100      // Search from target
101      $('form.search-form').attr('target', Drupal.settings.custom_search.form_target);
102
103      // Displays Popup.
104      $('form.search-form input.custom-search-box', context).bind('click focus', function(e){
105        var $parentForm = $(this).parents('form');
106        // check if there's something in the popup and displays it
107        var popup = $parentForm.find('fieldset.custom_search-popup');
108        if (popup.find('input,select').length && !popup.hasClass('opened')) {
109          popup.fadeIn().addClass('opened');
110        }
111        e.stopPropagation();
112      });
113      $(document).bind('click focus', function(){
114        $('fieldset.custom_search-popup').hide().removeClass('opened');
115      });
116
117      // Handle checkboxes
118      $('.custom-search-selector input:checkbox', context).each(function(){
119        var el = $(this);
120        if (el.val() == 'c-all') {
121          el.change(function(){
122            $(this).parents('.custom-search-selector').find('input:checkbox[value!=c-all]').attr('checked', false);
123          });
124        }
125        else {
126          if (el.val().substr(0,2) == 'c-') {
127            el.change(function(){
128              $('.custom-search-selector input:checkbox').each(function(){
129                if ($(this).val().substr(0,2) == 'o-') {
130                  $(this).attr('checked', false);
131                }
132              });
133              $(this).parents('.custom-search-selector').find('input:checkbox[value=c-all]').attr('checked', false);
134            });
135          } else {
136            el.change(function(){
137              $(this).parents('.custom-search-selector').find('input
137:checkbox[value!=' + el.val() + ']').attr('checked', false);
138            });
139          }
140        }
141      });
142
143      // Handle popup.
144      var popup = $('fieldset.custom_search-popup:not(.custom_search-processed)', context).addClass("custom_search-processed");
145      popup.click(function(e){
146        e.stopPropagation();
147      })
148      popup.append('<a class="custom_search-popup-close" href="#">' + Drupal.t('Close') + '</a>');
149      $('a.custom_search-popup-close').click(function(e){
150        $('fieldset.custom_search-popup.opened').hide().removeClass('opened');
151        e.preventDefault();
152      });
153
154    }
155  }
156})(jQuery);
157;
158Drupal.TBMegaMenu = Drupal.TBMegaMenu || {};
159
160(function ($) {
161  Drupal.TBMegaMenu.oldWindowWidth = 0;
162  Drupal.TBMegaMenu.displayedMenuMobile = false;
163  Drupal.TBMegaMenu.supportedScreens = [980];
164  Drupal.TBMegaMenu.menuResponsive = function () {
165    var windowWidth = window.innerWidth ? window.innerWidth : $(window).width();
166    var navCollapse = $('.tb-megamenu').children('.nav-collapse');
167    if (windowWidth < Drupal.TBMegaMenu.supportedScreens[0]) {
168      navCollapse.addClass('collapse');
169      if (Drupal.TBMegaMenu.displayedMenuMobile) {
170        navCollapse.css({height: 'auto', overflow: 'visible'});
171      } else {
172        navCollapse.css({height: 0, overflow: 'hidden'});
173      }
174    } else {
175      // If width of window is greater than 980 (supported screen).
176      navCollapse.removeClass('collapse');
177      if (navCollapse.height() <= 0) {
178        navCollapse.css({height: 'auto', overflow: 'visible'});
179      }
180    }
181  };
182  
183  Drupal.behaviors.tbMegaMenuAction = {
184    attach: function(context) {
185      $('.tb-megamenu-button', context).once('menuIstance', function () {
186        var This = this;
187        $(This).click(function() {
188          if(parseInt($(this).parent().children('.nav-collapse').height())) {
189            $(this).parent().children('.nav-collapse').css({height: 0, overflow: 'hidden'});
190            Drupal.TBMegaMenu.displayedMenuMobile = false;
191          }
192          else {
193            $(this).parent().children('.nav-collapse').css({height: 'auto', overflow: 'visible'});
194            Drupal.TBMegaMenu.displayedMenuMobile = true;
195          }
196        });
197      });
198      
199      
200      var isTouch = 'ontouchstart' in window && !(/hp-tablet/gi).test(navigator.appVersion);
201      if(!isTouch){
202        $(document).ready(function($){
203          var mm_duration = 0;
204          $('.tb-megamenu').each (function(){
205            if ($(this).data('duration')) {
206              mm_duration = $(this).data('duration');
207            }
208          });
209          var mm_timeout = mm_duration ? 100 + mm_duration : 500;
210          $('.nav > li, li.mega').hover(function(event) {
211            var $this = $(this);
212            if ($this.hasClass ('mega')) {
213              $this.addClass ('animating');
214              clearTimeout ($this.data('animatingTimeout'));
215              $this.data('animatingTimeout', setTimeout(function(){$this.removeClass ('animating')}, mm_timeout));
216              clearTimeout ($this.data('hoverTimeout'));
217              $this.data('hoverTimeout', setTimeout(function(){$this.addClass ('open')}, 100));  
218            } else {
219              clearTimeout ($this.data('hoverTimeout'));
220              $this.data('hoverTimeout', 
221              setTimeout(function(){$this.addClass ('open')}, 100));
222            }
223          },
224          function(event) {
225            var $this = $(this);
226            if ($this.hasClass ('mega')) {
227              $this.addClass ('animating');
228              clearTimeout ($this.data('animatingTimeout'));
229              $this.data('animatingTimeout', 
230              setTimeout(function(){$this.removeClass ('animating')}, mm_timeout));
231              clearTimeout ($this.data('hoverTimeout'));
232              $this.data('hoverTimeout', setTimeout(function(){$this.removeClass ('open')}, 100));
233            } else {
234              clearTimeout ($this.data('hoverTimeout'));
235              $this.data('hoverTimeout', 
236              setTimeout(function(){$this.removeClass ('open')}, 100));
237            }
238          });
239        });
240      }
241      
242      $(window).resize(function() {
243        var windowWidth = window.innerWidth ? window.innerWidth : $(window).width();
244        if(windowWidth != Drupal.TBMegaMenu.oldWindowWidth){
245          Drupal.TBMegaMenu.oldWindowWidth = windowWidth;
246          Drupal.TBMegaMenu.menuResponsive();
247        }
248      });
249    },
250  }
251})(jQuery);
252
253;
254Drupal.TBMegaMenu = Drupal.TBMegaMenu || {};
255
256(function ($) {
257  Drupal.TBMegaMenu.createTouchMenu = function(items) {
258      items.children('a').each( function() {
259	var $item = $(this);
260        var tbitem = $(this).parent();
261        $item.click( function(event){
262          if ($item.hasClass('tb-megamenu-clicked')) {
263            var $uri = $item.attr('href');
264            window.location.href = $uri;
265          }
266          else {
267            event.preventDefault();
268            $item.addClass('tb-megamenu-clicked');
269            if(!tbitem.hasClass('open')){	
270              tbitem.addClass('open');
271            }
272          }
273        }).closest('li').mouseleave( function(){
274          $item.removeClass('tb-megamenu-clicked');
275          tbitem.removeClass('open');
276        });
277     });
278     /*
279     items.children('a').children('span.caret').each( function() {
280	var $item = $(this).parent();
281        $item.click(function(event){
282          tbitem = $item.parent();
283          if ($item.hasClass('tb-megamenu-clicked')) {
284            Drupal.TBMegaMenu.eventStopPropagation(event);
285            if(tbitem.hasClass('open')){	
286              tbitem.removeClass('open');
287              $item.removeClass('tb-megamenu-clicked');
288            }
289          }
290          else {
291            Drupal.TBMegaMenu.eventStopPropagation(event);
292            $item.addClass('tb-megamenu-clicked');
293            if(!tbitem.hasClass('open')){	
294              tbitem.addClass('open');
295              $item.removeClass('tb-megamenu-clicked');
296            }
297          }
298        });
299     });
300     */
301  }
302  
303  Drupal.TBMegaMenu.eventStopPropagation = function(event) {
304    if (event.stopPropagation) {
305      event.stopPropagation();
306    }
307    else if (window.event) {
308      window.event.cancelBubble = true;
309    }
310  }  
311  Drupal.behaviors.tbMegaMenuTouchAction = {
312    attach: function(context) {
313      var isTouch = 'ontouchstart' in window && !(/hp-tablet/gi).test(navigator.appVersion);
314      if(isTouch){
315        $('html').addClass('touch');
316        Drupal.TBMegaMenu.createTouchMenu($('.tb-megamenu ul.nav li.mega').has('.dropdown-menu'));
317      }
318    }
319  }
320})(jQuery);
321;
322(function ($) {
323
324  Drupal.behaviors.captcha = {
325    attach: function (context) {
326
327      // Turn off autocompletion for the CAPTCHA response field.
328      // We do it here with JavaScript (instead of directly in the markup)
329      // because this autocomplete attribute is not standard and
330      // it would break (X)HTML compliance.
331      $("#edit-captcha-response").attr("autocomplete", "off");
332
333    }
334  };
335
336  Drupal.behaviors.captchaAdmin = {
337    attach: function (context) {
338      // Add onclick handler to checkbox for adding a CAPTCHA description
339      // so that the textfields for the CAPTCHA description are hidden
340      // when no description should be added.
341      // @todo: div.form-item-captcha-description depends on theming, maybe
342      // it's better to add our own wrapper with id (instead of a class).
343      $("#edit-captcha-add-captcha-description").click(function() {
344        if ($("#edit-captcha-add-captcha-description").is(":checked")) {
345          // Show the CAPTCHA description textfield(s).
346          $("div.form-item-captcha-description").show('slow');
347        }
348        else {
349          // Hide the CAPTCHA description textfield(s).
350          $("div.form-item-captcha-description").hide('slow');
351        }
352      });
353      // Hide the CAPTCHA description textfields if option is disabled on page load.
354      if (!$("#edit-captcha-add-captcha-description").is(":checked")) {
355        $("div.form-item-captcha-description").hide();
356      }
357    }
358
359  };
360
361})(jQuery);
362;
363/**
364 * @file
365 * Some basic behaviors and utility functions for Views.
366 */
367(function ($) {
368
369  Drupal.Views = {};
370
371  /**
372   * JQuery UI tabs, Views integration component.
373   */
374  Drupal.behaviors.viewsTabs = {
375    attach: function (context) {
376      if ($.viewsUi && $.viewsUi.tabs) {
377        $('#views-tabset').once('views-processed').viewsTabs({
378          selectedClass: 'active'
379        });
380      }
381
382      $('a.views-remove-link').once('views-processed').click(function(event) {
383        var id = $(this).attr('id').replace('views-remove-link-', '');
384        $('#views-row-' + id).hide();
385        $('#views-removed-' + id).attr('checked', true);
386        event.preventDefault();
387      });
388      /**
389    * Here is to handle display deletion
390    * (checking in the hidden checkbox and hiding out the row).
391    */
392      $('a.display-remove-link')
393        .addClass('display-processed')
394        .click(function() {
395          var id = $(this).attr('id').replace('display-remove-link-', '');
396          $('#display-row-' + id).hide();
397          $('#display-removed-' + id).attr('checked', true);
398          return false;
399        });
400    }
401  };
402
403  /**
404 * Helper function to parse a querystring.
405 */
406  Drupal.Views.parseQueryString = function (query) {
407    var args = {};
408    var pos = query.indexOf('?');
409    if (pos != -1) {
410      query = query.substring(pos + 1);
411    }
412    var pairs = query.split('&');
413    for (var i in pairs) {
414      if (typeof(pairs[i]) == 'string') {
415        var pair = pairs[i].split('=');
416        // Ignore the 'q' path argument, if present.
417        if (pair[0] != 'q' && pair[1]) {
418          args[decodeURIComponent(pair[0].replace(/\+/g, ' '))] = decodeURIComponent(pair[1].replace(/\+/g, ' '));
419        }
420      }
421    }
422    return args;
423  };
424
425  /**
426 * Helper function to return a view's arguments based on a path.
427 */
428  Drupal.Views.parseViewArgs = function (href, viewPath) {
429
430    // Provide language prefix.
431    if (Drupal.settings.pathPrefix) {
432      var viewPath = Drupal.settings.pathPrefix + viewPath;
433    }
434    var returnObj = {};
435    var path = Drupal.Views.getPath(href);
436    // Ensure we have a correct path.
437    if (viewPath && path.substring(0, viewPath.length + 1) == viewPath + '/') {
438      var args = decodeURIComponent(path.substring(viewPath.length + 1, path.length));
439      returnObj.view_args = args;
440      returnObj.view_path = path;
441    }
442    return returnObj;
443  };
444
445  /**
446 * Strip off the protocol plus domain from an href.
447 */
448  Drupal.Views.pathPortion = function (href) {
449    // Remove e.g. http://example.com if present.
450    var protocol = window.location.protocol;
451    if (href.substring(0, protocol.length) == protocol) {
452      // 2 is the length of the '//' that normally follows the protocol.
453      href = href.substring(href.indexOf('/', protocol.length + 2));
454    }
455    return href;
456  };
457
458  /**
459 * Return the Drupal path portion of an href.
460 */
461  Drupal.Views.getPath = function (href) {
462    href = Drupal.Views.pathPortion(href);
463    href = href.substring(Drupal.settings.basePath.length, href.length);
464    // 3 is the length of the '?q=' added to the url without clean urls.
465    if (href.substring(0, 3) == '?q=') {
466      href = href.substring(3, href.length);
467    }
468    var chars = ['#', '?', '&'];
469    for (var i in chars) {
470      if (href.indexOf(chars[i]) > -1) {
471        href = href.substr(0, href.indexOf(chars[i]));
472      }
473    }
474    return href;
475  };
476
477})(jQuery);
478;
479(function ($) {
480
481/**
482 * A progressbar object. Initialized with the given id. Must be inserted into
483 * the DOM afterwards through progressBar.element.
484 *
485 * method is the function which will perform the HTTP request to get the
486 * progress bar state. Either "GET" or "POST".
487 *
488 * e.g. pb = new progressBar('myProgressBar');
489 *      some_element.appendChild(pb.element);
490 */
491Drupal.progressBar = function (id, updateCallback, method, errorCallback) {
492  var pb = this;
493  this.id = id;
494  this.method = method || 'GET';
495  this.updateCallback = updateCallback;
496  this.errorCallback = errorCallback;
497
498  // The WAI-ARIA setting aria-live="polite" will announce changes after users
499  // have completed their current activity and not interrupt the screen reader.
500  this.element = $('<div class="progress-wrapper" aria-live="polite"></div>');
501  this.element.html('<div id ="' + id + '" class="progress progress-striped active">' +
502                    '<div class="progress-bar" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0">' +
503                    '<div class="percentage sr-only"></div>' +
504                    '</div></div>' +
505                    '</div><div class="percentage pull-right"></div>' +
506                    '<div class="message">&nbsp;</div>');
507};
508
509/**
510 * Set the percentage and status message for the progressbar.
511 */
512Drupal.progressBar.prototype.setProgress = function (percentage, message) {
513  if (percentage >= 0 && percentage <= 100) {
514    $('div.progress-bar', this.element).css('width', percentage + '%');
515    $('div.progress-bar', this.element).attr('aria-valuenow', percentage);
516    $('div.percentage', this.element).html(percentage + '%');
517  }
518  $('div.message', this.element).html(message);
519  if (this.updateCallback) {
520    this.updateCallback(percentage, message, this);
521  }
522};
523
524/**
525 * Start monitoring progress via Ajax.
526 */
527Drupal.progressBar.prototype.startMonitoring = function (uri, delay) {
528  this.delay = delay;
529  this.uri = uri;
530  this.sendPing();
531};
532
533/**
534 * Stop monitoring progress via Ajax.
535 */
536Drupal.progressBar.prototype.stopMonitoring = function () {
537  clearTimeout(this.timer);
538  // This allows monitoring to be stopped from within the callback.
539  this.uri = null;
540};
541
542/**
543 * Request progress data from server.
544 */
545Drupal.progressBar.prototype.sendPing = function () {
546  if (this.timer) {
547    clearTimeout(this.timer);
548  }
549  if (this.uri) {
550    var pb = this;
551    // When doing a post request, you need non-null data. Otherwise a
552    // HTTP 411 or HTTP 406 (with Apache mod_security) error may result.
553    $.ajax({
554      type: this.method,
555      url: this.uri,
556      data: '',
557      dataType: 'json',
558      success: function (progress) {
559        // Display errors.
560        if (progress.status == 0) {
561          pb.displayError(progress.data);
562          return;
563        }
564        // Update display.
565        pb.setProgress(progress.percentage, progress.message);
566        // Schedule next timer.
567        pb.timer = setTimeout(function () { pb.sendPing(); }, pb.delay);
568      },
569      error: function (xmlhttp) {
570        pb.displayError(Drupal.ajaxError(xmlhttp, pb.uri));
571      }
572    });
573  }
574};
575
576/**
577 * Display errors on the page.
578 */
579Drupal.progressBar.prototype.displayError = function (string) {
580  var error = $('<div class="alert alert-block alert-error"><a class="close" data-dismiss="alert" href="#">&times;</a><h4>Error message</h4></div>').append(string);
581  $(this.element).before(error).hide();
582
583  if (this.errorCallback) {
584    this.errorCallback(this);
585  }
586};
587
588})(jQuery);
589;
590/**
591 * @file
592 * Handles AJAX fetching of views, including filter submission and response.
593 */
594(function ($) {
595
596  /**
597   * Attaches the AJAX behavior to exposed filter forms and key views links.
598   */
599  Drupal.behaviors.ViewsAjaxView = {};
600  Drupal.behaviors.ViewsAjaxView.attach = function() {
601    if (Drupal.settings && Drupal.settings.views && Drupal.settings.views.ajaxViews) {
602      $.each(Drupal.settings.views.ajaxViews, function(i, settings) {
603        Drupal.views.instances[i] = new Drupal.views.ajaxView(settings);
604      });
605    }
606  };
607
608  Drupal.views = {};
609  Drupal.views.instances = {};
610
611  /**
612   * JavaScript object for a certain view.
613   */
614  Drupal.views.ajaxView = function(settings) {
615    var selector = '.view-dom-id-' + settings.view_dom_id;
616    this.$view = $(selector);
617
618    // Retrieve the path to use for views' ajax.
619    var ajax_path = Drupal.settings.views.ajax_path;
620
621    // If there are multiple views this might've ended up showing up multiple
622    // times.
623    if (ajax_path.constructor.toString().indexOf("Array") != -1) {
624      ajax_path = ajax_path[0];
625    }
626
627    // Check if there are any GET parameters to send to views.
628    var queryString = window.location.search || '';
629    if (queryString !== '') {
630      // Remove the question mark and Drupal path component if any.
631      var queryString = queryString.slice(1).replace(/q=[^&]+&?|&?render=[^&]+/, '');
632      if (queryString !== '') {
633        // If there is a '?' in ajax_path, clean url are on and & should be
634        // used to add parameters.
635        queryString = ((/\?/.test(ajax_path)) ? '&' : '?') + queryString;
636      }
637    }
638
639    this.element_settings = {
640      url: ajax_path + queryString,
641      submit: settings,
642      setClick: true,
643      event: 'click',
644      selector: selector,
645      progress: {
646        type: 'throbber'
647      }
648    };
649
650    this.settings = settings;
651
652    // Add the ajax to exposed forms.
653    this.$exposed_form = $('#views-exposed-form-' + settings.view_name.replace(/_/g, '-') + '-' + settings.view_display_id.replace(/_/g, '-'));
654    this.$exposed_form.once(jQuery.proxy(this.attachExposedFormAjax, this));
655
656    // Store Drupal.ajax objects here for all pager links.
657    this.links = [];
658
659    // Add the ajax to pagers.
660    this.$view
661      .once(jQuery.proxy(this.attachPagerAjax, this));
662
663    // Add a trigger to update this view specifically. In order to trigger a
664    // refresh use the following code.
665    //
666    // @code
667    // jQuery('.view-name').trigger('RefreshView');
668    // @endcode
669    // Add a trigger to update this view specifically.
670    var self_settings = this.element_settings;
671    self_settings.event = 'RefreshView';
672    this.refreshViewAjax = new Drupal.ajax(this.selector, this.$view, self_settings);
673  };
674
675  Drupal.views.ajaxView.prototype.attachExposedFormAjax = function() {
676    var button = $('input[type=submit], button[type=submit], input[type=image]', this.$exposed_form);
677    button = button[0];
678
679    // Call the autocomplete submit before doing AJAX.
680    $(button).click(function () {
681      if (Drupal.autocompleteSubmit) {
682        Drupal.autocompleteSubmit();
683      }
684    });
685
686    this.exposedFormAjax = new Drupal.ajax($(button).attr('id'), button, this.element_settings);
687  };
688
689  /**
690   * Attach the ajax behavior to each link.
691   */
692  Drupal.views.ajaxView.prototype.attachPagerAjax = function() {
693    this.$view.find('ul.pager > li > a, th.views-field a, .attachment .views-summary a')
694      .each(jQuery.proxy(this.attachPagerLinkAjax, this));
695  };
696
697  /**
698   * Attach the ajax behavior to a singe link.
699   */
700  Drupal.views.ajaxView.prototype.attachPagerLinkAjax = function(id, link) {
701    var $link = $(link);
702    // Don't attach to pagers inside nested views.
703    if ($link.closest('.view')[0] !== this.$view[0]) {
704      return;
705    }
706    var viewData = {};
707    var href = $link.attr('href');
708
709    // Provide a default page if none has been set. This must be done
710    // prior to merging with settings to avoid accidentally using the
711    // page landed on instead of page 1.
712    if (typeof(viewData.page) === 'undefined') {
713      viewData.page = 0;
714    }
715
716    // Construct an object using the settings defaults and then overriding
717    // with data specific to the link.
718    $.extend(
719    viewData,
720    this.settings,
721    Drupal.Views.parseQueryString(href),
722    // Extract argument data from the URL.
723    Drupal.Views.parseViewArgs(href, this.settings.view_base_path)
724    );
725
726    // For anchor tags, these will go to the target of the anchor rather
727    // than the usual location.
728    $.extend(viewData, Drupal.Views.parseViewArgs(href, this.settings.view_base_path));
729
730    this.element_settings.submit = viewData;
731    this.pagerAjax = new Drupal.ajax(false, $link, this.element_settings);
732    this.links.push(this.pagerAjax);
733  };
734
735  Drupal.ajax.prototype.commands.viewsScrollTop = function (ajax, response, status) {
736    // Scroll to the top of the view. This will allow users
737    // to browse newly loaded content after e.g. clicking a pager
738    // link.
739    var offset = $(response.selector).offset();
740    // We can't guarantee that the scrollable object should be
741    // the body, as the view could be embedded in something
742    // more complex such as a modal popup. Recurse up the DOM
743    // and scroll the first element that has a non-zero top.
744    var scrollTarget = response.selector;
745    while ($(scrollTarget).scrollTop() == 0 && $(scrollTarget).parent()) {
746      scrollTarget = $(scrollTarget).parent();
747    }
748    // Only scroll upward.
749    if (offset.top - 10 < $(scrollTarget).scrollTop()) {
750      $(scrollTarget).animate({scrollTop: (offset.top - 10)}, 500);
751    }
752  };
753
754})(jQuery);
755;
756(function ($) {
757
758Drupal.googleanalytics = {};
759
760$(document).ready(function() {
761
762  // Attach mousedown, keyup, touchstart events to document only and catch
763  // clicks on all elements.
764  $(document.body).bind("mousedown keyup touchstart", function(event) {
765
766    // Catch the closest surrounding link of a clicked element.
767    $(event.target).closest("a,area").each(function() {
768
769      // Is the clicked URL internal?
770      if (Drupal.googleanalytics.isInternal(this.href)) {
771        // Skip 'click' tracking, if custom tracking events are bound.
772        if ($(this).is('.colorbox') && (Drupal.settings.googleanalytics.trackColorbox)) {
773          // Do nothing here. The custom event will handle all tracking.
774          //console.info("Click on .colorbox item has been detected.");
775        }
776        // Is download tracking activated and the file extension configured for download tracking?
777        else if (Drupal.settings.googleanalytics.trackDownload && Drupal.googleanalytics.isDownload(this.href)) {
778          // Download link clicked.
779          ga("send", {
780            "hitType": "event",
781            "eventCategory": "Downloads",
782            "eventAction": Drupal.googleanalytics.getDownloadExtension(this.href).toUpperCase(),
783            "eventLabel": Drupal.googleanalytics.getPageUrl(this.href),
784            "transport": "beacon"
785          });
786        }
787        else if (Drupal.googleanalytics.isInternalSpecial(this.href)) {
788          // Keep the internal URL for Google Analytics website overlay intact.
789          ga("send", {
790            "hitType": "pageview",
791            "page": Drupal.googleanalytics.getPageUrl(this.href),
792            "transport": "beacon"
793          });
794        }
795      }
796      else {
797        if (Drupal.settings.googleanalytics.trackMailto && $(this).is("a[href^='mailto:'],area[href^='mailto:']")) {
798          // Mailto link clicked.
799          ga("send", {
800            "hitType": "event",
801            "eventCategory": "Mails",
802            "eventAction": "Click",
803            "eventLabel": this.href.substring(7),
804            "transport": "beacon"
805          });
806        }
807        else if (Drupal.settings.googleanalytics.trackOutbound && this.href.match(/^\w+:\/\//i)) {
808          if (Drupal.settings.googleanalytics.trackDomainMode !== 2 || (Drupal.settings.googleanalytics.trackDomainMode === 2 && !Drupal.googleanalytics.isCrossDomain(this.hostname, Drupal.settings.googleanalytics.trackCrossDomains))) {
809            // External link clicked / No top-level cross domain clicked.
810            ga("send", {
811              "hitType": "event",
812              "eventCategory": "Outbound links",
813              "eventAction": "Click",
814              "eventLabel": this.href,
815              "transport": "beacon"
816            });
817          }
818        }
819      }
820    });
821  });
822
823  // Track hash changes as unique pageviews, if this option has been enabled.
824  if (Drupal.settings.googleanalytics.trackUrlFragments) {
825    window.onhashchange = function() {
826      ga("send", {
827        "hitType": "pageview",
828        "page": location.pathname + location.search + location.hash
829      });
830    };
831  }
832
833  // Colorbox: This event triggers when the transition has completed and the
834  // newly loaded content has been revealed.
835  if (Drupal.settings.googleanalytics.trackColorbox) {
836    $(document).bind("cbox_complete", function () {
837      var href = $.colorbox.element().attr("href");
838      if (href) {
839        ga("send", {
840          "hitType": "pageview",
841          "page": Drupal.googleanalytics.getPageUrl(href)
842        });
843      }
844    });
845  }
846
847});
848
849/**
850 * Check whether the hostname is part of the cross domains or not.
851 *
852 * @param string hostname
853 *   The hostname of the clicked URL.
854 * @param array crossDomains
855 *   All cross domain hostnames as JS array.
856 *
857 * @return boolean
858 */
859Drupal.googleanalytics.isCrossDomain = function (hostname, crossDomains) {
860  /**
861   * jQuery < 1.6.3 bug: $.inArray crushes IE6 and Chrome if second argument is
862   * `null` or `undefined`, https://bugs.jquery.com/ticket/10076,
863   * https://github.com/jquery/jquery/commit/a839af034db2bd934e4d4fa6758a3fed8de74174
864   *
865   * @todo: Remove/Refactor in D8
866   */
867  if (!crossDomains) {
868    return false;
869  }
870  else {
871    return $.inArray(hostname, crossDomains) > -1 ? true : false;
872  }
873};
874
875/**
876 * Check whether this is a download URL or not.
877 *
878 * @param string url
879 *   The web url to check.
880 *
881 * @return boolean
882 */
883Drupal.googleanalytics.isDownload = function (url) {
884  var isDownload = new RegExp("\\.(" + Drupal.settings.googleanalytics.trackDownloadExtensions + ")([\?#].*)?$", "i");
885  return isDownload.test(url);
886};
887
888/**
889 * Check whether this is an absolute internal URL or not.
890 *
891 * @param string url
892 *   The web url to check.
893 *
894 * @return boolean
895 */
896Drupal.googleanalytics.isInternal = function (url) {
897  var isInternal = new RegExp("^(https?):\/\/" + window.location.host, "i");
898  return isInternal.test(url);
899};
900
901/**
902 * Check whether this is a special URL or not.
903 *
904 * URL types:
905 *  - gotwo.module /go/* links.
906 *
907 * @param string url
908 *   The web url to check.
909 *
910 * @return boolean
911 */
912Drupal.googleanalytics.isInternalSpecial = function (url) {
913  var isInternalSpecial = new RegExp("(\/go\/.*)$", "i");
914  return isInternalSpecial.test(url);
915};
916
917/**
918 * Extract the relative internal URL from an absolute internal URL.
919 *
920 * Examples:
921 * - https://mydomain.com/node/1 -> /node/1
922 * - https://example.com/foo/bar -> https://example.com/foo/bar
923 *
924 * @param string url
925 *   The web url to check.
926 *
927 * @return string
928 *   Internal website URL
929 */
930Drupal.googleanalytics.getPageUrl = function (url) {
931  var extractInternalUrl = new RegExp("^(https?):\/\/" + window.location.host, "i");
932  return url.replace(extractInternalUrl, '');
933};
934
935/**
936 * Extract the download file extension from the URL.
937 *
938 * @param string url
939 *   The web url to check.
940 *
941 * @return string
942 *   The file extension of the passed url. e.g. "zip", "txt"
943 */
944Drupal.googleanalytics.getDownloadExtension = function (url) {
945  var extractDownloadextension = new RegExp("\\.(" + Drupal.settings.googleanalytics.trackDownloadExtensions + ")([\?#].*)?$", "i");
946  var extension = extractDownloadextension.exec(url);
947  return (extension === null) ? '' : extension[1];
948};
949
950})(jQuery);
951;

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.