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();