(function( $ ) {
   'use strict';

   $(document).ready( function() {
   	var noticesCount;

		// Move admin notices at an interval after document is ready and WP core moves the position of notices under the page heading.
	   	// https://plugins.trac.wordpress.org/browser/hide-admin-notices/tags/1.2.2/assets/js/hide-admin-notices.js
	   	// https://plugins.trac.wordpress.org/browser/admin-notices-manager/tags/1.3.1/assets/js/admin/notices.js

		var noticesPanel = $('.asenha-admin-notices-drawer');
		var startTime = new Date().getTime();

		var interval = setInterval(function () {

			// Stop monitoring after 1,05 seconds (some notices has a 1 second delay, so, we make this slightly longer)
			if (new Date().getTime() - startTime > 1050) {
				clearInterval(interval);

		   		// Count hidden notices and append into admin bar counter
		   		noticesCount = $('.asenha-admin-notices-drawer > div').length;

		   		if ( noticesCount > 0 ) {
		   			$('.asenha-admin-notices-menu').show(); // show admin bar menu
		   			// $('.asenha-admin-notices-counter').show(); // show counter
			   		$('.asenha-admin-notices-counter').html(noticesCount); // insert count
		   			$('.asenha-admin-notices-counter').css("opacity", "1"); // show counter
		   		} else {
		   			$('.asenha-admin-notices-menu').hide(); // hide admin bar menu
		   		}

				return;
			}
			
			// Plugins that outputs notices. For testing.
			// Ajax Press - https://wordpress.org/plugins/ajax-press/
			// Atlas Search - https://wordpress.org/plugins/atlas-search/
			// ExactMetrics Analytics - https://wordpress.org/plugins/google-analytics-dashboard-for-wp/
			// JetPack - https://wordpress.org/plugins/jetpack/
			// ManageWP Worker - https://wordpress.org/plugins/worker/
			// WP Smushit - https://wordpress.org/plugins/wp-smushit/
			// FluentSMTP - https://wordpress.org/plugins/fluent-smtp/
			// WP Backend File Search - https://wordpress.org/plugins/wp-backend-file-search-editor-tweaks/
			// TotalPress Custom post types - https://wordpress.org/plugins/custom-post-types/

			// Reposition notices with the following selectors. Excluding 'notice-system'.
			var noticesToMove = $('#wpbody-content > .wrap > .notice:not(#plugin-activated-successfully,.system-notice,.updated,.hidden,.inline,.wcml-notice,.asenha-media-replacement-notice),'
			+ '#wpbody-content > .wrap > .notice-error,'
			+ '#wpbody-content > .wrap > .error:not(.hidden),'
			+ '#wpbody-content > .wrap > .notice-info,'
			+ '#wpbody-content > .wrap > .notice-information,'
			+ '#wpbody-content > .wrap > #message:not(.updated,.asenha-media-replacement-notice),'
			+ '#wpbody-content > .wrap > .notice-warning:not(.hidden),'
			+ '#wpbody-content > .wrap > .notice-success:not(.updated,#plugin-activated-successfully,.asenha-media-replacement-notice),'
			+ '#wpbody-content > .wrap > .notice-updated,'
			+ '#wpbody-content > .wrap > .updated:not(.inline),'
			+ '#wpbody-content > .wrap > .update-nag,'
			+ '#wpbody-content > .wrap > div:not(#loco-notices,#loco-content) > .notice:not(.system-notice,.hidden),'
			+ '#wpbody-content > .wrap > div:not(#loco-notices,#loco-content) > .notice-error,'
			+ '#wpbody-content > .wrap > div:not(#loco-notices,#loco-content) > .error:not(.hidden),'
			+ '#wpbody-content > .wrap > div:not(#loco-notices,#loco-content) > .notice-info,'
			+ '#wpbody-content > .wrap > div:not(#loco-notices,#loco-content) > .notice-information,'
			+ '#wpbody-content > .wrap > div > #message,'
			+ '#wpbody-content > .wrap > div:not(#loco-notices,#loco-content) > .notice-warning:not(.hidden),'
			+ '#wpbody-content > .wrap > div:not(#loco-notices,#loco-content) > .notice-success,'
			+ '#wpbody-content > .wrap > div :not(#loco-notices,#loco-content)> .notice-updated,'
			+ '#wpbody-content > .wrap > div:not(#loco-notices,#loco-content) > .updated:not(.inline),'
			+ '#wpbody-content > .wrap > div > .update-nag,'
			+ '#wpbody-content > div > .wrap > .notice:not(.system-notice,.hidden),'
			+ '#wpbody-content > div > .wrap > .notice-error,'
			+ '#wpbody-content > div > .wrap > .error:not(.hidden),'
			+ '#wpbody-content > div > .wrap > .notice-info,'
			+ '#wpbody-content > div > .wrap > .notice-information,'
			+ '#wpbody-content > div > .wrap > #message,'
			+ '#wpbody-content > div > .wrap > .notice-warning:not(.hidden),'
			+ '#wpbody-content > div > .wrap > .notice-success,'
			+ '#wpbody-content > div > .wrap > .notice-updated,'
			+ '#wpbody-content > div > .wrap > .updated:not(.inline),'
			+ '#wpbody-content > div > .wrap > .update-nag,'
			// e.g. on user deletion screen
			+ '#wpbody-content > form > .wrap > .notice:not(.system-notice,.hidden),'
			+ '#wpbody-content > form > .wrap > .notice-error,'
			+ '#wpbody-content > form > .wrap > .error:not(.hidden),'
			+ '#wpbody-content > form > .wrap > .notice-info,'
			+ '#wpbody-content > form > .wrap > .notice-information,'
			+ '#wpbody-content > form > .wrap > #message,'
			+ '#wpbody-content > form > .wrap > .notice-warning:not(.hidden),'
			+ '#wpbody-content > form > .wrap > .notice-success,'
			+ '#wpbody-content > form > .wrap > .notice-updated,'
			+ '#wpbody-content > form > .wrap > .updated:not(.inline),'
			+ '#wpbody-content > form > .wrap > .update-nag,'
			// WooCommerce
			+ '#wpbody-content > .wrap.woocommerce > form > .notice:not(.system-notice,.hidden),'
			+ '#wpbody-content > .wrap.woocommerce > form > .notice-error,'
			+ '#wpbody-content > .wrap.woocommerce > form > .error:not(.hidden),'
			+ '#wpbody-content > .wrap.woocommerce > form > .notice-info,'
			+ '#wpbody-content > .wrap.woocommerce > form > .notice-information,'
			+ '#wpbody-content > .wrap.woocommerce > form > #message,'
			+ '#wpbody-content > .wrap.woocommerce > form > .notice-warning:not(.hidden),'
			+ '#wpbody-content > .wrap.woocommerce > form > .notice-success,'
			+ '#wpbody-content > .wrap.woocommerce > form > .notice-updated,'
			+ '#wpbody-content > .wrap.woocommerce > form > .updated:not(.inline),'
			+ '#wpbody-content > .wrap.woocommerce > form > .update-nag,'
			// TranslatePress
			+ '#wpbody-content > #trp-main-settings > form > .notice:not(.system-notice,.hidden),'
			+ '#wpbody-content > #trp-main-settings > form > .notice-error,'
			+ '#wpbody-content > #trp-main-settings > form > .error:not(.hidden),'
			+ '#wpbody-content > #trp-main-settings > form > .notice-info,'
			+ '#wpbody-content > #trp-main-settings > form > .notice-information,'
			+ '#wpbody-content > #trp-main-settings > form > #message,'
			+ '#wpbody-content > #trp-main-settings > form > .notice-warning:not(.hidden),'
			+ '#wpbody-content > #trp-main-settings > form > .notice-success,'
			+ '#wpbody-content > #trp-main-settings > form > .notice-updated,'
			+ '#wpbody-content > #trp-main-settings > form > .updated:not(.inline),'
			+ '#wpbody-content > #trp-main-settings > form > .update-nag,'
			// WordFence
			+ '#wpbody-content > .wrap > .wf-container-fluid .notice:not(.system-notice,.hidden,.wcml-notice),'
			+ '#wpbody-content > .wrap > .wf-container-fluid .notice-error,'
			+ '#wpbody-content > .wrap > .wf-container-fluid .error:not(.hidden),'
			+ '#wpbody-content > .wrap > .wf-container-fluid .notice-info,'
			+ '#wpbody-content > .wrap > .wf-container-fluid .notice-information,'
			+ '#wpbody-content > .wrap > .wf-container-fluid #message,'
			+ '#wpbody-content > .wrap > .wf-container-fluid .notice-warning:not(.hidden),'
			+ '#wpbody-content > .wrap > .wf-container-fluid .notice-success,'
			+ '#wpbody-content > .wrap > .wf-container-fluid .notice-updated,'
			+ '#wpbody-content > .wrap > .wf-container-fluid .updated:not(.inline),'
			+ '#wpbody-content > .wrap > .wf-container-fluid .update-nag,'
			// WP All Import
			+ '#wpbody-content > .wrap .wpallimport-wrapper .notice:not(.system-notice,.hidden,.wcml-notice),'
			+ '#wpbody-content > .wrap .wpallimport-wrapper .notice-error,'
			+ '#wpbody-content > .wrap .wpallimport-wrapper .error:not(.hidden),'
			+ '#wpbody-content > .wrap .wpallimport-wrapper .notice-info,'
			+ '#wpbody-content > .wrap .wpallimport-wrapper .notice-information,'
			+ '#wpbody-content > .wrap .wpallimport-wrapper #message,'
			+ '#wpbody-content > .wrap .wpallimport-wrapper .notice-warning:not(.hidden),'
			+ '#wpbody-content > .wrap .wpallimport-wrapper .notice-success,'
			+ '#wpbody-content > .wrap .wpallimport-wrapper .notice-updated,'
			+ '#wpbody-content > .wrap .wpallimport-wrapper .updated:not(.inline),'
			+ '#wpbody-content > .wrap .wpallimport-wrapper .update-nag,'
			// WP All Export
			+ '#wpbody-content > .wrap .wpallexport-wrapper .notice:not(.system-notice,.hidden,.wcml-notice),'
			+ '#wpbody-content > .wrap .wpallexport-wrapper .notice-error,'
			+ '#wpbody-content > .wrap .wpallexport-wrapper .error:not(.hidden),'
			+ '#wpbody-content > .wrap .wpallexport-wrapper .notice-info,'
			+ '#wpbody-content > .wrap .wpallexport-wrapper .notice-information,'
			+ '#wpbody-content > .wrap .wpallexport-wrapper #message,'
			+ '#wpbody-content > .wrap .wpallexport-wrapper .notice-warning:not(.hidden),'
			+ '#wpbody-content > .wrap .wpallexport-wrapper .notice-success,'
			+ '#wpbody-content > .wrap .wpallexport-wrapper .notice-updated,'
			+ '#wpbody-content > .wrap .wpallexport-wrapper .updated:not(.inline),'
			+ '#wpbody-content > .wrap .wpallexport-wrapper .update-nag,'
			// WS Form
			+ '#wpbody-content > #wsf-layout-editor > #poststuff > .notice:not(.system-notice,.hidden,.wcml-notice),'
			+ '#wpbody-content > #wsf-layout-editor > #poststuff > .notice-error,'
			+ '#wpbody-content > #wsf-layout-editor > #poststuff > .error:not(.hidden),'
			+ '#wpbody-content > #wsf-layout-editor > #poststuff > .notice-info,'
			+ '#wpbody-content > #wsf-layout-editor > #poststuff > .notice-information,'
			+ '#wpbody-content > #wsf-layout-editor > #poststuff > #message,'
			+ '#wpbody-content > #wsf-layout-editor > #poststuff > .notice-warning:not(.hidden),'
			+ '#wpbody-content > #wsf-layout-editor > #poststuff > .notice-success,'
			+ '#wpbody-content > #wsf-layout-editor > #poststuff > .notice-updated,'
			+ '#wpbody-content > #wsf-layout-editor > #poststuff > .updated:not(.inline),'
			+ '#wpbody-content > #wsf-layout-editor > #poststuff > .update-nag,'
			// Pods
			+ '#wpbody-content .pods-submittable-fields > .notice:not(.system-notice,.hidden,.wcml-notice),'
			+ '#wpbody-content .pods-submittable-fields > .notice-error,'
			+ '#wpbody-content .pods-submittable-fields > .error:not(.hidden),'
			+ '#wpbody-content .pods-submittable-fields > .notice-info,'
			+ '#wpbody-content .pods-submittable-fields > .notice-information,'
			+ '#wpbody-content .pods-submittable-fields > #message,'
			+ '#wpbody-content .pods-submittable-fields > .notice-warning:not(.hidden),'
			+ '#wpbody-content .pods-submittable-fields > .notice-success,'
			+ '#wpbody-content .pods-submittable-fields > .notice-updated,'
			+ '#wpbody-content .pods-submittable-fields > .updated:not(.inline),'
			+ '#wpbody-content .pods-submittable-fields > .update-nag,'
			// Meta Box Lite
			+ '.mb-main > .notice:not(.system-notice,.hidden,.wcml-notice),'
			+ '.mb-main > .notice-error,'
			+ '.mb-main > .error:not(.hidden),'
			+ '.mb-main > .notice-info,'
			+ '.mb-main > .notice-information,'
			+ '.mb-main > #message,'
			+ '.mb-main > .notice-warning:not(.hidden),'
			+ '.mb-main > .notice-success,'
			+ '.mb-main > .notice-updated,'
			+ '.mb-main > .updated:not(.inline),'
			+ '.mb-main > .update-nag,'
			// Meta Box AIO
			+ '.mb-header__left > .notice:not(.system-notice,.hidden,.wcml-notice),'
			+ '.mb-header__left > .notice-error,'
			+ '.mb-header__left > .error:not(.hidden),'
			+ '.mb-header__left > .notice-info,'
			+ '.mb-header__left > .notice-information,'
			+ '.mb-header__left > #message,'
			+ '.mb-header__left > .notice-warning:not(.hidden),'
			+ '.mb-header__left > .notice-success,'
			+ '.mb-header__left > .notice-updated,'
			+ '.mb-header__left > .updated:not(.inline),'
			+ '.mb-header__left > .update-nag,'
			// Funnel Builder for WordPress by FunnelKit
			+ '#wpbody-content > .bwfan_header > .notice:not(.system-notice,.hidden),'
			+ '#wpbody-content > .bwfan_header > .notice-error,'
			+ '#wpbody-content > .bwfan_header > .error:not(.hidden),'
			+ '#wpbody-content > .bwfan_header > .notice-info,'
			+ '#wpbody-content > .bwfan_header > .notice-information,'
			+ '#wpbody-content > .bwfan_header > #message,'
			+ '#wpbody-content > .bwfan_header > .notice-warning:not(.hidden),'
			+ '#wpbody-content > .bwfan_header > .notice-success,'
			+ '#wpbody-content > .bwfan_header > .notice-updated,'
			+ '#wpbody-content > .bwfan_header > .updated:not(.inline),'
			+ '#wpbody-content > .bwfan_header > .update-nag,'
			+ '#wpbody-content > .notice:not(.otgs-notice,.wcml-notice),' // LearnDash, WPML WooCommerce Multilingual
			+ '#wpbody-content > .update-nag,' // LearnDash
			+ '#wpbody-content > .jp-connection-banner,' // Jetpack
			+ '#wpbody-content > .jitm-banner,' // Jetpack
			+ '#wpbody-content > .jetpack-jitm-message,' // Jetpack
			+ '#wpbody-content > .ngg_admin_notice,' // Nextgen Gallery
			+ '#wpbody-content > .imagify-welcome,' // Imagify
			+ '#wpbody-content #wordfenceAutoUpdateChoice,' // Wordfence
			+ '#wpbody-content #easy-updates-manager-dashnotice,' // Easy Updates Manager
			// GenerateBlocks
			+ '#wpbody-content > .wrap.gblocks-dashboard-wrap .notice:not(.system-notice,.hidden),'
			+ '#wpbody-content > .wrap.gblocks-dashboard-wrap .notice-error,'
			+ '#wpbody-content > .wrap.gblocks-dashboard-wrap .error:not(.hidden),'
			+ '#wpbody-content > .wrap.gblocks-dashboard-wrap .notice-info,'
			+ '#wpbody-content > .wrap.gblocks-dashboard-wrap .notice-information,'
			+ '#wpbody-content > .wrap.gblocks-dashboard-wrap #message,'
			+ '#wpbody-content > .wrap.gblocks-dashboard-wrap .notice-warning:not(.hidden),'
			+ '#wpbody-content > .wrap.gblocks-dashboard-wrap .notice-success,'
			+ '#wpbody-content > .wrap.gblocks-dashboard-wrap .notice-updated,'
			+ '#wpbody-content > .wrap.gblocks-dashboard-wrap .updated:not(.inline),'
			+ '#wpbody-content > .wrap.gblocks-dashboard-wrap .update-nag,'
			// WPML
			+ '#wpbody-content > .otgs-notice,'
			// WooCommerce Stock Sync
			+ '#wpbody-content > .wrap > .ssgs-influencer-banner,'
			+ '#wpbody-content > .wrap > .ssgs-upgrade-banner,'
			+ '#wpbody-content > .wrap > .ssgs-rating-banner,'
			// Shortpixel
			+ '#wpbody-content > .shortpixel-notice,'
			// BdThemes Element Pack Pro
			+ '#wpbody-content > .wrap > .biggopti,'
			// Dokan
			+ '#wpbody-content > .wrap .dokan-dashboard .notice:not(.system-notice,.hidden,.wcml-notice),'
			+ '#wpbody-content > .wrap .dokan-dashboard .notice-error,'
			+ '#wpbody-content > .wrap .dokan-dashboard .error:not(.hidden),'
			+ '#wpbody-content > .wrap .dokan-dashboard .notice-info,'
			+ '#wpbody-content > .wrap .dokan-dashboard .notice-information,'
			+ '#wpbody-content > .wrap .dokan-dashboard #message,'
			+ '#wpbody-content > .wrap .dokan-dashboard .notice-warning:not(.hidden),'
			+ '#wpbody-content > .wrap .dokan-dashboard .notice-success,'
			+ '#wpbody-content > .wrap .dokan-dashboard .notice-updated,'
			+ '#wpbody-content > .wrap .dokan-dashboard .updated:not(.inline),'
			+ '#wpbody-content > .wrap .dokan-dashboard .update-nag'
			);

			/*! <fs_premium_only> */
			// Keep notices from File Manager and 2FA modules visible in place
			noticesToMove = noticesToMove.not('#asenha-fm-warning-notice,.asenha-2fa-grace-notice');
			/*! </fs_premium_only> */

			noticesToMove.not(':hidden').detach()
			.appendTo(noticesPanel)
			.show();

		}, 250);

		// Set up the side drawer that holds the hidden admin notices: https://stephanwagner.me/jBox

		var noticesModal = new jBox('Modal', {
			attach: '.asenha-admin-notices-menu',
			trigger: 'click', // or 'mouseenter'
			// content: 'Test'
			content: $('.asenha-admin-notices-drawer'),
			width: 1118, // pixels
			closeButton: 'box',
			addClass: 'admin-notices-modal',
			overlayClass: 'admin-notices-modal-overlay',
			target: '#wpwrap', // where to anchor the modal
			position: {
				x: 'right',
				y: 'top'
			},
			// fade: 1000,
			animation: {
				open: 'slide:bottom',
				close: 'slide:bottom'
			}
		});

		$(document).on('click', '.asenha-admin-notices-drawer', function() {
			setTimeout(
			  function() 
			  {
			    // Let's wait 200ms before we proceed. Give enough time for a notice div to be cleared from the DOM before recounting the notices
	   		noticesCount = $('.asenha-admin-notices-drawer > div').length;
	   		$('.asenha-admin-notices-counter').html(noticesCount); // insert count
			  }, 2000);
		});

   });

})( jQuery );