1 /* advanced search interface */
3 attachEvt("common", "run", advInit);
6 $('advanced.wizard.contains').focus();
10 function advWizardRun() {
11 var contains = $('advanced.wizard.contains').value;
12 var nocontains = $('advanced.wizard.nocontains').value;
13 var exact = $('advanced.wizard.exact').value;
14 var form = getSelectorVal($('advanced.wizard.form_selector'));
15 var type = getSelectorVal($('search_type_selector'));
19 arg[PARAM_FORM] = form;
20 arg[PARAM_STYPE] = type;
21 arg[PARAM_OFFSET] = 0;
22 arg[PARAM_DEPTH] = depthSelGetDepth();
23 arg[PARAM_LOCATION] = depthSelGetNewLoc();
24 arg[PARAM_TERM] = advBuildSearch( contains, nocontains, exact );
26 goTo(buildOPACLink(arg));
29 function advBuildSearch( contains, nocontains, exact ) {
31 if(contains) string = contains;
34 if(exact.indexOf('"') > -1) string += " " + exact;
35 else string += " \"" + exact + "\"";
39 var words = nocontains.split(" ");
41 string += " -" + words[i];
47 function advRefinedRun() {
48 var title = $('advanced.refined.title_contains').value;
49 var author = $('advanced.refined.author_contains').value;
50 var subject = $('advanced.refined.subject_contains').value;
51 var series = $('advanced.refined.series_contains').value;
52 var form = getSelectorVal($('advanced.refined.form_selector'));
55 title = advRefinedTerm('title', title);
56 author = advRefinedTerm('author', author);
57 subject = advRefinedTerm('subject', subject);
58 series = advRefinedTerm('series', series);
60 if(title) { blob.title = {}; blob.title.term = title; }
61 if(author) { blob.author = {}; blob.author.term = author;}
62 if(subject) { blob.subject = {}; blob.subject.term = subject;}
63 if(series) { blob.series = {}; blob.series.term = series; }
67 arg[PARAM_FORM] = form;
68 arg[PARAM_STYPE] = "";
70 arg[PARAM_ADVTERM] = js2JSON(blob);
71 arg[PARAM_DEPTH] = depthSelGetDepth();
72 arg[PARAM_LOCATION] = depthSelGetNewLoc();
73 arg[PARAM_OFFSET] = 0;
74 arg[PARAM_ADVTYPE] = ADVTYPE_MULTI;
76 goTo(buildOPACLink(arg));
80 function advISBNRun() {
81 var isbn = $('opac.advanced.quick.isbn').value;
85 arg[PARAM_STYPE] = "";
87 arg[PARAM_ADVTERM] = isbn;
88 arg[PARAM_OFFSET] = 0;
89 arg[PARAM_ADVTYPE] = ADVTYPE_ISBN;
90 goTo(buildOPACLink(arg));
93 function advISSNRun() {
94 var issn = $('opac.advanced.quick.issn').value;
98 arg[PARAM_STYPE] = "";
100 arg[PARAM_ADVTERM] = issn;
101 arg[PARAM_OFFSET] = 0;
102 arg[PARAM_ADVTYPE] = ADVTYPE_ISSN;
103 goTo(buildOPACLink(arg));
107 function advRefinedTerm( type, term ) {
108 var t = getSelectorVal($('advanced.refined.' + type + '_type'));
111 if( t == 'contains' ) string = advBuildSearch( term );
112 else if( t == 'nocontains' ) string = advBuildSearch( null, term );
113 else if( t == 'exact' ) string = advBuildSearch( null, null, term );
119 function advAddMARC() {
120 $('advanced.marc.tbody').insertBefore(
121 $('advanced.marc.template').cloneNode(true),
122 $('advanced.marc.submit.row'));
125 function advMARCRun() {
127 var t = $('advanced.marc.tbody');
130 for( var c in t.childNodes ) {
131 var child = t.childNodes[c];
132 if(child.nodeName == 'tr') {
134 var val = advExtractMARC(child);
135 if(val) searches.push(val);
140 var children = t.getElementsByTagName('tr');
141 for( var c in children ) {
142 var child = children[c];
143 if(!(child && child.innerHTML)) continue;
144 var val = advExtractMARC(child);
145 if(val) searches.push(val);
148 if(searches.length == 0) return;
152 arg[PARAM_FORM] = 'all'
153 arg[PARAM_STYPE] = "";
154 arg[PARAM_OFFSET] = 0;
155 arg[PARAM_DEPTH] = depthSelGetDepth();
156 arg[PARAM_LOCATION] = depthSelGetNewLoc();
157 arg[PARAM_ADVTERM] = js2JSON(searches);
158 arg[PARAM_ADVTYPE] = ADVTYPE_MARC;
159 arg[PARAM_TERM] = "";
161 goTo(buildOPACLink(arg));
165 /* EXAMPLE => {"term":"0516011901","restrict":[{"tag":"020","subfield":"a"}]} */
166 function advExtractMARC(row) {
167 if(!row || row.id == 'advanced.marc.submit.row') return null;
168 var term = $n(row, 'advanced.marc.value').value;
169 if(!term) return null;
171 var subfield = $n(row, 'advanced.marc.subfield').value;
172 if(!subfield) subfield = "_";
174 var tag = $n(row, 'advanced.marc.tag').value;
175 if(!tag) return null;
177 return { 'term' : term, 'restrict' : [ { 'tag' : tag, 'subfield' : subfield } ] };