Hayoo-1.2.0: index/hayoo/hayoo.js
/*
The Hayoo! AJAX interface
Copyright : Copyright (C) 2008 Timo B. Huebel
License : MIT
Maintainer : Timo B. Huebel (tbh@holumbus.org)
Version : 0.2
*/
prevInput = "";
lastLocation = window.location.hash;
refreshRequired = false;
Event.observe(window, 'load', focusQuery);
function focusQuery() {
$("querytext").focus();
}
/*
Event.observe(window, 'load', checkForInitialQuery);
function checkForInitialQuery() {
var argument = window.location.search.gsub(/\+/, '%20').toQueryParams()['query'];
if (argument) {
$("querytext").value = argument;
processQuery(0);
}
}
*/
function checkForQuery () {
if (lastLocation != window.location.hash) {
lastLocation = window.location.hash;
var prev = window.location.hash.split(":");
var start = prev[0].substr(1);
prev.shift();
var query = decodeURIComponent(prev.join(":"));
$("querytext").value = query;
processQuery(parseInt(start));
}
else {
window.setTimeout(checkForQuery, 200);
}
}
function tryProcessQuery () {
var query = $("querytext").value;
window.setTimeout('checkProcessQuery(\'' + encodeURIComponent(query) + '\')', 300);
}
function checkProcessQuery (query) {
if ((query != prevInput) && (query == encodeURIComponent($("querytext").value))) {
prevInput = query;
processQuery(0);
}
}
function forceProcessQuery () {
processQuery(0);
return false;
}
function processQuery (start) {
var query = $("querytext").value;
if (query.length > 0) {
$("throbber").show();
refreshRequired = true;
new Ajax.Request("hayoo.html?query=" + encodeURIComponent(query) + "&start=" + start + "&static=False",
{
method:'get',
onSuccess: function(transport) {
lastXMLResult = transport.responseXML;
lastTXTResult = transport.responseText;
lastQuery = query;
window.location.hash = start + ":" + encodeURIComponent(query);
lastLocation = window.location.hash;
displayResult(transport.responseText, query);
checkForQuery();
piwikTracker.trackPageView("hayoo.html?query=" + encodeURIComponent(query));
},
onFailure: function() {
var resultError = "<div id=\"result\"><div id=\"status\">Error: Could not execute query.</div><div id=\"words\"> </div><div id=\"documents\"> </div><div id=\"pager\"> </div></div>";
$("result").replace(resultError);
}
}
);
}
}
function displayResult (result, query) {
if (refreshRequired) {
refreshRequired = false;
$("result").replace(result);
$("querytext").defaultValue = query;
}
$("throbber").hide();
}
function replaceInQuery (needle, substitute) {
if ($("querytext").value == "") {
$("querytext").value = substitute;
} else {
$("querytext").value = $("querytext").value.gsub(needle, substitute);
}
processQuery(0);
}
function addToQuery (addition) {
$("querytext").value = $("querytext").value + ' ' + addition;
processQuery(0);
}
function toggleFold(node) {
if ($(node).parentNode.hasClassName('unfold')) {
$(node).parentNode.removeClassName('unfold');
} else {
$(node).parentNode.addClassName('unfold');
}
return false;
}
function showPage (page) {
if ($("querytext").value == "") {
$("querytext").value = lastQuery;
}
processQuery (page);
}