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