(function() { "use strict"; // Commonly use variables var doc = document; var group = { // Detect and change the top position of the cycle navs cycleFix: function() { if (doc.querySelectorAll(".group-show-post-banner-image").length >= 1) { var imgs = doc.querySelectorAll(".group-show-post-banner-image"), cycleNav = doc.querySelectorAll(".cycle-nav"), len = cycleNav.length, i = -1; // Hide the navs when there's noly one slide if (imgs.length <= 1) { for (i = 0; i < len; i++) { cycleNav[i].classList.add("hide"); } } } else if (doc.querySelectorAll(".group-show-post-banner-image").length === 0 && doc.querySelector(".group-show-post-image-wrap")) { doc.querySelector(".group-show-post-image-wrap").classList.add("hide"); } }, // Create scroll effect (with css) scrollEffect: function(el) { var wrap = doc.querySelector(el), scrollClass = "scroll"; // Use pageYOffset to get the Y positoin and add scroll on it, the animation // is done by css transition if (el) { window.addEventListener("scroll", function() { if (window.pageYOffset > 0) { wrap.classList.add(scrollClass); } else { wrap.classList.remove(scrollClass); } }, false); } }, // Equal height for card equalHeight: function(el) { var bigbrother = -1, $el = $(el); $el.each(function() { bigbrother = bigbrother > $(this).height() ? bigbrother : $(this).height(); }); $el.each(function() { $(this).height(bigbrother); }); }, // We want to place a dropdown in group-post-item, but link cannot be nested, hance this fix makePostClick: function() { var postLink = doc.querySelectorAll('.group-post-link'); if (postLink) { Array.prototype.forEach.call(postLink, function(item) { item.parentNode.classList.add('clickable'); item.parentNode.addEventListener('click', function(e) { window.location.href = item.href; }); }); } }, // Bootstrap dropdown is too much of a hassle, using this instead makeDropdown: function(container, toggle, dropdown, kls) { var $container = $(container), $toggle = $container.find(toggle), $dropdown = $container.find(dropdown), klass = 'open'; $container.on('click', '.toggle', function(e) { if ($(this).hasClass(klass)) { $(toggle).removeClass(klass); $(dropdown).removeClass(klass); } else { $(toggle).removeClass(klass); $(dropdown).removeClass(klass); $(this) .addClass(klass) .next(dropdown) .addClass(klass) } return false; }); $(document.body).on('click', function() { $(toggle).removeClass(klass) $(dropdown).removeClass(klass); }); }, // Third-party plugin settings plugins: function() { // WOWjs if (typeof window.WOW !== 'undefined') { new WOW().init(); } } } // When DOM is completely loaded, execute these functions document.addEventListener("DOMContentLoaded", function(event) { if (doc.querySelector('.group-post')) { group.scrollEffect('.group-post'); group.makeDropdown('.group-post', '.group-post-dropdown-toggle', '.group-post-dropdown'); } if (doc.querySelector('.group-card')) { group.makeDropdown('.group-public', '.group-card-dropdown-toggle', '.group-card-dropdown'); } if (doc.querySelector('.group-index')) { group.makeDropdown('.group-index', '.group-card-dropdown-toggle', '.group-card-dropdown'); } if (doc.querySelector('.group-show-post')) { group.makeDropdown('.group-show-post', '.group-show-post-dropdown-toggle', '.group-show-post-dropdown'); } if (doc.querySelector('.group-member')) { group.scrollEffect('.group-member'); } group.cycleFix(); group.equalHeight('.group-card-inner'); group.equalHeight('.group-admin-edit-image-item'); group.plugins(); }); })();