1 /* advanced search interface */
3 attachEvt("common", "run", advInit);
11 setEnterFunc($('opac.advanced.quick.isbn'), advISBNRun );
12 setEnterFunc($('opac.advanced.quick.issn'), advISSNRun );
13 setEnterFunc($('opac.advanced.quick.cn'), advCNRun );
14 setEnterFunc( $n( $('advanced.marc.tbody'), 'advanced.marc.value'), advMARCRun );
17 function advISBNRun() {
18 var isbn = $('opac.advanced.quick.isbn').value;
22 arg[PARAM_STYPE] = "";
24 arg[PARAM_RTYPE] = RTYPE_ISBN;
25 arg[PARAM_OFFSET] = 0;
26 arg[PARAM_ADVTERM] = isbn;
27 goTo(buildOPACLink(arg));
30 function advISSNRun() {
31 var issn = $('opac.advanced.quick.issn').value;
35 arg[PARAM_STYPE] = "";
37 arg[PARAM_ADVTERM] = issn;
38 arg[PARAM_OFFSET] = 0;
39 arg[PARAM_RTYPE] = RTYPE_ISSN;
40 goTo(buildOPACLink(arg));
44 var cn = $('opac.advanced.quick.cn').value;
49 goTo(buildOPACLink(arg));
53 function advAddMARC() {
54 var newrow = $('advanced.marc.template').cloneNode(true);
55 $n(newrow, 'advanced.marc.tag').value = "";
56 $n(newrow, 'advanced.marc.subfield').value = "";
57 $n(newrow, 'advanced.marc.value').value = "";
58 $('advanced.marc.tbody').insertBefore(newrow, $('advanced.marc.submit.row'));
61 function advMARCRun() {
63 var t = $('advanced.marc.tbody');
66 var children = t.getElementsByTagName('tr');
67 for( var c in children ) {
68 var child = children[c];
69 if(!(child && child.innerHTML)) continue;
70 var val = advExtractMARC(child);
71 if(val) searches.push(val);
74 if(searches.length == 0) return;
78 arg[PARAM_FORM] = 'all'
79 arg[PARAM_RTYPE] = RTYPE_MARC;
80 arg[PARAM_OFFSET] = 0;
81 arg[PARAM_DEPTH] = depthSelGetDepth();
82 arg[PARAM_LOCATION] = depthSelGetNewLoc();
83 arg[PARAM_SEARCHES] = js2JSON(searches);
84 arg[PARAM_ADVTYPE] = ADVTYPE_MARC;
87 goTo(buildOPACLink(arg));
91 /* EXAMPLE => {"term":"0516011901","restrict":[{"tag":"020","subfield":"a"}]} */
92 function advExtractMARC(row) {
93 if(!row || row.id == 'advanced.marc.submit.row') return null;
94 var term = $n(row, 'advanced.marc.value').value;
95 if(!term) return null;
97 var subfield = $n(row, 'advanced.marc.subfield').value;
98 if(!subfield) subfield = "_";
100 var tag = $n(row, 'advanced.marc.tag').value;
101 if(!tag) return null;
103 return { 'term' : term, 'restrict' : [ { 'tag' : tag, 'subfield' : subfield } ] };