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