Forked from
Digital Experience Group / UNL_Search
211 commits behind the upstream repository.
-
Brett Bieber authoredBrett Bieber authored
searchFunc.js 5.31 KiB
// Load the Google Search AJAX API
google.load("search", "1");
function searchInit() {
UNL_Search.peoplefinderCache = new UNL_Search.Cache();
//Parse the querystring for q
var qs = location.search.substring(1,location.search.length);
qs = qs.replace(/\+/g, ' ');
var args = qs.split('&');
UNL_Search.query = "";
for (var i=0;i<args.length;i++) {
var pair = args[i].split('=');
var name = unescape(pair[0]);
if (name == "q") {
if (pair.length == 2) {
UNL_Search.query = unescape(pair[1])
}
break;
}
}
UNL_Search.unl_search = new google.search.CustomSearchControl("015236299699564929946:nk1siew10ie");
UNL_Search.unl_search.draw('unl_results');
if (UNL_Search.do_local_search) {
UNL_Search.local_search = new google.search.CustomSearchControl(UNL_Search.local_search_context);
UNL_Search.local_search.setResultSetSize('small');
UNL_Search.local_search.draw('local_results');
}
var gSearchForm = new GSearchForm(false, document.getElementById("searchform"));
gSearchForm.setOnSubmitCallback(UNL_Search, UNL_Search.doQuery);
gSearchForm.input.value = (UNL_Search.query ? UNL_Search.query : "");
// Execute an inital search
if (UNL_Search.query && UNL_Search.query != "") {
UNL_Search.unl_search.execute(UNL_Search.query);
if (UNL_Search.do_local_search) {
UNL_Search.local_search.execute(UNL_Search.query);
}
UNL_Search.doPeoplefinderQuery(UNL_Search.query);
}
}
//Attach search initializer to onLoad
google.setOnLoadCallback(searchInit, true);
//
// UNL_Search Namespace
//
if (typeof(UNL_Search) == "undefined")
UNL_Search = {};
UNL_Search.query = null;
UNL_Search.do_local_search = false;
UNL_Search.unl_search = null;
UNL_Search.local_search = null;
UNL_Search.local_search_context = null;
UNL_Search.scrolldelay = null;
UNL_Search.peoplefinderCache = null;
//Caching Class
//
UNL_Search.Cache = {};
UNL_Search.Cache = function() {
this.storage = new Object();
};
UNL_Search.Cache.prototype.save = function(key, data) {
this.storage[key] = data;
};
UNL_Search.Cache.prototype.get = function (key) {
var val = null;
if (this.storage[key] != null) {
val = this.storage[key];
}
return val;
};
UNL_Search.handleUNLResults = function () {
UNL_Search.handleResults('unl_results', UNL_Search.unl_search);
};
UNL_Search.handleLocalResults = function () {
UNL_Search.handleResults('local_results', UNL_Search.local_search);
};
UNL_Search.handleResults = function (result_div, searchobj) {
var resultsDIV = document.getElementById(result_div);
if (searchobj.results && searchobj.results.length > 0) {
resultsDIV.innerHTML = '';
WDN.jQuery(resultsDIV).css('background', 'none');
//var resultHead = '<p>Results <strong>' + (1 + 8 * searchobj.cursor.currentPageIndex) + '</strong> - <strong>' + (8 + 8 * searchobj.cursor.currentPageIndex) + '</strong> of about <strong>' + searchobj.cursor.estimatedResultCount + '</strong> for <em>' + query + '</em></p>';
//resultsDIV.innerHTML += resultHead;
for (var i = 0; i < searchobj.results.length; i++) {
if (i % 2 != 0) {
searchobj.results[i].html.className += " alt";
}
resultsDIV.appendChild(searchobj.results[i].html);
}
if (mobileSearch) { //if we're doing a mobile search, rewrite link URLs to use mobile proxy
WDN.jQuery(resultsDIV).find('a.gs-title').each(function(){
//href= WDN.jQuery(this).attr('href');
WDN.jQuery(this).attr('href', function(i, val){
return 'http://m.unl.edu/?view=proxy&u='+val;
});
});
}
var nav = document.createElement("ul");
nav.className = "wdn_pagination";
var search_name = 'unl_search';
if (result_div.substring(0,5) == 'local') {
search_name = 'local_search';
}
for (var i = 0; i < searchobj.cursor.pages.length; i++) {
WDN.loadCSS('/wdn/templates_3.0/css/content/pagination.css');
var pageText = '';
if (searchobj.cursor.currentPageIndex != i) {
pageText += '<li><a onclick="UNL_Search.'+search_name+'.gotoPage(' + i + '); return false;" href="#">' + searchobj.cursor.pages[i].label + '</a></li>';
} else {
pageText += '<li class="selected">'+searchobj.cursor.pages[i].label + '</li>';
}
nav.innerHTML += pageText;
}
if (searchobj.cursor.pages.length >= 8) {
nav.innerHTML += '<li><a href="' + searchobj.cursor.moreResultsUrl + '">More Results >></a></li>';
}
resultsDIV.appendChild(nav);
} else {
WDN.jQuery(resultsDIV).html('<p>No results found.</p>');
}
};
UNL_Search.doPeoplefinderQuery = function (val) {
var cacheData = this.peoplefinderCache.get(val)
if (cacheData) {
this.handlePeoplefinderResults(cacheData);
} else {
var pointer = this;
WDN.get("http://directory.unl.edu/service.php?q=" + val, null, function(data, textStatus) {
pointer.peoplefinderCache.save(val, data);
UNL_Search.handlePeoplefinderResults(data);
});
}
};
UNL_Search.handlePeoplefinderResults = function (peoplefinderText) {
WDN.jQuery('#ppl_results').html(peoplefinderText);
};
UNL_Search.doQuery = function (form) {
if (form.input.value != "") {
this.query = form.input.value;
if (this.do_local_search) {
this.local_search.execute(form.input.value);
}
this.unl_search.execute(form.input.value);
this.doPeoplefinderQuery(form.input.value);
} else {
document.getElementById("searchcontrol").innerHTML = '';
document.getElementById("ppl_results").innerHTML = '';
}
return false;
};