1 var records = new Array();
4 var rresultLimit = 200;
6 var rresultIsPaged = false;
8 function rresultUnload() { removeChildren(table); table = null;}
10 attachEvt("common", "unload", rresultUnload);
11 attachEvt("common", "run", rresultDoSearch);
12 attachEvt("result", "idsReceived", rresultCollectRecords);
13 attachEvt("result", "recordDrawn", rresultLaunchDrawn);
15 hideMe($('copyright_block'));
17 function rresultDoSearch() {
19 swapCanvas($('loading_alt'));
21 table = G.ui.result.main_table;
22 hideMe(G.ui.result.row_template);
23 while( table.parentNode.rows.length <= (getDisplayCount() +1) )
24 hideMe(table.appendChild(G.ui.result.row_template.cloneNode(true)));
28 function rresultCachedSearch() {
35 cookieManager.remove(COOKIE_SRIDS);
39 var data = JSON2js(cookieManager.read(COOKIE_SRIDS));
40 //alert('cached count = ' + data.count);
42 if( data && data.ids[getOffset()] != null &&
43 data.ids[resultFinalPageIndex()] != null ) {
44 _rresultHandleIds( data.ids, data.count );
52 function rresultCollectIds() {
55 if(rresultCachedSearch()) return;
60 ids = JSON2js(cookieManager.read(COOKIE_RIDS));
61 _rresultHandleIds( ids, ids.length );
69 rresultDoRecordSearch();
73 rresultDoRecordMultiSearch();
81 rresultCollectMARCIds();
85 rresultCollectISBNIds();
89 rresultCollectTCNIds();
93 rresultCollectISSNIds();
101 var form = rresultGetForm();
102 var args = { format : form, org : getLocation(), depth : rresultGetDepth() };
103 var req = new Request(FETCH_RIDS, getMrid(), args);
104 req.callback( rresultHandleRIds );
107 if( rresultGetDepth() != findOrgDepth(globalOrgTree) ) {
108 var link = $('rresult_show_all_link');
110 unHideMe($('rresult_show_all'));
111 link.appendChild( text(
112 findOrgType(globalOrgTree.ou_type()).opac_label()));
116 if( rresultGetDepth() != getDepth() ) { /* inside a limited display */
117 var link = $('rresult_show_here_link');
119 link.appendChild( text(
120 findOrgType(findOrgUnit(getLocation()).ou_type()).opac_label()));
121 unHideMe($('rresult_show_here'));
128 function rresultExpandSearch() {
130 args[PARAM_RDEPTH] = findOrgDepth(globalOrgTree);
131 goTo(buildOPACLink(args));
134 function rresultContractSearch() {
137 args[PARAM_OFFSET] = 0;
138 goTo(buildOPACLink(args));
142 function rresultGetDepth() {
143 if( getRdepth() != null) return getRdepth();
148 function rresultGetForm() {
151 if(getTform()) /* did the user select a format from the icon list (temporary) */
152 form = (getTform() == 'all') ? null : getTform();
153 else /* did the use select a format from simple search dropdown */
154 form = (getForm() == 'all') ? null : getForm();
156 if(!form) { /* did the user select a format from the advanced search */
157 form = getItemType();
158 var f = getItemForm();
161 form = form.replace(/,/,'');
162 if(f) form += '-' + f;
164 if(f) form = '-' + f;
172 function rresultCollectMARCIds() {
175 args.searches = JSON2js(getSearches());
177 args.org_unit = globalOrgTree.id();
180 rresultIsPaged = true;
181 var req = new Request(FETCH_ADV_MARC_MRIDS, args, getDisplayCount(), getOffset());
182 req.callback(rresultHandleRIds);
183 req.request.noretry = true;
188 function rresultCollectISBNIds() {
189 var req = new Request(FETCH_ADV_ISBN_RIDS, getAdvTerm() );
192 var blob = r.getResultObject();
193 _rresultHandleIds(blob.ids, blob.count);
199 function rresultCollectTCNIds() {
200 var req = new Request(FETCH_ADV_TCN_RIDS, getAdvTerm() );
203 var blob = r.getResultObject();
204 _rresultHandleIds(blob.ids, blob.count);
210 function rresultCollectISSNIds() {
211 var req = new Request(FETCH_ADV_ISSN_RIDS, getAdvTerm() );
214 var blob = r.getResultObject();
215 _rresultHandleIds(blob.ids, blob.count);
221 function rresultHandleList() {
222 var ids = new CGI().param(PARAM_RLIST);
223 if(ids) _rresultHandleIds(ids, ids.length);
226 var rresultTries = 0;
227 function rresultHandleRIds(r) {
228 var res = r.getResultObject();
230 if( res.count == 0 && rresultTries == 0 && ! r.noretry) {
233 var form = rresultGetForm();
234 var args = { format : form, org : getLocation(), depth : findOrgDepth(globalOrgTree) };
235 var req = new Request(FETCH_RIDS, getMrid(), args );
236 req.callback( rresultHandleRIds );
238 unHideMe($('no_formats'));
239 hideMe($('rresult_show_all'));
243 _rresultHandleIds(res.ids, res.count);
247 function _rresultHandleIds(ids, count) {
248 var json = js2JSON({ids:ids,count:count});
250 cookieManager.write(COOKIE_SRIDS, json, '+1d');
253 HITCOUNT = parseInt(count);
254 runEvt('result', 'hitCountReceived');
255 runEvt('result', 'idsReceived', ids);
259 function rresultCollectRecords(ids) {
260 runEvt("result", "preCollectRecords");
262 for( var i = getOffset(); i!= getDisplayCount() + getOffset(); i++ ) {
263 if(ids[i] == null) break;
264 var req = new Request(FETCH_RMODS, parseInt(ids[i]));
265 req.callback(rresultHandleMods);
266 req.request.userdata = x++;
273 function rresultCollectRecords(ids) {
274 runEvt("result", "preCollectRecords");
277 var base = getOffset();
278 if( rresultIsPaged ) base = 0;
280 for( var i = base; i!= getDisplayCount() + base; i++ ) {
281 if(ids[i] == null) break;
282 var req = new Request(FETCH_RMODS, parseInt(ids[i]));
283 req.callback(rresultHandleMods);
284 req.request.userdata = x++;
290 function rresultHandleMods(r) {
291 var rec = r.getResultObject();
292 runEvt('result', 'recordReceived', rec, r.userdata, false);
293 resultCollectCopyCounts(rec, r.userdata, FETCH_R_COPY_COUNTS);
294 if(resultPageIsDone()) {
295 runEvt('result', 'allRecordsReceived', recordsCache);
296 unHideMe($('copyright_block'));
300 function rresultLaunchDrawn(id, node) {
301 runEvt("rresult", "recordDrawn", id, node);
305 function rresultDoRecordSearch() {
306 rresultIsPaged = true;
307 resultCollectSearchIds(true, SEARCH_RS, rresultFilterSearchResults );
310 function rresultDoRecordMultiSearch() {
311 rresultIsPaged = true;
312 resultCollectSearchIds(false, SEARCH_RS, rresultFilterSearchResults );
316 function rresultFilterSearchResults(r) {
317 var result = r.getResultObject();
320 for( var i = 0; i != result.ids.length; i++ )
321 ids.push(result.ids[i][0]);
322 _rresultHandleIds( ids, result.count );