]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/opac/skin/default/js/advanced.js
no longer lowercasing tcn in the sidebar search
[Evergreen.git] / Open-ILS / web / opac / skin / default / js / advanced.js
1 /* advanced search interface */
2
3 attachEvt("common", "run", advInit);
4
5 function advInit() { 
6
7         /* propogate these? */
8         clearSearchParams();
9
10         depthSelInit(); 
11         setEnterFunc( $n( $('advanced.marc.tbody'), 'advanced.marc.value'), advMARCRun );
12
13         unHideMe($('adv_quick_search_sidebar'));
14
15         /*
16         if(isXUL()) 
17                 setSelector($('adv_quick_type'), 'tcn'); */
18
19         setEnterFunc($('adv_quick_text'), advGenericSearch);
20
21         unHideMe($('adv_marc_search_sidebar'));
22 }
23
24
25 function advAddMARC() {
26         var newt = $('adv_sdbar_table').cloneNode(true);
27         newt.id = "";
28         unHideMe($n(newt, 'crow'));
29         $n(newt, 'advanced.marc.tag').value = "";
30         $n(newt, 'advanced.marc.subfield').value = "";
31         $n(newt, 'advanced.marc.value').value = "";
32         $('adv_marc_search_sidebar').insertBefore(newt, $('adv_marc_submit'));
33 }
34
35 function advMARCRun() {
36
37         var div = $('adv_marc_search_sidebar');
38         var tbodies = div.getElementsByTagName('tbody');
39         var searches = [];
40
41         for( var i = 0; i < tbodies.length; i++ ) {
42                 var tbody = tbodies[i];
43                 var val = advExtractMARC(tbody);
44                 if(val) searches.push(val);
45         }
46
47         if(searches.length == 0) return;
48
49         var arg = {};
50         arg.page = RRESULT;
51         arg[PARAM_FORM] = 'all'
52         arg[PARAM_RTYPE] = RTYPE_MARC;
53         arg[PARAM_OFFSET] = 0;
54         arg[PARAM_DEPTH]        = depthSelGetDepth();
55         arg[PARAM_LOCATION]     = depthSelGetNewLoc();
56         arg[PARAM_SEARCHES] = js2JSON(searches);
57         arg[PARAM_ADVTYPE] = ADVTYPE_MARC;
58         arg[PARAM_TERM] = "";
59
60         goTo(buildOPACLink(arg));
61 }
62
63
64 /* EXAMPLE => {"term":"0516011901","restrict":[{"tag":"020","subfield":"a"}]} */
65 function advExtractMARC(tbody) {
66         if(!tbody) return null;
67         var term = $n(tbody, 'advanced.marc.value').value;
68         if(!term) return null;
69
70         var subfield = $n(tbody, 'advanced.marc.subfield').value;
71         if(!subfield) subfield = "_";
72
73         var tag = $n(tbody, 'advanced.marc.tag').value;
74         if(!tag) return null;
75
76         return { 'term' : term.toLowerCase(), 'restrict' :  [ { 'tag' : tag, 'subfield' : subfield } ] };
77 }
78
79 function advGenericSearch() {
80         var type = getSelectorVal($('adv_quick_type'));
81         
82         var term = $('adv_quick_text').value;
83         if(!term) return;
84
85         var arg = {};
86
87         switch(type) {
88
89                 case 'isbn' :
90                         arg.page                                        = RRESULT;
91                         arg[PARAM_STYPE]                = "";
92                         arg[PARAM_TERM]         = "";
93                         arg[PARAM_RTYPE]                = RTYPE_ISBN;
94                         arg[PARAM_OFFSET]               = 0;
95                         arg[PARAM_ADVTERM]      = term.toLowerCase();
96                         break;
97                 
98                 case 'issn' :
99                         arg.page                                        = RRESULT;
100                         arg[PARAM_STYPE]                = "";
101                         arg[PARAM_TERM]         = "";
102                         arg[PARAM_ADVTERM]      = term.toLowerCase();
103                         arg[PARAM_OFFSET]               = 0;
104                         arg[PARAM_RTYPE]                = RTYPE_ISSN;
105                         break;
106
107                 case 'tcn' :
108                         arg.page                                        = RRESULT;
109                         arg[PARAM_STYPE]                = "";
110                         arg[PARAM_TERM]         = "";
111                         arg[PARAM_ADVTERM]      = term;
112                         arg[PARAM_OFFSET]               = 0;
113                         arg[PARAM_RTYPE]                = RTYPE_TCN;
114                         break;
115
116
117                 case 'cn':
118                         arg.page                        = CNBROWSE;
119                         arg[PARAM_CN]   = term;
120                         arg[PARAM_DEPTH]                = depthSelGetDepth();
121                         arg[PARAM_LOCATION]     = depthSelGetNewLoc();
122                         break;
123
124                 case 'lccn':
125                         arg.page = RRESULT;
126                         arg[PARAM_FORM] = 'all'
127                         arg[PARAM_RTYPE] = RTYPE_MARC;
128                         arg[PARAM_OFFSET] = 0;
129                         arg[PARAM_DEPTH]        = depthSelGetDepth();
130                         arg[PARAM_LOCATION]     = depthSelGetNewLoc();
131                         arg[PARAM_SEARCHES] = js2JSON([{ 'term' : term.toLowerCase(), 
132                                         'restrict' :  [ { 'tag' : '010', 'subfield' : '_' } ] }]);
133                         arg[PARAM_ADVTYPE] = ADVTYPE_MARC;
134                         arg[PARAM_TERM] = "";
135                         break;
136
137
138                 default: alert('not done');
139         }
140
141         if(arg.page) goTo(buildOPACLink(arg));
142 }
143
144