testing commit, please ignore
[kcls-web.git] / opac / skin / nogrey1 / js / advanced.js
1 /* advanced search interface */\r
2 \r
3 attachEvt("common", "run", advInit);\r
4 \r
5 function advInit() { \r
6 \r
7         /* propogate these? */\r
8 \r
9         depthSelInit(); \r
10         setEnterFunc( $n( $('advanced.marc.tbody'), 'advanced.marc.value'), advMARCRun );\r
11         hideMe($('adv_quick_search_sidebar'));\r
12 \r
13         /*\r
14         if(isXUL()) \r
15                 setSelector($('adv_quick_type'), 'tcn'); */\r
16 \r
17         setEnterFunc($('adv_quick_text'), advGenericSearch);\r
18         hideMe($('adv_marc_search_sidebar'));\r
19         //hideMe($('adv_global_search'));\r
20 }\r
21 \r
22 function __setsortsel() {\r
23     var sel = $('adv_global_sort_by');\r
24     if (sel.selectedIndex == 0) {\r
25         $("adv_global_sort_dir").disabled = true;\r
26         $("adv_global_sort_dir").selectedIndex = 0;\r
27     } else $("adv_global_sort_dir").disabled = false;\r
28 }\r
29 dojo.addOnLoad(__setsortsel);\r
30 \r
31 function advAddMARC() {\r
32         var newt = $('adv_sdbar_table').cloneNode(true);\r
33         newt.id = "";\r
34         unHideMe($n(newt, 'crow'));\r
35         $n(newt, 'advanced.marc.tag').value = "";\r
36         $n(newt, 'advanced.marc.subfield').value = "";\r
37         $n(newt, 'advanced.marc.value').value = "";\r
38         $('adv_marc_search_sidebar').insertBefore(newt, $('adv_marc_submit'));\r
39 }\r
40 \r
41 function advMARCRun() {\r
42 \r
43         clearSearchParams();\r
44 \r
45         var div = $('adv_marc_search_sidebar');\r
46         var tbodies = div.getElementsByTagName('tbody');\r
47         var searches = [];\r
48 \r
49         for( var i = 0; i < tbodies.length; i++ ) {\r
50                 var tbody = tbodies[i];\r
51                 var val = advExtractMARC(tbody);\r
52                 if(val) searches.push(val);\r
53         }\r
54 \r
55         if(searches.length == 0) return;\r
56 \r
57         var arg = {};\r
58         arg.page = RRESULT;\r
59         arg[PARAM_FORM] = 'all';\r
60         arg[PARAM_RTYPE] = RTYPE_MARC;\r
61         arg[PARAM_OFFSET] = 0;\r
62         arg[PARAM_DEPTH]        = depthSelGetDepth();\r
63         arg[PARAM_LOCATION]     = depthSelGetNewLoc();\r
64         arg[PARAM_SEARCHES] = js2JSON(searches);\r
65         arg[PARAM_ADVTYPE] = ADVTYPE_MARC;\r
66         arg[PARAM_TERM] = "";\r
67 \r
68         goTo(buildOPACLink(arg));\r
69 }\r
70 \r
71 \r
72 /* EXAMPLE => {"term":"0516011901","restrict":[{"tag":"020","subfield":"a"}]} */\r
73 function advExtractMARC(tbody) {\r
74         if(!tbody) return null;\r
75         var term = $n(tbody, 'advanced.marc.value').value;\r
76         if(!term) return null;\r
77 \r
78         var subfield = $n(tbody, 'advanced.marc.subfield').value;\r
79         if(!subfield) subfield = "_";\r
80 \r
81         var tag = $n(tbody, 'advanced.marc.tag').value;\r
82         if(!tag) return null;\r
83 \r
84         return { 'term' : term.toLowerCase(), 'restrict' :  [ { 'tag' : tag, 'subfield' : subfield } ] };\r
85 }\r
86 \r
87 function advGenericSearch() {\r
88         clearSearchParams();\r
89         var type = getSelectorVal($('adv_quick_type'));\r
90         \r
91         var term = $('adv_quick_text').value;\r
92         if(!term) return;\r
93 \r
94         var arg = {};\r
95 \r
96         switch(type) {\r
97 \r
98                 case 'isbn' :\r
99                         arg.page                                        = RRESULT;\r
100                         arg[PARAM_STYPE]                = "";\r
101                         arg[PARAM_TERM]         = "";\r
102                         arg[PARAM_RTYPE]                = RTYPE_ISBN;\r
103                         arg[PARAM_OFFSET]               = 0;\r
104                         arg[PARAM_ADVTERM]      = term.toLowerCase();\r
105                         break;\r
106                 \r
107                 case 'issn' :\r
108                         arg.page                                        = RRESULT;\r
109                         arg[PARAM_STYPE]                = "";\r
110                         arg[PARAM_TERM]         = "";\r
111                         arg[PARAM_ADVTERM]      = term.toLowerCase();\r
112                         arg[PARAM_OFFSET]               = 0;\r
113                         arg[PARAM_RTYPE]                = RTYPE_ISSN;\r
114                         break;\r
115 \r
116                 case 'tcn' :\r
117                         arg.page                                        = RRESULT;\r
118                         arg[PARAM_STYPE]                = "";\r
119                         arg[PARAM_TERM]         = "";\r
120                         arg[PARAM_ADVTERM]      = term;\r
121                         arg[PARAM_OFFSET]               = 0;\r
122                         arg[PARAM_RTYPE]                = RTYPE_TCN;\r
123                         break;\r
124 \r
125         case 'barcode':\r
126             advFindBarcode(term);\r
127             break;\r
128 \r
129 \r
130                 case 'cn':\r
131                         arg.page                        = CNBROWSE;\r
132                         arg[PARAM_CN]   = term;\r
133                         arg[PARAM_DEPTH]                = depthSelGetDepth();\r
134                         arg[PARAM_LOCATION]     = depthSelGetNewLoc();\r
135                         break;\r
136 \r
137                 case 'lccn':\r
138                         arg.page = RRESULT;\r
139                         arg[PARAM_FORM] = 'all'\r
140                         arg[PARAM_RTYPE] = RTYPE_MARC;\r
141                         arg[PARAM_OFFSET] = 0;\r
142                         arg[PARAM_DEPTH]        = depthSelGetDepth();\r
143                         arg[PARAM_LOCATION]     = depthSelGetNewLoc();\r
144                         arg[PARAM_SEARCHES] = js2JSON([{ 'term' : term.toLowerCase(), \r
145                                         'restrict' :  [ { 'tag' : '010', 'subfield' : '_' } ] }]);\r
146                         arg[PARAM_ADVTYPE] = ADVTYPE_MARC;\r
147                         arg[PARAM_TERM] = "";\r
148                         break;\r
149 \r
150 \r
151                 default: alert('not done');\r
152         }\r
153 \r
154         if(arg.page) goTo(buildOPACLink(arg));\r
155 }\r
156 \r
157 \r
158 function advFindBarcode(barcode) {\r
159     var req = new Request(FETCH_BIB_ID_BY_BARCODE, barcode);\r
160     req.callback(advDrawBarcode);\r
161     req.request.alertEvent = false;\r
162     req.send();\r
163 }\r
164 \r
165 function advDrawBarcode(r) {\r
166     titleid = r.getResultObject();\r
167     if(checkILSEvent(titleid)) {\r
168         alertId('myopac.copy.not.found');\r
169         return;\r
170     }\r
171     if(!titleid) return;\r
172     var args = {};\r
173     args.page = RDETAIL;\r
174     args[PARAM_RID] = titleid;\r
175     location.href = buildOPACLink(args);\r
176 }\r
177 \r
178 \r
179 \r