--- /dev/null
+.sliderwrapper{
+position: relative; /*leave as is*/
+overflow: hidden; /*leave as is*/
+width: 675px; /*width of featured content slider*/
+height: 213px;
+}
+
+
+
+.sliderwrapper .contentdiv{
+visibility: hidden; /*leave as is*/
+position: absolute; /*leave as is*/
+left: 0; /*leave as is*/
+top: 0; /*leave as is*/
+width: 675px; /*width of content DIVs within slider. Total width should equal slider's inner width (390+5+5=400) */
+height: 100%;
+filter:progid:DXImageTransform.Microsoft.alpha(opacity=100);
+-moz-opacity: 1;
+opacity: 1;
+}
+
+.pagination{
+width: 400px; /*Width of pagination DIV. Total width should equal slider's outer width (400+10+10=420)*/
+text-align: right;
+background-color: navy;
+padding: 5px 10px;
+}
+
+.pagination a{
+padding: 0 5px;
+text-decoration: none;
+color: #00007D;
+background: white;
+}
+
+.pagination a:hover, .pagination a.selected{
+color: #000;
+background-color: #FEE496;
+}
\ No newline at end of file
--- /dev/null
+body { margin: 6px; }
+body { background-color: white; }
+
+.main_header { width: 100%; }
+.space { padding-right:5px; }
+.vert_space { padding-top: 82px; width: 100%;}
+.right { position:absolute; right: 0px; }
+.hide_me { display:none; visibility: hidden; }
+
+table { border-collapse: collapse; }
+
+/* generic CSS for a table with data */
+.data_grid { font-weight: 500; border-collapse: collapse;}
+.data_grid thead tr { }
+.data_grid thead td { padding-right: 5px; padding-left: 5px;}
+.data_grid tbody td { padding: 5px; }
+.data_grid_center { text-align: center; }
+
+.data_grid_nb { font-weight: 500; border-collapse: collapse;}
+.data_grid_nb thead tr { color: #000000; }
+.data_grid_nb thead td { padding-right: 5px; padding-left: 5px;}
+.data_grid_nb tbody td { padding: 5px; }
+
+
+.classic_link { text-decoration: underline; color: black;}
+.classic_link:visited { text-decoration: underline; color: black;}
+.classic_link_col { text-decoration: underline; color: red;}
+
+.encircled { border: 1px solid black; }
+
+
+.adv_quick_search { padding: 3px;}
+.adv_quick_search_submit { padding: 3px;}
+
+.overdue { color: red; font-weight: bold;}
+
+#main_table { border-collapse: collapse; width: 100%; }
+#main_left_cell { width: 20%; vertical-align: top;margin: 0px; padding: 0px;}
+#main_right_cell { width: 80%; vertical-align: top; margin: 0px; padding:0px;}
+
+
+#content { min-height: 300px; }
+
+.canvas { min-height: 300px; padding-left: 4px; -moz-border-radius: 6px;}
+#canvas_main { padding-bottom: 4px; }
+
+#loading_div { width: 100%;}
+
+
+
+.shadowed { background: #F0F0E0; }
+.no_copies { background: #E0E0E0; }
+.overdue_circ { border: 2px dashed #F0D0E0; }
+
+.org_tree { padding-left: 2px; padding-right: 2px; }
+.org_link { padding-right: 15px; }
+#org_link_container { margin-bottom: 5px; padding-left: 4px; padding-bottom: 3px; padding-top: 3px; width: 100%; }
+#left_div { float:left; width: 20%; }
+#statusbar {}
+
+#frontsearch_table { }
+#frontsearch_table tr { margin: 6px; }
+
+/* ---------------------------------------------------------------------- */
+.sidebar_div { width: 100%; font-size: 9pt; margin-top: 12px; }
+.sidebar_header { margin-top: 10px; padding-left: 3px; margin-right: 6px; }
+
+.sidebar_extra_item { padding: 0px; margin-right: 8px;}
+.side_bar_item { padding-left: 8px; padding-right: 8px; padding-top: 4px; padding-bottom: 4px; margin-right: 8px; }
+
+.sidebar_item_active { margin-right: 0px; }
+
+.sidebar_chunk { width: 100%; }
+
+/* ---------------------------------------------------------------------- */
+
+#searchbar { margin-top: 22px; width: 100%; }
+#searchbar table tr td {font-weight: bold; font-size: 8pt; }
+#searchbar select, input { border-collapse: collapse; font-size: 9pt; }
+.searchbar_item { margin: 3px; font-size: 9pt; }
+.searchbar_label_span { font-size: 9pt; }
+#searchbar_table { border-collapse: collapse; }
+
+.search_box_container { width: 240px; padding: 3px; }/* border: 1px solid #A0A0A0;' class='color_2'>*/
+#search_box { width: 260px; }
+
+
+/* ---------------------------------------------------------------------- */
+#login_box { width: 70%; padding: 5px;}
+.login_text { margin-left: 8px; }
+
+/* ---------------------------------------------------------------------- */
+#result_table_div { text-align: left; width: 100%; }
+
+#search_nav_links { width: 100%; }
+#result_info_box { text-align: left; }
+#next_prev_links { padding-left: 2px; padding-right: 2px; text-align: left;}
+#goto_page_links { text-align: left; padding-left: 2px; padding-right: 2px;}
+
+#next_prev_links_dead {padding-left: 5px; padding-right: 5px;}
+
+#res_table { width: 100%; }
+
+.result_table_pic_cell { width: 43px;}
+.result_table_pic { height: 50px; width: 40px; border: none;}
+.result_table_pic_header { width: 43px; }
+
+.result_table_row { text-align: left; width: 100%;}
+.result_table_subtable { width: 100%; border-collapse: collapse; vertical-align: top;}
+.result_table_subtbody { height: 100%; width: 100%; }
+.result_table_title_cell { text-align: left; }
+
+.copy_count_cell { width: 12%; vertical-align: middle; text-align: center; }
+.copy_count_div { width: 4em; height: 99%; vertical-align: middle; text-align: center; }
+
+.search_page_nav_link { margin-right: 5px; }
+
+.np_nav_link { margin-right: 5px; }
+
+/* ---------------------------------------------------------------------- */
+
+#rdetail_detail_main { width: 100%; }
+#rdetail_details_table { padding-top: 10px; width: 100%; padding: 30px; border-collapse: collapse;}
+.rdetail_header { padding: 3px; padding-left: 10px;}
+.rdetail_desc { padding: 2px; padding-left: 2px; padding-right: 2px;}
+.rdetail_item { width: 75%; padding-left: 10px; }
+#rdetail_image { padding-right: 10px; }
+#rdetail_copy_info_table { padding: 4px; width: 100%; border-collapse: collapse; }
+.rdetail_copy_info_header_cell { padding: 2px; }
+.rdetail_copy_count_cell { text-align: center; }
+
+
+.tor_pic { width: 17px; height: 17px; border: none;}
+
+.dim2_border { border: 1px solid #F06000; -moz-border-radius: 3px;}
+
+.dim2 {
+ filter:alpha(opacity=50);
+ -moz-opacity:0.5;
+ opacity: 0.5;
+ text-decoration: none; }
+
+.dim {
+ filter:alpha(opacity=10);
+ -moz-opacity:0.1;
+ opacity: 0.1;
+ text-decoration: none; }
+
+/* ---------------------------------------------------------------------- */
+
+.myopac_link { width: 12%; margin: 3px; padding: 3px; text-align: center; vertical-align: middle; }
+.myopac_link_active { font-weight: 700;}
+.myopac_table thead tr td { padding: 2px; font-weight: 500; border: 1px solid #808080;}
+.myopac_table td { padding: 3px; }
+.myopac_form_pic { width: 20px; height: 20px; }
+
+.tips { padding: 2px; text-align: center; border: solid #E0E0E0 3px; -moz-border-radius: 3px; width: 99%; }
+
+.holds_cell { border: 1px solid #E0E0E0; padding: 5px; width: 50%;}
+.myopac_update_cell { border: 3px solid #E0E0E0; width:100%; padding-top: 4px; padding-bottom: 4px;}
+.myopac_update_span { padding: 5px;}
+
+.lowhits_div { width: 100%; border-top: 1px solid #E0E0E0; text-align: center;
+ padding-top: 8px; padding-bottom: 8px; }
+
+.rdetail_extras_div {
+ border-top: 3px solid #E0E0E0;margin-top: 3px; padding-top: 5px; width: 100%;}
+
+.copy_info_region_row {
+ padding: 6px;
+ border: 2px solid #E0E0E0;
+ font-weight: 600;
+}
+
+.rdetail_extras_td { padding-right: 15px; padding-left: 15px; border-right: 1px solid #888; }
+.rdetails_extra_links { border: 1px solid #808080; padding-right: 5px; padding-left: 5px; }
+
+
+.cn_browse_item { height: 190px; }
+.cn_browse_info { padding: 4px; border-bottom: 1px dashed #E0E0E0;}
+
+.bookshelf {
+ /*background-image: url(http://10.4.0.10/woodgrain.jpeg);*/
+ /*
+ background-image: url(http://dev.gapines.org/opac/images/woodgrain.jpg);
+ background-repeat: repeat;
+ */
+ border-bottom: 1px solid black;
+}
+
+.cn_browse_loading { width: 95%; padding: 15px; text-align: center; background: #E0F0E0; }
+
+.cn_browse_home_cn { border: 2px solid #E0F0E0; background: green; font-weight: 700;}
+
+.rdetail_context_row { background: #F0E0E0; }
+
+.unadorned_link { text-decoration: none; vertical-align: bottom; }
+
+
+/* ie does not support disabling <option> elements */
+.disabled_option { color: #808080; }
+
+.copy_more_info { padding-left: 6px; color: #804070; }
+
+.invalid_hold { background: #F0F0D0; }
+.myopac_summary_table td { padding : 3px; }
+
+.jacket_attrib { font-size: 7pt; }
+
+/* block that contains footer links and copyright */
+#copyright_block {
+ width: 100%;
+ text-align: center;
+ vertical-align: bottom;
+ margin-top: 10px;
+}
+
+/* block that contains the footer links */
+#footer_links {
+ width: 80%;
+ text-align: center;
+ padding: 10px;
+ margin: auto;
+}
+
+/* span for each link in the footer */
+.footer-link {
+ margin-left: 10px;
+ margin-right: 10px;
+}
+
+/* block that contains the copyright text */
+#copyright_text {
+ margin-top: 4px;
+}
+
+/* block that contains the logo */
+#footer_logo {
+ text-align: center;
+ margin: auto;
+}
+
+#opac.result.sort { margin-left: 5px; }
+
+#xul_recipient_me { margin-left: 25px; }
+#myopac_holds_thaw_date_form {padding: 10px; text-align: center;}
+#myopac_holds_freeze_select_thaw {margin-right: 100px; margin-left: 100px; }
--- /dev/null
+@charset "utf-8";
+/* CSS Document */
+
+@import '/js/dojo/dijit/themes/tundra/tundra.css';
+
+body {
+ margin:0;
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 12px;
+ background:#333;
+}
+
+img {
+ border: none;
+}
+
+a {
+ color: #003399;
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+#search-wrapper input[type=text] {
+ border:none;
+ margin:0;
+ padding:0;
+}
+
+#search-wrapper select {
+ border:1px solid #e9ebf3;
+ margin:0;
+ padding:0;
+ width:168px;
+}
+
+/*
+#search-wrapper select {
+ border:0px solid black;
+ filter:alpha(opacity=0);
+ -moz-opacity:0;
+ -khtml-opacity:0;
+ opacity:0;
+ padding:0;
+ margin:0;
+ height:18px;
+ font-size: 12px;
+}
+*/
+h1 {
+ margin:0;
+ margin-bottom: 5px;
+ font-size: 20px;
+ font-weight:normal;
+}
+
+h2 {
+ margin:0;
+ margin-bottom: 5px;
+ font-size: 14px;
+ font-weight:bold;
+}
+
+.hide_me {
+ display: none;
+ visibility: hidden;
+}
+
+div.select-box-wrapper {
+ position:absolute;
+ padding-top:2px;
+ padding-left:3px;
+ overflow:hidden;
+ text-align:left;
+}
+
+div.select-wrapper {
+ border:1px solid #4C8AB0;
+ display:inline-block;
+ position:relative;
+ z-index:2;
+ background:url('/opac/skin/kcls/graphics/dropdown.gif') no-repeat right center;
+}
+
+div.select-wrapper:hover {
+ background:url('/opac/skin/kcls/graphics/dropdown-hover.gif') no-repeat right center;
+}
+
+#dash_wrapper {
+ width:500px;
+ position:relative;
+ top:-26px;
+}
+
+#dashboard {
+ clear:both;
+ float:right;
+ width:384px;
+}
+
+#dashboard span {
+ font-weight:bold;
+ position:relative;
+ left:-1px;
+}
+
+#dash_user {
+ font-weight:bold;
+ text-transform:capitalize;
+}
+
+#header {
+ color: #fff;
+ padding: 26px 0px 26px 0px;
+ width: 974px;
+ margin: auto;
+ font-size:11px;
+}
+
+#header a {
+ color: #fff;
+}
+
+#header a:hover {
+ color: white;
+ text-decoration: none;
+}
+
+#header-links {
+ color: #afafaf;
+ font-size: 11px;
+ font-weight: bold;
+ position: relative;
+ top:4px;
+
+}
+
+#header-links a {
+ color: #afafaf;
+ display: block;
+ float:left;
+ margin-right:22px;
+}
+
+#header-links a:hover {
+ color: white;
+ text-decoration: none;
+}
+
+#header #header-links2 {
+ position:relative;
+ top:-8px;
+ color: white;
+ padding-bottom: 15px;
+}
+
+#header #header-links2 a {
+ color: white;
+}
+
+#header #header-links2 a:hover {
+ text-decoration: underline;
+}
+
+#header #your-acct-login {
+ padding-top:10px;
+}
+
+#gold-links {
+ margin:auto;
+ width:974px;
+ padding-left:0px;
+}
+
+#util-bar {
+ margin:auto;
+ width:974px;
+ padding-left:0px;
+ height:0px;
+}
+
+#search-wrapper {
+ border-bottom: 1px solid #e9ebf3;
+ padding-bottom: 5px;
+ background: white;
+}
+
+#search_box_wrapper {
+ border:1px solid #e9ebf3;
+ padding: 1px;
+ padding-left:3px;
+}
+
+#search-wrapper #breadcrumb {
+ margin-top:0px;
+ font-size: 10px;
+ float:left;
+}
+
+#search-wrapper #search-within {
+ margin-top:10px;
+ float:right;
+ position:relative;
+ left:-173px;
+}
+
+#search-wrapper #breadcrumb a {
+ color: black;
+}
+
+#search-wrapper #search_frm label {
+ font-size: 10px;
+}
+
+#search-wrapper #search-box {
+ width:974px;
+ margin:auto;
+ padding-left: 0px;
+}
+
+#utils {
+ float:right;
+ z-index:1;
+ width:150px;
+ height:30px;
+ background:url('/opac/skin/kcls/graphics/utils-corner-left.png') no-repeat left top;
+ padding-left: 3px;
+ color: white;
+ position:relative;
+}
+
+#utils a {
+ color: white;
+ font-size: 10px;
+}
+#adv_search_tabs {
+ height:33px;
+ width:974px;
+ margin:auto;
+}
+
+#adv_search_tabs a {
+ float: left;
+ display: block;
+ height:33px;
+ margin-right:7px;
+}
+
+#adv_search {
+ width:156px;
+ background:url('/opac/skin/kcls/graphics/adv_search_on.gif') no-repeat bottom;
+}
+
+#num_search {
+ width:156px;
+ background:url('/opac/skin/kcls/graphics/num_search_off.gif') no-repeat bottom;
+}
+
+#expert_search {
+ width:156px;
+ background:url('/opac/skin/kcls/graphics/expert_search_off.gif') no-repeat bottom;
+}
+
+#acct_tabs, #acct_fines_tabs {
+ height:33px;
+ width:974px;
+ margin:auto;
+}
+
+#acct_tabs a, #acct_fines_tabs a {
+ float: left;
+ display: block;
+ height:33px;
+ margin-right:7px;
+}
+
+#acct_fines_tab {
+ width:156px;
+ background:url('/opac/skin/kcls/graphics/acct_fines_on.jpg') no-repeat bottom;
+}
+#acct_payments_tab {
+ width:156px;
+ background:url('/opac/skin/kcls/graphics/acct_payments_off.jpg') no-repeat bottom;
+}
+
+#acct_summary {
+ width:156px;
+ background:url('/opac/skin/kcls/graphics/acct_summary_on.gif') no-repeat bottom;
+}
+
+#acct_checked_out {
+ width:156px;
+ background:url('/opac/skin/kcls/graphics/acct_checked_out_off.gif') no-repeat bottom;
+}
+
+#acct_holds {
+ width:156px;
+ background:url('/opac/skin/kcls/graphics/acct_holds_off.gif') no-repeat bottom;
+}
+
+#acct_prefs {
+ width:156px;
+ background:url('/opac/skin/kcls/graphics/acct_prefs_off.gif') no-repeat bottom;
+}
+
+#acct_favs {
+ width:156px;
+ background:url('/opac/skin/kcls/graphics/acct_favs_off.gif') no-repeat bottom;
+}
+
+#acct_lists {
+ width:156px;
+ background:url('/opac/skin/kcls/graphics/acct_lists_off.gif') no-repeat bottom;
+}
+
+#rdetail_header {
+ font-size:14px;
+ font-weight:bold;
+ color:#074079;
+ padding: 5px 7px 6px 0px;
+ border-bottom: 1px dotted #ccc;
+}
+
+#rdetail_result_count {
+ color: black;
+ font-size: 11px;
+ font-weight: normal;
+}
+
+#rdetail_result_nav {
+ float:right;
+ font-size: 11px;
+ font-weight:normal;
+}
+
+#rdetail_details_table {
+ margin-top: 15px;
+}
+
+#rdetail_title {
+ font-size: 18px;
+}
+
+#rdetail_image_cell {
+ padding-top: 3px;
+ padding-right: 10px;
+}
+
+.rdetail_aux_utils {
+ border-left:1px dotted #ccc;
+ padding-left: 17px;
+ padding-bottom: 6px;
+ padding-right: 70px;
+}
+
+.results_aux_utils {
+ border-left:1px dotted #ccc;
+ padding-left: 17px;
+ padding-bottom: 6px;
+ padding-right: 50px;
+}
+
+#rdetails_status td, #rdetails_status2 td {
+ white-space:nowrap !important;
+ padding: 7px 0px 3px 13px;
+}
+
+#rdetails_status_head td {
+ background-color: #d8d8d8;
+ padding: 13px 0px 13px 13px;
+ font-size: 10px;
+ text-transform: uppercase;
+ font-weight: bold;
+}
+
+#rdetails_status_head2 td {
+ padding: 0px;
+}
+
+.rdetail_extras {
+ height: 29px;
+ background: #9ad0f1;
+ padding-top:1px;
+ margin-bottom: 10px;
+ margin-top: 10px;
+ clear:both;
+}
+
+.rdetail_extras_hr {
+ height: 1px;
+ background: #b7def5;
+ margin-left: 1px;
+ margin-right: 1px;
+}
+
+.rdetail_extras_link {
+ padding-top: 4px;
+ padding-left: 12px;
+ font-size: 10px;
+ text-transform: uppercase;
+ font-weight: bold;
+}
+
+.rdetail_extras_lbl {
+ position: relative;
+ top: -4px;
+ left: 7px;
+}
+
+#paginate-homebanner a.toc {
+ display:block;
+ width:20px;
+ height:20px;
+ background:gray;
+ float:left;
+ margin-left:2px;
+ margin-right:2px;
+ margin-top:2px;
+}
+
+#rdetail_extras_expand, #rdetail_extras_collapse, #rdetail_locs_collapse {
+ margin-left: 13px;
+}
+
+#rdetail_locs_expand, #rdetail_locs_collapse {
+ padding-bottom:3px;
+ margin-left:13px;
+}
+
+#rdetail_anotes_div .biography {
+ margin:0;
+}
+
+#paginate-homebanner a.selected {
+ border: 2px solid black;
+ margin-top:0px;
+ margin-left:0px;
+ margin-right:0px;
+}
+
+#hp-buttons {
+ margin: auto;
+ margin-top: 6px;
+ width: 974px;
+}
+
+#hp-welcome {
+ position:absolute;
+ width:295px;
+ height:192px;
+ background: url('/opac/skin/kcls/graphics/banner-bg.png') no-repeat;
+ color: #fff;
+ padding-left: 33px;
+ padding-top: 21px;
+ z-index:9999999999;
+}
+
+#hp-welcome h1 {
+ font-size: 25px;
+ margin-bottom:15px;
+}
+
+#hp-welcome a {
+ color: #fff;
+ text-decoration: underline;
+}
+
+#hp-banner {
+ margin: auto;
+ width:974px;
+ height: 213px;
+}
+
+#hp-ql-table {
+ margin-left: 2px;
+ padding-top: 3px;
+}
+
+#hp-ql-table a {
+ color: #333;
+ font-weight: bold;
+ font-size: 13px;
+ text-transform: uppercase;
+ text-decoration: none;
+ display: block;
+ width: 144px;
+ height: 25px;
+ padding-top: 9px;
+ padding-left: 15px;
+ background: url('/opac/skin/kcls/graphics/button-bg.png') no-repeat;
+}
+
+#hp-ql-bottom {
+ width: 640px;
+ height: 31px;
+ padding-left: 24px;
+ padding-top: 13px;
+ background: url('/opac/skin/kcls/graphics/hp-links-mid.jpg') repeat-x;
+}
+
+#hp-ql-bottom a {
+ display: inline-block;
+ text-decoration: none;
+ color: white;
+ font-size: 15px;
+ font-weight: bold;
+}
+
+#content-wrapper {
+ background: white;
+ min-height: 260px;
+ border-bottom: 1px solid black;
+}
+
+#main-content {
+ width: 974px;
+ margin:auto;
+ padding-left:0px;
+}
+
+#main-content .login_boxes {
+ border: 1px solid #dedede;
+ background:url('/opac/skin/kcls/graphics/login-bg.jpg') top repeat-x;
+ color: #333;
+}
+
+#main-content .login_boxes h1 {
+ font-weight: normal;
+ font-size: 25px;
+ margin:0;
+}
+
+#main-content .left_brain {
+ padding-left:28px;
+ padding-top:25px;
+}
+
+#main-content .left_brain input[type=text], #main-content .left_brain input[type=password] {
+ width:167px;
+ height:18px;
+ margin:0;
+ padding:0;
+ border:none;
+ background: none;
+ font-size: 15px;
+ color: #333;
+ font-weight:bold;
+}
+
+#main-content .left_brain .input_bg {
+ padding:10px 10px 0px 13px;
+ background: url('/opac/skin/kcls/graphics/login-box-bg.jpg') no-repeat;
+ width:167px;
+ height:29px;
+}
+
+#home-buttons-inner {
+ width:664px;
+ height:117px;
+ background:#bda964;
+}
+
+#holds_temp_parent td {
+ border-bottom:1px solid #dcdbdb;
+}
+
+#holds_temp_parent input, #holds_temp_parent select {
+ margin:0;
+}
+
+
+
+
+#results_header_bar {
+ background: #929292;
+ border-top:1px solid #8b8b8b;
+}
+
+#results_header_inner {
+ height:32px;
+ width:974px;
+ margin:auto;
+ padding-top:6px;
+}
+
+.results_header_btns {
+ float:left;
+ margin-right: 6px;
+}
+
+.results_header_div {
+ float: left;
+ width: 0px;
+ height: 25px;
+ border-left: 1px solid #7c7c7c;
+ border-right: 1px solid #9c9c9c;
+ margin: 0px 13px;
+}
+
+.results_header_lbl {
+ font-weight: bold;
+ float: left;
+ font-size: 11px;
+ color: #191919;
+ position: relative;
+ top: 5px;
+ margin-right: 6px;
+}
+
+.results_header_sel {
+ float:left;
+ position: relative;
+ top: 2px;
+ margin:0;
+}
+
+#results_header_nav1 {
+ padding: 5px 7px 6px 0px;
+ border-bottom: 1px dotted #ccc;
+}
+
+#results_header_nav1 .h1 {
+ font-size:14px;
+ font-weight:bold;
+ color:#074079;
+}
+
+#start_end_links_span {
+ font-size: 11px;
+}
+
+#start_end_links_span2 {
+ font-size: 11px;
+}
+
+.nav_arrow_fix {
+ font-size:8px;
+ position:relative;
+ top:-1px;
+}
+
+#result_table_div {
+ margin-top: 20px;
+}
+
+#result_numbers1 {
+ font-size: 11px;
+ padding-left:15px;
+}
+
+
+
+
+
+
+.icon_text {
+ text-transform:capitalize;
+}
+
+.result_table_title_cell {
+ padding-left: 7px;
+}
+
+#myopac_summary_div p {
+ margin:0;
+ margin-bottom: 10px;
+}
+
+#acct_sum_checked_table td {
+ padding-bottom:5px;
+}
+
+#zero_search_hits p {
+ margin-top:0;
+}
+
+#zero_hits_term {
+ text-transform: uppercase;
+}
+
+#zero_search_hits #spell_check_link {
+ text-transform: uppercase;
+}
+
+#zero_search_hits #zero_hits_suggestions {
+ text-transform: uppercase;
+}
+
+.results_info_table td {
+ padding-right: 10px;
+}
+
+#myopac_holds_main_table {
+ border-collapse: collapse;
+}
+
+#myopac_holds_main_table td {
+ border: 1px solid black;
+
+}
+
+#myopac_prefs_div .data_grid {
+ border-collapse:collapse;
+}
+
+#myopac_prefs_div .data_grid td {
+ background:#f0f0f0;
+ border-bottom:3px solid white;
+ padding:6px 0px 7px 17px;
+}
+
+.header_middle {
+ height:22px;
+ font-size:14px;
+ font-weight:bold;
+ color:#074079;
+ padding: 7px 7px 0px 0px;
+ border-bottom: 1px dotted #ccc;
+}
+
+.header_middle a {
+ font-size: 12px;
+ font-weight: normal;
+}
+
+.acct_sum_row {
+ padding: 7px 15px;
+ width: 712px;
+ background: #f0f0f0;
+ margin-bottom: 2px;
+ font-size: 10px;
+ font-weight: bold;
+ text-transform: uppercase;
+}
+
+.acct_sum_row a {
+ text-transform: none;
+ font-size: 12px;
+ position:relative;
+ top:-1px;
+}
+
+.acct_sum_row .view_link {
+ font-weight: normal;
+ font-size:12px;
+}
+
+#myopac_sum_fines {
+ float:right;
+ padding: 15px 0px 0px 23px;
+ background: #f0f0f0;
+ width: 177px;
+ height: 166px;
+}
+
+.acct_holds_temp td {
+ text-align: left;
+}
+
+#acct_checked_tabs .align, #acct_holds_tabs .align, #acct_prefs_tabs .align {
+ float:left;
+ /*padding-left:10px;*/
+}
+
+#acct_checked_tabs .selected, #acct_holds_tabs .selected, #acct_prefs_tabs .selected {
+ /*background:url('/opac/skin/kcls/graphics/gray-arrow.png') left 3px no-repeat;*/
+}
+
+#acct_checked_main_header, #acct_holds_main_header, #acct_checked_hist_header, #acct_list_header, #acct_list_header_anon, #temp_list_holds {
+ font-weight:bold;
+ text-transform:uppercase;
+ font-size: 10px;
+}
+
+#acct_checked_main_header td, #acct_holds_main_header td, #acct_checked_hist_header td, #acct_list_header td, #acct_list_header_anon td, #temp_list_holds td {
+ background: #d8d8d8;
+ padding: 8px 0px 7px 0px;
+}
+
+#acct_list_header select, #acct_list_header_anon select {
+ font-weight:normal;
+ text-transform:none;
+}
+
+#acct_holds_activates_table label {
+ font-weight: bold;
+ font-size: 11px;
+ text-transform:uppercase;
+ padding-right: 5px;
+}
+
+.adv_search_font {
+ font-size: 10px;
+}
+
+.search_catalog_lbl {
+ font-size: 14px;
+}
+
+.lbl1 {
+ font-size:14px;
+ font-weight:bold;
+}
+
+.lbl2 {
+ font-size:10px;
+ font-weight:normal;
+ position:relative;
+ top:3px;
+}
+
+#myopac_tabs, #adv_search_parent, #fines_payments_wrapper {
+ background: #929292;
+ border-top:1px solid #8b8b8b;
+ padding-top:5px;
+ margin-bottom:20px;
+}
+
+#adv_search_parent {
+ margin-bottom:0px;
+}
+
+#myopac_loading {
+ width:100%;
+ text-align:center;
+ padding-top:20px;
+ font-size:16px;
+ font-weight:bold;
+}
+
+.chili_link {
+ width:100px !important;
+ text-align: center !important;
+}
+
+.chili_review div.chili_link div {
+ margin: auto;
+}
+
+/* some facet styling */
+.facetClassContainer { margin: 2px; border: 1px solid #CCC; }
+.facetClassLabelContainer { border: 1px solid #CCC; }
+.facetClassLabel { font-weight: bold; text-align: center; }
+.facetFieldContainer { }
+.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 #CCC; color: gray; width: 3em; margin-right: 3px }
+.facetField { border-top: 1px solid #CCC; }
+.facetFields { padding-left: 5px; }
+.facetFieldLineValue { overflow: hidden; text-overflow: ellipsis; }
+
+#footer {
+ padding-top:5px;
+ padding-bottom: 10px;
+ color: white;
+ margin: auto;
+ width: 974px;
+ color: #afafaf;
+ font-size: 11px;
+}
+
+#footer a {
+ color: white;
+ color: #afafaf;
+}
+
+.color_4 {
+ text-transform: uppercase;
+ font-weight: bold;
+ font-size: 10px;
+}
--- /dev/null
+
+attachEvt("common", "run", advgInit);
+attachEvt("common", "locationChanged", advSyncCopyLocLink );
+
+var COOKIE_NOGROUP_RECORDS = 'grpt';
+var advSelectedOrg = null;
+
+function advgInit() {
+
+ /* XXX */
+ if( cookieManager.read(COOKIE_NOGROUP_RECORDS) || SHOW_MR_DEFAULT )
+ $('adv_group_titles').checked = true;
+
+ try{$n($('adv_global_tbody'), 'term').focus();} catch(e){}
+
+ var extras = [
+ FETCH_LIT_FORMS,
+ FETCH_ITEM_FORMS,
+ FETCH_ITEM_TYPES,
+ FETCH_AUDIENCES,
+ FETCH_BIB_LEVELS
+ ];
+
+ for( var x in extras ) {
+
+ var req = new Request(extras[x]);
+
+ if(x == 0) req.request.sel = $('adv_global_lit_form');
+ if(x == 1) req.request.sel = $('adv_global_item_form');
+ if(x == 2) req.request.sel = $('adv_global_item_type');
+ if(x == 3) req.request.sel = $('adv_global_audience');
+ if(x == 4) req.request.sel = $('adv_global_bib_level');
+
+ req.callback(advDrawBibExtras);
+ req.send();
+ }
+
+ var input = $n($('adv_global_trow'), 'term');
+ try {input.focus();} catch(e){}
+ setEnterFunc(input, advSubmitGlobal);
+
+ if(getSort() && getSortDir()) {
+ setSelector($('adv_global_sort_by'), getSort());
+ setSelector($('adv_global_sort_dir'), getSortDir());
+ if(getSort() != 'rel')
+ $('adv_global_sort_dir').disabled = false;
+ }
+
+ if(getLanguage()) setSelector($('adv_global_lang'), getLanguage());
+ if(getFacet()) {
+ var facet_val = getFacet().replace("identifier|mattype[", "");
+ facet_val = facet_val.replace("]", "");
+ setSelector($('adv_global_item_type_basic'), facet_val);
+ }
+
+ if(getAudience()) {
+ var aud = getAudience().split(/,/).join("");
+ setSelector($('adv_global_audience_basic'), aud);
+ }
+
+ advInitPubFilter();
+
+ if(getAvail())
+ $('opac.result.limit2avail').checked = true;
+
+ // not sure we want to propogate the pubdate filter,
+ // since other filters are not propogated
+
+ if(!new CGI().param(PARAM_NOPERSIST_SEARCH))
+ initSearchBoxes();
+ advSyncCopyLocLink(getLocation());
+ //if(findCurrentPage()=="advanced") { hideMe(G.ui.login.box); /*unHideMe(G.ui.login.box);*/ }
+}
+
+function advInitPubFilter() {
+ var i1 = $('adv_global_pub_date_1');
+ var i2 = $('adv_global_pub_date_2');
+ var sel = $('adv_global_pub_date_type');
+ if(getPubdBefore()) {
+ i1.value = getPubdBefore();
+ setSelector(sel, 'before');
+ } else if(getPubdAfter()) {
+ i1.value = getPubdAfter();
+ setSelector(sel, 'after');
+ } else if(getPubdBetween()) {
+ var values = getPubdBetween().split(',');
+ i1.value = values[0]
+ if(values[0] == values[1]) {
+ setSelector(sel, 'equals');
+ } else {
+ setSelector(sel, 'between');
+ i2.value = values[1];
+ unHideMe($('adv_global_pub_date_2_span'));
+ }
+ }
+}
+
+function advSyncCopyLocLink(org) {
+ // display the option to filter by copy location
+ advLocationsLoaded = false;
+ advSelectedOrg = org;
+ removeChildren($('adv_copy_location_filter_select'));
+
+ if(isTrue(findOrgType(findOrgUnit(org).ou_type()).can_have_vols())) {
+ //unHideMe($('adv_copy_location_filter_row'));
+ advLoadCopyLocations(org);
+ } else {
+ hideMe($('adv_copy_location_filter_row'));
+ }
+}
+
+function clearSearchBoxes() {
+ var rows = $('adv_global_tbody').getElementsByTagName('tr');
+ for(var t = 0; t < rows.length; t++) {
+ if($n(rows[t], 'term')) {
+ $n(rows[t], 'term').value = '';
+ setSelector($n(rows[t], 'contains'), 'contains');
+ setSelector($n(rows[t], 'type'), 'keyword');
+ }
+ }
+ try{$n(rows[0], 'term').focus();} catch(e){}
+}
+
+
+function initSearchBoxes() {
+ /* loads the compiled search from the search cookie
+ and sets the widgets accordingly */
+
+ search = cookieManager.read(COOKIE_SEARCH);
+ if(!search) return;
+ _debug("loaded compiled search cookie: " + search);
+
+ search = JSON2js(search);
+ if(!search) return;
+
+ var types = getObjectKeys(search.searches);
+
+ // if we have browser cached data, clear it before populating from cookie
+ if (search.searches[types[0]].term)
+ clearSearchBoxes();
+
+ /* pre-add the needed rows */
+ while($('adv_global_tbody').getElementsByTagName('tr').length - 1 < types.length)
+ advAddGblRow();
+
+ var rows = $('adv_global_tbody').getElementsByTagName('tr');
+
+ for(var t = 0; t < types.length; t++) {
+ var row = rows[t];
+ setSelector($n(row, 'type'), types[t]);
+ var term = search.searches[types[t]].term;
+
+ /* if this is a single -<term> search, set the selector to nocontains */
+ if(match = term.match(/^-(\w+)$/)) {
+ term = match[1];
+ setSelector($n(row, 'contains'), 'nocontains');
+ }
+ $n(row, 'term').value = term;
+ }
+}
+
+function advAddGblRow() {
+ var tbody = $("adv_global_tbody");
+ var newrow = $("adv_global_trow").cloneNode(true);
+ tbody.insertBefore(newrow, $("adv_global_addrow"));
+ var input = $n(newrow, "term");
+ input.value = "";
+ setEnterFunc(input, advSubmitGlobal);
+ $n(newrow, 'type').focus();
+}
+
+function advDrawBibExtras(r) {
+ var data = r.getResultObject();
+ var sel = r.sel;
+
+ data = data.sort( /* sort alphabetically */
+ function(a,b) {
+ if( a.value() < b.value() ) return -1;
+ if( a.value() > b.value() ) return 1;
+ return 0;
+ }
+ );
+
+ for( var d = 0; d < data.length; d++ ) {
+ var thing = data[d];
+ var opt = insertSelectorVal( sel, -1, thing.value(), thing.code() );
+ opt.setAttribute('title', thing.value());
+ }
+}
+
+function advSelToStringList(sel) {
+ var list = getSelectedList(sel);
+ var vals = [];
+ for( var i = 0; i < list.length; i++ ) {
+ var str = list[i];
+ for( var j = 0; j < str.length; j++ ) {
+ //if(str.charAt(j) == ' ') continue;
+ vals.push(str.charAt(j));
+ }
+ }
+ return vals.toString();
+}
+
+function advGetVisSelectorVals(id) {
+ var basic = id + '_basic';
+ if(! $(id).className.match(/hide_me/))
+ return advSelToStringList($(id));
+ return advSelToStringList($(basic));
+}
+
+function advSubmitGlobal() {
+
+ var sortdir = getSelectorVal($('adv_global_sort_dir'));
+ var sortby = getSelectorVal($('adv_global_sort_by'));
+
+ var litforms = advGetVisSelectorVals('adv_global_lit_form');
+ var itemforms = advGetVisSelectorVals('adv_global_item_form');
+ var itemtypes = advGetVisSelectorVals('adv_global_item_type');
+ var audiences = advGetVisSelectorVals('adv_global_audience');
+ var biblevels = advGetVisSelectorVals('adv_global_bib_level');
+ var locations = getSelectedList($('adv_copy_location_filter_select')) + '';
+ var languages = getSelectedList($('adv_global_lang')) + '';
+ var limit2avail = $('opac.result.limit2avail').checked ? 1 : ''
+
+ var searches = advBuildSearchBlob();
+ if(!searches) return;
+
+ clearSearchParams();
+
+ var depth = depthSelGetDepth();
+ if(depth==1) depth = 0;
+ var args = {};
+ args.page = MRESULT;
+ args[PARAM_ITEMFORM] = itemforms;
+ args[PARAM_ITEMTYPE] = itemtypes;
+ args[PARAM_BIBLEVEL] = biblevels;
+ args[PARAM_LITFORM] = litforms;
+ args[PARAM_AUDIENCE] = audiences;
+ args[PARAM_LANGUAGE] = languages;
+ args[PARAM_COPYLOCS] = locations;
+ //args[PARAM_SEARCHES] = js2JSON(searches); /* break these out */
+ args[PARAM_DEPTH] = depth;
+ args[PARAM_LOCATION] = depthSelGetNewLoc();
+ args[PARAM_SORT] = sortby;
+ args[PARAM_SORT_DIR] = sortdir;
+ args[PARAM_ADVTYPE] = ADVTYPE_MULTI;
+ args[PARAM_STYPE] = "";
+ args[PARAM_TERM] = searches;
+ args[PARAM_AVAIL] = limit2avail;
+ args[PARAM_FORM] = itemtypes[0];
+ args[PARAM_FACET] = itemtypes==''?'':"identifier|mattype["+itemtypes.replace(/[,]/, function(a){switch(a){case ",": return "#";}})+"]";
+ if(G.user && G.user.prefs['opac.hits_per_page']) args[PARAM_COUNT] = G.user.prefs['opac.hits_per_page'];
+
+ // publicate year filtering
+ var pub1;
+ if( (pub1 = $('adv_global_pub_date_1').value) && (''+pub1).match(/\d{4}/)) {
+ switch(getSelectorVal($('adv_global_pub_date_type'))) {
+ case 'equals':
+ args[PARAM_PUBD_BETWEEN] = pub1+','+pub1;
+ break;
+ case 'before':
+ args[PARAM_PUBD_BEFORE] = pub1;
+ break;
+ case 'after':
+ args[PARAM_PUBD_AFTER] = pub1;
+ break;
+ case 'between':
+ var pub2 = $('adv_global_pub_date_2').value;
+ if((''+pub2).match(/\d{4}/))
+ args[PARAM_PUBD_BETWEEN] = pub1+','+pub2;
+ break;
+ }
+ }
+
+ /* pubdate sorting causes a record (not metarecord) search */
+ if( sortby == SORT_TYPE_PUBDATE || !$('adv_group_titles').checked ) {
+ args.page = RRESULT;
+ args[PARAM_RTYPE] = RTYPE_MULTI;
+ }
+
+ if($('adv_group_titles').checked )
+ cookieManager.write(COOKIE_NOGROUP_RECORDS,'1',-1);
+ else
+ cookieManager.write(COOKIE_NOGROUP_RECORDS,'');
+
+ goTo(buildOPACLink(args));
+}
+
+
+function advBuildSearchBlob() {
+
+ var searches = '';
+ var tbody = $('adv_global_tbody');
+ var rows = tbody.getElementsByTagName('tr');
+
+ for( var i = 0; i < rows.length; i++ ) {
+
+ var row = rows[i];
+ if(!(row && typeof row == 'object')) continue;
+ if(!row.getAttribute('type')) continue;
+
+ var stype = getSelectorVal($n(row, 'type'));
+ var contains = getSelectorVal($n(row, 'contains'));
+ var term = $n(row, 'term').value;
+ if(!term) continue;
+
+ var string = "";
+ switch(contains) {
+ case 'contains' :
+ string += " " + term;
+ break;
+
+ case 'nocontains' : {
+ var words = term.split(" ");
+ for( var j in words )
+ string += " -" + words[j];
+ }
+ break;
+
+ case 'exact' :
+ if(term.indexOf('"') > -1) string += " " + term;
+ else string += " \"" + term + "\"";
+ break;
+ }
+ if(string) {
+ string = string.replace(/'/g,' ');
+ string = string.replace(/\\/g,' ');
+ string = string.replace(/^\s*/,'');
+ string = string.replace(/\s*$/,'');
+ //searches[stype].term = string;
+ if(searches) searches += ' ';
+ searches += stype + ':'+ string;
+ }
+ }
+
+ _debug("created search query " + searches);
+ return searches;
+}
+
+
+// retrieves the shelving locations
+var advLocationsLoaded = false;
+function advLoadCopyLocations(org) {
+ if(org == null)
+ org = advSelectedOrg;
+ var req = new Request(FETCH_COPY_LOCATIONS, org);
+ req.callback(advShowCopyLocations);
+ req.send();
+ advLocationsLoaded = true;
+}
+
+// inserts the shelving locations into the multi-select
+function advShowCopyLocations(r) {
+ var locations = r.getResultObject();
+ var sel = $('adv_copy_location_filter_select');
+ for(var i = 0; i < locations.length; i++)
+ insertSelectorVal(sel, -1, locations[i].name(), locations[i].id());
+}
+
+
--- /dev/null
+/* advanced search interface */
+
+attachEvt("common", "run", advInit);
+
+function advInit() {
+
+ __setsortsel();
+
+ unHideMe($('adv_search_parent'));
+ /* propogate these? */
+
+ depthSelInit();
+ setEnterFunc( $n( $('advanced.marc.tbody'), 'advanced.marc.value'), advMARCRun );
+ hideMe($('adv_quick_search_sidebar'));
+
+ var adv_set = true;
+ if(getAdvTerm()) $('adv_quick_text').value = getAdvTerm();
+ if(getRtype()) {
+ var rtype_val = getRtype();
+ if(rtype_val==RTYPE_MARC) rtype_val='iccn';
+ adv_set = setSelector($('adv_quick_type'), rtype_val);
+ }
+ if(getCallnumber()) {
+ adv_set = setSelector($('adv_quick_type'), 'cn');
+ $('adv_quick_text').value = getCallnumber();
+ }
+ if(!adv_set) {
+ setSelector($('adv_quick_type'), 'barcode');
+ $('adv_quick_text').value = getRid();
+ }
+
+ /*
+ if(isXUL())
+ setSelector($('adv_quick_type'), 'tcn'); */
+
+ setEnterFunc($('adv_quick_text'), advGenericSearch);
+ hideMe($('adv_marc_search_sidebar'));
+ //hideMe($('adv_global_search'));
+ advAddGblRow();
+}
+
+function advAddMARC() {
+ var newt = $('adv_sdbar_table').cloneNode(true);
+ newt.id = "";
+ unHideMe($n(newt, 'crow'));
+ $n(newt, 'advanced.marc.tag').value = "";
+ $n(newt, 'advanced.marc.subfield').value = "";
+ $n(newt, 'advanced.marc.value').value = "";
+ $('adv_marc_search_sidebar').insertBefore(newt, $('adv_marc_submit'));
+}
+
+function advMARCRun() {
+
+ clearSearchParams();
+
+ var div = $('adv_marc_search_sidebar');
+ var tbodies = div.getElementsByTagName('tbody');
+ var searches = [];
+
+ for( var i = 0; i < tbodies.length; i++ ) {
+ var tbody = tbodies[i];
+ var val = advExtractMARC(tbody);
+ if(val) searches.push(val);
+ }
+
+ if(searches.length == 0) return;
+
+ var arg = {};
+ arg.page = RRESULT;
+ arg[PARAM_FORM] = 'all';
+ arg[PARAM_RTYPE] = RTYPE_MARC;
+ arg[PARAM_OFFSET] = 0;
+ arg[PARAM_DEPTH] = depthSelGetDepth();
+ arg[PARAM_LOCATION] = depthSelGetNewLoc();
+ arg[PARAM_SEARCHES] = js2JSON(searches);
+ arg[PARAM_ADVTYPE] = ADVTYPE_MARC;
+ arg[PARAM_TERM] = "";
+
+ goTo(buildOPACLink(arg));
+}
+
+
+/* EXAMPLE => {"term":"0516011901","restrict":[{"tag":"020","subfield":"a"}]} */
+function advExtractMARC(tbody) {
+ if(!tbody) return null;
+ var term = $n(tbody, 'advanced.marc.value').value;
+ if(!term) return null;
+
+ var subfield = $n(tbody, 'advanced.marc.subfield').value;
+ if(!subfield) subfield = "_";
+
+ var tag = $n(tbody, 'advanced.marc.tag').value;
+ if(!tag) return null;
+
+ return { 'term' : term.toLowerCase(), 'restrict' : [ { 'tag' : tag, 'subfield' : subfield } ] };
+}
+
+function advGenericSearch() {
+ clearSearchParams();
+ var type = getSelectorVal($('adv_quick_type'));
+
+ var term = $('adv_quick_text').value;
+ if(!term) return;
+
+ var arg = {};
+
+ switch(type) {
+
+ case 'isbn' :
+ arg.page = RRESULT;
+ arg[PARAM_STYPE] = "";
+ arg[PARAM_TERM] = "";
+ arg[PARAM_RTYPE] = RTYPE_ISBN;
+ arg[PARAM_OFFSET] = 0;
+ arg[PARAM_ADVTERM] = term.toLowerCase();
+ break;
+
+ case 'issn' :
+ arg.page = RRESULT;
+ arg[PARAM_STYPE] = "";
+ arg[PARAM_TERM] = "";
+ arg[PARAM_ADVTERM] = term.toLowerCase();
+ arg[PARAM_OFFSET] = 0;
+ arg[PARAM_RTYPE] = RTYPE_ISSN;
+ break;
+
+ case 'tcn' :
+ arg.page = RRESULT;
+ arg[PARAM_STYPE] = "";
+ arg[PARAM_TERM] = "";
+ arg[PARAM_ADVTERM] = term;
+ arg[PARAM_OFFSET] = 0;
+ arg[PARAM_RTYPE] = RTYPE_TCN;
+ break;
+
+ case 'barcode':
+ advFindBarcode(term);
+ break;
+
+
+ case 'cn':
+ arg.page = CNBROWSE;
+ arg[PARAM_CN] = term;
+ arg[PARAM_DEPTH] = depthSelGetDepth();
+ arg[PARAM_LOCATION] = depthSelGetNewLoc();
+ break;
+
+ case 'lccn':
+ arg.page = RRESULT;
+ arg[PARAM_FORM] = 'all'
+ arg[PARAM_RTYPE] = RTYPE_MARC;
+ arg[PARAM_OFFSET] = 0;
+ arg[PARAM_DEPTH] = depthSelGetDepth();
+ arg[PARAM_LOCATION] = depthSelGetNewLoc();
+ arg[PARAM_SEARCHES] = js2JSON([{ 'term' : term.toLowerCase(),
+ 'restrict' : [ { 'tag' : '010', 'subfield' : '_' } ] }]);
+ arg[PARAM_ADVTYPE] = ADVTYPE_MARC;
+ arg[PARAM_TERM] = "";
+ break;
+
+
+ default: alert('not done');
+ }
+
+ if(arg.page) goTo(buildOPACLink(arg));
+}
+
+
+function advFindBarcode(barcode) {
+ var req = new Request(FETCH_BIB_ID_BY_BARCODE, barcode);
+ req.callback(advDrawBarcode);
+ req.request.alertEvent = false;
+ req.send();
+}
+
+function advDrawBarcode(r) {
+ titleid = r.getResultObject();
+ if(checkILSEvent(titleid)) {
+ alertId('myopac.copy.not.found');
+ return;
+ }
+ if(!titleid) return;
+ var args = {};
+ args.page = RDETAIL;
+ args[PARAM_RID] = titleid;
+ location.href = buildOPACLink(args);
+}
+
+function __setsortsel() {
+ var sel = $('adv_global_sort_by');
+ if (sel.selectedIndex == 0) {
+ $("adv_global_sort_dir").disabled = true;
+ $("adv_global_sort_dir").selectedIndex = 0;
+ } else $("adv_global_sort_dir").disabled = false;
+}
--- /dev/null
+var cnOffset = 0;
+var cnCount = 9;
+var cnBrowseCN;
+var cnBrowseOrg;
+
+if( findCurrentPage() == CNBROWSE ) {
+ attachEvt("common", "run", cnBrowseLoadSearch);
+ attachEvt( "common", "locationUpdated", cnBrowseResubmit );
+ attachEvt( "common", "depthChanged", cnBrowseResubmit );
+}
+
+
+function cnBrowseLoadSearch() {
+ unHideMe($('cn_browse'));
+ cnBrowseGo(getCallnumber(), getLocation(), getDepth());
+}
+
+
+function cnBrowseResubmit() {
+ var args = {}
+ args[PARAM_CN] = cnBrowseCN;
+ args[PARAM_DEPTH] = depthSelGetDepth();
+ args[PARAM_LOCATION] = getNewSearchLocation();
+ goTo(buildOPACLink(args));
+}
+
+
+
+function cnBrowseGo(cn, org, depth) {
+ if(depth == null) depth = getDepth();
+
+ org = findOrgUnit(org);
+ cnOffset = 0;
+
+ do {
+ var t = findOrgType(org.ou_type());
+ if( t.depth() > depth )
+ org = findOrgUnit(org.parent_ou());
+ else break;
+ } while(true);
+
+ cnBrowseOrg = org;
+ cnBrowseCN = cn;
+
+ _cnBrowseGo( cn, org );
+ appendClear($('cn_browse_where'), text(org.name()));
+}
+
+
+function _cnBrowseGo( cn, org ) {
+ var req = new Request( FETCH_CNBROWSE, cn, org.id(), cnCount, cnOffset );
+ req.callback( cnBrowseDraw );
+ req.send();
+}
+
+function cnBrowseNext() {
+ cnOffset++;
+ _cnBrowseGo( cnBrowseCN, cnBrowseOrg );
+}
+
+function cnBrowsePrev() {
+ cnOffset--;
+ _cnBrowseGo( cnBrowseCN, cnBrowseOrg );
+}
+
+
+function cnBrowseDraw( r ) {
+ var list = r.getResultObject();
+ _cnBrowseDraw(list);
+}
+
+
+var cnTbody;
+var cnRowT;
+var cnTdT;
+function _cnBrowseDraw( list ) {
+
+ if(!cnTbody) {
+ cnTbody = $('cn_tbody');
+ cnRowT = $('cn_browse_row');
+ cnTdT = cnRowT.removeChild($('cn_browse_td'));
+ cnTbody.removeChild(cnRowT);
+ }
+ removeChildren(cnTbody);
+
+ var counter = 1;
+ var currentRow = cnRowT.cloneNode(true);
+ cnTbody.appendChild(currentRow);
+
+ for( var idx in list ) {
+
+
+ var currentTd = cnTdT.cloneNode(true);
+ currentRow.appendChild(currentTd);
+
+ var td = cnTdT.cloneNode(true);
+
+ var obj = list[idx];
+ var cn = obj.cn;
+ var mods = obj.mods;
+
+ var cn_td = $n(currentTd, 'cn_browse_cn');
+ var lib_td = $n(currentTd, 'cn_browse_lib');
+ var title_td = $n(currentTd, 'cn_browse_title');
+ var author_td = $n(currentTd, 'cn_browse_author');
+ var pic_td = $n(currentTd, 'cn_browse_pic');
+
+ cn_td.appendChild(text(cn.label()));
+ lib_td.appendChild(text(findOrgUnit(cn.owning_lib()).name()));
+ cnBrowseDrawTitle(mods, title_td, author_td, pic_td);
+
+ if( counter++ % 3 == 0 ) {
+ counter = 1;
+ currentRow = cnRowT.cloneNode(true);
+ cnTbody.appendChild(currentRow);
+ }
+ }
+}
+
+
+function cnBrowseDrawTitle(mods, title_td, author_td, pic_td) {
+
+ buildTitleDetailLink(mods, title_td);
+ buildSearchLink(STYPE_AUTHOR, mods.author(), author_td);
+ pic_td.setAttribute("src", buildISBNSrc(cleanISBN(mods.isbn())));
+
+ var args = {};
+ args.page = RDETAIL;
+ args[PARAM_OFFSET] = 0;
+ args[PARAM_RID] = mods.doc_id();
+ args[PARAM_MRID] = 0;
+ pic_td.parentNode.setAttribute("href", buildOPACLink(args));
+}
+
--- /dev/null
+
+function containerDoRequest( req, callback, args ) {
+
+ if( callback ) {
+ req.callback( callback );
+ req.request.args = args;
+ req.send();
+ return null;
+ }
+
+ req.send(true);
+ return req.result();
+}
+
+
+function containerFetchAll( callback, args ) {
+ var req = new Request(
+ FETCH_CONTAINERS, G.user.session, G.user.id(), 'biblio', 'bookbag' );
+ return containerDoRequest( req, callback, args );
+}
+
+function containerFlesh( id, callback, args ) {
+ var req = new Request( FLESH_CONTAINER, G.user.session, 'biblio', id );
+ return containerDoRequest( req, callback, args );
+}
+
+function containerDelete( id, callback, args ) {
+ var req = new Request( DELETE_CONTAINER, G.user.session, 'biblio', id );
+ return containerDoRequest(req, callback, args );
+}
+
+
+function containerCreate( name, pub, callback, args ) {
+
+ var container = new cbreb();
+ container.btype('bookbag');
+ container.owner( G.user.id() );
+ container.name( name );
+ if(pub) container.pub('t');
+ else container.pub('f');
+
+ var req = new Request(
+ CREATE_CONTAINER, G.user.session, 'biblio', container );
+ return containerDoRequest( req, callback, args );
+}
+
+function containerUpdate( container, callback, args ) {
+ var req = new Request(UPDATE_CONTAINER, G.user.session, 'biblio', container);
+ return containerDoRequest(req, callback, args);
+}
+
+function containerCreateItem( containerId, target, callback, args ) {
+
+ var item = new cbrebi();
+ item.target_biblio_record_entry(target);
+ item.bucket(containerId);
+
+ var req = new Request( CREATE_CONTAINER_ITEM,
+ G.user.session, 'biblio', item );
+
+ return containerDoRequest( req, callback, args );
+}
+
+function containerRemoveItem( id, callback, args ) {
+ var req = new Request( DELETE_CONTAINER_ITEM, G.user.session, 'biblio', id );
+ return containerDoRequest( req, callback, args );
+}
--- /dev/null
+
+
+function ContentCafe(recordid) {
+ var xml = null;
+ var xhr = buildXMLRequest();
+
+ xhr.open("GET","http://contentcafe2.btol.com/ContentCafe/ContentCafe.asmx/Single?userID=KC72927&password=CC14647&key="+recordid+"&content=AvailableContent", false);
+ xhr.send(null);
+ if(xhr.responseXML && xhr.responseXML.documentElement && xhr.status == 200) xml = xhr.responseXML.documentElement;
+ //this.toString = function() { return this.marcObj.toString(); };
+ this.xml = xml;
+ this.parser = "test";
+}
\ No newline at end of file
--- /dev/null
+//** Featured Content Slider script- (c) Dynamic Drive DHTML code library: http://www.dynamicdrive.com.
+//** May 2nd, 08'- Script rewritten and updated to 2.0.
+//** June 12th, 08'- Script updated to v 2.3, which adds the following features:
+ //1) Changed behavior of script to actually collapse the previous content when the active one is shown, instead of just tucking it underneath the later.
+ //2) Added setting to reveal a content either via "click" or "mouseover" of pagination links (default is former).
+ //3) Added public function for jumping to a particular slide within a Featured Content instance using an arbitrary link, for example.
+
+//** July 11th, 08'- Script updated to v 2.4:
+ //1) Added ability to select a particular slide when the page first loads using a URL parameter (ie: mypage.htm?myslider=4 to select 4th slide in "myslider")
+ //2) Fixed bug where the first slide disappears when the mouse clicks or mouses over it when page first loads.
+
+var featuredcontentslider={
+
+//3 variables below you can customize if desired:
+ajaxloadingmsg: '',
+bustajaxcache: true, //bust caching of external ajax page after 1st request?
+enablepersist: true, //persist to last content viewed when returning to page?
+
+settingcaches: {}, //object to cache "setting" object of each script instance
+
+jumpTo:function(fcsid, pagenumber){ //public function to go to a slide manually.
+ this.turnpage(this.settingcaches[fcsid], pagenumber)
+},
+
+ajaxconnect:function(setting){
+ var page_request = false
+ if (window.ActiveXObject){ //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
+ try {
+ page_request = new ActiveXObject("Msxml2.XMLHTTP")
+ }
+ catch (e){
+ try{
+ page_request = new ActiveXObject("Microsoft.XMLHTTP")
+ }
+ catch (e){}
+ }
+ }
+ else if (window.XMLHttpRequest) // if Mozilla, Safari etc
+ page_request = new XMLHttpRequest()
+ else
+ return false
+ var pageurl=setting.contentsource[1]
+ page_request.onreadystatechange=function(){
+ featuredcontentslider.ajaxpopulate(page_request, setting)
+ }
+ document.getElementById(setting.id).innerHTML=this.ajaxloadingmsg
+ var bustcache=(!this.bustajaxcache)? "" : (pageurl.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
+ page_request.open('GET', pageurl+bustcache, true)
+ page_request.send(null)
+},
+
+ajaxpopulate:function(page_request, setting){
+ if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)){
+ document.getElementById(setting.id).innerHTML=page_request.responseText
+ this.buildpaginate(setting)
+ }
+},
+
+buildcontentdivs:function(setting){
+ var alldivs=document.getElementById(setting.id).getElementsByTagName("div")
+ for (var i=0; i<alldivs.length; i++){
+ if (this.css(alldivs[i], "contentdiv", "check")){ //check for DIVs with class "contentdiv"
+ setting.contentdivs.push(alldivs[i])
+ alldivs[i].style.display="none" //collapse all content DIVs to begin with
+ }
+ }
+},
+
+buildpaginate:function(setting){
+ this.buildcontentdivs(setting)
+ var sliderdiv=document.getElementById(setting.id)
+ var pdiv=document.getElementById("paginate-"+setting.id)
+ var phtml=""
+ var toc=setting.toc
+ var nextprev=setting.nextprev
+ if (typeof toc=="string" && toc!="markup" || typeof toc=="object"){
+ for (var i=1; i<=setting.contentdivs.length; i++){
+ phtml+='<a href="#'+i+'" class="toc">'+(typeof toc=="string"? toc.replace(/#increment/, i) : toc[i-1])+'</a> '
+ }
+ phtml=(nextprev[0]!=''? '<a href="#prev" class="prev">'+nextprev[0]+'</a> ' : '') + phtml + (nextprev[1]!=''? '<a href="#next" class="next">'+nextprev[1]+'</a>' : '')
+ pdiv.innerHTML=phtml
+ }
+ var pdivlinks=pdiv.getElementsByTagName("a")
+ var toclinkscount=0 //var to keep track of actual # of toc links
+ for (var i=0; i<pdivlinks.length; i++){
+ if (this.css(pdivlinks[i], "toc", "check")){
+ if (toclinkscount>setting.contentdivs.length-1){ //if this toc link is out of range (user defined more toc links then there are contents)
+ pdivlinks[i].style.display="none" //hide this toc link
+ continue
+ }
+ pdivlinks[i].setAttribute("rel", ++toclinkscount) //store page number inside toc link
+ pdivlinks[i][setting.revealtype]=function(){
+ featuredcontentslider.turnpage(setting, this.getAttribute("rel"))
+ return false
+ }
+ setting.toclinks.push(pdivlinks[i])
+ }
+ else if (this.css(pdivlinks[i], "prev", "check") || this.css(pdivlinks[i], "next", "check")){ //check for links with class "prev" or "next"
+ pdivlinks[i].onclick=function(){
+ featuredcontentslider.turnpage(setting, this.className)
+ return false
+ }
+ }
+ }
+ this.turnpage(setting, setting.currentpage, true)
+ if (setting.autorotate[0]){ //if auto rotate enabled
+ pdiv[setting.revealtype]=function(){
+ featuredcontentslider.cleartimer(setting, window["fcsautorun"+setting.id])
+ }
+ sliderdiv["onclick"]=function(){ //stop content slider when slides themselves are clicked on
+ featuredcontentslider.cleartimer(setting, window["fcsautorun"+setting.id])
+ }
+ setting.autorotate[1]=setting.autorotate[1]+(1/setting.enablefade[1]*50) //add time to run fade animation (roughly) to delay between rotation
+ this.autorotate(setting)
+ }
+},
+
+urlparamselect:function(fcsid){
+ var result=window.location.search.match(new RegExp(fcsid+"=(\\d+)", "i")) //check for "?featuredcontentsliderid=2" in URL
+ return (result==null)? null : parseInt(RegExp.$1) //returns null or index, where index (int) is the selected tab's index
+},
+
+turnpage:function(setting, thepage, autocall){
+ var currentpage=setting.currentpage //current page # before change
+ var totalpages=setting.contentdivs.length
+ var turntopage=(/prev/i.test(thepage))? currentpage-1 : (/next/i.test(thepage))? currentpage+1 : parseInt(thepage)
+ turntopage=(turntopage<1)? totalpages : (turntopage>totalpages)? 1 : turntopage //test for out of bound and adjust
+ if (turntopage==setting.currentpage && typeof autocall=="undefined") //if a pagination link is clicked on repeatedly
+ return
+ setting.currentpage=turntopage
+ setting.contentdivs[turntopage-1].style.zIndex=++setting.topzindex
+ this.cleartimer(setting, window["fcsfade"+setting.id])
+ setting.cacheprevpage=setting.prevpage
+ if (setting.enablefade[0]==true){
+ setting.curopacity=0
+ this.fadeup(setting)
+ }
+ if (setting.enablefade[0]==false){ //if fade is disabled, fire onChange event immediately (verus after fade is complete)
+ setting.contentdivs[setting.prevpage-1].style.display="none" //collapse last content div shown (it was set to "block")
+ setting.onChange(setting.prevpage, setting.currentpage)
+ }
+ setting.contentdivs[turntopage-1].style.visibility="visible"
+ setting.contentdivs[turntopage-1].style.display="block"
+ if (setting.prevpage<=setting.toclinks.length) //make sure pagination link exists (may not if manually defined via "markup", and user omitted)
+ this.css(setting.toclinks[setting.prevpage-1], "selected", "remove")
+ if (turntopage<=setting.toclinks.length) //make sure pagination link exists (may not if manually defined via "markup", and user omitted)
+ this.css(setting.toclinks[turntopage-1], "selected", "add")
+ setting.prevpage=turntopage
+ if (this.enablepersist)
+ this.setCookie("fcspersist"+setting.id, turntopage)
+},
+
+setopacity:function(setting, value){ //Sets the opacity of targetobject based on the passed in value setting (0 to 1 and in between)
+ var targetobject=setting.contentdivs[setting.currentpage-1]
+ if (targetobject.filters && targetobject.filters[0]){ //IE syntax
+ if (typeof targetobject.filters[0].opacity=="number") //IE6
+ targetobject.filters[0].opacity=value*100
+ else //IE 5.5
+ targetobject.style.filter="alpha(opacity="+value*100+")"
+ }
+ else if (typeof targetobject.style.MozOpacity!="undefined") //Old Mozilla syntax
+ targetobject.style.MozOpacity=value
+ else if (typeof targetobject.style.opacity!="undefined") //Standard opacity syntax
+ targetobject.style.opacity=value
+ setting.curopacity=value
+},
+
+fadeup:function(setting){
+ if (setting.curopacity<1){
+ this.setopacity(setting, setting.curopacity+setting.enablefade[1])
+ window["fcsfade"+setting.id]=setTimeout(function(){featuredcontentslider.fadeup(setting)}, 10)
+ }
+ else{ //when fade is complete
+ if (setting.cacheprevpage!=setting.currentpage) //if previous content isn't the same as the current shown div (happens the first time the page loads/ script is run)
+ setting.contentdivs[setting.cacheprevpage-1].style.display="none" //collapse last content div shown (it was set to "block")
+ setting.onChange(setting.cacheprevpage, setting.currentpage)
+ }
+},
+
+cleartimer:function(setting, timervar){
+ if (typeof timervar!="undefined"){
+ clearTimeout(timervar)
+ clearInterval(timervar)
+ if (setting.cacheprevpage!=setting.currentpage){ //if previous content isn't the same as the current shown div
+ setting.contentdivs[setting.cacheprevpage-1].style.display="none"
+ }
+ }
+},
+
+css:function(el, targetclass, action){
+ var needle=new RegExp("(^|\\s+)"+targetclass+"($|\\s+)", "ig")
+ if (action=="check")
+ return needle.test(el.className)
+ else if (action=="remove")
+ el.className=el.className.replace(needle, "")
+ else if (action=="add")
+ el.className+=" "+targetclass
+},
+
+autorotate:function(setting){
+ window["fcsautorun"+setting.id]=setInterval(function(){featuredcontentslider.turnpage(setting, "next")}, setting.autorotate[1])
+},
+
+getCookie:function(Name){
+ var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
+ if (document.cookie.match(re)) //if cookie found
+ return document.cookie.match(re)[0].split("=")[1] //return its value
+ return null
+},
+
+setCookie:function(name, value){
+ document.cookie = name+"="+value
+
+},
+
+
+init:function(setting){
+ var persistedpage=this.getCookie("fcspersist"+setting.id) || 1
+ var urlselectedpage=this.urlparamselect(setting.id) //returns null or index from: mypage.htm?featuredcontentsliderid=index
+ this.settingcaches[setting.id]=setting //cache "setting" object
+ setting.contentdivs=[]
+ setting.toclinks=[]
+ setting.topzindex=0
+ setting.currentpage=urlselectedpage || ((this.enablepersist)? persistedpage : 1)
+ setting.prevpage=setting.currentpage
+ setting.revealtype="on"+(setting.revealtype || "click")
+ setting.curopacity=0
+ setting.onChange=setting.onChange || function(){}
+ if (setting.contentsource[0]=="inline")
+ this.buildpaginate(setting)
+ if (setting.contentsource[0]=="ajax")
+ this.ajaxconnect(setting)
+}
+
+}
\ No newline at end of file
--- /dev/null
+var cpdTemplate;
+var cpdCounter = 0;
+var cpdNodes = {};
+
+function cpdBuild( contextTbody, contextRow, record, callnumber, orgid, depth, copy_location ) {
+var i = cpdCheckExisting(contextRow);
+ if(i) return i;
+
+ var counter = cpdCounter++;
+
+ /* yank out all of the template rows */
+ if(!cpdTemplate) cpdTemplate = $('rdetail_volume_details_row');
+ var templateRow = cpdTemplate.cloneNode(true);
+ templateRow.id = 'cpd_row_' + counter;
+
+ /* shove a dummy a tag in before the context previous sibling */
+ /*
+ contextTbody.insertBefore(
+ elem('a',{name:'slot_'+templateRow.id}), contextRow.previousSibling);
+ goTo('#slot_'+templateRow.id);
+ */
+
+ if(isXUL()) {
+ /* unhide before we unhide/clone the parent */
+ unHideMe($n(templateRow, 'age_protect_label'));
+ unHideMe($n(templateRow, 'create_date_label'));
+ unHideMe($n(templateRow, 'holdable_label'));
+ unHideMe($n(templateRow, 'due_date_label'));
+ }
+
+ unHideMe(templateRow);
+
+ var print = $n(templateRow,'print');
+ print.onclick = function() { cpdBuildPrintPane(
+ contextRow, record, callnumber, orgid, depth) };
+
+ var mainTbody = $n(templateRow, 'copies_tbody');
+ var extrasRow = mainTbody.removeChild($n(mainTbody, 'copy_extras_row'));
+
+ var req = new Request(FETCH_COPIES_FROM_VOLUME, record.doc_id(), callnumber, orgid);
+ req.callback(cpdDrawCopies);
+
+ req.request.args = {
+ contextTbody : contextTbody, /* tbody that holds the contextrow */
+ contextRow : contextRow, /* the row our new row will be inserted after */
+ record : record,
+ callnumber : callnumber,
+ orgid : orgid,
+ depth : depth,
+ templateRow : templateRow, /* contains everything */
+ copy_location : copy_location,
+ mainTbody : mainTbody, /* holds the copy rows */
+ extrasRow : extrasRow, /* wrapper row for all extras */
+ counter : counter
+ };
+
+ if( contextRow.nextSibling )
+ contextTbody.insertBefore( templateRow, contextRow.nextSibling );
+ else
+ contextTbody.appendChild( templateRow );
+
+ req.send();
+ _debug('creating new details row with id ' + templateRow.id);
+ cpdNodes[templateRow.id] = { templateRow : templateRow };
+ return templateRow.id;
+}
+
+
+function cpdBuildPrintWindow(record, orgid) {
+ var div = $('rdetail_print_details').cloneNode(true);
+ div.id = "";
+
+ $n(div, 'lib').appendChild(text(findOrgUnit(orgid).name()));
+ $n(div, 'title').appendChild(text(record.title()));
+ $n(div, 'author').appendChild(text(record.author()));
+ $n(div, 'edition').appendChild(text(record.edition()));
+ $n(div, 'pubdate').appendChild(text(record.pubdate()));
+ $n(div, 'publisher').appendChild(text(record.publisher()));
+ $n(div, 'phys').appendChild(text(record.physical_description()));
+
+ return div;
+}
+
+function cpdStylePopupWindow(div) {
+ var tds = div.getElementsByTagName('td');
+ for( var i = 0; i < tds.length ; i++ ) {
+ var td = tds[i];
+ var sty = td.getAttribute('style');
+ if(!sty) sty = "";
+ td.setAttribute('style', sty + 'padding: 2px; border: 1px solid #F0F0E0;');
+ if( td.className && td.className.match(/hide_me/) )
+ td.parentNode.removeChild(td);
+ }
+}
+
+
+/* builds a friendly print window for this CNs data */
+function cpdBuildPrintPane(contextRow, record, callnumber, orgid, depth) {
+
+ var div = cpdBuildPrintWindow( record, orgid);
+
+ $n(div, 'cn').appendChild(text(callnumber));
+
+ unHideMe($n(div, 'copy_header'));
+
+ var subtbody = $n(contextRow.nextSibling, 'copies_tbody');
+ var rows = subtbody.getElementsByTagName('tr');
+
+ for( var r = 0; r < rows.length; r++ ) {
+ var row = rows[r];
+ if(!row) continue;
+ var name = row.getAttribute('name');
+ if( name.match(/extras_row/) ) continue; /* hide the copy notes, stat-cats */
+ var clone = row.cloneNode(true);
+ var links = clone.getElementsByTagName('a');
+ for( var i = 0; i < links.length; i++ )
+ links[i].style.display = 'none';
+
+ $n(div, 'tbody').appendChild(clone);
+ }
+
+ cpdStylePopupWindow(div);
+ openWindow( div.innerHTML);
+}
+
+
+
+/* hide any open tables and if we've already
+ fleshed this cn, just unhide it */
+function cpdCheckExisting( contextRow ) {
+
+ var existingid;
+ var next = contextRow.nextSibling;
+
+ if( next && next.getAttribute('templateRow') ) {
+ var obj = cpdNodes[next.id];
+ if(obj.templateRow.className.match(/hide_me/))
+ unHideMe(obj.templateRow);
+ else hideMe(obj.templateRow);
+ existingid = next.id;
+ }
+
+ if(existingid) _debug('row exists with id ' + existingid);
+
+ for( var o in cpdNodes ) {
+ var node = cpdNodes[o];
+ if( existingid && o == existingid ) continue;
+ hideMe(node.templateRow);
+ removeCSSClass(node.templateRow.previousSibling, 'rdetail_context_row');
+ }
+
+ addCSSClass(contextRow, 'rdetail_context_row');
+ if(existingid) return existingid;
+ return null;
+}
+
+/*
+function cpdFetchCopies(r) {
+ var args = r.args;
+ args.cn = r.getResultObject();
+ var req = new Request(FETCH_COPIES_FROM_VOLUME, args.cn.id());
+ req.request.args = args;
+ req.callback(cpdDrawCopies);
+ req.send();
+}
+*/
+
+function cpdDrawCopies(r) {
+
+ var copies = r.getResultObject();
+ var args = r.args;
+ var copytbody = $n(args.templateRow, 'copies_tbody');
+ var copyrow = copytbody.removeChild($n(copytbody, 'copies_row'));
+
+ if(isXUL()) {
+ /* unhide before we unhide/clone the parent */
+ unHideMe($n(copyrow, 'age_protect_value'));
+ unHideMe($n(copyrow, 'create_date_value'));
+ unHideMe($n(copyrow, 'copy_holdable_td'));
+ unHideMe($n(copyrow, 'copy_due_date_td'));
+ }
+
+ for( var i = 0; i < copies.length; i++ ) {
+ var row = copyrow.cloneNode(true);
+ var copyid = copies[i];
+ var req = new Request(FETCH_FLESHED_COPY, copies[i]);
+ req.callback(cpdDrawCopy);
+ req.request.args = r.args;
+ req.request.row = row;
+ req.send();
+ copytbody.appendChild(row);
+ }
+}
+
+function cpdDrawCopy(r) {
+ var copy = r.getResultObject();
+ var row = r.row;
+
+ if (r.args.copy_location && copy.location().name() != r.args.copy_location) {
+ hideMe(row);
+ return;
+ }
+
+ $n(row, 'barcode').appendChild(text(copy.barcode()));
+ $n(row, 'location').appendChild(text(copy.location().name()));
+ $n(row, 'status').appendChild(text(copy.status().name()));
+
+ if(isXUL()) {
+ /* show the hold link */
+ var l = $n(row, 'copy_hold_link');
+ unHideMe(l);
+ l.onclick = function() {
+ holdsDrawEditor(
+ {
+ type : 'C',
+ copyObject : copy,
+ onComplete : function(){}
+ }
+ );
+ }
+
+ if( copy.age_protect() )
+ appendClear($n(row, 'age_protect_value'), text(copy.age_protect().name()));
+
+ var cd = copy.create_date();
+ cd = cd.replace(/T.*/, '');
+ $n(row, 'create_date_value').appendChild(text(cd));
+
+ var yes = $('rdetail.yes').innerHTML;
+ var no = $('rdetail.no').innerHTML;
+
+ if( isTrue(copy.holdable()) &&
+ isTrue(copy.location().holdable()) &&
+ isTrue(copy.status().holdable()) ) {
+ $n(row, 'copy_is_holdable').appendChild(text(yes));
+ } else {
+ $n(row, 'copy_is_holdable').appendChild(text(no));
+ }
+
+ var circ;
+ if( copy.circulations() ) {
+ circ = copy.circulations()[0];
+ if( circ ) {
+ $n(row, 'copy_due_date').appendChild(text(circ.due_date().replace(/[T ].*/,'')));
+ }
+ }
+
+ }
+
+ r.args.copy = copy;
+ r.args.copyrow = row;
+ cpdShowNotes(copy, r.args)
+ cpdShowStats(copy, r.args);
+
+}
+
+function _cpdExtrasInit(args) {
+
+ var newrid = 'extras_row_' + args.copy.barcode();
+ var newrow = $(newrid);
+ if(!newrow) newrow = args.extrasRow.cloneNode(true);
+ var tbody = $n(newrow, 'extras_tbody');
+ var rowt = $n(tbody, 'extras_row');
+ newrow.id = newrid;
+
+ var cr = args.copyrow;
+ var nr = cr.nextSibling;
+ var np = args.mainTbody;
+
+ /* insert the extras row into the main table */
+ if(nr) np.insertBefore( newrow, nr );
+ else np.appendChild(newrow);
+
+ var link = $n(args.copyrow, 'details_link');
+ var link2 = $n(args.copyrow, 'less_details_link');
+ var id = newrow.id;
+ link.id = id + '_morelink';
+ link2.id = id + '_lesslink';
+ unHideMe(link);
+ hideMe(link2);
+
+ link.setAttribute('href',
+ 'javascript:unHideMe($("'+link2.id+'")); hideMe($("'+link.id+'"));unHideMe($("'+newrow.id+'"));');
+
+ link2.setAttribute('href',
+ 'javascript:unHideMe($("'+link.id+'")); hideMe($("'+link2.id+'"));hideMe($("'+newrow.id+'"));');
+
+ return [ tbody, rowt ];
+}
+
+function cpdShowNotes(copy, args) {
+ var notes = copy.notes();
+ if(!notes || notes.length == 0) return;
+
+ var a = _cpdExtrasInit(args);
+ var tbody = a[0];
+ var rowt = a[1];
+
+ for( var n in notes ) {
+ var note = notes[n];
+ if(!isTrue(note.pub())) continue;
+ var row = rowt.cloneNode(true);
+ $n(row, 'key').appendChild(text(note.title()));
+ $n(row, 'value').appendChild(text(note.value()));
+ unHideMe($n(row, 'note'));
+ unHideMe(row);
+ tbody.appendChild(row);
+ }
+}
+
+
+function cpdShowStats(copy, args) {
+ var entries = copy.stat_cat_entry_copy_maps();
+ if(!entries || entries.length == 0) return;
+
+ var visibleStatCat = false;
+
+ /*
+ check all copy stat cats; if we find one that's OPAC visible,
+ set the flag and break the loop. If we've found one, or we're
+ in the staff client, build the table. if not, we return doing
+ nothing, as though the stat_cat_entry_copy_map was empty or null
+ */
+
+ for( var n in entries )
+ {
+ var entry = entries[n];
+ if(isTrue(entry.stat_cat().opac_visible()))
+ {
+ visibleStatCat = true;
+ break;
+ }
+ }
+
+ if(!(isXUL() || visibleStatCat)) return;
+
+ var a = _cpdExtrasInit(args);
+ var tbody = a[0];
+ var rowt = a[1];
+
+ for( var n in entries ) {
+ var entry = entries[n];
+ if(!(isXUL() || isTrue(entry.stat_cat().opac_visible()))) continue;
+ var row = rowt.cloneNode(true);
+ $n(row, 'key').appendChild(text(entry.stat_cat().name()));
+ $n(row, 'value').appendChild(text(entry.stat_cat_entry().value()));
+ unHideMe($n(row, 'cat'));
+ unHideMe(row);
+ tbody.appendChild(row);
+ }
+}
+
--- /dev/null
+
+attachEvt( "common", "locationChanged", updateLoc );
+attachEvt("common", "run", function(){
+ setSelector(_ds, getLocation()); _newlocation = getLocation();
+}); // sets default search to home library
+//attachEvt("common", "run", function(){setSelector(_ds, "1"); _newlocation = "1";});
+
+var _ds;
+var _libselspan;
+var _libselslink;
+var _dselspan;
+var _newlocation = null;
+
+function depthSelInit() {
+ _ds = $('depth_selector');
+ _ds.onchange = depthSelectorChanged;
+ _libselspan = $('lib_selector_span');
+ _libsellink = $('lib_selector_link');
+ _dselspan = $('depth_selector_span');
+
+ if( getLocation() == globalOrgTree.id() ) {
+ unHideMe( _libselspan );
+ _libsellink.onclick = _opacHandleLocationTagClick;
+ } else {
+ unHideMe( _dselspan );
+ //buildLocationSelector();
+ }
+}
+
+
+var orgTreeIsBuilt = false;
+function _opacHandleLocationTagClick() {
+
+ swapCanvas(G.ui.common.org_container);
+
+ if(!orgTreeIsBuilt) {
+ drawOrgTree();
+ orgTreeIsBuilt = true;
+ }
+
+}
+
+function depthSelGetDepth() {
+ var depth = parseInt(_ds.options[_ds.selectedIndex].value);
+ if(isNaN(depth)) depth = 0;
+ return depth;
+}
+
+function depthSelectorChanged() {
+ if(!_ds) return;
+ _newlocation = _ds.options[_ds.selectedIndex].value;
+}
+
+var chooseAnotherNode;
+function buildLocationSelector(newLoc) {
+
+ var loc;
+ if(newLoc != null) loc = newLoc;
+ else loc = getLocation();
+
+ if( loc == globalOrgTree.id() ) return;
+
+ var selector = _ds;
+ if(!chooseAnotherNode)
+ chooseAnotherNode = selector.removeChild(
+ selector.getElementsByTagName("option")[0]);
+ var node = chooseAnotherNode;
+ removeChildren(selector);
+
+ var location = findOrgUnit(loc);
+ var type;
+ if (location) type = findOrgType(location.ou_type());
+
+ while( type && location ) {
+ var n = node.cloneNode(true);
+ n.setAttribute("value", type.depth());
+ removeChildren(n);
+ n.appendChild(text(type.opac_label()));
+ selector.appendChild(n);
+ location = findOrgUnit(location.parent_ou());
+ if(location) type = findOrgType(location.ou_type());
+ else type = null;
+ }
+
+ selector.appendChild(node);
+}
+
+function getNewSearchDepth() { return newSearchDepth; }
+function getNewSearchLocation() { return (isNull(_newlocation)) ? LOCATION : _newlocation; }
+function depthSelGetNewLoc() { return getNewSearchLocation(); }
+
+function updateLoc(location, depth) {
+ if( depth != null ) {
+ if(depth != 0 ){
+ _libsellink.onclick = _opacHandleLocationTagClick;
+ if( location == globalOrgTree.id() ) {
+ hideMe( _dselspan );
+ unHideMe( _libselspan );
+ } else {
+ buildLocationSelector(location);
+ hideMe( _libselspan );
+ unHideMe( _dselspan );
+ }
+ }
+
+ setSelector(_ds, depth);
+ newSearchDepth = depth;
+ }
+
+ _newlocation = location;
+ runEvt('common','locationUpdated', location);
+}
--- /dev/null
+var searchBarExpanded = false;
+/* our search selector boxes */
+var _ts, _fs;
+var isFrontPage = false;
+G.evt.common.init.push(searchBarInit);
+
+/* if set by the org selector, this will be the location used the
+ next time the search is submitted */
+var newSearchLocation;
+var newSearchDepth = null;
+
+
+function searchBarInit() {
+
+ _ts = G.ui.searchbar.type_selector;
+ _fs = G.ui.searchbar.form_selector;
+
+ try{G.ui.searchbar.text.focus();}catch(e){}
+ G.ui.searchbar.text.onkeydown = function(evt) {if(userPressedEnter(evt)) { searchBarSubmit(); } };
+ _ts.onkeydown = function(evt) {if(userPressedEnter(evt)) { searchBarSubmit(); } };
+ _fs.onkeydown = function(evt) {if(userPressedEnter(evt)) { searchBarSubmit(); } };
+
+ G.ui.searchbar.submit.onclick = searchBarSubmit;
+
+ /* set up the selector objects, etc */
+ G.ui.searchbar.text.value = (getTerm() != null) ? getTerm() : "";
+ G.ui.searchbar.facets.value = (getFacet() != null) ? getFacet() : "";
+ setSelector(_ts, getStype());
+ setSelector(_fs, getForm());
+
+ depthSelInit();
+
+ if(getSearches()) {
+ var searches = JSON2js(getSearches());
+ setSelector(_fs, searches[1].term);
+ if(!G.ui.searchbar.text.value) G.ui.searchbar.text.value = searches[0].term;
+ }
+
+ if(!isFrontPage && (findCurrentPage() != MYOPAC)) {
+ attachEvt('common','depthChanged', searchBarSubmit);
+ }
+
+ if( (limit = $('opac.result.limit2avail')) ) {
+ if(getAvail()) limit.checked = true;
+ if(getSort() && getSortDir())
+ setSelector($('opac.result.sort'), getSort()+'.'+getSortDir());
+ }
+
+ if( (limit2 = $('opac.result.limit2avail2')) ) if(getAvail()) limit2.checked = true;
+}
+
+function searchBarSubmit(isFilterSort) {
+ var text = G.ui.searchbar.text.value;
+ var facet_text = isFrontPage ? '' : G.ui.searchbar.facets.value;
+ clearSearchParams();
+ if(!text || text == "" || text == "Search Keyword") return;
+ //var d = (newSearchDepth != null) ? newSearchDepth : depthSelGetDepth();
+ var d = getDepth();
+ if(isNaN(d)) d = 0;
+ var args = {};
+
+ if(SHOW_MR_DEFAULT || (isFilterSort && findCurrentPage() == MRESULT)) {
+ args.page = MRESULT;
+ } else {
+ args.page = RRESULT;
+ args[PARAM_RTYPE] = _ts.options[_ts.selectedIndex].value;
+ }
+
+ args[PARAM_STYPE] = _ts.options[_ts.selectedIndex].value;
+ args[PARAM_LOCATION] = depthSelGetNewLoc();
+ args[PARAM_DEPTH] = d;
+
+ var val = _fs.options[_fs.selectedIndex].value;
+ if(val!='') {
+ args[PARAM_SEARCHES] = '[{"term":"'+text+'","restrict":[{"tag":"245","subfield":"a"}]},{"term":"'+val+'","restrict":[{"tag":"998","subfield":"d"}]}]';
+ args[PARAM_ADVTYPE] = ADVTYPE_MARC;
+ args[PARAM_TERM] = "";
+ args[PARAM_FORM] = 'all';
+ args[PARAM_RTYPE] = RTYPE_MARC;
+ } else {
+ args[PARAM_TERM] = text;
+ args[PARAM_FACET]= facet_text;
+ }
+
+
+ if($('opac.result.limit2avail') && !arguments[1]) {
+ args[PARAM_AVAIL] = ($('opac.result.limit2avail').checked) ? 1 : '';
+ if( (val = getSelectorVal($('opac.result.sort'))) ) {
+ args[PARAM_SORT] = val.split('.')[0];
+ args[PARAM_SORT_DIR] = val.split('.')[1];
+ }
+ } else if(arguments[1]) {
+ args[PARAM_AVAIL] = (arguments[1].checked) ? 1 : '';
+ if( (val = getSelectorVal($('opac.result.sort'))) ) {
+ args[PARAM_SORT] = val.split('.')[0];
+ args[PARAM_SORT_DIR] = val.split('.')[1];
+ }
+ }
+
+ goTo(buildOPACLink(args));
+}
+
+
--- /dev/null
+var holdsOrgSelectorBuilt = false;
+var holdArgs;
+
+/*
+note: metarecord holds have a holdable_formats field that contains
+item_type(s)-item_forms(s)-language
+item_form and language are optional - if language exist and no
+item_form is specified, use item_type(s)--language
+*/
+
+var noEmailMessage;
+var noEmailMessageXUL;
+
+function hideResultsPage(bool) {
+ if(!bool) {
+ unHideMe($('result_header'));
+ unHideMe($('tehSideBar'));
+ unHideMe($('facetSidebarContainer'));
+ unHideMe($('sidebar_div'));
+ unHideMe($('statusbar'));
+ unHideMe($('tips'));
+ unHideMe($('result_table_div'));
+ unHideMe($('results_header_nav1'));
+ unHideMe($('result_info_2'));
+ unHideMe($('results_header_bar'));
+ } else {
+ hideMe($('result_header'));
+ hideMe($('tehSideBar'));
+ hideMe($('facetSidebarContainer'));
+ hideMe($('sidebar_div'));
+ hideMe($('statusbar'));
+ hideMe($('tips'));
+ hideMe($('result_table_div'));
+ hideMe($('anonListTable'));
+ hideMe($('results_header_nav1'));
+ hideMe($('result_info_2'));
+ hideMe($('results_header_bar'));
+ }
+}
+
+function holdsHandleStaff() {
+
+ // if we know the recipient's barcode, use it
+ if(xulG.patron_barcode) return _holdsHandleStaff();
+
+ swapCanvas($('xulholds_box'));
+ $('xul_recipient_barcode').focus();
+ $('xul_recipient_barcode').onkeypress = function(evt)
+ {if(userPressedEnter(evt)) { _holdsHandleStaff(); } };
+ $('xul_recipient_barcode_submit').onclick = _holdsHandleStaff;
+ $('xul_recipient_me').onclick = _holdsHandleStaffMe;
+
+ $('xul_recipient_barcode').onkeyup = function(evt) {
+ if($('xul_recipient_barcode').value == '')
+ $('xul_recipient_me').disabled = false;
+ else
+ $('xul_recipient_me').disabled = true;
+ };
+}
+
+attachEvt(
+ "common", "init", function() {
+ $('holds_frozen_thaw_input').onchange =
+ function(){holdsVerifyThawDateUI('holds_frozen_thaw_input');}
+ $('holds_frozen_thaw_input').onkeyup =
+ function(){holdsVerifyThawDateUI('holds_frozen_thaw_input');}
+ }
+);
+
+function _holdsHandleStaffMe() {
+ holdArgs.recipient = G.user;
+ holdsDrawEditor();
+}
+
+function _holdsHandleStaff() {
+ var barcode = xulG.patron_barcode || $('xul_recipient_barcode').value;
+ var user = grabUserByBarcode( G.user.session, barcode );
+
+ var evt;
+ if(evt = checkILSEvent(user)) {
+ alertILSEvent(user);
+ return;
+ }
+
+ if(!barcode || !user) {
+ alertId('holds_invalid_recipient', barcode);
+ return
+ }
+
+ grabUserPrefs(user);
+
+ holdArgs.recipient = user;
+ holdsDrawEditor();
+}
+
+
+
+/** args:
+ * record, volume, copy (ids)
+ * request, recipient, editHold (objects)
+ */
+
+function holdsDrawEditor(args) {
+ holdArgs = (args) ? args : holdArgs;
+
+ if(!noEmailMessage) noEmailMessage = $('holds_email').removeChild($('holds.no_email'));
+ if(!noEmailMessageXUL) noEmailMessageXUL = $('holds_email').removeChild($('holds.no_email.xul'));
+
+ if(isXUL() && holdArgs.recipient == null && holdArgs.editHold == null) {
+ holdsHandleStaff();
+ return;
+ }
+
+ if(!holdArgs.recipient) holdArgs.recipient = G.user;
+ if(!holdArgs.requestor) holdArgs.requestor = G.user;
+
+ if(!(holdArgs.requestor && holdArgs.requestor.session)) {
+ /*
+ alert("Please login first before placing a hold");
+ setCacheValue('returnURL',{href:window.location.href, record:holdArgs.record, type:holdArgs.type});
+ goTo(buildOPACLink({page:MYOPAC}, false, true));
+ return;
+ */
+ detachAllEvt('common','locationChanged');
+ attachEvt('common','loggedIn', holdsDrawEditor);
+ initLogin();
+ return;
+ }
+// flesh the args with the existing hold
+ if(holdArgs.editHold) holdArgsFromHold(holdArgs.editHold, holdArgs);
+
+ hideResultsPage(true);
+ holdsDrawWindow();
+}
+
+
+// updates the edit window with the existing hold's data
+function _holdsUpdateEditHold() {
+
+ var hold = holdArgs.editHold;
+ var qstats = holdArgs.status;
+
+ var orgsel = $('holds_org_selector');
+ var frozenbox = $('holds_frozen_chkbox');
+
+ setSelector(orgsel, hold.pickup_lib());
+
+ if( hold.capture_time() || qstats.status > 2 ) {
+ frozenbox.disabled = true;
+ $('holds_frozen_thaw_input').disabled = true;
+ if(qstats.status == 3) {
+ // no pickup lib changes while in-transit
+ orgsel.disabled = true;
+ } else {
+ var orgs = fetchPermOrgs('UPDATE_PICKUP_LIB_FROM_HOLDS_SHELF');
+ if(orgs[0] == -1)
+ orgsel.disabled = true;
+ }
+ } else {
+ orgsel.disabled = false;
+ frozenbox.disabled = false;
+ }
+
+
+ $('holds_submit').onclick = holdsEditHold;
+ $('holds_update').onclick = holdsEditHold;
+
+ if(hold.phone_notify()) {
+ $('holds_enable_phone').checked = true;
+ $('holds_phone').value = hold.phone_notify();
+
+ } else {
+ $('holds_phone').disabled = true;
+ $('holds_enable_phone').checked = false;
+ }
+
+ if(isTrue(hold.email_notify())) {
+ $('holds_enable_email').checked = true;
+
+ } else {
+ $('holds_enable_email').checked = false;
+ }
+
+ //$('holds_expire_time').setValue(dojo.date.stamp.fromISOString(hold.expire_time()));
+
+ /* populate the hold freezing info */
+ if(!frozenbox.disabled && isTrue(hold.frozen())) {
+ frozenbox.checked = true;
+ unHideMe($('hold_frozen_thaw_row'));
+ if(hold.thaw_date()) {
+ $('holds_frozen_thaw_input').value=dojo.date.stamp.fromISOString(hold.thaw_date());
+ } else {
+ $('holds_frozen_thaw_input').value='';
+ }
+ } else {
+ frozenbox.checked = false;
+ $('holds_frozen_thaw_input').value='';
+ hideMe($('hold_frozen_thaw_row'));
+ }
+}
+
+function holdsEditHold() {
+ var hold = holdsBuildHoldFromWindow();
+ if(!hold) return;
+ holdsUpdate(hold);
+ showCanvas();
+ if(holdArgs.onComplete)
+ holdArgs.onComplete(hold);
+}
+
+function holdArgsFromHold(hold, oargs) {
+ var args = (oargs) ? oargs : {};
+ args.type = hold.hold_type();
+ var target = hold.target();
+
+ switch(args.type) {
+ case 'M':
+ args.metarecord = target;
+ break;
+ case 'T':
+ args.record = target;
+ break;
+ case 'V':
+ args.volume = target;
+ break;
+ case 'C':
+ args.copy = target;
+ break;
+ }
+ return args;
+}
+
+function holdFetchObjects(hold, doneCallback) {
+ var args = (hold) ? holdArgsFromHold(hold) : holdArgs;
+ var type = args.type;
+
+ if( type == 'C' ) {
+ if( args.copyObject ) {
+
+ args.copy = args.copyObject.id();
+ args.volume = args.copyObject.call_number();
+ _h_set_vol(args, doneCallback);
+
+ } else {
+ var creq = new Request(FETCH_COPY, args.copy);
+
+ creq.callback(
+ function(r) {
+ var cp = r.getResultObject();
+ args.copyObject = cp;
+ args.volume = args.copyObject.call_number();
+ _h_set_vol(args, doneCallback);
+ }
+ );
+ creq.send();
+ }
+ } else {
+ if( type == 'V' ) {
+ _h_set_vol(args, doneCallback);
+
+ } else {
+ if( type == 'T' ) {
+ _h_set_rec(args, doneCallback);
+ } else {
+ _h_set_rec_descriptors(args, doneCallback);
+ }
+ }
+ }
+
+ return args;
+}
+
+function _h_set_vol(args, doneCallback) {
+
+ if( args.volumeObject ) {
+ args.volume = args.volumeObject.id();
+ args.record = args.volumeObject.record();
+ _h_set_rec(args, doneCallback);
+
+ } else {
+
+ var vreq = new Request(FETCH_VOLUME, args.volume);
+ vreq.callback(
+ function(r) {
+ var vol = r.getResultObject();
+ args.volumeObject = vol;
+ args.record = vol.record();
+ _h_set_rec(args, doneCallback);
+ }
+ );
+ vreq.send();
+ }
+}
+
+function _h_set_rec(args, doneCallback) {
+
+ if(args.recordObject)
+ args.record = args.recordObject.doc_id();
+ else
+ args.recordObject = findRecord( args.record, 'T' );
+
+ if( args.type == 'T' || args.type == 'M' )
+ _h_set_rec_descriptors(args, doneCallback);
+ else
+ if(doneCallback) doneCallback(args);
+}
+
+
+function _h_set_rec_descriptors(args, doneCallback) {
+
+ // grab the list of record desciptors attached to this records metarecord
+ if( ! args.recordDescriptors ) {
+ var params = { record: args.record };
+
+ if( ! args.record ) {
+ if( args.metarecord )
+ params = { metarecord : args.metarecord };
+ else
+ params = { metarecord : args.metarecordObject.doc_id() };
+ }
+
+ var req = new Request(FETCH_MR_DESCRIPTORS, params );
+ req.callback(
+ function(r) {
+ var data = r.getResultObject();
+ args.recordDescriptors = data.descriptors;
+ args.metarecord = data.metarecord;
+ if( args.type == 'M' && ! args.metarecordObject)
+ args.metarecordObject = findRecord(args.metarecord, 'M');
+
+ if(doneCallback) doneCallback(args);
+ }
+ );
+ req.send();
+
+ } else {
+ if(doneCallback) doneCallback(args);
+ }
+
+ return args;
+}
+
+
+
+function holdsDrawWindow(bool) {
+ swapCanvas($('holds_box'));
+ $('holds_cancel').onclick = function(){
+ hideResultsPage(false);
+ hideMe($('holds_box'));
+ unHideMe($('canvas_main'));
+ //runEvt('common', 'holdUpdateCanceled'), showCanvas()
+ runEvt('common', 'holdUpdateCanceled');
+ };
+ $('holds_submit').onclick = function(){holdsPlaceHold(holdsBuildHoldFromWindow())};
+ $('holds_update').onclick = function(){holdsPlaceHold(holdsBuildHoldFromWindow())};
+ holdFetchObjects(null,
+ function(){
+ __holdsDrawWindow();
+
+ if(holdArgs.editHold) {
+ //hideMe($('holds_submit'));
+ unHideMe($('holds_update'));
+ var req = new Request(FETCH_HOLD_STATUS,
+ G.user.session, holdArgs.editHold.id());
+ req.send(true);
+ holdArgs.status = req.result();
+ _holdsUpdateEditHold();
+ }
+ }
+ );
+}
+
+function selOrgChange(e) {
+
+ $('holds_pickup_lib').innerHTML = this.options[this.selectedIndex].text;
+}
+
+function __holdsDrawWindow() {
+
+ var rec = holdArgs.recordObject;
+ var vol = holdArgs.volumeObject;
+ var copy = holdArgs.copyObject;
+ var mr = holdArgs.metarecordObject;
+
+ rec = (rec) ? rec : mr;
+
+ if(!holdsOrgSelectorBuilt) {
+ holdsBuildOrgSelector(null,0);
+ holdsOrgSelectorBuilt = true;
+ var selector = $('holds_org_selector');
+
+ /*
+ var o_loc = findOrgUnit(getOrigLocation());
+ var t = findOrgType(o_loc.ou_type());
+ if( t.can_have_users() )
+ setSelector(selector, o_loc.id());
+ else
+ */
+ selector.onchange = selOrgChange;
+ setSelector(selector, holdArgs.recipient.home_ou());
+ }
+
+ var obj = findOrgUnit(holdArgs.recipient.home_ou());
+ $('holds_pickup_lib').innerHTML = obj.name();
+
+ /*
+ if(isXUL()) {
+ var dsel = $('holds_depth_selector');
+ unHideMe($('holds_depth_selector_row'));
+ if(dsel.getElementsByTagName('option').length == 0) {
+ var types = globalOrgTypes;
+ var depth = findOrgDepth(G.user.ws_ou());
+ iterate(types,
+ function(t) {
+ if(t.depth() > depth) return;
+ insertSelectorVal(dsel, -1, t.opac_label(), t.depth());
+ }
+ );
+ }
+ }
+ */
+
+ appendClear($('holds_recipient'), text(
+ holdArgs.recipient.family_name() + ', ' +
+ holdArgs.recipient.first_given_name()));
+ appendClear($('holds_title'), text(rec.title()));
+ appendClear($('holds_author'), text(rec.author()));
+
+ if( holdArgs.type == 'V' || holdArgs.type == 'C' ) {
+
+ unHideMe($('holds_type_row'));
+ unHideMe($('holds_cn_row'));
+ appendClear($('holds_cn'), text(holdArgs.volumeObject.label()));
+
+ if( holdArgs.type == 'V' ) {
+ unHideMe($('holds_is_cn'));
+ hideMe($('holds_is_copy'));
+
+ } else {
+ hideMe($('holds_is_cn'));
+ unHideMe($('holds_is_copy'));
+ unHideMe($('holds_copy_row'));
+ appendClear($('holds_copy'), text(holdArgs.copyObject.barcode()));
+ }
+
+ } else {
+ hideMe($('holds_type_row'));
+ hideMe($('holds_copy_row'));
+ hideMe($('holds_cn_row'));
+ }
+
+ removeChildren($('holds_format'));
+
+ var mods_formats = rec.types_of_resource();
+ var formats;
+
+ if(holdArgs.recordDescriptors)
+ formats = holdArgs.recordDescriptors[0].item_type();
+
+ if( holdArgs.type == 'T' ) {
+ var desc = grep( holdArgs.recordDescriptors,
+ function(i) {
+ return (i.record() == holdArgs.record);
+ }
+ );
+ formats = desc[0].item_type();
+ }
+
+ if( holdArgs.type == 'M' ) {
+ var data = holdsParseMRFormats(holdArgs.editHold.holdable_formats());
+ mods_formats = data.mods_formats;
+ formats = data.formats;
+ }
+
+
+ for( var i in mods_formats ) {
+ var res = mods_formats[i];
+ var img = elem("img");
+ setResourcePic(img, res);
+ $('holds_format').appendChild(img);
+ if(formats)
+ $('holds_format').appendChild(text(' '+ MARCTypeToFriendly(formats[i]) +' '));
+ else
+ $('holds_format').appendChild(text(' '+ mods_formats[i] +' '));
+ $('holds_format').appendChild(elem('br'));
+ }
+
+
+ $('holds_phone').value = (holdArgs.recipient.day_phone())?holdArgs.recipient.day_phone():"";
+ appendClear( $('holds_email'), text(holdArgs.recipient.email()));
+
+ var pref = holdArgs.recipient.prefs[PREF_HOLD_NOTIFY];
+
+ if(pref) {
+ if( ! pref.match(/email/i) ) {
+ $('holds_enable_email').checked = false;
+ } else {
+ $('holds_enable_email').checked = true;
+ }
+
+ if( ! pref.match(/phone/i) ) {
+ $('holds_phone').disabled = true;
+ $('holds_enable_phone').checked = false;
+ } else {
+ $('holds_phone').disabled = false;
+ $('holds_enable_phone').checked = true;
+ }
+ }
+
+ if(!holdArgs.recipient.email()) {
+ $('holds_enable_email').checked = false;
+ $('holds_enable_email').disabled = true;
+ var message;
+ if(isXUL()) {
+ message = noEmailMessageXUL.cloneNode(true);
+ appendClear($('holds_email'), message);
+ } else {
+ message = noEmailMessage.cloneNode(true);
+ appendClear($('holds_email'), message);
+ $('holds.no_email.my_account').setAttribute('href', buildOPACLink({page:MYOPAC},null,true));
+ }
+ unHideMe(message);
+ }
+
+ if(!$('holds_phone').value)
+ $('holds_enable_phone').checked = false;
+
+ appendClear($('holds_physical_desc'), text(rec.physical_description()));
+
+ if(holdArgs.type == 'M') hideMe($('hold_physical_desc_row'));
+
+ holdsSetFormatSelector();
+
+ $('holds_frozen_chkbox').checked = false;
+ hideMe($('hold_frozen_thaw_row'));
+
+ var interval = fetchOrgSettingDefault(holdArgs.recipient.home_ou(), 'circ.hold_expire_interval');
+ var secs = 0;
+ if(interval) {
+ secs = interval_to_seconds(interval);
+ var expire = new Date();
+ expire.setTime(expire.getTime() + Number(secs + '000'));
+ if(dijit.byId('holds_expire_time')) dijit.byId('holds_expire_time').setValue(expire);
+ }
+}
+
+function holdsParseMRFormats(str) {
+ var data = str.split(/-/);
+
+ var formats = [];
+ var mods_formats = [];
+
+ for( var i = 0; i < data[0].length; i++ ) {
+ formats.push( data[0].charAt(i) );
+ mods_formats.push( MARCFormatToMods( formats[i] ) );
+ }
+
+ formats = uniquify(formats);
+ mods_formats = uniquify(mods_formats);
+
+ return {
+ formats : formats,
+ mods_formats : mods_formats,
+ lang : data[2],
+ largeprint : data[1]
+ };
+}
+
+
+function holdsSetFormatSelector() {
+ var type = holdArgs.type;
+ if( type == 'C' || type == 'V' || holdArgs.editHold ) return;
+
+ var data = holdsGetFormats();
+ var avail_formats = data.avail_formats;
+ var sel_formats = data.sel_formats;
+ holdArgs.language = data.lang;
+
+ unHideMe($('holds_alt_formats_row_extras'));
+ var selector = $('hold_alt_form_selector');
+
+ for( var i = 0; i < avail_formats.length; i++ ) {
+ var form = avail_formats[i];
+ unHideMe(findSelectorOptByValue(selector, form));
+ }
+}
+
+
+function holdsGetFormats() {
+
+ var lang;
+ var formats = [];
+ var sformats = []; // selected formats
+
+ var type = holdArgs.type;
+ var desc = holdArgs.recordDescriptors;
+ var rec = holdArgs.record;
+ var mrec = holdArgs.metarecord;
+
+ if( type == 'T' ) {
+
+ for( var i = 0; i < desc.length; i++ ) {
+ var d = desc[i];
+ if( d.record() == holdArgs.record ) {
+ lang = d.item_lang();
+ holdArgs.myFormat = _t_f_2_format(d.item_type(), d.item_form());
+ sformats.push(holdArgs.myFormat);
+ break;
+ }
+ }
+ }
+
+ for( var i = 0; i < desc.length; i++ ) {
+ var d = desc[i];
+ if( d.item_lang() != lang ) continue;
+ formats.push( _t_f_2_format(d.item_type(), d.item_form()));
+ }
+
+ formats = uniquify(formats);
+
+ return {
+ lang : lang,
+ avail_formats : formats,
+ sel_formats : sformats
+ };
+}
+
+
+
+function _t_f_2_format(type, form) {
+ if( form == 'd' ) return 'at-d';
+ return (type == 'a' || type == 't') ? 'at' :
+ ( type == 'i' || type == 'g' || type == 'j' ) ? type : null;
+}
+
+function holdsSetSelectedFormats() {
+
+ var cn = $('holds_alt_formats_row').className;
+ if( cn && cn.match(/hide_me/) ) return;
+
+ var selector = $('hold_alt_form_selector');
+ var vals = getSelectedList(selector);
+
+ if(vals.length == 0) return;
+
+ var fstring = "";
+
+ if( contains(vals, 'at-d') ) {
+ if( contains(vals, 'at') )
+ fstring = 'at';
+ else
+ fstring = 'at-d';
+ } else {
+ if( contains(vals, 'at') )
+ fstring = 'at';
+ }
+
+ for( var i = 0; i < vals.length; i++ ) {
+ var val = vals[i];
+ if( !val.match(/at/) ) fstring = val + fstring;
+ }
+
+ if( holdArgs.language ) {
+ if( fstring.match(/-/) )
+ fstring = fstring + '-' + holdArgs.language;
+ else
+ fstring = fstring + '--' + holdArgs.language;
+ }
+ return fstring;
+}
+
+
+function holdsCheckPossibility(pickuplib, hold, recurse) {
+
+ var args = {
+ titleid : holdArgs.record,
+ volume_id : holdArgs.volume,
+ copy_id : holdArgs.copy,
+ hold_type : holdArgs.type,
+ patronid : holdArgs.recipient.id(),
+ depth : 0,
+ pickup_lib : pickuplib
+ };
+
+ if(recurse) {
+ /* if we're calling create again (recursing),
+ we know that the hold possibility check already succeeded */
+ holdHandleCreateResponse({_recurse:true, _hold:hold}, true );
+
+ } else {
+ _debug("hold possible args = "+js2JSON(args));
+
+ var req = new Request(CHECK_HOLD_POSSIBLE, G.user.session, args );
+
+ req.request.alertEvent = false;
+ req.request._hold = hold;
+ req.request._recurse = recurse;
+ req.callback(holdHandleCreateResponse);
+ req.send();
+ }
+}
+
+
+function holdsBuildOrgSelector(node, sel) {
+
+ if(!node) node = globalOrgTree;
+ if(!isTrue(node.opac_visible())) return;
+
+ var selector = sel?sel:$('holds_org_selector');
+ var index = selector.options.length;
+
+ var type = findOrgType(node.ou_type());
+ var indent = type.depth() - 1;
+ var opt = setSelectorVal( selector, index, node.name(), node.id(), null, indent );
+ if(!type.can_have_users()) {
+ opt.disabled = true;
+ addCSSClass(opt, 'disabled_option');
+ }
+
+ for( var i in node.children() ) {
+ var child = node.children()[i];
+ if(child) holdsBuildOrgSelector(child);
+ }
+}
+
+function holdsBuildHoldFromWindow() {
+
+ var org = getSelectorVal($('holds_org_selector'));
+ var node = findOrgUnit(org);
+ var ntype = findOrgType(node.ou_type());
+ if(!ntype.can_have_users()) {
+ alertId('holds_pick_good_org');
+ return;
+ }
+
+ var hold = new ahr();
+ if(holdArgs.editHold) {
+ hold = holdArgs.editHold;
+ holdArgs.editHold = null;
+ }
+
+ if( $('holds_enable_phone').checked ) {
+ var phone = $('holds_phone').value;
+ if( !phone || !phone.match(REGEX_PHONE) ) {
+ alert($('holds_bad_phone').innerHTML);
+ return null;
+ }
+ hold.phone_notify(phone);
+
+ } else {
+ hold.phone_notify("");
+ }
+
+ if( $('holds_enable_email').checked )
+ hold.email_notify(1);
+ else
+ hold.email_notify(0);
+
+ var target;
+
+ switch(holdArgs.type) {
+ case 'M':
+ target = holdArgs.metarecord; break;
+ case 'T':
+ target = holdArgs.record; break;
+ case 'V':
+ target = holdArgs.volume; break;
+ case 'C':
+ target = holdArgs.copy; break;
+ }
+
+
+
+ hold.pickup_lib(org);
+ //hold.request_lib(org);
+ hold.requestor(holdArgs.requestor.id());
+ hold.usr(holdArgs.recipient.id());
+ hold.target(target);
+ hold.hold_type(holdArgs.type);
+
+ try{var expDate = dijit.byId('holds_expire_time').getValue();} catch(e){}
+ if(expDate) {
+ var expireDate = dojo.date.stamp.toISOString(expDate);
+ expireDate = holdsVerifyThawDate(expireDate);
+ if(expireDate)
+ hold.expire_time(expireDate);
+ else
+ return;
+ }
+
+ // see if this hold should be frozen and for how long
+ if($('holds_frozen_chkbox').checked) {
+ hold.frozen('t');
+ unHideMe($('hold_frozen_thaw_row'));
+ thawDate = dojo.date.stamp.toISOString(dijit.byId('holds_frozen_thaw_input').getValue());
+ if(thawDate) {
+ thawDate = holdsVerifyThawDate(thawDate);
+ if(thawDate)
+ hold.thaw_date(thawDate);
+ else
+ return;
+ } else {
+ hold.thaw_date(null);
+ }
+ } else {
+ hold.frozen('f');
+ hold.thaw_date(null);
+ }
+
+ //check for alternate hold formats
+ var fstring = holdsSetSelectedFormats();
+ if(fstring) {
+ hold.hold_type('M');
+ hold.holdable_formats(fstring);
+ hold.target(holdArgs.metarecord);
+ }
+ return hold;
+}
+
+function holdsPlaceHold(hold, recurse) {
+ if(!hold) return;
+ swapCanvas($('check_holds_box'));
+ holdsCheckPossibility(hold.pickup_lib(), hold, recurse);
+}
+
+
+function holdHandleCreateResponse(r, recurse) {
+
+ if(!recurse) {
+ var res = r.getResultObject();
+ if(checkILSEvent(res) || res.success != 1) {
+ if(res.success != 1) {
+ alert($('hold_not_allowed').innerHTML+(!res.last_event.desc?"":"\n\nHold failure description:\n"+res.last_event.desc));
+ } else {
+ if( res.textcode == 'PATRON_BARRED' ) {
+ alertId('hold_failed_patron_barred');
+ } else {
+ alert($('hold_not_allowed').innerHTML+(!res.last_event.desc?"":"\n\nHold failure description:\n"+res.last_event.desc));
+ }
+ }
+ swapCanvas($('holds_box'));
+ return;
+ }
+ r._hold.selection_depth(res.depth);
+ }
+
+ holdCreateHold(r._recurse, r._hold);
+ hideResultsPage(false);
+}
+
+
+function holdCreateHold( recurse, hold ) {
+ var method = CREATE_HOLD;
+ if(recurse) method = CREATE_HOLD_OVERRIDE;
+ var req = new Request( method, holdArgs.requestor.session, hold );
+ req.request.alertEvent = false;
+ req.send(true);
+ var res = req.result();
+ holdProcessResult(hold, res, recurse);
+
+ showCanvas();
+
+ runEvt('common', 'holdUpdated');
+}
+
+
+function holdProcessResult( hold, res, recurse ) {
+
+ if( res && res > -1 ) {
+ alert($('holds_success').innerHTML);
+ holdArgs = null;
+ if(isXUL() && typeof xulG.opac_hold_placed == 'function')
+ xulG.opac_hold_placed(res);
+
+ } else {
+
+ if( recurse ) {
+ alert($('holds_failure').innerHTML);
+ return;
+ }
+
+ if( grep(res, function(e) { return (e.textcode == 'HOLD_EXISTS'); }) ) {
+ if( fetchPermOrgs('HOLD_EXISTS.override')[0] != -1 ) {
+ if( confirm($('hold_dup_exists_override').innerHTML) ) {
+ return holdsPlaceHold(hold, true);
+ }
+ return;
+
+ } else {
+ return alert($('hold_dup_exists').innerHTML);
+ }
+ }
+
+ if( grep(res, function(e) { return (e.textcode == 'HOLD_ITEM_CHECKED_OUT'); }) ) {
+ if( fetchPermOrgs('HOLD_ITEM_CHECKED_OUT.override')[0] != -1 ) {
+ if( confirm($('hold_checked_out_override').innerHTML) ) {
+ return holdsPlaceHold(hold, true);
+ }
+ return;
+
+ } else {
+ return alert($('hold_checked_out').innerHTML);
+ }
+ }
+
+
+ alert($('holds_failure').innerHTML);
+ }
+}
+
+
+function holdsCancel(holdid, user) {
+ if(!user) user = G.user;
+ var req = new Request(CANCEL_HOLD, user.session, holdid, /* Patron via OPAC */ 6);
+ req.send(true);
+ return req.result();
+ runEvt('common', 'holdUpdated');
+}
+
+function holdsUpdate(hold, user) {
+ if(!user) user = G.user;
+ var req = new Request(UPDATE_HOLD, user.session, hold);
+ req.send(true);
+ var x = req.result(); // cause an exception if there is one
+ runEvt('common', 'holdUpdated');
+}
+
+/* verify that the thaw date is valid and after today */
+function holdsVerifyThawDate(dateString, isGreater) {
+ thawDate = dojo.date.stamp.fromISOString(dateString);
+ if(thawDate) {
+ if(isGreater) {
+ if(dojo.date.compare(thawDate) > 0) {
+ return dojo.date.stamp.toISOString(thawDate);
+ }
+ } else {
+ return dojo.date.stamp.toISOString(thawDate);
+ }
+ }
+ return null;
+}
+
+function holdsVerifyThawDateUI(element) {
+ value = dojo.date.stamp.toISOString(dijit.byId(element).getValue());
+
+ if(!value) {
+ removeCSSClass($(element), 'invalid_field');
+ return;
+ }
+
+ if(!holdsVerifyThawDate(value, true)) {
+ addCSSClass($(element), 'invalid_field');
+ } else {
+ removeCSSClass($(element), 'invalid_field');
+ }
+}
+
+
+function editHold(h) {
+ var row = $('myopac_holds_row_'+h);
+ var objs = [];
+
+ objs['hold_pickup_lib'] = $n(row,'hold_pickup_lib');
+ objs['hold_pickup_lib_sel'] = $n(row,'hold_pickup_lib_sel');
+ objs['hold_active'] = $n(row,'hold_active');
+ objs['activate_label'] = $n(row,'activate_label');
+ objs['activate_date'] = $n(row,'activate_date');
+ objs['activate_box'] = $n(row,'activate_box');
+ objs['hold_expires_label'] = $n(row,'hold_expires_label');
+ objs['hold_expires'] = $n(row,'hold_expires');
+ objs['hold_expires_box'] = $n(row,'hold_expires_box');
+ objs['hold_active_sel'] = $n(row,'hold_active_sel');
+ objs['hold_edit_link'] = $n(row,'hold_edit_link');
+ objs['hold_save_link'] = $n(row,'hold_save_link');
+ objs['hold_cancel_link'] = $n(row,'hold_cancel_link');
+
+ for(var i in objs) unHideMe(objs[i]);
+
+ hideMe(objs['activate_date']);
+ hideMe(objs['hold_active']);
+ hideMe(objs['hold_expires']);
+ hideMe(objs['hold_pickup_lib']);
+ hideMe(objs['hold_edit_link']);
+ row.orig_bgcolor = row.style.background;
+ row.style.background= "#fcdf89";
+}
+
+function cancelHold(h) {
+ var row = $('myopac_holds_row_'+h);
+ var objs = [];
+
+ objs['hold_pickup_lib'] = $n(row,'hold_pickup_lib');
+ objs['hold_pickup_lib_sel'] = $n(row,'hold_pickup_lib_sel');
+ objs['hold_active'] = $n(row,'hold_active');
+ objs['activate_label'] = $n(row,'activate_label');
+ objs['activate_date'] = $n(row,'activate_date');
+ objs['activate_box'] = $n(row,'activate_box');
+ objs['hold_expires_label'] = $n(row,'hold_expires_label');
+ objs['hold_expires'] = $n(row,'hold_expires');
+ objs['hold_expires_box'] = $n(row,'hold_expires_box');
+ objs['hold_active_sel'] = $n(row,'hold_active_sel');
+ objs['hold_edit_link'] = $n(row,'hold_edit_link');
+ objs['hold_save_link'] = $n(row,'hold_save_link');
+ objs['hold_cancel_link'] = $n(row,'hold_cancel_link');
+
+ for(var i in objs) hideMe(objs[i]);
+
+ unHideMe(objs['hold_edit_link']);
+ unHideMe(objs['hold_pickup_lib']);
+ unHideMe(objs['holds_active']);
+ unHideMe(objs['hold_active']);
+ unHideMe(objs['activate_date']);
+ unHideMe(objs['hold_expires']);
+ if(objs['hold_expires'].innerHTML) unHideMe(objs['hold_expires_label']);
+ if(objs['activate_date'].innerHTML) unHideMe(objs['activate_label']);
+ row.style.background=row.orig_bgcolor;
+}
+
+function saveHold(h) {
+ var row = $('myopac_holds_row_'+h);
+ var hold = holdsCache[holdsCacheMap[h]].hold;
+
+ var activateDataBox = $n(row,'activate_box');
+ var expireDateBox = $n(row,'hold_expires_box');
+ var pickupLibSel = $n(row,'hold_pickup_lib_sel');
+ var activateSel = $n(row,'hold_active_sel');
+ var expireTime = dojo.date.stamp.toISOString(new Date(Date.parse(expireDateBox.value)),null);
+ var activateTime = dojo.date.stamp.toISOString(new Date(Date.parse(activateDataBox.value)),null);
+ if(parseInt(expireTime)) hold.expire_time(expireTime);
+ if(parseInt(activateTime)) hold.thaw_date(activateTime);
+ hold.frozen(activateSel.options[activateSel.selectedIndex].value);
+ hold.pickup_lib(pickupLibSel.options[pickupLibSel.selectedIndex].value)
+
+ fieldmapper.standardRequest(['open-ils.circ','open-ils.circ.hold.update'],{params:[G.user.session,hold],oncomplete:refreshHold});
+ row.style.background= isTrue(hold.frozen())?"#e5e5e5":"";
+ row.orig_bgcolor=row.style.background;
+}
+
+function updateHoldInfo(holdid,holdrow) {
+ var h = holdsCache[holdsCacheMap[holdid]].hold;
+ if(!h) return;
+ var row = holdrow?holdrow:$('myopac_holds_row_'+holdid);
+ if(!row) return;
+
+ $n(row,'hold_pickup_lib').innerHTML = findOrgUnit(h.pickup_lib()).name();
+ $n(row,'hold_active').innerHTML = isTrue(h.frozen())?"Suspended":"Active";
+
+ if(h.thaw_date()) {
+ var d = dojo.date.stamp.fromISOString(h.thaw_date());
+ $n(row, 'activate_date').innerHTML = dojo.date.locale.format(d, {selector: 'date', fullYear: true});
+ unHideMe($n(row,'activate_label'));
+ $n(row,'activate_box').value = dojo.date.locale.format(d, {selector:'date', fullYear: true});
+ }
+
+ if(h.expire_time()) {
+ var exp_date = dojo.date.stamp.fromISOString(h.expire_time());
+ $n(row, 'hold_expires').innerHTML = dojo.date.locale.format(exp_date, {selector:'date', fullYear: true});
+ unHideMe($n(row,'hold_expires_label'));
+ $n(row,'hold_expires_box').value = dojo.date.locale.format(exp_date, {selector:'date', fullYear: true});
+ }
+}
+
+function refreshHold(r) {
+ var hold = r.recv().content();
+ if(!parseInt(hold)) return;
+ updateHoldInfo(hold);
+ cancelHold(hold);
+}
--- /dev/null
+
+// constructor -
+// take docid and pull xml from server, then turn it into a JS object
+// MarcRecord.marcObj - JS object of marc data
+// MarcRecord.xml - marc XML data pulled from server
+function MarcRecord(docid) {
+ var xml = null;
+ var cgi = new CGI();
+ var xhr = buildXMLRequest();
+ var proto = (location.href.match(/^[Hh][Tt][Tt][Pp][Ss]:/))?"https://":"http://";
+
+ xhr.open("GET",proto+cgi.server_name+"/opac/extras/supercat/retrieve/marcxml/record/"+docid, false);
+ xhr.send(null);
+ if(xhr.responseXML && xhr.responseXML.documentElement && xhr.status == 200) xml = xhr.responseXML.documentElement;
+ //this.toString = function() { return this.marcObj.toString(); };
+ this.xml = xml;
+ this.marcObj = this.XML2js(this.xml);
+}
+
+/* fields - string with 1 field or array of fields to process from the marc record
+ optional args (as object):
+ container - string with dom id of container to fill with rendered data - if not present, MarcRecord.render() will return rendered code as a string instead
+ label - string with 1 dom id or array of dom ids to unhide if marc data is present
+ searchType - will turn each subfield into a searchable link using the specified search type (e.g. STYPE_KEYWORD, found in config.js)
+ showAGR - boolean value, set to true if marc field 880 data is needed for each matching field
+ showOnly - string with 1 subfield or array of subfields to process
+ skipCodes - string with 1 subfield or array of subfields to skip over
+ unlink - only valid if searchType is present - string with 1 subfield or array of subfields to NOT turn into links (will still return its data though)
+ linkText - string with 1 subfield or ordered array of subfields to check for link text, only valid if linkSrc is present, resulting fields will be turned into links using linkSrc as the href
+ linkSrc - string with 1 subfield that contains the link href for linkText
+ fGlue - if multiple matching fields exist in the marc record, join them together using fGlue.joinStr string,
+ use fGlue.startStr to add code to the start of the set of matched fields
+ use fGlue.endStr to add code to the end of the set of matched fields
+ sGlue - if mutiple subfields exist for each matched field, join them together using sGlue.joinStr sting,
+ use sGlue.startStr to add code to the start of each match field
+ use sGlue.endStr to add code to the end of each field
+
+author example:
+ MarcRecord.render(
+ ["100", "110", "111"], // fields to look for
+ {
+ "container":"rdetail_authors_inner", // DOM element to dump resulting code into (will clear the element's contents)
+ "searchType":STYPE_AUTHOR, // make each subfield a search link using search type STYPE_AUTHOR
+ "label":["rdetail_authors_link", "authors_lbl"], // unHide these DOM elements if any matching fields ("100", "110", "111") are found in the marc record
+ "sGlue":{"joinStr":" ", "endStr":"<br />"}, // join each subfield together with a space and add a <br /> element to the end
+ "showAGR":true, // if matching 880 data is present, show it - sGlue treats it as if it were a new field
+ "unlink":"d" // do NOT turn subfield "d" into a searchable link
+ }
+ );
+*/
+MarcRecord.prototype.render = function(fields, args) {
+ if(!fields) return;
+ var retVal = "";
+ var returnStr = false;
+ args = args || {};
+ if(typeof fields=="string") fields = [fields];
+ if(typeof args.label=="undefined") args.label = [];
+ if(typeof args.label=="string") args.label = [args.label];
+ if(typeof args.showOnly=="undefined") args.showOnly = [];
+ if(typeof args.showOnly=="string") args.showOnly = [args.showOnly];
+ if(typeof args.skipCodes=="undefined") args.skipCodes = [];
+ if(typeof args.skipCodes=="string") args.skipCodes = [args.skipCodes];
+ if(typeof args.unlink=="undefined") args.unlink = [];
+ if(typeof args.unlink=="string") args.unlink = [args.unlink];
+ if(typeof args.linkText=="undefined") args.linkText = [];
+ if(typeof args.linkText=="string") args.linkText = [args.linkText];
+ var cont = typeof args.container == "undefined" ? null : $(args.container);
+ if(!cont) returnStr = true;
+
+ args.fGlue = args.fGlue || {};
+ args.sGlue = args.sGlue || {};
+ args.fGlue.startStr = args.fGlue.startStr || "";
+ args.fGlue.endStr = args.fGlue.endStr || "";
+ args.sGlue.startStr = args.sGlue.startStr || "";
+ args.sGlue.endStr = args.sGlue.endStr || "";
+ args.fGlue.joinStr = args.fGlue.joinStr || "";
+ args.sGlue.joinStr = args.sGlue.joinStr || "";
+
+ for(var i in fields) {
+ var f = this.marcObj[fields[i]];
+ if(!f) continue;
+ for(var n in args.label) unHideMe($(args.label[n]));
+
+ if(args.linkSrc) args.linkText.push(args.linkSrc);
+ f.args = {};
+ f.args.showAGR = args.showAGR || false;
+ f.args.skipCodes = args.skipCodes;
+ f.args.showOnly = args.showOnly;
+ f.args.unlink = args.unlink;
+ f.args.linkText = args.linkText;
+ f.args.linkSrc = args.linkSrc || null;
+ f.args.searchType = args.searchType || null;
+ f.args.sGlue = args.sGlue;
+
+ var str = f.join(args.fGlue.joinStr);
+ str = args.fGlue.startStr + str + args.fGlue.endStr;
+
+ if(returnStr) retVal+=str;
+ else cont.innerHTML += str;
+ }
+
+ if(returnStr) return retVal;
+};
+
+// wrap each item in the array with an anchor tag for searching
+// excluding those subfields specified in 'codes'
+MarcRecord.prototype.buildSearchStr = function(arr, args, codes) {
+ for(var i in arr) {
+ var skip = false;
+ for(var n in args.unlink)
+ if(args.unlink[n]==codes[i]) skip = true;
+ if(skip) continue;
+ var args2 = {};
+ if( SHOW_MR_DEFAULT || findCurrentPage() == MRESULT ) {
+ args2.page = MRESULT;
+ } else {
+ args2.page = RRESULT;
+ args2[PARAM_RTYPE] = args.searchType;
+ }
+ args2[PARAM_OFFSET] = 0;
+ args2[PARAM_TERM] = arr[i];
+ args2[PARAM_STYPE] = args.searchType;
+ arr[i] = "<a href='"+buildOPACLink(args2).replace("'", "%27")+"'>"+arr[i]+"</a>";
+ }
+};
+
+// if field 880 exists, append its data to matching normal field
+// AGR = Alternate Graphic Representation -
+// typically used to display foreign languages
+MarcRecord.prototype.getAGRdata = function(field, args) {
+ var str = "";
+ var val = parseInt(field.split("-")[1]);
+ field = this.marcObj["880"][--val];
+ field.args = args;
+ str += field;
+ return str;
+};
+
+// toString function override for subfield objects
+MarcRecord.prototype.marcObjToStr = function() {
+ var str = "";
+ var str2 = ""; // AGR data
+ var args = this.args || this.master.marcObj[this.field].args || {"searchType":null, "linkSrc":null, "linkText":[], "unlink":[], "showOnly":[], "skipCodes":[], "showAGR":false, "sGlue":{"joinStr":"", "endStr":"", "startStr":""}};
+ var arr = [];
+ var subs = [];
+ var found = false;
+ for(var i in this.codes) {
+ var c = this.codes[i];
+ var skipCode = false;
+ for(var n in args.skipCodes) if(c==args.skipCodes[n]) skipCode = true;
+ if(skipCode) continue;
+ if(c=="6" && this[c][0].indexOf("880")>=0 && args.showAGR) str2+=this.master.getAGRdata(this[c][0], args);
+ if(c=="0" || c=="2" || c=="3" || c=="4" || c=="5" || c=="6" || c=="8") continue;
+ if(args.linkSrc && this[args.linkSrc]) {
+ var src = this[args.linkSrc][0];
+ for(var n in args.linkText) {
+ if(this[args.linkText[n]]) { arr.push("<a target='_blank' href='"+encodeURI(src)+"'>"+this[args.linkText[n]].join(args.sGlue.joinStr)+"</a>"); found = true; break; }
+ }
+ if(found) break;
+ }
+ subs.push(c);
+ if(args.showOnly.length)
+ for(var n in args.showOnly) {
+ if(args.showOnly[n]==c) arr = arr.concat(this[c]);
+ }
+ else arr = arr.concat(this[c]);
+ }
+
+ if(args.searchType) this.master.buildSearchStr(arr, args, subs);
+ str += arr.join(args.sGlue.joinStr);
+ str = args.sGlue.startStr + str + args.sGlue.endStr;
+ return str+str2;
+};
+
+/* marc XML to JS object conversion function
+ resulting object will look similar to:
+ MarcRecord.marcObj = {
+ "245":[
+ {"a":["Title of item"], "c":["More title data"]},
+ {"a":["Another 245 field"], "c":["More title data"]}
+ ],
+
+ "100":[
+ {"a":["Author", "Author last name"], "b":["Author life span"]},
+ {"a":["Author 2", "Author2 last name"], "b":["Author2 life span"]}
+ ]
+ }
+*/
+MarcRecord.prototype.XML2js = function(parent) {
+ var marc = {};
+ var nodes = parent.childNodes || [];
+ // field-level (and master) object augmentation
+ //marc.toString = this.marcObjToStr2;
+ marc.master = this; // link back to global parent object
+
+ for(var i=0; i<nodes.length; i++) {
+ var obj = nodes[i];
+ if(obj.hasChildNodes()) {
+ var tag = (obj.nodeName=="datafield")?obj.getAttribute("tag"):null;
+ if(obj.nodeName=="datafield") {
+ if(!marc[tag]) marc[tag] = [];
+ var subfields = {"codes":[], "order":[]};
+ // subfield object augmentation
+ subfields.toString = this.marcObjToStr;
+ subfields.master = this; // link back to global parent object
+ subfields.field = tag;
+
+ var hasSubs = {};
+ for(var n=0; n<obj.childNodes.length; n++) {
+ var child = obj.childNodes[n];
+ if(child.nodeName=="subfield") {
+ var code = child.getAttribute("code");
+ if(!subfields[code]) subfields[code] = [];
+ if(child && child.childNodes && child.childNodes[0])
+ subfields[code].push(child.childNodes[0].textContent || child.childNodes[0].text); // IE check
+ if(!hasSubs[code]) subfields.codes.push(code);
+ subfields.order.push(code);
+ hasSubs[code] = true;
+ }
+ }
+ marc[tag].push(subfields);
+ }
+ if(!tag) marc = this.XML2js(obj);
+ }
+ }
+ return marc;
+};
--- /dev/null
+var searchBarExpanded = false;
+/* our search selector boxes */
+var _ts, _fs;
+var isFrontPage = false;
+G.evt.common.init.push(searchBarInit);
+
+/* if set by the org selector, this will be the location used the
+ next time the search is submitted */
+var newSearchLocation;
+var newSearchDepth = null;
+
+
+function searchBarInit() {
+
+ _ts = G.ui.searchbar.type_selector;
+ _fs = G.ui.searchbar.form_selector;
+
+ try{G.ui.searchbar.text.focus();}catch(e){}
+ G.ui.searchbar.text.onkeydown = function(evt) {if(userPressedEnter(evt)) { searchBarSubmit(); } };
+ _ts.onkeydown = function(evt) {if(userPressedEnter(evt)) { searchBarSubmit(); } };
+ _fs.onkeydown = function(evt) {if(userPressedEnter(evt)) { searchBarSubmit(); } };
+
+ G.ui.searchbar.submit.onclick = searchBarSubmit;
+
+ /* set up the selector objects, etc */
+ G.ui.searchbar.text.value = (getTerm() != null) ? getTerm() : "";
+ G.ui.searchbar.facets.value = (getFacet() != null) ? getFacet() : "";
+ setSelector(_ts, getStype());
+ setSelector(_fs, getForm());
+
+ depthSelInit();
+
+ if(getSearches()) {
+ var searches = JSON2js(getSearches());
+ setSelector(_fs, searches[1].term);
+ if(!G.ui.searchbar.text.value) G.ui.searchbar.text.value = searches[0].term;
+ }
+
+ if(!isFrontPage && (findCurrentPage() != MYOPAC)) {
+ attachEvt('common','depthChanged', searchBarSubmit);
+ }
+
+ if( (limit = $('opac.result.limit2avail')) ) {
+ if(getAvail()) limit.checked = true;
+ if(getSort() && getSortDir())
+ setSelector($('opac.result.sort'), getSort()+'.'+getSortDir());
+ }
+
+ if( (limit2 = $('opac.result.limit2avail2')) ) if(getAvail()) limit2.checked = true;
+}
+
+function searchBarSubmit(isFilterSort) {
+ var text = G.ui.searchbar.text.value;
+ var facet_text = isFrontPage ? '' : G.ui.searchbar.facets.value;
+ clearSearchParams();
+ if(!text || text == "" || text == "Search Keyword") return;
+ //var d = (newSearchDepth != null) ? newSearchDepth : depthSelGetDepth();
+ var d = getDepth();
+ if(isNaN(d)) d = 0;
+ var args = {};
+
+ if(SHOW_MR_DEFAULT || (isFilterSort && findCurrentPage() == MRESULT)) {
+ args.page = MRESULT;
+ } else {
+ args.page = RRESULT;
+ args[PARAM_RTYPE] = _ts.options[_ts.selectedIndex].value;
+ }
+
+// The following commented-out code does not do what it is apparently
+// intended to do and has no effect on search other than causing load
+/*
+ args[PARAM_STYPE] = _ts.options[_ts.selectedIndex].value;
+ args[PARAM_LOCATION] = depthSelGetNewLoc();
+ args[PARAM_DEPTH] = d;
+
+ var val = _fs.options[_fs.selectedIndex].value;
+ if(val!='') {
+ args[PARAM_SEARCHES] = '[{"term":"'+text+'","restrict":[{"tag":"245","subfield":"a"}]},{"term":"'+val+'","restrict":[{"tag":"998","subfield":"d"}]}]';
+ args[PARAM_ADVTYPE] = ADVTYPE_MARC;
+ args[PARAM_TERM] = "";
+ args[PARAM_FORM] = 'all';
+ args[PARAM_RTYPE] = RTYPE_MARC;
+ } else {
+ args[PARAM_TERM] = text;
+ args[PARAM_FACET]= facet_text;
+ }
+*/
+
+ args[PARAM_STYPE] = _ts.options[_ts.selectedIndex].value;
+ args[PARAM_TERM] = text;
+ args[PARAM_FACET] = facet_text;
+ args[PARAM_LOCATION] = depthSelGetNewLoc();
+ args[PARAM_DEPTH] = d;
+ args[PARAM_FORM] = _fs.options[_fs.selectedIndex].value;
+
+ if($('opac.result.limit2avail') && !arguments[1]) {
+ args[PARAM_AVAIL] = ($('opac.result.limit2avail').checked) ? 1 : '';
+ if( (val = getSelectorVal($('opac.result.sort'))) ) {
+ args[PARAM_SORT] = val.split('.')[0];
+ args[PARAM_SORT_DIR] = val.split('.')[1];
+ }
+ } else if(arguments[1]) {
+ args[PARAM_AVAIL] = (arguments[1].checked) ? 1 : '';
+ if( (val = getSelectorVal($('opac.result.sort'))) ) {
+ args[PARAM_SORT] = val.split('.')[0];
+ args[PARAM_SORT_DIR] = val.split('.')[1];
+ }
+ }
+
+ goTo(buildOPACLink(args));
+}
+
+
--- /dev/null
+var anonListCache;
+var webCacheKey;
+var userVitalStats;
+
+function opac_init() {
+ var advLink = getId("home_adv_search_link");
+ if(advLink) advLink.setAttribute("href", buildOPACLink({page:ADVANCED}));
+ getId("home_myopac_link").setAttribute("href", buildOPACLink({page:MYOPAC}, false, true));
+ getId("myopac_link").setAttribute("href", buildOPACLink({page:MYOPAC}, false, true));
+ getOrgs();
+
+ var u = grabUser();
+ if(u) {
+ unHideMe($('dash_wrapper'));
+ //alert(fetchOrgSettingDefault(G.user.home_ou(), 'auth.persistent_login_interval'));
+ try {
+ var stats = fieldmapper.standardRequest(['open-ils.actor', 'open-ils.actor.user.opac.vital_stats'], {async:false, params:[u.session]});
+ } catch(e){}
+ userVitalStats = stats;
+ if(!stats) return;
+
+ var dashfines = $('dash_fines');
+ if(stats.fines.balance_owed > 0) {
+ dashfines.style.color = "#f41d36";
+ dashfines.innerHTML = "$"+parseFloat(stats.fines.balance_owed).toFixed(2)
+ } else {
+ dashfines.style.fontWeight="normal";
+ dashfines.innerHTML = "No";
+ }
+ $('dash_user').innerHTML = u.first_given_name()+' '+u.family_name();
+ $('dash_checked').innerHTML = stats.checkouts.out+stats.checkouts.overdue;
+ $('dash_holds').innerHTML = stats.holds.total;
+ $('dash_pickup').innerHTML = stats.holds.ready;
+ } else unHideMe($('your-acct-login'));
+}
+
+function mySuperInitFunction() {
+ G.ui.common.now_searching = elem('div');
+ webCacheKey = cookieManager.read('sessionID');
+ var list = getCacheValue('anonListCache');
+ anonListCache = isTrue(list)?list:[];
+ if(anonListCache.length) try { unHideMe($('cacheListLink')); } catch(e){}
+
+ /* overkill
+ if(G.user && G.user.prefs[PREF_DEF_LOCATION]!="1") {
+ G.user.prefs[PREF_DEF_LOCATION]="1";
+ LOCATION = "1";
+ commitUserPrefs();
+ setSelector($('depth_selector'), getLocation());
+ _newlocation = getLocation();
+ }
+ */
+}
+
+function setCacheValue(field, value, timeout) {
+ if(!timeout) timeout = '30m';
+ var key = fieldmapper.standardRequest(['open-ils.actor','open-ils.actor.anon_cache.set_value'],{async:false, params:[webCacheKey, field, value]});
+ if(!isTrue(webCacheKey)) {
+ webCacheKey = key;
+ cookieManager.write('sessionID', webCacheKey, timeout);
+ }
+ return key;
+}
+
+function getCacheValue(field) {
+ if(!isTrue(webCacheKey)) return null;
+ var val = fieldmapper.standardRequest(['open-ils.actor','open-ils.actor.anon_cache.get_value'], {async:false, params:[webCacheKey, field]});
+ return val;
+}
+
+function isInAnonList(id) {
+ for(var i in anonListCache) {
+ if(anonListCache[i] == id) return true;
+ }
+ return false;
+}
+
+var isCacheListDrawn = false;
+var anonListParent;
+var anonListTemp;
+function showCachedList() {
+ if(grabUser()) goTo(buildOPACLink({page:MYOPAC, 'acctpage':6}, false, true));
+ if(!anonListCache.length) {try { hideResultsPage(); } catch(e) {} hideMe($('anonListTable')); hideMe($('cacheListLink')); return;}
+ try { hideResultsPage(true); } catch(e) {}
+ unHideMe($('anonListTable'));
+ if(!isCacheListDrawn) fieldmapper.standardRequest(["open-ils.search","open-ils.search.biblio.record.mods_slim.retrieve"],{async:true, params:[anonListCache], oncomplete:drawCacheList});
+}
+
+function drawCacheList(r) {
+ isCacheListDrawn = true;
+ var bibs = r.recv().content();
+ if(!anonListParent) anonListParent = $('anonListParent');
+ if(!anonListTemp) anonListTemp = anonListParent.removeChild($('anonListTemp'));
+ removeChildren(anonListParent);
+ $('anon_selector').checked = false;
+
+ if(grabUser()) {
+ unHideMe($('holdsCacheSel'));
+ setSelector($('holdsCacheSel'), grabUser().home_ou());
+ }
+
+ for(var i in bibs) {
+ var row = anonListTemp.cloneNode(true);
+ $n(row, 'anon_selector').doc_id = bibs[i].doc_id();
+ $n(row, 'curr_row').innerHTML = parseInt(i)+1;
+ $n(row, 'title').innerHTML = bibs[i].title();
+ anonListParent.appendChild(row);
+ }
+}
+
+function createBibHoldObject(org) {
+ if(!G.user) return null;
+ if(!org) org = G.user.home_ou();
+
+ var node = findOrgUnit(org);
+ var ntype = findOrgType(node.ou_type());
+ if(!ntype.can_have_users()) return null;
+
+ var hold = new ahr();
+ var interval = fetchOrgSettingDefault(G.user.home_ou(), 'circ.hold_expire_interval');
+
+ if(interval) {
+ var secs = interval_to_seconds(interval);
+ var expire = new Date();
+ expire.setTime(expire.getTime() + Number(secs + '000'));
+ var expireDate = holdsVerifyThawDate(dojo.date.stamp.toISOString(expire));
+ if(expireDate) hold.expire_time(expireDate);
+ }
+
+ hold.phone_notify("");
+ hold.email_notify(0);
+ hold.pickup_lib(org);
+ hold.usr(G.user.id());
+ hold.hold_type("T");
+ hold.frozen('f');
+ hold.thaw_date(null);
+
+ return hold;
+}
+
+function batchHoldMyList(org, parent) {
+ if(!grabUser()) return;
+ if(!org) G.user.home_ou();
+ if(!parent) parent = $('myopac_bookbag_div');
+
+ var nodes = dojo.query('input[name=list_action_chbx]', parent).filter(function(node, index){ return node.checked; });
+ if(!nodes.length) return;
+ var arr = [];
+ nodes.forEach(function(node, index){ arr.push(node.getAttribute("recordid")); });
+ var error = {err:""};
+ var resp = placeBatchHold(arr, org, error);
+ if(resp == -1) alert("Unable to place holds"); else alert(resp+" hold"+(resp==1?"":"s")+" placed successfully\n\n"+error.err);
+
+}
+
+function placeBatchHold(ids, org, error) { // array of bib IDs, pickup lib (optional), error msgs from holds (optional)
+ if(!grabUser() || !ids.length) return -1;
+ if(!org) org = G.user.home_ou();
+
+ var str = "";
+ var success = -1;
+ var errCount = 0;
+
+ dojo.forEach(ids,
+ function(target) {
+ // first see if the hold is permitted
+ var hold = createBibHoldObject(org);
+ hold.target(target);
+ var test = {titleid: hold.target(), hold_type: "T", patronid: G.user.id(), depth: 0, pickup_lib: org}
+
+ var resp = fieldmapper.standardRequest(
+ ['open-ils.circ','open-ils.circ.title_hold.is_possible'],
+ { async:false,
+ params:[G.user.session, test]
+ }
+ );
+
+ if(!resp.success) {
+ str += target + ": " + (resp.last_event.desc ? resp.last_event.desc : resp.last_event.textcode) + "\n";
+ errCount++;
+ return;
+ }
+
+ var resp2 = fieldmapper.standardRequest(
+ ['open-ils.circ','open-ils.circ.holds.create'],
+ { async:false,
+ params:[grabUser().session, hold]
+ }
+ );
+
+ if(typeof(resp2) == 'object') {
+ if(dojo.isArray(resp2)) resp2 = resp2[0];
+ str += target + ": " + (resp2.desc || '') +"\n";
+ errCount++;
+ } else {
+ success++;
+ }
+ }
+ );
+
+ if(str != "") error.err+=errCount+" hold"+(errCount==1?"":"s")+" not placed successfully\n"+str;
+ return ++success;
+
+ /*
+ // Previous batch implementation, which doesn't work because the patron could exceed
+ // max holds during batch creation, after the initial permit test...
+
+ var holds = [];
+ var chkArr = [];
+ for(var i=0; i<ids.length; i++) {
+ holds[i] = createBibHoldObject(org);
+ holds[i].target(ids[i]);
+ chkArr.push({titleid: ids[i], volume_id: undefined, copy_id: undefined, hold_type: "T", patronid: G.user.id(), depth: 0, pickup_lib: org});
+ }
+
+
+ var resp = fieldmapper.standardRequest(['open-ils.circ','open-ils.circ.title_hold.is_possible.batch.atomic'], {async:false, params:[grabUser().session, chkArr]});
+
+ var str = "";
+ var errCount = 0;
+ var flag = false;
+ for(var n in resp) {
+ if(!resp[n].success) {
+ flag = true;
+ str+=ids[n]+": "+(resp[n].last_event.desc==""?resp[n].last_event.textcode:resp[n].last_event.desc)+"\n";
+ errCount++;
+ }
+ }
+
+ if(str != "") error.err+=errCount+" hold"+(errCount==1?"":"s")+" not placed successfully\n"+str;
+ if(flag) return 0;
+
+ var resp2 = fieldmapper.standardRequest(['open-ils.circ','open-ils.circ.holds.create.batch.atomic'], {async:false, params:[grabUser().session, holds]});
+ var count = -1;
+ for(var t in resp2) {
+ if(typeof(resp2[t]) != "object") count++; else {
+ str+=ids[t]+": "+resp2[t][0].desc+"\n";
+ errCount++;
+ }
+ }
+ if(str != "") error.err+=errCount+" holds not placed successfully\n"+str;
+ return ++count;
+ */
+}
+
+function placeHoldOnCache() {
+ //holdsDrawWindow(true);
+ var holdsArr = [];
+ dojo.query('input[name=anon_selector]',$('anonListParent')).filter(function(node, index){
+ if(node.checked) holdsArr.push(node.doc_id+'');
+ });
+
+ if(!holdsArr.length) return;
+ setCacheValue('saveAnonCache', holdsArr);
+ goTo(buildOPACLink({page:MYOPAC}, false, true));
+}
+
+function delSelCache(parent, name) {
+ if(!parent) parent = $('anonListParent');
+ if(!name) name = 'anon_selector';
+ anonListCache = [];
+ var found = false;
+ var nodes = dojo.query('input[name='+name+']',parent);
+ if(!nodes.length) nodes = dojo.query('.'+name,parent);
+ nodes.forEach(function(node, index){
+ if(!node.checked) anonListCache.push(node.doc_id); else {
+ found = true;
+ var holdsLink = $n($('result_table_template_'+node.doc_id), 'result_my_list_link');
+ if(holdsLink) {
+ removeChildren(holdsLink);
+ holdsLink.innerHTML = '';
+ holdsLink.appendChild(elem('img', {src:'/opac/skin/kcls/graphics/add_mylist.gif'}, null));
+ holdsLink.title = "Add to my list";
+ }
+ }
+ });
+
+ if(found) {
+ isCacheListDrawn = false;
+ setCacheValue('anonListCache', anonListCache);
+ if(name=='anon_selector') showCachedList();
+ }
+}
+
+String.prototype.trim = function() {
+ return this.replace(/^\s+|\s+$/g,"");
+}
+String.prototype.ltrim = function() {
+ return this.replace(/^\s+/,"");
+}
+String.prototype.rtrim = function() {
+ return this.replace(/\s+$/,"");
+}
+
+
+//////////////////////
+//Stephen Chapman
+document.getElementsByClassName = function(cl) {
+var retnode = [];
+var myclass = new RegExp('\\b'+cl+'\\b');
+var elems = document.getElementsByTagName('*');
+for (var i = 0; i < elems.length; i++) {
+var classes = elems[i].className;
+if (myclass.test(classes)) retnode.push(elems[i]);
+}
+return retnode;
+};
+
+$c = document.getElementsByClassName;
+////////////////////////////////////////////////////////////////////////
+
+function getOrgs() {
+ var tree = $('depth_selector');
+ buildOrgSel(tree, globalOrgTree, 0);
+ setSelector(tree, getLocation());
+ //setSelector(tree, "1");
+}
+
+function swapTabs(el) {
+ if(!el) return;
+ var tabs = dojo.query("a",el.parentNode.id);
+ for(var n=0; n< tabs.length;n++) {
+ var i = tabs[n];
+ if(i==el) {
+ unHideMe($(i.rel));
+ i.style.background="url('/opac/skin/kcls/graphics/"+i.id+"_on.gif') no-repeat bottom";
+ } else {
+ hideMe($(i.rel));
+ i.style.background="url('/opac/skin/kcls/graphics/"+i.id+"_off.gif') no-repeat bottom";
+ }
+ }
+}
+
+// walk the marc record dom - returns a concatenated string of the requested marc subfields
+// depth-first recursive function
+function walkXML(xml,field,subfield) {
+ if(!xml || !field || !subfield) return "";
+ var nodes = (xml.childNodes)?xml.childNodes:null;
+ if(!nodes) return "";
+ var str = "";
+
+ for(var i=0; i<nodes.length; i++) {
+ var obj = nodes[i];
+ if(obj.hasChildNodes()) {
+ var tag = (obj.nodeName=="datafield")?obj.getAttribute("tag"):"";
+ if(tag==field) {
+ for(var n=0; n<obj.childNodes.length; n++){
+ var child = obj.childNodes[n];
+ var code = (child.nodeName=="subfield")?child.getAttribute("code"):"";
+ if(code==subfield) str += (child.textContent)?child.textContent:child.text; // IE check
+ }
+ }
+ str += walkXML(obj,field,subfield);
+ }
+ }
+ return str;
+}
+
+// returns the requested marc data or passes it to callback if present
+// callback arg is optional
+function getMarcData(docid, field, subfield, callback) {
+ if(!docid || !field || !subfield) return "";
+ var cgi = new CGI();
+ var xhr = buildXMLRequest();
+ var proto = (location.href.match(/^[Hh][Tt][Tt][Pp][Ss]:/))?"https://":"http://";
+
+ if(typeof(callback)=="function") {
+ xhr.onreadystatechange = function() {
+ if(xhr.readyState==4 && xhr.status == 200) callback(walkXML(xhr.responseXML.documentElement,field.toLowerCase(),subfield.toLowerCase()), docid);
+ }
+ }
+
+ xhr.open("GET",proto+cgi.server_name+"/opac/extras/supercat/retrieve/marcxml/record/"+docid,((callback)?true:false));
+ xhr.send(null);
+
+ if(typeof(callback)!="function" && xhr.status == 200) {
+ return walkXML(xhr.responseXML.documentElement,field.toLowerCase(),subfield.toLowerCase());
+ } else return "";
+}
+
+function setFormatIcon(imgEl, type) {
+ if(!imgEl) return false;
+ if(!type) { hideMe(imgEl); return false; }
+ var img = "";
+
+ switch(type.toLowerCase()) {
+ case "a": img="media_book.png"; break;
+ case "b": img="media_magazines.png"; break;
+ case "c": img="media_printedmusic.jpg"; break;
+ case "d": img="media_microform.jpg"; break;
+ case "e": img="media_equipment.png"; break;
+ case "f": img="media_films.png"; break;
+ case "g": img="media_films.png"; break;
+ case "h": img="media_dvd.jpg"; break;
+ case "i": img="media_bookoncassette.jpg"; break;
+ case "j": img="media_musiccd.png"; break;
+ case "k": img="media_musiccassette.jpg"; break;
+ case "l": img="media_musicrecord.jpg"; break;
+ case "m": img="media_software.jpg"; break;
+ case "n": img="media_bookoncd.png"; break;
+ case "o": img="media_kit.jpg"; break;
+ case "p": img="media_newspaper.jpg"; break;
+ case "q": img="media_largeprint.jpg"; break;
+ case "r": img="media_3dobject.jpg"; break;
+ case "s": img="media_slide.jpg"; break;
+ case "t": img="media_online.jpg"; break;
+ case "u": img="media_eaudio.jpg"; break;
+ case "v": img="media_ebooktext.png"; break;
+ case "w": img="media_eaudio.png"; break;
+ case "x": img="media_downloadmusic.png"; break;
+ case "y": img="media_downloadvideo.jpg"; break;
+ case "z": img="media_map.jpg"; break;
+ case "2": img="media_cassettewithbook.png"; break;
+ case "5": img="media_cdwithbook.png"; break;
+ }
+
+ if(img) {
+ imgEl.title = get998dValue(type);
+ dojo.attr(imgEl, "src","/opac/skin/kcls/graphics/"+img);
+ dojo.attr(imgEl, "alt", get998dValue(type));
+ } else { hideMe(imgEl); return false; }
+
+ unHideMe(imgEl);
+ return true;
+}
+
+function get998dValue(code) {
+ if(!code) code = "";
+ code = code.toLowerCase();
+ var Label = "";
+
+ switch(code) {
+ case "a": Label = "Book"; break;
+ case "i": Label = "Book on cassette"; break;
+ case "n": Label = "Book on CD"; break;
+ case "x": Label = "Download music"; break;
+ case "y": Label = "Download video"; break;
+ case "h": Label = "DVD"; break;
+ case "w": Label = "eBook - Audio"; break;
+ case "v": Label = "eBook - Text"; break;
+ case "e": Label = "Equipment"; break;
+ case "f": Label = "Films"; break;
+ case "o": Label = "Kit"; break;
+ case "q": Label = "Large print"; break;
+ case "b": Label = "Magazine"; break;
+ case "d": Label = "Microform"; break;
+ case "k": Label = "Music cassette"; break;
+ case "j": Label = "Music CD"; break;
+ case "l": Label = "Music LP"; break;
+ case "p": Label = "Newspaper"; break;
+ case "t": Label = "Online"; break;
+ case "u": Label = "Player"; break;
+ case "c": Label = "Printed music"; break;
+ case "2": Label = "Read along with cassette"; break;
+ case "5": Label = "Read along with CD"; break;
+ case "c": Label = "Scores"; break;
+ case "m": Label = "Software"; break;
+ case "g": Label = "Video"; break;
+ case "r": Label = "3-D Object"; break;
+ case "z": Label = "Map"; break;
+ case "s": Label = "Slide set"; break;
+ }
+ return Label;
+}
+
+function mapLibUrl(lib) {
+ var url = "";
+ switch(lib) {
+ case "1489": url = "http://www.kcls.org/algonapacific/"; break;
+ case "1490": url = "http://www.kcls.org/auburn/"; break;
+ case "1492": url = "http://www.kcls.org/bellevue/"; break;
+ case "1491": url = "http://www.kcls.org/blackdiamond/"; break;
+ case "1493": url = "http://www.kcls.org/bothell/"; break;
+ case "1494": url = "http://www.kcls.org/boulevardpark/"; break;
+ case "1495": url = "http://www.kcls.org/burien/"; break;
+ case "1496": url = "http://www.kcls.org/carnation/"; break;
+ case "1497": url = "http://www.kcls.org/covington/"; break;
+ case "1502": url = "http://www.kcls.org/desmoines/"; break;
+ case "1503": url = "http://www.kcls.org/duvall/"; break;
+ case "1508": url = "http://www.kcls.org/fairwood/"; break;
+ case "1506": url = "http://www.kcls.org/fallcity/"; break;
+ case "1509": url = "http://www.kcls.org/federalway/"; break;
+ case "1505": url = "http://www.kcls.org/320th/"; break;
+ case "1507": url = "http://www.kcls.org/foster/"; break;
+ case "1513": url = "http://www.kcls.org/issaquah/"; break;
+ case "1519": url = "http://www.kcls.org/kenmore/"; break;
+ case "1520": url = "http://www.kcls.org/kent/"; break;
+ case "1517": url = "http://www.kcls.org/kingsgate/"; break;
+ case "1518": url = "http://www.kcls.org/kirkland/"; break;
+ case "1521": url = "http://www.kcls.org/lakeforestpark/"; break;
+ case "1522": url = "http://www.kcls.org/lakehills/"; break;
+ case "1499": url = "http://www.kcls.org/crossroads/"; break;
+ case "1538": url = "http://www.kcls.org/southcenter/"; break;
+ case "1527": url = "http://www.kcls.org/maplevalley/"; break;
+ case "1525": url = "http://www.kcls.org/mercerisland/"; break;
+ case "1526": url = "http://www.kcls.org/muckleshoot/"; break;
+ case "1529": url = "http://www.kcls.org/newportway/"; break;
+ case "1528": url = "http://www.kcls.org/northbend/"; break;
+ case "1533": url = "http://www.kcls.org/redmond/"; break;
+ case "1532": url = "http://www.kcls.org/richmondbeach/"; break;
+ case "1534": url = "http://www.kcls.org/sammamish/"; break;
+ case "1536": url = "http://www.kcls.org/skykomish/"; break;
+ case "1541": url = "http://www.kcls.org/skyway/"; break;
+ case "1537": url = "http://www.kcls.org/snoqualmie/"; break;
+ case "1546": url = "http://www.kcls.org/valleyview/"; break;
+ case "1545": url = "http://www.kcls.org/vashon/"; break;
+ case "1547": url = "http://www.kcls.org/whitecenter/"; break;
+ case "1548": url = "http://www.kcls.org/woodinville/"; break;
+ case "1549": url = "http://www.kcls.org/woodmont/"; break;
+ case "1535": url = "http://www.kcls.org/shoreline/"; break;
+ case "1540": url = "http://www.kcls.org/servicecenter/"; break;
+ case "1510": url = "http://www.kcls.org/greenbridge/"; break;
+ //case "": url = "http://www.kcls.org/federalway/#closure"; break;
+ case "1559": url = "http://www.kcls.org/libraryexpress/"; break;
+ case "1556": url = "http://www.kcls.org/renton/"; break;
+ case "1557": url = "http://www.kcls.org/rentonhighlands/"; break;
+ default: url = "";
+ }
+ return url;
+}
+
+function checkAll(parent, id, name) {//Object, string
+ var obj = typeof(id)=="object"?id:$(id);
+ if(!parent || !obj) return;
+ if(!name) name = id.toString();
+ var nodes = dojo.query('input[name='+name+']', parent);
+ if(!nodes.length) nodes = dojo.query('.'+name, parent);
+ nodes.forEach(function(node, index){
+ node.checked = obj.checked;
+ });
+}
+
+var blinkMeArr = [];
+function blinkMe(str,bool) {
+ var obj = $(str);
+ if(!obj) return;
+
+ if(bool) {
+ clearInterval(blinkMeArr[str]);
+ hideMe(obj);
+ } else blinkMeArr[str] = setInterval(function(){
+ obj.blinker?hideMe(obj):unHideMe(obj);
+ obj.blinker=!obj.blinker;}, 500);
+}
+
+// null out all children of parent obj
+errCounter=0;
+errCounter2=0;
+function destroyObj(obj) {
+ errCounter++;
+ if(!obj) return;
+ errCounter2++;
+ for(var i in obj) {
+ if(typeof(obj[i])=="function" && i=="destroyObj") continue;
+ if(typeof(obj[i])=="object" && obj[i]!=null && typeof(obj[i].tagName)=="undefined") destroyObj(obj[i]);
+ try { obj[i]=null; } catch(e){}
+ }
+ obj=null;
+}
+
+attachEvt("common","init",mySuperInitFunction);
--- /dev/null
+//var records = {};
+var records = [];
+var ranks = [];
+var onlyrecord = {};
+var table;
+var mresultPreCache = 200;
+var searchTimer;
+
+attachEvt("common", "unload", mresultUnload);
+attachEvt("common", "run", mresultDoSearch);
+attachEvt("result", "idsReceived", mresultSetRecords);
+attachEvt("result", "idsReceived", mresultCollectRecords);
+
+function mresultUnload() { removeChildren(table); table = null;}
+
+hideMe($('copyright_block'));
+
+function mresultDoSearch() {
+ TFORM = null; /* clear the rresult tform var so it's not propogated */
+
+ swapCanvas($('loading_alt'));
+ table = G.ui.result.main_table;
+
+ var holdTarget = new CGI().param('hold_target');
+ if(holdTarget != null) {
+ mresultHandlePlaceHold(holdTarget);
+ return;
+ }
+
+ while( table.parentNode.rows.length <= (getDisplayCount() + 1) )
+ table.appendChild(G.ui.result.row_template.cloneNode(true));
+
+ if( (getSearches() || getAdvTerm()) && !getTerm() ) {
+ if(getAdvType() == ADVTYPE_MULTI ) mresultCollectAdvIds();
+
+ } else {
+ _mresultCollectIds();
+ ADVTERM = "";
+ ADVTYPE = "";
+ }
+}
+
+function _mresultCollectIds() {
+ resultCollectSearchIds(true, SEARCH_MRS_QUERY, mresultHandleMRIds );
+}
+
+function mresultCollectAdvIds() {
+ resultCollectSearchIds(false, SEARCH_MRS_QUERY, mresultHandleMRIds );
+}
+
+
+function mresultHandleMRIds(r) {
+ var res = r.getResultObject();
+ resultCompiledSearch = res.compiled_search;
+ cookieManager.write(COOKIE_SEARCH, js2JSON(res.compiled_search), -1);
+ if(res.count != null) {
+ if( getOffset() == 0 ) HITCOUNT = res.count;
+ runEvt('result', 'hitCountReceived');
+ }
+ runEvt('result', 'idsReceived', res.ids);
+}
+
+
+
+function mresultSetRecords(idstruct) {
+ if(!idstruct) return;
+ var o = getOffset();
+ for( var x = o; x < idstruct.length + o; x++ ) {
+ if( idstruct[x-o] != null ) {
+ var r = parseInt(idstruct[x - o][0]);
+ var ra = parseFloat(idstruct[x - o][1]);
+ var or = parseInt(idstruct[x - o][2]);
+ if(!isNull(r) && !isNaN(r)) records[x] = r;
+ if(!isNull(ra) && !isNaN(ra)) ranks[x] = ra;
+ if(!isNull(or) && !isNaN(or)) onlyrecord[x] = or;
+ }
+ }
+
+ TOPRANK = ranks[getOffset()];
+}
+
+
+var recsReceivedCalled = false;
+function mresultCollectRecords() {
+ if(getHitCount() > 0 ) runEvt("result", "preCollectRecords");
+ var i = 0;
+ for( var x = getOffset(); x!= getDisplayCount() + getOffset(); x++ ) {
+ if(isNull(records[x])) break;
+ if(isNaN(records[x])) continue;
+ var req = new Request(FETCH_MRMODS, records[x]);
+
+ req.request.userdata = i++;
+
+ /* wait at most 10 seconds for the mods rec to come back */
+ /* this needs more testing */
+ req.request.timeout(10);
+ req.request.abortCallback(
+ function(){
+ recordsHandled++;
+ if(resultPageIsDone() && !recsReceivedCalled) {
+ recsReceivedCalled = true;
+ runEvt('result', 'allRecordsReceived', recordsCache);
+ unHideMe($('copyright_block'));
+ }
+ }
+ );
+
+ req.callback(mresultHandleMods);
+ req.send();
+ }
+}
+
+function mresultHandleMods(r) {
+ var rec = r.getResultObject();
+ var pagePosition = r.userdata;
+ runEvt('result', 'recordReceived', rec, pagePosition, true);
+ if(rec) resultCollectCopyCounts(rec, pagePosition, FETCH_MR_COPY_COUNTS);
+ if(resultPageIsDone()) {
+ runEvt('result', 'allRecordsReceived', recordsCache);
+ unHideMe($('copyright_block')); /* *** */
+ }
+}
+
+function mresultHandlePlaceHold(target) {
+ function reload() {
+ location.href = location.href.replace(/&hold_target=\d+/, '');
+ }
+ attachEvt("common", "holdUpdated", reload);
+ attachEvt("common", "holdUpdateCanceled", reload);
+ attachEvt("common", "loginCanceled", reload);
+ holdsDrawEditor({record:target, type: 'M'});
+}
+
+
+
--- /dev/null
+
+//attachEvt("common", "run", myOPACInit );
+// force init to run after opac_init();
+dojo.addOnLoad(function(){setTimeout(myOPACInit, 0)});
+
+attachEvt('common','locationUpdated', myopacReload );
+dojo.require('openils.Util');
+
+var FETCH_CONTAINER_DETAILS = ['open-ils.actor','open-ils.actor.container.flesh'];
+var FETCH_CHECKED_DETAILS = ['open-ils.circ','open-ils.circ.actor.user.checked_out.atomic'];
+var FETCH_CHECKED_HISTORY = ['open-ils.actor','open-ils.actor.history.circ.visible.atomic'];
+var FETCH_FAV_SEARCHES = ['open-ils.actor','open-ils.actor.user.saved_search.retrieve'];
+var FETCH_HOLD_DETAILS = ['open-ils.circ','open-ils.circ.hold.details.batch.retrieve.atomic'];
+var FETCH_MODS_BY_COPY = ['open-ils.search','open-ils.search.biblio.mods_from_copy'];
+var FETCH_CALL_NUMBER = ['open-ils.search','open-ils.search.callnumber.retrieve'];
+var FETCH_MODS_SLIM = ['open-ils.search','open-ils.search.biblio.record.mods_slim.retrieve'];
+var FETCH_FULL_USER = ['open-ils.actor','open-ils.actor.user.fleshed.retrieve'];
+var FETCH_HOLD_IDS = ['open-ils.circ','open-ils.circ.holds.id_list.retrieve'];
+var FETCH_COPY_OBJ = ['open-ils.search','open-ils.search.asset.copy.retrieve'];
+var FETCH_OPT_INS = ['open-ils.actor','open-ils.actor.event_def.opt_in.settings.atomic'];
+var FETCH_LISTS = ['open-ils.actor','open-ils.actor.container.flesh'];
+var PASS_RESET = ['open-ils.actor','open-ils.actor.patron.password_reset.request'];
+var PAY_BILLS = ['open-ils.circ','open-ils.circ.money.payment'];
+// number of api calls to run before firing myOPACPostCollect() -- helps make all data available first (avoids having to make sync'd calls)
+var TOTAL_CALLS = 6;
+
+var PREFS_HOLD_PHONE = "notification.hold.pickup.phone";
+var PREFS_HOLD_EMAIL = "notification.hold.pickup.email";
+var PREFS_PREDUE_3DAY = "notification.predue.email";
+var PREFS_OVER_FIRST = "notification.overdue.first.email";
+var PREFS_OVER_FIRST_P = "notification.overdue.first.phone";
+var PREFS_HOLD_EXPIRE = "notification.hold.expire.email";
+var PREFS_HOLD_CANCEL = "notification.hold.cancel.email";
+var PREFS_CIRC_HIST_AGE = "history.circ.retention_age";
+var PREFS_CIRC_HIST_START = "history.circ.retention_start";
+
+var listsCache = [];
+var holdsCache = [];
+var holdsCacheMap = [];
+var itemsOutCache = [];
+var callNumCache = [];
+var favsCache = [];
+var copyObjCache = [];
+var mvrObjCache = [];
+var itemsOutHistory = [];
+var userOptIns = [];
+var userOptInsMap = [];
+var fleshedLists = [];
+var imgFormatCache = [];
+var transCache = [];
+var fleshedContainers = {};
+var subPageObjs = {};
+
+var CIRC_HIST_PAGE_LIMIT = 10;
+var circHistPage = 0;
+var showXUL = false;
+var holdsList = null;
+var fleshedUser = null;
+var allowPendingAddr = false;
+var currPage = "";
+var templates = {};
+var containerTemplate;
+var containerTemplate2;
+var myopacGenericTransTemplate;
+var myopacCircTransTemplate;
+var addrRowTemplate;
+var notesTemplate;
+var myopacReturnToPayment = false;
+
+function myOPACInit() {
+ if(!(G.user && G.user.session)) {
+ initLogin();
+ } else {
+ allowPendingAddr = fetchOrgSettingDefault(G.user.home_ou(), 'opac.allow_pending_address');
+ if(allowPendingAddr) unHideMe($('myopac_pending_addr_td'));
+
+ unHideMe($('myopac_tabs'));
+ currPage = "summary";
+ holdsList = getCacheValue('saveAnonCache');
+ if(holdsList) { currPage = "holds"; swapTabs($('acct_holds')); setCacheValue('saveAnonCache', null); TOTAL_CALLS -= 2; }
+ var retUrl = getCacheValue('returnURL');
+ if(retUrl) { setCacheValue('returnURL', null); setCacheValue('showHoldEditor', {record:retUrl.record, type:retUrl.type}); window.location=retUrl.href; }
+
+ var sel = $('myopac_new_home');
+ buildOrgSel(sel, globalOrgTree, 0);
+ setSelector(sel, G.user.home_ou());
+
+ switch(new CGI().param('acctpage')) {
+ case "1": currPage = "summary"; break;
+ case "2": currPage = "checked"; swapTabs($('acct_checked_out')); break;
+ case "3": currPage = "holds"; swapTabs($('acct_holds')); break;
+ case "4": currPage = "prefs"; swapTabs($('acct_prefs')); break;
+ case "5": currPage = "fines"; swapTabs($('acct_favs')); break;
+ case "6": currPage = "bookbag"; swapTabs($('acct_lists')); break;
+ }
+
+ if(!isXUL()) {
+ unHideMe($('myopac_summary_email_change'));
+ unHideMe($('myopac_summary_password_change'));
+ unHideMe($('myopac_summary_username_change'));
+ } else {
+ unHideMe($('myopac_summary_phone1_change'));
+ unHideMe($('myopac_summary_phone2_change'));
+ unHideMe($('myopac_summary_phone3_change'));
+ }
+
+
+ fieldmapper.standardRequest(FETCH_FULL_USER, {async:true, params:[G.user.session, G.user.id()],
+ oncomplete:function(r) {
+ showXUL = isXUL();
+ fleshedUser = openils.Util.readResponse(r);
+ myOPACShowFines(true);
+ myOPACShowUser(false);
+ myOPACChangePage(currPage);
+ myOPACInitTemplates();
+ myOPACInitSubpages();
+ //myOPACShowBookbags(true);
+ if(holdsList) doBatchAnonHolds();
+ showCanvas();
+ }
+ });
+ }
+}
+
+function myopacReload() {
+ var a = {};
+ a[PARAM_LOCATION] = getNewSearchLocation();
+ a[PARAM_DEPTH] = getNewSearchDepth();
+ hideMe($('canvas_main'));
+ goTo(buildOPACLink(a, true));
+}
+
+function myOPACChangePage( page ) {
+ var s = $("myopac_summary_td");
+ var c = $("myopac_checked_td");
+ var f = $("myopac_fines_td");
+ var h = $("myopac_holds_td");
+ var p = $("myopac_prefs_td");
+ var b = $('myopac_bookbag_td');
+
+ var ss = $("myopac_summary_div");
+ var cc = $("myopac_checked_div");
+ var ff = $("myopac_fines_div");
+ var hh = $("myopac_holds_div");
+ var pp = $("myopac_prefs_div");
+ var bb = $('myopac_bookbag_div');
+
+ hideMe(ss);
+ hideMe(cc); hideMe(ff);
+ hideMe(hh); hideMe(pp);
+ hideMe(bb);
+
+ if(page != 'prefs')
+ myopacReturnToPayment = false;
+
+ var oncomplete = null;
+
+ switch( page ) {
+ case "summary": unHideMe(ss);
+ if($('show_fines_link').innerHTML=="Hide Overdue Materials") unHideMe(ff);
+ oncomplete = myOPACDrawSummary;
+ break;
+
+ case "checked":
+ unHideMe(cc);
+ oncomplete = drawCheckedPage;
+ break;
+
+ case "holds":
+ unHideMe(hh);
+ oncomplete = drawHoldsPage;
+ break;
+
+ case "prefs":
+ unHideMe(pp);
+ oncomplete = myOPACShowPrefs;
+ break;
+
+ case 'bookbag':
+ unHideMe(bb);
+ break;
+ }
+ currPage = page;
+ myOPACGrabPageData(page, oncomplete);
+}
+
+var fetchedPages={}
+function myOPACGrabPageData(page, oncomplete) {
+ if(fetchedPages[page]) return;
+ fetchedPages[page] = true;
+
+ switch(page) {
+
+ case "summary":
+ oncomplete();
+ break;
+
+ case "checked":
+
+ progressDialog.show(true);
+ fieldmapper.standardRequest(FETCH_CHECKED_DETAILS, {async:true, params:[G.user.session, G.user.id()],
+ oncomplete:function(r) {
+ progressDialog.hide();
+ itemsOutCache = openils.Util.readResponse(r);
+ oncomplete();
+ }
+ });
+
+ break;
+
+ case "holds":
+
+ holdsCache=null;
+ fieldmapper.standardRequest(FETCH_HOLD_IDS, {async:true, params:[G.user.session, G.user.id()],
+ oncomplete: function(r) {
+ oncomplete(false, openils.Util.readResponse(r));
+
+ /*
+ var holdids = openils.Util.readResponse(r);
+ fieldmapper.standardRequest(FETCH_HOLD_DETAILS, {async:true, params:[G.user.session, holdids],
+ oncomplete: function(rr) {
+ progressDialog.hide();
+ var holds = openils.Util.readResponse(rr);
+ holdsCache = holds;
+ setTimeout(function(){oncomplete()}, 150); // give the progress dialog a chance to clear out
+ oncomplete();
+ }
+ });
+ */
+ }
+ });
+
+ break;
+
+ case "prefs":
+ fieldmapper.standardRequest(FETCH_OPT_INS, {async:true, params:[G.user.session],
+ oncomplete:function(r) {
+ userOptIns = openils.Util.readResponse(r);
+ for(var i=0; i<userOptIns.length; i++) userOptInsMap[userOptIns[i].name()] = i;
+ oncomplete();
+ }
+ });
+
+ break;
+
+ case 'bookbag':
+ myOPACShowBookbags(true);
+ break;
+ }
+}
+
+
+function myOPACDrawSummary() {
+ var stats = userVitalStats; // see misc.js
+ if(!stats) return;
+ $('myopac_sum_pickup').innerHTML = "("+stats.holds.ready+")";
+ $('myopac_sum_checked').innerHTML = "("+ (stats.checkouts.out+stats.checkouts.overdue) +")";
+ $('myopac_sum_holds').innerHTML = "("+stats.holds.total+")";
+ if(stats.fines.balance_owed != 0) {
+ var bal = $('myopac_sum_fines_bal');
+ bal.style.color = "red";
+ appendClear(bal, text("$" + Number(stats.fines.balance_owed).toFixed(2)));
+ showFinesDiv($('show_fines_link'));
+ unHideMe($('pay_fines_btn1'));
+ unHideMe($('show_fines_link'));
+ }
+}
+
+function myOPACInitTemplates() {
+ //holds page
+ if(!templates.holdsParent) templates.holdsParent = $('holds_temp_parent');
+ if(!templates.holdsTemp) templates.holdsTemp = templates.holdsParent.removeChild($('acct_holds_temp'));
+ //checked out page
+ if(!templates.checkedParent) templates.checkedParent = $('checked_temp_parent');
+ if(!templates.checkedTemp) templates.checkedTemp = templates.checkedParent.removeChild($('acct_checked_temp'));
+ //checked history page
+ if(!templates.circHistPar) templates.circHistPar = $('acct_checked_hist_parent');
+ if(!templates.circHistTemp) templates.circHistTemp = templates.circHistPar.removeChild($('acct_checked_hist_temp'));
+}
+
+// link-up all the Account sub-pages for switchSubPage()
+function myOPACInitSubpages() {
+ // create a primary object for each page...
+ subPageObjs.checked = {};
+ subPageObjs.holds = {};
+ subPageObjs.prefs = {};
+
+ // ... then create an array for each sub-page
+ subPageObjs.checked.main = [];
+ subPageObjs.checked.hist = [];
+ subPageObjs.holds.main = [];
+ subPageObjs.holds.hist = [];
+ subPageObjs.prefs.info = [];
+ subPageObjs.prefs.notify = [];
+ subPageObjs.prefs.search = [];
+
+ // add .header to each primary page object and link to the page's blue header bar.
+ // add ['header'] to each sub-page array and put the text to display
+ subPageObjs.checked.header = $('acct_checked_header');
+ subPageObjs.checked.main['header'] = "Current Items Checked Out";
+ subPageObjs.checked.hist['header'] = "Check Out History";
+ subPageObjs.checked.main.push($('checked_label'));
+ subPageObjs.checked.hist.push($('checked_link'));
+ subPageObjs.checked.main.push($('checked_hist_link'));
+ subPageObjs.checked.hist.push($('checked_hist_label'));
+ subPageObjs.checked.main.push($('checked_main'));
+ subPageObjs.checked.hist.push($('checked_hist'));
+
+ subPageObjs.holds.header = $('acct_holds_header');
+ subPageObjs.holds.main['header'] = "Current Items on Hold";
+ subPageObjs.holds.hist['header'] = "Holds History";
+ subPageObjs.holds.main.push($('holds_label'));
+ subPageObjs.holds.hist.push($('holds_link'));
+ subPageObjs.holds.main.push($('holds_hist_link'));
+ subPageObjs.holds.hist.push($('holds_hist_label'));
+ subPageObjs.holds.main.push($('holds_main'));
+ subPageObjs.holds.hist.push($('holds_hist_table'));
+
+ subPageObjs.prefs.header = $('acct_prefs_header');
+ subPageObjs.prefs.info['header'] = "Account Information and Preferences";
+ subPageObjs.prefs.notify['header'] = "Notification Preferences";
+ subPageObjs.prefs.search['header'] = "Search Preferences";
+ subPageObjs.prefs.info.push($('prefs_info_lbl'));
+ subPageObjs.prefs.notify.push($('prefs_info_link'));
+ subPageObjs.prefs.notify.push($('prefs_notify_lbl'));
+ subPageObjs.prefs.info.push($('prefs_notify_link'));
+ subPageObjs.prefs.search.push($('prefs_search_lbl'));
+ subPageObjs.prefs.info.push($('prefs_search_link'));
+ subPageObjs.prefs.notify.push($('prefs_search_link'));
+ subPageObjs.prefs.search.push($('prefs_notify_link'));
+ subPageObjs.prefs.search.push($('prefs_info_link'));
+ subPageObjs.prefs.info.push($('acct_info_main'));
+ subPageObjs.prefs.search.push($('acct_search_main'));
+ subPageObjs.prefs.notify.push($('acct_notify_main'));
+ subPageObjs.prefs.notify.push($('acct_prefs_save'));
+ subPageObjs.prefs.search.push($('acct_prefs_save'));
+}
+
+function fetchAllHolds() {
+}
+
+var myopacForceHoldsRedraw = false;
+function drawHoldsPage(sort, holdIds) {
+ if(sort == undefined) sort = true;
+ if(!templates.holdsParent || !templates.holdsTemp) return;
+ var parent = templates.holdsParent;
+ var temp = templates.holdsTemp;
+ var holdsReady = 0;
+
+ if(myopacForceHoldsRedraw) {
+ holdsCache = fieldmapper.standardRequest(FETCH_HOLD_DETAILS, {async:false, params:[G.user.session,
+ fieldmapper.standardRequest(FETCH_HOLD_IDS, {async:false, params:[G.user.session, G.user.id()]})
+ ]});
+ }
+
+ if(sort) holdsCache = holdsCache.sort(function(a, b) {
+ if(a.status==4) return -1;
+ if(b.status==4) return 1;
+ if(isTrue(a.hold.frozen())) return 1;
+ if(isTrue(b.hold.frozen())) return -1;
+ return dojo.date.stamp.fromISOString(a.hold.request_time()) > dojo.date.stamp.fromISOString(b.hold.request_time())?1:-1;
+ });
+
+ function allHoldsFetched() {
+ holdsCacheMap=[];
+ for(var i=0; i<holdsCache.length; i++) holdsCacheMap[holdsCache[i].hold.id()] = i;
+ $('myopac_sum_pickup').innerHTML = "("+holdsReady+")";
+ if(!holdsCache.length) parent.appendChild(elem('div',{style:"font-weight:bold;font-size:14px;width:100%;text-align:center;",align:'center'},'No holds found.'));
+ }
+
+ removeChildren(parent);
+ if(holdsCache) {
+ for(var i in holdsCache) {
+ var row = temp.cloneNode(true);
+ var hold = holdsCache[i];
+ drawOneHold(hold, row, parent);
+ parent.appendChild(row);
+ //parent.appendChild(elem('tr').appendChild(elem('td', {'colspan':'10'}).appendChild(elem('div', {'style':'position:absolute;'}).appendChild(elem('div', {'style':'position:relative;'}).appendChild(elem('div', {'style':'width:974px;height:1px;background:#dcdbdb;'}))))));
+ // <tr><td colspan="10"><div style="position:absolute;"><div style="position:relative;"><div style="width:974px;height:1px;background:#dcdbdb;"></div></div></div></td></tr>
+
+ if(hold.status == 4) holdsReady++;
+ }
+ allHoldsFetched();
+
+ } else if(holdIds) {
+
+ holdsCache = [];
+ var holdsReceived = 0;
+
+ dojo.forEach(holdIds,
+ function(holdId) {
+ var row = temp.cloneNode(true);
+ dojo.style(row, 'visibility', 'hidden');
+ parent.appendChild(row);
+
+ //parent.appendChild(elem('tr').appendChild(elem('td', {'colspan':'10'}).appendChild(elem('div', {'style':'position:absolute;'}).appendChild(elem('div', {'style':'position:relative;'}).appendChild(elem('div', {'style':'width:974px;height:1px;background:#dcdbdb;'}))))));
+
+ fieldmapper.standardRequest(FETCH_HOLD_DETAILS, {async:true, params:[G.user.session, [holdId]],
+ oncomplete: function(rr) {
+ var hold = openils.Util.readResponse(rr)[0];
+ holdsCache.push(hold);
+ dojo.style(row, 'visibility', 'visible');
+ drawOneHold(hold, row, parent);
+ if(hold.status == 4) holdsReady++;
+ if(++holdsReceived == holdIds.length)
+ allHoldsFetched();
+ }
+ });
+ }
+ );
+ }
+}
+
+function drawOneHold(h, row, parent) {
+ var imgTD = null;
+ var imgEl = null;
+ var d = null;
+ var exp_date;
+ var suffix = "";
+
+ row.id = "myopac_holds_row_" + h.hold.id();
+ var form = $n(row, "myopac_holds_formats");
+ form.id = "myopac_holds_form_" + h.hold.id();
+ $n(row,'hold_pickup_lib_span').appendChild($('hold_pickup_lib_temp').cloneNode(true));
+
+ var tree = $n(row,'hold_pickup_lib_sel');
+ buildOrgSelAlt(tree, globalOrgTree, 0);
+ setSelector(tree, h.hold.pickup_lib());
+ $n(row,'check_all_holds').holdid = h.hold.id();
+ $n(row,'hold_edit_link').setAttribute('href','javascript:editHold('+h.hold.id()+');');
+ $n(row,'hold_cancel_link').setAttribute('href','javascript:cancelHold('+h.hold.id()+');');
+ $n(row,'hold_save_link').setAttribute('href','javascript:saveHold('+h.hold.id()+');');
+ var activeSel = $n(row,'hold_active_sel');
+ activeSel.selectedIndex = isTrue(h.hold.frozen())?1:0;
+
+ //var djBox = $n(row,'activate_box').parentNode.parentNode.parentNode;
+ //djBox.id=djBox.id+h.hold.id();
+ //var blah = dojo.query('input',$n(row,'activate_box').parentNode)[0];
+ //blah.id = djBox.getAttribute("widgetId")+h.hold.id();
+ //$().id = djBox.id+h.hold.id();
+ //djBox.setAttribute("widgetId", djBox.getAttribute("widgetId")+h.hold.id());
+
+ $n(row,'hold_pickup_lib').innerHTML = findOrgUnit(h.hold.pickup_lib()).name();
+ $n(row,'hold_active').innerHTML = isTrue(h.hold.frozen())?"Suspended":"Active";
+ if(isTrue(h.hold.frozen())) row.style.background="#e5e5e5";
+
+ if(h.hold.thaw_date()) {
+ d = dojo.date.stamp.fromISOString(h.hold.thaw_date());
+ $n(row, 'activate_date').innerHTML = dojo.date.locale.format(d, {selector: 'date', fullYear: true});
+ unHideMe($n(row,'activate_label'));
+ $n(row,'activate_box').value = dojo.date.locale.format(d, {selector:'date', fullYear: true});
+ }
+
+ if(h.hold.expire_time()) {
+ exp_date = dojo.date.stamp.fromISOString(h.hold.expire_time().replace(/(T\d\d:\d\d:\d\d)([+-]\d\d)(\d)/, "$1$2:$3"))
+ $n(row, 'hold_expires').innerHTML = dojo.date.locale.format(exp_date, {selector:'date', fullYear: true});
+ unHideMe($n(row,'hold_expires_label'));
+ $n(row,'hold_expires_box').value = dojo.date.locale.format(exp_date, {selector:'date', fullYear: true});
+ }
+
+ buildTitleDetailLink(h.mvr, $n(row,'myopac_holds_title_link'));
+ $n(row,'myopac_holds_title_link').title = h.mvr.title();
+
+ imgTD = $n(row, "myopac_holds_formats");
+ imgEl = elem('img');
+ imgEl.className = 'hide_me';
+ imgEl.name = 'format_icon_'+h.hold.id();
+ imgTD.appendChild(imgEl);
+ if(imgFormatCache[h.hold.id()]==null) imgFormatCache[h.hold.id()] = getMarcData(h.mvr.doc_id(),"998","d");
+ setFormatIcon(imgEl, imgFormatCache[h.hold.id()]);
+
+ $n(row,'myopac_holds_author').innerHTML = h.mvr.author();
+
+ if( h.status == 4) {
+ $n(row,'acct_holds_status').innerHTML = "<span style='color:blue;font-weight:bold;'>Ready for Pickup</span>";
+ hideMe($n(row,'holds_editor_row'));
+ unHideMe($n(row,'holds_ready_row'));
+ if(h.hold.shelf_expire_time()) $n(row,'hold_ready_expire').innerHTML =
+ dojo.date.locale.format(dojo.date.stamp.fromISOString(h.hold.shelf_expire_time()), {selector:'date', fullYear: true});;
+ } else {
+ var num = h.queue_position+'';
+ suffix = (num.charAt(num.length-1)=="1")?"st":(num.charAt(num.length-1)=="2")?"nd":(num.charAt(num.length-1)=="3")?"rd":"th";
+ if(num=="11" || num=="12" || num=="13") suffix = "th";
+ $n(row,'acct_holds_status').innerHTML = h.queue_position+suffix+" hold on "+h.potential_copies+" circulating cop"+(h.potential_copies==1?"y":"ies");
+ }
+}
+
+var checkedDrawn = true;
+function drawCheckedPage(sort) {
+ if(sort==undefined) sort = true;
+ if(!templates.checkedParent || !templates.checkedTemp) return;
+ var parent = templates.checkedParent;
+ var temp = templates.checkedTemp;
+
+ if(!checkedDrawn) itemsOutCache = fieldmapper.standardRequest(FETCH_CHECKED_DETAILS, {async:false, params:[G.user.session, G.user.id()]});
+ if(sort) itemsOutCache = itemsOutCache.sort(function(a, b) {
+ if(dojo.date.stamp.fromISOString(a.circ.due_date()) > dojo.date.stamp.fromISOString(b.circ.due_date())) return 1;
+ return -1;
+ });
+ checkedDrawn = true;
+
+ removeChildren(parent);
+ for(var i in itemsOutCache) {
+ var row = temp.cloneNode(true);
+ var out = itemsOutCache[i];
+ //row.id = "myopac_holds_row_" + out.hold.id();
+ if(!mvrObjCache[out.circ.target_copy()]) mvrObjCache[out.circ.target_copy()] = out.record;
+ if(!copyObjCache[out.copy.id()]) copyObjCache[out.copy.id()] = out.copy;
+
+ if(out.circ.due_date()) {
+ var exp_date = dojo.date.stamp.fromISOString(out.circ.due_date());
+ if(exp_date<(new Date())) $n(row,'due_date').style.color="red";
+ $n(row, 'due_date').innerHTML = dojo.date.locale.format(exp_date, {selector:'date', fullYear: true});
+ }
+
+ $n(row, 'renewals').innerHTML = out.circ.renewal_remaining();
+ buildTitleDetailLink(out.record, $n(row,'title'));
+ if(out.record.author()) $n(row, 'author').appendChild(text(" / "+out.record.author()));
+ dojo.attr($n(row, 'check_all_checked'), 'circid', out.circ.id())
+ $n(row,'title').title = out.record.title();
+ $n(row, 'barcode').innerHTML = out.copy.barcode();
+ if(callNumCache[out.copy.call_number()]==null) callNumCache[out.copy.call_number()] = fieldmapper.standardRequest(FETCH_CALL_NUMBER, {async:false, params:[out.copy.call_number()]});
+ $n(row, 'call_number').innerHTML = callNumCache[out.copy.call_number()].label();
+
+ parent.appendChild(row);
+ }
+
+ if(!itemsOutCache.length) parent.appendChild(elem('div',{style:"font-weight:bold;font-size:14px;width:100%;text-align:center;",align:'center'},'No items checked out.'));
+}
+
+var circHistDrawn = true;
+function drawCircHistory(sort, offset) {
+ if(sort==undefined) sort = true;
+ if(offset==undefined) offset = circHistPage; else circHistPage = offset;
+ if(!templates.circHistPar || !templates.circHistTemp) return;
+ var parent = templates.circHistPar;
+ var temp = templates.circHistTemp;
+
+ if(!circHistDrawn) itemsOutHistory = fieldmapper.standardRequest(FETCH_CHECKED_HISTORY, {async:false, params:[G.user.session, G.user.id(), {'limit':CIRC_HIST_PAGE_LIMIT, 'offset':offset}]});
+ circHistDrawn = true;
+
+ removeChildren(parent);
+ for(var i in itemsOutHistory) {
+ var row = temp.cloneNode(true);
+ var h = itemsOutHistory[i];
+ if(mvrObjCache[h.circ.target_copy()]==null) mvrObjCache[h.circ.target_copy()] = fieldmapper.standardRequest(FETCH_MODS_BY_COPY, {async:false, params:[h.circ.target_copy()]});
+ var mvr = mvrObjCache[h.circ.target_copy()];
+
+ if(mvr && !mvr.desc) {
+ buildTitleDetailLink(mvr, $n(row, 'title'));
+ $n(row, 'title').title = mvr.title();
+ $n(row, 'author').innerHTML = mvr.author();
+
+ //dojo.date.locale.format(dojo.date.stamp.fromISOString(), {selector:'date', fullYear: true});
+ }
+
+ //date formatting and coloring
+ var ret = $n(row, 'returned');
+ var due = $n(row, 'due_date');
+ $n(row, 'checkout').innerHTML = dojo.date.locale.format(dojo.date.stamp.fromISOString(h.circ.create_time()), {selector:'date', fullYear: true});
+ due.innerHTML = dojo.date.locale.format(dojo.date.stamp.fromISOString(h.circ.due_date()), {selector:'date', fullYear: true});
+ if(!h.circ.checkin_time() && new Date() > dojo.date.stamp.fromISOString(h.circ.due_date())) due.style.color="red";
+ if(h.circ.checkin_time() && dojo.date.stamp.fromISOString(h.circ.checkin_time()) > dojo.date.stamp.fromISOString(h.circ.due_date())) ret.style.color="red";
+ if(h.circ.checkin_time()) ret.innerHTML = dojo.date.locale.format(dojo.date.stamp.fromISOString(h.circ.checkin_time()), {selector:'date', fullYear: true});
+ else ret.innerHTML = "Checked Out";
+
+ if(copyObjCache[h.circ.target_copy()]==null) copyObjCache[h.circ.target_copy()] = fieldmapper.standardRequest(FETCH_COPY_OBJ, {async:false, params:[h.circ.target_copy()]});
+ if(callNumCache[copyObjCache[h.circ.target_copy()].call_number()]==null)
+ callNumCache[copyObjCache[h.circ.target_copy()].call_number()] = fieldmapper.standardRequest(FETCH_CALL_NUMBER, {async:false, params:[copyObjCache[h.circ.target_copy()].call_number()]});
+
+ if(copyObjCache[h.circ.target_copy()] && callNumCache[copyObjCache[h.circ.target_copy()].call_number()])
+ $n(row,'call_number').innerHTML = callNumCache[copyObjCache[h.circ.target_copy()].call_number()].label();
+ parent.appendChild(row);
+ }
+
+ if(!itemsOutHistory.length) {
+ parent.appendChild(elem('tr').appendChild(elem('td',{style:"font-weight:bold;font-size:14px;width:100%;text-align:center;",align:'center'},'No items found.')));
+ return;
+ }
+
+ //build pagination
+ var pageTR = elem('tr');
+ var pageTD = elem('td', {'align':'center', 'colspan':'5'}, null);
+
+ var offPrev = offset - CIRC_HIST_PAGE_LIMIT;
+ var offNext = offset + CIRC_HIST_PAGE_LIMIT;
+ if(offset==0) offPrev = 0;
+
+ if(offset!=0) var prev = elem('a', {'href':'javascript: circHistDrawn = false; drawCircHistory(true,'+offPrev+');'}, '< Previous');
+ else var prev = elem('span', null, '< Previous');
+ if(itemsOutHistory.length<CIRC_HIST_PAGE_LIMIT) var next = elem('span', null, 'Next >');
+ else var next = elem('a', {'href':'javascript: circHistDrawn = false; drawCircHistory(true,'+offNext+');'}, 'Next >');
+
+ pageTD.appendChild(prev);
+ pageTD.appendChild(elem('span', null, ' '));
+ pageTD.appendChild(next);
+ pageTR.appendChild(pageTD);
+ parent.appendChild(pageTR);
+}
+
+function myOPACShowPrefs() {
+ grabUserPrefs();
+ myOPACShowHitsPer();
+ myOPACShowDefFont();
+ myOPACShowDefLocation();
+ myOPACShowNotifyPrefs();
+ hideMe($('myopac_prefs_loading'));
+}
+
+var defSearchLocationDrawn = false;
+var defDepthIndex = 0;
+function myOPACShowDefLocation() {
+
+ var selector = $('prefs_def_location');
+ var rsel = $('prefs_def_range');
+
+ if(!defSearchLocationDrawn) {
+ defSearchLocationDrawn = true;
+ var org = G.user.prefs[PREF_DEF_LOCATION];
+
+ if(!org) {
+ $('myopac_pref_home_lib').checked = true;
+ $('prefs_def_location').disabled = true;
+ org = G.user.home_ou();
+ }
+ buildOrgSel(selector, globalOrgTree, 0);
+
+ globalOrgTypes = globalOrgTypes.sort(
+ function(a, b) {
+ if( a.depth() < b.depth() ) return -1;
+ return 1;
+ }
+ );
+
+ iterate(globalOrgTypes,
+ function(t) {
+ if( t.depth() <= findOrgDepth(org) ) {
+ setSelectorVal(rsel, defDepthIndex++, t.opac_label(), t.depth());
+ if( t.depth() == findOrgDepth(org))
+ setSelector(rsel, t.depth());
+ }
+ }
+ );
+ }
+
+ setSelector(selector, org);
+}
+
+function myOPACShowNotifyPrefs() {
+ var preEmail = $(PREFS_PREDUE_3DAY);
+ var overEmail = $(PREFS_OVER_FIRST);
+ var overPhone = $(PREFS_OVER_FIRST_P);
+ var holdsCancel = $(PREFS_HOLD_CANCEL);
+ var holdsExpire = $(PREFS_HOLD_EXPIRE);
+ var holdsEmail = $("opac.hold_notify.email");
+ var holdsPhone = $("opac.hold_notify.phone");
+ if(G.user.prefs[PREFS_CIRC_HIST_START]) { $('circHistStart').checked = true; }
+
+ if(preEmail && typeof(G.user.prefs[PREFS_PREDUE_3DAY]) !="undefined") preEmail.checked = G.user.prefs[PREFS_PREDUE_3DAY];
+ if(overEmail && typeof(G.user.prefs[PREFS_OVER_FIRST]) !="undefined") overEmail.checked = G.user.prefs[PREFS_OVER_FIRST];
+ if(overPhone && typeof(G.user.prefs[PREFS_OVER_FIRST_P]) !="undefined") overPhone.checked = G.user.prefs[PREFS_OVER_FIRST_P];
+ if(holdsCancel && typeof(G.user.prefs[PREFS_HOLD_CANCEL])!="undefined") holdsCancel.checked = G.user.prefs[PREFS_HOLD_CANCEL];
+ if(holdsExpire && typeof(G.user.prefs[PREFS_HOLD_EXPIRE])!="undefined") holdsExpire.checked = G.user.prefs[PREFS_HOLD_EXPIRE];
+ if(holdsPhone && typeof(G.user.prefs[PREFS_HOLD_PHONE]) !="undefined") holdsPhone.checked = G.user.prefs[PREFS_HOLD_PHONE];
+ if(holdsEmail && typeof(G.user.prefs[PREFS_HOLD_EMAIL]) !="undefined") holdsEmail.checked = G.user.prefs[PREFS_HOLD_EMAIL];
+}
+
+function myOPACShowHitsPer() {
+ var hits = 10;
+ if(G.user.prefs[PREF_HITS_PER])
+ hits = G.user.prefs[PREF_HITS_PER];
+ var hitsSel = $('prefs_hits_per');
+ setSelector(hitsSel, hits);
+}
+
+function myOPACShowDefFont() {
+ var font;
+ if(G.user.prefs[PREF_DEF_FONT])
+ font = G.user.prefs[PREF_DEF_FONT];
+ else font = "regular";
+ setSelector($('prefs_def_font'), font);
+}
+
+function myOPACShowUser(bool) {
+ if(bool) fleshedUser = fieldmapper.standardRequest(FETCH_FULL_USER, {async:false, params:[G.user.session, G.user.id()]});
+ var user = fleshedUser;
+
+ var expireDate = dojo.date.stamp.fromISOString(user.expire_date());
+ if( expireDate < new Date() ) {
+ appendClear($('myopac.expired.date'), expireDate.iso8601Format('YMD'));
+ unHideMe($('myopac.expired.alert'));
+ }
+
+ var iv1 = user.ident_value()+'';
+ if (iv1.length > 4 && iv1.match(/\d{4}/)) iv1 = iv1.substring(0,4) + '***********';
+
+ appendClear($('myopac_sum_name'),text(user.first_given_name()+" "+(user.family_name()==null?"":user.family_name())));
+ appendClear($('myopac_summary_prefix'),text(user.first_given_name()+" "+(user.family_name()==null?"":user.family_name())));
+ appendClear($('myopac_summary_homelib'),text(findOrgUnit(user.home_ou()).name()));
+
+ appendClear($('myopac_summary_dayphone'),text(user.day_phone()));
+ appendClear($('myopac_summary_eveningphone'),text(user.evening_phone()));
+ appendClear($('myopac_summary_otherphone'),text(user.other_phone()));
+ appendClear($('myopac_summary_suffix'),text(user.suffix()));
+ appendClear($('myopac_summary_username'),text(user.usrname()));
+ appendClear($('myopac_summary_email'),text(user.email()));
+ appendClear($('myopac_summary_barcode'),text(user.card().barcode()));
+ appendClear($('myopac_summary_ident1'),text(iv1));
+ appendClear($('myopac_summary_create_date'),text(_trimTime(user.create_date())));
+
+ var req = new Request(
+ FETCH_USER_NOTES, G.user.session, {pub:1, patronid:G.user.id()});
+ req.callback(myopacDrawNotes);
+ req.send();
+
+ var tbody = $('myopac_addr_tbody');
+ var template;
+
+ if(addrRowTemplate) {
+ template = addrRowTemplate;
+ } else {
+ template = tbody.removeChild($('myopac_addr_row'));
+ addrRowTemplate = template;
+ }
+ removeChildren(tbody);
+
+ var addrs = user.addresses();
+ for( var a in addrs ) {
+ var addr = addrs[a];
+ if(!allowPendingAddr && isTrue(addr.pending()))
+ continue;
+ if(addr.replaces() != null) continue;
+ var row = template.cloneNode(true);
+ myOPACDrawAddr(row, addr, addrs);
+ tbody.appendChild(row);
+ }
+}
+
+function myopacDrawNotes(r) {
+ var notes = r.getResultObject();
+ var tbody = $('myopac.notes.tbody');
+ if(!notesTemplate)
+ notesTemplate = tbody.removeChild($('myopac.notes.tr'));
+ removeChildren(tbody);
+
+ iterate(notes,
+ function(note) {
+ unHideMe($('myopac.notes.div'));
+ var row = notesTemplate.cloneNode(true);
+ $n(row, 'title').appendChild(text(note.title()));
+ $n(row, 'value').appendChild(text(note.value()));
+ tbody.appendChild(row);
+ }
+ );
+}
+
+function myOPACDrawAddr(row, addr, addrs) {
+ appendClear($n(row, 'myopac_addr_type'),text(addr.address_type()));
+ appendClear($n(row, 'myopac_addr_street'),text(addr.street1()));
+ appendClear($n(row, 'myopac_addr_street2'),text(addr.street2()));
+ appendClear($n(row, 'myopac_addr_city'),text(addr.city()));
+ appendClear($n(row, 'myopac_addr_county'),text(addr.county()));
+ appendClear($n(row, 'myopac_addr_state'),text(addr.state()));
+ appendClear($n(row, 'myopac_addr_country'),text(addr.country()));
+ appendClear($n(row, 'myopac_addr_zip'),text(addr.post_code()));
+
+ if(!allowPendingAddr) return;
+
+ $n(row, 'myopac_addr_edit_link').onclick = function(){myopacEditAddress(addr)};
+ unHideMe($n(row, 'myopac_addr_edit_td'));
+
+ /* if we have a replacement address, plop it into the table next to this addr */
+ var repl = grep(addrs, function(a) { return a.replaces() == addr.id(); });
+
+ $n(row, 'myopac_pending_addr_td').id = 'myopac_pending_addr_td_' + addr.id();
+
+ if(repl) {
+ hideMe($n(row, 'myopac_addr_edit_td')); // hide the edit link
+ repl = repl[0];
+ myopacSetAddrInputs(row, repl);
+ }
+}
+
+function myopacEditAddress(addr) {
+ var td = $('myopac_pending_addr_td_' + addr.id());
+ var row = td.parentNode;
+ myopacSetAddrInputs(row, addr);
+}
+
+function myopacSetAddrInputs(row, addr, prefix) {
+ unHideMe($n(row, 'myopac_pending_addr_td'));
+ $n(row, 'myopac_pending_addr_type').value = addr.address_type();
+ $n(row, 'myopac_pending_addr_street').value = addr.street1();
+ $n(row, 'myopac_pending_addr_street2').value = addr.street2();
+ $n(row, 'myopac_pending_addr_city').value = addr.city();
+ $n(row, 'myopac_pending_addr_county').value = addr.county();
+ $n(row, 'myopac_pending_addr_state').value = addr.state();
+ $n(row, 'myopac_pending_addr_country').value = addr.country();
+ $n(row, 'myopac_pending_addr_zip').value = addr.post_code();
+ $n(row, 'myopac_pending_addr_edit_link').onclick = function(){myopacSaveAddress(row, addr)};
+ $n(row, 'myopac_pending_addr_del_link').onclick = function(){myopacSaveAddress(row, addr, true)};
+}
+
+function _trimTime(time) {
+ if(!time) return "";
+ var d = dojo.date.stamp.fromISOString(time);
+ if(!d) return ""; /* date parse failed */
+ return d.iso8601Format('YMD');
+}
+
+function _trimSeconds(time) {
+ if(!time) return "";
+ var d = dojo.date.stamp.fromISOString(time);
+ if(!d) return ""; /* date parse failed */
+ return d.iso8601Format('YMDHM',null,true,true);
+}
+
+function myopacSaveAddress(row, addr, deleteMe) {
+ if(addr.replaces() == null) {
+ var repl = new aua();
+ repl.usr(addr.usr());
+ repl.address_type(addr.address_type());
+ repl.within_city_limits(addr.within_city_limits());
+ repl.replaces(addr.id());
+ repl.pending('t');
+ repl.isnew(true);
+ repl.id(null);
+ addr = repl;
+ }
+
+ if(deleteMe) {
+ if(addr.id() == null) {
+ hideMe($n(row, 'myopac_pending_addr_td'));
+ return;
+ }
+ addr.isdeleted(true);
+ } else {
+ addr.address_type($n(row, 'myopac_pending_addr_type').value);
+ addr.street1($n(row, 'myopac_pending_addr_street').value);
+ addr.street2($n(row, 'myopac_pending_addr_street2').value);
+ addr.city($n(row, 'myopac_pending_addr_city').value);
+ addr.county($n(row, 'myopac_pending_addr_county').value);
+ addr.state($n(row, 'myopac_pending_addr_state').value);
+ addr.country($n(row, 'myopac_pending_addr_country').value);
+ addr.post_code($n(row, 'myopac_pending_addr_zip').value);
+ }
+
+ var req = new Request('open-ils.actor:open-ils.actor.user.address.pending.cud', G.user.session, addr);
+
+ req.callback(
+ function(r) {
+ var resp = r.getResultObject();
+
+ if(addr.isnew()) {
+ // new, add to list of addrs
+ addr.id(resp);
+ fleshedUser.addresses().push(addr);
+ } else {
+ // deleted, remove from list of addrs
+ if(addr.isdeleted()) {
+ hideMe($n(row, 'myopac_pending_addr_td'));
+ var addrs = [];
+ for(var i in fleshedUser.addresses()) {
+ var a = fleshedUser.addresses()[i];
+ if(a.id() != addr.id()) addrs.push(a);
+ }
+ fleshedUser.addresses(addrs);
+ }
+ }
+ alertId('myopac_addr_changes_saved');
+ }
+ );
+ req.send();
+}
+
+function myOPACSavePrefs() {
+ G.user.prefs[PREF_HITS_PER] = getSelectorVal($('prefs_hits_per'));
+ G.user.prefs[PREF_DEF_FONT] = getSelectorVal($('prefs_def_font'));
+ G.user.prefs[PREF_DEF_DEPTH] = getSelectorVal($('prefs_def_range'));
+
+ var holdsPhone = $("opac.hold_notify.phone");
+ var holdsEmail = $("opac.hold_notify.email");
+ var circStartBox = $('circHistStart').checked;
+ var circStart = null;
+ circStart = (circStartBox && G.user.prefs[PREFS_CIRC_HIST_START])?G.user.prefs[PREFS_CIRC_HIST_START]:dojo.date.stamp.toISOString(new Date());
+ if(!circStartBox) circStart = null;
+
+ G.user.prefs[PREFS_HOLD_PHONE] = holdsPhone.checked;
+ G.user.prefs[PREFS_HOLD_EMAIL] = holdsEmail.checked;
+ G.user.prefs[PREFS_PREDUE_3DAY] = $(PREFS_PREDUE_3DAY).checked;
+ G.user.prefs[PREFS_OVER_FIRST] = $(PREFS_OVER_FIRST).checked;
+ G.user.prefs[PREFS_OVER_FIRST_P] = $(PREFS_OVER_FIRST_P).checked;
+ G.user.prefs[PREFS_HOLD_EXPIRE] = $(PREFS_HOLD_EXPIRE).checked;
+ G.user.prefs[PREFS_HOLD_CANCEL] = $(PREFS_HOLD_CANCEL).checked;
+ //G.user.prefs[PREFS_CIRC_HIST_AGE] = "2592000";
+ G.user.prefs[PREFS_CIRC_HIST_START] = circStart;
+
+ if( $('myopac_pref_home_lib').checked == true )
+ G.user.prefs[PREF_DEF_LOCATION] = null;
+ else
+ G.user.prefs[PREF_DEF_LOCATION] = getSelectorVal($('prefs_def_location'));
+
+ try {
+ if(commitUserPrefs())
+ alert($('prefs_update_success').innerHTML);
+ else alert($('prefs_update_failure').innerHTML);
+ } catch(e) {
+ alert(e);
+ }
+ fieldmapper.standardRequest(FETCH_CHECKED_HISTORY,{params:[G.user.session, G.user.id()],oncomplete:function(r){
+ var resp = r.recv();
+ if(resp) resp = resp.content();
+ }});
+}
+
+function myOPACUpdateEmail() {
+ var email = $('myopac_new_email').value;
+ if(email == null || email == "") {
+ alert($('myopac_email_error').innerHTML);
+ return;
+ }
+
+ var req = new Request(UPDATE_EMAIL, G.user.session, email );
+ req.send(true);
+ if(req.result()) {
+ //G.user.email(email);
+ // force re-fetch to pick up latest last_xact_id
+ grabUser(null, true);
+ hideMe($('myopac_update_email_row'));
+ userShown = false;
+ alertId('myopac_email_success');
+ myOPACShowUser(true);
+
+ // user got here after trying to make a payment then deciding
+ // the email addr needed updating. take the user back to the
+ // in-progress payment form
+ if(myopacReturnToPayment) {
+ myopacReturnToPayment = false;
+ myOPACChangePage("summary");
+ $('myopac-cc-email').innerHTML = email;
+ }
+ return;
+ }
+
+ alert($('myopac_email_failure').innerHTML);
+}
+
+function myOPACUpdatePassword() {
+ var curpassword = $('myopac_current_password').value;
+ var password = $('myopac_new_password').value;
+ var password2 = $('myopac_new_password2').value;
+
+ if( curpassword == null || curpassword == "" ||
+ password == null || password == "" ||
+ password2 == null || password2 == "" || password != password2 ) {
+ alert($('myopac_password_error').innerHTML);
+ return;
+ }
+
+ if(!strongPassword(password, true)) return;
+
+ var req = new Request(UPDATE_PASSWORD, G.user.session, password, curpassword );
+ req.send(true);
+ if(req.result()) {
+ grabUser(null, true);
+ hideMe($('myopac_update_password_row'));
+ userShown = false;
+ alertId('myopac_password_success');
+ myOPACShowUser(true);
+ return;
+ }
+
+ alert($('myopac_password_failure').innerHTML);
+}
+
+function myOPACUpdatePhone(which) {
+ if(!which) return;
+ var tr = $('myopac_update_phone'+which+'_row');
+ var input = $('myopac_new_phone'+which);
+ if(!tr || !input) return;
+ var val = input.value;
+ if(!val.match(REGEX_PHONE)) {
+ alert("Not a valid phone number. Should be in the form ###-###-####");
+ input.focus();
+ input.select();
+ return;
+ }
+
+ var newUser = fleshedUser.clone(true);
+ switch(which) {
+ case "1": newUser.day_phone(val); break;
+ case "2": newUser.evening_phone(val); break;
+ case "3": newUser.other_phone(val); break;
+ }
+
+ newUser.ischanged("t");
+ var resp = fieldmapper.standardRequest(['open-ils.actor', 'open-ils.actor.patron.update'], {async:false, params:[G.user.session, newUser]});
+ if(typeof(resp.desc)=="undefined") {
+ hideMe(tr);
+ userShown = false;
+ fleshedUser = resp;
+ alert("Phone number updated successfully.");
+ myOPACShowUser(true);
+ } else {
+ alert(resp.textcode+'\n'+resp.desc);
+ input.focus();
+ input.select();
+ }
+}
+
+function myOPACUpdateUsername() {
+ var username = $('myopac_new_username').value;
+ if(username == null || username == "") {
+ alert($('myopac_username_error').innerHTML);
+ return;
+ }
+
+ if( username.match(/.*\s.*/) ) {
+ alert($('myopac_invalid_username').innerHTML);
+ return;
+ }
+
+ r = fetchOrgSettingDefault(globalOrgTree.id(), 'opac.barcode_regex');
+ if(r) REGEX_BARCODE = new RegExp(r);
+
+ if(username.match(REGEX_BARCODE)) {
+ alert($('myopac_invalid_username').innerHTML);
+ return;
+ }
+
+ /* first see if the requested username is taken */
+ var req = new Request(CHECK_USERNAME, G.user.session, username);
+ req.send(true);
+ var res = req.result();
+ if( res !== null && res != G.user.id() ) {
+ alertId('myopac_username_dup');
+ return;
+ }
+
+ var req = new Request(UPDATE_USERNAME, G.user.session, username );
+ req.send(true);
+ if(req.result()) {
+
+ var evt;
+ var res = req.result();
+ if(evt = checkILSEvent(res)) {
+ alertILSEvent(res);
+ return;
+ }
+
+ grabUser(null, true);
+ hideMe($('myopac_update_username_row'));
+ userShown = false;
+ alertId('myopac_username_success');
+ myOPACShowUser(true);
+ return;
+ }
+
+ alert($('myopac_username_failure').innerHTML);
+}
+
+function iForgotMyPassword(un,email) {
+ if(!un) return;
+ //var type = un.match(/^\d+$/)?'barcode':'username';
+ fieldmapper.standardRequest(PASS_RESET,{params:['barcode',un,email],oncomplete:function(rr){
+ var resp = rr.recv().content();
+ if(resp.textcode=="ACTOR_USER_NOT_FOUND") fieldmapper.standardRequest(PASS_RESET,{params:['username',un,email],oncomplete:function(r){
+ var resp2 = r.recv().content();
+ if(resp2.textcode) alert(resp2.textcode+'\n'+resp2.desc);
+ else { alert("Password reset request sent successfully."); unHideMe($('login_box'));hideMe($('forget_pw')); }
+ }}); else {
+ if(resp.textcode) alert(resp.textcode+'\n'+resp.desc);
+ else { alert("Password reset request sent successfully."); unHideMe($('login_box'));hideMe($('forget_pw')); }
+ }
+ }});
+}
+
+function myOPACShowBookbags(force) {
+ if(anonListCache.length) drawAnonLists(force); else hideMe($('acct_list_template2'));
+ var wrapper = $('acct_lists_prime');
+ if(!containerTemplate) containerTemplate = wrapper.removeChild($('acct_list_template')); else if(!force) return;
+ if(!wrapper) return;
+
+ var containers = containerFetchAll();
+
+ var found = false;
+ for(var i in containers) {
+ found = true;
+ var cont = containers[i];
+ fleshedContainers[cont.id()] = cont;
+ var temp = containerTemplate.cloneNode(true);
+ var title = $n(temp, 'list_name');
+ var share = $n(temp, 'share_list_link');
+ var rem = $n(temp, 'remove_list');
+ if(!title || !share || !rem) continue;
+
+ title.appendChild(text(cont.name()));
+ share.onclick = myListAction;
+ share.listID = cont.id();
+ rem.value='delete';
+ rem.onclick = myListAction;
+ rem.listID = cont.id();
+ temp.setAttribute("id",temp.id + '_' + cont.id());
+
+ if(containers.length>1) {
+ var sel = $n(temp, 'list_actions');
+ var optg = elem('optgroup', {label:'Move Items to'});
+ for(var n in containers) {
+ var cont2 = containers[n];
+ if(cont2.id()==cont.id()) continue;
+ var opt = elem('option', {value:'move', container:cont2.id()}, cont2.name());
+ optg.appendChild(opt);
+ }
+ sel.appendChild(optg);
+ }
+
+ if(isTrue(cont.pub())) {
+ share.value='hide';
+ share.innerHTML = 'Un-share';
+ share.title='';
+ var link = $n(temp,'share_list_rss');
+ link.setAttribute('href', buildExtrasLink( 'feed/bookbag/rss2-full/'+cont.id(), false));
+ unHideMe(link);
+ } else {
+ share.value='share';
+ share.title = 'Sharing this bookbag will allow the contents of the bookbag to be seen by others.'
+ share.innerHTML = 'Share';
+ }
+
+ wrapper.appendChild(temp);
+ // grab container items after adding each list to the page
+ fieldmapper.standardRequest(FETCH_CONTAINER_DETAILS,{params:[G.user.session, 'biblio', cont.id()],oncomplete:drawListItemRows});
+ }
+
+ if(!found) wrapper.appendChild(elem("div",{style:"font-weight:bold;text-align:center;font-size:14px;"},"You have not created any lists"));
+
+ var anonSel = $('sel_all_list_anon');
+ if(!anonSel) return;
+ var optg2 = elem('optgroup', {label:'Move Items to', id:'anon_list_grp'});
+ for(var t in containers) {
+ var cont3 = containers[t];
+ var opt2 = elem('option', {value:'move', container:cont3.id()}, cont3.name());
+ optg2.appendChild(opt2);
+ }
+ anonSel.appendChild(optg2);
+}
+
+function drawAnonLists() {
+ var cont = $('acct_list_template2');
+ var bibs = fieldmapper.standardRequest(FETCH_MODS_SLIM, {async:false, params:[anonListCache]});
+
+ var tbody = $('anon_list_tbody');
+ for(var i in bibs) {
+ var it = bibs[i];
+ var tr = elem('tr');
+ var td1 = elem('td',{style:'padding-right:5px;'},it.title());
+ var td2 = elem('td',{width:'1'});
+ var el = elem('input',{type:'checkbox', name:'list_action_chbx', recordid:it.doc_id()+'', doc_id:it.doc_id()+'', listID:'anon'});
+ el.className = "list_action_chbx";
+ el.name="list_action_chbx";
+ td2.appendChild(el);
+ tr.appendChild(td2);
+ tr.appendChild(td1);
+ tbody.appendChild(tr);
+ }
+ unHideMe(cont);
+}
+
+function drawListItemRows(r) {
+ var fleshed = r.recv().content();
+ if(!fleshed) return;
+ var modsArr = [];
+
+ var temp = $('acct_list_template_'+fleshed.id());
+ if(!temp) return;
+ var tbody = $n(temp,'list_tbody');
+ if(!tbody) return;
+ var items = fleshed.items();
+
+ for(var i=0; i<items.length; i++) {
+ var it = items[i];
+ var tr = elem('tr');
+ var td1 = elem('td',{'class':'list_item_title_'+it.target_biblio_record_entry(), style:'padding-right:5px;'});
+ td1.className = 'list_item_title_'+it.target_biblio_record_entry();
+ var td2 = elem('td',{width:'1'});
+
+ var el = elem('input',{type:'checkbox', name:'list_action_chbx','class':'list_action_chbx', recordid:it.target_biblio_record_entry()+'', itemID:it.id()+'',listID:fleshed.id()});
+ el.name="list_action_chbx";
+ el.className="list_action_chbx";
+ td2.appendChild(el);
+ tr.appendChild(td2);
+ tr.appendChild(td1);
+ tbody.appendChild(tr);
+ modsArr[i] = it.target_biblio_record_entry();
+ }
+
+ // yay for batching requests
+ if(modsArr.length) {
+ fieldmapper.standardRequest(FETCH_MODS_SLIM,{params:[modsArr],oncomplete:drawListItemTitles});
+ } else {
+ var tr = elem('tr');
+ var td = elem('td',{style:"font-weight:bold;font-size:14px;",align:'center'},'No items have been added to this list yet.');
+ td.style.fontWeight='bold';
+ td.style.fontSize='14px';
+ tr.appendChild(td);
+ tbody.appendChild(tr);
+ }
+}
+
+function drawListItemTitles(r) {
+ var rec = r.recv().content();
+ if(!rec) return;
+ for(var i in rec) {
+ var rows = dojo.query('.list_item_title_'+rec[i].doc_id()); //$c('list_item_title_'+rec[i].doc_id());
+ for(var n in rows) rows[n].innerHTML = rec[i].title();
+ }
+}
+
+function addMyList() {
+ var name = $('mylist_new').value;
+ if(!name) return false;
+
+ var exists = false;
+ for( var c in fleshedContainers ) { exists = true; break; }
+
+ /* let them know what they are getting into... */
+ if(!exists) if(!confirm($('bb_create_warning').innerHTML)) return false;
+ var result = containerCreate( name, $('shareListYes').checked );
+ var code = checkILSEvent(result);
+ if(code) { alertILSEvent(result); return false; }
+ //if(result) alert($('myopac_bb_update_success').innerHTML);
+ $('mylist_new').value="";
+ $('shareListYes').checked = false;
+ $('shareListNo').checked = true;
+ reloadMyLists();
+ return true;
+}
+
+function myListAction() {
+ if(!this.listID) return;
+ switch(this.value) {
+ case "delete": myOPACDeleteBookbag(this.listID); break;
+ case "share": myOPACMakeBBPublished(this.listID); break;
+ case "hide": myOPACMakeBBPublished(this.listID, true); break;
+ }
+}
+
+function myOPACMakeBBPublished(bbid, hideme) {
+ var bb = fleshedContainers[bbid];
+
+ if(hideme) {
+ if(!confirm($('myopac_make_unpublished_confirm').innerHTML)) return;
+ bb.pub('f');
+ } else {
+ if(!confirm($('myopac_make_published_confirm').innerHTML)) return;
+ bb.pub('t');
+ }
+
+ var result = containerUpdate(bb);
+ var code = checkILSEvent(result);
+ if(code) { alertILSEvent(result); return; }
+
+ //alert($('myopac_bb_update_success').innerHTML);
+ reloadMyLists();
+}
+
+function myOPACDeleteBookbag(id) {
+ if( confirm( $('myopac_delete_bookbag_warn').innerHTML ) ) {
+ var result = containerDelete(id);
+ var code = checkILSEvent(result);
+ if(code) { alertILSEvent(result); return; }
+ //alert($('myopac_bb_update_success').innerHTML);
+ //hideMe($('myopac_bookbag_items_table'));
+ //hideMe($('myopac_bookbag_items_name'));
+ //hideMe($('myopac_bookbag_no_items'));
+ reloadMyLists();
+ }
+}
+
+function reloadMyLists() {
+ var prime = $('acct_lists_prime');
+ var anon = $('anon_list_tbody');
+ $('sel_all_list_anon').removeChild($('anon_list_grp'));
+ removeChildren(prime);
+ removeChildren(anon);
+ prime.innerHTML = "";
+ myOPACShowBookbags(true);
+}
+
+function removeSelectedItems(parent) {
+ if(!parent) parent = $('acct_lists_prime');
+ var items = dojo.query('input[name=list_action_chbx]', parent);
+ if(!items.length) items = dojo.query('.list_action_chbx', parent);
+ items.filter(function(item, index, arr){return item.checked;},this);
+
+ if(items.length) {
+ for(var i=0; i<items.length; i++) {
+ var box = items[i];
+ if(box.checked) {
+ containerRemoveItem(box.getAttribute("itemID"));
+ }
+ }
+ }
+}
+
+var finesShown = false;
+function myOPACShowFines(showing) {
+ if(finesShown) return; finesShown = true;
+ var req = new Request(FETCH_FINES_SUMMARY, G.user.session, G.user.id() );
+ req.request.__showing = showing;
+ req.callback(_myOPACShowFines);
+ req.send();
+}
+
+function _myOPACShowFines(r) {
+ hideMe($('myopac_fines_summary_loading'));
+ unHideMe($('myopac_fines_summary_row'));
+
+ var summary = r.getResultObject();
+ var total = "0.00";
+ var paid = "0.00";
+ var balance = "0.00";
+ var balance2 = "0.00";
+
+ if( instanceOf(summary,mous) ) {
+ total = _finesFormatNumber(summary.total_owed());
+ paid = _finesFormatNumber(summary.total_paid());
+ balance = _finesFormatNumber(summary.balance_owed());
+ balance2 = _finesFormatNumber(summary.balance_owed());
+
+ var req = new Request(
+ 'open-ils.actor:open-ils.actor.user.transactions.have_balance.fleshed',
+ G.user.session, G.user.id() );
+
+ req.callback(myOPACShowTransactions);
+ req.send();
+ }
+
+ if(parseFloat(balance2) > 0.00) {
+ var bal = $('myopac_sum_fines_bal');
+ bal.style.color = "red";
+ appendClear(bal,text("$"+balance2));
+ unHideMe($('myopac_sum_fines'));
+ unHideMe($('myopac_sum_fines_slim'));
+ unHideMe($('pay_fines_btn'));
+ if(!r.__showing)
+ showFinesDiv($('show_fines_link'));
+ }
+
+ appendClear($('myopac_fines_summary_total'), text(total));
+ appendClear($('myopac_fines_summary_paid'), text(paid));
+ appendClear($('myopac_fines_summary_balance'), text(balance));
+}
+
+function _finesFormatNumber(num) {
+ if(isNull(num)) num = 0;
+ num = num + "";
+ if(num.length < 2 || !num.match(/\./)) num += ".00";
+ if(num.match(/\./) && num.charAt(num.length-2) == '.') num += "0";
+ return num;
+}
+
+function _trimTime(time) {
+ if(!time) return "";
+ var d = dojo.date.stamp.fromISOString(time);
+ if(!d) return ""; /* date parse failed */
+ return d.iso8601Format('YMD');
+}
+
+function _trimSeconds(time) {
+ if(!time) return "";
+ var d = dojo.date.stamp.fromISOString(time);
+ if(!d) return ""; /* date parse failed */
+ return d.iso8601Format('YMDHM',null,true,true);
+}
+
+function myOPACShowTransactions(r) {
+ var transactions = r.getResultObject();
+
+ if(!myopacGenericTransTemplate) myopacGenericTransTemplate = $('myopac_trans_tbody').removeChild($('myopac_trans_row'));
+ if(!myopacCircTransTemplate) myopacCircTransTemplate = $('myopac_circ_trans_tbody').removeChild($('myopac_circ_trans_row'));
+ removeChildren($('myopac_trans_tbody'));
+ removeChildren($('myopac_circ_trans_tbody'));
+ transCache = [];
+
+ transactions = transactions.sort(
+ function(a, b) {
+ if(a.transaction.xact_start() < b.transaction.xact_start())
+ return 1;
+ else return -1;
+ }
+ );
+
+ for( var idx in transactions ) {
+ var trans = transactions[idx].transaction;
+ var record = transactions[idx].record;
+ var circ = transactions[idx].circ;
+ if(trans.balance_owed() <= 0) continue; // XXX don't show negative-balance transactions for now
+ transCache[trans.id()] = transactions[idx];
+
+ if(trans.xact_type() == 'circulation') myOPACShowCircTransaction(trans, record, circ);
+ else if(trans.xact_type() == 'grocery') myopacShowGenericTransaction( trans );
+ }
+}
+
+// for toggling between payments and fines tabs
+function showFinesTab() {
+ hideMe($("myopac_payments_div"));
+ unHideMe($("pay-fines-image"));
+ unHideMe($("myopac_trans_div"));
+ unHideMe($("myopac_circ_trans_div"));
+ $('acct_fines_tab').style.background="url('/opac/skin/kcls/graphics/acct_fines_on.jpg') no-repeat bottom";
+ $('acct_payments_tab').style.background="url('/opac/skin/kcls/graphics/acct_payments_off.jpg') no-repeat bottom";
+}
+
+var paymentsDrawn = false;
+function myopacDrawPayments() {
+
+ unHideMe($("myopac_payments_div"));
+ hideMe($("myopac_circ_trans_div"));
+ hideMe($("myopac_trans_div"));
+ hideMe($("pay-fines-image"));
+ $('acct_fines_tab').style.background="url('/opac/skin/kcls/graphics/acct_fines_off.jpg') no-repeat bottom";
+ $('acct_payments_tab').style.background="url('/opac/skin/kcls/graphics/acct_payments_on.jpg') no-repeat bottom";
+
+ if(paymentsDrawn) return;
+ paymentsDrawn = true;
+ progressDialog.show(true);
+
+ var before = new Date()
+ before.setFullYear(before.getFullYear() - 1);
+ // KCLS limits payment history view to 1 year. This will eventually be expanded
+ // out to a history view page, but for now, just fetch what's needed.
+ var req = new Request(
+ 'open-ils.actor:open-ils.actor.user.payments.retrieve',
+ G.user.session, G.user.id(),
+ {"where":{"payment_ts":{">=":dojo.date.stamp.toISOString(before)}}});
+
+ req.callback(_myopacDrawPayments);
+ req.send();
+}
+
+function _myopacDrawPayments(r) {
+
+ progressDialog.hide();
+ var payments = r.getResultObject();
+ var tbody = $('myopac_payments_tbody');
+ rowTmpl = tbody.removeChild($('myopac_payments_tmpl'));
+
+ dojo.forEach(payments,
+ function(payment) {
+ var row = rowTmpl.cloneNode(true);
+ $n(row, 'date').innerHTML = dojo.date.locale.format(
+ dojo.date.stamp.fromISOString(payment.mp.payment_ts()),
+ {selector:'date', fullYear: true}
+ );
+ $n(row, 'for').innerHTML = (payment.title) ? payment.title : payment.last_billing_type;
+ $n(row, 'amount').innerHTML += Number(payment.mp.amount()).toFixed(2);
+ if(payment.mp.payment_type() == 'credit_card_payment') {
+ $n(row, 'print_recpt').onclick = function () { printPaymentReceipt([payment.mp.id()]) };
+ $n(row, 'email_recpt').onclick = function () { emailPaymentReceipt([payment.mp.id()]) };
+ } else {
+ $n(row, 'print_recpt').parentNode.style.visibility = 'hidden';
+ }
+ tbody.appendChild(row);
+ }
+ );
+}
+
+function emailPaymentReceipt(paymentIds, callback, noprog) {
+
+ if(!G.user.email()) {
+ if(callback) callback();
+ return;
+ }
+
+ if(!noprog) progressDialog.show(true);
+
+ fieldmapper.standardRequest(
+ ['open-ils.circ', 'open-ils.circ.money.payment_receipt.email'],
+ {
+ async : true,
+ params : [G.user.session, paymentIds],
+ oncomplete : function(r) {
+ if(!noprog) progressDialog.hide();
+ openils.Util.readResponse(r);
+ if(callback) callback();
+ }
+ }
+ );
+}
+
+function dateFromISO(d) {
+ if(!d) return '';
+ return dojo.date.locale.format(
+ dojo.date.stamp.fromISOString(d),
+ {selector:'date', fullYear: true}
+ );
+}
+
+function myopacShowGenericTransaction( trans ) {
+ var tbody = $('myopac_trans_tbody');
+
+ var row = myopacGenericTransTemplate.cloneNode(true);
+ $n(row,'myopac_trans_start').appendChild(text(dateFromISO(trans.xact_start())));
+ $n(row,'myopac_trans_last_payment').appendChild(text(dateFromISO(trans.last_payment_ts())));
+ $n(row,'myopac_trans_init_amount').appendChild(text(_finesFormatNumber(trans.total_owed())));
+ $n(row,'myopac_trans_total_paid').appendChild(text(_finesFormatNumber(trans.total_paid())));
+ $n(row,'myopac_trans_balance').appendChild(text(_finesFormatNumber(trans.balance_owed())));
+ $n(row,'selector').balance_owed = trans.balance_owed();
+ $n(row,'selector').setAttribute("xact", trans.id());
+ if(trans.balance_owed() <= 0) {
+ $n(row,'selector').disabled = true;
+ }
+
+
+ var req = new Request(FETCH_MONEY_BILLING, G.user.session, trans.id());
+ req.send(true);
+ var bills = req.result();
+ if(bills && bills[0]) $n(row,'myopac_trans_bill_type').appendChild(text(bills[0].billing_type()));
+
+ tbody.appendChild(row);
+ unHideMe($('myopac_trans_div'));
+}
+
+function myOPACShowCircTransaction(trans, record, circ) {
+ var tbody = $('myopac_circ_trans_tbody');
+
+ var row = myopacCircTransTemplate.cloneNode(true);
+ if(record) {
+ buildTitleDetailLink(record, $n(row,'myopac_circ_trans_title'));
+ $n(row,'myopac_circ_trans_author').appendChild(text(normalize(truncate(record.author(), 65))));
+ } else {
+ var req = new Request( FETCH_COPY, circ.target_copy() );
+ req.alertEvents = false;
+ req.send(true);
+ var copy = req.result();
+ if( copy ) {
+ $n(row,'myopac_circ_trans_title').appendChild(text(copy.dummy_title()));
+ $n(row,'myopac_circ_trans_author').appendChild(text(copy.dummy_author()));
+ }
+ }
+
+ $n(row,'myopac_circ_trans_start').appendChild(text(dateFromISO(trans.xact_start())));
+
+ var due = dateFromISO(circ.due_date());
+ var checkin = dateFromISO(circ.stop_fines_time());
+
+ $n(row,'myopac_circ_trans_due').appendChild(text(due))
+ if(checkin) appendClear($n(row,'myopac_circ_trans_finished'), text(checkin));
+ if(circ.stop_fines() == 'LOST') appendClear($n(row,'myopac_circ_trans_finished'), text(circ.stop_fines()));
+ if(circ.stop_fines() == 'CLAIMSRETURNED') appendClear($n(row,'myopac_circ_trans_finished'), text(""));
+ $n(row,'myopac_circ_trans_balance').appendChild(text(_finesFormatNumber(trans.balance_owed())));
+ $n(row,'selector').balance_owed = trans.balance_owed();
+ $n(row,'selector').setAttribute("xact",trans.id());
+ if(trans.balance_owed() <= 0) {
+ $n(row,'selector').disabled = true;
+ }
+
+ tbody.appendChild(row);
+ unHideMe($('myopac_circ_trans_div'));
+}
+
+function showFinesDiv(el) {
+ if(!el) return;
+ if($('myopac_fines_div').className.indexOf('hide_me')>=0) {
+ unHideMe($('myopac_fines_div'));
+ el.innerHTML="Hide Overdue Materials";
+ if(!finesShown) {
+ myOPACShowFines(true);
+ }
+ } else {
+ hideMe($('myopac_fines_div'));
+ el.innerHTML="Show Overdue Materials";
+ }
+}
+
+var ecom_event_map = {
+ CREDIT_PROCESSOR_DECLINED_TRANSACTION :
+ 'Sorry. Your payment has been declined. Please confirm your information is entered correctly or contact your credit card company.',
+ CREDIT_PROCESSOR_INVALID_CC_NUMBER :
+ 'The credit card number entered is not valid. Please confirm your information is entered correctly or contact your credit card company.',
+ SUCCESS : 'Your payment has been approved'
+}
+
+function showPaymentForm() {
+ unHideMe($('pay_fines_now'));
+ hideMe($('acct_sum'));
+ hideMe($('cc-payment-error-message'));
+ drawPayFinesPage(
+ G.user,
+ getSelectedFinesTotal(),
+ getSelectedFineTransactions(),
+ function(resp) {
+ unHideMe($('cc-payment-error-message'));
+ if(resp.textcode) {
+ var message = ecom_event_map[resp.textcode] || resp.textcode+'\n'+resp.desc + '';
+ if(resp.payload && resp.payload.error_message)
+ message += '<br/>' + resp.payload.error_message
+ $('cc-payment-error-message').innerHTML = message;
+ return;
+ }
+ G.user.last_xact_id(resp.last_xact_id); // update to match latest from server
+ $('cc-payment-error-message').innerHTML = ecom_event_map.SUCCESS;
+ printPaymentReceipt(resp.payments, function() { location.href = location.href; } );
+ emailPaymentReceipt(resp.payments, null, false);
+ /*
+ hideMe($('pay_fines_now'));unHideMe($('acct_sum'));
+ finesShown = false;
+ myOPACShowFines();
+ showFinesDiv($('show_fines_link'));
+ */
+ }
+ );
+}
+
+function getSelectedFinesTotal() {
+ var total = 0;
+ dojo.forEach(
+ dojo.query("[name=selector]", $('myopac_circ_trans_tbody')),
+ function(input) { if(input.checked && input.getAttribute("xact")) total += Number(input.balance_owed); }
+ );
+
+ dojo.forEach(
+ dojo.query("[name=selector]", $('myopac_trans_tbody')),
+ function(input) { if(input.checked && input.getAttribute("xact")) total += Number(input.balance_owed); }
+ );
+ return total.toFixed(2);
+}
+
+function getSelectedFineTransactions() {
+ var set1 = dojo.query("[name=selector]", $('myopac_circ_trans_tbody')).
+ filter(function (o) { return o.checked }).
+ map(function (o) {return [o.getAttribute("xact"), Number(o.balance_owed).toFixed(2)];}
+ );
+ var set2 = dojo.query("[name=selector]", $('myopac_trans_tbody')).
+ filter(function (o) { return o.checked }).
+ map(function (o) {return [o.getAttribute("xact"), Number(o.balance_owed).toFixed(2)];}
+ );
+ var obj = set1.concat(set2);
+ return obj.filter(function(el){return el[0]==null?false:true;});
+}
+
+var payFinesDrawn = false;
+function drawPayFinesPage(patron, total, xacts, onPaymentSubmit) {
+ if (typeof(this.authtoken) == "undefined")
+ this.authtoken = patron.session;
+
+ dojo.query("span", "oils-selfck-cc-payment-summary")[0].innerHTML = total;
+
+ $('myopac-cc-email').innerHTML = patron.email();
+ oilsSelfckCCNumber.attr('value', '');
+ oilsSelfckCCCVV.attr('value', '');
+ oilsSelfckCCMonth.attr('value', '01');
+ oilsSelfckCCYear.attr('value', new Date().getFullYear());
+ oilsSelfckCCFName.attr('value', patron.first_given_name());
+ oilsSelfckCCLName.attr('value', patron.family_name());
+
+ var addr = patron.billing_address() || patron.mailing_address();
+
+ if (typeof(addr) != "object") {
+ /* still don't have usable address? try getting better user object. */
+ fieldmapper.standardRequest(
+ FETCH_FULL_USER, {
+ "params": [patron.session, patron.id(), ["billing_address", "mailing_address"]],
+ "async": false,
+ "oncomplete": function(r) {
+ var usr = r.recv().content();
+ if (usr) addr = usr.billing_address() || usr.mailing_address();
+ }
+ }
+ );
+ }
+
+ if (addr) {
+ //oilsSelfckCCStreet.attr('value', addr.street1()+' '+addr.street2());
+ oilsSelfckCCCity.attr('value', addr.city());
+ oilsSelfckCCState.attr('value', addr.state());
+ oilsSelfckCCZip.attr('value', addr.post_code());
+ }
+
+ dojo.connect(oilsSelfckEditDetails, 'onChange',
+ function(newVal) {
+ dojo.forEach(
+ [oilsSelfckCCFName, oilsSelfckCCLName, oilsSelfckCCStreet, oilsSelfckCCCity, oilsSelfckCCState, oilsSelfckCCZip],
+ function(dij) { dij.attr('disabled', !newVal); }
+ );
+ }
+ );
+
+ if(!payFinesDrawn) {
+ dojo.connect(oilsSelfckCCSubmit, 'onClick',
+ function() {
+ hideMe($('pay_fines_now'));
+ unHideMe($('pay_fines_confirm'));
+
+ $('pay_fines_confirm_amount').innerHTML =
+ dojo.query("span", "oils-selfck-cc-payment-summary")[0].innerHTML;
+
+ dojo.connect(payConfirmSubmit, 'onClick',
+ function() {
+ if (typeof(progressDialog) != "undefined") progressDialog.show(true);
+ unHideMe($('pay_fines_now'));
+ hideMe($('pay_fines_confirm'));
+ sendCCPayment(patron, xacts, onPaymentSubmit);
+ }
+ );
+
+ dojo.connect(payConfirmCancel, 'onClick',
+ function() {
+ unHideMe($('pay_fines_now'));
+ hideMe($('pay_fines_confirm'));
+ }
+ );
+
+ /*
+ if(!confirm("Are you sure?")) return;
+ sendCCPayment(patron, xacts, onPaymentSubmit);
+ */
+ }
+ );
+ payFinesDrawn = true;
+ }
+
+ var selFines = $('selectedFines');
+ removeChildren(selFines);
+ for(var i in xacts) {
+ var xact = transCache[xacts[i][0]];
+ if(!xact) continue;
+ var tr = elem('tr');
+ var td1 = elem('td', {}, xact["record"]?xact.record.title():xact.transaction.last_billing_type());
+ var td2 = elem('td', {'nowrap':'nowrap', 'valign':'top'}, '$'+xact.transaction.balance_owed());
+ td2.style.paddingLeft = '5px';
+ td2.style.color = 'red';
+ tr.appendChild(td1);
+ tr.appendChild(td2);
+ selFines.appendChild(tr);
+ }
+}
+
+function sendCCPayment(patron, xacts, onPaymentSubmit) {
+ // in this context, patron will always be G.user. set it explicitly
+ // to pick up the latest last_xact_id value
+ patron = G.user;
+
+ var args = {
+ userid : patron.id(),
+ payment_type : 'credit_card_payment',
+ payments : xacts,
+ cc_args : {
+ where_process : 1,
+ //type : 'MasterCard',//oilsSelfckCCType.attr('value'),
+ number : oilsSelfckCCNumber.attr('value'),
+ cvv2 : oilsSelfckCCCVV.attr('value'),
+ expire_year : oilsSelfckCCYear.attr('value'),
+ expire_month : oilsSelfckCCMonth.attr('value'),
+ billing_first : oilsSelfckCCFName.attr('value'),
+ billing_last : oilsSelfckCCLName.attr('value'),
+ billing_address : oilsSelfckCCStreet.attr('value'),
+ billing_city : oilsSelfckCCCity.attr('value'),
+ billing_state : oilsSelfckCCState.attr('value'),
+ billing_zip : oilsSelfckCCZip.attr('value')
+ }
+ }
+
+ var resp = fieldmapper.standardRequest(PAY_BILLS,{params : [patron.session, args, patron.last_xact_id()]});
+ if (typeof(progressDialog) != "undefined")
+ progressDialog.hide();
+
+ if (typeof(onPaymentSubmit) == "function") {
+ onPaymentSubmit(resp);
+ } else {
+ var evt = openils.Event.parse(resp);
+ if (evt) alert(evt);
+ }
+}
+
+function myopacSelectedHoldsRows() {
+ var r = [];
+ var cb;
+ var rows = dojo.query('[name=acct_holds_temp]',$("holds_temp_parent"));
+ for(var i = 0; i < rows.length; i++) {
+ cb = $n(rows[i], 'check_all_holds');
+ if(cb && cb.checked)
+ r.push(rows[i]);
+ }
+ return r;
+}
+
+var myopacProcessedHolds = 0;
+var myopacHoldsToProcess = 0;
+function myopacDoHoldAction() {
+ var selectedRows = myopacSelectedHoldsRows();
+ var action = getSelectorVal($('acct_holds_actions'));
+ $('myopac_holds_actions_none').selected = true;
+ if(selectedRows.length == 0) return;
+
+ myopacProcessedHolds = 0;
+
+ if(!confirmId('myopac.holds.'+action+'.confirm')) return;
+ //myopacSelectNoneHolds(); /* clear the selection */
+
+
+ /* first, let's collect the holds that actually need processing and
+ collect the full process count while we're at it */
+ var holds = [];
+ for(var i = 0; i < selectedRows.length; i++) {
+ var ahold = $n(selectedRows[i],'check_all_holds');
+ var hold = holdsCache[holdsCacheMap[ahold.holdid]];
+ var qstats = hold.status;
+ switch(action) {
+ case 'cancel':
+ holds.push(hold.hold);
+ break;
+ case 'thaw_date':
+ case 'thaw':
+ if(isTrue(hold.hold.frozen()))
+ holds.push(hold.hold);
+ break;
+ case 'freeze':
+ if(!isTrue(hold.hold.frozen()) && qstats < 3)
+ holds.push(hold.hold);
+ break;
+ }
+ }
+
+ myopacHoldsToProcess = holds;
+ if(myopacHoldsToProcess.length == 0) return;
+
+ if(action == 'thaw_date' || action == 'freeze')
+ myopacDrawHoldThawDateForm();
+ else
+ myopacProcessHolds(action);
+}
+
+function myopacDrawHoldThawDateForm() {
+ hideMe($('myopac_holds_div'));
+ unHideMe($('myopac_holds_thaw_date_form'));
+ $('myopac_holds_thaw_date_input').focus();
+}
+
+function myopacApplyThawDate() {
+ var dateString = dijit.byId('myopac_holds_thaw_date_input').getValue();
+ if(dateString) {
+ dateString = dojo.date.stamp.toISOString(dateString);
+ if(dateString) {
+ dateString = holdsVerifyThawDate(dateString);
+ if(!dateString) return;
+ } else {
+ dateString = null;
+ }
+ }
+ unHideMe($('myopac_holds_div'));
+ hideMe($('myopac_holds_thaw_date_form'));
+ myopacProcessHolds('freeze', dateString);
+}
+
+
+function myopacProcessHolds(action, thawDate) {
+ progressDialog.show(true);
+ // myopacShowHoldProcessing();
+ /* now we process them */
+ for(var i = 0; i < myopacHoldsToProcess.length; i++) {
+ var hold = myopacHoldsToProcess[i];
+
+ var req;
+ switch(action) {
+
+ case 'cancel':
+ req = new Request(CANCEL_HOLD, G.user.session, hold.id());
+ break;
+
+ case 'thaw':
+ hold.frozen('f');
+ hold.thaw_date(null);
+ req = new Request(UPDATE_HOLD, G.user.session, hold);
+ break;
+
+ case 'thaw_date':
+ case 'freeze':
+ hold.frozen('t');
+ hold.thaw_date(thawDate);
+ req = new Request(UPDATE_HOLD, G.user.session, hold);
+ break;
+ //thawDate = prompt($('myopac.holds.freeze.select_thaw').innerHTML);
+
+ }
+
+ req.callback(myopacBatchHoldCallback);
+ req.send();
+ req = null;
+ }
+}
+
+function myopacBatchHoldCallback(r) {
+ var res = r.getResultObject();
+ myopacHoldsToProcess = grep(myopacHoldsToProcess, function(i) { return (i.id() != res); });
+ if(!myopacHoldsToProcess || ++myopacProcessedHolds >= myopacHoldsToProcess.length) {
+ //alert(res);
+ progressDialog.hide();
+ myopacForceHoldsRedraw = true;
+ $('check_all_holds').checked = false;
+ drawHoldsPage();
+ }
+}
+
+function myOPACRenewSelected() {
+ var rows = dojo.query('input[name=check_all_checked]',$('checked_temp_parent')).filter(function(n,i){ return n.checked; });
+ __renew_circs = [];
+ if(!rows.length || !confirm($('myopac_renew_confirm').innerHTML)) return;
+ __success_count = 0;
+ __fail_count = 0;
+
+ for( var i = 0; i < rows.length; i++ ) {
+ var row = rows[i];
+ var circ_id = row.getAttribute('circid');
+
+ var circ;
+ for( var j = 0; j != itemsOutCache.length; j++ )
+ if(itemsOutCache[j].circ.id() == circ_id)
+ circ = itemsOutCache[j].circ;
+
+ __renew_circs.push(circ);
+ }
+
+ if( __renew_circs.length == 0 ) return;
+
+ //unHideMe($('my_renewing'));
+ //moClearCheckedTable();
+
+ for( var i = 0; i < __renew_circs.length; i++ ) {
+ var circ = __renew_circs[i];
+ moRenewCirc( circ.target_copy(), G.user.id(), circ );
+ }
+}
+
+var __renew_circs = [];
+var __rewnew_errors = [];
+var __success_count = 0;
+var __fail_count = 0;
+function moRenewCirc(copy_id, user_id, circ) {
+
+ _debug('renewing circ ' + circ.id() + ' with copy ' + copy_id);
+ var req = new Request(RENEW_CIRC, G.user.session,
+ { patron : user_id,
+ copyid : copy_id,
+ opac_renewal : 1
+ }
+ );
+
+ req.request.alertEvent = false;
+ req.callback(myHandleRenewResponse);
+ req.request.circ = circ;
+ req.send();
+}
+
+/* handles the circ renew results */
+
+function myHandleRenewResponse(r) {
+ try{ var res = r.getResultObject(); } catch(e){ alert("Renew Error\n\n"+e); __renew_circs = []; __rewnew_errors = []; return; }
+ var circ = r.circ;
+
+ /* remove this circ from the list of circs to renew */
+ if(checkILSEvent(res) || checkILSEvent(res[0])) {
+ var str1 = truncate(mvrObjCache[circ.target_copy()].title(),65)+'\n';
+ if(res.ilsevent) str1 += res.ilsevent+': '+res.desc+'\n'; else for(var i in res) str1 += res[i].ilsevent+': '+res[i].desc+'\n';
+ __rewnew_errors[circ.id()] = str1;
+ }
+ __renew_circs = grep(__renew_circs, function(i) { return (i.id() != circ.id()); });
+ _debug("handling renew result for " + circ.id());
+
+ if(checkILSEvent(res) || checkILSEvent(res[0])) __fail_count++;
+ //alertIdText('myopac_renew_fail', __circ_titles[circ.id()]);
+ else __success_count++;
+
+ if(__renew_circs) return; /* more to come */
+ __renew_circs = [];
+
+ var str = "";
+ if(__success_count) str+= __success_count+" items renewed successfully";
+ if(__fail_count) str+=__fail_count+" items did not renew.";
+ str+='\n\n';
+ for(var i in __rewnew_errors) str+=__rewnew_errors[i]+'\n';
+
+ if(__success_count || __fail_count) alert(str);
+ __rewnew_errors = [];
+
+ //if( __success_count > 0 )
+ // alertIdText('myopac_renew_success', __success_count);
+
+ hideMe($('my_renewing'));
+ checkedDrawn = false;
+ drawCheckedPage();
+ $('check_all_checked').checked = false;
+}
+
+
+function moveToNewList(parent, dest) {
+ if(!parent || !dest) return;
+
+ var items = dojo.query('input[name=list_action_chbx]', parent);
+ if(!items.length) items = dojo.query('.list_action_chbx', parent);
+ items.filter(function(item, index, arr){return item.checked;},this);
+
+ if(items.length) {
+ for(var i=0; i<items.length; i++) {
+ var box = items[i];
+ if(box.checked) {
+ containerCreateItem(dest, box.getAttribute("recordid"));
+ }
+ }
+ }
+}
+
+function listSaveAction() {
+ var lists = dojo.query('select[name=list_actions]',$('temp_wrapper')).filter(function(n,i){
+ return n.options[n.selectedIndex].value!="0"
+ });
+
+ if(lists.length) { if(!confirm("Proceed with the selected action(s)?")) return; } else return;
+ progressDialog.show(true);
+ var updateHolds = false;
+ var updateLists = false;
+
+ lists.forEach(function(n,i){
+ var val = n.options[n.selectedIndex].value;
+ if(val=="0") return;
+ var p = n.parentNode.parentNode.parentNode.parentNode.parentNode;
+ switch(val) {
+ case "hold": batchHoldMyList(null, p); updateHolds = true; break;
+ case "move": if(n.id=='sel_all_list_anon') delSelCache(p, 'list_action_chbx');
+ else removeSelectedItems(p); moveToNewList(p, n.options[n.selectedIndex].getAttribute("container"));
+ updateLists = true; break;
+ case "remove": if(n.id=='sel_all_list_anon') delSelCache(p, 'list_action_chbx');
+ else removeSelectedItems(p);
+ updateLists = true; break;
+ }
+ setSelector(n, "0");
+ });
+
+ if(updateLists) reloadMyLists();
+ if(updateHolds) { myopacForceHoldsRedraw = true; drawHoldsPage(); }
+ progressDialog.hide();
+}
+
+var itemsOutHistoryInitialFetch = false;
+function switchSubPage(page, subpage) {
+ if(!page || !subpage) return;
+
+ var pg = subPageObjs[page]; if(!pg) return;
+ var spg = subPageObjs[page][subpage]; if(!spg) return;
+
+ for(var i in pg) { if(i!='header') for(var n in pg[i]){ if(pg[i][n] || n!='header') hideMe(pg[i][n]); } }
+ for(var t in spg) { if(spg[t] || t!='header') unHideMe(spg[t]); }
+
+ pg.header.innerHTML = spg.header;
+
+ if(page == 'checked' && subpage == 'hist') {
+ if(!itemsOutHistoryInitialFetch) {
+ itemsOutHistoryInitialFetch = true;
+ progressDialog.show(true);
+ fieldmapper.standardRequest(FETCH_CHECKED_HISTORY, {async:true, params:[G.user.session, G.user.id(), {'limit':CIRC_HIST_PAGE_LIMIT, 'offset':0}],
+ oncomplete:function(r) {
+ progressDialog.hide();
+ itemsOutHistory = openils.Util.readResponse(r);
+ drawCircHistory();
+ }
+ });
+ }
+ }
+}
+
+function doBatchAnonHolds() {
+ var error = {err:""};
+ var resp = placeBatchHold(holdsList, G.user.home_ou(), error);
+ if(resp == -1) alert("Unable to place holds"); else {
+ alert(resp+" hold"+(resp==1?"":"s")+" placed successfully\n\n"+error.err);
+ }
+
+ holdsList = null;
+ myopacForceHoldsRedraw = true;
+ drawHoldsPage();
+}
+
+function myOPACUpdateHomeOU() {
+ var sel = $('myopac_new_home');
+
+}
+
+var sortOrder = true;
+function sortHolds(by) {
+ if(!by) return;
+
+ sortOrder = !sortOrder;
+ switch(by.toLowerCase()) {
+ case "format":
+ holdsCache = holdsCache.sort(function(a, b) {
+ if(sortOrder) return get998dValue(imgFormatCache[a.hold.id()])<get998dValue(imgFormatCache[b.hold.id()])?-1:1;
+ else return get998dValue(imgFormatCache[a.hold.id()])>get998dValue(imgFormatCache[b.hold.id()])?-1:1;
+ });
+ break;
+ case "title":
+ holdsCache = holdsCache.sort(function(a, b) {
+ if(sortOrder) return a.mvr.title()<b.mvr.title()?-1:1;
+ else return a.mvr.title()>b.mvr.title()?-1:1;
+ });
+ break;
+ case "pickup":
+ holdsCache = holdsCache.sort(function(a, b) {
+ if(sortOrder) return findOrgUnit(a.hold.pickup_lib()).name()<findOrgUnit(b.hold.pickup_lib()).name()?-1:1;
+ else return findOrgUnit(a.hold.pickup_lib()).name()>findOrgUnit(b.hold.pickup_lib()).name()?-1:1;
+ });
+ break;
+ case "author":
+ holdsCache = holdsCache.sort(function(a, b) {
+ if(sortOrder) return a.mvr.author()<b.mvr.author()?-1:1;
+ else return a.mvr.author()>b.mvr.author()?-1:1;
+ });
+ break;
+ case "status":
+ if(sortOrder) {
+ drawHoldsPage(true);
+ return;
+ } else {
+ holdsCache = holdsCache.sort(function(a, b) {
+ if(a.status==4) return 1;
+ if(b.status==4) return -1;
+ if(isTrue(a.hold.frozen())) return -1;
+ if(isTrue(b.hold.frozen())) return 1;
+ return dojo.date.stamp.fromISOString(a.hold.request_time()) > dojo.date.stamp.fromISOString(b.hold.request_time())?-1:1;
+ });
+ }
+ }
+
+ drawHoldsPage(false);
+}
+
+function sortChecked(by) {
+ if(!by) return;
+
+ sortOrder = !sortOrder;
+ switch(by.toLowerCase()) {
+ case "title":
+ itemsOutCache = itemsOutCache.sort(function(a, b) {
+ if(sortOrder) return a.record.title()<b.record.title()?-1:1;
+ else return a.record.title()>b.record.title()?-1:1;
+ });
+ break;
+ case "author":
+ itemsOutCache = itemsOutCache.sort(function(a, b) {
+ if(sortOrder) return a.record.author()<b.record.author()?-1:1;
+ else return a.record.author()>b.record.author()?-1:1;
+ });
+ break;
+ case "due":
+ if(sortOrder) {
+ drawCheckedPage(); return;
+ } else itemsOutCache = itemsOutCache.sort(function(a, b) {
+ return dojo.date.stamp.fromISOString(a.circ.due_date()) < dojo.date.stamp.fromISOString(b.circ.due_date())?1:-1;
+ });
+ break;
+ case "barcode":
+ itemsOutCache = itemsOutCache.sort(function(a, b) {
+ if(sortOrder) return Number(a.copy.barcode())<Number(b.copy.barcode())?-1:1;
+ else return Number(a.copy.barcode())>Number(b.copy.barcode())?-1:1;
+ });
+ break;
+ case "cn":
+ itemsOutCache = itemsOutCache.sort(function(a, b) {
+ if(sortOrder) return callNumCache[a.copy.call_number()]<callNumCache[b.copy.call_number()] ?-1:1;
+ else return callNumCache[a.copy.call_number()]>callNumCache[b.copy.call_number()]?-1:1;
+ });
+ break;
+ case "renews":
+ itemsOutCache = itemsOutCache.sort(function(a, b) {
+ if(sortOrder) return Number(a.circ.renewal_remaining())<Number(b.circ.renewal_remaining())?-1:1;
+ else return Number(a.circ.renewal_remaining())>Number(b.circ.renewal_remaining())?-1:1;
+ });
+ break;
+ }
+
+ drawCheckedPage(false);
+}
+
+function sortCheckedHist(by) {
+ if(!by) return;
+
+ sortOrder = !sortOrder;
+ switch(by.toLowerCase()) {
+ case "title":
+ itemsOutHistory = itemsOutHistory.sort(function(a, b) {
+ if(mvrObjCache[a.circ.target_copy()].title()==null) return 1;
+ if(mvrObjCache[b.circ.target_copy()].title()==null) return -1;
+ if(sortOrder) return mvrObjCache[a.circ.target_copy()].title().toLowerCase()<mvrObjCache[b.circ.target_copy()].title().toLowerCase()?-1:1;
+ else return mvrObjCache[a.circ.target_copy()].title().toLowerCase()>mvrObjCache[b.circ.target_copy()].title().toLowerCase()?-1:1;
+ });
+ break;
+ case "author":
+ itemsOutHistory = itemsOutHistory.sort(function(a, b) {
+ if(mvrObjCache[a.circ.target_copy()].author()==null) return 1;
+ if(mvrObjCache[b.circ.target_copy()].author()==null) return -1;
+ if(sortOrder) return mvrObjCache[a.circ.target_copy()].author().toLowerCase()<mvrObjCache[b.circ.target_copy()].author().toLowerCase()?1:-1;
+ else return mvrObjCache[a.circ.target_copy()].author().toLowerCase()>mvrObjCache[b.circ.target_copy()].author().toLowerCase()?1:-1;
+ });
+ break;
+ case "duedate":
+ if(sortOrder) {
+ drawCheckedPage(); return;
+ } else itemsOutHistory = itemsOutHistory.sort(function(a, b) {
+ return dojo.date.stamp.fromISOString(a.circ.due_date()) < dojo.date.stamp.fromISOString(b.circ.due_date())?1:-1;
+ });
+ break;
+ case "cn":
+ itemsOutHistory = itemsOutHistory.sort(function(a, b) {
+ // ya, i know, but it gets the job done.
+ if(sortOrder) return callNumCache[copyObjCache[a.circ.target_copy()].call_number()].label().toLowerCase()<callNumCache[copyObjCache[b.circ.target_copy()].call_number()].label().toLowerCase()?-1:1;
+ else return callNumCache[copyObjCache[a.circ.target_copy()].call_number()].label().toLowerCase()>callNumCache[copyObjCache[b.circ.target_copy()].call_number()].label().toLowerCase()?-1:1;
+ });
+ break;
+ }
+
+ drawCircHistory(false);
+}
+
+function printData(data, numItems, callback) {
+
+ //unHideMe($('receipt-print-frame-wrapper'));
+ receiptPrintDialog.show();
+
+ var frame = window["receipt-frame"];
+ frame.document.body.innerHTML = data;
+
+ var cancel = $('receipt-view-print-cancel');
+ cancel.onclick = function() {
+ frame.document.body.innerHTML = '';
+ receiptPrintDialog.hide();
+ if(callback) callback();
+ }
+
+ // user clicked the X control to close the dialog
+ dojo.connect(receiptPrintDialog, 'onCancel',
+ function() {
+ frame.document.body.innerHTML = '';
+ if(callback) callback();
+ }
+ );
+
+ $('receipt-view-print-button').onclick = function() {
+ frame.focus();
+ frame.print();
+ var sleepTime = 1000;
+ if(numItems > 0)
+ sleepTime += (numItems / 2) * 1000;
+
+ setTimeout(
+ function() {
+ cancel.onclick();
+ if(callback) callback(); // fire optional post-print callback
+ },
+ sleepTime
+ );
+ };
+}
+
+
+function printPaymentReceipt(paymentIds, callback, noprog) {
+ if(!noprog) progressDialog.show(true);
+
+ fieldmapper.standardRequest(
+ ['open-ils.circ', 'open-ils.circ.money.payment_receipt.print'],
+ {
+ async : true,
+ params : [G.user.session, paymentIds],
+ oncomplete : function(r) {
+ var resp = openils.Util.readResponse(r);
+ var output = "";
+ if(resp) output = resp.template_output();
+ if(!noprog) progressDialog.hide();
+ if(output) {
+ printData(output.data(), 1, callback);
+ } else {
+ var error = resp.error_output();
+ if(error) {
+ throw new Error("Error creating receipt: " + error.data());
+ } else {
+ throw new Error("No receipt data returned from server");
+ }
+ }
+ }
+ }
+ );
+}
+
+function printFinesReceipt(callback) {
+ progressDialog.show(true);
+
+ var params = [
+ G.user.session,
+ G.user.ws_ou(),
+ null,
+ 'format.selfcheck.fines',
+ 'print-on-demand',
+ [G.user.id()]
+ ];
+
+ fieldmapper.standardRequest(
+ ['open-ils.circ', 'open-ils.circ.fire_user_trigger_events'],
+ {
+ async : true,
+ params : params,
+ oncomplete : function(r) {
+ progressDialog.hide();
+ var resp = openils.Util.readResponse(r);
+ var output = resp.template_output();
+ if(output) {
+ printData(output.data(), 240, callback);
+ } else {
+ var error = resp.error_output();
+ if(error) {
+ throw new Error("Error creating receipt: " + error.data());
+ } else {
+ throw new Error("No receipt data returned from server");
+ }
+ }
+ }
+ }
+ );
+}
+
+function buildOrgSelAlt(selector, org, offset, namecol) {
+ if(!namecol) namecol = 'name';
+ if(!showXUL && !isTrue(org.opac_visible())) return; // for some reason, isXUL() is rather slow when used in a decently sized loop.
+ insertSelectorVal( selector, -1,
+ org[namecol](), org.id(), null, findOrgDepth(org) - offset );
+ var kids = org.children();
+ if (kids) {
+ for( var c = 0; c < kids.length; c++ )
+ buildOrgSelAlt( selector, kids[c], offset, namecol);
+ }
+}
+
+// alternative to checkAll that does not select <= balances... needs testing
+function checkAllXact(parent, id, name, balanceName) {//Object, string
+ var obj = typeof(id)=="object"?id:$(id);
+ if(!parent || !obj) return;
+ if(!name) name = id.toString();
+ dojo.forEach(parent.childNodes,
+ function(row) {
+ if(row.nodeName.match(/tr/i)) {
+ var input = dojo.query('input[name='+name+']', row)[0];
+ var balance = dojo.query('input[name='+balanceName+']', row)[0];
+ if(Number(balance) > 0)
+ balance.checked = obj.checked;
+ }
+ }
+ );
+ /*
+ var nodes = dojo.query('input[name='+name+']', parent);
+ if(!nodes.length) nodes = dojo.query('.'+name, parent);
+ nodes.forEach(function(node, index){
+ node.checked = obj.checked;
+ });
+ */
+}
--- /dev/null
+dojo.require('dojo.parser');
+dojo.require('dijit.Dialog');
+dojo.require('dijit.form.Button');
+dojo.require('dijit.form.TextBox');
+
+dojo.requireLocalization("openils.opac", "opac");
+opac_strings = dojo.i18n.getLocalization("openils.opac", "opac");
+
+dojo.addOnLoad(function() {
+ return; // XXX
+
+ // Create the password reset dialog
+ var pwResetFormDlg = createResetDialog();
+ dojo.parser.parse();
+
+ // Connect the buttons to submit / cancel events that override
+ // the default actions associated with the buttons to do
+ // pleasing Ajax things
+ dojo.connect(dijit.byId("cancelButton"), "onClick", function(event) {
+ event.preventDefault();
+ event.stopPropagation();
+ pwResetFormDlg.hide();
+ });
+ dojo.connect(dijit.byId("submitButton"), "onClick", function(event) {
+ event.preventDefault();
+ event.stopPropagation();
+ var xhrArgs = {
+ form: dojo.byId("requestReset"),
+ handleAs: "text",
+ load: function(data) {
+ pwResetFormDlg.hide();
+ passwordSubmission(opac_strings.PWD_RESET_SUBMIT_SUCCESS);
+ },
+ error: function(error) {
+ pwResetFormDlg.hide();
+ passwordSubmission(opac_strings.PWD_RESET_SUBMIT_ERROR);
+ }
+ }
+ var deferred = dojo.xhrPost(xhrArgs);
+ });
+ dojo.place("<tr><td colspan='2' align='center'><a class='classic_link' id='pwResetLink' onClick='dijit.byId(\"pwResetFormDlg\").show();'</a></td></tr>", "login_tbody");
+ dojo.query("#pwResetLink").attr("innerHTML", opac_strings.PWD_RESET_FORGOT_PROMPT);
+
+});
+
+function passwordSubmission( msg ) {
+ var responseDialog = new dijit.Dialog({
+ title: opac_strings.PWD_RESET_RESPONSE_TITLE,
+ style: "width: 35em"
+ });
+ responseDialog.startup();
+ var requestStatusDiv = dojo.create("div", { style: "width: 30em" });
+ var requestStatusMsg = dojo.create("div", { innerHTML: msg }, requestStatusDiv);
+ var okButton = new dijit.form.Button({
+ id: "okButton",
+ type: "submit",
+ label: opac_strings.OK
+ }).placeAt(requestStatusDiv);
+ responseDialog.attr("content", requestStatusDiv);
+ responseDialog.show();
+ dojo.connect(dijit.byId("okButton"), "onClick", responseDialog, "hide");
+}
+
+function createResetDialog() {
+ var pwResetFormDlg = new dijit.Dialog({
+ id: "pwResetFormDlg",
+ title: opac_strings.PWD_RESET_FORM_TITLE,
+ style: "width: 35em"
+ });
+ pwResetFormDlg.startup();
+
+ // Instantiate the form
+ var pwResetFormDiv = dojo.create("form", { id: "requestReset", style: "width: 30em", method: "post", action: "/opac/password/en-US" });
+ dojo.create("p", { innerHTML: opac_strings.PWD_RESET_SUBMIT_PROMPT }, pwResetFormDiv);
+ var pwResetFormTable = dojo.create("table", null, pwResetFormDiv);
+ var pwResetFormTbody = dojo.create("tbody", null, pwResetFormTable);
+ var pwResetFormRow = dojo.create("tr", null, pwResetFormTbody);
+ var pwResetFormCell = dojo.create("td", null, pwResetFormRow);
+ var pwResetFormLabel = dojo.create("label", null, pwResetFormCell);
+ dojo.attr(pwResetFormCell, { innerHTML: opac_strings.BARCODE_PROMPT });
+ pwResetFormCell = dojo.create("td", null, pwResetFormRow);
+ var barcodeText = new dijit.form.TextBox({
+ name: "barcode"
+ }).placeAt(pwResetFormCell);
+ pwResetFormRow = dojo.create("tr", {}, pwResetFormTbody);
+ pwResetFormCell = dojo.create("td", {}, pwResetFormRow);
+ dojo.attr(pwResetFormCell, { innerHTML: opac_strings.USERNAME_PROMPT });
+ pwResetFormCell = dojo.create("td", {}, pwResetFormRow);
+ var usernameText = new dijit.form.TextBox({
+ name: "username"
+ }).placeAt(pwResetFormCell);
+ dojo.create("br", null, pwResetFormDiv);
+ var submitButton = new dijit.form.Button({
+ id: "submitButton",
+ type: "submit",
+ label: opac_strings.SUBMIT_BUTTON_LABEL
+ }).placeAt(pwResetFormDiv);
+ var cancelButton = new dijit.form.Button({
+ id: "cancelButton",
+ type: "cancel",
+ label: opac_strings.CANCEL_BUTTON_LABEL
+ }).placeAt(pwResetFormDiv);
+
+ // Set the content of the Dialog to the pwResetForm
+ pwResetFormDlg.attr("content", pwResetFormDiv);
+ return pwResetFormDlg;
+}
+
--- /dev/null
+/* */
+
+if(findCurrentPage()==RDETAIL){
+detachAllEvt('common', 'run');
+attachEvt("common", "run", rdetailDraw);
+attachEvt("rdetail", "recordDrawn", rdetailBuildStatusColumns);
+attachEvt("rdetail", "recordDrawn", rdetailBuildInfoRows);
+attachEvt("rdetail", "recordDrawn", rdetailGetPageIds);
+
+/* Per-skin configuration settings */
+var rdetailLocalOnly = true;
+var rdetailShowLocal = true;
+var rdetailShowCopyLocation = true;
+var rdetailGoogleBookPreview = false;
+var rdetailDisplaySerialHoldings = true;
+var rdetailEnableRefWorks = false;
+var rdetailRefWorksHost = 'http://www.refworks.com';
+
+/* vars vars vars */
+var record = null;
+var marc = null;
+var cp_statuses = null;
+var recordsCache = [];
+
+var copyRowParent = null;
+var copyRow = null;
+var statusRow = null;
+var numStatuses = null;
+var defaultCN;
+var callnumberCache = {};
+var globalCNCache = {};
+var localTOC;
+var cachedRecords;
+var _statusPositions = {};
+var opac_strings;
+var copyObjs = [];
+var copyObjsCN = [];
+var copyObjsCount = 0;
+
+var nextContainerIndex;
+
+var nextRecord;
+var prevRecord;
+
+var rdetailPrev = null;
+var rdetailNext = null;
+var rdetailStart = null;
+var rdetailEnd = null;
+
+if(location.href.match(/&place_hold=1/)) {
+ // prevent load flicker between canvases
+ hideMe(dojo.byId('canvas_main'));
+}
+
+/* serials are currently the only use of Dojo strings in the OPAC */
+ if (rdetailDisplaySerialHoldings) {
+ dojo.require("dijit.Menu");
+ dojo.require("dijit.form.Button");
+ dojo.requireLocalization("openils.opac", "opac");
+ opac_strings = dojo.i18n.getLocalization("openils.opac", "opac");
+ }
+}
+
+function rdetailReload() {
+ var args = {};
+ args[PARAM_LOCATION] = getNewSearchLocation();
+ args[PARAM_DEPTH] = depthSelGetDepth();
+ goTo(buildOPACLink(args));
+}
+
+/* looks to see if we have a next and/or previous record in the
+ record cache, if so, set up the nav links */
+function rdetailSetPaging(ids) {
+
+ cachedRecords = {};
+ cachedRecords.ids = ids;
+
+ for( var i = 0; i < cachedRecords.ids.length; i++ ) {
+ var rec = cachedRecords.ids[i];
+ if( rec == getRid() ) {
+ if( i > 0 ) prevRecord = cachedRecords.ids[i-1];
+ if( i < cachedRecords.ids.length - 1 )
+ nextRecord = cachedRecords.ids[i+1];
+ break;
+ }
+ }
+
+ $('np_offset').appendChild(text(i + 1));
+ $('np_count').appendChild(text(getHitCount()));
+
+ if(prevRecord) {
+ //unHideMe($('np_table'));
+ unHideMe($('rdetail_result_count'));
+ unHideMe($('np_prev'));
+ unHideMe($('np_start'));
+ rdetailPrev = function() { _rdetailNav(prevRecord); };
+ rdetailStart = function() { _rdetailNav(cachedRecords.ids[0]); };
+ }
+
+ if(nextRecord) {
+ //unHideMe($('np_table'));
+ unHideMe($('rdetail_result_count'));
+ unHideMe($('np_next'));
+ unHideMe($('np_end'));
+ rdetailNext = function() { _rdetailNav(nextRecord); };
+ rdetailEnd = function() { _rdetailNav(cachedRecords.ids[cachedRecords.ids.length-1]); };
+ }
+
+ runEvt('rdetail', 'nextPrevDrawn', i, cachedRecords.ids.length);
+}
+
+
+function _rdetailNav(id, offset) {
+ var args = {};
+ args[PARAM_RID] = id;
+ goTo(buildOPACLink(args));
+}
+
+function rdetailHandlePlaceHold() {
+ function reload() {
+ location.href = location.href.replace(/&place_hold=1/, '');
+ }
+ attachEvt("common", "holdUpdated", reload);
+ attachEvt("common", "holdUpdateCanceled", reload);
+ attachEvt("common", "loginCanceled", reload);
+ holdsDrawEditor({record:getRid(), type: 'T'});
+}
+
+function ridPreDraw() {
+ if(isInAnonList(parseInt(getRid()))) {
+ var mylist = $('add_mylist');
+ mylist.innerHTML = 'Remove from my list';
+ mylist.title = 'Remove from my list';
+ }
+
+ record = new mvr();
+ record.doc_id(getRid());
+
+ fieldmapper.standardRequest(["open-ils.search","open-ils.search.biblio.record.copy_count"], {'params':[getLocation(), getRid(), getForm()], 'oncomplete':drawCopyCounts});
+}
+
+function rdetailDraw() {
+ if(new CGI().param('place_hold')) {
+ rdetailHandlePlaceHold();
+ return;
+ }
+
+ detachAllEvt('common','depthChanged');
+ detachAllEvt('common','locationUpdated');
+ attachEvt('common','depthChanged', rdetailReload);
+ attachEvt('common','locationUpdated', rdetailReload);
+ attachEvt('common','holdUpdated', rdetailReload);
+ attachEvt('common','holdUpdateCanceled', rdetailReload);
+
+ copyRowParent = G.ui.rdetail.cp_info_row.parentNode;
+ copyRow = copyRowParent.removeChild(G.ui.rdetail.cp_info_row);
+ statusRow = G.ui.rdetail.cp_status.parentNode;
+ statusRow.id = '__rdsrow';
+
+ G.ui.rdetail.cp_info_local.onclick = rdetailShowLocalCopies;
+ G.ui.rdetail.cp_info_all.onclick = rdetailShowAllCopies;
+
+ $('rdetail_place_hold').onclick = function() {
+ var src = location.href;
+ if(forceLoginSSL && src.match(/^http:/)) {
+ src = src.replace(/^http:/, 'https:');
+ if(!src.match(/&place_hold=1/)) {
+ src += '&place_hold=1';
+ }
+ location.href = src;
+ } else {
+ holdsDrawEditor({record:record.doc_id(), type:'T'});
+ }
+ }
+
+ if(getLocation() == globalOrgTree.id())
+ hideMe(G.ui.rdetail.cp_info_all);
+
+ if(getRid()) {
+ ridPreDraw();
+ marc = new MarcRecord(getRid());
+ runEvt('rdetail', 'recordRetrieved', record.doc_id());
+ drawMarcData();
+ //var req = new Request(FETCH_RMODS, getRid());
+ //req.callback(_rdetailDraw);
+ //req.send();
+
+ } else { // No record ID was specified
+
+ // If we have an ISBN in the URL, let's try to find that record
+ // This allows direct linking by ISBN.
+ // Note, this uses the first record it finds
+ if(getRtype() == RTYPE_ISBN) {
+ var req = fieldmapper.standardRequest(['open-ils.search','open-ils.search.biblio.isbn'], {'params':[getAdvTerm()]});
+ if(req && req.count > 0) RID = req.ids[0];
+ ridPreDraw();
+ marc = new MarcRecord(getRid());
+ runEvt('rdetail', 'recordRetrieved', record.doc_id());
+ drawMarcData();
+ //var req2 = new Request(FETCH_RMODS, getRid());
+ //req2.callback(_rdetailDraw);
+ //req2.send();
+ }
+ }
+
+ var isbn = cleanISBN(marc.marcObj["020"] ? marc.marcObj["020"][0]["a"][0] : (marc.marcObj["024"]?marc.marcObj["024"][0]["a"][0]:"0"));
+ $('rdetail_image').src = buildISBNSrc(isbn);
+ $('rdetail_img_link').href = buildISBNSrc(isbn, "large");
+ unHideMe($('rdetail_img_link'));
+
+ $('content_cafe_summary').src =
+ "https://contentcafe2.btol.com/ContentCafeClient/ContentCafe.aspx?UserID=KC72927&Password=CC14647&ItemKey="+isbn+"&Options=Y";
+
+ // ChiliFresh
+ if (chilifresh && chilifresh != '(none)' && isbn) {
+ $('chilifreshReviewLink').setAttribute('id','isbn_'+isbn);
+ $('chilifreshReviewResult').setAttribute('id','chili_review_'+isbn);
+ try {
+ chili_init();
+ unHideMe($('rdetail_awards_link'));
+ unHideMe($('rdetail_chilifresh_reviews'));
+ unHideMe($('rdetail_chilifresh_lbl'));
+ } catch(E) {
+ alert(E + '\n');
+ }
+ }
+
+ // Novelist
+ if (novelist && isbn) {
+ unHideMe($('rdetail_awards_link'));
+ unHideMe($('rdetail_novelist_lbl'));
+ unHideMe($('rdetail_novelist_div'));
+ var isbnEl = elem("div",null,"ISBN "+isbn);
+ isbnEl.className = "hide_me";
+ document.body.appendChild(isbnEl);
+ }
+
+ fieldmapper.standardRequest(["open-ils.search","open-ils.search.biblio.copy_counts.summary.retrieve"], {"async":true, "params":[getRid()], "oncomplete":function(r){
+ var res = []; if(r) res = r.recv(); if(res) res = res.content();
+ for(var i in res) {
+ copyObjsCN[res[i][0]] = res[i][1];
+ fieldmapper.standardRequest(["open-ils.search", "open-ils.search.asset.copy.retrieve_by_cn_label"], {"async":true, "params":[getRid(), res[i][1], res[i][0]], "oncomplete":getCopyIDs});
+ }
+ }});
+
+runEvt("rdetail", "recordDrawn");
+
+ if (rdetailDisplaySerialHoldings) {
+ var req = new Request(FETCH_MFHD_SUMMARY, getRid());
+ req.callback(_holdingsDraw);
+ req.send();
+ if (isXUL()) {
+ var here = findOrgUnit(getLocation());
+ dojo.place("<div id='mfhd_ad_menu' class='hide_me'></div>", "rdetail_details_table", "after");
+ var mfhd_add = new dijit.Menu({style:"float: right;"});
+ new dijit.MenuItem({onClick:function(){
+ var req = new Request(CREATE_MFHD_RECORD, G.user.session, 1, here.id(), getRid());
+ var res = req.send();
+ alert(dojo.string.substitute(opac_strings.CREATED_MFHD_RECORD, [here.name()]));
+ }, label:opac_strings.CREATE_MFHD}).placeAt(mfhd_add);
+ mfhd_add.placeAt('mfhd_ad_menu');
+ }
+ }
+
+ detachAllEvt("result", "idsReceived");
+ G.evt.result.hitCountReceived = [];
+ G.evt.result.recordReceived = [];
+ G.evt.result.copyCountsReceived = [];
+ G.evt.result.allRecordsReceived = [];
+ //unHideMe($('rdetail_copy_info_link'));
+}
+
+function getCopyIDs(r) {
+ var res = []; if(r) res = r.recv(); if(res) res = res.content();
+ copyObjsCount += res.length;
+ if(res.length) fieldmapper.standardRequest(["open-ils.search", "open-ils.search.asset.copy.fleshed.batch.retrieve"], {"async":true, "params":[res], "oncomplete":getCopyObjs});
+}
+
+function getCopyObjs(r) {
+ var res = []; if(r) res = r.recv(); if(res) res = res.content();
+ if(res.length) copyObjs = copyObjs.concat(res);
+ if(copyObjs.length >= copyObjsCount) drawCopyStatusDetails();
+}
+
+function drawCopyStatusDetails() {
+ var tehTR = $('rdetails_status_head');
+ if(!tehTR) return;
+ var showLibCount = 5;
+
+ if(getOrigLocation()) copyObjs.sort(function(a,b) {
+ if(a.circ_lib().id()==getOrigLocation()) return -1;
+ if(b.circ_lib().id()==getOrigLocation()) return 1;
+ return a.circ_lib().name().toLowerCase()>=b.circ_lib().name().toLowerCase()?1:-1;
+ }); else copyObjs.sort(function(a,b){
+ return a.circ_lib().name().toLowerCase()>=b.circ_lib().name().toLowerCase()?1:-1;
+ });
+
+ if(copyObjs.length) unHideMe($('rdetails_status'));
+ for(var i in copyObjs) {
+ var obj = copyObjs[i];
+ if(!isTrue(obj.circ_lib().opac_visible())) { showLibCount++; continue; }
+ var par = i<showLibCount?tehTR.parentNode:$('rdetails_status2');
+ var newRow = elem('tr');
+ var lib_td = elem('td',{nowrap:"nowrap"});
+ var url = mapLibUrl(obj.circ_lib().id()+"");
+ var libLink = null;
+ if(!url) libLink = elem('span', null, obj.circ_lib().name());
+ else libLink = elem('a',{"href":url, "title":"View information about the "+obj.circ_lib().name()+" library"}, obj.circ_lib().name());
+ lib_td.appendChild(libLink);
+ var status = elem('td',{"nowrap":"nowrap", "id":"copy_status_"+obj.id()});
+
+ newRow.appendChild(lib_td);
+ newRow.appendChild(elem('td',{nowrap:"nowrap"},copyObjsCN[obj.circ_lib().id()]));
+ newRow.appendChild(elem('td',{nowrap:"nowrap"},obj.location().name()));
+ newRow.appendChild(elem('td',{nowrap:"nowrap"},obj.status().name()));
+ newRow.appendChild(status);
+ par.appendChild(newRow);
+
+ if(obj.status().id()==1)
+ fieldmapper.standardRequest(["open-ils.circ","open-ils.circ.copy.due_date.retrieve"], {"params":[obj.id()], "oncomplete":drawCopyStatus});
+ }
+ if(copyObjs.length>showLibCount) unHideMe($('rdetail_locs_expand'));
+}
+
+function drawCopyStatus(r) {
+ var res = null; if(r) res = r.recv(); if(res) res = res.content();
+ if(!res) return;
+ var cell = $("copy_status_"+r.params[0]);
+ if(cell) cell.innerHTML = dojo.date.locale.format(dojo.date.stamp.fromISOString(res), {selector:'date', fullYear: true, datePattern:"M-d-yyyy"});
+}
+
+function rdetailGetPageIds() {
+ attachEvt("result", "idsReceived", rdetailSetPaging );
+ resultFetchAllRecords = true;
+ rresultCollectIds(true);
+}
+
+function buildunAPISpan (span, type, id) {
+ var cgi = new CGI();
+ var d = new Date();
+
+ addCSSClass(span,'unapi-id');
+
+ span.setAttribute(
+ 'title', 'tag:' + cgi.server_name + ',' +
+ d.getFullYear() + ':' + type + '/' + id
+ );
+}
+
+function rdetailViewMarc(r,id) {
+ hideMe($('rdetail_extras_loading'));
+ $('rdetail_view_marc_box').innerHTML = r.getResultObject();
+
+ var div = elem('div', { "class" : 'hide_me' });
+ var span = div.appendChild( elem('abbr') );
+
+ buildunAPISpan( span, 'biblio-record_entry', getRid() );
+
+ $('rdetail_view_marc_box').insertBefore(span, $('rdetail_view_marc_box').firstChild);
+}
+
+
+function rdetailShowLocalCopies() {
+ rdetailShowLocal = true;
+ rdetailBuildInfoRows();
+ hideMe(G.ui.rdetail.cp_info_local);
+ unHideMe(G.ui.rdetail.cp_info_all);
+ hideMe(G.ui.rdetail.cp_info_none);
+}
+
+function rdetailShowAllCopies() {
+
+ rdetailShowLocal = false;
+ rdetailBuildInfoRows();
+ hideMe(G.ui.rdetail.cp_info_all);
+ unHideMe(G.ui.rdetail.cp_info_local);
+ hideMe(G.ui.rdetail.cp_info_none);
+}
+
+function OpenMarcEditWindow(pcrud, rec) {
+ /*
+ To run in Firefox directly, must set signed.applets.codebase_principal_support
+ to true in about:config
+ */
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
+ win = window.open('/xul/server/cat/marcedit.xul'); // XXX version?
+ dojo.require('openils.PermaCrud');
+
+ win.xulG = {
+ "record": {"marc": rec.marc()},
+ "save": {
+ "label": opac_strings.SAVE_MFHD_LABEL,
+ "func": function(xmlString) {
+ rec.marc(xmlString);
+ rec.ischanged(true);
+ pcrud.update(rec);
+ }
+ }
+ };
+}
+
+function loadMarcEditor(recId) {
+ var pcrud = new openils.PermaCrud({"authtoken": G.user.session});
+ var rec = pcrud.retrieve("sre", recId);
+ if (rec) {
+ OpenMarcEditWindow(pcrud, rec);
+ }
+}
+
+/*
+ * This function could be written much more intelligently
+ * Limited brain power means that I'm brute-forcing it for now
+ */
+function _holdingsDraw(h) {
+ holdings = h.getResultObject();
+ if (!holdings) { return null; }
+
+ dojo.forEach(holdings, _holdingsDrawMFHD);
+
+}
+
+function _holdingsDrawMFHD(holdings, entryNum) {
+
+ var here = findOrgUnit(getLocation());
+ if (getDepth() > 0 || getDepth === 0 ) {
+ while (getDepth() < findOrgDepth(here))
+ here = findOrgUnit( here.parent_ou() );
+ if (!orgIsMine(findOrgUnit(here), findOrgUnit(holdings.owning_lib()))) {
+ return null;
+ }
+ }
+
+ var hh = holdings.basic_holdings_add();
+ var hch = holdings.basic_holdings();
+ var hs = holdings.supplement_holdings_add();
+ var hcs = holdings.supplement_holdings();
+ var hi = holdings.index_holdings_add();
+ var hci = holdings.index_holdings();
+ var ho = holdings.online();
+ var hm = holdings.missing();
+ var hinc = holdings.incomplete();
+ var hloc = holdings.location() || 'MFHD';
+
+ if ( hh.length == 0 && hch.length == 0 && hs.length == 0 &&
+ hcs.length == 0 && hi.length == 0 && hci.length == 0 &&
+ ho.length == 0 && hm.length == 0 && hinc.length == 0
+ ) {
+
+ if (isXUL()) {
+ /*
+ * If we have a record, but nothing to show for it, then the
+ * record is likely empty or corrupt. This gives cataloguers a
+ * chance to add holdings or correct the record
+ */
+ hh = 'PLACEHOLDER';
+ } else {
+ return null;
+ }
+ }
+
+ dojo.place("<table style='width: 100%;'><caption id='mfhdHoldingsCaption" + entryNum + "' class='rdetail_header color_1'>" +
+ dojo.string.substitute(opac_strings.HOLDINGS_TABLE_CAPTION, [hloc]) +
+ "</caption><tbody id='rdetail_holdings_tbody_" + entryNum +
+ "'></tbody></table>", "rdetail_details_table", "after"
+ );
+ if (hh.length > 0) { _holdingsDrawMFHDEntry(entryNum, opac_strings.HOLDINGS, hh); }
+ if (hch.length > 0) { _holdingsDrawMFHDEntry(entryNum, opac_strings.CURRENT_HOLDINGS, hch); }
+ if (hs.length > 0) { _holdingsDrawMFHDEntry(entryNum, opac_strings.SUPPLEMENTS, hs); }
+ if (hcs.length > 0) { _holdingsDrawMFHDEntry(entryNum, opac_strings.CURRENT_SUPPLEMENTS, hcs); }
+ if (hi.length > 0) { _holdingsDrawMFHDEntry(entryNum, opac_strings.INDEXES, hi); }
+ if (hci.length > 0) { _holdingsDrawMFHDEntry(entryNum, opac_strings.CURRENT_INDEXES, hci); }
+ if (ho.length > 0) { _holdingsDrawMFHDEntry(entryNum, opac_strings.ONLINE_VOLUMES, ho); }
+ if (hm.length > 0) { _holdingsDrawMFHDEntry(entryNum, opac_strings.MISSING_VOLUMES, hm); }
+ if (hinc.length > 0) { _holdingsDrawMFHDEntry(entryNum, opac_strings.INCOMPLETE_VOLUMES, hinc); }
+
+ if (isXUL()) {
+ dojo.require('openils.Event');
+ dojo.require('openils.PermaCrud');
+ var mfhd_edit = new dijit.Menu({});
+ new dijit.MenuItem({onClick: function(){loadMarcEditor(holdings.id())}, label:opac_strings.EDIT_MFHD_RECORD}).placeAt(mfhd_edit, "first");
+ new dijit.MenuItem({onClick:function(){
+ var pcrud = new openils.PermaCrud({"authtoken": G.user.session});
+ var mfhd_rec = pcrud.retrieve("sre", holdings.id());
+ if (mfhd_rec) {
+ pcrud.eliminate(mfhd_rec);
+ alert(dojo.string.substitute(opac_strings.DELETED_MFHD_RECORD, [holdings.id()]));
+ }
+ }, label:opac_strings.DELETE_MFHD}).placeAt(mfhd_edit, "last");
+ // new dijit.MenuItem({onClick:function(){alert("Edit properties " + holdings.id());}, label:opac_strings.EDIT_PROPERTIES}).placeAt(mfhd_edit, "last");
+ var mfhd_mb = new dijit.form.DropDownButton({dropDown: mfhd_edit, label:opac_strings.EDIT_MFHD_MENU, style:"float:right"});
+ mfhd_mb.placeAt("mfhdHoldingsCaption" + entryNum, "last");
+ mfhd_edit.startup();
+ }
+}
+
+function _holdingsDrawMFHDEntry(entryNum, entryName, entry) {
+ var flatEntry = entry.toString().replace(/,/g, ', ');
+ dojo.place("<tr><td> </td><td nowrap='nowrap' class='rdetail_desc'>" + entryName + "</td><td class='rdetail_item'>" + flatEntry + "</td></tr>", "rdetail_holdings_tbody_" + entryNum, "last");
+}
+
+function drawCopyCounts(r) {
+ var res = r.recv().content();
+ if(!res.length) return;
+ var str = "";
+
+ var holdCnt = fieldmapper.standardRequest(['open-ils.circ','open-ils.circ.bre.holds.count'], {"async":false, "params":[getRid()]});
+ str += holdCnt+' hold'+(holdCnt==1?'':'s')+' on first copy returned of '+res[0].count+' cop'+(res[0].count==1?'y':'ies')+'<br />';
+ str += res[0].available+' cop'+(res[0].available==1?'y':'ies')+' available';
+ $('rdetail_copies_avail').innerHTML = str;
+}
+
+function drawMarcData() {
+ marc.render("245", {"container":"rdetail_title", "showAGR":true, "sGlue":{"startStr":"<div>", "joinStr":" ", "endStr":"</div>"}});
+ marc.render("520", {"container":"rdetail_summary_container", "label":"rdetail_summary_link", "sGlue":{"joinStr":" "}});
+ marc.render("505", {"container":"rdetail_content_div_inner", "label":"rdetail_content_link", "sGlue":{"joinStr":" "}});
+ marc.render(["100", "110", "111"], {"container":"rdetail_author", "label":"author_lbl", "searchType":STYPE_AUTHOR, "skipCodes":"d"});
+
+ // authors box
+ marc.render(["100", "110", "111"], {"container":"rdetail_authors_inner", "searchType":STYPE_AUTHOR, "label":["rdetail_authors_link", "authors_lbl"], "sGlue":{"joinStr":" ", "endStr":"<br />"}, "showAGR":true, "unlink":"d"});
+ marc.render(["700", "710", "711"], {"container":"rdetail_moar_authors", "searchType":STYPE_AUTHOR, "label":["rdetail_authors_link", "add_authors_lbl"], "sGlue":{"joinStr":" ", "endStr":"<br />"}, "unlink":"d"});
+ marc.render("508", {"container":"rdetail_credits", "searchType":STYPE_AUTHOR, "label":["rdetail_authors_link", "credits_lbl"]});
+ marc.render("511", {"container":"rdetail_cast", "searchType":STYPE_AUTHOR, "label":["rdetail_authors_link", "cast_lbl"]});
+
+ // subject box
+ marc.render(["600", "610", "611", "630", "650", "651"], {"sGlue":{"joinStr":" -- ", "endStr":"<br />"}, "container":"rdetail_subject_container", "label":["rdetail_subject_link", "subject_lbl"], "searchType":STYPE_SUBJECT});
+ marc.render(["655", "695"], {"sGlue":{"joinStr":" -- ", "endStr":"<br />"}, "container":"rdetail_genre_cont", "label":["rdetail_subject_link", "genre_lbl"], "searchType":STYPE_SUBJECT});
+ marc.render("690", {"sGlue":{"joinStr":" -- ", "endStr":"<br />"}, "container":"rdetail_topic_cont", "label":["rdetail_subject_link", "topic_lbl"], "searchType":STYPE_SUBJECT});
+ marc.render("691", {"sGlue":{"joinStr":" -- ", "endStr":"<br />"}, "container":"rdetail_geo_cont", "label":["rdetail_subject_link", "geo_set_lbl"], "searchType":STYPE_SUBJECT});
+ marc.render("692", {"sGlue":{"joinStr":" -- ", "endStr":"<br />"}, "container":"rdetail_bio_cont", "label":["rdetail_subject_link", "bio_sub_lbl"], "searchType":STYPE_SUBJECT});
+ marc.render("693", {"sGlue":{"joinStr":" -- ", "endStr":"<br />"}, "container":"rdetail_attrib_cont", "label":["rdetail_subject_link", "char_attrib_lbl"], "searchType":STYPE_SUBJECT});
+ marc.render("698", {"sGlue":{"joinStr":" -- ", "endStr":"<br />"}, "container":"rdetail_setting_cont", "label":["rdetail_subject_link", "setting_lbl"], "searchType":STYPE_SUBJECT});
+ marc.render("699", {"sGlue":{"joinStr":" -- ", "endStr":"<br />"}, "container":"rdetail_time_cont", "label":["rdetail_subject_link", "time_lbl"], "searchType":STYPE_SUBJECT});
+
+ // series box
+ marc.render(['440','490','800','810','811','830','694'], {"showAGR":true, "container":"rdetail_series_container", "label":"rdetail_series_link", "searchType":STYPE_SERIES, "sGlue":{"joinStr":" -- ", "endStr":"<br />"}});
+
+ // awards box
+ marc.render(["586", "697"], {"container":"rdetail_awards_cont", "label":"rdetail_awards_link", "showOnly":"a"});
+
+ // details box
+ marc.render(["130", "240", "246", "730", "740"], {"container":"added_title", "label":["rdetail_details_link", "add_title_lbl"], "searchType":STYPE_KEYWORD, "sGlue":{"joinStr":" -- ", "endStr":"<br />"}});
+ marc.render("250", {"container":"rdetail_edition", "label":["rdetail_details_link", "edition_lbl"], "searchType":STYPE_KEYWORD, "fGlue":{"joinStr":" "}, "sGlue":{"joinStr":" "}});
+ marc.render("500", {"container":"rdetail_note", "label":["rdetail_details_link", "note_lbl"], "searchType":STYPE_KEYWORD, "fGlue":{"joinStr":" "}, "sGlue":{"joinStr":" "}});
+ marc.render("546", {"container":"rdetail_lang", "label":["rdetail_details_link", "lang_lbl"], "searchType":STYPE_KEYWORD, "fGlue":{"joinStr":" "}, "sGlue":{"joinStr":" "}});
+ marc.render("516", {"container":"comp_file_note", "label":["rdetail_details_link", "comp_note_lbl"], "searchType":STYPE_KEYWORD, "fGlue":{"joinStr":" "}, "sGlue":{"joinStr":" "}});
+ marc.render("538", {"container":"sys_details", "label":["rdetail_details_link", "sys_detail_lbl"], "searchType":STYPE_KEYWORD, "fGlue":{"joinStr":" "}, "sGlue":{"joinStr":" "}});
+ marc.render("507", {"container":"map_scale_note", "label":["rdetail_details_link", "map_scale_lbl"], "searchType":STYPE_KEYWORD, "fGlue":{"joinStr":" "}, "sGlue":{"joinStr":" "}});
+ marc.render("518", {"container":"rdetail_event", "label":["rdetail_details_link", "event_lbl"], "searchType":STYPE_KEYWORD, "fGlue":{"joinStr":" "}, "sGlue":{"joinStr":" "}});
+ marc.render("521", {"container":"audience", "label":["rdetail_details_link", "audience_lbl"], "searchType":STYPE_KEYWORD, "fGlue":{"joinStr":" "}, "sGlue":{"joinStr":" "}});
+ marc.render("530", {"container":"phys_form", "label":["rdetail_details_link", "phys_form_lbl"], "searchType":STYPE_KEYWORD, "fGlue":{"joinStr":" "}, "sGlue":{"joinStr":" "}});
+ marc.render("504", {"container":"rdetail_biblio", "label":["rdetail_details_link", "biblio_lbl"], "searchType":STYPE_KEYWORD, "fGlue":{"joinStr":" "}, "sGlue":{"joinStr":" "}});
+ marc.render("590", {"container":"local_note", "label":["rdetail_details_link", "local_note_lbl"], "searchType":STYPE_KEYWORD, "fGlue":{"joinStr":" "}, "sGlue":{"joinStr":" "}});
+ marc.render("506", {"container":"restrictions", "label":["rdetail_details_link", "restrict_lbl"], "searchType":STYPE_KEYWORD, "fGlue":{"joinStr":" "}, "sGlue":{"joinStr":" "}});
+ marc.render("780", {"container":"continues", "label":["rdetail_details_link", "continues_lbl"], "searchType":STYPE_KEYWORD, "fGlue":{"joinStr":" "}, "sGlue":{"joinStr":" "}});
+ marc.render("785", {"container":"cont_by", "label":["rdetail_details_link", "cont_by_lbl"], "searchType":STYPE_KEYWORD, "fGlue":{"joinStr":" "}, "sGlue":{"joinStr":" "}});
+
+ marc.render(["092", "099"], {"container":"rdetail_callnum", "label":"callnum_lbl", "sGlue":{"joinStr":" ", "endStr":" "}});
+ marc.render("300", {"container":"rdetail_physical_desc", "label":"phys_desc_lbl", "sGlue":{"joinStr":" "}});
+ marc.render("260", {"container":"rdetail_publisher", "label":"publisher_lbl", "showAGR":true, "showOnly":["a", "b"], "sGlue":{"joinStr":" ", "endStr":"<br />"}});
+ marc.render("856", {"container":"online_resources", "label":"online_res_lbl", "linkSrc":"u", "linkText":["z", "y", "3"], "fGlue":{"joinStr":"<br />"}});
+ marc.render("260", {"container":"rdetail_pubdate", "label":"pubdate_lbl", "showOnly":"c"});
+ marc.render("020", {"container":"rdetail_isbn", "label":"rd_isbn_lbl", "showOnly":"a"});
+
+ var code = marc.render("998", {"showOnly":"d"});
+ var imgEl = $("rdetail_tor_pic");
+ if(setFormatIcon(imgEl, code)) unHideMe(imgEl);
+
+/*
+
+ if(marcObj["856"]) {
+ var online = $('online_resources');
+ var m856 = marcObj["856"];
+ for(var i in m856) {
+ var url = m856[i]["u"] || "";
+ online.appendChild(elem('a', {"href":url}, (m856[i]["z"] | m856[i]["y"] | m856[i]["3"]))); // should only be one of z, y, 3
+ online.appendChild(elem('br'));
+ }
+ }
+*/
+}
+
+function _rdetailDraw(r) {
+ record = r.getResultObject();
+ runEvt('rdetail', 'recordRetrieved', record.doc_id());
+
+ if(isInAnonList(parseInt(record.doc_id()))) {
+ $('add_mylist').innerHTML = 'Remove from my list';
+ $('add_mylist').title = 'Remove from my list';
+ }
+
+ G.ui.rdetail.title.appendChild(text(record.title()));
+ buildSearchLink(STYPE_AUTHOR, record.author(), G.ui.rdetail.author);
+ if(record.isbn()) { unHideMe($('rdetail_isbn_lbl')); G.ui.rdetail.isbn.appendChild(text(cleanISBN(record.isbn()))); }
+ if(record.edition()) { unHideMe($('rdetail_ed_lbl')); G.ui.rdetail.edition.appendChild(text(record.edition())); }
+ if(record.pubdate()) { unHideMe($('rdetail_pubdate_lbl')); G.ui.rdetail.pubdate.appendChild(text(record.pubdate())); }
+ if(record.publisher()) { unHideMe($('rdetail_pub_lbl')); G.ui.rdetail.publisher.appendChild(text(record.publisher())); }
+ if(record.physical_description()) { unHideMe($('rdetail_phys_lbl')); $('rdetail_physical_desc').appendChild(text(record.physical_description())); }
+ $('content_cafe_summary').src="http://contentcafe2.btol.com/ContentCafeClient/ContentCafe.aspx?UserID=KC72927&Password=CC14647&ItemKey="+cleanISBN(record.isbn())+"&Options=Y";
+
+ var code = getMarcData(record.doc_id(),"998","d");
+ var imgEl = $("rdetail_tor_pic");
+
+ if(code) { unHideMe($('rdetail_form_lbl')); G.ui.rdetail.tor.innerHTML = get998dValue(code); }
+ //if(record.synopsis()) { unHideMe($('rdetail_sum_lbl')); G.ui.rdetail.abstr.appendChild(text(record.synopsis())); }
+ if(setFormatIcon(imgEl, code)) unHideMe(imgEl);
+
+ try{
+ if(record.isbn()) {
+ if(ENABLE_ADDED_CONTENT_ATTRIB_LINKS) {
+ unHideMe($('rdetail.jacket_attrib_div'));
+ var href = $('rdetail.jacket_attrib_link').getAttribute('href') +cleanISBN(record.isbn());
+ $('rdetail.jacket_attrib_link').setAttribute('href', href);
+ }
+ rdetailCheckForGBPreview();
+
+ } else {
+ //hideMe($("rdetail.jacket_attrib_div"));
+ //hideMe($("rdetail_img_link"));
+ }
+ } catch(E) {}
+
+
+ // see if the record has any external links
+ var links = record.online_loc();
+ for( var i = 0; links && links.length > 0 && i < links.length; i = i + 3 ) {
+ var href = links[i];
+ // avoid matching "HTTP: The Complete Reference"
+ if( href.match(/https?:\/|ftps?:\/|mailto:/i) ) {
+ unHideMe($('rdetail_online_row'));
+ // MODS can contain a display label (used for the text of the link)
+ // as well as a note about the URL; many legacy systems conflate the
+ // two and generate MARC records that expect the note to be used as
+ // the text of the link, with no display label; here's the canonical
+ // format:
+ //
+ // 856 40 $uhttp://localhost$yDisplay label$zPublic note
+ //
+ // Note that the MARC21slim2MODS XSL concatenates $3 and $y together
+ // (as $y was defined later in MARC21's life as the display label)
+ var displayLabel = '' + links[i+1];
+ var note = '' + links[i+2];
+ if(!displayLabel || displayLabel.match(/https?:\/|ftps?:\/|mailto:/i)) {
+ if(!note || note.match(/https?:\/|ftps?:\/|mailto:/i)) {
+ displayLabel = href;
+ } else {
+ displayLabel = note;
+ }
+ }
+ $('rdetail_online').appendChild(elem('a', {href:href,'class':'classic_link'}, displayLabel));
+ if (note && note != displayLabel) {
+ $('rdetail_online').appendChild(elem('span', {'class':'url_note'}, ' - ' + note));
+ }
+ $('rdetail_online').appendChild(elem('br'));
+ }
+ }
+
+ // Fill in our unAPI ID, if anyone cares
+ var abbrs = document.getElementsByTagName('abbr');
+ var span;
+ for (var i = 0; i < abbrs.length; i = i + 1) {
+ if (abbrs[i].getAttribute('name') == 'unapi') {
+ span = abbrs[i];
+ break;
+ }
+ }
+ buildunAPISpan( span, 'biblio-record_entry', record.doc_id() );
+
+ var RW = $('rdetail_exp_refworks');
+ if (RW && rdetailEnableRefWorks) {
+
+ var here = (findOrgUnit(getLocation())).name();
+ var org_name = here.replace(" ", "+");
+ var cgi = new CGI();
+
+ RW.setAttribute(
+ 'href',
+ rdetailRefWorksHost + '/express/expressimport.asp?vendor='
+ + org_name
+ + '&filter=MARC+Format&database=All+MARC+Formats&encoding=65001&url=http%3A%2F%2F'
+ + cgi.server_name + '/opac/extras/supercat/marctxt/record/'
+ + record.doc_id()
+ );
+
+ RW.setAttribute('target', 'RefWorksMain');
+ unHideMe($('rdetail_exp_refworks_span'));
+ }
+
+ //$('rdetail_img_link').setAttribute('href', buildISBNSrc(cleanISBN(record.isbn()), 'large'));
+ //G.ui.rdetail.image.setAttribute("src", buildISBNSrc(cleanISBN(record.isbn())));
+ runEvt("rdetail", "recordDrawn");
+ recordsCache.push(record);
+
+ rdetailSetExtrasSelector();
+
+ var breq = new Request(FETCH_BRE, [getRid()]);
+ breq.callback( rdetailCheckDeleted );
+ breq.send();
+
+ //resultBuildCaches( [ record ] );
+ //resultDrawSubjects();
+ //resultDrawSeries();
+
+ // grab added content
+ acCollectData(cleanISBN(record.isbn()), rdetailhandleAC);
+
+ var currentISBN = cleanISBN(record.isbn());
+
+
+
+ var it = getCacheValue('showHoldEditor');
+ if(it) {
+ setCacheValue('showHoldEditor', null);
+ holdsDrawEditor({record:it.record, type:it.type});
+ }
+}
+
+
+
+function rdetailCheckDeleted(r) {
+ var br = r.getResultObject()[0];
+ if( isTrue(br.deleted()) ) {
+ hideMe($('rdetail_place_hold'));
+ $('rdetail_more_actions_selector').disabled = true;
+ unHideMe($('rdetail_deleted_exp'));
+ }
+}
+
+function rdetailSetExtrasSelector() {
+ if(!grabUser()) return;
+ unHideMe($('rdetail_more_actions'));
+
+ var req = new Request(
+ FETCH_CONTAINERS, G.user.session, G.user.id(), 'biblio', 'bookbag' );
+ req.callback(rdetailAddBookbags);
+ req.send();
+}
+
+var myListsFetched = false;
+var selectedItem = null;
+function addMyList(id) {
+ if(!id) id = record.doc_id();
+ //if(!grabUser()) { alert("Please login first"); goTo(buildOPACLink({page:MYOPAC}, false, true)); return; }
+
+ var holdsLink = $n($('result_table_template_'+id), 'result_my_list_link');
+ if(!holdsLink) holdsLink = $('add_mylist');
+ var lbl = $('myListLabel');
+ var title = "";
+ if(_resultFindRec) title = _resultFindRec(id);
+ if(title) title = title.title();
+ if(lbl) lbl.innerHTML = title; else lbl.innerHTML = "";
+
+ //if(!grabUser()) {
+ isCacheListDrawn = false;
+ for(var i in anonListCache) {
+ if(anonListCache[i] == id) {
+ anonListCache.splice(i, 1);
+ setCacheValue('anonListCache', anonListCache);
+ if(!anonListCache.length) hideMe($('cacheListLink'));
+ if(holdsLink) {
+ holdsLink.innerHTML = 'Add to my list';
+ //holdsLink.appendChild(elem('img', {src:'/opac/skin/kcls/graphics/add_mylist.gif'}, null));
+ holdsLink.title = "Add to my list";
+ }
+ return;
+ }
+ }
+
+ anonListCache.push(id);
+ setCacheValue('anonListCache', anonListCache);
+ unHideMe($('cacheListLink'));
+ if(holdsLink) {
+ holdsLink.innerHTML = 'Remove from my list';
+ //holdsLink.appendChild(elem('img', {src:'/opac/skin/kcls/graphics/add_mylist_sel.gif'}, null));
+ holdsLink.title = "Remove from my list";
+ }
+ return;
+ //}
+
+ selectedItem = id;
+ var selector = $('mylist_selector');
+
+ if(findCurrentPage()==RDETAIL) {
+ unHideMe($('rdetail_more_actions_selector'));
+ } else if(findCurrentPage()==RRESULT) {
+ hideResultsPage(true);
+ unHideMe($('mylist_div'));
+ }
+ if(!myListsFetched) {
+ myListsFetched = true;
+ var req = new Request(FETCH_CONTAINERS, G.user.session, G.user.id(), 'biblio', 'bookbag' );
+ req.callback(showMyLists);
+ req.send();
+ }
+}
+
+function saveMyList() {
+ if(!selectedItem) return true;
+ var newList = $('mylist_new');
+ if(!newList) return true;
+
+ var selector = $('mylist_selector');
+ if(!selector.options.length && !newList.value) { alert('Please choose a name for the new list'); newList.focus(); return false; }
+
+ if(newList.value) {
+ var id;
+ var name = newList.value
+ if(id = containerCreate(name)) {
+ selector.options.length=0;
+ if(!selector.options.length) {
+ unHideMe($('myListSelect'));
+ var req = new Request(FETCH_CONTAINERS, G.user.session, G.user.id(), 'biblio', 'bookbag' );
+ req.callback(showMyLists);
+ req.send();
+ }
+ if(containerCreateItem(id, selectedItem)) {
+ alert('Item successfully added to list');
+ newList.value = "";
+ } else { return false; }
+ } else { return false; }
+ } else { //save to selected list
+ var selectedID = selector.options[selector.selectedIndex].value;
+ if(containerCreateItem(selectedID, selectedItem)) {
+ alert('Item successfully added to list');
+ newList.value = "";
+ } else { return false; }
+ }
+
+ if(findCurrentPage()==RDETAIL) {
+ hideMe($('rdetail_more_actions_selector'));
+ } else if(findCurrentPage()==RRESULT) {
+ hideResultsPage(false);
+ }
+ return true;
+}
+
+function showMyLists(r) {
+ var containers = r.getResultObject();
+ var selector = $('mylist_selector');
+
+ for( var i = 0; i != containers.length; i++ ) {
+ var container = containers[i];
+ insertSelectorVal( selector, i, container.name(), container.id(), null, 0 );
+ }
+ if(!selector.options.length) hideMe($('myListSelect'));
+}
+
+
+function rdetailAddBookbags(r) {
+
+ var containers = r.getResultObject();
+ var selector = $('rdetail_more_actions_selector');
+ var found = false;
+ var index = 3;
+ doSelectorActions(selector);
+
+ for( var i = 0; i != containers.length; i++ ) {
+ found = true;
+ var container = containers[i];
+ insertSelectorVal( selector, index++, container.name(),
+ "container_" + container.id(), rdetailAddToBookbag, 1 );
+ }
+
+ nextContainerIndex = index;
+}
+
+var _actions = {};
+function rdetailNewBookbag() {
+ var name = prompt($('rdetail_bb_new').innerHTML,"");
+ if(!name) return;
+
+ var id;
+ if( id = containerCreate( name ) ) {
+ alert($('rdetail_bb_success').innerHTML);
+ var selector = $('rdetail_more_actions_selector');
+ insertSelectorVal( selector, nextContainerIndex++, name,
+ "container_" + id, rdetailAddToBookbag, 1 );
+ setSelector( selector, 'start' );
+ }
+}
+
+
+function rdetailAddToBookbag() {
+ var selector = $('rdetail_more_actions_selector');
+ var id = selector.options[selector.selectedIndex].value;
+ setSelector( selector, 'start' );
+
+ if( containerCreateItem( id.substring(10), record.doc_id() )) {
+ alert($('rdetail_bb_item_success').innerHTML);
+ }
+}
+
+function rdetailShowAllExtras(bool) {
+ dojo.query('.rdetail_extras').filter(
+ function(n) { return dojo.style(n, 'display') == 'block'; }
+ ).forEach(
+ function(n) {
+ rdetailShowExtra(n.getAttribute("rel2"));
+ var node = $(n.getAttribute("rel"));
+ if (bool) unHideMe(node); else hideMe(node);
+ }
+ );
+}
+
+
+var rdetailMarcFetched = false;
+function rdetailShowExtra(type, args) {
+ var obj = dojo.query('[rel2='+type+']')[0];
+ var node = $(obj.getAttribute('rel'));
+ var arrow = $(obj.getAttribute('rel')+"_arrow");
+ if (dojo.style(node, "display") == "block") {
+ hideMe(node);
+ arrow.src="/opac/skin/kcls/graphics/rdetail_arrow.png";
+ } else {
+ unHideMe(node);
+ arrow.src="/opac/skin/kcls/graphics/rdetail_arrow_down.png";
+ }
+
+ removeCSSClass($('rdetail_copy_info_link'), 'rdetail_extras_selected');
+ removeCSSClass($('rdetail_viewcn_link'), 'rdetail_extras_selected');
+ removeCSSClass($('rdetail_reviews_link'), 'rdetail_extras_selected');
+ removeCSSClass($('rdetail_toc_link'), 'rdetail_extras_selected');
+ removeCSSClass($('rdetail_excerpt_link'), 'rdetail_extras_selected');
+ removeCSSClass($('rdetail_preview_link'), 'rdetail_extras_selected');
+ removeCSSClass($('rdetail_anotes_link'), 'rdetail_extras_selected');
+ removeCSSClass($('rdetail_annotation_link'), 'rdetail_extras_selected');
+ removeCSSClass($('rdetail_viewmarc_link'), 'rdetail_extras_selected');
+ removeCSSClass($('rdetail_novelist_link'), 'rdetail_extras_selected');
+
+ switch(type) {
+
+ case "copyinfo":
+ addCSSClass($('rdetail_copy_info_link'), 'rdetail_extras_selected');
+ break;
+
+ case "reviews":
+ addCSSClass($('rdetail_reviews_link'), 'rdetail_extras_selected');
+ break;
+
+ case "excerpt":
+ addCSSClass($('rdetail_excerpt_link'), 'rdetail_extras_selected');
+ break;
+
+ case "preview":
+ addCSSClass($('rdetail_preview_link'), 'rdetail_extras_selected');
+ rdetailDisplayGBPreview();
+ break;
+
+ case "anotes":
+ addCSSClass($('rdetail_anotes_link'), 'rdetail_extras_selected');
+ break;
+
+ case "toc":
+ addCSSClass($('rdetail_toc_link'), 'rdetail_extras_selected');
+ break;
+
+ case "marc":
+ addCSSClass($('rdetail_viewmarc_link'), 'rdetail_extras_selected');
+ if(rdetailMarcFetched) return;
+ unHideMe($('rdetail_extras_loading'));
+ rdetailMarcFetched = true;
+ var req = new Request( FETCH_MARC_HTML, getRid());
+ req.callback(rdetailViewMarc);
+ req.send();
+ break;
+
+ case "novelist":
+ addCSSClass($('rdetail_novelist_link'), 'rdetail_extras_selected');
+ break;
+
+ case 'cn':
+ addCSSClass($('rdetail_viewcn_link'), 'rdetail_extras_selected');
+ rdetailShowCNBrowse(defaultCN, getLocation(), null, true);
+ break;
+
+ }
+}
+
+function rdetailVolumeDetails(args) {
+ var row = $(args.rowid);
+ var tbody = row.parentNode;
+ cpdBuild( tbody, row, record, args.cn, args.org, args.depth, args.copy_location );
+ return;
+}
+
+function rdetailBuildCNList() {
+
+ var select = $('cn_browse_selector');
+ var index = 0;
+ var arr = [];
+ for( var cn in callnumberCache ) arr.push( cn );
+ arr.sort();
+
+ if( arr.length == 0 ) {
+ hideMe($('rdetail_cn_browse_select_div'));
+ return;
+ }
+
+ for( var i in arr ) {
+ var cn = arr[i];
+ var opt = new Option(cn);
+ select.options[index++] = opt;
+ }
+ select.onchange = rdetailGatherCN;
+}
+
+function rdetailGatherCN() {
+ var cn = getSelectorVal($('cn_browse_selector'));
+ rdetailShowCNBrowse( cn, getLocation(), getDepth(), true );
+ setSelector( $('cn_browse_selector'), cn );
+}
+
+
+function rdetailShowCNBrowse( cn, loc, depth, fromOnclick ) {
+
+ if(!cn) {
+ unHideMe($('cn_browse_none'));
+ hideMe($('rdetail_cn_browse_select_div'));
+ return;
+ }
+
+ unHideMe($('rdetail_cn_browse_select_div'));
+ rdetailBuildCNList();
+ setSelector( $('cn_browse_selector'), cn );
+ //hideMe($('rdetail_copy_info_div'));
+ //hideMe($('rdetail_reviews_div'));
+ //hideMe($('rdetail_toc_div'));
+ //hideMe($('rdetail_marc_div'));
+ //unHideMe($('rdetail_cn_browse_div'));
+ unHideMe($('cn_browse'));
+ if( !rdetailLocalOnly && ! fromOnclick ) depth = findOrgDepth(globalOrgTree);
+ cnBrowseGo(cn, loc, depth);
+}
+
+function rdetailhandleAC(data) {
+
+ if( data.reviews.html ) {
+ $('rdetail_review_container').innerHTML = data.reviews.html;
+ unHideMe($('rdetail_awards_link'));
+ }
+
+ if( data.toc.html ) {
+ $('rdetail_toc_div').innerHTML = data.toc.html;
+ unHideMe($('rdetail_content_link'));
+ }
+
+ if( data.excerpt.html ) {
+ $('rdetail_excerpt_div').innerHTML = data.excerpt.html;
+ unHideMe($('rdetail_excerpt_link'));
+ }
+
+ if( data.anotes.html ) {
+ $('rdetail_anotes_div').innerHTML = data.anotes.html;
+ unHideMe($('rdetail_authors_link'));
+ }
+}
+
+function rdetailShowReviews(r) {
+ hideMe($('rdetail_extras_loading'));
+ var res = r.getResultObject();
+ var par = $('rdetail_reviews_div');
+ var template = par.removeChild($('rdetail_review_template'));
+ if( res && res.length > 0 ) {
+ unHideMe($('rdetail_reviews_link'));
+ for( var i = 0; i != res.length; i++ ) {
+ var rev = res[i];
+ if( rev.text && rev.info ) {
+ var node = template.cloneNode(true);
+ $n(node, 'review_header').appendChild(text(rev.info));
+ $n(node, 'review_text').appendChild(text(rev.text));
+ par.appendChild(node);
+ }
+ }
+ }
+}
+
+
+function rdetailShowTOC(r) {
+ hideMe($('rdetail_extras_loading'));
+ var resp = r.getResultObject();
+ if(resp) {
+ unHideMe($('rdetail_content_link'));
+ $('rdetail_toc_div').innerHTML = resp;
+ }
+}
+
+function rdetailBuildInfoRows() {
+ var req;
+ var method = FETCH_COPY_COUNTS_SUMMARY;
+ if (rdetailShowCopyLocation)
+ method = FETCH_COPY_LOCATION_COUNTS_SUMMARY;
+
+
+ if( rdetailShowLocal )
+ req = new Request(method, getRid(), 1, 0)
+ else
+ req = new Request(method, getRid());
+ req.callback(_rdetailBuildInfoRows);
+ req.send();
+}
+
+function _rdetailRows(node) {
+
+ if( rdetailShowLocal && /*getLocation()*/1 != globalOrgTree.id() ) {
+ var loc = findOrgUnit(1/*getLocation()*/);
+ if( node ) {
+ if( !orgIsMine(node, loc) && !orgIsMine(loc,node) ) return;
+ } else {
+ for( var i = 0; i < globalOrgTree.children().length; i++ ) {
+ var org = findOrgUnit(globalOrgTree.children()[i]);
+ if( orgIsMine(org, loc) ) {
+ node = org;
+ break;
+ }
+ }
+ }
+ }
+
+ if(!node && findOrgType(globalOrgTree.ou_type()).can_have_vols())
+ node = globalOrgTree;
+
+
+ /* don't show hidden orgs */
+
+ if(node) {
+
+ //if(!isXUL() && !isTrue(node.opac_visible())) return;
+ if(!isXUL() && !isTrue(node.opac_visible())) {
+ // locally suppressed orgs should appear in the copy summary
+ if(!localSuppressedOrgs[node.id()]) { // indexOf() on user arrays isn't supported on <= IE8
+ return;
+ }
+ }
+
+ // , 1555:true, 1499:true, 1510:true, 1538:true
+
+ var row = copyRow.cloneNode(true);
+ row.id = "cp_info_" + node.id();
+
+ var libtd = findNodeByName( row, config.names.rdetail.lib_cell );
+ var cntd = findNodeByName( row, config.names.rdetail.cn_cell );
+ var cpctd = findNodeByName( row, config.names.rdetail.cp_count_cell );
+ var actions = $n(row, 'rdetail_actions_cell');
+
+ var p = libtd.getElementsByTagName('a')[0];
+ libtd.insertBefore(text(node.name()), p);
+ libtd.setAttribute("style", "padding-left: " + ((findOrgDepth(node) - 1) * 9) + "px;");
+
+ if(!findOrgType(node.ou_type()).can_have_vols()) {
+
+ row.removeChild(cntd);
+ row.removeChild(cpctd);
+ row.removeChild(actions);
+ row.setAttribute('novols', '1');
+
+ libtd.setAttribute("colspan", numStatuses + 3 );
+ libtd.colSpan = numStatuses + 3;
+ addCSSClass(row, 'copy_info_region_row');
+ }
+
+ copyRowParent.appendChild(row);
+
+ } else { node = globalOrgTree; }
+
+ for( var c in node.children() )
+ _rdetailRows(node.children()[c]);
+}
+
+function rdetailCNPrint(orgid, cn) {
+ var div = cpdBuildPrintWindow( record, orgid);
+ var template = div.removeChild($n(div, 'cnrow'));
+ var rowNode = $("cp_info_" + orgid);
+ cpdStylePopupWindow(div);
+ openWindow(div.innerHTML);
+}
+
+var localCNFound = false;
+var ctr = 0;
+function _rdetailBuildInfoRows(r) {
+
+ if (rdetailShowCopyLocation)
+ unHideMe( $n( $('rdetail_copy_info_table'), 'rdetail_copylocation_header' ));
+
+ removeChildren(copyRowParent);
+
+ _rdetailRows();
+
+ var summary = r.getResultObject();
+ if(!summary) return;
+
+ var found = false;
+ for( var i = 0; i < summary.length; i++ ) {
+
+ var arr = summary[i];
+ globalCNCache[arr[1]] = 1;
+ var thisOrg = findOrgUnit(arr[0]);
+ var rowNode = $("cp_info_" + thisOrg.id());
+ if(!rowNode) continue;
+
+ if(rowNode.getAttribute("used")) {
+
+ if( rowNode.nextSibling ) {
+ sib = rowNode.nextSibling;
+ o ='cp_info_'+thisOrg.id()+'_';
+ /* push the new row on as the last row for this org unit */
+ while( sib && sib.id.match(o) ) {
+ sib = sib.nextSibling;
+ }
+ if(sib)
+ rowNode = copyRowParent.insertBefore(copyRow.cloneNode(true), sib);
+ else
+ rowNode = copyRowParent.appendChild(copyRow.cloneNode(true));
+ } else {
+ rowNode = copyRowParent.appendChild(copyRow.cloneNode(true));
+ }
+
+ var n = findNodeByName( rowNode, config.names.rdetail.lib_cell );
+ n.appendChild(text(thisOrg.name()));
+ n.setAttribute("style", "padding-left: " + ((findOrgDepth(thisOrg) - 1) * 9) + "px;");
+ rowNode.id = "cp_info_" + thisOrg.id() + '_' + (++ctr);
+
+ } else {
+ rowNode.setAttribute("used", "1");
+ }
+
+ var cpc_temp = rowNode.removeChild(
+ findNodeByName(rowNode, config.names.rdetail.cp_count_cell));
+
+ var statuses = arr[2];
+ var cl = '';
+ if (rdetailShowCopyLocation) {
+ cl = arr[2];
+ statuses = arr[3];
+ }
+
+ rdetailApplyStatuses(rowNode, cpc_temp, statuses);
+
+ var isLocal = false;
+ if( orgIsMine( findOrgUnit(getLocation()), thisOrg ) ) {
+ found = true;
+ isLocal = true;
+ if(!localCNFound) {
+ localCNFound = true;
+ defaultCN = arr[1];
+ }
+ }
+
+ //if(isLocal) unHideMe(rowNode);
+ unHideMe(rowNode);
+
+ rdetailSetPath( thisOrg, isLocal );
+ rdetailBuildBrowseInfo( rowNode, arr[1], isLocal, thisOrg, cl );
+
+ if( i == summary.length - 1 && !defaultCN) defaultCN = arr[1];
+ }
+
+ if(!found) unHideMe(G.ui.rdetail.cp_info_none);
+}
+
+function rdetailBuildBrowseInfo(row, cn, local, orgNode, cl) {
+ if(local) {
+ var cache = callnumberCache[cn];
+ if( cache ) cache.count++;
+ else callnumberCache[cn] = { count : 1 };
+ }
+
+ var depth = getDepth();
+ if( !local ) depth = findOrgDepth(globalOrgTree);
+
+ $n(row, 'rdetail_callnumber_cell').appendChild(text(cn));
+
+ if (rdetailShowCopyLocation) {
+ var cl_cell = $n(row, 'rdetail_copylocation_cell');
+ cl_cell.appendChild(text(cl));
+ unHideMe(cl_cell);
+ }
+
+ _debug('setting action clicks for cn ' + cn);
+
+ var dHref = 'javascript:rdetailVolumeDetails('+
+ '{copy_location : "'+cl+'", rowid : "'+row.id+'", cn :"'+cn+'", depth:"'+depth+'", org:"'+orgNode.id()+'", local: '+local+'});';
+
+ var bHref = 'javascript:rdetailShowCNBrowse("' + cn + '", '+orgNode.id()+', "'+depth+'");';
+
+ unHideMe( $n(row, 'details') )
+ $n(row, 'details').setAttribute('href', dHref);
+ unHideMe( $n(row, 'browse') )
+ $n(row, 'browse').setAttribute('href', bHref);
+
+ if(isXUL()) {
+ unHideMe($n(row, 'hold_div'));
+ $n(row, 'hold').onclick = function() {
+ var req = new Request(FETCH_VOLUME_BY_INFO, cn, record.doc_id(), orgNode.id());
+ req.callback(
+ function(r) {
+ var vol = r.getResultObject();
+ holdsDrawEditor({type: 'V', volumeObject : vol});
+ });
+ req.send();
+ };
+ }
+}
+
+// sets the path to org as 'active' and displays the path if it's local
+function rdetailSetPath(org, local) {
+ if( findOrgDepth(org) == 0 ) return;
+ var row = $("cp_info_" + org.id());
+ row.setAttribute("hasinfo", "1");
+ unHideMe(row);
+ rdetailSetPath(findOrgUnit(org.parent_ou()), local);
+}
+
+//Append all the statuses for a given summary to the
+//copy summary table
+function rdetailApplyStatuses( row, template, statuses ) {
+ for( var j in _statusPositions ) {
+ var stat = _statusPositions[j];
+ var val = statuses[stat.id()];
+ var nn = template.cloneNode(true);
+ if(val) nn.appendChild(text(val));
+ else nn.appendChild(text(0));
+ row.appendChild(nn);
+ }
+}
+
+//Add one td (creating a new column) to the copy summary
+//table for each opac_visible copy status
+function rdetailBuildStatusColumns() {
+
+ rdetailGrabCopyStatuses();
+ var parent = statusRow;
+ var template = parent.removeChild(G.ui.rdetail.cp_status);
+
+ var i = 0;
+ for( i = 0; i < cp_statuses.length; i++ ) {
+
+ var c = cp_statuses[i];
+ if( c && isTrue(c.opac_visible()) ) {
+ var name = c.name();
+ _statusPositions[i] = c;
+ var node = template.cloneNode(true);
+ var data = findNodeByName( node, config.names.rdetail.cp_status);
+
+ data.appendChild(text(name));
+ parent.appendChild(node);
+ }
+ }
+
+ numStatuses = 0;
+ for(x in _statusPositions) numStatuses++;
+}
+
+function rdetailGrabCopyStatuses() {
+ if(cp_statuses) return cp_statuses;
+ var req = new Request(FETCH_COPY_STATUSES);
+ req.send(true);
+ cp_statuses = req.result();
+ cp_statuses = cp_statuses.sort(_rdetailSortStatuses);
+}
+
+function _rdetailSortStatuses(a, b) {
+ return parseInt(a.id()) - parseInt(b.id());
+}
+
+/**
+ * Check for a Google Book preview
+ */
+function rdetailCheckForGBPreview() {
+ if (!rdetailGoogleBookPreview) return;
+ searchForGBPreview( cleanISBN(record.isbn()) );
+}
+
+/**
+ *
+ * @param {DOM object} query The form element containing the
+ * input parameters "isbns"
+ */
+function searchForGBPreview( isbn ) {
+
+ // Delete any previous Google Booksearch JSON queries.
+ var GBPJsonScript = document.getElementById("GBPJsonScript");
+ if (GBPJsonScript) {
+ GBPJsonScript.parentNode.removeChild(GBPJsonScript);
+ }
+
+ // Add a script element with the src as the user's Google Booksearch query.
+ // JSON output is specified by including the alt=json-in-script argument
+ // and the callback function is also specified as a URI argument.
+ var GBPScriptElement = document.createElement("script");
+
+ GBPScriptElement.setAttribute("id", "GBPJsonScript");
+ GBPScriptElement.setAttribute("src",
+ "http://books.google.com/books?bibkeys=" +
+ isbn + "&jscmd=viewapi&callback=GBPreviewCallback");
+ GBPScriptElement.setAttribute("type", "text/javascript");
+
+ // make the request to Google booksearch
+ document.documentElement.firstChild.appendChild(GBPScriptElement);
+}
+
+/**
+ * This function is the call-back function for the JSON scripts which
+ * executes a Google book search response.
+ *
+ * XXX I18N of text needed
+ *
+ * @param {JSON} booksInfo is the JSON object pulled from the Google books service.
+ */
+function GBPreviewCallback(GBPBookInfo) {
+ var GBPreviewDiv = document.getElementById("rdetail_preview_div");
+ var GBPBook;
+
+ for ( i in GBPBookInfo ) {
+ GBPBook = GBPBookInfo[i];
+ }
+
+ if ( !GBPBook ) {
+ return;
+ }
+
+ if ( GBPBook.preview != "noview" ) {
+ if ( GBPBook.preview == 'full' ) {
+ setText( $('rdetail_preview_link'), $('rdetail_preview_full_text').innerHTML );
+ $('rdetail_preview_link_a').title = $('rdetail_preview_title').innerHTML;
+ }
+
+ // Add a button below the book cover image to load the preview.
+ GBPBadge = document.createElement( 'img' );
+ GBPBadge.src = 'http://books.google.com/intl/en/googlebooks/images/gbs_preview_button1.gif';
+ GBPBadge.title = $('rdetail_preview_badge').innerHTML;
+ GBPBadge.style.border = 0;
+ GBPBadgelink = document.createElement( 'a' );
+ GBPBadgelink.href = 'javascript:rdetailShowExtra("preview");';
+ GBPBadgelink.appendChild( GBPBadge );
+ $('rdetail_image_cell').appendChild( GBPBadgelink );
+ $('rdetail_preview_div').style.height = 600;
+
+ /* Display the "Preview" tab in the Extras section */
+ unHideMe( $('rdetail_preview_link' ) );
+ }
+}
+
+/**
+ * This is called when the user clicks on the 'Preview' link. We assume
+ * a preview is available from Google if this link was made visible.
+ *
+ * XXX I18N of Google Book Preview language attribute needed
+ */
+function rdetailDisplayGBPreview() {
+ unHideMe($('rdetail_extras_loading'));
+ GBPreviewPane = $('rdetail_preview_div');
+ if ( GBPreviewPane.getAttribute('loaded') == null ||
+ GBPreviewPane.getAttribute('loaded') == "false" ) {
+ google.load("books", "0", {"callback" : rdetailGBPViewerLoadCallback, "language": "en"} );
+ GBPreviewPane.setAttribute('loaded', 'true');
+ }
+}
+
+function rdetailGBPViewerLoadCallback() {
+ hideMe($('rdetail_extras_loading'));
+ var GBPViewer = new google.books.DefaultViewer(document.getElementById('rdetail_preview_div'));
+ GBPViewer.load('ISBN:' + cleanISBN(record.isbn()) );
+
+}
+
+function expandBoxes(type,bool) {
+ if(type=="locs") {
+ if(bool) {
+ unHideMe($('rdetail_locs_collapse'));
+ unHideMe($('rdetails_status2'));
+ hideMe($('rdetail_locs_expand'));
+
+ } else {
+ hideMe($('rdetails_status2'));
+ hideMe($('rdetail_locs_collapse'));
+ unHideMe($('rdetail_locs_expand'));
+ }
+ return;
+ }
+
+ if(type=="tabs") {
+ if(bool) {
+ rdetailShowAllExtras(true);
+ hideMe($('rdetail_extras_expand'));
+ unHideMe($('rdetail_extras_collapse'));
+ } else {
+ rdetailShowAllExtras();
+ hideMe($('rdetail_extras_collapse'));
+ unHideMe($('rdetail_extras_expand'));
+ }
+ return;
+ }
+}
--- /dev/null
+config.ids.result = {};
+config.css.result = {};
+config.names.result = {};
+config.ids.result.offset_start = "offset_start";
+config.ids.result.offset_end = "offset_end";
+config.ids.result.result_count = "result_count";
+config.ids.result.next_link = 'next_link';
+config.ids.result.prev_link = 'prev_link';
+config.ids.result.home_link = 'search_home_link';
+config.ids.result.end_link = 'end_link';
+config.ids.result.main_table = 'result_table';
+config.ids.result.row_template = 'result_table_template';
+config.ids.result.num_pages = 'num_pages';
+config.ids.result.current_page = 'current_page';
+config.css.result.nav_active = "nav_link_active";
+config.ids.result.top_div = "result_table_div";
+config.ids.result.nav_links = "search_nav_links";
+config.ids.result.info = "result_info_div";
+config.css.result.cc_cell_even = "copy_count_cell_even";
+config.names.result.item_jacket = "item_jacket";
+config.names.result.item_title = "item_title";
+config.names.result.item_author = "item_author";
+config.names.result.counts_row = "counts_row";
+config.names.result.count_cell = "copy_count_cell";
+config.names.result.format_cell = 'result_table_format_cell';
+config.names.result.format_link = 'resource_link'
+config.names.result.format_pic = 'format_pic'
+config.ids.result = {};
+config.css.result = {};
+config.names.result = {};
+config.ids.result.offset_start = "offset_start";
+config.ids.result.offset_end = "offset_end";
+config.ids.result.result_count = "result_count";
+config.ids.result.next_link = 'next_link';
+config.ids.result.prev_link = 'prev_link';
+config.ids.result.home_link = 'search_home_link';
+config.ids.result.end_link = 'end_link';
+config.ids.result.main_table = 'result_table';
+config.ids.result.row_template = 'result_table_template';
+config.ids.result.num_pages = 'num_pages';
+config.ids.result.current_page = 'current_page';
+config.css.result.nav_active = "nav_link_active";
+config.ids.result.top_div = "result_table_div";
+config.ids.result.nav_links = "search_nav_links";
+config.ids.result.info = "result_info_div";
+config.css.result.cc_cell_even = "copy_count_cell_even";
+config.names.result.item_jacket = "item_jacket";
+config.names.result.item_title = "item_title";
+config.names.result.item_author = "item_author";
+config.names.result.counts_row = "counts_row";
+config.names.result.count_cell = "copy_count_cell";
+config.names.result.format_cell = 'result_table_format_cell';
+config.names.result.format_link = 'resource_link'
+config.names.result.format_pic = 'format_pic'
+
+var recordsHandled = 0;
+var recordsCache = [];
+var lowHitCount = 4;
+var isbnList = '';
+var googleBooksLink = true;
+attachEvt("common", "init", function() {
+ buildOrgSel($('holdsCacheSel'), globalOrgTree, 0);
+});
+
+var resultFetchAllRecords = false;
+var resultCompiledSearch = null;
+
+/* set up the event handlers */
+if( findCurrentPage() == MRESULT || findCurrentPage() == RRESULT ) {
+ G.evt.result.hitCountReceived.push(resultSetHitInfo);
+ G.evt.result.recordReceived.push(resultDisplayRecord, resultAddCopyCounts);
+ G.evt.result.copyCountsReceived.push(resultDisplayCopyCounts);
+ G.evt.result.allRecordsReceived.push(function(){unHideMe($('tehSideBar'));},function(){unHideMe($('results_view_span'));},resultBuildCaches,
+ function(){unHideMe($('result_info_2'))}, fetchGoogleBooksLink, fetchChiliFreshReviews, postResultsCollect);
+
+ attachEvt('result','lowHits',resultLowHits);
+ attachEvt('result','zeroHits',resultZeroHits);
+ attachEvt( "common", "locationUpdated", resultSBSubmit );
+ /* do this after we have ID's so the rank for mr pages will be correct */
+ attachEvt("result", "preCollectRecords", resultPaginate);
+}
+
+function resultSBSubmit(){searchBarSubmit();}
+
+/* returns the last 'index' postion ocurring in this page */
+function resultFinalPageIndex() {
+ if(getHitCount() < (getOffset() + getDisplayCount()))
+ return getHitCount() - 1;
+ return getOffset() + getDisplayCount() - 1;
+}
+
+function plausible_ident(s) {
+ s = s.replace(/^\s*(.+)\s*$/, '$1');
+ s = s.replace(/^(\S+)\s.*$/, '$1');
+ return s;
+}
+
+
+/* generic search method */
+function resultCollectSearchIds( type, method, handler ) {
+
+ var sort = (getSort() == SORT_TYPE_REL) ? null : getSort();
+ var sortdir = (sort) ? ((getSortDir()) ? getSortDir() : SORT_DIR_ASC) : null;
+
+ var item_type;
+ var item_form;
+ var args = {};
+
+ if( type ) {
+ var form = parseForm(getForm());
+ item_type = form.item_type;
+ item_form = form.item_form;
+
+ } else {
+ item_type = (getItemType()) ? getItemType().split(/,/) : null;
+ item_form = (getItemForm()) ? getItemForm().split(/,/) : null;
+ }
+
+ item_type=null;
+
+ var limit = (resultFetchAllRecords) ? 1000 : getDisplayCount();
+
+ if( getOffset() > 0 ) {
+ if( getHitCount() > 0 && (getOffset() + getDisplayCount()) > getHitCount() )
+ limit = getHitCount() - getOffset();
+ }
+
+ var lasso = getLasso();
+
+ if (lasso) args.org_unit = -lasso;
+ else args.org_unit = getLocation();
+
+ args.depth = getDepth();
+ args.limit = limit;
+ args.offset = getOffset();
+ args.visibility_limit = 3000;
+ args.default_class = getStype();
+
+ if(sort) args.sort = sort;
+ if(sortdir) args.sort_dir = sortdir;
+ if(item_type) args.item_type = item_type;
+ if(item_form) args.item_form = item_form;
+ if(getAvail()) args.available = 1;
+ //args.format="marcxml";
+
+ if(getFacet()) args.facets = getFacet();
+
+ if(getAudience()) args.audience = getAudience().split(/,/);
+ if(getLitForm()) args.lit_form = getLitForm().split(/,/);
+ if(getLanguage()) args.language = getLanguage().split(/,/);
+ if(getBibLevel()) args.bib_level = getBibLevel().split(/,/);
+ if(getCopyLocs()) args.locations = getCopyLocs().split(/,/);
+ if(getPubdBefore()) args.before = getPubdBefore();
+ else if(getPubdAfter()) args.after = getPubdAfter();
+ else if(getPubdBetween()) args.between = getPubdBetween().split(/,/);
+
+ _debug('Search args: ' + js2JSON(args));
+ _debug('Raw query: ' + getTerm());
+
+ var req = new Request(method, args, getTerm(), 1);
+ req.callback(handler);
+ req.send();
+}
+
+
+
+
+
+/* set the search result info, number of hits, which results we're
+ displaying, links to the next/prev pages, etc. */
+function resultSetHitInfo() {
+
+ var lasso = getLasso();
+ if (!lasso) {
+ /* tell the user where the results are coming from */
+ var baseorg = findOrgUnit(getLocation());
+ var depth = getDepth();
+ var mydepth = findOrgDepth(baseorg);
+ if( findOrgDepth(baseorg) != depth ) {
+ var tmporg = baseorg;
+ while( mydepth > depth ) {
+ mydepth--;
+ tmporg = findOrgUnit(tmporg.parent_ou());
+ }
+ unHideMe($('including_results_for'));
+ try{$('including_results_location').appendChild(text(tmporg.name()));} catch(e){}
+ }
+ }
+
+
+ try{searchTimer.stop()}catch(e){}
+
+ //if( findCurrentPage() == MRESULT ) {
+ if( findCurrentPage() == MRESULT ||
+
+ (findCurrentPage() == RRESULT &&
+ (
+ getRtype() == RTYPE_TITLE ||
+ getRtype() == RTYPE_AUTHOR ||
+ getRtype() == RTYPE_SUBJECT ||
+ getRtype() == RTYPE_SERIES ||
+ getRtype() == RTYPE_KEYWORD
+ )
+
+ ) ) {
+
+ if(getHitCount() <= lowHitCount && getTerm())
+ runEvt('result', 'lowHits');
+ }
+
+ if(getHitCount() == 0) {
+ runEvt('result', 'zeroHits');
+ return;
+ }
+
+
+ var pages = getHitCount() / getDisplayCount();
+ if(pages % 1) pages = parseInt(pages) + 1;
+
+
+
+ var cpage = (getOffset()/getDisplayCount()) + 1;
+
+ G.ui.result.current_page.appendChild(text(cpage));
+ G.ui.result.num_pages.appendChild(text(pages)); /* the ) is dumb */
+
+ $('current_page2').appendChild(text(cpage));
+ $('num_pages2').appendChild(text(pages + ")")); /* the ) is dumb */
+
+ /* set the offsets */
+ var offsetEnd = getDisplayCount() + getOffset();
+ if( getDisplayCount() > (getHitCount() - getOffset()))
+ offsetEnd = getHitCount();
+
+ G.ui.result.offset_end.appendChild(text(offsetEnd));
+ G.ui.result.offset_start.appendChild(text(getOffset() + 1));
+
+ $('offset_end2').appendChild(text(offsetEnd));
+ $('offset_start2').appendChild(text(getOffset() + 1));
+
+ G.ui.result.result_count.appendChild(text(getHitCount()));
+ unHideMe(G.ui.result.info);
+ unHideMe($('result_numbers1'));
+
+ $('result_count2').appendChild(text(getHitCount()));
+ unHideMe($('result_info_div2'));
+}
+
+function resultLowHits() {
+ showCanvas();
+ unHideMe($('result_low_hits'));
+ if(getHitCount() > 0)
+ unHideMe($('result_low_hits_msg'));
+
+ var words = [];
+ for(var key in resultCompiledSearch.searches)
+ words.push(resultCompiledSearch.searches[key].term);
+
+ var sreq = new Request(CHECK_SPELL, words.join(' '));
+ sreq.callback(resultSuggestSpelling);
+ sreq.send();
+
+ for(var key in resultCompiledSearch.searches) {
+ var areq = new Request(FETCH_CROSSREF, key, resultCompiledSearch.searches[key].term);
+ areq.callback(resultLowHitXRef);
+ areq.send();
+ }
+
+ if( !(getForm() == null || getForm() == 'all' || getForm() == "") ) {
+ var a = {};
+ a[PARAM_FORM] = "all";
+ $('low_hits_remove_format_link').setAttribute('href',buildOPACLink(a));
+ unHideMe($('low_hits_remove_format'));
+ }
+
+ resultSuggestSearchClass();
+
+ if(getTerm()) resultExpandSearch(); /* advanced search */
+}
+
+var lowHitsXRefSet = {};
+var lowHitsXRefLink;
+var lowHitsXRefLinkParent;
+function resultLowHitXRef(r) {
+ if(!lowHitsXRefLink){
+ lowHitsXRefLinkParent = $('low_hits_xref_link').parentNode;
+ lowHitsXRefLink = lowHitsXRefLinkParent.removeChild($('low_hits_xref_link'));
+ }
+ var res = r.getResultObject();
+ var arr = res.from;
+ arr.concat(res.also);
+ if(arr && arr.length > 0) {
+ unHideMe($('low_hits_cross_ref'));
+ var word;
+ var c = 0;
+ while( word = arr.shift() ) {
+
+ if (lowHitsXRefSet[word] == 1) continue;
+ lowHitsXRefSet[word] = 1;
+
+ if(c++ > 20) break;
+ var a = {};
+ a[PARAM_TERM] = word;
+ var template = lowHitsXRefLink.cloneNode(true);
+ template.setAttribute('href',buildOPACLink(a));
+ template.appendChild(text(word));
+ lowHitsXRefLinkParent.appendChild(template);
+ lowHitsXRefLinkParent.appendChild(text(' '));
+ }
+ }
+}
+
+function resultZeroHits() {
+ hideMe($('result_header'));
+ hideMe($('result_table_div'));
+ hideMe($('statusbar'));
+ $('rresults_page').style.width="690px";
+ unHideMe($('zero_search_hits'));
+ $('zero_hits_term').innerHTML = getTerm();
+ //showCanvas();
+ unHideMe($('result_low_hits'));
+ unHideMe($('result_zero_hits_msg'));
+ if(getTerm()) resultExpandSearch(); /* advanced search */
+}
+
+function resultExpandSearch() {
+ var top = findOrgDepth(globalOrgTree);
+ if(getDepth() == top) return;
+ unHideMe($('low_hits_expand_range'));
+ var par = $('low_hits_expand_link').parentNode;
+ var template = par.removeChild($('low_hits_expand_link'));
+
+ var bottom = getDepth();
+ while( top < bottom ) {
+ var a = {};
+ a[PARAM_DEPTH] = top;
+ var temp = template.cloneNode(true);
+ temp.appendChild(text(findOrgTypeFromDepth(top).opac_label()))
+ temp.setAttribute('href',buildOPACLink(a));
+ par.appendChild(temp);
+ top++;
+ }
+}
+
+function resultSuggestSearchClass() {
+ var stype = getStype();
+ if(stype == STYPE_KEYWORD) return;
+ var a = {}; var ref;
+ unHideMe($('low_hits_search_type'));
+ if(stype != STYPE_TITLE) {
+ ref = $('low_hits_title_search');
+ unHideMe(ref);
+ a[PARAM_STYPE] = STYPE_TITLE;
+ ref.setAttribute('href',buildOPACLink(a));
+ }
+ if(stype != STYPE_AUTHOR) {
+ ref = $('low_hits_author_search');
+ unHideMe(ref);
+ a[PARAM_STYPE] = STYPE_AUTHOR;
+ ref.setAttribute('href',buildOPACLink(a));
+ }
+ if(stype != STYPE_SUBJECT) {
+ ref = $('low_hits_subject_search');
+ unHideMe(ref);
+ a[PARAM_STYPE] = STYPE_SUBJECT;
+ ref.setAttribute('href',buildOPACLink(a));
+ }
+ if(stype != STYPE_KEYWORD) {
+ ref = $('low_hits_keyword_search');
+ unHideMe(ref);
+ a[PARAM_STYPE] = STYPE_KEYWORD;
+ ref.setAttribute('href',buildOPACLink(a));
+ }
+ if(stype != STYPE_SERIES) {
+ ref = $('low_hits_series_search');
+ unHideMe(ref);
+ a[PARAM_STYPE] = STYPE_SERIES;
+ ref.setAttribute('href',buildOPACLink(a));
+ }
+}
+
+function resultSuggestSpelling(r) {
+ var res = r.getResultObject();
+ var phrase = getTerm();
+ var words = phrase.split(/ /);
+
+ var newterm = "";
+
+ for( var w = 0; w < words.length; w++ ) {
+ var word = words[w];
+ var blob = grep(res, function(i){return (i.word == word);});
+ if( blob ) blob = blob[0];
+ else continue;
+ if( blob.word == word ) {
+ if( blob.suggestions && blob.suggestions[0] ) {
+ newterm += " " + blob.suggestions[0];
+ unHideMe($('did_you_mean'));
+ } else {
+ newterm += " " + word;
+ }
+ }
+ }
+ var cell = $('zero_hits_suggestions');
+ var s = res[0].suggestions;
+ for(var i in s) {
+ if(i==0) continue;
+ if(i==10) break; //limit suggestions
+ cell.appendChild(elem('a',{href:buildOPACLink({t:s[i]})},s[i]));
+ cell.appendChild(elem('br'));
+ }
+ if(newterm.toLowerCase().trim()!=getTerm().toLowerCase().trim()) unHideMe($('zero_hits_label1'));
+ if(res[0].suggestions && res[0].suggestions.length>0) unHideMe($('zero_hits_label2'));
+
+ var arg = {};
+ arg[PARAM_TERM] = newterm;
+ $('spell_check_link').setAttribute('href', buildOPACLink(arg));
+ $('spell_check_link').appendChild(text(newterm));
+}
+
+
+function resultPaginate() {
+ var o = getOffset();
+ var args = {};
+
+ if( !( ((o) + getDisplayCount()) >= getHitCount()) ) {
+
+ args[PARAM_OFFSET] = o + getDisplayCount();
+ args[PARAM_SORT] = SORT;
+ args[PARAM_SORT_DIR] = SORT_DIR;
+ args[PARAM_RLIST] = new CGI().param(PARAM_RLIST);
+
+ G.ui.result.next_link.setAttribute("href", buildOPACLink(args));
+ addCSSClass(G.ui.result.next_link, config.css.result.nav_active);
+
+ $('next_link2').setAttribute("href", buildOPACLink(args));
+ addCSSClass($('next_link2'), config.css.result.nav_active);
+
+ args[PARAM_OFFSET] = getHitCount() - (getHitCount() % getDisplayCount());
+
+ /* when hit count is divisible by display count, we have to adjust */
+ if( getHitCount() % getDisplayCount() == 0 )
+ args[PARAM_OFFSET] -= getDisplayCount();
+ }
+
+ if( o > 0 ) {
+
+ var args = {};
+ args[PARAM_SORT] = SORT;
+ args[PARAM_SORT_DIR] = SORT_DIR;
+ args[PARAM_RLIST] = new CGI().param(PARAM_RLIST);
+
+ args[PARAM_OFFSET] = o - getDisplayCount();
+ G.ui.result.prev_link.setAttribute( "href", buildOPACLink(args));
+ addCSSClass(G.ui.result.prev_link, config.css.result.nav_active);
+
+ $('prev_link2').setAttribute( "href", buildOPACLink(args));
+ addCSSClass($('prev_link2'), config.css.result.nav_active);
+
+ args[PARAM_OFFSET] = 0;
+ G.ui.result.home_link.setAttribute( "href", buildOPACLink(args));
+ addCSSClass(G.ui.result.home_link, config.css.result.nav_active);
+ }
+
+ // pagination - google style
+ var pages = getHitCount() / getDisplayCount();
+ var cpage = (getOffset()/getDisplayCount()) + 1;
+ var start = 0;
+ pages = Math.floor(pages);
+ cpage = Math.floor(cpage);
+ var end = pages>9?8:pages;
+
+ // narrow our window of visible page numbers to 9 - sets start and end pages for the loop
+ if(cpage>4) {
+ start = cpage-5;
+ end = cpage+3>pages?pages:cpage+3;
+ if(cpage+3>pages) { start = (cpage-5)-(cpage-pages+3); }
+ if(start<0) start=0;
+ } // ugh... I hate math.
+
+ if(pages>0) {
+ var span = $('nav_pages');
+ var span2 = $('nav_pages2');
+ for(var i=start; i<=end; i++) {
+ if(i==end && (getHitCount()%getDisplayCount())==0) break;
+ var temp = elem('span',{style:'padding:0px 3px;'});
+ temp.style.padding='0px 3px';
+ args[PARAM_OFFSET] = getDisplayCount()*i;
+ if(i==cpage-1) { var link = text(i+1); temp.style.color="red" }
+ else var link = elem('a',{href:buildOPACLink(args)},i+1);
+ temp.appendChild(link);
+ span.appendChild(temp);
+ span2.appendChild(temp.cloneNode(true));
+ }
+ }
+ //////
+
+ if(getDisplayCount() < getHitCount()) {
+ unHideMe($('start_end_links_span'));
+ unHideMe($('start_end_links_span2'));
+ }
+
+ showCanvas();
+ try{searchTimer.stop()}catch(e){}
+}
+
+function buildunAPISpan (span, type, id) {
+ if(!span || !type || !id) return;
+ var cgi = new CGI();
+ var d = new Date();
+
+ addCSSClass(span,'unapi-id');
+
+ span.setAttribute(
+ 'title',
+ 'tag:' + cgi.server_name + ',' +
+ d.getFullYear() +
+ ':' + type + '/' + id
+ );
+}
+
+function unhideGoogleBooksLink (data) {
+ for ( var i in data ) {
+ //if (data[i].preview == 'noview') continue;
+
+ var gbspan = $n(document.documentElement, 'googleBooksLink-' + i);
+ var gba = $n(gbspan, "googleBooks-link");
+
+ gba.setAttribute(
+ 'href',
+ data[i].info_url
+ );
+ removeCSSClass( gbspan, 'hide_me' );
+ }
+}
+
+/* display the record info in the record display table 'pos' is the
+ zero based position the record should have in the display table */
+function resultDisplayRecord(rec, pos, is_mr) {
+ //fieldmapper.IDL.load(['mvr']);
+ if(rec == null || rec.__c) rec = new mvr(); /* so the page won't die if there was an error */
+ recordsHandled++;
+ recordsCache.push(rec);
+
+ var r = table.rows[pos + 1];
+ r.id += "_" + rec.doc_id();
+ var currentISBN = cleanISBN(rec.isbn());
+
+ if (googleBooksLink) {
+ var gbspan = $n(r, "googleBooksLink");
+ if (currentISBN && gbspan) {
+ gbspan.setAttribute('name', gbspan.getAttribute('name') + '-' + currentISBN );
+ if (isbnList) isbnList += ', ';
+ isbnList += currentISBN;
+ }
+ }
+
+ if (currentISBN && chilifresh && chilifresh != '(none)') {
+ var cfrow = $n(r, "chilifreshReview");
+ if (cfrow) {
+ removeCSSClass( cfrow, 'hide_me' );
+ }
+ var cflink = $n(r, "chilifreshReviewLink");
+ if (cflink) {
+ cflink.setAttribute(
+ 'id',
+ 'isbn_' + currentISBN
+ );
+ }
+ var cfdiv = $n(r, "chilifreshReviewResult");
+ if (cfdiv) {
+ cfdiv.setAttribute(
+ 'id',
+ 'chili_review_' + currentISBN
+ )
+ }
+ }
+
+ var pic = $n(r, config.names.result.item_jacket);
+ if (!pic) pic = elem("img");
+ //pic.setAttribute("src", buildISBNSrc(currentISBN));
+ pic.setAttribute("width",55);
+
+ var title_link = $n(r, config.names.result.item_title);
+ var author_link = $n(r, config.names.result.item_author);
+ var row_count = $n(r,"results_row_count");
+ var myListLink = $n(r,"result_my_list_link");
+ var reviewsLink = $n(r, 'reviews_and_more');
+ if(currentISBN) {
+ reviewsLink.href="http://contentcafe2.btol.com/ContentCafeClient/ContentCafe.aspx?UserID=KC72927&Password=CC14647&ItemKey="+currentISBN+"&Options=Y";
+ }
+
+ if( is_mr ) {
+ var onlyrec = onlyrecord[ getOffset() + pos ];
+ if(onlyrec) {
+ buildunAPISpan($n(r,'unapi'), 'biblio-record_entry', onlyrec);
+
+ var args = {};
+ args.page = RDETAIL;
+ args[PARAM_OFFSET] = 0;
+ args[PARAM_RID] = onlyrec;
+ args[PARAM_MRID] = rec.doc_id();
+ pic.parentNode.setAttribute("href", buildOPACLink(args));
+ title_link.setAttribute("href", buildOPACLink(args));
+ title_link.appendChild(text(normalize(truncate(rec.title(), 65))));
+
+ } else {
+ buildunAPISpan($n(r,'unapi'), 'metabib-metarecord', rec.doc_id());
+
+ buildTitleLink(rec, title_link);
+ var args = {};
+ args.page = RRESULT;
+ args[PARAM_OFFSET] = 0;
+ args[PARAM_MRID] = rec.doc_id();
+ pic.parentNode.setAttribute("href", buildOPACLink(args));
+ }
+
+ } else {
+ buildunAPISpan($n(r,'unapi'), 'biblio-record_entry', rec.doc_id());
+
+ //if(title_link) buildTitleDetailLink(rec, title_link);
+ if(title_link) {
+ title_link.appendChild(text(normalize(truncate(rec.title(), 1000))));
+ var argss = {};
+ argss.page = RDETAIL;
+ argss[PARAM_RID] = rec.doc_id();
+ var linkText = title_link.innerHTML; // IE
+ title_link.setAttribute("href", buildOPACLink(argss));
+ title_link.innerHTML = linkText; // IE
+ }
+ var args = {};
+ args.page = RDETAIL;
+ args[PARAM_OFFSET] = 0;
+ args[PARAM_RID] = rec.doc_id();
+ pic.parentNode.setAttribute("href", buildOPACLink(args));
+
+ unHideMe($n(r,'place_hold_span'));
+ //$n(r,'place_hold_link').setAttribute('href','javascript:holdsDrawEditor({record:"'+rec.doc_id()+'",type:"T"});');
+ $n(r,'place_hold_link').onclick = function() { resultDrawHoldsWindow(rec.doc_id(), 'T'); }
+
+ /** BILL */
+ //dojo.require('openils.BibTemplate'); // -- this causes redundant requests per record - put in js_common.xml instead
+ setTimeout(
+ function () {
+ //new openils.BibTemplate({root : $n(r, 'bib_cn_list'), record : rec.doc_id()}).render();
+ new openils.BibTemplate({root : r, record : rec.doc_id()}).render();
+ }, 0
+ );
+ /** BILL */
+ }
+
+ if(row_count) row_count.innerHTML = (pos+1)+getOffset()+".";
+ if(myListLink) myListLink.setAttribute("href","javascript:addMyList("+rec.doc_id()+");")
+ title_link.setAttribute("title",rec.title());
+ buildSearchLink(STYPE_AUTHOR, rec.author(), author_link);
+
+ if(! is_mr ) {
+ $n(r, "results_pub_date").innerHTML = (!rec.pubdate())?"":rec.pubdate();
+ $n(r, "results_pub").innerHTML = (!rec.publisher())?"":rec.publisher();
+ $n(r, "results_isbn").innerHTML = (!currentISBN)?"":currentISBN;
+ $n(r, "results_edition").innerHTML = (!rec.edition())?"":rec.edition();
+ $n(r, "results_phys_desc").innerHTML = (!rec.physical_description())?"":rec.physical_description();
+ if(isInAnonList(parseInt(rec.doc_id()))) {
+ $n(r, 'result_my_list_link').innerHTML = 'Remove from my list';
+ $n(r, 'result_my_list_link').title = 'Remove from my list';
+ //$n(r, 'result_my_list_link').appendChild(elem('img', {src:'/opac/skin/kcls/graphics/add_mylist_sel.gif'}, null));
+ }
+
+ if(!isNull(rec.edition())) {
+ unHideMe( $n(r, "result_table_extra_span"));
+ $n(r, "result_table_edition_span").appendChild( text( rec.edition()) );
+ }
+ if(!isNull(rec.pubdate())) {
+ unHideMe( $n(r, "result_table_extra_span"));
+ unHideMe($n(r, "result_table_pub_span"));
+ $n(r, "result_table_pub_span").appendChild( text( rec.pubdate() ));
+ }
+ if(!isNull(rec.publisher()) ) {
+ unHideMe( $n(r, "result_table_extra_span"));
+ unHideMe($n(r, "result_table_pub_span"));
+ $n(r, "result_table_pub_span").appendChild( text( " " + rec.publisher() ));
+ }
+
+ if(!isNull(rec.physical_description()) ) {
+ unHideMe( $n(r, "result_table_extra_span"));
+ var t = " " + rec.physical_description();
+ //$n(r, "result_table_phys_span").appendChild( text(t.replace(/:.*/g,'')));
+ $n(r, "result_table_phys_span").appendChild( text(t));
+ }
+ }
+
+ resultBuildFormatIcons( r, rec, is_mr );
+ unHideMe(r);
+ runEvt("result", "recordDrawn", rec.doc_id(), title_link);
+
+
+ if(resultPageIsDone()) {
+ runEvt('result', 'allRecordsReceived', recordsCache);
+ }
+}
+
+function resultDrawHoldsWindow(hold_target, hold_type) {
+ var src = location.href;
+ if(forceLoginSSL && src.match(/^http:/)) {
+ src = src.replace(/^http:/, 'https:');
+ if(src.match(/&hold_target=/)) {
+ src.replace(/&hold_target=(\d+)/, hold_target);
+ } else {
+ src += '&hold_target=' + hold_target;
+ }
+ location.href = src;
+ } else {
+ holdsDrawEditor({record:hold_target, type:hold_type});
+ }
+}
+
+
+function _resultFindRec(id) {
+ for( var i = 0; i != recordsCache.length; i++ ) {
+ var rec = recordsCache[i];
+ if( rec && rec.doc_id() == id )
+ return rec;
+ }
+ return null;
+}
+
+
+function resultBuildFormatIcons( row, rec, is_mr ) {
+ var ress = "";
+ var imgEl = $n(row, "result_mat_type");
+ if(!imgEl) return;
+
+ ress = getMarcData(rec.doc_id(),"998","d");
+ if(setFormatIcon(imgEl, ress)) unHideMe(imgEl);
+
+}
+
+function fetchGoogleBooksLink () {
+ return;
+ if (isbnList && googleBooksLink) {
+ var scriptElement = document.createElement("script");
+ scriptElement.setAttribute("id", "jsonScript");
+ scriptElement.setAttribute("src",
+ "https://books.google.com/books?bibkeys=" +
+ escape(isbnList) + "&jscmd=viewapi&callback=unhideGoogleBooksLink");
+ scriptElement.setAttribute("type", "text/javascript");
+ // make the request to Google Book Search
+ document.documentElement.firstChild.appendChild(scriptElement);
+ }
+}
+
+function resultPageIsDone(pos) {
+
+ return (recordsHandled == getDisplayCount()
+ || recordsHandled + getOffset() == getHitCount());
+}
+
+var resultCCHeaderApplied = false;
+
+/* -------------------------------------------------------------------- */
+/* dynamically add the copy count rows based on the org type 'countsrow'
+ is the row into which we will add TD's to hold the copy counts
+ This code generates copy count cells with an id of
+ 'copy_count_cell_<depth>_<pagePosition>' */
+function resultAddCopyCounts(rec, pagePosition) {
+
+ var r = table.rows[pagePosition + 1];
+ var countsrow = $n(r, config.names.result.counts_row );
+ var ccell = $n(countsrow, config.names.result.count_cell);
+
+ var nodes = orgNodeTrail(findOrgUnit(getLocation()));
+ var node = nodes[0];
+ var type = findOrgType(node.ou_type());
+ ccell.id = "copy_count_cell_" + type.depth() + "_" + pagePosition;
+ ccell.title = type.opac_label();
+ //addCSSClass(ccell, config.css.result.cc_cell_even);
+
+ var lastcell = ccell;
+ var lastheadcell = null;
+
+ var cchead = null;
+ var ccheadcell = null;
+ if(!resultCCHeaderApplied && !getLasso()) {
+ ccrow = $('result_thead_row');
+ ccheadcell = ccrow.removeChild($n(ccrow, "result_thead_ccell"));
+ var t = ccheadcell.cloneNode(true);
+ lastheadcell = t;
+ t.appendChild(text(type.opac_label()));
+ ccrow.appendChild(t);
+ resultCCHeaderApplied = true;
+ }
+}
+
+/* collect copy counts for a record using method 'methodName' */
+function resultCollectCopyCounts(rec, pagePosition, methodName) {
+ if(rec == null || rec.doc_id() == null) return;
+
+ var loc = getLasso();
+ if (loc) loc = -loc;
+ else loc= getLocation();
+
+ var req = new Request(methodName, loc, rec.doc_id(), getForm() );
+ req.request.userdata = [ rec, pagePosition ];
+ req.callback(resultHandleCopyCounts);
+ req.send();
+}
+
+function resultHandleCopyCounts(r) {
+ runEvt('result', 'copyCountsReceived', r.userdata[0], r.userdata[1], r.getResultObject());
+}
+
+
+/* XXX Needs to understand Lasso copy counts... */
+/* display the collected copy counts */
+function resultDisplayCopyCounts(rec, pagePosition, copy_counts) {
+ if(copy_counts == null || rec == null) return;
+ var r = table.rows[pagePosition + 1];
+ var cnt_avail = $n(r, "copy_count_avail");
+ if(cnt_avail && copy_counts[0]) {
+ /*if(copy_counts[0].available)*/ cnt_avail.innerHTML = copy_counts[0].available+' cop'+(copy_counts[0].available==1?'y':'ies')+' available';
+ //else {
+ fieldmapper.standardRequest(['open-ils.circ','open-ils.circ.bre.holds.count'], {async:true, params:[rec.doc_id(), r.id], oncomplete: drawHoldsCount});
+ $n(r, 'copy_holds2').innerHTML = ' on first copy returned of '+copy_counts[0].count+' cop'+(copy_counts[0].count==1?'y':'ies');
+ //}
+ }
+}
+
+function drawHoldsCount(r) {
+ if(!r.params[1]) return;
+ var row = $(r.params[1]);
+ if(!row) return;
+ var span = $n(row, 'copy_holds');
+ var resp = r.recv().content();
+ span.innerHTML = resp+' hold'+(resp==1?'':'s')+' ';
+}
+
+function showDetailedInfo(bool) {
+
+ var tbls = dojo.query('.results_info_table',$('result_table'));
+ if(bool) {
+ tbls.forEach(function(node, index, arr){
+ unHideMe($n(node,'results_pub_tr'));
+ unHideMe($n(node,'results_isbn_tr'));
+ unHideMe($n(node,'results_edition_tr'));
+ unHideMe($n(node,'results_phys_desc_tr'));
+ });
+ } else {
+ tbls.forEach(function(node, index, arr){
+ hideMe($n(node,'results_pub_tr'));
+ hideMe($n(node,'results_isbn_tr'));
+ hideMe($n(node,'results_edition_tr'));
+ hideMe($n(node,'results_phys_desc_tr'));
+ });
+ }
+}
+
+function fetchChiliFreshReviews() {
+ if (chilifresh && chilifresh != '(none)') {
+ try { chili_init(); } catch(E) { dump(E + '\n'); }
+ }
+}
+
+function postResultsCollect() {
+ var it = getCacheValue('showHoldEditor');
+ if(it) {
+ setCacheValue('showHoldEditor', null);
+ holdsDrawEditor({record:it.record, type:it.type});
+ }
+}
--- /dev/null
+var records = new Array();
+var table;
+var rowtemplate;
+var rresultLimit = 200;
+var resultFacetKey;
+
+var rresultIsPaged = false;
+
+function rresultUnload() { removeChildren(table); table = null;}
+
+attachEvt("common", "unload", rresultUnload);
+attachEvt("common", "run", rresultDoSearch);
+attachEvt("result", "idsReceived", rresultCollectRecords);
+attachEvt("result", "recordDrawn", rresultLaunchDrawn);
+
+hideMe($('copyright_block'));
+
+function rresultDoSearch() {
+
+ swapCanvas($('loading_alt'));
+
+ table = G.ui.result.main_table;
+ hideMe(G.ui.result.row_template);
+ if( table && table.parentNode ) {
+ while( table.parentNode.rows.length <= (getDisplayCount() +1) )
+ hideMe(table.appendChild(G.ui.result.row_template.cloneNode(true)));
+ }
+ unHideMe($('results_header_bar'));
+ rresultCollectIds();
+}
+
+function rresultCollectIds() {
+ var ids;
+
+ var rtype = getRtype();
+ if (rtype && rtype.indexOf('|') > -1)
+ rtype = rtype.substring(0,rtype.indexOf('|'));
+
+ var cgi = new CGI();
+ var htarget = cgi.param('hold_target');
+ if(htarget) {
+ rresultHandlePlaceHold(htarget);
+ return;
+ }
+
+ switch(rtype) {
+
+ case RTYPE_COOKIE:
+ ids = JSON2js(cookieManager.read(COOKIE_RIDS));
+ _rresultHandleIds( ids, ids.length );
+ break;
+
+ case RTYPE_TITLE:
+ case RTYPE_AUTHOR:
+ case RTYPE_SUBJECT:
+ case RTYPE_SERIES:
+ case RTYPE_KEYWORD:
+ rresultDoRecordSearch();
+ break;
+
+ case RTYPE_MULTI:
+ rresultDoRecordMultiSearch();
+ break;
+
+ case RTYPE_LIST :
+ rresultHandleList();
+ break;
+
+ case RTYPE_MARC :
+ rresultCollectMARCIds();
+ break;
+
+ case RTYPE_ISBN :
+ rresultCollectISBNIds();
+ break;
+
+ case RTYPE_TCN :
+ rresultCollectTCNIds();
+ break;
+
+ case RTYPE_ISSN :
+ rresultCollectISSNIds();
+ break;
+
+
+ case RTYPE_MRID :
+ case null :
+ case "" :
+ default:
+ var form = rresultGetForm();
+ var args = { format : form, org : getLocation(), depth : rresultGetDepth() };
+
+ var lasso = getLasso();
+ if (lasso) args.org = -lasso;
+
+ var req = new Request(FETCH_RIDS, getMrid(), args);
+ req.callback( rresultHandleRIds );
+ req.send();
+
+ if( rresultGetDepth() != findOrgDepth(globalOrgTree) ) {
+ var link = $('rresult_show_all_link');
+ if(link) {
+ unHideMe($('rresult_show_all'));
+ link.appendChild( text(
+ findOrgType(globalOrgTree.ou_type()).opac_label()));
+ }
+
+ } else {
+ if( rresultGetDepth() != getDepth() ) { /* inside a limited display */
+ var link = $('rresult_show_here_link');
+ if(link) {
+ link.appendChild( text(
+ findOrgType(findOrgUnit(getLocation()).ou_type()).opac_label()));
+ unHideMe($('rresult_show_here'));
+ }
+ }
+ }
+ }
+}
+
+function rresultExpandSearch() {
+ var args = {};
+ args[PARAM_RDEPTH] = findOrgDepth(globalOrgTree);
+ goTo(buildOPACLink(args));
+}
+
+function rresultContractSearch() {
+ var args = {};
+ RDEPTH = null;
+ args[PARAM_OFFSET] = 0;
+ goTo(buildOPACLink(args));
+}
+
+
+function rresultGetDepth() {
+ if( getRdepth() != null) return getRdepth();
+ return getDepth();
+}
+
+
+function rresultGetForm() {
+ var form;
+
+ if(getTform()) /* did the user select a format from the icon list (temporary) */
+ form = (getTform() == 'all') ? null : getTform();
+ else /* did the use select a format from simple search dropdown */
+ form = (getForm() == 'all') ? null : getForm();
+
+ if(!form) { /* did the user select a format from the advanced search */
+ form = getItemType();
+ var f = getItemForm();
+
+ if(form) {
+ form = form.replace(/,/,'');
+ if(f) form += '-' + f;
+ } else {
+ if(f) form = '-' + f;
+ }
+ }
+
+ return form;
+}
+
+
+function rresultCollectMARCIds() {
+
+ var args = {};
+ args.searches = JSON2js(getSearches());
+ args.limit = 200;
+ args.org_unit = globalOrgTree.id();
+ args.depth = 0;
+
+ rresultIsPaged = true;
+ var req = new Request(FETCH_ADV_MARC_MRIDS, args, getDisplayCount(), getOffset());
+ req.callback(rresultHandleRIds);
+ req.request.noretry = true;
+ req.send();
+}
+
+
+function rresultCollectISBNIds() {
+ var req = new Request(FETCH_ADV_ISBN_RIDS, getAdvTerm() );
+ req.callback(
+ function(r) {
+ var blob = r.getResultObject();
+ _rresultHandleIds(blob.ids, blob.count);
+ }
+ );
+ req.send();
+}
+
+function rresultCollectTCNIds() {
+ var req = new Request(FETCH_ADV_TCN_RIDS, getAdvTerm() );
+ req.callback(
+ function(r) {
+ var blob = r.getResultObject();
+ _rresultHandleIds(blob.ids, blob.count);
+ }
+ );
+ req.send();
+}
+
+function rresultCollectISSNIds() {
+ var req = new Request(FETCH_ADV_ISSN_RIDS, getAdvTerm() );
+ req.callback(
+ function(r) {
+ var blob = r.getResultObject();
+ _rresultHandleIds(blob.ids, blob.count);
+ }
+ );
+ req.send();
+}
+
+function rresultHandleList() {
+ var ids = new CGI().param(PARAM_RLIST);
+ var count;
+ if(!dojo.isArray(ids)) {
+ count = 1;
+ ids = [ids];
+ } else {
+ count = ids.length;
+ }
+ if(ids) _rresultHandleIds(ids, count);
+}
+
+var rresultTries = 0;
+function rresultHandleRIds(r) {
+ var res = r.getResultObject();
+
+ if(!res) res = {count:0,ids:[]};
+
+ if( res.count == 0 && rresultTries == 0 && ! r.noretry) {
+
+ rresultTries++;
+ var form = rresultGetForm();
+ var args = { format : form, org : getLocation(), depth : findOrgDepth(globalOrgTree) };
+
+ var lasso = getLasso();
+ if (lasso) args.org = -lasso;
+
+ var req = new Request(FETCH_RIDS, getMrid(), args );
+ req.callback( rresultHandleRIds );
+ req.send();
+ unHideMe($('no_formats'));
+ hideMe($('rresult_show_all'));
+
+ } else {
+
+ _rresultHandleIds(res.ids, res.count);
+ }
+}
+
+function _rresultHandleIds(ids, count) {
+ //var json = js2JSON({ids:ids,count:count});
+ /*
+ cookieManager.write(COOKIE_SRIDS, json, '+1d');
+ */
+
+ HITCOUNT = parseInt(count);
+ runEvt('result', 'hitCountReceived');
+ runEvt('result', 'idsReceived', ids, getOffset());
+}
+
+/*
+function rresultCollectRecords(ids) {
+ runEvt("result", "preCollectRecords");
+ var x = 0;
+ for( var i = getOffset(); i!= getDisplayCount() + getOffset(); i++ ) {
+ if(ids[i] == null) break;
+ var req = new Request(FETCH_RMODS, parseInt(ids[i]));
+ req.callback(rresultHandleMods);
+ req.request.userdata = x++;
+ req.send();
+ }
+}
+*/
+
+
+function rresultCollectRecords(ids, base) {
+ runEvt("result", "preCollectRecords");
+ var x = 0;
+
+ if (!base) base = 0;
+ if( rresultIsPaged ) base = 0;
+
+ for( var i = base; i!= getDisplayCount() + base; i++ ) {
+ if(ids[i] == null) break;
+ var req = new Request(FETCH_RMODS, parseInt(ids[i]));
+ req.callback(rresultHandleMods);
+ req.request.userdata = x++;
+ req.send();
+ }
+}
+
+var recsReceivedCalled = false;
+function rresultHandleMods(r) {
+ var rec = r.getResultObject();
+ runEvt('result', 'recordReceived', rec, r.userdata, false);
+ resultCollectCopyCounts(rec, r.userdata, FETCH_R_COPY_COUNTS);
+ if(resultPageIsDone() && !recsReceivedCalled) {
+ recsReceivedCalled = true;
+ runEvt('result', 'allRecordsReceived', recordsCache);
+ unHideMe($('copyright_block'));
+ }
+}
+
+function rresultLaunchDrawn(id, node) {
+ runEvt("rresult", "recordDrawn", id, node);
+}
+
+
+function rresultDoRecordSearch() {
+ rresultIsPaged = true;
+ resultCollectSearchIds(true, SEARCH_RS_QUERY, rresultFilterSearchResults );
+}
+
+function rresultDoRecordMultiSearch() {
+ rresultIsPaged = true;
+ resultCollectSearchIds(false, SEARCH_RS_QUERY, rresultFilterSearchResults );
+}
+
+
+function rresultFilterSearchResults(r) {
+ var result = r.getResultObject();
+ var ids = [];
+ if( result.count > 0 ) {
+ for( var i = 0; i != result.ids.length; i++ )
+ ids.push(result.ids[i][0]);
+ }
+
+ resultFacetKey = result.facet_key;
+ resultCompiledSearch = result.compiled_search;
+ cookieManager.write(COOKIE_SEARCH, js2JSON(result.compiled_search), -1);
+ _rresultHandleIds( ids, result.count );
+}
+
+function rresultHandlePlaceHold(target) {
+ function reload() {
+ location.href = location.href.replace(/&hold_target=\d+/, '');
+ }
+ attachEvt("common", "holdUpdated", reload);
+ attachEvt("common", "holdUpdateCanceled", reload);
+ attachEvt("common", "loginCanceled", reload);
+ holdsDrawEditor({record:target, type: 'T'});
+}
+
--- /dev/null
+var searchBarExpanded = false;
+/* our search selector boxes */
+var _ts, _fs;
+var isFrontPage = false;
+G.evt.common.init.push(searchBarInit);
+
+/* if set by the org selector, this will be the location used the
+ next time the search is submitted */
+var newSearchLocation;
+var newSearchDepth = null;
+
+
+function searchBarInit() {
+ _ts = G.ui.searchbar.type_selector;
+ _fs = G.ui.searchbar.form_selector;
+
+ try{G.ui.searchbar.text.focus();}catch(e){}
+ G.ui.searchbar.text.onkeydown = function(evt) {if(userPressedEnter(evt)) { searchBarSubmit(); } };
+ _ts.onkeydown = function(evt) {if(userPressedEnter(evt)) { searchBarSubmit(); } };
+ _fs.onkeydown = function(evt) {if(userPressedEnter(evt)) { searchBarSubmit(); } };
+
+ G.ui.searchbar.submit.onclick = searchBarSubmit;
+ _fs.onchange = function(e) {
+ var fs = G.ui.searchbar.form_selector;
+ var val = fs.options[fs.selectedIndex].value;
+
+ G.ui.searchbar.facets.value = val==''?'':"identifier|mattype["+val+"]";
+ };
+
+ /* set up the selector objects, etc */
+ var txtVal = (getTerm() != null) ? getTerm() : "";
+ if(getStype()=="cn") txtVal = txtVal.replace(/identifier\|bibcn:/, "");
+
+ G.ui.searchbar.text.value = txtVal;
+ G.ui.searchbar.facets.value = (getFacet() != null) ? getFacet() : "";
+ setSelector(_ts, getStype());
+ setSelector(_fs, getForm());
+
+ depthSelInit();
+
+ if(getSearches()) {
+ var searches = JSON2js(getSearches());
+ if(searches[1]) setSelector(_fs, searches[1].term);
+ if(!G.ui.searchbar.text.value) G.ui.searchbar.text.value = searches[0].term;
+ }
+
+ if(!isFrontPage && (findCurrentPage() != MYOPAC)) {
+ attachEvt('common','depthChanged', searchBarSubmit);
+ }
+
+ if( (limit = $('opac.result.limit2avail')) ) {
+ if(getAvail()) limit.checked = true;
+ if(getSort() && getSortDir())
+ setSelector($('opac.result.sort'), getSort()+'.'+getSortDir());
+ }
+
+ if( (limit2 = $('opac.result.limit2avail2')) ) if(getAvail()) limit2.checked = true;
+}
+
+function searchBarSubmit(isFilterSort) {
+ var text = G.ui.searchbar.text.value;
+ var facet_text = isFrontPage ? '' : G.ui.searchbar.facets.value;
+ clearSearchParams();
+ if(!text || text == "" || text == "Search Keyword") return;
+ //var d = (newSearchDepth != null) ? newSearchDepth : depthSelGetDepth();
+ var d = getDepth();
+ if(isNaN(d)) d = 0;
+ var args = {};
+
+ var tsVal = _ts.options[_ts.selectedIndex].value;
+ if(SHOW_MR_DEFAULT || (isFilterSort && findCurrentPage() == MRESULT)) {
+ args.page = MRESULT;
+ } else {
+ args.page = RRESULT;
+ args[PARAM_RTYPE] = tsVal=="cn"?"keyword":tsVal;
+ }
+
+ if(G.user && G.user.prefs['opac.hits_per_page']) args[PARAM_COUNT] = G.user.prefs['opac.hits_per_page'];
+ args[PARAM_STYPE] = tsVal;
+ args[PARAM_TERM] = tsVal=="cn"?"identifier|bibcn:"+text:text;
+ args[PARAM_FACET] = facet_text;
+ args[PARAM_LOCATION] = depthSelGetNewLoc();
+ args[PARAM_DEPTH] = d;
+ args[PARAM_FORM] = _fs.options[_fs.selectedIndex].value;
+ //args[PARAM_SORT] = isFilterSort?'':'pubdate';
+ //args[PARAM_SORT_DIR] = isFilterSort?'':'desc';
+
+ if($('opac.result.limit2avail') && !arguments[1]) {
+ args[PARAM_AVAIL] = ($('opac.result.limit2avail').checked) ? 1 : '';
+ if( (val = getSelectorVal($('opac.result.sort'))) ) {
+ args[PARAM_SORT] = val.split('.')[0];
+ args[PARAM_SORT_DIR] = val.split('.')[1];
+ }
+ } else if(arguments[1]) {
+ args[PARAM_AVAIL] = (arguments[1].checked) ? 1 : '';
+ if( (val = getSelectorVal($('opac.result.sort'))) ) {
+ args[PARAM_SORT] = val.split('.')[0];
+ args[PARAM_SORT_DIR] = val.split('.')[1];
+ }
+ }
+
+ goTo(buildOPACLink(args));
+}
+
+
--- /dev/null
+/* set up the colors in the sidebar
+ Disables/Enables certain components based on various state data */
+
+attachEvt("common", "init", initSideBar);
+//attachEvt("common", "init", setSidebarLinks);
+//attachEvt("common", "unload", sidebarTreesFree );
+
+function prevRResults() {
+ return buildOPACLink({ page : RRESULT });
+}
+
+function prevMResults() {
+ return buildOPACLink({ page : MRESULT });
+}
+
+function initSideBar() {
+ var page = findCurrentPage();
+
+ if( page == MRESULT )
+ unHideMe($("sidebar_results_wrapper"));
+
+ if( page == RRESULT ) {
+ unHideMe($("sidebar_results_wrapper"));
+ unHideMe(G.ui.sidebar[MRESULT]);
+ if( getRtype() == RTYPE_MRID )
+ $("sidebar_title_group_results").setAttribute("href", prevMResults());
+ else hideMe($("sidebar_title_group_results").parentNode);
+ }
+
+ /* if( page == RDETAIL ) {
+ unHideMe($("sidebar_results_wrapper"));
+ unHideMe(G.ui.sidebar[MRESULT]);
+ if(getRtype())
+ $("sidebar_title_results").setAttribute("href", prevRResults());
+ unHideMe(G.ui.sidebar[RRESULT]);
+
+ if( getRtype() == RTYPE_MRID )
+ $("sidebar_title_group_results").setAttribute("href", prevMResults());
+ else hideMe($("sidebar_title_group_results").parentNode);
+ } */
+
+ unHideMe(G.ui.sidebar[page]);
+ addCSSClass(G.ui.sidebar[page], "sidebar_item_active");
+
+ /* if we're logged in, show it and replace the Login link with the Logout link */
+ if(grabUser()) {
+ //G.ui.sidebar.username_dest.appendChild(text(G.user.usrname()));
+ //unHideMe(G.ui.sidebar.logoutbox);
+ unHideMe(G.ui.sidebar.logged_in_as);
+ hideMe(G.ui.sidebar.loginbox);
+ }
+
+ if(G.ui.sidebar.login) G.ui.sidebar.login.onclick = initLogin;
+ //if(G.ui.sidebar.logout) G.ui.sidebar.logout.onclick = doLogout;
+
+ if(isXUL()) hideMe( G.ui.sidebar.logoutbox );
+}
+
+/* sets up the login ui components */
+var loginBoxVisible = false;
+function loginDance() {
+ var rem = $('remember_me');
+ if(rem) rem = rem.checked; else rem = false;
+ rem = rem?"persist":"opac";
+
+ if(doLogin(true, rem)) {
+
+ if(!strongPassword( G.ui.login.password.value ) ) {
+
+ cookieManager.write(COOKIE_SES, "");
+ hideMe($('login_box'));
+ unHideMe($('change_pw_table'));
+ $('change_pw_current').focus();
+ $('change_pw_button').onclick = changePassword;
+ setEnterFunc($('change_pw_2'), changePassword);
+
+ } else {
+ loggedInOK();
+ }
+ }
+}
+
+function loggedInOK() {
+ showCanvas();
+ //G.ui.sidebar.username_dest.appendChild(text(G.user.usrname()));
+ //unHideMe(G.ui.sidebar.logoutbox);
+ unHideMe(G.ui.sidebar.logged_in_as);
+ hideMe(G.ui.sidebar.loginbox);
+ runEvt( 'common', 'loggedIn');
+
+ var org = G.user.prefs[PREF_DEF_LOCATION];
+ // KCLS wants the defautl search location to be the consortium
+ //if(!org) org = G.user.home_ou();
+ if(!org) org = globalOrgTree.id();
+
+ var depth = G.user.prefs[PREF_DEF_DEPTH];
+ if(! ( depth && depth <= findOrgDepth(org)) )
+ depth = findOrgDepth(org);
+
+ runEvt( "common", "locationChanged", org, depth);
+}
+
+
+function changePassword() {
+
+ var pc = $('change_pw_current').value;
+ var p1 = $('change_pw_1').value;
+ var p2 = $('change_pw_2').value;
+
+ if( p1 != p2 ) {
+ alert($('pw_no_match').innerHTML);
+ return;
+ }
+
+ if(!strongPassword(p2, true) ) return;
+
+ var req = new Request(UPDATE_PASSWORD, G.user.session, p2, pc );
+ req.send(true);
+ if(req.result()) {
+ alert($('pw_update_successful').innerHTML);
+ loggedInOK();
+ }
+}
+
+var pwRegexSetting;
+function strongPassword(pass, alrt) {
+
+ /* first, let's see if there is a configured regex */
+ if(!pwRegexSetting) {
+ var regex = fetchOrgSettingDefault(G.user.home_ou(), 'global.password_regex');
+ if(regex) {
+ if(pass.match(new RegExp(regex))) {
+ return true;
+ } else {
+ if(alrt)
+ alert($('pw_not_strong').innerHTML);
+ return false;
+ }
+ }
+ }
+
+ /* no regex configured, use the default */
+
+ var good = false;
+
+ do {
+
+ if(pass.length < 7) break;
+ if(!pass.match(/.*\d+.*/)) break;
+ if(!pass.match(/.*[A-Za-z]+.*/)) break;
+ good = true;
+
+ } while(0);
+
+ if(!good && alrt) alert($('pw_not_strong').innerHTML);
+ return good;
+}
+
+function initLogin() {
+ if(G.ui.login.button) G.ui.login.button.onclick = function(){$('login_form_submit').click();};
+ if(dojo.isIE) {
+ if(G.ui.login.username) G.ui.login.username.onkeydown = function(evt) {if(userPressedEnter(evt)) $('login_form_submit').click();};
+ if(G.ui.login.password) G.ui.login.password.onkeydown = function(evt) {if(userPressedEnter(evt)) $('login_form_submit').click();};
+ }
+
+ //if(findCurrentPage()==MYOPAC) {
+ swapCanvas(G.ui.login.box);
+ try{G.ui.login.username.focus();}catch(e){}
+ //}
+
+ G.ui.login.cancel.onclick = function(evt) {
+ showCanvas();
+ runEvt("common", "loginCanceled");
+ };
+
+ if(findCurrentPage() == MYOPAC)
+ G.ui.login.cancel.onclick = goHome;
+}
+
+function setSidebarLinks() {
+ G.ui.sidebar.home_link.setAttribute("href", buildOPACLink({page:HOME}));
+ G.ui.sidebar.advanced_link.setAttribute("href", buildOPACLink({page:ADVANCED}));
+ G.ui.sidebar.myopac_link.setAttribute("href", buildOPACLink({page:MYOPAC}, false, true));
+}
+
+function sidebarTreesFree() {
+ return;
+ removeChildren($(subjectSidebarTree.rootid));
+ removeChildren($(authorSidebarTree.rootid));
+ removeChildren($(seriesSidebarTree.rootid));
+ subjectSidebarTree = null;
+ authorSidebarTree = null;
+ seriesSidebarTree = null;
+}
--- /dev/null
+
+/* captures extraneous info from each record */
+
+var subjectCache = {};
+var authorCache = {};
+var seriesCache = {};
+
+function resultBuildCaches(records) {
+ for( var r in records ) {
+ var rec = records[r];
+ for( var s in rec.subject() )
+ subjectCache[s] == null ? subjectCache[s] = 1 : subjectCache[s]++;
+ authorCache[rec.author()] = 1;
+ for( var s in rec.series() ) seriesCache[rec.series()[s]] = 1;
+ }
+}
+
+function resultSortSubjects(a, b) { return -(a.count - b.count); } /* sort in reverse */
+function resultDrawSubjects() {
+
+ var subjs = [];
+ for( var s in subjectCache )
+ subjs.push( { sub : s, count : subjectCache[s] } );
+ subjs.sort(resultSortSubjects);
+
+ var ss = [];
+ for( var s in subjs ) ss.push(subjs[s].sub);
+
+ resultDrawSidebarTrees(
+ STYPE_SUBJECT,
+ "subjectSidebarTree", ss,
+ $("subject_tree_sidebar"),
+ $("subject_sidebar_tree_div") );
+}
+
+function resultDrawAuthors() {
+ var auths = new Array();
+ for( var s in authorCache ) auths.push(s);
+
+ resultDrawSidebarTrees(
+ STYPE_AUTHOR,
+ "authorSidebarTree", auths.sort(),
+ $("author_tree_sidebar"),
+ $("author_sidebar_tree_div") );
+}
+
+function resultDrawSeries() {
+ var sers = new Array();
+ for( var s in seriesCache ) sers.push(s);
+ resultDrawSidebarTrees(
+ STYPE_SERIES,
+ "seriesSidebarTree", sers.sort(),
+ $("series_tree_sidebar"),
+ $("series_sidebar_tree_div") );
+}
+
+var IESux = true;
+
+function resultDrawSidebarTrees( stype, treeName, items, wrapperNode, destNode ) {
+ if(findCurrentPage()=="rdetail") return;
+ eval("tree = " + treeName);
+
+ var xrefCache = [];
+ var found = false;
+ var x = 0;
+ for( var i in items ) {
+
+ if(isNull(items[i])) continue;
+
+ /* again, IE is a turd */
+ if(IE) { if(x++ > 5) break; }
+ else { if(x++ > 7) break; }
+
+ found = true;
+
+ var item = normalize(truncate(items[i], 65));
+ var args = {};
+ var href = resultQuickLink( items[i], stype );
+ tree.addNode( stype + "_" + items[i], treeName + 'Root', item, href );
+
+// if( !IE ) resultFireXRefReq(treeName, stype, items[i]);
+
+ var a = {};
+ a.type = stype;
+ a.term = item;
+ xrefCache.push(a);
+ }
+
+ if(found) {
+ unHideMe(wrapperNode);
+// if(IE) resultFireXRefSingle(treeName, xrefCache, stype);
+ /* XXX */ // disabled auth lookups for now
+
+ if( DO_AUTHORITY_LOOKUPS ) {
+ resultFireXRefBatch(treeName, xrefCache, stype);
+ }
+ }
+}
+
+/* XXX */
+function resultFireXRefBatch(treeName, xrefCache, stype) {
+ var query = [];
+ for( var i = 0; i != xrefCache.length; i++ ) {
+ var topic = xrefCache[i];
+ query.push( [ topic.type, topic.term ] );
+ }
+ var req = new Request(FETCH_CROSSREF_BATCH, query);
+ var tree;
+ eval('tree=' + treeName);
+ req.request._tree = tree;
+ req.request._stype = stype;
+ req.callback(resultRenderXRefTree);
+ req.send();
+}
+
+var xrefCacheIndex = {};
+xrefCacheIndex['subject'] = 0;
+xrefCacheIndex['author'] = 0;
+xrefCacheIndex['series'] = 0;
+
+function resultHandleXRefResponse(r) {
+ resultFireXRefSingle( r._treename, r._cache, r._stype );
+ resultAppendCrossRef(r);
+}
+
+
+function resultFireXRefSingle( treeName, xrefCache, stype ) {
+ var i = xrefCacheIndex[stype]++;
+ if(xrefCache[i] == null) return;
+ var item = xrefCache[i].term;
+ var tree;
+ eval('tree=' + treeName);
+ var req = new Request(FETCH_CROSSREF, stype, item);
+ req.request._tree = tree;
+ req.request._item = item;
+ req.request._stype = stype;
+ req.request._cache = xrefCache;
+ req.request._treename = treeName;
+ req.callback(resultHandleXRefResponse);
+ req.send();
+}
+
+function resultFireXRefReq( treeName, stype, item ) {
+ var tree;
+ eval('tree=' + treeName);
+ var req = new Request(FETCH_CROSSREF, stype, item);
+ req.request._tree = tree;
+ req.request._item = item;
+ req.request._stype = stype;
+ req.callback(resultAppendCrossRef);
+ req.send();
+}
+
+
+function resultQuickLink( term, type ) {
+ var args = {};
+ if(SHOW_MR_DEFAULT) {
+ args.page = MRESULT;
+ } else {
+ args.page = RRESULT;
+ args[PARAM_RTYPE] = type;
+ }
+ args[PARAM_OFFSET] = 0;
+ args[PARAM_TERM] = term;
+ args[PARAM_STYPE] = type;
+ return buildOPACLink(args);
+}
+
+/* XXX */
+function resultRenderXRefTree(r) {
+ var tree = r._tree;
+ var res = r.getResultObject();
+ var stype = r._stype;
+
+ for( var c in res ) {
+ var cls = res[c];
+ for( var t in cls ) {
+ var term = res[c][t];
+ var froms = term['from'];
+ var alsos = term['also'];
+ var total = 0;
+
+ for( var i = 0; (total++ < 5 && i < froms.length); i++ ) {
+ var string = normalize(truncate(froms[i], 45));
+ if($(stype + '_' + froms[i])) continue;
+ tree.addNode(stype + '_' + froms[i],
+ stype + '_' + t, string, resultQuickLink(froms[i],stype));
+ }
+ for( var i = 0; (total++ < 10 && i < alsos.length); i++ ) {
+ var string = normalize(truncate(alsos[i], 45));
+ if($(stype + '_' + alsos[i])) continue;
+ tree.addNode(stype + '_' + alsos[i],
+ stype + '_' + t, string, resultQuickLink(alsos[i],stype));
+ }
+ }
+ }
+}
+
+
+/* Addes the see-from/see-also entries for this subject item */
+function resultAppendCrossRef(r) {
+ var tree = r._tree
+ var item = r._item
+ var stype = r._stype;
+ var result = r.getResultObject();
+ if(!result) return;
+ var froms = result['from'];
+ var alsos = result['also'];
+
+ var total = 0;
+
+ for( var i = 0; (total++ < 5 && i < froms.length); i++ )
+ resultAddXRefItem( tree, item, stype, froms, i );
+
+ for( var i = 0; (total++ < 10 && i < alsos.length); i++ )
+ resultAddXRefItem( tree, item, stype, alsos, i );
+}
+
+/**
+ * Adds a single entry into the see-from/also sidebar tree
+ */
+var collectedStrings = [];
+function resultAddXRefItem(tree, rootItem, stype, arr, idx) {
+
+ var string = normalize(truncate(arr[idx], 45));
+
+ if( string == rootItem ) return;
+
+ if( grep( collectedStrings,
+ function(a) { return (a == string); }) ) return;
+
+ if($(stype + '_' + arr[idx])) return;
+
+ tree.addNode(stype + '_' + arr[idx],
+ stype + '_' + rootItem, string, resultQuickLink(arr[idx],stype));
+
+ collectedStrings.push(string);
+}
+
+
+
+
+
+
--- /dev/null
+attachEvt('result', 'allRecordsReceived', insertTip);
+
+/*
+var user_tips = [
+ 'Click on a folder icon in the sidebar to access related quick searches',
+ "If you don't find what you want try expanding your search using the range selector at the right of the search bar"
+];
+*/
+
+function insertTip () {
+ var tip_div = document.getElementById('tips');
+ if (tip_div) {
+ var tips = tip_div.getElementsByTagName('div')[0].getElementsByTagName('span');
+ var index = Math.floor(Math.random() * tips.length);
+ if(tips[index]) tip_div.appendChild( tips[index] );
+ removeCSSClass(tip_div, 'hide_me');
+ }
+}
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Loads the environment -->
+<!--#include virtual="setenv.xml"-->
+
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [
+ <!--#include virtual="/opac/locale/${locale}/opac.dtd"-->
+]>
+
+
+<html xmlns='http://www.w3.org/1999/xhtml'>
+ <!--#include virtual="header.xml"-->
+ <!--#if expr="$OILS_PAGE='index.xml'"-->
+ <!--#include virtual="home/index_body.xml"-->
+ <!--#else-->
+ <!--#include virtual="body.xml"-->
+ <!--#endif-->
+</html>
+
--- /dev/null
+<!--
+<tr id='adv_global_trow' type='input'>
+-->
+<![CDATA[<!-- ****************** adv_global_row.xml ***************************** -->]]>
+<tr id='<!--#echo var="adv_global_row_id"-->' type='input'>
+ <td align='left' width='100%' nowrap='nowrap'>
+
+ <!-- select the search class -->
+ <select name='type' style='margin-right: 7px;'>
+ <option value='keyword' selected='selected'>&common.keyword;</option>
+ <option value='title'>&common.title;</option>
+ <option value='author'>&common.author;</option>
+ <option value='subject'>&common.subject;</option>
+ <option value='series'>&common.series;</option>
+ <option value='bibcn'>&common.bibcn;</option>
+
+ </select>
+
+ <!-- select how to treat the text -->
+ <select name='contains' style='margin-right: 7px;'>
+ <option value='contains'>&opac.advanced.refined.contains;</option>
+ <option value='nocontains'>&opac.advanced.refined.nocontains;</option>
+ <option value='exact'>&opac.advanced.refined.exact;</option>
+ </select>
+
+ <!-- search term -->
+ <input type='text' size='18' name='term' /><a href="javascript:;" style="position:relative;top:1px;" title="Remove row" alt="Remove row" onclick='
+ var row = this.parentNode.parentNode;var tbody = row.parentNode;
+ if( tbody.getElementsByTagName("tr").length > 2 ) row.parentNode.removeChild(row);'><img src="/opac/skin/kcls/graphics/adv_row_close_btn.png" /></a>
+
+ </td>
+</tr>
+<![CDATA[<!-- ****************** end: adv_global_row.xml ***************************** -->]]>
--- /dev/null
+
+<![CDATA[<!-- ****************** advanced_global.xml ***************************** -->]]>
+<table id='adv_global_search' class='data_grid data_grid_center' width='100%'>
+
+ <style>
+ #adv_global_search select { width: 13em; }
+ #adv_global_input_table select { width: 7em; }
+ .adv_adv_link { font-size: 8pt; color: red; }
+ </style>
+
+ <tr style='border-bottom: none;'>
+
+ <!-- Contains the user-addable(?) rows to define search class, containment and text -->
+ <td valign='top' style='border-bottom: none;'>
+ <table width='100%' id='adv_global_input_table'>
+
+ <thead>
+ <tr><td><div style="width:100%;" class="header_middle">&advanced.search.title;</div></td></tr>
+ </thead>
+ <tbody id='adv_global_tbody'>
+
+
+ <!--#set var="adv_global_row_id" value="adv_global_trow"-->
+ <!--#include virtual="adv_global_row.xml"-->
+
+ <!--#set var="adv_global_row_id" value=""-->
+
+ <!-- add a new row -->
+ <tr id='adv_global_addrow'>
+ <td align='left' style="padding-top:7px;">
+ <a href="javascript:;" id="myopac_new_global_row" onclick='advAddGblRow();'>Add Search Row</a>
+ <button onclick='advSubmitGlobal();' class="hide_me">&advanced.search.submit;</button>
+ </td>
+ </tr>
+
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td align='top'>
+ <div style="width:100%;" class="header_middle">Search Filters</div>
+ <table cellpadding='10' cellspacing='0' border='0'><tr>
+ <td valign='top'>
+ <strong>&advanced.item.type;</strong><br />
+ <!--<a id='adv_global_item_type_link_adv' class='classic_link adv_adv_link'
+ href='javascript:void(0);' onclick='
+ hideMe($("adv_global_item_type_basic"));
+ unHideMe($("adv_global_item_type"));
+ hideMe(this);
+ unHideMe($("adv_global_item_type_link_basic"));
+ '>Add More Filters</a>
+
+ <a id='adv_global_item_type_link_basic' class='hide_me classic_link adv_adv_link'
+ href='javascript:void(0);' onclick='
+ unHideMe($("adv_global_item_type_basic"));
+ hideMe($("adv_global_item_type"));
+ unHideMe($("adv_global_item_type_link_adv"));
+ hideMe(this);
+ '>&advanced.basic.link;</a>-->
+ <select multiple='multiple' size='4' id='adv_global_item_type' class='hide_me'></select>
+ <select multiple='multiple' size='4' id='adv_global_item_type_basic'>
+ <option value=''>&opac.search.allFormats;</option>
+ <option value='a'>Book</option>
+ <option value='i'>Book on cassette</option>
+ <option value='n'>Book on CD</option>
+ <option value='x'>Download music</option>
+ <option value='y'>Download video</option>
+ <option value='h'>DVD</option>
+ <option value='w'>eBook - Audio</option>
+ <option value='v'>eBook - Text</option>
+ <option value='e'>Equipment</option>
+ <option value='f'>Films</option>
+ <option value='o'>Kit</option>
+ <option value='q'>Large print</option>
+ <option value='b'>Magazine</option>
+ <option value='d'>Microform</option>
+ <option value='k'>Music cassette</option>
+ <option value='j'>Music CD</option>
+ <option value='l'>Music LP</option>
+ <option value='p'>Newspaper</option>
+ <option value='t'>Online</option>
+ <option value='u'>Player</option>
+ <option value='c'>Printed music</option>
+ <option value='2'>Read along with cassette</option>
+ <option value='5'>Read along with CD</option>
+ <option value='c'>Scores</option>
+ <option value='m'>Software</option>
+ <option value='g'>Video</option>
+ <option value='r'>3-D Object</option>
+ <option value='z'>Map</option>
+ <option value='s'>Slide set</option>
+ </select>
+ </td>
+ <td valign='top'>
+ <strong>&advanced.language;</strong><br />
+ <select multiple='multiple' size='4' id='adv_global_lang'>
+ <!--#include virtual="../../../../../common/xml/item_lang_options.xml"-->
+ </select>
+ </td>
+ <td valign='top'>
+ <strong>&advanced.audience;</strong><br />
+ <select multiple='multiple' size='3' id='adv_global_audience' class='hide_me'></select>
+ <select multiple='multiple' size='3' id='adv_global_audience_basic'>
+ <option value='abcj'>Children's</option>
+ <option value='d'>Teen</option>
+ <option value='e'>&advanced.adult;</option>
+ </select>
+ <!--<a id='adv_global_audience_link_adv' class='classic_link adv_adv_link'
+ href='javascript:void(0);' onclick='
+ hideMe($("adv_global_audience_basic"));
+ unHideMe($("adv_global_audience"));
+ hideMe(this);
+ unHideMe($("adv_global_audience_link_basic"));
+ '>&advanced.link;</a>
+
+ <a id='adv_global_audience_link_basic' class='hide_me classic_link adv_adv_link'
+ href='javascript:void(0);' onclick='
+ unHideMe($("adv_global_audience_basic"));
+ hideMe($("adv_global_audience"));
+ unHideMe($("adv_global_audience_link_adv"));
+ hideMe(this);'>&advanced.basic.link;</a>-->
+ </td>
+ <td valign='top'>
+ <strong>&advanced.sort.criteria;</strong>
+ <table style='border: none; width: 100%;'>
+ <tr>
+ <td align='center' width='100%'>
+ <table class='' width='100%'>
+ <tbody>
+ <tr>
+ <td align=''>
+ <select id='adv_global_sort_by' onchange='__setsortsel();'>
+ <option value='rel'>&advanced.relevance;</option>
+ <option value='title'>&common.title;</option>
+ <option value='author'>&common.author;</option>
+ <option value='pubdate'>&advanced.pubdate;</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+
+ <td>
+ <select id='adv_global_sort_dir' disabled='disabled'>
+ <option value='asc'>&advanced.sort.asc;</option>
+ <option value='desc'>&advanced.sort.desc;</option>
+ </select>
+ </td>
+
+ <!-- force the enable/disable sort dir code to run -->
+ </tr>
+ <tr>
+ <td align='center' class="hide_me">
+ <span>&advanced.frbrize;</span>
+ <input id='adv_group_titles' type='checkbox' />
+ </td>
+ <td align='center'>
+
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr></table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table cellpadding='10' cellspacing='0' border='0'>
+ <tbody>
+ <tr>
+ <td align='right' class="hide_me">
+ <span>&advanced.item.form;</span>
+ </td>
+ <td align='left' class="hide_me">
+ <select multiple='multiple' size='3' id='adv_global_item_form'>
+ </select>
+ </td>
+
+ <td align='right' class="hide_me">
+ <span>&advanced.literary.form;</span>
+ <a id='adv_global_lit_form_link_adv' class='classic_link adv_adv_link'
+ href='javascript:void(0);' onclick='
+ hideMe($("adv_global_lit_form_basic"));
+ unHideMe($("adv_global_lit_form"));
+ hideMe(this);
+ unHideMe($("adv_global_lit_form_link_basic"));
+ '>&advanced.link;</a>
+
+ <a id='adv_global_lit_form_link_basic' class='hide_me classic_link adv_adv_link'
+ href='javascript:void(0);' onclick='
+ unHideMe($("adv_global_lit_form_basic"));
+ hideMe($("adv_global_lit_form"));
+ unHideMe($("adv_global_lit_form_link_adv"));
+ hideMe(this);
+ '>&advanced.basic.link;</a>
+ </td>
+ <td align='left' class="hide_me">
+ <select multiple='multiple' size='3' id='adv_global_lit_form' class='hide_me'>
+ </select>
+ <select multiple='multiple' size='3' id='adv_global_lit_form_basic'>
+ <option value='0 '>&advanced.non.fiction;</option>
+ <option value='1'>&advanced.fiction;</option>
+ </select>
+ </td>
+ <td align='right' class="hide_me">
+ <span>&advanced.biblevel;</span>
+ </td>
+ <td align='left' class="hide_me">
+ <select multiple='multiple' size='3' id='adv_global_bib_level'>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td valign='top'>
+ <strong>&advanced.search.library;</strong><br />
+ <!--#include virtual='../common/libselect.xml'--><br />
+ <div style="position:relative;top:7px;"><input type='checkbox' id='opac.result.limit2avail'/> <label style="position:relative;top:-2px;" for='opac.result.limit2avail'>&result.limit2avail;</label></div>
+
+ </td>
+ <td valign='top'>
+ <strong>&advanced.filter.pubyear;</strong><br />
+ <select id='adv_global_pub_date_type' onchange='
+ if($("adv_global_pub_date_type").selectedIndex == 3)
+ unHideMe($("adv_global_pub_date_2_span"));
+ else
+ hideMe($("adv_global_pub_date_2_span"));'>
+ <option value='equals' selected='selected'>&advanced.filter.pubyear.equals;</option>
+ <option value='before'>&advanced.filter.pubyear.before;</option>
+ <option value='after'>&advanced.filter.pubyear.after;</option>
+ <option value='between'>&advanced.filter.pubyear.between;</option>
+ </select>
+ <div style='margin-top:5px;'>
+ <input id='adv_global_pub_date_1' type='text' size='4' maxlength='4'/>
+ <span id='adv_global_pub_date_2_span' class='hide_me'>
+ &common.and; <input id='adv_global_pub_date_2' type='text' size='4' maxlength='4'/>
+ </span>
+ </div>
+ </td>
+ </tr>
+
+
+ <!-- copy location selector -->
+ <tr id='adv_copy_location_filter_row' class='hide_me'>
+ <td align='right'>&opac.advanced.copy_loc_filter;</td>
+ <td align='left' id='adv_copy_location_filter_td'>
+ <select size='3' id='adv_copy_location_filter_select' multiple='multiple'>
+ </select>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+
+ <tr style='border-top: none;'>
+ <td align='center' valign='top' style='border-top: none;' colspan='2'>
+
+
+ </td>
+
+ </tr>
+
+ <tr class='border_4_2'>
+ <td align="left" colspan='2'>
+ <div style="width:100%;height:0px;margin-bottom:15px;" class="header_middle"></div>
+ <img src="/opac/skin/kcls/graphics/search_btn.gif" alt="Search" onclick='advSubmitGlobal();' style="cursor:pointer;" />
+ <![CDATA[ ]]>
+ <a href="javascript:;" onclick='clearSearchBoxes();' style="position: relative; top: -9px;">Reset Form</a>
+ </td>
+ </tr>
+
+</table>
+
+
+<div id='adv_quick_search_sidebar' class='sidebar_chunk hide_me' style='text-align:center; margin-top: 20px; width:400px;'>
+ <div id='adv_quick_search'>
+ <div class='adv_quick_search color_4'><b>&sidebar.quick.search;</b></div>
+ <div style='margin-top: 8px;'>
+ <table><tbody><tr>
+ <td>
+ <select id='adv_quick_type'>
+ <option value='isbn'>&opac.advanced.quick.isbn;</option>
+ <option value='issn'>&opac.advanced.quick.issn;</option>
+ <option value='cn'>&opac.advanced.quick.cn;</option>
+ <option value='lccn'>&opac.advanced.quick.lccn;</option>
+ <option value='tcn'>&opac.advanced.quick.tcn;</option>
+ <option value='barcode'>&opac.advanced.quick.barcode;</option>
+ </select>
+ </td><td>
+ <input type='text' id='adv_quick_text' size='16' />
+ </td>
+ </tr></tbody></table>
+ </div>
+
+ <span class='hide_me' id='myopac.copy.not.found'>&sidebar.copy.not.found;</span>
+ <div style='margin-top: 8px;' class='adv_quick_search_submit'>
+ <img src="/opac/skin/kcls/graphics/search_btn.gif" alt="Search" id="adv_quick_submit" onclick='advGenericSearch();' style="cursor:pointer;" />
+ <!-- <a id='adv_quick_submit' href='javascript:advGenericSearch();' class='classic_link'>&common.submit;</a> -->
+ </div>
+ </div>
+</div>
+
+
+<div id='adv_marc_search_sidebar' class='sidebar_chunk hide_me' style='width:400px; margin-top: 20px;'>
+ <div class='adv_quick_search color_4'><b>&search.marc;</b></div>
+ <table style='margin: 3px; width: 100%;' id='adv_sdbar_table' class='border_4_3'>
+ <tbody>
+ <tr>
+ <td align="right">&search.marc.tag;</td>
+ <td align="left"><input name='advanced.marc.tag' maxlength='3' size='3' /></td>
+ <td align="right">&search.marc.subfield;</td>
+ <td align="left"><input name='advanced.marc.subfield' maxlength='1' size='1' /></td>
+ </tr>
+ <tr>
+ <td align="right">&search.marc.value;</td>
+ <td colspan='3' align="left"><input name='advanced.marc.value' size='18' /></td>
+ </tr>
+ <tr name='crow' class='hide_me'>
+ <td colspan='4' align='center'>
+ <a href='javascript:void(0);' class='classic_link'
+ onclick='
+ var div = $("adv_marc_search_sidebar");
+ if( div.getElementsByTagName("table").length > 1 )
+ div.removeChild(this.parentNode.parentNode.parentNode.parentNode);'>&common.close;</a>
+ </td>
+ </tr>
+
+ </tbody>
+ </table>
+ <div id='adv_marc_submit' class='adv_quick_search_submit'>
+ <a style='margin-right: 4px; position:relative;top:-10px;' class='classic_link' href='javascript:advAddMARC();'>&search.marc.add.row;</a>
+ <!-- <a style='margin-left: 4px;' class='classic_link' href='javascript:advMARCRun();'>&common.submit;</a> -->
+ <img alt="Search" src="/opac/skin/kcls/graphics/search_btn.gif" onclick='advMARCRun();' style="cursor:pointer;" />
+ </div>
+</div>
+
+
+<![CDATA[<!-- ****************** end: advanced_global.xml ***************************** -->]]>
+
--- /dev/null
+<!--
+XXX Deprecate me
+-->
+<![CDATA[<!-- ****************** advanced_marc.xml ***************************** -->]]>
+<table class='data_grid' width='100%'>
+ <thead>
+ <tr>
+ <td colspan='6'>&opac.advanced.marc.title;</td>
+ </tr>
+ </thead>
+ <tbody id='advanced.marc.tbody'>
+ <tr id='advanced.marc.template'>
+ <td>
+ <span>&opac.advanced.marc.tag;: </span>
+ <input name='advanced.marc.tag' maxlength='3' size='3' />
+ </td>
+ <td>
+ <span>&opac.advanced.marc.subfield;: </span>
+ <input name='advanced.marc.subfield' maxlength='1' size='1' />
+ </td>
+ <td>
+ <span>&opac.advanced.marc.value;: </span>
+ <input name='advanced.marc.value' size='36' />
+ </td>
+
+ <td>
+ <input type='submit' value='X' onclick='
+ var row = this.parentNode.parentNode;
+ var tbody = row.parentNode;
+ if(tbody.getElementsByTagName("tr").length > 2)
+ tbody.removeChild(row);
+ ' />
+ </td>
+ </tr>
+ <tr id='advanced.marc.submit.row'>
+ <td colspan='4' align='center'>
+
+ <input name='advanced.marc.addrow' type='submit' onclick='advAddMARC();'
+ value='&opac.advanced.marc.addrow;' />
+
+ <input style='margin-left: 10px;'
+ onclick='advMARCRun();' type='submit' value='&common.submit;' />
+ </td>
+ </tr>
+ </tbody>
+</table>
+<![CDATA[<!-- ****************** end: advanced_marc.xml ***************************** -->]]>
--- /dev/null
+<!--
+XXX Deprecate me
+-->
+<![CDATA[<!-- ****************** advanced_quick.xml ***************************** -->]]>
+<table class='data_grid' width='95%'>
+ <thead>
+ <tr>
+ <td colspan='6'>&opac.advanced.quick.title;</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>
+ <span style='padding-right: 0px;'>&common.call.number.label;</span>
+ <input id='opac.advanced.quick.cn' style='margin: 2px;' type='text' size='12' />
+ <input type='submit' onclick='advCNRun();' value='&advanced.go;' />
+ </td>
+ <td>
+ <span style='padding-right: 0px;'>&common.isbn.label;</span>
+ <input id='opac.advanced.quick.isbn' style='margin: 2px;' type='text' size='13' maxlength='13' />
+ <input type='submit' onclick='advISBNRun();' value='&advanced.go;' />
+ </td>
+ <td>
+ <span style='padding-right: 0px;'>&common.issn.label;</span>
+ <input id='opac.advanced.quick.issn' style='margin: 2px;' type='text' size='9' maxlength='9' />
+ <input type='submit' onclick='advISSNRun();' value='&advanced.go;' />
+ </td>
+ </tr>
+ </tbody>
+</table>
+<![CDATA[<!-- ****************** end: advanced_quick.xml ***************************** -->]]>
--- /dev/null
+<body class="tundra">
+<noscript>
+ <style type="text/css">#toptable { display: none; }</style>
+ <p style="font-size: 1.3em; padding: 3em; text-align: center;">
+ &home.js.disabled;
+ </p>
+</noscript>
+
+<!--#include virtual="top_nav.xml"-->
+
+<div id="search-wrapper">
+ <div style="margin:auto;width:974px;height:0px;">
+ <div id="user-ql">
+ </div>
+ <!--#include virtual="utils.xml"-->
+ </div>
+
+ <!--#if expr="$OILS_PAGE!='advanced.xml'"--><!--#include virtual="common/searchbar.xml"--><!--#endif-->
+</div>
+
+<div id="content-wrapper">
+<div id="myopac_tabs" class="hide_me">
+ <div id="acct_tabs">
+ <a href="javascript:;" id="acct_summary" onclick="swapTabs(this);myOPACChangePage('summary');" rel="myopac_summary_div"></a>
+ <a href="javascript:;" id="acct_checked_out" onclick="swapTabs(this);myOPACChangePage('checked');" rel="myopac_checked_div"></a>
+ <a href="javascript:;" id="acct_holds" onclick="swapTabs(this);myOPACChangePage('holds');" rel="myopac_holds_div"></a>
+ <a href="javascript:;" id="acct_prefs" onclick="swapTabs(this);myOPACChangePage('prefs');" rel="myopac_prefs_div"></a>
+ <a href="javascript:;" id="acct_lists" onclick="swapTabs(this);myOPACChangePage('bookbag');" rel="myopac_bookbag_div"></a>
+ <a href="javascript:;" class="hide_me" id="acct_favs" style="margin-right:0px;" onclick="swapTabs(this);myOPACChangePage('fines');" rel="myopac_fines_div"></a>
+ </div>
+</div>
+
+<div id="adv_search_parent" class="hide_me">
+ <div id="adv_search_tabs">
+ <a href="javascript:;" alt="Advanced Search" id="adv_search" onclick="swapTabs(this);" rel="adv_global_search"></a>
+ <a href="javascript:;" alt="Numeric Search" id="num_search" onclick="swapTabs(this);" rel="adv_quick_search_sidebar"></a>
+ <a href="javascript:;" alt="Expert Search" id="expert_search" onclick="swapTabs(this);" rel="adv_marc_search_sidebar"></a>
+ </div>
+</div>
+
+<div id="results_header_bar" class="hide_me">
+ <div id="results_header_inner">
+ <div class="results_header_btns"><a href="index.xml"><img alt="Another Search" src="/opac/skin/kcls/graphics/another_search.png" onmouseover="this.src='/opac/skin/kcls/graphics/another_search_hover.png';" onmouseout="this.src='/opac/skin/kcls/graphics/another_search.png';" /></a></div>
+ <div class="results_header_btns"><a href="javascript:;" onclick="goTo(buildOPACLink({page:ADVANCED}));"><img alt="Advanced Search" src="/opac/skin/kcls/graphics/adv_search.png" onmouseover="this.src='/opac/skin/kcls/graphics/adv_search_hover.png';" onmouseout="this.src='/opac/skin/kcls/graphics/adv_search.png';" /></a></div>
+ <div class="results_header_btns" style="width:111px;height:25px;"><a href="javascript:;" class="hide_me" id="cacheListLink" onclick="showCachedList();"><img alt="View My List" src="/opac/skin/kcls/graphics/view_my_list.png" onmouseover="this.src='/opac/skin/kcls/graphics/view_my_list_hover.png';" onmouseout="this.src='/opac/skin/kcls/graphics/view_my_list.png';" /></a></div>
+
+ <div class="results_header_div"></div>
+ <div class="results_header_lbl">Sort by</div>
+<!--#if expr="$OILS_PAGE='rresult.xml' || $OILS_PAGE='mresult.xml'"-->
+<!--#include virtual="result/filtersort.xml" -->
+<!--#endif -->
+ <div class="results_header_div"></div>
+ <div class="results_header_lbl">View</div>
+ <select class="results_header_sel" style="width:88px;" onchange="this.selectedIndex?showDetailedInfo(true):showDetailedInfo(false);"><option>Simple</option><option>Detailed</option></select>
+ <div class="results_header_div"></div>
+ <input type="checkbox" id="opac.result.limit2avail2" onclick='searchBarSubmit(true, this);' style="float:left;position:relative;top:2px;left:-2px;margin-right:4px;" /><label for="opac.result.limit2avail2" class="results_header_lbl">Limit to available items</label>
+ <div style="clear:both;"></div>
+ </div>
+</div>
+
+ <div id="main-content">
+ <!--#if expr="$OILS_PAGE!='rresult.xml' && $OILS_PAGE!='myopac.xml' && $OILS_PAGE!='advanced.xml'"--><div style="height:15px;clear:both;"></div><!--#endif-->
+<!--#if expr="$OILS_PAGE='index.xml'"-->
+ <!--#include virtual="common/altcanvas.xml"-->
+ <!--#include virtual="home/homesearch.xml"-->
+<!--#else-->
+ <!--#if expr="$OILS_PAGE='rresult.xml'"-->
+ <div id="tehResultsPage">
+ <!--#include virtual="result/result_header.xml"-->
+ <div id="rresults_page">
+ <!--#endif-->
+ <!--#include virtual="common/altcanvas.xml"-->
+ <!--#include virtual="common/ilsevents.xml"-->
+ <!--#include virtual="page_${OILS_PAGE}"-->
+
+ <!--#if expr="$OILS_PAGE!='advanced.xml'"-->
+ <!--#include virtual="common/statusbar.xml"-->
+ <!--#endif-->
+ <!--#if expr="$OILS_PAGE='advanced.xml'"-->
+ <style type="text/css">#search-wrapper{padding:0; border:none;}</style>
+ <!--#endif-->
+ <!--#include virtual="common/tips.xml"-->
+ <!--#if expr="$OILS_PAGE='rresult.xml'"--></div></div><!--#endif-->
+<!--#endif-->
+ <div style="clear:both;height:15px;"></div>
+ </div>
+</div>
+<!--#include virtual='footer.xml'-->
+<div>
+</div>
+<!-- hide unused pieces of the opac here - prevents JS from complaining -->
+<div class="hide_me">
+ <div id="now_searching_location"></div>
+ <div id="login_cancel_button"></div>
+ <div id="x"></div>
+</div>
+<div dojoType='openils.widget.ProgressDialog' jsId='progressDialog' style="width:300px;"></div>
+<!--#if expr="$HTTP_USER_AGENT = /Firefox/ || $HTTP_USER_AGENT = /xulrunner/" -->
+<!--#include virtual='common/js_common_postbody.xml'-->
+<!--#endif-->
+<!--#if expr="$OILS_PAGE='rresult.xml' || $OILS_PAGE='rdetail.xml' || $OILS_PAGE='mresult.xml'"-->
+ <!--#if expr="$OILS_CHILIFRESH_ACCOUNT && $OILS_CHILIFRESH_ACCOUNT != '(none)'"-->
+ <script type='text/javascript' src='<!--#echo var='OILS_CHILIFRESH_URL'-->'></script>
+ <!--#endif-->
+<!--#endif-->
+<!--#if expr="$OILS_PAGE='rdetail.xml'"-->
+ <!--#if expr="${OILS_NOVELIST_URL} && ${OILS_NOVELIST_URL}!='(none)'"-->
+ <script type='text/javascript' id='EIT' src='<!--#echo var='OILS_NOVELIST_URL'-->'></script>
+ <!--#endif-->
+<!--#endif-->
+</body>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Loads the environment -->
+<!--#include virtual="setenv.xml"-->
+
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [
+ <!--#include virtual="/opac/locale/${locale}/opac.dtd"-->
+]>
+
+
+<html xmlns='http://www.w3.org/1999/xhtml'>
+ <!--#include virtual="header.xml"-->
+ <!--#if expr="$OILS_PAGE='index.xml'"-->
+ <!--#include virtual="home/index_body.xml"-->
+ <!--#else-->
+ <!--#include virtual="body.xml"-->
+ <!--#endif-->
+</html>
+
--- /dev/null
+
+<!-- These are the UI components that may be needed on any given page. The must be set to class += 'hide_me' by default -->
+<![CDATA[<!-- ****************** altcanvas.xml ***************************** -->]]>
+<div id='not_the_canvas' xmlns:xi="http://www.w3.org/2001/XInclude">
+ <!--#if expr="$FRONT_PAGE!='true'"--><!--#include virtual="login.xml"--><!--#endif-->
+ <!--#include virtual="orgtree.xml"-->
+ <!--#if expr="$FRONT_PAGE!='true'"--><!--#include virtual="holds.xml"--><!--#if expr="$OILS_PAGE!='myopac.xml'"--><!--#include virtual="mylist.xml"--><!--#endif--><!-- #include virtual="cn_browse.xml"--><!--#endif-->
+
+ <div id='loading_alt' class='hide_me canvas' style='margin-top: 6px;'>
+ <div style='margin-top: 30px; margin-bottom: 30px; text-align: center; font-weight: 700;' class='color_3'>
+ <img src='../../../../images/progressbar_green.gif' style='margin: 5px;' />
+ </div>
+ </div>
+
+</div>
+<![CDATA[<!-- ****************** end: altcanvas.xml ***************************** -->]]>
--- /dev/null
+
+<![CDATA[<!-- ****************** cn_browse.xml ***************************** -->]]>
+<div id='cn_browse' class='hide_me cn_browser'
+ style='width: 95%; text-align: center; padding: 15px;'>
+ <div id='cn_browse_loading' class='cn_browse_loading hide_me'>&common.cn.loading;</div>
+ <div id='cn_browse_div'>
+
+
+ <div style='width: 90%; text-align: center; margin: 10px;' class='color_4'>
+ <span>&common.cn.browsing;</span><b style='margin-left: 6px;' id='cn_browse_where'> </b>
+ </div>
+ <table class='data_grid bookshelf' width='100%'>
+ <thead>
+ <tr>
+ <td><a id='cn_browse_next' class='classic_link'
+ href='javascript:cnBrowsePrev();'><b>&common.cn.previous;</b></a></td>
+ <td colspan='1' align='center'>&common.cn.shelf;</td>
+ <td><a id='cn_browse_prev' class='classic_link'
+ href='javascript:cnBrowseNext();'><b>&common.cn.next;</b></a></td>
+ </tr>
+ </thead>
+ <tbody id='cn_tbody'>
+ <tr id='cn_browse_row'>
+ <td id='cn_browse_td' class='cn_browse_item' width='25%' valign='top'>
+ <a><img height='60' width='50'
+ class='cn_browse_info' name='cn_browse_pic' border='0' /></a>
+ <div style='font-weight: bold;' class='cn_browse_info' name='cn_browse_cn'> </div>
+ <div class='cn_browse_info'><a name='cn_browse_title' class='classic_link'> </a></div>
+ <div class='cn_browse_info'><a name='cn_browse_author' class='classic_link'> </a></div>
+ <div class='cn_browse_info' name='cn_browse_lib'> </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+</div>
+<![CDATA[<!-- ****************** end: cn_browse.xml ***************************** -->]]>
--- /dev/null
+<!-- CSS shared across pages goes here -->
+
+<link type='text/css' rel='stylesheet' href="<!--#echo var='OILS_SKIN_BASE'-->/default/css/layout.css"/>
+
+<!-- Our font CSS's -->
+<link type='text/css' rel='stylesheet' href='<!--#echo var="OILS_CSS_BASE"-->/mediumfont.css' />
+
+<!-- Our colors -->
+<link type='text/css' rel="stylesheet" href="<!--#echo var='OILS_THEME_BASE'-->/default/css/colors.css" />
+
+<!-- An alternate stylesheet -->
+<link type='text/css' rel="alternate stylesheet" title='&opac.style.reddish;' href="<!--#echo var='OILS_THEME_BASE'-->/reddish/css/colors.css" />
+
+<!-- OpenSearch auto discovery -->
+<link type="application/opensearchdescription+xml"
+ rel='search' title="Evergreen"
+ href="http://<!--#echo var='SERVER_NAME'-->/opac/extras/opensearch/1.1/-/osd.xml" />
+
+<!-- enable Dojo date picker -->
+<style type="text/css">
+ @import '/js/dojo/dojo/resources/dojo.css';
+ @import '/js/dojo/dijit/themes/tundra/tundra.css';
+</style>
+
--- /dev/null
+<div id='fonts_div'>
+ <div id='text_size_div' style='position:absolute; top: 2px; right: 6px;'>
+ <span style='vertical-align: top;'>&common.textsize.title;</span>
+ <span style='vertical-align: top;'><a href="javascript:void(0);" onclick="setFontSize('regular');"> &common.textsize.regular; </a></span>
+ <span style='vertical-align: top;'> &common.textsize.separator; </span>
+ <span style='vertical-align: top;'><a href="javascript:void(0);" onclick="setFontSize('large');"> &common.textsize.large; </a></span>
+ <span style='vertical-align: top;'> <span style="font-weight:bold;">|</span> </span>
+ <span style='vertical-align: top;'>&common.language;</span>
+ <span id='translation_switch' dojoType="dijit.form.FilteringSelect" store="openils.I18N.localeStore"
+ searchAttr="label" required="false" jsId='opacLocaleSelector'>
+ <script type="dojo/connect" event="startup">
+ this.attr('value', locale);
+ dojo.connect(this, 'onChange', function() {
+ location.href = location.href.replace(
+ /opac\/[^\/]+\/skin/,
+ 'opac/' + this.attr('value') + '/skin'
+ );
+ });
+ </script>
+ </span>
+ </div>
+</div>
--- /dev/null
+
+<![CDATA[<!-- ****************** format_selector.xml ***************************** -->]]>
+<select id='<!--#echo var="FORM_SEL_ID"-->'>
+ <option value=''>&opac.search.allFormats;</option>
+<option value='a'>Book</option>
+<option value='i'>Book on cassette</option>
+<option value='n'>Book on CD</option>
+<option value='x'>Download music</option>
+<option value='y'>Download video</option>
+<option value='h'>DVD</option>
+<option value='w'>eBook - Audio</option>
+<option value='v'>eBook - Text</option>
+<option value='e'>Equipment</option>
+<option value='f'>Films</option>
+<option value='o'>Kit</option>
+<option value='q'>Large print</option>
+<option value='b'>Magazine</option>
+<option value='d'>Microform</option>
+<option value='k'>Music cassette</option>
+<option value='j'>Music CD</option>
+<option value='l'>Music LP</option>
+<option value='p'>Newspaper</option>
+<option value='t'>Online</option>
+<option value='u'>Player</option>
+<option value='c'>Printed music</option>
+<option value='2'>Read along with cassette</option>
+<option value='5'>Read along with CD</option>
+<option value='c'>Scores</option>
+<option value='m'>Software</option>
+<option value='g'>Video</option>
+<option value='r'>3-D Object</option>
+<option value='z'>Map</option>
+<option value='s'>Slide set</option>
+<!--
+ <option value='at'>&opac.search.books;</option>
+ <option value='at-d'>&opac.search.largePrint;</option>
+ <option value='i'>&opac.search.audioBooks;</option>
+ <option value='g'>&opac.search.videoRecordings;</option>
+ <option value='j'>&opac.search.music;</option>
+ <option value='m'>&opac.search.electronic;</option>
+-->
+</select>
+<![CDATA[<!-- ****************** end: format_selector.xml ***************************** -->]]>
--- /dev/null
+
+<![CDATA[<!-- ****************** holds.xml ***************************** -->]]>
+<div>
+ <div id='xulholds_box' class='hide_me canvas' style='margin-top: 6px;'>
+ <center>
+ <table class='data_grid' style='margin-top: 20px;'>
+ <tbody>
+ <tr>
+ <td>&opac.holds.xulRecipient;:</td>
+ <td><input type='text' id='xul_recipient_barcode' /></td>
+ <td><input type='submit' value='&common.submit;' id='xul_recipient_barcode_submit' /></td>
+ <td><input type='submit' value='&common.cancel;' onclick='showCanvas();' /></td>
+ <td><input type='submit' value='&common.hold.place;' id='xul_recipient_me' /></td>
+ </tr>
+ </tbody>
+ </table>
+ </center>
+ </div>
+
+ <div id='check_holds_box' class='hide_me canvas'
+ style='margin-top: 6px; width: 100%; text-align: center'>
+ <br/><br/><br/>
+ <b>&common.hold.check;</b>
+ </div>
+
+ <div id='holds_box' class='hide_me canvas' style='margin-top: 6px;'>
+ <br/>
+ <h1>Place Hold</h1>
+ <p>You would like to place a hold on <strong>"<span id="holds_title"></span>"</strong> to be picked up at <strong>"<span id="holds_pickup_lib"></span>"</strong>. <br />If this is correct, press <strong>SUBMIT</strong>.</p>
+ <p>If you would like to change the library pick up location, select from the <![CDATA[ ]]> <select style="width:200px;" id="holds_org_selector"></select><br />Location dropdown menu.</p>
+<P>If you use the Traveling Library Center (TLC) and ABC Express services, please select "Outreach" to have the item delivered during your scheduled visit.</P>
+<a href="javascript:;" id="holds_submit"><img alt="Submit" src="/opac/skin/kcls/graphics/btnSubmit.png" /></a> <![CDATA[ ]]> <a href="javascript:;" id="holds_cancel"><img alt="Cancel" src="/opac/skin/kcls/graphics/btnCancel.png" /></a><br /><br />
+ <p>* If you need your item today, and it is checked in at your library, please place your hold and then call your library to set it aside. Placing a hold without calling the library will increase your wait time.<br /><a href="javascript:;">Library phone numbers.</a></p>
+ <p>* For best possible service, we recommend keeping a printed copy of your most recent holds list.</p>
+
+ <table width='90%' border="1" class="hide_me">
+ <tbody>
+ <tr>
+ <td class='holds_cell color_1'
+ align='center' colspan='2'>&common.hold.create;</td>
+ </tr>
+ <tr>
+ <td class='holds_cell'>&opac.holds.recipient;:</td>
+ <td class='holds_cell' id='holds_recipient'> </td>
+ </tr>
+ <tr>
+ <td class='holds_cell'>&common.title.label;</td>
+ <!-- <td class='holds_cell' id='holds_title'> </td> -->
+ </tr>
+ <tr>
+ <td class='holds_cell'>&common.author;</td>
+ <td class='holds_cell' id='holds_author'> </td>
+ </tr>
+ <tr>
+ <td class='holds_cell'>&common.format;</td>
+ <td class='holds_cell' id='holds_format'> </td>
+ </tr>
+ <tr id='hold_physical_desc_row'>
+ <td class='holds_cell'>&common.physical.label;</td>
+ <td class='holds_cell' id='holds_physical_desc'> </td>
+ </tr>
+
+ <tr class='hide_me' id='holds_cn_row'>
+ <td class='holds_cell'>&common.call.number.label;</td>
+ <td class='holds_cell'><b id='holds_cn'/> </td>
+ </tr>
+
+ <tr class='hide_me' id='holds_copy_row'>
+ <td class='holds_cell'>&common.copy.barcode.label;</td>
+ <td class='holds_cell'><b id='holds_copy'/> </td>
+ </tr>
+
+ <tr class='hide_me' id='holds_type_row'>
+ <td class='holds_cell'>&common.hold.type.label;</td>
+ <td class='holds_cell hide_me' id='holds_is_cn'><b>&common.hold.volume;</b></td>
+ <td class='holds_cell hide_me' id='holds_is_copy'><b>&common.hold.copy;</b></td>
+ </tr>
+
+ <tr>
+ <td class='holds_cell'>&opac.holds.contactPhone;:</td>
+ <td class='holds_cell'>
+ <input id='holds_phone' size='13' maxlength='12'/>
+ <span style='margin-left: 4px; font-size: 7pt;'>&common.phone.format;</span>
+ </td>
+ </tr>
+ <tr>
+ <td class='holds_cell'>&common.phone.enable;</td>
+ <td class='holds_cell'>
+ <input type='checkbox' id='holds_enable_phone' checked='checked' onchange='if (this.checked) $("holds_phone").disabled=false; else $("holds_phone").disabled = true;'/>
+ </td>
+ </tr>
+
+ <tr>
+ <td class='holds_cell'>&opac.holds.contactEmail;:</td>
+ <td class='holds_cell' id='holds_email'>
+ <span class='hide_me' id='holds.no_email'>
+ &common.email.none;<br/>
+ &common.email.set;
+ </span>
+ <span class='hide_me' id='holds.no_email.xul'>
+ &common.email.none;
+ </span>
+
+ </td>
+ </tr>
+ <tr>
+ <td class='holds_cell'>&common.email.enable;</td>
+ <td class='holds_cell'>
+ <input type='checkbox' id='holds_enable_email' checked='checked'/>
+ </td>
+ </tr>
+ <!--
+ <tr id='holds_depth_selector_row' class='hide_me'>
+ <td class='holds_cell'>Hold Range</td>
+ <td class='holds_cell'>
+ <select id='holds_depth_selector'></select>
+ </td>
+ </tr>
+ -->
+ <tr>
+ <td class='holds_cell'>&opac.holds.pickupLocation;</td>
+ <td class='holds_cell'>
+ <!-- <select id='holds_org_selector'> </select> -->
+ </td>
+ </tr>
+
+ <tr>
+ <td class='holds_cell'>&opac.holds.expire_time;</td>
+ <td class='holds_cell'>
+ <input dojoType="dijit.form.DateTextBox" size='10' maxlength='10' id='holds_expire_time' />
+ </td>
+ </tr>
+
+ <tr>
+ <td class='holds_cell'>
+ &opac.holds.freeze;
+ <a class='classic_link' href='javascript:alert("&opac.holds.freeze.help;");'>&common.help;</a>
+ </td>
+ <td class='holds_cell'>
+ <input type='checkbox' id='holds_frozen_chkbox' onchange='if($("holds_frozen_chkbox").checked) unHideMe($("hold_frozen_thaw_row")); else hideMe($("hold_frozen_thaw_row"));' />
+ </td>
+ </tr>
+
+ <tr id='hold_frozen_thaw_row' class='hide_me'>
+ <td class='holds_cell'>
+ &opac.holds.freeze.thaw_date;
+ </td>
+ <td class='holds_cell'>
+ <input dojoType="dijit.form.DateTextBox" size='10' maxlength='10' id='holds_frozen_thaw_input' />
+ </td>
+ </tr>
+
+ <tr id='holds_alt_formats_row_extras' class='hide_me'>
+ <td colspan='2' align='center'>
+ <div style='padding: 8px;'>
+ <a class='classic_link' href='javascript:void(0);' style='padding: 5px;'
+ onclick='unHideMe($("holds_alt_formats_row"));'>&common.hold.advanced;</a>
+ </div>
+ </td>
+ </tr>
+
+ <tr id='holds_alt_formats_row' class='hide_me'>
+
+ <td class='holds_cell'>
+ <div style='margin-bottom: 5px;'>
+ <span>&common.format.alternatives; </span>
+ <span> <a class='classic_link' style='color:red;' href='javascript:void(0);'
+ onclick='alert($("holds_explain_adv").innerHTML)'>&common.help;</a></span>
+ </div>
+ <div>&common.control.click;</div>
+ </td>
+
+ <td class='holds_cell'>
+ <select id='hold_alt_form_selector' multiple='multiple' style='width: 14em;'>
+ <option value='at' class='hide_me'>&opac.search.books;</option>
+ <option value='at-d' class='hide_me'>&opac.search.largePrint;</option>
+ <option value='i' class='hide_me'>&opac.search.audioBooks;</option>
+ <option value='g' class='hide_me'>&opac.search.videoRecordings;</option>
+ <option value='j' class='hide_me'>&opac.search.music;</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td class='holds_cell' align='center' colspan='2'>
+ <!-- <button id='holds_submit'>&opac.holds.placeHold;</button> -->
+ <button class='hide_me' id='holds_update'>&common.hold.update;</button>
+ <span style='padding: 20px;'> </span>
+ <!-- <button id='holds_cancel'>&common.cancel;</button> -->
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <div class='hide_me' id='holds_success'>&opac.holds.success;</div>
+ <div class='hide_me' id='holds_failure'>&opac.holds.failure;</div>
+ <span class='hide_me' id='holds_bad_phone'>
+ &common.phone.format.help;
+ </span>
+
+ <span class='hide_me' id='hold_not_allowed'>
+ &common.hold.failed;
+ </span>
+ </div>
+
+ <div id="anonListTable" class="hide_me" style="margin-top: 6px;">
+ <select id="holdsCacheSel" class="hide_me"></select><br />
+ <a href="javascript:;" onclick="placeHoldOnCache();">Place hold on selected</a><br />
+ <a href="javascript:;" onclick="delSelCache();">Remove selected</a>
+
+ <table id="temp_list_holds" cellpadding='0' cellspacing='0' border='0' style="margin-top:10px;"><tr>
+ <td width="1%" style="padding-left:10px;"><input type='checkbox' title='Select All' id='anon_selector' onclick="checkAll($('anonListParent'),this.id)" /></td>
+ <td width="1%"></td>
+ <td width="98%" style="padding-left:40px;"><strong>Title</strong></td>
+ </tr></table>
+
+ <table width='100%' style="margin-left:7px;margin-bottom:10px;">
+ <thead>
+ <tr><td width='20'></td><td width='30'></td><td></td></tr>
+ </thead>
+ <tbody id="anonListParent">
+ <tr id="anonListTemp">
+ <td><input type='checkbox' name='anon_selector' /></td>
+ <td name="curr_row"></td>
+ <td name="title"></td>
+ </tr>
+ </tbody>
+ </table>
+ <a href="javascript:;" onclick="try { hideResultsPage(); } catch(e) {} hideMe($('anonListTable'));">Back to search results</a>
+ </div>
+
+ <span class='hide_me' id='format_words'>
+ <span name='at'>&opac.search.books;</span>
+ <span name='at-d'>&opac.search.largePrint;</span>
+ <span name='i'>&opac.search.audioBooks;</span>
+ <span name='g'>&opac.search.videoRecordings;</span>
+ <span name='j'>&opac.search.music;</span>
+ <span name='m'>&opac.search.electronic;</span>
+ </span>
+
+ <span class='hide_me' id='holds_explain_adv'>&holds.advanced_options;</span>
+ <span class='hide_me' id='holds_pick_good_org'>&common.hold.delivery;</span>
+ <span class='hide_me' id='hold_dup_exists'>&common.hold.exists;</span>
+ <span class='hide_me' id='hold_dup_exists_override'>&common.hold.exists.override;</span>
+ <span id='hold_failed_patron_barred' class='hide_me'>&common.hold.barred;</span>
+ <span id='invalid_hold' class='hide_me'>&common.hold.item.invalid;</span>
+ <span id='holds_invalid_recipient' class='hide_me'>&common.hold.patron.invalid;</span>
+
+ <span class='hide_me' id='hold_checked_out'>The requested item is already checked out to this account.</span>
+ <span class='hide_me' id='hold_checked_out_override'>The requested item is already checked out to this account. Place the hold anyway?</span>
+
+</div>
+<![CDATA[<!-- ****************** end: holds.xml ***************************** -->]]>
--- /dev/null
+
+<![CDATA[<!-- ****************** ilsevents.xml ***************************** -->]]>
+<span class='hide_me'>
+ <span id='ilsevent.1000'>&ilsevent.1000;</span>
+ <span id='ilsevent.1001'>&ilsevent.1001;</span>
+ <span id='ilsevent.1002'>&ilsevent.1002;</span>
+ <span id='ilsevent.1200'>&ilsevent.1200;</span>
+ <span id='ilsevent.5000'>&ilsevent.5000;</span>
+ <span id='ilsperm.CREATE_HOLD'>&ilsperm.CREATE_HOLD;</span>
+
+ <!-- Local OPAC Specific strings/events -->
+ <span id='auth_session_expiring'>&opac.session_expiring;</span>
+ <span id='auth_session_expired'>&opac.session_expired;</span>
+ <span id='user_not_found'>&common.user_not_found;</span>
+</span>
+<![CDATA[<!-- ****************** end: ilsevents.xml ***************************** -->]]>
--- /dev/null
+<script language='javascript' type="text/javascript"><![CDATA[
+ var locale = location.href.replace( /.+opac\/([^\/]+)\/skin.+/, '$1' );
+ if (!locale) locale = '<!--#echo var="locale"-->';
+
+ var djConfig = {
+ locale: locale.toLowerCase(),
+ parseOnLoad: true,
+ isDebug: false
+ };
+ var lang, bidi;
+]]></script>
+
+<script type='text/javascript' src='/js/dojo/dojo/dojo.js'></script>
+
+<!--#if expr="$OILS_PAGE='myopac.xml'"-->
+<!-- my acccount uses a lot more classes -->
+<script type='text/javascript'
+ src='/IDL2js?mvr,bre,aou,aout,pgt,lasso,cmf,cmc,cmsa,cam,cifm,clfm,citm,cblvl,ccs,au,accs,ahr,ahrn,acn,actscecm,cbreb,cbreb,cbrebi,acp,cust,ac,aua,mous,circ,mbts,mb,ausp,csp,acpl,mp'>
+</script>
+<!--#else-->
+<script type='text/javascript'
+ src='/IDL2js?ahr,mvr,bre,aou,aout,pgt,lasso,cmf,cmc,cmsa,cam,cifm,clfm,citm,cblvl,ccs,au,acp,acpl'>
+</script>
+
+<!--#endif-->
+
+
+<!--#if expr="$HTTP_USER_AGENT = /Firefox/ || $HTTP_USER_AGENT = /xulrunner/" -->
+<!-- Load all Firefox/Xulrunner JS just prior to </body> -->
+<!--#else-->
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_JS_BASE"-->/JSON_v1.js'></script>
+<script language='javascript' type="text/javascript" src='/js/dojo/opensrf/opensrf.js'></script>
+<script language='javascript' type="text/javascript" src='/js/dojo/dojo/openils_dojo.js'></script>
+<script language='javascript' type="text/javascript" src='/js/dojo/fieldmapper/AutoIDL.js'></script>
+
+<script language='javascript' type="text/javascript" src='<!--#echo var="OILS_JS_BASE"-->/<!--#echo var="locale"-->/OrgTree.js'></script>
+<script language='javascript' type="text/javascript" src='<!--#echo var="OILS_JS_BASE"-->/<!--#echo var="locale"-->/FacetDefs.js'></script>
+
+<!--#if expr="$OILS_OPAC_COMBINED_JS"-->
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/combined.js'></script>
+<!--#else -->
+<!--
+ When combined JS is enabled in the Apache config, the block
+ below defines which files are added to the final combined JS file.
+ Currently, only files in $OPAC/common/js/ are eligible for automatic combination.
+-->
+<!--START COMPRESSION-->
+<script language='javascript' type="text/javascript" src='<!--#echo var="OILS_JS_BASE"-->/OrgLasso.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_JS_BASE"-->/utils.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_JS_BASE"-->/config.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_JS_BASE"-->/CGI.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_JS_BASE"-->/md5.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_JS_BASE"-->/slimtree.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_JS_BASE"-->/opac_utils.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_JS_BASE"-->/org_utils.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_JS_BASE"-->/RemoteRequest.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_JS_BASE"-->/init.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_JS_BASE"-->/added_content.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_JS_BASE"-->/DP_DateExtensions.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_JS_BASE"-->/Cookies.js'></script>
+<!--END COMPRESSION-->
+<!--#endif -->
+<script type="text/javascript" src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/contentslider.js'></script>
+<script src="<!--#echo var='OILS_SKIN_BASE'-->/kcls/js/misc.js" type='text/javascript'></script>
+
+<!--#if expr="$OILS_PAGE!='advanced.xml'"-->
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/search_bar.js'></script>
+<!--#endif-->
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/depth_selector.js'></script>
+
+<!--#if expr="$OILS_PAGE='rresult.xml'"-->
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/sidebar_extras.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/rresult.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/result_common.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/tips.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/holds.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/sidebar.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/rdetail.js'></script>
+<!--#endif-->
+
+<!--#if expr="$OILS_PAGE='rdetail.xml'"-->
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/sidebar.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/sidebar_extras.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/result_common.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/rresult.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/rdetail.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/cn_browse.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/holds.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/container.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/copy_details.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/common/js/Date.W3CDTF.js'></script>
+<script language='javascript' type='text/javascript' src='/opac/skin/kcls/js/marc.js'></script>
+<script type="text/javascript"><![CDATA[
+ attachEvt("common", "init", function() {
+ setTimeout(
+ function() {
+ var here = findOrgUnit(getLocation());
+ if (getDepth() > 0 || getDepth === 0 ) {
+ while (getDepth() < findOrgDepth(here))
+ here = findOrgUnit( here.parent_ou() );
+ }
+
+ new openils.BibTemplate(
+ { record : new CGI().param('r'), org_unit : here.shortname() }
+ ).render();
+ }, 10
+ );
+ });
+]]></script>
+<!--#endif-->
+
+
+<!--#if expr="$OILS_PAGE='myopac.xml'"-->
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/myopac.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/container.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/holds.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/sidebar.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/common/js/Date.W3CDTF.js'></script>
+
+<!--#endif-->
+
+<!--#if expr="$OILS_PAGE='mresult.xml'"-->
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/sidebar_extras.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/mresult.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/result_common.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/tips.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/holds.js'></script>
+<!--#endif-->
+
+<!--#if expr="$OILS_PAGE='cnbrowse.xml'"-->
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/cn_browse.js'></script>
+<!--#endif-->
+
+<!--#if expr="$OILS_PAGE='advanced.xml'"-->
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/advanced.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/adv_global.js'></script>
+<script language='javascript' type='text/javascript' src='<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/sidebar.js'></script>
+<!--#endif-->
+
+
+<!-- global js -->
+<script language='javascript' type='text/javascript'><![CDATA[
+ <!--#include virtual="js_shared.xml"-->
+ dojo.addOnLoad(init);
+ dojo.addOnLoad(opac_init)
+]]> </script>
+
+<!--#endif--> <!-- != Firefox/Xulrunner -->
--- /dev/null
+\r
+ <script src='<!--#echo var="OILS_JS_BASE"-->/utils.js' type='text/javascript'></script>\r
+ <script src='<!--#echo var="OILS_JS_BASE"-->/config.js' type='text/javascript'></script>\r
+ <script src='<!--#echo var="OILS_JS_BASE"-->/CGI.js' type='text/javascript'></script>\r
+ <script src='<!--#echo var="OILS_JS_BASE"-->/Cookies.js' type='text/javascript'></script>\r
+ <script src='<!--#echo var="OILS_JS_BASE"-->/md5.js' type='text/javascript'></script>\r
+ <script src='<!--#echo var="OILS_JS_BASE"-->/slimtree.js' type='text/javascript'></script>\r
+ <script src='<!--#echo var="OILS_JS_BASE"-->/JSON_v1.js' type='text/javascript'></script>\r
+\r
+<script type="text/javascript">\r
+ var locale = location.href.replace( /.+opac\/([^\/]+)\/skin.+/, '$1' );\r
+ if (!locale) locale = '<!--#echo var="locale"-->';\r
+ var djConfig = { \r
+ locale: locale.toLowerCase(), \r
+ AutoIDL: ['cblvl', 'cam', 'citm', 'clfm', 'cifm', 'accs', 'au', 'aou', 'aout', 'pgt', 'lasso', 'mvr', 'ahr', 'cbreb', 'cbrebi', 'acp', 'acn', 'cust', 'ac', 'aua', 'mous', 'circ', 'mbts', 'mb', 'ausp', 'csp'], \r
+ parseOnLoad: true, \r
+ isDebug: false,\r
+ modulePaths: {\r
+ "fieldmapper": '/js/dojo/fieldmapper'\r
+ }\r
+ }, lang, bidi;\r
+ \r
+ /*config.css.color_1 = "";\r
+ config.css.color_2 = "";\r
+ config.css.color_3 = "";*/\r
+ <!-- set up some global JS config variables, read from the Apache config -->\r
+ var OILS_OPAC_IMAGES_HOST = null;<!--#if expr="$OILS_OPAC_IMAGES_HOST"-->\r
+ OILS_OPAC_IMAGES_HOST = '<!--#echo var="OILS_OPAC_IMAGES_HOST"-->extras/ac/jacket/';<!--#endif -->\r
+ var OILS_OPAC_STATIC_PROTOCOL = null;<!--#if expr="$OILS_OPAC_STATIC_PROTOCOL"-->\r
+ OILS_OPAC_STATIC_PROTOCOL = '<!--#echo var="OILS_OPAC_STATIC_PROTOCOL"-->';<!--#endif -->\r
+ \r
+ <!--#if expr="$OILS_OPAC_FORCE_LOGIN_SSL"-->\r
+ forceLoginSSL = true;\r
+ <!--#endif -->\r
+</script>\r
+\r
+ <script src='/js/dojo/dojo/dojo.js' type="text/javascript"></script>\r
+ <script src='/js/dojo/dojo/openils_dojo.js' type="text/javascript"></script>\r
+ <script src='/js/dojo/opensrf/opensrf.js' type="text/javascript"></script>\r
+ <script src='/js/dojo/fieldmapper/AutoIDL.js' type="text/javascript"></script>\r
+ \r
+ <script src='<!--#echo var="OILS_JS_BASE"-->/opac_utils.js' type='text/javascript'></script>\r
+ <script src='<!--#echo var="OILS_JS_BASE"-->/<!--#echo var="locale"-->/OrgTree.js' type='text/javascript'></script>\r
+ <script src='<!--#echo var="OILS_JS_BASE"-->/<!--#echo var="locale"-->/FacetDefs.js' type='text/javascript'></script>\r
+ <script src='<!--#echo var="OILS_JS_BASE"-->/OrgLasso.js' type='text/javascript'></script>\r
+ <script src='<!--#echo var="OILS_JS_BASE"-->/org_utils.js' type='text/javascript'></script>\r
+ <script>\r
+ //<![CDATA[\r
+ var localSuppressedOrgs = {1500:true, 1501:true, 1558:true}; /* change to suit */ /* changed from array to object - IE fix */\r
+ for (var i in orgArraySearcher) {\r
+ var org = orgArraySearcher[i];\r
+ if(localSuppressedOrgs[i]) { /* removed indexOf() - isn't supported on <= IE8 */\r
+ org.opac_visible('f');\r
+ }\r
+ }\r
+ //]]>\r
+ </script>\r
+ <script src='<!--#echo var="OILS_JS_BASE"-->/RemoteRequest.js' type='text/javascript'></script>\r
+ <script src='<!--#echo var="OILS_JS_BASE"-->/init.js' type='text/javascript'></script>\r
+ <script src='<!--#echo var="OILS_JS_BASE"-->/added_content.js' type='text/javascript'></script>\r
+ \r
+ <script src="<!--#echo var='OILS_SKIN_BASE'-->/kcls/js/depth_selector.js" type='text/javascript'> </script>\r
+ <!--#if expr="$OILS_PAGE!='advanced.xml'"--><script src="<!--#echo var='OILS_SKIN_BASE'-->/kcls/js/search_bar.js" type='text/javascript'> </script><!--#endif -->\r
+ <!--#if expr="$OILS_PAGE='rresult.xml' || $OILS_PAGE='myopac.xml'"--><script src="<!--#echo var='OILS_SKIN_BASE'-->/kcls/js/sidebar.js" type='text/javascript'></script><!--#endif-->\r
+ <script src="<!--#echo var='OILS_SKIN_BASE'-->/kcls/js/misc.js" type='text/javascript'></script>\r
+ <!-- myopac.js-->\r
+ <script src="<!--#echo var='OILS_OPAC_JS_HOST'-->common/js/DP_DateExtensions.js" type='text/javascript'></script>\r
+<!-- TESTING NO ANALYTICS\r
+ <script src='https://www.google.com/jsapi' type='text/javascript' language='javascript'></script>\r
+-->\r
+ \r
+\r
+ \r
--- /dev/null
+<script type="text/javascript"><![CDATA[
+ dojo.require('openils.Util');
+
+ // set up some global JS config variables, read from the Apache config
+
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/contentslider.js');
+ openils.Util.requireLegacy('/js/dojo/dojo/openils_dojo.js');
+ openils.Util.requireLegacy('/js/dojo/fieldmapper/AutoIDL.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_JS_BASE"-->/<!--#echo var="locale"-->/OrgTree.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_JS_BASE"-->/<!--#echo var="locale"-->/FacetDefs.js');
+
+ <!--#if expr="$OILS_OPAC_COMBINED_JS"-->
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/combined.js')
+ <!--#else -->
+ /* See js_common.xml for which files are actually combined/compressed by autogen */
+ openils.Util.requireLegacy('<!--#echo var="OILS_JS_BASE"-->/OrgLasso.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_JS_BASE"-->/utils.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_JS_BASE"-->/config.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_JS_BASE"-->/CGI.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_JS_BASE"-->/md5.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_JS_BASE"-->/slimtree.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_JS_BASE"-->/opac_utils.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_JS_BASE"-->/org_utils.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_JS_BASE"-->/RemoteRequest.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_JS_BASE"-->/init.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_JS_BASE"-->/added_content.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_JS_BASE"-->/DP_DateExtensions.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_JS_BASE"-->/Cookies.js');
+ <!--#endif -->
+
+ <!--#include virtual="js_shared.xml"-->
+
+ function skin_init() {
+ openils.Util.requireLegacy('/opac/skin/kcls/js/depth_selector.js');
+ openils.Util.requireLegacy('/opac/skin/kcls/js/misc.js');
+
+ <!--#if expr="$OILS_PAGE!='advanced.xml'"-->
+ openils.Util.requireLegacy('/opac/skin/kcls/js/search_bar.js');
+ <!--#endif -->
+
+ <!--#if expr="$OILS_PAGE='rresult.xml'"-->
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/sidebar_extras.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/rresult.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/result_common.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/tips.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/holds.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/sidebar.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/rdetail.js');
+ <!--#endif-->
+
+ <!--#if expr="$OILS_PAGE='rdetail.xml'"-->
+
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/sidebar.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/sidebar_extras.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/result_common.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/rresult.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/rdetail.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/cn_browse.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/holds.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/container.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/copy_details.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/common/js/Date.W3CDTF.js');
+ openils.Util.requireLegacy('/opac/skin/kcls/js/marc.js');
+
+ attachEvt("common", "init", function() {
+ var here = findOrgUnit(getLocation());
+ if (getDepth() > 0 || getDepth === 0 ) {
+ while (getDepth() < findOrgDepth(here))
+ here = findOrgUnit( here.parent_ou() );
+ }
+
+ new openils.BibTemplate(
+ { record : new CGI().param('r'), org_unit : here.shortname() }
+ ).render();
+ });
+
+ <!--#endif--> /* if rdetail.xml */
+
+ <!--#if expr="$OILS_PAGE='myopac.xml'"-->
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/myopac.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/container.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/holds.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/sidebar.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/common/js/Date.W3CDTF.js');
+
+ <!--#endif-->
+
+ <!--#if expr="$OILS_PAGE='mresult.xml'"-->
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/sidebar_extras.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/mresult.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/result_common.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/tips.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/holds.js');
+ <!--#endif-->
+
+ <!--#if expr="$OILS_PAGE='cnbrowse.xml'"-->
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/cn_browse.js');
+ <!--#endif-->
+
+ <!--#if expr="$OILS_PAGE='advanced.xml'"-->
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/advanced.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/adv_global.js');
+ openils.Util.requireLegacy('<!--#echo var="OILS_OPAC_JS_HOST"-->/skin/kcls/js/sidebar.js');
+ <!--#endif-->
+ }
+
+ dojo.addOnLoad( function() { skin_init(); init(); opac_init(); });
+
+]]></script>
--- /dev/null
+<!--#if expr="$OILS_PAGE='index.xml'"-->
+isFrontPage = true;
+<!--#endif-->
+
+config.ids.searchbar = {};
+config.css.searchbar = {};
+config.ids.searchbar.text = 'search_box';
+config.ids.searchbar.facets = 'facet_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';
+config.ids.common.top_logo = "top_left_logo";
+config.ids.sidebar = {};
+config.css.sidebar = {};
+config.names.sidebar = {};
+config.css.sidebar.item = {};
+config.ids.sidebar.home = 'home_link_div';
+config.ids.sidebar.advanced = 'advanced_link_div';
+config.ids.sidebar.myopac = 'myopac_link_div';
+config.ids.sidebar.prefs = 'prefs_link_div';
+config.ids.sidebar.mresult = 'mresult_link_div';
+config.ids.sidebar.rresult = 'result_link_div';
+config.ids.sidebar.rdetail = "rdetail_link_div";
+config.ids.sidebar.login = 'login_link';
+config.ids.sidebar.logout = 'logout_link';
+config.ids.sidebar.logoutbox = 'logout_link_div';
+config.ids.sidebar.loginbox = 'login_link_div';
+config.ids.sidebar.logged_in_as = 'logged_in_as_div';
+config.ids.sidebar.username_dest = 'username_dest';
+
+config.ids.sidebar.home_link = 'home_link'
+config.ids.sidebar.advanced_link = 'advanced_link'
+config.ids.sidebar.myopac_link = 'myopac_link'
+
+config.css.encircled = 'encircled';
+
+config.ids.login = {};
+config.css.login = {};
+config.ids.login.form = "login_form";
+config.ids.login.box = "login_box";
+config.ids.login.tbody = "login_tbody";
+config.ids.login.username = "login_username";
+config.ids.login.password = "login_password";
+config.ids.login.button = "login_button";
+config.ids.login.cancel = "login_cancel_button";
+config.ids.altcanvas.login = config.ids.login.box;
+
+config.ids.altcanvas.myopac_reload = 'myopac_reloading';
+config.ids.myopac = {};
+config.css.myopac = {};
+config.names.myopac = {};
+
+config.ids.altcanvas.org_tree = config.ids.common.org_container;
+config.ids.altcanvas.holds = 'holds_box';
+config.ids.altcanvas.check_holds = 'check_holds_box';
+config.ids.altcanvas.xulholds = 'xulholds_box';
+config.ids.altcanvas.loading = 'loading_alt';
+
+<!--#if expr="$OILS_PAGE='rdetail.xml'"-->
+config.ids.rdetail = {};
+config.ids.rdetail.view_marc = "rdetail_view_marc";
+config.ids.rdetail.details_body = 'rdetail_details_body';
+config.ids.rdetail.title = 'rdetail_title';
+config.ids.rdetail.author = 'rdetail_author';
+config.ids.rdetail.isbn = 'rdetail_isbn';
+config.ids.rdetail.edition = 'rdetail_edition';
+config.ids.rdetail.pubdate = 'rdetail_pubdate';
+config.ids.rdetail.publisher = 'rdetail_publisher';
+config.ids.rdetail.tor = 'rdetail_tor';
+config.ids.rdetail.abstr = 'rdetail_abstract';
+config.ids.rdetail.image = 'rdetail_image';
+config.ids.rdetail.tor_pic = 'rdetail_tor_pic';
+
+config.ids.rdetail.cp_status = "rdetail_copy_info_status";
+config.ids.rdetail.cp_info_row = "rdetail_copy_info_row";
+config.ids.rdetail.cp_info_loading = "rdetail_copy_info_loading";
+config.ids.rdetail.cp_info_local = "copy_info_local_link";
+config.ids.rdetail.cp_info_all = "copy_info_all_link";
+config.ids.rdetail.cp_info_none = "rdetail_copy_info_none";
+config.names.rdetail.lib_cell = "rdetail_library_cell";
+config.names.rdetail.cn_cell = "rdetail_callnumber_cell";
+config.names.rdetail.cp_count_cell = "rdetail_copy_count_cell";
+config.names.rdetail.cp_status = 'rdetail_status_cell';
+
+<!--#endif-->
+
+var OILS_OPAC_IMAGES_HOST = null;
+<!--#if expr="$OILS_OPAC_IMAGES_HOST"-->
+ OILS_OPAC_IMAGES_HOST = '<!--#echo var="OILS_OPAC_IMAGES_HOST"-->extras/ac/jacket/';
+<!--#endif -->
+var OILS_OPAC_STATIC_PROTOCOL = null;
+<!--#if expr="$OILS_OPAC_STATIC_PROTOCOL"-->
+ OILS_OPAC_STATIC_PROTOCOL = '<!--#echo var="OILS_OPAC_STATIC_PROTOCOL"-->';
+<!--#endif -->
+
+var chilifresh = '<!--#echo var="OILS_CHILIFRESH_ACCOUNT"-->';
+if (chilifresh == '(none)') { chilifresh = false; }
+var novelist = '<!--#echo var="OILS_NOVELIST_URL"-->';
+if (novelist == '(none)') { novelist = false; }
+
+
+var cookieManager = new HTTP.Cookies();
+
+/* -----------------------------------------------------------------------
+ KCLS suppressed orgs
+ ----------------------------------------------------------------------- */
+var localSuppressedOrgs = {1500:true, 1501:true, 1558:true}; /* change to suit */
+for (var i in orgArraySearcher) {
+ var org = orgArraySearcher[i];
+ if(localSuppressedOrgs[i]) {
+ org.opac_visible('f');
+ }
+}
+/* ----------------------------------------------------------------------- */
+
+<!--#if expr="$OILS_OPAC_FORCE_LOGIN_SSL"-->
+ forceLoginSSL = true;
+<!--#endif -->
+
+
+/* I'm not sure how to test for the situation where this block is
+ needed, but this won't hurt. */
+try {
+ if ($('holds_frozen_chkbox').checked)
+ unHideMe($("hold_frozen_thaw_row"));
+} catch (E) {
+ void(0);
+}
+
+dojo.require('dojo.cookie');
+dojo.require("dijit._Calendar");
+dojo.require("dijit.form.DateTextBox");
+dojo.require("dijit.form.FilteringSelect");
+dojo.require("dojo.date.locale");
+dojo.require("dojo.date.stamp");
+dojo.require("dojo.parser");
+dojo.require("openils.BibTemplate");
+dojo.require("openils.widget.FacetSidebar"); // pulls in Searcher and I18N
+dojo.require("dijit.form.CheckBox");
+dojo.require("openils.widget.ProgressDialog");
+
+
+dojo.addOnLoad(
+ function() {
+ setTimeout(
+ function() {
+ attachEvt("common", "unload", function(){
+ if(typeof(G)!="undefined") destroyObj(G);
+ if(typeof(HTTP)!="undefined") destroyObj(HTTP);
+ if(typeof(_c)!="undefined") destroyObj(_c);
+ if(typeof(_l)!="undefined") destroyObj(_l);
+ if(typeof(config)!="undefined") destroyObj(config);
+ if(typeof(facet_list)!="undefined") destroyObj(facet_list);
+ if(typeof(globalOrgTree)!="undefined") destroyObj(globalOrgTree);
+ if(typeof(globalOrgTypes)!="undefined") destroyObj(globalOrgTypes);
+ if(typeof(google)!="undefined") destroyObj(google);
+ if(typeof(orgArraySearcher)!="undefined") destroyObj(orgArraySearcher);
+ if(typeof(recordsCache)!="undefined") destroyObj(recordsCache);
+ if(typeof(search_list)!="undefined") destroyObj(search_list);
+ if(typeof(subjectCache)!="undefined") destroyObj(subjectCache);
+ if(typeof(xrefCacheIndex)!="undefined") destroyObj(xrefCacheIndex);
+ if(typeof(x)!="undefined") destroyObj(x);
+ if(typeof(string)!="undefined") string = "";
+ //removeChildren(document);
+ //alert(errCounter+'\n'+errCounter2);
+ });
+ }, 0
+ )
+ }
+);
+
+
+try {
+ document.getElementById('toptable').style.display = 'table';
+} catch(e) {
+ try {
+ document.getElementById('toptable').style.display = '';
+ } catch(ee) {}
+}
+<!--#if expr="$OILS_PAGE='index.xml'"-->
+dojo.addOnLoad(function() {
+ featuredcontentslider.init({
+ id: "homebanner",
+ contentsource: ["inline", ""],
+ toc: "markup",
+ nextprev: ["", ""],
+ enablefade: [true, 0.04],
+ onChange: function(previndex, curindex){},
+ autorotate: [true, 3000] //pause time (in milliseconds)
+ });
+});
+<!--#endif-->
--- /dev/null
+<![CDATA[<!-- ****************** libselect.xml ***************************** -->]]>
+ <span id='depth_selector_span'>
+ <!--#if expr="$SHOW_DEPTHSEL_TEXT='true'"-->
+ <span>&library.select; </span>
+ <!--#endif-->
+ <select id='depth_selector'>
+
+ </select>
+ </span>
+ <span style="display:none" id='lib_selector_span'>
+ <a id='lib_selector_link' class='classic_link' href='javascript:void(0)'>&library.select.help;</a>
+ </span>
+<![CDATA[<!-- ****************** end: libselect.xml ***************************** -->]]>
--- /dev/null
+<![CDATA[<!-- ****************** login.xml ***************************** -->]]>
+<div class="hide_me">
+ <div class='login_text color_1' style='padding: 4px; text-align: center;'>
+ <span>&opac.login.login;</span>
+ </div>
+ <br/>
+</div>
+<div class="hide_me" id="forget_pw">
+<h1>Password Reset</h1>
+ Username or Barcode<br />
+ <input type="text" id="forget_pw_user" /><br /><br />
+ Email Address on account<br />
+ <input type="text" id="forget_pw_email" /><br />
+ <a href="javascript:;" onclick="iForgotMyPassword($('forget_pw_user').value,$('forget_pw_email').value);">Submit</a><![CDATA[ ]]><a href="javascript:;" onclick="unHideMe($('login_box'));hideMe($('forget_pw'));">Cancel</a>
+</div>
+ <table id='change_pw_table' class='data_grid hide_me' style='margin-left: 20px;' width='95%'>
+ <thead>
+ <tr><td colspan='2' align='center'><b>&login.password;</b></td></tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td colspan='2' style='padding:10px;'>
+ &login.first.time;
+ &common.password_criteria;
+ </td>
+ </tr>
+ <tr>
+ <td>&login.password.current.enter;</td>
+ <td><input type='password' id='change_pw_current'/></td>
+ </tr>
+ <tr>
+ <td>&login.password.new.enter;</td>
+ <td><input type='password' id='change_pw_1'/></td>
+ </tr>
+ <tr>
+ <td>&login.password.new.reenter;</td>
+ <td><input type='password' id='change_pw_2'/></td>
+ </tr>
+ <tr><td><br/></td><td/></tr>
+ <tr class='color_1'>
+ <td colspan='2' align='center'>
+ <span class='login_text' style='margin-right: 20px;'>
+ <input type='submit' value='&login.password.update;' id='change_pw_button'/>
+ </span>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <span id='pw_no_match' class='hide_me'>&login.password.nomatch;</span>
+ <span id='pw_update_successful' class='hide_me'>&login.password.success;</span>
+ <span id='pw_not_strong' class='hide_me'>
+ &login.password.strength;
+ &common.password_criteria;
+ </span>
+ <span id='patron_card_inactive_alert' class='hide_me'>&login.barcode.inactive;</span>
+ <span id='patron_inactive_alert' class='hide_me'>&login.account.inactive;</span>
+ <span id='patron_login_failed' class='hide_me'>&login.failed;</span>
+
+<div id="login_box" class="hide_me">
+ <div style="height:20px;"></div>
+ <form id='login_form' method='POST' action='javascript:loginDance();'>
+ <table cellpadding="0" cellspacing="0" border="0"><tr><td valign="top" width="676" class="login_boxes left_brain">
+ <table cellpadding="0" cellspacing="0" border="0" width="100%"><tr>
+ <td colspan="2" style="padding-bottom: 10px;">
+ <h1>Log in to Your Account</h1>Please enter the following information:<br /><br /></td>
+ </tr><tr>
+ <td width="42%" class="lbl1">Library Card Number or Username<br /><span class="lbl2">Please include leading zeros and no spaces.<br /> Example: 0026626051</span><br /><br /></td>
+ <td width="58%" valign="top"><div class="input_bg"><input type="text" name="opacUser" id="login_username" /></div></td></tr>
+ <tr><td colspan="2"><div style="height:15px;"></div></td></tr>
+ <tr><td valign="top" class="lbl1">PIN Number or Password<br /><span class="lbl2">If this is your first time logging in, please enter<br /> the last 4 digits of your phone number.<br />Example: 0926</span></td>
+ <td valign="top"><div class="input_bg"><input name="opacPass" type="password" id="login_password" /></div>
+ <div style="padding-top:7px;"><input class="hide_me" type="checkbox" id="remember_me" name="remember_me" /> <label class="hide_me" style="position:relative;top:-2px;" for="remember_me">Remember Me?</label></div>
+ <div style="padding-top:14px;"><a href="javascript:;" id="login_button"><img alt="Log in" src="/opac/skin/kcls/graphics/login-btn2.png" /></a> <input class="hide_me" id="login_form_submit" type="submit" /> <a href="javascript:;" onclick="hideMe($('login_box'));unHideMe($('forget_pw'));" style="position:relative;top:-13px;left:2px;font-size:10px;">Forgot your PIN?</a></div>
+ </td>
+ </tr></table><br /><br /></td>
+ <td><div style="width:10px;"></div></td>
+ <td class="login_boxes right_brain" align="center" valign="top" width="291">
+
+ <div style='width:182px;color:black;padding:5px 25px;'> </div>
+ <h3> Can't Log In?</h3><h1>Mobile Catalog</h1>
+ <P></P>
+ <a href='/opac/extras/mobile/'><img alt='Mobile' src='/opac/skin/kcls/graphics/mobilecatalog_tryitnow.jpg' style='margin-top:29px;' /></a><P></P>
+ Accessible with handheld devices as well as personal computers. <a href='http://www.kcls.org/usingthelibrary/catalog_help/faqs.cfm#mobile'>Learn more.</a>
+
+
+ <!--
+ <a href="http://www.kcls.org/about/contact/"><img src="/opac/skin/kcls/graphics/questions.png" alt="Questions?" style="margin-top:29px;" /></a>
+ <div style="width:182px;color:black;padding:5px 25px;">
+ Visit our FAQs section for answers to common questions about how to use your account.
+ </div>
+ <a href="http://www.kcls.org/usingthelibrary/catalog_help/index.cfm#FAQs"><img alt="FAQs" src="/opac/skin/kcls/graphics/faqs-btn.png" style="margin-top:13px;" /></a>
+ -->
+ </td>
+ </tr></table>
+ </form>
+ <div style="clear:both"></div>
+</div>
+<![CDATA[<!-- ****************** end: login.xml ***************************** -->]]>
--- /dev/null
+<div id='logo_div'>
+ <img alt="Logo" style='margin-right: 4px;' src='<!--#echo var="OILS_BASE"-->/images/small_logo.jpg' id='top_left_logo' border='0' class='logo' />
+</div>
--- /dev/null
+<![CDATA[<!-- ****************** mylist.xml ***************************** -->]]>
+<div style="margin-top: 6px;margin-left:400px;width:250px;" id="mylist_div" class="hide_me">
+ <![CDATA[<strong>"<span id="myListLabel"></span>"</strong>]]>
+ <div style="" id="myListSelect">
+ <h2 style="font-weight:normal;">Add to Existing list</h2>
+ <select id="mylist_selector" style="width:200px;s">
+ </select><br /><br />
+ <h1>OR</h1><br />
+ </div>
+ <div style="padding-bottom: 7px;">
+ <h2 style="font-weight:normal;">Create new list</h2>
+ Enter the name of the new list:<br />
+ <input type="text" id="mylist_new" />
+ </div>
+ <table cellpadding="0" cellspacing="10" border="0">
+ <tr><td>Share this list?<br /><a href="javascript:;">What's this?</a></td>
+ <td><input type="radio" value="0" name="shareList" id="shareListNo" checked="checked" /> <label for="shareListNo">No</label><br /><input type="radio" value="1" name="shareList" id="shareListYes" /> <label for="shareListYes">Yes</label></td></tr>
+ </table>
+ <a href="javascript:;" onclick="if(saveMyList())hideMe($('mylist_div'));"><img alt="Submit" src="/opac/skin/kcls/graphics/btnSubmit.png" /></a> <![CDATA[ ]]>
+ <a href="javascript:;" onclick="hideResultsPage(false);hideMe($('mylist_div'));"><img alt="Cancel" src="/opac/skin/kcls/graphics/btnCancel.png" /></a>
+</div>
+
+<![CDATA[<!-- ****************** end: mylist.xml ***************************** -->]]>
\ No newline at end of file
--- /dev/null
+
+<![CDATA[<!-- ****************** orgtree.xml ***************************** -->]]>
+<div id='org_container' class='hide_me canvas'>
+
+ <div id='org_link_container' class='color_1'>
+ <span class='org_link'>
+ <a onclick='orgTreeSelector.expandAll();'
+ href='javascript:void(0);'>&common.org.openAll;</a>
+ </span>
+ <span class='org_link'>
+ <a onclick='orgTreeSelector.closeAll();'
+ href='javascript:void(0);'>&common.org.closeAll;</a>
+ </span>
+ <span class='org_link'>
+ <a onclick='showCanvas();' href='javascript:void(0);'>&common.org.cancel;</a>
+ </span>
+ </div>
+
+ <div id='org_loading_div'><br/><span>&common.org.loading;</span></div>
+ <br/>
+ <div id='org_selector_tip' class='tips hide_me'><b>&common.org.note;</b>
+ <span>&common.org.notetext;</span>
+ </div>
+ <br/>
+ <div id='org_tree' class='org_tree'> </div>
+ <br/>
+</div>
+<![CDATA[<!-- ****************** end: orgtree.xml ***************************** -->]]>
\ No newline at end of file
--- /dev/null
+<![CDATA[<!-- ****************** searchbar.xml ***************************** -->]]>
+ <div id="search-box">
+ <table cellpadding="0" cellspacing="10" border="0" style="position:relative;left:-10px;"><tr>
+ <td colspan="3"><span class="search_catalog_lbl">Search the Catalog</span> <a href="javascript:;" id="home_adv_search_link" style="position:relative;top:-1px;left:10px;"><span class="adv_search_font">Advanced Search</span></a></td>
+ </tr><tr><td><!--#include virtual="stypes_selector.xml"--></td> <!-- onkeyup='dojo.byId("facet_box").value = "";' -->
+ <td><div id="search_box_wrapper"><input type="text" id="search_box" style="width:162px;" value="Search Keyword" onfocus="if (this.value=='Search Keyword'){this.value='';this.style.color='#000';}" onblur="if (this.value==''){this.value='Search Keyword';this.style.color='#999';}" /><input id='facet_box' type='hidden' /></div></td>
+ <td valign="top"><div style="position:absolute;"><div style="position:relative;top:-3px;"><input type="button" id="search_submit" value="GO" class="hide_me" /><a href="javascript:;" id="search_submit_alt" onclick="$('search_submit').click()"><img alt="Search" src="<!--#echo var='OILS_BASE'-->skin/kcls/graphics/go-btn.png" onmouseover="this.src='<!--#echo var='OILS_BASE'-->skin/kcls/graphics/go-btn-hover.png';" onmouseout="this.src='<!--#echo var='OILS_BASE'-->skin/kcls/graphics/go-btn.png';" /></a></div></div></td>
+ </tr><tr><td><!--#set var='FORM_SEL_ID' value='form_selector'--><!--#include virtual="format_selector.xml"--></td>
+ <td><!--#include virtual="libselect.xml"--></td>
+ </tr></table>
+
+
+ <div class="hide_me">
+ <input type="checkbox" id="opac.result.limit2avail" /> <label style="position:relative;top:-3px;" for="opac.result.limit2avail"><span style="font-size:10px;">Limit to available items</span></label>
+ </div>
+
+ <div id="breadcrumb">
+ <![CDATA[ <a href="index.xml">Catalog Home</a> > ]]>
+ </div>
+ <!-- <div id="search-within"><a href="javascript:;"><span style="font-size:10px;">Search within Results</span></a></div> -->
+ <div style="clear:both"></div>
+ </div>
+<![CDATA[<!-- ****************** end: searchbar.xml ***************************** -->]]>
--- /dev/null
+<!-- Navigation bar -->
+<![CDATA[<!-- ****************** sidebar.xml ***************************** -->]]>
+<div id="sidebar_div" class="sidebar_div" xmlns:xi="http://www.w3.org/2001/XInclude">
+ <div class='sidebar_chunk hide_me'>
+<!--
+ <div title="&navigate.home.title;"
+ id='home_link_div' class="side_bar_item ">
+ <a id='home_link' href='index.xml'>&navigate.home;</a>
+ </div>
+
+ <div title="&opac.navigate.advanced.title;"
+ id='advanced_link_div' class="side_bar_item ">
+ <a id='advanced_link' href='advanced.xml'>&opac.navigate.advanced;</a>
+ </div>
+
+ <div title="&navigate.myopac.title;"
+ id='myopac_link_div' class="side_bar_item ">
+ <a id='myopac_link' href='myopac/myopac.xml'>&navigate.myopac;</a>
+ </div>
+
+ <div title="&navigate.login.title;"
+ id='login_link_div' class="side_bar_item ">
+ <a id='login_link' href='javascript:void(0);'>&navigate.login;</a>
+ </div>
+
+ <div title="&navigate.logout.title;"
+ id='logout_link_div' class="side_bar_item hide_me ">
+ <a id='logout_link' href='javascript:void(0);'>&navigate.logout;</a>
+ </div>
+-->
+
+ <!-- Informational sidebar components -->
+<!--
+ <div id='logged_in_as_div' title="&navigate.loggedinas.title;" class="side_bar_item hide_me">
+ <span>&navigate.loggedinas;<b id='username_dest'> </b></span>
+ </div>
+-->
+ <div id='sidebar_results_wrapper' class='hide_me border_1'>
+ <div title="&navigate.titleGroupResults;"
+ id='mresult_link_div' class="side_bar_item hide_me">
+ <a id='sidebar_title_group_results'>&navigate.titleGroupResults;</a>
+ </div>
+
+ <div title="&navigate.titleResults;"
+ id='result_link_div' class="side_bar_item hide_me">
+ <a id='sidebar_title_results'>&navigate.titleResults;</a>
+ </div>
+
+ <div title="&navigate.record.details;"
+ id='rdetail_link_div' class="side_bar_item hide_me">
+ <span>&navigate.title.details;</span>
+ </div>
+ </div>
+ </div>
+
+
+
+ <div id='facetSidebarContainer' class='hide_me'>
+
+ <div class="side_bar_item" style="font-weight: bold;text-transform:uppercase;">
+ <span>&navigate.facetRefine;</span>
+ </div>
+
+ <div dojoType='openils.widget.FacetSidebar' searchBox='facet_box' searchSubmit='search_submit' maxValuesPerFacet='3' facetLimit='3' classOrder='["author","subject","series","title","keyword"]'>
+ <script type='dojo/method' event='populate'><![CDATA[
+ var fblob = this;
+ setTimeout(
+ function(){
+ attachEvt("result", "allRecordsReceived", function () {
+ if (!resultFacetKey) return;
+ if (fblob.facetCacheKey) return; // already rendered it
+ dojo.removeClass('facetSidebarContainer','hide_me');
+
+ fblob.facetCacheKey = resultFacetKey;
+ fblob.render();
+ });
+ },0
+ )
+ ]]></script>
+ </div>
+ </div>
+
+<!--
+ <div id='subject_tree_sidebar' class='sidebar_chunk hide_me' style='margin-top: 12px;'>
+ <div id='subject_sidebar_tree_div'> </div>
+ <script language='javascript' type='text/javascript'>
+ removeChildren($('subject_sidebar_tree_div'));
+ var subjectSidebarTree = new SlimTree(
+ document.getElementById('subject_sidebar_tree_div'),
+ 'subjectSidebarTree', '/opac/skin/kcls/graphics/arrow-down.gif');
+ subjectSidebarTree.addNode( 'subjectSidebarTreeRoot', -1,
+ "&sidebar.relevantSubjects.headerLabel;",
+ 'javascript:subjectSidebarTree.toggle(' +
+ '"subjectSidebarTreeRoot");');
+ </script>
+ </div>
+
+ <div id='author_tree_sidebar' class='sidebar_chunk hide_me'>
+ <div id='author_sidebar_tree_div'> </div>
+ <script language='javascript' type='text/javascript'>
+ removeChildren($('author_sidebar_tree_div'));
+ var authorSidebarTree = new SlimTree(
+ document.getElementById('author_sidebar_tree_div'),
+ 'authorSidebarTree','/opac/skin/kcls/graphics/arrow-down.gif');
+ authorSidebarTree.addNode( 'authorSidebarTreeRoot', -1,
+ "&sidebar.relevantAuthors.headerLabel;",
+ 'javascript:authorSidebarTree.toggle(' +
+ '"authorSidebarTreeRoot");');
+ </script>
+ </div>
+
+ <div id='series_tree_sidebar' class='sidebar_chunk hide_me'>
+ <div id='series_sidebar_tree_div'> </div>
+ <script language='javascript' type='text/javascript'>
+ removeChildren($('series_sidebar_tree_div'));
+ var seriesSidebarTree = new SlimTree(
+ document.getElementById('series_sidebar_tree_div'),
+ 'seriesSidebarTree',
+ '/opac/skin/kcls/graphics/arrow-down.gif');
+ seriesSidebarTree.addNode( 'seriesSidebarTreeRoot', -1,
+ "&sidebar.relevantSeries.headerLabel;",
+ 'javascript:seriesSidebarTree.toggle(' +
+ '"seriesSidebarTreeRoot");');
+ </script>
+ </div>
+-->
+ <div id='adv_quick_search_sidebar' class='sidebar_chunk hide_me' style='text-align:center; margin-top: 20px;'>
+ <div id='adv_quick_search'>
+ <div class='adv_quick_search color_4'><b>&sidebar.quick.search;</b></div>
+ <div style='margin-top: 8px;'>
+ <table><tbody><tr>
+ <td>
+ <select id='adv_quick_type' style='width: 6em;'>
+ <option value='isbn'>&opac.advanced.quick.isbn;</option>
+ <option value='issn'>&opac.advanced.quick.issn;</option>
+ <option value='cn'>&opac.advanced.quick.cn;</option>
+ <option value='lccn'>&opac.advanced.quick.lccn;</option>
+ <option value='tcn'>&opac.advanced.quick.tcn;</option>
+ <option value='barcode'>&opac.advanced.quick.barcode;</option>
+ </select>
+ </td><td>
+ <input type='text' id='adv_quick_text' size='16' />
+ </td>
+ </tr></tbody></table>
+ </div>
+
+ <span class='hide_me' id='myopac.copy.not.found'>&sidebar.copy.not.found;</span>
+ <div style='margin-top: 8px;' class='adv_quick_search_submit'>
+ <a id='adv_quick_submit' href='javascript:advGenericSearch();' class='classic_link'>&common.submit;</a>
+ </div>
+ </div>
+ </div>
+
+ <div id='adv_marc_search_sidebar' class='sidebar_chunk hide_me'
+ style='text-align:center; margin-top: 20px;'>
+
+ <div class='adv_quick_search color_4'><b>&search.marc;</b></div>
+ <table style='margin: 3px; width: 100%;' id='adv_sdbar_table' class='border_4_3'>
+ <tbody>
+ <tr>
+ <td>&search.marc.tag;</td>
+ <td><input name='advanced.marc.tag' maxlength='3' size='3' /></td>
+ <td>&search.marc.subfield;</td>
+ <td><input name='advanced.marc.subfield' maxlength='1' size='1' /></td>
+ </tr>
+ <tr>
+ <td>&search.marc.value;</td>
+ <td colspan='3'><input name='advanced.marc.value' size='18' /></td>
+ </tr>
+ <tr name='crow' class='hide_me'>
+ <td colspan='4' align='center'>
+ <a href='javascript:void(0);' class='classic_link'
+ onclick='
+ var div = $("adv_marc_search_sidebar");
+ if( div.getElementsByTagName("table").length > 1 )
+ div.removeChild(this.parentNode.parentNode.parentNode.parentNode);'>&common.close;</a>
+ </td>
+ </tr>
+
+ </tbody>
+ </table>
+ <div id='adv_marc_submit' class='adv_quick_search_submit'>
+ <a style='margin-right: 4px;' class='classic_link' href='javascript:advAddMARC();'>&search.marc.add.row;</a>
+ <a style='margin-left: 4px;' class='classic_link' href='javascript:advMARCRun();'>&common.submit;</a>
+ </div>
+ </div>
+</div>
+<![CDATA[<!-- ****************** end: sidebar.xml ***************************** -->]]>
--- /dev/null
+
+<![CDATA[<!-- ****************** statusbar.xml ***************************** -->]]>
+<div id='statusbar' style='margin-bottom: 6px;'<!--#if expr="$OILS_PAGE=='rdetail.xml'"--> class="hide_me"<!--#endif-->>
+ <table width='100%'>
+ <tbody>
+ <tr>
+ <td align='left'>
+ <i id='including_results_for' class='hide_me'>
+ <span>&status.results;</span> <b id='including_results_location'> </b>
+ </i>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+<![CDATA[<!-- ****************** end: statusbar.xml ***************************** -->]]>
--- /dev/null
+
+<![CDATA[<!-- ****************** stypes_selector.xml ***************************** -->]]>
+<select id='search_type_selector'>
+ <option value='keyword' selected='selected'>&common.keyword;</option>
+ <option value='title'>&common.title;</option>
+ <option value='author'>&common.author;</option>
+ <option value='subject'>&common.subject;</option>
+ <option value='series'>&common.series;</option>
+ <option value='cn'>Call Number</option>
+</select>
+<![CDATA[<!-- ****************** end: stypes_selector.xml ***************************** -->]]>
--- /dev/null
+
+<![CDATA[<!-- ****************** tips.xml ***************************** -->]]>
+<div class="hide_me">
+<div id='tips' class='tips hide_me'>
+ <div class='hide_me'>
+ <span>&common.tips.tip1;</span>
+ <span>&common.tips.tip2;</span>
+ </div>
+ <span style="font-weight: bold;">&tips.label; </span>
+</div>
+</div>
+<![CDATA[<!-- ****************** end: tips.xml ***************************** -->]]>
--- /dev/null
+
+<![CDATA[<!-- ****************** footer.xml ***************************** -->
+<!--Google Analytics-->
+<script type="text/javascript">
+
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-3018520-10']);
+ _gaq.push(['_trackPageview']);
+
+ (function() {
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script>
+<!--End Google Analytics-->
+<div id="footer">
+
+<a href="http://www.kcls.org/usingthelibrary/request/">Request a Purchase</a> | <a href="http://www.kcls.org/usingthelibrary/request/">Interlibrary Loan</a> | <a href="http://www.kcls.org/about/contact/">Contact Us</a> | <a href="http://www.kcls.org/usingthelibrary/catalog_help/">Site Help</a> | <a href="http://www.kcls.org/usingthelibrary/policies/privacy.cfm">Privacy Statement</a> | <a href="http://www.kcls.org/about/support/">Support KCLS</a> | <a href="http://www.kcls.org/employment/">Employment</a>
+</div>
+<!-- ****************** end: footer.xml ***************************** -->]]>
--- /dev/null
+<head>
+
+<!-- Set the page title -->
+ <link rel="stylesheet" type="text/css" href="<!--#echo var='OILS_SKIN_BASE'-->/kcls/css/style.css" />
+ <link rel="stylesheet" type="text/css" href="<!--#echo var='OILS_SKIN_BASE'-->/kcls/css/contentslider.css" />
+ <title>Catalog- King County Library</title>
+ <link rel="unapi-server" type="application/xml" title="unAPI" href="http://<!--#echo var='HTTP_HOST'-->/opac/extras/unapi"/>
+ <!--#if expr="$slimpac!='true'"--><!--#include virtual="common/js_common.xml"--><!--#endif-->
+</head>
--- /dev/null
+
+<![CDATA[<!-- ****************** homesearch.xml ***************************** -->]]>
+<div id="hp-banner">
+ <div id="hp-welcome">
+
+
+<!-- *********************** Text inside blue box ************************************************************* -->
+ <h1>Welcome to the<br />New Library Catalog!</h1>
+ Featuring enhanced holds, management<br />tools, improved self checkout, and more.<br /><br />
+ <![CDATA[<a href="http://www.kcls.org/newcatalog" style="position:relative;top:5px;">Learn more »</a>]]><br /><br />
+<!-- *********************** End: Text inside blue box ******************************************************** -->
+
+
+ <div id="paginate-homebanner">
+ <!-- <a href="#" class="next">next</a>
+ <a href="#" class="prev">prev</a> -->
+
+<!-- ************************************ home page rotator navigator start ************************************* -->
+ <a class="toc" href="#1" rel="1" style="background:gray;"></a>
+ <a class="toc" href="#2" rel="2" style="background:#ffc331;"></a>
+ <a class="toc" href="#3" rel="3" style="background:pink;"></a>
+ <a class="toc" href="#4" rel="4" style="background:#2bb0fd;"></a>
+ <a class="toc" href="#5" rel="5" style="background:#54987f;"></a>
+ <a class="toc" href="#6" rel="6" style="background:white;"></a>
+<!-- **************************************** home page navigator end ******************************************* -->
+
+<!-- DON'T TOUCH THESE NEXT 4 LINES! -->
+ </div>
+ </div>
+ <div style="float:right;width:675px;height:213px;color:green;overflow:hidden;">
+ <div id="homebanner" class="sliderwrapper">
+
+
+
+<!-- ************************************ home page banner start ********************************************** -->
+ <div class="contentdiv">
+ <img src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/seewhatsnew.jpg" />
+ </div>
+ <div class="contentdiv">
+ <img src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/newbooks.jpg" />
+ </div>
+ <div class="contentdiv">
+ <img src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/connect.jpg" />
+ </div>
+ <div class="contentdiv">
+ <img src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/digitaldownloads.jpg" />
+ </div>
+ <div class="contentdiv">
+ <img src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/fiestas.jpg" />
+ </div>
+ <div class="contentdiv">
+ <img src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/libraryelf.jpg" />
+ </div>
+<!-- ************************************* home page banner end *********************************************** -->
+
+
+ </div>
+ </div>
+</div>
+
+<div id="hp-buttons">
+ <div style="float:left;"><img src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/hp-links-left.jpg" /></div>
+ <div style="float:left;">
+ <div id="home-buttons-inner">
+ <table cellpadding="0" cellspacing="5" border="0" id="hp-ql-table">
+ <tr><td colspan="4"><span style="color: #333;font-weight: bold;font-size: 13px;">Browse for:</span></td></tr>
+ <tr><td><a href="http://www.kcls.org/booksandreading/">books</a></td><td><a href="http://www.kcls.org/movies/movies_browse.cfm">movies</a></td><td><a href="http://www.kcls.org/ecollection/">downloads</a></td><td><a href="http://www.kcls.org/websites/">websites</a></td></tr>
+ <tr><td><a href="http://www.kcls.org/music/">music</a></td><td><a href="http://www.kcls.org/databases/subject_categories.cfm#17">magazines</a></td><td><a href="http://www.kcls.org/databases/">databases</a></td><td><a href="http://www.kcls.org/answers/">answers</a></td></tr>
+ </table>
+ </div>
+ </div>
+ <div style="float:left;"><img src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/hp-links-right.jpg" /></div>
+ <div style="float:right;"><a href="http://www.kcls.org/locations"><img alt="Locations" src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/locations.jpg" /></a></div>
+ <div style="clear:both;"></div>
+</div>
+<![CDATA[<!-- ****************** end: homesearch.xml ***************************** -->]]>
--- /dev/null
+<!--#include virtual="../body.xml"-->
\ No newline at end of file
--- /dev/null
+
+<script>
+<!--
+var SlideShow_MaxSlides = 5; // slide count
+var SlideShow_DisplaySeconds = 5; // slide timing
+var SlideShow_CurrentSlide = 1;
+var SlideShow_Timer;
+var SlideShow_Playing = true;
+SlideShow_Timer = setTimeout(SlideShow_Next, SlideShow_DisplaySeconds * 1000);
+//-->
+</script>
+<div id="SlideShowWidget">
+ <div class="ssw_all_icons">
+ <div id="ssw_icon_1" class='ssw_icon_#IIF(currentSlide eq 1,DE(""),DE("in"))#active' onclick="return SlideShow_Jump(1);"></div>
+ <div id="ssw_icon_2" class='ssw_icon_#IIF(currentSlide eq 2,DE(""),DE("in"))#active' onclick="return SlideShow_Jump(2);"></div>
+ <div id="ssw_icon_3" class='ssw_icon_#IIF(currentSlide eq 3,DE(""),DE("in"))#active' onclick="return SlideShow_Jump(3);"></div>
+ <div id="ssw_icon_4" class='ssw_icon_#IIF(currentSlide eq 4,DE(""),DE("in"))#active' onclick="return SlideShow_Jump(4);"></div>
+ <div id="ssw_icon_5" class='ssw_icon_#IIF(currentSlide eq 5,DE(""),DE("in"))#active' onclick="return SlideShow_Jump(5);"></div>
+ </div>
+ <div class="ssw_play_controls">
+ <a href="#server.globals.rootURL#index.cfm?currentSlide=#IIF(currentSlide eq 1,5,currentSlide-1)#" onclick="return SlideShow_Previous();"><img title="previous" alt="Click to see the previous slide" src="#server.globals.rootURL#images/previous.gif" width="13" height="13" class="noborder" /></a>
+ <a href="#server.globals.rootURL#index.cfm" onclick="return SlideShow_TogglePlay();"><img id="ssw_toggle_control" title="start/stop" alt="Click to start/stop the slideshow" src="#server.globals.rootURL#images/stop.gif" width="13" height="13" class="noborder" /></a>
+ <a href="#server.globals.rootURL#index.cfm?currentSlide=#IIF(currentSlide eq 5,1,currentSlide+1)#" onclick="return SlideShow_Next();"><img title="next" alt="Click to see the next slide" src="#server.globals.rootURL#images/next.gif" width="13" height="13" class="noborder" /></a>
+ </div>
+ <div class="ssw_all_descriptions">
+ <div id="ssw_descript_1" class='ssw_description #IIF(currentSlide eq 1,DE("firstSlide"),DE(""))#'>
+ <div id="ssw_slide_1" class='ssw_slide #IIF(currentSlide eq 1,DE("firstSlide"),DE(""))#'><a href="/teens/rfw/"><img src="/images/featured_article_1.jpg" alt="2010 Read. Flip. Win." width="210" height="185" border="0" /></a></div>
+ <div class="ssw_content">
+ <p>2010 Read. Flip. Win.</p>
+ <p><a href="/teens/rfw/">KCLS proudly presents the winners of our Read, Flip, Win Contest. </a></p>
+ </div></div>
+ <div id="ssw_descript_2" class='ssw_description #IIF(currentSlide eq 2,DE("firstSlide"),DE(""))#'>
+ <div id="ssw_slide_2" class='ssw_slide #IIF(currentSlide eq 2,DE("firstSlide"),DE(""))#'><a href="/newcatalog/"><img src="/images/featured_article_2.jpg" alt="infoVote 2010" width="210" height="185" border="0" /></a></div>
+ <div class="ssw_content">
+ <p>Coming Soon- New Library Catalog</p>
+ <p><a href="/newcatalog/">Transitioning to a new and improved library catalog.</a></p>
+ </div>
+ </div>
+ <div id="ssw_descript_3" class='ssw_description #IIF(currentSlide eq 3,DE("firstSlide"),DE(""))#'>
+ <div id="ssw_slide_3" class='ssw_slide #IIF(currentSlide eq 3,DE("firstSlide"),DE(""))#'><a href="#server.globals.rootURL#bond"></a><a href="/infobiz/"><img src="/images/featured_article_3.jpg" alt="InfoBiz" width="210" height="185" border="0" /></a></div>
+ <div class="ssw_content">
+ <p>InfoBiz</p>
+ <p> <a href="/infobiz/">The new KCLS resource center for small business owners. </a></p>
+ </div></div>
+ <div id="ssw_descript_4" class='ssw_description #IIF(currentSlide eq 4,DE("firstSlide"),DE(""))#'>
+ <div id="ssw_slide_4" class='ssw_slide #IIF(currentSlide eq 4,DE("firstSlide"),DE(""))#'><a href="/events/opera.cfm"><img src="/images/featured_article_4.jpg" alt="Opera" width="210" height="185" border="0" /></a></div>
+ <div class="ssw_content">
+ <p>Opera Preview: Lucia Di Lammermoor<br />
+ </p>
+ <p><a href="/events/opera.cfm">Exciting new series presented by Norm Hollingshead.</a></p>
+ </div>
+ </div>
+ <div id="ssw_descript_5" class='ssw_description #IIF(currentSlide eq 5,DE("firstSlide"),DE(""))#'>
+ <div id="ssw_slide_5" class='ssw_slide #IIF(currentSlide eq 5,DE("firstSlide"),DE(""))#'><a href="/events/##NWNoir"><img src="/images/featured_article_5.jpg" alt="Northwest Noir: Mysteries, Legends and Landscapes" width="210" height="185" border="0" /></a></div>
+ <div class="ssw_content">
+ <p>Northwest Noir</p>
+ <p><a href="/events/##NWNoir"> Explore legends, mysteries, and landscapes set in the Northwest.</a></p>
+ </div>
+ </div>
+ </div>
+</div>
--- /dev/null
+
+<xsl:stylesheet version="1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+ <xsl:output method="html" indent="yes" encoding="utf-8"/>
+ <xsl:template match="/">
+ <xsl:copy-of select='/*[local-name()="html"]'/>
+ </xsl:template>
+</xsl:stylesheet>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Loads the environment -->
+<!--#include virtual="setenv.xml"-->
+
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [
+ <!--#include virtual="/opac/locale/${locale}/opac.dtd"-->
+]>
+
+
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<!--#include virtual="header.xml"-->
+ <!--#if expr="$OILS_PAGE='index.xml'"-->
+<!--#include virtual="home/index_body.xml"-->
+ <!--#else-->
+ <!--#include virtual="body.xml"-->
+ <!--#endif-->
+</html>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Loads the environment -->
+<!--#include virtual="setenv.xml"-->
+
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [
+ <!--#include virtual="/opac/locale/${locale}/opac.dtd"-->
+]>
+
+
+<html xmlns='http://www.w3.org/1999/xhtml'>
+ <!--#include virtual="header.xml"-->
+ <!--#if expr="$OILS_PAGE='index.xml'"-->
+ <!--#include virtual="home/index_body.xml"-->
+ <!--#else-->
+ <!--#include virtual="body.xml"-->
+ <!--#endif-->
+</html>
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Loads the environment -->
+<!--#include virtual="setenv.xml"-->
+
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [
+ <!--#include virtual="/opac/locale/${locale}/opac.dtd"-->
+]>
+
+
+<html xmlns='http://www.w3.org/1999/xhtml'>
+ <!--#include virtual="header.xml"-->
+ <!--#if expr="$OILS_PAGE='index.xml'"-->
+ <!--#include virtual="home/index_body.xml"-->
+ <!--#else-->
+ <!--#include virtual="body.xml"-->
+ <!--#endif-->
+</html>
+
--- /dev/null
+
+<![CDATA[<!-- ****************** myopac_bookbags.xml ***************************** -->]]>
+
+<div style="margin-top: 6px;margin-left:20px;width:250px;padding:5px;" id="mylist_div" class="hide_me">
+ <div style="padding-bottom: 7px;">
+ <h2 style="font-weight:normal;">Create new list</h2>
+ Enter the name of the new list:<br />
+ <input type="text" id="mylist_new" />
+ </div>
+ <table cellpadding="0" cellspacing="10" border="0">
+ <tr><td>Share this list? <a href="javascript:;" onclick="alert($('bb_publish_text').innerHTML);"><img alt="Sharing Help" src="/opac/skin/kcls/graphics/question-mark.png" /></a></td>
+ <td><input type="radio" value="0" name="shareList" id="shareListNo" checked="checked" /> <label for="shareListNo">No</label><br /><input type="radio" value="1" name="shareList" id="shareListYes" /> <label for="shareListYes">Yes</label></td></tr>
+ </table>
+ <a href="javascript:;" onclick="if(addMyList()) {hideMe($('mylist_div'));unHideMe($('myopac_bookbag_div'));}"><img alt="Submit" src="/opac/skin/kcls/graphics/btnSubmit.png" /></a> <![CDATA[ ]]>
+ <a href="javascript:;" onclick="hideMe($('mylist_div'));unHideMe($('myopac_bookbag_div'));"><img alt="Cancel" src="/opac/skin/kcls/graphics/btnCancel.png" /></a>
+</div>
+
+<div id='myopac_bookbag_div' class='hide_me' xmlns:xi="http://www.w3.org/2001/XInclude" style="padding:5px;">
+
+ <div class="header_middle"><span id="acct_holds_header" style="float:left;">My Lists</span> <span style="float:right;"><a class="hide_me" href="javascript:;">Export List</a></span></div>
+
+ <div style="float:right;width:85px;">
+ <div style="position:absolute"><div style="position:relative;top:13px;">
+ <a href="javascript:;" style="position:relative;top:-3px;left:-5px;" onclick="alert('To take action on individual items, select item, choose action and Save.');"><img alt="Saving Help" src="/opac/skin/kcls/graphics/question-mark.png" /></a>
+ <a id='acct_lists_save' href="javascript:;" onclick="listSaveAction()"><img alt="Save" src="/opac/skin/kcls/graphics/save-btn.png" /></a>
+ </div></div>
+ </div>
+
+
+ <div style="clear:both;padding-top:10px;"><a href="javascript:;" onclick="hideMe($('myopac_bookbag_div'));unHideMe($('mylist_div'));">+ Add new list</a></div>
+
+<div id="temp_wrapper">
+ <div id='acct_list_template2' class="hide_me">
+ <div style="width:100%">
+ <table cellpadding="0" cellspacing="0" border="0"><tr><td style="font-weight:bold;padding-right:10px;" id='anon_list_name'>Temporary List</td><td>
+ <a href="javascript:;" onclick="alert('Items you selected from the search results screen.')"><img alt="Anonymous List Help" src="/opac/skin/kcls/graphics/question-mark.png" /></a></td></tr></table>
+ <div style="float:right;"></div>
+ <div style="clear:both;padding-bottom:5px;"></div>
+ </div>
+
+ <table id="acct_list_header_anon" cellpadding='0' cellspacing='0' border='0'><tr>
+ <td width="1%" style="padding-left:10px;"><input type="checkbox" id="check_all_list_anon" onclick="checkAll(this.parentNode.parentNode.parentNode.parentNode.parentNode, this, 'list_action_chbx');" /></td>
+ <td width="98%" style="padding-left:5px;">Title</td>
+ <td width="1%"><select style='width:175px;margin-right:11px;' name="list_actions" id="sel_all_list_anon"><option value="0">-- Actions for this list --</option><option value="hold">Place Hold</option><option value="remove">Remove Items</option></select></td>
+ </tr></table>
+
+ <table cellpadding='0' cellspacing='5' border='0' width='91%' style='margin-left:5px;margin-top:5px;'>
+ <tbody id='anon_list_tbody'></tbody>
+ </table>
+
+ <br /><br />
+ </div>
+
+ <div id='acct_lists_prime'>
+ <div id='acct_list_template'>
+ <div style="width:100%">
+ <div style="float:left;font-weight:bold;padding-top:5px;" name='list_name'></div>
+ <div style="float:left;padding:5px 0px 0px 10px;"><a target='_blank' name='share_list_rss' class='hide_me'><img alt="RSS Feed" border="0" src="/opac/images/small-rss.png" title="You are sharing this list"/></a></div>
+ <div style="float:left;padding:5px 0px 0px 10px;"><a href="javascript:;" name="share_list_link">Share</a></div>
+ <div style="float:left;padding:5px 0px 0px 10px;"><a href="javascript:;" name="remove_list">Delete List</a></div>
+ <div style="clear:both;padding-bottom:5px;"></div>
+ </div>
+
+ <table id="acct_list_header" cellpadding='0' cellspacing='0' border='0'><tr>
+ <td width="1%" style="padding-left:10px;"><input type="checkbox" id="check_all_list" onclick="checkAll(this.parentNode.parentNode.parentNode.parentNode.parentNode, this, 'list_action_chbx');" /></td>
+ <td width="98%" style="padding-left:5px;">Title</td>
+ <td width="1%"><select style='width:175px;margin-right:11px;' name="list_actions"><option value="0">-- Actions for this list --</option><option value="hold">Place Hold</option><option value="remove">Remove Items</option></select></td>
+ </tr></table>
+
+ <table cellpadding='0' cellspacing='5' border='0' width='91%' style='margin-left:5px;margin-top:5px;'>
+ <tbody name='list_tbody'>
+
+ </tbody>
+ </table>
+
+ <br /><br />
+ </div>
+ </div>
+</div>
+
+
+ <div id='myopac_delete_bookbag_warn' class='hide_me'>
+ &myopac.delete.bookbag;
+ </div>
+
+ <div style='text-align: center; font-weight: bold;'
+ class='hide_me' id='myopac_bookbags_none'>&myopac.no.bookbags;</div>
+
+ <table width='100%' class='data_grid data_grid_center hide_me' id='myopac_bookbag_table'>
+ <thead>
+ <tr><td>&common.name;</td><td>&myopac.bookbag.items;</td><td>&myopac.bookbag.shared;</td><td>&myopac.bookbag.toggle;</td><td>&myopac.bookbag.delete;</td></tr>
+ </thead>
+ <tbody id='myopac_bookbag_tbody'>
+ <tr id='myopac_bookbag_tr'>
+ <td>
+ <a href='javascript:void(0);' class='classic_link' name='myopac_expand_bookbag'> </a>
+ </td>
+ <td><span name='myopac_bookbag_item_count'> </span> <span> &myopac.items;</span></td>
+ <td>
+ <span name='myopac_bb_published_no' class='hide_me'>&common.no;</span>
+ <span name='myopac_bb_published_yes' class='hide_me'>&common.yes;</span>
+ <a name='myopac_bb_published_view' class='classic_link hide_me'>&myopac.view;</a>
+ <a name='myopac_bb_published_atom' class='unadorned_link hide_me'>
+ <img alt="RSS Feed" border="0" src="/opac/images/small-rss.png" title="&myopac.atom.feed;" />
+ </a>
+ </td>
+
+ <td>
+ <a name='myopac_bb_make_unpublished' class='classic_link hide_me'>&myopac.bookbag.hide;</a>
+ <a name='myopac_bb_make_published' class='classic_link hide_me'>&myopac.bookbag.share;</a>
+ </td>
+
+ <td>
+ <a class='classic_link' href='javascript:void(0);' name='myopac_container_delete'>&myopac.delete;</a>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <table width='100%' class='data_grid data_grid_center hide_me' style='margin-top: 10px;'>
+ <thead>
+ <tr><td>&myopac.bookbag.create;</td></tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>
+ <span style='padding-right: 5px;'>&myopac.bookbag.naming;</span>
+ <input id='myopac_bookbag_new_name' type='text' />
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <span style='padding: 5px;'>&myopac.bookbag.share;</span>
+ <a class='classic_link' href='javascript:alert($("bb_publish_text").innerHTML);'><b>&common.help;</b></a>
+ <span>&common.yes;</span> <input type='radio' name='bb_public' id='bb_public_yes'/>
+ <span>&common.no;</span> <input type='radio' name='bb_public' id='bb_public_no' checked='checked'/>
+ <input style='padding-left: 10px;' onclick='myOPACCreateBookbag();'
+ type='submit' value='&common.submit;' />
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <!--
+ <div style='overflow: auto; max-height: 200px;' class='hide_me'>
+ -->
+ <div style='width: 99%; text-align: center'> <b id='myopac_bookbag_items_name'> </b></div>
+
+ <div class='hide_me' style='width: 100%; text-align: center; font-weight: 700; margin-top: 10px;'
+ id='myopac_bookbag_no_items'>&myopac.bookbag.no.items;</div>
+
+ <table width='100%' class='hide_me data_grid data_grid_center' id='myopac_bookbag_items_table'>
+ <thead>
+ <tr> <td>&common.title;</td> <td>&common.authors;</td> <td>&myopac.bookbag.remove;</td> </tr>
+ </thead>
+ <tbody id='myopac_bookbag_items_tbody'>
+ <tr id='myopac_bookbag_items_row'>
+ <td> <a name='myopac_bookbag_items_title' class='classic_link'> </a> </td>
+ <!--
+ <td> <a name='myopac_bookbag_items_author' class='classic_link'> </a> </td>
+ -->
+ <td name='myopac_bookbag_items_author'> </td>
+ <td><a name='myopac_bookbag_items_remove' class='classic_link'>&myopac.remove.link;</a></td>
+ </tr>
+ </tbody>
+ </table>
+ <!--</div>-->
+
+ <span id='bb_publish_text' class='hide_me'>&myopac.publish.text;</span>
+ <span id='myopac_remove_bb_item_confirm' class='hide_me'>&myopac.item.confirm;</span>
+ <span id='myopac_make_published_confirm' class='hide_me'>&myopac.publish.confirm;</span>
+ <span id='myopac_make_unpublished_confirm' class='hide_me'>&myopac.unpublish.confirm;</span>
+ <span id='myopac_bb_update_success' class='hide_me'>&myopac.update.success;</span>
+ <span id='bb_create_warning' class='hide_me'>&myopac.create.warning;</span>
+ <span id='myopac_bb_what_are' class='hide_me'>&myopac.describe.bookbags;</span>
+ <span class='hide_me' id='bb_update_success'>&myopac.updated.success;</span>
+
+</div>
+<![CDATA[<!-- ****************** end: myopac_bookbags.xml ***************************** -->]]>
+
--- /dev/null
+
+<![CDATA[<!-- ****************** myopac_checked.xml ***************************** -->]]>
+<div id='myopac_checked_div' xmlns:xi="http://www.w3.org/2001/XInclude" style="padding:0px;">
+
+ <div id="acct_checked_tabs" style="padding-bottom: 12px;color:#666;">
+ <div class="align selected" id="checked_label"><img src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/sub_checked_out_on.jpg" /></div>
+ <div class="align" id="checked_hist_link"><a class="" href="javascript:;" onclick="switchSubPage('checked','hist')"><img src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/sub_checked_hist_off.jpg" /></a></div>
+ <div class="align hide_me" id="checked_link"><a href="javascript:;" onclick="switchSubPage('checked','main')"><img src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/sub_checked_out_off.jpg" /></a></div>
+ <div class="align selected hide_me" id="checked_hist_label"><img src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/sub_checked_hist_on.jpg" /></div>
+ <div style="clear:both;"></div>
+ </div>
+
+ <div class="header_middle"><span id="acct_checked_header" style="float:left;">Current Items Checked Out</span> <span style="float:right;"><a class="hide_me" href="javascript:;">Export List</a></span></div>
+ <div style="clear:both;"></div>
+
+ <div id='checked_main'>
+ <table cellpadding='0' cellspacing='0' border='0' style="padding:8px 0px 6px 0px;"><tr>
+ <td><a href="javascript:;" onclick="myOPACRenewSelected();">Renew Selected Titles</a></td>
+ <td style="padding-left:9px;"><a class="hide_me" href="javascript:;"><img alt="Save" src="/opac/skin/kcls/graphics/save-btn.png" /></a></td>
+ <td style="padding-left:5px;"><a href="javascript:;" onclick="alert('To Renew an individual title, select box and click Renew Selected Titles');"><img alt="Renewing Help" src="/opac/skin/kcls/graphics/question-mark.png" /></a></td>
+ </tr></table>
+ <table id="acct_checked_main_header" cellpadding='0' cellspacing='0' border='0'><tr>
+ <td width="1%" style="padding-left:10px;"><input type="checkbox" id="check_all_checked" onclick="checkAll($('checked_temp_parent'), this.id);" /></td>
+ <td width="40%" style="padding-left:5px;"><span title="Click to sort" onclick="sortChecked('title');" style="cursor:pointer;">Title</span> / <span title="Click to sort" onclick="sortChecked('author');" style="cursor:pointer;">Author</span></td>
+ <td width="8%" style="padding-right:5px;" align="center"><span title="Click to sort" onclick="sortChecked('renews');" style="cursor:pointer;">Renews<br />Left</span></td>
+ <td width="13%" style="padding-left:5px;"><span title="Click to sort" onclick="sortChecked('due');" style="cursor:pointer;">Due Date</span></td>
+ <td width="16%"><span title="Click to sort" onclick="sortChecked('barcode');" style="cursor:pointer;">barcode</span></td>
+ <td width="22%"><span title="Click to sort" onclick="sortChecked('cn');" style="cursor:pointer;">call number</span></td>
+ </tr></table>
+
+ <div id="checked_temp_parent">
+ <div id="acct_checked_temp">
+ <table cellpadding='0' cellspacing='0' border='0' style="margin-top:5px;"><tr>
+ <td width="1%" style="padding-left:10px;" valign="top"><input type="checkbox" name="check_all_checked" /></td>
+ <td width="40%" style="padding-left:5px;padding-bottom:10px;" name="author"><a href="javascript:;" name="title"></a></td>
+ <td width="8%" name="renewals" align="center"></td>
+ <td width="13%" style="padding-left:5px;" name="due_date"></td>
+ <td width="16%" name="barcode"></td>
+ <td width="22%" name="call_number"></td>
+ </tr></table>
+ </div>
+ </div>
+ </div>
+
+ <div id='checked_hist' class="hide_me" style="padding-top:8px;">
+ <table id="acct_checked_hist_header" cellpadding='0' cellspacing='0' border='0' width='100%'><tr>
+ <td width="45%" style="padding-left:15px;"><span title="Click to sort" onclick="sortCheckedHist('title');" style="cursor:pointer;">Title</span> / <span title="Click to sort" onclick="sortCheckedHist('author');" style="cursor:pointer;">Author</span></td>
+ <td width="22%" style="white-space:nowrap;padding-left:5px;"><span title="Click to sort" onclick="sortCheckedHist('cn');" style="cursor:pointer;">Call Number</span></td>
+ <td width="11%"><span title="Click to sort" onclick="sortCheckedHist('checkout');" style="cursor:pointer;">Checkout</span></td>
+ <td width="11%"><span title="Click to sort" onclick="sortCheckedHist('due');" style="cursor:pointer;">Due Date</span></td>
+ <td width="11%"><span title="Click to sort" onclick="sortCheckedHist('returned');" style="cursor:pointer;">Returned</span></td>
+ </tr></table>
+
+ <table cellpadding='0' cellspacing='0' border='0' style="margin-top:5px;" width="100%"><tbody id="acct_checked_hist_parent"><tr id="acct_checked_hist_temp">
+ <td width="45%" style="padding-left:15px;padding-bottom:10px;"><a href="javascript:;" name="title"></a> / <span name="author"></span></td>
+ <td width="22%" style="padding-left:5px;" name="call_number"></td>
+ <td width="11%" name="checkout"></td>
+ <td width="11%" name="due_date"></td>
+ <td width="11%" name="returned" nowrap="nowrap" style="white-space:nowrap;"></td>
+ </tr></tbody></table>
+ </div>
+
+ <div id='non_cat_circs_div' class='hide_me'>
+ <br/>
+ <div style='text-align: center'><b>&myopac.common.other.circ;</b></div>
+ <table class='data_grid' width='100%'>
+ <thead>
+ <tr>
+ <td>&myopac.checked.circ.lib;</td>
+ <td>&myopac.checked.item.type;</td>
+ <td>&myopac.checked.circ.time;</td>
+ </tr>
+ </thead>
+ <tbody id='non_cat_circs_tbody'>
+ <tr id='non_cat_circs_row'>
+ <td name='circ_lib'/>
+ <td name='item_type'/>
+ <td name='circ_time'/>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+ <div id='myopac_renew_success' class='hide_me'>&myopac.checked.renew.success;</div>
+ <span class='hide_me' id='myopac_renew_confirm'>&myopac.checked.renew.confirm;</span>
+ <span class='hide_me' id='myopac_renew_fail'>&myopac.checked.renew.fail;</span>
+ <span class='hide_me' id='myopac_renew_fail2'>&myopac.checked.renew.fail2;</span>
+</div>
+<![CDATA[<!-- ****************** end: myopac_checked.xml ***************************** -->]]>
+
--- /dev/null
+
+<![CDATA[<!-- ****************** myopac_fines.xml ***************************** -->]]>
+
+<![CDATA[<!-- ****************** end: myopac_fines.xml ***************************** -->]]>
+
--- /dev/null
+
+<![CDATA[<!-- ****************** myopac_holds.xml ***************************** -->]]>
+
+<div id='myopac_holds_div' xmlns:xi="http://www.w3.org/2001/XInclude">
+ <div class="hide_me" id="acct_holds_tabs" style="padding-bottom: 12px;color:#666;">
+ <div class="align selected" id="holds_label"><img src="/opac/skin/kcls/graphics/sub_holds_on.jpg" /></div>
+ <div class="align hide_me" id="holds_hist_link"><a href="javascript:;" onclick="switchSubPage('holds','hist');"><img src="/opac/skin/kcls/graphics/sub_holds_hist_off.jpg" /></a></div>
+ <div class="align hide_me" id="holds_link"><a href="javascript:;" onclick="switchSubPage('holds','main');"><img src="/opac/skin/kcls/graphics/sub_holds_off.jpg" /></a></div>
+ <div class="align selected hide_me" id="holds_hist_label"><img src="/opac/skin/kcls/graphics/sub_holds_hist_on.jpg" /></div>
+ <div style="clear:both;"></div>
+ </div>
+
+ <div class="header_middle"><span id="acct_holds_header" style="float:left;">Current Items on Hold</span> <span style="float:right;"><a class="hide_me" href="javascript:;">Export List</a></span></div>
+ <div style="clear:both;"></div>
+
+ <div id='holds_main'>
+ <table cellpadding='0' cellspacing='0' border='0' style="padding:8px 0px 6px 0px;"><tr>
+ <td width="1"><select id="acct_holds_actions">
+ <option id='myopac_holds_actions_none' value=''>-- &myopac.holds.actions; --</option>
+ <option value='freeze'>&myopac.holds.freeze_selected;</option>
+ <option value='thaw'>&myopac.holds.thaw_selected;</option>
+ <option value='thaw_date'>&myopac.holds.thaw_date_selected;</option>
+ <option value='cancel'>&myopac.holds.cancel_selected;</option>
+ </select></td>
+ <td width="1" style="padding-left:9px;"><a href="javascript:;" onclick="myopacDoHoldAction();"><img alt="Save" src="/opac/skin/kcls/graphics/save-btn.png" /></a></td>
+ <td width="1" style="padding-left:5px;"><a href="javascript:;" onclick="alert('Suspend your hold for pick up at a later date. Edit individual items with the Edit link or check the Title box to select all, select action and Save.');"><img alt="Holds Help" src="/opac/skin/kcls/graphics/question-mark.png" /></a></td>
+ <td align="right"><select class="hide_me" id="holds_sort" onchange="sortHolds(this.options[this.selectedIndex].value);">
+ <option value="">-- Sort By --</option>
+ <option value="title">Title</option>
+ <option value="pickup">PickUp Location</option>
+ <option value="status">Status</option>
+ </select></td>
+ </tr></table>
+ <table id="acct_holds_main_header" cellpadding='0' cellspacing='0' border='0' width="100%"><tr>
+ <td width="36" align="center"><input type="checkbox" id="check_all_holds" onclick="checkAll($('holds_temp_parent'), this.id);" /></td>
+ <td width="138"><span title="Click to sort" onclick="sortHolds('title');" style="cursor:pointer;">Title</span></td>
+ <td width="123"><span title="Click to sort" onclick="sortHolds('author');" style="cursor:pointer;">Author</span></td>
+ <td width="64"><span title="Click to sort" onclick="sortHolds('format');" style="cursor:pointer;">Format</span></td>
+ <td width="136"><span title="Click to sort" onclick="sortHolds('pickup');" style="cursor:pointer;">Pickup Location</span></td>
+ <td width="105">Activate</td>
+ <td width="105">Cancel if not<br />filled by</td>
+ <td width="95">Active</td>
+ <td width="172"><span title="Click to sort" onclick="sortHolds('status');" style="cursor:pointer;">Status</span></td>
+ </tr></table>
+
+<div class="hide_me"><select id="hold_pickup_lib_temp" name="hold_pickup_lib_sel" class="hide_me" style="width:125px;height:21px;"></select></div>
+
+<table cellpadding='0' cellspacing='0' border='0' width="100%">
+ <tbody id="holds_temp_parent">
+ <tr id="acct_holds_temp" name="acct_holds_temp" class="acct_holds_temp">
+ <td width="36" align="center" style="text-align:center;"><input type="checkbox" name="check_all_holds" /></td>
+ <td width="138"><div style="margin-top:10px;margin-bottom:10px;"><a href="javascript:;" name="myopac_holds_title_link"></a></div></td>
+ <td width="123"><div style="margin-top:10px;margin-bottom:10px;" name="myopac_holds_author"></div></td>
+ <td width="64" align="center"><div style="margin-top:6px;margin-bottom:6px;text-align:center;" name="myopac_holds_formats"></div></td>
+ <td width="136"><span name="hold_pickup_lib_span"></span><span name="hold_pickup_lib"></span></td>
+ <td width="105"><input title="Enter a date (e.g. 10/21/2010)" class="hide_me" style="width:91px;" name="activate_box" type="text" /><span name="activate_date"></span></td>
+ <td width="105"><input title="Enter a date (e.g. 10/21/2010)" class="hide_me" style="width:91px;" name="hold_expires_box" type="text" /><span name="hold_expires"></span></td>
+ <td width="95"><select name="hold_active_sel" style="width:90px;" class="hide_me"><option value="f">Active</option><option value="t">Suspended</option></select><span name="hold_active"></span></td>
+ <td width="110"><div name="acct_holds_status" style="margin-top:10px;margin-bottom:10px;"><span class="hide_me" name="hold_ready_expire"></span></div></td>
+ <td width="62" align="right" style="text-align:right;padding-right:7px;"><a name="hold_edit_link" href="javascript:;">Edit</a> <a href="javascript:;" name="hold_save_link" class="hide_me">Save</a> <a href="javascript:;" name="hold_cancel_link" class="hide_me">Back</a></td>
+ </tr>
+ </tbody>
+</table>
+
+
+<!--
+ <div id="holds_temp_parent">
+ <div id="acct_holds_temp" name="acct_holds_temp">
+ <table cellpadding='0' cellspacing='0' border='0' style="padding-top:5px;"><tr>
+ <td width="1%" style="padding-left:10px;" valign="top"><input type="checkbox" name="check_all_holds" /></td>
+ <td width="38%" style="padding-left:5px;padding-right:5px;" valign="top"><a href="javascript:;" name="myopac_holds_title_link"></a> / <span name="myopac_holds_author"></span></td>
+ <td width="9%" name="myopac_holds_formats" valign="top"></td>
+ <td width="23%" valign="top"><span name="hold_pickup_lib"></span><span name="hold_pickup_lib_span"></span></td>
+ <td width="29%" style="white-space:nowrap;" name="acct_holds_status" nowrap="nowrap" valign="top"></td>
+ </tr></table>
+ <table cellpadding='0' cellspacing='0' border='0' style="margin-top:7px;margin-bottom:6px;" id="acct_holds_activates_table" width="100%"><tr name="holds_editor_row">
+ <td width="1%" style="padding-left:29px;"></td>
+ <td width="25%" style="padding-left:5px;"><label>Status</label> <span name="hold_active"></span><select name="hold_active_sel" class="hide_me"><option value="f">Active</option><option value="t">Suspended</option></select></td>
+ <td width="24%"><label name="activate_label" class="hide_me">Activate</label> <span name="activate_date"></span><input title="Enter a date (e.g. 10/21/2010)" class="hide_me" name="activate_box" type="text" style="width:70px;background:#E2FFDD;" /></td>
+ <td width="35%"><label name="hold_expires_label" class="hide_me">Cancel if not filled by</label> <span name="hold_expires"></span><input title="Enter a date (e.g. 10/21/2010)" class="hide_me" name="hold_expires_box" type="text" style="width:70px;background:#E2FFDD;" /></td>
+ <td width="14%" align="right" style="padding-right:10px;"><a name="hold_edit_link" href="javascript:;">Edit</a> <a href="javascript:;" name="hold_save_link" class="hide_me">Save</a> <![CDATA[ ]]><a href="javascript:;" name="hold_cancel_link" class="hide_me">Back</a></td>
+ </tr><tr name="holds_ready_row" class="hide_me">
+ <td colspan="5" style="padding-left:477px;"><label>Expires</label> <span name="hold_ready_expire"></span></td>
+ </tr></table>
+ <hr style="border-bottom:none;margin:0px;*height:0px;" color="#dcdbdb" />
+ </div>
+ </div>
+-->
+
+
+ </div>
+ <div id='holds_hist_table' class="hide_me">
+ testing...
+ </div>
+
+ <span id='myopac.holds.cancel.confirm' class='hide_me'>&myopac.holds.cancel.confirm;</span>
+ <span id='myopac.holds.freeze.confirm' class='hide_me'>&myopac.holds.freeze.confirm;</span>
+ <span id='myopac.holds.thaw.confirm' class='hide_me'>&myopac.holds.thaw.confirm;</span>
+ <span id='myopac.holds.thaw_date.confirm' class='hide_me'>&myopac.holds.thaw_date.confirm;</span>
+ <span id='myopac.holds.freeze.select_thaw' class='hide_me'>&myopac.holds.freeze.select_thaw;</span>
+
+ <table width='100%' id='myopac_holds_processing' class='hide_me'>
+ <tr><td>&myopac.holds.processing;</td></tr>
+ </table>
+
+ <span class='hide_me' id='myopac_holds_cancel_verify'>
+ &myopac.holds.verify;
+ </span>
+</div>
+<div id='myopac_holds_thaw_date_form' class='hide_me'>
+ <div id='myopac_holds_freeze_select_thaw'>&myopac.holds.freeze.select_thaw;</div>
+ <p><input dojoType="dijit.form.DateTextBox" size='10' maxlength='10' type='text' id='myopac_holds_thaw_date_input' /> </p>
+ <p><button onclick='myopacApplyThawDate();'>&common.submit;</button></p>
+</div>
+<![CDATA[<!-- ****************** end: myopac_holds.xml ***************************** -->]]>
+
--- /dev/null
+
+<![CDATA[<!-- ****************** myopac_prefs.xml ***************************** -->]]>
+<div id='myopac_prefs_div' xmlns:xi="http://www.w3.org/2001/XInclude">
+ <div id="acct_prefs_tabs" style="padding-bottom: 12px;color:#666;">
+ <div style="float:left;">
+ <div class="align selected" id="prefs_info_lbl"><img src="/opac/skin/kcls/graphics/sub_prefs_info_on.jpg" /></div>
+ <div class="align hide_me" id="prefs_info_link"><a href="javascript:;" onclick="switchSubPage('prefs','info')"><img src="/opac/skin/kcls/graphics/sub_prefs_info_off.jpg" /></a></div>
+
+ <div class='hide_me'> <!-- HIDE NOTIFICATIONS FOR NOW -->
+ <div class="align" id="prefs_notify_link"><a href="javascript:;" onclick="switchSubPage('prefs','notify')"><img src="/opac/skin/kcls/graphics/sub_prefs_notify_off.jpg" /></a></div>
+ <div class="align selected hide_me" id="prefs_notify_lbl"><img src="/opac/skin/kcls/graphics/sub_prefs_notify_on.jpg" /></div>
+ </div>
+
+ <div class="align" id="prefs_search_link"><a href="javascript:;" onclick="switchSubPage('prefs','search')"><img src="/opac/skin/kcls/graphics/sub_prefs_search_off.jpg" /></a></div>
+ <div class="align selected hide_me" id="prefs_search_lbl"><img src="/opac/skin/kcls/graphics/sub_prefs_search_on.jpg" /></div>
+ </div>
+ <div style="float:right;width:65px;"><div style="position:absolute"><div style="position:relative;top:75px;"><a id='acct_prefs_save' class='hide_me' href="javascript:;" onclick="myOPACSavePrefs()"><img alt="Save" src="/opac/skin/kcls/graphics/save-btn.png" /></a></div></div></div>
+ <div style="clear:both;"></div>
+ </div>
+
+ <div class="header_middle"><span id="acct_prefs_header" style="float:left;">Account Information and Preferences</span> <span style="float:right;"><a class="hide_me" href="javascript:;" onclick="fadeOut(this);">Export List</a></span></div>
+ <div style="clear:both;height:10px;"></div>
+
+
+ <table width='100%' class="hide_me" id="acct_search_main">
+ <tbody id='myopac_prefs_tbody'>
+ <tr id='myopac_prefs_loading'><td colspan='3'><b>&myopac.loading;</b></td></tr>
+ <tr id='myopac_prefs_row'>
+ <td width='20%'>&myopac.prefs.hits;</td>
+ <td>
+ <div style="position:absolute"><div style="position:relative;top:0px;left:55px;"><a href="javascript:;" onclick="alert('Number of search results to display per page. For slower connections, choose fewer hits per page');"><img alt="Search Hits Help" src="/opac/skin/kcls/graphics/question-mark.png" /></a></div></div>
+ <select id='prefs_hits_per' style="position:relative;z-index:100;">
+ <option value='5'>5</option>
+ <option value='8'>8</option>
+ <option value='10'>10</option>
+ <option value='15'>15</option>
+ <option value='20'>20</option>
+ <option value='25'>25</option>
+ <option value='50'>50</option>
+ </select>
+ </td>
+ </tr>
+ <tr><td colspan="2">
+ <label for="circHistStart">Keep history of checked out items?</label> <input type="checkbox" id="circHistStart" />
+ </td></tr>
+
+ <!-- FONT size preference -->
+ <tr class="hide_me">
+ <td>&myopac.prefs.font;</td>
+ <td>
+ <select id='prefs_def_font'>
+ <option value='regular'>&myopac.prefs.font.regular;</option>
+ <option value='large'>&myopac.prefs.font.large;</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr class="hide_me">
+ <td>&myopac.prefs.search.location;</td>
+ <td>
+ <div style='margin-bottom: 5px;'>
+ <input type='checkbox' id='myopac_pref_home_lib'
+ onclick='
+ if( this.checked ) $("prefs_def_location").disabled = true;
+ else $("prefs_def_location").disabled = false;
+ ' /> &myopac.prefs.search.home;
+ </div>
+ <select id='prefs_def_location'>
+ </select>
+ </td>
+ </tr>
+
+ <tr class="hide_me">
+ <td>&myopac.prefs.search.range;</td>
+ <td><select id='prefs_def_range'></select></td>
+ </tr>
+ </tbody>
+ </table>
+
+
+
+
+
+<table class="hide_me" id="acct_notify_main">
+ <tbody>
+ <tr class="hide_me">
+ <td>
+ <span>&myopac.prefs.holds.notify;</span>
+ <a class='classic_link' href='javascript:void(0);'
+ onclick='alert($("myopac_pref_hold_notify_alert").innerHTML);' >&common.help;</a>
+ </td>
+ <td style="padding-left:15px;">
+ <select id='prefs_hold_notify'>
+ <option value='phone:email' selected='selected'>&myopac.prefs.holds.both;</option>
+ <option value='phone'>&myopac.prefs.holds.phone;</option>
+ <option value='email'>&myopac.prefs.holds.email;</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td style="padding-top:10px;">
+ <strong>Pick Up Notice for Holds</strong><br />
+ <input type="checkbox" id="opac.hold_notify.email" name="opac.hold_notify.email" /> <label for="opac.hold_notify.email">Email</label><br />
+ <input type="checkbox" id="opac.hold_notify.phone" name="opac.hold_notify.phone" /> <label for="opac.hold_notify.phone">Phone</label> <b>(Temporarily phone notification will generate a mailed paper notice.)</b>
+ </td>
+ </tr>
+ <tr>
+ <td style="padding-top:10px;">
+ <strong>Expire Notice for Holds</strong><br />
+ <input type="checkbox" id="notification.hold.expire.email" name="notification.hold.expire.email" /> <label for="notification.hold.expire.email">Email</label>
+ </td>
+ </tr>
+ <tr>
+ <td style="padding-top:10px;">
+ <strong>Cancel Notice for Holds</strong><br />
+ <input type="checkbox" id="notification.hold.cancel.email" name="notification.hold.cancel.email" /> <label for="notification.hold.cancel.email">Email</label>
+ </td>
+ </tr>
+ <tr>
+ <td style="padding-top:10px;">
+ <strong>Overdue First Notice</strong><br />
+ <input type="checkbox" id="notification.overdue.first.email" name="notification.overdue.first.email" /> <label for="notification.overdue.first.email">Email</label><br />
+ <input type="checkbox" id="notification.overdue.first.phone" name="notification.overdue.first.phone" /> <label for="notification.overdue.first.phone">Phone</label> <b>(Temporarily phone notification will generate a mailed paper notice.)</b>
+ </td>
+ </tr>
+ <tr>
+ <td style="padding-top:10px;">
+ <strong>Courtesy Notice</strong><br />
+ <input type="checkbox" id="notification.predue.email" name="notification.predue.email" /> <label for="notification.predue.email">Email</label><br />
+ </td>
+ </tr>
+
+ <a href="http://www.kcls.org/usingthelibrary/catalog_help/library_elf.cfm"><u>Try Library Elf-to manage library materials!</u></a>
+
+
+ </tbody>
+</table>
+
+
+<div id="acct_info_main">
+ <div id='myopac.expired.alert' class='hide_me' style='margin-bottom: 20px;'>
+ <table class='data_grid' width='100%'>
+ <tbody>
+ <tr>
+ <td width='100%' style='color:red;'>
+ &myopac.summary.expired;
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+ <div id='myopac.notes.div' class='hide_me'>
+ <table class='data_grid' width='100%'>
+ <thead>
+ <tr>
+ <td colspan='2'><b> &myopac.summary.notes;</b></td>
+ </tr>
+ </thead>
+ <tbody id='myopac.notes.tbody'>
+ <tr id='myopac.notes.tr'>
+ <td>
+ <b name='title'/> : <span name='value'/>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <br/>
+ </div>
+
+ <table width='70%' class='light_border data_grid'>
+ <tbody id='myopac_summary_tbody'>
+ <tr>
+ <td width='30%' class='color_4 light_border'>&common.name;</td>
+ <td class='light_border'>
+ <span id='myopac_summary_prefix' style='padding-right: 5px;'> </span>
+ <span id='myopac_summary_first' style='padding-right: 5px;'> </span>
+ <span id='myopac_summary_middle' style='padding-right: 5px;'> </span>
+ <span id='myopac_summary_last' style='padding-right: 5px;'> </span>
+ <span id='myopac_summary_suffix'> </span>
+ </td>
+ <td> </td>
+ </tr>
+
+ <tr>
+ <td class='color_4 light_border'>&myopac.summary.phone.day;</td>
+ <td class='light_border' id='myopac_summary_dayphone'> </td>
+ <td class='light_border'><a href='javascript:void(0);' class="hide_me"
+ onclick='unHideMe($("myopac_update_phone1_row"));$("myopac_new_phone1").focus();'
+ id='myopac_summary_phone1_change' style='text-decoration: underline;'>&myopac.summary.change;</a></td>
+ </tr>
+ <tr id='myopac_update_phone1_row' class='hide_me'>
+ <td class='myopac_update_cell' colspan='3'>
+ <span class='myopac_update_span'>Enter New &myopac.summary.phone.day;: </span>
+ <input type='text' size='24' id='myopac_new_phone1'
+ onkeydown='if(userPressedEnter(event)) myOPACUpdatePhone("1");' />
+ <span class='myopac_update_span'>
+ <button onclick='myOPACUpdatePhone("1");'>&common.submit;</button>
+ </span>
+ <span class='myopac_update_span'>
+ <button onclick='hideMe($("myopac_update_phone1_row"));'>&common.cancel;</button>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class='color_4 light_border'>&myopac.summary.phone.evening;</td>
+ <td class='light_border' id='myopac_summary_eveningphone'> </td>
+ <td class='light_border'><a href='javascript:void(0);' class="hide_me"
+ onclick='unHideMe($("myopac_update_phone2_row"));$("myopac_new_phone2").focus();'
+ id='myopac_summary_phone2_change' style='text-decoration: underline;'>&myopac.summary.change;</a></td>
+ </tr>
+ <tr id='myopac_update_phone2_row' class='hide_me'>
+ <td class='myopac_update_cell' colspan='3'>
+ <span class='myopac_update_span'>New &myopac.summary.phone.evening;: </span>
+ <input type='text' size='24' id='myopac_new_phone2'
+ onkeydown='if(userPressedEnter(event)) myOPACUpdatePhone("2");' />
+ <span class='myopac_update_span'>
+ <button onclick='myOPACUpdatePhone("2");'>&common.submit;</button>
+ </span>
+ <span class='myopac_update_span'>
+ <button onclick='hideMe($("myopac_update_phone2_row"));'>&common.cancel;</button>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class='color_4 light_border'>&myopac.summary.phone.other;</td>
+ <td class='light_border' id='myopac_summary_otherphone'> </td>
+ <td class='light_border'><a href='javascript:void(0);' class="hide_me"
+ onclick='unHideMe($("myopac_update_phone3_row"));$("myopac_new_phone3").focus();'
+ id='myopac_summary_phone3_change' style='text-decoration: underline;'>&myopac.summary.change;</a></td>
+ </tr>
+ <tr id='myopac_update_phone3_row' class='hide_me'>
+ <td class='myopac_update_cell' colspan='3'>
+ <span class='myopac_update_span'>Enter New &myopac.summary.phone.other;: </span>
+ <input type='text' size='24' id='myopac_new_phone3'
+ onkeydown='if(userPressedEnter(event)) myOPACUpdatePhone("3");' />
+ <span class='myopac_update_span'>
+ <button onclick='myOPACUpdatePhone("3");'>&common.submit;</button>
+ </span>
+ <span class='myopac_update_span'>
+ <button onclick='hideMe($("myopac_update_phone3_row"));'>&common.cancel;</button>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class='color_4 light_border'>
+ <div style="position:absolute"><div style="position:relative;left:70px;top:-3px;"><a href="javascript:;" onclick="alert('Create a Username as an option to your barcode to log into My Account.\nExamples: ilovebooks, johndoe1');"><img alt="Username Help" src="/opac/skin/kcls/graphics/question-mark.png" /></a></div></div>
+ &common.username;</td>
+ <td class='light_border' id='myopac_summary_username'> </td>
+ <td class='light_border'><a href='javascript:void(0);'
+ onclick='unHideMe($("myopac_update_username_row"));$("myopac_new_username").focus();' class="hide_me"
+ id='myopac_summary_username_change' style='text-decoration: underline;'>&myopac.summary.change;</a></td>
+ </tr>
+
+ <tr id='myopac_update_username_row' class='hide_me'>
+ <td class='myopac_update_cell' colspan='3'>
+ <span class='myopac_update_span'>&myopac.summary.username.enter; </span>
+ <input type='text' size='24' id='myopac_new_username'
+ onkeydown='if(userPressedEnter(event)) myOPACUpdateUsername();' />
+ <span class='myopac_update_span'>
+ <button onclick='myOPACUpdateUsername();'>&common.submit;</button>
+ </span>
+ <span class='myopac_update_span'>
+ <button onclick='hideMe($("myopac_update_username_row"));'>&common.cancel;</button>
+ </span>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class='color_4 light_border'>&common.password;</td>
+ <td class='light_border' id='myopac_summary_password'>&myopac.summary.password.text;</td>
+ <td class='light_border'><a href='javascript:void(0);' class="hide_me"
+ onclick='unHideMe($("myopac_update_password_row"));$("myopac_current_password").focus();'
+ id='myopac_summary_password_change' style='text-decoration: underline;'>&myopac.summary.change;</a></td>
+ </tr>
+
+ <tr id='myopac_update_password_row' class='hide_me'>
+ <td class='myopac_update_cell' colspan='3'>
+
+ <table><tbody>
+ <tr>
+ <td><span class='myopac_update_span'>&myopac.summary.password.current; </span></td>
+ <td><input type='password' size='24' id='myopac_current_password'
+ onkeydown='if(userPressedEnter(event)) myOPACUpdatePassword();' /></td>
+ </tr>
+ <tr>
+ <td><span class='myopac_update_span'>&myopac.summary.password.new; </span></td>
+ <td><input type='password' size='24' id='myopac_new_password'
+ onkeydown='if(userPressedEnter(event)) myOPACUpdatePassword();' /></td>
+ </tr>
+ <tr>
+ <td><span class='myopac_update_span'>&myopac.summary.password.reenter; </span></td>
+ <td><input type='password' size='24' id='myopac_new_password2'
+ onkeydown='if(userPressedEnter(event)) myOPACUpdatePassword();' /></td>
+ </tr>
+ </tbody></table>
+
+ <span class='myopac_update_span'>
+ <button onclick='myOPACUpdatePassword();'>&common.submit;</button>
+ </span>
+ <span class='myopac_update_span'>
+ <button onclick='hideMe($("myopac_update_password_row"));'>&common.cancel;</button>
+ </span>
+ </td>
+ </tr>
+
+ <tr>
+ <td class='color_4 light_border'>&myopac.summary.email;</td>
+ <td class='light_border' id='myopac_summary_email'> </td>
+ <td class='light_border'><a href='javascript:void(0);' class="hide_me"
+ onclick='unHideMe($("myopac_update_email_row"));$("myopac_new_email").focus();'
+ id='myopac_summary_email_change' style='text-decoration: underline;'>&myopac.summary.change;</a></td>
+ </tr>
+
+ <tr id='myopac_update_email_row' class='hide_me'>
+ <td class='myopac_update_cell' colspan='3'>
+ <span class='myopac_update_span'>&myopac.summary.email.new; </span>
+ <input type='text' size='24' id='myopac_new_email'
+ onkeydown='if(userPressedEnter(event)) myOPACUpdateEmail();' />
+ <span class='myopac_update_span'>
+ <button onclick='myOPACUpdateEmail();'>&common.submit;</button>
+ </span>
+ <span class='myopac_update_span'>
+ <button onclick='hideMe($("myopac_update_email_row"));'>&common.cancel;</button>
+ </span>
+ </td>
+ </tr>
+
+ <tr class="hide_me">
+ <td class='color_4 light_border'>&myopac.summary.id.primary;</td>
+ <td class='light_border' id='myopac_summary_ident1'> </td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td class='color_4 light_border'>&myopac.summary.barcode;</td>
+ <td class='light_border' id='myopac_summary_barcode'> </td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td class='color_4 light_border'>&myopac.summary.home;</td>
+ <td class='light_border' id='myopac_summary_homelib'> </td>
+ <td><a href='javascript:void(0);' class="hide_me"
+ onclick='unHideMe($("myopac_update_home_row"));$("myopac_new_home").focus();'
+ id='myopac_summary_home_change' style='text-decoration: underline;'>&myopac.summary.change;</a></td>
+ </tr>
+ <tr id='myopac_update_home_row' class='hide_me'>
+ <td class='myopac_update_cell' colspan='3'>
+ <span class='myopac_update_span'>New home library: </span>
+ <select id='myopac_new_home'></select>
+ <span class='myopac_update_span'>
+ <button onclick='myOPACUpdateHomeOU();'>&common.submit;</button>
+ </span>
+ <span class='myopac_update_span'>
+ <button onclick='hideMe($("myopac_update_home_row"));'>&common.cancel;</button>
+ </span>
+ </td>
+ </tr>
+ <tr class="hide_me">
+ <td class='color_4 light_border'>&myopac.summary.genesis;</td>
+ <td class='light_border' id='myopac_summary_create_date'> </td>
+ <td> </td>
+ </tr>
+
+ </tbody>
+ </table>
+
+
+ <br/><hr style="border-bottom:none;*height:0px;" color="#dcdbdb" /><br/>
+
+ <table width='100%' class='light_border data_grid'>
+ <thead>
+ <tr>
+ <td>&myopac.summary.addresses;</td>
+ <td id='myopac_pending_addr_td' class='hide_me'><table cellpadding="0" cellspacing="0" border="0"><tr><td>&myopac.summary.addresses.pending;</td>
+ <td><a href="javascript:;" onclick="alert('Address changes will be authenticated by staff.');"><img alt="Address Help" src="/opac/skin/kcls/graphics/question-mark.png" /></a></td></tr></table></td>
+ </tr>
+ </thead>
+ <tbody id='myopac_addr_tbody'>
+ <tr id='myopac_addr_row' class='light_border'>
+ <td>
+ <table>
+ <tr>
+ <td>&myopac.summary.address.type;</td>
+ <td name='myopac_addr_type'> </td>
+ </tr>
+ <tr>
+ <td>&myopac.summary.address.street;</td>
+ <td name='myopac_addr_street'> </td>
+ </tr>
+ <tr>
+ <td>&myopac.summary.address.street;</td>
+ <td name='myopac_addr_street2'> </td>
+ </tr>
+ <tr>
+ <td>&myopac.summary.address.city;</td>
+ <td name='myopac_addr_city'> </td>
+ </tr>
+ <tr>
+ <td>&myopac.summary.address.county;</td>
+ <td name='myopac_addr_county'> </td>
+ </tr>
+ <tr>
+ <td>&myopac.summary.address.state;</td>
+ <td name='myopac_addr_state'> </td>
+ </tr>
+ <tr>
+ <td>&myopac.summary.address.country;</td>
+ <td name='myopac_addr_country'> </td>
+ </tr>
+ <tr>
+ <td>&myopac.summary.address.zip;</td>
+ <td name='myopac_addr_zip'> </td>
+ </tr>
+ <tr>
+ <td name='myopac_addr_edit_td' colspan='2' class='hide_me'>
+ <a class='classic_link' name='myopac_addr_edit_link' href='javascript:void(0);'>Edit Address</a>
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td class='hide_me' name='myopac_pending_addr_td'>
+ <table>
+ <tr>
+ <td>&myopac.summary.address.type;</td>
+ <td><input name='myopac_pending_addr_type'/> </td>
+ </tr>
+ <tr>
+ <td>&myopac.summary.address.street;</td>
+ <td><input name='myopac_pending_addr_street'/> </td>
+ </tr>
+ <tr>
+ <td>&myopac.summary.address.street;</td>
+ <td><input name='myopac_pending_addr_street2'/> </td>
+ </tr>
+ <tr>
+ <td>&myopac.summary.address.city;</td>
+ <td><input name='myopac_pending_addr_city'/> </td>
+ </tr>
+ <tr>
+ <td>&myopac.summary.address.county;</td>
+ <td><input name='myopac_pending_addr_county'/> </td>
+ </tr>
+ <tr>
+ <td>&myopac.summary.address.state;</td>
+ <td><input name='myopac_pending_addr_state'/> </td>
+ </tr>
+ <tr>
+ <td>&myopac.summary.address.country;</td>
+ <td><input name='myopac_pending_addr_country'/> </td>
+ </tr>
+ <tr>
+ <td>&myopac.summary.address.zip;</td>
+ <td><input name='myopac_pending_addr_zip'/> </td>
+ </tr>
+ <tr>
+ <td name='myopac_addr_edit_td' colspan='2'>
+ <a class='classic_link' name='myopac_pending_addr_edit_link' href='javascript:void(0);'>Save Changes</a>
+ <a style='padding-left:10px;' class='classic_link' name='myopac_pending_addr_del_link' href='javascript:void(0);'>Discard Pending Address</a>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+
+ <div class='hide_me' id='myopac_username_error'>&myopac.summary.username.error;</div>
+ <div class='hide_me' id='myopac_username_dup'>&myopac.summary.username.dup;</div>
+ <div class='hide_me' id='myopac_username_success'>&myopac.summary.username.success;</div>
+ <div class='hide_me' id='myopac_username_failure'>&myopac.summary.username.failure;</div>
+
+ <div class='hide_me' id='myopac_email_error'>&myopac.summary.email.error;</div>
+ <div class='hide_me' id='myopac_email_success'>&myopac.summary.email.success;</div>
+ <div class='hide_me' id='myopac_email_failure'>&myopac.summary.email.failed;</div>
+
+ <div class='hide_me' id='myopac_password_error'>&myopac.summary.password.error;</div>
+ <div class='hide_me' id='myopac_password_success'>&myopac.summary.password.success;</div>
+ <div class='hide_me' id='myopac_password_failure'>&myopac.summary.password.failure;</div>
+ <span class='hide_me' id='myopac_invalid_username'>&myopac.summary.username.invalid;</span>
+ <span class='hide_me' id='myopac_addr_changes_saved'>Address Saved</span>
+
+ <div class='hide_me' id='prefs_update_success'>&myopac.prefs.save.success;</div>
+ <div class='hide_me' id='prefs_update_failure'>&myopac.prefs.save.failed;</div>
+ <span class='hide_me' id='myopac_pref_hold_notify_alert'>&myopac.prefs.help;</span>
+
+</div>
+<![CDATA[<!-- ****************** myopac_prefs.xml ***************************** -->]]>
--- /dev/null
+
+
+<![CDATA[<!-- ****************** myopac_summary.xml ***************************** -->]]>
+<div id='myopac_summary_div' xmlns:xi="http://www.w3.org/2001/XInclude" style="padding:0px;">
+ <div id="acct_sum">
+ <div style="width:742px;float:left;">
+ <div class="header_middle">Account Summary</div>
+ </div>
+ <div id="myopac_sum_fines">
+ <div style="position:absolute;"><div style="position:relative;top:-15px;left:-23px;"><img src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/acct_sum_fines_tl.png" /></div></div>
+ <div style="position:absolute;"><div style="position:relative;top:-15px;left:172px;"><img src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/acct_sum_fines_tr.png" /></div></div>
+ <div style="position:absolute;"><div style="position:relative;top:161px;left:-23px;"><img src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/acct_sum_fines_bl.png" /></div></div>
+ <div style="position:absolute;"><div style="position:relative;top:161px;left:172px;"><img src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/acct_sum_fines_br.png" /></div></div>
+ Fines: <span id="myopac_sum_fines_bal">$0.00</span><br />
+ <a class="hide_me" href="javascript:;" id="pay_fines_btn1" onclick="showPaymentForm();"><img alt="Pay Fines" onmouseover="this.src='<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/pay-fines-btn-hover.png';" onmouseout="this.src='<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/pay-fines-btn.png';" src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/pay-fines-btn.png" style="position:relative;top:5px;" /></a>
+ </div>
+
+ <div style="width:662px;">
+ <div style="float:left;">
+ <div style="padding:10px 0px;" id="myopac_sum_name"></div>
+ <div class="acct_sum_row"><table width="100%" cellspacing="0" cellpadding="0"><tr><td>Items Currently Checked out <span id="myopac_sum_checked" class="view_link">(0)</span></td><td align="right" class="view_link"><a href="javascript:;" onclick="swapTabs($('acct_checked_out'));myOPACChangePage('checked');" rel="myopac_checked_div">View All</a></td></tr></table></div>
+ <div class="acct_sum_row"><table width="100%" cellspacing="0" cellpadding="0"><tr><td>Items Currently on Hold <span id="myopac_sum_holds" class="view_link">(0)</span></td><td align="right" class="view_link"><a href="javascript:;" onclick="swapTabs($('acct_holds'));myOPACChangePage('holds');" rel="myopac_holds_div">View All</a></td></tr></table></div>
+ <div class="acct_sum_row"><table width="100%" cellspacing="0" cellpadding="0"><tr><td>Items ready for pickup <span id="myopac_sum_pickup" class="view_link">(0)</span></td><td align="right" class="view_link"><a href="javascript:;" onclick="swapTabs($('acct_holds'));myOPACChangePage('holds');" rel="myopac_holds_div">View All</a></td></tr></table></div>
+ <div class="acct_sum_row" id="myopac_sum_fines_slim"><table width="100%" cellspacing="0" cellpadding="0"><tr><td>Fees & Fines</td><td align="right" class="view_link"><a class="hide_me" id="show_fines_link" href="javascript:;" onclick="showFinesDiv(this);">Show Overdue Materials</a></td></tr></table></div>
+ </div>
+ </div>
+ <div style="clear:both;"></div>
+ <div id='myopac_fines_div' xmlns:xi="http://www.w3.org/2001/XInclude" >
+
+ <table width='100%' class='data_grid data_grid_center hide_me'>
+ <thead class='color_3'>
+ <tr><td colspan='3' style='padding: 6px'><b>&myopac.fines.title;</b></td></tr>
+ <tr>
+ <td width='33%'>&myopac.fines.owed;</td>
+ <td width='33%'>&myopac.fines.paid;</td>
+ <td width='33%'>&myopac.fines.balance;</td>
+ </tr>
+ </thead>
+
+ <tbody id='myopac_fines_summary_tbody'>
+ <tr id='myopac_fines_summary_loading'><td>&myopac.fines.status;</td></tr>
+ <tr id='myopac_fines_summary_row' class='hide_me'>
+ <td id='myopac_fines_summary_total' >&common.currency;</td>
+ <td id='myopac_fines_summary_paid' >&common.currency;</td>
+ <td id='myopac_fines_summary_balance' style='color:red;font-weight: bold;'>&common.currency;</td>
+ </tr>
+ </tbody>
+ </table>
+
+ <!-- tab-like options for selection Fines or Payments view -->
+ <div id='fines_payments_wrapper' style='padding-left: 5px; padding-right: 5px;'>
+ <div id='acct_fines_tabs'>
+ <a id='acct_fines_tab' href='javascript:;' onclick='showFinesTab();'></a>
+ <a id='acct_payments_tab' href='javascript:;' onclick='myopacDrawPayments();'></a>
+ </div>
+ </div>
+
+ <!-- Payments History -->
+ <style>#myopac_payments_table th { text-align: left; }</style>
+ <div id='myopac_payments_div' class='hide_me'>
+ <div><b>Payments</b></div>
+ <table width='100%' class='data_grid' id='myopac_payments_table'>
+ <thead><tr>
+ <th>Payment Date</th>
+ <th>Payment For</th>
+ <th>Amount</th>
+ <th>Receipt</th>
+ </tr></thead>
+ <tbody id='myopac_payments_tbody'>
+ <tr id='myopac_payments_tmpl'>
+ <td name='date'/>
+ <td name='for'/> <!-- title links? -->
+ <td name='amount'>$</td>
+ <td>
+ <a href='javascript:;' name='print_recpt'>Print</a> / <a href='javascript:;' name='email_recpt'>Email</a>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <!-- /Payments History -->
+
+ <!--
+ <div id='accrue_explanation' class='hide_me'>
+ <span>Transactions whose balances are marked with a</span>
+ <span style='color:red; font-weight: bold'>*</span>
+ <span>will continue to accrue fines until the checked out item is returned.</span>
+ </div>
+ -->
+
+ <!-- Table for circulation transactions only -->
+ <div id='myopac_circ_trans_div' class='hide_me'>
+ <br/><hr/><br/>
+ <style>#myopac_circ_trans_table th { text-align: left; }</style>
+ <table width='100%' class='data_grid' id='myopac_circ_trans_table'>
+ <thead>
+ <!-- <tr><td colspan='10' style='padding: 6px'><b>Fines</b></td></tr> -->
+ <tr>
+ <th>&common.title;</th>
+ <th>&common.author;</th>
+ <th>&myopac.fines.checkout;</th>
+ <th>&myopac.fines.due;</th>
+ <th>&myopac.fines.returned;</th>
+ <th>&myopac.fines.balance;</th>
+ <th align="center" nowrap="nowrap" style="white-space:nowrap;">
+ <div style='text-align:center'>Pay Fines<br/><input id="pay_fines_box1" type="checkbox"
+ onclick="checkAll($('myopac_circ_trans_tbody'), this, 'selector');" class="" title="Click to (un)select all fines" />
+ </div>
+ </th>
+ </tr>
+ </thead>
+ <tbody id='myopac_circ_trans_tbody'>
+ <tr id='myopac_circ_trans_row'>
+ <td><a class='classic_link' name='myopac_circ_trans_title'> </a></td>
+ <td name='myopac_circ_trans_author'> </td>
+ <td name='myopac_circ_trans_start'> </td>
+ <td name='myopac_circ_trans_due'> </td>
+ <td name='myopac_circ_trans_finished'><span style='color:red;'>&myopac.fines.accruing;</span></td>
+ <td><span style='color: red; font-weight: bold;' name='myopac_circ_trans_balance'>&common.currency;</span></td>
+ <td align="center"><input type="checkbox" class="" name="selector" title="pay this fine" /></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+ <!-- Table for all non-circulation transactions -->
+ <div id='myopac_trans_div' class='hide_me'>
+ <br/><hr style="border-bottom:none;*height:0px;" color="#dcdbdb" /><br/>
+ <style>#myopac_trans_table th { text-align: left; }</style>
+ <table width='100%' class='data_grid' id='myopac_trans_table'>
+ <thead>
+ <tr><td colspan='8' style='padding: 6px'><b>&myopac.fines.other;</b></td></tr>
+ <tr>
+ <th width='16%'>Date Applied</th>
+ <th width='16%'>&myopac.fines.time.paid;</th>
+ <th width='16%'>&myopac.fines.owed.initial;</th>
+ <th width='16%'>&myopac.fines.paid.amount;</th>
+ <th width='16%'>&myopac.fines.balance;</th>
+ <th width='16%'>&myopac.fines.type;</th>
+ <th width='4%' align="center" nowrap="nowrap" style="white-space:nowrap;">
+ <div style='text-align:center'>Pay Fines<br/>
+ <input id="pay_fines_box2" class="" type="checkbox" onclick="checkAll($('myopac_trans_tbody'), this, 'selector');" title="Click to (un)select all fines" />
+ </div>
+ </th>
+ </tr>
+ </thead>
+
+ <tbody id='myopac_trans_tbody'>
+ <tr id='myopac_trans_row'>
+ <td name='myopac_trans_start'> </td>
+ <td name='myopac_trans_last_payment'> </td>
+ <td name='myopac_trans_init_amount'>&common.currency;</td>
+ <td name='myopac_trans_total_paid'>&common.currency;</td>
+ <td style='color:red; font-weight: bold;'>
+ <span name='myopac_trans_balance_recur' class='hide_me'> * </span>
+ <span name='myopac_trans_balance'>&common.currency;</span>
+ </td>
+ <td name='myopac_trans_bill_type'> </td>
+ <td align="center"><input type="checkbox" name='selector' title='pay this fine' /></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <a id='pay-fines-image' href="javascript:;" onclick="showPaymentForm();"><img alt="Pay Fines" onmouseover="this.src='<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/pay-fines-btn-hover.png';" src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/pay-fines-btn.png" style="position:relative;top:5px;" /></a>
+
+ <br/>
+</div>
+</div>
+
+<!--
+<div id='receipt-print-frame-wrapper' class='hide_me'>
+-->
+<div dojoType='dijit.Dialog' jsId='receiptPrintDialog'>
+ <div>
+ <button id='receipt-view-print-button'>Print</button>
+ <button id='receipt-view-print-cancel'>Cancel</button>
+ </div>
+ <iframe name='receipt-frame' style='border:1px solid #888; overflow:auto; width:500px; height:500px;'></iframe>
+</div>
+
+<div id='pay_fines_confirm' class='hide_me' style='font-size: 120%; width:100%; text-align: center; padding-top: 20px;'>
+ Amount to pay: $<strong id='pay_fines_confirm_amount'/>. Are you sure?<br/><br/>
+ <button jsId='payConfirmSubmit' dojoType='dijit.form.Button'>Submit Payment</button>
+ <button jsId='payConfirmCancel' dojoType='dijit.form.Button'>Cancel</button>
+</div>
+<div id="pay_fines_now" class="hide_me">
+<div id='cc-payment-error-message' style='font-weight: bold; color: red; padding: 10px; border: 1px solid #888' class='hide_me'/>
+<table id='oils-selfck-cc-payment-table'>
+ <tbody>
+ <tr>
+ <td colspan="2"><div style="width:324px;"><strong>KCLS only accepts Visa or MasterCard<br/><br/></strong></div></td>
+ <td><div style="width:324px;"></div></td>
+ </tr>
+ <tr>
+ <td colspan='2'><strong>Billing Information</strong></td>
+ <td rowspan='13' valign='top'>
+ Selected fines you are paying for:
+ <table cellpadding="0" cellspacing="5" border="0">
+ <thead><tr><td><strong>Name</strong></td><td><strong>Amount</strong></td></tr></thead>
+ <tbody id="selectedFines"></tbody></table><br />
+ <div id='oils-selfck-cc-payment-summary'>
+ Total amount to pay: <strong>$<span></span></strong>
+ </div><br />
+ Click <strong>Cancel</strong> to go back and (un)select other fines.
+ </td>
+ </tr>
+ <tr>
+ <td>First Name</td>
+ <td><input dojoType='dijit.form.TextBox' jsId='oilsSelfckCCFName' required='true'/></td>
+ </tr>
+ <tr>
+ <td>Last Name</td>
+ <td><input dojoType='dijit.form.TextBox' jsId='oilsSelfckCCLName' required='true'/></td>
+ </tr>
+ <tr>
+ <td>Email Address</td>
+ <td>
+ <span id='myopac-cc-email'/>
+ <span style='margin-left:5px;'>
+ <a href='javascript:' onclick='myopacReturnToPayment=true;myOPACChangePage("prefs");'>Update</a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td>Street Address</td>
+ <td><input dojoType='dijit.form.TextBox' jsId='oilsSelfckCCStreet' required='true'/></td>
+ </tr>
+ <tr>
+ <td>City</td>
+ <td><input dojoType='dijit.form.TextBox' jsId='oilsSelfckCCCity' required='true'/></td>
+ </tr>
+ <tr>
+ <td>State or Province</td>
+ <td><input dojoType='dijit.form.TextBox' jsId='oilsSelfckCCState' required='true'/></td>
+ </tr>
+ <tr>
+ <td>ZIP or Postal Code</td>
+ <td><input dojoType='dijit.form.TextBox' jsId='oilsSelfckCCZip' required='true'/></td>
+ </tr>
+ <tr>
+ <td colspan='2'><strong>Credit Card Information</strong></td>
+ </tr>
+ <!-- Technically not needed since card type is derived from the CC number
+ <tr>
+ <td>Type of Card</td>
+ <td>
+ <select dojoType='dijit.form.FilteringSelect' jsId='oilsSelfckCCType' required='true'>
+ <option value='VISA'>VISA</option>
+ <option value='MasterCard'>MasterCard</option>
+ <option value='American Express'>American Express</option>
+ </select>
+ </td>
+ </tr>
+ -->
+ <tr>
+ <td>Credit Card #</td>
+ <td><input dojoType='dijit.form.TextBox' jsId='oilsSelfckCCNumber' required='true'/></td>
+ </tr>
+ <tr>
+ <td><div style="position:absolute;"><div style="position:relative;left:80px;"><a href="javascript:;" onclick="alert('Also known as a CVV2 code, it is the 3-digit number on the back of the card next to your signature.\nKCLS only accpets VISA and MasterCard.');"><img src="/opac/skin/kcls/graphics/question-mark.png" /></a></div></div> Security Code</td>
+ <td><input dojoType='dijit.form.TextBox' jsId='oilsSelfckCCCVV' required='true'/></td>
+ </tr>
+ <tr>
+ <td>Exipration Month</td>
+ <td>
+ <select dojoType='dijit.form.FilteringSelect' jsId='oilsSelfckCCMonth' required='true'>
+ <option value='01' selected='selected'>January</option>
+ <option value='02'>February</option>
+ <option value='03'>March</option>
+ <option value='04'>April</option>
+ <option value='05'>May</option>
+ <option value='06'>June</option>
+ <option value='07'>July</option>
+ <option value='08'>August</option>
+ <option value='09'>September</option>
+ <option value='10'>October</option>
+ <option value='11'>November</option>
+ <option value='12'>December</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td>Expiration Year</td>
+ <td>
+ <select dojoType='dijit.form.FilteringSelect' jsId='oilsSelfckCCYear' required='true'>
+ <option value='2011'>2011</option>
+ <option value='2012'>2012</option>
+ <option value='2013'>2013</option>
+ <option value='2014'>2014</option>
+ <option value='2015'>2015</option>
+ <option value='2016'>2016</option>
+ <option value='2017'>2017</option>
+ <option value='2018'>2018</option>
+ <option value='2019'>2019</option>
+ </select>
+ <!-- <input dojoType='dijit.form.NumberSpinner' constraints='{pattern:"0000", places:0, maxlength:4}' jsId='oilsSelfckCCYear' required='true'/> -->
+ </td>
+ </tr>
+ <tr class="hide_me">
+ <td>Edit Billing Address</td>
+ <td><input dojoType='dijit.form.CheckBox' jsId='oilsSelfckEditDetails'/></td>
+ </tr>
+ <tr>
+ <td colspan='2' align="center">
+ <button dojoType='dijit.form.Button' jsId='oilsSelfckCCSubmit'>Submit Payment</button>
+ <button dojoType='dijit.form.Button' onclick="hideMe($('pay_fines_now'));unHideMe($('acct_sum'));">Cancel</button>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="3"><br />
+ <strong style="color:red;font-size:16px;">Important! You must have a printed receipt to be eligible for a refund on lost items (regulations allow for no exceptions).</strong><br /><br />
+ <strong>To ensure your necessary receipt information is not lost, enter your email address above and a receipt will be emailed to you. Otherwise, make certain you have a printed receipt in hand before closing the payment receipt screen.</strong><br />Refunds are not available for parts and pieces, overdue fines, or items that do not display a specific title in My Account. For a full list of refundable and non-refundable items, visit <a href="http://www.kcls.org/usingthelibrary/borrowing/refundable.cfm">http://www.kcls.org/usingthelibrary/borrowing/refundable.cfm</a><br /><br />This site uses VeriSign SSL encryption to ensure your privacy.
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+</div>
+
+<!--#include virtual="myopac_fines.xml"-->
+<![CDATA[<!-- ****************** end: myopac_summary.xml ***************************** -->]]>
+
--- /dev/null
+<![CDATA[<!-- ****************** page_advanced.xml ***************************** -->]]>
+<div id='canvas_main' class='canvas' style='clear:both;'>
+ <style type='text/css'>
+ .advanced_div { padding-top:15px; }
+ </style>
+ <div class='advanced_div'>
+ <!--#include virtual="advanced/advanced_global.xml"-->
+ </div>
+</div>
+<![CDATA[<!-- ****************** end: page_advanced.xml ***************************** -->]]>
--- /dev/null
+<![CDATA[<!-- ****************** page_cnbrowse.xml ***************************** -->]]>
+<div id='canvas_main' class='canvas' style='margin-top: 20px;'>
+ <!--#include virtual="common/cn_browse.xml"-->
+</div>
+<![CDATA[<!-- ****************** end: page_cnbrowse.xml ***************************** -->]]>
+
--- /dev/null
+
+<![CDATA[<!-- ****************** page_mresult.xml ***************************** -->]]>
+<div>
+ <!--#include virtual="result/result_common.xml"-->
+</div>
+<![CDATA[<!-- ****************** end: page_mresult.xml ***************************** -->]]>
--- /dev/null
+<![CDATA[<!-- ****************** page_myopac.xml ***************************** -->]]>
+<div id='canvas_main' class='canvas hide_me'>
+ <div id='myopac_main_div'>
+ <!--#include virtual="myopac/myopac_summary.xml"-->
+ <!--#include virtual="myopac/myopac_checked.xml"-->
+ <!--#include virtual="myopac/myopac_holds.xml"-->
+ <!--#include virtual="myopac/myopac_prefs.xml"-->
+ <!--#include virtual="myopac/myopac_bookbags.xml"-->
+ <div style="clear:both;"></div>
+ </div>
+ <div id='myopac_reloading' class='hide_me canvas'> &common.loading; </div>
+
+ <table style='width: 98%; text-align: center;'>
+ <tbody>
+ <tr id='myopac_nav_row' class="hide_me">
+
+ <td class='myopac_link border_6' id='myopac_summary_td' >
+ <a href='javascript:void(0);'
+ onclick='myOPACChangePage("summary");'>&myopac.account;</a>
+ </td>
+
+ <td class='myopac_link border_6' id='myopac_checked_td' >
+ <a href='javascript:void(0);'
+ onclick='myOPACChangePage("checked");'>&myopac.checkouts;</a>
+ </td>
+
+ <td class='myopac_link border_6' id='myopac_holds_td' >
+ <a href='javascript:void(0);'
+ onclick='myOPACChangePage("holds");'>&myopac.holds;</a>
+ </td>
+
+ <td class='myopac_link border_6' id='myopac_fines_td' >
+ <a href='javascript:void(0);'
+ onclick='myOPACChangePage("fines");'>&myopac.fines;</a>
+ </td>
+
+ <td class='myopac_link border_6' id='myopac_prefs_td' >
+ <a href='javascript:void(0);'
+ onclick='myOPACChangePage("prefs");'>&myopac.preferences;</a>
+ </td>
+
+ <td class='myopac_link border_6' id='myopac_bookbag_td' nowrap='nowrap'>
+ <a href='javascript:void(0);'
+ onclick='myOPACChangePage("bookbag");'>&myopac.bookbags;</a>
+ </td>
+
+ </tr>
+ </tbody>
+ </table>
+
+</div>
+<div style="height:40px;" class="hide_me"><div class="hide_me" id="myopac_loading">Loading...</div></div>
+<![CDATA[<!-- ****************** end: page_myopac.xml ***************************** -->]]>
--- /dev/null
+
+<![CDATA[<!-- ****************** page_rdetail.xml ***************************** -->]]>
+
+<div id='canvas_main' class='canvas'>
+ <div id="rdetail_header">
+ <div style="float:left;">
+ Search Results<![CDATA[
+ <span id="rdetail_result_count" class="hide_me">Showing Item <strong id='np_offset'></strong> of <strong id='np_count'></strong></span>]]>
+ </div>
+ <div id="rdetail_result_nav">
+ <span class="hide_me"><a class='np_nav_link classic_link' id='np_start' href='javascript:rdetailStart();' title="&rdetail.page.results;">&rdetail.start;</a></span>
+ <a class='np_nav_link classic_link hide_me' id='np_prev' href='javascript:rdetailPrev();' title='&rdetail.page.previous;'><span class="nav_arrow_fix">◄</span> Previous</a>
+ <span style="padding:0px 10px;"> </span>
+ <a class='np_nav_link classic_link hide_me' id='np_next' href='javascript:rdetailNext();' title='&rdetail.page.next;'>Next <span class="nav_arrow_fix">►</span></a>
+ <span class="hide_me"><a class='np_nav_link classic_link' id='np_end' href='javascript:rdetailEnd();' title="&rdetail.page.last;">&rdetail.end;</a></span>
+ </div>
+ <div style="clear:both;"></div>
+ </div>
+
+ <table width='100%' id='np_table' border='0' class="hide_me">
+ <tbody>
+ <tr class='color_4'>
+ <td style='vertical-align: top;' align="center">
+ <span style="float:left"><a href="javascript:;" onclick="history.go(-1);">« Back</a></span>
+
+ <span>
+
+ </span>
+
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <table style='' class='rdetail_header color_1 hide_me' width='100%' border="0" cellspacing="0" cellpadding="0">
+ <tbody>
+
+ <tr>
+ <td width='33%' align='left' class="hide_me">
+ <span>&rdetail.detailMain.headerLabel;</span>
+ </td>
+
+ <td align='right' style='padding-right: 7px;' width='33%'>
+ <span id='rdetail_exp_refworks_span' class='hide_me' style='padding-right: 7px;'>
+ <a id='rdetail_exp_refworks'>&opac.holds.exportRefWorks;</a>
+ </span>
+
+ <span style='padding-right: 7px;' class='hide_me' id='rdetail_more_actions'>
+ <select id='rdetail_more_actions_selector' style='max-width: 11em;' class="hide_me">
+ <option value='start'>&rdetail.more;</option>
+ <option disabled='disabled'>--------------</option>
+ <option disabled='disabled'>&rdetail.bookbag.add;</option>
+ <option disabled='disabled'>--------------</option>
+ <option value='new_bookbag' onclick='rdetailNewBookbag();'>&rdetail.bookbag.create;</option>
+ </select>
+ </span>
+
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <div style='font-weight: bold; padding: 5px; margin: 5px; width: 100%;'
+ class='hide_me color_4' id='rdetail_deleted_exp'>
+ &rdetail.record.deleted;
+ </div>
+
+ <!--#include virtual="rdetail/rdetail_summary.xml"-->
+ <div style="width:100%;" class="hide_me">
+ <div style="float:right;" class="hide_me" id="lib_info_more"><button dojoType="dijit.form.Button" onclick="unHideMe($('lib_info_less'));unHideMe($('rdetails_status2'));hideMe($('lib_info_more'));">More...</button></div>
+ <div style="float:right;" class="hide_me" id="lib_info_less"><button dojoType="dijit.form.Button" onclick="hideMe($('lib_info_less'));hideMe($('rdetails_status2'));unHideMe($('lib_info_more'));">...Less</button></div>
+ </div>
+ <!--#include virtual="rdetail/rdetail_extras.xml"-->
+
+ <div class='hide_me' id='rdetail_bb_none'>&rdetail.none;</div>
+ <div class='hide_me' id='rdetail_bb_item_success'>&rdetail.bookbag.add.success;</div>
+ <div class='hide_me' id='rdetail_bb_new'>&rdetail.bookbag.name;</div>
+ <div class='hide_me' id='rdetail_bb_success'>&rdetail.bookbag.create.success;</div>
+
+</div>
+<![CDATA[<!-- ****************** end; page_rdetail.xml ***************************** -->]]>
--- /dev/null
+<![CDATA[<!-- ****************** page_rresult.xml ***************************** -->]]>
+<div>
+ <!--#include virtual="result/result_common.xml"-->
+</div>
+<![CDATA[<!-- ****************** end: page_rresult.xml ***************************** -->]]>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Loads the environment -->
+<!--#include virtual="setenv.xml"-->
+
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [
+ <!--#include virtual="/opac/locale/${locale}/opac.dtd"-->
+]>
+
+
+<html xmlns='http://www.w3.org/1999/xhtml'>
+ <!--#include virtual="header.xml"-->
+ <!--#if expr="$OILS_PAGE='index.xml'"-->
+ <!--#include virtual="home/index_body.xml"-->
+ <!--#else-->
+ <!--#include virtual="body.xml"-->
+ <!--#endif-->
+</html>
+
--- /dev/null
+<!-- record details alternate canvases -->
+<div class=''>
+</div>
--- /dev/null
+
+<![CDATA[<!-- ****************** rdetail_cn_details.xml ***************************** -->]]>
+<table class='hide_me'>
+ <tbody>
+ <tr style='border: 3px solid #E0E0E0;' id='rdetail_volume_details_row' templateRow='1'>
+ <td colspan='10'>
+ <div style='text-align: center; margin-top: 6px; margin-bottom: 6px'>
+
+ <a name='print' href='javascript:void(0);' class='classic_link'>&rdetail.print;</a>
+ <table class='data_grid data_grid_center' style='width: 100%'>
+ <thead>
+ <tr>
+ <td width='33%'>&rdetail.cn.barcode;</td>
+ <td>&common.status;</td>
+ <td>&rdetail.cn.location;</td>
+ <td name='age_protect_label' class='hide_me'>&rdetail.cn.hold.age;</td>
+ <td name='create_date_label' class='hide_me'>&rdetail.cn.genesis;</td>
+ <td name='holdable_label' class='hide_me'>&rdetail.cn.holdable;</td>
+ <td name='due_date_label' class='hide_me'>&rdetail.cn.due;</td>
+ </tr>
+ </thead>
+ <tbody name='copies_tbody' class='copy_details_table' width='100%'>
+
+ <tr name='copies_row'>
+
+ <td>
+ <span name='barcode'> </span>
+ <a class='hide_me classic_link copy_more_info' name='details_link'>&rdetail.cn.more;</a>
+ <a class='hide_me classic_link copy_more_info' name='less_details_link'>&rdetail.cn.less;</a>
+ <a class='hide_me classic_link copy_more_info' name='copy_hold_link'
+ href='javascript:void(0);'>&rdetail.cn.hold;</a>
+ </td>
+
+ <td name='status'> </td>
+ <td name='location'> </td>
+ <td name='age_protect_value' class='hide_me'>&rdetail.cn.disabled;</td>
+ <td name='create_date_value' class='hide_me'> </td>
+
+ <td name='copy_holdable_td' class='hide_me'>
+ <span name='copy_is_holdable'> </span>
+ </td>
+
+ <td name='copy_due_date_td' class='hide_me'>
+ <span name='copy_due_date'> </span>
+ </td>
+
+ </tr>
+
+ <tr name='copy_extras_row' class='hide_me'>
+ <td colspan='10'>
+ <table width='100%' class='data_grid'>
+ <tbody name='extras_tbody'>
+ <tr name='extras_row' class='hide_me'>
+ <td name='type' width='20%'>
+ <span name='note' class='hide_me'><b>&rdetail.cn.note;</b></span>
+ <span name='cat' class='hide_me'><b>&rdetail.cn.category;</b></span>
+ </td>
+ <td>
+ <span name='key'> </span> : <span name='value'> </span>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+
+ </tbody>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<span class='hide_me' id='rdetail.yes'>&common.yes;</span>
+<span class='hide_me' id='rdetail.no'>&common.no;</span>
+
+
+<div id='rdetail_print_details' class='hide_me'>
+ <div style='text-align: center; padding: 20px; width: 100%'>
+ <div style='width:100%; border: 2px solid #E0F0E0; margin-bottom: 20px;'>
+ <input type='submit' value='&rdetail.cn.print;' onclick='window.print();'> </input>
+ </div>
+ <div name='body'>
+ <table>
+ <tbody name='tbody'>
+ <tr><td>&common.library;</td><td colspan='2' name='lib'></td></tr>
+ <tr><td>&common.title;</td><td colspan='2' name='title'></td></tr>
+ <tr><td>&common.author;</td><td colspan='2' name='author'></td></tr>
+ <tr><td>&common.edition;</td><td colspan='2' name='edition'></td></tr>
+ <tr><td>&common.pubdate;</td><td colspan='2' name='pubdate'></td></tr>
+ <tr><td>&common.publisher;</td><td colspan='2' name='publisher'></td></tr>
+ <tr><td>&common.physical;</td><td colspan='2' name='phys'></td></tr>
+ <tr>
+ <td colspan='3' style='background: #E0F0E0;'> </td>
+ </tr>
+ <tr name='cnrow'><td><b>&common.callnumber;</b></td><td><b colspan='2' name='cn'></b></td></tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+</div>
+<![CDATA[<!-- ****************** end: rdetail_cn_details.xml ***************************** -->]]>
--- /dev/null
+<!-- This holds information for copies attached to this record -->
+<![CDATA[<!-- ****************** rdetail_copyinfo.xml ***************************** -->]]>
+<div id='rdetail_copy_info_div' class='rdetail_extras_div hide_me'>
+
+ <div style='width: 100%; text-align: center; padding-bottom: 5px;'>
+ <span>
+ <a href='javascript:void(0);' id='copy_info_local_link'
+ class='rdetail_copy_nav_link hide_me classic_link'><b>&rdetail.copyInfo.local;</b></a>
+ </span>
+ <span width=''>
+ <a href='javascript:void(0);' id='copy_info_all_link'
+ class='rdetail_copy_nav_link classic_link'><b>&rdetail.copyInfo.all;</b></a>
+ </span>
+ </div>
+
+ <style>
+ #rdetail_copy_info_table { font-size: 8pt; }
+ #rdetail_copy_info_table td { padding: 3px; }
+ </style>
+ <table id='rdetail_copy_info_table' class='data_grid'>
+ <thead>
+
+ <tr>
+ <td class='rdetail_copy_info_header_cell'>&rdetail.copyInfo.library;</td>
+ <td class='rdetail_copy_info_header_cell'>&rdetail.copyInfo.callnumber;</td>
+ <td name='rdetail_copylocation_header' class='rdetail_copy_info_header_cell hide_me'>&rdetail.copyInfo.copylocation;</td>
+ <td class='rdetail_copy_info_header_cell'>&rdetail.copyInfo.actions;</td>
+ <td nowrap='nowrap' class='rdetail_copy_info_header_cell' id='rdetail_copy_info_status'>
+ <div name='rdetail_status_cell'> </div>
+ </td>
+ </tr>
+
+ </thead>
+ <tbody id='rdetail_copy_info_tbody'>
+ <tr id='rdetail_copy_info_row' class='hide_me'>
+ <td name='rdetail_library_cell'>
+ <a name='lib_print_link' class='hide_me classic_link' style='font-size: 8pt; padding-left: 20px;'>
+ &rdetail.copyInfo.print;
+ </a>
+ </td>
+ <td name='rdetail_callnumber_cell'> </td>
+ <td class="hide_me" name='rdetail_copylocation_cell'> </td>
+ <td name='rdetail_actions_cell'>
+ <div style='padding-bottom: 1px;'>
+ <a style='font-size: 8pt;'
+ name='details' class='hide_me classic_link'>&rdetail.copyInfo.details;</a>
+ </div>
+ <div style='margin-top: 2px;'>
+ <a name='browse' style='font-size: 8pt;'
+ class='hide_me classic_link'>&rdetail.copyInfo.browse;</a>
+ </div>
+ <div style='margin-top: 2px;' name='hold_div' class='hide_me'>
+ <a name='hold' style='font-size: 8pt;' href='javascript:void(0);'
+ class='classic_link'>&rdetail.copyInfo.hold;</a>
+ </div>
+ </td>
+ <td nowrap='nowrap' class='rdetail_copy_count_cell vertical'
+ name='rdetail_copy_count_cell'> </td>
+ </tr>
+
+ <tr id='rdetail_copy_info_loading'><td>&rdetail.loading;</td></tr>
+
+ </tbody>
+ </table>
+
+ <!--
+ <table class='hide_me'>
+ <tbody>
+ <tr style='border: 3px solid #E0E0E0;' id='rdetail_volume_details_row'><td colspan='10'></td></tr>
+ </tbody>
+ </table>
+ -->
+
+ <br/><br/>
+
+ <div id='rdetail_copy_info_none' class='hide_me'>&rdetail.noneAvailable;</div>
+
+</div> <!-- copy info -->
+<![CDATA[<!-- ****************** end: rdetail_copyinfo.xml ***************************** -->]]>
--- /dev/null
+<![CDATA[<!-- ****************** rdetail_extras.xml ***************************** -->]]>
+<div xmlns:xi="http://www.w3.org/2001/XInclude" id="rdetail_main_div" class="">
+ <table class='hide_me rdetails_extra_links'>
+ <thead>
+ <tr>
+ <td id='rdetail_annotation_link' class='hide_me rdetail_extras_td'
+ style='padding-right: 15px; padding-left: 15px;' >
+ <a href='javascript:rdetailShowExtra("annotation");'
+ class='classic_link'>&rdetail.extras.annotation;</a>
+ </td>
+ </tr>
+ </thead>
+ </table>
+
+ <div id='rdetail_extras_div' style='width: 100%;'>
+ <div id='rdetail_extras_loading' class='hide_me' style='padding: 10px;'>&common.loading;</div>
+ <div rel="rdetail_summary_div" rel2="summary" class="rdetail_extras hide_me" id="rdetail_summary_link"><div class="rdetail_extras_hr"></div>
+ <div class="rdetail_extras_link">
+ <a href='javascript:rdetailShowExtra("summary");'><img alt="" id="rdetail_summary_div_arrow" src="/opac/skin/kcls/graphics/rdetail_arrow.png" /></a>
+ <a href='javascript:rdetailShowExtra("summary");' class="rdetail_extras_lbl">Summaries & More</a>
+ </div>
+ </div>
+ <div id='rdetail_summary_div' class='rdetail_extras_div hide_me'>
+ <table style="margin-bottom:10px;" cellpadding="0" cellspacing="0" border="0"><tr><td width="1" style="padding-right:7px;" valign="top"><strong>Summary: </strong></td><td><div id='rdetail_summary_container'></div></td></tr></table>
+ <iframe width="100%" height="400" id="content_cafe_summary" frameborder="0" />
+ </div>
+
+ <div rel="rdetail_subject_div" rel2="subject" class="rdetail_extras hide_me" id="rdetail_subject_link"><div class="rdetail_extras_hr"></div>
+ <div class="rdetail_extras_link">
+ <a href='javascript:rdetailShowExtra("subject");'><img alt="" id="rdetail_subject_div_arrow" src="/opac/skin/kcls/graphics/rdetail_arrow.png" /></a>
+ <a href='javascript:rdetailShowExtra("subject");' class="rdetail_extras_lbl">subject</a>
+ </div>
+ </div>
+ <div id='rdetail_subject_div' class='rdetail_extras_div hide_me'>
+ <table cellpadding="0" cellspacing="0" border="0"><tr id="subject_lbl" class="hide_me"><td width="1" style="padding-right:7px;" valign="top"><strong>Subject: </strong></td><td valign="top"><div id='rdetail_subject_container'></div></td></tr>
+ <tr class="hide_me" id="genre_lbl"><td width="1" style="padding:10px 7px 0px 0px;" valign="top"><strong>Genre: </strong></td><td valign="top" style="padding-top:10px;"><div id='rdetail_genre_cont'></div></td></tr>
+ <tr class="hide_me" id="topic_lbl"><td width="1" style="padding:10px 7px 0px 0px;white-space:nowrap;" nowrap="nowrap" valign="top"><strong>Topic Heading: </strong></td><td valign="top" style="padding-top:10px;"><div id='rdetail_topic_cont'></div></td></tr>
+ <tr class="hide_me" id="geo_set_lbl"><td width="1" style="padding:10px 7px 0px 0px;white-space:nowrap;" nowrap="nowrap" valign="top"><strong>Geographic Setting: </strong></td><td valign="top" style="padding-top:10px;"><div id='rdetail_geo_cont'></div></td></tr>
+ <tr class="hide_me" id="bio_sub_lbl"><td width="1" style="padding:10px 7px 0px 0px;white-space:nowrap;" nowrap="nowrap" valign="top"><strong>Biographical Subject: </strong></td><td valign="top" style="padding-top:10px;"><div id='rdetail_bio_cont'></div></td></tr>
+ <tr class="hide_me" id="char_attrib_lbl"><td width="1" style="padding:10px 7px 0px 0px;white-space:nowrap;" nowrap="nowrap" valign="top"><strong>Character Attributes: </strong></td><td valign="top" style="padding-top:10px;"><div id='rdetail_attrib_cont'></div></td></tr>
+ <tr class="hide_me" id="setting_lbl"><td width="1" style="padding:10px 7px 0px 0px;" valign="top"><strong>Setting: </strong></td><td valign="top" style="padding-top:10px;"><div id='rdetail_setting_cont'></div></td></tr>
+ <tr class="hide_me" id="time_lbl"><td width="1" style="padding:10px 7px 0px 0px;white-space:nowrap;" nowrap="nowrap" valign="top"><strong>Time Period: </strong></td><td valign="top" style="padding-top:10px;"><div id='rdetail_time_cont'></div></td></tr>
+ </table>
+ </div>
+
+ <div rel="rdetail_content_div" rel2="content" class="rdetail_extras hide_me" id="rdetail_content_link"><div class="rdetail_extras_hr"></div>
+ <div class="rdetail_extras_link">
+ <a href='javascript:rdetailShowExtra("content");'><img alt="" id="rdetail_content_div_arrow" src="/opac/skin/kcls/graphics/rdetail_arrow.png" /></a>
+ <a href='javascript:rdetailShowExtra("content");' class="rdetail_extras_lbl">Contents</a>
+ </div>
+ </div>
+ <div id='rdetail_content_div' class='rdetail_extras_div hide_me'>
+ <strong>Contents:</strong><div id='rdetail_content_div_inner' style="padding-bottom:10px;"></div>
+ <strong>&rdetail.extras.toc;:</strong><div id='rdetail_toc_div' class='rdetail_extras_div'></div>
+ </div>
+
+ <div rel="rdetail_authors_div" rel2="authors" class="rdetail_extras hide_me" id="rdetail_authors_link"><div class="rdetail_extras_hr"></div>
+ <div class="rdetail_extras_link">
+ <a href='javascript:rdetailShowExtra("authors");'><img alt="" id="rdetail_authors_div_arrow" src="/opac/skin/kcls/graphics/rdetail_arrow.png" /></a>
+ <a href='javascript:rdetailShowExtra("authors");' class="rdetail_extras_lbl">Author</a>
+ </div>
+ </div>
+ <div id='rdetail_authors_div' class='rdetail_extras_div hide_me'>
+ <table cellpadding="0" cellspacing="0" border="0"><tr id="authors_lbl" class="hide_me"><td width="1" style="padding-right:7px;" valign="top"><strong>Authors:</strong></td><td valign="top"><div id="rdetail_authors_inner"></div></td></tr>
+ <tr id="add_authors_lbl" class="hide_me"><td width="1" style="padding:10px 7px 0px 0px;white-space:nowrap;" nowrap="nowrap" valign="top"><strong>Added Authors:</strong></td><td valign="top" style="padding-top:10px;"><div id="rdetail_moar_authors"></div></td></tr>
+ <tr id="credits_lbl" class="hide_me"><td width="1" style="padding:10px 7px 0px 0px;white-space:nowrap;" nowrap="nowrap" valign="top"><strong>Credits:</strong></td><td valign="top" style="padding-top:10px;"><div id="rdetail_credits"></div></td></tr>
+ <tr id="cast_lbl" class="hide_me"><td width="1" style="padding:10px 7px 0px 0px;white-space:nowrap;" nowrap="nowrap" valign="top"><strong>Cast:</strong></td><td valign="top" style="padding-top:10px;"><div id="rdetail_cast"></div></td></tr>
+ <tr id="author_notes_lbl" class="hide_me"><td width="1" style="padding:10px 7px 0px 0px;white-space:nowrap;" nowrap="nowrap" valign="top"><strong>Author Notes:</strong></td><td valign="top" style="padding-top:10px;"><div id='rdetail_anotes_div' class='rdetail_extras_div'> </div></td></tr></table>
+ </div>
+
+ <div rel="rdetail_series_div" rel2="series" class="rdetail_extras hide_me" id="rdetail_series_link"><div class="rdetail_extras_hr"></div>
+ <div class="rdetail_extras_link">
+ <a href='javascript:rdetailShowExtra("series");'><img alt="" id="rdetail_series_div_arrow" src="/opac/skin/kcls/graphics/rdetail_arrow.png" /></a>
+ <a href='javascript:rdetailShowExtra("series");' class="rdetail_extras_lbl">series</a>
+ </div>
+ </div>
+ <div id='rdetail_series_div' class='rdetail_extras_div hide_me'>
+ <strong>Series:</strong><div id='rdetail_series_container'></div>
+ </div>
+
+ <div rel="rdetail_awards_div" rel2="awards" class="rdetail_extras hide_me" id="rdetail_awards_link"><div class="rdetail_extras_hr"></div>
+ <div class="rdetail_extras_link">
+ <a href='javascript:rdetailShowExtra("awards");'><img alt="" id="rdetail_awards_div_arrow" src="/opac/skin/kcls/graphics/rdetail_arrow.png" /></a>
+ <a href='javascript:rdetailShowExtra("awards");' class="rdetail_extras_lbl">awards, reviews & suggested reads</a>
+ </div>
+ </div>
+ <div id='rdetail_awards_div' class='rdetail_extras_div hide_me'>
+ <div id="rdetail_awards_cont_lbl" class="hide_me"><strong>Awards:</strong> <div id='rdetail_awards_cont' style="margin-bottom:20px;"></div></div>
+ <div id="rdetail_chilifresh_lbl" class="hide_me"><strong>Patron Reviews:</strong><div id='rdetail_chilifresh_reviews' class='hide_me' style="margin-bottom:20px;">
+ <div id='chilifreshReviewLink' name='chilifreshReviewLink' class='chili_review'></div>
+ <div id='chilifreshReviewResult' name='chilifreshReviewResult' style='display:none'></div>
+ </div></div>
+ <div id="rdetail_reviews_lbl" class="hide_me"><strong>Reviews:</strong><div id='rdetail_review_container' style="margin-bottom:20px;"></div></div>
+ <div id="rdetail_novelist_lbl" class="hide_me"><strong><!-- Suggested Reads: --></strong><div id='rdetail_novelist_div' class='rdetail_extras_div'>
+ <div id="NoveListSelect" class="NoveListSelect">
+ <div id="NoveListAnchor" class="NoveListSelect"></div>
+ <div id="novsuggestions"></div>
+ <div id="nextreads"></div>
+ <div id="novrelatedauthors"></div>
+ <div id="novrelateditems"></div>
+ <div style="clear:both;"></div>
+ </div>
+ </div></div>
+ </div>
+
+ <div rel="rdetail_reviews_div" rel2="reviews" class="rdetail_extras hide_me" id="rdetail_reviews_link"><div class="rdetail_extras_hr"></div>
+ <div class="rdetail_extras_link">
+ <a href='javascript:rdetailShowExtra("reviews");'><img alt="" id="rdetail_reviews_div_arrow" src="/opac/skin/kcls/graphics/rdetail_arrow.png" /></a>
+ <a href='javascript:rdetailShowExtra("reviews");' class="rdetail_extras_lbl">&rdetail.extras.reviews;</a>
+ </div>
+ </div>
+ <div id='rdetail_reviews_div' class='rdetail_extras_div hide_me'> </div>
+
+ <div rel="rdetail_excerpt_div" rel2="excerpt" class="rdetail_extras hide_me" id="rdetail_excerpt_link"><div class="rdetail_extras_hr"></div>
+ <div class="rdetail_extras_link">
+ <a href='javascript:rdetailShowExtra("excerpt");'><img alt="" id="rdetail_excerpt_div_arrow" src="/opac/skin/kcls/graphics/rdetail_arrow.png" /></a>
+ <a href='javascript:rdetailShowExtra("excerpt");' class="rdetail_extras_lbl">&rdetail.extras.excerpt;</a>
+ </div>
+ </div>
+ <div id='rdetail_excerpt_div' class='rdetail_extras_div hide_me'> </div>
+
+ <div rel="rdetail_details_div" rel2="details" class="rdetail_extras hide_me" id="rdetail_details_link"><div class="rdetail_extras_hr"></div>
+ <div class="rdetail_extras_link">
+ <a href='javascript:rdetailShowExtra("details");'><img alt="" id="rdetail_details_div_arrow" src="/opac/skin/kcls/graphics/rdetail_arrow.png" /></a>
+ <a href='javascript:rdetailShowExtra("details");' class="rdetail_extras_lbl">detailed description</a>
+ </div>
+ </div>
+ <div id='rdetail_details_div' class='rdetail_extras_div hide_me'><![CDATA[
+ <div class="hide_me" id="add_title_lbl" style="padding-bottom:7px;"><strong>Added Title:</strong> <div id="added_title"></div></div>
+ <div class="hide_me" id="edition_lbl" style="padding-bottom:7px;"><strong>Edition:</strong> <span id="rdetail_edition"></span></div>
+ <div class="hide_me" id="note_lbl" style="padding-bottom:7px;"><strong>Note:</strong> <span id="rdetail_note"></span></div>
+ <div class="hide_me" id="lang_lbl" style="padding-bottom:7px;"><strong>Language:</strong> <span id="rdetail_lang"></span></div>
+ <div class="hide_me" id="comp_note_lbl" style="padding-bottom:7px;"><strong>Computer File Note:</strong> <span id="comp_file_note"></span></div>
+ <div class="hide_me" id="sys_detail_lbl" style="padding-bottom:7px;"><strong>System Details:</strong> <span id="sys_details"></span></div>
+ <div class="hide_me" id="map_scale_lbl" style="padding-bottom:7px;"><strong>Scale Note for Maps:</strong> <span id="map_scale_note"></span></div>
+ <div class="hide_me" id="event_lbl" style="padding-bottom:7px;"><strong>Event:</strong> <span id="rdetail_event"></span></div>
+ <div class="hide_me" id="audience_lbl" style="padding-bottom:7px;"><strong>Audience:</strong> <span id="audience"></span></div>
+ <div class="hide_me" id="phys_form_lbl" style="padding-bottom:7px;"><strong>Additional Physical Form:</strong> <span id="phys_form"></span></div>
+ <div class="hide_me" id="biblio_lbl" style="padding-bottom:7px;"><strong>Bibliography:</strong> <span id="rdetail_biblio"></span></div>
+ <div class="hide_me" id="local_note_lbl" style="padding-bottom:7px;"><strong>Local Note:</strong> <span id="local_note"></span></div>
+ <div class="hide_me" id="restrict_lbl" style="padding-bottom:7px;"><strong>Restrictions on Access</strong> <span id="restrictions"></span></div>
+ <div class="hide_me" id="continues_lbl" style="padding-bottom:7px;"><strong>Continues</strong> <span id="continues"></span></div>
+ <div class="hide_me" id="cont_by_lbl" style="padding-bottom:7px;"><strong>Continued by:</strong> <span id="cont_by"></span></div> ]]>
+ </div>
+
+ <div rel="rdetail_preview_div" rel2="preview" class="rdetail_extras hide_me" id="rdetail_preview_link"><div class="rdetail_extras_hr"></div>
+ <div class="rdetail_extras_link">
+ <a href='javascript:rdetailShowExtra("preview");'><img alt="" id="rdetail_preview_div_arrow" src="/opac/skin/kcls/graphics/rdetail_arrow.png" /></a>
+ <a href='javascript:rdetailShowExtra("preview");' class="rdetail_extras_lbl">&rdetail.extras.preview;</a>
+ </div>
+ </div>
+ <div id='rdetail_preview_div' class='rdetail_extras_div hide_me'> </div>
+
+ <div rel="rdetail_novelist_div" rel2="novelist" class="rdetail_extras hide_me" id="rdetail_novelist_link"><div class="rdetail_extras_hr"></div>
+ <div class="rdetail_extras_link">
+ <a href='javascript:rdetailShowExtra("novelist");'><img alt="" id="rdetail_novelist_div_arrow" src="/opac/skin/kcls/graphics/rdetail_arrow.png" /></a>
+ <a href='javascript:rdetailShowExtra("novelist");' class="rdetail_extras_lbl">&rdetail.extras.novelist;</a>
+ </div>
+ </div>
+
+ <div rel="rdetail_cn_browse_div" rel2="cn" class="rdetail_extras" id="rdetail_viewcn_link"><div class="rdetail_extras_hr"></div>
+ <div class="rdetail_extras_link">
+ <a href='javascript:rdetailShowExtra("cn");'><img alt="" id="rdetail_cn_browse_div_arrow" src="/opac/skin/kcls/graphics/rdetail_arrow.png" /></a>
+ <a href='javascript:rdetailShowExtra("cn");' class="rdetail_extras_lbl">&rdetail.extras.browser;</a>
+ </div>
+ </div>
+ <div id='rdetail_cn_browse_div' style='text-align: center;' class='hide_me'>
+ <div id='cn_browse_none' class='hide_me color_4' style='width: 90%; text-align: center; margin: 10px;'>
+ &rdetail.extras.call.null;
+ </div>
+
+ <div id='rdetail_cn_browse_select_div'
+ style='width: 100%; border: 1px solid black; padding: 6px; margin-top: 5px;'>
+ <span>&rdetail.extras.call.local; </span>
+ <select id='cn_browse_selector'> </select>
+ </div>
+ <!--#include virtual="../common/cn_browse.xml"-->
+ </div>
+
+ <!--#include virtual="rdetail_cn_details.xml"-->
+
+ <div rel="rdetail_copy_info_div" rel2="copyinfo" class="rdetail_extras" id="rdetail_copy_info_link"><div class="rdetail_extras_hr"></div>
+ <div class="rdetail_extras_link">
+ <a href='javascript:rdetailShowExtra("copyinfo");'><img alt="" id="rdetail_copy_info_div_arrow" src="/opac/skin/kcls/graphics/rdetail_arrow.png" /></a>
+ <a href='javascript:rdetailShowExtra("copyinfo");' class="rdetail_extras_lbl">&rdetail.extras.summary;</a>
+ </div>
+ </div>
+ <!--#include virtual="rdetail_copyinfo.xml"-->
+
+ <div rel="rdetail_marc_div" rel2="marc" class="rdetail_extras" id="rdetail_viewmarc_link"><div class="rdetail_extras_hr"></div>
+ <div class="rdetail_extras_link">
+ <a href='javascript:rdetailShowExtra("marc");'><img alt="" id="rdetail_marc_div_arrow" src="/opac/skin/kcls/graphics/rdetail_arrow.png" /></a>
+ <a href='javascript:rdetailShowExtra("marc");' class="rdetail_extras_lbl">&rdetail.extras.marc;</a>
+ </div>
+ </div>
+ <div id='rdetail_marc_div' class='rdetail_extras_div hide_me'>
+ <div id='rdetail_view_marc_box'> </div>
+ </div>
+ </div>
+ <!-- Text for dynamic JavaScript -->
+ <div id='rdetail_preview_full_text' class='hide_me'>&rdetail.extras.preview.fulltext;</div>
+ <div id='rdetail_preview_title' class='hide_me'>&rdetail.extras.preview.title;</div>
+ <div id='rdetail_preview_badge' class='hide_me'>&rdetail.extras.preview.badge;</div>
+</div>
+
+ <!-- Novelist setup -->
+ <!--if expr="${OILS_NOVELIST_URL} && ${OILS_NOVELIST_URL}!='(none)'"-->
+ <!--endif-->
+
+<![CDATA[<!-- ****************** end: rdetail_extras.xml ***************************** -->]]>
--- /dev/null
+<![CDATA[<!-- ****************** rdetail_summary.xml ***************************** -->]]>
+<abbr class="unapi-id" title='tag:<!--#echo var="HTTP_HOST"-->,<!--#echo var="OILS_TIME_YEAR"-->:biblio-record_entry/<!--#echo var="OILS_OPAC_RID"-->'></abbr>
+<!-- This holds the record summary information -->
+
+<table width="100%" border="0" cellpadding="0" cellspacing="0" id="rdetail_details_table">
+ <tbody id="rdetail_details_tbody"><tr>
+ <td width="90" valign="top" id="rdetail_image_cell">
+ <a id='rdetail_img_link' href='javascript:;' class="hide_me"><img alt="Image of item" style='border: none;' id='rdetail_image' src='' onload='unHideMe($("rdetail_img_link"))' onerror='hideMe($("rdetail.jacket_attrib_div"));hideMe($("rdetail_img_link"));'/></a><br />
+ <div class='jacket_attrib hide_me' id='rdetail.jacket_attrib_div'>
+ <div>&opac.image_provided;</div>
+ <div><a target='_blank' href='&vendor.base_link;' class='classic_link' id='rdetail.jacket_attrib_link'>&vendor.name;</a></div>
+ </div>
+ </td>
+
+ <td valign="top">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr><td valign="top">
+ <span class="rdetail_item" id='rdetail_title'></span>
+ <span style="color:#545454;" id="author_lbl" class="hide_me">&common.author;: </span> <em id='rdetail_author'></em>
+ <div><table cellpadding="0" cellspacing="0" border="0"><tr><td nowrap="nowrap" style="white-space:nowrap;" valign="top"><strong id="online_res_lbl" class="hide_me">Online Resources: <![CDATA[ ]]></strong></td><td id="online_resources"> </td></tr></table></div>
+ </td>
+ <td align="right" valign="top" nowrap="nowrap" style="white-space:nowrap;">
+ <div style="width:230px;text-align:left;margin-top:3px;"><div style="float:right;">
+ <div style="border-bottom:1px dotted #ccc;padding-top:10px;" class="rdetail_aux_utils"><a href="javascript:;" id="rdetail_place_hold"><img src="/opac/skin/kcls/graphics/green_check.png" alt="place hold" /> <span style="position:relative;top:-3px;left:3px;">Place Hold</span></a></div>
+ <div style="padding-top:6px;" class="rdetail_aux_utils"><div style="position:absolute;"><div style="position:relative;top:5px; left: 25px;"><a title="Add to my list" id="add_mylist" href="javascript:addMyList();">Add to my list</a></div></div><a href="javascript:addMyList();"><img alt="add to my list" src="/opac/skin/kcls/graphics/clipboard.png" /></a></div>
+ </div>
+ <div style="float:right;margin-right:17px;"><img id="rdetail_tor_pic" alt="Format" class="hide_me" src="" /></div></div>
+ </td></tr>
+ </table>
+ <div style="border-top: 1px dotted #ccc;padding-top:17px;">
+ <table border="0" cellpadding="0" width="100%">
+ <tr>
+ <td valign="top" width="50%">
+
+ <table cellpadding="0" cellspacing="0" border="0"><tr><td valign="top" nowrap="nowrap" style="white-space:nowrap;"><strong id="rd_isbn_lbl" class="hide_me">ISBN:<![CDATA[ ]]></strong></td><td><span id="rdetail_isbn"></span></td></tr></table>
+
+ <table cellpadding="0" cellspacing="0" border="0"><tr><td valign="top" nowrap="nowrap" style="white-space:nowrap;"><strong id="edition_lbl" class="hide_me">Edition:<![CDATA[ ]]></strong></td><td><span id="rdetail_edition"></span></td></tr></table>
+
+ <table cellpadding="0" cellspacing="0" border="0"><tr><td valign="top" nowrap="nowrap" style="white-space:nowrap;"><strong id="callnum_lbl" class="hide_me">&common.callnumber;:<![CDATA[ ]]></strong></td><td><span id="rdetail_callnum"></span></td></tr></table>
+ <table cellpadding="0" cellspacing="0" border="0"><tr><td valign="top" nowrap="nowrap" style="white-space:nowrap;"><strong id="pubdate_lbl" class="hide_me">&common.pubdate;:<![CDATA[ ]]></strong></td><td><span id="rdetail_pubdate"></span></td></tr></table>
+ </td>
+ <td valign="top" width="50%">
+ <table cellpadding="0" cellspacing="0" border="0"><tr><td valign="top" nowrap="nowrap" style="white-space:nowrap;"><strong id="phys_desc_lbl" class="hide_me">&common.physical;:<![CDATA[ ]]></strong></td><td><span id="rdetail_physical_desc"></span></td></tr></table>
+ <table cellpadding="0" cellspacing="0" border="0"><tr><td valign="top" nowrap="nowrap" style="white-space:nowrap;"><strong id="publisher_lbl" class="hide_me">&common.publisher;:<![CDATA[ ]]></strong></td><td><span id="rdetail_publisher"></span></td></tr></table>
+ </td>
+ </tr>
+ </table>
+ <div style="padding-top:15px;" id="rdetail_copies_avail"></div>
+ </div>
+ </td>
+ </tr></tbody>
+</table>
+<br /><br />
+
+
+
+
+
+<table cellpadding="0" cellspacing="0" border="0" width="100%" id="rdetails_status" class="hide_me">
+ <tr id="rdetails_status_head">
+ <td width="25%">Location</td>
+ <td width="20%">Call Number</td>
+ <td width="18%">Shelving Location</td>
+ <td width="17%">Status</td>
+ <td width="20%">Due Date</td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tbody id="rdetails_status2" class="hide_me">
+ <tr id="rdetails_status_head2">
+ <td width="25%"></td>
+ <td width="20%"></td>
+ <td width="18%"></td>
+ <td width="17%"></td>
+ <td width="20%"></td>
+ </tr>
+ </tbody>
+</table>
+<div style="height:15px;"></div>
+
+<div id="rdetail_locs_expand" class="hide_me"><a href="javascript:;" onclick="expandBoxes('locs',true);"><img src="/opac/skin/kcls/graphics/plus_sign.png" /></a> <a style="position:relative;top:-3px;" href="javascript:;" onclick="expandBoxes('locs',true);">Show more copies</a></div>
+<div id="rdetail_locs_collapse" class="hide_me"><a href="javascript:;" onclick="expandBoxes('locs',false);"><img src="/opac/skin/kcls/graphics/minus_sign.png" /></a> <a style="position:relative;top:-3px;" href="javascript:;" onclick="expandBoxes('locs',false);">Collapse copies</a></div>
+<div id="rdetail_extras_expand"><a href="javascript:;" onclick="expandBoxes('tabs',true);"><img src="/opac/skin/kcls/graphics/plus_sign.png" /></a> <a style="position:relative;top:-3px;" href="javascript:;" onclick="expandBoxes('tabs',true);">Expand all tabs</a></div>
+<div id="rdetail_extras_collapse" class="hide_me"><a href="javascript:;" onclick="expandBoxes('tabs',false);"><img src="/opac/skin/kcls/graphics/minus_sign.png" /></a> <a style="position:relative;top:-3px;" href="javascript:;" onclick="expandBoxes('tabs',false);">Collapse all tabs</a></div>
+
+
+
+<div class="hide_me">
+ <table id='' border="0" width="100%">
+ <tbody id='rdetail_details_tbody'>
+
+ <tr>
+ <td id='' rowspan='2' valign="top" align="center" style="padding-right:10px;"></td>
+ <td class='rdetail_desc' valign="top" colspan="3">
+ <table border="0" width="100%"><tr><td valign="top">
+ <div style="padding-bottom:7px;"><strong>&common.title;:</strong> </div>
+
+ </td><td width="1" valign="top" align="right" style="white-space:nowrap;">
+ <a href="javascript:;" id=''><img alt="Place Hold" src="/opac/skin/kcls/graphics/place_hold.gif" /></a>
+ <a href="javascript:;" id="rd_reviews_and_more" target="_blank"><img alt="Reviews and More" src="/opac/skin/kcls/graphics/reviews.gif" /></a>
+ <a href="javascript:addMyList();" id=""><img alt="Add to My List" src="/opac/skin/kcls/graphics/add_mylist.gif" /></a>
+ </td></tr></table>
+ </td>
+ <!-- *** Example of how to use the openils.BibTemplate infrastructure to augment the stock
+ *** summary screen with more and/or different information. In this case, the raw MARC 245. -->
+ </tr>
+
+ <tr>
+ <td nowrap='nowrap' colspan="3" valign="bottom" style="padding-bottom:16px;"></td>
+ </tr>
+ <tr><td><div style="height:20px;"></div></td></tr>
+
+
+
+ <tr class='hide_me' id='rdetail_online_row'>
+ <!-- *** Example of how to use the openils.BibTemplate infrastructure to augment the stock
+ *** summary screen with complex information, such as location-specific URIs (856$9). -->
+ <td nowrap='nowrap' class='rdetail_desc'>&rdetail.summary.online;
+ <span class='hide_me' type='opac/slot-data' query='datafield[tag=856] subfield[code=9]'>
+ <script type='opac/slot-format'><![CDATA[
+ // There exists at least one localized URI. Clear all links.
+ dojo.query('*:not([type^=opac])', 'rdetail_online').orphan();
+ return '';
+ ]]></script>
+ </span>
+ </td>
+ <td class='rdetail_item' id='rdetail_online' type='opac/slot-data' query='volumes volume uris uri' join=", ">
+ <script type='opac/slot-format'><![CDATA[
+ var link = '<a href="' + item.getAttribute('href') + '">' + item.getAttribute('label') + '</a>';
+ if (item.getAttribute('use_restriction'))
+ link += ' (Use restriction: ' + item.getAttribute('use_restriction') + ')';
+ return link;
+ ]]></script>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <!-- Empty span used for creating unAPI links -->
+ <abbr name="unapi" class="unapi-id">
+ <!-- unAPI URI goes here -->
+ </abbr>
+</div> <!-- details_body -->
+
+ <!-- ChiliFresh setup -->
+ <!--if expr="${OILS_CHILIFRESH_ACCOUNT} && ${OILS_CHILIFRESH_ACCOUNT}!='(none)'"-->
+ <input type="hidden" id="chilifresh_account" name="chilifresh_account"
+ value="<!--#echo var='OILS_CHILIFRESH_ACCOUNT'-->" />
+ <input type="hidden" id="chilifresh_profile" name="chilifresh_profile"
+ value="<!--#echo var='OILS_CHILIFRESH_PROFILE'-->" />
+ <input type="hidden" id="chilifresh_version" name="chilifresh_version" value="onsite_v1" />
+ <input type="hidden" id="chilifresh_type" name="chilifresh_type" value="search" />
+ <!--endif-->
+<![CDATA[<!-- ****************** end: rdetail_summary.xml ***************************** -->]]>
--- /dev/null
+
+<![CDATA[<!-- ****************** filtersort.xml ***************************** -->]]>
+ <select class="results_header_sel" id='opac.result.sort' onchange='searchBarSubmit(true);' style="width:160px;">
+ <option selected='selected' value=''>&result.sort_by;</option>
+ <optgroup label='&result.sort_by.title;'>
+ <option id='opac.result.title.a2z' label='&common.a2z.titla;' value='title.asc'>&common.a2z.title;</option>
+ <option id='opac.result.title.z2a' label='&common.z2a.titla;' value='title.desc'>&common.z2a.title;</option>
+ </optgroup>
+ <optgroup label='&result.sort_by.author;'>
+ <option id='opac.result.author.a2z' label='&common.a2z.author;' value='author.asc'>&common.a2z.author;</option>
+ <option id='opac.result.author.z2a' label='&common.z2a.author;' value='author.desc'>&common.z2a.author;</option>
+ </optgroup>
+ <optgroup label='&result.sort_by.pubdate;'>
+ <option id='opac.result.pubdate.new2old' label='&common.new2old.pubdate;'
+ value='pubdate.desc'>&common.new2old.pubdate;</option>
+ <option id='opac.result.pubdate.old2new' label='&common.old2new.pubdate;'
+ value='pubdate.asc'>&common.old2new.pubdate;</option>
+ </optgroup>
+ </select>
+
+<![CDATA[<!-- ****************** end: filtersort.xml ***************************** -->]]>
--- /dev/null
+<div id='canvas_main' class='canvas' xmlns:xi="http://www.w3.org/2001/XInclude" >
+ <!--#include virtual="result_table.xml"-->
+ <!--#include virtual="result_lowhits.xml"-->
+</div>
--- /dev/null
+<div style="height: 10px;"></div>
+<div id="results_header_nav1">
+ <table cellpadding="0" cellspacing="0" border="0" width="100%"><tr>
+ <td class="h1" width="116">Search Results</td>
+ <td valign="bottom" nowrap="nowrap" width="320" style="white-space:nowrap;" class="hide_me" id="result_numbers1">
+ <span> &common.results; </span>
+ <span id='offset_start' style='font-weight:bold'></span><span><![CDATA[ ]]>- </span>
+ <span id='offset_end' style='font-weight:bold'></span><span><![CDATA[ ]]>&common.of; </span>
+ <span id='result_count' style='font-weight:bold'></span>
+ <span style='padding-left: 6px;'> (page </span>
+ <span id='current_page'></span><span><![CDATA[ ]]>&common.of; </span>
+ <span id='num_pages'></span>)
+ </td>
+ <td align="right" valign="bottom">
+ <span id='start_end_links_span' class='hide_me'>
+ <a class='search_page_nav_link' id='prev_link' title='&rdetail.page.previous;' style="cursor:pointer;"><span class="nav_arrow_fix">◄</span> Previous</a>
+ <span class='hide_me' id='result_info_div' style='padding-left: 11px; padding-right:11px;'>
+ <span id="nav_pages"></span>
+ </span>
+ <a class='search_page_nav_link' id='next_link' title='&rdetail.page.next;' style="cursor:pointer;">Next <span class="nav_arrow_fix">►</span></a>
+ </span>
+ </td>
+ </tr></table>
+</div>
--- /dev/null
+
+<![CDATA[<!-- ****************** result_info.xml ***************************** -->]]>
+<table style='width: 100%;'>
+ <tbody>
+
+ <tr class='color_4'>
+
+ <td style='vertical-align: top;' id='next_prev_links'>
+
+
+ <span class="hide_me">
+ <a class='search_page_nav_link' id='search_home_link' title="&rdetail.page.results;">&rdetail.start;</a>
+ <span class='search_page_nav_link' id='page_numbers'> </span>
+ <a class='search_page_nav_link' id='end_link' title="&rdetail.page.last;">&rdetail.end;</a>
+ </span>
+
+ <span style="float:right;" class="hide_me" id="results_view_span">
+ View: <span id="results_simple_lbl">Simple</span><a id="results_simple_link" class="hide_me" href="javascript:showDetailedInfo(false);">Simple</a> / <span id="results_detail_lbl" class="hide_me">Detailed</span><a id="results_detail_link" href="javascript:showDetailedInfo(true);">Detailed</a>
+ </span>
+ </td>
+
+ <td colspan='5' class="hide_me"
+ style='padding-bottom: 4px; text-align:center; vertical-align: top; border-bottom: 1px solid #E0E0E0;'>
+ <span id='search_info_table' class='hide_me' style='font-size: 8pt;'>
+ <b>&result.info.copies; </b>
+ </span>
+ </td>
+ </tr>
+
+ <tr style='height: 1.1em;' id='result_thead_row'>
+ <td>
+ <div class='hide_me' id='no_formats' style='padding: 4px;'>
+ <b>
+ <span style='color:red;'>*</span>
+ &result.info.no.items;
+ <div>&result.info.format.items;</div>
+ </b>
+ </div>
+
+ <div class='hide_me' id='rresult_show_all' style='padding: 4px;'>
+ <a href='javascript:rresultExpandSearch();' id='rresult_show_all_link'
+ class='classic_link'>&result.info.show; </a>
+ </div>
+
+ <div class='hide_me' id='rresult_show_here' style='padding: 4px;'>
+ <a href='javascript:rresultContractSearch();' id='rresult_show_here_link'
+ class='classic_link'>&result.info.show; </a>
+ </div>
+
+ </td>
+ <td rowspan='2' style='font-size: 8pt; padding-top: 4px;' class='copy_count_cell hide_me'
+ width='12%' align='center' name='result_thead_ccell'> </td>
+ </tr>
+
+ </tbody>
+</table>
+<![CDATA[<!-- ****************** end: result_info.xml ***************************** -->]]>
--- /dev/null
+
+<![CDATA[<!-- ****************** result_lowhits.xml ***************************** -->]]>
+<div id='result_low_hits' class='hide_me'>
+
+ <div id="zero_search_hits" class="hide_me">
+ <div style="float:left;width:300px;margin-top:20px;">
+ <p>Sorry, no entries were found for <strong>"<span id="zero_hits_term"></span>"</strong><br /><span id="zero_hits_label1" class="hide_me">Did you mean <strong><a id="spell_check_link" href="javascript:;"></a></strong>?</span></p>
+ <table cellpadding="0" cellspacing="0" border="0"><tr><td valign="top" style="padding-right:10px;"><span id="zero_hits_label2" class="hide_me">Other Possibilities:</span></td>
+ <td id="zero_hits_suggestions"></td>
+ </tr></table>
+ </div>
+ <div style="float:right;width:353px;background:#ccc;padding:10px;margin-top:7px;">
+ <p><strong>Still not finding what you are looking for?</strong><br />
+ Request that KCLS purchase the material you are looking for by making a <a href="javascript:;">Purchase Request</a><br />
+ <strong>Note:</strong> You must be logged in to make a Purchase Request<br /></p>
+ <p><strong>Keyword Search Tips</strong><br />Change to <strong>Advanced Keyword Search.</strong></p>
+ <p>Adjacency Multiple words are not searched together as a phrase. They will be found in various parts of the record. To search for a phrase, enclose your search terms in quotation marks.<br />(example: <strong>"garcia marquez"</strong>)</p>
+ <p><strong>Truncation</strong><br />
+ Words may be right-hand truncated using an asterisk. Use a single asterisk * to truncate from 1-5 characters. Use a double asterisk ** for open-ended truncation.<br />
+ (example: <strong>environment* agency</strong>)</p>
+ <p><strong>Wildcards</strong><br />
+ You may use a question mark to replace a single character anywhere within a word.<br />example: <strong>wom?</strong>)</p>
+ </div>
+ </div>
+<div class="hide_me">
+ <div style='text-align: center; padding-bottom: 8px;' class="hide_me">
+ <div id='result_low_hits_msg' class='hide_me'>&result.lowhits.few;</div>
+ <div id='result_zero_hits_msg' class='hide_me'>&result.lowhits.zero;</div>
+ </div>
+
+ <!-- spell checker -->
+ <div id='did_you_mean' class='lowhits_div hide_me'>
+ <span>&result.lowhits.did.you.mean; </span>
+ <!-- <a class='classic_link' id='spell_check_link'> </a> -->
+ </div>
+
+ <div id='low_hits_remove_format' class='lowhits_div hide_me'>
+ <span>&result.lowhits.formats; </span>
+ <a id='low_hits_remove_format_link' class='classic_link'>&result.lowhits.formats.search;</a>
+ </div>
+
+ <div id='low_hits_cross_ref' class='lowhits_div hide_me'>
+ <span>&result.lowhits.related;</span>
+ <div style='padding: 5px;'>
+ <a id='low_hits_xref_link' class='classic_link' style='padding-right: 5px;'> </a>
+ </div>
+ </div>
+
+ <div id='low_hits_expand_range' class='lowhits_div hide_me'>
+ <span>&result.lowhits.expand; </span>
+ <a id='low_hits_expand_link' class='classic_link' style='padding-right: 5px;'> </a>
+ </div>
+
+ <div id='low_hits_search_type' class='lowhits_div hide_me'>
+ <span>&result.lowhits.class;</span>
+ <a id='low_hits_title_search' class='hide_me classic_link'
+ style='padding-right: 5px;'>&result.lowhits.title;</a>
+ <a id='low_hits_author_search' class='hide_me classic_link'
+ style='padding-right: 5px;'>&result.lowhits.author;</a>
+ <a id='low_hits_subject_search' class='hide_me classic_link'
+ style='padding-right: 5px;'>&result.lowhits.subject;</a>
+ <a id='low_hits_series_search' class='hide_me classic_link'
+ style='padding-right: 5px;'>&result.lowhits.series;</a>
+ <a id='low_hits_keyword_search' class='hide_me classic_link'
+ style='padding-right: 5px;'>&result.lowhits.keyword;</a>
+ </div>
+</div>
+</div>
+<![CDATA[<!-- ****************** end: result_lowhits.xml ***************************** -->]]>
--- /dev/null
+<!-- Search results are spit into this table -->
+<![CDATA[<!-- ****************** result_table.xml ***************************** -->]]>
+<div id="result_table_div">
+ <table cellpadding="0" cellspacing="0" border="0" width="100%"><tr>
+ <td valign="top" width="1" style=""><!-- padding-right:20px; --><div class="hide_me"><div style="width:174px;" class="hide_me" id="tehSideBar"><!--#include virtual="../common/sidebar.xml"--></div></div></td>
+ <td style="" width="1"><!-- border-left:1px solid #e9ebf3;padding-right:27px; --></td>
+ <td valign="top">
+ <table id="res_table" cellpadding="0" cellspacing="0" border="0" width="100%" style="margin-top:10px;">
+ <tbody id="result_table"><tr id='result_table_template' class='hide_me'>
+ <td class='result_table_row' align='left' width='100%'>
+ <table cellpadding="0" cellspacing="0" border="0" width="100%" class='result_table_subtable' id="results_table" style="border-collapse: collapse;">
+ <tbody class='result_table_subtbody'>
+ <tr name='counts_row'>
+ <td width="58" style="font-weight:bold;padding-left:10px;" valign="top" name="results_row_count">1.</td>
+ <td class='result_table_pic_header' width="78" nowrap="nowrap" valign="top">
+ <span type='opac/slot-data' query='datafield[tag=020] subfield[code=a],datafield[tag=024] subfield[code=a]' templated='true'>
+ <span class='hide_me' type='opac/template-value' name='ident'>
+ var content;
+ for (var i = 0; item_list[i]; i++) {
+ if (content = BT.textContent(item_list[i])) break; /* assignment */
+ }
+ return buildISBNSrc(plausible_ident(content));
+ </span>
+ <a><img alt="Image of item" name='item_jacket' class='result_table_pic' src='${ident}' /></a><br />
+ </span>
+
+ </td>
+ <td class='result_table_title_cell' name='result_table_title_cell' valign="top">
+ <div style="font-weight:bold;"><a title="&result.table.keyword;" name='item_title' class='search_link'></a></div>
+ <span style="font-size:11px;">
+ <div><em><a title="&result.table.author;" name='item_author' class='search_link'></a></em> <![CDATA[ ]]><span name="results_pub_date"></span></div>
+ <table cellpadding="0" cellspacing="0" border="0" class="results_info_table">
+ <tr><td nowrap="nowrap" valign="top" class="hide_me"><strong>Call number:</strong> </td><td> <span name="results_call_num"></span></td></tr>
+<!-- BILL -->
+ <tr name='bib_cn_list' class='result_table_title_cell'>
+ <td colspan='2'>
+ <span><strong>Call number:</strong></span>
+ <span type='opac/slot-data+marcxml' query='datafield[tag=092]'> </span>
+ <span type='opac/slot-data+marcxml' query='datafield[tag=099]'> </span>
+ <span type='opac/slot-data+marcxml' query='datafield[tag=998] subfield[code=d]' class='hide_me'>
+ <span type='opac/call-back+pre-render' class='hide_me'>
+ var mattype = dojox.xml.parser.textContent(item_list[0]);
+ var node = dojo.query('[name=result_mat_type]', /*OMG, must be better way*/
+ slot.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode)[0];
+ setFormatIcon(node, mattype);
+ </span>
+ </span>
+ </td>
+ </tr>
+<!-- BILL -->
+ <tr name="results_pub_tr" class="hide_me"><td valign="top"><strong>Publisher:</strong> </td><td> <span name="results_pub"></span></td></tr>
+ <tr name="results_isbn_tr" class="hide_me"><td valign="top"><strong>ISBN:</strong> </td><td> <span name="results_isbn"></span></td></tr>
+ <tr name="results_edition_tr" class="hide_me"><td valign="top"><strong>Edition:</strong> </td><td> <span name="results_edition"></span></td></tr>
+ <tr name="results_phys_desc_tr" class="hide_me"><td nowrap="nowrap" valign="top"><strong>Phys. Desc.:</strong> </td><td> <span name="results_phys_desc"></span></td></tr>
+ </table>
+ <div><span name="copy_holds"></span> <span name="copy_holds2"></span><br /><span name="copy_count_avail"></span> <!-- of <span name="copy_count"></span> on <span name="copy_count_total"></span> copies available--></div>
+ </span>
+
+ <div class="hide_me">
+ <span name='result_table_extra_span' class='hide_me'>
+ <span name='result_table_pub_box' style='padding-left: 10px;'>
+ <span name='result_table_edition_span' style='padding-left: 10px;'></span> |
+ <span name='result_table_pub_span'> </span> |
+ <span name='result_table_phys_span'> </span>
+ </span>
+ </span>
+ </div>
+ </td>
+
+ <!-- Copy this td for each copy count appended -->
+ <td nowrap='nowrap' name="copy_count_cell" class='copy_count_cell hide_me' width="1"> </td>
+
+ <td name='result_table_format_cell' class='result_table_format_cell' align="center" width="1" style="padding:0px 10px;">
+
+ <img alt="Format" src="" class="hide_me" name="" />
+ <span class='hide_me'
+ style='color: #9999FF; padding-left: 10px; font-size: 7pt; font-weight: 300;'>
+ <span>&common.relevancy; </span><span name='relevancy_span'> </span>
+ </span>
+
+ <!-- Empty span used for creating unAPI links -->
+ <span class="hide_me">
+ <abbr style='padding-left: 8px;' name="unapi" class="unapi-id">
+ <!-- unAPI URI goes here -->
+ </abbr>
+ </span>
+
+ <!-- Empty span used for creating Google Book Search-->
+ <span name="googleBooksLink" class="hide_me">
+ <a style='padding-left: 8px;' class='classic_link hide_me' name="googleBooks-link">&result.googleBooks.browse;</a>
+ </span>
+ </td>
+ <td nowrap='nowrap' width="1" align="right">
+ <div style="width:250px;text-align:left;"><div style="float:right;">
+ <div style="border-bottom:1px dotted #ccc;padding-top:10px;" class="results_aux_utils"><a href="javascript:;" name="place_hold_link"><img src="/opac/skin/kcls/graphics/green_check.png" alt="place hold" /> <span style="position:relative;top:-3px;left:3px;">Place Hold</span></a></div>
+ <div style="border-bottom:1px dotted #ccc;padding-top:6px;" class="results_aux_utils"><div style="position:absolute;"><div style="position:relative;top:5px; left: 25px;"><a title="Add to my list" name="result_my_list_link" href="javascript:;">Add to my list</a></div></div><a href="javascript:;" name="result_my_list_link_img"><img alt="add to my list" src="/opac/skin/kcls/graphics/clipboard.png" /></a></div>
+ <div style="padding-top:7px;" class="results_aux_utils"><a title="Reviews and More" target="_blank" name="reviews_and_more" href="javascript:;"><img alt="reviews & more" src="/opac/skin/kcls/graphics/starz.png" /> <span style="position:relative;top:-5px;">Reviews & More</span></a></div>
+ </div>
+ <div style="float:right;margin-right:17px;"><img alt="Format" class="hide_me" src="" name="result_mat_type" /></div></div>
+ </td>
+ </tr>
+
+ <!-- Placeholder for ChiliFresh Review -->
+ <tr class="hide_me" name="chilifreshReview">
+ <td></td>
+ <td valign="top" colspan="5">
+ <div style="position:relative;left:-19px;">
+ <span name="chilifreshReviewLink" class="chili_review"></span>
+ <div name="chilifreshReviewResult" style="display:none"></div>
+ </div>
+ </td>
+ </tr>
+
+ <tr><td colspan="5"><div style="height:0px;border-top:1px solid #b7b7b7;border-bottom:1px solid #d4d4d4;margin:15px 0px;"></div><!-- <hr style="border-bottom:none;*height:0px;" color="#FFCC33" /> --></td></tr>
+ </tbody>
+ </table>
+ </td>
+ </tr></tbody>
+ </table>
+ </td>
+ </tr></table>
+</div>
+
+
+
+<div id='' xmlns:xi="http://www.w3.org/2001/XInclude" class="">
+
+ <table id='' style="width:100%;">
+ <tbody id=''>
+ <tr class="hide_me">
+ <td class='result_table_row' width="100%">
+ <!--#include virtual="result_info.xml"-->
+ </td>
+ </tr>
+
+ <!-- Template for displaying a search result. This row template is cloned and inserted
+ for each result returned -->
+
+
+ </tbody>
+ </table>
+
+ <!-- ====================== -->
+ <div class="">
+ <table style='width: 100%;margin-top:20px;border-top:1px dotted #ccc;padding-top:8px;' id='result_info_2' class='hide_me'>
+ <tbody>
+ <tr>
+ <td valign="top">
+ <span class='hide_me' id='result_info_div2' style='font-size: 11px;'>
+ <span> &common.results; </span>
+ <b id='offset_start2'> </b><span><![CDATA[ ]]>- </span>
+ <b id='offset_end2'> </b><span><![CDATA[ ]]>&common.of; </span>
+ <b id='result_count2'> </b>
+ <span style='padding-left: 6px;'> (page </span>
+ <span id='current_page2'> </span><span><![CDATA[ ]]>&common.of; </span>
+ <span id='num_pages2'> </span>
+ </span>
+ </td>
+ <td valign="top" id='next_prev_links2' align="right">
+ <span id='start_end_links_span2' class='hide_me'>
+ <a class='search_page_nav_link' id='prev_link2' title='&rdetail.page.previous;' style="cursor:pointer;"><span class="nav_arrow_fix">◄</span> Previous</a>
+ <span id="nav_pages2" style='padding-left: 11px; padding-right:13px;'></span>
+ <a class='search_page_nav_link' id='next_link2' title='&rdetail.page.next;' style="cursor:pointer;">Next <span class="nav_arrow_fix">►</span></a>
+ </span>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <!-- ====================== -->
+
+
+ <!-- ChiliFresh setup -->
+ <!--if expr="${OILS_CHILIFRESH_ACCOUNT} && ${OILS_CHILIFRESH_ACCOUNT}!='(none)'"-->
+ <input type="hidden" id="chilifresh_account" name="chilifresh_account"
+ value="<!--#echo var='OILS_CHILIFRESH_ACCOUNT'-->" />
+ <input type="hidden" id="chilifresh_profile" name="chilifresh_profile"
+ value="<!--#echo var='OILS_CHILIFRESH_PROFILE'-->" />
+ <input type="hidden" id="chilifresh_version" name="chilifresh_version" value="onsite_v1" />
+ <input type="hidden" id="chilifresh_type" name="chilifresh_type" value="search" />
+ <!--endif-->
+</div>
+<![CDATA[<!-- ****************** end: result_table.xml ***************************** -->]]>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Loads the environment -->
+<!--#include virtual="setenv.xml"-->
+
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [
+ <!--#include virtual="/opac/locale/${locale}/opac.dtd"-->
+]>
+
+
+<html xmlns='http://www.w3.org/1999/xhtml'>
+ <!--#include virtual="header.xml"-->
+ <!--#if expr="$OILS_PAGE='index.xml'"-->
+ <!--#include virtual="home/index_body.xml"-->
+ <!--#else-->
+ <!--#include virtual="body.xml"-->
+ <!--#endif-->
+</html>
+
--- /dev/null
+<!-- Sets our environment variables for convenience and determining which page we're on -->
+
+<!--#set var='OILS_PAGE' value="$DOCUMENT_NAME"-->
+
+<!--#if expr="$DOCUMENT_NAME='index.xml'"-->
+ <!--#set var='OILS_TITLE' value='opac.title.home'-->
+ <!--#set var='FRONT_PAGE' value='true'-->
+
+<!--#elif expr="$DOCUMENT_NAME='mresult.xml'"-->
+ <!--#set var='OILS_TITLE' value='opac.title.mresult'-->
+
+
+<!--#elif expr="$DOCUMENT_NAME='rresult.xml'"-->
+ <!--#set var='OILS_TITLE' value='opac.title.rresult'-->
+
+<!--#elif expr="$DOCUMENT_NAME='rdetail.xml'"-->
+ <!--#set var='OILS_TITLE' value='opac.title.rdetail'-->
+
+<!--#elif expr="$DOCUMENT_NAME='myopac.xml'"-->
+ <!--#set var='OILS_TITLE' value='opac.title.myopac'-->
+
+<!--#elif expr="$DOCUMENT_NAME='advanced.xml'"-->
+ <!--#set var='OILS_TITLE' value='opac.title.advanced'-->
+
+<!--#elif expr="$DOCUMENT_NAME='reqitems.xml'"-->
+ <!--#set var='OILS_TITLE' value='opac.title.reqitems'-->
+
+<!--#elif expr="$DOCUMENT_NAME='cnbrowse.xml'"-->
+ <!--#set var='OILS_TITLE' value='opac.title.cnbrowse'-->
+
+<!--#endif-->
+
+<!--#if expr="$HTTPS"-->
+ <!--#set var="OILS_PROTOCOL" value="https"-->
+ <!--#if expr="$OILS_OPAC_BYPASS_STATIC_FOR_HTTPS=='yes'"-->
+ <!--#set var="OILS_OPAC_CSS_HOST" value=""-->
+ <!--#set var="OILS_OPAC_JS_HOST" value=""-->
+ <!--#endif-->
+<!--#else-->
+ <!--#set var="OILS_PROTOCOL" value="http"-->
+<!--#endif-->
+
+<!--#if expr="$OILS_OPAC_STATIC_PROTOCOL"-->
+
+<!--#else-->
+ <!--#set var="OILS_OPAC_STATIC_PROTOCOL" value="$OILS_PROTOCOL"-->
+<!--#endif-->
+
+<!--#set var="OILS_BASE" value="${OILS_PROTOCOL}://${SERVER_NAME}${OILS_OPAC_BASE}"-->
+<!--#set var="OILS_XML_BASE" value="${OILS_BASE}common/xml"-->
+
+
+<!-- Javascript host -->
+<!--#if expr="$OILS_OPAC_JS_HOST"-->
+ <!--#set var="OILS_OPAC_JS_HOST" value="${OILS_OPAC_STATIC_PROTOCOL}://${OILS_OPAC_JS_HOST}"-->
+<!--#else -->
+ <!--#set var="OILS_OPAC_JS_HOST" value="$OILS_BASE"-->
+<!--#endif -->
+<!--#set var="OILS_JS_BASE" value="${OILS_OPAC_JS_HOST}common/js"-->
+
+
+<!--#if expr="$OILS_OPAC_CSS_HOST"-->
+ <!--#set var="OILS_OPAC_CSS_HOST" value="${OILS_OPAC_STATIC_PROTOCOL}://${OILS_OPAC_CSS_HOST}"-->
+<!--#else -->
+ <!--#set var="OILS_OPAC_CSS_HOST" value="$OILS_BASE"-->
+<!--#endif -->
+<!--#set var="OILS_THEME_BASE" value="${OILS_OPAC_CSS_HOST}theme"-->
+<!--#set var="OILS_SKIN_BASE" value="${OILS_OPAC_CSS_HOST}skin"-->
+<!--#set var="OILS_CSS_BASE" value="${OILS_OPAC_CSS_HOST}common/css"-->
+
+
+<!--#if expr="!$locale || $locale=''"-->
+ <!--#set var="locale" value="en-US"-->
+<!--#endif-->
--- /dev/null
+
+<![CDATA[<!-- ****************** top_nav.xml ***************************** -->]]>
+<div id="header">
+ <div style="float:left;"><a href="http://www.kcls.org"><img alt="KCLS Logo" src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/KCLS_logo_horiz.gif" /></a></div>
+ <div style="float:right;">
+ <div id="your-acct-login" class="hide_me"><a href="javascript:void(0);" id="home_myopac_link"><img alt="Your Account Log in" src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/login-btn.png" onmouseover="this.src='<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/login-btn-hover.png';" onmouseout="this.src='<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/login-btn.png';" /></a></div>
+
+ <div id="dash_wrapper" class="hide_me">
+ <div style="float:right;">
+ <table cellpadding="0" cellspacing="0" border="0"><tr>
+ <td><img src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/dash-corner-left1.png" /></td>
+ <td valign="top" style="background:url('<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/dash-corner-mid1.png') repeat-x; padding-left:8px;">
+ <span style="position:relative;top:10px;"><span id="dash_user"></span></span>
+ </td>
+ <td style="background:url('<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/dash-corner-mid1.png') repeat-x;padding:0px 8px 0px 10px;"><img style="position:relative;top:-1px;" src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/dash-divider.jpg" /></td>
+ <td valign="top" style="background:url('<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/dash-corner-mid1.png') repeat-x;">
+ <a href="javascript:;" id="myopac_link" style="position:relative;top:4px;"><img alt="My Account" src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/acct-btn.png" onmouseover="this.src='<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/acct-btn-hover.png';" onmouseout="this.src='<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/acct-btn.png';" /></a>
+ <a href="javascript:;" onclick="doLogout()" style="position:relative;top:4px;left:1px;"><img alt="Logout" src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/logout-btn.png" onmouseover="this.src='<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/logout-btn-hover.png';" onmouseout="this.src='<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/logout-btn.png';" /></a>
+ </td>
+ <td><img src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/dash-corner-right1.png" /></td>
+ </tr></table>
+ </div>
+ <div id="dashboard">
+ <div style="position:absolute;"><div style="position:relative;top:4px;">
+ <table cellpadding="0" cellspacing="0" border="0"><tr>
+ <td><img src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/dash-corner-left2.png" /></td>
+ <td valign="top" width="372" style="background:url('<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/dash-corner-mid2.png') repeat-x;">
+ <div style="position:relative;top:6px;">
+ <div style="position:absolute;"><div style="position:relative;left:3px;"><div style="text-align:right;width:86px;"><span id="dash_checked" style="color:#ffcc33;">0</span> Checked Out</div></div></div>
+ <div style="position:absolute;"><div style="position:relative;left:100px;"><div style="text-align:right;width:62px;"><span id="dash_holds" style="color:#ffcc33;">0</span> On Hold</div></div></div>
+ <div style="position:absolute;"><div style="position:relative;left:170px;"><div style="text-align:right;width:111px;"><span id="dash_pickup" style="color:#1dd93c;">0</span> Ready for Pickup</div></div></div>
+ <div style="position:absolute;"><div style="position:relative;left:284px;"><div style="text-align:right;width:76px;"><span id="dash_fines">No</span> Fines</div></div></div>
+ </div>
+ </td>
+ <td><img src="<!--#echo var="OILS_SKIN_BASE"-->/kcls/graphics/dash-corner-right2.png" /></td>
+ </tr></table>
+ </div></div>
+ </div>
+ </div>
+
+ </div>
+ <div style="clear:both;height:0px;margin:0px;padding:0px;"></div>
+</div>
+<div style="height:24px;background:#252525;">
+ <div id="gold-links">
+ <![CDATA[<div id="header-links"><a href="http://www.kcls.org/usingthelibrary/index.cfm">Using the Library</a><a href="http://www.kcls.org/booksandreading/">Books & Reading</a><a href="http://www.kcls.org/research/index.cfm">Research & Homework</a><a href="http://www.kcls.org/programs/">Programs & Classes</a><a href="http://www.kcls.org/events/">Events</a><a href="/opac/extras/mobile/">Mobile Catalog</a><a href="http://www.kcls.org/about/">About KCLS</a></div>]]>
+ </div>
+</div>
+<![CDATA[<!-- ****************** end: top_nav.xml ***************************** -->]]>
--- /dev/null
+<![CDATA[
+<!-- ****************** utils.xml ***************************** -->
+
+<div style="float:right;">
+<div style="position:relative;">
+<img src="/opac/skin/kcls/graphics/utils-corner-left.png" style="float:left;" />
+ <div style="float:left;width:163px;height:30px;background:url('/opac/skin/kcls/graphics/utils-corner-mid.png') repeat-x top;">
+
+ <a href="javascript:history.go(-1)" style="position:relative;top:1px;left:10px;"><img alt="Back" src="/opac/skin/kcls/graphics/tool_back.png" /></a>
+ <a href="index.xml" style="position:relative;top:3px;left:20px;"><img src="/opac/skin/kcls/graphics/tool_home.png" alt="Homepage" /></a>
+ <a href="javascript:window.print();" style="position:relative;top:5px;left:30px;"><img src="/opac/skin/kcls/graphics/tool_print.png" alt="Print Page" /></a>
+ <a href="http://www.kcls.org/usingthelibrary/catalog_help/index.cfm" style="position:relative;top:2px;left:40px;"><img alt="Help" src="/opac/skin/kcls/graphics/tool_help.png" /></a>
+ <a href="javascript:history.go(+1)" style="position:relative;top:2px;left:50px;"><img src="/opac/skin/kcls/graphics/tool_forward.png" alt="Forward" /></a>
+
+ </div>
+<img src="/opac/skin/kcls/graphics/utils-corner-right.png" style="float:left;" />
+</div>
+</div>
+
+<!-- ****************** end: utils.xml ***************************** -->
+]]>
\ No newline at end of file