1$(document).ready(function () { 2 3 var ajaxurl = '/wp-admin/admin-ajax.php'; 4 5 var searchWrap = '.searchWrap'; 6 var searchInputWrap = '.searchWrap .searchInput'; 7 var searchInputPopupWrap = '.searchResultsPopupInputSearch .searchInput'; 8 var searchBtnWrap = '.headerLink.search, .searchResultsWrap .showAllSearchResults'; 9 10 function openSearchPopup() { 11 12 $.magnificPopup.open({ 13 items: { 14 src: '#searchResult', 15 }, 16 type: 'inline', 17 18 fixedContentPos: false, 19 fixedBgPos: true, 20 21 overflowY: 'auto', 22 23 closeBtnInside: true, 24 preloader: false, 25 26 midClick: true, 27 removalDelay: 100, 28 mainClass: 'my-mfp-zoom-in', 29 callbacks: { 30 open: function () { 31 $('body').addClass('fixed'); 32 $(searchWrap).removeClass('dropResults'); 33 }, 34 close: function () { 35 $('body').removeClass('fixed'); 36 } 37 } 38 }); 39 40 } 41 42 //search handler 43 $(document).on('click', searchBtnWrap, function (e) { 44 45 e.preventDefault(); 46 47 var selector = '.header', 48 self = this; 49 50 if ($(window).width() > 767) { 51 selector = '.searchWrap'; 52 } else { 53 $(this).parents('.header').find('.headerButtons').addClass('hideForSearch'); 54 } 55 56 var searchInputText = $(searchInputWrap).val(); 57 58 if (searchInputText) { 59 search(searchInputText); 60 } 61 62 if ($(this).parents(selector).hasClass('opened') && $('.searchWrap .searchInput').val()) { 63 openSearchPopup(); 64 // $(this).parents('.header').find('.headerButtons').removeClass('hideForSearch'); 65 // $(this).parents(selector).removeClass('opened'); 66 } else { 67 $(this).parents(selector).addClass('opened'); 68 69 setTimeout(function () { 70 $(self).parents(selector).find('.searchInput').focus(); 71 }, 400); 72 } 73 74 }); 75 76 $(document).on('keypress', searchInputWrap, function (e) { 77 78 var searchInputText = $(searchInputWrap).val(); 79 80 $(searchInputPopupWrap).val(searchInputText); 81 82 if (e.keyCode === 13) { 83 if (searchInputText) { 84 search(searchInputText); 85 openSearchPopup(); 86 } 87 } else { 88 if (searchInputText.length > 3) { 89 fastSearch(searchInputText); 90 } 91 } 92 93 }); 94 95 $(document).on('keyup', searchInputPopupWrap, function (e) { 96 97 var searchInputText = $(searchInputPopupWrap).val(); 98 99 $(searchInputWrap).val(searchInputText); 100 101 if (searchInputText.length > 3) { 102 search(searchInputText); 103 } 104 105 }); 106 107 $(document).on('click', function (e) { 108 109 if ($(e.target).parents('.searchWrap').length === 0) { 110 $(searchWrap).removeClass('dropResults'); 111 } 112 113 }); 114 115 $(document).on('click', searchInputWrap, function () { 116 117 var searchInputText = $(searchInputWrap).val(); 118 119 if (searchInputText.length > 3) { 120 fastSearch(searchInputText); 121 } 122 123 }); 124 125 var popupHeaderQueryWrap = '.popupBody .sectionHead .searchRequest'; 126 127 var productsCountWrap = '.popupBody .sectionHead.products .value'; 128 var productsItemsPopup = '.searchResultsPopup .popupBody'; 129 var productsItemsWrap = '.searchResultsPopup .popupBody .cardsWrap'; 130 var productsHiddenItemsWrap = '.popupBody .cardsWrap .hiddenProducts'; 131 var productsShowMoreBtnWrap = '.popupBody .toCatalogButtonWrap'; 132 133 var fastSearchCountWrap = '.searchResultsWrap .showAllSearchResults .foundedItemsNumber'; 134 var fastSearchItemsWrap = '.searchResultsWrap .searchResultItemsWrap'; 135 136 var postsCountWrap = '.popupBody .sectionHead.posts .value'; 137 var postsItemsWrap = '.popupBody .newsWrap'; 138 139 // search 140 var searchAjax; 141 142 function search(query) { 143 144 if (searchAjax) { 145 searchAjax.abort(); 146 } 147 148 $(productsItemsWrap).empty(); 149 $(productsItemsPopup).addClass('loading'); 150 151 var data = { 152 'action': 'uarm_ajax_search', 153 'search_query': query 154 }; 155
156 searchAjax = $.ajax({ 157 url: ajaxurl, 158 data: data, 159 type: 'GET', 160 success: function (data) { 161 162 $(productsItemsPopup).removeClass('loading'); 163 164 if (data) { 165 166 var result = JSON.parse(data); 167 168 var searchQuery = result['search_query']; 169 170 $(popupHeaderQueryWrap).html('"' + searchQuery + '"'); 171 172 // products 173 var resultProducts = result['products']; 174 var resultProductsCount = resultProducts['count']; 175 var resultProductsHtml = resultProducts['html']; 176 177 $(productsCountWrap).html(resultProductsCount); 178 179 if (parseInt(resultProductsCount) != 0) { 180 $(productsShowMoreBtnWrap).attr('style', 'display:block;'); 181 } else { 182 $(productsShowMoreBtnWrap).attr('style', 'display:none;'); 183 } 184 185 if (resultProductsHtml) { 186 187 var productItemIteration = 0; 188 189 for (var productItemIndex in resultProductsHtml) { 190 191 var productItemObject = $(resultProductsHtml[productItemIndex]); 192 193 $(productsItemsWrap).append(productItemObject); 194 195 productItemIteration++; 196 197 } 198 199 } 200 201 //posts 202 var resultPosts =result['posts']; 203 var resultPostsCount = resultPosts['count']; 204 var resultPostsHtml = resultPosts['html']; 205 206 $(postsCountWrap).html(resultPostsCount); 207 208 if (resultPostsHtml) { 209 210 $(postsItemsWrap).empty().append(resultPostsHtml); 211 212 } 213 214 if (result['html']) { 215 $('body').append(result['html']); 216 } 217 } 218 219 } 220 }); 221 222 } 223 224 // fast search 225 var fastSearchAjax; 226 227 function fastSearch(query) { 228 229 if (fastSearchAjax) { 230 fastSearchAjax.abort(); 231 } 232 233 $(searchWrap).addClass('loading'); 234 235 var data = { 236 'action': 'uarm_ajax_fast_search', 237 'search_query': query 238 }; 239 240 fastSearchAjax = $.ajax({ 241 url: ajaxurl, 242 data: data, 243 type: 'GET', 244 success: function (data) { 245 246 $(searchWrap).removeClass('loading'); 247 248 if (data) { 249 250 var result = JSON.parse(data); 251 252 var searchQuery = result['search_query']; 253 254 $(popupHeaderQueryWrap).html('"' + searchQuery + '"'); 255 256 // products 257 var resultProducts = result['products']; 258 var resultProductsCount = resultProducts['count']; 259 var resultProductsHtml = resultProducts['html']; 260 261 $(fastSearchCountWrap).html(resultProductsCount); 262 263 if (resultProductsHtml.length !== 0) { 264 265 if ($(searchWrap).hasClass('opened')) { 266 if ($('.searchWrap .searchInput').val() == '') { 267 $(searchWrap).removeClass('dropResults'); 268 } else { 269 $(searchWrap).addClass('dropResults'); 270 } 271 } else if ($('header.header').hasClass('opened')) { 272 if ($('.searchWrap .searchInput').val() == '') { 273 $(searchWrap).removeClass('dropResults'); 274 } else { 275 $(searchWrap).addClass('dropResults'); 276 } 277 } 278 279 $(fastSearchItemsWrap).empty().append(resultProductsHtml); 280 281 } else { 282 $(searchWrap).removeClass('dropResults'); 283 } 284 285 } 286 287 } 288 }); 289 290 } 291 292});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.