continuing to transfer github files/patches
authorChris Sharp <csharp@georgialibraries.org>
Sun, 30 Oct 2011 14:20:19 +0000 (10:20 -0400)
committerChris Sharp <csharp@georgialibraries.org>
Mon, 28 Nov 2011 19:35:58 +0000 (14:35 -0500)
26 files changed:
Open-ILS/examples/apache/startup.pl
Open-ILS/examples/apache/startup.pl.orig [new file with mode: 0755]
Open-ILS/examples/pines-examples/homesearch.xml.survey [new file with mode: 0644]
Open-ILS/examples/pines-examples/lib_ips.txt-pines.example [new file with mode: 0644]
Open-ILS/examples/pines-examples/pines-circ/circ_duration.js.example [new file with mode: 0755]
Open-ILS/examples/pines-examples/pines-circ/circ_groups.js.example [new file with mode: 0755]
Open-ILS/examples/pines-examples/pines-circ/circ_item_config.js.example [new file with mode: 0755]
Open-ILS/examples/pines-examples/pines-circ/circ_lib.js.example [new file with mode: 0755]
Open-ILS/examples/pines-examples/pines-circ/circ_permit_copy.js.example [new file with mode: 0755]
Open-ILS/examples/pines-examples/pines-circ/circ_permit_hold.js.example [new file with mode: 0755]
Open-ILS/examples/pines-examples/pines-circ/circ_permit_patron.js.example [new file with mode: 0755]
Open-ILS/examples/pines-examples/pines-circ/circ_permit_renew.js.example [new file with mode: 0755]
Open-ILS/examples/pines-examples/pines-survey-down.sh [new file with mode: 0755]
Open-ILS/examples/pines-examples/pines-survey-up.sh [new file with mode: 0755]
Open-ILS/examples/pines-examples/pines-zips.txt.example [new file with mode: 0644]
Open-ILS/examples/templates/overdue_combined_xml_pines.example [new file with mode: 0644]
Open-ILS/web/opac/extras/slimpac/advanced.html
Open-ILS/web/opac/extras/slimpac/start.html
Open-ILS/web/opac/locale/en-US/opac.dtd
Open-ILS/web/opac/skin/default/js/rdetail.js
Open-ILS/web/opac/skin/default/js/result_common.js
Open-ILS/web/opac/skin/default/xml/common/logo.xml
Open-ILS/web/opac/skin/default/xml/footer.xml
Open-ILS/web/opac/skin/default/xml/home/homesearch.xml
Open-ILS/web/opac/theme/default/css/colors.css
Open-ILS/xul/staff_client/server/index.xhtml

index 6f1a742..d62a0a9 100755 (executable)
@@ -14,8 +14,8 @@ use OpenILS::WWW::IDL2js ('/openils/conf/opensrf_core.xml');
 # - actor.org_unit.shortname <start_ip> <end_ip>
 # - e.g.  LIB123 10.0.0.1 10.0.0.254
 
-#use OpenILS::WWW::Redirect qw(/openils/conf/opensrf_core.xml);
-#OpenILS::WWW::Redirect->parse_ips_file('/openils/conf/lib_ips.txt');
+use OpenILS::WWW::Redirect qw(/openils/conf/opensrf_core.xml);
+OpenILS::WWW::Redirect->parse_ips_file('/openils/conf/lib_ips.txt');
 
 
 
diff --git a/Open-ILS/examples/apache/startup.pl.orig b/Open-ILS/examples/apache/startup.pl.orig
new file mode 100755 (executable)
index 0000000..6f1a742
--- /dev/null
@@ -0,0 +1,23 @@
+#!/usr/bin/perl
+use OpenILS::WWW::Exporter qw( /openils/conf/opensrf_core.xml );
+use OpenILS::WWW::SuperCat qw( /openils/conf/opensrf_core.xml );
+use OpenILS::WWW::AddedContent qw( /openils/conf/opensrf_core.xml );
+use OpenILS::WWW::Proxy ('/openils/conf/opensrf_core.xml');
+use OpenILS::WWW::Vandelay qw( /openils/conf/opensrf_core.xml );
+use OpenILS::WWW::TemplateBatchBibUpdate qw( /openils/conf/opensrf_core.xml );
+use OpenILS::WWW::EGWeb ('/openils/conf/oils_web.xml');
+use OpenILS::WWW::PasswordReset ('/openils/conf/opensrf_core.xml');
+use OpenILS::WWW::IDL2js ('/openils/conf/opensrf_core.xml');
+
+# - Uncoment the following 2 lines to make use of the IP redirection code
+# - The IP file should to contain a map with the following format:
+# - actor.org_unit.shortname <start_ip> <end_ip>
+# - e.g.  LIB123 10.0.0.1 10.0.0.254
+
+#use OpenILS::WWW::Redirect qw(/openils/conf/opensrf_core.xml);
+#OpenILS::WWW::Redirect->parse_ips_file('/openils/conf/lib_ips.txt');
+
+
+
+1;
+
diff --git a/Open-ILS/examples/pines-examples/homesearch.xml.survey b/Open-ILS/examples/pines-examples/homesearch.xml.survey
new file mode 100644 (file)
index 0000000..9d72f6e
--- /dev/null
@@ -0,0 +1,117 @@
+
+<div id='canvas_main' class='home_search canvas'
+       style='-moz-border-radius: 6px; padding: 6px; margin-top: 65px;' 
+       xmlns="http://www.w3.org/1999/xhtml" xmlns:xi="http://www.w3.org/2001/XInclude">
+
+       <!-- load my js -->
+       <script language='javascript' type='text/javascript'
+               src="<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/default/js/depth_selector.js"> </script>
+       <script language='javascript' type='text/javascript'
+               src="<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/default/js/search_bar.js"> </script>
+
+       <script language='javascript' type='text/javascript'>
+               config.ids.searchbar = {};
+               config.css.searchbar = {};
+               config.ids.searchbar.text                               = 'search_box'; 
+               config.ids.searchbar.submit                     = 'search_submit';      
+               config.ids.searchbar.type_selector      = 'search_type_selector';
+               config.ids.searchbar.depth_selector     = 'depth_selector';
+               config.ids.searchbar.form_selector      = 'form_selector';
+               config.ids.searchbar.extra_row          = 'searchbar_extra';
+               config.ids.searchbar.main_row                   = 'searchbar_main_row';
+               config.ids.searchbar.table                              = 'searchbar_table';
+               config.ids.searchbar.location_tag       = 'search_location_tag_link';
+               config.ids.searchbar.lib_sel_span       = 'lib_selector_span';
+               config.ids.searchbar.lib_sel_link       = 'lib_selector_link';
+               config.ids.searchbar.depth_sel_span     = 'depth_selector_span';
+       </script>
+
+
+       <div style='width: 100%; text-align: center'>
+               <img src='<!--#echo var="OILS_BASE"-->/images/main_logo.jpg' />
+       </div>
+
+       <style>.rowpad { height: 20px; }</style>
+
+       <table id='frontsearch_table' height='100%' width='100%' 
+               style='margin-top: 10px; border-collapse: collapse;'>
+
+               <tbody>
+
+                       <tr class='color_3'>
+
+                               <script language='javascript' type='text/javascript'>
+                                       config.ids.common.now_searching = 'now_searching_location';
+                               </script>
+
+                               <td style='padding: 6px;' class='border_5' align='center'>
+                                       <span>&opac.search.nowSearching;</span>
+                                       <span style='padding: 1px;' id='now_searching_location'>  </span>
+                               </td>
+                       </tr>
+
+
+                       <tr class='rowpad'><td><div style='width: 100%; color: red; font-weight: bold; text-align: center'><p><a href='http://www.surveymonkey.com/s/pinesannualsurvey2011'>Click Here</a> to take the PINES Annual Survey!</p></div></td></tr>
+
+                       <tr>
+                               <td nowrap='nowrap' align='center' class='color_1 border_5'>
+                                       <input id='search_box' style='width: 300px;' type='text' />
+                                       <span style='padding-left: 6px;'>
+                                               <input type='button' style='width: 40px;' id='search_submit' value='Go!' />
+                                       </span>
+                               </td>
+                       </tr>
+
+                       <tr class='rowpad'><td></td></tr>
+
+                       <tr class='color_3 border_5'>
+
+                               <td nowrap='nowrap' align='center' style='padding: 4px;'>
+
+                                       <span style='padding-right:40px;'>
+                                               <!--#include virtual="../common/stypes_selector.xml"-->
+                                       </span>
+
+                                       <span>
+                                               <!--
+                                               <span>&common.format;: </span>
+                                               -->
+                                               <!--#set var='FORM_SEL_ID' value='form_selector'-->
+                                               <!--#include virtual="../common/format_selector.xml"-->
+                                       </span>
+
+                               </td>
+                       </tr>
+
+                       <tr class='rowpad'><td></td></tr>
+
+                       <tr class='color_1 border_5'>
+                               <td align='center' style='padding: 4px; padding-bottom: 6px;'>
+                                       <span style='padding-right: 15px;'>
+                                               <a id='home_adv_search_link' href='javascript:void(0);'>&opac.navigate.advanced;</a></span>
+                                       <span>
+                                               <span class='hide_me' id='depth_selector_span'>
+                                                       <select id='depth_selector' >
+                                                               <option value='new'>&opac.navigate.selectNewOrg;...</option>
+                                                       </select>
+                                               </span>
+                                               <span class='hide_me' id='lib_selector_span'>
+                                                       <a id='lib_selector_link' href='javascript:void(0)'>&opac.navigate.selectOrg;</a>
+                                               </span>
+                                       </span>
+                                       <span style='padding-left: 15px;'>
+                                               <a id='home_myopac_link' href='javascript:void(0);'>&opac.navigate.myopac;</a>
+                                       </span>
+                               </td>
+                       </tr>
+
+               </tbody>
+       </table>
+
+</div>
+
+
+
+
+
+
diff --git a/Open-ILS/examples/pines-examples/lib_ips.txt-pines.example b/Open-ILS/examples/pines-examples/lib_ips.txt-pines.example
new file mode 100644 (file)
index 0000000..7b2eebf
--- /dev/null
@@ -0,0 +1,446 @@
+ARL-ATH        168.12.0.1      168.12.0.255
+ARL-ATH        168.12.1.1      168.12.1.254
+ARL-ATH  168.24.85.36 168.24.85.38 
+ARL-ATH        168.8.15.1      168.8.15.255
+ARL-ATH        192.168.100.1   192.168.100.254
+ARL-ATH  68.156.6.1 68.156.6.254
+ARL-BOG        168.12.3.1      168.12.3.254
+ARL-BOG        168.8.14.193    168.8.14.255
+ARL-DAN        168.12.7.1      168.12.7.254
+ARL-DAN        168.8.20.2      168.8.20.127
+ARL-DAN        168.8.23.65     168.8.23.127
+ARL-EAST       168.12.4.1      168.12.4.254
+ARL-EAST       168.9.83.1      168.9.83.64
+ARL-LAV        168.12.5.1      168.12.5.254
+ARL-LAV        168.8.22.129    168.8.22.191
+ARL-LAY        168.12.6.1      168.12.6.254
+ARL-LAY        168.9.83.65     168.9.83.128
+ARL-LEX        168.12.10.1     168.12.10.254
+ARL-LEX        168.8.22.192    168.8.22.255
+ARL-ROY        168.12.11.1     168.12.11.254
+ARL-ROY        168.8.23.1      168.8.23.63
+ARL-WAT        168.12.8.1      168.12.8.254
+ARL-WAT        168.8.16.1      168.8.16.255
+ARL-WINT       168.12.12.1     168.12.12.254
+ARL-WINT       168.8.23.65     168.8.23.127
+BROOK-HQ       168.10.0.0      168.10.0.128
+BROOK-HQ       168.13.1.1      168.13.1.254
+BTRL-MCD       168.11.134.1    168.11.134.63
+BTRL-MCD       168.12.51.1     168.12.51.254
+BTRL-MWL       168.12.49.1     168.12.49.254
+BTRL-MWL       168.8.197.129   168.8.197.255
+BTRL-TCL       168.12.50.1     168.12.50.254
+BTRL-TCL       168.8.202.129   168.8.202.191
+CCL-RING    168.12.143.1 168.12.143.255
+CHAT-SMRVL     168.12.63.1     168.12.63.254
+CHAT-SMRVL     168.8.0.0       168.8.0.128
+CHAT-TRION     168.12.64.1     168.12.64.254
+CHAT-TRION     168.8.2.0       168.8.2.64
+CHRL-CHICK     168.11.193.129  168.11.193.160
+CHRL-CHICK     168.12.65.1     168.12.65.254
+CHRL-DADE      168.11.193.161  168.11.193.192
+CHRL-DADE      168.12.66.1     168.12.66.254
+CHRL-LW        168.11.193.0    168.11.193.128
+CHRL-LW        168.12.67.1     168.12.67.254
+CHRL-ROSS      168.11.193.193  168.11.193.225
+CHRL-ROSS      168.12.68.1     168.12.68.254
+CLAYTN-FOR     168.12.73.1     168.12.73.254
+CLAYTN-FOR     168.8.198.1     168.8.198.128
+CLAYTN-HQS     168.12.71.1     168.12.71.254
+CLAYTN-HQS     168.8.192.0     168.8.192.255
+CLAYTN-JON     168.12.74.1     168.12.74.254
+CLAYTN-JON     168.8.198.129   168.8.198.254
+CLAYTN-MOR     168.12.75.1     168.12.75.254
+CLAYTN-MOR     168.8.199.1     168.8.199.128
+CLAYTN-RIV     168.12.76.1     168.12.76.254
+CLAYTN-RIV     168.8.199.129   168.8.199.254
+CPRL-A 168.10.17.1     168.10.17.72
+CPRL-A 168.13.7.1      168.13.7.254
+CPRL-B 168.10.16.1     168.10.16.63
+CPRL-B 168.13.2.1      168.13.2.254
+CPRL-C 168.10.16.129   168.10.16.191
+CPRL-C 168.13.4.1      168.13.4.254
+CPRL-L 168.10.16.193   168.10.16.255
+CPRL-L 168.13.5.1      168.13.5.254
+CPRL-R 168.10.16.69    168.10.16.127
+CPRL-R 168.13.3.1      168.13.3.254
+CPRL-T 168.10.15.1     168.10.15.128
+CPRL-T 168.13.6.1      168.13.6.254
+CRLS-DAWSN     168.12.69.1     168.12.69.254
+CRLS-DAWSN     168.8.0.129     168.8.0.255
+CRLS-LMPKN     168.12.70.1     168.12.70.254
+CRLS-LMPKN     168.8.1.0       168.8.1.128
+DCPL-CEN       168.13.14.1     168.13.14.254
+DCPL-CEN       168.13.15.0     168.13.15.255
+DCPL-NW        168.10.11.1     168.10.11.128
+DCPL-NW        168.13.16.1     168.13.16.254
+DCPL-SS        168.10.11.129   168.10.11.254
+DCPL-SS        168.13.17.1     168.13.17.254
+DCPL-TAL       168.10.12.1     168.10.12.128
+DCPL-TAL       168.13.18.1     168.13.18.254
+DCPL-WT        168.10.12.129   168.10.12.254
+DCPL-WT        168.13.19.1     168.13.19.254
+DTRL-BAKR      168.13.8.1      168.13.8.254
+DTRL-BLAK      168.10.0.193    168.10.0.255
+DTRL-BLAK      168.13.11.1     168.13.11.254
+DTRL-CAMI      168.10.0.129    168.10.0.192
+DTRL-CAMI      168.13.9.1      168.13.9.254
+DTRL-JAKN      168.10.21.193   168.10.21.255
+DTRL-JAKN      168.13.10.1     168.13.10.254
+DTRL-PELH      168.10.1.65     168.10.1.128
+DTRL-PELH      168.13.13.1     168.13.13.254
+DTRL-SYLV      168.10.1.0      168.10.1.64
+DTRL-SYLV      168.13.12.1     168.13.12.254
+ECGR-APPBY     168.11.129.193  168.11.129.255
+ECGR-APPBY     168.13.192.1    168.13.192.254
+ECGR-AVTBC     168.11.131.1    168.11.131.63
+ECGR-AVTBC     168.13.205.1    168.13.205.254
+ECGR-BURKE     168.11.131.65   168.11.131.127
+ECGR-BURKE     168.13.193.1    168.13.193.254
+ECGR-CCO    66.208.207.193  66.208.207.197
+ECGR-DIAML     168.13.214.1    168.13.214.255
+ECGR-EUCHE     168.11.131.193  168.11.131.255
+ECGR-EUCHE     168.13.195.1    168.13.195.254
+ECGR-FRMAN     168.11.132.1    168.11.132.63
+ECGR-FRMAN     168.13.196.1    168.13.196.254
+ECGR-GIBBS     168.11.131.129  168.11.131.191
+ECGR-GLSCK     168.13.197.1    168.13.197.254
+ECGR-HARLM     168.11.132.65   168.11.132.127
+ECGR-HARLM     168.13.198.1    168.13.198.254
+ECGR-LINCN     168.13.201.1    168.13.201.254
+ECGR-LINCN     168.8.24.1      168.8.24.63
+ECGR-MAIN      168.11.130.1    168.11.130.255
+ECGR-MAIN      168.13.194.1    168.13.194.254
+ECGR-MAIN      168.13.199.1    168.13.199.254
+ECGR-MIDVL     168.11.132.193  168.11.132.255
+ECGR-MIDVL     168.13.203.1    168.13.203.254
+ECGR-MXWLL     168.11.132.129  168.11.132.191
+ECGR-MXWLL     168.13.202.1    168.13.202.254
+ECGR-SARDIS    168.11.133.1    168.11.133.63
+ECGR-SRDIS     168.13.204.1    168.13.204.254
+ECGR-WALLC     168.11.133.65   168.11.133.127
+ECGR-WALLC     168.13.206.1    168.13.206.254
+ECGR-WARRN     168.11.133.129  168.11.133.191
+ECGR-WARRN     168.13.207.1    168.13.207.254
+ECPL-BWMN      168.12.102.1    168.12.102.254
+ECPL-BWMN      168.9.33.1      168.9.33.62
+ECPL-ECPL      168.12.103.1    168.12.103.254
+ECPL-ECPL      168.8.200.130   168.8.200.254
+FBHCL-MAIN     168.10.1.129    168.10.1.255
+FBHCL-MAIN     168.13.20.1     168.13.20.254
+FRRLS-BA       168.12.104.1    168.12.104.254
+FRRLS-BA       168.8.2.65      168.8.2.128
+FRRLS-FA       168.12.105.1    168.12.105.254
+FRRLS-FA       168.8.3.0       168.8.3.255
+FRRLS-FY       168.10.128.0    168.10.128.128
+FRRLS-FY       168.12.111.1    168.12.111.254
+FRRLS-GR       168.12.107.1    168.12.107.254
+FRRLS-GR       168.8.4.0       168.8.4.255
+FRRLS-JA       168.12.110.1    168.12.110.254
+FRRLS-JA       168.8.2.193     168.8.2.255
+FRRLS-PT       168.12.112.1    168.12.112.254
+FRRLS-PT       168.12.211.1    168.12.211.254
+FRRLS-TY       168.12.113.1    168.12.113.254
+FRRLS-TY       168.8.5.0       168.8.5.64
+FRRLS-ZE       168.12.109.1    168.12.109.254
+FRRLS-ZE       168.8.2.129     168.8.2.192
+HALL-BPL       168.12.118.1    168.12.118.254
+HALL-BPL       168.8.202.193   168.8.202.255
+HALL-CL        168.12.119.1    168.12.119.254
+HALL-CL        168.8.203.1     168.8.203.63
+HALL-EH        168.12.120.1    168.12.120.254
+HALL-EH        168.8.203.65    168.8.203.127
+HALL-GVL       168.12.121.1    168.12.121.254
+HALL-GVL       168.8.196.1     168.8.196.255
+HALL-MV        168.12.123.1    168.12.123.254
+HALL-MV        168.8.203.129   168.8.203.191
+HALL-SSP    168.12.222.1 168.12.222.255
+HART-HQ        168.12.124.1    168.12.124.254
+HART-HQ        168.8.6.0       168.8.6.128
+HCLS-FV        168.12.117.1    168.12.117.254
+HCLS-HA        168.12.126.1    168.12.126.254
+HCLS-HA        168.8.5.129     168.8.5.192
+HCLS-LG        168.12.128.1    168.12.128.254
+HCLS-LG        168.8.5.193     168.8.5.255
+HCLS-MD        168.12.127.1    168.12.127.254
+HCLS-MD        168.8.6.129     168.8.6.255
+HCLS-ST        168.12.125.1    168.12.125.254
+HCLS-ST        168.8.5.65      168.8.5.128
+HOU-CV 168.10.129.0    168.10.129.64
+HOU-CV 168.13.128.1    168.13.128.254
+HOU-PE 168.10.129.66   168.10.129.128
+HOU-PE 168.13.130.1    168.13.130.254
+HOU-WR 168.10.128.130  168.10.128.255
+HOU-WR 168.13.129.1    168.13.129.254
+JCL-LVILLE     168.11.128.0    168.11.128.128
+JCL-LVILLE     168.13.208.1    168.13.208.254
+JCL-WADLEY     168.11.129.65   168.11.129.128
+JCL-WADLEY     168.13.210.1    168.13.210.254
+JCL-WRENS      168.11.129.0    168.11.129.64
+JCL-WRENS      168.13.209.1    168.13.209.254
+KRLS-AR        168.10.3.0      168.10.3.64
+KRLS-CA        168.10.3.65     168.10.3.128
+KRLS-CA        168.13.21.1     168.13.21.254
+KRLS-CL        168.10.3.129    168.10.3.192
+KRLS-CL        168.13.22.1     168.13.22.254
+KRLS-QU     168.13.60.1 168.13.60.255
+KRLS-RA        168.10.3.193    168.10.3.255
+KRLS-RA        168.13.23.1     168.13.23.254
+KRLS-TE        168.10.2.0      168.10.2.255
+KRLS-TE        168.13.24.1     168.13.24.254
+KRLS-WE        168.10.4.0      168.10.4.64
+KRLS-WE        168.13.26.1     168.13.26.254
+LBRLS-BYRM  168.13.27.1 168.13.27.255
+LBRLS-CORD  168.13.28.1 168.13.28.255
+LBRLS-DOOLY 168.13.29.1 168.13.29.255
+LBRLS-LB    168.13.31.1 168.13.31.255
+LBRLS-SCH   168.13.33.1 168.13.33.255
+LBRLS-UNAD  168.13.30.1 168.13.30.255
+LEE-LSB        168.10.5.0      168.10.5.255
+LEE-LSB        168.13.34.1     168.13.34.254
+LEE-SMV        168.10.4.65     168.10.4.128
+LEE-SMV        168.13.36.1     168.13.36.254
+MCCLS-DOE      168.13.37.1     168.13.37.254
+MCCLS-HQ       168.10.6.0      168.10.6.255
+MCCLS-HQ       168.13.38.1     168.13.38.254
+MGRL-EW        168.10.138.1    168.10.138.127
+MGRL-EW        168.13.132.1    168.13.132.254
+MGRL-GH        168.13.143.180  168.13.143.200
+MGRL-GO        168.10.138.128  168.10.138.191
+MGRL-GO        168.13.133.1    168.13.133.254
+MGRL-ID        168.10.138.192  168.10.138.255
+MGRL-ID        168.13.134.1    168.13.134.254
+MGRL-JO        168.10.139.0    168.10.139.63
+MGRL-JO        168.13.135.1    168.13.135.254
+MGRL-LA        168.13.140.1    168.13.140.254
+MGRL-LC        168.10.132.65   168.10.132.128
+MGRL-MA        168.10.139.64   168.10.139.127
+MGRL-MA        168.13.136.1    168.13.136.254
+MGRL-MO        168.10.129.193  168.10.129.255
+MGRL-MO        168.13.137.1    168.13.137.254
+MGRL-OG        168.10.139.128  168.10.139.191
+MGRL-OG        168.13.138.1    168.13.138.254
+MGRL-RO        168.13.131.1    168.13.131.254
+MGRL-RV        168.10.132.0    168.10.132.64
+MGRL-RV        168.13.139.1    168.13.139.254
+MGRL-SH        168.10.132.129  168.10.132.191
+MGRL-SH        168.13.141.1    168.13.141.254
+MGRL-TW        168.10.139.192  168.10.139.255
+MGRL-TW        168.13.142.1    168.13.142.254
+MGRL-WA        168.10.130.0    168.10.130.199
+MGRL-WA        168.10.130.221  168.10.130.254
+MGRL-WA        168.13.143.1    168.13.143.254
+MGRL-WB        168.10.132.193  168.10.132.255
+MGRL-WB        168.13.145.1    168.13.145.254
+MRGL-RO        168.10.138.0    168.10.138.63
+MRLS-FCPL      168.12.129.1    168.12.129.254
+MRLS-FCPL      168.8.7.1       168.8.7.64
+MRLS-MRL       168.12.130.1    168.12.130.254
+MRLS-MRL       168.8.7.129     168.8.7.255
+MRLS-TCPL      168.12.131.1    168.12.131.254
+MRLS-TCPL      168.8.7.65      168.8.7.128
+MRLS-UCPL      168.12.132.1    168.12.132.254
+MRLS-UCPL      168.8.9.0       168.8.9.64
+NCLS-COVTN     168.12.133.1    168.12.133.254
+NCLS-COVTN     168.8.193.1     168.8.193.255
+NCLS-NEWBRN 168.12.227.30   168.12.227.30
+NCLS-PORTER    168.12.228.1    168.12.228.254
+NEG-CLAYTN     168.8.9.129     168.8.9.192
+NEG-CLRKVL     168.12.135.1    168.12.135.254
+NEG-CLRKVL     168.8.8.0       168.8.8.255
+NEG-CLVLND     168.12.141.1    168.12.141.254
+NEG-CLVLND     168.8.10.0      168.8.10.64
+NEG-CORNEL     168.12.137.1    168.12.137.254
+NEG-CORNEL     168.8.9.65      168.8.9.128
+NEG-HELEN      168.12.140.1    168.12.140.254
+NEG-HELEN      168.8.10.65     168.8.10.128
+NEG-RABUN      168.12.138.1    168.12.138.254
+NEG-TOCCOA     168.12.139.1    168.12.139.254
+NEG-TOCCOA     168.8.9.193     168.8.9.255
+NGRL-CG  168.12.142.0   168.12.142.254          
+NGRL-CM  168.12.145.0   168.12.145.254 
+NGRL-DW  168.12.146.0   168.12.146.254  
+OCRL-DUBLN     168.10.136.1    168.10.136.255
+OCRL-DUBLN     168.13.154.1    168.13.154.254
+OCRL-SANDR     168.10.141.1    168.10.141.128
+OCRL-SANDR     168.13.156.1    168.13.156.254
+OCRL-SOPER     168.11.10.193   168.11.10.255
+OCRL-SOPER     168.13.157.1    168.13.157.254
+OCRL-WRIGH     168.10.140.1    168.10.140.63
+OCRL-WRIGH     168.13.153.1    168.13.153.254
+OHOOP-LADS     168.11.13.129   168.11.13.191
+OHOOP-LADS     168.13.86.1     168.13.86.254
+OHOOP-LYON     168.11.0.65     168.11.0.128
+OHOOP-LYON     168.13.88.1     168.13.88.254
+OHOOP-MONT     168.11.0.130    168.11.0.192
+OHOOP-MONT     168.13.87.1     168.13.87.254
+OHOOP-TATG     168.11.0.1      168.11.0.64
+OHOOP-TATG     168.13.85.1     168.13.85.254
+OHOOP-TATR     168.11.2.130    168.11.2.192
+OHOOP-TATR     168.13.89.1     168.13.89.254
+OHOOP-VIDT     168.11.1.1      168.11.1.128
+OHOOP-VIDT     168.13.90.1     168.13.90.254
+OKRL-APPL      168.11.8.1      168.11.8.63
+OKRL-APPL      168.13.92.1     168.13.92.254
+OKRL-BACON     168.11.0.193    168.11.0.254
+OKRL-BACON     168.13.91.1     168.13.91.254
+OKRL-BLMEM     168.11.8.65     168.11.8.127
+OKRL-BLMEM     168.13.93.1     168.13.93.254
+OKRL-CLNCH     168.11.8.129    168.11.8.191
+OKRL-CLNCH     168.13.94.1     168.13.94.254
+OKRL-MA        168.11.8.193    168.11.8.255
+OKRL-MA        168.13.95.1     168.13.95.254
+OKRL-WWC       168.11.7.1      168.11.7.255
+OKRL-WWC       168.13.96.1     168.13.96.254
+ORLS-HDQ       168.10.131.1    168.10.131.254
+ORLS-TEL       168.10.8.0      168.10.8.128
+ORLS-WIL       168.10.8.129    168.10.8.255
+PIED-AUB       168.12.148.1    168.12.148.254
+PIED-AUB       168.9.33.66     168.9.33.126
+PIED-BRL       168.12.157.1    168.12.157.254
+PIED-BRL       168.9.58.1      168.9.58.64
+PIED-COM       168.12.150.1    168.12.150.254
+PIED-COM       168.8.204.1     168.8.204.63
+PIED-HOM       168.12.149.1    168.12.149.254
+PIED-HOM       168.8.203.193   168.8.203.254
+PIED-JEF       168.12.152.1    168.12.152.254
+PIED-JEF       168.8.204.129   168.8.204.191
+PIED-JEF       24.196.224.38   24.196.224.38
+PIED-MAY       168.12.153.1    168.12.153.254
+PIED-MAY       168.8.204.192   168.8.204.254
+PIED-NIC       168.12.151.1    168.12.151.254
+PIED-NIC       168.8.204.65    168.8.204.127
+PIED-STA       168.12.156.1    168.12.156.254
+PIED-STA       168.8.234.2     168.8.234.12
+PIED-WIN       168.12.154.1    168.12.154.254
+PIED-WIN       168.8.201.1     168.8.201.127
+PMRLS-BPL      168.10.135.65   168.10.135.128
+PMRLS-BPL      168.12.159.1    168.12.159.254
+PMRLS-GPL      168.12.160.1    168.12.160.254
+PMRLS-GPL      168.8.10.129    168.8.10.192
+PMRLS-HML      168.12.161.1    168.12.161.254
+PMRLS-HML      168.8.10.193    168.8.10.255
+PMRLS-MPL      168.12.163.1    168.12.163.254
+PMRLS-MPL      168.8.11.0      168.8.11.255
+PMRLS-RCL      168.10.135.194  168.10.135.223
+PMRLS-RCL      168.12.164.1    168.12.164.254
+PMRLS-TCL      168.12.165.1    168.12.165.254
+PMRLS-TCL      168.8.12.0      168.8.12.64
+PMRLS-YPL      168.12.158.1    168.12.158.254
+PMRLS-YPL      168.9.33.129    168.9.33.190
+PPL-BPL        168.10.135.0    168.10.135.64
+PPL-BPL        168.13.158.1    168.13.158.254
+PPL-TPL        168.10.134.0    168.10.134.255
+PPL-TPL        168.13.159.1    168.13.159.254
+RML-MAIN       168.10.7.0      168.10.7.255
+RML-MAIN       168.13.40.1     168.13.40.254
+ROCK-NG        168.12.77.1     168.12.77.254
+ROCK-NG        168.8.200.1     168.8.200.128
+SHRL-CD        168.12.167.1    168.12.167.254
+SHRL-CD        168.8.201.193   168.8.201.255
+SHRL-CS        168.12.166.1    168.12.166.254
+SHRL-CS        168.8.201.130   168.8.201.140
+SHRL-RK        168.12.168.1    168.12.168.254
+SHRL-RK        168.8.205.1     168.8.205.63
+SHRL-RM        168.12.170.1    168.12.170.254
+SHRL-RM        168.8.194.1     168.8.194.255
+SJRLS-JCML     168.11.128.129  168.11.128.192
+SJRLS-JCML     168.13.211.1    168.13.211.254
+SJRLS-SCL      168.11.2.0      168.11.2.128
+SJRLS-SCL      168.13.212.1    168.13.212.254
+SRL-AMBR       168.11.2.193    168.11.2.255
+SRL-AMBR       168.11.2.193    168.11.2.255
+SRL-AMBR       168.13.98.1     168.13.98.254
+SRL-BROX       168.11.3.0      168.11.3.64
+SRL-BROX       168.13.99.1     168.13.99.254
+SRL-DOUG       168.11.1.129    168.11.1.255
+SRL-DOUG       168.13.100.1    168.13.100.254
+SRL-JDHAZ      168.11.3.65     168.11.3.128
+SRL-JDHAZ      168.13.102.1    168.13.102.254
+SRL-NICH       168.11.3.129    168.11.3.192
+SRL-NICH       168.13.103.1    168.13.103.254
+SRL-PEAR       168.11.3.193    168.11.3.255
+SRL-PEAR       168.13.104.1    168.13.104.254
+SRL-WILLA      168.11.4.0      168.11.4.64
+SRL-WILLA      168.13.105.1    168.13.105.254
+STATELIB-B     168.28.76.1     168.28.76.254
+STATELIB-L     168.28.68.1     168.28.68.254
+STRL-CLAX      168.11.11.1     168.11.11.63
+STRL-CLAX      168.13.106.1    168.13.106.254
+STRL-METT      168.11.11.64    168.11.11.129
+STRL-METT      168.13.108.1    168.13.108.254
+STRL-PEMB      168.11.11.130   168.11.11.191
+STRL-PEMB      168.13.109.1    168.13.109.254
+STRL-RHILL     168.11.11.193   168.11.11.255
+STRL-RHILL     168.13.110.1    168.13.110.254
+STRL-SBORO     168.11.9.1      168.11.9.255
+STRL-SBORO     168.13.111.1    168.13.111.254
+STRL-SWAIN     168.11.133.193  168.11.133.255
+STRL-SWAIN     168.13.107.1    168.13.107.254
+SWGRL-DEC      168.10.9.0      168.10.9.255
+SWGRL-DEC      168.13.49.1     168.13.49.254
+SWGRL-MIL      168.10.20.1     168.10.20.64
+SWGRL-MIL      168.13.50.1     168.13.50.254
+SWGRL-SEM      168.10.20.64    168.10.20.127
+SWGRL-SEM      168.13.51.1     168.13.51.254
+TCPLS-BOS 168.13.52.1   168.13.52.254
+TCPLS-COOL 168.13.53.1  168.13.53.254
+TCPLS-MEIGS 168.13.55.1 168.13.55.254
+TCPLS-OCH 168.13.54.1   168.13.54.254
+TCPLS-PACO 168.13.56.1  168.13.56.254
+TCPLS-THOMAS 168.13.57.1    168.13.57.254
+THRL-HC     168.12.181.2    168.12.181.254
+THRL-HOG    168.12.182.2    168.12.182.254
+THRL-LAG    168.12.184.2    168.12.184.254
+THRL-WMS    168.12.183.2    168.12.183.254
+TLLS-LS        168.10.140.129  168.10.140.254
+TLLS-LS        168.13.161.1    168.13.161.254
+TLLS-MV        168.10.129.130  168.10.129.190
+TLLS-MV        168.13.162.1    168.13.162.254
+TRRL-BRANT     168.11.13.1     168.11.13.63
+TRRL-BRANT     168.13.113.1    168.13.113.254
+TRRL-CAMDN     168.11.13.65    168.11.13.127
+TRRL-CAMDN     168.13.116.1    168.13.116.254
+TRRL-CHARL     168.11.4.65     168.11.4.127
+TRRL-CHARL     168.13.117.1    168.13.117.254
+TRRL-GLYNN     168.11.58.0     168.11.58.254
+TRRL-GLYNN     168.13.114.1    168.13.114.254
+TRRL-LONG      168.11.4.193    168.11.4.255
+TRRL-LONG      168.13.119.1    168.13.119.254
+TRRL-MCINT     168.11.4.129    168.11.4.191
+TRRL-MCINT     168.13.118.1    168.13.118.254
+TRRL-STMRY     168.11.10.1     168.11.10.63
+TRRL-STMRY     168.13.120.1    168.13.120.254
+TRRL-WAYNE     168.11.10.65    168.11.10.127
+TRRL-WAYNE     168.13.121.1    168.13.121.254
+URRLS-GR       168.12.188.1    168.12.188.254
+URRLS-GR       168.8.12.129    168.8.12.192
+URRLS-HA       168.11.129.129  168.11.129.192
+URRLS-HA       168.12.189.1    168.12.189.254
+URRLS-JA       168.12.190.1    168.12.190.254
+URRLS-JA       168.8.12.193    168.8.12.255
+URRLS-MA       168.12.193.1    168.12.193.254
+URRLS-MA       168.8.13.0      168.8.13.255
+URRLS-MR       168.12.191.1    168.12.191.254
+URRLS-MR       168.8.14.0      168.8.14.64
+URRLS-OK       168.12.194.1    168.12.194.254
+URRLS-OK       168.8.14.65     168.8.14.128
+URRLS-PU       168.12.187.1    168.12.187.254
+URRLS-PU       168.8.12.65     168.8.12.128
+URRLS-SC       168.12.195.1    168.12.195.254
+URRLS-SC       168.8.14.129    168.8.14.192
+WGRL-BO        168.12.207.1    168.12.207.254
+WGRL-BR        168.12.208.1    168.12.208.254
+WGRL-BU        168.12.196.1    168.12.196.254
+WGRL-DC        168.12.197.1    168.12.197.254
+WGRL-EP 168.12.225.1    168.12.225.254
+WGRL-FR        168.12.198.1    168.12.198.254
+WGRL-HQ        168.12.202.1    168.12.202.254
+WGRL-LS        168.12.199.1    168.12.199.254
+WGRL-MR        168.12.200.1    168.12.200.254
+WGRL-MZ 168.12.220.1 168.12.220.254
+WGRL-NG        168.12.203.1    168.12.203.254
+WGRL-PC        168.12.204.1    168.12.204.254
+WGRL-TA        168.12.205.1    168.12.205.254
+WGRL-VR        168.12.206.1    168.12.206.254
+WGRL-WB 168.12.224.1 168.12.224.255
diff --git a/Open-ILS/examples/pines-examples/pines-circ/circ_duration.js.example b/Open-ILS/examples/pines-examples/pines-circ/circ_duration.js.example
new file mode 100755 (executable)
index 0000000..cb113da
--- /dev/null
@@ -0,0 +1,85 @@
+function go(){
+
+load_lib('JSON_v1.js');
+load_lib('circ/circ_item_config.js');
+log_vars('circ_duration');
+
+
+/* treat pre-cat copies like vanilla books */
+if( isTrue(isPrecat) ) {
+       log_info("pre-cat copy getting duration defaults...");
+       result.durationRule                     = '14_days_2_renew';
+       result.recurringFinesRule       = '10_cent_per_day';
+       result.maxFine                                  = 'overdue_mid';
+       checkDurationExceptions();
+       return;
+}
+
+
+/* grab the config from the config script */
+var config = getItemConfig();
+var itemForm   = (marcXMLDoc) ? extractFixedField(marcXMLDoc,'Form') : "";
+
+
+/* ----------------------------------------------------------------------------- 
+       Now set the rule values based on the config.  If there is no configured info
+       on this copy, fall back on defaults.
+       ----------------------------------------------------------------------------- */
+if( config ) {
+
+       log_debug("circ_duration found a config for the copy");
+       result.durationRule                     = config.durationRule;
+       result.recurringFinesRule       = config.recurringFinesRule;
+       result.maxFine                                  = config.maxFine;
+
+} else {
+
+       result.durationRule                     = '14_days_2_renew';
+       result.recurringFinesRule       = "10_cent_per_day";
+       result.maxFine                                  = "overdue_mid";
+}
+
+
+
+/* ----------------------------------------------------------------------------- 
+       Add custom rules here.  
+       ----------------------------------------------------------------------------- */
+
+var circMod            = (copy.circ_modifier) ? copy.circ_modifier.toLowerCase() : '';
+
+if( isOrgDescendent('STATELIB', copy.circ_lib.id) ) {
+       if( circMod == 'book' )
+               result.durationRule = '35_days_1_renew';
+       if(isTrue(copy.ref))
+               result.durationRule     = '14_days_2_renew';
+
+} else if( isOrgDescendent('NCLS', copy.circ_lib.id) && ( circMod == 'dvd' || circMod == 'video' ) ) 
+       result.recurringFinesRule       = '10_cent_per_day';
+
+
+checkDurationExceptions();
+
+log_info('final duration results: ' + result.durationRule + ' : ' + result.recurringFinesRule + ' : ' + result.maxFine );
+
+} go();
+
+
+
+function checkDurationExceptions() {
+       log_debug("Checking duration rule exceptions for profile  "+patronProfile);
+
+       if(     isGroupDescendant('Staff', patronProfile) || 
+                       isGroupDescendant('Trustee', patronProfile) ||
+            isGroupDescendant('StaffNoPerm', patronProfile) ||
+                       isGroupDescendant('Outreach', patronProfile) ) {
+
+               result.recurringFinesRule       = "staff";
+               result.maxFine                                  = "staff";
+       }
+
+       if( isGroupDescendant('Outreach', patronProfile) ) {
+               log_info("Outreach user found, setting duration to 2 months");
+               result.durationRule = '2_months_2_renew';
+       }
+}
+
diff --git a/Open-ILS/examples/pines-examples/pines-circ/circ_groups.js.example b/Open-ILS/examples/pines-examples/pines-circ/circ_groups.js.example
new file mode 100755 (executable)
index 0000000..6fc2bf1
--- /dev/null
@@ -0,0 +1,114 @@
+/* ---------------------------------------------------------------------
+       Set up the limits for the various profiles (aka permission groups).
+       Values of -1 mean there is no limit 
+
+       maxItemsOut                     - the maximum number of items the user can have out
+       fineThreshold           - the fine threshold. 
+       overdueThreshold        - the overdue items threshold.
+       maxHolds                                - The maximum number of holds the user can have
+
+       A user exceeds the fineThreshold and/or overdueThreshold if they are 
+       equal to or exceed the threshold
+       --------------------------------------------------------------------- */
+
+var GROUP_CONFIG = {
+
+       'Patron' : {
+               maxItemsOut                     : 50,
+               fineThreshold           : 10,
+               overdueThreshold        : 10,
+               maxHolds                                : -1
+       },
+
+       'Class' : {
+               maxItemsOut                     : 50,
+               fineThreshold           : 10,
+               overdueThreshold        : 10,
+               maxHolds                                : 15
+       },
+
+       'Friend'        : {
+               maxItemsOut                     : 50,
+               fineThreshold           : 10,
+               overdueThreshold        : 10,
+               maxHolds                                : -1
+       },
+
+       'NonResident' : {
+               maxItemsOut                     : 50,
+               fineThreshold           : 10,
+               overdueThreshold        : 10,
+               maxHolds                                : -1
+       },
+
+       'OutOfState' : {
+               maxItemsOut                     : 50,
+               fineThreshold           : 10,
+               overdueThreshold        : 10,
+               maxHolds                                : -1
+       },
+
+       'Outreach' : {
+               maxItemsOut                     : -1,
+               fineThreshold           : -1,
+               overdueThreshold        : -1,
+               maxHolds                                : 15
+       },
+
+
+       'Restricted' : {
+               maxItemsOut                     : 2,
+               fineThreshold           : 0.01,
+               overdueThreshold        : 1,
+               maxHolds                                : 5
+       },
+
+       'Temp' : {
+               maxItemsOut                     : 5,
+               fineThreshold           : .01,
+               overdueThreshold        : 1,
+               maxHolds                                : 5
+       },
+
+       'TempRes6' : {
+               maxItemsOut                     : 50,
+               fineThreshold           : 10,
+               overdueThreshold        : 10,
+               maxHolds                                : -1
+       },
+
+       'tempRes12' : {
+               maxItemsOut                     : 50,
+               fineThreshold           : 10,
+               overdueThreshold        : 10,
+               maxHolds                                : -1
+       },
+
+       'Trustee' : {
+               maxItemsOut                     : 50,
+               fineThreshold           : 10,
+               overdueThreshold        : 10,
+               maxHolds                                : 10
+       },
+
+
+       'Vendor' : {
+               maxItemsOut                     : 0,
+               fineThreshold           : 0.01,
+               overdueThreshold        : 1,
+               maxHolds                                : 0
+       },
+
+       'Staff' : {
+               maxItemsOut                     : 50,
+               fineThreshold           : -1,
+               overdueThreshold        : -1,
+               maxHolds                                : -1 
+       },
+
+};
+
+
+
+
+
diff --git a/Open-ILS/examples/pines-examples/pines-circ/circ_item_config.js.example b/Open-ILS/examples/pines-examples/pines-circ/circ_item_config.js.example
new file mode 100755 (executable)
index 0000000..ceba8e7
--- /dev/null
@@ -0,0 +1,535 @@
+load_lib('circ/circ_lib.js');
+log_debug('loading circ_item_config.js ...');
+
+
+/* SIP media types
+000 Other
+001 Book
+002 Magazine
+003 Bound journal
+004 Audio tape
+005 Video tape
+006 CD/CDROM
+007 Diskette
+008 Book with diskette
+009 Book with CD
+010 Book with audio tape
+*/
+
+/* ----------------------------------------------------------------------------- 
+       Configure the duration rules for the various item types and circ modifiers
+
+       MARC Fixed Field info:
+       http://www.oclc.org/bibformats/en/fixedfield/
+
+       ----------------------------------------------------------------------------- */
+
+var MARC_ITEM_TYPE_MAP = {
+
+       a : { /* Language material [Books] */
+               SIPMediaType                    : '001',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       t : { /* Manuscript language material [Books] */
+               SIPMediaType                    : '001',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       g : { /* Projected medium [Videos, etc.] */
+               SIPMediaType                    : '005',
+               magneticMedia                   : 'f',
+               durationRule                    : '7_days_0_renew',
+               recurringFinesRule      : '50_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       k : { /* Two-dimensional nonprojectable graphic [Card, charts, etc.] */
+               SIPMediaType                    : '001',
+               magneticMedia                   : 'f',
+               durationRule                    : '3_month_0_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       r : { /* Three-dimensional artifact or naturally occurring object [Models, games, etc.] */ 
+               SIPMediaType                    : '001',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       o : { /* Kit [Mixture of item types] */
+               SIPMediaType                    : '001',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       p : { /* Mixed materials [Mixture of item types] */
+               SIPMediaType                    : '001',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       e : { /* Cartographic material [Map] */
+               SIPMediaType                    : '001',
+               magneticMedia                   : 'f',
+               durationRule                    : '7_days_2_renew',
+               recurringFinesRule      : '50_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       f : { /* Manuscript cartographic material [Map] */
+               SIPMediaType                    : '001',
+               magneticMedia                   : 'f',
+               durationRule                    : '3_days_1_renew',
+               recurringFinesRule      : '50_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       c : { /* Notated music [Printed music] */
+               SIPMediaType                    : '001',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       d : { /* Manuscript notated music [Printed music] */
+               SIPMediaType                    : '001',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       i : { /* Nonmusical sound recording [Audiobooks, sound effects, etc.] */
+               SIPMediaType                    : '001',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       j : { /* Musical sound recording [Music] */
+               SIPMediaType                    : '001',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       m : { /* Computer file */
+               SIPMediaType                    : '001',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       }
+}
+
+
+var CIRC_MOD_MAP = {
+
+       'art'           : {
+               SIPMediaType                    : '000',
+               magneticMedia                   : 'f',
+               durationRule                    : '3_month_1_renew', 
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'atlas'         : {
+               SIPMediaType                    : '000',
+               magneticMedia                   : 'f',
+               durationRule                    : '7_days_2_renew',
+               recurringFinesRule      : '50_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'audiobook' : {
+               SIPMediaType                    : '004',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'av' : {
+               SIPMediaType                    : '005',
+               magneticMedia                   : 'f',
+               durationRule                    : '7_days_2_renew',
+               recurringFinesRule      : '50_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'new-av' : { 
+               SIPMediaType                    : '005',
+               magneticMedia                   : 'f',
+               durationRule                    : '3_days_1_renew',
+               recurringFinesRule      : '50_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'bestseller'                            : {
+               SIPMediaType                    : '001',
+               magneticMedia                   : 'f',
+               durationRule                    : '7_days_2_renew',
+               recurringFinesRule      : '50_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'bestsellernh'                          : {
+               SIPMediaType                    : '001',
+               magneticMedia                   : 'f',
+               durationRule                    : '7_days_2_renew',
+               recurringFinesRule      : '50_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'book'                                          : {
+               SIPMediaType                    : '001',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'cd'                            : {
+               SIPMediaType                    : '006',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'dvd'                                                   : {
+               SIPMediaType                    : '006',
+               magneticMedia                   : 'f',
+               durationRule                    : '7_days_0_renew',
+               recurringFinesRule      : '50_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'dvd-long'                                                      : {
+               SIPMediaType                    : '006',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'dvd-mid'                                                       : {
+               SIPMediaType                    : '006',
+               magneticMedia                   : 'f',
+               durationRule                    : '7_days_2_renew',
+               recurringFinesRule          : '50_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'e-book' : {
+               SIPMediaType                    : '001',
+               magneticMedia                   : 'f',
+               durationRule                    : '3_days_1_renew',
+               recurringFinesRule      : '50_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'equipment' : { 
+               SIPMediaType                    : '000',
+               magneticMedia                   : 'f',
+               durationRule                    : '1_day_0_renew', /* make me 1 day, 0 renewal when possible */
+               recurringFinesRule      : '50_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'equip-long' : { 
+               SIPMediaType                    : '000',
+               magneticMedia                   : 'f',
+               durationRule                    : '3_days_1_renew',
+               recurringFinesRule      : '50_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'filmstrip'                                     : {
+               SIPMediaType                    : '000',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'kit' : {
+               SIPMediaType                    : '000',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'internet'      : {
+               SIPMediaType                    : '000',
+               magneticMedia                   : 'f',
+               durationRule                    : '1_hour_2_renew',
+               recurringFinesRule      : 'no_fines',
+               maxFine                                 : 'no_fines'
+       },
+
+       'magazine'      : {
+               SIPMediaType                    : '002',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'map' : {
+               SIPMediaType                    : '000',
+               magneticMedia                   : 'f',
+               durationRule                    : '3_days_1_renew',
+               recurringFinesRule      : '50_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'microform' : {
+               SIPMediaType                    : '000',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'music' : {
+               SIPMediaType                    : '004',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'record'                                                : {
+               SIPMediaType                    : '000',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'software' : {
+               SIPMediaType                    : '006',
+               magneticMedia                   : 'f',
+               durationRule                    : '7_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'softwrlong' : {
+               SIPMediaType                    : '006',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'videogame' : {
+               SIPMediaType                    : '006',
+               magneticMedia                   : 'f',
+               durationRule                    : '7_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'videogamelong' : {
+               SIPMediaType                    : '006',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'talking book'                          : {  
+               SIPMediaType                    : '006',
+               magneticMedia                   : 'f',
+               durationRule                    : 'unlimited',
+       },
+
+       'toy'                                                   : {
+               SIPMediaType                    : '000',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule      : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'video' : {
+               SIPMediaType                    : '005',
+               magneticMedia                   : 'f',
+               durationRule                    : '7_days_0_renew',
+               recurringFinesRule      : '50_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'video-long'    : {
+               SIPMediaType                    : '005',
+               magneticMedia                   : 'f',
+               durationRule                    : '14_days_2_renew',
+               recurringFinesRule          : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'video-mid'     : {
+               SIPMediaType                    : '005',
+               magneticMedia                   : 'f',
+               durationRule                    : '7_days_2_renew',
+               recurringFinesRule          : '50_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+
+       'facbestslr'    : {
+               SIPMediaType                    : '001',
+               magneticMedia                   : 'f',
+               durationRule                    : '7_days_2_renew',
+               recurringFinesRule          : '10_cent_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+
+       'eventpass'     : {
+               SIPMediaType                    : '001',
+               magneticMedia                   : 'f',
+               durationRule                    : '7_day_1_renew',
+               recurringFinesRule          : '3_dollar_per_day',
+               maxFine                                 : 'overdue_mid'
+       },
+}
+
+
+/* Set up rules for legacy types */
+CIRC_MOD_MAP['DEPOSIT']        = CIRC_MOD_MAP['book'];
+CIRC_MOD_MAP['E-AUDIO']        = CIRC_MOD_MAP['book'];
+CIRC_MOD_MAP['FACNEWBK']       = CIRC_MOD_MAP['book'];
+CIRC_MOD_MAP['MAG-CIRC']       = CIRC_MOD_MAP['book'];
+CIRC_MOD_MAP['MAG-NOCIRC'] = CIRC_MOD_MAP['book'];
+CIRC_MOD_MAP['NEW-BOOK']       = CIRC_MOD_MAP['book'];
+CIRC_MOD_MAP['NEWSPAPER']      = CIRC_MOD_MAP['book'];
+CIRC_MOD_MAP['OUTREACH']       = CIRC_MOD_MAP['book'];
+CIRC_MOD_MAP['PAMPHLET']       = CIRC_MOD_MAP['book'];
+CIRC_MOD_MAP['PAPERBACK']      = CIRC_MOD_MAP['book'];
+CIRC_MOD_MAP['RESERVE']        = CIRC_MOD_MAP['book'];
+CIRC_MOD_MAP['STATE-BOOK'] = {
+       SIPMediaType                    : '001',
+       magneticMedia                   : 'f',
+       durationRule                    : '35_days_1_renew',
+       recurringFinesRule      : "10_cent_per_day",
+       maxFine                                 : "overdue_mid"
+};
+CIRC_MOD_MAP['STATE-MFRM'] =  {
+       SIPMediaType                    : '001',
+       magneticMedia                   : 'f',
+       durationRule                    : '14_days_2_renew',
+       recurringFinesRule      : "10_cent_per_day",
+       maxFine                                 : "overdue_mid"
+};
+
+
+
+
+/* this will set defaults even if no one asked for them */
+log_debug("Calling getItemConfig() to force defaults..");
+getItemConfig();
+log_debug("getItemConfig() set magneticMedia to "+result.magneticMedia);
+
+
+function getItemConfig() {
+
+       /* ----------------------------------------------------------------------------------- 
+               If a circ_modifier is defined on the copy and we have config info for the
+               provided circ_modifier, use that config.  Otherwise fall back on the MARC item type
+               ----------------------------------------------------------------------------------- */
+       var marcType    = getMARCItemType();
+       var itemForm    = (marcXMLDoc) ? extractFixedField(marcXMLDoc,'Form') : "";
+       //var circMod           = (copy.circ_modifier) ? copy.circ_modifier.toLowerCase() : '';
+       var circMod             = copy.circ_modifier;
+       
+       var config = null;
+
+   if( circMod ) {
+      config = CIRC_MOD_MAP[circMod];
+      if(!config) 
+         config = CIRC_MOD_MAP[circMod.toLowerCase()]
+      if(config)
+                  log_info("a circ_mod config exists for the copy with mod: " + circMod);
+   }
+
+   if(!config) {
+               /* otherwise, fall back on the MARC item type */
+               if( circMod ) 
+                       log_info("no circ_mod config found for " +circMod+", falling back to MARC");
+               config = MARC_ITEM_TYPE_MAP[marcType];
+       }
+
+       /* if no config could be found, default to 'book' */
+       if(!config) {
+               log_warn("item_config found no circ_mod OR MARC config, defaulting to 'book'");
+               config = CIRC_MOD_MAP['book'];
+       }
+
+       config.maxFine = setMaxFineByCircLocation();
+
+       /* go ahead and set some default result 
+               data (which may be overidden) */
+       for( var i in config ) {
+               log_debug("item_config setting result defaults: "+i+" = " +config[i]);
+               result[i] = config[i];
+       }
+
+       return config;
+}
+
+
+function setMaxFineByCircLocation() {
+       var max_libs = [ 'DTRL', 'SJRLS' ];
+       var mid_libs = [ 'ARL', 'CHRL', 'DCPL', 'ECGR', 'FRRLS', 'HCLS', 'NCLS', 'OCRL', 'OHOOP', 'OKRL', 'PMRLS', 'PPL', 'STRL' ];
+
+       var cl = (volume && volume.id != -1) ? volume.owning_lib : currentLocation.id;
+       var max_fine = null;
+
+       for( var i = 0; i < max_libs.length; i++ ) {
+               var org = max_libs[i];
+               if( isOrgDescendent(org, cl) ) {
+                       log_debug("found max-fine ancestor org "+org);
+                       max_fine = 'overdue_max';
+                       break;
+               }
+       }
+
+       if(!max_fine) {
+               for( var i = 0; i < mid_libs.length; i++ ) {
+                       var org = mid_libs[i];
+                       if( isOrgDescendent(org, cl) ) {
+                               log_debug("found mid-fine ancestor org "+org);
+                               max_fine = 'overdue_mid';
+                               break;
+                       }
+               }
+       }
+
+       if(!max_fine) max_fine = 'overdue_min';
+
+       log_info("setMaxFineByCircLocation() set max_fine to "+ max_fine);
+
+       return max_fine;
+}
+
+
diff --git a/Open-ILS/examples/pines-examples/pines-circ/circ_lib.js.example b/Open-ILS/examples/pines-examples/pines-circ/circ_lib.js.example
new file mode 100755 (executable)
index 0000000..ac3c5d6
--- /dev/null
@@ -0,0 +1,315 @@
+load_lib('catalog/record_type.js');
+load_lib('circ/circ_groups.js');
+load_lib('JSON_v1.js');
+
+
+try {
+       if( environment.copy ) {
+               environment.copy.fetchBestHold = function() {
+                       var key = scratchKey();
+                       environment.copy.__OILS_FUNC_fetch_best_hold(scratchPad(key));
+                       var val = getScratch(key);
+                       return (val) ? val : null;
+               }
+       }
+} catch(e) {}
+
+
+/* ----------------------------------------------------------------------------- 
+       Collect all of the global variables
+       ----------------------------------------------------------------------------- */
+
+/* the global result object.  Any data returned to the 
+       caller must be put into this object.  */
+var result                             = environment.result = {};
+result.event                   = 'SUCCESS';
+result.events                  = [];
+result.fatalEvents     = [];
+result.infoEvents              = [];
+
+
+/* Pull in any variables passed in from the calling process */
+var copy                                       = environment.copy;
+var volume                             = environment.volume;
+var title                              = environment.title;
+var recDescriptor              = environment.titleDescriptor;
+var patron                             = environment.patron;
+var patronItemsOut     = environment.patronItemsOut;
+var patronOverdueCount = environment.patronOverdueCount;
+var patronFines                = environment.patronFines;
+var isRenewal                  = environment.isRenewal;
+var isPrecat                   = environment.isPrecat;
+var currentLocation    = environment.location;
+var holdRequestLib     = environment.requestLib;
+var holdPickupLib       = environment.pickupLib; /* hold pickup lib */
+var requestor = environment.requestor || patron;
+var newHold = environment.newHold;
+
+
+
+/* create some new vars based on the data we have wherever possible */
+var patronProfile;
+var copyStatus;
+var marcXMLDoc;
+
+if( patron && patron.profile ) 
+       patronProfile = patron.profile.name;
+if( copy && copy.status ) 
+       copyStatus = copy.status.name;
+if( title && title.marc )
+       marcXMLDoc = new XML(title.marc);
+
+
+
+/* copy the group tree into some other useful data structures */
+var groupTree          = environment.groupTree;
+var groupList          = {};
+var groupIDList        = {};
+flattenGroupTree(groupTree);
+
+
+
+
+
+
+/* ----------------------------------------------------------------------------- 
+       Define all of the utility functions
+       ----------------------------------------------------------------------------- */
+
+
+
+/* useful functions for creating wrappers around system functions */
+var __scratchKey = 0;
+var __SCRATCH = {};
+function scratchKey()          { return '_' + __scratchKey++; };
+function scratchPad(key)       { return '__SCRATCH.'+ key; }
+function getScratch(key)       { return __SCRATCH[ key ]; }
+function scratchClear()                { for( var o in __SCRATCH ) __SCRATCH[o] = null; }
+
+
+/* note: returns false if the value is 'f' or 'F' ... */
+function isTrue(d) {
+       if(     d && 
+                       d != "0" && 
+                       d != "f" &&
+                       d != "F" )
+                       return true;
+       return false;
+}
+
+/* Utility function for iterating over array */
+function iterate( arr, callback ) {
+       for( var i = 0; i < arr.length; i++ ) 
+               callback(arr[i]);
+}
+
+
+/**
+  * returns a list of items that when passed to the callback 
+  * 'func' returned true returns null if none were found
+  */
+function grep( arr, func ) {
+       var results = [];
+       iterate( arr, 
+               function(d) {
+                       if( func(d) ) 
+                               results.push(d);
+               }
+       );
+       if(results.length > 0)  
+               return results;
+       return null;
+}
+
+
+
+function flattenGroupTree(node) {
+       if(!node) return null;
+       groupList[node.name] = node;
+       groupIDList[node.id] = node;
+       iterate( node.children,
+               function(n) {
+                       flattenGroupTree(n);
+               }
+       );
+}
+
+
+
+/**
+  * Returns true if 'child' is equal or descends from 'parent'
+  * @param parent The name of the parent group
+  * @param child The name of the child group
+  */
+function isGroupDescendant( parent, child ) {
+       log_debug("checking descendant p="+parent + " c=" + child);
+       return __isGroupDescendant(
+               groupList[parent],
+               groupList[child]);
+}
+
+function isGroupDescendantId( parentName, childId ) {
+       log_debug("checking descendant ID p="+parentName + " c=" + childId);
+       return __isGroupDescendant(
+               groupList[parentName],
+               groupIDList[childId]);
+}
+
+
+/**
+  * Returns true if 'child' is equal or descends from 'parent'
+  * @param parent The node of the parent group
+  * @param child The node of the child group
+  */
+function __isGroupDescendant( parent, child ) {
+    if(!(parent && child)) return false;
+       if (parent.id == child.id) return true;
+       var node = child;
+       while( (node = groupIDList[node.parent]) ) {
+               if( node.id == parent.id ) 
+                       return true;
+       }
+       return false;
+}
+
+
+function getMARCItemType() {
+       if(     copy &&
+                       copy.circ_as_type &&
+                       copy.circ_as_type != 'undef' )
+               return copy.circ_as_type;
+       
+       return (marcXMLDoc) ? extractFixedField(marcXMLDoc, 'Type') : "";
+}
+
+
+function isOrgDescendent( parentName, childId ) {
+       var key = scratchKey();
+       __OILS_FUNC_isOrgDescendent(scratchPad(key), parentName, childId);
+       var val = getScratch(key);
+       if( val == '1' ) return true;
+       return false;
+}
+
+/* returns the number of unfulfilled holds open on this user */
+function userHoldCount(userid) {
+   var key = scratchKey();
+   __OILS_FUNC_userHoldCount(scratchPad(key), userid);
+   return getScratch(key);
+}
+
+function hasCommonAncestor( org1, org2, depth ) {
+       var key = scratchKey();
+       __OILS_FUNC_hasCommonAncestor(scratchPad(key), org1, org2, depth);
+       var val = getScratch(key);
+       if( val == '1' ) return true;
+       return false;
+}
+
+/* returns a dictionary of circmod : count for checked out items */
+function checkoutsByCircModifier(userid) {
+    var key = scratchKey();
+    __OILS_FUNC_userCircsByCircmod(scratchPad(key), userid);
+    var val = getScratch(key);
+    return (val) ? val : {};
+}
+
+
+/* useful for testing */
+function die(msg) {
+       log_error("die(): "+msg);
+       log_stderr("die(): "+msg);
+       var foo = null;
+       var baz = foo.bar;
+}
+
+
+
+/* logs a load of info */
+function log_vars( prefix ) {
+       var str = prefix + ' : ';
+
+       if(patron) {
+               str += ' Patron=' + patron.id;
+               str += ', Patron_Username='+ patron.usrname;
+               str += ', Patron_Profile_Group='+ patronProfile;
+               str += ', Patron_Fines='        + patronFines;
+               str += ', Patron_OverdueCount=' + patronOverdueCount;
+               str += ', Patron_Items_Out=' + patronItemsOut;
+
+               try {
+                       str += ', Patron_Barcode='      + patron.card.barcode;
+                       str += ', Patron_Library='      + patron.home_ou.name;
+               } catch(e) {}
+       }
+
+    if(requestor.id != patron.id) 
+        str+= ' Requestor='+requestor.usrname;
+
+       if(copy)        {
+               str += ', Copy=' + copy.id;
+               str += ', Copy_Barcode=' + copy.barcode;
+               str += ', Copy_status=' + copyStatus;
+      str += (copy.circ_modifier) ? ', Circ_Mod=' + copy.circ_modifier : '';
+
+               try {
+                       str += ', Circ_Lib=' + copy.circ_lib.shortname;
+                       str += ', Copy_location=' + copy.location.name;
+               } catch(e) {}
+       }
+
+       if(volume) {
+        str += ', Item_Owning_lib=' + volume.owning_lib;
+        str += ', Volume='     + volume.id;
+    }
+
+       if(title) str += ', Record='    + title.id;
+
+       if(recDescriptor)       {
+               str += ', Record_Descriptor=' + recDescriptor.id;
+               str += ', Item_Type='                   + recDescriptor.item_type;
+               str += ', Item_Form='                   + recDescriptor.item_form;
+               str += ', Item_Lang='                   + recDescriptor.item_lang;
+               str += ', Item_Audience='               + recDescriptor.audience;
+       }
+
+       str += ', Is_Renewal: ' + ( (isTrue(isRenewal)) ? "yes" : "no" );
+       str += ', Is_Precat: '  + ( (isTrue(isPrecat)) ? "yes" : "no" );
+       str += (holdRequestLib) ? ', Hold_request_lib=' + holdRequestLib.shortname : '';
+    str += (holdPickupLib) ? ', Hold_Pickup_Lib=' + holdPickupLib : '';
+
+       log_info(str);
+}
+
+
+
+/**
+  * Returns config information for the requested group.  If 
+  * no config info exists for the requested group, then this
+  * function searches up the tree to find the config info 
+  * for the nearest ancestor
+  * @param The name of the group who's config info to return
+  */
+function findGroupConfig(name) {
+       if(!name) return null;
+       var node = groupList[name];
+       do {
+               if( GROUP_CONFIG[node.name] ) {
+                       debugGroupConfig(name, node.name, GROUP_CONFIG[node.name]);
+                       return GROUP_CONFIG[node.name];
+               }
+       } while( (node = groupIDList[node.parent]) );
+       return null;
+}
+
+
+/** prints out the settings for the given group config **/
+function debugGroupConfig(name, foundName, config) {
+       if(!config) return;
+       var str = "findGroupConfig('"+name+"'): returning config info for '"+ foundName +"': ";
+       for( var i in config ) 
+               str += i + '=' + config[i] + '  ';
+       log_debug(str);
+}
+
+
diff --git a/Open-ILS/examples/pines-examples/pines-circ/circ_permit_copy.js.example b/Open-ILS/examples/pines-examples/pines-circ/circ_permit_copy.js.example
new file mode 100755 (executable)
index 0000000..5475198
--- /dev/null
@@ -0,0 +1,30 @@
+function go() {
+
+/* load the lib script */
+load_lib('circ/circ_lib.js');
+log_vars('circ_permit_copy');
+
+
+if( ! isTrue(copy.circulate) || !isTrue(copy.location.circulate) ) 
+       result.events.push('COPY_CIRC_NOT_ALLOWED');
+
+
+if( ! isOrgDescendent( 'STATELIB', copy.circ_lib.id ) ) {
+       if( isTrue(copy.ref) ) 
+               result.events.push('COPY_IS_REFERENCE');
+}
+
+
+
+if( ! isTrue(isRenewal) ) {
+       if(copyStatus != 'Available' && 
+               copyStatus != 'On holds shelf' && copyStatus != 'Reshelving' ) {
+                       result.events.push('COPY_NOT_AVAILABLE');
+       } 
+}
+
+
+       
+} go();
+
+
diff --git a/Open-ILS/examples/pines-examples/pines-circ/circ_permit_hold.js.example b/Open-ILS/examples/pines-examples/pines-circ/circ_permit_hold.js.example
new file mode 100755 (executable)
index 0000000..734c5f2
--- /dev/null
@@ -0,0 +1,141 @@
+function go() {
+
+load_lib('circ/circ_lib.js');
+log_vars('circ_permit_hold');
+
+
+/* is a staff member placing this hold? */
+var isStaffHold = isGroupDescendantId('Staff', requestor.profile);
+
+
+/* non-staff members are allowed 50 open holds at most */
+if( ! isStaffHold ) {
+    if(newHold) {
+        var count = userHoldCount(patron.id);
+        log_info("patron has " + count + " open holds");
+        if( count >= 50 ) 
+            result.events.push('MAX_HOLDS');
+    }
+} else {
+    log_info("This is a staff-placed hold");
+}
+
+
+
+if( isTrue(patron.barred) ) 
+       result.events.push('PATRON_BARRED');
+
+if( isTrue(copy.ref) ) 
+       result.events.push('ITEM_NOT_HOLDABLE');
+
+if( !isTrue(copy.circulate) ) 
+       result.events.push('ITEM_NOT_HOLDABLE');
+
+/* all STATELIB items are holdable regardless of type */
+if( isOrgDescendent('STATELIB', copy.circ_lib.id) ) return;
+
+
+var mod = (copy.circ_modifier) ? copy.circ_modifier.toLowerCase() : "";
+var marcItemType = getMARCItemType();
+
+
+log_info("circ-modifier = "+mod);
+log_info("marc-type = "+marcItemType);
+
+
+if(mod == 'bestsellernh' || mod == 'eventpass')
+       result.events.push('ITEM_NOT_HOLDABLE');
+
+
+if( ( marcItemType == 'g' || 
+               marcItemType == 'i' || 
+               marcItemType == 'j' || 
+               mod == 'softwrlong' || 
+               mod == 'music' || 
+               mod == 'audiobook' || 
+               mod == 'av' || 
+               mod == 'new-av' || 
+               mod == 'cd' || 
+               mod == 'kit' || 
+               mod == 'dvd' || 
+               mod == 'deposit' || 
+               mod == 'atlas' || 
+               mod == 'magazine' || 
+               mod == 'equipment' || 
+               mod == 'equip-long' || 
+               mod == 'microform' || 
+               mod == 'record' || 
+               isTrue(copy.deposit) || 
+               mod == 'videogame' ||
+        mod == 'videogamelong' ||
+        mod == 'video-long' || 
+               mod == 'video' ) ) {
+
+
+       log_info("this is a range-protected item...");
+
+       /* ------------------------------------------------------------------------ */
+       /** This patch allows DCPL and LEE patrons to place 
+               holds on protected items accross their systems.  In short, if the pickup lib,
+               owning lib, and patron home (or request lib) are all within either of the two 
+               systems, allow the hold */
+       if(
+               /* DCPL=33, LEE=115 */
+               (hasCommonAncestor(holdPickupLib, 33, 1) || hasCommonAncestor(holdPickupLib, 115, 1)) &&
+               (hasCommonAncestor(volume.owning_lib, 33, 1) || hasCommonAncestor(volume.owning_lib, 115, 1)) &&
+               (
+                       hasCommonAncestor(patron.home_ou.id, 33, 1) || hasCommonAncestor(patron.home_ou.id, 115, 1) || 
+                       hasCommonAncestor(holdRequestLib.id, 33, 1) || hasCommonAncestor(holdRequestLib.id, 115, 1)
+               )) {
+
+               log_info("DCPL and LEE are allowed to place holds on protected items accross the two systems");
+               return;
+       }
+       /* ------------------------------------------------------------------------ */
+
+       /* ------------------------------------------------------------------------ */
+       /** VT696 SRL-DOUG going local request 2008-12-08 through 2009-01-31.**/
+    /* SRL-DOUG=135 */
+    //if( copy.circ_lib == 135  &&  holdPickupLib != '135' ) {
+    //    results.events.push('ITEM_NOT_HOLDABLE');
+    //    log_info("SRL-DOUG items must be picked up from SRL-DOUG for the time being");
+       //}
+       /* ------------------------------------------------------------------------ */
+
+    if( ! hasCommonAncestor( volume.owning_lib, holdPickupLib, 1 ) ) {
+
+        /* we don't want these items to transit to the pickup lib */
+        result.events.push('ITEM_NOT_HOLDABLE');
+           log_info("pickup_lib is not in the owning_lib's region...NOT OK");
+
+    } else { /* pickup lib is in the owning region */
+
+        if( isStaffHold && hasCommonAncestor( volume.owning_lib, holdRequestLib.id, 1) ) {
+
+            /* staff in the region can place holds for patrons outside the region with local pickup lib */
+            log_info("local, staff-placed hold is allowed with local pickup_lib...OK");
+
+        } else {
+
+            if( hasCommonAncestor( volume.owning_lib, patron.home_ou.id, 1 ) ) {
+
+                /* patrons can hold the item if they are registered 
+                    in the region and pickup lib is local */  
+                log_info("patron's home_ou is in the owning region...OK");
+
+            } else {
+
+                log_info("patron's home_ou lies outside the owning region...NOT OK");
+                result.events.push('ITEM_NOT_HOLDABLE');
+            }
+        }
+    }
+}
+
+
+
+
+} go();
+
+
+
diff --git a/Open-ILS/examples/pines-examples/pines-circ/circ_permit_patron.js.example b/Open-ILS/examples/pines-examples/pines-circ/circ_permit_patron.js.example
new file mode 100755 (executable)
index 0000000..8b8cd43
--- /dev/null
@@ -0,0 +1,36 @@
+function go() {
+
+/* load the script library */
+load_lib('circ/circ_lib.js');
+log_vars('circ_permit_patron');
+
+
+
+if( isTrue(patron.barred) ) 
+       result.events.push('PATRON_BARRED');
+
+
+/* ---------------------------------------------------------------------
+       Check the items out count 
+       --------------------------------------------------------------------- */
+var config = findGroupConfig(patronProfile);
+if( config ) {
+       
+       var limit = config.maxItemsOut;
+       if( limit >= 0 ) {
+               /* Patrons are allowed to renew regardless 
+                       of how many items they have checked out */
+               log_info('patron items out = ' + patronItemsOut +' limit = ' + limit);
+               if( !isTrue(isRenewal) && patronItemsOut >= limit ) {
+                               result.events.push('PATRON_EXCEEDS_CHECKOUT_COUNT');
+               }
+       }
+
+} else {
+       log_warn("** profile has no configured information: " + patronProfile);
+}
+
+
+} go();
+
+
diff --git a/Open-ILS/examples/pines-examples/pines-circ/circ_permit_renew.js.example b/Open-ILS/examples/pines-examples/pines-circ/circ_permit_renew.js.example
new file mode 100755 (executable)
index 0000000..f05607b
--- /dev/null
@@ -0,0 +1,20 @@
+function go() {
+
+/* load the lib script */
+load_lib('circ/circ_lib.js');
+log_vars('circ_permit_renew');
+
+log_info("permit_renew searching for potential holds for copy " + copy.barcode)
+var hold = copy.fetchBestHold();
+if( hold ) {
+       log_info("hold found for renewal item, checking hold->usr..");
+    log_info("hold = " + hold + "  hold.usr = " + hold.usr + "   patron.id = " + patron.id);
+       if( hold.usr != patron.id ) {
+        log_info("## Before the push.");
+               result.events.push('COPY_NEEDED_FOR_HOLD');
+        log_info("## After the push.");
+    }
+}
+
+
+} go();
diff --git a/Open-ILS/examples/pines-examples/pines-survey-down.sh b/Open-ILS/examples/pines-examples/pines-survey-down.sh
new file mode 100755 (executable)
index 0000000..b3c72f4
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+cd /openils/var/web/opac/skin/default/xml/home/
+rm homesearch.xml
+mv homesearch.xml.orig homesearch.xml
+
diff --git a/Open-ILS/examples/pines-examples/pines-survey-up.sh b/Open-ILS/examples/pines-examples/pines-survey-up.sh
new file mode 100755 (executable)
index 0000000..f64ac26
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+cd /openils/var/web/opac/skin/default/xml/home/
+mv homesearch.xml homesearch.xml.orig
+cp homesearch.xml.survey homesearch.xml
diff --git a/Open-ILS/examples/pines-examples/pines-zips.txt.example b/Open-ILS/examples/pines-examples/pines-zips.txt.example
new file mode 100644 (file)
index 0000000..cf28d8c
--- /dev/null
@@ -0,0 +1,1504 @@
+26266|GA|AVONDALE ESTATES|30002|1|13|DEKALB|404
+26267|GA|AVONDALE EST|30002|0|13||
+26268|GA|NORCROSS|30003|1|13|GWINNETT|770
+26269|GA|ALPHARETTA|30004|1|13|FULTON|404/770
+26270|GA|ALPHARETTA|30005|1|13|FULTON|678
+26271|GA|MARIETTA|30006|1|13|COBB|770
+26272|GA|MARIETTA|30007|1|13|COBB|770
+26273|GA|MARIETTA|30008|1|13|COBB|678/770
+26274|GA|ALPHARETTA|30009|1|13|FULTON|404/770
+26275|GA|NORCROSS|30010|1|13|GWINNETT|770
+26276|GA|AUBURN|30011|1|13|BARROW|770
+26277|GA|CONYERS|30012|1|13|ROCKDALE|678/770
+26278|GA|CONYERS|30013|1|13|ROCKDALE|678/770
+26279|GA|COVINGTON|30014|1|13|NEWTON|678/770
+26280|GA|COVINGTON|30015|1|13|NEWTON|770
+26281|GA|COVINGTON|30016|1|13|NEWTON|678/770
+26282|GA|GRAYSON|30017|1|13|GWINNETT|770
+26283|GA|JERSEY|30018|1|13|WALTON|770
+26284|GA|DACULA|30019|1|13|GWINNETT|770
+26285|GA|CLARKSTON|30021|1|13|DEKALB|404
+26286|GA|ALPHARETTA|30022|1|13|FULTON|404/770
+26287|GA|ALPHARETTA|30023|1|13|FULTON|404/770
+26288|GA|SUWANEE|30024|1|13|GWINNETT|770
+26289|GA|SOCIAL CIRCLE|30025|1|13|WALTON|678/770
+26290|GA|NORTH METRO|30026|1|13|GWINNETT|770
+26291|GA|DULUTH|30026|0|13||
+26292|GA|CUMMING|30028|1|13|FORSYTH|770
+26293|GA|NORTH METRO|30029|1|13|GWINNETT|770
+26294|GA|DULUTH|30029|0|13||
+26295|GA|DECATUR|30030|1|13|DEKALB|404
+26296|GA|DECATUR|30031|1|13|DEKALB|404
+26297|GA|DECATUR|30032|1|13|DEKALB|404
+26298|GA|BELVEDERE|30032|0|13||
+26299|GA|DUNAIRE|30032|0|13||
+26300|GA|DECATUR|30033|1|13|DEKALB|404
+26301|GA|NORTH DECATUR|30033|0|13||
+26302|GA|VISTA GROVE|30033|0|13||
+26303|GA|DECATUR|30034|1|13|DEKALB|404
+26304|GA|DECATUR|30035|1|13|DEKALB|404
+26305|GA|SNAPFINGER|30035|0|13||
+26306|GA|DECATUR|30036|1|13|DEKALB|404
+26307|GA|DECATUR|30037|1|13|DEKALB|404
+26308|GA|LITHONIA|30038|1|13|DEKALB|678/770
+26309|GA|SNELLVILLE|30039|1|13|GWINNETT|678/770
+26310|GA|CENTERVILLE BRANCH|30039|0|13||
+26311|GA|CUMMING|30040|1|13|FORSYTH|678/770
+26312|GA|CUMMING|30041|1|13|FORSYTH|678/770
+26313|GA|LAWRENCEVILLE|30042|1|13|GWINNETT|770
+26314|GA|LAWRENCEVILLE|30043|1|13|GWINNETT|678/770
+26315|GA|LAWRENCEVILLE|30044|1|13|GWINNETT|678/770
+26316|GA|LAWRENCEVILLE|30045|1|13|GWINNETT|678/770
+26317|GA|LAWRENCEVILLE|30046|1|13|GWINNETT|770
+26318|GA|LILBURN|30047|1|13|GWINNETT|678/770
+26319|GA|LILBURN|30048|1|13|GWINNETT|678
+26320|GA|LAWRENCEVILLE|30049|1|13|GWINNETT|770
+26321|GA|LOGANVILLE|30052|1|13|WALTON|770
+26322|GA|OXFORD|30054|1|13|NEWTON|770
+26323|GA|MANSFIELD|30055|1|13|JASPER|770
+26324|GA|NEWBORN|30056|1|13|NEWTON|770
+26325|GA|LITHONIA|30058|1|13|DEKALB|678/770
+26326|GA|MARIETTA|30060|1|13|COBB|678/770
+26327|GA|ATLANTA NAVAL AIR STATION|30060|0|13||
+26328|GA|DOBBINS A F B|30060|0|13||
+26329|GA|DOBBINS AIR FORCE BASE|30060|0|13||
+26330|GA|MARIETTA|30061|1|13|COBB|770
+26331|GA|MARIETTA|30062|1|13|COBB|678/770
+26332|GA|MARIETTA|30063|1|13|COBB|770
+26333|GA|LOCKHEED|30063|0|13||
+26334|GA|MARIETTA|30064|1|13|COBB|678/770
+26335|GA|MARIETTA|30065|1|13|COBB|770
+26336|GA|MAR|30065|0|13||
+26337|GA|MRETA|30065|0|13||
+26338|GA|MARIETTA|30066|1|13|COBB|678/770
+26339|GA|MARIETTA|30067|1|13|COBB|678/770
+26340|GA|MARIETTA|30068|1|13|COBB|678/770
+26341|GA|MARIETTA|30069|1|13|COBB|770
+26342|GA|DOBBINS AFB|30069|0|13||
+26343|GA|DOBBINS AIR FORCE BASE|30069|0|13||
+26344|GA|PORTERDALE|30070|1|13|NEWTON|770
+26345|GA|NORCROSS|30071|1|13|GWINNETT|770
+26346|GA|PINE LAKE|30072|1|13|DEKALB|404
+26347|GA|REDAN|30074|1|13|DEKALB|770
+26348|GA|ROSWELL|30075|1|13|FULTON|770
+26349|GA|SANDY PLAINS|30075|0|13||
+26350|GA|ROSWELL|30076|1|13|FULTON|770
+26351|GA|ROSWELL|30077|1|13|FULTON|770
+26352|GA|SNELLVILLE|30078|1|13|GWINNETT|678/770
+26353|GA|SCOTTDALE|30079|1|13|DEKALB|404/678
+26354|GA|SMYRNA|30080|1|13|COBB|770
+26355|GA|SMYRNA|30081|1|13|COBB|770
+26356|GA|SMYRNA|30082|1|13|COBB|770
+26357|GA|STONE MOUNTAIN|30083|1|13|DEKALB|678/770
+26358|GA|MEMORIAL SQUARE|30083|0|13||
+26359|GA|ST MOUNTAIN|30083|0|13||
+26360|GA|ST MTN|30083|0|13||
+26361|GA|STONE MTN|30083|0|13||
+26362|GA|TUCKER|30084|1|13|DEKALB|770
+26363|GA|TUCKER|30085|1|13|DEKALB|770
+26364|GA|STONE MOUNTAIN|30086|1|13|DEKALB|770
+26365|GA|ST MOUNTAIN|30086|0|13||
+26366|GA|STONE MTN|30086|0|13||
+26367|GA|STONE MOUNTAIN|30087|1|13|DEKALB|678/770
+26368|GA|STONE MTN|30087|0|13||
+26369|GA|STONE MOUNTAIN|30088|1|13|DEKALB|404/678
+26370|GA|STONE MTN|30088|0|13||
+26371|GA|MARIETTA|30090|1|13|COBB|770
+26372|GA|NORCROSS|30091|1|13|GWINNETT|770
+26373|GA|NORCROSS|30092|1|13|GWINNETT|678/770
+26374|GA|BERKELEY LAKE|30092|0|13||
+26375|GA|PARKWAY|30092|0|13||
+26376|GA|PEACHTREE CORNERS|30092|0|13||
+26377|GA|NORCROSS|30093|1|13|GWINNETT|678/770
+26378|GA|ROCKBRIDGE|30093|0|13||
+26379|GA|CONYERS|30094|1|13|ROCKDALE|678/770
+26380|GA|DULUTH|30095|1|13|GWINNETT|770
+26381|GA|DULUTH|30096|1|13|GWINNETT|678/770
+26382|GA|BERKELEY LAKE|30096|0|13||
+26383|GA|DULUTH|30097|1|13|FULTON|678/770
+26384|GA|DULUTH|30098|1|13|GWINNETT|770
+26385|GA|STATE FARM INSURANCE CO|30098|0|13||
+26386|GA|DULUTH|30099|1|13|GWINNETT|770
+26387|GA|PRIMERICA FINANCIAL SERVICES|30099|0|13||
+26388|GA|ACWORTH|30101|1|13|COBB|678/770
+26389|GA|OAK GROVE|30101|0|13||
+26390|GA|ACWORTH|30102|1|13|CHEROKEE|678/770
+26391|GA|ADAIRSVILLE|30103|1|13|BARTOW|678/770
+26392|GA|ARAGON|30104|1|13|POLK|770
+26393|GA|ARMUCHEE|30105|1|13|FLOYD|706
+26394|GA|AUSTELL|30106|1|13|COBB|678/770
+26395|GA|BALL GROUND|30107|1|13|CHEROKEE|770
+26396|GA|BOWDON|30108|1|13|CARROLL|678/770
+26397|GA|BOWDON JUNCTION|30109|1|13|CARROLL|770
+26398|GA|BOWDON JCT|30109|0|13||
+26399|GA|BREMEN|30110|1|13|HARALSON|678/770
+26400|GA|CLARKDALE|30111|1|13|COBB|770
+26401|GA|CARROLLTON|30112|1|13|CARROLL|770
+26402|GA|BUCHANAN|30113|1|13|HARALSON|678/770
+26403|GA|CANTON|30114|1|13|CHEROKEE|678/770
+26404|GA|CANTON|30115|1|13|CHEROKEE|678/770
+26405|GA|CARROLLTON|30116|1|13|CARROLL|678/770
+26406|GA|CARROLLTON|30117|1|13|CARROLL|678/770
+26407|GA|WEST GEORGIA COLLEGE|30117|0|13||
+26408|GA|CARROLLTON|30118|1|13|CARROLL|770
+26409|GA|WEST GEORGIA COLLEGE|30118|0|13||
+26410|GA|CARROLLTON|30119|1|13|CARROLL|770
+26411|GA|SOUTHWIRE|30119|0|13||
+26412|GA|CARTERSVILLE|30120|1|13|BARTOW|678/770
+26413|GA|EUHARLEE|30120|0|13||
+26414|GA|NORTH CORNERS|30120|0|13||
+26415|GA|CARTERSVILLE|30121|1|13|BARTOW|678/770
+26416|GA|LITHIA SPRINGS|30122|1|13|DOUGLAS|770
+26417|GA|CASSVILLE|30123|1|13|BARTOW|770
+26418|GA|CAVE SPRING|30124|1|13|FLOYD|706
+26419|GA|CEDARTOWN|30125|1|13|POLK|678/770
+26420|GA|MABLETON|30126|1|13|COBB|770
+26421|GA|POWDER SPRINGS|30127|1|13|COBB|678/770
+26422|GA|COOSA|30129|1|13|FLOYD|706
+26423|GA|DALLAS|30132|1|13|PAULDING|678/770
+26424|GA|DOUGLASVILLE|30133|1|13|DOUGLAS|770
+26425|GA|DOUGLASVILLE|30134|1|13|DOUGLAS|678/770
+26426|GA|DOUGLASVILLE|30135|1|13|DOUGLAS|678/770
+26427|GA|EMERSON|30137|1|13|BARTOW|770
+26428|GA|ESOM HILL|30138|1|13|POLK|770
+26429|GA|FAIRMOUNT|30139|1|13|GORDON|706/770
+26430|GA|FELTON|30140|1|13|HARALSON|770
+26431|GA|HIRAM|30141|1|13|PAULDING|770
+26432|GA|HOLLY SPRINGS|30142|1|13|CHEROKEE|770
+26433|GA|JASPER|30143|1|13|PICKENS|706
+26434|GA|BIG CANOE|30143|0|13||
+26435|GA|KENNESAW|30144|1|13|COBB|770
+26436|GA|BARRETT PARKWAY|30144|0|13||
+26437|GA|KINGSTON|30145|1|13|BARTOW|678/770
+26438|GA|EUHARLEE|30145|0|13||
+26439|GA|LEBANON|30146|1|13|CHEROKEE|770
+26440|GA|LINDALE|30147|1|13|FLOYD|706
+26441|GA|MARBLE HILL|30148|1|13|PICKENS|770
+26442|GA|MARBLEHILL|30148|0|13||
+26443|GA|MOUNT BERRY|30149|1|13|FLOYD|706
+26444|GA|ROME|30149|0|13||
+26445|GA|MOUNT ZION|30150|1|13|CARROLL|770
+26446|GA|NELSON|30151|1|13|CHEROKEE|770
+26447|GA|KENNESAW|30152|1|13|COBB|770
+26448|GA|ROCKMART|30153|1|13|POLK|678/770
+26449|GA|DOUGLASVILLE|30154|1|13|DOUGLAS|770
+26450|GA|KENNESAW|30156|1|13|COBB|770
+26451|GA|DALLAS|30157|1|13|PAULDING|678/770
+26452|GA|KENNESAW|30160|1|13|COBB|770
+26453|GA|ROME|30161|1|13|FLOYD|706
+26454|GA|ROME|30162|1|13|FLOYD|706
+26455|GA|ROME|30163|1|13|FLOYD|706
+26456|GA|ROME|30164|1|13|FLOYD|706
+26457|GA|ROME|30165|1|13|FLOYD|706
+26458|GA|AUSTELL|30168|1|13|COBB|678/770
+26459|GA|CANTON|30169|1|13|CHEROKEE|770
+26460|GA|ROOPVILLE|30170|1|13|CARROLL|678/770
+26461|GA|EPHESUS|30170|0|13||
+26462|GA|RYDAL|30171|1|13|BARTOW|770
+26463|GA|SHANNON|30172|1|13|FLOYD|706
+26464|GA|SILVER CREEK|30173|1|13|FLOYD|706
+26465|GA|TALKING ROCK|30175|1|13|PICKENS|706
+26466|GA|TALLAPOOSA|30176|1|13|HARALSON|678/770
+26467|GA|TATE|30177|1|13|PICKENS|770
+26468|GA|TAYLORSVILLE|30178|1|13|BARTOW|770
+26469|GA|TEMPLE|30179|1|13|CARROLL|678/770
+26470|GA|VILLA RICA|30180|1|13|CARROLL|678/770
+26471|GA|WACO|30182|1|13|HARALSON|770
+26472|GA|WALESKA|30183|1|13|CHEROKEE|770
+26473|GA|LAKE ARROWHEAD|30183|0|13||
+26474|GA|WHITE|30184|1|13|BARTOW|770
+26475|GA|WHITESBURG|30185|1|13|CARROLL|770
+26476|GA|WINSTON|30187|1|13|DOUGLAS|770
+26477|GA|WOODSTOCK|30188|1|13|CHEROKEE|678/770
+26478|GA|WOODSTOCK|30189|1|13|CHEROKEE|678/770
+26479|GA|BARNESVILLE|30204|1|13|LAMAR|678/770
+26480|GA|BROOKS|30205|1|13|FAYETTE|770
+26481|GA|CONCORD|30206|1|13|PIKE|770
+26482|GA|EXPERIMENT|30212|1|13|SPALDING|770
+26483|GA|FAIRBURN|30213|1|13|FULTON|770
+26484|GA|FAYETTEVILLE|30214|1|13|FAYETTE|678/770
+26485|GA|WOOLSEY|30214|0|13||
+26486|GA|FAYETTEVILLE|30215|1|13|FAYETTE|678/770
+26487|GA|FLOVILLA|30216|1|13|BUTTS|770
+26488|GA|INDIAN SPRINGS|30216|0|13||
+26489|GA|FRANKLIN|30217|1|13|HEARD|706
+26490|GA|GAY|30218|1|13|MERIWETHER|706
+26491|GA|GLENN|30219|1|13|HEARD|706
+26492|GA|GRANTVILLE|30220|1|13|COWETA|678/770
+26493|GA|GREENVILLE|30222|1|13|MERIWETHER|706
+26494|GA|STOVALL|30222|0|13||
+26495|GA|GRIFFIN|30223|1|13|SPALDING|678/770
+26496|GA|GRIFFIN|30224|1|13|SPALDING|770
+26497|GA|HAMPTON|30228|1|13|HENRY|770
+26498|GA|HARALSON|30229|1|13|COWETA|770
+26499|GA|HOGANSVILLE|30230|1|13|TROUP|706
+26500|GA|JACKSON|30233|1|13|BUTTS|678/770
+26501|GA|JENKINSBURG|30234|1|13|BUTTS|770
+26502|GA|JONESBORO|30236|1|13|CLAYTON|678/770
+26503|GA|JONESBORO|30237|1|13|CLAYTON|678
+26504|GA|JONESBORO|30238|1|13|CLAYTON|678/770
+26505|GA|LAGRANGE|30240|1|13|TROUP|706
+26506|GA|LAGRANGE|30241|1|13|TROUP|706
+26507|GA|LOCUST GROVE|30248|1|13|HENRY|770
+26508|GA|LOVEJOY|30250|1|13|CLAYTON|770
+26509|GA|LUTHERSVILLE|30251|1|13|MERIWETHER|678/770
+26510|GA|MCDONOUGH|30252|1|13|HENRY|678/770
+26511|GA|MCDONOUGH|30253|1|13|HENRY|678/770
+26512|GA|MC DONOUGH|30253|0|13||
+26513|GA|MEANSVILLE|30256|1|13|PIKE|770
+26514|GA|MILNER|30257|1|13|LAMAR|770
+26515|GA|MOLENA|30258|1|13|PIKE|770
+26516|GA|MORELAND|30259|1|13|COWETA|770
+26517|GA|MORROW|30260|1|13|CLAYTON|770
+26518|GA|LAKE CITY|30260|0|13||
+26519|GA|LAGRANGE|30261|1|13|TROUP|706
+26520|GA|MOUNTVILLE|30261|0|13||
+26521|GA|NEWNAN|30263|1|13|COWETA|678/770
+26522|GA|RAYMOND|30263|0|13||
+26523|GA|NEWNAN|30264|1|13|COWETA|678/770
+26524|GA|NEWNAN|30265|1|13|COWETA|678/770
+26525|GA|SHENANDOAH|30265|0|13||
+26526|GA|ORCHARD HILL|30266|1|13|SPALDING|770
+26527|GA|PALMETTO|30268|1|13|FULTON|770
+26528|GA|PEACHTREE CITY|30269|1|13|FAYETTE|770
+26529|GA|PEACHTREE CITY|30270|1|13|FAYETTE|770
+26530|GA|FAYETTEVILLE|30270|0|13||
+26531|GA|PEACHTREE CITY PARCEL RETURN|30270|0|13||
+26532|GA|NEWNAN|30271|1|13|COWETA|770
+26533|GA|RED OAK|30272|1|13|FULTON|404
+26534|GA|REX|30273|1|13|CLAYTON|770
+26535|GA|RIVERDALE|30274|1|13|CLAYTON|770
+26536|GA|SARGENT|30275|1|13|COWETA|770
+26537|GA|SENOIA|30276|1|13|COWETA|678/770
+26538|GA|SHARPSBURG|30277|1|13|COWETA|770
+26539|GA|STOCKBRIDGE|30281|1|13|HENRY|678/770
+26540|GA|SUNNY SIDE|30284|1|13|SPALDING|770
+26541|GA|THE ROCK|30285|1|13|UPSON|706
+26542|GA|THOMASTON|30286|1|13|UPSON|706
+26543|GA|MORROW|30287|1|13|CLAYTON|770
+26544|GA|CONLEY|30288|1|13|CLAYTON|404
+26545|GA|TURIN|30289|1|13|COWETA|770
+26546|GA|TYRONE|30290|1|13|FAYETTE|770
+26547|GA|UNION CITY|30291|1|13|FULTON|770
+26548|GA|WILLIAMSON|30292|1|13|PIKE|770
+26549|GA|WOODBURY|30293|1|13|MERIWETHER|706
+26550|GA|ELLENWOOD|30294|1|13|DEKALB|770
+26551|GA|ZEBULON|30295|1|13|PIKE|678/770
+26552|GA|RIVERDALE|30296|1|13|CLAYTON|770
+26553|GA|CHURCH STREET|30296|0|13||
+26554|GA|FOREST PARK|30297|1|13|CLAYTON|404
+26555|GA|FORT GILLEM|30297|0|13||
+26556|GA|FOREST PARK|30298|1|13|CLAYTON|404
+26557|GA|FOREST|30298|0|13||
+26558|GA|ATLANTA|30301|1|13|FULTON|404/678
+26559|GA|ATL|30301|0|13||
+26560|GA|ATLANTA|30302|1|13|FULTON|404/770
+26561|GA|ATL|30302|0|13||
+26562|GA|ATLANTA|30303|1|13|FULTON|404/678
+26563|GA|ATL|30303|0|13||
+26564|GA|GEORGIA STATE UNIVERSITY|30303|0|13||
+26565|GA|ATLANTA|30304|1|13|FULTON|404/770
+26566|GA|ATL|30304|0|13||
+26567|GA|ATLANTA|30305|1|13|FULTON|404/678
+26568|GA|ATL|30305|0|13||
+26569|GA|ATLANTA|30306|1|13|FULTON|404/678
+26570|GA|ATL|30306|0|13||
+26571|GA|NORTH HIGHLAND FINANCE|30306|0|13||
+26572|GA|ATLANTA|30307|1|13|FULTON|404/678
+26573|GA|ATL|30307|0|13||
+26574|GA|LITTLE FIVE POINTS PSTL STR|30307|0|13||
+26575|GA|ATLANTA|30308|1|13|FULTON|404/678
+26576|GA|ATL|30308|0|13||
+26577|GA|ATLANTA|30309|1|13|FULTON|404/678
+26578|GA|ATL|30309|0|13||
+26579|GA|ATLANTA|30310|1|13|FULTON|404/678
+26580|GA|ATL|30310|0|13||
+26581|GA|FORT MCPHERSON|30310|0|13||
+26582|GA|ATLANTA|30311|1|13|FULTON|404/678
+26583|GA|ATL|30311|0|13||
+26584|GA|ATLANTA|30312|1|13|FULTON|404/678
+26585|GA|ATL|30312|0|13||
+26586|GA|ATLANTA|30313|1|13|FULTON|404/678
+26587|GA|ATL|30313|0|13||
+26588|GA|ATLANTA|30314|1|13|FULTON|404/678
+26589|GA|ATL|30314|0|13||
+26590|GA|ATLANTA|30315|1|13|FULTON|404/678
+26591|GA|ATL|30315|0|13||
+26592|GA|ATLANTA|30316|1|13|FULTON|404/678
+26593|GA|ATL|30316|0|13||
+26594|GA|ATLANTA|30317|1|13|DEKALB|404/770
+26595|GA|ATL|30317|0|13||
+26596|GA|ATLANTA|30318|1|13|FULTON|404/678
+26597|GA|ATL|30318|0|13||
+26598|GA|ATLANTA|30319|1|13|DEKALB|404/678
+26599|GA|ATL|30319|0|13||
+26600|GA|NORTH ATLANTA|30319|0|13||
+26601|GA|ATLANTA|30320|1|13|FULTON|404
+26602|GA|AIRPORT MAIL CENTER|30320|0|13||
+26603|GA|ATL|30320|0|13||
+26604|GA|ATLANTA|30321|1|13|FULTON|404
+26605|GA|ATL|30321|0|13||
+26606|GA|ATLANTA|30322|1|13|DEKALB|404
+26607|GA|ATL|30322|0|13||
+26608|GA|EMORY UNIVERSITY|30322|0|13||
+26609|GA|ATLANTA|30324|1|13|FULTON|404/678
+26610|GA|ATL|30324|0|13||
+26611|GA|ATLANTA|30325|1|13|FULTON|770
+26612|GA|ATL|30325|0|13||
+26613|GA|ATLANTA|30326|1|13|FULTON|404/678
+26614|GA|ATL|30326|0|13||
+26615|GA|ATLANTA|30327|1|13|FULTON|404/678
+26616|GA|ATL|30327|0|13||
+26617|GA|ATLANTA|30328|1|13|FULTON|404/678
+26618|GA|ATL|30328|0|13||
+26619|GA|SANDY SPRINGS|30328|0|13||
+26620|GA|ATLANTA|30329|1|13|DEKALB|404/678
+26621|GA|ATL|30329|0|13||
+26622|GA|BRIARCLIFF|30329|0|13||
+26623|GA|ATLANTA|30330|1|13|FULTON|404/678
+26624|GA|ATL|30330|0|13||
+26625|GA|FORT MCPHERSON|30330|0|13||
+26626|GA|FT MCPHERSON|30330|0|13||
+26627|GA|ATLANTA|30331|1|13|FULTON|404/770
+26628|GA|ATL|30331|0|13||
+26629|GA|ATLANTA|30332|1|13|FULTON|404
+26630|GA|ATL|30332|0|13||
+26631|GA|ATLANTA|30333|1|13|DEKALB|404/770
+26632|GA|ATL|30333|0|13||
+26633|GA|DRUID HILLS|30333|0|13||
+26634|GA|ATLANTA|30334|1|13|FULTON|404/678
+26635|GA|ATL|30334|0|13||
+26636|GA|ATLANTA|30336|1|13|FULTON|404
+26637|GA|ATL|30336|0|13||
+26638|GA|INDUSTRIAL|30336|0|13||
+26639|GA|ATLANTA|30337|1|13|FULTON|404/678
+26640|GA|ATL|30337|0|13||
+26641|GA|COLLEGE PARK|30337|0|13||
+26642|GA|ATLANTA|30338|1|13|DEKALB|404/678
+26643|GA|ATL|30338|0|13||
+26644|GA|DUNWOODY|30338|0|13||
+26645|GA|NORTH SPRINGS|30338|0|13||
+26646|GA|ATLANTA|30339|1|13|FULTON|404/678
+26647|GA|ATL|30339|0|13||
+26648|GA|CUMBERLAND|30339|0|13||
+26649|GA|OVERLOOK SRU|30339|0|13||
+26650|GA|SMYRNA|30339|0|13||
+26651|GA|VININGS|30339|0|13||
+26652|GA|VINNINGS|30339|0|13||
+26653|GA|ATLANTA|30340|1|13|DEKALB|404/678
+26654|GA|ATL|30340|0|13||
+26655|GA|DORAVILLE|30340|0|13||
+26656|GA|ATLANTA|30341|1|13|DEKALB|404/678
+26657|GA|ATL|30341|0|13||
+26658|GA|CHAMBLEE|30341|0|13||
+26659|GA|ATLANTA|30342|1|13|FULTON|404/678
+26660|GA|ATL|30342|0|13||
+26661|GA|TUXEDO|30342|0|13||
+26662|GA|ATLANTA|30343|1|13|FULTON|404/770
+26663|GA|ATL|30343|0|13||
+26664|GA|ATLANTA|30344|1|13|FULTON|404/678
+26665|GA|ATL|30344|0|13||
+26666|GA|EAST POINT|30344|0|13||
+26667|GA|ATLANTA|30345|1|13|DEKALB|404/678
+26668|GA|ATL|30345|0|13||
+26669|GA|ATLANTA|30346|1|13|DEKALB|404/678
+26670|GA|ATL|30346|0|13||
+26671|GA|ATLANTA|30347|1|13|FULTON|404
+26672|GA|ATL|30347|0|13||
+26673|GA|EXECUTIVE PARK|30347|0|13||
+26674|GA|ATLANTA|30348|1|13|FULTON|404/770
+26675|GA|ATL|30348|0|13||
+26676|GA|ATLANTA|30349|1|13|FULTON|404/678
+26677|GA|ATL|30349|0|13||
+26678|GA|COLLEGE PARK|30349|0|13||
+26679|GA|ATLANTA|30350|1|13|DEKALB|404/678
+26680|GA|ATL|30350|0|13||
+26681|GA|SANDY SPRINGS|30350|0|13||
+26682|GA|ATLANTA|30353|1|13|FULTON|404/770
+26683|GA|ATL|30353|0|13||
+26684|GA|ATLANTA|30354|1|13|FULTON|404/678
+26685|GA|ATL|30354|0|13||
+26686|GA|HAPEVILLE|30354|0|13||
+26687|GA|ATLANTA|30355|1|13|FULTON|404
+26688|GA|ATL|30355|0|13||
+26689|GA|ATLANTA|30356|1|13|DEKALB|404
+26690|GA|ATL|30356|0|13||
+26691|GA|DUNWOODY|30356|0|13||
+26692|GA|ATLANTA|30357|1|13|FULTON|404/770
+26693|GA|ATL|30357|0|13||
+26694|GA|ATLANTA|30358|1|13|FULTON|404/770
+26695|GA|ATL|30358|0|13||
+26696|GA|SANDY SPRINGS|30358|0|13||
+26697|GA|ATLANTA|30359|1|13|DEKALB|404
+26698|GA|ATL|30359|0|13||
+26699|GA|ATLANTA|30360|1|13|DEKALB|678/770
+26700|GA|ATL|30360|0|13||
+26701|GA|DORAVILLE|30360|0|13||
+26702|GA|WINTERS CHAPEL|30360|0|13||
+26703|GA|ATLANTA|30361|1|13|FULTON|404/678
+26704|GA|ATL|30361|0|13||
+26705|GA|ATLANTA|30362|1|13|DEKALB|404/770
+26706|GA|ATL|30362|0|13||
+26707|GA|DORAVILLE|30362|0|13||
+26708|GA|ATLANTA|30363|1|13|FULTON|404
+26709|GA|ATLANTA|30364|1|13|FULTON|404/770
+26710|GA|ATL|30364|0|13||
+26711|GA|EAST POINT|30364|0|13||
+26712|GA|ATLANTA|30366|1|13|DEKALB|404/770
+26713|GA|ATL|30366|0|13||
+26714|GA|CHAMBLEE|30366|0|13||
+26715|GA|ATLANTA|30368|1|13|FULTON|404/770
+26716|GA|ATL|30368|0|13||
+26717|GA|SUNTRUST|30368|0|13||
+26718|GA|ATLANTA|30369|1|13|FULTON|404/678
+26719|GA|ATL|30369|0|13||
+26720|GA|U S P S BULK MAIL CTR|30369|0|13||
+26721|GA|ATLANTA|30370|1|13|FULTON|404/770
+26722|GA|ATL|30370|0|13||
+26723|GA|ATLANTA|30371|1|13|FULTON|404/770
+26724|GA|ATL|30371|0|13||
+26725|GA|ATLANTA|30374|1|13|FULTON|404
+26726|GA|ATL|30374|0|13||
+26727|GA|ATLANTA|30375|1|13|FULTON|404
+26728|GA|ATL|30375|0|13||
+26729|GA|SOUTHERN BELL|30375|0|13||
+26730|GA|ATLANTA|30376|1|13|FULTON|404/770
+26731|GA|ATL|30376|0|13||
+26732|GA|ATLANTA|30377|1|13|FULTON|404/770
+26733|GA|ATL|30377|0|13||
+26734|GA|ATLANTA|30378|1|13|FULTON|404/770
+26735|GA|ATL|30378|0|13||
+26736|GA|ATLANTA|30379|1|13|FULTON|404/770
+26737|GA|ATL|30379|0|13||
+26738|GA|ATLANTA|30380|1|13|FULTON|404/770
+26739|GA|ATL|30380|0|13||
+26740|GA|ATLANTA POSTAL CREDIT UNION|30380|0|13||
+26741|GA|ATLANTA|30384|1|13|FULTON|404/770
+26742|GA|ATL|30384|0|13||
+26743|GA|BANKAMERICA CORPORATION|30384|0|13||
+26744|GA|ATLANTA|30385|1|13|FULTON|404/770
+26745|GA|ATL|30385|0|13||
+26746|GA|SOUTHERN BELL|30385|0|13||
+26747|GA|ATLANTA|30386|1|13|FULTON|404/770
+26748|GA|ATL|30386|0|13||
+26749|GA|SEARS ROEBUCK CO|30386|0|13||
+26750|GA|ATLANTA|30387|1|13|FULTON|404/770
+26751|GA|ATL|30387|0|13||
+26752|GA|J C PENNEY|30387|0|13||
+26753|GA|ATLANTA|30388|1|13|FULTON|404/770
+26754|GA|ATL|30388|0|13||
+26755|GA|AVON|30388|0|13||
+26756|GA|ATLANTA|30389|1|13|FULTON|404/770
+26757|GA|ATL|30389|0|13||
+26758|GA|ATLANTA GAS LIGHT|30389|0|13||
+26759|GA|ATLANTA|30390|1|13|FULTON|404/770
+26760|GA|ATL|30390|0|13||
+26761|GA|J C PENNEY|30390|0|13||
+26762|GA|ATLANTA|30392|1|13|FULTON|404/770
+26763|GA|ATL|30392|0|13||
+26764|GA|ATLANTA|30394|1|13|FULTON|404/770
+26765|GA|ATL|30394|0|13||
+26766|GA|ATLANTA|30396|1|13|FULTON|404/770
+26767|GA|ATL|30396|0|13||
+26768|GA|GEORGIA POWER|30396|0|13||
+26769|GA|ATLANTA|30398|1|13|FULTON|404/770
+26770|GA|ATL|30398|0|13||
+26771|GA|BANK SOUTH|30398|0|13||
+26772|GA|ATLANTA|30399|1|13|FULTON|404/770
+26773|GA|ATL|30399|0|13||
+26774|GA|BANKAMERICA CORPORATION|30399|0|13||
+26775|GA|SWAINSBORO|30401|1|13|EMANUEL|478/912
+26776|GA|BLUN|30401|0|13||
+26777|GA|BLUNDALE|30401|0|13||
+26778|GA|COVENA|30401|0|13||
+26779|GA|DELLWOOD|30401|0|13||
+26780|GA|GARY|30401|0|13||
+26781|GA|KEMP|30401|0|13||
+26782|GA|LEXSY|30401|0|13||
+26783|GA|MODOC|30401|0|13||
+26784|GA|OAK PARK|30401|0|13||
+26785|GA|SUMMERTOWN|30401|0|13||
+26786|GA|WESLEY|30401|0|13||
+26787|GA|AILEY|30410|1|13|MONTGOMERY|912
+26788|GA|HIGGSTON|30410|0|13||
+26789|GA|MCGREGOR|30410|0|13||
+26790|GA|OAK PARK|30410|0|13||
+26791|GA|ALAMO|30411|1|13|WHEELER|912
+26792|GA|ALSTON|30412|1|13|MONTGOMERY|912
+26793|GA|BARTOW|30413|1|13|JEFFERSON|478
+26794|GA|BELLVILLE|30414|1|13|EVANS|912
+26795|GA|CLAXTON|30414|0|13||
+26796|GA|BROOKLET|30415|1|13|BULLOCH|912
+26797|GA|AKIN|30415|0|13||
+26798|GA|ARCOLA|30415|0|13||
+26799|GA|DENMARK|30415|0|13||
+26800|GA|HUBERT|30415|0|13||
+26801|GA|IVANHOE|30415|0|13||
+26802|GA|MCGREGOR|30415|0|13||
+26803|GA|STILSON|30415|0|13||
+26804|GA|CLAXTON|30417|1|13|EVANS|912
+26805|GA|COBBTOWN|30420|1|13|TATTNALL|912
+26806|GA|ALINE|30420|0|13||
+26807|GA|COLLINS|30421|1|13|TATTNALL|912
+26808|GA|DAISY|30423|1|13|EVANS|912
+26809|GA|DOVER|30424|1|13|SCREVEN|912
+26810|GA|GARFIELD|30425|1|13|EMANUEL|478
+26811|GA|GIRARD|30426|1|13|BURKE|478
+26812|GA|GLENNVILLE|30427|1|13|TATTNALL|912
+26813|GA|MENDES|30427|0|13||
+26814|GA|TISON|30427|0|13||
+26815|GA|GLENWOOD|30428|1|13|WHEELER|912
+26816|GA|HAGAN|30429|1|13|EVANS|912
+26817|GA|LOUISVILLE|30434|1|13|JEFFERSON|478
+26818|GA|GRANGE|30434|0|13||
+26819|GA|ROSIER|30434|0|13||
+26820|GA|VIDETTE|30434|0|13||
+26821|GA|LYONS|30436|1|13|TOOMBS|912
+26822|GA|CEDAR CROSSING|30436|0|13||
+26823|GA|JOHNSON CORNER|30436|0|13||
+26824|GA|NEW BRANCH|30436|0|13||
+26825|GA|NEWBRANCH|30436|0|13||
+26826|GA|OHOOPEE|30436|0|13||
+26827|GA|SANTA CLAUS|30436|0|13||
+26828|GA|STANLEYS STORE|30436|0|13||
+26829|GA|MANASSAS|30438|1|13|TATTNALL|912
+26830|GA|CLAXTON|30438|0|13||
+26831|GA|METTER|30439|1|13|CANDLER|912
+26832|GA|EXCELSIOR|30439|0|13||
+26833|GA|MIDVILLE|30441|1|13|BURKE|478
+26834|GA|COLEMAN LAKE|30441|0|13||
+26835|GA|COLEMANS LAKE|30441|0|13||
+26836|GA|GREEN WAY|30441|0|13||
+26837|GA|GREENWAY|30441|0|13||
+26838|GA|HERNDON|30441|0|13||
+26839|GA|MILLEN|30442|1|13|JENKINS|478
+26840|GA|BIRDSVILLE|30442|0|13||
+26841|GA|BUTTS|30442|0|13||
+26842|GA|EMMALANE|30442|0|13||
+26843|GA|SCARBORO|30442|0|13||
+26844|GA|THRIFT|30442|0|13||
+26845|GA|MOUNT VERNON|30445|1|13|MONTGOMERY|912
+26846|GA|NEWINGTON|30446|1|13|SCREVEN|912
+26847|GA|NORRISTOWN|30447|1|13|EMANUEL|478
+26848|GA|NUNEZ|30448|1|13|EMANUEL|478
+26849|GA|OLIVER|30449|1|13|SCREVEN|912
+26850|GA|PORTAL|30450|1|13|BULLOCH|912
+26851|GA|AARON|30450|0|13||
+26852|GA|PULASKI|30451|1|13|CANDLER|912
+26853|GA|REGISTER|30452|1|13|BULLOCH|912
+26854|GA|REIDSVILLE|30453|1|13|TATTNALL|912
+26855|GA|ROCKLEDGE|30454|1|13|LAURENS|478
+26856|GA|ROCKY FORD|30455|1|13|SCREVEN|912
+26857|GA|SARDIS|30456|1|13|BURKE|478
+26858|GA|SOPERTON|30457|1|13|TREUTLEN|912
+26859|GA|STATESBORO|30458|1|13|BULLOCH|912
+26860|GA|STATESBORO|30459|1|13|BULLOCH|912
+26861|GA|STATESBORO|30460|1|13|BULLOCH|912
+26862|GA|STATESBORO|30461|1|13|BULLOCH|912
+26863|GA|STILLMORE|30464|1|13|EMANUEL|478
+26864|GA|SYLVANIA|30467|1|13|SCREVEN|912
+26865|GA|HILTONIA|30467|0|13||
+26866|GA|TARRYTOWN|30470|1|13|MONTGOMERY|912
+26867|GA|TWIN CITY|30471|1|13|EMANUEL|478
+26868|GA|CANOOCHEE|30471|0|13||
+26869|GA|UVALDA|30473|1|13|MONTGOMERY|912
+26870|GA|VIDALIA|30474|1|13|TOOMBS|912
+26871|GA|CENTER|30474|0|13||
+26872|GA|CHARLES|30474|0|13||
+26873|GA|KIBBEE|30474|0|13||
+26874|GA|NORMANTOWN|30474|0|13||
+26875|GA|PETROSS|30474|0|13||
+26876|GA|VIDALIA|30475|1|13|TOOMBS|912
+26877|GA|WADLEY|30477|1|13|JEFFERSON|478
+26878|GA|MOXLEY|30477|0|13||
+26879|GA|REIDSVILLE|30499|1|13|TATTNALL|912
+26880|GA|GEORGIA STATE PENITENTIARY|30499|0|13||
+26881|GA|GAINESVILLE|30501|1|13|HALL|678/770
+26882|GA|WESTSIDE|30501|0|13||
+26883|GA|CHESTNUT MOUNTAIN|30502|1|13|HALL|770
+26884|GA|OAKWOOD|30502|0|13||
+26885|GA|GAINESVILLE|30503|1|13|HALL|770
+26886|GA|GAINESVILLE|30504|1|13|HALL|678/770
+26887|GA|GAINESVILLE|30506|1|13|HALL|678/770
+26888|GA|GAINESVILLE|30507|1|13|HALL|678/770
+26889|GA|ALTO|30510|1|13|HABERSHAM|706
+26890|GA|BALDWIN|30511|1|13|BANKS|706
+26891|GA|BLAIRSVILLE|30512|1|13|UNION|706
+26892|GA|BLUE RIDGE|30513|1|13|FANNIN|706
+26893|GA|BLAIRSVILLE|30514|1|13|UNION|706
+26894|GA|BUFORD|30515|1|13|GWINNETT|770
+26895|GA|BOWERSVILLE|30516|1|13|HART|706
+26896|GA|BRASELTON|30517|1|13|JACKSON|706
+26897|GA|BUFORD|30518|1|13|GWINNETT|678/770
+26898|GA|SUGAR HILL|30518|0|13||
+26899|GA|SUGARHILL|30518|0|13||
+26900|GA|BUFORD|30519|1|13|GWINNETT|678/770
+26901|GA|CANON|30520|1|13|FRANKLIN|706
+26902|GA|CARNESVILLE|30521|1|13|FRANKLIN|706
+26903|GA|CHERRYLOG|30522|1|13|GILMER|706
+26904|GA|CLARKESVILLE|30523|1|13|HABERSHAM|706
+26905|GA|CLAYTON|30525|1|13|RABUN|706
+26906|GA|CLERMONT|30527|1|13|HALL|678/770
+26907|GA|CLEVELAND|30528|1|13|WHITE|706
+26908|GA|COMMERCE|30529|1|13|JACKSON|706
+26909|GA|COMMERCE|30530|1|13|BANKS|706
+26910|GA|CORNELIA|30531|1|13|HABERSHAM|706
+26911|GA|DAHLONEGA|30533|1|13|LUMPKIN|706
+26912|GA|DAWSONVILLE|30534|1|13|DAWSON|706
+26913|GA|DEMOREST|30535|1|13|HABERSHAM|706
+26914|GA|ELLIJAY|30536|1|13|GILMER|706
+26915|GA|DILLARD|30537|1|13|RABUN|706
+26916|GA|SKY VALLEY|30537|0|13||
+26917|GA|EASTANOLLEE|30538|1|13|STEPHENS|706
+26918|GA|EAST ELLIJAY|30539|1|13|GILMER|706
+26919|GA|ELLIJAY|30540|1|13|GILMER|706
+26920|GA|EAST ELLIJAY|30540|0|13||
+26921|GA|EPWORTH|30541|1|13|FANNIN|706
+26922|GA|FLOWERY BRANCH|30542|1|13|HALL|678/770
+26923|GA|GILLSVILLE|30543|1|13|HALL|770
+26924|GA|DEMOREST|30544|1|13|HABERSHAM|706
+26925|GA|HABERSHAM|30544|0|13||
+26926|GA|HELEN|30545|1|13|WHITE|706
+26927|GA|HIAWASSEE|30546|1|13|TOWNS|706
+26928|GA|HOMER|30547|1|13|BANKS|706
+26929|GA|HOSCHTON|30548|1|13|JACKSON|706
+26930|GA|JEFFERSON|30549|1|13|JACKSON|706
+26931|GA|LAKEMONT|30552|1|13|RABUN|706
+26932|GA|LAVONIA|30553|1|13|FRANKLIN|706
+26933|GA|LULA|30554|1|13|HALL|678/770
+26934|GA|MC CAYSVILLE|30555|1|13|FANNIN|706
+26935|GA|FRY|30555|0|13||
+26936|GA|MCCAYSVILLE|30555|0|13||
+26937|GA|MARTIN|30557|1|13|STEPHENS|706
+26938|GA|MAYSVILLE|30558|1|13|BANKS|706
+26939|GA|MINERAL BLUFF|30559|1|13|FANNIN|706
+26940|GA|MORGANTON|30560|1|13|FANNIN|706
+26941|GA|MOUNTAIN CITY|30562|1|13|RABUN|706
+26942|GA|MOUNT AIRY|30563|1|13|HABERSHAM|706
+26943|GA|MURRAYVILLE|30564|1|13|HALL|770
+26944|GA|NICHOLSON|30565|1|13|JACKSON|706
+26945|GA|OAKWOOD|30566|1|13|HALL|770
+26946|GA|PENDERGRASS|30567|1|13|JACKSON|706
+26947|GA|RABUN GAP|30568|1|13|RABUN|706
+26948|GA|SAUTEE NACOOCHEE|30571|1|13|WHITE|706
+26949|GA|SUCHES|30572|1|13|UNION|706
+26950|GA|TALLULAH FALLS|30573|1|13|RABUN|706
+26951|GA|TALMO|30575|1|13|JACKSON|706
+26952|GA|TIGER|30576|1|13|RABUN|706
+26953|GA|TOCCOA|30577|1|13|STEPHENS|706
+26954|GA|TURNERVILLE|30580|1|13|HABERSHAM|706
+26955|GA|WILEY|30581|1|13|RABUN|706
+26956|GA|YOUNG HARRIS|30582|1|13|TOWNS|706
+26957|GA|ALTO|30596|1|13|HABERSHAM|706
+26958|GA|GA INDUSTRIAL INSTITUTE|30596|0|13||
+26959|GA|DAHLONEGA|30597|1|13|LUMPKIN|706
+26960|GA|NORTH GEORGIA COLLEGE|30597|0|13||
+26961|GA|TOCCOA FALLS|30598|1|13|STEPHENS|706
+26962|GA|COMMERCE|30599|1|13|JACKSON|706
+26963|GA|BAKER-TAYLOR|30599|0|13||
+26964|GA|ATHENS|30601|1|13|CLARKE|706
+26965|GA|ATHENS|30602|1|13|CLARKE|706
+26966|GA|ATHENS|30603|1|13|CLARKE|706
+26967|GA|ATHENS|30604|1|13|CLARKE|706
+26968|GA|ATHENS|30605|1|13|CLARKE|706
+26969|GA|ATHENS|30606|1|13|CLARKE|706
+26970|GA|NAVY SUPPLY CORPS SCHOOL|30606|0|13||
+26971|GA|ATHENS|30607|1|13|CLARKE|706
+26972|GA|ATHENS|30608|1|13|CLARKE|706
+26973|GA|ATHENS|30609|1|13|CLARKE|706
+26974|GA|ATHENS|30612|1|13|CLARKE|706
+26975|GA|ARNOLDSVILLE|30619|1|13|OGLETHORPE|706
+26976|GA|BETHLEHEM|30620|1|13|BARROW|770
+26977|GA|BISHOP|30621|1|13|OCONEE|706
+26978|GA|BOGART|30622|1|13|OCONEE|770
+26979|GA|BOSTWICK|30623|1|13|MORGAN|706
+26980|GA|BOWMAN|30624|1|13|ELBERT|706
+26981|GA|BUCKHEAD|30625|1|13|MORGAN|706
+26982|GA|CARLTON|30627|1|13|MADISON|706
+26983|GA|COLBERT|30628|1|13|MADISON|706
+26984|GA|COMER|30629|1|13|MADISON|706
+26985|GA|CRAWFORD|30630|1|13|OGLETHORPE|706
+26986|GA|CRAWFORDVILLE|30631|1|13|TALIAFERRO|706
+26987|GA|DANIELSVILLE|30633|1|13|MADISON|706
+26988|GA|DEWY ROSE|30634|1|13|ELBERT|706
+26989|GA|ELBERTON|30635|1|13|ELBERT|706
+26990|GA|FARMINGTON|30638|1|13|OCONEE|706
+26991|GA|FRANKLIN SPRINGS|30639|1|13|FRANKLIN|706
+26992|GA|GOOD HOPE|30641|1|13|WALTON|770
+26993|GA|GREENSBORO|30642|1|13|GREENE|706
+26994|GA|REYNOLDS PLANTATION|30642|0|13||
+26995|GA|HARTWELL|30643|1|13|HART|706
+26996|GA|HIGH SHOALS|30645|1|13|MORGAN|706
+26997|GA|HULL|30646|1|13|MADISON|706
+26998|GA|ILA|30647|1|13|MADISON|706
+26999|GA|LEXINGTON|30648|1|13|OGLETHORPE|706
+27000|GA|MADISON|30650|1|13|MORGAN|706
+27001|GA|MONROE|30655|1|13|WALTON|770
+27002|GA|MONROE|30656|1|13|WALTON|770
+27003|GA|RAYLE|30660|1|13|WILKES|706
+27004|GA|PHILOMATH|30660|0|13||
+27005|GA|ROYSTON|30662|1|13|FRANKLIN|706
+27006|GA|RUTLEDGE|30663|1|13|MORGAN|706
+27007|GA|SHARON|30664|1|13|TALIAFERRO|706
+27008|GA|SILOAM|30665|1|13|GREENE|706
+27009|GA|STATHAM|30666|1|13|BARROW|678/770
+27010|GA|STEPHENS|30667|1|13|OGLETHORPE|706
+27011|GA|TIGNALL|30668|1|13|WILKES|706
+27012|GA|DANBURG|30668|0|13||
+27013|GA|UNION POINT|30669|1|13|GREENE|706
+27014|GA|PENFIELD|30669|0|13||
+27015|GA|PENFLD|30669|0|13||
+27016|GA|WOODVILLE|30669|0|13||
+27017|GA|MAXEYS|30671|1|13|OGLETHORPE|706
+27018|GA|WASHINGTON|30673|1|13|WILKES|706
+27019|GA|WATKINSVILLE|30677|1|13|OCONEE|706
+27020|GA|WHITE PLAINS|30678|1|13|GREENE|706
+27021|GA|WINDER|30680|1|13|BARROW|678/770
+27022|GA|WINTERVILLE|30683|1|13|CLARKE|706
+27023|GA|CALHOUN|30701|1|13|GORDON|706
+27024|GA|CALHOUN|30703|1|13|GORDON|706
+27025|GA|CHATSWORTH|30705|1|13|MURRAY|706
+27026|GA|CHICKAMAUGA|30707|1|13|WALKER|706
+27027|GA|CISCO|30708|1|13|MURRAY|706
+27028|GA|COHUTTA|30710|1|13|WHITFIELD|706
+27029|GA|CRANDALL|30711|1|13|MURRAY|706
+27030|GA|DALTON|30719|1|13|WHITFIELD|706
+27031|GA|DALTON|30720|1|13|WHITFIELD|706
+27032|GA|DALTON|30721|1|13|WHITFIELD|706
+27033|GA|DALTON|30722|1|13|WHITFIELD|706
+27034|GA|ETON|30724|1|13|MURRAY|706
+27035|GA|FLINTSTONE|30725|1|13|WALKER|706
+27036|GA|GRAYSVILLE|30726|1|13|CATOOSA|706
+27037|GA|LA FAYETTE|30728|1|13|WALKER|706
+27038|GA|LAFAYETTE|30728|0|13||
+27039|GA|LYERLY|30730|1|13|CHATTOOGA|706
+27040|GA|MENLO|30731|1|13|CHATTOOGA|706
+27041|GA|CLOUDLAND|30731|0|13||
+27042|GA|OAKMAN|30732|1|13|GORDON|706
+27043|GA|PLAINVILLE|30733|1|13|GORDON|706
+27044|GA|RANGER|30734|1|13|GORDON|706
+27045|GA|RESACA|30735|1|13|GORDON|706
+27046|GA|RINGGOLD|30736|1|13|CATOOSA|706
+27047|GA|RISING FAWN|30738|1|13|DADE|706
+27048|GA|ROCK SPRING|30739|1|13|WALKER|706
+27049|GA|ROCKY FACE|30740|1|13|WHITFIELD|706
+27050|GA|ROSSVILLE|30741|1|13|WALKER|706
+27051|GA|FORT OGLETHORPE|30742|1|13|CATOOSA|706
+27052|GA|FT OGLETHORPE|30742|0|13||
+27053|GA|ROSSVILLE|30742|0|13||
+27054|GA|SUGAR VALLEY|30746|1|13|GORDON|706
+27055|GA|SUMMERVILLE|30747|1|13|CHATTOOGA|706
+27056|GA|LOOKOUT MOUNTAIN|30750|1|13|WALKER|706
+27057|GA|TENNGA|30751|1|13|MURRAY|706
+27058|GA|TRENTON|30752|1|13|DADE|706
+27059|GA|TRION|30753|1|13|CHATTOOGA|706
+27060|GA|TUNNEL HILL|30755|1|13|WHITFIELD|706
+27061|GA|VARNELL|30756|1|13|WHITFIELD|706
+27062|GA|WILDWOOD|30757|1|13|DADE|706
+27063|GA|APPLING|30802|1|13|COLUMBIA|706
+27064|GA|LEAH|30802|0|13||
+27065|GA|PHINIZY|30802|0|13||
+27066|GA|POLLARDS CORNER|30802|0|13||
+27067|GA|AVERA|30803|1|13|JEFFERSON|706
+27068|GA|BLYTHE|30805|1|13|RICHMOND|706
+27069|GA|ELLWOOD|30805|0|13||
+27070|GA|BONEVILLE|30806|1|13|MCDUFFIE|706
+27071|GA|CAMAK|30807|1|13|WARREN|706
+27072|GA|DEARING|30808|1|13|MCDUFFIE|706
+27073|GA|EVANS|30809|1|13|COLUMBIA|706
+27074|GA|GIBSON|30810|1|13|GLASCOCK|706
+27075|GA|EDGE HILL|30810|0|13||
+27076|GA|GOUGH|30811|1|13|BURKE|706
+27077|GA|KEYSVILLE|30811|0|13||
+27078|GA|GRACEWOOD|30812|1|13|RICHMOND|706
+27079|GA|GROVETOWN|30813|1|13|COLUMBIA|706
+27080|GA|HARLEM|30814|1|13|COLUMBIA|706
+27081|GA|BERZELIA|30814|0|13||
+27082|GA|CAMPANIA|30814|0|13||
+27083|GA|PUMPKIN CENTER|30814|0|13||
+27084|GA|HEPHZIBAH|30815|1|13|RICHMOND|706
+27085|GA|KEYSVILLE|30816|1|13|BURKE|706
+27086|GA|LINCOLNTON|30817|1|13|LINCOLN|706
+27087|GA|AGNES|30817|0|13||
+27088|GA|AMITY|30817|0|13||
+27089|GA|DOUBLE BRANCHES|30817|0|13||
+27090|GA|HONORA|30817|0|13||
+27091|GA|LEATHERSVILLE|30817|0|13||
+27092|GA|LOCO|30817|0|13||
+27093|GA|MAXIM|30817|0|13||
+27094|GA|NEW HOPE|30817|0|13||
+27095|GA|SYBERT|30817|0|13||
+27096|GA|MATTHEWS|30818|1|13|JEFFERSON|706
+27097|GA|NOAH|30818|0|13||
+27098|GA|WRENS|30818|0|13||
+27099|GA|MESENA|30819|1|13|WARREN|706
+27100|GA|MITCHELL|30820|1|13|GLASCOCK|706
+27101|GA|SHOALS|30820|0|13||
+27102|GA|NORWOOD|30821|1|13|WARREN|706
+27103|GA|BARNETT|30821|0|13||
+27104|GA|CADLEY|30821|0|13||
+27105|GA|PERKINS|30822|1|13|JENKINS|478
+27106|GA|STAPLETON|30823|1|13|JEFFERSON|706
+27107|GA|THOMSON|30824|1|13|MCDUFFIE|706
+27108|GA|WINFIELD|30824|0|13||
+27109|GA|WARRENTON|30828|1|13|WARREN|706
+27110|GA|NORRIS|30828|0|13||
+27111|GA|REESE|30828|0|13||
+27112|GA|WAYNESBORO|30830|1|13|BURKE|706
+27113|GA|MUNNERLYN|30830|0|13||
+27114|GA|SHELL BLUFF|30830|0|13||
+27115|GA|WRENS|30833|1|13|JEFFERSON|706
+27116|GA|AUGUSTA|30901|1|13|RICHMOND|706
+27117|GA|AUGUSTA|30903|1|13|RICHMOND|706
+27118|GA|AUGUSTA|30904|1|13|RICHMOND|706
+27119|GA|AUGUSTA|30905|1|13|RICHMOND|706
+27120|GA|FORT GORDON|30905|0|13||
+27121|GA|FT GORDON|30905|0|13||
+27122|GA|AUGUSTA|30906|1|13|RICHMOND|706
+27123|GA|PEACH ORCHARD|30906|0|13||
+27124|GA|AUGUSTA|30907|1|13|COLUMBIA|706
+27125|GA|MARTINEZ|30907|0|13||
+27126|GA|AUGUSTA|30909|1|13|RICHMOND|706
+27127|GA|FOREST HILLS|30909|0|13||
+27128|GA|AUGUSTA|30910|1|13|RICHMOND|706
+27129|GA|AUGUSTA|30911|1|13|RICHMOND|706
+27130|GA|AUGUSTA|30912|1|13|RICHMOND|706
+27131|GA|AUGUSTA|30913|1|13|RICHMOND|706
+27132|GA|AUGUSTA|30914|1|13|RICHMOND|706
+27133|GA|AUGUSTA|30916|1|13|RICHMOND|706
+27134|GA|AUGUSTA|30917|1|13|COLUMBIA|706
+27135|GA|AUGUSTA|30919|1|13|RICHMOND|706
+27136|GA|AUGUSTA|30999|1|13|RICHMOND|706
+27137|GA|RAILROAD RETIREMENT BOARD|30999|0|13||
+27138|GA|ABBEVILLE|31001|1|13|WILCOX|229
+27139|GA|ADRIAN|31002|1|13|EMANUEL|478
+27140|GA|ALLENTOWN|31003|1|13|WILKINSON|478
+27141|GA|BOLINGBROKE|31004|1|13|MONROE|478
+27142|GA|BONAIRE|31005|1|13|HOUSTON|478
+27143|GA|BUTLER|31006|1|13|TAYLOR|478
+27144|GA|BYROMVILLE|31007|1|13|DOOLY|478
+27145|GA|BYRON|31008|1|13|PEACH|478
+27146|GA|BRYON|31008|0|13||
+27147|GA|POWERSVILLE|31008|0|13||
+27148|GA|CADWELL|31009|1|13|LAURENS|478
+27149|GA|CORDELE|31010|1|13|CRISP|229
+27150|GA|CHAUNCEY|31011|1|13|DODGE|478
+27151|GA|CHESTER|31012|1|13|DODGE|478
+27152|GA|CLINCHFIELD|31013|1|13|HOUSTON|478
+27153|GA|COCHRAN|31014|1|13|BLECKLEY|478
+27154|GA|EMPIRE|31014|0|13||
+27155|GA|CORDELE|31015|1|13|CRISP|229
+27156|GA|CULLODEN|31016|1|13|MONROE|478
+27157|GA|DANVILLE|31017|1|13|TWIGGS|478
+27158|GA|DAVISBORO|31018|1|13|WASHINGTON|478
+27159|GA|DEXTER|31019|1|13|LAURENS|478
+27160|GA|DRY BRANCH|31020|1|13|TWIGGS|478
+27161|GA|DUBLIN|31021|1|13|LAURENS|478
+27162|GA|LOLLIE|31021|0|13||
+27163|GA|DUDLEY|31022|1|13|LAURENS|478
+27164|GA|EASTMAN|31023|1|13|DODGE|478
+27165|GA|PLAINFIELD|31023|0|13||
+27166|GA|EATONTON|31024|1|13|PUTNAM|706
+27167|GA|ELKO|31025|1|13|HOUSTON|478
+27168|GA|EATONTON|31026|1|13|PUTNAM|706
+27169|GA|HABAND|31026|0|13||
+27170|GA|EAST DUBLIN|31027|1|13|LAURENS|478
+27171|GA|DUBLIN|31027|0|13||
+27172|GA|E DUBLIN|31027|0|13||
+27173|GA|CENTERVILLE|31028|1|13|HOUSTON|478
+27174|GA|FORSYTH|31029|1|13|MONROE|478
+27175|GA|FORT VALLEY|31030|1|13|PEACH|478
+27176|GA|MARSHALLVILLE|31030|0|13||
+27177|GA|GORDON|31031|1|13|WILKINSON|478
+27178|GA|IVEY|31031|0|13||
+27179|GA|STEVENS POTTERY|31031|0|13||
+27180|GA|GRAY|31032|1|13|JONES|478
+27181|GA|HADDOCK|31033|1|13|JONES|478
+27182|GA|HARDWICK|31034|1|13|BALDWIN|478
+27183|GA|HARRISON|31035|1|13|WASHINGTON|478
+27184|GA|HAWKINSVILLE|31036|1|13|PULASKI|478
+27185|GA|GROVANIA|31036|0|13||
+27186|GA|HAYNEVILLE|31036|0|13||
+27187|GA|HVILLE|31036|0|13||
+27188|GA|KLONDIKE|31036|0|13||
+27189|GA|HELENA|31037|1|13|TELFAIR|229
+27190|GA|HILLSBORO|31038|1|13|JASPER|706
+27191|GA|ROUND OAK|31038|0|13||
+27192|GA|HOWARD|31039|1|13|TAYLOR|478
+27193|GA|DUBLIN|31040|1|13|LAURENS|478
+27194|GA|IDEAL|31041|1|13|MACON|478
+27195|GA|IRWINTON|31042|1|13|WILKINSON|478
+27196|GA|JEFFERSONVILLE|31044|1|13|TWIGGS|478
+27197|GA|JEWELL|31045|1|13|WARREN|706
+27198|GA|JULIETTE|31046|1|13|MONROE|478
+27199|GA|KATHLEEN|31047|1|13|HOUSTON|478
+27200|GA|KITE|31049|1|13|JOHNSON|478
+27201|GA|KNOXVILLE|31050|1|13|CRAWFORD|478
+27202|GA|LILLY|31051|1|13|DOOLY|478
+27203|GA|LIZELLA|31052|1|13|CRAWFORD|478
+27204|GA|MC INTYRE|31054|1|13|WILKINSON|478
+27205|GA|MC RAE|31055|1|13|TELFAIR|229
+27206|GA|MARSHALLVILLE|31057|1|13|MACON|478
+27207|GA|MAUK|31058|1|13|MARION|478
+27208|GA|MILLEDGEVILLE|31059|1|13|BALDWIN|478
+27209|GA|MILAN|31060|1|13|TELFAIR|229
+27210|GA|MILLEDGEVILLE|31061|1|13|BALDWIN|478
+27211|GA|MVILLE|31061|0|13||
+27212|GA|MILLEDGEVILLE|31062|1|13|BALDWIN|478
+27213|GA|CENTRAL STATE HOSPITAL|31062|0|13||
+27214|GA|MONTEZUMA|31063|1|13|MACON|478
+27215|GA|MONTICELLO|31064|1|13|JASPER|706
+27216|GA|MONTROSE|31065|1|13|LAURENS|478
+27217|GA|MUSELLA|31066|1|13|CRAWFORD|478
+27218|GA|OCONEE|31067|1|13|WASHINGTON|478
+27219|GA|OGLETHORPE|31068|1|13|MACON|478
+27220|GA|OGELTHORPE|31068|0|13||
+27221|GA|OLGETHORPE|31068|0|13||
+27222|GA|PERRY|31069|1|13|HOUSTON|478
+27223|GA|PINEHURST|31070|1|13|DOOLY|229
+27224|GA|PINEVIEW|31071|1|13|WILCOX|229
+27225|GA|PITTS|31072|1|13|WILCOX|229
+27226|GA|RENTZ|31075|1|13|LAURENS|478
+27227|GA|REYNOLDS|31076|1|13|TAYLOR|478
+27228|GA|RHINE|31077|1|13|DODGE|229
+27229|GA|ROBERTA|31078|1|13|CRAWFORD|478
+27230|GA|ROCHELLE|31079|1|13|WILCOX|229
+27231|GA|RUPERT|31081|1|13|TAYLOR|478
+27232|GA|SANDERSVILLE|31082|1|13|WASHINGTON|478
+27233|GA|DEEPSTEP|31082|0|13||
+27234|GA|SCOTLAND|31083|1|13|TELFAIR|912
+27235|GA|SEVILLE|31084|1|13|WILCOX|229
+27236|GA|SHADY DALE|31085|1|13|JASPER|706
+27237|GA|FARRAR|31085|0|13||
+27238|GA|KELLY|31085|0|13||
+27239|GA|SMARR|31086|1|13|MONROE|478
+27240|GA|SPARTA|31087|1|13|HANCOCK|706
+27241|GA|MAYFIELD|31087|0|13||
+27242|GA|WARNER ROBINS|31088|1|13|HOUSTON|478
+27243|GA|TENNILLE|31089|1|13|WASHINGTON|478
+27244|GA|TOOMSBORO|31090|1|13|WILKINSON|478
+27245|GA|UNADILLA|31091|1|13|DOOLY|478
+27246|GA|UNIDILLA|31091|0|13||
+27247|GA|VIENNA|31092|1|13|DOOLY|229
+27248|GA|WARNER ROBINS|31093|1|13|HOUSTON|478
+27249|GA|WARTHEN|31094|1|13|WASHINGTON|478
+27250|GA|WARNER ROBINS|31095|1|13|HOUSTON|478
+27251|GA|WRIGHTSVILLE|31096|1|13|JOHNSON|478
+27252|GA|YATESVILLE|31097|1|13|UPSON|706
+27253|GA|WARNER ROBINS|31098|1|13|HOUSTON|478
+27254|GA|ROBINS A F B|31098|0|13||
+27255|GA|ROBINS AFB|31098|0|13||
+27256|GA|ROBINS AIR FORCE BASE|31098|0|13||
+27257|GA|SOUTH BASE CPU|31098|0|13||
+27258|GA|WARNER ROBINS|31099|1|13|HOUSTON|478
+27259|GA|ATLANTA|31106|1|13|FULTON|404/770
+27260|GA|ATL|31106|0|13||
+27261|GA|ATLANTA|31107|1|13|FULTON|404/770
+27262|GA|ATL|31107|0|13||
+27263|GA|ATLANTA|31119|1|13|DEKALB|770
+27264|GA|ATL|31119|0|13||
+27265|GA|ATLANTA|31126|1|13|FULTON|404/770
+27266|GA|ATL|31126|0|13||
+27267|GA|LENOX SQ FINANCE|31126|0|13||
+27268|GA|LENOX SQUARE FINANCE|31126|0|13||
+27269|GA|ATLANTA|31131|1|13|FULTON|404/770
+27270|GA|ATL|31131|0|13||
+27271|GA|ATLANTA|31132|1|13|FULTON|404/770
+27272|GA|ATLANTA BMC MERCH RETURN|31132|0|13||
+27273|GA|ATLANTA|31139|1|13|FULTON|404/770
+27274|GA|ATL|31139|0|13||
+27275|GA|ATLANTA|31141|1|13|DEKALB|404/770
+27276|GA|ATL|31141|0|13||
+27277|GA|EMBRY HLS|31141|0|13||
+27278|GA|ATLANTA|31145|1|13|DEKALB|770
+27279|GA|ATL|31145|0|13||
+27280|GA|NORTHLAKE|31145|0|13||
+27281|GA|ATLANTA|31146|1|13|DEKALB|404
+27282|GA|ATL|31146|0|13||
+27283|GA|PERIMETER CENTER FINANCE|31146|0|13||
+27284|GA|ATLANTA|31150|1|13|FULTON|404/770
+27285|GA|ATL|31150|0|13||
+27286|GA|ATLANTA|31156|1|13|FULTON|404/770
+27287|GA|ATL|31156|0|13||
+27288|GA|ATLANTA|31191|1|13|FULTON|404/770
+27289|GA|ATL|31191|0|13||
+27290|GA|ATLANTA BMC|31191|0|13||
+27291|GA|FINGERHUT|31191|0|13||
+27292|GA|ATLANTA|31192|1|13|FULTON|404/770
+27293|GA|ATL|31192|0|13||
+27294|GA|MELLON BANK|31192|0|13||
+27295|GA|ATLANTA|31193|1|13|FULTON|404/770
+27296|GA|ATL|31193|0|13||
+27297|GA|FIRST UNION|31193|0|13||
+27298|GA|ATLANTA|31195|1|13|FULTON|404/770
+27299|GA|ATL|31195|0|13||
+27300|GA|ATLANTA BMC|31195|0|13||
+27301|GA|ATLANTA|31196|1|13|FULTON|404/770
+27302|GA|ATL|31196|0|13||
+27303|GA|ATLANTA BMC|31196|0|13||
+27304|GA|ATLANTA|31197|1|13|FULTON|404/770
+27305|GA|ATL|31197|0|13||
+27306|GA|ATLANTA BMC|31197|0|13||
+27307|GA|ATLANTA|31198|1|13|FULTON|404/770
+27308|GA|ATL|31198|0|13||
+27309|GA|ATLANTA BMC|31198|0|13||
+27310|GA|ATLANTA|31199|1|13|FULTON|404/770
+27311|GA|ATL|31199|0|13||
+27312|GA|ATLANTA BMC|31199|0|13||
+27313|GA|BMC|31199|0|13||
+27314|GA|MACON|31201|1|13|BIBB|478
+27315|GA|HUBER|31201|0|13||
+27316|GA|MACON|31202|1|13|BIBB|478
+27317|GA|MACON|31203|1|13|BIBB|478
+27318|GA|MACON|31204|1|13|BIBB|478
+27319|GA|PAYNE CITY|31204|0|13||
+27320|GA|MACON|31205|1|13|BIBB|478
+27321|GA|MACON|31206|1|13|BIBB|478
+27322|GA|LEWIS B WILSON AIRPORT|31206|0|13||
+27323|GA|S MACON|31206|0|13||
+27324|GA|SO MACON|31206|0|13||
+27325|GA|WILSON AIRPORT|31206|0|13||
+27326|GA|MACON|31207|1|13|BIBB|478
+27327|GA|MERCER UNIVERSITY|31207|0|13||
+27328|GA|MACON|31208|1|13|BIBB|478
+27329|GA|MACON|31209|1|13|BIBB|478
+27330|GA|MACON|31210|1|13|BIBB|478
+27331|GA|NO MACON|31210|0|13||
+27332|GA|ZEBULON BRANCH|31210|0|13||
+27333|GA|MACON|31211|1|13|BIBB|478
+27334|GA|MACON|31212|1|13|BIBB|478
+27335|GA|MACON|31213|1|13|BIBB|478
+27336|GA|MAIN OFFICE FIRMS|31213|0|13||
+27337|GA|MACON|31216|1|13|BIBB|478
+27338|GA|MACON|31217|1|13|BIBB|478
+27339|GA|MACON|31220|1|13|BIBB|478
+27340|GA|ZEBULON BRANCH|31220|0|13||
+27341|GA|MACON|31221|1|13|BIBB|478
+27342|GA|ZEBULON BRANCH|31221|0|13||
+27343|GA|MACON|31294|1|13|BIBB|478
+27344|GA|BUSINESS REPLY MAIL|31294|0|13||
+27345|GA|MACON BRM|31294|0|13||
+27346|GA|MACON|31295|1|13|BIBB|478
+27347|GA|GEICO UNDERWRITING|31295|0|13||
+27348|GA|MACON|31296|1|13|BIBB|478
+27349|GA|GEICO CLAIMS|31296|0|13||
+27350|GA|MACON|31297|1|13|BIBB|478
+27351|GA|MACON|31298|1|13|BIBB|478
+27352|GA|MACON|31299|1|13|BIBB|478
+27353|GA|MONTGOMERY WARD AND CO|31299|0|13||
+27354|GA|ALLENHURST|31301|1|13|LIBERTY|912
+27355|GA|BLOOMINGDALE|31302|1|13|CHATHAM|912
+27356|GA|CLYO|31303|1|13|EFFINGHAM|912
+27357|GA|CRESCENT|31304|1|13|MCINTOSH|912
+27358|GA|DARIEN|31305|1|13|MCINTOSH|912
+27359|GA|EDEN|31307|1|13|EFFINGHAM|912
+27360|GA|ELLABELL|31308|1|13|BRYAN|912
+27361|GA|BLACK CREEK|31308|0|13||
+27362|GA|FLEMING|31309|1|13|LIBERTY|912
+27363|GA|HINESVILLE|31310|1|13|LIBERTY|912
+27364|GA|GUYTON|31312|1|13|EFFINGHAM|912
+27365|GA|MARLOW|31312|0|13||
+27366|GA|PINEORA|31312|0|13||
+27367|GA|HINESVILLE|31313|1|13|LIBERTY|912
+27368|GA|FLEMINGTON|31313|0|13||
+27369|GA|FORT STEWART|31313|0|13||
+27370|GA|FS|31313|0|13||
+27371|GA|FT STEWART|31313|0|13||
+27372|GA|GUM BRANCH|31313|0|13||
+27373|GA|FORT STEWART|31314|1|13|LIBERTY|912
+27374|GA|FS|31314|0|13||
+27375|GA|FT STEWART|31314|0|13||
+27376|GA|HINESVILLE|31314|0|13||
+27377|GA|FORT STEWART|31315|1|13|LIBERTY|912
+27378|GA|FS|31315|0|13||
+27379|GA|FT STEWART|31315|0|13||
+27380|GA|HINESVILLE|31315|0|13||
+27381|GA|LUDOWICI|31316|1|13|LONG|912
+27382|GA|BAYVIEW|31316|0|13||
+27383|GA|DONALD|31316|0|13||
+27384|GA|ELIM|31316|0|13||
+27385|GA|MELDRIM|31318|1|13|EFFINGHAM|912
+27386|GA|MERIDIAN|31319|1|13|MCINTOSH|912
+27387|GA|CARNIGAN|31319|0|13||
+27388|GA|VALONA|31319|0|13||
+27389|GA|MIDWAY|31320|1|13|LIBERTY|912
+27390|GA|PEMBROKE|31321|1|13|BRYAN|912
+27391|GA|NEVILS|31321|0|13||
+27392|GA|POOLER|31322|1|13|CHATHAM|912
+27393|GA|RICEBORO|31323|1|13|LIBERTY|912
+27394|GA|JONES|31323|0|13||
+27395|GA|RETREAT|31323|0|13||
+27396|GA|SOUTH NEWPORT|31323|0|13||
+27397|GA|RICHMOND HILL|31324|1|13|BRYAN|912
+27398|GA|RINCON|31326|1|13|EFFINGHAM|912
+27399|GA|SAPELO ISLAND|31327|1|13|MCINTOSH|912
+27400|GA|TYBEE ISLAND|31328|1|13|CHATHAM|912
+27401|GA|FORT SCREVEN|31328|0|13||
+27402|GA|SPRINGFIELD|31329|1|13|EFFINGHAM|912
+27403|GA|STILLWELL|31329|0|13||
+27404|GA|TOWNSEND|31331|1|13|MCINTOSH|912
+27405|GA|ASHINTILLY|31331|0|13||
+27406|GA|COX|31331|0|13||
+27407|GA|EULONIA|31331|0|13||
+27408|GA|RIDGEVILLE|31331|0|13||
+27409|GA|SHELLMAN BLUFF|31331|0|13||
+27410|GA|WALTHOURVILLE|31333|1|13|LIBERTY|912
+27411|GA|SAVANNAH|31401|1|13|CHATHAM|912
+27412|GA|SAVANNAH|31402|1|13|CHATHAM|912
+27413|GA|SAVANNAH|31403|1|13|CHATHAM|912
+27414|GA|SAVANNAH|31404|1|13|CHATHAM|912
+27415|GA|STATE COLLEGE|31404|0|13||
+27416|GA|THUNDERBOLT|31404|0|13||
+27417|GA|SAVANNAH|31405|1|13|CHATHAM|912
+27418|GA|GARDEN CITY|31405|0|13||
+27419|GA|HUNTER ARMY AIR FIELD|31405|0|13||
+27420|GA|SAVANNAH|31406|1|13|CHATHAM|912
+27421|GA|SAVANNAH|31407|1|13|CHATHAM|912
+27422|GA|PORT WENTWORTH BRANCH|31407|0|13||
+27423|GA|SAVANNAH|31408|1|13|CHATHAM|912
+27424|GA|GARDEN CITY|31408|0|13||
+27425|GA|SAVANNAH|31409|1|13|CHATHAM|912
+27426|GA|HUNTER AAF|31409|0|13||
+27427|GA|SAVANNAH|31410|1|13|CHATHAM|912
+27428|GA|THUNDERBOLT|31410|0|13||
+27429|GA|WILMINGTON ISLAND|31410|0|13||
+27430|GA|SAVANNAH|31411|1|13|CHATHAM|912
+27431|GA|VILLAGE STATION|31411|0|13||
+27432|GA|SAVANNAH|31412|1|13|CHATHAM|912
+27433|GA|SAVANNAH|31414|1|13|CHATHAM|912
+27434|GA|SAVANNAH|31415|1|13|CHATHAM|912
+27435|GA|GARDEN CITY|31415|0|13||
+27436|GA|SAVANNAH|31416|1|13|CHATHAM|912
+27437|GA|SAVANNAH|31418|1|13|CHATHAM|912
+27438|GA|GARDEN CITY|31418|0|13||
+27439|GA|GRDN CITY|31418|0|13||
+27440|GA|SAVANNAH|31419|1|13|CHATHAM|912
+27441|GA|SAVANNAH|31420|1|13|CHATHAM|912
+27442|GA|SAVANNAH|31421|1|13|CHATHAM|912
+27443|GA|SAVANNAH|31498|1|13|CHATHAM|912
+27444|GA|SAVANNAH|31499|1|13|CHATHAM|912
+27445|GA|WAYCROSS|31501|1|13|WARE|912
+27446|GA|OKEFENOKEE|31501|0|13||
+27447|GA|WAYCROSS|31502|1|13|WARE|912
+27448|GA|WAYCROSS|31503|1|13|WARE|912
+27449|GA|ALMA|31510|1|13|BACON|912
+27450|GA|GUYSIE|31510|0|13||
+27451|GA|ROCKINGHAM|31510|0|13||
+27452|GA|AMBROSE|31512|1|13|COFFEE|912
+27453|GA|BAXLEY|31513|1|13|APPLING|912
+27454|GA|GRAHAM|31513|0|13||
+27455|GA|PINE GROVE|31513|0|13||
+27456|GA|BAXLEY|31515|1|13|APPLING|912
+27457|GA|BLACKSHEAR|31516|1|13|PIERCE|912
+27458|GA|JOT EM DOWN STORE|31516|0|13||
+27459|GA|BRISTOL|31518|1|13|PIERCE|912
+27460|GA|BROXTON|31519|1|13|COFFEE|912
+27461|GA|LOTTS|31519|0|13||
+27462|GA|PRIDGEN|31519|0|13||
+27463|GA|BRUNSWICK|31520|1|13|GLYNN|912
+27464|GA|ALTAMA|31520|0|13||
+27465|GA|SEARS|31520|0|13||
+27466|GA|BRUNSWICK|31521|1|13|GLYNN|912
+27467|GA|SAINT SIMONS ISLAND|31522|1|13|GLYNN|912
+27468|GA|BRUNSWICK|31522|0|13||
+27469|GA|BRUNSWICK|31523|1|13|GLYNN|912
+27470|GA|BRUNSWICK|31524|1|13|GLYNN|912
+27471|GA|FED LAW ENFORCE TRNG CTR|31524|0|13||
+27472|GA|GLYNCO|31524|0|13||
+27473|GA|BRUNSWICK|31525|1|13|GLYNN|912
+27474|GA|EVERETT|31525|0|13||
+27475|GA|STERLING|31525|0|13||
+27476|GA|THALMAN|31525|0|13||
+27477|GA|JEKYLL ISLAND|31527|1|13|GLYNN|912
+27478|GA|BRUNSWICK|31527|0|13||
+27479|GA|DENTON|31532|1|13|JEFF DAVIS|912
+27480|GA|SNIPESVILLE|31532|0|13||
+27481|GA|DOUGLAS|31533|1|13|COFFEE|912
+27482|GA|DOUGLAS|31534|1|13|COFFEE|912
+27483|GA|DOUGLAS|31535|1|13|COFFEE|912
+27484|GA|FOLKSTON|31537|1|13|CHARLTON|912
+27485|GA|HOMELAND|31537|0|13||
+27486|GA|HAZLEHURST|31539|1|13|JEFF DAVIS|912
+27487|GA|ROPER|31539|0|13||
+27488|GA|HOBOKEN|31542|1|13|BRANTLEY|912
+27489|GA|HORTENSE|31543|1|13|BRANTLEY|912
+27490|GA|JACKSONVILLE|31544|1|13|TELFAIR|229
+27491|GA|JESUP|31545|1|13|WAYNE|912
+27492|GA|DOCTORTOWN|31545|0|13||
+27493|GA|GARDI|31545|0|13||
+27494|GA|MADRAY SPRINGS|31545|0|13||
+27495|GA|MCKINNON|31545|0|13||
+27496|GA|JESUP|31546|1|13|WAYNE|912
+27497|GA|KINGS BAY|31547|1|13|CAMDEN|912
+27498|GA|KINGSLAND|31548|1|13|CAMDEN|912
+27499|GA|LUMBER CITY|31549|1|13|TELFAIR|912
+27500|GA|MANOR|31550|1|13|WARE|912
+27501|GA|MERSHON|31551|1|13|PIERCE|912
+27502|GA|MILLWOOD|31552|1|13|WARE|912
+27503|GA|FAIRFAX|31552|0|13||
+27504|GA|NAHUNTA|31553|1|13|BRANTLEY|912
+27505|GA|HICKOX|31553|0|13||
+27506|GA|LULATON|31553|0|13||
+27507|GA|RAYBON|31553|0|13||
+27508|GA|NICHOLLS|31554|1|13|COFFEE|912
+27509|GA|BEACH|31554|0|13||
+27510|GA|BICKLEY|31554|0|13||
+27511|GA|CHATTERTON|31554|0|13||
+27512|GA|SESSOMS|31554|0|13||
+27513|GA|WILSONVILLE|31554|0|13||
+27514|GA|ODUM|31555|1|13|WAYNE|912
+27515|GA|OFFERMAN|31556|1|13|PIERCE|912
+27516|GA|PATTERSON|31557|1|13|PIERCE|912
+27517|GA|SAINT MARYS|31558|1|13|CAMDEN|912
+27518|GA|SCREVEN|31560|1|13|WAYNE|912
+27519|GA|SEA ISLAND|31561|1|13|GLYNN|912
+27520|GA|BRUNSWICK|31561|0|13||
+27521|GA|SAINT GEORGE|31562|1|13|CHARLTON|912
+27522|GA|SURRENCY|31563|1|13|APPLING|912
+27523|GA|WARESBORO|31564|1|13|WARE|912
+27524|GA|WAVERLY|31565|1|13|CAMDEN|912
+27525|GA|HICKORY BLUFF|31565|0|13||
+27526|GA|PINEY BLUFF|31565|0|13||
+27527|GA|SPRING BLUFF|31565|0|13||
+27528|GA|WAYNESVILLE|31566|1|13|BRANTLEY|912
+27529|GA|WEST GREEN|31567|1|13|COFFEE|912
+27530|GA|WHITE OAK|31568|1|13|CAMDEN|912
+27531|GA|WOODBINE|31569|1|13|CAMDEN|912
+27532|GA|JESUP|31598|1|13|WAYNE|912
+27533|GA|JESUP|31599|1|13|WAYNE|912
+27534|GA|FEDERAL CORRECTIONAL INST|31599|0|13||
+27535|GA|VALDOSTA|31601|1|13|LOWNDES|229
+27536|GA|CLYATTVILLE|31601|0|13||
+27537|GA|DASHER|31601|0|13||
+27538|GA|REMERTON|31601|0|13||
+27539|GA|VALDOSTA|31602|1|13|LOWNDES|229
+27540|GA|VALDOSTA|31603|1|13|LOWNDES|229
+27541|GA|VALDOSTA|31604|1|13|LOWNDES|229
+27542|GA|VALDOSTA|31605|1|13|LOWNDES|229
+27543|GA|BEMISS|31605|0|13||
+27544|GA|VALDOSTA|31606|1|13|LOWNDES|229
+27545|GA|ADEL|31620|1|13|COOK|229
+27546|GA|ALAPAHA|31622|1|13|BERRIEN|229
+27547|GA|ARGYLE|31623|1|13|CLINCH|912
+27548|GA|AXSON|31624|1|13|ATKINSON|912
+27549|GA|BARNEY|31625|1|13|BROOKS|229
+27550|GA|BOSTON|31626|1|13|THOMAS|229
+27551|GA|CECIL|31627|1|13|COOK|229
+27552|GA|DIXIE|31629|1|13|BROOKS|229
+27553|GA|DU PONT|31630|1|13|CLINCH|912
+27554|GA|FARGO|31631|1|13|CLINCH|912
+27555|GA|HAHIRA|31632|1|13|LOWNDES|229
+27556|GA|HOMERVILLE|31634|1|13|CLINCH|912
+27557|GA|COGDELL|31634|0|13||
+27558|GA|LAKELAND|31635|1|13|LANIER|229
+27559|GA|LAKE PARK|31636|1|13|LOWNDES|229
+27560|GA|LAKEPARK|31636|0|13||
+27561|GA|LENOX|31637|1|13|COOK|229
+27562|GA|EL DORADO|31637|0|13||
+27563|GA|MORVEN|31638|1|13|BROOKS|229
+27564|GA|NASHVILLE|31639|1|13|BERRIEN|229
+27565|GA|NAYLOR|31641|1|13|LOWNDES|229
+27566|GA|PEARSON|31642|1|13|ATKINSON|912
+27567|GA|QUITMAN|31643|1|13|BROOKS|229
+27568|GA|RAY CITY|31645|1|13|BERRIEN|229
+27569|GA|SPARKS|31647|1|13|COOK|229
+27570|GA|STATENVILLE|31648|1|13|ECHOLS|229
+27571|GA|STOCKTON|31649|1|13|LANIER|229
+27572|GA|WILLACOOCHEE|31650|1|13|ATKINSON|912
+27573|GA|VALDOSTA|31698|1|13|LOWNDES|229
+27574|GA|VALDOSTA STATE COLLEGE|31698|0|13||
+27575|GA|MOODY A F B|31699|1|13|LOWNDES|229
+27576|GA|MOODY AFB|31699|0|13||
+27577|GA|MOODY AIR FORCE BASE|31699|0|13||
+27578|GA|ALBANY|31701|1|13|DOUGHERTY|229
+27579|GA|ALBANY|31702|1|13|DOUGHERTY|229
+27580|GA|ALBANY|31703|1|13|DOUGHERTY|229
+27581|GA|ALBANY|31704|1|13|DOUGHERTY|229
+27582|GA|MARINE CORPS LOGISTICS BASE|31704|0|13||
+27583|GA|ALBANY|31705|1|13|DOUGHERTY|229
+27584|GA|BRIDGEBORO|31705|0|13||
+27585|GA|RADIUM SPRINGS|31705|0|13||
+27586|GA|ALBANY|31706|1|13|DOUGHERTY|229
+27587|GA|ALBANY|31707|1|13|DOUGHERTY|229
+27588|GA|ALBANY|31708|1|13|DOUGHERTY|229
+27589|GA|AMERICUS|31709|1|13|SUMTER|229
+27590|GA|AMERICUS|31710|1|13|SUMTER|229
+27591|GA|TOG SHOP|31710|0|13||
+27592|GA|ANDERSONVILLE|31711|1|13|SUMTER|229
+27593|GA|ARABI|31712|1|13|CRISP|229
+27594|GA|ASHBURN|31714|1|13|TURNER|229
+27595|GA|BACONTON|31716|1|13|MITCHELL|229
+27596|GA|AMERICUS|31719|1|13|SUMTER|229
+27597|GA|BARWICK|31720|1|13|BROOKS|229
+27598|GA|ALBANY|31721|1|13|DOUGHERTY|229
+27599|GA|BERLIN|31722|1|13|COLQUITT|229
+27600|GA|BROOKFIELD|31727|1|13|TIFT|229
+27601|GA|CAMILLA|31730|1|13|MITCHELL|229
+27602|GA|CHULA|31733|1|13|TIFT|229
+27603|GA|COBB|31735|1|13|SUMTER|229
+27604|GA|COOLIDGE|31738|1|13|THOMAS|229
+27605|GA|COTTON|31739|1|13|MITCHELL|912
+27606|GA|DE SOTO|31743|1|13|SUMTER|229
+27607|GA|DOERUN|31744|1|13|COLQUITT|229
+27608|GA|ELLENTON|31747|1|13|COLQUITT|229
+27609|GA|ENIGMA|31749|1|13|BERRIEN|229
+27610|GA|FITZGERALD|31750|1|13|BEN HILL|229
+27611|GA|FUNSTON|31753|1|13|COLQUITT|229
+27612|GA|HARTSFIELD|31756|1|13|COLQUITT|229
+27613|GA|HARTVILLE|31756|0|13||
+27614|GA|THOMASVILLE|31757|1|13|THOMAS|229
+27615|GA|TVILLE|31757|0|13||
+27616|GA|THOMASVILLE|31758|1|13|THOMAS|229
+27617|GA|TVILLE|31758|0|13||
+27618|GA|IRWINVILLE|31760|1|13|IRWIN|229
+27619|GA|LEESBURG|31763|1|13|LEE|229
+27620|GA|LESLIE|31764|1|13|SUMTER|229
+27621|GA|MEIGS|31765|1|13|THOMAS|229
+27622|GA|HINSONTON|31765|0|13||
+27623|GA|MOULTRIE|31768|1|13|COLQUITT|229
+27624|GA|MOULTRIE MUNICIPAL AIRPORT|31768|0|13||
+27625|GA|MYSTIC|31769|1|13|IRWIN|229
+27626|GA|NORMAN PARK|31771|1|13|COLQUITT|229
+27627|GA|OAKFIELD|31772|1|13|WORTH|229
+27628|GA|OCHLOCKNEE|31773|1|13|THOMAS|229
+27629|GA|OCILLA|31774|1|13|IRWIN|229
+27630|GA|OMEGA|31775|1|13|TIFT|229
+27631|GA|MOULTRIE|31776|1|13|COLQUITT|229
+27632|GA|PAVO|31778|1|13|THOMAS|229
+27633|GA|PELHAM|31779|1|13|MITCHELL|229
+27634|GA|PLAINS|31780|1|13|SUMTER|229
+27635|GA|POULAN|31781|1|13|WORTH|229
+27636|GA|PUTNEY|31782|1|13|DOUGHERTY|229
+27637|GA|REBECCA|31783|1|13|TURNER|229
+27638|GA|SALE CITY|31784|1|13|MITCHELL|229
+27639|GA|SMITHVILLE|31787|1|13|LEE|229
+27640|GA|MOULTRIE|31788|1|13|COLQUITT|229
+27641|GA|SUMNER|31789|1|13|WORTH|229
+27642|GA|SYCAMORE|31790|1|13|TURNER|229
+27643|GA|SYLVESTER|31791|1|13|WORTH|229
+27644|GA|THOMASVILLE|31792|1|13|THOMAS|229
+27645|GA|GATEWAY|31792|0|13||
+27646|GA|METCALF|31792|0|13||
+27647|GA|TVILLE|31792|0|13||
+27648|GA|TIFTON|31793|1|13|TIFT|229
+27649|GA|TIFTON|31794|1|13|TIFT|229
+27650|GA|ABRAHAM BALDWIN COLLEGE CPO|31794|0|13||
+27651|GA|TY TY|31795|1|13|TIFT|229
+27652|GA|TYTY|31795|0|13||
+27653|GA|WARWICK|31796|1|13|WORTH|229
+27654|GA|WRAY|31798|1|13|IRWIN|229
+27655|GA|THOMASVILLE|31799|1|13|THOMAS|229
+27656|GA|TVILLE|31799|0|13||
+27657|GA|BOX SPRINGS|31801|1|13|TALBOT|706
+27658|GA|JUNIPER|31801|0|13||
+27659|GA|BUENA VISTA|31803|1|13|MARION|229
+27660|GA|TAZEWELL|31803|0|13||
+27661|GA|CATAULA|31804|1|13|HARRIS|706
+27662|GA|CUSSETA|31805|1|13|CHATTAHOOCHEE|706
+27663|GA|ELLAVILLE|31806|1|13|SCHLEY|229
+27664|GA|ELLERSLIE|31807|1|13|HARRIS|706
+27665|GA|FORTSON|31808|1|13|MUSCOGEE|706
+27666|GA|GENEVA|31810|1|13|TALBOT|706
+27667|GA|HAMILTON|31811|1|13|HARRIS|706
+27668|GA|JUNCTION CITY|31812|1|13|TALBOT|706
+27669|GA|LOUVALE|31814|1|13|STEWART|229
+27670|GA|LUMPKIN|31815|1|13|STEWART|229
+27671|GA|MANCHESTER|31816|1|13|MERIWETHER|706
+27672|GA|MIDLAND|31820|1|13|MUSCOGEE|706
+27673|GA|OMAHA|31821|1|13|STEWART|229
+27674|GA|PINE MOUNTAIN|31822|1|13|HARRIS|706
+27675|GA|PINE MOUNTAIN VALLEY|31823|1|13|HARRIS|706
+27676|GA|PRESTON|31824|1|13|WEBSTER|229
+27677|GA|RICHLAND|31825|1|13|STEWART|229
+27678|GA|SHILOH|31826|1|13|HARRIS|706
+27679|GA|TALBOTTON|31827|1|13|TALBOT|706
+27680|GA|UPATOI|31829|1|13|MUSCOGEE|706
+27681|GA|COLUMBUS|31829|0|13||
+27682|GA|WARM SPRINGS|31830|1|13|MERIWETHER|706
+27683|GA|WAVERLY HALL|31831|1|13|HARRIS|706
+27684|GA|WESTON|31832|1|13|WEBSTER|229
+27685|GA|WEST POINT|31833|1|13|TROUP|706
+27686|GA|WOODLAND|31836|1|13|TALBOT|706
+27687|GA|COLUMBUS|31901|1|13|MUSCOGEE|706
+27688|GA|COLS|31901|0|13||
+27689|GA|COLUMBUS|31902|1|13|MUSCOGEE|706
+27690|GA|COLS|31902|0|13||
+27691|GA|COLUMBUS|31903|1|13|MUSCOGEE|706
+27692|GA|COLS|31903|0|13||
+27693|GA|COLUMBUS|31904|1|13|MUSCOGEE|706
+27694|GA|BEALLWOOD|31904|0|13||
+27695|GA|COLS|31904|0|13||
+27696|GA|FORT BENNING|31905|1|13|MUSCOGEE|706
+27697|GA|CAMP ROGERS|31905|0|13||
+27698|GA|COLS|31905|0|13||
+27699|GA|COLUMBUS|31905|0|13||
+27700|GA|COLUMBUS|31906|1|13|MUSCOGEE|706
+27701|GA|COLS|31906|0|13||
+27702|GA|COLUMBUS|31907|1|13|MUSCOGEE|706
+27703|GA|COLS|31907|0|13||
+27704|GA|COLUMBUS|31908|1|13|MUSCOGEE|706
+27705|GA|COL|31908|0|13||
+27706|GA|COLS|31908|0|13||
+27707|GA|COLUMBUS|31909|1|13|MUSCOGEE|706
+27708|GA|COLS|31909|0|13||
+27709|GA|COLUMBUS|31914|1|13|MUSCOGEE|706
+27710|GA|COLS|31914|0|13||
+27711|GA|COLUMBUS|31917|1|13|MUSCOGEE|706
+27712|GA|COLS|31917|0|13||
+27713|GA|COLUMBUS|31993|1|13|MUSCOGEE|706
+27714|GA|COLUMBUS BRM|31993|0|13||
+27715|GA|COLUMBUS|31994|1|13|MUSCOGEE|706
+27716|GA|FORT BENNING|31995|1|13|MUSCOGEE|706
+27717|GA|COLS|31995|0|13||
+27718|GA|COLUMBUS|31995|0|13||
+27719|GA|COLUMBUS|31997|1|13|MUSCOGEE|706
+27720|GA|AT&T UNIVERSAL CARD SERVICE|31997|0|13||
+27721|GA|COLUMBUS|31998|1|13|MUSCOGEE|706
+27722|GA|AMER FAM LIFE INS BRM|31998|0|13||
+27723|GA|COLUMBUS|31999|1|13|MUSCOGEE|706
+27724|GA|AMERICAN FAMILY LIFE INS|31999|0|13||
+34618|GA|ARLINGTON|39813|1|13|CALHOUN|229
+34619|GA|ATTAPULGUS|39815|1|13|DECATUR|229
+34620|GA|BAINBRIDGE|39817|1|13|DECATUR|229
+34621|GA|BDGE|39817|0|13||
+34622|GA|WEST BAINBRIDGE|39817|0|13||
+34623|GA|BAINBRIDGE|39818|1|13|DECATUR|229
+34624|GA|BDGE|39818|0|13||
+34625|GA|BAINBRIDGE|39819|1|13|DECATUR|229
+34626|GA|BDGE|39819|0|13||
+34627|GA|BLAKELY|39823|1|13|EARLY|229
+34628|GA|BLUFFTON|39824|1|13|CLAY|229
+34629|GA|BRINSON|39825|1|13|DECATUR|229
+34630|GA|BRONWOOD|39826|1|13|TERRELL|229
+34631|GA|CAIRO|39827|1|13|GRADY|229
+34632|GA|CARIO|39827|0|13||
+34633|GA|KARO|39827|0|13||
+34634|GA|CAIRO|39828|1|13|GRADY|229
+34635|GA|CARIO|39828|0|13||
+34636|GA|KARO|39828|0|13||
+34637|GA|CALVARY|39829|1|13|GRADY|229
+34638|GA|CEDAR SPRINGS|39832|1|13|EARLY|229
+34639|GA|CLIMAX|39834|1|13|DECATUR|229
+34640|GA|COLEMAN|39836|1|13|RANDOLPH|229
+34641|GA|COLQUITT|39837|1|13|MILLER|229
+34642|GA|CUTHBERT|39840|1|13|RANDOLPH|229
+34643|GA|DAMASCUS|39841|1|13|EARLY|229
+34644|GA|DAWSON|39842|1|13|TERRELL|229
+34645|GA|DONALSONVILLE|39845|1|13|SEMINOLE|229
+34646|GA|DVILLE|39845|0|13||
+34647|GA|EDISON|39846|1|13|CALHOUN|229
+34648|GA|FORT GAINES|39851|1|13|CLAY|229
+34649|GA|FOWLSTOWN|39852|1|13|DECATUR|229
+34650|GA|GEORGETOWN|39854|1|13|QUITMAN|229
+34651|GA|IRON CITY|39859|1|13|SEMINOLE|229
+34652|GA|JAKIN|39861|1|13|EARLY|229
+34653|GA|LEARY|39862|1|13|CALHOUN|229
+34654|GA|MORGAN|39866|1|13|CALHOUN|229
+34655|GA|MORRIS|39867|1|13|QUITMAN|229
+34656|GA|NEWTON|39870|1|13|BAKER|912
+34657|GA|PARROTT|39877|1|13|TERRELL|229
+34658|GA|SASSER|39885|1|13|TERRELL|229
+34659|GA|SHELLMAN|39886|1|13|RANDOLPH|229
+34660|GA|WHIGHAM|39897|1|13|GRADY|229
+34661|GA|ATLANTA|39901|1|13|DEKALB|404/770
+34662|GA|IRS SERVICE CENTER|39901|0|13||
diff --git a/Open-ILS/examples/templates/overdue_combined_xml_pines.example b/Open-ILS/examples/templates/overdue_combined_xml_pines.example
new file mode 100644 (file)
index 0000000..6353345
--- /dev/null
@@ -0,0 +1,65 @@
+[% USE date -%]
+<?xml version='1.0' encoding='UTF-8'?>
+<file type="notice" date="[% date.format(date.now,'%Y-%m-%d') %]" time="[% date.format(date.now, '%H:%M:%S') %]">
+    [%- FOREACH circ_set = overdues %]
+        [%- SET user = circ_set.circ_list.0.usr -%]
+        [%- SET lib = circ_set.circ_list.0.circ_lib -%]
+        [%- SET user_addr = user.mailing_address -%]
+        [%- IF !user_addr or user_addr.valid == 'f' -%]
+                [%- SET user_addr = user.billing_address -%]
+        [%- END %]
+        [%- SET lib_addr = lib.mailing_address -%]
+        [%- IF !lib_addr -%]
+                [%- SET lib_addr = lib.billing_address -%]
+        [%- END -%]
+    <notice type='overdue' notify_interval='[% circ_set.notice.notify_interval %]'>
+        <patron>
+            <barcode>[% user.card.barcode %]</barcode>
+            <first_given_name>[% user.first_given_name %]</first_given_name>
+            <family_name>[% user.family_name %]</family_name>
+           [% IF !user_addr %]
+               <addr_valid>false</addr_valid>
+        [% ELSE %]
+               [% IF user_addr.valid == 'f' %]
+                <addr_valid>false</addr_valid>
+            [% ELSE %]
+                <addr_valid>true</addr_valid>
+            [% END %]
+            <addr_street1>[% escape_xml(user_addr.street1) %]</addr_street1>
+            <addr_street2>[% escape_xml(user_addr.street2) %]</addr_street2>
+            <addr_city>[% escape_xml(user_addr.city) %]</addr_city>
+            <addr_state>[% user_addr.state %]</addr_state>
+            <addr_post_code>[% user_addr.post_code %]</addr_post_code>
+        [% END %]
+            <email>[% user.email %]</email>
+            <day_phone>[% user.day_phone %]</day_phone>
+            <evening_phone>[% user.evening_phone %]</evening_phone>
+            <other_phone>[% user.other_phone %]</other_phone>
+            <sys_id>[% user.id %]</sys_id>
+        </patron>
+        <location>
+            <name>[% escape_xml(lib.name) %]</name>
+            <code>[% lib.shortname %]</name>
+            <phone>[% lib.phone %]</phone>
+            <addr_street1>[% escape_xml(lib_addr.street1) %]</addr_street1>
+            <addr_street2>[% escape_xml(lib_addr.street2) %]</addr_street2>
+            <addr_city>[% escape_xml(lib_addr.city) %]</addr_city>
+            <addr_state>[% lib_addr.state %]</addr_state>
+            <addr_post_code>[% lib_addr.post_code %]</addr_post_code>
+            <email>[% lib.email %]</email>
+            <sys_id>[% lib.id %]</sys_id>
+        </location>
+        [%- FOREACH circ = circ_set.circ_list %]
+            [%- SET due_date = parse_due_date(circ) %]
+        <item>
+            <title>[% escape_xml(get_bib_attr(circ, 'title')) %]</title>
+            <author>[% escape_xml(get_bib_attr(circ, 'author')) %]</author>
+            <due_date>[% date.format(due_date, '%Y-%m-%d') %]</due_date>
+            <call_number>[% escape_xml(circ.target_copy.call_number.label) %]</call_number>
+            <barcode>[% escape_xml(circ.target_copy.barcode) %]</barcode>
+            <circ_id>[% circ.id %]</circ_id>
+        </item>
+        [%- END %]
+    </notice>
+    [%- END %]
+</file>
index fcff938..4d3b77e 100644 (file)
                <style type="text/css">
                        .maintable {
                                border-collapse: collapse;
-                               border: 3px solid #A7EA9D;
+                               border: 3px solid #96BEAA;
                                -moz-border-radius: 6px;
                                padding: 6px;
                                margin-top: 65px;
                        }
                        
                        .greenrow {
-                               border: 1px solid #D0D0D0;
-                               background: #A7EA9D;
+                               background: #96BEAA;
                                height: 20px;
                        }
 
                        .bluerow {
-                               border: 1px solid #D0D0D0;
-                               background: #E0F6E0;
+                               background: #FFFFFF;
                                height: 20px;
                        }
 
        </body>
 </html>
 
+
index e5cc48a..44b7a03 100644 (file)
                <style type="text/css">
                        .maintable {
                                border-collapse: collapse;
-                               border: 3px solid #A7EA9D;
+                               border: 3px solid #96BEAA;
                                -moz-border-radius: 6px;
                                padding: 6px;
                                margin-top: 65px;
                        }
                        
                        .greenrow {
-                               border: 1px solid #D0D0D0;
-                               background: #A7EA9D;
+                               background: #96BEAA;
                                height: 20px;
                        }
 
                        .bluerow {
-                               border: 1px solid #D0D0D0;
-                               background: #E0F6E0;
+                               background: #FFFFFF;
                                height: 20px;
                        }
 
        </body>
 </html>
 
+
index 6d71f51..81a9c0d 100644 (file)
@@ -384,12 +384,14 @@ Please see a librarian to renew your account.">
 <!ENTITY footer.basic "Basic Catalog (HTML only)">
 <!ENTITY footer.find.library "Find a Library Near Me">
 <!ENTITY footer.find.url "http://www.georgialibraries.org/lib/directories/pineslibdir.html">
-<!ENTITY footer.help.url "http://open-ils.org/dokuwiki/doku.php?id=evergreen-user:opac_help">
+<!ENTITY footer.help.url "http://pines.georgialibraries.org/catalog-help">
 <!ENTITY footer.help "Help">
 <!ENTITY footer.library.url "http://www.georgialibraries.org/public/pines.html">
 <!ENTITY footer.library.about "About PINES">
 <!ENTITY footer.union.url "http://www.galileo.usg.edu/">
 <!ENTITY footer.union "GALILEO">
+<!ENTITY footer.IE8.url "http://pines.georgialibraries.org/how-clear-you-browser-cache">
+<!ENTITY footer.IE8 "Internet Browser Issues">
 <!ENTITY footer.copyright "Copyright &#xA9; 2006-2011 Georgia Public Library Service, and others">
 <!ENTITY footer.logo "Powered by"> <!-- Introduces the logo for the project -->
 
@@ -431,7 +433,7 @@ Please see a librarian to renew your account.">
 <!--   ================================================================= 
                Page Titles
                ================================================================= -->
-<!ENTITY opac.title.home "Evergreen Home">
+<!ENTITY opac.title.home "Georgia PINES Catalog">
 <!ENTITY opac.title.mresult "Evergreen Title Groups">
 <!ENTITY opac.title.rresult "Evergreen Titles">
 <!ENTITY opac.title.myopac "Evergreen My Account">
index 2d08344..dbe0384 100644 (file)
@@ -11,7 +11,7 @@ attachEvt("rdetail", "recordDrawn", rdetailGetPageIds);
 var rdetailLocalOnly = true;
 var rdetailShowLocal = true;
 var rdetailShowCopyLocation = true;
-var rdetailGoogleBookPreview = true;
+var rdetailGoogleBookPreview = false;
 var rdetailDisplaySerialHoldings = true;
 var rdetailEnableRefWorks = false;
 var rdetailRefWorksHost = 'http://www.refworks.com';
index baf10ef..2044489 100644 (file)
@@ -6,7 +6,7 @@ var recordsHandled = 0;
 var recordsCache = [];
 var lowHitCount = 4;
 var isbnList = '';
-var googleBooksLink = true;
+var googleBooksLink = false;
 
 var resultFetchAllRecords = false;
 var resultCompiledSearch = null;
index fffec7f..0b40740 100644 (file)
@@ -1,4 +1,4 @@
 <div id='logo_div'>
        <script language='javascript' type='text/javascript'>config.ids.common.top_logo = "top_left_logo";</script>
-       <img style='margin-right: 4px; height: 48px; width: 187px;' src='<!--#echo var="OILS_BASE"-->/images/small_logo.jpg' id='top_left_logo' border='0' class='logo' />
+       <img style='margin-right: 4px;' src='<!--#echo var="OILS_BASE"-->/images/small_logo.jpg' id='top_left_logo' border='0' class='logo' />
 </div>
index ab53c9d..a35fbcd 100644 (file)
                                        <a target='_blank' class='classic_link' id='eg_gal_link'
                                                href='&footer.union.url;'>&footer.union;</a>
                                </span>
+                <span> | </span>
+                <span class='footer_link'>
+                    <a target='_blank' class='classic_link'
+                        href='&footer.IE8.url;'>&footer.IE8;</a>
+                </span>
                </div>
         <div id='copyright_text'>
             <span>&footer.copyright;</span>
index 30ca9a3..b681ac9 100644 (file)
@@ -53,8 +53,8 @@
 
                        <tr class='rowpad'><td></td></tr>
 
-                       <tr>
-                               <td nowrap='nowrap' align='center' class='color_1 border_5'>
+                       <tr class = 'border_5'>
+                               <td nowrap='nowrap' align='center' >
                                        <input id='search_box' style='width: 300px;' type='text' />
                                        <span style='padding-left: 6px;'>
                                                <input type='button' style='width: 40px;' id='search_submit' value='Go!' />
@@ -64,7 +64,7 @@
 
                        <tr class='rowpad'><td></td></tr>
 
-                       <tr class='color_3 border_5'>
+                       <tr class = 'color_1'>
 
                                <td nowrap='nowrap' align='center' style='padding: 4px;'>
 
@@ -85,7 +85,7 @@
 
                        <tr class='rowpad'><td></td></tr>
 
-                       <tr class='color_1 border_5'>
+                       <tr class='border_5'>
                                <td align='center' style='padding: 4px; padding-bottom: 6px;'>
                                        <span style='padding-right: 15px;'>
                                                <a id='home_adv_search_link' href='javascript:void(0);'>&opac.navigate.advanced;</a></span>
 
 
 
+
index 7bd54cc..e14a059 100644 (file)
@@ -10,36 +10,36 @@ body a:hover        { color: red; text-decoration: underline;}
  * in this file
  */
  
-.color_1 { background: #A7EA9D; color: #000000; }
-.color_2 { background: #64EA4F; color: #000000; }
-.color_3 { background: #E0F6E0; color: #000000; }
+.color_1 { background: #96BEAA; color: #000000; }
+.color_2 { background: #96BEAA; color: #000000; }
+.color_3 { background: #CDDCCD; color: #000000; }
 .color_4 { background: #E0F0E0; color: #000000; }
 
-.border_1 { border: 1px solid #A7EA9D; }
-.border_2 { border: 1px solid #64EA4F; }
-.border_3 { border: 1px solid #E0F6E0; }
+.border_1 { border: 1px solid #96BEAA; }
+.border_2 { border: 1px solid #96BEAA; }
+.border_3 { border: 1px solid #CDDCCD; }
 .border_4 { border: 1px solid #E0F0E0; }
 
-.border_1_2 { border: 2px solid #A7EA9D; }
-.border_2_2 { border: 2px solid #64EA4F; }
-.border_3_2 { border: 2px solid #E0F6E0; }
+.border_1_2 { border: 2px solid #96BEAA; }
+.border_2_2 { border: 2px solid #96BEAA; }
+.border_3_2 { border: 2px solid #CDDCCD; }
 .border_4_2 { border: 2px solid #E0F0E0; }
 
-.border_1_3 { border: 3px solid #A7EA9D; }
-.border_2_3 { border: 3px solid #64EA4F; }
-.border_3_3 { border: 3px solid #E0F6E0; }
+.border_1_3 { border: 3px solid #96BEAA; }
+.border_2_3 { border: 3px solid #96BEAA; }
+.border_3_3 { border: 3px solid #CDDCCD; }
 .border_4_3 { border: 3px solid #E0F0E0; }
 
 /* some facet styling */
 .facetClassContainer { margin: 2px; border: 1px solid #64EA4F; }
-.facetClassLabelContainer { background: #A7EA9D; border: 1px solid #A7EA9D; }
+.facetClassLabelContainer { background: #96BEAA; border: 1px solid #96BEAA; }
 .facetClassLabel { font-weight: bold; text-align: center; }
 .facetFieldContainer { background: #E0F6E0; }
 .facetFieldLabel { padding-left: 2px; margin-top: 5px; margin-bottom: 5px; font-weight: bold; text-align: left; }
 .extraFacetFieldsWrapper { }
 .toggleExtraFacetFieldsButton { float: right; margin: 0px; padding: 0px; }
-.facetFieldLineCount { display: inline-block; border-right: 1px solid #A7EA9D; color: gray; width: 3em; margin-right: 3px }
-.facetField { border-top: 1px solid #A7EA9D; }
+.facetFieldLineCount { display: inline-block; border-right: 1px solid #96BEAA; color: gray; width: 3em; margin-right: 3px }
+.facetField { border-top: 1px solid #96BEAA; }
 .facetFields { padding-left: 5px; }
 .facetFieldLineValue { overflow: hidden; text-overflow: ellipsis; }
 
@@ -68,7 +68,7 @@ body a:hover  { color: red; text-decoration: underline;}
 .searcherDeckSwapContainer {}
 
 /* general purpose light borders */
-.border_5 { border: 1px solid #D0D0D0; }
+/*.border_5 { border: 1px solid #D0D0D0; } */
 .border_6 { border: 1px solid #808080; }
 
 input:focus { background: #E0F0E0; color: #000000;}
@@ -78,35 +78,35 @@ a:focus { background: #E0F0E0; color: #000000;}
 /* ---------------------------------------------------------------------- */
 
 .canvas { /* main content div for each page */
-    border-left: 3px solid #A7EA9D;
-    border-bottom: 3px solid #A7EA9D;
-       border-top: 3px solid #A7EA9D;
+    border-left: 3px solid #96BEAA;
+    border-bottom: 3px solid #96BEAA;
+       border-top: 3px solid #96BEAA;
 }
 
 /* border around home search box */
-.home_search { border: 3px solid #A7EA9D; }
+.home_search { border: 3px solid #96BEAA; }
 
 /* main nav sidebar */
-.sidebar_item_active { background: #A7EA9D; }
+.sidebar_item_active { background: #96BEAA; }
 
 /* record detail summary block */
-.rdetail_desc { border: 1px solid #A7EA9D; }
-.rdetail_item { border: 1px solid #A7EA9D; }
+.rdetail_desc { border: 1px solid #96BEAA; }
+.rdetail_item { border: 1px solid #96BEAA; }
 .rdetail_extras_selected { background: #E0F0E0;} 
 
 
 .data_grid thead tr { background: #E0F0E0; color: #000000; }
 .data_grid thead td { border: 1px solid #808080; }
-.data_grid tbody td { border: 1px solid #E0F6E0; }
+.data_grid tbody td { border: 1px solid #CDDCCD; }
 .data_grid_nb thead tr { background: #E0F0E0; color: #000000; }
 .data_grid_nb thead td { border: none; }
 .data_grid_nb tbody td { border: none; }
 
-.light_border { border: 1px solid #E0F6E0; }
+.light_border { border: 1px solid #CDDCCD; }
 
-.adv_quick_search_submit { border-bottom: 3px solid #E0F6E0;}
+.adv_quick_search_submit { border-bottom: 3px solid #CDDCCD;}
 
-.myopac_link_active { background: #E0F6E0; }
+.myopac_link_active { background: #CDDCCD; }
 
 .sidebar_extra_link { text-decoration: none; }
 #searchbar_tag_on { color: red; }
@@ -120,9 +120,9 @@ a:focus { background: #E0F0E0; color: #000000;}
 .result_table_subtable { border-top: 1px solid #E0E0E0; }
 
 .copy_count_cell { border-right: 1px solid #E0E0E0; } 
-.copy_count_div {      border-left: 2px solid #E0F6E0; border-right: 2px solid #E0F6E0; }
+.copy_count_div {      border-left: 2px solid #CDDCCD; border-right: 2px solid #CDDCCD; }
 
-#rdetail_image_cell { border: 1px solid white; border-right: 1px solid #A7EA9D;}
+#rdetail_image_cell { border: 1px solid white; border-right: 1px solid #96BEAA;}
 #rdetail_img_link { display: block; margin-left: 1em; margin-bottom: 1em; }
 
 .x_mark { color: red; }
@@ -134,6 +134,6 @@ a:focus { background: #E0F0E0; color: #000000;}
 
 .hold_expire_warning { color:red; }
 
-#result_low_hits { border-top: 2px solid #A7EA9D }
+#result_low_hits { border-top: 2px solid #96BEAA }
 
 .parts-warning { border: 2px solid red; }
index dfa9de8..247a779 100644 (file)
           &staff.client.portal.admin;
           <hr />
 
-          <table class="functionlist">
-            <tr>
+           
+         <table class="functionlist">
+            <!-- commenting out to prevent confusion 
+             <tr>
               <td height="50"><img src="skin/media/images/portal/helpdesk.png" height="48" width="48"
               onclick="try { helpdesk(false); } catch(E) { alert(E); }" alt=
               "Submit A Helpdesk Ticket" /></td>
               <td><img class="newtabimg" src="skin/media/images/portal/newtab2.PNG" alt="Open in a new tab"
               onclick="try { helpdesk(true); } catch(E) { alert(E); }" /> <a href="#"
               onclick="try { helpdesk(false); } catch(E) { alert(E); }">&staff.client.portal.helpdesk;</a></td>
-            </tr>
+            </tr> -->
 
             <tr>
               <td height="50"><img src="skin/media/images/portal/reports.png" height="48" width="48"