HEX
Server: Apache
System: Linux WWW 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64
User: web11 (1011)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: /var/www/intranet.kauko.lt/wp-content/themes/woffice/js/scripts.js
/**
 * Main Woffice object
 *
 * @since 2.5.0
 * @type {{}}
 */
var Woffice = {

    /**
     * Initialize the Woffice's JS
     *
     * @param {jQuery} $
     */
    init: function ($) {

        "use strict";

        var self = this;

        self.$ = (typeof $ === 'undefined') ? jQuery : $;
        self.data = (typeof WOFFICE !== 'undefined') ? WOFFICE : {};

        /*
         * Markup attributes
         */
        self.$body = self.$('body');
        self.$main = self.$("#main-content");
        self.$navigation = self.$("#navigation");
        self.$navbar = self.$('#navbar');
        self.$searchTrigger = self.$("#search-trigger");
        self.$formMembers = self.$("#members-directory-form");
        self.$mainSearch = self.$("#main-search");
        self.$navWrapper = self.$("#nav-languages");
        self.$navTrigger = self.$("a#nav-trigger");
        self.$scrollHelper = self.$('#can-scroll');
        self.$rightSidebar = self.$("#right-sidebar");
        self.$sidebarTrigger = self.$("a#nav-sidebar-trigger");

        // This override the Menu Threshold set in the Theme Settings. It would be a great idea to just remove that option
        if (Woffice.$body.hasClass('menu-is-horizontal')) {
            Woffice.data.menu_threshold = 992;
        } else {
            Woffice.data.menu_threshold = 450;
        }

        self.buddyPress.clearCache();

        /*
         * When the page is starting
         */
        self.$(window).load(function () {
            self.userSidebar.start();
            self.userSidebar.Monitor_sidebars();
            self.alerts.start();
            self.customScrollbars.start();
            self.wooCommerce.start();
            self.tooltips.start();
            self.wiki.start();
            self.frontend.start();
            self.sliders.start();
            self.animatedNumbers.start();
            self.footer.start();
            self.menu.start();
            self.masonryLayout.start();
            self.navigation.start();
            self.sidebar.start();
            self.buddyPress.responsiveMenu();
            self.WpJobManager.start();
            self.ProjectGridListView.start();
            self.TododExtraTabs.watch();
            self.collapseMenu.currentMenuOpen();
            self.select2runner.watch();
        });

        /*
         * When the page is re sized
         */
        self.$(window).resize(function () {

            self.wooCommerce.resize();
            self.menu.submenus();
            self.masonryLayout.refresh();
            self.navigation.resize();
            self.sidebar.resize();
            self.buddyPress.responsiveMenu();

        });

        /*
         * Watchers, binding events after page load
         */
        {
            self.userSidebar.watch();
            self.userSidebar.Monitor_sidebars();
            self.alerts.watch();
            self.searchBar.watch();
            self.advancedSearch.watch();
            self.rolesFilter.watch();
            self.wooCommerce.watch();
            self.languageSwitcher.watch();
            self.sliders.watch();
            self.buddyPress.watchOldActivities();
            self.buddyPress.watchActivityMeta();
            self.buddyPress.watchAdvancedSearch();
            self.scrollTop.watch();
            self.linkEffect.watch();
            self.masonryLayout.watch();
            self.navigation.watch();
            self.navigation.watchResponsiveToggle();
            self.sidebar.watch();
            self.buddyPressNotifications.watch();
            self.buddyPress.BPGirdEdge();
            self.TododExtraTabs.watch();
            self.collapseMenu.slideToggleSubmenu();
            self.collapseMenu.OnHoverArrowIconColor();
        }

    },

    /**
     * Creates a new loader
     *
     * @param {jQuery} $el
     * @param {object} newOptions
     * @return {Spinner}
     */
    loader: function ($el, newOptions) {

        var self = this;

        self.isLoading = false;

        self.options = {
            color: '#757575',
            className: 'woffice-spinner',
            top: '50%',
            speed: 1.6
        };

        // Set default versions
        if (typeof newOptions !== 'undefined')
            Woffice.$.extend(self.options, newOptions);

        /**
         * Creates the loader
         */
        self.create = function () {

            // Loader object
            self.loader = new Spinner(self.options);
            self.loader.spin($el[0]);
            self.loader.element = $el;

            // Element change
            self.loader.element.addClass('has-loader');

            // Watcher variable
            self.isLoading = true;

        };

        /**
         * Removes a loader
         */
        self.remove = function () {

            // Element change
            self.loader.element.removeClass('has-loader');

            // Stop the spinner
            self.loader.stop();

            // Remove the loader
            self.loader = null;

            // Watcher variable
            self.isLoading = false;

        };

        self.create();

        return self;

    },

    /*
     * New Menu Layout
     */
    collapseMenu: {
        slideToggleSubmenu: function () {
            var $ = Woffice.$;
            if ($('#navigation li').find(".click_menutoggle").length === 0) {
                $('#navigation li').prepend('<span class="click_menutoggle"></span>');
            }
            $('#navigation li span.click_menutoggle').on('click', function () {
                var parentModContainer = $(this).parent("li");
                var isMobileMega = parentModContainer.children('.mega-menu').children();
                $(this).toggleClass('caret-up');
                $(this).siblings('a').toggleClass('current-menu-highlight');
                if (parentModContainer.hasClass('menu-item-has-mega-menu')) {
                    parentModContainer.find('> .mega-menu').slideToggle(500);
                    if (isMobileMega.length > 0 || $('#main-modern-menu').hasClass('menu-loop-happened')) {
                        parentModContainer.toggleClass('mobile-megamenu-open');
                    }
                } else {
                    parentModContainer.find('> .sub-menu').slideToggle(500);
                }
            });
        },
        currentMenuOpen: function () {
            var $ = Woffice.$;
            $('#navigation li.current-menu-ancestor').find("> .click_menutoggle").addClass('caret-up');
            $('#navigation li.current-menu-ancestor').find("> a").addClass('current-menu-highlight');

            if ($('body').hasClass('verical-menu-on-hover')) {
                $('.menu-item-has-children .click_menutoggle').unbind('click');
                $('.menu-item-has-children:not(.current-menu-parent)').each(function () {
                    $(this).children('.click_menutoggle').on({
                        mouseenter: function () {
                            $(this).addClass('current-menutoggle-active');
                            $(this).siblings('a').addClass('current-menu-highlight');
                            $(this).siblings('.sub-menu').slideDown(400);
                        }
                    });
                    $(this).mouseleave(function () {
                        $(this).children('.click_menutoggle').removeClass('current-menutoggle-active');
                        $(this).children('a').removeClass('current-menu-highlight');
                        $(this).children('.sub-menu').slideUp(400);
                    });
                });

                $('.menu-item-has-mega-menu').each(function () {
                    $(this).children('.click_menutoggle').on({
                        mouseenter: function () {
                            /*Add class to icon span */
                            $(this).siblings('.mega-menu').slideDown(400);

                        }
                    });
                    $(this).mouseleave(function () {
                        /*Remove class to icon span */
                        $(this).children('.mega-menu').slideUp(400);
                    });
                });
            }

            if ($('body').hasClass('horizontal-menu-on-click')) {
                $('.menu-item-has-children:not(.menu-item-has-mega-menu)').each(function () {
                    $(this).find('.sub-menu').addClass('sub-menu-click');
                    var selector = $(this).find('.menu-icon');
                    $(selector).on('click', function (e) {
                        e.preventDefault();
                        $(this).parent('a').siblings('.sub-menu').addClass('display-submenu');
                    });
                });

                $('.menu-item-has-mega-menu').each(function () {
                    var selector = $(this).find('.menu-icon');
                    $(selector).on('click', function (e) {
                        e.preventDefault();
                        $(this).parent('a').siblings('.mega-menu').addClass('open animated');
                    });
                });
            }

        },

        OnHoverArrowIconColor: function () {
            var $ = Woffice.$;
            $('.main-modern-menu > li.menu-item ').on({
                mouseenter: function () {
                    /*Add class to icon span */
                    $(this).find("> .click_menutoggle").addClass("stellar_heading_color");

                },
                mouseleave: function () {
                    /*Remove class to icon span */
                    $(this).find("> .click_menutoggle").removeClass("stellar_heading_color");
                }
            });
            $('.main-modern-menu > li.menu-item .sub-menu .menu-item').on({
                mouseenter: function () {
                    /*Add class to icon span */
                    $(this).find("> .click_menutoggle").addClass("stellar_sub_menu_color");

                },
                mouseleave: function () {
                    /*Remove class to icon span */
                    $(this).find("> .click_menutoggle").removeClass("stellar_sub_menu_color");
                }
            });
        }
    },

    /*
     * Wiki links bundle
     */
    wiki: {
        start: function () {
            var $ = Woffice.$;

            $('[data-toggle="collapse"]').on('click', function (e) {
                $(e.target).parent().find('.collapse').collapse('toggle');
            });
        }
    },

    /*
     * WP JOB MANAGER
     */
    WpJobManager: {

        toggle: function () {
            var $ = Woffice.$;
            var $content = $('.woffice-job-manager-frontend-wrapper__content #submit-job-form');

            if ($('#job_preview').length !== 0 || $('.job-manager-message').length !== 0) {
                $('#job_preview').parent('div#job-post-create').siblings('#wp-jobmanager-bottom').hide();
                $('.job-manager-message').parent('div#job-post-create').siblings('#wp-jobmanager-bottom').hide();
            }


            if ($content.length === 0) {
                return;
            }

            $content.not('.woffice-job-manager-frontend-wrapper__content--revealed #submit-job-form').hide();

            $('.woffice-job-manager-frontend-wrapper__toggle').on('click', function (e) {
                e.stopImmediatePropagation();

                var loader = new Woffice.loader($('.woffice-job-manager-frontend-wrapper'));

                if ($(e.target).data('action') === 'display') {
                    $('.woffice-job-manager-frontend-wrapper__toggle[data-action="display"]').hide();

                    setTimeout(function () {
                        $('#submit-job-form').slideToggle();
                        loader.remove();
                    }, 1000);
                } else {
                    $('#submit-job-form').slideToggle();
                    setTimeout(function () {
                        $('.woffice-job-manager-frontend-wrapper__toggle[data-action="display"]').show();
                        loader.remove();
                    }, 1000);
                }

                return false;
            });
        },

        start: function () {
            var self = this;

            self.toggle();
        }
    },

    ProjectGridListView: {
        start: function () {
            var $ = Woffice.$;

            $('#list').click(function (event) {
                event.preventDefault();
                $('#project-list .item').addClass('list-group-item');
                $(this).addClass('is-active');
                $('#grid').removeClass('is-active');

                $('#projects-list .item').addClass('list-group-item');
                $('#projects-list').addClass('list-view');
            });

            $('#grid').click(function (event) {
                event.preventDefault();
                $(this).addClass('is-active');
                $('#list').removeClass('is-active');
                $('#projects-list .item').removeClass('list-group-item');
                $('#projects-list .item').addClass('grid-group-item');
                $('#projects-list').removeClass('list-view');

            });
            
            // ------------new js for project new user layout----------
            $(document).on('click', '.wo_remaining_member_toggle', function (e) {
                e.stopPropagation(); // Stop event propagation
                $(this).siblings('.remaining_m_container').toggleClass('wo_show');
            });
            $(document).mouseup(function (e) {
                var remaining_m_container = $(".remaining_m_container");
                var wo_remaining_member = $(".wo_remaining_member_toggle");
                if (!remaining_m_container.is(e.target) && !remaining_m_container.has(e.target).length && !$(e.target).hasClass('wo_remaining_member_toggle')) {
                    remaining_m_container.removeClass('wo_show'); // Remove 'show' class instead of hide()
                }
            });

        }
    },

    /**
     * Main alerts
     */
    alerts: {
        start: function () {

            var $ = Woffice.$,
                self = this;

            var alerts = $('.woffice-main-alert');

            if (alerts.length === 0) {
                return;
            }

            alerts.each(function () {
                var closeTrigger = $(this).find('.woffice-alert-close');
                var alert = $(this);
                var notime = alert.hasClass('no-timeout');

                // We either close it teh button is clicked
                closeTrigger.on('click', function () {
                    alert.slideUp();
                });

                if (!notime) {
                    // Or after x sec
                    setTimeout(function () {
                        alert.slideUp();
                    }, parseInt(Woffice.data.alert_timeout));
                }

            });

        },

        watch: function () {

            var $ = Woffice.$;

            $('.woffice-alert-close ').on('click', function () {

                $(this).closest('.woffice-main-alert').slideUp();

            });

        }

    },

    /**
     * User sidebar functions
     */
    userSidebar: {

        /**
         * Set the global state on the page load
         */
        start: function () {

            var $ = Woffice.$,
                $userSidebar = $("#user-sidebar");

            // Layout
            if ($userSidebar.length > 0) {
                var topbarHeight = $("#topbar").height(),
                    menuHeight = $("#navbar").height(),
                    sidebarTop = 0;
                if ($("topbar").hasClass("topbar-closed")) {
                    sidebarTop = menuHeight + topbarHeight;
                }
                else {
                    sidebarTop = menuHeight;
                }
                $userSidebar.css("padding-top", sidebarTop);
            }

            // Binding events
            $("#user-sidebar nav ul li.menu-parent a, #user-sidebar #dropdown-user-menu li.menu-item-has-children a").bind('click', false);
            $("#user-sidebar nav ul li.menu-child a, #user-sidebar #dropdown-user-menu li.menu-item-has-children ul a").unbind('click', false);

        },

        /**
         * Watch any toggling action
         */
        watch: function () {

            var $ = Woffice.$;

            // This is for the main layout: display the sidebar or not
            $(".bp_is_active #user-thumb, #user-close, #closer-usersidebar").on("click", function () {
                $("#nav-user, #user-sidebar").toggleClass("active");
            });

            $('.user-profile-trigger').on('click', function () {
                $("#nav-user, #user-sidebar").toggleClass("active");
            });

            // Submenus within the sidebar
            $("#user-sidebar nav ul li.menu-parent a, #user-sidebar #dropdown-user-menu li.menu-item-has-children a").on("click", function () {
                $(this).toggleClass("dropdownOn");
                $(this).parent("li").toggleClass("dropdownOn");
                $(this).parent("li").find('ul').slideToggle();
            });

        },

        Monitor_sidebars: function () {
            var self = this,
                $ = Woffice.$;
            var body = $('body');
            $left_bar = $('.is-left-sidebar');
            $center_bar = $('.is-center-content');
            $right_bar = $('.is-right-sidebar');

            $('body').on('click', '.mobile-canvas-header', function () {
                // $left_bar.hide();
                Woffice.$navTrigger.find("i").removeClass("d-none");
                Woffice.$navTrigger.find("svg").addClass("d-none");
            });

            if ($(window).width() < 1025) {
                $('body').removeClass('menu-is-horizontal').addClass('vertical-modern-menu');
            }

            $('body').on('click', '.sidebar-userinfo .mobile-canvas-header', function () {
                $right_bar.hide();
            });

            if ($('body').hasClass('navigation-hidden') && $('body').hasClass('sidebar-hidden')) {
                $('.is-center-content').addClass('w-100');
            }

            $('#nav-trigger').on('click', function () {
                if (body.hasClass('navigation-hidden') && body.hasClass('sidebar-hidden')) {
                    $('.is-center-content').addClass('w-100');
                } else {
                    $('.is-center-content').removeClass('w-100');
                }
            });
        }
    },

    /**
     * Custom scroll bars
     */
    customScrollbars: {

        /**
         * Declares the scroll bars using mCustomScrollbar
         */
        start: function () {

            var $ = Woffice.$;

            /*
             * Navigation scroll bars
             */
            $("body.vertical-modern-menu #navigation").mCustomScrollbar({
                axis: "y",
                theme: "minimal"
            });
            if (window.matchMedia('(max-width: ' + Woffice.data.menu_threshold + 'px)').matches || $('.menu-item mobile-submenu-link').length > 0) {
                $("body.vertical-modern-menu #navigation, body.menu-is-horizontal #navigation").mCustomScrollbar({
                    axis: "y",
                    theme: "minimal"
                });
            }

            /*
             * User menu scroll bar
             */
            $("#user-sidebar").mCustomScrollbar({
                axis: "y",
                theme: "minimal-dark"
            });

            /*
             * WooCommerce box scroll bar
             */
            var $wooCommerceCart = $("#woffice-minicart-top");
            if ($wooCommerceCart.length) {
                $wooCommerceCart.mCustomScrollbar({
                    axis: "y",
                    theme: "minimal-dark"
                });
            }

            /*
             * Right sidebar's custom scroll bar
             * See self.sidebar() for more details
             */
            $("#right-sidebar").mCustomScrollbar({
                axis: "y",
                theme: "minimal-dark",
                mouseWheel: { deltaFactor: 100 },
                callbacks: {
                    onInit: function () {
                        $('#can-scroll').on("click", function () {
                            if (!$('#main-content').hasClass('sidebar-hidden')) {
                                $('#can-scroll').show();
                            }
                            if ($(this).hasClass('clicked')) {
                                $('#right-sidebar').mCustomScrollbar("scrollTo", "top");
                                $(this).removeClass('clicked');
                            }
                            else {
                                $('#right-sidebar').mCustomScrollbar("scrollTo", "bottom");
                                $(this).addClass('clicked');
                            }
                        });
                    },

                    onUpdate: function () {
                        if ($('#main-content').height() >= $('#right-sidebar')[0].scrollHeight) {
                            $('#can-scroll').addClass('clicked');
                        } else {
                            $('#can-scroll').removeClass('clicked');
                        }
                    },
                    onScroll: function () {
                        if ($('#main-content').height() >= $('#right-sidebar')[0].scrollHeight) {
                            $('#can-scroll').addClass('clicked');
                        } else {
                            $('#can-scroll').removeClass('clicked');
                        }
                    }
                }
            });

        }

    },

    /**
     * Search bar
     */
    searchBar: {

        /**
         * Make a search query
         *
         */
        search: _.debounce(function () {
            if (!Woffice.data.has_live_search || Woffice.data.has_live_search !== '1') {
                return;
            }

            var $ = Woffice.$;
            var $results = Woffice.$mainSearch.find('.woffice-search-results');

            var value = Woffice.$mainSearch.find('input#s').val();

            if (!value || (value && value.length < 3)) {
                return false;
            }

            var loader = new Woffice.loader($results, { left: '45%' });

            $.ajax({
                type: "POST",
                url: Woffice.data.ajax_url.toString(),
                data: {
                    action: 'woffice_search',
                    nonce: WOFFICE.nonce,
                    search: value,
                    types: 'all'
                },
                success: function (data) {
                    data = JSON.parse(data);

                    var markup = '';

                    $.each(data, function (key, group) {

                        markup += '<div class="woffice-search-results__group" id="woffice-search-results__group--' + key + '">';

                        markup += '<h3><i class="fa ' + group.icon + '"></i> ' + group.label + '</h3>';

                        if (group.items && group.items.length > 0) {
                            markup += '<ul>';
                            for (var i = 0; i < group.items.length; i++) {
                                var item = group.items[i];

                                markup += '<li class="woffice-search-results__item clearfix" id="woffice-search-results__item--' + item.id + '" data-type="' + key + '">';
                                markup += '<div class="float-left">';
                                markup += '<span class="woffice-search-results__item__title"><a href="' + item.link + '">' + item.title + '</a></span>';
                                if (item.meta) {
                                    var length = 150;
                                    if (item.meta.length > length) {
                                        item.meta = item.meta.substring(0, length) + '...';
                                    }

                                    markup += '<span class="woffice-search-results__item__meta">' + item.meta + '</span>';
                                }
                                markup += '</div>';
                                markup += '<div class="float-right">';
                                markup += '<a href="' + item.link + '" class="btn btn-default"><i class="fa fa-arrow-right"></i></a>';
                                markup += '</div>';
                                markup += '</li>';
                            }
                            markup += '</ul>';
                        }

                        markup += '</div>';

                    });

                    $results.html(markup);

                    loader.remove();
                }
            });
        }, 500),

        /**
         * Set the width of the main search
         */
        setSize: function () {
            if (Woffice.$body.hasClass('menu-is-vertical') && !Woffice.$navigation.hasClass('navigation-hidden')) {
                // Woffice.$mainSearch.css('width', (Woffice.$body.width() - Woffice.$navigation.width()));
            } else {
                // Woffice.$mainSearch.css('width', (Woffice.$body.width()));
            }
        },

        /**
         * Prevent default form submit and trigger ajax search
         *
         * @param {Object} e
         */
        searchSubmit: function (e) {
            e.preventDefault();
            Woffice.searchBar.search();
        },


        /**
         * Whenever someone click on the icon
         */
        watch: function () {

            var $ = Woffice.$;

            var offset = Woffice.$navbar.height();
            offset = (Woffice.$body.hasClass('admin-bar')) ? offset + 32 : offset;

            Woffice.$mainSearch.find('input#s').on('keyup', function () {
                Woffice.searchBar.search();
            });

            Woffice.searchBar.setSize();

            $(window).resize(function () {
                Woffice.searchBar.setSize();
            });

            Woffice.$searchTrigger.on("click", function () {

                Woffice.$mainSearch.toggleClass('opened');

                if (Woffice.$mainSearch.find('.woffice-search-results').length === 0) {
                    Woffice.$mainSearch.append('<div class="woffice-search-results"></div>');
                } else {
                    Woffice.$mainSearch.find('.woffice-search-results').remove();
                }

                if (Woffice.$mainSearch.hasClass('opened')) {
                    Woffice.$searchTrigger.find('i.fa').removeClass('fa-search');
                    Woffice.$searchTrigger.find('i.fa').addClass('fa-times');
                    Woffice.$mainSearch.find('form').on('submit', Woffice.searchBar.searchSubmit);
                } else {
                    Woffice.$searchTrigger.find('i.fa').addClass('fa-search');
                    Woffice.$searchTrigger.find('i.fa').removeClass('fa-times');
                    Woffice.$mainSearch.find('form').off('submit', Woffice.searchBar.searchSubmit);
                }

                $('html,body').animate({ scrollTop: 0 }, 'fast');
                document.getElementById("s").focus();
                return false;

            });

        }

    },

    /**
     * Roles filters for Members
     */
    rolesFilter: {
        /**
         * Whenever someone click on a dropdown's link
         */
        watch: function () {
            var $ = Woffice.$;
            var $dropdownItems = $('#woffice-roles-filter a.dropdown-item');

            var $orderBy = $('#members-order-by');
            var order = ($orderBy.length) ? $orderBy.find('option').first().val() : 'active';

            $dropdownItems.on('click', function (e) {
                e.preventDefault();

                var requestObj = {
                    scope: 'roles',
                    filter: order,
                    action: 'members_filter',
                    object: 'members'
                };

                $dropdownItems.removeClass('active');
                $(e.target).addClass('active');

                requestObj['role'] = $(e.target).data('role');

                Cookies.set('woffice_role', requestObj['role'], { expires: 1, path: '/' });

                window.bp.Nouveau.objectRequest(requestObj);
            });

            var url = new URL(location.href);
            var roleUrl = url.searchParams.get('filterRole');

            if (roleUrl) {
                var $button = $('#woffice-roles-filter a.dropdown-item[data-role="' + roleUrl + '"]');
                if ($button) {
                    $button.trigger('click');
                }
            }
        }
    },

    /**
     * Advanced Search for Members
     */
    advancedSearch: {

        /**
         * Whenever someone click on the icon
         */
        watch: function () {
            var $ = Woffice.$;
            var $orderBy = $('#members-order-by');
            var order = ($orderBy.length) ? $orderBy.val() : 'active';
            var $wrapper = $('#woffice-members-advanced-search');

            $wrapper.find('.clear-value').each(function () {
                $(this).attr('href', 'javascript:void(0)');
                $(this).on('click', function () {
                    $(this).parent('.form-group').find('input[type="radio"]').prop('checked', false);
                    $(this).parent('.form-group').find('option:selected').prop('selected', false);
                });
            });

            $('#advanced-search-submit').on("click", function (e) {
                e.preventDefault();

                var requestObj = {
                    scope: 'advanced-search',
                    filter: order,
                    action: 'members_filter',
                    object: 'members'
                };

                requestObj['advanced-search-submit'] = true;

                var formObj = {};
                var $inputs = $wrapper.find('input, select');
                var data = [];
                var item_list = '';

                $inputs.each(function () {
                    var name = $(this).attr('name');
                    if(name !== undefined){
                        formObj[$(this).attr('name').replace('[]', '')] = $(this).val();
                    }
                });

                if ($wrapper.find('.checkbox-options').length > 0) {
                    $wrapper.find('.checkbox-options').each(function () {
                        item_list = $(this).attr('id');
                        data[item_list] = [];
                        $(this).find('input[type="checkbox"]').each(function () {
                            if ($(this).prop('checked') == true) {
                                data[item_list].push($(this).val());
                            }
                        });
                        formObj[item_list] = '';
                        formObj[item_list] = data[item_list];
                    });
                }

                if ($wrapper.find('.radio-button-options').length > 0) {
                    $wrapper.find('.radio-button-options').each(function () {
                        item_list = $(this).attr('id');
                        data[item_list] = [];
                        $(this).find('input[type="radio"]').each(function () {
                            if ($(this).prop('checked') == true) {
                                data[item_list].push($(this).val());
                            }
                        });
                        formObj[item_list] = '';
                        formObj[item_list] = data[item_list];
                    });
                }

                $.extend(requestObj, { extras: formObj });

                window.bp.Nouveau.objectRequest(requestObj);
            });

            $('#advanced-search-reset').on("click", function (e) {
                location.reload();
            });
        }

    },

    /**
     * WooCommerce
     */
    wooCommerce: {

        flexsliderWoo: null,

        /**
         * Watch for the cart's toggling
         */
        watch: function () {

            var $ = Woffice.$;

            $("#nav-buttons").on("click", "#nav-cart-trigger.active", function () {
                $(this).toggleClass("clicked");
                $("#woffice-minicart-top").slideToggle();
            });

        },

        /**
         * Get the number of items according to the width
         */
        getGridSize: function () {

            return (window.innerWidth < 400) ? 1 :
                (window.innerWidth < 600) ? 2 :
                    (window.innerWidth < 910) ? 3 : 4;

        },

        /**
         * Starts the product carousels
         */
        start: function () {

            var $ = Woffice.$,
                self = this;

            $('.flexslider > .woocommerce').flexslider({
                animation: "slide",
                animationLoop: false,
                selector: ".products > li.product",
                itemWidth: 210,
                itemMargin: 0,
                controlNav: false,
                move: 0,
                slideshow: false,
                minItems: self.getGridSize(), // use function to pull in initial value
                maxItems: self.getGridSize(), // use function to pull in initial value
                start: function (slider) {
                    self.flexsliderWoo = slider; //Initializing flexslider here.
                }
            });

        },

        /**
         * Changes the number of items according to the width
         */
        resize: function () {

            var self = this,
                $ = Woffice.$;

            if ($('.flexslider > .woocommerce').length > 0) {
                var gridSize = self.getGridSize();
                if (self.flexsliderWoo !== null) {
                    self.flexsliderWoo.vars.minItems = gridSize;
                    self.flexsliderWoo.vars.maxItems = gridSize;
                }
            }

        }

    },

    /**
     * Language switcher
     */
    languageSwitcher: {

        watch: function () {

            Woffice.$navWrapper.find('a').on("click", function () {
                Woffice.$navWrapper.find('ul').slideToggle();
            });

        }

    },

    /**
     * Bootstrap tooltips
     */
    tooltips: {

        start: function () {

            var $ = Woffice.$;

            $('[data-toggle="tooltip"]').tooltip();

        }

    },

    /**
     * Theme form actions and frontend actions
     */
    frontend: {

        /**
         * Handle the tab navigation (Projects & Wiki)
         */
        tabNav: function () {
            var $ = Woffice.$;
            var $navWrapper = $('.woffice-tab-layout__nav');
            var $contentWrapper = $('.woffice-tab-layout__content');

            $contentWrapper.find('.woffice-tab-layout__tab').addClass('d-none');
            $contentWrapper.find('.woffice-tab-layout__tab').first().removeClass('d-none');

            $navWrapper.on('click', 'li', function (e) {
                var $item = $(e.target);

                $navWrapper.find('li').removeClass('active');

                if ($(e.target).closest('a').length) {
                    $item = $item.closest('li');
                }

                $item.addClass('active');

                $item.trigger('woffice.tab.change', [$item.data('tab')]);

                if ($('.woffice-todo-extratabs').length > 0) {
                    $('.woffice-todo-extratabs').addClass('d-none');
                    if ($item.data('tab') == 'todo') {
                        $('.woffice-todo-extratabs').removeClass('d-none');
                    }
                }

                var loader = new Woffice.loader($contentWrapper);

                $contentWrapper.find('.woffice-tab-layout__tab').addClass('d-none');

                setTimeout(function () {
                    $contentWrapper.find('.woffice-tab-layout__tab[data-tab="' + $item.data('tab') + '"]').removeClass('d-none');

                    loader.remove();
                }, 1000);
            });

            // Default tab if in the link, use the last part of the div as the unique ID
            var anchor = window.location.hash.substr(1);

            if (anchor.length > 0) {
                var parts = anchor.split('-');

                if (parts.length > 0) {
                    var name = parts[parts.length - 1];

                    $navWrapper.find('li[data-tab="' + name + '"]').trigger('click');
                }
            }

            if ($('.datepicker').length > 0) {
                $('body').on('focus', '.datepicker', function () {
                    $('.datepicker-days').show();
                })
            }

        },

        checkboxes: function () {
            var $ = Woffice.$;

            $('#page-wrapper .wpcf7-checkbox input:checkbox,#page-wrapper .wpcf7-radio input:radio').change(function () {
                if ($(this).is(":checked")) {
                    $(this).parent("label").addClass("checked");
                } else {
                    $(this).parent("label").removeClass("checked");
                }
            });
        },

        toggle: function () {
            var $ = Woffice.$;
            var $content = $('.frontend-wrapper__content');

            if ($content.length === 0) {
                return;
            }

            $content.not('.frontend-wrapper__content--revealed').hide();

            $('.frontend-wrapper__toggle').on('click', function (e) {
                e.stopImmediatePropagation();
                var loader = new Woffice.loader($('.frontend-wrapper'));

                if ($(e.target).data('action') === 'display') {
                    $('.frontend-wrapper__toggle[data-action="display"]').hide();
                    setTimeout(function () {
                        $('.frontend-wrapper__content').slideToggle();
                        loader.remove();
                    }, 1000);
                } else {
                    $('.frontend-wrapper__content').slideToggle();
                    setTimeout(function () {
                        $('.frontend-wrapper__toggle[data-action="display"]').show();
                        loader.remove();
                    }, 1000);
                }

                return false;
            });
        },

        initAutocompleteMap: function () {
            // Create the autocomplete object using Google Maps API, restricting the search to geographical location
            var input = document.getElementById(Woffice.data.input_location_bb);
            // We check that this input exist on the dom to avoid any error
            if (input === null)
                return;
            autocomplete = new google.maps.places.Autocomplete(
                (input),
                { types: ['geocode'] }
            );

            if (navigator.geolocation && Woffice.data.user_id !== '0') {
                navigator.geolocation.getCurrentPosition(function (position) {
                    var geolocation = {
                        lat: position.coords.latitude,
                        lng: position.coords.longitude
                    };
                    var circle = new google.maps.Circle({
                        center: geolocation,
                        radius: position.coords.accuracy
                    });
                    autocomplete.setBounds(circle.getBounds());
                });
            }
        },

        start: function () {
            var self = this;

            self.tabNav();
            self.checkboxes();
            self.toggle();
            if (typeof google !== 'undefined' && google.maps) {
                self.initAutocompleteMap();
            }
        }

    },

    /**
     * Sliders
     */
    sliders: {

        watch: function () {

            var $ = Woffice.$,
                self = this;

            $("#dashboard .widget a, #nav-trigger, #nav-sidebar-trigger").on('click', function () {
                setTimeout(function () {
                    // Flexslider
                    $('#dashboard').find('.widget_woffice_funfacts .flexslider').flexslider();
                    // Rev slider
                    self.refreshRevSlider();
                }, 2000);
            });

        },

        /**
         * Refreshes Revolution slider on layout changes
         */
        refreshRevSlider: function () {

            var $ = Woffice.$,
                $slider = $(".rev_slider"),
                sliderOnPage = (typeof $slider.revredraw === 'function');

            if (sliderOnPage) {
                setTimeout(function () {
                    $slider.revredraw();
                }, 1000);
            }

        },

        /**
         * Creates the fun fact and "familiers" sliders
         * Using the Flexslider plugin
         * We also bind the revolution slider
         */
        start: function () {

            var $ = Woffice.$,
                self = this;

            $('.widget_woffice_funfacts .flexslider').flexslider({
                animation: "slide",
                animationLoop: true,
                slideshow: true,
                directionNav: false,
                selector: ".slides > li",
                smoothHeight: false,
                start: function () {
                    $('.widget_woffice_funfacts .flexslider').resize();
                }
            });

            $('#familiers').find('.flexslider').flexslider({
                animation: "slide",
                animationLoop: true,
                selector: ".slides > li",
                itemWidth: 80,
                itemMargin: 0,
                controlNav: false,
                directionNav: false,
                minItems: 0,
                move: 0,
                slideshow: false
            });

            self.refreshRevSlider();

        }

    },

    /**
     * Animated numbers animation
     */
    animatedNumbers: {

        start: function () {
            var $ = Woffice.$;

            $('.animated-number h1').countTo({
                speed: 4000
            });

        }

    },

    /**
     * BuddyPress customizations
     */
    buddyPress: {

        /**
         * Handle the Responsive menu
         *
         * @return {null}
         */
        responsiveMenu: function () {
            var $ = Woffice.$;
            var threshold = 770;
            var $menu = $('.main-navs').first();
            var handle = 'woffice-bp-menu-toggle';
            var $handle = $('#' + handle);

            if (window.innerWidth > threshold || $menu.length === 0) {
                $handle.remove();

                return null;
            }

            if ($handle.length >= 1) {
                return null;
            }

            $menu.find('> ul').slideToggle();

            var toggle = '<a href="#" class="bb_nav_toggle" id="' + handle + '"><i class="fa fa-bars fa-2x"></i></a>';

            $menu.prepend(toggle);

            $('body').on('click', '#' + handle, function () {
                $menu.find('> ul').slideToggle();
            });
        },

        /**
         * Clear advanced search cache when page reloading
         */
        clearCache: function () {
            var $ = Woffice.$;

            if (!$('body').hasClass('directory members')) {
                return;
            }

            var $orderBy = $('#members-order-by');
            var order = ($orderBy.length) ? $orderBy.find('option').first().val() : 'active';

            var requestObj = {
                scope: 'advanced-search',
                filter: order,
                action: 'members_filter',
                object: 'members'
            };

            $.extend(requestObj, { extras: {} });

            window.bp.Nouveau.objectRequest(requestObj);

            setTimeout(function () {
                var $advancedSearch = $('#members-advanced-search');

                if ($advancedSearch.length) {
                    $advancedSearch.toggleClass('selected');
                }
            }, 1000);
        },

        /**
         * Watch the advanced search button
         */
        watchAdvancedSearch: function () {
            var $ = Woffice.$;

            $("#members-advanced-search").on('click', function () {
                $(this).toggleClass('active');
                $("#woffice-members-advanced-search").slideToggle('slow');
            });
        },

        /**
         * It allows to display old activity comments, it fixes the compatibility issue between BuddyPress and Bootstrap
         */
        watchOldActivities: function () {
            var $ = Woffice.$;
            var url = window.location.href;
            if ($('#user-sidebar').length > 0) {
                $('#menu-bp li').each(function () {
                    var current_url = $(this).children('a').attr('href');

                    if (current_url === url) {
                        if ($(this).parent('ul').parent('.menu-parent').length > 0) {
                            $(this).parent('ul').parent('.menu-parent').addClass('uside-item-active')
                            $(this).addClass('uside-child-active');
                        } else {
                            $(this).addClass('uside-item-active');
                        }
                    }
                });
            }

            $('.activity-comments .show-all').on("click", function () {

                $(this).closest('.activity-comments').find('li').removeClass('hidden');

            });
        },

        /**
         * We bind correctly the icon click for BuddyPress
         */
        watchActivityMeta: function () {
            var $ = Woffice.$;

            $('.activity-meta i').on("click", function (e) {
                e.preventDefault();
                $(this).parent().trigger('click');
            });
        },

        /**
         * We Set the grid edges
         */
        BPGirdEdge: function () {
            var $ = Woffice.$;
            if ($('body').hasClass('is-modern-skin')) {
                $(document).ajaxComplete(function (event, xhr, settings) {
                    $("#members-list").parent('#members-dir-list').addClass("member-moden-grid");
                    $("#groups-list").parent('#groups-dir-list').addClass("member-moden-grid");
                });
            }
        }
    },

    /**
     * Scroll to the top action
     */
    scrollTop: {

        watch: function () {

            var $ = Woffice.$;

            $("#scroll-top").on("click", function () {
                //SCROLL TO TOP
                $('html, body').animate({
                    scrollTop: $($.attr(this, 'href')).offset().top
                }, 500);
                return false;
            });

        }

    },

    /**
     * Material design inspired effect on links click
     */
    linkEffect: {

        elements: [
            '#navbar a',
            '.main-menu li > a',
            'a.btn.btn-default',
            '#content-container #buddypress button',
            '#buddypress .button-nav li a,#main-content button[type="submit"]',
            'input[type="submit"]',
            '#user-sidebar nav ul li a',
            '#buddypress #item-nav div.item-list-tabs ul li a',
            '#woffice-login .login-submit input[type="submit"]',
            '#main-content input[type="button"],#learndash_next_prev_link a',
            '#content-container .ssfa_fileup_wrapper span'
        ],

        watch: function () {

            var self = this,
                selector = self.elements.join(", "),
                $ = Woffice.$;

            var ink, d, x, y;

            $(selector).on("click", function (e) {
                if ($(this).find(".material").length === 0) {
                    $(this).prepend("<span class='material'></span>");
                }

                ink = $(this).find(".material");
                ink.removeClass("animate");

                if (!ink.height() && !ink.width()) {
                    d = Math.max($(this).outerWidth(), $(this).outerHeight());
                    ink.css({ height: d, width: d });
                }

                x = e.pageX - $(this).offset().left - ink.width() / 2;
                y = e.pageY - $(this).offset().top - ink.height() / 2;

                ink.css({ top: y + 'px', left: x + 'px' }).addClass("animate");
            });

        }

    },

    /**
     * Footer functions
     */
    footer: {

        /**
         * Loads the extra footer once the page ready
         */
        loadExtafooterAvatars: function () {

            var $ = Woffice.$,
                $extrafooter = $('#extrafooter[data-woffice-ajax-load=true]');

            if ($extrafooter.length === 0)
                return;

            var loader = new Woffice.loader($extrafooter.find('#familiers'), { left: '45%' });

            $.ajax({
                type: "POST",
                url: Woffice.data.ajax_url.toString(),
                data: {
                    action: 'load_extrafooter_avatars',
                    nonce: WOFFICE.nonce
                },
                success: function (data) {

                    $extrafooter.find('#familiers').html(data);

                    loader.remove();

                }
            });

        },

        /**
         * Build the footer layout (widgets)
         */
        footerWidgetsLayout: function () {

            var $ = Woffice.$;

            if (window.matchMedia("(min-width: 992px)").matches) {

                var $widgets_wrapper = $("#main-footer").find("#widgets"),
                    layout = $widgets_wrapper.attr('data-widgets-layout');

                if (typeof layout !== typeof undefined && layout !== false && $widgets_wrapper.length > 0) {

                    layout = layout.split("-");

                    //For each column assign the width depending on the selected layout
                    $widgets_wrapper.find(".widget").each(function (i) {
                        var layout_length = layout.length;

                        $(this).removeClass("col-md-3");
                        $(this).addClass("col-md-" + layout[i % layout_length]);
                    });

                }

            }

        },

        start: function () {

            var self = this;

            self.loadExtafooterAvatars();
            self.footerWidgetsLayout();

        }

    },

    /**
     * Menu
     * including sub menus and mega menus
     */
    menu: {

        megaMenuTimer: null,

        megaMenuCol: 200,

        edgeLimit: 0,

        /**
         * Mega menu
         */
        megaMenu: function () {

            var self = this,
                $ = Woffice.$;

            if (!Woffice.$body.hasClass('menu-is-horizontal')) {

                setTimeout(function () {
                    $("#main-menu").find("li").each(function () {
                        if ($(this).hasClass("menu-item-has-mega-menu")) {
                            var liheight = $(this).innerHeight();
                            var megamenu = $(this).find('div.mega-menu');
                            $(megamenu).css('margin-top', '-' + (liheight) + 'px');
                        }
                    });
                }, 2500);

                self.megaMenuCol = 180;

            }

            $('.menu-is-horizontal .main-modern-menu > li.menu-item-has-mega-menu').on({
                mouseenter: function () {

                    // COUNT THE NUMBER OF COLUMN
                    var megamenucontainer = $(this).find("div.mega-menu");
                    var numberofrows = megamenucontainer.find("li.mega-menu-col").length;

                    // SIZE -> 180 per rows
                    $mainMenu = $('.main-modern-menu');
                    if (!$mainMenu.hasClass('menu-loop-happened')) {

                        megamenucontainer.width(numberofrows * (self.megaMenuCol) + 20);

                        // SHOW IT

                        self.megaMenuTimer = setTimeout(function () {
                            if (!$('body').hasClass('horizontal-menu-on-click')) {
                                megamenucontainer.addClass('open animated');
                            }

                        }, 0);
                    }

                },
                mouseleave: function () {

                    var megamenucontainer = $(this).find("div.mega-menu");

                    setTimeout(function () {
                        megamenucontainer.removeClass('open');
                    }, 0);

                }
            });

        },

        /**
         * Checks if the submenu elements is placed over the window limit
         * @param who
         */
        calculateEdge: function (who) {

            var $ = Woffice.$,
                self = this,
                elm = $(who).find('ul').first();

            if (elm.length) {

                var off = elm.offset(),
                    l = off.left,
                    w = elm.width(),
                    isEntirelyVisible = (l + w <= self.edgeLimit);

                if (!isEntirelyVisible) {
                    $(who).addClass('edge');
                } else {
                    $(who).removeClass('edge');
                }

            }

        },

        /**
         * Set the submenus
         */
        setSubMenus: function () {

            var $ = Woffice.$;

            $("#main-menu").find("li").each(function () {

                if ($(this).hasClass("menu-item-has-children")) {

                    var lineheight = $(this).height();
                    var submenu = $(this).find('.sub-menu');
                    $(submenu).css('margin-top', '-' + (lineheight) + 'px');

                }

            });

        },

        /**
         * This function is run on the page load and resize
         */
        submenus: function () {

            var self = this,
                $ = Woffice.$;

            self.edgeLimit = $('#page-wrapper').width();

            if (
                window.matchMedia('(max-width: ' + Woffice.data.menu_threshold + 'px)').matches
                ||
                (Woffice.navigation.isTouchDevice() && window.innerWidth < 1100)
            ) {

                $('.main-modern-menu li.menu-item-has-children > a').not(".binded").addClass("binded").on("click", function () {

                    // TODO move this listener out of the first check. In order to avoid the useless nested check
                    if (
                        window.matchMedia('(max-width: ' + Woffice.data.menu_threshold + 'px)').matches
                        ||
                        (Woffice.navigation.isTouchDevice() && window.innerWidth < 1100)
                    ) {
                        $(this).toggleClass("mobile-menu-displayed");
                        var parentContainer = $(this).parent("li");
                        if (parentContainer.hasClass('menu-item-has-mega-menu') && $('#main-modern-menu').hasClass('menu-loop-happened')) {
                            $(parentContainer).toggleClass('mobile-megamenu-open');
                            parentContainer.find('> .mega-menu').slideToggle();
                        } else {
                            parentContainer.find('> .sub-menu').slideToggle();
                        }
                        return false;
                    }

                });

            }
            else {

                $('.menu-is-horizontal .main-modern-menu li.menu-item-has-children:not(.menu-item-has-mega-menu)').on({

                    mouseenter: function () {
                        var self = this,
                            submenu = $(self).find('.sub-menu').first();

                        // Without this timeout, the function handleClicks wouldn't work
                        setTimeout(function () {
                            if (!$('body').hasClass('horizontal-menu-on-click')) {
                                submenu.addClass("display-submenu");
                            }
                        }, 10);


                        var scrollTop = $(window).scrollTop(),
                            elementOffset = submenu.offset().top,
                            distanceFromTop = (elementOffset - scrollTop),
                            megamenu_height = 0;

                        var edgeOffset = (distanceFromTop + submenu.height() - $(window).height());

                        if ($(self).hasClass('mega-menu-col')) {

                            megamenu_height = Math.max.apply(null, $(self).closest('.mega-menu').find('.mega-menu-col').map(function () {
                                return $(this).height();
                            }).get());

                            edgeOffset = (distanceFromTop + megamenu_height - $(window).height());
                        }

                        var isEntirelyVisible = (edgeOffset < 0);

                        if (!isEntirelyVisible) {
                            if ($(self).hasClass('mega-menu-col')) {

                                $(self).closest('.mega-menu')[0].style.removeProperty('margin-top');
                                $(self).closest('.mega-menu')[0].style.setProperty('margin-top', '-' + parseInt(megamenu_height) + 'px', 'important');
                            }
                        }


                        Woffice.menu.calculateEdge(this);

                    },

                    mouseleave: function () {

                        var self = this;
                        var submenu = $(self).find('> .sub-menu');

                        submenu.removeClass("display-submenu");
                        $(self).removeClass('edge');
                    }

                });

                $('body').on({

                    mouseleave: function () {

                        setTimeout(function () {

                            var $navigation = $('#navigation');

                            $navigation.find('.display-submenu').removeClass("display-submenu");
                            $navigation.find('.edge').removeClass('edge');

                        }, 100);

                    }

                });

            }

        },

        /**
         * If a menu item has children, block the link redirection if the submenu isn't displayed
         *
         * This functions assumes that if the submenu isn't displayed when clicked, it means that the mousent hasn't been triggered,
         * which should means that you are using a big touch screen (such as a retina tablet).
         */
        handleClicks: function () {

            var $ = Woffice.$;

            // Todo this only works for the second level menu
            $('.main-modern-menu .menu-item > li.menu-item-has-children > a').on("click", function (event) {
                var $parentContainer = $(this).parent("li");
                if (!$parentContainer.find('> .sub-menu').hasClass('display-submenu')) {
                    event.preventDefault();
                }
            });

        },

        start: function () {

            var self = this,
                $ = Woffice.$;

            self.edgeLimit = $('#page-wrapper').width();
            self.megaMenu();
            self.setSubMenus();
            self.submenus();
            self.handleClicks();
        }

    },

    /**
     * Masonry layouts used across the theme
     */
    masonryLayout: {

        /**
         * Build helper the Masonry layout
         */
        build: function () {

            var $ = Woffice.$,
                $dashboard = $('#dashboard');

            $('.masonry-layout').isotope({
                // options
                itemSelector: '.box',
                layoutMode: 'masonry'
            });

            if ($dashboard.length > 0) {
                if (!$dashboard.hasClass('is-draggie')) {
                    $dashboard.isotope();
                }
                /*
                 * Commented from WOF-92.
                 * It's causing the jQuery memory issue.
                 *
                 * $dashboard.find( '.widget_woffice_funfacts .flexslider' ).resize();
                 */
            }

        },

        /**
         * Refresh layout
         */
        refresh: function () {

            var $ = Woffice.$;

            Woffice.masonryLayout.build();
            var board_divider = 3;
            var outer_winwidth = $(window).width();
            if (outer_winwidth > 1439) {
                board_divider = 4;
            } else if (outer_winwidth < 575) {
                board_divider = 1;
            }
            var board_container = $('.woffice-kanban .kanban-container, .woffice-crm-kanban .kanban-container').outerWidth() / board_divider;
            var board_width = board_container - 20;
            $('.woffice-kanban .kanban-board').css({ 'width': + board_width + 'px', 'flex': '0 0 ' + board_width + 'px' });

            // fix ratios for resizing the calendar size
            $('.eventon_fullcal').each(function () {
                var cal_width = $(this).width();
                var strip = $(this).find('.evofc_months_strip');
                var multiplier = strip.attr('data-multiplier');

                if (multiplier < 0) {
                    strip.width(cal_width * 3).css({ 'margin-left': (multiplier * cal_width) + 'px' });
                }
                $(this).find('.evofc_month').width(cal_width);
            });

        },

        /**
         * We watch several events
         */
        watch: function () {

            var self = this,
                $ = Woffice.$;

            $("#dashboard").on('click', 'a.evcal_list_a, .widget a, p.evo_fc_day', function () {
                self.refresh();
            });

            $("#nav-trigger, #nav-sidebar-trigger").on('click', function () {
                setTimeout(self.refresh, 600);
            });

        },

        /**
         * Starts the layouts
         */
        start: function () {

            var $ = Woffice.$,
                $list = null,
                $wrapper = $('#buddypress [data-bp-list]');

            if (window.location.search.indexOf('members_search') !== -1) {
                $('#dir-members-search-submit').trigger('click');
            }

            $wrapper.bind('bp_ajax_request', function () {
                var loader = new Woffice.loader($wrapper);

                $wrapper.find('.item-list').css({ opacity: 0 });

                setTimeout(function () {
                    $list = $('#groups-list, #members-list').isotope({
                        itemSelector: 'li.item-entry',
                        layoutMode: 'fitRows'
                    });

                    loader.remove();

                    $wrapper.find('.item-list').css({ opacity: 1 });
                }, parseInt(Woffice.data.masonry_refresh_delay));
            });

            $("#nav-trigger, #nav-sidebar-trigger, #item-nav a").on('click', function () {
                setTimeout(function () {
                    $list = $('#groups-list, #members-list').isotope({
                        itemSelector: 'li.item-entry',
                        layoutMode: 'fitRows'
                    });
                }, Woffice.data.masonry_refresh_delay);
            });

            setTimeout(function () {
                Woffice.masonryLayout.build();
            }, 200);

            setInterval(function () {
                Woffice.masonryLayout.build();
                Woffice.masonryLayout.refresh();
            }, Woffice.data.masonry_refresh_delay);

        }

    },

    /**
     * Handles the navigation actions
     */
    navigation: {

        cachedWidth: 0,

        /**
         * Whether we are on a touch device or not
         *
         * @return {boolean}
         */
        isTouchDevice: function () {
            return typeof window.ontouchstart !== 'undefined';
        },

        watch: function () {

            var $ = Woffice.$,
                self = this;

            Woffice.$navTrigger.on("click", function () {
                if ($("#main-content").hasClass("navigation-hidden")) {
                    self.showVerticalMenu(true);
                }
                else {
                    self.hideVerticalMenu(true);
                }
                Woffice.userSidebar.Monitor_sidebars();
                Woffice.searchBar.setSize();
                Woffice.sidebar.setSidebarWidth();
            });

        },

        hideVerticalMenu: function (handleCookie) {

            var $ = Woffice.$;

            // Icon class switching

            $(".is-left-sidebar").addClass("has-navigation-hidden");
            $(".is-left-sidebar").removeClass("has-navigation-show");
            $(".is-left-sidebar").fadeOut("500");

            $("body, #navigation, #main-content, #main-header, #main-footer").addClass("navigation-hidden");

            setTimeout(function () {
                Woffice.$navTrigger.find("svg").addClass("d-none");
                Woffice.$navTrigger.find("i").removeClass("d-none");
            }, 300)

            if (handleCookie) {
                // Create cookies to save user choice :
                Cookies.set('Woffice_nav_position', 'navigation-hidden', { expires: 7, path: '/' });
                Cookies.set('Woffice_hasnav_position', 'has-navigation-hidden', { expires: 7, path: '/' });
            }

            // Rebuild the sliders
            Woffice.sliders.start();

        },

        showVerticalMenu: function (handleCookie) {

            var $ = Woffice.$;

            // Icon class switching
            Woffice.$navTrigger.find("svg").removeClass("d-none");
            Woffice.$navTrigger.find("i").addClass("d-none");
            $(".is-left-sidebar").fadeIn("500");
            $(".is-left-sidebar").removeClass("has-navigation-hidden");
            $(".is-left-sidebar").addClass("has-navigation-show");
            $("body,#navigation, #main-content, #main-header, #main-footer").removeClass("navigation-hidden");

            if (handleCookie) {
                // ERASE COOKIES
                Cookies.remove('Woffice_nav_position', { expires: 7, path: '/' });
                Cookies.remove('Woffice_hasnav_position', { expires: 7, path: '/' });
            }

        },

        responsiveMenu: function (onready) {

            var self = this,
                $ = Woffice.$,
                $mainMenu = $('.main-modern-menu'),
                $notificationAlert = $('#woffice-notifications-menu');

            if ($notificationAlert.length > 0) {
                var $wpadminbar = $('#wpadminbar'),
                    adminbarHeight = ($wpadminbar.length > 0) ? $wpadminbar.height() : 0,
                    topbarHeight = $("#navbar").height();

            }


            if (
                window.matchMedia('(max-width: ' + Woffice.data.menu_threshold + 'px)').matches
                ||
                (Woffice.navigation.isTouchDevice() && window.innerWidth < 1100)
            ) {

                if (onready)
                    self.hideVerticalMenu();
                else {
                    $("body, #navigation, #main-content, #main-header, #main-footer").addClass("navigation-hidden");
                }

                // We create a duplicate of the link
                if (!$mainMenu.hasClass("menu-loop-happened")) {
                    $('.main-modern-menu li.menu-item-has-children').each(function () {
                        var linkElement = $(this).find(" > a");
                        var submenuContainer = $(this).find(" > ul.sub-menu");
                        var linkElement_href = linkElement.attr('href');

                        if (linkElement_href !== '#' && linkElement_href !== 'javascript:void(0)') {
                            if ($(this).hasClass('menu-item-has-mega-menu')) {
                                submenuContainer = $(this).find(".mega-menu .sub-menu:first-child");
                            }
                            var subElement = '<li class="menu-item mobile-submenu-link"><a href="' + linkElement_href + '" class="center"><i class="fa fa-arrow-right"></i></a></li>';

                            submenuContainer.prepend(subElement);
                        }
                    });
                }

                $mainMenu.addClass("menu-loop-happened");
                $mainMenu.addClass('is-touchable');

            } else {

                $mainMenu.removeClass("menu-loop-happened");
                $mainMenu.removeClass('is-touchable');

                $('.main-modern-menu li.menu-item-has-children').each(function () {
                    $(this).find(".mobile-submenu-link").remove();
                });
                if (!$("#page-wrapper").hasClass("menu-is-closed")) {
                    if (!Woffice.$body.hasClass('menu-is-horizontal')) {
                        self.showVerticalMenu();
                    }
                }
            }

        },

        start: function () {

            var self = this,
                $ = Woffice.$;
            self.responsiveMenu(true);
            var $nav_width = $('#navigation').width();
            var menu_is_vertical = $('body').hasClass('menu-is-vertical');
            //Fix the menu display on load
            setTimeout(function () {
                Woffice.$navigation.removeClass("mobile-hidden");
            }, 600)

            if (menu_is_vertical) {
                $(Woffice.$navTrigger).on('click', function () {
                    if ($('.modern-top-menu').length > 0 && $('.navigation-hidden').length > 0) {
                        $('.menu-is-vertical .modern-top-menu').css({ 'margin-left': '0' })
                    } else {
                        $('.menu-is-vertical .modern-top-menu').css({ 'margin-left': $nav_width + 'px' });
                    }
                    if ($('.glass-top-menu').length > 0 && $('.navigation-hidden').length > 0) {
                        $('.menu-is-vertical .glass-top-menu').css({ 'margin-left': '0' })
                    } else {
                        $('.menu-is-vertical .glass-top-menu').css({ 'margin-left': $nav_width + 'px' });
                    }
                });

                if ($(".menu-is-closed").length > 0 || $('.navigation-hidden').length > 0) {
                    $('.menu-is-vertical .modern-top-menu').css({ 'margin-left': '0px' });
                } else {
                    $('.menu-is-vertical .modern-top-menu').css({ 'margin-left': $nav_width + 'px' });
                }
            }

        },

        watchResponsiveToggle: function () {
            var self = this,
                $ = Woffice.$;
            $('body').on('click', '#navigation .close-navmenu', function () {
                $('.is-left-sidebar').slideToggle(500);
                $('#main-content, #navigation, a#nav-sidebar-trigger').addClass('navigation-hidden');
            });
            $('body').on('click', '#right-sidebar .close-navmenu', function () {
                $('#main-content, #right-sidebar').addClass('sidebar-hidden');
            });


            $('.active_search').on('click', function () {
                $('#main-search').toggleClass('active_form');
                $('.active_search').toggleClass('active_search_close');



            });
        },

        resize: function () {
            var self = this,
                $ = Woffice.$;

            var newWidth = $(window).width();

            if (newWidth !== Woffice.navigation.cachedWidth) {
                self.responsiveMenu(false);
                Woffice.navigation.cachedWidth = newWidth;
            }
        }

    },

    /**
     * Sidebar actions
     */
    sidebar: {

        start: function () {

            var self = this,
                $ = Woffice.$;

            // Setting up the layout correctly
            self.setSidebarWidth();
            self.responsiveSidebar(true);

            self.horizontalMenuAuto();

            if (Woffice.$rightSidebar.length === 0 || Woffice.$main.hasClass('sidebar-hidden'))
                Woffice.$body.addClass('sidebar-hidden');

            Woffice.$scrollHelper.hide();

            if (Woffice.$rightSidebar.length > 0) {
                if (Woffice.$main.hasClass('sidebar-hidden')) {
                    Woffice.$scrollHelper.fadeOut();
                }
                else {
                    if (Woffice.$main.height() < Woffice.$rightSidebar[0].scrollHeight) {
                        Woffice.$scrollHelper.fadeIn('slow');
                    }
                }
            }

            // If the Cookies already exists
            if (Cookies.get('Woffice_sidebar_position') && Woffice.data.cookie_allowed.sidebar) {

                Woffice.$sidebarTrigger.addClass("sidebar-hidden");

                // Main Layout changes
                $("#main-content, #main-header, body").addClass("sidebar-hidden");

                // Icon Class
                Woffice.$sidebarTrigger.find('svg').addClass("mk-left-arrow");

                Woffice.$scrollHelper.fadeOut();

                // Rebuild the sliders
                Woffice.sliders.start();

            }
            // For the default position
            if (!self.isOpen()) {
                Woffice.$sidebarTrigger.find('svg').addClass("mk-left-arrow");
            }

        },

        resize: function () {

            var self = this;

            self.setSidebarWidth();
            self.setSidebarTopOffset();
            self.responsiveSidebar(false);

        },

        watch: function () {

            var self = this,
                $ = Woffice.$;

            $("#nav-sidebar-trigger ,  #rsidebar_mobile_close_btn").on("click", function () {

                self.sidebarToggling();
                Woffice.userSidebar.Monitor_sidebars();

            });

        },

        /**
         * Calculates the sidebar's width
         */
        setSidebarWidth: function () {

            var $ = Woffice.$,
                $rightSidebar = $("#right-sidebar");

            if ($rightSidebar.length === 0)
                return;

            var SidebarWidth = $rightSidebar.width();

            $('#can-scroll').width(SidebarWidth);

        },

        /**
         * Makes the sidebar responsive (and the menu)
         *
         * // Todo @antonio I'm lost in those lines, any comments would be appreciated :)
         * // It was in the sidebar block but it's related to the menu right?
         *
         * @param {boolean} on_load if this is during the page loading or the resize event
         */
        responsiveSidebar: function (on_load) {

            var $ = Woffice.$,
                width = $(window).width(),
                height = $(window).height();

            var $horizontalMenuWrapper = $("#horizontal-menu-trigger-container");

            var switcher = $("#horizontal-menu-trigger").length;

            if (window.matchMedia('(max-width: ' + Woffice.data.menu_threshold + 'px)').matches) {
                // Horizontal menu responsive
                if (Woffice.$body.hasClass("menu-is-horizontal")) {

                    Woffice.$navigation.addClass("menu-responsive-horizontal");

                    if (!switcher && $('#horizontal-menu-trigger-container').length === 0) {
                        Woffice.$navigation.find("ul.main-modern-menu").prepend('<li id="horizontal-menu-trigger-container"><a href="#" id="horizontal-menu-trigger"><i class="fa fa-bars"></i></a></li>');
                    }

                }
            }
            else {
                if ($horizontalMenuWrapper.length > 0) {
                    $horizontalMenuWrapper.remove();
                }
            }

            // Don't fire on mobile :
            if ($(window).width() !== width && $(window).height() !== height || on_load) {
                if (window.matchMedia('(max-width: ' + Woffice.data.menu_threshold + 'px)').matches) {


                    // Navigation bar Class
                    Woffice.$sidebarTrigger.addClass("sidebar-hidden");

                    // Icon class switching
                    Woffice.$sidebarTrigger.find("svg").addClass("mk-left-arrow");

                    // Main Layout changes
                    $("#main-content, body").addClass("sidebar-hidden");
                    Woffice.$scrollHelper.fadeOut('fast');

                    // Horizontal menu responsiveness
                    if (Woffice.$body.hasClass("menu-is-horizontal")) {

                        Woffice.$navigation.addClass("menu-responsive-horizontal");

                        if (!switcher && $('#horizontal-menu-trigger-container').length == 0) {
                            Woffice.$navigation.find("ul.main-menu").prepend('<li id="horizontal-menu-trigger-container"><a href="#" id="horizontal-menu-trigger"><i class="fa fa-bars"></i></a></li>');
                        }

                    }

                }
                else {

                    if ($horizontalMenuWrapper.length > 0) {
                        $horizontalMenuWrapper.remove();
                    }

                }
            }

        },

        /**
         * Opens or closes the sidebar and handle the cookies
         */
        sidebarToggling: function () {

            var self = this,
                $ = Woffice.$;

            // Open the sidebar
            if (!self.isOpen()) {

                self.openSidebar();

                // Erase the cookies
                Cookies.remove('Woffice_sidebar_position', { expires: 7, path: '/' });
                Cookies.remove('Woffice_hassidebar_position', { expires: 7, path: '/' });

            }
            // Close the sidebar
            else {

                // If is a mobile device
                if (window.matchMedia('(max-width: ' + Woffice.data.menu_threshold + 'px)').matches) {
                    var $search_trigger = Woffice.$searchTrigger,
                        $notification_trigger = $('#nav-notification-trigger');

                    //if the search bar is opened, then close it
                    if ($search_trigger.length > 0 && $('#main-search').hasClass('opened'))
                        $($search_trigger).click();

                    //if the notifications bar is opened, then close it
                    if ($notification_trigger.length > 0 && $notification_trigger.hasClass('clicked'))
                        $($notification_trigger).click();
                }

                self.closeSidebar();

                // Create cookies to save user choice :
                Cookies.set('Woffice_sidebar_position', 'sidebar-hidden', { expires: 7, path: '/' });
                Cookies.set('Woffice_hassidebar_position', 'has-sidebar-hidden', { expires: 7, path: '/' });
            }

        },

        /**
         * Sets the sidebar offset and animate if required
         */
        setSidebarTopOffset: function () {

            var $ = Woffice.$;

            var $sidebar = $('#right-sidebar'),
                $navbar = $('#navbar'),
                height = 0;

            //If there is no sidebar rendered, then exit from this function
            if ($sidebar.length <= 0)
                return;

            if (window.matchMedia('(max-width: 600px)').matches && $navbar.length > 0) {
                height += $navbar.height();
                if (Woffice.$body.hasClass('has-navigation-fixed'))
                    Woffice.$rightSidebar.css('height', '100%').css('height', '-=' + $navbar.height());
                else
                    Woffice.$rightSidebar.css('height', '100%');
            }

        },

        /**
         * Checks whether the sidebar is open or not
         *
         * @return {boolean}
         */
        isOpen: function () {

            return !(Woffice.$main.hasClass("sidebar-hidden"));

        },

        /**
         * Opens the sidebar
         */
        openSidebar: function () {

            var self = this,
                $ = Woffice.$;

            // Icon class switching
            Woffice.$sidebarTrigger.find("svg").removeClass("mk-left-arrow");

            // Navbar Class
            Woffice.$sidebarTrigger.removeClass("sidebar-hidden");

            // Main Layout changes
            $("#main-content, #main-header, body, #right-sidebar").removeClass("sidebar-hidden");
            $('.is-right-sidebar').removeClass('has-sidebar-hidden');
            //Avoid overlap with header
            self.setSidebarTopOffset();

            Woffice.$scrollHelper.fadeIn('fast');

            if (
                Woffice.$body.hasClass('menu-is-vertical') &&
                !Woffice.$body.hasClass('navigation-hidden') &&
                window.matchMedia('(max-width: 450px)').matches
            ) {
                $('#nav-trigger').click();
            }

        },

        /**
         * Closes the sidebar
         */
        closeSidebar: function () {

            var $ = Woffice.$;

            // Navigation bar class
            Woffice.$sidebarTrigger.addClass("sidebar-hidden");
            $('.is-right-sidebar').addClass('has-sidebar-hidden');
            // Icon class switching
            Woffice.$sidebarTrigger.find("svg").addClass("mk-left-arrow");

            // Main Layout changes
            $("#main-content, #main-header, body").addClass("sidebar-hidden");
            Woffice.$scrollHelper.fadeOut();

        },

        /**
         * Responsive menu class toggling
         * This is here because we need the right scope to close the sidebar automatically
         */
        horizontalMenuAuto: function () {

            var self = this,
                $ = Woffice.$;

            $('body.menu-is-horizontal .main-modern-menu').on("click", "#horizontal-menu-trigger", function () {

                Woffice.$navigation.toggleClass("menu-responsive-horizontal-show");

                Woffice.$body.toggleClass("navigation-hidden");

                if (
                    !Woffice.$body.hasClass('navigation-hidden') &&
                    window.matchMedia('(max-width: ' + Woffice.data.menu_threshold + 'px)').matches
                )
                    self.closeSidebar();

            });

        }

    },

    buddyPressNotifications: {

        /**
         * Close the notification box
         */
        close: function () {

            var $ = Woffice.$;

            $('#woffice-notifications-menu').fadeOut();
            $('#nav-notification-trigger').find('.svg_bell').removeClass('svg_hide').addClass('svg_show');
            $('#nav-notification-trigger').find('i.fa').hide();

        },

        watch: function () {

            var $ = Woffice.$;

            $('#nav-notification-trigger').on('click', function () {

                var $svgicon = $(this).find('.svg_bell');
                var $icon = $(this).find('i.fa');

                // if it wasn't opened in the first place
                if ($svgicon.hasClass('svg_show')) {
                    $svgicon.removeClass('svg_show').addClass('svg_hide');
                    $icon.show();
                    Woffice.buddyPressNotifications.fetch();
                } else {

                    Woffice.buddyPressNotifications.close();
                    $svgicon.removeClass('svg_hide').addClass('svg_show');
                    $icon.hide();
                }

            });

        },

        /**
         * Mark a message as read
         * @param el
         */
        markRead: function (el) {

            var $ = Woffice.$;

            var readLink = $(el),
                component_action = readLink.data('component-action'),
                component_name = readLink.data('component-name'),
                item_id = readLink.data('item-id');

            $.ajax({
                url: Woffice.data.ajax_url.toString(),
                type: 'POST',
                data: {
                    'action': 'wofficeNoticationsMarked',
                    'nonce': WOFFICE.nonce,
                    'component_action': component_action,
                    'component_name': component_name,
                    'item_id': item_id
                },
                success: function () {

                    readLink.parent().closest('div').remove();
                    if ($('#woffice-notifications-content').children().length === 0) {
                        $('#nav-notification-trigger').removeClass('active');
                        Woffice.buddyPressNotifications.close();
                    }

                },
                error: function () {
                    console.error('Ajax marked failed');
                }
            });

        },

        /**
         * Fetch the notifications
         */
        fetch: function () {

            var $ = Woffice.$;

            var $trigger = $('#nav-notification-trigger'),
                $icon = $trigger.find('i.fa');

            var $wrapper = $('#woffice-notifications-menu');
            $wrapper.slideDown();

            var loader = new Woffice.loader($wrapper);

            $.ajax({
                url: Woffice.data.ajax_url.toString(),
                type: 'POST',
                data: { 'action': 'wofficeNoticationsGet', 'nonce': WOFFICE.nonce, 'user': Woffice.data.user_id.toString() },
                success: function (notifications) {
                    $wrapper.find('#woffice-notifications-content').empty();
                    $wrapper.find('#woffice-notifications-content').html(notifications);
                    loader.remove();
                    $('a.mark-notification-read').on('click', function () {
                        Woffice.buddyPressNotifications.markRead(this);
                    });
                },
                error: function () {
                    console.error('Ajax notifications failed');
                }
            });

        }



    },

    /**
     * Todo Extratabs like TODO,Knaban,Timeline
     */
    TododExtraTabs: {

        watch: function () {
            var $ = Woffice.$;
            if ($('.woffice-todo-extratabs').length > 0) {
                $('.todo-extratabs-item').each(function () {
                    $(this).on('click', function (e) {
                        e.preventDefault();
                        var currenttab = $(this).data('extratab');
                        $(this).siblings('.todo-extratabs-item').removeClass('extratabs-item-active');
                        $(this).addClass('extratabs-item-active');
                        $('.extratabs-item').removeClass('extratabs-content-active');
                        $('.project-tabs-wrapper #project-content-' + currenttab).removeClass('d-none');
                        $('.project-tabs-wrapper #project-content-' + currenttab).addClass('extratabs-content-active');
                        $('.extratabs-item:not(.extratabs-content-active)').addClass('d-none');
                        $('.woffice-tab-layout__nav #project-tab-todo').addClass('is-active active');
                    });
                });
            }
        },
    },

    select2runner: {
        watch: function () {
            var $ = Woffice.$;
            if ($('.postform-select').length > 0) {
                $('.postform-select').select2({
                    dropdownParent: $('#postform-select-parent'),
                    placeholder: "Select an option",
                    width: '100%',
                });
            }

            if ($('.multiselectbox-select2').length > 0) {
                $('.multiselectbox-select2').select2({
                    width: '100%',
                    placeholder: {
                        id: "-1",
                        text: "Select an option",
                        selected: 'selected'
                    },
                });
            }

            if ($('.woffice-file-col .woffice-file-specific-members').length > 0) {
                $('.woffice-file-col .woffice-file-specific-members').select2({
                    width: '100%',
                });
            }

            if ($('.horizontal_menu_search_icon').length > 0) {
                $(".horizontal_menu_search_icon").on("click", function () {
                    $(this).toggleClass('horizontal_menu_search_icon_active');
                    $("body.menu-is-horizontal #page-wrapper .is-left-sidebar #navigation .horizontal_menu_icons_wrapper #nav-buttons #main-search form").toggleClass("form_active");
                });
            }

            if ($(window).width() > 1921) {
                var leftwidth = $('#page-wrapper .has-navigation-show').outerWidth();
                $('#page-wrapper .is-center-content').css('padding-left', leftwidth);
            }

        }
    }

};

/**
 * Start it!
 *
 * We give it a jQuery object to play with
 */
Woffice.init(jQuery);