1 load_lib('circ/circ_lib.js');
2 log_debug('loading circ_item_config.js ...');
14 008 Book with diskette
16 010 Book with audio tape
19 /* -----------------------------------------------------------------------------
20 Configure the duration rules for the various item types and circ modifiers
22 MARC Fixed Field info:
23 http://www.oclc.org/bibformats/en/fixedfield/
25 ----------------------------------------------------------------------------- */
27 var MARC_ITEM_TYPE_MAP = {
29 a : { /* Language material [Books] */
32 durationRule : '14_days_2_renew',
33 recurringFinesRule : '10_cent_per_day',
34 maxFine : 'overdue_mid'
37 t : { /* Manuscript language material [Books] */
40 durationRule : '14_days_2_renew',
41 recurringFinesRule : '10_cent_per_day',
42 maxFine : 'overdue_mid'
45 g : { /* Projected medium [Videos, etc.] */
48 durationRule : '7_days_0_renew',
49 recurringFinesRule : '10_cent_per_day',
50 maxFine : 'overdue_mid'
53 k : { /* Two-dimensional nonprojectable graphic [Card, charts, etc.] */
56 durationRule : '3_month_0_renew',
57 recurringFinesRule : '10_cent_per_day',
58 maxFine : 'overdue_mid'
61 r : { /* Three-dimensional artifact or naturally occurring object [Models, games, etc.] */
64 durationRule : '14_days_2_renew',
65 recurringFinesRule : '10_cent_per_day',
66 maxFine : 'overdue_mid'
69 o : { /* Kit [Mixture of item types] */
72 durationRule : '14_days_2_renew',
73 recurringFinesRule : '10_cent_per_day',
74 maxFine : 'overdue_mid'
77 p : { /* Mixed materials [Mixture of item types] */
80 durationRule : '14_days_2_renew',
81 recurringFinesRule : '10_cent_per_day',
82 maxFine : 'overdue_mid'
85 e : { /* Cartographic material [Map] */
88 durationRule : '7_days_2_renew',
89 recurringFinesRule : '50_cent_per_day',
90 maxFine : 'overdue_mid'
93 f : { /* Manuscript cartographic material [Map] */
96 durationRule : '3_days_1_renew',
97 recurringFinesRule : '50_cent_per_day',
98 maxFine : 'overdue_mid'
101 c : { /* Notated music [Printed music] */
102 SIPMediaType : '001',
104 durationRule : '14_days_2_renew',
105 recurringFinesRule : '10_cent_per_day',
106 maxFine : 'overdue_mid'
109 d : { /* Manuscript notated music [Printed music] */
110 SIPMediaType : '001',
112 durationRule : '14_days_2_renew',
113 recurringFinesRule : '10_cent_per_day',
114 maxFine : 'overdue_mid'
117 i : { /* Nonmusical sound recording [Audiobooks, sound effects, etc.] */
118 SIPMediaType : '001',
120 durationRule : '14_days_2_renew',
121 recurringFinesRule : '10_cent_per_day',
122 maxFine : 'overdue_mid'
125 j : { /* Musical sound recording [Music] */
126 SIPMediaType : '001',
128 durationRule : '14_days_2_renew',
129 recurringFinesRule : '10_cent_per_day',
130 maxFine : 'overdue_mid'
133 m : { /* Computer file */
134 SIPMediaType : '001',
136 durationRule : '14_days_2_renew',
137 recurringFinesRule : '10_cent_per_day',
138 maxFine : 'overdue_mid'
146 SIPMediaType : '000',
148 durationRule : '3_month_0_renew',
149 recurringFinesRule : '10_cent_per_day',
150 maxFine : 'overdue_mid'
154 SIPMediaType : '000',
156 durationRule : '7_days_2_renew',
157 recurringFinesRule : '50_cent_per_day',
158 maxFine : 'overdue_mid'
162 SIPMediaType : '004',
164 durationRule : '14_days_2_renew',
165 recurringFinesRule : '10_cent_per_day',
166 maxFine : 'overdue_mid'
170 SIPMediaType : '005',
172 durationRule : '7_days_2_renew',
173 recurringFinesRule : '50_cent_per_day',
174 maxFine : 'overdue_mid'
178 SIPMediaType : '001',
180 durationRule : '7_days_2_renew',
181 recurringFinesRule : '50_cent_per_day',
182 maxFine : 'overdue_mid'
186 SIPMediaType : '001',
188 durationRule : '7_days_2_renew',
189 recurringFinesRule : '50_cent_per_day',
190 maxFine : 'overdue_mid'
194 SIPMediaType : '001',
196 durationRule : '14_days_2_renew',
197 recurringFinesRule : '10_cent_per_day',
198 maxFine : 'overdue_mid'
202 SIPMediaType : '006',
204 durationRule : '14_days_2_renew',
205 recurringFinesRule : '10_cent_per_day',
206 maxFine : 'overdue_mid'
210 SIPMediaType : '006',
212 durationRule : '7_days_0_renew',
213 recurringFinesRule : '50_cent_per_day',
214 maxFine : 'overdue_mid'
218 SIPMediaType : '006',
220 durationRule : '14_days_2_renew',
221 recurringFinesRule : '10_cent_per_day',
222 maxFine : 'overdue_mid'
227 SIPMediaType : '001',
229 durationRule : '3_days_1_renew',
230 recurringFinesRule : '50_cent_per_day',
231 maxFine : 'overdue_mid'
235 SIPMediaType : '000',
237 durationRule : '3_days_1_renew',
238 recurringFinesRule : '50_cent_per_day',
239 maxFine : 'overdue_mid'
243 SIPMediaType : '000',
245 durationRule : '14_days_2_renew',
246 recurringFinesRule : '10_cent_per_day',
247 maxFine : 'overdue_mid'
251 SIPMediaType : '000',
253 durationRule : '14_days_2_renew',
254 recurringFinesRule : '10_cent_per_day',
255 maxFine : 'overdue_mid'
259 SIPMediaType : '002',
261 durationRule : '14_days_2_renew',
262 recurringFinesRule : '10_cent_per_day',
263 maxFine : 'overdue_mid'
267 SIPMediaType : '000',
269 durationRule : '3_days_1_renew',
270 recurringFinesRule : '50_cent_per_day',
271 maxFine : 'overdue_mid'
275 SIPMediaType : '000',
277 durationRule : '14_days_2_renew',
278 recurringFinesRule : '10_cent_per_day',
279 maxFine : 'overdue_mid'
283 SIPMediaType : '004',
285 durationRule : '14_days_2_renew',
286 recurringFinesRule : '10_cent_per_day',
287 maxFine : 'overdue_mid'
291 SIPMediaType : '000',
293 durationRule : '14_days_2_renew',
294 recurringFinesRule : '10_cent_per_day',
295 maxFine : 'overdue_mid'
299 SIPMediaType : '006',
301 durationRule : '7_days_2_renew',
302 recurringFinesRule : '10_cent_per_day',
303 maxFine : 'overdue_mid'
307 SIPMediaType : '006',
309 durationRule : 'unlimited',
313 SIPMediaType : '000',
315 durationRule : '7_days_2_renew',
316 recurringFinesRule : '50_cent_per_day',
317 maxFine : 'overdue_mid'
321 SIPMediaType : '005',
323 durationRule : '7_days_0_renew',
324 recurringFinesRule : '50_cent_per_day',
325 maxFine : 'overdue_mid'
329 SIPMediaType : '005',
331 durationRule : '14_days_2_renew',
332 recurringFinesRule : '50_cent_per_day',
333 maxFine : 'overdue_mid'
338 /* Set up rules for legacy types */
339 CIRC_MOD_MAP['DEPOSIT'] = CIRC_MOD_MAP['book'];
340 CIRC_MOD_MAP['E-AUDIO'] = CIRC_MOD_MAP['book'];
341 CIRC_MOD_MAP['EQUIP'] = CIRC_MOD_MAP['book'];
342 CIRC_MOD_MAP['FACBESTSLR'] = CIRC_MOD_MAP['book'];
343 CIRC_MOD_MAP['FACNEWBK'] = CIRC_MOD_MAP['book'];
344 CIRC_MOD_MAP['MAG-CIRC'] = CIRC_MOD_MAP['book'];
345 CIRC_MOD_MAP['MAG-NOCIRC'] = CIRC_MOD_MAP['book'];
346 CIRC_MOD_MAP['NEW-AV'] = CIRC_MOD_MAP['book'];
347 CIRC_MOD_MAP['NEW-BOOK'] = CIRC_MOD_MAP['book'];
348 CIRC_MOD_MAP['NEWSPAPER'] = CIRC_MOD_MAP['book'];
349 CIRC_MOD_MAP['NILS-ITEM'] = CIRC_MOD_MAP['book'];
350 CIRC_MOD_MAP['OUTREACH'] = CIRC_MOD_MAP['book'];
351 CIRC_MOD_MAP['PAMPHLET'] = CIRC_MOD_MAP['book'];
352 CIRC_MOD_MAP['PAPERBACK'] = CIRC_MOD_MAP['book'];
353 CIRC_MOD_MAP['REALIA'] = CIRC_MOD_MAP['book'];
354 CIRC_MOD_MAP['RESERVE'] = CIRC_MOD_MAP['book'];
355 CIRC_MOD_MAP['STATE-BOOK'] = {
356 SIPMediaType : '001',
358 durationRule : '35_days_1_renew',
359 recurringFinesRule : "10_cent_per_day",
360 maxFine : "overdue_mid"
362 CIRC_MOD_MAP['STATE-MFRM'] = {
363 SIPMediaType : '001',
365 durationRule : '14_days_2_renew',
366 recurringFinesRule : "10_cent_per_day",
367 maxFine : "overdue_mid"
370 /* this will set defaults even if no one asked for them */
371 log_debug("Calling getItemConfig() to force defaults..");
373 log_debug("getItemConfig() set magneticMedia to "+result.magneticMedia);
376 function getItemConfig() {
378 /* -----------------------------------------------------------------------------------
379 If a circ_modifier is defined on the copy and we have config info for the
380 provided circ_modifier, use that config. Otherwise fall back on the MARC item type
381 ----------------------------------------------------------------------------------- */
382 var marcType = getMARCItemType();
383 var circMod = (copy.circ_modifier) ? copy.circ_modifier.toLowerCase() : '';
384 var itemForm = (marcXMLDoc) ? extractFixedField(marcXMLDoc,'Form') : "";
388 if( circMod && CIRC_MOD_MAP[circMod] ) {
389 /* if we have a config for the given circ_modifier, use it */
390 log_debug("a circ_mod config exists for the copy: " + circMod);
391 config = CIRC_MOD_MAP[circMod];
394 /* otherwise, fall back on the MARC item type */
397 log_debug("no circ_mod config found for "
398 +circMod+", falling back to MARC");
400 config = MARC_ITEM_TYPE_MAP[marcType];
403 /* if no config could be found, default to 'book' */
405 log_warn("item_config found no circ_mod OR MARC config, defaulting to 'book'");
406 config = CIRC_MOD_MAP['book'];
409 /* go ahead and set some default result
410 data (which may be overidden) */
411 for( var i in config ) {
412 log_debug("item_config setting result defaults: "+i+" = " +config[i]);
413 result[i] = config[i];