forked from zaclys/searxng
141 lines
3.8 KiB
JavaScript
141 lines
3.8 KiB
JavaScript
if(searx.autocompleter) {
|
|
window.addEvent('domready', function() {
|
|
new Autocompleter.Request.JSON('q', '/autocompleter', {
|
|
postVar:'q',
|
|
postData:{
|
|
'format': 'json'
|
|
},
|
|
ajaxOptions:{
|
|
timeout: 5 // Correct option?
|
|
},
|
|
'minLength': 4,
|
|
'selectMode': false,
|
|
cache: true,
|
|
delay: 300
|
|
});
|
|
});
|
|
}
|
|
|
|
(function (w, d) {
|
|
'use strict';
|
|
function addListener(el, type, fn) {
|
|
if (el.addEventListener) {
|
|
el.addEventListener(type, fn, false);
|
|
} else {
|
|
el.attachEvent('on' + type, fn);
|
|
}
|
|
}
|
|
|
|
function placeCursorAtEnd() {
|
|
if (this.setSelectionRange) {
|
|
var len = this.value.length * 2;
|
|
this.setSelectionRange(len, len);
|
|
}
|
|
}
|
|
|
|
addListener(w, 'load', function () {
|
|
var qinput = d.getElementById('q');
|
|
if (qinput !== null && qinput.value === "") {
|
|
addListener(qinput, 'focus', placeCursorAtEnd);
|
|
qinput.focus();
|
|
}
|
|
});
|
|
|
|
if (!!('ontouchstart' in window)) {
|
|
document.getElementsByTagName("html")[0].className += " touch";
|
|
}
|
|
|
|
})(window, document);
|
|
|
|
var xmlHttp
|
|
|
|
function GetXmlHttpObject(){
|
|
|
|
var xmlHttp = null;
|
|
|
|
try {
|
|
// Firefox, Opera 8.0+, Safari
|
|
xmlHttp = new XMLHttpRequest();
|
|
}
|
|
catch (e) {
|
|
// Internet Explorer
|
|
try {
|
|
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
|
|
}
|
|
catch (e){
|
|
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
|
|
}
|
|
}
|
|
return xmlHttp;
|
|
}
|
|
|
|
var timer;
|
|
|
|
// Load more results
|
|
function load_more(query,page){
|
|
|
|
xmlHttp = GetXmlHttpObject();
|
|
clearTimeout(timer);
|
|
|
|
if(xmlHttp == null){
|
|
alert ("Your browser does not support AJAX!");
|
|
return;
|
|
}
|
|
|
|
favicons[page] = [];
|
|
|
|
xmlHttp.onreadystatechange = function(){
|
|
|
|
var loader = document.getElementById('load_more');
|
|
|
|
// If 4, response OK
|
|
if (xmlHttp.readyState == 4){
|
|
|
|
var res = xmlHttp.responseText;
|
|
|
|
clearTimeout(timer);
|
|
timer = setTimeout(function(){},6000);
|
|
|
|
var results = document.getElementById('results_list');
|
|
|
|
var newNode = document.createElement('span');
|
|
newNode.innerHTML = res;
|
|
results_list.appendChild(newNode);
|
|
|
|
var scripts = newNode.getElementsByTagName('script');
|
|
for (var ix = 0; ix < scripts.length; ix++) {
|
|
eval(scripts[ix].text);
|
|
}
|
|
|
|
load_images(page);
|
|
document.getElementById("load_more").onclick = function() { load_more(query, (page+1)); }
|
|
loader.removeAttribute("disabled");
|
|
|
|
} else {
|
|
loader.disabled = 'disabled';
|
|
}
|
|
}
|
|
var url = "/";
|
|
var params = "q="+query+"&pageno="+page+"&category_general=1&category_files=1&category_images=1&category_it=1&category_map=1&category_music=1&category_news=1&category_social+media=1&category_videos=1";
|
|
xmlHttp.open("POST",url,true);
|
|
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
|
|
xmlHttp.setRequestHeader("Content-length", params.length);
|
|
xmlHttp.setRequestHeader("Connection", "close");
|
|
xmlHttp.send(params);
|
|
}
|
|
|
|
// Load the images on the canvas in the page
|
|
function load_images(page){
|
|
var arrayLength = favicons[page].length;
|
|
for (var i = 1; i < arrayLength+1; i++) {
|
|
var img = new Image();
|
|
img.setAttribute("i",i)
|
|
img.onload = function () {
|
|
var id = 'canvas-'+page+'-'+this.getAttribute("i");
|
|
var can = document.getElementById(id);
|
|
var ctx = can.getContext("2d");
|
|
ctx.drawImage(this, 0, 0, 16, 16);
|
|
};
|
|
img.src = favicons[page][i];
|
|
}
|
|
} |