[open-ils-commits] SPAM: r8696 - in trunk/Open-ILS: web/opac/locale/en-US xul/staff_client/server/circ xul/staff_client/server/locale/en-US

svn at svn.open-ils.org svn at svn.open-ils.org
Thu Feb 7 18:08:07 EST 2008


Author: dbs
Date: 2008-02-07 17:39:23 -0500 (Thu, 07 Feb 2008)
New Revision: 8696

Modified:
   trunk/Open-ILS/web/opac/locale/en-US/lang.dtd
   trunk/Open-ILS/xul/staff_client/server/circ/checkin.xul
   trunk/Open-ILS/xul/staff_client/server/circ/copy_status.js
   trunk/Open-ILS/xul/staff_client/server/circ/copy_status.xul
   trunk/Open-ILS/xul/staff_client/server/circ/hold_capture.js
   trunk/Open-ILS/xul/staff_client/server/circ/hold_capture.xul
   trunk/Open-ILS/xul/staff_client/server/circ/hold_capture_overlay.xul
   trunk/Open-ILS/xul/staff_client/server/circ/in_house_use.js
   trunk/Open-ILS/xul/staff_client/server/circ/in_house_use.xul
   trunk/Open-ILS/xul/staff_client/server/circ/pre_cat_fields.xul
   trunk/Open-ILS/xul/staff_client/server/circ/print_list_template_editor.js
   trunk/Open-ILS/xul/staff_client/server/circ/print_list_template_editor.xul
   trunk/Open-ILS/xul/staff_client/server/locale/en-US/circ.properties
Log:
Mostly finish off server/circ i18n work


Modified: trunk/Open-ILS/web/opac/locale/en-US/lang.dtd
===================================================================
--- trunk/Open-ILS/web/opac/locale/en-US/lang.dtd	2008-02-07 22:06:26 UTC (rev 8695)
+++ trunk/Open-ILS/web/opac/locale/en-US/lang.dtd	2008-02-07 22:39:23 UTC (rev 8696)
@@ -1604,3 +1604,45 @@
 <!ENTITY staff.chrome.menu_frame_overlay.tab8.accesskey "8">
 <!ENTITY staff.chrome.menu_frame_overlay.tab9.label "Tab 9">
 <!ENTITY staff.chrome.menu_frame_overlay.tab9.accesskey "9">
+<!ENTITY staff.circ.in_house_use.main.label "Record In-House Use">
+<!ENTITY staff.circ.in_house_use.cmgb1.caption "In-House Use">
+<!ENTITY staff.circ.in_house_use.multiplier_label.value "# of uses:">
+<!ENTITY staff.circ.in_house_use.multiplier_label.accesskey "u">
+<!ENTITY staff.circ.in_house_use.submit.label "Submit">
+<!ENTITY staff.circ.in_house_use.submit.accesskey "S">
+<!ENTITY staff.circ.in_house_use.print.label "Print List">
+<!ENTITY staff.circ.in_house_use.export.label "Export">
+<!ENTITY staff.circ.in_house_use.trim_list.label "Trim List (20 rows)">
+<!ENTITY staff.circ.in_house_use.strict_barcode.label "Strict Barcode">
+<!ENTITY staff.circ.in_house_use.sel_clip.label "Copy to Clipboard">
+<!ENTITY staff.circ.in_house_use.save_cols_btn.label "Save Columns">
+<!ENTITY staff.circ.pre_cat.window.title "Pre-Catalog Fields">
+<!ENTITY staff.circ.pre_cat.caption.label "Pre-Catalog Field Entry">
+<!ENTITY staff.circ.pre_cat.dummy_title.value "Title">
+<!ENTITY staff.circ.pre_cat.dummy_author.value "Author">
+<!ENTITY staff.circ.pre_cat.cancel.label "Cancel">
+<!ENTITY staff.circ.pre_cat.cancel.accesskey "C">
+<!ENTITY staff.circ.pre_cat.checkout.label "Checkout">
+<!ENTITY staff.circ.pre_cat.checkout.accesskey "o">
+<!ENTITY staff.circ.print_list.main.label "Templates">
+<!ENTITY staff.circ.print_list.top_ui.label "ID">
+<!ENTITY staff.circ.print_list.top_ui.name.label "Name">
+<!ENTITY staff.circ.print_list.top_ui.name.accesskey "N">
+<!ENTITY staff.circ.print_list.top_ui.type.label "Type">
+<!ENTITY staff.circ.print_list.top_ui.actions.label "Actions">
+<!ENTITY staff.circ.print_list.top_ui.preview.label "Preview">
+<!ENTITY staff.circ.print_list.top_ui.preview.accesskey "P">
+<!ENTITY staff.circ.print_list.top_ui.macros.label "Macros">
+<!ENTITY staff.circ.print_list.top_ui.macros.accesskey "M">
+<!ENTITY staff.circ.print_list.top_ui.default.label "Default">
+<!ENTITY staff.circ.print_list.top_ui.default.accesskey "D">
+<!ENTITY staff.circ.print_list.top_ui.save.label "Save Locally">
+<!ENTITY staff.circ.print_list.top_ui.save.accesskey "S">
+<!ENTITY staff.circ.print_list.top_ui.description "Be sure to 'Save Locally' before export">
+<!ENTITY staff.circ.print_list.top_ui.description.export.label "Export">
+<!ENTITY staff.circ.print_list.top_ui.description.export.accesskey "E">
+<!ENTITY staff.circ.print_list.top_ui.description.import.label "Import">
+<!ENTITY staff.circ.print_list.top_ui.description.import.accesskey "I">
+<!ENTITY staff.circ.print_list.header.label "Header">
+<!ENTITY staff.circ.print_list.line_item.label "Line Item">
+<!ENTITY staff.circ.print_list.footer.label "Footer">

Modified: trunk/Open-ILS/xul/staff_client/server/circ/checkin.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/circ/checkin.xul	2008-02-07 22:06:26 UTC (rev 8695)
+++ trunk/Open-ILS/xul/staff_client/server/circ/checkin.xul	2008-02-07 22:39:23 UTC (rev 8696)
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!-- Application: Evergreen Staff Client -->
 <!-- Screen: Patron Display -->
 

Modified: trunk/Open-ILS/xul/staff_client/server/circ/copy_status.js
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/circ/copy_status.js	2008-02-07 22:06:26 UTC (rev 8695)
+++ trunk/Open-ILS/xul/staff_client/server/circ/copy_status.js	2008-02-07 22:39:23 UTC (rev 8696)
@@ -1,7 +1,7 @@
 dump('entering circ.copy_status.js\n');
 // vim:noet:sw=4:ts=4:
 
-if (typeof circ == 'undefined') circ = {};
+if (typeof circ == 'undefined') { circ = {}; }
 circ.copy_status = function (params) {
 
 	JSAN.use('util.error'); this.error = new util.error();
@@ -10,7 +10,7 @@
 	JSAN.use('util.date');
 	JSAN.use('OpenILS.data'); this.data = new OpenILS.data(); this.data.init({'via':'stash'});
 	JSAN.use('util.sound'); this.sound = new util.sound();
-}
+};
 
 circ.copy_status.prototype = {
 	'selection_list' : [],
@@ -29,12 +29,12 @@
 				'call_number' : { 'hidden' : false },
 				'status' : { 'hidden' : false },
 				'alert_message' : { 'hidden' : false },
-				'due_date' : { 'hidden' : false },
+				'due_date' : { 'hidden' : false }
 			},
 			{
 				'except_these' : [
-					'checkin_time', 'checkin_time_full', 'route_to', 'message', 'uses', 'xact_finish',
-				],
+					'checkin_time', 'checkin_time_full', 'route_to', 'message', 'uses', 'xact_finish'
+				]
 			}
 		);
 
@@ -102,7 +102,7 @@
 					} catch(E) {
 						alert('FIXME: ' + E);
 					}
-				},
+				}
 			}
 		);
 		
@@ -293,7 +293,7 @@
 							JSAN.use('util.file');
 							var f = new util.file('');
                             var content = f.import_file( { 'title' : document.getElementById('circStrings').getString('staff.circ.copy_status.upload_file.title'), 'not_json' : true } );
-                            if (!content) return;
+                            if (!content) { return; }
 							var barcodes = content.split(/\s+/);
                 			if (barcodes.length > 0) {
 			                    JSAN.use('util.exec'); var exec = new util.exec();
@@ -303,7 +303,7 @@
 			                            function(b){
 			                                return function() {
 			                                    obj.copy_status(b);
-			                                }
+			                                };
 			                            }(barcodes[i])
 			                        );
 			                    }
@@ -353,7 +353,7 @@
 										} catch(E) {
 											obj.error.standard_unexpected_error_alert('export',E); 
 										}
-									}
+									};
 								obj.list.full_retrieve();
 							} catch(E) {
 								obj.error.standard_unexpected_error_alert('export',E); 
@@ -368,21 +368,27 @@
 
 								JSAN.use('util.functional');
 								var list = util.functional.map_list( obj.selection_list, function(o) { return o.acn_id; } );
-								if (list.length == 0) return;
+								if (list.length == 0) { return; }
 
 								var copy_shortcut = {}; var map_acn = {};
 
 								for (var i = 0; i < list.length; i++) {
 									var volume_id = list[i];
-									if (volume_id == -1) continue; /* ignore magic pre-cat volume */
+									if (volume_id == -1) { 
+										continue; /* ignore magic pre-cat volume */
+									}
 									if (! map_acn[volume_id]) {
 										map_acn[ volume_id ] = obj.network.simple_request('FM_ACN_RETRIEVE',[ volume_id ]);
 									}
 									var record_id = map_acn[ volume_id ].record();
 									var ou_id = map_acn[ volume_id ].owning_lib();
 									var label = map_acn[ volume_id ].label();
-									if (!copy_shortcut[record_id]) copy_shortcut[record_id] = {};
-									if (!copy_shortcut[record_id][ou_id]) copy_shortcut[record_id][ou_id] = {};
+									if (!copy_shortcut[record_id]) {
+										copy_shortcut[record_id] = {};
+									}
+									if (!copy_shortcut[record_id][ou_id]) {
+										copy_shortcut[record_id][ou_id] = {};
+									}
 									copy_shortcut[record_id][ou_id][ label ] = volume_id;
 
 								}
@@ -408,7 +414,9 @@
 										obj.error.sdump('D_ERROR','batch permission check: ' + E);
 									}
 	
-									if (edit==0) return; // no read-only view for this interface
+									if (edit==0) { 
+										return; // no read-only view for this interface
+									}
 	
 									var title = document.getElementById('circStrings').getFormattedString('staff.circ.copy_status.add_items.title', [r]);
 	
@@ -451,7 +459,9 @@
                                     copies[i].isdeleted(1);
                                 }
 
-								if (! window.confirm(document.getElementById('circStrings').getFormattedString('staff.circ.copy_status.del_items.confirm', [util.functional.map_list( copies, function(o) { return o.barcode(); }).join(", "))]) ) return;
+								if (! window.confirm(document.getElementById('circStrings').getFormattedString('staff.circ.copy_status.del_items.confirm', [util.functional.map_list( copies, function(o) { return o.barcode(); }).join(", ")]))) {
+									return;
+								}
 
                                 var robj = obj.network.simple_request('FM_ACP_FLESHED_BATCH_UPDATE',[ ses(), copies, true]);
 								var robj = obj.network.simple_request(
@@ -462,7 +472,7 @@
 										'title' : document.getElementById('circStrings').getString('staff.circ.copy_status.del_items.title'),
 										'overridable_events' : [
 											1208 /* TITLE_LAST_COPY */,
-											1227 /* COPY_DELETE_WARNING */,
+											1227 /* COPY_DELETE_WARNING */
 										]
 									}
 								);
@@ -503,7 +513,7 @@
 										'copy_ids' : list, 
 										'docid' : volume.record(),
 										'volume_label' : volume.label(),
-										'owning_lib' : volume.owning_lib(),
+										'owning_lib' : volume.owning_lib()
 									} );
 
 								} catch(E) {
@@ -518,13 +528,15 @@
 							try {
 								JSAN.use('util.functional');
 								var list = util.functional.map_list( obj.selection_list, function(o) { return o.acn_id; } );
-								if (list.length == 0) return;
+								if (list.length == 0) { return; }
 
 								var aou_hash = {}; var map_acn = {};
 
 								for (var i = 0; i < list.length; i++) {
 									var volume_id = list[i];
-									if (volume_id == -1) continue; /* ignore magic pre-cat volume */
+									if (volume_id == -1) {
+										continue; /* ignore magic pre-cat volume */
+									}
 									if (! map_acn[volume_id]) {
 										map_acn[ volume_id ] = obj.network.simple_request('FM_ACN_RETRIEVE',[ volume_id ]);
 									}
@@ -587,25 +599,32 @@
 							try {
 								JSAN.use('util.functional');
 								var list = util.functional.map_list( obj.selection_list, function(o) { return o.acn_id; } );
-								if (list.length == 0) return;
+								if (list.length == 0) { return; }
 
 								var volume_hash = {}; var map_acn = {};
 
 								for (var i = 0; i < list.length; i++) {
 									var volume_id = list[i];
-									if (volume_id == -1) continue; /* ignore magic pre-cat volume */
+									if (volume_id == -1) {
+										continue; /* ignore magic pre-cat volume */
+									}
 									if (! map_acn[volume_id]) {
 										map_acn[ volume_id ] = obj.network.simple_request('FM_ACN_RETRIEVE',[ volume_id ]);
 										map_acn[ volume_id ].copies( [] );
 									}
 									var record_id = map_acn[ volume_id ].record();
-									if (!volume_hash[record_id]) volume_hash[record_id] = {};
+									if (!volume_hash[record_id]) {
+										volume_hash[record_id] = {};
+									}
 									volume_hash[record_id][volume_id] = 1;
 								}
 
 								for (var rec in volume_hash) {
 
-									list = []; for (var v in volume_hash[rec]) list.push( map_acn[v] );
+									list = [];
+									for (var v in volume_hash[rec]) {
+										list.push( map_acn[v] );
+									}
 
 									var edit = 0;
 									try {
@@ -654,7 +673,7 @@
 									//obj.data.stash_retrieve();
 									//var volumes = JSON2js( obj.data.volumes_temp );
 									var volumes = my_xulG.volumes;
-									if (!volumes) return;
+									if (!volumes) { return; }
 								
 									volumes = util.functional.filter_list(
 										volumes,
@@ -671,7 +690,7 @@
 										}
 									);
 
-									if (volumes.length == 0) return;
+									if (volumes.length == 0) { return; }
 
 									try {
 										var r = obj.network.request(
@@ -706,19 +725,24 @@
 							try {
 								JSAN.use('util.functional');
 								var list = util.functional.map_list( obj.selection_list, function(o) { return o.acn_id; } );
-								if (list.length == 0) return;
+								if (list.length == 0) { return; }
 
 								var map_acn = {};
 
 								for (var i = 0; i < list.length; i++) {
 									var volume_id = list[i];
-									if (volume_id == -1) continue; /* ignore magic pre-cat volume */
+									if (volume_id == -1) {
+										continue; /* ignore magic pre-cat volume */
+									}
 									if (! map_acn[volume_id]) {
 										map_acn[ volume_id ] = obj.network.simple_request('FM_ACN_RETRIEVE',[ volume_id ]);
 									}
 								}
 
-								list = []; for (var v in map_acn) list.push( map_acn[v] );
+								list = [];
+								for (var v in map_acn) {
+									list.push( map_acn[v] );
+								}
 
 								var confirm_prompt;
 								if (list.length == 1) {
@@ -756,7 +780,7 @@
 											alert(document.getElementById('circStrings').getString('staff.circ.copy_status.delete_volumes.delete_copies'));
 											return;
 										}
-										if (robj.ilsevent != 0) throw(robj);
+										if (robj.ilsevent != 0) { throw(robj); }
 									}
 									alert(document.getElementById('circStrings').getString('staff.circ.copy_status.delete_volumes.success'));
 								}
@@ -802,7 +826,10 @@
 
 								if (list.length == 1) {
 									var v = obj.network.simple_request('FM_ACN_RETRIEVE',[list[0]]);
-									var owning_lib = v.owning_lib(); if (typeof owning_lib == 'object') owning_lib = owning_lib.id();
+									var owning_lib = v.owning_lib();
+									if (typeof owning_lib == 'object') {
+										owning_lib = owning_lib.id();
+									}
 
 									obj.data.marked_library = { 'lib' : owning_lib, 'docid' : v.record() };
 									obj.data.stash('marked_library');
@@ -835,19 +862,24 @@
 									JSAN.use('util.functional');
 
 									var list = util.functional.map_list( obj.selection_list, function(o) { return o.acn_id; } );
-									if (list.length == 0) return;
+									if (list.length == 0) { return; }
 
 									var map_acn = {};
 
 									for (var i = 0; i < list.length; i++) {
 										var volume_id = list[i];
-										if (volume_id == -1) continue; /* ignore magic pre-cat volume */
+										if (volume_id == -1) {
+											continue; /* ignore magic pre-cat volume */
+										}
 										if (! map_acn[volume_id]) {
 											map_acn[ volume_id ] = obj.network.simple_request('FM_ACN_RETRIEVE',[ volume_id ]);
 										}
 									}
 
-									list = []; for (v in map_acn) list.push(map_acn[v]);
+									list = [];
+									for (v in map_acn) {
+										list.push(map_acn[v]);
+									}
 
 									netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
 									var xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" style="overflow: auto">';
@@ -899,8 +931,8 @@
 											'title' : document.getElementById('circStrings').getString('staff.circ.copy_status.transfer_volume.override_failure'),
 											'overridable_events' : [
 												1208 /* TITLE_LAST_COPY */,
-												1219 /* COPY_REMOTE_CIRC_LIB */,
-											],
+												1219 /* COPY_REMOTE_CIRC_LIB */
+											]
 										}
 									);
 
@@ -919,7 +951,7 @@
 							}
 						}
 
-					],
+					]
 				}
 			}
 		);
@@ -956,8 +988,10 @@
 		var obj = this;
 		try {
 			try { document.getElementById('last_scanned').setAttribute('value',''); } catch(E) {}
-			if (!barcode) barcode = obj.controller.view.copy_status_barcode_entry_textbox.value;
-			if (!barcode) return;
+			if (!barcode) {
+				barcode = obj.controller.view.copy_status_barcode_entry_textbox.value;
+			}
+			if (!barcode) { return; }
 			if (barcode) {
 				if ( obj.test_barcode(barcode) ) { /* good */ } else { /* bad */ return; }
 			}
@@ -1002,9 +1036,10 @@
 						msg += document.getElementById('circStrings').getString('staff.circ.copy_status.status.hold') + '  ';
 					}
 					if (details.transit) {
-						msg += document.getElementById('circStrings').getString('staff.circ.copy_status.status.transit') + '  '; }
+						msg += document.getElementById('circStrings').getString('staff.circ.copy_status.status.transit') + '  ';
+					}
 					if (details.circ && ! details.circ.checkin_time()) {
-						msg += document.getElementById('circStrings').getString('staff.circ.copy_status.status.circ') + '  '; }
+						msg += document.getElementById('circStrings').getString('staff.circ.copy_status.status.circ') + '  ';
 					}
 					try { document.getElementById('last_scanned').setAttribute('value',msg); } catch(E) {}
 					if (document.getElementById('trim_list')) {

Modified: trunk/Open-ILS/xul/staff_client/server/circ/copy_status.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/circ/copy_status.xul	2008-02-07 22:06:26 UTC (rev 8695)
+++ trunk/Open-ILS/xul/staff_client/server/circ/copy_status.xul	2008-02-07 22:39:23 UTC (rev 8696)
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!-- Application: Evergreen Staff Client -->
 <!-- Screen: Patron Display -->
 
@@ -12,7 +12,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-	<!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+	<!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
@@ -35,7 +35,9 @@
 		function my_init() {
 			try {
 				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-		                if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); }
+				if (typeof JSAN == 'undefined') {
+					throw( document.getElementById("commonStrings").getString('common.jsan.missing') );
+				}
 				JSAN.errorLevel = "die"; // none, warn, or die
 				JSAN.addRepository('/xul/server/');
 				JSAN.use('util.error'); g.error = new util.error();
@@ -48,7 +50,11 @@
 				);
 
 				if (typeof window.xulG == 'object' && typeof window.xulG.set_tab_name == 'function') {
-					try { window.xulG.set_tab_name('Item Status'); } catch(E) { alert(E); }
+					try {
+						window.xulG.set_tab_name(document.getElementById('circStrings').getString('staff.circ.copy_status.tab_name'));
+					} catch(E) {
+						alert(E);
+					}
 				}
 
 				JSAN.use('OpenILS.data'); g.data = new OpenILS.data(); g.data.stash_retrieve();
@@ -78,9 +84,7 @@
 				}
 	
 			} catch(E) {
-				var err_msg = "!! This software has encountered an error.  Please tell your friendly " +
-					"system administrator or software developer the following:\n" 
-					+ 'circ.copy_status.xul\n' + E + '\n';
+				var err_msg = document.getElementById("commonStrings").getFormattedString('common.exception', ['circ.copy_status.xul', E]);
 				try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
 				alert(err_msg);
 			}
@@ -90,6 +94,8 @@
 	]]>
 	</script>
 
+	<messagecatalog id="circStrings" src="/xul/server/locale/<!--#echo var='locale'-->/circ.properties" />
+
 	<commandset id="copy_status_cmds">
 		<command id="cmd_copy_status_submit_barcode" />
 		<command id="cmd_copy_status_upload_file" />

Modified: trunk/Open-ILS/xul/staff_client/server/circ/hold_capture.js
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/circ/hold_capture.js	2008-02-07 22:06:26 UTC (rev 8695)
+++ trunk/Open-ILS/xul/staff_client/server/circ/hold_capture.js	2008-02-07 22:39:23 UTC (rev 8696)
@@ -1,4 +1,5 @@
 dump('entering circ.hold_capture.js\n');
+// vim:noet:sw=4:ts=4:
 
 if (typeof circ == 'undefined') circ = {};
 circ.hold_capture = function (params) {
@@ -49,7 +50,7 @@
 					],
 					'cmd_broken' : [
 						['command'],
-						function() { alert('Not Yet Implemented'); }
+						function() { alert(document.getElementById('circStrings').getString('staff.circ.unimplemented')); }
 					],
 					'cmd_hold_capture_submit_barcode' : [
 						['command'],
@@ -121,10 +122,12 @@
 				);
 		
 				try {
-				alert('To Printer\n' + hold_capture.text + '\r\n' + 'Barcode: ' + barcode + '  Title: ' + hold_capture.record.title() + 
-					'  Author: ' + hold_capture.record.author() + '\r\n' +
-					'Route To: ' + hold_capture.route_to + 
-					'  Patron: ' + au_obj.card().barcode() + ' ' + au_obj.family_name() + ', ' + au_obj.first_given_name() + 
+				alert(document.getElementById('circStrings').getString('staff.circ.hold_capture.print.to_printer') + '\n' + hold_capture.text + '\r\n' + 
+					document.getElementById('circStrings').getString('staff.circ.hold_capture.print.barcode') + ' ' + barcode + 
+					document.getElementById('circStrings').getString('staff.circ.hold_capture.print.title') + ' ' + hold_capture.record.title() + 
+					document.getElementById('circStrings').getString('staff.circ.hold_capture.print.author') + ' ' + hold_capture.record.author() + '\r\n' +
+					document.getElementById('circStrings').getString('staff.circ.hold_capture.print.route_to') + ' ' + hold_capture.route_to + 
+					document.getElementById('circStrings').getString('staff.circ.hold_capture.print.patron') + ' ' + au_obj.card().barcode() + ' ' + au_obj.family_name() + ', ' + au_obj.first_given_name() + 
 					'\r\n'); //FIXME
 				} catch(E) { dump('errors\n'); }
 				/*
@@ -140,26 +143,26 @@
 					obj.on_hold_capture(hold_capture);
 				}
 				if (typeof window.xulG == 'object' && typeof window.xulG.on_hold_capture == 'function') {
-					obj.error.sdump('D_CIRC','circ.hold_capture: Calling external .on_hold_capture()\n');
+					obj.error.sdump('D_CIRC', document.getElementById('circStrings').getString('staff.circ.hold_capture.calling_external') + '\n');
 					window.xulG.on_hold_capture(hold_capture);
 				} else {
-					obj.error.sdump('D_CIRC','circ.hold_capture: No external .on_hold_capture()\n');
+					obj.error.sdump('D_CIRC', document.getElementById('circStrings').getString('staff.circ.hold_capture.no_external') + '\n');
 				}
 			} else {
-				throw("Could not capture hold.");
+				throw(document.getElementById('circStrings').getString('staff.circ.hold_capture.capture_failed'));
 			}
 
 		} catch(E) {
-			alert('FIXME: need special alert and error handling\n'
+			alert(document.getElementById('circStrings').getString('staff.circ.hold_capture.error') + '\n'
 				+ js2JSON(E));
 			if (typeof obj.on_failure == 'function') {
 				obj.on_failure(E);
 			}
 			if (typeof window.xulG == 'object' && typeof window.xulG.on_failure == 'function') {
-				obj.error.sdump('D_CIRC','circ.hold_capture: Calling external .on_failure()\n');
+				obj.error.sdump('D_CIRC', document.getElementById('circStrings').getString('staff.circ.hold_capture.calling_external') + '\n');
 				window.xulG.on_failure(E);
 			} else {
-				obj.error.sdump('D_CIRC','circ.hold_capture: No external .on_failure()\n');
+				obj.error.sdump('D_CIRC', document.getElementById('circStrings').getString('staff.circ.hold_capture.no_external') + '\n');
 			}
 		}
 

Modified: trunk/Open-ILS/xul/staff_client/server/circ/hold_capture.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/circ/hold_capture.xul	2008-02-07 22:06:26 UTC (rev 8695)
+++ trunk/Open-ILS/xul/staff_client/server/circ/hold_capture.xul	2008-02-07 22:39:23 UTC (rev 8696)
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!-- Application: Evergreen Staff Client -->
 <!-- Screen: Patron Display -->
 
@@ -12,7 +12,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-	<!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+	<!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
@@ -35,7 +35,9 @@
 		function my_init() {
 			try {
 				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-		                if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); }
+				if (typeof JSAN == 'undefined') {
+					throw( document.getElementById("commonStrings").getString('common.jsan.missing') );
+				}
 				JSAN.errorLevel = "die"; // none, warn, or die
 				JSAN.addRepository('/xul/server/');
 				JSAN.use('util.error'); g.error = new util.error();
@@ -52,9 +54,7 @@
 				}
 
 			} catch(E) {
-				var err_msg = "!! This software has encountered an error.  Please tell your friendly " +
-					"system administrator or software developer the following:\n" 
-					+ 'circ.hold_capture.xul\n' + E + '\n';
+				var err_msg = document.getElementById("commonStrings").getFormattedString('common.exception', ['circ.hold_capture.xul', E]);
 				try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
 				alert(err_msg);
 			}
@@ -63,6 +63,8 @@
 	]]>
 	</script>
 
+	<messagecatalog id="circStrings" src="/xul/server/locale/<!--#echo var='locale'-->/circ.properties" />
+
 	<commandset id="hold_capture_cmds">
 		<command id="cmd_hold_capture_submit_barcode" />
 		<command id="cmd_hold_capture_print" />

Modified: trunk/Open-ILS/xul/staff_client/server/circ/hold_capture_overlay.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/circ/hold_capture_overlay.xul	2008-02-07 22:06:26 UTC (rev 8695)
+++ trunk/Open-ILS/xul/staff_client/server/circ/hold_capture_overlay.xul	2008-02-07 22:39:23 UTC (rev 8696)
@@ -1,6 +1,6 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE overlay PUBLIC "" ""[
-	<!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+	<!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 <overlay id="hold_capture_overlay" 
 	xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

Modified: trunk/Open-ILS/xul/staff_client/server/circ/in_house_use.js
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/circ/in_house_use.js	2008-02-07 22:06:26 UTC (rev 8695)
+++ trunk/Open-ILS/xul/staff_client/server/circ/in_house_use.js	2008-02-07 22:39:23 UTC (rev 8696)
@@ -1,4 +1,5 @@
 dump('entering circ.in_house_use.js\n');
+// vim:noet:sw=4:ts=4:
 
 if (typeof circ == 'undefined') circ = {};
 circ.in_house_use = function (params) {
@@ -54,7 +55,7 @@
 						function(e) {
 							return function() {
 								JSAN.use('util.widgets'); JSAN.use('util.functional'); JSAN.use('util.fm_utils');
-								var items = [ [ 'Barcode:' , 'barcode' ] ].concat(
+								var items = [ [ document.getElementById('circStrings').getString('staff.circ.in_house_use.barcode') , 'barcode' ] ].concat(
 									util.functional.map_list(
 										util.functional.filter_list(
 											obj.data.list.cnct,
@@ -70,7 +71,7 @@
 														[ b.owning_lib(), b.name() ]
 													);
 												} catch(E) {
-													alert('error in noncat sorting: ' + E);
+													alert(document.getElementById('circStrings').getString('staff.circ.in_house_use.noncat_sort_error') + ' ' + E);
 													return 0;
 												}
 											}
@@ -81,7 +82,7 @@
 										}
 									)
 								);
-								g.error.sdump('D_TRACE','items = ' + js2JSON(items));
+								g.error.sdump('D_TRACE', document.getElementById('circStrings').getString('staff.circ.in_house_use.items_dump') + js2JSON(items));
 								util.widgets.remove_children( e );
 								var ml = util.widgets.make_menulist(
 									items
@@ -99,7 +100,7 @@
 											tb.focus();
 										} else {
 											tb.disabled = true;
-											tb.value = 'Non-Cataloged';
+											tb.value = document.getElementById('circStrings').getString('staff.circ.in_house_use.noncataloged');
 										}
 									}, false
 								);
@@ -144,7 +145,7 @@
 					],
 					'cmd_broken' : [
 						['command'],
-						function() { alert('Not Yet Implemented'); }
+						function() { alert(document.getElementById('circStrings').getString('staff.circ.unimplemented')); }
 					],
 					'cmd_in_house_use_submit_barcode' : [
 						['command'],
@@ -195,12 +196,12 @@
 			return true;
 		} else {
 			if ( 1 == obj.error.yns_alert(
-						'Bad checkdigit; possible mis-scan.  Use this barcode ("' + bc + '") anyway?',
-						'Bad Barcode',
-						'Cancel',
-						'Accept Barcode',
+						document.getElementById('circStrings').getFormattedString('staff.circ.check_digit.bad', [bc]),
+						document.getElementById('circStrings').getString('staff.circ.barcode.bad'),
+						document.getElementById('circStrings').getString('staff.circ.cancel'),
+						document.getElementById('circStrings').getString('staff.circ.barcode.accept'),
 						null,
-						'Check here to confirm this action',
+						document.getElementById('circStrings').getString('staff.circ.confirm'),
 						'/xul/server/skin/media/images/bad_barcode.png'
 			) ) {
 				return true;
@@ -237,7 +238,14 @@
 			}
 
 			if (multiplier > 20) {
-				var r = obj.error.yns_alert('Are you sure you want to mark ' + barcode + ' as having been used ' + multiplier + ' times?','In-House Use Verification', 'Yes', 'No', null, 'Check here to confirm this message.');
+				var r = obj.error.yns_alert(
+					document.getElementById('circStrings').getFormattedString('staff.circ.in_house_use.confirm_multiple', [barcode, multiplier]),
+					document.getElementById('circStrings').getString('staff.circ.in_house_use.confirm_multiple.title'),
+					document.getElementById('circStrings').getString('staff.circ.in_house_use.yes'),
+					document.getElementById('circStrings').getString('staff.circ.in_house_use.no'),
+					null,
+					document.getElementById('circStrings').getString('staff.circ.confirm.msg')
+				);
 				if (r != 0) {
 					obj.controller.view.in_house_use_multiplier_textbox.focus();
 					obj.controller.view.in_house_use_multiplier_textbox.select();
@@ -252,9 +260,21 @@
 				var copy = obj.network.simple_request('FM_ACP_RETRIEVE_VIA_BARCODE',[ barcode ]); 
 				if (copy.ilsevent) { 
 					switch(copy.ilsevent) {
-						case -1 : obj.error.standard_network_error_alert('In House Use Failed.  If you wish to use the offline interface, in the top menubar select Circulation -> Offline Interface'); break;
-						case 1502 /* ASSET_COPY_NOT_FOUND */ : obj.error.yns_alert(copy.textcode,'In House Use Failed','Ok',null,null,'Check here to confirm this message'); break;
-						default: throw(copy);
+						case -1 : 
+							obj.error.standard_network_error_alert(document.getElementById('circStrings').getString('staff.circ.in_house_use.failed.verbose'));
+							break;
+						case 1502 /* ASSET_COPY_NOT_FOUND */ : 
+							obj.error.yns_alert(
+								copy.textcode,
+								document.getElementById('circStrings').getString('staff.circ.in_house_use.failed'),
+								document.getElementById('circStrings').getString('staff.circ.in_house_use.ok'),
+								null,
+								null,
+								document.getElementById('circStrings').getString('staff.circ.confirm.msg')
+							);
+							break;
+						default:
+							throw(copy);
 					}
 					return; 
 				}
@@ -294,22 +314,22 @@
 				obj.on_in_house_use(result);
 			}
 			if (typeof window.xulG == 'object' && typeof window.xulG.on_in_house_use == 'function') {
-				obj.error.sdump('D_CIRC','circ.in_house_use: Calling external .on_in_house_use()\n');
+				obj.error.sdump('D_CIRC', + document.getElementById('circStrings').getString('staff.circ.in_house_use.external') + '\n');
 				window.xulG.on_in_house_use(result);
 			} else {
-				obj.error.sdump('D_CIRC','circ.in_house_use: No external .on_in_house_use()\n');
+				obj.error.sdump('D_CIRC', + document.getElementById('circStrings').getString('staff.circ.in_house_use.no_external') + '\n');
 			}
 
 		} catch(E) {
-			obj.error.standard_unexpected_error_alert('In House Use Failed',E);
+			obj.error.standard_unexpected_error_alert(document.getElementById('circStrings').getString('staff.circ.in_house_use.failed'), E);
 			if (typeof obj.on_failure == 'function') {
 				obj.on_failure(E);
 			}
 			if (typeof window.xulG == 'object' && typeof window.xulG.on_failure == 'function') {
-				obj.error.sdump('D_CIRC','circ.in_house_use: Calling external .on_failure()\n');
+				obj.error.sdump('D_CIRC', + document.getElementById('circStrings').getString('staff.circ.in_house_use.on_failure.external') + '\n');
 				window.xulG.on_failure(E);
 			} else {
-				obj.error.sdump('D_CIRC','circ.in_house_use: No external .on_failure()\n');
+				obj.error.sdump('D_CIRC', + document.getElementById('circStrings').getString('staff.circ.in_house_use.on_failure.external') + '\n');
 			}
 		}
 

Modified: trunk/Open-ILS/xul/staff_client/server/circ/in_house_use.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/circ/in_house_use.xul	2008-02-07 22:06:26 UTC (rev 8695)
+++ trunk/Open-ILS/xul/staff_client/server/circ/in_house_use.xul	2008-02-07 22:39:23 UTC (rev 8696)
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!-- Application: Evergreen Staff Client -->
 <!-- Screen: Patron Display -->
 
@@ -12,7 +12,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-	<!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+	<!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
@@ -34,7 +34,9 @@
 		function my_init() {
 			try {
 				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-		                if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); }
+				if (typeof JSAN == 'undefined') {
+					throw( document.getElementById("commonStrings").getString('common.jsan.missing') );
+				}
 				JSAN.errorLevel = "die"; // none, warn, or die
 				JSAN.addRepository('/xul/server/');
 				JSAN.use('util.error'); g.error = new util.error();
@@ -47,13 +49,15 @@
 				);
 	
 				if (typeof window.xulG == 'object' && typeof window.xulG.set_tab_name == 'function') {
-					try { window.xulG.set_tab_name('In-House Use'); } catch(E) { alert(E); }
+					try {
+						window.xulG.set_tab_name(document.getElementById('circStrings').getString('staff.circ.in_house_use.tab_name'));
+					} catch(E) {
+						alert(E);
+					}
 				}
 
 			} catch(E) {
-				var err_msg = "!! This software has encountered an error.  Please tell your friendly " +
-					"system administrator or software developer the following:\n" 
-					+ 'circ.in_house_use.xul\n' + E + '\n';
+				var err_msg = document.getElementById("commonStrings").getFormattedString('common.exception', ['circ.in_house_use.xul', E]);
 				try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
 				alert(err_msg);
 			}
@@ -63,6 +67,8 @@
 	]]>
 	</script>
 
+	<messagecatalog id="circStrings" src="/xul/server/locale/<!--#echo var='locale'-->/circ.properties" />
+
 	<commandset id="in_house_use_cmds">
 		<command id="sel_clip" />
 		<command id="cmd_in_house_use_submit_barcode" />
@@ -77,40 +83,40 @@
 <vbox id="cmvb1" flex="1">
 <hbox id="background" style="background-color: purple; color: white;">
 	<spacer flex="1"/>
-	<label value="Record In-House Use" style="font-size: x-large; font-weight: bold;"/>
+	<label value="&staff.circ.in_house_use.main.label;" style="font-size: x-large; font-weight: bold;"/>
 	<spacer flex="1"/>
 </hbox>
 <groupbox id="cmgb1" flex="2">
 
-	<caption label="In-House Use" />
+	<caption label="&staff.circ.in_house_use.cmgb1.caption;" />
 
 	<hbox id="in_house_use_top_ui">
-		<label id="in_house_use_multiplier_label" value="# of uses:" control="in_house_use_multiplier_textbox" accesskey="u" hidden="false"/>
+		<label id="in_house_use_multiplier_label" value="&staff.circ.in_house_use.multiplier_label.value;" control="in_house_use_multiplier_textbox" accesskey="&staff.circ.in_house_use.multiplier_label.accesskey;" hidden="false"/>
 		<textbox id="in_house_use_multiplier_textbox" value="1" hidden="false" size="2" cols="2"/>
 		<hbox id="in_house_use_menu_placeholder" flex="0"/>
 		<textbox id="in_house_use_barcode_entry_textbox"/>
 		<button id="in_house_use_submit_barcode_button" 
-			label="Submit"
+			label="&staff.circ.in_house_use.submit.label;"
 			command="cmd_in_house_use_submit_barcode"
-			accesskey="S"/>
+			accesskey="&staff.circ.in_house_use.submit.accesskey;"/>
 	</hbox>
 
 	<tree id="in_house_use_list" flex="1" enableColumnDrag="true" />
 
 	<hbox id="in_house_use_bottom_ui">
 		<button id="in_house_use_print" 
-			label="Print List" 
+			label="&staff.circ.in_house_use.print.label;" 
 			command="cmd_in_house_use_print"
 			accesskey=""/>
 		<button id="in_house_use_export" 
-			label="Export"
+			label="&staff.circ.in_house_use.export.label;"
 			command="cmd_in_house_use_export"
 			accesskey=""/>
-		<checkbox id="trim_list" label="Trim List (20 rows)" checked="true" persist="checked"/> 
-		<checkbox id="strict_barcode" label="Strict Barcode" checked="false" persist="checked"/> 
+		<checkbox id="trim_list" label="&staff.circ.in_house_use.trim_list.label;" checked="true" persist="checked"/> 
+		<checkbox id="strict_barcode" label="&staff.circ.in_house_use.strict_barcode.label;" checked="false" persist="checked"/> 
 		<spacer id="pcii3s" flex="1"/>
-		<button id="clip_button" disabled="true" command="sel_clip" label="Copy to Clipboard" />
-		<button id="save_cols_btn" command="save_columns" label="Save Columns" />
+		<button id="clip_button" disabled="true" command="sel_clip" label="&staff.circ.in_house_use.sel_clip.label;" />
+		<button id="save_cols_btn" command="save_columns" label="&staff.circ.in_house_use.save_cols_btn.label;" />
 	</hbox>
 
 </groupbox>

Modified: trunk/Open-ILS/xul/staff_client/server/circ/pre_cat_fields.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/circ/pre_cat_fields.xul	2008-02-07 22:06:26 UTC (rev 8695)
+++ trunk/Open-ILS/xul/staff_client/server/circ/pre_cat_fields.xul	2008-02-07 22:39:23 UTC (rev 8696)
@@ -1,6 +1,9 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!-- Application: Evergreen Staff Client -->
 <!-- Screen: Patron Display -->
+<!--
+ vim:noet:sw=4:ts=4:
+-->
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- STYLESHEETS -->
@@ -11,14 +14,14 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-	<!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+	<!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- OVERLAYS -->
 <?xul-overlay href="/xul/server/OpenILS/util_overlay.xul"?>
 
-<window id="pre_cat_fields" title="Pre-Cat Fields"
+<window id="pre_cat_fields" title="&staff.circ.pre_cat.window.title;"
 	orient="vertical" style="overflow: auto"
 	onload="try{my_init();font_helper(); }catch(E){alert(E);}"
 	onunload="try{my_finish();}catch(E){alert(E);}"
@@ -36,7 +39,9 @@
 
 		function my_init() {
 			netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-	                if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); }
+			if (typeof JSAN == 'undefined') {
+				throw( document.getElementById("commonStrings").getString('common.jsan.missing') );
+			}
 			JSAN.errorLevel = "die"; // none, warn, or die
 			JSAN.addRepository('/xul/server/');
 			JSAN.use('util.error'); g.error = new util.error();
@@ -56,26 +61,27 @@
 	]]>
 	</script>
 
+	<messagecatalog id="circStrings" src="/xul/server/locale/<!--#echo var='locale'-->/circ.properties" />
 
 	<groupbox>
-		<caption label="Pre-Catalog Field Entry"/>
+		<caption label="&staff.circ.pre_cat.caption.label;"/>
 		<grid>
 			<columns><column /><column flex="1"/></columns>
 			<rows>
 				<row>
-					<label value="Title" control="dummy_title"/>
+					<label value="&staff.circ.pre_cat.dummy_title.value;" control="dummy_title"/>
 					<textbox id="dummy_title" onchange="g.data.dummy_title = event.target.value;"/>
 				</row>
 				<row>
-					<label value="Author" control="dummy_author"/>
+					<label value="&staff.circ.pre_cat.dummy_author.value;" control="dummy_author"/>
 					<textbox id="dummy_author" onchange="g.data.dummy_author = event.target.value;"/>
 				</row>
 			</rows>
 		</grid>
 		<hbox>
 			<spacer flex="1"/>
-			<button label="Cancel" oncommand="g.data.dummy_title = ''; window.close()" accesskey="C"/>
-			<button label="Checkout" oncommand="window.close();" accesskey="o"/>
+			<button label="&staff.circ.pre_cat.cancel.label;" oncommand="g.data.dummy_title = ''; window.close()" accesskey="&staff.circ.pre_cat.cancel.accesskey;"/>
+			<button label="&staff.circ.pre_cat.checkout.label;" oncommand="window.close();" accesskey="&staff.circ.pre_cat.checkout.accesskey;"/>
 		</hbox>
 	</groupbox>
 

Modified: trunk/Open-ILS/xul/staff_client/server/circ/print_list_template_editor.js
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/circ/print_list_template_editor.js	2008-02-07 22:06:26 UTC (rev 8695)
+++ trunk/Open-ILS/xul/staff_client/server/circ/print_list_template_editor.js	2008-02-07 22:39:23 UTC (rev 8696)
@@ -1,4 +1,5 @@
 dump('entering print_list_template_editor.js\n');
+// vim:noet:sw=4:ts=4:
 
 if (typeof circ == 'undefined') circ = {};
 circ.print_list_template_editor = function (params) {
@@ -43,12 +44,44 @@
 
 			this.test_list = {
 			
-				'items' : [{"uses":"undefined","alert_message":"","author":"Annixter, Jane.","barcode":"3635300990263","call_number":"F","checkin_time":"   ","checkin_time_full":"","xact_start":"2006-08-23","xact_start_full":"2006-08-23T14:37:15-0400","circ_as_type":"","circ_id":"19907","circ_lib":"URRLS-SC","circ_modifier":"","circulate":"Yes","acp_id":"34","copy_number":"1","create_date":"2006-04-28","edit_date":"2006-08-23","deleted":"No","deposit_amount":"0.00","deposit":"No","mvr_doc_id":"13","due_date":"2006-08-23","edition":"","fine_level":"Low","stop_fines":"","stop_fines_time":"","holdable":"Yes","isbn":"","loan_duration":"Short","location":"Adult","message":"   ","opac_visible":"Yes","owning_lib":"URRLS-SC","price":"10.00","pubdate":"1961","publisher":"Longmans","ref":"No","renewal_remaining":"0","route_to":"   ","status":"Checked out","tcn":"PIN01000015 ","title":"Peace comes to Castle Oak ","xact_finish":""},{"uses":"undefined","alert_message":"","author":"Josephson, Matthew
 ","barcode":"33207002163014","call_number":"NONFIC 330.922 JOSEPHSO","checkin_time":"   ","checkin_time_full":"","xact_start":"2006-08-23","xact_start_full":"2006-08-23T14:37:23-0400","circ_as_type":"","circ_id":"19908","circ_lib":"ARL-ATH","circ_modifier":"","circulate":"Yes","acp_id":"1658","copy_number":"1","create_date":"2006-04-28","edit_date":"2006-08-23","deleted":"No","deposit_amount":"0.00","deposit":"No","mvr_doc_id":"250","due_date":"2006-09-06","edition":"","fine_level":"Low","stop_fines":"","stop_fines_time":"","holdable":"Yes","isbn":"","loan_duration":"Short","location":"Adult","message":"   ","opac_visible":"Yes","owning_lib":"ARL-ATH","price":"10.95","pubdate":"[c1934]","publisher":"Harcourt, Brace and company","ref":"No","renewal_remaining":"0","route_to":"   ","status":"Checked out","tcn":"PIN01000311 ","title":"The  robber barons :  the great American capitalists, 1861-1901","xact_finish":""},{"uses":"undefined","alert_message":"","author":"Payne, Emmy","
 barcode":"33034001434539","call_number":"EJ PAYNE","checkin_time":"   ","checkin_time_full":"","xact_start":"2006-08-23","xact_start_full":"2006-08-23T14:36:54-0400","circ_as_type":"","circ_id":"19904","circ_lib":"SHRL-RM","circ_modifier":"","circulate":"Yes","acp_id":"6165596","copy_number":"1","create_date":"2006-04-28","edit_date":"2006-08-23","deleted":"No","deposit_amount":"0.00","deposit":"No","mvr_doc_id":"1220497","due_date":"2006-09-06","edition":"Reinforced ed.","fine_level":"Low","stop_fines":"","stop_fines_time":"","holdable":"Yes","isbn":"075872926X (BWI bdg.)","loan_duration":"Short","location":"Adult","message":"   ","opac_visible":"Yes","owning_lib":"SHRL-RM","price":"0.00","pubdate":"1944","publisher":"Houghton Mifflin","ref":"No","renewal_remaining":"0","route_to":"   ","status":"Checked out","tcn":"PIN01000377 ","title":"Katy no-pocket ","xact_finish":""},{"uses":"undefined","alert_message":"","author":"Ames, Leslie","barcode":"31039000791757","call_number
 ":"AF AME","checkin_time":"   ","checkin_time_full":"","xact_start":"2006-08-23","xact_start_full":"2006-08-23T14:37:07-0400","circ_as_type":"","circ_id":"19906","circ_lib":"ORLS-TEL","circ_modifier":"","circulate":"Yes","acp_id":"28","copy_number":"1","create_date":"2006-04-28","edit_date":"2006-08-23","deleted":"No","deposit_amount":"0.00","deposit":"No","mvr_doc_id":"8","due_date":"2006-09-06","edition":"","fine_level":"Low","stop_fines":"","stop_fines_time":"","holdable":"Yes","isbn":"","loan_duration":"Short","location":"Adult","message":"   ","opac_visible":"Yes","owning_lib":"ORLS-TEL","price":"5.95","pubdate":"","publisher":"Lenox Hill","ref":"No","renewal_remaining":"0","route_to":"   ","status":"Checked out","tcn":"PIN01000009 ","title":"King's Castle ","xact_finish":""},{"uses":"undefined","alert_message":"","author":"Payne, Emmy","barcode":"33034001434539","call_number":"EJ PAYNE","checkin_time":"   ","checkin_time_full":"","xact_start":"2006-08-23","xact_start_f
 ull":"2006-08-23T14:36:54-0400","circ_as_type":"","circ_id":"19903","circ_lib":"SHRL-RM","circ_modifier":"","circulate":"Yes","acp_id":"6165596","copy_number":"1","create_date":"2006-04-28","edit_date":"2006-08-23","deleted":"No","deposit_amount":"0.00","deposit":"No","mvr_doc_id":"1220497","due_date":"2006-09-06","edition":"Reinforced ed.","fine_level":"Low","stop_fines":"","stop_fines_time":"","holdable":"Yes","isbn":"075872926X (BWI bdg.)","loan_duration":"Short","location":"Adult","message":"   ","opac_visible":"Yes","owning_lib":"SHRL-RM","price":"0.00","pubdate":"1944","publisher":"Houghton Mifflin","ref":"No","renewal_remaining":"0","route_to":"   ","status":"Checked out","tcn":"PIN01000377 ","title":"Katy no-pocket ","xact_finish":""}],
-				'holds' : [{"author":"Wells, H. G. ","available_time":"2006-08-03","available_timestamp":"2006-08-03T15:14:53-0400","capture_time":"2006-08-03","capture_timestamp":"2006-08-03T15:14:53-0400","current_copy":"33207003884402","edition":"","email_notify":"No","expire_time":"","fulfillment_time":"","id":"57","holdable_formats":"","isbn":"0192828266 :","notify_time":"","notify_count":"0","patron_name":"23500000023053 Stompro, Josh","phone_notify":"218-233-3757","pickup_lib_shortname":"ARL-ATH","pickup_lib":"Athens-Clarke County Library","prev_check_time":"2006-08-02T16:15:11-0400","pubdate":"1995","publisher":"Oxford University Press","request_time":"2006-05-20","request_timestamp":"2006-05-20","requestor":"1000000","selection_depth":"0","status":"Ready for pickup","tcn":"PIN03002240 ","target":"131469","title":"The  war of the worlds","transit_dest_recv_time":"","transit_dest_lib":"","transit_source":"","transit_source_send_time":"","hold_type":"T","usr":"1000567"},{"author":
 "Kramer, Kathryn.","available_time":"2006-08-03","available_timestamp":"2006-08-03T15:32:58-0400","capture_time":"2006-08-03","capture_timestamp":"2006-08-03T15:32:58-0400","current_copy":"33207004030757","edition":"1st ed.","email_notify":"No","expire_time":"","fulfillment_time":"","id":"470","holdable_formats":"","isbn":"0375400834","notify_time":"2006-08-24T15:12:30-0400","notify_count":"1","patron_name":"21034000217210 Jenkins, George","phone_notify":"229-985-3464","pickup_lib_shortname":"ARL-ATH","pickup_lib":"Athens-Clarke County Library","prev_check_time":"2006-08-03T12:15:03-0400","pubdate":"1998","publisher":"Knopf","request_time":"2006-07-28","request_timestamp":"2006-07-28","requestor":"3","selection_depth":"0","status":"Ready for pickup","tcn":"PIN03053147 ","target":"313678","title":"Sweet water ","transit_dest_recv_time":"","transit_dest_lib":"","transit_source":"","transit_source_send_time":"","hold_type":"T","usr":"1001151"},{"author":"Silva, Daniel","availab
 le_time":"2006-08-03","available_timestamp":"2006-08-03T15:39:35-0400","capture_time":"2006-08-03","capture_timestamp":"2006-08-03T15:39:35-0400","current_copy":"33207004323517","edition":"1st ed.","email_notify":"No","expire_time":"","fulfillment_time":"","id":"448","holdable_formats":"","isbn":"0375500898 (alk. paper)","notify_time":"","notify_count":"0","patron_name":"21099000002755 Broome, Sandra","phone_notify":"706-236-4632","pickup_lib_shortname":"ARL-ATH","pickup_lib":"Athens-Clarke County Library","prev_check_time":"2006-08-02T17:16:39-0400","pubdate":"c1999","publisher":"Random House","request_time":"2006-07-27","request_timestamp":"2006-07-27","requestor":"1000001","selection_depth":"0","status":"Ready for pickup","tcn":"ocm40444117 ","target":"77772","title":"The  marching season :  a novel","transit_dest_recv_time":"","transit_dest_lib":"","transit_source":"","transit_source_send_time":"","hold_type":"T","usr":"1000846"},{"author":"Seuss","available_time":"2006-
 08-13","available_timestamp":"2006-08-13T20:55:02-0400","capture_time":"2006-08-13","capture_timestamp":"2006-08-13T20:55:02-0400","current_copy":"20070805","edition":"","email_notify":"No","expire_time":"","fulfillment_time":"","id":"1697","holdable_formats":"","isbn":"039480001X :","notify_time":"","notify_count":"0","patron_name":"4545 Tripper, Jack","phone_notify":"444-333-2222","pickup_lib_shortname":"ARL-ATH","pickup_lib":"Athens-Clarke County Library","prev_check_time":"2006-08-13T20:45:09-0400","pubdate":"1992, c1957","publisher":"Seedlings Braille Books for Children","request_time":"2006-08-13","request_timestamp":"2006-08-13","requestor":"1000000","selection_depth":"0","status":"Ready for pickup","tcn":"ocm47673093 ","target":"1534993","title":"The  cat in the hat","transit_dest_recv_time":"","transit_dest_lib":"","transit_source":"","transit_source_send_time":"","hold_type":"T","usr":"1002261"},{"author":"Potter, Sally.","available_time":"2006-08-09","available_ti
 mestamp":"2006-08-09T18:06:10-0400","capture_time":"2006-08-09","capture_timestamp":"2006-08-09T18:06:10-0400","current_copy":"31001000843129","edition":"","email_notify":"No","expire_time":"","fulfillment_time":"","id":"1004","holdable_formats":"","isbn":"0783262663","notify_time":"2006-08-10T15:24:46-0400","notify_count":"12","patron_name":"2222233333 Erickson, Bill","phone_notify":"999-999-9999","pickup_lib_shortname":"ARL-ATH","pickup_lib":"Athens-Clarke County Library","prev_check_time":"2006-08-09T12:15:27-0400","pubdate":"c2001","publisher":"Universal Studios","request_time":"2006-08-08","request_timestamp":"2006-08-08","requestor":"3","selection_depth":"0","status":"Ready for pickup","tcn":"ocm48683123 ","target":"1572303","title":"The  man who cried","transit_dest_recv_time":"","transit_dest_lib":"","transit_source":"","transit_source_send_time":"","hold_type":"T","usr":"3"}],
-				'bills' : [{"balance_owed":"-5.00","xact_finish":"2006-05-08","xact_start":"2006-05-08","id":"9","last_billing_ts":"2006-05-08 18:53","last_billing_note":"test","last_billing_type":"Miscellaneous charges","last_payment_ts":"2006-05-08 18:53","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"0.00","total_paid":"5.00","xact_type":"grocery","usr":"Id = 1000502"},{"balance_owed":"-5.00","xact_finish":"2006-05-08","xact_start":"2006-05-08","id":"11","last_billing_ts":"2006-05-08 19:11","last_billing_note":"test","last_billing_type":"Miscellaneous","last_payment_ts":"2006-05-08 19:12","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"0.00","total_paid":"5.00","xact_type":"grocery","usr":"Id = 1000502"},{"balance_owed":"-50.00","xact_finish":"2006-05-08","xact_start":"2006-05-08","id":"18","last_billing_ts":"2006-05-08 20:20","last_billing_note":"","last_billing_type":"Miscellaneous","last_payment_ts":"2006-05-08 21:27","last_payment_
 note":"","last_payment_type":"cash_payment","total_owed":"0.00","total_paid":"50.00","xact_type":"grocery","usr":"Id = 1000502"},{"balance_owed":"1.00","xact_finish":"2006-06-14","xact_start":"2006-06-14","id":"451","last_billing_ts":"2006-06-14 16:49","last_billing_note":"SYSTEM GENERATED","last_billing_type":"Lost Materials","last_payment_ts":"2006-06-14 16:49","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"6.00","total_paid":"5.00","xact_type":"circulation","usr":"Id = 1000502"},{"balance_owed":"-1.00","xact_finish":"2006-06-17","xact_start":"2006-06-17","id":"3689","last_billing_ts":"2006-06-17 04:01","last_billing_note":"","last_billing_type":"Miscellaneous","last_payment_ts":"2006-06-17 18:51","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"10.00","total_paid":"11.00","xact_type":"grocery","usr":"Id = 1000502"},{"balance_owed":".66","xact_finish":"","xact_start":"2006-06-27","id":"5589","last_billing_ts":"2006-08-22 00:0
 0","last_billing_note":"Overdue Fine","last_billing_type":"Overdue materials","last_payment_ts":"2006-09-04 17:31","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"5.60","total_paid":"4.94","xact_type":"circulation","usr":"Id = 1000502"},{"balance_owed":".70","xact_finish":"","xact_start":"2006-06-27","id":"5593","last_billing_ts":"2006-08-22 00:00","last_billing_note":"Overdue Fine","last_billing_type":"Overdue materials","last_payment_ts":"2006-08-16 11:01","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"5.50","total_paid":"4.80","xact_type":"circulation","usr":"Id = 1000502"},{"balance_owed":"5.00","xact_finish":"","xact_start":"2006-08-16","id":"14834","last_billing_ts":"2006-08-16 12:25","last_billing_note":"","last_billing_type":"Damaged material","last_payment_ts":"","last_payment_note":"","last_payment_type":"","total_owed":"5.00","total_paid":"0.00","xact_type":"grocery","usr":"Id = 1000502"},{"balance_owed":"10.00","xa
 ct_finish":"","xact_start":"2006-08-16","id":"14858","last_billing_ts":"2006-08-16 12:34","last_billing_note":"","last_billing_type":"Damaged material","last_payment_ts":"","last_payment_note":"","last_payment_type":"","total_owed":"10.00","total_paid":"0.00","xact_type":"grocery","usr":"Id = 1000502"}],
+				'items' : [
+				{"uses":"undefined","alert_message":"","author":"Annixter, Jane.","barcode":"3635300990263","call_number":"F","checkin_time":"   ","checkin_time_full":"","xact_start":"2006-08-23","xact_start_full":"2006-08-23T14:37:15-0400","circ_as_type":"","circ_id":"19907","circ_lib":"URRLS-SC","circ_modifier":"","circulate":"Yes","acp_id":"34","copy_number":"1","create_date":"2006-04-28","edit_date":"2006-08-23","deleted":"No","deposit_amount":"0.00","deposit":"No","mvr_doc_id":"13","due_date":"2006-08-23","edition":"","fine_level":"Low","stop_fines":"","stop_fines_time":"","holdable":"Yes","isbn":"","loan_duration":"Short","location":"Adult","message":"   ","opac_visible":"Yes","owning_lib":"URRLS-SC","price":"10.00","pubdate":"1961","publisher":"Longmans","ref":"No","renewal_remaining":"0","route_to":"   ","status":"Checked out","tcn":"PIN01000015 ","title":"Peace comes to Castle Oak ","xact_finish":""},
+				{"uses":"undefined","alert_message":"","author":"Josephson, Matthew","barcode":"33207002163014","call_number":"NONFIC 330.922 JOSEPHSO","checkin_time":"   ","checkin_time_full":"","xact_start":"2006-08-23","xact_start_full":"2006-08-23T14:37:23-0400","circ_as_type":"","circ_id":"19908","circ_lib":"ARL-ATH","circ_modifier":"","circulate":"Yes","acp_id":"1658","copy_number":"1","create_date":"2006-04-28","edit_date":"2006-08-23","deleted":"No","deposit_amount":"0.00","deposit":"No","mvr_doc_id":"250","due_date":"2006-09-06","edition":"","fine_level":"Low","stop_fines":"","stop_fines_time":"","holdable":"Yes","isbn":"","loan_duration":"Short","location":"Adult","message":"   ","opac_visible":"Yes","owning_lib":"ARL-ATH","price":"10.95","pubdate":"[c1934]","publisher":"Harcourt, Brace and company","ref":"No","renewal_remaining":"0","route_to":"   ","status":"Checked out","tcn":"PIN01000311 ","title":"The  robber barons :  the great American capitalists, 1861-1901","xact_fini
 sh":""},
+				{"uses":"undefined","alert_message":"","author":"Payne, Emmy","barcode":"33034001434539","call_number":"EJ PAYNE","checkin_time":"   ","checkin_time_full":"","xact_start":"2006-08-23","xact_start_full":"2006-08-23T14:36:54-0400","circ_as_type":"","circ_id":"19904","circ_lib":"SHRL-RM","circ_modifier":"","circulate":"Yes","acp_id":"6165596","copy_number":"1","create_date":"2006-04-28","edit_date":"2006-08-23","deleted":"No","deposit_amount":"0.00","deposit":"No","mvr_doc_id":"1220497","due_date":"2006-09-06","edition":"Reinforced ed.","fine_level":"Low","stop_fines":"","stop_fines_time":"","holdable":"Yes","isbn":"075872926X (BWI bdg.)","loan_duration":"Short","location":"Adult","message":"   ","opac_visible":"Yes","owning_lib":"SHRL-RM","price":"0.00","pubdate":"1944","publisher":"Houghton Mifflin","ref":"No","renewal_remaining":"0","route_to":"   ","status":"Checked out","tcn":"PIN01000377 ","title":"Katy no-pocket ","xact_finish":""},
+				{"uses":"undefined","alert_message":"","author":"Ames, Leslie","barcode":"31039000791757","call_number":"AF AME","checkin_time":"   ","checkin_time_full":"","xact_start":"2006-08-23","xact_start_full":"2006-08-23T14:37:07-0400","circ_as_type":"","circ_id":"19906","circ_lib":"ORLS-TEL","circ_modifier":"","circulate":"Yes","acp_id":"28","copy_number":"1","create_date":"2006-04-28","edit_date":"2006-08-23","deleted":"No","deposit_amount":"0.00","deposit":"No","mvr_doc_id":"8","due_date":"2006-09-06","edition":"","fine_level":"Low","stop_fines":"","stop_fines_time":"","holdable":"Yes","isbn":"","loan_duration":"Short","location":"Adult","message":"   ","opac_visible":"Yes","owning_lib":"ORLS-TEL","price":"5.95","pubdate":"","publisher":"Lenox Hill","ref":"No","renewal_remaining":"0","route_to":"   ","status":"Checked out","tcn":"PIN01000009 ","title":"King's Castle ","xact_finish":""},
+				{"uses":"undefined","alert_message":"","author":"Payne, Emmy","barcode":"33034001434539","call_number":"EJ PAYNE","checkin_time":"   ","checkin_time_full":"","xact_start":"2006-08-23","xact_start_full":"2006-08-23T14:36:54-0400","circ_as_type":"","circ_id":"19903","circ_lib":"SHRL-RM","circ_modifier":"","circulate":"Yes","acp_id":"6165596","copy_number":"1","create_date":"2006-04-28","edit_date":"2006-08-23","deleted":"No","deposit_amount":"0.00","deposit":"No","mvr_doc_id":"1220497","due_date":"2006-09-06","edition":"Reinforced ed.","fine_level":"Low","stop_fines":"","stop_fines_time":"","holdable":"Yes","isbn":"075872926X (BWI bdg.)","loan_duration":"Short","location":"Adult","message":"   ","opac_visible":"Yes","owning_lib":"SHRL-RM","price":"0.00","pubdate":"1944","publisher":"Houghton Mifflin","ref":"No","renewal_remaining":"0","route_to":"   ","status":"Checked out","tcn":"PIN01000377 ","title":"Katy no-pocket ","xact_finish":""}],
+				'holds' : [{"author":"Wells, H. G. ","available_time":"2006-08-03","available_timestamp":"2006-08-03T15:14:53-0400","capture_time":"2006-08-03","capture_timestamp":"2006-08-03T15:14:53-0400","current_copy":"33207003884402","edition":"","email_notify":"No","expire_time":"","fulfillment_time":"","id":"57","holdable_formats":"","isbn":"0192828266 :","notify_time":"","notify_count":"0","patron_name":"23500000023053 Stompro, Josh","phone_notify":"218-233-3757","pickup_lib_shortname":"ARL-ATH","pickup_lib":"Athens-Clarke County Library","prev_check_time":"2006-08-02T16:15:11-0400","pubdate":"1995","publisher":"Oxford University Press","request_time":"2006-05-20","request_timestamp":"2006-05-20","requestor":"1000000","selection_depth":"0","status":"Ready for pickup","tcn":"PIN03002240 ","target":"131469","title":"The  war of the worlds","transit_dest_recv_time":"","transit_dest_lib":"","transit_source":"","transit_source_send_time":"","hold_type":"T","usr":"1000567"},
+				{"author":"Kramer, Kathryn.","available_time":"2006-08-03","available_timestamp":"2006-08-03T15:32:58-0400","capture_time":"2006-08-03","capture_timestamp":"2006-08-03T15:32:58-0400","current_copy":"33207004030757","edition":"1st ed.","email_notify":"No","expire_time":"","fulfillment_time":"","id":"470","holdable_formats":"","isbn":"0375400834","notify_time":"2006-08-24T15:12:30-0400","notify_count":"1","patron_name":"21034000217210 Jenkins, George","phone_notify":"229-985-3464","pickup_lib_shortname":"ARL-ATH","pickup_lib":"Athens-Clarke County Library","prev_check_time":"2006-08-03T12:15:03-0400","pubdate":"1998","publisher":"Knopf","request_time":"2006-07-28","request_timestamp":"2006-07-28","requestor":"3","selection_depth":"0","status":"Ready for pickup","tcn":"PIN03053147 ","target":"313678","title":"Sweet water ","transit_dest_recv_time":"","transit_dest_lib":"","transit_source":"","transit_source_send_time":"","hold_type":"T","usr":"1001151"},
+				{"author":"Silva, Daniel","available_time":"2006-08-03","available_timestamp":"2006-08-03T15:39:35-0400","capture_time":"2006-08-03","capture_timestamp":"2006-08-03T15:39:35-0400","current_copy":"33207004323517","edition":"1st ed.","email_notify":"No","expire_time":"","fulfillment_time":"","id":"448","holdable_formats":"","isbn":"0375500898 (alk. paper)","notify_time":"","notify_count":"0","patron_name":"21099000002755 Broome, Sandra","phone_notify":"706-236-4632","pickup_lib_shortname":"ARL-ATH","pickup_lib":"Athens-Clarke County Library","prev_check_time":"2006-08-02T17:16:39-0400","pubdate":"c1999","publisher":"Random House","request_time":"2006-07-27","request_timestamp":"2006-07-27","requestor":"1000001","selection_depth":"0","status":"Ready for pickup","tcn":"ocm40444117 ","target":"77772","title":"The  marching season :  a novel","transit_dest_recv_time":"","transit_dest_lib":"","transit_source":"","transit_source_send_time":"","hold_type":"T","usr":"1000846"},
+				{"author":"Seuss","available_time":"2006-08-13","available_timestamp":"2006-08-13T20:55:02-0400","capture_time":"2006-08-13","capture_timestamp":"2006-08-13T20:55:02-0400","current_copy":"20070805","edition":"","email_notify":"No","expire_time":"","fulfillment_time":"","id":"1697","holdable_formats":"","isbn":"039480001X :","notify_time":"","notify_count":"0","patron_name":"4545 Tripper, Jack","phone_notify":"444-333-2222","pickup_lib_shortname":"ARL-ATH","pickup_lib":"Athens-Clarke County Library","prev_check_time":"2006-08-13T20:45:09-0400","pubdate":"1992, c1957","publisher":"Seedlings Braille Books for Children","request_time":"2006-08-13","request_timestamp":"2006-08-13","requestor":"1000000","selection_depth":"0","status":"Ready for pickup","tcn":"ocm47673093 ","target":"1534993","title":"The  cat in the hat","transit_dest_recv_time":"","transit_dest_lib":"","transit_source":"","transit_source_send_time":"","hold_type":"T","usr":"1002261"},
+				{"author":"Potter, Sally.","available_time":"2006-08-09","available_timestamp":"2006-08-09T18:06:10-0400","capture_time":"2006-08-09","capture_timestamp":"2006-08-09T18:06:10-0400","current_copy":"31001000843129","edition":"","email_notify":"No","expire_time":"","fulfillment_time":"","id":"1004","holdable_formats":"","isbn":"0783262663","notify_time":"2006-08-10T15:24:46-0400","notify_count":"12","patron_name":"2222233333 Erickson, Bill","phone_notify":"999-999-9999","pickup_lib_shortname":"ARL-ATH","pickup_lib":"Athens-Clarke County Library","prev_check_time":"2006-08-09T12:15:27-0400","pubdate":"c2001","publisher":"Universal Studios","request_time":"2006-08-08","request_timestamp":"2006-08-08","requestor":"3","selection_depth":"0","status":"Ready for pickup","tcn":"ocm48683123 ","target":"1572303","title":"The  man who cried","transit_dest_recv_time":"","transit_dest_lib":"","transit_source":"","transit_source_send_time":"","hold_type":"T","usr":"3"}],
+				'bills' : [{"balance_owed":"-5.00","xact_finish":"2006-05-08","xact_start":"2006-05-08","id":"9","last_billing_ts":"2006-05-08 18:53","last_billing_note":"test","last_billing_type":"Miscellaneous charges","last_payment_ts":"2006-05-08 18:53","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"0.00","total_paid":"5.00","xact_type":"grocery","usr":"Id = 1000502"},
+				{"balance_owed":"-5.00","xact_finish":"2006-05-08","xact_start":"2006-05-08","id":"11","last_billing_ts":"2006-05-08 19:11","last_billing_note":"test","last_billing_type":"Miscellaneous","last_payment_ts":"2006-05-08 19:12","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"0.00","total_paid":"5.00","xact_type":"grocery","usr":"Id = 1000502"},
+				{"balance_owed":"-50.00","xact_finish":"2006-05-08","xact_start":"2006-05-08","id":"18","last_billing_ts":"2006-05-08 20:20","last_billing_note":"","last_billing_type":"Miscellaneous","last_payment_ts":"2006-05-08 21:27","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"0.00","total_paid":"50.00","xact_type":"grocery","usr":"Id = 1000502"},
+				{"balance_owed":"1.00","xact_finish":"2006-06-14","xact_start":"2006-06-14","id":"451","last_billing_ts":"2006-06-14 16:49","last_billing_note":"SYSTEM GENERATED","last_billing_type":"Lost Materials","last_payment_ts":"2006-06-14 16:49","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"6.00","total_paid":"5.00","xact_type":"circulation","usr":"Id = 1000502"},
+				{"balance_owed":"-1.00","xact_finish":"2006-06-17","xact_start":"2006-06-17","id":"3689","last_billing_ts":"2006-06-17 04:01","last_billing_note":"","last_billing_type":"Miscellaneous","last_payment_ts":"2006-06-17 18:51","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"10.00","total_paid":"11.00","xact_type":"grocery","usr":"Id = 1000502"},
+				{"balance_owed":".66","xact_finish":"","xact_start":"2006-06-27","id":"5589","last_billing_ts":"2006-08-22 00:00","last_billing_note":"Overdue Fine","last_billing_type":"Overdue materials","last_payment_ts":"2006-09-04 17:31","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"5.60","total_paid":"4.94","xact_type":"circulation","usr":"Id = 1000502"},
+				{"balance_owed":".70","xact_finish":"","xact_start":"2006-06-27","id":"5593","last_billing_ts":"2006-08-22 00:00","last_billing_note":"Overdue Fine","last_billing_type":"Overdue materials","last_payment_ts":"2006-08-16 11:01","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"5.50","total_paid":"4.80","xact_type":"circulation","usr":"Id = 1000502"},
+				{"balance_owed":"5.00","xact_finish":"","xact_start":"2006-08-16","id":"14834","last_billing_ts":"2006-08-16 12:25","last_billing_note":"","last_billing_type":"Damaged material","last_payment_ts":"","last_payment_note":"","last_payment_type":"","total_owed":"5.00","total_paid":"0.00","xact_type":"grocery","usr":"Id = 1000502"},
+				{"balance_owed":"10.00","xact_finish":"","xact_start":"2006-08-16","id":"14858","last_billing_ts":"2006-08-16 12:34","last_billing_note":"","last_billing_type":"Damaged material","last_payment_ts":"","last_payment_note":"","last_payment_type":"","total_owed":"10.00","total_paid":"0.00","xact_type":"grocery","usr":"Id = 1000502"}],
 				'payment' : [{"bill_id":5559,"payment":"-0.04","last_billing_type":"Overdue materials","last_billing_note":"Overdue Fine","title":"Hali Bote Azikaban de tao fan","barcode":"a16"},{"bill_id":5589,"payment":"0.04","last_billing_type":"Overdue materials","last_billing_note":"Overdue Fine","title":"Hali Bote Azikaban de tao fan","barcode":"a47"}],
 				'patrons' : [],
-				'transits' : [{"transit_item_author":"Arvetis, Chris.","transit_item_barcode":"3947801748348","transit_item_callnumber":"JE ARV","transit_item_title":"Why do birds sing?","transit_target_copy":"2385751","transit_dest_lib":"PIED-WIN","transit_id":"25","transit_source":"ARL-ATH","transit_source_send_time":"2006-05-24T16:37:09-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Pine, Tillie S.","transit_item_barcode":"3635300990762","transit_item_callnumber":"F","transit_item_title":"Water all around ","transit_target_copy":"1","transit_dest_lib":"URRLS-SC","transit_id":"26","transit_source":"ARL-ATH","transit_source_send_time":"2006-05-27T22:49:40-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_
 type":"   "},{"transit_item_author":"","transit_item_barcode":"31057000861941","transit_item_callnumber":"CD J 781.5246 CASPE","transit_item_title":"Casper's spookiest songs and sounds  10 spooky songs plus creepy sound effects","transit_target_copy":"7923932","transit_dest_lib":"WGRL-LS","transit_id":"98","transit_source":"ARL-ATH","transit_source_send_time":"2006-06-29T16:34:38-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Davidson, MaryJanice.","transit_item_barcode":"31027005649112","transit_item_callnumber":"AC DAV","transit_item_title":"Undead and unreturnable ","transit_target_copy":"7924995","transit_dest_lib":"HCLS-LG","transit_id":"100","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-07T16:02:32-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefin
 ed undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Evanovich, Janet.","transit_item_barcode":"31001001097295","transit_item_callnumber":"813/.54","transit_item_title":"Two for the dough","transit_target_copy":"8000335","transit_dest_lib":"ARL-BOG","transit_id":"102","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-11T12:12:11-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Edwards, Anne","transit_item_barcode":"39021423853564","transit_item_callnumber":"780.92 STREISAND","transit_item_title":"Streisand a biography","transit_target_copy":"949781","transit_dest_lib":"ECGR-BKM","transit_id":"110","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-14T10:00:01-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ",
 "patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Riese, Randall.","transit_item_barcode":"31025900460205","transit_item_callnumber":"921 STREISAND 1993","transit_item_title":"Her name is Barbra an intimate portrait of the real Barbra Streisand","transit_target_copy":"2210566","transit_dest_lib":"HALL-BPL","transit_id":"112","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-14T10:01:39-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Rowling, J. K.","transit_item_barcode":"a45","transit_item_callnumber":"JROWLING2","transit_item_title":"Hali Bote Azikaban de tao fan","transit_target_copy":"8000297","transit_dest_lib":"WGRL-LS","transit_id":"118","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-19T13:52:38
 -0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Some Author","transit_item_barcode":"321","transit_item_callnumber":"UNCATALOGED","transit_item_title":"Big Book","transit_target_copy":"8000387","transit_dest_lib":"ROCK-NG","transit_id":"119","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-19T13:58:21-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Thomas, Joyce Carol.","transit_item_barcode":"31036000522216","transit_item_callnumber":"E THOMAS","transit_item_title":"The  gospel Cinderella","transit_target_copy":"7422951","transit_dest_lib":"NCLS-COVTN","transit_id":"200","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-25T15:20
 :00-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Robinson, Barbara","transit_item_barcode":"31036000545159","transit_item_callnumber":"J ROBINSON","transit_item_title":"The  best Halloween ever","transit_target_copy":"7487432","transit_dest_lib":"NCLS-COVTN","transit_id":"206","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-25T15:25:44-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Robinson, Barbara","transit_item_barcode":"31036000545142","transit_item_callnumber":"J ROBINSON","transit_item_title":"The  best Halloween ever","transit_target_copy":"7487431","transit_dest_lib":"NCLS-COVTN","transit_id":"207","transit_source":"ARL-ATH","tran
 sit_source_send_time":"2006-07-25T15:25:49-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Grafton, Sue.","transit_item_barcode":"31036000527900","transit_item_callnumber":"F GRAFTON","transit_item_title":"\"H\" is for homicide","transit_target_copy":"7273824","transit_dest_lib":"NCLS-COVTN","transit_id":"208","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-25T15:25:58-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Beaumont, Karen.","transit_item_barcode":"31036000521853","transit_item_callnumber":"E BEAUMONT","transit_item_title":"I like myself!","transit_target_copy":"7387328","transit_dest_lib":"NCLS-COVTN","transit_id":"211","transit_sou
 rce":"ARL-ATH","transit_source_send_time":"2006-07-25T15:26:08-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Sandler, Martin W.","transit_item_barcode":"31036000522612","transit_item_callnumber":"J 388.42 SANDLER","transit_item_title":"Straphanging in the USA trolleys and subways in American life","transit_target_copy":"7360328","transit_dest_lib":"NCLS-COVTN","transit_id":"212","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-25T15:35:17-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Bohjalian, Christopher A.","transit_item_barcode":"31036000538303","transit_item_callnumber":"F BOHJALIAN","transit_item_title":"Before you know kindness :  a
  novel","transit_target_copy":"7544549","transit_dest_lib":"NCLS-COVTN","transit_id":"218","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-26T10:23:20-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},],
+				'transits' : [{"transit_item_author":"Arvetis, Chris.","transit_item_barcode":"3947801748348","transit_item_callnumber":"JE ARV","transit_item_title":"Why do birds sing?","transit_target_copy":"2385751","transit_dest_lib":"PIED-WIN","transit_id":"25","transit_source":"ARL-ATH","transit_source_send_time":"2006-05-24T16:37:09-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+				{"transit_item_author":"Pine, Tillie S.","transit_item_barcode":"3635300990762","transit_item_callnumber":"F","transit_item_title":"Water all around ","transit_target_copy":"1","transit_dest_lib":"URRLS-SC","transit_id":"26","transit_source":"ARL-ATH","transit_source_send_time":"2006-05-27T22:49:40-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+				{"transit_item_author":"","transit_item_barcode":"31057000861941","transit_item_callnumber":"CD J 781.5246 CASPE","transit_item_title":"Casper's spookiest songs and sounds  10 spooky songs plus creepy sound effects","transit_target_copy":"7923932","transit_dest_lib":"WGRL-LS","transit_id":"98","transit_source":"ARL-ATH","transit_source_send_time":"2006-06-29T16:34:38-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+				{"transit_item_author":"Davidson, MaryJanice.","transit_item_barcode":"31027005649112","transit_item_callnumber":"AC DAV","transit_item_title":"Undead and unreturnable ","transit_target_copy":"7924995","transit_dest_lib":"HCLS-LG","transit_id":"100","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-07T16:02:32-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+				{"transit_item_author":"Evanovich, Janet.","transit_item_barcode":"31001001097295","transit_item_callnumber":"813/.54","transit_item_title":"Two for the dough","transit_target_copy":"8000335","transit_dest_lib":"ARL-BOG","transit_id":"102","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-11T12:12:11-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+				{"transit_item_author":"Edwards, Anne","transit_item_barcode":"39021423853564","transit_item_callnumber":"780.92 STREISAND","transit_item_title":"Streisand a biography","transit_target_copy":"949781","transit_dest_lib":"ECGR-BKM","transit_id":"110","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-14T10:00:01-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+				{"transit_item_author":"Riese, Randall.","transit_item_barcode":"31025900460205","transit_item_callnumber":"921 STREISAND 1993","transit_item_title":"Her name is Barbra an intimate portrait of the real Barbra Streisand","transit_target_copy":"2210566","transit_dest_lib":"HALL-BPL","transit_id":"112","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-14T10:01:39-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+				{"transit_item_author":"Rowling, J. K.","transit_item_barcode":"a45","transit_item_callnumber":"JROWLING2","transit_item_title":"Hali Bote Azikaban de tao fan","transit_target_copy":"8000297","transit_dest_lib":"WGRL-LS","transit_id":"118","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-19T13:52:38-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+				{"transit_item_author":"Some Author","transit_item_barcode":"321","transit_item_callnumber":"UNCATALOGED","transit_item_title":"Big Book","transit_target_copy":"8000387","transit_dest_lib":"ROCK-NG","transit_id":"119","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-19T13:58:21-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+				{"transit_item_author":"Thomas, Joyce Carol.","transit_item_barcode":"31036000522216","transit_item_callnumber":"E THOMAS","transit_item_title":"The  gospel Cinderella","transit_target_copy":"7422951","transit_dest_lib":"NCLS-COVTN","transit_id":"200","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-25T15:20:00-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+				{"transit_item_author":"Robinson, Barbara","transit_item_barcode":"31036000545159","transit_item_callnumber":"J ROBINSON","transit_item_title":"The  best Halloween ever","transit_target_copy":"7487432","transit_dest_lib":"NCLS-COVTN","transit_id":"206","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-25T15:25:44-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+				{"transit_item_author":"Robinson, Barbara","transit_item_barcode":"31036000545142","transit_item_callnumber":"J ROBINSON","transit_item_title":"The  best Halloween ever","transit_target_copy":"7487431","transit_dest_lib":"NCLS-COVTN","transit_id":"207","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-25T15:25:49-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+				{"transit_item_author":"Grafton, Sue.","transit_item_barcode":"31036000527900","transit_item_callnumber":"F GRAFTON","transit_item_title":"\"H\" is for homicide","transit_target_copy":"7273824","transit_dest_lib":"NCLS-COVTN","transit_id":"208","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-25T15:25:58-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+				{"transit_item_author":"Beaumont, Karen.","transit_item_barcode":"31036000521853","transit_item_callnumber":"E BEAUMONT","transit_item_title":"I like myself!","transit_target_copy":"7387328","transit_dest_lib":"NCLS-COVTN","transit_id":"211","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-25T15:26:08-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+				{"transit_item_author":"Sandler, Martin W.","transit_item_barcode":"31036000522612","transit_item_callnumber":"J 388.42 SANDLER","transit_item_title":"Straphanging in the USA trolleys and subways in American life","transit_target_copy":"7360328","transit_dest_lib":"NCLS-COVTN","transit_id":"212","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-25T15:35:17-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+				{"transit_item_author":"Bohjalian, Christopher A.","transit_item_barcode":"31036000538303","transit_item_callnumber":"F BOHJALIAN","transit_item_title":"Before you know kindness :  a novel","transit_target_copy":"7544549","transit_dest_lib":"NCLS-COVTN","transit_id":"218","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-26T10:23:20-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},],
 				'offline_checkout' : [],
 				'offline_checkin' : [],
 				'offline_renew' : [],
@@ -176,15 +209,24 @@
 									win.open('data:text/html,'
 										+ window.escape(
 											'<html style="width: 600; height: 400;">'
-											+ '<head><title>Template Macros</title></head>'
+											+ '<head><title>' 
+											+ document.getElementById('circStrings').getString('staff.circ.print_list_template.window.title')
+											+ '</title></head>'
 											+ '<body onload="document.getElementById(\'btn\').focus()">'
-											+ '<h1>General:</h1>'
-											+ '<p>%PINES_CODE%, %TODAY%, %STAFF_FIRSTNAME%, %STAFF_LASTNAME%, '
+											+ '<h1>' +
+											+ document.getElementById('circStrings').getString('staff.circ.print_list_template.window.heading')
+											+ '</h1>'
+											+ '<p>%SHORTNAME%, %TODAY%, %STAFF_FIRSTNAME%, %STAFF_LASTNAME%, '
 											+ '%PATRON_FIRSTNAME%, %LIBRARY%</p>'
-											+ '<h1>For type: '
-											+ template_type + '</h1>'
-											+ '<p>' + macro_string + '</p>'
-											+ '<button id="btn" onclick="window.close()">Close Window</button>'
+											+ '<h1>'
+											+ document.getElementById('circStrings').getFormattedString('staff.circ.print_list_template.window.template_type', [template_type])
+											+ '</h1>'
+											+ '<p>' 
+											+ macro_string 
+											+ '</p>'
+											+ '<button id="btn" onclick="window.close()">'
+											+ document.getElementById('circStrings').getString('staff.circ.print_list_template.window.close')
+											+ '</button>'
 											+ '</body></html>'
 										), 'title', 'chrome,resizable');
 								} catch(E) {
@@ -274,8 +316,8 @@
 			JSAN.use('util.print'); var print = new util.print();
 			print.tree_list( params );
 		} catch(E) {
-			this.error.sdump('D_ERROR','preview: ' + E);
-			alert('preview: ' + E);
+			this.error.sdump('D_ERROR', document.getElementById('circStrings').getString('staff.circ.print_list_template.preview') + ' ' + E);
+			alert(document.getElementById('circStrings').getString('staff.circ.print_list_template.preview') + ' ' + E);
 		}
 	},
 
@@ -289,7 +331,7 @@
 		netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
 		JSAN.use('util.file'); var file = new util.file('print_list_templates');
 		file.set_object(obj.data.print_list_templates); file.close();
-		alert('Template Saved\n' + js2JSON(obj.data.print_list_templates[name]));
+		alert(document.getElementById('circStrings').getString('staff.circ.print_list_template.save') + '\n' + js2JSON(obj.data.print_list_templates[name]));
 	},
 
 	'export_templates' : function() {
@@ -297,10 +339,10 @@
 			var obj = this;
 			netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
 			JSAN.use('util.file'); var f = new util.file('');
-            f.export_file( { 'title' : 'Save Templates File As', 'data' : obj.data.print_list_templates } );
+            f.export_file( { 'title' : document.getElementById('circStrings').getString('staff.circ.print_list_template.save_as'), 'data' : obj.data.print_list_templates } );
 
 		} catch(E) {
-			this.error.standard_unexpected_error_alert('Error exporting templates',E);
+			this.error.standard_unexpected_error_alert(document.getElementById('circStrings').getString('staff.circ.print_list_template.export.error'),E);
 		}
 	},
 
@@ -309,8 +351,8 @@
 			var obj = this;
 			netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
 			JSAN.use('util.file'); var f = new util.file('');
-            var temp = f.import_file( { 'title' : 'Import Templates File' } );
-            if (!temp) return;
+            var temp = f.import_file( { 'title' : document.getElementById('circStrings').getString('staff.circ.print_list_template.import') } );
+            if (!temp) { return; }
             var s = '';
             function set_t(k,v) {
                 obj.data.print_list_templates[k] = v;
@@ -318,15 +360,15 @@
             }
             for (var i in temp) { set_t(i,temp[i]); }
             obj.data.stash('print_list_templates');
-            alert('Imported these templates: ' + s);
+            alert(document.getElementById('circStrings').getFormattedString('staff.circ.print_list_template.import_results', [s]));
             if (xulG) { 
                 xulG.set_tab(xulG.url_prefix(urls.XUL_PRINT_LIST_TEMPLATE_EDITOR), {}, {});
             } else {
-                alert('Please reload this interface.');
+                alert(document.getElementById('circStrings').getString('staff.circ.print_list_template.reload'));
             }
 	
 		} catch(E) {
-			this.error.standard_unexpected_error_alert('Error importing templates',E);
+			this.error.standard_unexpected_error_alert(document.getElementById('circStrings').getString('staff.circ.print_list_template.import.error'),E);
 		}
 	},
 

Modified: trunk/Open-ILS/xul/staff_client/server/circ/print_list_template_editor.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/circ/print_list_template_editor.xul	2008-02-07 22:06:26 UTC (rev 8695)
+++ trunk/Open-ILS/xul/staff_client/server/circ/print_list_template_editor.xul	2008-02-07 22:39:23 UTC (rev 8696)
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!-- Application: Evergreen Staff Client -->
 <!-- Screen: Example Template for remote xul -->
 
@@ -11,7 +11,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-	<!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+	<!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
@@ -35,7 +35,9 @@
 		function my_init() {
 			try {
 				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-		                if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); }
+				if (typeof JSAN == 'undefined') {
+					throw( document.getElementById("commonStrings").getString('common.jsan.missing') );
+				}
 				JSAN.errorLevel = "die"; // none, warn, or die
 				JSAN.addRepository('/xul/server/');
 				JSAN.use('util.error'); g.error = new util.error();
@@ -50,12 +52,11 @@
 				);
 
 				if (typeof window.xulG == 'object' && typeof window.xulG.set_tab_name == 'function') {
-					try { window.xulG.set_tab_name('Receipt Template Editor'); } catch(E) { alert(E); }
+					try { window.xulG.set_tab_name(document.getElementById('circStrings').getString('staff.circ.print_list_template.tab_name')); } catch(E) { alert(E); }
 				}
 
 			} catch(E) {
-				var err_msg = "!! This software has encountered an error.  Please tell your friendly " +
-					"system administrator or software developer the following:\ncirc/print_list.xul\n" + E + '\n';
+				var err_msg = document.getElementById("commonStrings").getFormattedString('common.exception', ['circ/print_list_template_editor.xul', E]);
 				try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
 				alert(err_msg);
 			}
@@ -64,57 +65,59 @@
 	]]>
 	</script>
 
+	<messagecatalog id="circStrings" src="/xul/server/locale/<!--#echo var='locale'-->/circ.properties" />
+
 	<commandset id="print_list_cmds">
 		<command id="cmd_broken" />
 	</commandset>
 
 	<groupbox id="main" flex="1">
-		<caption label="Templates" />
+		<caption label="&staff.circ.print_list.main.label;" />
 		<hbox id="top_ui">
 			<groupbox flex="1">
-				<caption label="ID" />
+				<caption label="&staff.circ.print_list.top_ui.label;" />
 				<hbox>
-					<label value="Name" accesskey="N" control="template_name_menu" />
+					<label value="&staff.circ.print_list.top_ui.name.label;" accesskey="&staff.circ.print_list.top_ui.name.accesskey;" control="template_name_menu" />
 					<hbox id="template_name_menu_placeholder" flex="1"/>
 				</hbox>
 				<hbox>
-					<label value="Type" />
+					<label value="&staff.circ.print_list.top_ui.type.label;" />
 					<hbox id="template_type_menu_placeholder" />
 				</hbox>
 			</groupbox>
 			<groupbox orient="horizontal">
-				<caption label="Actions" />
+				<caption label="&staff.circ.print_list.top_ui.actions.label;" />
 				<vbox>
-					<button id="preview" label="Preview" accesskey="P" />
-					<button id="macros" label="Macros" accesskey="M" />
+					<button id="preview" label="&staff.circ.print_list.top_ui.preview.label;" accesskey="&staff.circ.print_list.top_ui.preview.accesskey;" />
+					<button id="macros" label="&staff.circ.print_list.top_ui.macros.label;" accesskey="&staff.circ.print_list.top_ui.macros.accesskey;" />
 				</vbox>
 				<vbox>
-					<button id="default" label="Default" accesskey="D" />
-					<button id="save" label="Save Locally" accesskey="S" />
+					<button id="default" label="&staff.circ.print_list.top_ui.default.label;" accesskey="&staff.circ.print_list.top_ui.default.accesskey;" />
+					<button id="save" label="&staff.circ.print_list.top_ui.save.label;" accesskey="&staff.circ.print_list.top_ui.save.accesskey;" />
 				</vbox>
 				<vbox>
-					<description>Be sure to "Save Locally" before export</description>
-					<button id="export" label="Export" accesskey="E" />
-					<button id="import" label="Import" accesskey="I" />
+					<description>&staff.circ.print_list.top_ui.description;</description>
+					<button id="export" label="&staff.circ.print_list.top_ui.description.export.label;" accesskey="&staff.circ.print_list.top_ui.description.export.accesskey;" />
+					<button id="import" label="&staff.circ.print_list.top_ui.description.import.label;" accesskey="&staff.circ.print_list.top_ui.description.import.accesskey;" />
 				</vbox>
 			</groupbox>
 		</hbox>
 		<hbox flex="1">
 			<groupbox flex="1">
-				<caption label="Preview" />
+				<caption label="&staff.circ.print_list.top_ui.preview.label;" />
 				<iframe id="sample" flex="1"/>
 			</groupbox>
 			<vbox flex="1">
 				<groupbox flex="1">
-					<caption label="Header"/>
+					<caption label="&staff.circ.print_list.header.label;"/>
 					<textbox id="header" multiline="true" flex="1"/>
 				</groupbox>
 				<groupbox flex="1">
-					<caption label="Line Item"/>
+					<caption label="&staff.circ.print_list.line_item.label;"/>
 					<textbox id="line_item" multiline="true" flex="1"/>
 				</groupbox>
 				<groupbox flex="1">
-					<caption label="Footer"/>
+					<caption label="&staff.circ.print_list.footer.label;"/>
 					<textbox id="footer" multiline="true" flex="1"/>
 				</groupbox>
 			</vbox>

Modified: trunk/Open-ILS/xul/staff_client/server/locale/en-US/circ.properties
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/locale/en-US/circ.properties	2008-02-07 22:06:26 UTC (rev 8695)
+++ trunk/Open-ILS/xul/staff_client/server/locale/en-US/circ.properties	2008-02-07 22:39:23 UTC (rev 8696)
@@ -75,6 +75,7 @@
 staff.circ.copy_details.user_details=%1$s, %2$s : %3$s
 staff.circ.copy_details.bad_hold_status=This item is not captured for a hold, however its status is incorrectly set to "On Holds Shelf".  Please check this item in to correct the status.
 staff.circ.copy_details.no_hold=This item is not captured for a hold.
+staff.circ.copy_status.tab_name=Item Status
 staff.circ.copy_status.action.complete=Action complete.
 staff.circ.copy_status.sel_checkin.error=Checkin did not likely happen.
 staff.circ.copy_status.cmd_replace_barcode.error=Barcode %1$s was not likely replaced.
@@ -132,3 +133,48 @@
 staff.circ.copy_status.status.hold=Item is captured for a Hold.
 staff.circ.copy_status.status.transit=Item is in Transit.
 staff.circ.copy_status.status.circ=Item is circulating.
+staff.circ.hold_capture.print.to_printer=To Printer
+# pad this with whitespace to align with the rest of the staff.circ.hold_capture.print.* entries
+staff.circ.hold_capture.print.barcode= Barcode:
+# pad this with whitespace to align with the rest of the staff.circ.hold_capture.print.* entries
+staff.circ.hold_capture.print.title=   Title:
+# pad this with whitespace to align with the rest of the staff.circ.hold_capture.print.* entries
+staff.circ.hold_capture.print.author=  Author:
+# pad this with whitespace to align with the rest of the staff.circ.hold_capture.print.* entries
+staff.circ.hold_capture.print.route_to=Route to:
+# pad this with whitespace to align with the rest of the staff.circ.hold_capture.print.* entries
+staff.circ.hold_capture.print.patron=  Patron:
+staff.circ.hold_capture.calling_external=circ.hold_capture: Calling external .on_hold_capture()
+staff.circ.hold_capture.no_external=circ.hold_capture: No external .on_hold_capture()
+staff.circ.hold_capture.capture_failed=Could not capture hold.
+staff.circ.hold_capture.error=FIXME: need special alert and error handling
+staff.circ.in_house_use.tab_name=In-House Use
+staff.circ.in_house_use.barcode=Barcode:
+staff.circ.in_house_use.noncat_sort_error=error in noncat sorting:
+staff.circ.in_house_use.noncataloged=Non-Cataloged
+staff.circ.in_house_use.items_dump=items = 
+staff.circ.in_house_use.confirm_multiple=Are you sure you want to mark %1$s as having been used %2$s times?
+staff.circ.in_house_use.confirm_multiple.title=In-House Use Verification
+staff.circ.in_house_use.yes=Yes
+staff.circ.in_house_use.no=No
+# adjust Circulation -> Offline Interface to match your translation in lang.dtd
+staff.circ.in_house_use.failed.verbose=In House Use Failed.  If you wish to use the offline interface, in the top menubar select Circulation -> Offline Interface
+staff.circ.in_house_use.failed=In House Use Failed
+staff.circ.in_house_use.ok=OK
+staff.circ.in_house_use.external=circ.in_house_use: Calling external .on_in_house_use()
+staff.circ.in_house_use.no_external=circ.in_house_use: No external .on_in_house_use()
+staff.circ.in_house_use.on_failure.external=circ.in_house_use: Calling external .on_failure()
+staff.circ.in_house_use.on_failure.no_external=circ.in_house_use: No external .on_failure()
+staff.circ.print_list_template.window.title=Template Macros
+staff.circ.print_list_template.window.heading=General:
+staff.circ.print_list_template.window.template_type=For type: %1$s
+staff.circ.print_list_template.window.close=Close Window
+staff.circ.print_list_template.preview=preview: 
+staff.circ.print_list_template.save=Template Saved
+staff.circ.print_list_template.save_as=Save Templates File As
+staff.circ.print_list_template.export.error=Error exporting templates
+staff.circ.print_list_template.import=Import Templates File
+staff.circ.print_list_template.import_results=Imported these templates: %1$s
+staff.circ.print_list_template.reload=Please reload this interface.
+staff.circ.print_list_template.import.error=Error exporting templates
+staff.circ.print_list_template.tab_name=Receipt Template Editor



More information about the open-ils-commits mailing list