1/*-------------------- 2* Live Search 3* @version 1.0 4* @author Sergey Aleksandrov <[email protected]> 5-------------------------*/ 6 7if(!window.dsC) { 8 if(window.jQuery && !compareVersionjQuery('1.7') || !window.jQuery) { 9 console.error('Version jQuery < 1.7 or jQuery not found!'); 10 } else { 11 dsC = window.jQuery; 12 rundsSearch(); 13 } 14} else rundsSearch(); 15function compareVersionjQuery(needjQuery) { 16 needjQuery = needjQuery.split('.',2); 17 nowjQuery = jQuery.fn.jquery.split('.',2); 18 if((parseInt(needjQuery[0]) != parseInt(nowjQuery[0])) || (parseInt(needjQuery[1]) > parseInt(nowjQuery[1]))) { 19 return false; 20 } 21 return true; 22} 23 24function rundsSearch() { 25 dsC(document).ready(function() { 26 var lielement; 27 var inputletters = dsC('.ds-search').attr('data-dssearch-letters'); 28 var searchrows = dsC('.ds-search').attr('data-dssearch-rows'); 29 var stylesearch = document.createElement('link'); 30 stylesearch.rel = "stylesheet"; 31 stylesearch.href = "/ds-comf/ds-search/css/dssearch.css"; 32 document.body.appendChild(stylesearch); 33 if(!inputletters) { 34 inputletters = 3; 35 } 36 if(!searchrows) { 37 searchrows = 5; 38 } 39 dsC('.ds-search').attr('autocomplete','off'); 40 dsC('.ds-search').keyup(function(keycode) { 41 var input = dsC(this); 42 if(dsC('#dsresultsearch ul li').hasClass('sliactive')) { 43 lielement = dsC('#dsresultsearch ul li.sliactive').index(); 44 } else { 45 lielement = -1; 46 } 47 if(input.val().length >= inputletters) { 48 function keyArrowSearch() { 49 dsC('#dsresultsearch ul li').removeClass('sliactive'); 50 dsC('#dsresultsearch ul li').eq(lielement).addClass('sliactive'); 51 input.val(dsC('#dsresultsearch ul li.sliactive').html()); 52 } 53 switch(keycode.keyCode) { 54 case 13: // enter 55 hiddendsSearch(); 56 break; 57 case 27: // escape 58 hiddendsSearch(); 59 break; 60 case 38: // arrowUP 61 keycode.preventDefault(); 62 if(dsC('#dsresultsearch').is(":visible")){ 63 if(lielement == -1 || lielement == 0) { 64 lielement = dsC('#dsresultsearch ul li').length; 65 } 66 lielement--; 67 keyArrowSearch(); 68 } 69 break; 70 case 40: // arrowDown 71 keycode.preventDefault(); 72 if(dsC('#dsresultsearch').is(":visible")){ 73 lielement++; 74 if(dsC('#dsresultsearch ul li').length == lielement) { 75 lielement = 0; 76 } 77 keyArrowSearch(); 78 } 79 break; 80 default: 81 dsC.ajax({ 82 type: "POST", 83 url: "/ds-comf/ds-search/search.php", 84 dataType: "json", 85 cache: false, 86 data: {"value":input.val(), "searchrows":searchrows}, 87 success: function(data){ 88 switch (data['result']) { 89 case 1: 90 delete(data['result']); 91 var htmlresult = '<ul>' + "\n"; 92 dsC.each(data, function(index, result) { 93 htmlresult += '<li>' + result + '</li>' + "\n"; 94 }) 95 htmlresult += '</ul>' + "\n"; 96 dsC('#dsresultsearch').html(htmlresult); 97 dsC('#dsresultsearch').show(); 98 break 99 case 2: 100 hiddendsSearch(); 101 break 102 default: 103 console.warn(data); 104 } 105 } 106 }); 107 } 108 109 } else if(dsC('#dsresultsearch').is(":visible")){ 110 hiddendsSearch(); 111 } 112 }); 113 dsC('body').on('mouseover', '#dsresultsearch ul li', function(){ 114 dsC('#dsresultsearch ul li').removeClass('sliactive'); 115 dsC(this).addClass('sliactive'); 116 }); 117 dsC('body').on('click', '#dsresultsearch ul li', function(){ 118 dsC('.ds-search').val(dsC(this).html()); 119 hiddendsSearch(); 120 dsC('.ds-search').parents('form').submit(); 121 }); 122 dsC('body').on('click', function() { 123 if(dsC('#dsresultsearch').is(":visible")){ 124 hiddendsSearch(); 125 } 126 }); 127 function hiddendsSearch() { 128 dsC('#dsresultsearch').empty(); 129 dsC('#dsresultsearch').hide(); 130 } 131 }); 132}
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.