| 
					
				 | 
			
			
				@@ -0,0 +1,141 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+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]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |