1 load_lib('circ/circ_lib.js');
2 log_debug('loading circ_item_config.js ...');
4 /* -----------------------------------------------------------------------------
5 Configure the duration rules for the various item types and circ modifiers
8 http://www.oclc.org/bibformats/en/fixedfield/
10 ----------------------------------------------------------------------------- */
12 var MARC_ITEM_TYPE_MAP = {
14 a : { /* Language material [Books] */
16 durationRule : '14_days_2_renew',
17 recurringFinesRule : '10_cent_per_day',
18 maxFine : 'overdue_mid'
21 t : { /* Manuscript language material [Books] */
23 durationRule : '14_days_2_renew',
24 recurringFinesRule : '10_cent_per_day',
25 maxFine : 'overdue_mid'
28 g : { /* Projected medium [Videos, etc.] */
30 durationRule : '7_days_0_renew',
31 recurringFinesRule : '10_cent_per_day',
32 maxFine : 'overdue_mid'
35 k : { /* Two-dimensional nonprojectable graphic [Card, charts, etc.] */
37 durationRule : '3_month_0_renew',
38 recurringFinesRule : '10_cent_per_day',
39 maxFine : 'overdue_mid'
42 r : { /* Three-dimensional artifact or naturally occurring object [Models, games, etc.] */
44 durationRule : '14_days_2_renew',
45 recurringFinesRule : '10_cent_per_day',
46 maxFine : 'overdue_mid'
49 o : { /* Kit [Mixture of item types] */
51 durationRule : '14_days_2_renew',
52 recurringFinesRule : '10_cent_per_day',
53 maxFine : 'overdue_mid'
56 p : { /* Mixed materials [Mixture of item types] */
58 durationRule : '14_days_2_renew',
59 recurringFinesRule : '10_cent_per_day',
60 maxFine : 'overdue_mid'
63 e : { /* Cartographic material [Map] */
65 durationRule : '7_days_2_renew',
66 recurringFinesRule : '50_cent_per_day',
67 maxFine : 'overdue_mid'
70 f : { /* Manuscript cartographic material [Map] */
72 durationRule : '3_days_1_renew',
73 recurringFinesRule : '50_cent_per_day',
74 maxFine : 'overdue_mid'
77 c : { /* Notated music [Printed music] */
79 durationRule : '14_days_2_renew',
80 recurringFinesRule : '10_cent_per_day',
81 maxFine : 'overdue_mid'
84 d : { /* Manuscript notated music [Printed music] */
86 durationRule : '14_days_2_renew',
87 recurringFinesRule : '10_cent_per_day',
88 maxFine : 'overdue_mid'
91 i : { /* Nonmusical sound recording [Audiobooks, sound effects, etc.] */
93 durationRule : '14_days_2_renew',
94 recurringFinesRule : '10_cent_per_day',
95 maxFine : 'overdue_mid'
98 j : { /* Musical sound recording [Music] */
100 durationRule : '14_days_2_renew',
101 recurringFinesRule : '10_cent_per_day',
102 maxFine : 'overdue_mid'
105 m : { /* Computer file */
107 durationRule : '14_days_2_renew',
108 recurringFinesRule : '10_cent_per_day',
109 maxFine : 'overdue_mid'
118 durationRule : '3_month_0_renew',
119 recurringFinesRule : '10_cent_per_day',
120 maxFine : 'overdue_mid'
125 durationRule : '7_days_2_renew',
126 recurringFinesRule : '50_cent_per_day',
127 maxFine : 'overdue_mid'
132 durationRule : '14_days_2_renew',
133 recurringFinesRule : '10_cent_per_day',
134 maxFine : 'overdue_mid'
139 durationRule : '7_days_2_renew',
140 recurringFinesRule : '50_cent_per_day',
141 maxFine : 'overdue_mid'
146 durationRule : '7_days_2_renew',
147 recurringFinesRule : '50_cent_per_day',
148 maxFine : 'overdue_mid'
153 durationRule : '7_days_2_renew',
154 recurringFinesRule : '50_cent_per_day',
155 maxFine : 'overdue_mid'
160 durationRule : '14_days_2_renew',
161 recurringFinesRule : '10_cent_per_day',
162 maxFine : 'overdue_mid'
167 durationRule : '14_days_2_renew',
168 recurringFinesRule : '10_cent_per_day',
169 maxFine : 'overdue_mid'
174 durationRule : '7_days_0_renew',
175 recurringFinesRule : '50_cent_per_day',
176 maxFine : 'overdue_mid'
181 durationRule : '3_days_1_renew',
182 recurringFinesRule : '50_cent_per_day',
183 maxFine : 'overdue_mid'
188 durationRule : '3_days_1_renew',
189 recurringFinesRule : '50_cent_per_day',
190 maxFine : 'overdue_mid'
195 durationRule : '14_days_2_renew',
196 recurringFinesRule : '10_cent_per_day',
197 maxFine : 'overdue_mid'
202 durationRule : '14_days_2_renew',
203 recurringFinesRule : '10_cent_per_day',
204 maxFine : 'overdue_mid'
209 durationRule : '14_days_2_renew',
210 recurringFinesRule : '10_cent_per_day',
211 maxFine : 'overdue_mid'
216 durationRule : '3_days_1_renew',
217 recurringFinesRule : '50_cent_per_day',
218 maxFine : 'overdue_mid'
223 durationRule : '14_days_2_renew',
224 recurringFinesRule : '10_cent_per_day',
225 maxFine : 'overdue_mid'
230 durationRule : '14_days_2_renew',
231 recurringFinesRule : '10_cent_per_day',
232 maxFine : 'overdue_mid'
237 durationRule : '14_days_2_renew',
238 recurringFinesRule : '10_cent_per_day',
239 maxFine : 'overdue_mid'
244 durationRule : '7_days_2_renew',
245 recurringFinesRule : '10_cent_per_day',
246 maxFine : 'overdue_mid'
251 durationRule : 'unlimited',
256 durationRule : '7_days_2_renew',
257 recurringFinesRule : '50_cent_per_day',
258 maxFine : 'overdue_mid'
263 durationRule : '7_days_0_renew',
264 recurringFinesRule : '50_cent_per_day',
265 maxFine : 'overdue_mid'
270 /* Set up rules for legacy types */
271 CIRC_MOD_MAP['DEPOSIT'] = CIRC_MOD_MAP['book'];
272 CIRC_MOD_MAP['E-AUDIO'] = CIRC_MOD_MAP['book'];
273 CIRC_MOD_MAP['EQUIP'] = CIRC_MOD_MAP['book'];
274 CIRC_MOD_MAP['FACBESTSLR'] = CIRC_MOD_MAP['book'];
275 CIRC_MOD_MAP['FACNEWBK'] = CIRC_MOD_MAP['book'];
276 CIRC_MOD_MAP['MAG-CIRC'] = CIRC_MOD_MAP['book'];
277 CIRC_MOD_MAP['MAG-NOCIRC'] = CIRC_MOD_MAP['book'];
278 CIRC_MOD_MAP['NEW-AV'] = CIRC_MOD_MAP['book'];
279 CIRC_MOD_MAP['NEW-BOOK'] = CIRC_MOD_MAP['book'];
280 CIRC_MOD_MAP['NEWSPAPER'] = CIRC_MOD_MAP['book'];
281 CIRC_MOD_MAP['NILS-ITEM'] = CIRC_MOD_MAP['book'];
282 CIRC_MOD_MAP['OUTREACH'] = CIRC_MOD_MAP['book'];
283 CIRC_MOD_MAP['PAMPHLET'] = CIRC_MOD_MAP['book'];
284 CIRC_MOD_MAP['PAPERBACK'] = CIRC_MOD_MAP['book'];
285 CIRC_MOD_MAP['REALIA'] = CIRC_MOD_MAP['book'];
286 CIRC_MOD_MAP['RESERVE'] = CIRC_MOD_MAP['book'];
287 CIRC_MOD_MAP['STATE-BOOK'] = {
289 durationRule : '35_days_1_renew',
290 recurringFinesRule : "10_cent_per_day",
291 maxFine : "overdue_mid"
293 CIRC_MOD_MAP['STATE-MFRM'] = {
295 durationRule : '14_days_2_renew',
296 recurringFinesRule : "10_cent_per_day",
297 maxFine : "overdue_mid"
300 /* this will set defaults even if no one asked for them */
301 log_debug("Calling getItemConfig() to force defaults..");
303 log_debug("getItemConfig() set magneticMedia to "+result.magneticMedia);
306 function getItemConfig() {
308 /* -----------------------------------------------------------------------------------
309 If a circ_modifier is defined on the copy and we have config info for the
310 provided circ_modifier, use that config. Otherwise fall back on the MARC item type
311 ----------------------------------------------------------------------------------- */
312 var marcType = getMARCItemType();
313 var circMod = copy.circ_modifier;
314 var itemForm = (marcXMLDoc) ? extractFixedField(marcXMLDoc,'Form') : "";
318 if( circMod && CIRC_MOD_MAP[circMod.toLowerCase()] ) {
319 /* if we have a config for the given circ_modifier, use it */
320 log_debug("a circ_mod config exists for the copy: " + circMod);
321 config = CIRC_MOD_MAP[circMod];
324 /* otherwise, fall back on the MARC item type */
327 log_debug("no circ_mod config found for "
328 +circMod+", falling back to MARC");
330 config = MARC_ITEM_TYPE_MAP[marcType];
333 /* if no config could be found, default to 'book' */
335 log_warn("item_config found no circ_mod OR MARC config, defaulting to 'book'");
336 config = CIRC_MOD_MAP['book'];
339 /* go ahead and set some default result
340 data (which may be overidden) */
341 for( var i in config ) {
342 log_debug("item_config setting result defaults: "+i+" = " +config[i]);
343 result[i] = config[i];