Merge remote-tracking branch 'origin/new/bug_7031'
[koha.git] / koha-tmpl / opac-tmpl / prog / en / modules / opac-reserve.tt
1 [% INCLUDE 'doc-head-open.inc' %][% LibraryNameTitle or "Koha Online" %] Catalog ›  Placing a hold
2 [% INCLUDE 'doc-head-close.inc' %]
3 [% INCLUDE 'calendar.inc' %]
4 <script type="text/javascript">
5 // <![CDATA[
6  var MSG_NO_COPY_SELECTED = _("Expecting a specific copy selection.");
7
8  function prefixOf (s, tok) {
9      var index = s.indexOf(tok);
10      return s.substring(0, index);
11  }
12  function suffixOf (s, tok) {
13      var index = s.indexOf(tok);
14      return s.substring(index + 1);
15  }
16
17  $(document).ready(function() {
18     $('#hold-request-form').preventDoubleFormSubmit();
19
20     var copiesRowId = null;
21     var wasSpecific = false;
22     var lastCopiesRowId = null;
23         $(".checkitem").parent().click(function(e){
24                 if(e.target.tagName.toLowerCase() == 'td'){
25            $(this).find("input.checkitem").each( function() {
26                $(this).attr('checked', !$(this).attr('checked'));
27                         });
28                 }
29         });
30     // Hides all 'specific copy' table rows on load.
31     $(".copiesrow").hide();
32
33     $("#place_on_hdr").show();
34     $(".place_on_type").show();
35
36     // Replace non-JS single-selection with multi-selection capability.
37     $(".reserve_mode").val("multi");
38     $(".confirm_nonjs").remove();
39     $(".confirmjs_hold").each(function(){
40         var bib = $(this).attr("title");
41         var html = "<input type =\"checkbox\" class=\"confirmjs\" checked=\"checked\"";
42         html += "value=\"" + bib + "\"/>";
43         $(this).html(html);
44     });
45     $(".confirmjs_nohold").each(function(){
46         var bib = $(this).attr("title");
47         var html = "<input type =\"checkbox\" class=\"confirmjs\" disabled=\"disabled\"";
48         html += "value=\"" + bib + "\"/>";
49         $(this).html(html);
50     });
51
52     // Make sure a specific item was selected where specified
53     // before moving on to a new item.
54     function changeSelection (newCopiesRowId, isSpecific) {
55         if (copiesRowId && ((copiesRowId != newCopiesRowId) || (wasSpecific != isSpecific))) {
56             var biblioNum = suffixOf(copiesRowId, "_");
57
58             // If the 'specific copy' radio button was checked
59               if (wasSpecific && (copiesRowId != newCopiesRowId)) {
60                 // Find the selected copy
61                 var item = $(".checkitem_" + biblioNum + ":checked");
62                 if ($(item).size() == 0) {
63                     alert(MSG_NO_COPY_SELECTED);
64                     return false;
65                 }
66             }
67         }
68         copiesRowId = newCopiesRowId;
69         wasSpecific = isSpecific;
70         return true;
71     }
72
73     // When 'specific copy' radio button is clicked
74     $(".selectspecific").click(function() {
75
76         // Make sure all other specific copy table rows are hidden
77         biblioNum = suffixOf($(this).attr("id"), "_");
78         newCopiesRowId = "#copiesrow_" + biblioNum;
79
80         if (!changeSelection(newCopiesRowId, true)) {
81             return false;
82         }
83         $(".copiesrow:not(" + newCopiesRowId + ")").hide();
84
85         // Show the specific copy table for this radio button.
86         $(newCopiesRowId).show();
87     });
88
89
90     // When 'first available' radion button is clicked
91     $(".selectany").click(function() {
92         // Make sure all other specific copy table rows are hidden
93         biblioNum = suffixOf($(this).attr("id"), "_");
94         newCopiesRowId = "#copiesrow_" + biblioNum;
95
96         if (!changeSelection(newCopiesRowId, false)) {
97             return false;
98         }
99
100         // Hide the copies table row
101         $(".copiesrow").hide();
102     });
103
104     // When 'Place Hold' button is clicked
105     $(".placehold").click(function(){
106         var biblionumbers = "";
107         var selections = "";
108
109         if ($(".confirmjs:checked").size() == 0) {
110             alert(MSG_NO_RECORD_SELECTED);
111             return false;
112         }
113
114         // Find the items with the 'Hold' box checked
115         var badBib = null;
116         $(".confirmjs:checked").each(function() {
117             var biblioNum = $(this).val();
118             biblionumbers += biblioNum + "/";
119             selections += biblioNum + "/";
120
121             // If the 'specific copy' radio button is checked
122             if ($("#reqspecific_" + biblioNum + ":checked").size() > 0) {
123                 // Find the selected copy
124                 var item = $(".checkitem_" + biblioNum + ":checked");
125                 if ($(item).size() == 0) {
126                     badBib = biblioNum;
127                     return false;
128                 } else {
129                   selections += $(item).val();
130                 }
131             }
132             selections += "/";
133
134             // Add the pickup location
135             var branchSel = $("#branch_" + biblioNum);
136             if (branchSel.size() > 0) {
137                 selections += $(branchSel).val();
138             }
139             selections += "/";
140             return true;
141         });
142
143         if (badBib) {
144             alert(MSG_NO_COPY_SELECTED);
145             return false;
146         }
147
148         $("#selections").val(selections);
149         $("#biblionumbers").val(biblionumbers);
150
151         return true;
152     });
153
154  });
155 // ]]>
156 </script>
157 <style type="text/css">td ul { padding : 0; } td li { white-space: nowrap; font-size: 90%; list-style-type:none; padding : .3em 0; }</style>
158 </head>
159
160 <body id="opac-holds">
161   <div id="doc3" class="yui-t7">
162     [% INCLUDE 'masthead.inc' %]
163     <div id="bd">
164           <div id="yui-g">
165         <div id="holds" class="container">
166         [% IF ( message ) %]
167             [% IF ( GNA ) %]
168               <div id="gna" class="dialog alert">
169                 <p><strong>Sorry</strong>, you cannot place holds because the library doesn't have up-to-date <a href="/cgi-bin/koha/opac-userupdate.pl">contact information</a> on file.</p>
170               <p>Please contact your librarian, or use the <a href="/cgi-bin/koha/opac-userupdate.pl">online update form</a> to submit current information (<em>Please note:</em> there may be a delay in restoring your account if you submit online)</p>
171               </div>
172             [% END %]
173             [% IF ( lost ) %]
174               <div id="lost" class="dialog alert">
175                 <p><strong>Sorry</strong>, you cannot place holds because your library card has been marked as lost or stolen.</p>
176                 <p>If this is an error, please take your card to the circulation desk at your local library and the error will be corrected.</p>
177               </div>
178             [% END %]
179             [% IF ( debarred ) %]
180               <div id="debarred" class="dialog alert">
181                 <p><strong>Sorry</strong>, you cannot place holds because your account has been frozen.</p>
182                 <p>Usually the reason for freezing an account is old overdues or damage fees.   If <a href="/cgi-bin/koha/opac-user.pl">your account page</a> shows your account to be clear, please consult a librarian.</p>
183               </div>
184             [% END %]
185             [% IF ( too_much_oweing ) %]
186               <div id="too_much_oweing" class="dialog alert">
187                 Sorry, you cannot place holds because you owe [% too_much_oweing %].
188               </div>
189             [% END %]
190             [% IF ( too_many_reserves ) %]
191               <div id="too_many_reserves" class="dialog alert">Sorry, you cannot place more than [% too_many_reserves %] holds.
192               </div>
193             [% END %]
194             [% IF ( bad_biblionumber ) %]
195               <div id="bad_biblionumber" class="dialog alert">ERROR: No biblio record found for biblionumber [% bad_biblionumber %].</div>
196             [% END %]
197             [% IF ( no_items_selected ) %]
198               <div id="no_items_selected" class="dialog alert">
199                 You must select at least one item.
200               </div>
201             [% END %]
202             [% IF ( no_branch_selected ) %]
203               <div id="no_branch_selected" class="dialog alert">
204                 You must select a library for pickup.
205               </div>
206             [% END %]
207             [% IF ( no_biblionumber ) %]
208               <div id="no_biblionumber" class="dialog alert">ERROR: No biblionumber received.</div>
209             [% END %]
210             [% IF ( bad_data ) %]
211               <div id="bad_data" class="dialog alert">ERROR: Internal error: incomplete hold request.</div>
212             [% END %]
213           [% ELSE %]
214             [% IF ( none_available ) %]
215                 <div id="none_available" class="dialog alert"><strong>Sorry</strong>, none of these items can be placed on hold.
216                 </div>
217               [% END %]
218           [% END %]<!-- NAME="message" -->
219
220       [% UNLESS ( message ) %][% UNLESS ( none_available ) %]<h3>Confirm holds for:
221                       [% FOREACH USER_INF IN USER_INFO %]
222                         [% USER_INF.firstname %] [% USER_INF.surname %] ([% USER_INF.cardnumber %])
223                       [% END %]
224                     </h3>[% END %]
225               [% IF (RESERVE_CHARGE) %]
226               <div class="dialog alert" id="reserve_fee">
227                 There is a charge of [% RESERVE_CHARGE %] for placing this hold
228               </div>
229               [% END %]
230
231             <form action="/cgi-bin/koha/opac-reserve.pl" method="post" id="hold-request-form">
232             <input type="hidden" name="place_reserve" value="1"/>
233
234             <!-- These values are set dynamically by js -->
235             <input type="hidden" name="biblionumbers" id="biblionumbers"/>
236             <input type="hidden" name="selecteditems" id="selections"/>
237             <div id="bigloop">
238               <table id="bibitemloop">
239                 [% UNLESS ( none_available ) %]<tr>
240                   <th>Hold</th>
241                   <th>Title</th>
242                   [% UNLESS ( item_level_itypes ) %]
243                     <th>Item Type</th>
244                   [% END %]
245                   [% IF ( showpriority ) %]
246                   <th>Priority</th>
247                   [% END %]
248                   [% IF ( reserve_in_future ) %]
249                   <th>Hold Starts on Date</th>
250                   [% END %]
251                   <th>Hold Not Needed After</th>
252                   [% IF ( OPACItemHolds ) %]
253                     <th id="place_on_hdr" style="display:none">Place On</th>
254                   [% END %]
255                   [% UNLESS ( singleBranchMode ) %]
256                     [% IF ( choose_branch ) %]
257                         <th>Pickup Location</th>
258                     [% END %]
259                   [% END %]
260                 </tr>[% ELSE %]<tr><th colspan="5">Title</th></tr>[% END %]
261
262                 [% FOREACH bibitemloo IN bibitemloop %]
263                   <tr>
264                       [% IF ( bibitemloo.holdable ) %]
265                                           <td>
266                       <input class="reserve_mode" name="reserve_mode" type="hidden" value="single"/>
267                       <input class="single_bib" name="single_bib" type="hidden" value="[% bibitemloo.biblionumber %]"/>
268                         <span class="confirmjs_hold" title="[% bibitemloo.biblionumber %]"></span>
269                         <span class="confirm_nonjs">
270                           <input type="radio" class="confirmbox checkitem [% bibitemloo.checkitem_bib %]"
271                                  name="[% bibitemloo.checkitem_bib %]" checked="checked"
272                                  id="[% bibitemloo.checkitem_bib %]"
273                                  value="any" />
274                           <label class="confirm_label" for="[% bibitemloo.checkitem_bib %]">Next available copy</label>
275                         </span>
276                                         </td>
277                       [% ELSE %]
278                                           [% UNLESS ( none_available ) %]<td>&nbsp;</td>[% END %]
279                       [% END %]
280                     [% IF ( bibitemloo.holdable ) %]<td>[% ELSE %]<td colspan="5">[% END %]
281                       <a href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% bibitemloo.biblionumber %]">[% bibitemloo.title |html %][% IF ( bibitemloo.subtitle ) %] [% FOREACH subtitl IN bibitemloo.subtitle %][% subtitl.subfield %][% END %][% END %]</a>
282                       [% IF ( bibitemloo.author ) %],  by [% bibitemloo.author %][% END %]
283
284                       [% UNLESS ( bibitemloo.holdable ) %]
285
286                         [% IF ( bibitemloo.already_reserved ) %]
287                           <div class="bibmessage">You have already requested this title.</div>
288                         [% ELSE %]
289                           [% UNLESS ( bibitemloo.bib_available ) %]
290                             <div class="bibmessage">No available items.</div>
291                           [% ELSE %]
292                             <div class="bibmessage">This title cannot be requested.</div>
293                           [% END %]
294                         [% END %]
295
296
297                         [% END %]
298
299                     </td>
300                     [% IF ( bibitemloo.holdable ) %][% UNLESS ( item_level_itypes ) %]
301                                           <td>
302                                             [% IF ( bibitemloo.imageurl ) %]<img src="[% bibitemloo.imageurl %]" alt="" />[% END %]
303                                 [% bibitemloo.description %]
304                                           </td>
305                                         [% END %][% END %]
306                     [% IF ( bibitemloo.holdable ) %]
307                     [% IF ( showpriority ) %]
308                     <td>
309                     [% bibitemloo.rank %] out of [% bibitemloo.reservecount %]
310                     </td>[% END %][% END %]
311                     [% IF ( reserve_in_future ) %]
312                     [% IF ( bibitemloo.holdable ) %]<td>
313               <input name="reserve_date_[% bibitemloo.biblionumber %]" id="reserve_date_[% bibitemloo.biblionumber %]" size="10">
314               <script language="JavaScript" type="text/javascript">
315               //<![CDATA[
316               $("#reserve_date_[% bibitemloo.biblionumber %]").attr( 'readonly', 'readonly' );
317
318               var cal_img = document.createElement('img');
319               cal_img.src = "[% themelang %]/lib/calendar/cal.gif";
320               cal_img.alt = "Show Calendar";
321               cal_img.border = "0";
322               cal_img.id = "CalendarReserveDate[% bibitemloo.biblionumber %]";
323               cal_img.style.cursor = "pointer";
324               document.getElementById("reserve_date_[% bibitemloo.biblionumber %]").parentNode.appendChild( cal_img );
325
326               function validate[% bibitemloo.biblionumber %](date) {
327                   var today = new Date();
328                         if ( (date > today) ||
329                                 ( date.getDate() == today.getDate() &&
330                                   date.getMonth() == today.getMonth() &&
331                                   date.getFullYear() == today.getFullYear() ) ) {
332                             return false;
333                         } else {
334                             return true;
335                         }
336               };
337               Calendar.setup(
338               {
339                 inputField : "reserve_date_[% bibitemloo.biblionumber %]",
340                 ifFormat : "[% DHTMLcalendar_dateformat %]",
341                 button : "CalendarReserveDate[% bibitemloo.biblionumber %]",
342                 disableFunc : validate[% bibitemloo.biblionumber %],
343                 dateStatusFunc : validate[% bibitemloo.biblionumber %],
344                 firstDay : [% CalendarFirstDayOfWeek %]
345               }
346               );
347               //]]>
348               </script>
349       <p style="margin:.3em 2em;">
350       <a href="#" style="font-size:85%;text-decoration:none;" onclick="document.getElementById('reserve_date_[% bibitemloo.biblionumber %]').value='';return false;">Clear Date</a></p>
351                 </td>[% END %]
352
353                     [% END %]
354         [% IF ( bibitemloo.holdable ) %]<td>
355         <input name="expiration_date_[% bibitemloo.biblionumber %]" id="expiration_date_[% bibitemloo.biblionumber %]" size="10" readonly="readonly" />
356         <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" border="0" id="CalendarExpirationDate_[% bibitemloo.biblionumber %]" style="cursor: pointer;" />
357         <script language="JavaScript" type="text/javascript">
358       //<![CDATA[
359       function validate1(date) {
360         var today = new Date();
361         if ( (date > today) ||
362                       ( date.getDate() == today.getDate() &&
363                         date.getMonth() == today.getMonth() &&
364                         date.getFullYear() == today.getFullYear() ) ) {
365           return false;
366         } else {
367           return true;
368         }
369       };
370       Calendar.setup(
371         {
372           inputField : "expiration_date_[% bibitemloo.biblionumber %]",
373           ifFormat : "[% DHTMLcalendar_dateformat %]",
374           button : "CalendarExpirationDate_[% bibitemloo.biblionumber %]",
375           disableFunc : validate1,
376           dateStatusFunc : validate1,
377           firstDay : [% CalendarFirstDayOfWeek %]
378         }
379       );
380       //]]>
381         </script>
382       <p style="margin:.3em 2em;">
383       <a href="#" style="font-size:85%;text-decoration:none;" onclick="document.getElementById('expiration_date_[% bibitemloo.biblionumber %]').value='';return false;">Clear Date</a></p>
384     </td>[% END %]
385
386                     [% IF ( bibitemloo.holdable ) %]
387                     <!-- HOLD ABLE -->
388                     [% IF ( OPACItemHolds ) %]
389                     <!-- ITEM HOLDS -->
390                                           <td class="place_on_type" style="display:none">
391                                             <ul>
392                                                 <li>
393                                                   [% UNLESS ( bibitemloo.holdable ) %]
394                                                     <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]"
395                                                            id="reqany_[% bibitemloo.biblionumber %]"
396                                                            class="selectany"
397                                                            value="Any"
398                                                            disabled="disabled"
399                                                     />
400                                                   [% ELSE %]
401                                                     <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]"
402                                                            id="reqany_[% bibitemloo.biblionumber %]"
403                                                            class="selectany"
404                                                            value="Any"
405                                                            checked="checked"
406                                                     />
407                                                   [% END %]
408                                                   <label for="reqany_[% bibitemloo.biblionumber %]">Next available copy</label>
409                                                 </li>
410                                                 <li>
411                                                   [% UNLESS ( bibitemloo.holdable ) %]
412                                                     <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]"
413                                                            id="reqspecific_[% bibitemloo.biblionumber %]"
414                                                            class="selectspecific"
415                                                            disabled="disabled"
416                                                            value="Specific"
417                                                     />
418                                                   [% ELSE %]
419                                                     <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]"
420                                                            id="reqspecific_[% bibitemloo.biblionumber %]"
421                                                            class="selectspecific"
422                                                            value="Specific"
423                                                     />
424                                                   [% END %]
425                                                   <label for="reqspecific_[% bibitemloo.biblionumber %]">A specific copy</label>
426                                                 </li>
427                                             </ul>
428                                           </td>
429                                         [% END %][% END %]
430
431                     [% UNLESS ( singleBranchMode ) %]
432                         [% IF ( bibitemloo.holdable ) %]
433                             [% IF ( choose_branch ) %]
434                                            <td>
435                          [% UNLESS ( bibitemloo.holdable ) %]
436                             <select name="branch" id="branch_[% bibitemloo.biblionumber %]" disabled="disabled">
437                               [% FOREACH branchChoicesLoo IN bibitemloo.branchChoicesLoop %]
438                                 [% IF ( branchChoicesLoo.selected ) %]
439                                   <option value="[% branchChoicesLoo.value %]" selected="selected">[% branchChoicesLoo.branchname %]</option>
440                                 [% ELSE %]
441                                   <option value="[% branchChoicesLoo.value %]">[% branchChoicesLoo.branchname %]</option>
442                                 [% END %]
443                               [% END %]
444                           </select>
445                           [% ELSE %]
446                             <select name="branch" id="branch_[% bibitemloo.biblionumber %]">
447                               [% FOREACH branchChoicesLoo IN bibitemloo.branchChoicesLoop %]
448                                 [% IF ( branchChoicesLoo.selected ) %]
449                                   <option value="[% branchChoicesLoo.value %]" selected="selected">[% branchChoicesLoo.branchname %]</option>
450                                 [% ELSE %]
451                                   <option value="[% branchChoicesLoo.value %]">[% branchChoicesLoo.branchname %]</option>
452                                 [% END %]
453                               [% END %]
454                             </select>
455                           [% END %]
456                        </td>
457                             [% END %]
458                         [% END %]
459                     [% END %]
460                   </tr>
461
462                   [% IF ( OPACItemHolds ) %]
463                   [% IF ( bibitemloo.holdable ) %]
464                     <tr class="copiesrow" id="copiesrow_[% bibitemloo.biblionumber %]">
465                       <td>&nbsp;</td>
466                       <td colspan="[% itemtable_colspan %]">
467                         <table>
468                           <caption>Select a specific copy:</caption>
469                           <tr>
470                             <th>Copy</th>
471                             [% IF ( item_level_itypes ) %]
472                               <th>Item Type</th>
473                             [% END %]
474                             <th>Barcode</th>
475                             [% UNLESS ( singleBranchMode ) %]
476                               <th>Home Library</th>
477                               <th>Last Location</th>
478                             [% END %]
479                             <th>Call Number</th>
480                             [% IF ( bibitemloo.itemdata_enumchron ) %]
481                               <th>Vol Info</th>
482                             [% END %]
483                             <th>Information</th>
484                           </tr>
485
486                           [% FOREACH itemLoo IN bibitemloo.itemLoop %]
487                             <tr class="[% itemLoo.backgroundcolor %]">
488                               <td>
489                                 [% IF ( itemLoo.available ) %]
490                                   <input type="radio" class="checkitem checkitem_[% bibitemloo.biblionumber %]" name="checkitem_[% bibitemloo.biblionumber %]"
491                                          value="[% itemLoo.itemnumber %]" />
492                                 [% ELSE %]
493                                   <input disabled="disabled" type="radio" class="checkitem" name="checkitem" value="[% itemLoo.itemnumber %]" />
494                                   <img src="/opac-tmpl/[% theme %]/famfamfam/silk/cross.png" alt="Cannot be put on hold" title="Cannot be put on hold" />
495                                 [% END %] [% IF ( itemLoo.copynumber ) %][% itemLoo.copynumber %][% END %]
496                               </td>
497                               [% IF ( item_level_itypes ) %]
498                                 <td>
499                                   [% UNLESS ( noItemTypeImages ) %]
500                                   [% IF ( itemLoo.imageurl ) %]<img src="[% itemLoo.imageurl %]" alt="" />[% END %]
501                                   [% END %]
502                                                                 [% itemLoo.description %]
503                                 </td>
504                               [% END %]
505                               <td>[% itemLoo.barcode %]</td>
506                               [% UNLESS ( singleBranchMode ) %]
507                                 <td>[% itemLoo.homeBranchName %]</td>
508                                 <td>[% itemLoo.holdingBranchName %]</td>
509                               [% END %]
510                               <td>[% itemLoo.callNumber %]</td>
511                               [% IF ( itemLoo.itemdata_enumchron ) %]<!-- test -->
512                                 <td>[% itemLoo.enumchron %]</td>
513                               [% END %]
514                               <td>
515                                 [% IF ( itemLoo.dateDue ) %]
516                                   <span class="checkedout">Due [% itemLoo.dateDue %]</span>
517                                 [% ELSIF ( itemLoo.transfertwhen ) %]
518                                   <span class="intransit">In transit from [% itemLoo.transfertfrom %],
519                                     to [% itemLoo.transfertto %], since [% itemLoo.transfertwhen %]</span>
520                                 [% END %]
521                                 [% IF ( itemLoo.message ) %]
522                                   <span class="lost">Unavailable (lost or missing)</span>
523                                 [% END %]
524                                 [% IF ( itemLoo.notforloan ) %]
525                                   <span class="notforloan">Not for loan ([% itemLoo.notforloanvalue %])</span>
526                                 [% END %]
527                                 [% IF ( itemLoo.reservedate ) %]
528                                   <span class="waiting">[% IF ( itemLoo.waitingdate ) %]Waiting[% ELSE %]On hold[% END %] for patron
529                                     [% IF ( itemLoo.waitingdate ) %]at[% ELSE %]expected at[% END %] [% itemLoo.ExpectedAtLibrary %]
530                                     since
531                                     [% IF ( itemLoo.waitingdate ) %][% itemLoo.waitingdate %][% ELSE %][% IF ( itemLoo.reservedate ) %][% itemLoo.reservedate %][% END %][% END %].
532                                   </span>
533                                 [% ELSE %]
534                                   <span class="notonhold">Not on hold</span>
535                                 [% END %]&nbsp;
536                               </td>
537                             </tr>
538                           [% END %]
539                         </table>
540                       </td>
541                     </tr>
542                   [% END %]<!-- bib_available -->
543                   [% END %]<!-- OPACItemHolds -->
544                 [% END %]
545               </table><!-- bibitemloop -->
546               [% END %] <!-- if message -->
547             </div><!-- bigloop -->
548
549             [% UNLESS ( message ) %]
550             [% UNLESS ( none_available ) %]
551             <input type="submit" value="Place Hold" class="placehold" />
552             [% END %]
553             [% END %]
554
555             </form>
556
557         </div><!-- holds -->
558       </div><!-- yui-g -->
559     </div><!-- bd    -->
560   </div><!-- doc3  -->
561
562 <div><!-- The following include seems to have an extra "/div" in it... -->
563 [% INCLUDE 'opac-bottom.inc' %]