<?php

use TotalTheme\Header\Core as Header;
use TotalTheme\Header\Menu\Search;
use TotalTheme\Mobile\Menu as Mobile_Menu;

// Exit if accessed directly.
if ( ! defined( 'DGWT_WCAS_FILE' ) ) {
	exit;
}

// Remove search icon from theme.
add_action( 'init', function () {
	remove_filter( 'wp_nav_menu_items', 'TotalTheme\Header\Menu\Search::insert_icon', 11, 2 );

	// Override theme shortcodes (used in Flex headers).
	add_shortcode( 'header_search_icon', function () {
		return do_shortcode( '[fibosearch layout="icon" class="wpex-ml-20"]' );
	} );
	add_shortcode( 'searchform', function () {
		return do_shortcode( '[fibosearch layout="classic" class="wpex-ml-20"]' );
	} );
} );

add_filter( 'dgwt/wcas/scripts/mobile_overlay_breakpoint', function () {
	return Mobile_Menu::breakpoint();
} );

add_filter( 'wp_nav_menu_items', function ( $items, $args ) {
	// The following code is partly from TotalTheme\Header\Menu\Search::insert_icon().
	if ( Header::has_flex_container() || ! Search::is_enabled() ) {
		return $items;
	}
	$search_icon_theme_locations = (array) apply_filters( 'wpex_menu_search_icon_theme_locations', [ 'main_menu' ] );
	if ( ! in_array( $args->theme_location, $search_icon_theme_locations ) ) {
		return $items;
	}

	$liClasses = 'dgwt-wcas-search-menu-item search-toggle-li menu-item wpex-menu-extra';

	$menuSearch = '<li class="' . esc_attr( $liClasses ) . '">';
	if ( Header::style() === 'six' ) {
		$menuSearch .= do_shortcode( '[fibosearch layout="classic"]' );
	} else {
		$menuSearch .= do_shortcode( '[fibosearch layout="icon"]' );
	}
	$menuSearch .= '</li>';

	/**
	 * Filters the header menu search icon position.
	 *
	 * @param $position | options: start or end.
	 */
	$menuSearchPosition = apply_filters( 'wpex_header_menu_search_position', 'end' );

	switch ( $menuSearchPosition ) {
		case 'start':
			$items = $menuSearch . $items;
			break;
		case 'end':
		default;
			$items = $items . $menuSearch;
			break;
	}

	return $items;
}, 11, 2 );

add_action( 'wp_head', function () {
	$iconSize = get_theme_mod( 'menu_search_icon_size' );
	if ( empty( $iconSize ) ) {
		$iconSize = '14px';
	}
	?>
	<style>
		.navbar-fixed-line-height .main-navigation-ul > .menu-item > .dgwt-wcas-search-wrapp {
			height: var(--wpex-main-nav-height, 50px);
			line-height: var(--wpex-main-nav-line-height, var(--wpex-main-nav-height, 50px));
		}

		.dgwt-wcas-ico-magnifier, .dgwt-wcas-ico-magnifier-handler {
			max-width: none;
			max-height: <?php echo esc_attr($iconSize); ?>;
			fill: var(--wpex-main-nav-link-color, var(--wpex-text-2));
		}

		.dgwt-wcas-search-menu-item:hover .dgwt-wcas-ico-magnifier,
		.dgwt-wcas-search-menu-item:hover .dgwt-wcas-ico-magnifier-handler,
		#site-header-flex-aside .dgwt-wcas-ico-magnifier:hover,
		#site-header-flex-aside .dgwt-wcas-ico-magnifier-handler:hover {
			fill: var(--wpex-hover-main-nav-link-color, var(--wpex-accent, var(--wpex-main-nav-link-color, var(--wpex-text-2))));
		}

		.main-navigation-ul > .dgwt-wcas-search-menu-item {
			padding-left: var(--wpex-main-nav-link-padding-x, 0px);
			padding-right: var(--wpex-main-nav-link-padding-x, 0px);
		}

		#site-header-flex-aside-inner .dgwt-wcas-search-wrapp.dgwt-wcas-layout-classic {
			max-width: 200px;
		}
	</style>
	<?php
} );

add_action( 'wp_footer', function () {
	$style = Mobile_Menu::style();
	if ( $style === 'sidr' ) {
		// Mobile Menu Style: Sidebar.
		// We use the default search input, after clicking which we open our overlay.
		?>
		<script>
			(function ($) {
				$(document).on('focus', '#sidr-main input[type="search"]', function () {
					var $input = $('.js-dgwt-wcas-enable-mobile-form');
					if ($input.length > 0) {
						$input[0].click();
					}
				});
			}(jQuery));
		</script>
		<?php
	} else {
		echo '<div id="wcas-mobile-search" style="display: none;">' . do_shortcode( '[fibosearch layout="classic"]' ) . '</div>';
		?>
		<script>
			var mobileSearch = document.querySelector('#mobile-menu-search');
			if (mobileSearch !== null) {
				mobileSearch.replaceWith(document.querySelector('#wcas-mobile-search > div'));
			}
			document.querySelector('#wcas-mobile-search').remove();
		</script>
		<?php
	}

	if ( Header::style() === 'two' ) {
		// Header style: 2. Bottom Menu
		echo '<div id="wcas-desktop-search" style="display: none;"><div class="wpex-clr">' . do_shortcode( '[fibosearch layout="classic"]' ) . '</div></div>';
		?>
		<script>
			var desktopSearch = document.querySelector('#header-two-search');
			if (desktopSearch !== null) {
				desktopSearch.replaceWith(document.querySelector('#wcas-desktop-search > div'));
			}
			document.querySelector('#wcas-desktop-search').remove()
		</script>
		<?php
	}
} );
