text: // ------------------------------------------------------------------------------ //
  //
  // Template name : Bootsnav - Multi Purpose Header
  // Categorie : Bootstrap Menu in CSS
  // Author : adamnurdin01
  // Version : v.1.2
  // Created : 2016-06-02
  // Last update : 2016-10-19
  //
  // ------------------------------------------------------------------------------ //
  
  (function($) {
    'use strict';
  
    var bootsnav = {
      initialize: function() {
        this.event();
        this.hoverDropdown();
        this.navbarSticky();
        this.navbarScrollspy();
      },
      event: function() {
        // ------------------------------------------------------------------------------ //
        // Variable
        // ------------------------------------------------------------------------------ //
        var getNav = $('nav.navbar.bootsnav');
  
        // ------------------------------------------------------------------------------ //
        // Navbar Sticky
        // ------------------------------------------------------------------------------ //
        var navSticky = getNav.hasClass('navbar-sticky');
        if (navSticky) {
          // Wraped navigation
          getNav.wrap("<div class='wrap-sticky'></div>");
        }
  
        // ------------------------------------------------------------------------------ //
        // Navbar Center
        // ------------------------------------------------------------------------------ //
        if (getNav.hasClass('brand-center')) {
          var postsArr = new Array(),
            index = $('nav.brand-center'),
            $postsList = index.find('ul.navbar-nav');
  
          index.prepend(
            "<span class='storage-name' style='display:none;'></span>"
          );
  
          //Create array of all posts in lists
          index.find('ul.navbar-nav > li').each(function() {
            if ($(this).hasClass('active')) {
              var getElement = $('a', this)
                .eq(0)
                .text();
              $('.storage-name').html(getElement);
            }
            postsArr.push($(this).html());
          });
  
          //Split the array at this point. The original array is altered.
          var firstList = postsArr.splice(0, Math.round(postsArr.length / 2)),
            secondList = postsArr,
            ListHTML = '';
  
          var createHTML = function(list) {
            ListHTML = '';
            for (var i = 0; i < list.length; i++) {
              ListHTML += '<li>' + list[i] + '</li>';
            }
          };
  
          //Generate HTML for first list
          createHTML(firstList);
          $postsList.html(ListHTML);
          index
            .find('ul.nav')
            .first()
            .addClass('navbar-left');
  
          //Generate HTML for second list
          createHTML(secondList);
          //Create new list after original one
          $postsList
            .after('<ul class="nav navbar-nav"></ul>')
            .next()
            .html(ListHTML);
          index
            .find('ul.nav')
            .last()
            .addClass('navbar-right');
  
          //Wrap navigation menu
          index
            .find('ul.nav.navbar-left')
            .wrap("<div class='col-half left'></div>");
          index
            .find('ul.nav.navbar-right')
            .wrap("<div class='col-half right'></div>");
  
          //Selection Class
          index.find('ul.navbar-nav > li').each(function() {
            var dropDown = $('ul.dropdown-menu', this),
              megaMenu = $('ul.megamenu-content', this);
            dropDown.closest('li').addClass('dropdown');
            megaMenu.closest('li').addClass('megamenu-fw');
          });
  
          var getName = $('.storage-name').html();
          if (!getName == '') {
            $("ul.navbar-nav > li:contains('" + getName + "')").addClass(
              'active'
            );
          }
        }
  
        // ------------------------------------------------------------------------------ //
        // Navbar Sidebar
        // ------------------------------------------------------------------------------ //
        if (getNav.hasClass('navbar-sidebar')) {
          // Add Class to body
          $('body').addClass('wrap-nav-sidebar');
          getNav.wrapInner("<div class='scroller'></div>");
        } else {
          $('.bootsnav').addClass('on');
        }
  
        // ------------------------------------------------------------------------------ //
        // Menu Center
        // ------------------------------------------------------------------------------ //
        if (getNav.find('ul.nav').hasClass('navbar-center')) {
          getNav.addClass('menu-center');
        }
  
        // ------------------------------------------------------------------------------ //
        // Navbar Full
        // ------------------------------------------------------------------------------ //
        if (getNav.hasClass('navbar-full')) {
          // Add Class to body
          $('nav.navbar.bootsnav')
            .find('ul.nav')
            .wrap("<div class='wrap-full-menu'></div>");
          $('.wrap-full-menu').wrap("<div class='nav-full'></div>");
          $('ul.nav.navbar-nav').prepend(
            "<li class='close-full-menu'><a href='#'><i class='fa fa-times'></i></a></li>"
          );
        } else if (getNav.hasClass('navbar-mobile')) {
          getNav.removeClass('no-full');
        } else {
          getNav.addClass('no-full');
        }
  
        // ------------------------------------------------------------------------------ //
        // Navbar Mobile
        // ------------------------------------------------------------------------------ //
        if (getNav.hasClass('navbar-mobile')) {
          // Add Class to body
          $('.navbar-collapse').on('shown.bs.collapse', function() {
            $('body').addClass('side-right');
          });
          $('.navbar-collapse').on('hide.bs.collapse', function() {
            $('body').removeClass('side-right');
          });
  
          $(window).on('resize', function() {
            $('body').removeClass('side-right');
          });
        }
  
        // ------------------------------------------------------------------------------ //
        // Navbar Fixed
        // ------------------------------------------------------------------------------ //
        if (getNav.hasClass('no-background')) {
          $(window).on('scroll', function() {
            var scrollTop = $(window).scrollTop();
            if (scrollTop > 34) {
              $('.navbar-fixed').removeClass('no-background');
            } else {
              $('.navbar-fixed').addClass('no-background');
            }
          });
        }
  
        // ------------------------------------------------------------------------------ //
        // Navbar Fixed
        // ------------------------------------------------------------------------------ //
        if (getNav.hasClass('navbar-transparent')) {
          $(window).on('scroll', function() {
            var scrollTop = $(window).scrollTop();
            if (scrollTop > 34) {
              $('.navbar-fixed').removeClass('navbar-transparent');
            } else {
              $('.navbar-fixed').addClass('navbar-transparent');
            }
          });
        }
  
        // ------------------------------------------------------------------------------ //
        // Button Cart
        // ------------------------------------------------------------------------------ //
        $('.btn-cart').on('click', function(e) {
          e.stopPropagation();
        });
  
        // ------------------------------------------------------------------------------ //
        // Toggle Search
        // ------------------------------------------------------------------------------ //
        $('nav.navbar.bootsnav .attr-nav').each(function() {
          $('li.search > a', this).on('click', function(e) {
            e.preventDefault();
            $('.top-search').slideToggle();
          });
        });
        $('.input-group-addon.close-search').on('click', function() {
          $('.top-search').slideUp();
        });
  
        // ------------------------------------------------------------------------------ //
        // Toggle Side Menu
        // ------------------------------------------------------------------------------ //
        $('nav.navbar.bootsnav .attr-nav').each(function() {
          $('li.side-menu > a', this).on('click', function(e) {
            e.preventDefault();
            $('nav.navbar.bootsnav > .side').toggleClass('on');
            $('body').toggleClass('on-side');
          });
        });
        $('.side .close-side').on('click', function(e) {
          e.preventDefault();
          $('nav.navbar.bootsnav > .side').removeClass('on');
          $('body').removeClass('on-side');
        });
  
        // ------------------------------------------------------------------------------ //
        // Wrapper
        // ------------------------------------------------------------------------------ //
        $('body').wrapInner("<div class='wrapper'></div>");
      },
  
      // ------------------------------------------------------------------------------ //
      // Change dropdown to hover on dekstop
      // ------------------------------------------------------------------------------ //
      hoverDropdown: function() {
        var getNav = $('nav.navbar.bootsnav'),
          getWindow = $(window).width(),
          getHeight = $(window).height(),
          getIn = getNav.find('ul.nav').data('in'),
          getOut = getNav.find('ul.nav').data('out');
  
        if (getWindow < 991) {
          // Height of scroll navigation sidebar
          $('.scroller').css('height', 'auto');
  
          // Disable mouseenter event
          $('nav.navbar.bootsnav ul.nav')
            .find('li.dropdown')
            .off('mouseenter');
          $('nav.navbar.bootsnav ul.nav')
            .find('li.dropdown')
            .off('mouseleave');
          $('nav.navbar.bootsnav ul.nav')
            .find('.title')
            .off('mouseenter');
          $('nav.navbar.bootsnav ul.nav').off('mouseleave');
          $('.navbar-collapse').removeClass('animated');
  
          // Enable click event
          $('nav.navbar.bootsnav ul.nav').each(function() {
            $('.dropdown-menu', this).addClass('animated');
            $('.dropdown-menu', this).removeClass(getOut);
  
            // Dropdown Fade Toggle
            $('a.dropdown-toggle', this).off('click');
            $('a.dropdown-toggle', this).on('click', function(e) {
              e.stopPropagation();
              $(this)
                .closest('li.dropdown')
                .find('.dropdown-menu')
                .first()
                .stop()
                .fadeToggle()
                .toggleClass(getIn);
              $(this)
                .closest('li.dropdown')
                .first()
                .toggleClass('on');
              return false;
            });
  
            // Hidden dropdown action
            $('li.dropdown', this).each(function() {
              $(this)
                .find('.dropdown-menu')
                .stop()
                .fadeOut();
              $(this).on('hidden.bs.dropdown', function() {
                $(this)
                  .find('.dropdown-menu')
                  .stop()
                  .fadeOut();
              });
              return false;
            });
  
            // Megamenu style
            $('.megamenu-fw', this).each(function() {
              $('.col-menu', this).each(function() {
                $('.content', this).addClass('animated');
                $('.content', this)
                  .stop()
                  .fadeOut();
                $('.title', this).off('click');
                $('.title', this).on('click', function() {
                  $(this)
                    .closest('.col-menu')
                    .find('.content')
                    .stop()
                    .fadeToggle()
                    .addClass(getIn);
                  $(this)
                    .closest('.col-menu')
                    .toggleClass('on');
                  return false;
                });
  
                $('.content', this).on('click', function(e) {
                  e.stopPropagation();
                });
              });
            });
          });
  
          // Hidden dropdown
          var cleanOpen = function() {
            $('li.dropdown', this).removeClass('on');
            $('.dropdown-menu', this)
              .stop()
              .fadeOut();
            $('.dropdown-menu', this).removeClass(getIn);
            $('.col-menu', this).removeClass('on');
            $('.col-menu .content', this)
              .stop()
              .fadeOut();
            $('.col-menu .content', this).removeClass(getIn);
          };
  
          // Hidden om mouse leave
          $('nav.navbar.bootsnav').on('mouseleave', function() {
            cleanOpen();
          });
  
          // Enable click atribute navigation
          $('nav.navbar.bootsnav .attr-nav').each(function() {
            $('.dropdown-menu', this).removeClass('animated');
            $('li.dropdown', this).off('mouseenter');
            $('li.dropdown', this).off('mouseleave');
            $('a.dropdown-toggle', this).off('click');
            $('a.dropdown-toggle', this).on('click', function(e) {
              e.stopPropagation();
              $(this)
                .closest('li.dropdown')
                .find('.dropdown-menu')
                .first()
                .stop()
                .fadeToggle();
              $('.navbar-toggle').each(function() {
                $('.fa', this).removeClass('fa-times');
                $('.fa', this).addClass('fa-bars');
                $('.navbar-collapse').removeClass('in');
                $('.navbar-collapse').removeClass('on');
              });
            });
  
            $(this).on('mouseleave', function() {
              $('.dropdown-menu', this)
                .stop()
                .fadeOut();
              $('li.dropdown', this).removeClass('on');
              return false;
            });
          });
  
          // Toggle Bars
          $('.navbar-toggle').each(function() {
            $(this).off('click');
            $(this).on('click', function() {
              $('.fa', this).toggleClass('fa-bars');
              $('.fa', this).toggleClass('fa-times');
              cleanOpen();
            });
          });
        } else if (getWindow > 991) {
          // Height of scroll navigation sidebar
          $('.scroller').css('height', getHeight + 'px');
  
          // Navbar Sidebar
          if (getNav.hasClass('navbar-sidebar')) {
            // Hover effect Sidebar Menu
            $('nav.navbar.bootsnav ul.nav').each(function() {
              $('a.dropdown-toggle', this).off('click');
              $('a.dropdown-toggle', this).on('click', function(e) {
                e.stopPropagation();
              });
  
              $('.dropdown-menu', this).addClass('animated');
              $('li.dropdown', this).on('mouseenter', function() {
                $('.dropdown-menu', this)
                  .eq(0)
                  .removeClass(getOut);
                $('.dropdown-menu', this)
                  .eq(0)
                  .stop()
                  .fadeIn()
                  .addClass(getIn);
                $(this).addClass('on');
                return false;
              });
  
              $('.col-menu').each(function() {
                $('.content', this).addClass('animated');
                $('.title', this).on('mouseenter', function() {
                  $(this)
                    .closest('.col-menu')
                    .find('.content')
                    .stop()
                    .fadeIn()
                    .addClass(getIn);
                  $(this)
                    .closest('.col-menu')
                    .addClass('on');
                  return false;
                });
              });
  
              $(this).on('mouseleave', function() {
                $('.dropdown-menu', this)
                  .stop()
                  .removeClass(getIn);
                $('.dropdown-menu', this)
                  .stop()
                  .addClass(getOut)
                  .fadeOut();
                $('.col-menu', this)
                  .find('.content')
                  .stop()
                  .fadeOut()
                  .removeClass(getIn);
                $('.col-menu', this).removeClass('on');
                $('li.dropdown', this).removeClass('on');
                return false;
              });
            });
          } else {
            // Hover effect Default Menu
            $('nav.navbar.bootsnav ul.nav').each(function() {
              $('a.dropdown-toggle', this).off('click');
              $('a.dropdown-toggle', this).on('click', function(e) {
                e.stopPropagation();
              });
  
              $('.megamenu-fw', this).each(function() {
                $('.title', this).off('click');
                $('a.dropdown-toggle', this).off('click');
                $('.content').removeClass('animated');
              });
  
              $('.dropdown-menu', this).addClass('animated');
              $('li.dropdown', this).on('mouseenter', function() {
                $('.dropdown-menu', this)
                  .eq(0)
                  .removeClass(getOut);
                $('.dropdown-menu', this)
                  .eq(0)
                  .stop()
                  .fadeIn()
                  .addClass(getIn);
                $(this).addClass('on');
                return false;
              });
  
              $('li.dropdown', this).on('mouseleave', function() {
                $('.dropdown-menu', this)
                  .eq(0)
                  .removeClass(getIn);
                $('.dropdown-menu', this)
                  .eq(0)
                  .stop()
                  .fadeOut()
                  .addClass(getOut);
                $(this).removeClass('on');
              });
  
              $(this).on('mouseleave', function() {
                $('.dropdown-menu', this).removeClass(getIn);
                $('.dropdown-menu', this)
                  .eq(0)
                  .stop()
                  .fadeOut()
                  .addClass(getOut);
                $('li.dropdown', this).removeClass('on');
                return false;
              });
            });
          }
  
          // ------------------------------------------------------------------------------ //
          // Hover effect Atribute Navigation
          // ------------------------------------------------------------------------------ //
          $('nav.navbar.bootsnav .attr-nav').each(function() {
            $('a.dropdown-toggle', this).off('click');
            $('a.dropdown-toggle', this).on('click', function(e) {
              e.stopPropagation();
            });
  
            $('.dropdown-menu', this).addClass('animated');
            $('li.dropdown', this).on('mouseenter', function() {
              $('.dropdown-menu', this)
                .eq(0)
                .removeClass(getOut);
              $('.dropdown-menu', this)
                .eq(0)
                .stop()
                .fadeIn()
                .addClass(getIn);
              $(this).addClass('on');
              return false;
            });
  
            $('li.dropdown', this).on('mouseleave', function() {
              $('.dropdown-menu', this)
                .eq(0)
                .removeClass(getIn);
              $('.dropdown-menu', this)
                .eq(0)
                .stop()
                .fadeOut()
                .addClass(getOut);
              $(this).removeClass('on');
            });
  
            $(this).on('mouseleave', function() {
              $('.dropdown-menu', this).removeClass(getIn);
              $('.dropdown-menu', this)
                .eq(0)
                .stop()
                .fadeOut()
                .addClass(getOut);
              $('li.dropdown', this).removeClass('on');
              return false;
            });
          });
        }
  
        // ------------------------------------------------------------------------------ //
        // Menu Fullscreen
        // ------------------------------------------------------------------------------ //
        if (getNav.hasClass('navbar-full')) {
          var windowHeight = $(window).height(),
            windowWidth = $(window).width();
  
          $('.nav-full').css('height', windowHeight + 'px');
          $('.wrap-full-menu').css('height', windowHeight + 'px');
          $('.wrap-full-menu').css('width', windowWidth + 'px');
  
          $('.navbar-collapse').addClass('animated');
          $('.navbar-toggle').each(function() {
            var getId = $(this).data('target');
            $(this).off('click');
            $(this).on('click', function(e) {
              e.preventDefault();
              $(getId).removeClass(getOut);
              $(getId).addClass('in');
              $(getId).addClass(getIn);
              return false;
            });
  
            $('li.close-full-menu').on('click', function(e) {
              e.preventDefault();
              $(getId).addClass(getOut);
              setTimeout(function() {
                $(getId).removeClass('in');
                $(getId).removeClass(getIn);
              }, 500);
              return false;
            });
          });
        }
      },
  
      // ------------------------------------------------------------------------------ //
      // Navbar Sticky
      // ------------------------------------------------------------------------------ //
      navbarSticky: function() {
        var getNav = $('nav.navbar.bootsnav'),
          navSticky = getNav.hasClass('navbar-sticky');
  
        if (navSticky) {
          // Set Height Navigation
          var getHeight = getNav.height();
          $('.wrap-sticky').height(getHeight);
  
          // Windown on scroll
          var getOffset = $('.wrap-sticky').offset().top;
          $(window).on('scroll', function() {
            var scrollTop = $(window).scrollTop();
            if (scrollTop > getOffset) {
              getNav.addClass('sticked');
            } else {
              getNav.removeClass('sticked');
            }
          });
        }
      },
  
      // ------------------------------------------------------------------------------ //
      // Navbar Scrollspy
      // ------------------------------------------------------------------------------ //
      navbarScrollspy: function() {
        var navScrollSpy = $('.navbar-scrollspy'),
          $body = $('body'),
          getNav = $('nav.navbar.bootsnav'),
          offset = getNav.outerHeight();
  
        if (navScrollSpy.length) {
          $body.scrollspy({ target: '.navbar', offset: offset });
  
          // Animation Scrollspy
          $('.scroll').on('click', function(event) {
            event.preventDefault();
  
            // Active link
            $('.scroll').removeClass('active');
            $(this).addClass('active');
  
            // Remove navbar collapse
            $('.navbar-collapse').removeClass('in');
  
            // Toggle Bars
            $('.navbar-toggle').each(function() {
              $('.fa', this).removeClass('fa-times');
              $('.fa', this).addClass('fa-bars');
            });
  
            // Scroll
            var scrollTop = $(window).scrollTop(),
              $anchor = $(this).find('a'),
              $section = $($anchor.attr('href')).offset().top,
              $window = $(window).width(),
              $minusDesktop = getNav.data('minus-value-desktop'),
              $minusMobile = getNav.data('minus-value-mobile'),
              $speed = getNav.data('speed');
  
            if ($window > 992) {
              var $position = $section - $minusDesktop;
            } else {
              var $position = $section - $minusMobile;
            }
  
            $('html, body')
              .stop()
              .animate(
                {
                  scrollTop: $position,
                },
                $speed
              );
          });
  
          // Activate Navigation
          var fixSpy = function() {
            var data = $body.data('bs.scrollspy');
            if (data) {
              offset = getNav.outerHeight();
              data.options.offset = offset;
              $body.data('bs.scrollspy', data);
              $body.scrollspy('refresh');
            }
          };
  
          // Activate Navigation on resize
          var resizeTimer;
          $(window).on('resize', function() {
            clearTimeout(resizeTimer);
            var resizeTimer = setTimeout(fixSpy, 200);
          });
        }
      },
    };
  
    // Initialize
    $(document).ready(function() {
      bootsnav.initialize();
    });
  
    // Reset on resize
    $(window).on('resize', function() {
      bootsnav.hoverDropdown();
      setTimeout(function() {
        bootsnav.navbarSticky();
      }, 500);
  
      // Toggle Bars
      $('.navbar-toggle').each(function() {
        $('.fa', this).removeClass('fa-times');
        $('.fa', this).addClass('fa-bars');
        $(this).removeClass('fixed');
      });
      $('.navbar-collapse').removeClass('in');
      $('.navbar-collapse').removeClass('on');
      $('.navbar-collapse').removeClass('bounceIn');
    });
  })(jQuery);
  