(function ($) { Drupal.behaviors.initFaqModule = { attach: function (context) { // Hide/show answer for a question. var faq_hide_qa_accordion = Drupal.settings.faq.faq_hide_qa_accordion; $('div.faq-dd-hide-answer', context).addClass("collapsible collapsed"); if (!faq_hide_qa_accordion) { $('div.faq-dd-hide-answer:not(.faq-processed)', context).addClass('faq-processed').hide(); } $('div.faq-dt-hide-answer:not(.faq-processed)', context).addClass('faq-processed').click(function() { if (faq_hide_qa_accordion) { $('div.faq-dt-hide-answer').not($(this)).removeClass('faq-qa-visible'); } $(this).toggleClass('faq-qa-visible'); $(this).parent().addClass('faq-viewed'); $('div.faq-dd-hide-answer').not($(this).next('div.faq-dd-hide-answer')).addClass("collapsed"); if (!faq_hide_qa_accordion) { $(this).next('div.faq-dd-hide-answer').slideToggle('fast', function() { $(this).parent().toggleClass('expanded'); }); } $(this).next('div.faq-dd-hide-answer').toggleClass("collapsed"); // Change the fragment, too, for permalink/bookmark. // To keep the current page from scrolling, refs // http://stackoverflow.com/questions/1489624/modifying-document-location-hash-without-page-scrolling/1489802#1489802 var hash = $(this).find('a').attr('id'); var fx, node = $('#' + hash); if (node.length) { fx = $('
') .css({position: 'absolute', visibility: 'hidden', top: $(window).scrollTop() + 'px'}) .attr('id', hash) .appendTo(document.body); node.attr('id', ''); } document.location.hash = hash; if (node.length) { fx.remove(); node.attr('id', hash); } // Scroll the page if the collapsed FAQ is not visible. // If we have the toolbar so the title may be hidden by the bar. var mainScrollTop = Math.max($('html', context).scrollTop(), $('body', context).scrollTop()); // We compute mainScrollTop because the behaviour is different on FF, IE and CR if (mainScrollTop > $(this).offset().top) { $('html, body', context).animate({ scrollTop: $(this).offset().top }, 1); } return false; }); // Show any question identified by a fragment if (/^#\w+$/.test(document.location.hash)) { $('div.faq-dt-hide-answer ' + document.location.hash).parents('.faq-dt-hide-answer').triggerHandler('click'); } // Hide/show q/a for a category. var faq_category_hide_qa_accordion = Drupal.settings.faq.faq_category_hide_qa_accordion; $('div.faq-qa-hide', context).addClass("collapsible collapsed"); if (!faq_category_hide_qa_accordion) { $('div.faq-qa-hide', context).hide(); } $('div.faq-qa-header .faq-header:not(.faq-processed)', context).addClass('faq-processed').click(function() { var $this = $(this); if (faq_category_hide_qa_accordion) { $('.faq-category-qa-visible').not($('.faq-category-qa-visible').closest('.faq-category-group').has($this).children('div.faq-qa-hide')).removeClass('faq-category-qa-visible'); } $(this).toggleClass('faq-category-qa-visible'); $('div.faq-qa-hide').not($this.parent().siblings('div.faq-qa-hide')).not($('div.faq-qa-hide').closest('.faq-category-group').has($this).children('div.faq-qa-hide')).addClass("collapsed"); if (!faq_category_hide_qa_accordion) { $this.parent().siblings('div.faq-qa-hide').slideToggle('fast', function() { $(this).parent().toggleClass('expanded'); }); } $this.parent().siblings('div.faq-qa-hide').toggleClass("collapsed"); // Scroll the page if the collapsed FAQ is not visible. // If we have the toolbar so the title may be hidden by the bar. var mainScrollTop = Math.max($('html', context).scrollTop(), $('body', context).scrollTop()); // We compute mainScrollTop because the behaviour is different on FF, IE and CR if (mainScrollTop > $this.offset().top) { $('html, body', context).animate({ scrollTop: $this.offset().top }, 1); } return false; }); // Show expand all link. if (!faq_hide_qa_accordion && !faq_category_hide_qa_accordion) { $('#faq-expand-all', context).show(); $('#faq-expand-all a.faq-expand-all-link', context).show(); // Add collapse link click event. $('#faq-expand-all a.faq-collapse-all-link:not(.faq-processed)', context).addClass('faq-processed').click(function () { $(this).hide(); $('#faq-expand-all a.faq-expand-all-link').show(); $('div.faq-qa-hide').slideUp('slow', function() { $(this).removeClass('expanded'); }); $('div.faq-dd-hide-answer').slideUp('slow', function() { $(this).removeClass('expanded'); }); }); // Add expand link click event. $('#faq-expand-all a.faq-expand-all-link:not(.faq-processed)', context).addClass('faq-processed').click(function () { $(this).hide(); $('#faq-expand-all a.faq-collapse-all-link').show(); $('div.faq-qa-hide').slideDown('slow', function() { $(this).addClass('expanded'); }); $('div.faq-dd-hide-answer').slideDown('slow', function() { $(this).addClass('expanded'); }); }); } } }; })(jQuery);