/** * searx is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * searx is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with searx. If not, see < http://www.gnu.org/licenses/ >. * * (C) 2017 by Alexandre Flament, */ (function(w, d, searx) { 'use strict'; var firstFocus = true, qinput_id = "q", qinput; function placeCursorAtEnd(element) { if (element.setSelectionRange) { var len = element.value.length; element.setSelectionRange(len, len); } } function submitIfQuery() { if (qinput.value.length > 0) { var search = document.getElementById('search'); setTimeout(search.submit.bind(search), 0); } } searx.ready(function() { qinput = d.getElementById(qinput_id); function placeCursorAtEndOnce(e) { if (firstFocus) { placeCursorAtEnd(qinput); firstFocus = false; } else { // e.preventDefault(); } } if (qinput !== null) { // autocompleter if (searx.autocompleter) { searx.autocomplete = AutoComplete.call(w, { Url: "./autocompleter", EmptyMessage: searx.noItemFound, HttpMethod: searx.method, MinChars: 4, Delay: 300, }, "#" + qinput_id); // hack, see : https://github.com/autocompletejs/autocomplete.js/issues/37 w.addEventListener('resize', function() { var event = new CustomEvent("position"); qinput.dispatchEvent(event); }); } qinput.addEventListener('focus', placeCursorAtEndOnce, false); qinput.focus(); } // vanilla js version of search_on_category_select.js if (qinput !== null && searx.search_on_category_select) { d.querySelector('.help').className='invisible'; searx.on('#categories input', 'change', function(e) { var i, categories = d.querySelectorAll('#categories input[type="checkbox"]'); for(i=0; i