1$(document).ready(function () { 2 3 // use default autocomplete script if not defined ss_autocomplete 4 if ($.fn.ss_autocomplete === undefined) { 5 $.fn.ss_autocomplete = $.fn.autocomplete; 6 } 7 8 if (window.search_element === undefined) { 9 search_element = '#search input[name="search"]'; 10 } else { 11 search_element = window.search_element; 12 } 13 14 $(search_element).ss_autocomplete({ 15 delay: 500, 16 source: function (request, response) { 17 if (request === '') { 18 this.hide(); 19 return false; 20 } 21 $.ajax({ 22 url: 'index.php?route=extension/module/search_suggestion/ajax&keyword=' + encodeURIComponent(request), 23 dataType: 'json', 24 success: function (json) { 25 response($.map(json, function (item) { 26 var elements = []; 27 $.each(item['fields'], function (field_name, field) { 28 if (field != undefined && field[field_name] !== undefined && field[field_name]) { 29 30 var field_html = ''; 31 if (field_name == 'image') { 32 field_html = '<img src="' + field[field_name] + '" />'; 33 } else if (field_name == 'price') { 34 if (field.special) { 35 field_html = '<span class="price-old">' + field.price + '</span><span class="price-new">' + field.special + '</span>'; 36 } else { 37 field_html = field.price; 38 } 39 } else { 40 field_html = field[field_name]; 41 } 42 43 if (field.label != undefined && field.label.show != undefined && field.label.show) { 44 field_html = '<span class="label">' + field.label.label + '</span>' + field_html; 45 } 46 if (field.location != undefined && field.location == 'inline') { 47 field_html = '<span class="' + field_name + '">' + field_html + '</span>'; 48 } else { 49 field_html = '<div class="' + field_name + '">' + field_html + '</div>'; 50 } 51 52 elements.push({sort: field.sort, html: field_html}); 53 } 54 }); 55 56 // sort 57 elements.sort(function (a, b) { 58 return a.sort - b.sort 59 }); 60 61 // implode 62 var elements_html = ''; 63 $.each(elements, function (index, element) { 64 if (element != undefined) { 65 elements_html = elements_html + element.html; 66 } 67 }); 68 69 if (item['type'] != undefined) { 70 item_type = item['type']; 71 } else { 72 item_type = ''; 73 } 74 75 elements_html = '<div class="search-suggestion ' + item_type + '">' + elements_html + '</div>'; 76 77 return { 78 label: elements_html, 79 value: item['href'] 80 }; 81 })); 82 } 83 }); 84 }, 85 select: function (item) { 86 if (item['value'] !== '') { 87 location.href = item['value']; 88 } 89 return false; 90 }, 91 focus: function (event, ui) { 92 return false; 93 } 94 }); 95});
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.