/*=========================================================================================
  File Name: customizer.js
  Description: Template customizer js.
  ----------------------------------------------------------------------------------------
  Item Name: Modern Admin - Clean Bootstrap 4 Dashboard HTML Template
  Author: Pixinvent
  Author URL: hhttp://www.themeforest.net/user/pixinvent
==========================================================================================*/

(function (window, document, $) {
  'use strict';

  /********************************
  *           Customizer          *
  ********************************/
  // Customizer toggle & close button click events  [Remove customizer code from production]
  $('.customizer-toggle').on('click', function () {
    $('.customizer').toggleClass('open');
  });
  $('.customizer-close').on('click', function () {
    $('.customizer').removeClass('open');
  });
  if ($('.customizer-content').length > 0) {
    var customizer_content = new PerfectScrollbar('.customizer-content');

  }

  /************************************
  *           Layout Options          *
  ************************************/
  var body = $('body'),
    header_navbar = $('nav.header-navbar'),
    horz_header_navbar = $('div.header-navbar'),
    footer = $('footer'),
    menu = $('.main-menu'),
    menu_type = body.data('menu'),
    horz_layout = false,
    semiLight = false,
    semiDark = false;

  if (header_navbar.hasClass('navbar-semi-light')) {
    semiLight = true;
  }
  if (header_navbar.hasClass('navbar-semi-dark')) {
    semiDark = true;
  }

  if (menu_type == 'horizontal-menu') {
    horz_layout = true;
    $('.layout-options .navbar').parent('.nav-item').attr('style', 'display: none !important');
    $('.color-options .nav-semi-light').parent('.nav-item').attr('style', 'display: none !important');
    $('.color-options .nav-semi-dark').parent('.nav-item').attr('style', 'display: none !important');
    $('#native-scroll').parent('.custom-checkbox').attr('style', 'display: none !important');
    $('#bordered-navigation').parent('.custom-checkbox').attr('style', 'display: none !important');
    $('#collapsible-navigation').parent('.custom-checkbox').attr('style', 'display: none !important');
    $('#static-navigation').parent('.custom-checkbox').attr('style', 'display: none !important');
    $('#flipped-navigation').parent('.custom-checkbox').attr('style', 'display: none !important');

    $('.color-options li:eq(3) a').tab('show');
  }

  if (menu_type === 'vertical-compact-menu' || menu_type === 'vertical-content-menu' || menu_type === 'vertical-overlay-menu') {
    $('.color-options a#color-opt-3').tab('show');
    if (menu_type === 'vertical-content-menu') {
      $('.color-options a#color-opt-4').tab('show');
    }
    if (menu_type === 'vertical-compact-menu' || menu_type === 'vertical-overlay-menu') {
      $('#boxed-layout').parent('.custom-checkbox').attr('style', 'display: none !important');
    }
    $('.color-options .nav-semi-light').parent('.nav-item').attr('style', 'display: none !important');
    $('.color-options .nav-semi-dark').parent('.nav-item').attr('style', 'display: none !important');
  }

  if (menu_type === 'vertical-content-menu') {
    $('#fixed-layout').parent('.custom-checkbox').attr('style', 'display: none !important');
    $('#native-scroll').parent('.custom-checkbox').attr('style', 'display: none !important');
    $('#static-navigation').parent('.custom-checkbox').attr('style', 'display: none !important');
    $('.layout-options .navbar').parent('.nav-item').attr('style', 'display: none !important');
  }

  if (menu_type === 'vertical-compact-menu') {
    $('#right-side-icons').parent('.custom-checkbox').attr('style', 'display: none !important');
    $('#collapsible-navigation').parent('.custom-checkbox').attr('style', 'display: none !important');
    $('#brand-center').parent('.custom-checkbox').attr('style', 'display: none !important');
  }

  if (menu_type === 'vertical-overlay-menu') {
    $('#brand-center').parent('.custom-checkbox').attr('style', 'display: none !important');
    $('#native-scroll').parent('.custom-checkbox').attr('style', 'display: none !important');
  }

  if (menu_type === 'vertical-menu-modern') {
    $('#brand-center').parent('.custom-checkbox').attr('style', 'display: none !important');
  }

  // Layouts

  // If overlay menu template then collapsed sidebar should be checked by default
  if (menu_type === 'vertical-overlay-menu') {
    $('#collapsed-sidebar').prop('checked', true);
    $('#static-layout').parent('.custom-checkbox').attr('style', 'display: none !important');
    $('#static-navigation').parent('.custom-checkbox').attr('style', 'display: none !important');
  }

  $('#collapsed-sidebar').on('click', function () {

    // Toggle menu
    $.app.menu.toggle();

    setTimeout(function () {
      $(window).trigger("resize");
    }, 100);
  });
  $('#fixed-layout').on('click', function () {
    if ($('#boxed-layout').prop('checked') === true) {
      $('#boxed-layout').trigger('click');
    }
    if ($(this).prop('checked') === true) {
      // body.addClass("footer-fixed")
      if (!body.hasClass('footer-fixed')) {
        body.addClass('footer-fixed');
      }
      if (!body.hasClass('fixed-navbar') && horz_layout === false) {
        body.addClass('fixed-navbar');
      }
      if (!header_navbar.hasClass('fixed-top') && horz_layout === false) {
        header_navbar.addClass('fixed-top');
      }
      if (!footer.hasClass('fixed-bottom')) {
        footer.addClass('fixed-bottom');
      }
      if (!horz_header_navbar.hasClass('navbar-fixed') && horz_layout === true) {
        horz_header_navbar.addClass('navbar-fixed');
      }
      header_navbar.removeClass('navbar-static-top');
      horz_header_navbar.removeClass('navbar-static');
      menu.removeClass('menu-static');
      footer.removeClass('footer-static');
    }
    else {
      footer.removeClass('fixed-bottom');
      body.removeClass("footer-fixed")
    }
  });

  $('#boxed-layout').on('click', function () {
    if ($('#fixed-layout').prop('checked') === true) {
      $('#fixed-layout').trigger('click');
    }
    if ($(this).prop('checked') === true) {
      if (!body.hasClass('container boxed-layout')) {
        body.addClass('container boxed-layout');
      }
      if (!header_navbar.hasClass('container boxed-layout')) {
        header_navbar.addClass('container boxed-layout');
      }
      header_navbar.removeClass('navbar-static-top');
      menu.removeClass('menu-static');
      footer.removeClass('footer-static');
    }
    else {
      body.removeClass('container boxed-layout');
      header_navbar.removeClass('container boxed-layout');
    }
  });

  $('#static-layout').on('click', function () {
    if ($(this).prop('checked') === true) {
      if (!header_navbar.hasClass('navbar-static-top')) {
        header_navbar.addClass('navbar-static-top');
      }
      if (!menu.hasClass('menu-static')) {
        menu.addClass('menu-static');
      }
      if (!footer.hasClass('footer-static')) {
        footer.addClass('footer-static');
      }
      if (horz_layout === true) {
        horz_header_navbar.unstick();
        horz_header_navbar.addClass('navbar-static');
      }
      body.removeClass('fixed-navbar');
      header_navbar.removeClass('fixed-top');
      horz_header_navbar.removeClass('menu-fixed');
      menu.removeClass('menu-fixed');
      footer.removeClass('fixed-bottom');
      $.app.menu.manualScroller.disable();
    }
    else {
      if (horz_layout === false) {
        body.addClass('fixed-navbar');
        menu.removeClass('navbar-static').addClass('menu-fixed');
        header_navbar.removeClass('navbar-static-top').addClass('fixed-top');
      }
      if (horz_layout === true) {
        horz_header_navbar.sticky();
        horz_header_navbar.removeClass('navbar-static').addClass('navbar-fixed');
      }
      footer.removeClass('footer-static');
      $.app.menu.manualScroller.enable();
    }
  });

  // Navbar
  if (menu_type === 'vertical-overlay-menu') {
    $('#brand-center').prop('checked', true);
  }
  $('#brand-center').on('click', function () {
    if (!header_navbar.hasClass('navbar-brand-center')) {
      if (semiLight == true) {
        header_navbar.removeClass('navbar-semi-light');
      }
      if (semiDark == true) {
        header_navbar.removeClass('navbar-semi-dark');
      }
      header_navbar.addClass('navbar-dark navbar-brand-center');
      changeLogo('light');
    }
    else {
      if (semiLight == true) {
        header_navbar.removeClass('navbar-dark navbar-brand-center');
        changeLogo('dark');
        header_navbar.addClass('navbar-semi-light');
      }
      if (semiDark == true) {
        header_navbar.removeClass('navbar-dark navbar-brand-center');
        changeLogo('light');
        header_navbar.addClass('navbar-semi-dark');
      }
    }
  });
  $('#navbar-static-top').on('click', function () {
    if ($(this).prop('checked') === true) {
      if (!header_navbar.hasClass('navbar-static-top')) {
        header_navbar.addClass('navbar-static-top');
      }
      if (!menu.hasClass('menu-static')) {
        menu.addClass('menu-static');
      }
      if (!footer.hasClass('footer-static')) {
        footer.addClass('footer-static');
      }
      body.removeClass('fixed-navbar');
      header_navbar.removeClass('fixed-top');
      menu.removeClass('menu-fixed');
      footer.removeClass('fixed-bottom');
      $.app.menu.manualScroller.disable();
    }
    else {
      body.addClass('fixed-navbar');
      header_navbar.removeClass('navbar-static-top').addClass('fixed-top');
      menu.removeClass('menu-static').addClass('menu-fixed');
      footer.removeClass('footer-static');
      $.app.menu.manualScroller.enable();
    }
  });


  // Navigation
  $('#native-scroll').on('click', function () {
    if ($('#static-navigation').prop('checked') === true) {
      menu.removeClass('menu-static').addClass('menu-fixed');
      $('#static-navigation').attr('checked', false);
    }
    if (!menu.hasClass('menu-native-scroll')) {
      menu.addClass('menu-native-scroll');
      $.app.menu.manualScroller.disable();
    }
    else {
      menu.removeClass('menu-native-scroll');
      $.app.menu.manualScroller.enable();
    }
  });
  $('#right-side-icons').on('click', function () {
    if (!menu.hasClass('menu-icon-right')) {
      menu.addClass('menu-icon-right');
    }
    else {
      menu.removeClass('menu-icon-right');
    }

    if (horz_layout === true) {
      if (!horz_header_navbar.hasClass('navbar-icon-right')) {
        horz_header_navbar.addClass('navbar-icon-right');
      }
      else {
        horz_header_navbar.removeClass('navbar-icon-right');
      }
    }
  });
  $('#bordered-navigation').on('click', function () {
    if (!menu.hasClass('menu-bordered')) {
      menu.addClass('menu-bordered');
    }
    else {
      menu.removeClass('menu-bordered');
    }
  });
  $('#flipped-navigation').on('click', function () {
    if (!body.hasClass('menu-flipped')) {
      body.addClass('menu-flipped');
      $('.customizer-close').trigger('click');
    }
    else {
      body.removeClass('menu-flipped');
    }

    if (horz_layout === true) {
      if (!horz_header_navbar.hasClass('navbar-flipped')) {
        horz_header_navbar.addClass('navbar-flipped');
      }
      else {
        horz_header_navbar.removeClass('navbar-flipped');
      }
    }
  });
  $('#collapsible-navigation').on('click', function () {
    if (!menu.hasClass('menu-collapsible')) {
      menu.addClass('menu-collapsible');
    }
    else {
      menu.removeClass('menu-collapsible');
    }
  });
  $('#static-navigation').on('click', function () {
    if ($('#native-scroll').prop('checked') === true) {
      menu.removeClass('menu-native-scroll');
      $('#native-scroll').attr('checked', false);
    }
    if (!menu.hasClass('menu-static')) {
      menu.addClass('menu-static').removeClass('menu-fixed');
      $.app.menu.manualScroller.disable();
    }
    else {
      menu.removeClass('menu-static').addClass('menu-fixed');
      $.app.menu.manualScroller.enable();
    }
  });



  /****************************************
  *           Change menu bg color        *
  ****************************************/
  if ($('.main-menu').hasClass('menu-dark')) {
    $('.customizer-sidebar-options').find('[data-sidebar="menu-dark"]').addClass('active').siblings('btn').removeClass('active');
  }
  else {
    $('.customizer-sidebar-options').find('[data-sidebar="menu-light"]').addClass('active').siblings('btn').removeClass('active');
  }

  $('.customizer-sidebar-options .btn').on('click', function () {
    var $this = $(this),
      sidebarColor = $this.attr('data-sidebar');
    $this.addClass('active').siblings('.btn').removeClass('active');
    $('.main-menu').removeClass('menu-dark menu-light').addClass(sidebarColor);
    if (horz_layout === true) {
      horz_header_navbar.removeClass('navbar-dark navbar-light');
      if (sidebarColor == 'menu-light') {
        horz_header_navbar.addClass('navbar-light');
      }
      else {
        horz_header_navbar.addClass('navbar-dark');
      }
    }
  });


  /*********************************
  *           Color Options        *
  *********************************/

  var el = $('nav.header-navbar'),
    nav_type = 'navbar-semi-light',
    bgClass = '';
  if (el.attr('class').match(/\bbg-\S+/g)) {
    bgClass = el.attr('class').match(/\bbg-\S+/g)[0];
  }

  // Nav Semi Light
  $('.nav-semi-light').on('click', function () {
    chkBgClass(el);
    changeLogo('dark');
    resetBgClass(el);
    addBgClass(el, 'navbar-semi-light bg-gradient-x-grey-blue');
    $('input[name=nav-slight-clr].default').prop('checked', true);
    semiLight = true;
    semiDark = false;
  });
  $("input[name='nav-slight-clr']").change(function () {
    // bgClass = el.attr('class').match(/\bbg-\S+/g)[0];
    if (semiDark == true) {
      el.removeClass('navbar-semi-dark').addClass('navbar-semi-light');
    }
    bgClass = chkBgClass(el);
    el.removeClass(bgClass).addClass($(this).data('bg'));
  });

  // Nav Semi Dark
  $('.nav-semi-dark').on('click', function () {
    chkBgClass(el);
    changeLogo('light');
    resetBgClass(el);
    addBgClass(el, 'navbar-semi-dark navbar-shadow');
    $('input[name=nav-sdark-clr].default').prop('checked', true);
    semiLight = false;
    semiDark = true;
  });
  $("input[name='nav-sdark-clr']").change(function () {
    if (semiLight == true) {
      el.removeClass('navbar-semi-light').addClass('navbar-semi-dark');
    }
    var el = $('.navbar-header');
    var bgClass = chkBgClass(el);
    el.removeClass(bgClass).addClass($(this).data('bg'));
  });

  // Nav Dark
  $('.nav-dark').on('click', function () {
    chkBgClass(el);
    changeLogo('light');
    resetBgClass(el);
    addBgClass(el, 'navbar-dark');
    $('input[name=nav-dark-clr].default').prop('checked', true);
  });
  $("input[name='nav-dark-clr']").change(function () {
    if (!el.hasClass('navbar-dark')) {
      $('.nav-dark').trigger('click');
    }
    var bgClass = chkBgClass(el);
    el.removeClass(bgClass).addClass($(this).data('bg'));
  });

  // Nav Light
  $('.nav-light').on('click', function () {
    chkBgClass(el);
    changeLogo('dark');
    resetBgClass(el);
    addBgClass(el, 'navbar-light navbar-shadow');
    $('input[name=nav-light-clr].default').prop('checked', true);
  });
  $("input[name='nav-light-clr']").change(function () {
    if (!el.hasClass('navbar-light')) {
      $('.nav-light').trigger('click');
    }
    var bgClass = chkBgClass(el);
    el.removeClass(bgClass).addClass($(this).data('bg'));
  });

  function chkBgClass(elm) {
    if (elm.attr('class').match(/\bbg-\S+/g)) {
      bgClass = elm.attr('class').match(/\bbg-\S+/g);
      var classes = '';
      $.map(bgClass, function (k, v) {
        if (v === 0)
          classes = k;
        else
          classes = classes + ' ' + k;
      });
      bgClass = classes;
    }
    else
      bgClass = '';

    return bgClass;
  }

  function resetBgClass(elm) {
    elm.removeClass('navbar-semi-dark navbar-semi-light navbar-light navbar-dark navbar-shadow ' + bgClass);
    var bgClassHeader = '';
    if ($('.navbar-header').attr('class').match(/\bbg-\S+/g)) {
      bgClassHeader = $('.navbar-header').attr('class').match(/\bbg-\S+/g)[0];
    }
    $('.navbar-header').removeClass(bgClassHeader);
  }

  function addBgClass(elm, classes) {
    elm.addClass(classes);
  }

  function changeLogo(logo) {
    if (logo == 'light') {
      $('.brand-logo').attr('src', '../../../app-assets/images/logo/logo.png');
    }
    else {
      $('.brand-logo').attr('src', '../../../app-assets/images/logo/logo.png');
    }
  }

  // Check local storage if menu is collapsed or not
  var menuToggle;
  if (typeof (Storage) !== "undefined") {
    menuToggle = localStorage.getItem("menuLocked");
  }

  if (menuToggle === "false") {
    $('#collapsed-sidebar').prop('checked', true);
  }
})(window, document, jQuery);
