(function($){let localCache={data:{},remove:function(url){delete localCache.data[url];},exist:function(url){return localCache.data.hasOwnProperty(url)&&localCache.data[url]!==null;},get:function(url){return localCache.data[url];},set:function(url,cachedData,callback){localCache.remove(url);localCache.data[url]=cachedData;if($.isFunction(callback))callback(cachedData);}};function initSearchForm(){const $searchForm=$(this),$ajaxSearchParams=$('.ajax-search-params',$searchForm),postTypes=$ajaxSearchParams.data('post-types'),postTypesPpp=$ajaxSearchParams.data('post-types-ppp'),resultTitle=$ajaxSearchParams.data('result-title'),showAllText=$ajaxSearchParams.data('show-all'),$searchSubmitIcon=$('.search-submit',$searchForm),$searchInput=$('.search-field',$searchForm),$searchResults=$('.ajax-search-results',$searchForm),$selectCategory=$('.select-category',$searchForm),$searchButtons=$('.search-buttons',$searchForm);let ajax,ajaxActive=false;const checkWidth=()=>{$searchForm.removeClass('columns-2').removeClass('columns-3').removeClass('columns-4');if($searchForm.width()>=1240){$searchForm.addClass('columns-4');}else if($searchForm.width()>=930){$searchForm.addClass('columns-3');}else if($searchForm.width()>=620){$searchForm.addClass('columns-2');}
if($searchButtons.length){$searchInput.css('padding-right',($searchButtons.outerWidth()+5)+'px');}};const maybeInvert=()=>{formRect=$searchForm.get(0).getBoundingClientRect();if(formRect.top>0&&formRect.top<$(window).height()){resultsRect=$searchResults.get(0).getBoundingClientRect();if(resultsRect.bottom>$(window).height()){$searchForm.addClass('invert-results');resultsRect=$searchResults.get(0).getBoundingClientRect();if(resultsRect.top<0){$searchForm.removeClass('invert-results');}}}};const ajaxMiniSearch=(query)=>{if(ajaxActive){ajax.abort();}
$searchForm.addClass('ajax-loading');let productCategory=$selectCategory.length?$selectCategory.find('.current .text').data('term'):'';ajax=$.ajax({type:'post',url:thegem_search_form_data.ajax_url,data:{action:'thegem_ajax_search_form',search:query,post_types:postTypes,post_types_ppp:postTypesPpp,product_category:productCategory,result_title:resultTitle,show_all_text:showAllText,},beforeSend:function(){if(localCache.exist(query+productCategory)){$searchForm.removeClass('ajax-loading');$searchForm.addClass('visible');maybeInvert();$searchResults.html(localCache.get(query+productCategory));return false;}else{ajaxActive=true;}},success:function(response){ajaxActive=false;$searchResults.html(response);$searchForm.removeClass('ajax-loading');$searchForm.addClass('visible');maybeInvert();localCache.set(query+productCategory,response);}});};const clearAjaxMinisearch=()=>{$searchInput.val('');$searchResults.html('');$searchSubmitIcon.removeClass('clear');$searchForm.removeClass('ajax-loading');if(ajaxActive){ajax.abort();ajaxActive=false;}};const submitAjax=()=>{let query=$searchInput.val();if(query.length>0){$searchSubmitIcon.addClass('clear');}else{$searchSubmitIcon.removeClass('clear');}
if(query.length>2){ajaxMiniSearch(query);}else{if(ajaxActive){ajax.abort();ajaxActive=false;}
$searchResults.html('');$searchForm.removeClass('ajax-loading');}};$searchForm.on('submit',function(e){});$searchInput.on('keyup',function(){submitAjax();});$searchInput.on('focus',function(){$selectCategory.removeClass('active');});$searchSubmitIcon.on('click',function(){if($(this).hasClass('clear')){clearAjaxMinisearch();}});$('.hamburger-toggle, #thegem-perspective .perspective-menu-close, .vertical-toggle').click(function(){clearAjaxMinisearch();});$selectCategory.on('click',function(){$(this).toggleClass('active');});$selectCategory.on('click','.term',function(){if(!$(this).hasClass('active')){$selectCategory.find('.current .text').html($(this).html()).data('term',$(this).data('term'));$selectCategory.find('.term').removeClass('active');$(this).addClass('active');submitAjax();}});$('body').on('click',function(){$searchForm.removeClass('visible');$searchForm.removeClass('invert-results');$selectCategory.removeClass('active');});$searchForm.on('click',function(e){e.stopPropagation();$(this).addClass('visible');maybeInvert();});checkWidth();$(window).on('resize',function(){checkWidth();});}
$.fn.initSearchForms=function(){$(this).each(initSearchForm);};$(function(){$('.thegem-te-search-form.ajax-search-form').initSearchForms();});})(jQuery);