hoogle-4.1.4: datadir/resources/hoogle.js
var instant = false; // should we search on key presses
/////////////////////////////////////////////////////////////////////
// SEARCHING
var currentSearch; // String
var oldSearches = cache(100);
$(function(){
currentSearch = $("#hoogle").focus().keyup(searchBoxChange).val();
});
function searchBoxChange()
{
if (!instant) return;
var txt = $("#hoogle");
var bod = $("#body");
var now = txt.val();
if (now == currentSearch) return; else currentSearch = now;
var old = oldSearches.ask(now);
if (old != undefined)
bod.html(old);
else
{
$.ajax({
url: '?',
data: {mode:'ajax', hoogle:now},
dataType: 'html',
complete: function(s){return function(e){
oldSearches.add(s,e.responseText);
if (txt.val() == s)
bod.html(e.responseText);
}}(now)
});
}
}
/////////////////////////////////////////////////////////////////////
// INSTANT
$(function(){
setInstant($.getQueryString('ajax') == "1" || $.cookie("instant") == "1");
$("#instant").css("display","");
});
function setInstant(x)
{
instant = x == undefined ? !instant : x ? true : false;
$("#instantVal").html(instant ? "on" : "off");
if (instant)
{
$.cookie("instant","1",{expires:365});
searchBoxChange();
}
else
$.cookie("instant",null);
}
/////////////////////////////////////////////////////////////////////
// SEARCH PLUGIN
$(function(){
if (window.external && ("AddSearchProvider" in window.external))
$("#plugin").css("display","");
});
function searchPlugin()
{
var l = document.location;
var url = l.protocol + "//" + l.hostname + l.pathname + $("link[rel=search]").attr("href");
window.external.AddSearchProvider(url);
}
/////////////////////////////////////////////////////////////////////
// DOCUMENTATION
function docs(i)
{
var e = document.getElementById("d" + i);
e.className = (e.className == "shut" ? "open" : "shut");
return false;
}
/////////////////////////////////////////////////////////////////////
// CACHE
function cache(maxElems)
{
// FIXME: Currently does not evict things
var contents = {}; // what we have in the cache
return {
add: function(key,val)
{
contents[key] = val;
},
ask: function(key)
{
return contents[key];
}
};
}
/////////////////////////////////////////////////////////////////////
// EXTERNAL jQUERY BITS
// From http://stackoverflow.com/questions/901115/get-querystring-values-with-jquery/3867610#3867610
;(function ($) {
$.extend({
getQueryString: function (name) {
function parseParams() {
var params = {},
e,
a = /\+/g, // Regex for replacing addition symbol with a space
r = /([^&=]+)=?([^&]*)/g,
d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
q = window.location.search.substring(1);
while (e = r.exec(q))
params[d(e[1])] = d(e[2]);
return params;
}
if (!this.queryStringParams)
this.queryStringParams = parseParams();
return this.queryStringParams[name];
}
});
})(jQuery);