HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/ZelfVerkopen/zelfverkopen.nl/resources/assets/js/site/faqHandler.js
/* ==========================================================================
 Navigation handler
 ========================================================================== */

/**
 * Main navigation
 */
var Faq = {

    // Faq items settings
    items: [],
    amount: 0,

    // Faq Page extended settings
    faqPageWrapper: null,
    activeCategory: 0,
    categoryButtons: null,
    categoryButtonsLength: 0,
    categoryTitleElement: null,
    categoryQuestionContainers: null,

    // Initialize click event
    init : function()
    {
        // Bind Navigation to Handler
        Faq.items = document.querySelectorAll('.faq-items .faq-item');
        Faq.amount = Faq.items.length;
        
        if(Faq.amount > 0){
            for(var i = 0; i < Faq.amount; i++){
                Faq.items[i].addEventListener('click', function () {
                    Faq.toggle(this);
                });
            }
        }

        // Extended interaction for faq page
        Faq.faqPageWrapper = document.getElementById('faqQuestions');
        if(isset(Faq.faqPageWrapper)){

            // Define the objects of the Faq Pages
            Faq.categoryButtons = Faq.faqPageWrapper.querySelectorAll('.question-categories ul li');
            Faq.categoryButtonsLength = Faq.categoryButtons.length;
            Faq.categoryQuestionContainers = Faq.faqPageWrapper.querySelectorAll('.questions-container-placeholder .questions-container');
            Faq.categoryTitleElement = Faq.faqPageWrapper.querySelector('.questions-container-placeholder .title');

            for(var i = 0; i < Faq.categoryButtonsLength; i++){
                var categoryButton = Faq.categoryButtons[i];
                categoryButton.addEventListener('click', function () {
                    Faq.changeFaqCategory(this);
                });
            }
        }

    },

    // Toggle faq
    toggle : function(question)
    {
        // Determine if currently open or closed
        var boolean = true;
        var answer = question.querySelector('.answer');
        var answerContent = question.querySelector('.answer .inner-content');

        if(question.getAttribute('data-open') === 'true'){
            boolean = false;
            answer.style.maxHeight = 0;
        }
        else{
            answer.style.maxHeight = answerContent.offsetHeight + 'px';
        }

        question.setAttribute('data-open', boolean);
    },
    
    // Change Faq Question Category
    changeFaqCategory: function (categoryButton) {

        Faq.activeCategory = categoryButton.getAttribute('data-category');
        var categoryString = categoryButton.getAttribute('data-name');

        // CategoryButtons and CategoryContainers have the same length and order so we only need one loop
        for(var i = 0; i < Faq.categoryButtonsLength; i++){

            var categoryButton = Faq.categoryButtons[i];
            var categoryQuestionContainer = Faq.categoryQuestionContainers[i];

            if(categoryButton.getAttribute('data-category') === Faq.activeCategory && categoryQuestionContainer.getAttribute('data-category') === Faq.activeCategory){
                categoryButton.classList.add('active');
                categoryQuestionContainer.classList.add('active');
                Faq.categoryTitleElement.innerHTML = categoryString;
            }
            else{
                categoryButton.classList.remove('active');
                categoryQuestionContainer.classList.remove('active');
            }
        }
    }
};

Faq.init();