1 /* advanced search interface */
3 attachEvt("common", "run", advInit);
7 unHideMe($('adv_search_parent'));
11 setEnterFunc( $n( $('advanced.marc.tbody'), 'advanced.marc.value'), advMARCRun );
12 hideMe($('adv_quick_search_sidebar'));
15 if(getAdvTerm()) $('adv_quick_text').value = getAdvTerm();
17 var rtype_val = getRtype();
18 if(rtype_val==RTYPE_MARC) rtype_val='iccn';
19 adv_set = setSelector($('adv_quick_type'), rtype_val);
22 adv_set = setSelector($('adv_quick_type'), 'cn');
23 $('adv_quick_text').value = getCallnumber();
26 setSelector($('adv_quick_type'), 'barcode');
27 $('adv_quick_text').value = getRid();
32 setSelector($('adv_quick_type'), 'tcn'); */
34 setEnterFunc($('adv_quick_text'), advGenericSearch);
35 hideMe($('adv_marc_search_sidebar'));
36 //hideMe($('adv_global_search'));
40 function advAddMARC() {
41 var newt = $('adv_sdbar_table').cloneNode(true);
43 unHideMe($n(newt, 'crow'));
44 $n(newt, 'advanced.marc.tag').value = "";
45 $n(newt, 'advanced.marc.subfield').value = "";
46 $n(newt, 'advanced.marc.value').value = "";
47 $('adv_marc_search_sidebar').insertBefore(newt, $('adv_marc_submit'));
50 function advMARCRun() {
54 var div = $('adv_marc_search_sidebar');
55 var tbodies = div.getElementsByTagName('tbody');
58 for( var i = 0; i < tbodies.length; i++ ) {
59 var tbody = tbodies[i];
60 var val = advExtractMARC(tbody);
61 if(val) searches.push(val);
64 if(searches.length == 0) return;
68 arg[PARAM_FORM] = 'all';
69 arg[PARAM_RTYPE] = RTYPE_MARC;
70 arg[PARAM_OFFSET] = 0;
71 arg[PARAM_DEPTH] = depthSelGetDepth();
72 arg[PARAM_LOCATION] = depthSelGetNewLoc();
73 arg[PARAM_SEARCHES] = js2JSON(searches);
74 arg[PARAM_ADVTYPE] = ADVTYPE_MARC;
77 goTo(buildOPACLink(arg));
81 /* EXAMPLE => {"term":"0516011901","restrict":[{"tag":"020","subfield":"a"}]} */
82 function advExtractMARC(tbody) {
83 if(!tbody) return null;
84 var term = $n(tbody, 'advanced.marc.value').value;
85 if(!term) return null;
87 var subfield = $n(tbody, 'advanced.marc.subfield').value;
88 if(!subfield) subfield = "_";
90 var tag = $n(tbody, 'advanced.marc.tag').value;
93 return { 'term' : term.toLowerCase(), 'restrict' : [ { 'tag' : tag, 'subfield' : subfield } ] };
96 function advGenericSearch() {
98 var type = getSelectorVal($('adv_quick_type'));
100 var term = $('adv_quick_text').value;
109 arg[PARAM_STYPE] = "";
110 arg[PARAM_TERM] = "";
111 arg[PARAM_RTYPE] = RTYPE_ISBN;
112 arg[PARAM_OFFSET] = 0;
113 arg[PARAM_ADVTERM] = term.toLowerCase();
118 arg[PARAM_STYPE] = "";
119 arg[PARAM_TERM] = "";
120 arg[PARAM_ADVTERM] = term.toLowerCase();
121 arg[PARAM_OFFSET] = 0;
122 arg[PARAM_RTYPE] = RTYPE_ISSN;
127 arg[PARAM_STYPE] = "";
128 arg[PARAM_TERM] = "";
129 arg[PARAM_ADVTERM] = term;
130 arg[PARAM_OFFSET] = 0;
131 arg[PARAM_RTYPE] = RTYPE_TCN;
135 advFindBarcode(term);
141 arg[PARAM_CN] = term;
142 arg[PARAM_DEPTH] = depthSelGetDepth();
143 arg[PARAM_LOCATION] = depthSelGetNewLoc();
148 arg[PARAM_FORM] = 'all'
149 arg[PARAM_RTYPE] = RTYPE_MARC;
150 arg[PARAM_OFFSET] = 0;
151 arg[PARAM_DEPTH] = depthSelGetDepth();
152 arg[PARAM_LOCATION] = depthSelGetNewLoc();
153 arg[PARAM_SEARCHES] = js2JSON([{ 'term' : term.toLowerCase(),
154 'restrict' : [ { 'tag' : '010', 'subfield' : '_' } ] }]);
155 arg[PARAM_ADVTYPE] = ADVTYPE_MARC;
156 arg[PARAM_TERM] = "";
160 default: alert('not done');
163 if(arg.page) goTo(buildOPACLink(arg));
167 function advFindBarcode(barcode) {
168 var req = new Request(FETCH_BIB_ID_BY_BARCODE, barcode);
169 req.callback(advDrawBarcode);
170 req.request.alertEvent = false;
174 function advDrawBarcode(r) {
175 titleid = r.getResultObject();
176 if(checkILSEvent(titleid)) {
177 alertId('myopac.copy.not.found');
183 args[PARAM_RID] = titleid;
184 location.href = buildOPACLink(args);
187 function __setsortsel() {
188 var sel = $('adv_global_sort_by');
189 if (sel.selectedIndex == 0) {
190 $("adv_global_sort_dir").disabled = true;
191 $("adv_global_sort_dir").selectedIndex = 0;
192 } else $("adv_global_sort_dir").disabled = false;