-/* $Id: search.js,v 1.39 2007-01-18 16:21:23 quinn Exp $
+/* $Id: search.js,v 1.52 2007-03-20 21:36:39 quinn Exp $
* ---------------------------------------------------
* Javascript container
*/
var searched = 0;
var cur_id = -1;
var cur_rec = 0;
+var filter = '';
function initialize ()
{
function create_element (name, cdata) {
var elem_node = document.createElement(name);
- var text_node = document.createTextNode(cdata);
- elem_node.appendChild(text_node);
+ elem_node.innerHTML = cdata;
return elem_node;
}
var a = document.createElement('a');
a.appendChild(txt);
a.setAttribute('href', "");
- a.setAttribute('onclick', "set_sort('" + opt + "'); return false");
+ a.setAttribute('id', opt);
+ a.onclick = function() { set_sort(this.getAttribute('id')); return false; };
n.appendChild(a);
}
}
return '@';
else if (name == 'md-id')
return 'Local ID';
+ else if (name == 'md-description')
+ return 'Description';
+ else if (name == 'md-lccn')
+ return 'LCCN';
else if (name == 'recid')
return '@';
else if (name == 'location')
var dname = displayname(name);
var ln = create_element('b', dname);
var tln = document.createElement('td');
- tln.setAttribute('width', 90);
- tln.setAttribute('valign', 'top');
+ tln.width = '90';
+ tln.vAlign = 'top';
tln.appendChild(ln);
var tr = document.createElement('tr');
tr.appendChild(tln);
return tr;
}
+function cleanurl(v)
+{
+ var v1 = v;
+ var v2 = v1.replace(/\?.*$/, "");
+ var v3 = v2.replace(/http:\/\//, "");
+ return v3;
+}
+
function paint_data_elements(target, node)
{
var nodes = node.childNodes;
}
if (name == 'location')
{
- target.appendChild(paint_details_tr('Location', paint_subrecord(nodes[i])));
+ dn = document.createElement('td');
+ dn.appendChild(paint_subrecord(nodes[i]));
+ target.appendChild(paint_details_tr('Location', dn));
continue;
}
if (!nodes[i].childNodes[0])
var nv;
if (hyl)
{
- nv = create_element('a', value);
+ nv = create_element('a', cleanurl(value));
if (hyl == 'URL')
{
- nv.setAttribute('href', value);
- nv.setAttribute('target', '_blank');
+ nv.href = value;
+ nv.target = '_blank';
}
else
{
- nv.setAttribute('href', '#');
+ nv.href = '#';
nv.setAttribute('term', value);
nv.setAttribute('searchfield', hyl);
nv.onclick = function() { hyperlink_search(this); return false; };
}
}
+ else if (name == 'md-lccn')
+ {
+ nv = document.createElement('span');
+ nv.appendChild(document.createTextNode(value + ' '));
+ var link = create_element('a', 'Show title in LoC');
+ link.setAttribute('target', '_blank');
+ link.setAttribute('href', 'http://catalog.loc.gov/cgi-bin/Pwebrecon.cgi?DB=local&CNT=10&CMD=10+records+per+page&CMD=lccn+' + value);
+ nv.appendChild(link);
+
+ }
+ else if (name == 'md-isbn')
+ {
+ nv = document.createElement('span');
+ nv.appendChild(document.createTextNode(value + ' '));
+ var link = create_element('a', 'search OpenWorldCat');
+ link.setAttribute('target', '_blank');
+ link.setAttribute('href', 'http://www.worldcat.org/search?q=isbn%3A' + value);
+ nv.appendChild(link);
+ }
else
nv = document.createTextNode(value);
dn.appendChild(nv);
function paint_subrecord(node)
{
var table = document.createElement('table');
+ var tbody = document.createElement('tbody');
var zurl = node.getAttribute('id');
- var tr = paint_details_tr('Source', document.createTextNode(zurl));
- paint_data_elements(table, node);
- table.appendChild(tr);
+ var name = node.getAttribute('name');
+ var tr;
+ var td;
+ if (name)
+ td = create_element('td', name);
+ else
+ td = create_element('td', zurl);
+ tr = paint_details_tr('Source', td);
+ tbody.appendChild(tr);
+ paint_data_elements(tbody, node);
+ table.appendChild(tbody);
return table;
}
{
clear_cell(body);
var table = document.createElement('table');
+ var tbody = document.createElement('tbody');
table.setAttribute('cellpadding', 2);
- paint_data_elements(table, xml.childNodes[0]);
+ paint_data_elements(tbody, xml.childNodes[0]);
+ table.appendChild(tbody);
body.appendChild(table);
body.style.display = 'inline';
}
var field = obj.getAttribute('searchfield');
var term = obj.getAttribute('term');
var queryfield = document.getElementById('query');
- queryfield.value = field + '=' + term;
+ queryfield.value = field + '="' + term + '"';
start_search();
}
var count = 1;
var idn = hits[i].getElementsByTagName("recid");
- if (tn[0]) {
+ if (tn[0] && tn[0].childNodes[0]) {
title = tn[0].childNodes[0].nodeValue;
} else {
title = 'N/A';
var record_cell = create_element('a', title);
record_cell.setAttribute('href', '#' + id);
- record_cell.setAttribute('onclick', 'fetch_details(' + id + '); return false');
+ record_cell.setAttribute('id', id);
+ //record_cell.onclick = function() { fetch_details(this.getAttribute('id')); return false; }
+ record_cell.onclick = function() { fetch_details(this.getAttribute('id')); return false; };
record_div.appendChild(record_cell);
if (author)
{
- record_div.appendChild(document.createTextNode(', by '));
+ record_div.appendChild(document.createTextNode(' by '));
var al = create_element('a', author);
al.setAttribute('href', '#');
al.setAttribute('term', author);
var term = obj.getAttribute('term');
var cur_termlist = obj.getAttribute('facet');
var query_cell = document.getElementById('query');
+ var id = obj.getAttribute('target_id');
term = term.replace(/[\(\)]/g, '');
if (cur_termlist == 'subject')
- query_cell.value += ' and su=(' + term + ')';
+ query_cell.value += ' and su="' + term + '"';
else if (cur_termlist == 'author')
- query_cell.value += ' and au=(' + term + ')';
+ query_cell.value += ' and au="' + term + '"';
else if (cur_termlist == 'date')
- query_cell.value += ' and date=' + term;
+ query_cell.value += ' and date="' + term + '"';
+ else if (cur_termlist == 'xtargets')
+ filter ='id=' + id;
start_search();
}
{
var namen = terms[t].getElementsByTagName("name");
var freqn = terms[t].getElementsByTagName("frequency");
+ var idn = terms[t].getElementsByTagName("id");
if (namen[0])
+ {
var term = namen[0].childNodes[0].nodeValue;
var freq = freqn[0].childNodes[0].nodeValue;
+ var id;
+ if (idn[0])
+ id = idn[0].childNodes[0].nodeValue;
var refine_cell = create_element('a', term + ' (' + freq + ')');
refine_cell.setAttribute('href', '#');
refine_cell.setAttribute('term', term);
refine_cell.setAttribute('facet', listname);
+ refine_cell.setAttribute('target_id', id);
refine_cell.onclick = function () {
refine_query(this);
return false;
};
body.appendChild(refine_cell);
+ }
}
}
if (clients > 0)
stattimer = setTimeout(check_stat, 1000);
}
+function clear_filter()
+{
+ filter = '';
+}
+
function start_search()
{
clearTimeout(termtimer);
var url = "search.pz2?" +
"command=search" +
"&session=" + session +
- "&query=" + query;
+ "&query=" + query +
+ "&filter=" + escape(filter);
xsearch = GetXmlHttpObject();
xsearch.onreadystatechange=search_started;
xsearch.open("GET", url);