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 if( table && table.parentNode ) {
24 while( table.parentNode.rows.length <= (getDisplayCount() +1) )
25 hideMe(table.appendChild(G.ui.result.row_template.cloneNode(true)));
30 function rresultCachedSearch() {
37 cookieManager.remove(COOKIE_SRIDS);
41 var data = JSON2js(cookieManager.read(COOKIE_SRIDS));
42 //alert('cached count = ' + data.count);
44 if( data && data.ids[getOffset()] != null &&
45 data.ids[resultFinalPageIndex()] != null ) {
46 _rresultHandleIds( data.ids, data.count );
54 function rresultCollectIds() {
57 if(rresultCachedSearch()) return;
62 ids = JSON2js(cookieManager.read(COOKIE_RIDS));
63 _rresultHandleIds( ids, ids.length );
71 rresultDoRecordSearch();
75 rresultDoRecordMultiSearch();
83 rresultCollectMARCIds();
87 rresultCollectISBNIds();
91 rresultCollectTCNIds();
95 rresultCollectISSNIds();
103 var form = rresultGetForm();
104 var args = { format : form, org : getLocation(), depth : rresultGetDepth() };
105 var req = new Request(FETCH_RIDS, getMrid(), args);
106 req.callback( rresultHandleRIds );
109 if( rresultGetDepth() != findOrgDepth(globalOrgTree) ) {
110 var link = $('rresult_show_all_link');
112 unHideMe($('rresult_show_all'));
113 link.appendChild( text(
114 findOrgType(globalOrgTree.ou_type()).opac_label()));
118 if( rresultGetDepth() != getDepth() ) { /* inside a limited display */
119 var link = $('rresult_show_here_link');
121 link.appendChild( text(
122 findOrgType(findOrgUnit(getLocation()).ou_type()).opac_label()));
123 unHideMe($('rresult_show_here'));
130 function rresultExpandSearch() {
132 args[PARAM_RDEPTH] = findOrgDepth(globalOrgTree);
133 goTo(buildOPACLink(args));
136 function rresultContractSearch() {
139 args[PARAM_OFFSET] = 0;
140 goTo(buildOPACLink(args));
144 function rresultGetDepth() {
145 if( getRdepth() != null) return getRdepth();
150 function rresultGetForm() {
153 if(getTform()) /* did the user select a format from the icon list (temporary) */
154 form = (getTform() == 'all') ? null : getTform();
155 else /* did the use select a format from simple search dropdown */
156 form = (getForm() == 'all') ? null : getForm();
158 if(!form) { /* did the user select a format from the advanced search */
159 form = getItemType();
160 var f = getItemForm();
163 form = form.replace(/,/,'');
164 if(f) form += '-' + f;
166 if(f) form = '-' + f;
174 function rresultCollectMARCIds() {
177 args.searches = JSON2js(getSearches());
179 args.org_unit = globalOrgTree.id();
182 rresultIsPaged = true;
183 var req = new Request(FETCH_ADV_MARC_MRIDS, args, getDisplayCount(), getOffset());
184 req.callback(rresultHandleRIds);
185 req.request.noretry = true;
190 function rresultCollectISBNIds() {
191 var req = new Request(FETCH_ADV_ISBN_RIDS, getAdvTerm() );
194 var blob = r.getResultObject();
195 _rresultHandleIds(blob.ids, blob.count);
201 function rresultCollectTCNIds() {
202 var req = new Request(FETCH_ADV_TCN_RIDS, getAdvTerm() );
205 var blob = r.getResultObject();
206 _rresultHandleIds(blob.ids, blob.count);
212 function rresultCollectISSNIds() {
213 var req = new Request(FETCH_ADV_ISSN_RIDS, getAdvTerm() );
216 var blob = r.getResultObject();
217 _rresultHandleIds(blob.ids, blob.count);
223 function rresultHandleList() {
224 var ids = new CGI().param(PARAM_RLIST);
225 if(ids) _rresultHandleIds(ids, ids.length);
228 var rresultTries = 0;
229 function rresultHandleRIds(r) {
230 var res = r.getResultObject();
232 if( res.count == 0 && rresultTries == 0 && ! r.noretry) {
235 var form = rresultGetForm();
236 var args = { format : form, org : getLocation(), depth : findOrgDepth(globalOrgTree) };
237 var req = new Request(FETCH_RIDS, getMrid(), args );
238 req.callback( rresultHandleRIds );
240 unHideMe($('no_formats'));
241 hideMe($('rresult_show_all'));
245 _rresultHandleIds(res.ids, res.count);
249 function _rresultHandleIds(ids, count) {
250 var json = js2JSON({ids:ids,count:count});
252 cookieManager.write(COOKIE_SRIDS, json, '+1d');
255 HITCOUNT = parseInt(count);
256 runEvt('result', 'hitCountReceived');
257 runEvt('result', 'idsReceived', ids);
261 function rresultCollectRecords(ids) {
262 runEvt("result", "preCollectRecords");
264 for( var i = getOffset(); i!= getDisplayCount() + getOffset(); i++ ) {
265 if(ids[i] == null) break;
266 var req = new Request(FETCH_RMODS, parseInt(ids[i]));
267 req.callback(rresultHandleMods);
268 req.request.userdata = x++;
275 function rresultCollectRecords(ids) {
276 runEvt("result", "preCollectRecords");
279 var base = getOffset();
280 if( rresultIsPaged ) base = 0;
282 for( var i = base; i!= getDisplayCount() + base; i++ ) {
283 if(ids[i] == null) break;
284 var req = new Request(FETCH_RMODS, parseInt(ids[i]));
285 req.callback(rresultHandleMods);
286 req.request.userdata = x++;
292 function rresultHandleMods(r) {
293 var rec = r.getResultObject();
294 runEvt('result', 'recordReceived', rec, r.userdata, false);
295 resultCollectCopyCounts(rec, r.userdata, FETCH_R_COPY_COUNTS);
296 if(resultPageIsDone()) {
297 runEvt('result', 'allRecordsReceived', recordsCache);
298 unHideMe($('copyright_block'));
302 function rresultLaunchDrawn(id, node) {
303 runEvt("rresult", "recordDrawn", id, node);
307 function rresultDoRecordSearch() {
308 rresultIsPaged = true;
309 resultCollectSearchIds(true, SEARCH_RS, rresultFilterSearchResults );
312 function rresultDoRecordMultiSearch() {
313 rresultIsPaged = true;
314 resultCollectSearchIds(false, SEARCH_RS, rresultFilterSearchResults );
318 function rresultFilterSearchResults(r) {
319 var result = r.getResultObject();
322 for( var i = 0; i != result.ids.length; i++ )
323 ids.push(result.ids[i][0]);
324 _rresultHandleIds( ids, result.count );