diff default/assets/js/theme.js @ 0:1d038bc9b3d2 default tip

Up:default
author Liny <dev@neowd.com>
date Sat, 31 May 2025 09:21:51 +0800
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/default/assets/js/theme.js	Sat May 31 09:21:51 2025 +0800
@@ -0,0 +1,1620 @@
+/*
+* Name:        Oscar
+* Written by: 	Unifato - (http://unifato.com)
+* Version:     1.0.0
+*/
+
+(function($) {
+  'use strict';
+
+  var initBodyClass = "";
+  if($("body").hasClass("sidebar-collapse")) {
+    initBodyClass = "sidebar-collapse";
+  } else if ($("body").hasClass("sidebar-expand")) {
+    initBodyClass = "sidebar-expand";
+  }
+
+  var Unifato = {
+    init: function() {
+      this.collapseNavbar();
+      $(window).scroll(this.collapseNavbar);
+      this.contentHeight();
+
+      this.header();
+      this.sidebar();
+      this.content();
+      this.enableScrollbar();
+      this.inputFocus();
+      this.enableTooltip();
+      this.enableMailbox();
+      this.enableRadioCheckbox();
+      this.enableValidation();
+      this.enablePace();
+      this.enablePlugins();
+    },
+
+    enablePace: function() {
+      Pace.on('done', function() {
+        $(document).trigger('PACE_DONE');
+      });
+    },
+
+    enablePlugins: function() {
+      this.enableSweetAlert();
+      this.enableTodo();
+      this.enableTwitterWidget();
+      this.enableFacebookWidget();
+      this.enableVectorMaps();
+      this.enableGoogleMaps();
+      this.enableFullCalendar();
+      this.enableClndr();
+      this.enableDataTables();
+      this.enableFootable();
+      this.enableTableEditable();
+      this.enableCountUp();
+      this.enableRangeSlider();
+      this.enableSortable();
+      this.enableNestedSortable();
+      this.enableTimelineLoadMoreBtn();
+      this.enableCarousel();
+      this.enableMedia();
+      this.enableInputMask();
+      this.enableDropify();
+      this.enableDropzone();
+      this.enableClockPicker();
+      this.enableColorPicker();
+      this.enableDateRangePicker();
+      this.enablePredefinedDateRangePicker();
+      this.enableDatePicker();
+      this.enableSelect2();
+      this.enableSwitchery();
+      this.enableTouchspin();
+      this.enableMultiSelect();
+      this.enableTinyMCE();
+      this.enableBootstrapWysiwyg();
+      this.enableCircleProgress();
+      this.enableSparkline();
+    },
+
+    collapseNavbar: function() {
+      if( $(window).scrollTop() > 30 ) {
+        $("#wrapper").addClass("fix-top");
+      }
+      else {
+        $("#wrapper").removeClass("fix-top");
+      }
+    },
+
+    header: function() {
+
+    },
+
+    contentHeight: function() {
+      var width = window.innerWidth > 0 ? window.innerWidth:screen.width;
+      var l;
+
+      if ( width > 720 && $("body").hasClass("collapse-collapse") ) {
+        l = $(".site-sidebar").outerHeight() - 1;
+        $(".main-wrapper").css("min-height", l + "px");
+      }
+      if ( width > 720 && $("body").hasClass('sidebar-horizontal') ) {
+        l = (window.innerHeight > 0 ? window.innerHeight : this.screen.height) - 1 - $(".navbar").outerHeight() - $('.site-sidebar').outerHeight();
+        $(".main-wrapper").css("min-height", l + "px");
+      }
+      else if (width > 720) {
+        l = (window.innerHeight > 0 ? window.innerHeight : this.screen.height) - 1 - $(".navbar").outerHeight();
+        $(".main-wrapper").css("min-height", l + "px");
+      }
+    },
+
+    content: function() {
+      $(".card-expandable .card-header").on("click",function(e) {
+        $(this).parents(".card").toggleClass("card-expanded");
+      });
+
+      this.enableMagnificPopup();
+
+      var scrollToBottom = document.getElementsByClassName('scroll-to-bottom');
+      for( var i = 0; i < scrollToBottom.length; i++ ) {
+        scrollToBottom[i].scrollTop = scrollToBottom[i].scrollHeight;
+      }
+
+      $('.blog-post-share-links .toggle-link').click(function() {
+        $(this).closest('ul').toggleClass('active');
+      });
+    },
+
+    initScrollbar: function($el) {
+      $el.perfectScrollbar($el[0].dataset);
+    },
+
+    sidebar: function() {
+      var self = this;
+      if( document.body.classList.contains('sidebar-expand') )
+      $('.side-menu').metisMenu({ preventDefault: true });
+      $('.side-menu').on('show.metisMenu',function() {
+        $('.site-sidebar.scrollbar-enabled').perfectScrollbar('destroy');
+        self.initScrollbar( $('.site-sidebar.scrollbar-enabled') );
+      });
+      this.sidebarToggle();
+			this.rightSidebarToggle();
+      this.sidebarUserToggle();
+      this.chatSidebar();
+    },
+
+    setMenu: function(){
+      var self = this;
+      var width = window.innerWidth > 0 ? window.innerWidth:screen.width;
+      var $body = $("body");
+      $('.site-sidebar.scrollbar-enabled').perfectScrollbar('destroy').removeClass('ps');
+
+      if (width < 961) {
+        $('.side-menu').metisMenu({ preventDefault: true });
+      }
+      else if (width > 960 && width < 1170 && initBodyClass == "sidebar-expand") {
+        $(".site-sidebar").show();
+        $body.removeClass("sidebar-expand");
+        $body.addClass("sidebar-collapse");
+      }
+      else if (width >= 1170 && initBodyClass == "sidebar-expand") {
+        $(".site-sidebar").show();
+        $body.removeClass("sidebar-collapse");
+        $body.addClass("sidebar-expand");
+        Unifato.initScrollbar( $('.site-sidebar.scrollbar-enabled') );
+      }
+      else if ($body.hasClass("sidebar-expand")) {
+        $(".site-sidebar").show();
+        Unifato.initScrollbar( $('.site-sidebar.scrollbar-enabled') );
+      }
+      else if ( document.body.classList.contains('sidebar-horizontal') ) {
+        $(".site-sidebar").show();
+        $('.side-menu').metisMenu('dispose');
+      }
+      else {
+        $(".site-sidebar").show();
+      }
+    },
+
+    sidebarToggle: function() {
+      var self = this;
+      $(".sidebar-toggle a").on("click",function(){
+        var width = window.innerWidth > 0 ? window.innerWidth : screen.width;
+				var $body = $("body");
+        $('.site-sidebar.scrollbar-enabled').perfectScrollbar('destroy').removeClass('ps');
+
+        if (width < 961) {
+          $(".site-sidebar").toggle();
+        }
+        else if ($body.hasClass("sidebar-expand")) {
+          $body.removeClass("sidebar-expand");
+          $body.addClass("sidebar-collapse");
+          $(".side-user > a").removeClass("active");
+          $(".side-user > a").siblings(".side-menu").hide();
+          $('.side-menu .sub-menu').css('height', 'auto');
+          $('.side-menu').metisMenu('dispose');
+        }
+        else if ($body.hasClass("sidebar-collapse")) {
+          $body.removeClass("sidebar-collapse");
+          $body.addClass("sidebar-expand");
+          self.initScrollbar( $('.site-sidebar.scrollbar-enabled') );
+          $('.side-menu').metisMenu({ preventDefault: true });
+        }
+
+        Unifato.contentHeight();
+        if( width > 961 ) {
+          $(document).trigger("SIDEBAR_CHANGED_WIDTH");
+        }
+      });
+
+    },
+
+    rightSidebarToggle : function() {
+			$(".right-sidebar-toggle").on("click",function(e) {
+        $('.dropdown-toggle[aria-expanded="true"]').dropdown('toggle');
+				$('body').toggleClass('right-sidebar-expand');
+        return false;
+			});
+
+      document.addEventListener('click', function(event) {
+        var $rightSidebar = document.getElementsByClassName('right-sidebar')[0],
+            $chatPanel = document.getElementsByClassName('chat-panel')[0];
+        var isInsideContainer = $rightSidebar.contains( event.target ) || $chatPanel.contains(event.target);
+        if( !isInsideContainer ) {
+          document.body.classList.remove('right-sidebar-expand');
+          $chatPanel.hidden = 'hidden';
+        }
+      });
+		},
+
+    sidebarUserToggle: function() {
+      $(".side-user > a").on("click",function(){
+        if ($('body').hasClass("sidebar-collapse") === false) {
+          $(this).toggleClass("active");
+          $(this).siblings(".side-menu").toggle();
+        }
+      });
+    },
+
+    chatSidebar: function() {
+      var el = $('[data-plugin="chat-sidebar"]');
+      if( !el.length ) return;
+      var chatList = el.find('.chat-list');
+      this.chatPanel();
+      chatList.each(function(index) {
+        var $this = $(this);
+        $(this).find('.list-group a').on('click', function() {
+          $this.find('.list-group a.active').removeClass('active');
+          $(this).addClass('active');
+          var el = $('.chat-panel');
+          if(!el.length) return;
+          el.removeAttr('hidden');
+
+          // For Scroll to Bottom
+          var messages = el.find('.messages');
+          messages[0].scrollTop = messages[0].scrollHeight;
+          if( messages[0].classList.contains('scrollbar-enabled') ) {
+            messages.perfectScrollbar('update');
+          }
+
+          el.find('.user-name').html( $(this).data('chat-user'));
+        });
+      });
+    },
+
+    chatPanel: function() {
+      var el = $('.chat-panel');
+      if(!el.length) return;
+
+      // Close Button
+      el.find('.close').on('click', function(){
+        el.attr('hidden', true);
+        el.find('.panel-body').removeClass('hide');
+      });
+
+      // Minimize Button
+      el.find('.minimize').on('click', function(){
+        el.find('.card-block').attr('hidden', !el.find('.card-block').attr('hidden') );
+        if( el.find('.card-block').attr('hidden') === 'hidden' )
+        $(this).find('.material-icons').html('expand_less');
+        else
+        $(this).find('.material-icons').html('expand_more');
+      });
+
+    },
+
+    enableMagnificPopup: function() {
+      var el = $('[data-toggle="lightbox"], [data-toggle="lightbox-gallery"]');
+      if(!el.length) return;
+      el.each(function() {
+        var $this = $(this),
+            src = $this.data('src'),
+            type = $this.data('type'),
+            defaults = {},
+            options = $this.data('plugin-options') !== undefined ? $this.data('plugin-options') : {},
+            lightboxClass = $this.data('lightbox-class') !== undefined ? $this.data('lightbox-class') : "";
+
+        if( $this.data('toggle') === "lightbox" ) {
+          defaults = {
+            type: type,
+            callbacks: {
+              beforeOpen: function() {
+                this.st.image.markup = this.st.image.markup.replace('mfp-figure', 'mfp-figure animated ' + this.st.el.attr('data-effect') );
+              }
+            }
+          };
+          options = $.extend( {}, defaults, options);
+          $this.magnificPopup(options);
+        }
+
+        else if( $this.data('toggle') === "lightbox-gallery" ) {
+          defaults = {
+            type: type,
+            delegate: 'a',
+            gallery: {
+              enabled: true,
+            },
+            callback: {
+              beforeOpen: function() {
+                this.st.image.markup = this.st.image.markup.replace('mfp-figure', 'mfp-figure animated ' + this.st.el.attr('data-effect') );
+              }
+            }
+          };
+          options = $.extend( {}, defaults, options);
+          $this.magnificPopup(options);
+        }
+      });
+    },
+
+    enableScrollbar: function() {
+      var el = $('.scrollbar-enabled, .dropdown-list-group ');
+      if(!el.length) return;
+      el.each(function(index){
+
+        var $this = $(this);
+        var options = {
+          wheelSpeed: 0.5
+        };
+        if( this.classList.contains('suppress-x') ) options.suppressScrollX = true;
+        if( this.classList.contains('suppress-y') ) options.suppressScrollY = true;
+        $this.perfectScrollbar(options);
+
+        if($this.parent().parent().hasClass('dropdown-card')) {
+          $(document).on('shown.bs.dropdown',$this.parent().parent(), function(){
+            $this.perfectScrollbar('update');
+          });
+        }
+
+        $(document).on('show.metisMenu, hide.metisMenu', function() {
+          $this.perfectScrollbar('update');
+        });
+
+        if ( this.classList.contains('scroll-to-bottom') ) {
+          this.scrollTop = this.scrollHeight;
+          $this.perfectScrollbar('update');
+        }
+
+      });
+    },
+
+    inputFocus: function() {
+      var el = $('input:not([type=checkbox]):not([type=radio]), textarea');
+      if( !el.length ) return;
+
+      el.each(function() {
+        var $this = $(this),
+            self = this;
+
+        var hasValueFunction = function() {
+          if( self.value.length > 0 ) {
+            self.parentNode.classList.add('input-has-value');
+            $(self).closest('.form-group').addClass('input-has-value');
+          }
+          else {
+            self.parentNode.classList.remove('input-has-value');
+            $(self).closest('.form-group').removeClass('input-has-value');
+          }
+        };
+
+        hasValueFunction(this);
+        $this.on('input', hasValueFunction);
+
+        $this.focusin(function() {
+          this.parentNode.classList.add('input-focused');
+          $this.closest('.form-group').addClass('input-focused');
+        });
+        $this.focusout(function() {
+          this.parentNode.classList.remove('input-focused');
+          $this.closest('.form-group').removeClass('input-focused');
+        });
+
+        $this.find('.remove-focus').on('click',function() {
+          $this.emit('focusout');
+        });
+      });
+    },
+
+    enableTooltip: function() {
+      $('[data-toggle="tooltip"]').tooltip();
+    },
+
+    enableMailbox: function() {
+      this.enableMailboxInbox();
+    },
+
+    enableMailboxInbox: function() {
+      var el = $('.mail-inbox');
+      if( !el.length ) return;
+      var MailBox = {
+        init: function() {
+          this.selectAll();
+        },
+        selectAll: function() {
+          var selectAll = el.find('.mail-inbox-select-all input');
+          selectAll.on('change', function() {
+            var allCheckboxes = el.find('.mail-list .mail-select-checkbox input[type="checkbox"]');
+            for( var i = 0; i < allCheckboxes.length; i++ ) {
+              allCheckboxes[i].checked = selectAll[0].checked;
+            }
+          });
+        }
+      };
+      MailBox.init();
+    },
+
+    enableRadioCheckbox: function() {
+      var input = document.getElementsByTagName('input');
+      for( var i = 0; i < input.length; i++ ) {
+        if( input[i].type === 'checkbox' ) {
+          if( input[i].checked === true ) {
+            input[i].parentNode.classList.add('checkbox-checked');
+          }
+          input[i].addEventListener('change', function() {
+            if( this.checked === true ) {
+              this.parentNode.classList.add('checkbox-checked');
+            } else {
+              this.parentNode.classList.remove('checkbox-checked');
+            }
+          });
+        }
+      }
+    },
+
+    enableValidation: function() {
+      if( typeof $.validate === 'function' ) {
+        $.validate({
+          modules: 'security, date',
+          errorMessageClass: 'invalid-feedback',
+          errorElementClass: 'is-invalid',
+        });
+      }
+
+      this.enableFieldLengthIndicator();
+    },
+
+    enableFieldLengthIndicator: function() {
+      var el = $('.field-length-indicator');
+      if( !el.length ) return;
+      el.each(function() {
+        var $this = $(this),
+            target = $this.data('length-target');
+
+        $(target).restrictLength( $this.find('.indicator') );
+      });
+    },
+
+    enableSweetAlert: function() {
+      if( typeof swal === 'function' ) {
+        swal.setDefaults({
+          buttonsStyling: false, // disables plugn styles for buttons
+          cancelButtonClass: 'btn btn-default',
+          confirmButtonClass: 'btn btn-info'
+        });
+      }
+
+      var el = $('.modal-alert');
+      if( !el.length ) return;
+      el.each(function() {
+        var $this = $(this);
+        var options = {};
+
+        if ( $this.data('title') !== undefined ) options.title = $this.data('title');
+        if ( $this.data('text') !== undefined ) options.text = $this.data('text');
+
+        if ( $this.data('type') !== undefined ) {
+          options.type = $this.data('type');
+
+          switch( $this.data('type') ) {
+            case 'success': options.confirmButtonClass = 'btn btn-success'; break;
+            case 'warning': options.confirmButtonClass = 'btn btn-warning'; break;
+            case 'error': options.confirmButtonClass = 'btn btn-danger'; break;
+            default: options.confirmButtonClass = 'btn btn-info';
+          }
+        } else {
+          options.confirmButtonClass = 'btn btn-info';
+        }
+
+        if ( $this.data('button-text') !== undefined ) options.confirmButtonText = $this.data('button-text');
+
+        $this.click(function() {
+          swal(options);
+        });
+      });
+    },
+
+    enableTodo: function() {
+      var el = document.getElementsByClassName('todo-widget');
+      if( !el.length ) return;
+      for( var i = 0; i < el.length; i++ ) {
+        var todo1 = new Todo( el[i] );
+      }
+    },
+
+    enableTwitterWidget: function() {
+      var el = document.getElementsByClassName('twitter-widget');
+      if ( !el.length ) return;
+      for( var i = 0; i < el.length; i++) {
+        var options = JSON.parse( JSON.stringify( el[i].dataset )).pluginOptions;
+        if ( options === undefined ) options = {};
+        var twitter = new TwitterWidget( el[i], options );
+      }
+    },
+
+    enableFacebookWidget: function() {
+      var el = document.getElementsByClassName('facebook-widget');
+      if ( !el.length ) return;
+      for( var i = 0; i < el.length; i++) {
+        var options = JSON.parse( JSON.stringify( el[i].dataset )).pluginOptions;
+        if ( options === undefined ) options = {};
+        var facebook = new FacebookWidget( el[i], options );
+      }
+    },
+
+    enableVectorMaps: function() {
+      var el = $('[data-toggle="vector-map"]');
+      if ( !el.length ) return;
+      var defaults = {
+        map: 'world_en',
+        backgroundColor: null,
+        borderColor: "#ffffff",
+        color: '#999999',
+        hoverOpacity: 0.8,
+        selectedColor: '#777777',
+        enableZoom: true,
+        showTooltip: true,
+        normalizeFunction: 'polynomial',
+        onLabelShow: function(event, label, code) {
+          var mapValues = $(this)[0].mapValues,
+            $this = $(this),
+            place = label[0].innerHTML;
+          if( mapValues !== undefined) {
+            var value = $(this)[0].mapValues[code];
+            if(value!==undefined ) {
+              value = $(this)[0].mapValues[code];
+              if($this.data('plugin-options').label !== undefined) {
+                label[0].innerHTML = $this.data('plugin-options').label.replace('%p', place).replace('%v', value);
+              }
+              else
+                label[0].innerHTML = label[0].innerHTML + ":  " + value;
+            }
+            else if(value===undefined) {
+              if($this.data('plugin-options').label !== undefined) {
+                label[0].innerHTML = $this.data('plugin-options').labelNaN.replace('%p', place);
+              }
+              else
+                label[0].innerHTML = 'NaN';
+            }
+          }
+          else if( $this.data('plugin-options').label !== undefined ) {
+            label[0].innerHTML = $this.data('plugin-options').label.replace('%p',place);
+          }
+        },
+      };
+      el.each(function(index) {
+        var $this = $(this),
+          mapOptions = $this.data('plugin-options'),
+          instance = null,
+          options = $.extend({}, defaults, mapOptions);
+
+        if ( this.unifato === undefined )
+        this.unifato = {};
+        instance = this.unifato;
+        if(typeof(options.valuesSrcFile) !== 'undefined') {
+          $.ajax({
+            url: options.valuesSrcFile,
+            dataType: "json",
+            success: function(result) {
+              options.values = result;
+              $this[0].mapValues = result;
+              instance.vmap = $this.vectorMap(options);
+            },
+          });
+        }
+        else {
+          instance.vmap = $this.vectorMap(options);
+        }
+      });
+    },
+
+    enableGoogleMaps: function() {
+      var el = $('[data-toggle="google-map"]');
+      if( !el.length ) return;
+      var maps = 0;
+      el.each(function(index) {
+        var $this = $(this),
+          instance = null,
+          options = $(this).data('plugin-options');
+
+        maps++;
+        $this.attr('id', 'gmaps-' + maps );
+        var defaults = {
+          el: "#gmaps-" + maps
+        };
+
+        if ( this.unifato === undefined )
+        this.unifato = {};
+        instance = this.unifato;
+
+        // Map Markers
+        if( $this.has('.map-marker').length !== 0 )
+        {
+          options.markers = [];
+          var markers = $this.find('.map-marker');
+          markers.each(function(index){
+            var markerOptions = $(this).data('plugin-options');
+            if( $(this).has('.content').length !== 0 ) {
+              markerOptions.infoWindow = {};
+              markerOptions.infoWindow.content = $(this).find('.content').html();
+            }
+            options.markers.push(markerOptions);
+          });
+        }
+
+        // Map Overlays
+        if( $this.has('.map-overlays').length !== 0 )
+        {
+          options.overlays = [];
+          var overlays = $this.find('.map-overlays');
+          overlays.each(function(index){
+            var overlayOptions = $(this).data('plugin-options');
+            overlayOptions.content = $(this).html();
+            overlayOptions.content = overlayOptions.content.trim();
+            options.overlays.push(overlayOptions);
+          });
+        }
+
+        // Map Path
+        if( $this.has('.map-path').length !== 0 )
+        {
+          options.path = [];
+          var paths = $this.find('.map-path');
+          paths.each(function(index){
+            var pathOptions = $(this).data('plugin-options');
+            options.path.push(pathOptions);
+          });
+        }
+
+        // Map Route
+        if( $this.has('.map-route').length !== 0 )
+        {
+          options.routes = [];
+          var routes = $this.find('.map-route');
+          routes.each(function(index){
+            var routeOptions = $(this).data('plugin-options');
+            options.routes.push(routeOptions);
+          });
+        }
+
+        // Map Polygon
+        if( $this.has('.map-polygon').length !== 0 )
+        {
+          options.polygon = [];
+          var polygons = $this.find('.map-polygon');
+          polygons.each(function(index){
+            var polygonOptions = $(this).data('plugin-options');
+            options.polygon.push(polygonOptions);
+          });
+        }
+
+        // Map Style 
+        if( $this.has('.map-style').length !== 0 )
+        {
+          var styles = JSON.parse( $this.find('.map-style').html() );
+          options.styles = styles;
+          //map.addStyle({
+            //styledMapName:"Styled Map",
+            //styles: styles,
+            //mapTypeId: "map_style"  
+          //});
+          //map.setStyle("map_style");
+        }
+
+        // Initialize Maps
+        options = $.extend({}, defaults, options);
+        var map = new GMaps(options);
+        instance.gmap = map;
+        var i = 0;
+
+        if( options.styles !== undefined ) {
+          map.addStyle({
+            styledMapName:"Styled Map",
+            styles: options.styles,
+            mapTypeId: "map_style"  
+          });
+          map.setStyle("map_style");
+        }
+
+        // Adding Markers to Map
+        if(options.markers !== undefined)
+        {
+          for(i=0; i<options.markers.length; i++ )
+            map.addMarker(options.markers[i]);
+        }
+
+        // Adding Overlays to Map
+        if(options.overlays !== undefined)
+        {
+          for(i=0; i < options.overlays.length; i++ )
+            map.drawOverlay(options.overlays[i]);
+        }
+
+        // Adding Path to Map
+        if(options.path !== undefined)
+        {
+          for(i=0; i < options.path.length; i++ )
+            map.drawPolyline(options.path[i]);
+        }
+
+        // Adding Routes to Map
+        if(options.routes !== undefined)
+        {
+          for(i=0; i < options.routes.length; i++ )
+            map.drawRoute(options.routes[i]);
+        }
+
+        // Adding Path to Map
+        if(options.polygon !== undefined)
+        {
+          for(i=0; i < options.polygon.length; i++ )
+            map.drawPolygon(options.polygon[i]);
+        }
+      });
+    },
+
+    enableFullCalendar: function() {
+      var el = $('[data-toggle="fullcalendar"]');
+      if( !el.length ) return;
+      this.enableFullCalendarEvents();
+      window.ThemeFullCalendar = {};
+      var showContentInModal = function(calEvent, instance) {
+        window.ThemeFullCalendar.EventEditMode = calEvent;
+        var eventModal = $('#eventEditModal');
+        eventModal.find('input[name="event-name"]').val(calEvent.title);
+        var classNames = calEvent.className;
+        for(var i=0; i<classNames.length; i++) {
+          if(classNames[i].startsWith('bg-')) {
+            var bg = classNames[i].substr(3);
+            eventModal.find('select[name="event-bg"]').val(bg);
+            var s = eventModal.find('select[name="event-bg"]').val();
+            break;
+          }
+        }
+      };
+      var defaults = {
+        header: {
+          left: "prev,next,today",
+          center: "title",
+          right: "month,agendaWeek,agendaDay"
+        },
+        editable: true,
+        droppable: true,
+        eventLimit: true,
+        navLinks: true,
+        drop: function() {
+          if ($('#drop-remove').is(':checked')) {
+            $(this).remove();
+          }
+        },
+        eventClick: function(calEvent,jsEvent, view) {
+          $("#eventEditModal").modal('show');
+          showContentInModal(calEvent);
+        },
+        dayClick: function(date,jsEvent, view) {
+          $("#eventAddModal").modal('show');
+          window.ThemeFullCalendar.EventAddMode = date;
+        }
+      };
+      el.each(function(index){
+        var $this = $(this),
+          calendarOptions = $this.data('plugin-options'),
+          instance = null,
+          options = {};
+
+        if( this.unifato === undefined )
+          this.unifato = {};
+        instance = this.unifato;
+
+        if(calendarOptions.eventsSrc!==undefined) {
+          $.ajax({
+            url: calendarOptions.eventsSrc,
+            dataType: "json",
+            success: function(result) {
+              options = $.extend({}, defaults, calendarOptions);
+              options.events = result.events;
+              var fullcalendar = $this.fullCalendar(options);
+              instance.fullcalendar = fullcalendar[0];
+            },
+          });
+        }
+        else {
+          options = $.extend({}, defaults, calendarOptions);
+          var fullcalendar = $this.fullCalendar(options);
+          instance.fullcalendar = fullcalendar[0];
+        }
+
+        var eventModal =
+          '<div class="modal fade" id="eventEditModal" tabindex="-1" role="dialog">' +
+            '<div class="modal-dialog" role="document">'+
+              '<div class="modal-content">'+
+                '<div class="modal-header">'+
+                  '<h4 class="modal-title">Edit Event</h4>'+
+                '</div>'+
+                '<div class="modal-body">'+
+                  '<label for="eventName">Event Name</label>'+
+                  '<input class="form-control mr-b-10" name="event-name" type="text" />'+
+                  '<label for="eventType">Event Type</label>'+
+                  '<select name="event-bg" class="form-control">'+
+                    '<option value="danger">Danger</option>'+
+                    '<option value="success">Success</option>'+
+                    '<option value="info">Info</option>'+
+                    '<option value="warning">Warning</option>'+
+                    '<option value="color-scheme">Color Scheme</option>'+
+                    '<option value="primary">Primary</option>'+
+                    '<option value="pink">Pink</option>'+
+                    '<option value="violet">Violet</option>'+
+                    '<option value="purple">Purple</option>'+
+                    '<option value="teal">Teal</option>'+
+                    '<option value="slate">Slate</option>'+
+                    '<option value="grey">Grey</option>'+
+                    '<option value="persian-blue">Persian Blue</option>'+
+                    '<option value="cerize-red">Cerize Red</option>'+
+                    '<option value="mustard">Mustard</option>'+
+                    '<option value="gray-light">Gray Light</option>'+
+                  '</select>'+
+                '</div>'+
+                '<div class="modal-footer">'+
+                  '<button class="btn mr-auto delete-btn btn-danger">Delete</button>'+
+                  '<button class="btn save-btn btn-success">Save</button>'+
+                  '<button class="btn btn-default" data-dismiss="modal">Cancel</button>'+
+                '</div>'+
+              '</div>'+
+            '</div>'+
+          '</div>'
+        ;
+
+        if( !$('#eventEditModal').length ) {
+          $('body').append(eventModal);
+          var $eventEditModal = $('#eventEditModal');
+          $eventEditModal.find('.delete-btn').click(function(){
+            var eventId = window.ThemeFullCalendar.EventEditMode._id;
+            $this.fullCalendar('removeEvents',[eventId]);
+            $eventEditModal.modal('hide');
+          });
+          $eventEditModal.find('.save-btn').click(function(){
+            var eventE = window.ThemeFullCalendar.EventEditMode;
+            eventE.title = $eventEditModal.find('[name="event-name"]').val();
+            eventE.className = 'bg-' + $eventEditModal.find('select[name="event-bg"]').val();
+            $this.fullCalendar('updateEvent',eventE);
+            $eventEditModal.modal('hide');
+            window.ThemeFullCalendar.EventEditMode = null;
+          });
+        }
+
+        var eventAddModal =
+          '<div class="modal fade" id="eventAddModal" tabindex="-1" role="dialog">'+
+            '<div class="modal-dialog" role="document">'+
+              '<div class="modal-content">'+
+                '<div class="modal-header">'+
+                  '<h4 class="modal-title">Add Event</h4>'+
+                '</div>'+
+                '<div class="modal-body">'+
+                  '<label for="eventName">Event Name</label>'+
+                  '<input class="form-control mr-b-10" name="event-name" type="text" />'+
+                  '<label for="eventType">Event Type</label>'+
+                  '<select name="event-bg" class="form-control">'+
+                    '<option value="danger">Danger</option>'+
+                    '<option value="success">Success</option>'+
+                    '<option value="info">Info</option>'+
+                    '<option value="warning">Warning</option>'+
+                    '<option value="color-scheme">Color Scheme</option>'+
+                    '<option value="primary">Primary</option>'+
+                    '<option value="pink">Pink</option>'+
+                    '<option value="violet">Violet</option>'+
+                    '<option value="purple">Purple</option>'+
+                    '<option value="teal">Teal</option>'+
+                    '<option value="slate">Slate</option>'+
+                    '<option value="grey">Grey</option>'+
+                    '<option value="persian-blue">Persian Blue</option>'+
+                    '<option value="cerize-red">Cerize Red</option>'+
+                    '<option value="mustard">Mustard</option>'+
+                    '<option value="gray-light">Gray Light</option>'+
+                  '</select>'+
+                '</div>'+
+                '<div class="modal-footer">'+
+                  '<button class="btn save-btn btn-success">Save</button>'+
+                  '<button class="btn btn-default" data-dismiss="modal">Cancel</button>'+
+                '</div>'+
+              '</div>'+
+            '</div>'+
+          '</div>'
+        ;
+
+        if( !$('#eventAddModal').length ) {
+          $('body').append(eventAddModal);
+          var $eventAddModal = $('#eventAddModal');
+          $eventAddModal.find('.save-btn').click(function(){
+            var event = {};
+            event.title = $eventAddModal.find('input[name="event-name"]').val();
+            event.className = 'bg-' + $eventAddModal.find('select[name="event-bg"]').val();
+
+            if( window.ThemeFullCalendar.EventAddMode !== undefined && window.ThemeFullCalendar.EventAddMode !== null) {
+              event.start = window.ThemeFullCalendar.EventAddMode._d;
+              $this.fullCalendar('addEventSource',[event]);
+              $eventAddModal.modal('hide');
+              window.ThemeFullCalendar.EventAddMode = null;
+            }
+            else if( window.ThemeFullCalendar.EventAddListMode !== undefined && window.ThemeFullCalendar.EventAddListMode !== null) {
+              var $target = window.ThemeFullCalendar.EventAddListMode.target;
+              var element = '<div class="fc-event ' + event.className + '"><i class="feather feather-check color-white ' + event.className + '"></i>' + '<span class="fc-event-text">' + event.title + '</span></div>';
+              $target.find('.fc-events').append(element);
+              $eventAddModal.modal('hide');
+              window.ThemeFullCalendar.EventAddListMode = null;
+              Unifato.enableFullCalendarEvents();
+            }
+          });
+        }
+      });
+    },
+
+    enableFullCalendarEvents: function() {
+      var el = $('[data-toggle="fullcalendar-events"]');
+      if( !el.length ) return;
+      el.each(function(index){
+        var $this = $(this);
+        var target = $(this).data('target');
+        var events = $this.find('.fc-event');
+
+        events.each(function(){
+          $(this).data('event', {
+            title: $.trim($(this).find('.fc-event-text').text()),
+            stick: true,
+            className: $(this).attr('class')
+          });
+          $(this).draggable({
+            zIndex: 999,
+            revert: true,
+            revertDuration: 0
+          });
+        });
+
+        $this.find('.fc-add-event').click(function(){
+          $('#eventAddModal').modal('show');
+          window.ThemeFullCalendar.EventAddListMode = { target: $this };
+        });
+      });
+    },
+
+    enableClndr: function() {
+      var el = $('[data-toggle="clndr"]');
+      if( !el.length ) return;
+      el.each(function(){
+        var $this = $(this);
+        var $template = $this.find('script.template').html();
+        var events = {};
+        events.events = [];
+        var instance = null;
+        if( this.unifato === undefined )
+          this.unifato = {};
+        instance = this.unifato;
+
+        if($this.find('.events').length) events = JSON.parse($this.find('.events').html().trim());
+        instance.clndr = $this.clndr({
+          template: $template,
+          userTouchEvents: true,
+          events: events.events,
+          extras: {
+            selectedDay: {},
+          },
+          clickEvents: {
+            click: function(target) {
+              this.options.extras.selectedDay = target;
+              this.render();
+            },
+          },
+          ready: function() {
+            $this.find('.today').trigger('click');
+          }
+        });
+      });
+    },
+
+    enableDataTables: function() {
+      var el = $('[data-toggle="datatables"]');
+      if ( !el.length ) return;
+      var defaults = {
+        responsive: true,
+      };
+      el.each(function(index) {
+        var $this = $(this),
+            options = $(this).data('plugin-options');
+        if (options === null )
+          options = {};
+
+        if( this.unifato === undefined )
+          this.unifato = {};
+
+        options = $.extend({},defaults,options);
+        this.unifato.datatable = $this.DataTable(options);
+      });
+    },
+
+    enableFootable: function(){
+      var el = $('[data-toggle="footable"]');
+      if( !el.length ) return;
+      el.each(function(){
+        var $this = $(this),
+            instance = null;
+
+        if ( this.unifato === undefined )
+          this.unifato = {};
+
+        instance = this.unifato;
+
+        if( $this.data('row-src')!== undefined && $this.data('column-src') === undefined ) {
+          instance.footable = $this.footable({
+            "rows": $.get('assets/js/row.json'),
+          });
+        }
+        else if( $this.data('row-src') !== undefined && $this.data('column-src') !== undefined ) {
+          instance.footable = $this.footable({
+            "rows": $.get('assets/js/row.json'),
+            "columns": $.get('assets/js/column.json'),
+          });
+        }
+        else {
+          instance.footable = $this.footable();
+        }
+      });
+    },
+
+    enableTableEditable: function() {
+      var el = $('.table-editable, .table-editable-inline');
+      if(!el.length) return;
+      el.each(function(){
+        var $this = $(this);
+        var columns = $this.find('th[data-editable]');
+        var columnsList = [];
+        var identifier = [ $this.find('th[data-identifier]').index(), $this.find('th[data-identifier]').html() ];
+        var instance = null;
+        if( this.unifato === undefined )
+          this.unifato = {};
+        this.unifato.tabledit = this;
+        columns.each(function(){
+          columnsList.push([ $(this).index(), $(this).html() ]);
+        });
+        if( $this.hasClass('table-editable-inline') ) {
+          $this.Tabledit({
+            editButton: false,
+            removeButton: false,
+            columns: {
+              editable: columnsList,
+              identifier: identifier,
+            }
+          });
+        }
+        else {
+          $this.Tabledit({
+            columns: {
+              editable: columnsList,
+              identifier: identifier,
+            }
+          });
+        }
+      });
+    },
+
+    enableCountUp: function() {
+      var el = document.body.getElementsByClassName('counter');
+
+      var defaults = {
+        useEasing: true,
+        useGrouping: true,
+      };
+
+      if( !el.length ) return;
+
+      function decimalPlaces(num) {
+        var match = (''+num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);
+        if (!match) { return 0; }
+        return Math.max(
+          0,
+          // Number of digits right of decimal point.
+          (match[1] ? match[1].length : 0)
+          // Adjust for scientific notation.
+          - (match[2] ? +match[2] : 0));
+      }
+
+      var counterInstanceArr = [];
+
+      for(var i = 0; i < el.length; i++ ) {
+        var counterEl = el[i];
+        counterEl.id = 'counter-' + i;
+
+        var options = counterEl.dataset;
+        options = $.extend({}, defaults, options);
+
+        var startVal = counterEl.dataset.startval !== undefined ? counterEl.dataset.startval : 0;
+        var endVal = parseFloat(counterEl.innerHTML);
+
+        var decimals = Math.max( decimalPlaces(startVal), decimalPlaces(endVal) );
+
+        var counter = new CountUp( counterEl.id, startVal, endVal, decimals, 3, options);
+
+        if (!counter.error) counterInstanceArr.push( counter );
+        else console.error(counter.error);
+      }
+
+      $(document).on('PACE_DONE', function() {
+        for( var j = 0; j < counterInstanceArr.length; j++ ) {
+          counterInstanceArr[j].start();
+        }
+      });
+
+      for( var i = 0; i < counterInstanceArr.length; i++ ) {
+        counterInstanceArr[i].start();
+      }
+    },
+
+    enableRangeSlider: function() {
+      var el = $('input[data-toggle="rangeslider"]');
+      if(!el.length) return;
+      el.each(function() {
+        var $this = $(this);
+        if( this.unifato === undefined )
+          this.unifato = {};
+
+        $this.ionRangeSlider();
+        this.unifato.ionRangeSlider = $this.data('ionRangeSlider');
+      });
+    },
+
+    enableSortable: function() {
+      var el = $('.sortable');
+      if( !el.length ) return;
+      el.each(function() {
+        var $this = $(this);
+        if( this.unifato === undefined )
+          this.unifato = {};
+        $this.sortable();
+        this.unifato.sortable = $this.data('ui-sortable');
+      });
+    },
+
+    enableNestedSortable: function() {
+      var el = $('.dd');
+      if( !el.length ) return;
+      var defaults = {
+      };
+      el.each( function() {
+        var $this = $(this),
+            options = $this.data('plugin-options');
+        options = $.extend({}, defaults, options);
+
+        if( this.unifato === undefined )
+          this.unifato = {};
+
+        $this.nestable(options);
+        this.unifato.nestable = $this.data('nestable');
+      });
+    },
+
+    enableTimelineLoadMoreBtn: function() {
+      var el = $('.timeline .load-more-btn');
+      if( !el.length ) return;
+      el.each(function(){
+        var $this = $(this),
+            url = $this.data('url');
+        $this.on('click', function() {
+          $this.addClass('loading');
+          $this.addClass('disabled');
+          $.ajax({
+            url: url,
+          }).done(function(data) {
+            // just to show loading effect
+            setTimeout(function() {
+              $this.before(data);
+              $this.removeClass('loading');
+              $this.removeClass('disabled');
+            }, 1000);
+          }).fail(function() {
+            alert("Couldn't load Timeline Content");
+            $this.removeClass('loading');
+          });
+        });
+      });
+    },
+
+    enableCarousel: function() {
+      var el = document.getElementsByClassName('carousel');
+      if( !el.length ) return;
+      var defaults = {
+        responsive: [
+          {
+            breakpoint: 720,
+            settings: {
+              slidesToShow: 1,
+              slidesToScroll: 1
+            }
+          }, {
+            breakpoint: 480,
+            settings: {
+              slidesToShow: 1,
+              slidesToScroll: 1
+            }
+          }
+        ]
+      };
+      for( var i = 0; i < el.length; i++ ) {
+        var $this = $(el[i]),
+            options = $this.data('plugin-options');
+        options = $.extend({}, defaults, options);
+        var sl = $this.slick(options);
+
+        window.addEventListener('resize', function() {
+          sl.slick('resize');
+        });
+
+        $(document).on('SIDEBAR_CHANGED_WIDTH', function() {
+          sl.slick('resize');
+          sl.slick('slickNext');
+        });
+      };
+    },
+
+    enableMedia: function() {
+      var el = $('video, audio');
+      if(!el.length) return;
+      el.each(function() {
+        var $this = $(this);
+        if( this.unifato === undefined )
+          this.unifato = {};
+        $this.mediaelementplayer({
+          pluginPath: 'https://cdnjs.com/libraries/mediaelement/',
+          shimScriptAccess: 'always'
+        });
+        if( this.tagName === 'VIDEO' ) {
+          $this.on('playing', function() {
+            $this.closest('.mejs__container').addClass('mejs__video--playing');
+          });
+          $this.on('ended', function() {
+            $this.closest('.mejs__container').removeClass('mejs__video--playing');
+          });
+        }
+        this.unifato.mediaelementplayer = $this.data('mediaelementplayer');
+      });
+    },
+
+    enableInputMask: function() {
+      var el = $('[data-masked-input]');
+      if(!el.length) return;
+      $.mask.definitions.h = "[A-Fa-f0-9]";
+      $.mask.definitions['~']='[+-]';
+      el.each(function() {
+        var $this = $(this),
+            mask = $this.data('masked-input');
+        $this.mask(mask);
+      });
+    },
+
+    enableDropify: function() {
+      var el = $('[data-toggle="dropify"]');
+      if(!el.length) return;
+      el.each(function() {
+        var $this = $(this);
+        if( this.unifato === undefined )
+          this.unifato = {};
+        $this.dropify();
+        this.unifato.dropify = $this.data('dropify');
+      });
+    },
+
+    enableDropzone: function() {
+      var el = $('[data-toggle="dropzone"]');
+      if(!el.length) return;
+      Dropzone.prototype.defaultOptions.addRemoveLinks = true;
+      var defaults = {};
+      el.each( function() {
+        var $this = $(this),
+            options = $this.data('plugin-options');
+
+        if( this.unifato === undefined )
+          this.unifato = {};
+
+        if( options === undefined ) options = {};
+        options = $.extend({}, defaults, options);
+        $this.dropzone(options);
+        this.unifato.dropzone = this.dropzone;
+        $this.addClass('dropzone');
+      });
+    },
+
+    enableClockPicker: function() {
+      var el = $('.clockpicker');
+      if(!el.length) return;
+      var defaults = {
+        donetext: 'Done',
+      };
+      el.each(function() {
+        var $this = $(this),
+            options = $this.data('plugin-options');
+
+        if( this.unifato === undefined )
+          this.unifato = {};
+
+        if( options === undefined ) options = {};
+        options = $.extend({}, defaults, options);
+        $this.clockpicker(options);
+        this.unifato.clockpicker = $this.data('clockpicker');
+      });
+    },
+
+    enableColorPicker: function() {
+      var el = $('.colorpicker');
+      if(!el.length) return;
+      var defaults = {
+        preferredFormat: "rgb",
+        showInput: true,
+        change: function(color) {
+          var $this = $(this);
+          $this.parent().find('input').val( color );
+          $this.find('i').css( 'background', color );
+        },
+      };
+      el.each(function() {
+        var $this = $(this),
+            options = $this.data('plugin-options'),
+            value = $this.find('input').val();
+        if( options === undefined ) options = {};
+        options = $.extend({}, defaults, options);
+        options.color = value;
+        $this.find('.input-group-addon').spectrum(options).find('i').css('background', value);
+        $this.find('input').click( function(e) {
+          $this.find('.input-group-addon').spectrum('toggle');
+          return false;
+        });
+      });
+    },
+
+    enableDateRangePicker: function() {
+      var el = $('.daterange');
+      if( !el.length ) return;
+      var defaults = {
+        locale: {
+          format: 'MMMM D',
+        },
+      };
+      el.each(function(){
+        var $this = $(this),
+            options = $this.data('plugin-options');
+
+        if( this.unifato === undefined )
+          this.unifato = {};
+
+        if( options === undefined ) options = {};
+        options = $.extend({}, defaults, options);
+        $this.daterangepicker(options);
+        this.unifato.daterangepicker = $this.data('daterangepicker');
+      });
+    },
+
+    enablePredefinedDateRangePicker: function() {
+      var $el = $('.predefinedRanges');
+      if ( !$el.length ) return;
+      var defaults = {
+        locale: {
+          format: 'MMMM-D',
+        },
+        startDate: moment().subtract(29, 'days'),
+        endDate: moment(),
+        opens: "left",
+        ranges: {
+          'Today': [moment(), moment()],
+          'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
+          'Last 7 Days': [moment().subtract(6, 'days'), moment()],
+          'Last 30 Days': [moment().subtract(29, 'days'), moment()],
+          'This Month': [moment().startOf('month'), moment().endOf('month')],
+          'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
+        }
+      };
+      $el.each( function() {
+        var start = moment().subtract(29, 'days');
+        var end = moment();
+        var $this = $(this);
+        var options = $this.data('plugin-options');
+        options = $.extend({}, defaults, options);
+        function cb(start, end) {
+          $this.find('span').html(start.format(options.locale.format) + ' - ' + end.format(options.locale.format));
+        }
+
+        if( this.unifato === undefined )
+          this.unifato = {};
+
+        $this.daterangepicker(options, cb);
+        this.unifato.daterangepicker = $this.data('daterangepicker');
+        cb(start, end);
+      });
+    },
+
+    enableDatePicker: function() {
+      var el = $('.datepicker');
+      if( !el.length ) return;
+      var defaults = {
+      };
+      el.each(function(){
+        var $this = $(this),
+            options = $this.data('plugin-options');
+
+        if( this.unifato === undefined )
+          this.unifato = {};
+
+        if( options === undefined ) options = {};
+        options = $.extend({}, defaults, options);
+        $this.datepicker(options);
+        this.unifato.datepicker = $this.data('datepicker');
+      });
+    },
+
+    enableSelect2: function() {
+      var el = $('[data-toggle="select2"]');
+      if(!el.length) return;
+      el.each( function() {
+        var $this = $(this),
+            options = $this.data('plugin-options');
+
+        if( this.unifato === undefined )
+          this.unifato = {};
+
+        $this.select2(options);
+        this.unifato.select2 = $this.data('select2');
+      });
+    },
+
+    enableSwitchery: function() {
+      var elems = document.getElementsByClassName('js-switch');
+      if( !elems.length ) return;
+      var defaults = {
+        secondaryColor: '#ddd',
+      };
+      for(var i=0; i < elems.length; i++ ) {
+        var dataset = JSON.parse(JSON.stringify(elems[i].dataset));
+        dataset = $.extend({}, defaults, dataset);
+        var jsSwitch = new Switchery(elems[i], dataset);
+        if( elems[i].unifato === undefined )
+          elems[i].unifato = {};
+
+        elems[i].unifato.switchery = jsSwitch;
+      }
+
+    },
+
+    enableTouchspin: function() {
+      var el = $('[data-toggle="touchspin"]');
+      if(!el.length) return;
+      var defaults = {
+        verticalupclass: '',
+        verticaldownclass: ''
+      };
+      el.each(function() {
+        var $this = $(this),
+            options = $this.data('plugin-options');
+
+        if(options===undefined) options = {};
+        options = $.extend({}, defaults, options);
+        $this.TouchSpin(options);
+      });
+    },
+
+    enableMultiSelect: function() {
+      var el = $('[data-toggle="multiselect"]');
+      if(!el.length) return;
+      this.enableMultiSelectBtns();
+      el.each(function() {
+        var $this = $(this);
+        if( this.unifato === undefined )
+          this.unifato = {};
+        this.unifato.multiselect = $this.multiSelect();
+      });
+    },
+
+    enableMultiSelectBtns: function() {
+      var el = $('[data-multiselect-target]');
+      if(!el.length) return;
+      el.each(function() {
+        var $this = $(this),
+            $targetData = $this.data('multiselect-target'),
+            $method = $this.data('multiselect-method'),
+            $event = $this.data('event');
+
+        var $target = $( $targetData );
+        $this.on( $event, function(e) {
+          e.preventDefault();
+
+          switch ( $method ) {
+            case "addOption":
+              $target.multiSelect( 'addOption', { value: 'test', text: 'test', index: 0, nested: 'optgroup_label' });
+              break;
+            default:
+              $target.multiSelect( $method );
+          }
+        });
+      });
+    },
+
+    enableTinyMCE: function() {
+      this.enableTinyMCEInline();
+      var el = $('[data-toggle="tinymce"]');
+      if(!el.length) return;
+      var defaults = {
+        skin: "lightgray",
+      };
+      el.each(function() {
+        var $this = $(this),
+            options = $this.data('plugin-options');
+
+
+        if( options === undefined ) options = {};
+        options = $.extend({}, defaults, options);
+
+        $this.tinymce(options);
+      });
+    },
+
+    enableTinyMCEInline: function() {
+      var el = $('[data-toggle="tinymce-inline"]');
+      if( !el.length ) return;
+      var defaults = {
+        skin: "lightgray",
+        inline: true,
+        theme: "inlite",
+        plugins: [
+          'advlist autolink lists link image charmap print preview anchor',
+          'searchreplace visualblocks code fullscreen',
+          'insertdatetime media table contextmenu paste'
+        ],
+      };
+      el.each(function() {
+        var $this = $(this),
+            $html = $this.html(),
+            options = $this.data('plugin-options');
+
+        if( options === undefined ) options = {};
+        options = $.extend({}, defaults, options);
+        $this.tinymce(options);
+      });
+    },
+
+    enableBootstrapWysiwyg: function() {
+      this.enableTinyMCEInline();
+      var el = $('[data-toggle="wysiwyg"]');
+      if(!el.length) return;
+      var defaults = {
+      };
+      el.each(function() {
+        var $this = $(this),
+            options = $this.data('plugin-options');
+
+        if( this.unifato === undefined )
+          this.unifato = {};
+
+        if( options === undefined ) options = {};
+        options = $.extend({}, defaults, options);
+        $this.wysihtml5(options);
+        this.unifato.wysihtml5 = $this.data('wysihtml5');
+      });
+      $('[data-wysihtml5-dialog]').on('hidden.bs.modal', function(){
+        $('.modal-backdrop').remove();
+      });
+    },
+
+    enableCircleProgress: function() {
+      var el = $('[data-toggle="circle-progress"]');
+      if( !el.length ) return;
+      el.each(function() {
+        $(this).circleProgress();
+      });
+    },
+
+    enableSparkline: function() {
+      var el = $('[data-toggle="sparklines"]');
+      if( !el.length ) return;
+      el.each(function() {
+        $(this).sparkline('html', { enableTagOptions: true });
+      });
+    },
+  };
+
+  document.addEventListener('DOMContentLoaded', function() {
+    Pace.options = {
+      ajax: {
+        ignoreURLs: [
+          'assets/vendors/theme-widgets/getTwitterFeed', 
+          'assets/vendors/theme-widgets/getFacebookFeed'
+        ],
+      }
+    }
+    Unifato.init();
+    Unifato.setMenu();
+  });
+
+  window.addEventListener('resize', Unifato.setMenu);
+  window.addEventListener('resize', Unifato.contentHeight);
+})(jQuery);