View | Details | Raw Unified | Return to bug 12233
Collapse All | Expand All

(-)a/koha-tmpl/opac-tmpl/ccsr/en/css/babeltheque.css (-152 lines)
Lines 1-152 Link Here
1
/* ## BABELTHEQUE ## */
2
/* Babeltheque is a french supplier for advanced features
3
this babeltheque.css is not used anywhere by Koha, it's not a mistake
4
If you're babeltheque customer, you have access to a specific configuration URL
5
on babeltheque website, where you can activate this css
6
So: it should not be removed from Koha !
7
*/
8
9
#BW_etiquettes {
10
  clear :left;
11
  border: 1px solid #E8E8E8;
12
  margin-top: 10px;
13
  width: 49%;
14
  float: left;
15
  visibility: hidden;
16
  visibility: visible\9;
17
}
18
#BW_etiquettes:not(:empty) {
19
  visibility: visible;
20
}
21
22
#BW_etiquettes h2 {
23
  clear:left;
24
  background-color: #E8E8E8;
25
  margin: 5px 10px;
26
  padding: 0 5px;
27
}
28
29
#BW_ulEti {max-width:100%;}
30
31
#BW_ulEti ul  {
32
  margin:0;
33
  padding:0 15px;
34
  list-style-type: none;
35
}
36
37
#BW_ulEti a {
38
  text-decoration: none;
39
}
40
41
#BW_ulEti a.tag_s0  {font-weight: 120;font-size:0.8em;}
42
#BW_ulEti a.tag_s1  {font-weight: 150;font-size:0.9em;}
43
#BW_ulEti a.tag_s2  {font-weight: 180;font-size:1.0em;}
44
#BW_ulEti a.tag_s3  {font-weight: 200;font-size:1.2em;}
45
#BW_ulEti a.tag_s4  {font-weight: 220;font-size:1.4em;}
46
#BW_ulEti a.tag_s5  {font-weight: 230;font-size:1.5em;}
47
#BW_ulEti a.tag_s6  {font-weight: 320;font-size:1.6em;}
48
#BW_ulEti a.tag_s7  {font-weight: 350;font-size:1.7em;}
49
#BW_ulEti a.tag_s8  {font-weight: 400;font-size:1.8em;}
50
#BW_ulEti { padding: 0px; line-height: 2em; text-align: center;}
51
#BW_ulEti a { padding: 2px; }
52
#BW_ulEti { margin: 0px; }
53
54
#BW_ulEti ol {
55
  float:left;
56
  display: inline;
57
  margin: 0 10px;
58
}
59
60
#BW_suggestions {
61
  border: 1px solid #E8E8E8;
62
  margin-top: 10px;
63
  float: right;
64
  width: 49%;
65
  visibility: hidden;
66
  visibility: visible\9;
67
}
68
#BW_suggestions:not(:empty) {
69
  visibility: visible;
70
}
71
#BW_suggestions h2 {
72
  background-color: #E8E8E8;
73
  margin: 5px 10px;
74
  padding: 0 5px;
75
}
76
#BW_suggestions .BW_livres_tag_page {
77
  padding: 0 15px;
78
}
79
#BW_suggestions .BW_livres_tag_page:before {
80
  content : '> ';
81
}
82
#BW_droite .BW_livres_tag:before {
83
  content : '> ';
84
}
85
86
#BW_videos {
87
  clear : both;
88
  border: 1px solid #E8E8E8;
89
  padding-bottom: 140px;
90
  margin-top: 10px;
91
  max-width: 100%;
92
  visibility: hidden;
93
  visibility: visible\9;
94
}
95
96
#BW_videos:not(:empty) {
97
  visibility: visible;
98
}
99
100
#BW_videos h2 {
101
  background-color: #E8E8E8;
102
  margin: 5px 10px;
103
  padding: 0 5px;
104
}
105
#BW_videos .BW_bloc_vid {
106
  clear: both;
107
  padding: 0 15px;
108
}
109
.BW_vignette_vid {
110
  border: 1px solid #DFD9CE;
111
  float: left;
112
  height: 141px;
113
  margin: 5px;
114
  min-height: 141px;
115
  padding: 5px;
116
  white-space: nowrap;
117
}
118
119
#BW_notes {clear :left;}
120
#BW_notes h2 {font-size:85%;}
121
122
#BW_citations {}
123
#BW_citations h2 {font-size:85%;}
124
125
#BW_critiques {}
126
#BW_critiques h2 {font-size:85%;}
127
128
#BW_critiques_pro {}
129
#BW_critiques_pro h2 {font-size:85%;}
130
131
#BW_citations,#BW_critiques,#BW_critiques_pro {
132
  background: -moz-linear-gradient(center top , #3399FF, #3333FF) repeat scroll 0 0 transparent;
133
  background: -webkit-gradient(linear, center top, center bottom, from(#3399FF), to(#3333FF));
134
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#3399FF', endColorstr='#3333FF');
135
  border: 1px solid #B7B7B7;
136
  border-radius: 5px 5px 5px 5px;
137
  color: #FFFFCC;
138
  display: inline-block;
139
  float: left;
140
  font-weight: bold;
141
  margin: 15px 20px 15px 0;
142
  min-width: 150px;
143
  padding: 0 15px 8px;
144
  position: relative;
145
  text-align: center;
146
  text-shadow: 1px 1px 1px #777777;
147
  white-space: nowrap;
148
}
149
150
#BW_citations a,#BW_critiques a,#BW_critiques_pro a {
151
  color: #FFFFCC;
152
}
(-)a/koha-tmpl/opac-tmpl/ccsr/en/css/colors.css (-751 lines)
Lines 1-751 Link Here
1
/* ================================
2
 * !Main
3
 * ================================*/
4
5
div.clear {
6
    clear: both;
7
}
8
9
body {
10
    min-width:1000px;
11
    font-family: "Lucida Grande", Arial;
12
    padding:0;
13
    background-color : #eaeae6;
14
}
15
16
body.popup {
17
    min-width: 100px;
18
    padding : 1em;
19
}
20
21
#container {
22
    background: #fff;
23
    border:1px solid #d2d2cf;
24
    -webkit-border-radius: 8px;
25
    -moz-border-radius: 8px;
26
    border-radius: 8px;
27
    margin:0 20px;
28
    padding: 10px;
29
}
30
31
a:link,
32
a:visited {
33
    color: #007fae;
34
}
35
a:hover {
36
    color: #00a5e2;
37
}
38
39
#container #ctn_lt {
40
    padding-left: 15px;
41
}
42
43
#opacnav {
44
    width:240px;
45
}
46
47
#opacmainuserblock, #news {
48
    margin-left:7em;
49
}
50
51
/* ================================
52
 * !Header
53
 * ================================*/
54
55
#header-wrapper {
56
    background: none;
57
}
58
59
#opac-main-search {
60
    background: none;
61
    border: none;
62
    display: table;
63
    padding: 0.7em 0 0 0.5em;
64
    width: 100%;
65
}
66
*:first-child+html #opac-main-search {
67
    display: block;
68
}
69
#opac-main-search a.logo {
70
    display: table-cell;
71
    padding: 8px 0 0 13px;
72
    vertical-align: top;
73
    width: 145px;
74
}
75
76
#opac-main-search #fluid {
77
    display: table-cell;
78
    margin: 0;
79
    padding: 0;
80
    position: relative;
81
    vertical-align: top;
82
}
83
84
#opac-main-search div#libraryname {
85
    display: table-cell;
86
    float: none;
87
    vertical-align: top;
88
    overflow: hidden;
89
    text-align: center;
90
    padding: 0 11px 17px;
91
    width: 128px;
92
}
93
94
/* IE 7 Hack */
95
*:first-child+html #opac-main-search a.logo,
96
*:first-child+html #opac-main-search #fluid,
97
*:first-child+html #opac-main-search div#libraryname {
98
    display: block;
99
    float: left;
100
    height: 100px;
101
}
102
*:first-child+html #opac-main-search #fluid {
103
    width: 800px;
104
}
105
#opac-main-search div#libraryname h1 {
106
    background-repeat: no-repeat;
107
    background-position: 0 0;
108
    display: block;
109
    margin: 0;
110
    position: relative;
111
}
112
#opac-main-search div#libraryname h1 img {
113
    display: block;
114
    margin: 0 0 7px;
115
    max-height: 80px;
116
}
117
118
#opac-main-search div#libraryname span#official-website {
119
    background: url("../../images/arrow-right-grey-logo.png") no-repeat scroll 0 50%;
120
    font: 11px/14px Arial;
121
    padding: 0 0 0 10px;
122
}
123
#opac-main-search div#libraryname span#official-website a {
124
    color: #696965;
125
    text-decoration: none;
126
}
127
#opac-main-search div#libraryname span#official-website a:hover {
128
    text-decoration: underline;
129
}
130
131
132
/* search form */
133
134
form#searchform {
135
    background: #a7a7a2 url("../../images/bg-search-bar.png") repeat-x scroll 0 0;
136
    -webkit-border-radius: 8px;
137
    -moz-border-radius: 8px;
138
    border-radius: 8px;
139
    display: block;
140
    padding: 12px 10px;
141
    position: relative;
142
}
143
144
form#searchform label {
145
    display: none;
146
}
147
148
form.single-library .input-wrapper {
149
    margin: 0 237px 0 0;
150
}
151
form.multi-libraries .input-wrapper {
152
    margin: 0 416px 0 0;
153
}
154
form#searchform .input-wrapper input[type="text"] {
155
    background: #fff;
156
    border: 1px solid #A0A09A;
157
    -webkit-border-radius: 8px;
158
    -moz-border-radius: 8px;
159
    border-radius: 8px;
160
    color: #868684;
161
    font-size: 12px !important;
162
    padding: 8px 8px 9px;
163
    width: 100% !important;
164
}
165
166
form#searchform select {
167
    left: -9999em;
168
    position: absolute;
169
}
170
171
form.multi-libraries #filters .jqTransformSelectWrapper {
172
    position: absolute;
173
    right: 229px;
174
    top: 12px;
175
}
176
177
form.single-library  #filters .jqTransformSelectWrapper,
178
form.multi-libraries #libraries .jqTransformSelectWrapper {
179
    position: absolute;
180
    right: 50px;
181
    top: 12px;
182
}
183
184
form#searchform input[type="submit"] {
185
    background: #619bb5 url("../../images/btn-search-bar.png") no-repeat 50% 50%;
186
    border: 1px solid #adadaa;
187
    -webkit-border-radius: 5px;
188
    -moz-border-radius: 5px;
189
    border-radius: 5px;
190
    color: #fff;
191
    cursor: pointer;
192
    font-size: 0;
193
    font-weight: normal;
194
    height: 33px;
195
    margin-left: 4px;
196
    margin-top: 0;
197
    padding: 0;
198
    position: absolute;
199
    right: 10px;
200
    top: 12px;
201
    width: 34px;
202
}
203
204
#moresearches {
205
    margin: 7px 10px 0;
206
}
207
#moresearches a:link,
208
#moresearches a:visited {
209
    background: url("../../images/arrow-right-grey-11x6.png") no-repeat scroll left center transparent;
210
    color: #007fae;
211
    font-size: 12px;
212
    font-weight: normal;
213
    margin-right: 12px;
214
    padding-left: 12px;
215
    text-decoration: none;
216
}
217
#moresearches a:hover {
218
    color: #00a5e2;
219
}
220
221
#moresearches span.pipe {
222
    display: none;
223
}
224
225
.transparent {
226
    zoom: 1;
227
    filter: alpha(opacity=50);
228
    opacity: 0.5;
229
}
230
231
div#top-bar {
232
    z-index: 9999999;
233
    position: fixed;
234
    top:0;
235
    left:0;
236
    margin: 0;
237
    padding: 0;
238
    width: 100%;
239
    height: 29px;
240
    background: #454543 url("../../images/img_bg_header.png") repeat-x 0 0;
241
}
242
243
244
ul#menu-left {
245
    margin: 0 0 0 30px;
246
    padding: 0;
247
    display: block;
248
    float: left;
249
    width: auto;
250
    height: 29px;
251
}
252
ul#menu-left li {
253
    margin: 0;
254
    padding: 0 8px 0 10px;
255
    float: left;
256
    height: 29px;
257
    list-style-type: none;
258
    background: url("../../images/img_sep_header.png") no-repeat left top;
259
}
260
ul#menu-left li#listsmenulink {
261
    padding: 1px 0 0 12px;
262
    border: none;
263
}
264
ul#menu-left #listsmenulink:hover {
265
    background: url("../../images/img_sep_header.png") no-repeat left top !important;
266
}
267
ul#menu-left li a#cartmenulink,
268
ul#menu-left li#listsmenulink a {
269
    margin: 2px 0 0 0;
270
    color: #9EE1FF;
271
    font-family: Arial;
272
    font-size: 13px;
273
    font-weight: bold;
274
    text-decoration: none;
275
    border: none;
276
}
277
ul#menu-left li a#cartmenulink:hover,
278
ul#menu-left li#listsmenulink a:hover {
279
    color: #9EE1FF;
280
}
281
282
ul#menu-left li#listsmenulink a {
283
    padding: 2px 0 0;
284
}
285
286
ul#menu-left li a#cartmenulink span,
287
ul#menu-left li#listsmenulink a span {
288
    margin: 0;
289
    padding: 0;
290
}
291
ul#menu-left li a#cartmenulink span#basketcount {
292
    margin: 0 0 0 5px;
293
    padding: 0;
294
    background: none;
295
}
296
ul#menu-left li a#cartmenulink span img,
297
ul#menu-left li#listsmenulink a span img {
298
    display: none;
299
}
300
301
ul#menu-left li a#cartmenulink {
302
    padding: 0 0 0 30px;
303
    background: url("../../images/img_toolbar-button-cart.png") no-repeat left center;
304
}
305
ul#menu-left li#listsmenulink a {
306
    padding: 0 0 0 20px;
307
    background: url("../../images/img_toolbar-button-lists.png") no-repeat left center;
308
}
309
310
div#cartDetails,
311
div#listsmenu {
312
    z-index: 9999999;
313
    top: 29px !important;
314
    margin: 0;
315
    padding: 10px !important;
316
    background: #649EB8;
317
    border-left: 1px solid #A0A09A !important;
318
    border-right: 1px solid #A0A09A !important;
319
    border-bottom: 1px solid #A0A09A !important;
320
    -webkit-border-radius: 0 0 7px 7px;
321
    -moz-border-radius: 0 0 7px 7px;
322
    border-radius: 0 0 7px 7px;
323
}
324
div#cartDetails {
325
    margin-left: -9px;
326
}
327
328
329
#members {
330
    background: none;
331
    margin: 0;
332
    padding: 0;
333
    float: right;
334
}
335
#members ul {
336
    margin: 0;
337
    margin-right: 20px;
338
    float: right;
339
}
340
#members li {
341
    background: none;
342
    margin:0;
343
    float: left;
344
    border-right: none;
345
}
346
#members ul li a {
347
    background: url("../../images/img_sep_header.png") no-repeat scroll right top transparent;
348
    color: #9EE1FF;
349
    display: block;
350
    font-family: Arial;
351
    font-size: 13px;
352
    height: 22px;
353
    padding: 7px 14px 0 3px;
354
    text-decoration: none;
355
}
356
357
#members li span.members {
358
    color:#fff;
359
    padding:7px 14px 0 9px;
360
    float: left;
361
    background: url(../../images/img_sep_header.png) no-repeat right top;
362
    height: 22px;
363
}
364
365
#members li span.members a {
366
    display:inline;
367
    background: none;
368
    padding: 0;
369
}
370
371
#members li a {
372
    padding:7px 14px 0 9px;
373
}
374
375
#members li a.logout {
376
    color:#ff825b;
377
    font-weight: normal;
378
    padding:7px 14px 0 9px;
379
}
380
381
div#listsmenu {
382
    margin-left: 1px;
383
}
384
div#listsmenu h4 {
385
    margin: 0 !important;
386
    color: #fff;
387
}
388
div#listsmenu ul li {
389
    margin: 0 !important;
390
    padding: 0 !important;
391
    height: auto !important;
392
    background: none !important;
393
}
394
div#listsmenu ul li {
395
    float: none !important;
396
    margin: 0 !important;
397
    padding: 0 !important;
398
    list-style-type: none !important;
399
    background: none !important;
400
}
401
div#listsmenu a {
402
    margin: 0 !important;
403
    padding: 0 !important;
404
    color: #fff !important;
405
    font-weight: normal  !important;
406
    text-decoration: none;
407
    background: none !important;
408
}
409
div#listsmenu a:hover {
410
    text-decoration: underline;
411
}
412
413
#cartDetails,#cartUpdate,#holdDetails,#listsDetails {
414
    background-color : #FFF;
415
    border: 1px solid #739acf;
416
    color : #fff;
417
    display : none;
418
    margin : 0;
419
    padding : 10px;
420
    text-align : center;
421
    width : 180px;
422
    box-shadow: 1px 1px 3px #666;
423
    -moz-box-shadow: 1px 1px 3px #666;
424
    -webkit-box-shadow: 1px 1px 3px #666;
425
426
}
427
428
#cartmenulink, #listsmenulink {
429
    display : block;
430
    position : relative;
431
    background : #aaa;
432
    padding : 5px;
433
    float : left;
434
    color : #333;
435
    text-decoration : none;
436
    cursor : pointer;
437
}
438
439
#cartmenulink {
440
    background : #98CB58;
441
    color : #336600;
442
    font-size : 105%;
443
}
444
445
#cartmenulink[class], #listsmenulink[class] {
446
    background-image : ;
447
    background-position : ;
448
}
449
450
#cartmenulink span, #listsmenulink span {
451
    padding : 0 0 5px 10px;
452
    background-position:;
453
    left:;
454
    margin-bottom:;
455
}
456
457
#cartmenulink *, #listsmenulink * {
458
    background-image : none;
459
}
460
461
#cartmenulink span#basketcount span {
462
    color:#fff;
463
    margin:0 0 0 5px;
464
    padding:0;
465
    background:none;
466
    font-size:15px;
467
    font-weight:bold;
468
}
469
470
471
/* ================================
472
 * !jQtransform
473
 * ================================*/
474
475
.jqTransformSelectWrapper {
476
    background: none repeat scroll 0 0 #FFFFFF;
477
    border: 1px solid #A0A09A;
478
    border-radius: 8px 8px 8px 8px;
479
    color: #252525;
480
    font-family: Arial,Helvetica,sans-serif;
481
    font-size: 13px;
482
    float: left;
483
    margin-left: 5px;
484
    padding: 0;
485
    position: relative;
486
    width: 171px !important;
487
}
488
.jqTransformSelectWrapper div {
489
    height: 19px;
490
    padding: 9px 5px 4px;
491
    text-indent: 4px;
492
}
493
.jqTransformSelectWrapper div span {
494
    cursor: pointer;
495
    float: left;
496
}
497
498
.jqTransformSelectWrapper div a {
499
    background: url("../../images/img_select-puce.png") no-repeat scroll 0 50% transparent;
500
    display: block;
501
    height: 26px;
502
    outline: medium none;
503
    position: absolute;
504
    right: 3px;
505
    top: 3px;
506
    width: 25px;
507
}
508
509
.jqTransformSelectWrapper ul {
510
    background: none repeat scroll 0 0 #FFFFFF;
511
    border: 1px solid #A0A09A;
512
    -webkit-border-radius: 7px;
513
    -moz-border-radius: 7px;
514
    border-radius: 7px;
515
    height: auto !important;
516
    padding: 5px 0 !important;
517
    position: absolute;
518
    width: 100% !important;
519
}
520
.jqTransformSelectWrapper ul li {
521
    background: none repeat scroll 0 0 transparent !important;
522
    list-style: none outside none !important;
523
    margin: 0 !important;
524
    padding: 0 5px !important;
525
}
526
.jqTransformSelectWrapper ul li a {
527
    color: #252525 !important;
528
    display: block;
529
    font-family: Arial,Helvetica,sans-serif;
530
    font-size: 13px;
531
    font-weight: normal;
532
    padding-left: 5px;
533
    text-decoration: none;
534
}
535
.jqTransformSelectWrapper ul li a:hover {
536
    background: none repeat scroll 0 0 #F5F5F4;
537
}
538
539
540
/* ================================
541
 * !Footer
542
 * ================================*/
543
544
#main_footer {
545
    padding:0 30px;
546
    font-family:"Lucida Grande", Arial;
547
    margin-bottom: 65px;
548
}
549
550
#main_footer .colleft {
551
    float:left;
552
    margin-top:8px;
553
}
554
555
#main_footer .colleft ul {
556
    padding:0;
557
}
558
559
#main_footer .colleft li {
560
    display:inline;
561
    list-style:none;
562
}
563
564
#main_footer .colleft li.first {
565
    background:url(../../images/img_sep_footer.png) no-repeat right top;
566
    padding-right: 8px;
567
    margin-right: 10px;
568
}
569
570
#main_footer .colleft li a {
571
    color:#4f91b0;
572
    text-decoration:none;
573
    font-size:14px;
574
    font-weight: normal;
575
}
576
#main_footer .colleft li a:hover {
577
    color:#00a5e2;
578
}
579
580
#main_footer .colleft .copy {
581
    font-size:12px;
582
    color:#5f5f5f;
583
    margin-top:10px;
584
}
585
586
#main_footer .colright {
587
    float:right;
588
    width: auto;
589
}
590
591
#main_footer .colright .koha {
592
    float:left;
593
    background: url(../../images/img_logo_koha.jpg) no-repeat bottom right;
594
    width: 168px;
595
    height: 40px;
596
}
597
#main_footer .colright .koha a {
598
    display:block;
599
    padding:0;
600
    width: 168px;
601
    height: 40px;
602
    color:#5f5f5f;
603
    text-decoration: none;
604
    font-weight: normal;
605
}
606
607
div#changelanguage {
608
    padding-bottom: 2em;
609
}
610
611
612
/* ================================
613
 * !Page : Search results
614
 * ================================*/
615
616
/* breacrumbs */
617
618
body#results #breadcrumbs {
619
    margin: -1px 0 17px 2px;
620
    padding: 0;
621
}
622
body#results #breadcrumbs p {
623
    font: normal 11px/11px Arial;
624
    margin: 0;
625
    padding: 0;
626
}
627
body#results #breadcrumbs p a {
628
    color: #007fae;
629
    display: inline;
630
    text-decoration: none;
631
}
632
body#results #breadcrumbs p a:hover {
633
    color: #00a5e2;
634
}
635
636
body#results #breadcrumbs p a img {
637
    vertical-align: middle;
638
}
639
640
body#results #breadcrumbs p .rsaquo {
641
    color: #8d8d89;
642
    font-size: 20px;
643
    line-height: 11px;
644
    vertical-align: sub;
645
}
646
647
/* IE7 Hack */
648
*:first-child+html body#results #breadcrumbs p span {
649
    display: inline;
650
    font-size: 11px;
651
    font-weight: bold;
652
    vertical-align: top;
653
}
654
655
body#results #breadcrumbs p strong {
656
    color: #5f5f5f;
657
}
658
659
.nb_results {
660
    font-weight: bold;
661
}
662
663
/* search-facets */
664
665
body#results #search-facets {
666
    border: none;
667
}
668
body#results #search-facets h4 {
669
    background: none;
670
    border-bottom: 1px solid #E8E8E8;
671
    font-size: 90%;
672
    margin: 0 9px 10px 0;
673
    padding: 13px 0 7px;
674
    text-align: left;
675
}
676
677
body#results #search-facets a {
678
    color: #007fae;
679
}
680
body#results #search-facets a:hover {
681
    color: #00a5e2;
682
}
683
684
685
/* userresults */
686
687
body#results div#userresults {
688
    border-left: 1px solid #c8c8c4;
689
    padding: 0 20px 0;
690
}
691
692
693
/* searchresults */
694
695
body#results tr {
696
    border: none;
697
}
698
body#results tr td {
699
    background: #fff url("../../images/bg-result-light.png") repeat-x 0 0;
700
    border-top: 1px solid #c8c8c4;
701
    border-bottom: none;
702
    height: 115px;
703
    padding-top: 15px;
704
}
705
706
body#results .searchresults td.resultscontrol {
707
    background: #ddddda url("../../images/bg-results-control.png") repeat-x 0 100%;
708
    -moz-border-radius-topleft: 6px;
709
    -moz-border-radius-topright: 6px;
710
    -moz-border-radius-bottomright: 0px;
711
    -moz-border-radius-bottomleft: 0px;
712
    -webkit-border-radius: 6px 6px 0px 0px;
713
    border-radius: 6px 6px 0px 0px;
714
    border: none;
715
    border-bottom: 1px solid #b0b0ae;
716
    padding: 2px 7px 6px;
717
    height: auto;
718
}
719
720
721
/* Navigation */
722
723
body#results a.nav:link, div.pages a:link {
724
    background-color: #EEEEEE;
725
    border: 1px solid #CCCC99;
726
    color: #007FAE;
727
    font-weight: bold;
728
    padding: 1px 5px;
729
    text-decoration: none;
730
}
731
body#results a.nav:hover, div.pages a:hover {
732
    color: #00A5E2;
733
}
734
735
736
737
/* ================================
738
 * !Page : Opac detail
739
 * ================================*/
740
741
body#opac-detail .nav_results ul.pg_menu {
742
    display: table;
743
    height: auto;
744
    overflow: hidden;
745
    padding: 0;
746
    width: 100%;
747
}
748
body#opac-detail .nav_results ul.pg_menu li {
749
    display: table-cell;
750
    float: none;
751
}
(-)a/koha-tmpl/opac-tmpl/ccsr/en/css/datatables.css (-265 lines)
Lines 1-265 Link Here
1
input.search_init {
2
    color: #999999;
3
}
4
.sorting_asc {
5
    padding-right: 19px;
6
    background: url("../../img/asc.gif") no-repeat scroll right center #EEEEEE;
7
}
8
.sorting_desc {
9
    padding-right: 19px;
10
    background: url("../../img/desc.gif") no-repeat scroll right center #EEEEEE;
11
}
12
.sorting {
13
    padding-right: 19px;
14
    background: url("../../img/ascdesc.gif") no-repeat scroll right center #EEEEEE;
15
}
16
.sorting_asc_disabled {
17
    padding-right: 19px;
18
    background: url("../../img/datatables/sort_asc_disabled.png") no-repeat scroll right center #EEEEEE;
19
}
20
.sorting_desc_disabled {
21
    padding-right: 19px;
22
    background: url("../../img/datatables/sort_desc_disabled.png") no-repeat scroll right center #EEEEEE;
23
}
24
.sorting_disabled {
25
    padding-right: 19px;
26
    background-color: #EEEEEE;
27
}
28
29
div.top {clear : both; }
30
31
div.top.pager,
32
div.bottom.pager {
33
    background-color : #E5E5E5;
34
    padding : 0;
35
}
36
37
div.bottom.pager div.dataTables_paginate.paging_full_numbers,
38
div.bottom.pager div.dataTables_paginate.paging_four_button {
39
    border-right-width : 0;
40
}
41
42
div.dataTables_filter,
43
div.dataTables_length,
44
div.dataTables_info,
45
div.dataTables_paginate {
46
    float: left;
47
    padding : .3em .5em .3em .5em;
48
49
}
50
div.dataTables_length {
51
    border-right : 1px solid #686868;
52
    line-height:1.9em;
53
}
54
div.dataTables_info {
55
    border-right : 1px solid #AAA;
56
    line-height:1.9em;
57
}
58
div.dataTables_length,
59
div.dataTables_filter {
60
    border-left : 1px solid #FFF;
61
}
62
div.dataTables_filter {
63
    line-height : 1.9em;
64
}
65
div.dataTables_paginate {
66
    background-color : #F4F4F4;
67
    font-size: 110%;
68
    padding : 0;
69
}
70
71
.paging_full_numbers span.paginate_button,
72
.paging_full_numbers span.paginate_active {
73
    border-right : 1px solid #AAA;
74
    border-left : 1px solid #FFF;
75
    display : block;
76
    float : left;
77
    line-height:1.6em;
78
    padding: .3em .7em;
79
    cursor: pointer;
80
}
81
82
.paging_full_numbers span.paginate_button {
83
    color : #0000CC;
84
}
85
.paging_full_numbers span.paginate_button.first {
86
    background-image : url('../../img/first.png');
87
    background-repeat: no-repeat;
88
    background-position : 2px center;
89
    padding-left : 2em;
90
}
91
.paging_full_numbers span.paginate_button.previous {
92
    background-image : url('../../img/prev.png');
93
    background-repeat: no-repeat;
94
    background-position : 2px center;
95
    padding-left : 2em;
96
}
97
.paging_full_numbers span.paginate_button.next {
98
    background-image : url('../../img/next.png');
99
    background-repeat: no-repeat;
100
    background-position : right center;
101
    padding-right : 2em;
102
}
103
.paging_full_numbers span.paginate_button.last {
104
    background-image : url('../../img/last.png');
105
    background-repeat: no-repeat;
106
    background-position : right center;
107
    border-right : 1px solid #686868;
108
    padding-right : 2em;
109
}
110
div.bottom.pager .paging_full_numbers span.paginate_button.last {
111
    border-right-width : 0;
112
}
113
.paging_full_numbers span.paginate_active {
114
    background-color : #FFFFEA;
115
    color : #000;
116
    font-weight: bold;
117
}
118
119
.paging_full_numbers span.paginate_button:hover {
120
    background-color: #FFC;
121
}
122
123
.paging_full_numbers span.paginate_button.paginate_button_disabled {
124
    color : #666;
125
}
126
127
/* Two-button version */
128
129
div.dataTables_paginate.paging_two_button,
130
div.dataTables_paginate.paging_four_button {
131
    background-color : transparent;
132
    border-right : 1px solid #686868;
133
    border-left : 1px solid #FFF;
134
    line-height : 1.8em;
135
}
136
.paginate_disabled_first,
137
.paginate_enabled_first,
138
.paginate_disabled_previous,
139
.paginate_enabled_previous,
140
.paginate_disabled_next,
141
.paginate_enabled_next,
142
.paginate_disabled_last,
143
.paginate_enabled_last {
144
    float: left;
145
    height: 16px;
146
    margin: .5em;
147
    width: 16px;
148
}
149
.paginate_disabled_first {
150
    background-image: url("../../img/first-disabled.png");
151
}
152
.paginate_enabled_first {
153
    background-image: url("../../img/first.png");
154
    cursor: pointer;
155
}
156
.paginate_disabled_previous {
157
    background-image: url("../../img/prev-disabled.png");
158
}
159
.paginate_enabled_previous {
160
    background-image: url("../../img/prev.png");
161
    cursor: pointer;
162
}
163
.paginate_disabled_next {
164
    background-image: url("../../img/next-disabled.png");
165
}
166
.paginate_enabled_next {
167
    background-image: url("../../img/next.png");
168
    cursor: pointer;
169
}
170
.paginate_disabled_last {
171
    background-image: url("../../img/last-disabled.png");
172
}
173
.paginate_enabled_last {
174
    background-image: url("../../img/last.png");
175
    cursor: pointer;
176
}
177
178
179
/*
180
table.display {
181
    width: 100%;
182
}
183
table.display thead th {
184
    border-bottom: 1px solid black;
185
    cursor: pointer;
186
    font-weight: bold;
187
    padding: 3px 18px 3px 10px;
188
}
189
.dataTables_wrapper {
190
    clear: both;
191
    position: relative;
192
}
193
.dataTables_processing {
194
    background-color: white;
195
    border: 1px solid #DDDDDD;
196
    color: #999999;
197
    font-size: 14px;
198
    height: 30px;
199
    left: 50%;
200
    margin-left: -125px;
201
    margin-top: -15px;
202
    padding: 14px 0 2px;
203
    position: fixed;
204
    text-align: center;
205
    top: 50%;
206
    width: 250px;
207
}
208
.dataTables_info {
209
    float: left;
210
    width: 60%;
211
}
212
.dataTables_paginate {
213
    float: right;
214
    text-align: right;
215
    width: 44px;
216
}
217
.paging_full_numbers {
218
    height: 22px;
219
    line-height: 22px;
220
    width: 400px;
221
}
222
.paging_full_numbers span.paginate_button,
223
     .paging_full_numbers span.paginate_active {
224
    border: 1px solid #aaa;
225
    -webkit-border-radius: 5px;
226
    -moz-border-radius: 5px;
227
    padding: 2px 5px;
228
    margin: 0 3px;
229
    cursor: pointer;
230
    *cursor: hand;
231
}
232
233
.paging_full_numbers span.paginate_button {
234
    background-color: #ddd;
235
}
236
237
.paging_full_numbers span.paginate_button:hover {
238
    background-color: #ccc;
239
}
240
241
.paging_full_numbers span.paginate_active {
242
    background-color: #99B3FF;
243
}
244
.paginate_disabled_previous, .paginate_enabled_previous, .paginate_disabled_next, .paginate_enabled_next {
245
    float: left;
246
    height: 19px;
247
    margin-left: 3px;
248
    width: 19px;
249
}
250
.paginate_disabled_previous {
251
    background-image: url("../../img/datatables/back_disabled.jpg");
252
}
253
.paginate_enabled_previous {
254
    background-image: url("../../img/datatables/back_enabled.jpg");
255
}
256
.paginate_disabled_next {
257
    background-image: url("../../img/datatables/forward_disabled.jpg");
258
}
259
.paginate_enabled_next {
260
    background-image: url("../../img/datatables/forward_enabled.jpg");
261
}
262
.spacer {
263
    clear: both;
264
    height: 20px;
265
}
(-)a/koha-tmpl/opac-tmpl/ccsr/en/css/hierarchy.css (-105 lines)
Lines 1-105 Link Here
1
.hierarchies {
2
 background-color:#fff;
3
 color:#000000;
4
 padding:5px;
5
   margin-left:50px;
6
      -moz-border-radius:6px;
7
        display:block;
8
 font-size:10px;
9
}
10
.hierarchy {
11
 padding:5px;
12
   width:90%;
13
     -moz-border-radius:6px;
14
        display:block;
15
}
16
.child {
17
      display:none;
18
    margin-left : 50px;
19
    width:150%;
20
}
21
.child a:hover{
22
  background-color:#BFCFFF;
23
}
24
.parent {
25
        display:none;
26
    margin-left : -50px;
27
}
28
.parent a:hover{
29
  background-color:#BFCFFF;
30
}
31
.child0{
32
  width : 20%;
33
  text-align : left;
34
}
35
.child0 a:hover{
36
  background-color:#BFCFFF;
37
}
38
.child1{
39
  width : 20%;
40
  text-align : left;
41
  margin-left : 50px;
42
}
43
.child1 a:hover{
44
  background-color:#BFCFFF;
45
}
46
.child2{
47
  width : 20%;
48
  text-align : left;
49
  margin-left : 100px;
50
}
51
.child2 a:hover{
52
  background-color:#BFCFFF;
53
}
54
.child3{
55
  width : 20%;
56
  text-align : left;
57
  margin-left : 150px;
58
}
59
.child3 a:hover{
60
  background-color:#BFCFFF;
61
}
62
.child4{
63
  width : 20%;
64
  text-align : left;
65
  margin-left : 200px;
66
}
67
.child4 a:hover{
68
  background-color:#BFCFFF;
69
}
70
.child5{
71
  width : 20%;
72
  text-align : left;
73
  margin-left : 250px;
74
}
75
.child5 a:hover{
76
  background-color:#BFCFFF;
77
}
78
.child6{
79
  width : 20%;
80
  text-align : left;
81
  margin-left : 300px;
82
}
83
.child6 a:hover{
84
  background-color:#BFCFFF;
85
}
86
.child7{
87
  width : 20%;
88
  text-align : left;
89
  margin-left : 350px;
90
}
91
.child7 a:hover{
92
  background-color:#BFCFFF;
93
}
94
.child8{
95
  width : 10%;
96
  text-align : left;
97
  margin-left : 400px;
98
}
99
.child8 a:hover{
100
  background-color:#BFCFFF;
101
}
102
.parents{
103
  display:inline;
104
  cursor:crosshair;
105
}
(-)a/koha-tmpl/opac-tmpl/ccsr/en/css/jquery.rating.css (-14 lines)
Lines 1-14 Link Here
1
/* jQuery.Rating Plugin CSS - http://www.fyneworks.com/jquery/star-rating/ */
2
div.rating-cancel,div.star-rating{float:left;width:15px;height:15px;text-indent:-999em;cursor:pointer;display:block;background:transparent;overflow:hidden}
3
div.rating-cancel,div.rating-cancel a{background:url(../../images/star-ratings-sprite.png) no-repeat 0 -49px}
4
div.star-rating,div.star-rating a{background:url(../../images/star-ratings-sprite.png) no-repeat 0 0px}
5
div.rating-cancel a{display:block;width:16px;height:100%;background-position:0 -49px;border:0}
6
div.star-rating a{display:block;width:16px;height:100%;background-position:0 0px;border:0}
7
div.star-rating-on a{background-position:0 -32px!important}
8
div.rating-cancel.star-rating-hover a{background-position:0 -65px}
9
div.star-rating-hover a{background-position:0 -16px}
10
/* Read Only CSS */
11
div.star-rating-readonly a{cursor:default !important}
12
/* Partial Star CSS */
13
div.star-rating{background:transparent!important;overflow:hidden!important}
14
/* END jQuery.Rating Plugin CSS */
(-)a/koha-tmpl/opac-tmpl/ccsr/en/css/mobile.css (-628 lines)
Lines 1-628 Link Here
1
/*
2
    Mobile stylesheet
3
    Frédérick Capovilla, 2012 - Libéo
4
*/
5
6
/* Hidden elements */
7
8
.mobile-hidden,
9
body#opac-main #login,
10
body#opac-main #login~div,
11
body#opac-main #opacnav,
12
body#opac-main #opacmainuserblock,
13
body#results #facetcontainer,
14
body#opac-detail #ulactioncontainer>:not(#action),
15
body#opac-detail #ulactioncontainer #action a:not(.reserve),
16
body#opac-detail #shelfbrowser,
17
body#opac-detail #views,
18
body#opac-detail div#bibliodescriptions>ul>li:nth-of-type(n+3),
19
body#results #userresults .pages:nth-of-type(1),
20
body#results #userresults>br,
21
body#results td.select.selectcol,
22
body#results span.results_summary.actions>:not(.hold),
23
body#results span.addto,
24
body#results span#placehold,
25
body#results span.checkall,
26
body#results span.clearall,
27
body#results .searchresults td.resultscontrol,
28
body#advsearch form div.yui-g:nth-last-of-type(-n+4),
29
body#opac-readingrecord ul.ui-tabs-nav li,
30
body#opac-login-page #opac-main-search div#libraryname,
31
#leftmenus>:not(#menu),
32
#top-bar #menu-left,
33
#members>ul>li:nth-child(2),
34
#moresearches,
35
#breadcrumbs>p:nth-of-type(1),
36
#main_footer .colleft,
37
#opac-main-search a.logo {
38
    display:none !important;
39
}
40
41
42
/* General */
43
44
body{
45
    min-width: 100px;
46
}
47
48
#doc, #doc2, #doc3, #doc4, .yui-t1, .yui-t2, .yui-t3, .yui-t4, .yui-t5, .yui-t6, .yui-t7 {
49
    min-width: 100px;
50
}
51
52
.yui-ge div.first, .yui-gf .yui-g, .yui-gf .yui-u{
53
    width: 100%;
54
}
55
56
#bd:after, .yui-g:after, .yui-gb:after, .yui-gc:after, .yui-gd:after, .yui-ge:after, .yui-gf:after {
57
    content: "";
58
}
59
60
#container{
61
    border-radius: 0;
62
    margin: 0;
63
    padding: 0;
64
    padding-bottom: 10px;
65
    border: 0;
66
}
67
68
#container #ctn_lt {
69
    padding: 0 10px;
70
    padding-left: auto;
71
}
72
73
#doc3{
74
    margin: 0;
75
    width: 100%;
76
}
77
78
#opac-main-search {
79
    margin: 0 !important;
80
    padding: 0;
81
}
82
83
#main_footer{
84
    margin-bottom: 0;
85
}
86
87
#yui-main .yui-b {
88
    margin: 0 !important;
89
}
90
91
#breadcrumbs{
92
    margin: 0 !important;
93
    padding: 0 !important;
94
}
95
96
body#results #breadcrumbs>*{
97
    padding: 20px !important;
98
}
99
100
101
/* Main */
102
103
body#opac-main #container #ctn_lt{
104
    padding: 15px;
105
}
106
107
body#opac-main #opacmainuserblockmobile {
108
    display: block;
109
}
110
111
#news.container {
112
    display: block;
113
    margin: 0em;
114
}
115
116
117
118
/* Results */
119
120
body#results div#userresults {
121
    padding: 0;
122
    border: 0;
123
}
124
125
body#results .yui-t1 #yui-main .yui-b {
126
    margin: 0;
127
}
128
129
body#results #container #ctn_lt{
130
    padding: 0;
131
}
132
133
body#results .searchresults td.resultscontrol{
134
    border-radius: 0;
135
}
136
137
body#results .searchresults .resort{
138
    width: 50%;
139
    float:right;
140
}
141
142
body#results .searchresults #sort_by{
143
    width: 100%;
144
}
145
146
body#results .searchresults .cartlist{
147
    width:50%;
148
}
149
150
body#results .results_summary.actions .hold {
151
    font-size: 140%;
152
    font-weight: bold;
153
    margin-left: 0;
154
}
155
156
157
/* Cancel highlighting */
158
159
a .term {
160
    text-decoration: inherit;
161
}
162
163
.term {
164
    background-color: inherit;
165
    color: inherit;
166
}
167
168
169
/* Details */
170
171
body#opac-detail #ctn_lt,
172
body#opac-marcdetail #ctn_lt,
173
body#opac-isbddetail #ctn_lt{
174
    margin: 10px;
175
    padding: 0;
176
}
177
178
body#opac-detail #opac-detail-yui-ge {
179
    padding-top: 15px;
180
}
181
182
#views>span {
183
    display:block;
184
}
185
186
body#opac-detail #ulactioncontainer{
187
    position: absolute;
188
    top: 0;
189
    right: 0;
190
}
191
192
body#opac-detail #container {
193
    position: relative;
194
}
195
196
body#opac-detail #ulactioncontainer ul{
197
    margin-top: 0;
198
    padding: 5px;
199
}
200
201
body#opac-detail #ulactioncontainer li{
202
    margin: 0;
203
    padding: 0;
204
}
205
206
/* Logo in the footer */
207
208
#opac-main-search div#libraryname {
209
    display: block;
210
    position: absolute;
211
    bottom: -116px;
212
    left: 0;
213
    padding: 0 20px;
214
}
215
216
#opac-main-search div#libraryname img {
217
    display: block;
218
}
219
220
#doc3{
221
    position: relative;
222
}
223
224
#main_footer {
225
    padding-top: 29px;
226
}
227
228
#main_footer .colright,
229
#main_footer .colleft{
230
    float: none;
231
}
232
233
#main_footer .colright .koha{
234
    float: right;
235
    overflow: hidden;
236
    text-indent: -5000em;
237
    width: 92px;
238
    height: 80px;
239
    background-position: center;
240
}
241
242
243
/* Login bar */
244
245
div#top-bar {
246
    display: block;
247
    position: absolute;
248
    left: 0;
249
    bottom: -29px;
250
    top: auto;
251
    overflow: hidden;
252
    z-index: auto;
253
}
254
255
#members ul{
256
    margin: 0;
257
}
258
259
260
/* Search bar */
261
262
form#searchform {
263
    border-radius: 0;
264
    padding-top: 50px;
265
}
266
267
form#searchform #filters .jqTransformSelectWrapper,
268
form#searchform #libraries .jqTransformSelectWrapper {
269
    position: relative;
270
    left: 0;
271
    top: 0;
272
    border-radius: 3px;
273
}
274
275
form.multi-libraries #filters .jqTransformSelectWrapper{
276
    width: 49% !important;
277
    float: left;
278
}
279
280
form.multi-libraries #libraries .jqTransformSelectWrapper{
281
    width: 49% !important;
282
    float: right;
283
}
284
285
form.single-library #filters .jqTransformSelectWrapper,
286
form.multi-libraries.single-field-mobile #filters .jqTransformSelectWrapper,
287
form.multi-libraries.single-field-mobile #libraries .jqTransformSelectWrapper{
288
    width: 100% !important;
289
    float:left;
290
}
291
292
form.multi-libraries .input-wrapper{
293
    margin: 0;
294
}
295
296
form#searchform .input-wrapper input[type="text"]{
297
    -webkit-box-sizing: border-box;
298
    -moz-box-sizing: border-box;
299
    box-sizing: border-box;
300
    border-radius: 3px;
301
}
302
303
form#searchform .input-wrapper{
304
    -webkit-box-sizing: border-box;
305
    -moz-box-sizing: border-box;
306
    box-sizing: border-box;
307
    position: absolute;
308
    top: 15px;
309
    left: 0;
310
    width: 100%;
311
    padding: 0 10px;
312
    padding-right: 46px;
313
}
314
315
form#searchform input[type="submit"]{
316
    position: absolute;
317
    border-radius: 0;
318
    top: 15px;
319
    right: 10px;
320
}
321
322
.jqTransformSelectWrapper{
323
    margin: 0;
324
}
325
326
.jqTransformSelectWrapper div{
327
    overflow: hidden;
328
}
329
330
.jqTransformSelectWrapper div span{
331
    white-space:nowrap;
332
}
333
334
.jqTransformSelectWrapper div a{
335
    border-left: 5px solid #FFF;
336
    border-right: 5px solid #FFF;
337
    background-color: white;
338
    box-shadow: -3px 0 5px #FFF;
339
    right: 0px;
340
    border-radius: 8px;
341
}
342
343
.jqTransformSelectWrapper ul li a{
344
    padding: 10px 0;
345
}
346
347
#opac-main-search #fluid {
348
    display: block;
349
}
350
351
352
/* Login screen */
353
354
#holds, #opac-auth {
355
    min-width: 0;
356
    width: auto;
357
}
358
359
360
/* User */
361
362
body#opac-user .yui-b,
363
body#opac-passwd .yui-b,
364
body#opac-search-history .yui-b,
365
body#opac-readingrecord .yui-b,
366
body#opac-userupdate .yui-b,
367
body#opac-account .yui-b{
368
    width: auto;
369
    float: none;
370
}
371
372
body#opac-user #yui-main ,
373
body#opac-passwd #yui-main ,
374
body#opac-search-history #yui-main ,
375
body#opac-readingrecord #yui-main ,
376
body#opac-userupdate #yui-main ,
377
body#opac-account #yui-main {
378
    float: none;
379
    margin: 0;
380
}
381
382
body#opac-userupdate .yui-g .yui-u{
383
    width: 100%;
384
}
385
386
body#opac-passwd fieldset,
387
body#opac-userupdate fieldset{
388
    margin: 1em 0;
389
}
390
391
.renewals {
392
    display: inline;
393
}
394
395
396
/* Tables */
397
398
body#opac-user #checkoutst td.links,
399
body#opac-user thead,
400
body#opac-holds div:not(.calendar) table>tbody>tr:nth-child(1),
401
body#opac-readingrecord #readingrec tr:nth-child(1),
402
body#opac-detail #holdingst thead,
403
body#opac-detail #holdingst td.call_no a{
404
    display: none !important;
405
}
406
407
body#opac-detail table#holdingst,
408
body#opac-readingrecord table,
409
body#opac-holds div:not(.calendar) table,
410
body#opac-user table#holdst,
411
body#opac-user table#checkoutst{
412
    border-right: none;
413
    border-top: none;
414
    border: none;
415
    counter-reset: item;
416
}
417
418
body#opac-detail #holdingst tr,
419
body#opac-readingrecord tr,
420
body#opac-holds div:not(.calendar) tr,
421
body#opac-user #holdst tr,
422
body#opac-user #checkoutst tr{
423
    border: none;
424
    display: block;
425
    position: relative;
426
    margin-left: 10px;
427
    margin-bottom: 10px;
428
}
429
430
body#opac-detail #holdingst td,
431
body#opac-readingrecord td,
432
body#opac-holds div:not(.calendar) td,
433
body#opac-user #holdst td,
434
body#opac-user #checkoutst td{
435
    display: block;
436
    border: 1px solid #DDD;
437
    position: relative;
438
}
439
440
body#opac-user #checkoutst caption {
441
    display: block;
442
}
443
444
body#opac-detail #holdingst tr:before,
445
body#opac-readingrecord tr:before,
446
body#opac-holds div:not(.calendar) tr:not(.copiesrow):before,
447
body#opac-user #holdst tr:before,
448
body#opac-user #checkoutst tr:before {
449
    font-weight: bold;
450
    content: counter(item) ". ";
451
    counter-increment: item;
452
    display: block;
453
    position: absolute;
454
    left: -13px;
455
    top: 4px;
456
}
457
458
body#opac-detail #holdingst td:before,
459
body#opac-readingrecord td:before,
460
body#opac-holds div:not(.calendar) td:before,
461
body#opac-user #holdst td:before,
462
body#opac-user #checkoutst td:before {
463
    font-weight: bold;
464
}
465
466
body#opac-detail #holdingst td.itype:before {content: "Item type : ";}
467
body#opac-detail #holdingst td.location:before {content: "Location : ";}
468
body#opac-detail #holdingst td.collection:before {content: "Collection : ";}
469
body#opac-detail #holdingst td.call_no:before {content: "Call Number : ";}
470
body#opac-detail #holdingst td.vol_info:before {content: "Vol Info : ";}
471
body#opac-detail #holdingst td.url:before {content: "URL : ";}
472
body#opac-detail #holdingst td.copynumber:before {content: "Copy Number : ";}
473
body#opac-detail #holdingst td.status:before {content: "Status : ";}
474
body#opac-detail #holdingst td.notes:before {content: "Notes : ";}
475
body#opac-detail #holdingst td.date_due:before {content: "Date Due : ";}
476
body#opac-detail #holdingst td.barcode:before {content: "Barcode : ";}
477
body#opac-detail #holdingst td.holds_count:before {content: "Item holds : ";}
478
479
body#opac-user #checkoutst td.date_due:before {content: "Date due : ";}
480
body#opac-user #checkoutst td.call_no:before {content: "Call No. : ";}
481
body#opac-user #checkoutst td.fines:before {content: "Fines : ";}
482
483
body#opac-user #holdst td.reservedate:before {content: "Placed On : ";}
484
body#opac-user #holdst td.expirationdate:before {content: "Expires On : ";}
485
body#opac-user #holdst td.branch:before {content: "Pick Up Location : ";}
486
body#opac-user #holdst td.priority:before {content: "Priority : ";}
487
body#opac-user #holdst td.status:before {content: "Status : ";}
488
489
body#opac-readingrecord #readingrec td:nth-child(3):before {content: "Item Type : ";}
490
body#opac-readingrecord #readingrec td:nth-child(4):before {content: "Call No. : ";}
491
body#opac-readingrecord #readingrec td:nth-child(5):before {content: "Date : ";}
492
493
body#opac-holds #bibitemloop>tbody>tr:not(.copiesrow) td.hold:before {content: "Hold : ";}
494
body#opac-holds #bibitemloop>tbody>tr:not(.copiesrow) td.itype:before {content: "Item Type : ";}
495
body#opac-holds #bibitemloop>tbody>tr:not(.copiesrow) td.priority:before {content: "Priority : ";}
496
body#opac-holds #bibitemloop>tbody>tr:not(.copiesrow) td.reserve_date:before {content: "Hold Starts On Date : ";}
497
body#opac-holds #bibitemloop>tbody>tr:not(.copiesrow) td.expiration_date:before {content: "Hold Not Needed After : ";}
498
body#opac-holds #bibitemloop>tbody>tr:not(.copiesrow) td.place_on_type:before {content: "Place On : ";}
499
body#opac-holds #bibitemloop>tbody>tr:not(.copiesrow) td.branch:before {content: "Pickup Location : ";}
500
501
body#opac-holds #bibitemloop table td.copynumber:before {content: "Copy Number : ";}
502
body#opac-holds #bibitemloop table td.itype:before {content: "Item Type : ";}
503
body#opac-holds #bibitemloop table td.barcode:before {content: "Barcode : ";}
504
body#opac-holds #bibitemloop table td.homebranch:before {content: "Home Library : ";}
505
body#opac-holds #bibitemloop table td.holdingbranch:before {content: "Last Location : ";}
506
body#opac-holds #bibitemloop table td.call_no:before {content: "Call Number : ";}
507
body#opac-holds #bibitemloop table td.vol_info:before {content: "Vol Info : ";}
508
body#opac-holds #bibitemloop table td.information:before {content: "Information : ";}
509
510
511
/* Holds */
512
513
body#opac-holds tr.copiesrow {
514
    margin-left: 25px;
515
}
516
517
body#opac-holds tr.copiesrow>td:nth-child(1) {
518
    display: none;
519
}
520
521
body#opac-holds #bibitemloop tr {
522
    margin-bottom: 0;
523
}
524
525
526
/* User Fines table */
527
528
body#opac-account #useraccount th:nth-child(3),
529
body#opac-account #useraccount td:nth-child(3) {
530
    display: none !important;
531
}
532
533
body#opac-account #useraccount table {
534
    position: relative;
535
    margin-bottom: 50px;
536
}
537
538
body#opac-account #useraccount tfoot {
539
    display: block;
540
    position: absolute;
541
    bottom: 0;
542
    right: 0;
543
    bottom: -23px;
544
}
545
546
body#opac-account #useraccount thead th {
547
    padding: 2px 10px;
548
}
549
550
body#opac-account #useraccount tbody td:nth-child(1) {
551
    min-width: 70px;
552
}
553
554
body#opac-account #useraccount tbody td:nth-child(4) {
555
    text-align: right;
556
}
557
558
body#opac-account #useraccount tfoot th {
559
    display: none;
560
}
561
562
body#opac-account #useraccount tfoot td {
563
    border-right: 1px solid #DDD;
564
}
565
566
body#opac-account #useraccount tfoot td:before {
567
    content: "Total due : "
568
}
569
570
571
/* User menu */
572
573
#leftmenus>#menu ul li.messaging,
574
#leftmenus>#menu ul li.suggestions,
575
#leftmenus>#menu ul li.privateshelves,
576
#leftmenus>#menu {
577
    display: none;
578
}
579
580
.mobile_only {
581
    display: block;
582
}
583
584
body.mobile_menu form#searchform .input-wrapper{
585
    padding-left: 90px;
586
}
587
588
body.mobile_menu_opened #doc3>div,
589
body.mobile_menu_opened #main_footer>div {
590
    position: relative;
591
    left: 200px;
592
}
593
594
body.mobile_menu_opened #main_footer {
595
    display: none;
596
}
597
598
body.mobile_menu_opened #doc3 {
599
    overflow: hidden;
600
    min-height: 380px;
601
}
602
603
body.mobile_menu_opened #ctn_rb>.ctn_in>.yui-b {
604
    position: static;
605
}
606
607
body.mobile_menu_opened #leftmenus>#menu {
608
    display: block;
609
    position: absolute;
610
    width: 200px;
611
    height: 100%;
612
    top: 0;
613
    left: -201px;
614
    padding: 0;
615
    z-index: 999;
616
}
617
618
#mobile_menu_button {
619
    position: absolute;
620
    cursor: pointer;
621
    background: url(../../images/mobile-menu-button.png) no-repeat scroll 50% 50%;
622
    border: 0px;
623
    font-size: 0;
624
    width: 76px;
625
    height: 38px;
626
    top: 13px;
627
    left: 6px;
628
}
(-)a/koha-tmpl/opac-tmpl/ccsr/en/css/opac.css (-2871 lines)
Lines 1-2871 Link Here
1
@import url("../../../lib/yui/reset-fonts-grids.css");
2
@import url("../../../lib/yui/skin.css");
3
4
#doc3 {
5
    padding-top: 35px;
6
}
7
8
a {
9
      font-weight : bold;
10
}
11
12
a,
13
a:visited,
14
.ui-widget-content a,
15
.ui-widget-content a:visited {
16
      color : #006699;
17
}
18
19
a:hover,#toolbar input.editshelf:hover,input.editshelf:hover,a.editshelf:hover,input.deleteshelf:hover {
20
   color : #990033;
21
}
22
23
a.disabled {
24
       color : #888888 !important;
25
}
26
27
a.ButtonPlus, a.ButtonLess {
28
       text-decoration : none;
29
}
30
31
body {
32
  background-color : white;
33
      text-align : left;
34
     padding : 0 0 2.5em 0;
35
}
36
37
.required {
38
    color : #C00;
39
}
40
41
caption {
42
   font-size : 140%;
43
      font-weight : bold;
44
    line-height : 144%;
45
    text-align : left;
46
}
47
48
fieldset {
49
       background-color: #FFF;
50
        border : 2px solid #EEEEEE;
51
    margin : 1em 1em 1em 0;
52
        padding : 1em;
53
}
54
55
fieldset.rows {
56
      border-width : 1px;
57
    border-bottom : 1px solid black;
58
       float : left;
59
  font-size : 90%;
60
       clear : left;
61
  margin: .9em 0 0 0;
62
    padding: 0;
63
    width: 100%;
64
}
65
66
fieldset.rows legend {
67
 margin-left: 1em;
68
      font-weight: bold;
69
     font-size : 110%;
70
}
71
72
fieldset.rows label, fieldset.rows span.label {
73
   float: left;
74
   font-weight : bold;
75
    width: 9em;
76
    margin-right: 1em;
77
     text-align: right;
78
}
79
80
fieldset.rows fieldset {
81
 border-width : 1px;
82
    margin : 0;
83
    padding : .3em;
84
}
85
86
fieldset.rows ol {
87
  padding: 1em 1em 0 1em;
88
        list-style-type: none;
89
}
90
91
fieldset.rows li {
92
   float : left;
93
  clear : left;
94
  padding-bottom: 1em;
95
   list-style-type: none;
96
 width: 100%;
97
}
98
99
fieldset.rows.left li {
100
        padding-bottom : .4em;
101
}
102
103
fieldset.rows li.radio {
104
     padding-left: 9em;
105
     width : auto;
106
}
107
108
fieldset.rows li.radio label {
109
        float : none;
110
  width : auto;
111
  margin : 0 0 0 1em;
112
}
113
114
fieldset.rows ol.radio label {
115
  width : auto;
116
  float : none;
117
  margin-right : 0;
118
}
119
120
fieldset.rows ol.radio label.radio {
121
      float : left;
122
  width : 12em;
123
  margin-right : 1em;
124
}
125
126
fieldset.rows table {
127
   clear : both;
128
  margin-left : 1em;
129
}
130
131
fieldset.rows td label {
132
 float : none;
133
  font-weight : normal;
134
  width : auto;
135
}
136
137
fieldset.holds {
138
      background-color : #F3F3F3;
139
    border: 0;
140
     font-size : 110%;
141
      padding : 1px;
142
}
143
144
fieldset.holds ol {
145
  margin : 0;
146
    padding : 0;
147
}
148
149
fieldset.holds li {
150
    background-color : #FFF;
151
       border-bottom : 1px solid #F3F3F3;
152
     padding : .3em;
153
}
154
155
fieldset.holds label, fieldset.holds span.label {
156
157
}
158
159
fieldset.action {
160
     clear : both;
161
  float : none;
162
  border : none;
163
 margin : 0;
164
    padding : 1em 0 .3em 0;
165
        width : auto;
166
}
167
168
fieldset.action p {
169
   margin-bottom : 1em;
170
}
171
172
form {
173
 display : inline;
174
      margin : 0;
175
    padding : 0;
176
}
177
178
h1 {
179
   font-size : 138.5%;
180
}
181
182
h1#library {
183
    font-size : 100%;
184
      font-weight : normal;
185
  margin : .2em 0 .2em .5em;
186
}
187
188
189
h1#libraryname {
190
        background:transparent url(../../images/koha-logo.gif) no-repeat scroll 0%;
191
    border: 0;
192
     float : left !important;
193
       margin:0;
194
      padding:0;
195
     width:120px;
196
}
197
198
h1#libraryname a {
199
     border:0;
200
      cursor:pointer;
201
        display:block;
202
 height:0px !important;
203
 margin:0;
204
      overflow:hidden;
205
       padding:40px 0 0;
206
      text-decoration:none;
207
  width:120px;
208
}
209
210
h1,h2,h3,h4,h5,h6 {
211
    font-weight : bold;
212
    margin : .5em 0;
213
}
214
215
h2 {
216
       font-size : 131%;
217
}
218
219
h5.author {
220
}
221
222
h3 {
223
       font-size : 123.1%;
224
}
225
226
h4 {
227
    font-size : 116%;
228
}
229
230
h5 {
231
      font-size : 108%;
232
}
233
234
h6 {
235
      font-size : 100%;
236
}
237
238
input[type=submit],
239
input[type=button],
240
input[type=reset],
241
fieldset.brief input[type=submit],
242
fieldset.brief input[type=button],
243
fieldset.brief input[type=reset]
244
{
245
       background: #f4f9fc; /* Old browsers */
246
        background: -moz-linear-gradient(top, #f4f9fc 0%, #dfeefa 4%, #bfd5ea 93%, #a1c4e2 97%, #b8d0e6 100%); /* FF3.6+ */
247
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f4f9fc), color-stop(4%,#dfeefa), color-stop(93%,#bfd5ea), color-stop(97%,#a1c4e2), color-stop(100%,#b8d0e6)); /* Chrome,Safari4+ */
248
 background: -webkit-linear-gradient(top, #f4f9fc 0%,#dfeefa 4%,#bfd5ea 93%,#a1c4e2 97%,#b8d0e6 100%); /* Chrome10+,Safari5.1+ */
249
       background: -o-linear-gradient(top, #f4f9fc 0%,#dfeefa 4%,#bfd5ea 93%,#a1c4e2 97%,#b8d0e6 100%); /* Opera11.10+ */
250
     background: -ms-linear-gradient(top, #f4f9fc 0%,#dfeefa 4%,#bfd5ea 93%,#a1c4e2 97%,#b8d0e6 100%); /* IE10+ */
251
       background: linear-gradient(top, #f4f9fc 0%,#dfeefa 4%,#bfd5ea 93%,#a1c4e2 97%,#b8d0e6 100%); /* W3C */
252
        border-top: 1px solid #cccccc;
253
 border-left: 1px solid #cccccc;
254
        border-right: 1px solid #eeeeee;
255
       border-bottom: 1px solid #eeeeee;
256
      color : #333;
257
  font-size : 93%;
258
       font-weight : bold;
259
    padding : 4px;
260
}
261
262
input[type=submit]:active, input[type=button]:active, input[type=reset]:active {
263
     border: 1px inset #666666;
264
}
265
266
td.resultscontrol,
267
.searchresults td.resultscontrol {
268
    background-color : #EEE;
269
       border : 1px solid #E8E8E8;
270
    vertical-align : middle;
271
       padding : 3px 3px 5px 5px;
272
}
273
274
table {
275
  background-color: #FFF;
276
        border-collapse : collapse;
277
    margin : 1em 0;
278
        border-right : 1px solid #dddddd;
279
      border-top : 1px solid #dddddd;
280
}
281
282
td,th {
283
     background-color: #FFF;
284
        border-left : 1px solid #dddddd;
285
       border-bottom : 1px solid #dddddd;
286
     padding : 3px 5px;
287
}
288
289
td.place_on_type table,
290
td.place_on_type table td {
291
      border : 0;
292
}
293
td caption {
294
     font-size : 105%;
295
}
296
297
th {
298
      background-color:#EEE;
299
 font-weight : bold;
300
    padding : 2px 23px;
301
    text-align : center;
302
}
303
304
th.sum {
305
       text-align: right;
306
}
307
308
td.sum {
309
 background-color: #FFC;
310
        font-weight: bold;
311
}
312
313
th[scope=row] {
314
  text-align : right;
315
}
316
317
tr.highlight td, tr.highlight th, tr.odd td {
318
   background-color : #F3F3F3;
319
   border-top : 1px solid #DDDDDD;
320
   border-bottom : 1px solid #DDDDDD;
321
}
322
323
tr.even td, tr.even.highlight td {
324
     background-color: #FFF;
325
}
326
327
tr.grouplabel td {
328
  background-color : #E8E8E8;
329
    border : 1px solid #DDDDDD;
330
    border-right : 1px solid #DDDDDD;
331
      text-align : center;
332
   font-weight : bold;
333
    padding: 10px;
334
}
335
336
tr.reserved td {
337
     background-color : #eeffd4;
338
}
339
tr.transfered td {
340
       background-color : #e8f0f6;
341
}
342
343
#editions table, #editions td {
344
 border : 0;
345
}
346
347
ul {
348
 list-style : disc;
349
     padding-left : 1em;
350
}
351
352
li {
353
    list-style : disc;
354
}
355
356
p.availability {
357
 font-size : 87%;
358
}
359
360
.available {
361
       color : #006600;
362
}
363
364
.waiting,.intransit,.notforloan,.checkedout,.lost,.notonhold {
365
     display : block;
366
}
367
.notforloan {
368
       color : #900;
369
}
370
.lost {
371
        color : #666;
372
}
373
.waiting {
374
375
}
376
377
/* "problem" enhancement */
378
.problem {
379
  color : white;
380
 background-color : red;
381
}
382
383
/* style for search terms in catalogsearch */
384
.term {
385
       /* color : blue; */
386
    color : #990000;
387
    background-color : #FFFFCC;
388
}
389
390
a .term {
391
  text-decoration : underline;
392
}
393
394
/* style for shelving location in catalogsearch */
395
.shelvingloc {
396
    display : block;
397
    font-style : italic;
398
}
399
400
.transfered {
401
       background-color : #F9FF9A;
402
}
403
404
/* action buttons */
405
#action {
406
  margin-top : .5em;
407
     background-color : #F3F3F3;
408
    border : 1px solid #E8E8E8;
409
    padding-bottom : 3px;
410
}
411
412
#action li {
413
  list-style : none;
414
     margin : .2em;
415
 padding : .3em 0;
416
}
417
418
#action a {
419
       background-position : 5px center;
420
      background-repeat : no-repeat;
421
 text-decoration : none;
422
        padding-left : 35px;
423
}
424
425
#action a.print {
426
  background-image: url("../../images/sprite.png");
427
  background-position: -5px -186px;
428
  background-repeat: no-repeat;
429
}
430
431
#action a#furthersearches {
432
    background-image: url("../../images/sprite.png");
433
    background-position: 106px -295px;
434
    background-repeat: no-repeat;
435
        border : 1px solid #F3F3F3;
436
    margin-left : 5px;
437
     padding : 2px 26px 2px 10px;
438
   text-decoration : none;
439
}
440
441
#action a#furthersearches:hover {
442
   border-top : 1px solid #FFF;
443
   border-left : 1px solid #FFF;
444
  border-right : 1px solid #979797;
445
      border-bottom : 1px solid #979797;
446
}
447
448
#action a.reserve,
449
.searchresults a.reserve {
450
  background-image: url("../../images/sprite.png");
451
  background-position: -5px -144px;
452
  background-repeat: no-repeat;
453
}
454
455
#action a.addtoshelf, #toolbar a.addtoshelf {
456
  background-image: url("../../images/sprite.png");
457
  background-position: -5px -225px;
458
  background-repeat: no-repeat;
459
}
460
461
#action a.addtocart, #toolbar a.addtocart {
462
  background-image: url("../../images/sprite.png");
463
  background-position: -5px -265px;
464
  background-repeat: no-repeat;
465
}
466
467
#action a.cartRemove, .actions a.cartRemove {
468
   color: #cc3333;
469
        font-size : 90%;
470
       margin : 0;
471
    padding: 0;
472
}
473
474
#action a.incart {
475
  background-image: url("../../images/sprite.png");
476
  background-position: -5px -265px;
477
  background-repeat: no-repeat;
478
  color : #666;
479
}
480
481
/* toolbar buttons */
482
483
#toolbar,
484
#selections-toolbar {
485
background-color:#EEEEEE;
486
border:1px solid #E8E8E8;
487
margin : 0 0;
488
padding:3px 3px 5px 5px;
489
vertical-align:middle;
490
}
491
492
#basket #toolbar {
493
    padding: 7px 5px 9px 9px;
494
}
495
496
#selections-toolbar {
497
background: #E8E8E8; /* Old browsers */
498
background: -moz-linear-gradient(top, #b2b2b2 0%, #e0e0e0 14%, #e8e8e8 100%); /* FF3.6+ */
499
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#b2b2b2), color-stop(14%,#e0e0e0), color-stop(100%,#e8e8e8)); /* Chrome,Safari4+ */
500
background: -webkit-linear-gradient(top, #b2b2b2 0%,#e0e0e0 14%,#e8e8e8 100%); /* Chrome10+,Safari5.1+ */
501
background: -o-linear-gradient(top, #b2b2b2 0%,#e0e0e0 14%,#e8e8e8 100%); /* Opera 11.10+ */
502
background: -ms-linear-gradient(top, #b2b2b2 0%,#e0e0e0 14%,#e8e8e8 100%); /* IE10+ */
503
background: linear-gradient(top, #b2b2b2 0%,#e0e0e0 14%,#e8e8e8 100%); /* W3C */
504
    margin : 0 0 1em 0;
505
    padding-top : .5em;
506
    padding-left : 10px;
507
}
508
509
#toolbar a,
510
#selections-toolbar a,
511
#toolbar input,
512
#selections-toolbar input {
513
 white-space : nowrap;
514
}
515
516
#toolbar ul {
517
 padding-left : 0;
518
}
519
520
#toolbar ul li {
521
  display : inline;
522
      list-style : none;
523
}
524
525
#toolbar ul li a {
526
       border-left : 1px solid #e8e8e8;
527
}
528
529
#toolbar ul li:first-child a {
530
     border-left : 0;
531
}
532
533
534
#toolbar a.print {
535
    background-image: url("../../images/sprite.png");
536
    background-position : 0px -423px;
537
    background-repeat: no-repeat;
538
  text-decoration : none;
539
        padding-left : 30px;
540
}
541
542
#toolbar a.brief {
543
    background-image : url("../../images/sprite.png");
544
    background-position : -2px -868px;
545
    background-repeat: no-repeat;
546
     text-decoration : none;
547
        padding-left : 27px;
548
}
549
550
#toolbar a.detail {
551
    background-image : url("../../images/sprite.png");
552
    background-position : -2px -898px;
553
    background-repeat: no-repeat;
554
    text-decoration : none;
555
        padding-left : 27px;
556
}
557
558
#toolbar a.download {
559
    background-image : url("../../images/sprite.png");
560
    background-position : 2px -348px;
561
    background-repeat: no-repeat;
562
    padding-left : 28px;
563
  text-decoration : none;
564
}
565
566
#toolbar a.editshelf {
567
    background-image : url("../../images/sprite.png");
568
    background-position : 2px -348px;
569
    background-repeat: no-repeat;
570
       padding-left : 26px;
571
   text-decoration : none;
572
}
573
574
#toolbar a.empty {
575
    background-image : url("../../images/sprite.png");
576
    background-position : 2px -598px;
577
    background-repeat: no-repeat;
578
   text-decoration : none;
579
    padding-left : 30px;
580
}
581
582
#toolbar a.hide {
583
    background-image : url("../../images/sprite.png");
584
    background-position: -3px -814px;
585
    background-repeat: no-repeat;
586
   text-decoration : none;
587
        padding-left : 26px;
588
}
589
590
#toolbar a.hold,
591
#selections-toolbar a.hold {
592
    background-image: url("../../images/sprite.png");
593
    background-position : -5px -453px;
594
    background-repeat: no-repeat;
595
   text-decoration : none;
596
        padding-left : 23px;
597
}
598
599
#selections-toolbar a.hold.disabled {
600
    background-image: url("../../images/sprite.png");
601
    background-position : -5px -621px;
602
    background-repeat: no-repeat;
603
}
604
605
#selections-toolbar a.removeitems,
606
#selections-toolbar a.deleteshelf {
607
    background-image : url("../../images/sprite.png");
608
    background-position : 2px -690px;
609
    background-repeat: no-repeat;
610
  text-decoration : none;
611
        padding-left : 25px;
612
}
613
614
615
#selections-toolbar a.removeitems.disabled,
616
#selections-toolbar a.deleteshelf.disabled {
617
    background-image: url("../../images/sprite.png");
618
    background-position : 2px -712px;
619
    background-repeat: no-repeat;
620
}
621
622
#toolbar a.send,
623
a.send {
624
    background-image: url("../../images/sprite.png");
625
    background-position : 2px -386px;
626
    background-repeat: no-repeat;
627
     text-decoration : none;
628
        padding-left : 28px;
629
}
630
631
#toolbar a.new {
632
    background-image : url("../../images/sprite.png");
633
    background-position : -4px -922px;
634
    background-repeat : no-repeat;
635
      padding-left : 23px;
636
   text-decoration : none;
637
}
638
639
#toolbar input.editshelf,
640
input.editshelf {
641
    background-image : url("../../images/sprite.png");
642
    background-position : 2px -732px;
643
    background-repeat: no-repeat;
644
  border : 0;
645
    color : #006699;
646
       cursor : pointer;
647
      font-size : 100%;
648
      padding-left : 29px;
649
   text-decoration : none;
650
}
651
652
#toolbar input.newshelf,
653
#toolbar a.newshelf,
654
a.newshelf {
655
    background-image: url("../../images/sprite.png"); /* add to list icon */
656
    background-position: -4px -864px;
657
    background-repeat: no-repeat;
658
     border : 0;
659
    color : #006699;
660
       cursor : pointer;
661
      font-size : 100%;
662
      margin: 0 0.5em;
663
    padding-left : 23px;
664
      text-decoration : none;
665
}
666
667
a.newshelf.disabled {
668
    background-image: url("../../images/sprite.png"); /* add to list icon */
669
    background-position: -4px -791px;
670
    background-repeat: no-repeat;
671
}
672
673
#toolbar input.deleteshelf,
674
input.deleteshelf {
675
    background-image : url("../../images/sprite.png");
676
    background-position : 2px -685px;
677
    background-repeat: no-repeat;
678
        border : 0;
679
    color : #006699;
680
       cursor : pointer;
681
      font-size : 100%;
682
    padding-left : 25px;
683
     text-decoration : none;
684
}
685
686
#toolbar input.deleteshelf:hover {
687
  color: #990033;
688
}
689
690
691
#toolbar input.editshelf:active,
692
input.editshelf:active,
693
#toolbar input.deleteshelf:active,
694
input.deleteshelf:active {
695
     border : 0;
696
}
697
698
#selections {
699
   font-weight : bold;
700
}
701
702
#tagsel_span input.submit,
703
#tagsel_tag {
704
    background-image : url("../../images/sprite.png"); /* tag icon */
705
    background-position : 7px -640px;
706
    background-repeat : no-repeat;
707
 padding-left : 25px;
708
   text-decoration: none;
709
}
710
711
#tagsel_tag {
712
    background-position : -1px -643px;
713
}
714
715
#tagsel_tag.disabled {
716
    background-position : -1px -667px;
717
}
718
719
#tagslist li { display : inline; }
720
721
a.tag_add {
722
    background-image: url("../../images/sprite.png"); /* Tag results */
723
    background-position: -10px -1104px;
724
    background-repeat: no-repeat;
725
    padding-left : 13px;
726
    text-decoration: none;
727
}
728
729
#login4tags {
730
    background-image: url("../../images/sprite.png"); /* Tag results disabled */
731
    background-position: -10px -1124px;
732
    background-repeat: no-repeat;
733
    padding-left : 13px;
734
    text-decoration: none;
735
    margin-left: 1em;
736
}
737
738
.tag_results_input {
739
    background-color: #EEE;
740
    margin-left: 1em;
741
    padding: 0.3em;
742
}
743
744
#placehold input.submit:hover,
745
#tagsel_span input.submit:hover {
746
      color: #990033;
747
}
748
749
#addto {
750
    max-width : 10em;
751
}
752
753
.addto a.addtocart {
754
  background-image: url("../../images/sprite.png"); /* cart icon */
755
  background-position: -5px -265px;
756
    background-repeat: no-repeat;
757
    text-decoration : none;
758
        padding-left : 33px;
759
}
760
761
#placehold input.submit {
762
    background-image: url("../../images/sprite.png"); /* place hold icon */
763
    background-position: -1px -140px;
764
    background-repeat: no-repeat;
765
  text-decoration : none;
766
        padding-left : 23px;
767
}
768
769
#placehold input.submit,
770
#tagsel_span input.submit {
771
   border : 0;
772
    background-color: transparent;
773
 font-size : 100%;
774
      font-weight : bold;
775
    padding-left : 31px;
776
   color : #336699;
777
       cursor : pointer;
778
}
779
.searchresults a.highlight_toggle {
780
    background-image: url("../../images/sprite.png"); /* place hold icon */
781
    background-position: -11px -841px;
782
    background-repeat: no-repeat;
783
   display: none;
784
 font-weight: normal;
785
   padding : 0 10px 0 21px;
786
}
787
788
/* the itemtype list in advanced search */
789
.advsearch table {
790
      border-collapse : separate;
791
    border-spacing : 3px;
792
  border : 0px;
793
  margin : 0px;
794
  background-color : white;
795
      border : 0px solid #D8DEB8;
796
}
797
798
.advsearch table tr td {
799
        background-color : #F8F8EB;
800
    border : 0px;
801
  margin : 0px;
802
  width : 700px;
803
}
804
805
.advsearch td {
806
      font-size : 0.8em;
807
     background-color : #F8F8EB;
808
}
809
810
body#advsearch #breadcrumbs {
811
   line-height : 1px;
812
     height : 1px;
813
  padding : 0;
814
}
815
816
body#advsearch #cartmenulink,
817
body#advsearch #listsmenulink {
818
  float : right;
819
}
820
821
#advsearch #branchloop,
822
#advsearch #sort_by {
823
        width : 23em;
824
}
825
826
#auth {
827
       float : left;
828
}
829
830
#facets {
831
832
}
833
834
.facet-count {
835
    display: inline-block;
836
}
837
838
/* the footer */
839
#footer {
840
      margin-top : 30px;
841
     margin-left : 30%;
842
     margin-right : 20%;
843
    border-top : 1px solid #384b73;
844
        color : #384b73;
845
       font-size : 1em;
846
       text-align : center;
847
}
848
849
/* facets bloc */
850
/* the USER information block */
851
#librarian_information {
852
    float : right;
853
 font-size : 10pt;
854
}
855
856
#header-wrapper {
857
 background-color: #FFF;
858
}
859
860
#holds,#opac-auth {
861
 min-width : 750px;
862
     width : 57.69em;
863
       margin : auto;
864
}
865
866
#members {
867
   background-color: #fff;
868
        font-size : 85%;
869
       margin-left : -10px;
870
   margin-right : -10px;
871
  padding : 4px 0 4px 0;
872
 color : #000066;
873
}
874
875
#members a {
876
       text-decoration : none;
877
}
878
879
#members a.logout {
880
 color : #cc3333;
881
       font-weight : bold;
882
    padding : 0 .3em 0 .3em;
883
       text-decoration : none;
884
}
885
886
#members li:last-child {
887
    border-right : 0;
888
}
889
890
#members li {
891
     border-right : 1px solid black;
892
        display : inline;
893
      list-style : none;
894
     margin : 0;
895
    padding : 0 .5em;
896
}
897
898
#members ul {
899
     margin : 0;
900
    padding : 0;
901
   text-align : right;
902
}
903
904
#opac-main-search {
905
     background: #8fb4e8; /* Old browsers */
906
        background: -moz-linear-gradient(top, #8fb4e8 0%, #8cb1e5 19%, #80a8dc 48%, #7da5d8 52%, #7198cf 83%, #618ac0 100%); /* FF3.6+ */
907
      background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#8fb4e8), color-stop(19%,#8cb1e5), color-stop(48%,#80a8dc), color-stop(52%,#7da5d8), color-stop(83%,#7198cf), color-stop(100%,#618ac0)); /* Chrome,Safari4+ */
908
       background: -webkit-linear-gradient(top, #8fb4e8 0%,#8cb1e5 19%,#80a8dc 48%,#7da5d8 52%,#7198cf 83%,#618ac0 100%); /* Chrome10+,Safari5.1+ */
909
  background: -o-linear-gradient(top, #8fb4e8 0%,#8cb1e5 19%,#80a8dc 48%,#7da5d8 52%,#7198cf 83%,#618ac0 100%); /* Opera 11.10+ */
910
       background: -ms-linear-gradient(top, #8fb4e8 0%,#8cb1e5 19%,#80a8dc 48%,#7da5d8 52%,#7198cf 83%,#618ac0 100%); /* IE10+ */
911
     background: linear-gradient(top, #8fb4e8 0%,#8cb1e5 19%,#80a8dc 48%,#7da5d8 52%,#7198cf 83%,#618ac0 100%); /* W3C */
912
       border-top : 1px solid #335599;
913
        border-bottom : 1px solid #335599;
914
     margin-left : -10px;
915
   margin-right : -10px;
916
  padding : .7em 0 .4em .5em;
917
    font-size : 108%;
918
      line-height : 116%;
919
}
920
921
#opac-main-search form {
922
        display : inline;
923
      padding-right : 1em;
924
}
925
926
#opac-main-search label {
927
      color : #FFFFCC;
928
       font-weight : bold;
929
    margin : .2em .3em 0 0;
930
}
931
932
#masthead_search,
933
#select_library {
934
 max-width: 10em;
935
       width: 10em;
936
}
937
938
939
#search-facets ul {
940
   margin : 0;
941
    padding : .3em;
942
}
943
944
#search-facets {
945
    border : 1px solid #e8e8e8;
946
}
947
948
#search-facets h4 {
949
     background-color : #EEE;
950
       border-bottom : 1px solid #e8e8e8;
951
     font-size : 90%;
952
       margin : 0;
953
    padding : .7em .2em;
954
   text-align : center;
955
}
956
957
#search-facets ul li {
958
 font-weight : bold;
959
    list-style-type : none;
960
}
961
962
#search-facets li li {
963
      font-weight : normal;
964
  font-size : 85%;
965
       margin-bottom : 2px;
966
   padding : .1em .2em;
967
}
968
969
#search-facets li li a {
970
       font-weight : normal;
971
}
972
973
#search-facets li.showmore a {
974
        font-weight : bold;
975
    text-indent : 1em;
976
}
977
978
.suggestion {
979
    background-color : #EEEEEB;
980
    border : 1px solid #DDDED3;
981
    margin : 10px auto;
982
    padding : 4px;
983
 width : 35%;
984
}
985
986
#facets ul {
987
   margin : 0;
988
    padding : 0;
989
}
990
991
#facets ul li {
992
        font-weight : bold;
993
    text-align : left;
994
     list-style : none;
995
}
996
997
#facets ul ul li {
998
       border : 0;
999
    font-size : 85%;
1000
       font-weight : normal;
1001
  padding : 2px;
1002
 text-align : left;
1003
}
1004
1005
#facets ul ul li a {
1006
     font-weight : normal;
1007
  text-decoration : underline;
1008
}
1009
1010
#facets h4 {
1011
   font-size : 93%;
1012
       padding:3px;
1013
   text-align:center;
1014
     background-color:#E7E7CA;
1015
      line-height:1.8em;
1016
     margin-left:-1px;
1017
      margin-right:-1px;
1018
     margin-top:-1px;
1019
}
1020
1021
#breadcrumbs {
1022
     padding : .7em;
1023
}
1024
1025
p {
1026
 margin: .7em 0;
1027
}
1028
1029
strong {
1030
    font-weight : bold;
1031
}
1032
1033
em {
1034
    font-style : italic;
1035
}
1036
1037
1038
table#marc,
1039
table#marc td,
1040
table#marc th {
1041
    background-color : transparent;
1042
        border : 0;
1043
}
1044
1045
table#marc p span.label {
1046
       font-weight : bold;
1047
}
1048
1049
table#marc p,
1050
table#marc ul {
1051
   padding-bottom: .6em;
1052
}
1053
1054
table#items,
1055
table#items td
1056
table#items th {
1057
  border-width : 1px solid #EEE;
1058
 font-size : 90%;
1059
}
1060
1061
1062
table#marc div.results_summary {
1063
  clear :  left;
1064
}
1065
table#marc div.results_summary ul {
1066
   display : inline;
1067
      float :  none;
1068
 clear :  none;
1069
 margin: 0;
1070
     padding: 0;
1071
    list-style : none;
1072
}
1073
1074
table#marc div.results_summary ul li {
1075
   display : inline;
1076
}
1077
1078
#basketcount {
1079
    display : inline;
1080
}
1081
1082
#bookcover {
1083
      float : left;
1084
  margin : 0;
1085
    padding : 0;
1086
}
1087
1088
#bookcover img {
1089
       margin : 0 1em 1em 0;
1090
}
1091
1092
fieldset.brief {
1093
      border : 1px solid #E8E8E8;
1094
}
1095
1096
fieldset.brief legend {
1097
 font-weight : bold;
1098
    font-size : 100%;
1099
}
1100
1101
fieldset.brief label {
1102
    display : block;
1103
       padding : .3em 0;
1104
}
1105
1106
fieldset.brief input+input {
1107
      margin-top : 3px;
1108
}
1109
1110
fieldset.brief input, fieldset.brief textarea, fieldset.brief select {
1111
    background-color: #F3F3F3;
1112
     border-top : 1px solid #979797;
1113
        border-left : 1px solid #979797;
1114
       border-right : 1px solid #DDDDDD;
1115
      border-bottom : 1px solid #DDDDDD;
1116
     font-size : 140%;
1117
      padding : .2em;
1118
        font-weight: normal;
1119
}
1120
1121
fieldset.brief textarea {
1122
      font-size: 105%;
1123
}
1124
1125
fieldset.brief input:focus {
1126
       background-color: #FFFFCC;
1127
}
1128
1129
fieldset.brief ol, fieldset.brief li {
1130
   list-style-type : none;
1131
}
1132
1133
fieldset.brief div.hint, fieldset.rows div.hint {
1134
   color : #666666;
1135
       font-size : 100%;
1136
      margin : .4em;
1137
}
1138
1139
h2 span.hint {
1140
       font-size: 76%;
1141
        font-weight : normal;
1142
}
1143
.thumbnail {
1144
   border : 0;
1145
    float : left;
1146
  margin : 0pt 5px 5px 0pt;
1147
}
1148
a.cancel {
1149
 padding-left : 1em;
1150
}
1151
1152
.resultscontrol, .resultscontrol select {
1153
       font-size: 90%;
1154
}
1155
1156
.cartlist {
1157
 margin-top : 5px;
1158
}
1159
1160
.cartlist input.submit, #tagsel_button {
1161
  background-color : #d8deb8;
1162
    background-image : none;
1163
       border-color : #bebf84;
1164
        color : #333;
1165
  font-size : 87%;
1166
       padding : 2px 0;
1167
       margin : 0 0 0 0;
1168
}
1169
1170
#CheckAll, #CheckNone {
1171
   font-weight : normal;
1172
  margin : 0 .5em;
1173
}
1174
1175
.resultscontrol label {
1176
    font-weight : bold;
1177
    margin-left : .5em;
1178
}
1179
1180
.resort {
1181
       float : right;
1182
 margin-top : 5px;
1183
}
1184
1185
.searchresults p.details {
1186
        color : #979797;
1187
}
1188
1189
.searchresults p {
1190
 margin: 0;
1191
     padding: 0 0 .6em 0;
1192
}
1193
1194
td.resultscontrol img {
1195
        vertical-align: middle;
1196
}
1197
1198
.searchresults table td {
1199
}
1200
1201
.searchresults table {
1202
 margin : 0;
1203
}
1204
1205
.searchresults td, .searchresults th, .searchresults table {
1206
    border: 0;
1207
}
1208
.searchresults td {
1209
       vertical-align: top;
1210
}
1211
1212
.searchresults tr {
1213
    border-bottom : 1px solid #f3f3f3;
1214
}
1215
1216
.searchresults tr:first-child {
1217
  border : 0;
1218
}
1219
1220
.searchresults table {
1221
  border-top : 0px solid #CCCCCC;
1222
        width : 100%;
1223
}
1224
1225
.searchresults a.reserve, .searchresults a.reserve:visited {
1226
  background-position:left top;
1227
  background-repeat:no-repeat;
1228
   float:right;
1229
   padding:2px 3px 2px 26px;
1230
}
1231
1232
.searchresults a.reserve {
1233
        background-color:transparent;
1234
  color:#006699;
1235
}
1236
1237
.unavailable, .tagerror, .tagerror:visited {
1238
 color: #990033;
1239
}
1240
1241
#libraryname {
1242
      float : left;
1243
  line-height : 2em;
1244
}
1245
1246
#corner {
1247
        float : right;
1248
 line-height : 2em;
1249
}
1250
1251
.pages {
1252
 line-height : 1.8em;
1253
   text-align: center;
1254
}
1255
1256
.current,
1257
.currentPage {
1258
        background-color: #FFFFFF;
1259
     color: #3366CC;
1260
        font-weight: bold;
1261
     padding: 1px 5px 1px 5px;
1262
      text-decoration: none;
1263
}
1264
1265
a:link.nav,
1266
div.pages a:link {
1267
       background-color: #EEE;
1268
        border: 1px solid #CCCC99;
1269
     color: #3366CC;
1270
        font-weight: bold;
1271
     padding: 1px 5px 1px 5px;
1272
      text-decoration: none;
1273
}
1274
1275
a:visited.nav,
1276
div.pages a:visited {
1277
 background-color: #EEE;
1278
        border: 1px solid #CCCC99;
1279
     color: #3366CC;
1280
        font-weight: bold;
1281
     padding: 1px 5px 1px 5px;
1282
      text-decoration: none;
1283
}
1284
1285
a:hover.nav,
1286
div.pages a:hover {
1287
     background-color: #FFFFCC;
1288
     border: 1px solid #CCCC99;
1289
     color: #CC3333;
1290
        font-weight: bold;
1291
     padding: 1px 5px 1px 5px;
1292
      text-decoration: none;
1293
}
1294
1295
a:active.nav,
1296
div.pages a:active {
1297
   background-color: #FFFFCC;
1298
     border: 1px solid #CCCC99;
1299
     color: #D25500;
1300
        font-weight: bold;
1301
     padding: 1px 5px 1px 5px;
1302
      text-decoration: none;
1303
}
1304
1305
/* Tabs */
1306
ul.link-tabs {
1307
    list-style-type: none;
1308
 margin: 9px 0 -2px 5px;
1309
        padding: 0;
1310
}
1311
1312
ul.link-tabs li {
1313
       display: inline;
1314
       padding: 0px;
1315
}
1316
1317
ul.link-tabs li a {
1318
   font-weight: bold;
1319
     padding: 2px 4px 2px 4px;
1320
      text-decoration: none;
1321
 border-top: 1px solid #DDDDDD;
1322
 border-left : 1px solid #DDDDDD;
1323
       border-right : 1px solid #666666;
1324
}
1325
1326
ul.link-tabs li#power_formButton a, ul.link-tabs li#proximity_formButton a {
1327
      padding: 2px 4px 3px 4px;
1328
}
1329
1330
ul.link-tabs li.off a {
1331
   background-color: #EEEEEB;
1332
     border-bottom: 1px solid #DDDDDD;
1333
}
1334
1335
ul.link-tabs li.off a:hover {
1336
     padding: 2px 3px 2px 4px;
1337
      background-color: #FFFFEC;
1338
     border-top: 1px solid #BEBF84;
1339
 border-left : 1px solid #BEBF84;
1340
       border-right : 2px solid #333333;
1341
}
1342
1343
ul.link-tabs li.on a {
1344
    background-color: #FFFFFF;
1345
     border-bottom: 1px solid #FFFFFF;
1346
}
1347
1348
ul.link-tabs li a.debit {
1349
 background-color : #FFFF99;
1350
    color : #990033;
1351
}
1352
1353
div.tab-container {
1354
        border : 1px solid #DDDDDD;
1355
    margin-top : 4px;
1356
      padding : .7em;
1357
        width : 90%;
1358
}
1359
1360
tr.overdue td {
1361
        background-color : #ffcccc;
1362
    border-bottom : 1px solid #ffaeae;
1363
     border-right : 1px solid #ffaeae;
1364
      font-weight : bold;
1365
}
1366
1367
td.overdue {
1368
    color : #cc3333;
1369
}
1370
1371
.renewals {
1372
        display:block;
1373
 font-size:0.8em;
1374
       padding:0.5em;
1375
}
1376
1377
table#marc, table#marc td, table#marc th {
1378
   border : 0;
1379
}
1380
1381
table#marc th {
1382
 background-color : transparent;
1383
        text-align : left;
1384
}
1385
1386
table#marc td:first-child {
1387
      text-indent : 2em;
1388
}
1389
#masthead {
1390
float: left;
1391
width: 120px;
1392
}
1393
1394
#fluid {
1395
margin-left: 124px;
1396
margin-top : .4em;
1397
padding-left : 1em;
1398
}
1399
1400
#fluid-offset {
1401
float : right;
1402
width: 100%;
1403
}
1404
1405
#translControl{
1406
float : left;
1407
padding-left : .4em;
1408
}
1409
1410
.clearfix:after {
1411
    content: ".";
1412
    display: block;
1413
    height: 0;
1414
    clear: both;
1415
    visibility: hidden;
1416
}
1417
1418
/* Hides from IE-mac \*/
1419
* html .clearfix {height: 1%;}
1420
/* End hide from IE-mac */
1421
1422
.results_summary {
1423
   display: block;
1424
        font-size : 85%;
1425
       color: #707070;
1426
        padding : 0 0 .5em 0;
1427
}
1428
.results_summary .results_summary {
1429
    font-size : 100%;
1430
}
1431
1432
.results_summary.actions {
1433
    margin-top : .5em;
1434
}
1435
1436
.m880 {
1437
    display:block;
1438
    text-align:right;
1439
    float:right;
1440
    width:50%;
1441
    padding-left:20px
1442
}
1443
1444
.tagstatus {
1445
    color: #707070;
1446
    padding: 0 4px 0 4px;
1447
    margin-left: 5px;
1448
    border: 1px solid #bcbcbc;
1449
    background-color: #ffffcc;
1450
    -webkit-border-radius: 4px;
1451
    -moz-border-radius: 4px;
1452
    border-radius: 4px;
1453
}
1454
1455
.results_summary.tagstatus {
1456
    display: inline;
1457
}
1458
1459
.results_summary .label {
1460
   color: #202020;
1461
}
1462
1463
.results_summary a {
1464
        font-weight: normal;
1465
}
1466
1467
.actions a.hold,
1468
.actions a.addtocart,
1469
.actions a.addtoshelf,
1470
.actions a.addtolist,
1471
.actions a.tag_add {
1472
     margin-left : 1em;
1473
     text-decoration : none;
1474
}
1475
1476
.actions a.hold {
1477
    background-image : url("../../images/sprite.png");
1478
    background-position : -10px -542px;
1479
    background-repeat: no-repeat;
1480
  padding-left : 16px;
1481
}
1482
1483
.actions a.addtocart {
1484
    background-image : url("../../images/sprite.png");
1485
    background-position : -10px -572px;
1486
    background-repeat: no-repeat;
1487
    padding-left : 15px;
1488
       display : none;
1489
}
1490
1491
.actions a.addtoshelf {
1492
    background-image : url("../../images/sprite.png");
1493
    background-position: -10px -27px;
1494
    background-repeat: no-repeat;
1495
      padding-left : 13px;
1496
}
1497
1498
.dialog {
1499
  border: 1px solid #bcbcbc;
1500
 padding : .5em;
1501
        margin : 1em auto;
1502
  width: 65%;
1503
  }
1504
1505
.dialog  h2, .dialog h3, .dialog h4 {
1506
	margin : auto;
1507
    text-align : center;
1508
  }
1509
1510
div.alert {
1511
  background: #fef8d3; /* Old browsers */
1512
        background: -moz-linear-gradient(top, #fef8d3 0%, #ffec91 9%, #ffed87 89%, #f9dc00 100%); /* FF3.6+ */
1513
 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fef8d3), color-stop(9%,#ffec91), color-stop(89%,#ffed87), color-stop(100%,#f9dc00)); /* Chrome,Safari4+ */
1514
  background: -webkit-linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* Chrome10+,Safari5.1+ */
1515
   background: -o-linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* Opera11.10+ */
1516
 background: -ms-linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* IE10+ */
1517
       background: linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* W3C */
1518
    text-align : center;
1519
}
1520
1521
div.alert strong {
1522
     color : #900;
1523
}
1524
1525
div.message {
1526
 background: #ffffff; /* Old browsers */
1527
        background: -moz-linear-gradient(top, #ffffff 0%, #f4f6fa 2%, #eaeef5 23%, #e8edf6 94%, #cddbf2 100%); /* FF3.6+ */
1528
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(2%,#f4f6fa), color-stop(23%,#eaeef5), color-stop(94%,#e8edf6), color-stop(100%,#cddbf2)); /* Chrome,Safari4+ */
1529
 background: -webkit-linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* Chrome10+,Safari5.1+ */
1530
       background: -o-linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* Opera11.10+ */
1531
     background: -ms-linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* IE10+ */
1532
       background: linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* W3C */
1533
        border : 1px solid #bcbcbc;
1534
    width : 55%;
1535
}
1536
1537
#moresearches {
1538
        clear : left;
1539
  color : #000099;
1540
       font-size : 90%;
1541
       line-height : 110%;
1542
    margin : .6em 0 .3em 0;
1543
}
1544
1545
#moresearches a:link, #moresearches a:visited {
1546
     color : #e5ebff;
1547
       font-weight : normal;
1548
  text-decoration : none;
1549
}
1550
1551
#news th {
1552
  text-align : left;
1553
     padding : 3px 5px;
1554
}
1555
1556
strong em, em strong  {
1557
    font-weight: bold;
1558
    font-style: italic;
1559
}
1560
1561
#opac-main-search #listsmenu a, #opac-main-search #listsmenu h4 {
1562
        color : #000;
1563
  font-weight : normal;
1564
}
1565
 #opac-main-search #listsmenu h4 {
1566
	font-size : 90%;
1567
   font-weight : bold;
1568
    margin : 0 .2em;
1569
 }
1570
1571
#opac-main-search #listsmenu .yuimenuitemlabel {
1572
  cursor : pointer;
1573
}
1574
1575
#opac-main-search #listsmenu .bd {
1576
        background: #eef4fe; /* Old browsers */
1577
        background: -moz-linear-gradient(left, #eef4fe 0%, #eef4fe 88%, #f6f9fe 98%, #ffffff 99%, #a5c2f6 99%, #e6eefe 100%, #cbdefe 100%); /* FF3.6+ */
1578
       background: -webkit-gradient(linear, left top, right top, color-stop(0%,#eef4fe), color-stop(88%,#eef4fe), color-stop(98%,#f6f9fe), color-stop(99%,#ffffff), color-stop(99%,#a5c2f6), color-stop(100%,#e6eefe), color-stop(100%,#cbdefe)); /* Chrome,Safari4+ */
1579
       background: -webkit-linear-gradient(left, #eef4fe 0%,#eef4fe 88%,#f6f9fe 98%,#ffffff 99%,#a5c2f6 99%,#e6eefe 100%,#cbdefe 100%); /* Chrome10+,Safari5.1+ */
1580
    background: -o-linear-gradient(left, #eef4fe 0%,#eef4fe 88%,#f6f9fe 98%,#ffffff 99%,#a5c2f6 99%,#e6eefe 100%,#cbdefe 100%); /* Opera11.10+ */
1581
  background: -ms-linear-gradient(left, #eef4fe 0%,#eef4fe 88%,#f6f9fe 98%,#ffffff 99%,#a5c2f6 99%,#e6eefe 100%,#cbdefe 100%); /* IE10+ */
1582
       background: linear-gradient(left, #eef4fe 0%,#eef4fe 88%,#f6f9fe 98%,#ffffff 99%,#a5c2f6 99%,#e6eefe 100%,#cbdefe 100%); /* W3C */
1583
     border : 1px solid #739acf;
1584
    padding : .3em 1em 0 0;
1585
}
1586
1587
#opac-main-search #listsmenu .yuimenuitemlabel.selected {
1588
   background-color : #fff;
1589
}
1590
1591
#opac-main-search #listsmenu ul {
1592
  border-color : #b8d0e6;
1593
}
1594
1595
.selectcol {
1596
        vertical-align: top;
1597
   width: 10px;
1598
}
1599
.itypecol {
1600
     vertical-align: top;
1601
   width: 10px;
1602
}
1603
#container {
1604
    color : #000;
1605
}
1606
1607
div#changelanguage{
1608
   background-color: #fff;
1609
        border-top: 1px solid #CCC;
1610
    color : #666;
1611
  font-size : 85%;
1612
       padding : 1em;
1613
 margin-top : 2em;
1614
 }
1615
1616
div#changelanguage a {
1617
   font-weight : normal;
1618
  padding : .5em 0;
1619
}
1620
1621
div#changelanguage li.yuimenuitem {
1622
    font-size: 120%;
1623
    font-weight: normal;
1624
    margin: 0;
1625
    padding: 0 1em;
1626
}
1627
div#changelanguage li.yuimenuitem a.yuimenuitemlabel {
1628
    padding: 0;
1629
}
1630
1631
ul#i18nMenu {
1632
    margin : 0;
1633
    padding : .2em 0;
1634
 }
1635
1636
ul#i18nMenu li {
1637
 border-left : 1px solid #CCC;
1638
  display : inline;
1639
      list-style : none;
1640
     padding : 0 .4em;
1641
 }
1642
1643
ul#i18nMenu li:first-child {
1644
     border-left : 0;
1645
 }
1646
1647
ul#i18nMenu li ul li {
1648
    border : 0;
1649
    display : block;
1650
       padding : 0;
1651
 }
1652
1653
1654
ul#i18nMenu li.more a {
1655
    background-image : url("../../images/sprite.png");
1656
    background-position : 37px -940px;
1657
        background-repeat:no-repeat;
1658
   padding-right: 1.3em;
1659
}
1660
1661
ul#i18nMenu li.more ul li a {
1662
 background-image : none;
1663
       padding: 0 1.3em;
1664
}
1665
1666
span.lang{
1667
        float:left;
1668
    border-right : 1px solid black;
1669
        padding : 0 .5em;
1670
}
1671
1672
#cartDetails,#cartUpdate,#holdDetails,#listsDetails {
1673
     background-color : #FFF;
1674
       border: 1px solid #739acf;
1675
     color : black;
1676
 display : none;
1677
        margin : 0;
1678
    padding : 10px;
1679
        text-align : center;
1680
   width : 180px;
1681
 box-shadow: 1px 1px 3px #666;
1682
  -moz-box-shadow: 1px 1px 3px #666;
1683
     -webkit-box-shadow: 1px 1px 3px #666;
1684
  z-index: 2;
1685
1686
}
1687
1688
.yui-panel .hd, .yui-panel .bd, .yui-panel .ft {
1689
       background-color : transparent;
1690
        border : 0;
1691
    padding : inherit;
1692
}
1693
1694
#login #userid, #login #password {
1695
       width : 98%;
1696
}
1697
1698
#opac-main-search input.submit {
1699
       background: #e6f3fe; /* Old browsers */
1700
        background: -moz-linear-gradient(top, #e6f3fe 0%, #dfeefa 8%, #bfd5ea 49%, #b8d0e6 52%, #b8d0e6 100%); /* FF3.6+ */
1701
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#e6f3fe), color-stop(8%,#dfeefa), color-stop(49%,#bfd5ea), color-stop(52%,#b8d0e6), color-stop(100%,#b8d0e6)); /* Chrome,Safari4+ */
1702
 background: -webkit-linear-gradient(top, #e6f3fe 0%,#dfeefa 8%,#bfd5ea 49%,#b8d0e6 52%,#b8d0e6 100%); /* Chrome10+,Safari5.1+ */
1703
       background: -o-linear-gradient(top, #e6f3fe 0%,#dfeefa 8%,#bfd5ea 49%,#b8d0e6 52%,#b8d0e6 100%); /* Opera11.10+ */
1704
     background: -ms-linear-gradient(top, #e6f3fe 0%,#dfeefa 8%,#bfd5ea 49%,#b8d0e6 52%,#b8d0e6 100%); /* IE10+ */
1705
       background: linear-gradient(top, #e6f3fe 0%,#dfeefa 8%,#bfd5ea 49%,#b8d0e6 52%,#b8d0e6 100%); /* W3C */
1706
        -webkit-border-radius: 4px;
1707
    -moz-border-radius: 4px;
1708
       border-radius: 4px;
1709
    -webkit-box-shadow: 1px 1px 1px 1px , , .3);
1710
   -moz-box-shadow: 1px 1px 1px 1px , , .3);
1711
      box-shadow: 1px 1px 1px 1px , , .3);
1712
1713
  color : #333;
1714
  font-weight : normal;
1715
  font-size : 80%;
1716
       padding : 2px;
1717
}
1718
1719
div#menu {
1720
   border-right : 1px solid #979797;
1721
      font-size : 94%;
1722
       margin-right : .5em;
1723
   padding-top : 1em;
1724
     padding-bottom : 2em;
1725
}
1726
1727
div#menu li a {
1728
       background: #eeeeee; /* Old browsers */
1729
        background: -moz-linear-gradient(left, #eeeeee 0%, #eeeeee 96%, #e6e6e6 97%, #cccccc 99%, #c1c1c1 100%); /* FF3.6+ */
1730
  background: -webkit-gradient(linear, left top, right top, color-stop(0%,#eeeeee), color-stop(96%,#eeeeee), color-stop(97%,#e6e6e6), color-stop(99%,#cccccc), color-stop(100%,#c1c1c1)); /* Chrome,Safari4+ */
1731
  background: -webkit-linear-gradient(left, #eeeeee 0%,#eeeeee 96%,#e6e6e6 97%,#cccccc 99%,#c1c1c1 100%); /* Chrome10+,Safari5.1+ */
1732
     background: -o-linear-gradient(left, #eeeeee 0%,#eeeeee 96%,#e6e6e6 97%,#cccccc 99%,#c1c1c1 100%); /* Opera 11.10+ */
1733
  background: -ms-linear-gradient(left, #eeeeee 0%,#eeeeee 96%,#e6e6e6 97%,#cccccc 99%,#c1c1c1 100%); /* IE10+ */
1734
        background: linear-gradient(left, #eeeeee 0%,#eeeeee 96%,#e6e6e6 97%,#cccccc 99%,#c1c1c1 100%); /* W3C */
1735
       text-decoration : none;
1736
        display : block;
1737
       border : 1px solid #979797;
1738
    font-size : 111%;
1739
      margin : .5em 0;
1740
       padding : .4em .3em;
1741
   margin-right : -1px;
1742
}
1743
1744
div#menu li a:hover {
1745
  background: #eaeef5; /* Old browsers */
1746
        background: -moz-linear-gradient(left, #eaeef5 0%, #dee6f4 96%, #c4d5ef 98%, #a2bee8 100%); /* FF3.6+ */
1747
       background: -webkit-gradient(linear, left top, right top, color-stop(0%,#eaeef5), color-stop(96%,#dee6f4), color-stop(98%,#c4d5ef), color-stop(100%,#a2bee8)); /* Chrome,Safari4+ */
1748
   background: -webkit-linear-gradient(left, #eaeef5 0%,#dee6f4 96%,#c4d5ef 98%,#a2bee8 100%); /* Chrome10+,Safari5.1+ */
1749
 background: -o-linear-gradient(left, #eaeef5 0%,#dee6f4 96%,#c4d5ef 98%,#a2bee8 100%); /* Opera 11.10+ */
1750
      background: -ms-linear-gradient(left, #eaeef5 0%,#dee6f4 96%,#c4d5ef 98%,#a2bee8 100%); /* IE10+ */
1751
    background: linear-gradient(left, #eaeef5 0%,#dee6f4 96%,#c4d5ef 98%,#a2bee8 100%); /* W3C */
1752
}
1753
1754
div#menu li.active a:hover {
1755
       background-color : #fff;
1756
       color : #0000CC;
1757
}
1758
1759
#menu ul li {
1760
      list-style-type : none;
1761
}
1762
1763
#menu ul li.active a {
1764
      background-color : #FFF;
1765
       background-image : none;
1766
       border-right : 0;
1767
      font-weight : bold;
1768
}
1769
1770
.left {
1771
 float : left;
1772
}
1773
1774
.right {
1775
      float : right;
1776
}
1777
1778
#searchsubmit {
1779
      cursor : default;
1780
      font-size : 87%;
1781
       font-weight :  normal;
1782
 margin-top : 0;
1783
        margin-left :  .2em;
1784
   padding: 2px 2px 1px 2px;
1785
}
1786
1787
#export,#further,.detailtagcell {
1788
 margin-top : .5em;
1789
     background-color : #F3F3F3;
1790
    border : 1px solid #E8E8E8;
1791
    font-size : 76%;
1792
       padding : 3px;
1793
 text-align : center;
1794
}
1795
#furtherm { margin-top : .5em; }
1796
1797
#export label, .detailtagcell label {
1798
 display : block;
1799
       font-weight : bold;
1800
    font-size : 110%;
1801
      margin-bottom : 2px;
1802
}
1803
1804
#export input, .detailtagcell input {
1805
  padding : 2px;
1806
}
1807
1808
#amazonreviews h4 {
1809
  font-size : 90%;
1810
       margin : 0;
1811
    padding : 0;
1812
}
1813
#amazonreviews h3 {
1814
     font-size : 100%;
1815
      margin : 0;
1816
    padding : 0;
1817
}
1818
1819
#cartmenulink, #listsmenulink {
1820
        background-repeat: no-repeat;
1821
  -webkit-border-radius: 5px;
1822
    -moz-border-radius: 5px;
1823
       border-radius: 5px;
1824
    display : block;
1825
       position : relative;
1826
   float : left;
1827
  color : #333;
1828
  text-decoration : none;
1829
        cursor : pointer;
1830
      font-size : 105%;
1831
      font-weight : bold;
1832
    line-height : 185%;
1833
    margin-left : 1.5em;
1834
   padding : .3em .7em;
1835
}
1836
1837
#listsmenulink {
1838
       background : #9FBFFF;
1839
    background: url("../../images/sprite.png"),-moz-linear-gradient(top, #d7e5ff 0%, #b1cbff 50%, #9fbfff 100%); /* FF3.6+ */
1840
    background: url("../../images/sprite.png"),-webkit-gradient(linear, left top, left bottom, color-stop(0%,#d7e5ff), color-stop(50%,#b1cbff), color-stop(100%,#9fbfff)); /* Chrome,Safari4+ */
1841
    background: url("../../images/sprite.png"),-webkit-linear-gradient(top, #d7e5ff 0%,#b1cbff 50%,#9fbfff 100%); /* Chrome10+,Safari5.1+ */
1842
    background: url("../../images/sprite.png"),-o-linear-gradient(top, #d7e5ff 0%,#b1cbff 50%,#9fbfff 100%); /* Opera 11.10+ */
1843
    background: url("../../images/sprite.png"),-ms-linear-gradient(top, #d7e5ff 0%,#b1cbff 50%,#9fbfff 100%); /* IE10+ */
1844
    background: url("../../images/sprite.png"),linear-gradient(top, #d7e5ff 0%,#b1cbff 50%,#9fbfff 100%); /* W3C */
1845
    background-position: 40px -287px,top left;
1846
        background-repeat: no-repeat;
1847
  border: 1px solid #629DCF;
1848
     color : #006699;
1849
       padding-right: 20px;
1850
}
1851
1852
#listsmenulink:hover {
1853
 background-color : #b8d0e6;
1854
    background: url("../../images/sprite.png"),-moz-linear-gradient(top, #e2ecf5 0%, #c3d8ea 50%, #b8d0e6 100%); /* FF3.6+ */
1855
    background: url("../../images/sprite.png"),-webkit-gradient(linear, left top, left bottom, color-stop(0%,#e2ecf5), color-stop(50%,#c3d8ea), color-stop(100%,#b8d0e6)); /* Chrome,Safari4+ */
1856
    background: url("../../images/sprite.png"),-webkit-linear-gradient(top, #e2ecf5 0%,#c3d8ea 50%,#b8d0e6 100%); /* Chrome10+,Safari5.1+ */
1857
    background: url("../../images/sprite.png"),-o-linear-gradient(top, #e2ecf5 0%,#c3d8ea 50%,#b8d0e6 100%); /* Opera 11.10+ */
1858
    background: url("../../images/sprite.png"),-ms-linear-gradient(top, #e2ecf5 0%,#c3d8ea 50%,#b8d0e6 100%); /* IE10+ */
1859
    background: url("../../images/sprite.png"),linear-gradient(top, #e2ecf5 0%,#c3d8ea 50%,#b8d0e6 100%); /* W3C */
1860
       background-repeat: no-repeat;
1861
    background-position: 40px -287px,top left;
1862
}
1863
1864
#cartmenulink {
1865
        background: #98CB58; /* Old browsers */
1866
    background: url("../../images/sprite.png"),-moz-linear-gradient(top, #d5eaba 0%, #b7db8a 50%, #98cb59 100%); /* FF3.6+ */
1867
    background: url("../../images/sprite.png"),-webkit-gradient(linear, left top, left bottom, color-stop(0%,#d5eaba), color-stop(50%,#b7db8a), color-stop(100%,#98cb59)); /* Chrome,Safari4+ */
1868
    background: url("../../images/sprite.png"),-webkit-linear-gradient(top, #d5eaba 0%,#b7db8a 50%,#98cb59 100%); /* Chrome10+,Safari5.1+ */
1869
    background: url("../../images/sprite.png"),-o-linear-gradient(top, #d5eaba 0%,#b7db8a 50%,#98cb59 100%); /* Opera 11.10+ */
1870
    background: url("../../images/sprite.png"),-ms-linear-gradient(top, #d5eaba 0%,#b7db8a 50%,#98cb59 100%); /* IE10+ */
1871
    background: url("../../images/sprite.png"),linear-gradient(top, #d5eaba 0%,#b7db8a 50%,#98cb59 100%); /* W3C */
1872
    background-position: -5px -256px, left top;
1873
       background-repeat: no-repeat;
1874
  border: 1px solid #5EA28C;
1875
     color : #336600;
1876
       padding-left : 30px;
1877
}
1878
1879
#cartmenulink:hover {
1880
  background-color : #BFDE96;
1881
    background: url("../../images/sprite.png"),-moz-linear-gradient(top, #e5f1d4 0%, #cbe4aa 50%, #c0de98 100%); /* FF3.6+ */
1882
    background: url("../../images/sprite.png"),-webkit-gradient(linear, left top, left bottom, color-stop(0%,#e5f1d4), color-stop(50%,#cbe4aa), color-stop(100%,#c0de98)); /* Chrome,Safari4+ */
1883
    background: url("../../images/sprite.png"),-webkit-linear-gradient(top, #e5f1d4 0%,#cbe4aa 50%,#c0de98 100%); /* Chrome10+,Safari5.1+ */
1884
    background: url("../../images/sprite.png"),-o-linear-gradient(top, #e5f1d4 0%,#cbe4aa 50%,#c0de98 100%); /* Opera 11.10+ */
1885
    background: url("../../images/sprite.png"),-ms-linear-gradient(top, #e5f1d4 0%,#cbe4aa 50%,#c0de98 100%); /* IE10+ */
1886
    background: url("../../images/sprite.png"),linear-gradient(top, #e5f1d4 0%,#cbe4aa 50%,#c0de98 100%); /* W3C */
1887
       background-repeat: no-repeat;
1888
    background-position: -5px -256px, left top;
1889
}
1890
1891
/* IE 6 & 7  don't do multiple backgrounds, so remove extra padding */
1892
* html #listsmenulink,
1893
*+html #listsmenulink {
1894
 padding-right : .7em;
1895
}
1896
1897
/* IE 6 & 7  don't do multiple backgrounds, so remove extra padding */
1898
* html #cartmenulink,
1899
*+html #cartmenulink {
1900
   padding-left : .7em;
1901
}
1902
1903
/* IE 8 doesn't do multiple backgrounds, so remove extra padding */
1904
#listsmenulink {
1905
  padding-right: .7em\0/;
1906
}
1907
1908
/* IE 8 doesn't do multiple backgrounds, so remove extra padding */
1909
#cartmenulink {
1910
  padding-left: .7em\0/;
1911
}
1912
1913
#cartmenulink span#basketcount {
1914
     background-image : none;
1915
       float : none;
1916
  display : inline;
1917
      height : auto;
1918
 position : relative;
1919
   margin : 0;
1920
    padding : 0;
1921
   left : auto;
1922
   right : auto;
1923
  top : auto;
1924
}
1925
1926
#cartmenulink span#basketcount span {
1927
   background-image : none;
1928
       background-color : #E6FCB7;
1929
    color : #000;
1930
  display : inline;
1931
      float : none;
1932
  font-size : 80%;
1933
       font-weight : normal;
1934
  margin : 0 0 0 .9em;
1935
   padding : 0 .3em 0 .3em;
1936
       position : relative;
1937
   left : auto;
1938
   right : auto;
1939
  top : auto;
1940
}
1941
1942
#views {
1943
        border-bottom : 1px solid #E8E8E8;
1944
     margin-bottom : .5em;
1945
  padding : 0 2em 2px 0.2em;
1946
     white-space : nowrap;
1947
}
1948
1949
span.view {
1950
   padding : 0.2em .2em 2px .2em;
1951
}
1952
1953
#bibliodescriptions,
1954
#isbdcontents {
1955
 clear : left;
1956
  margin-top : .5em;
1957
}
1958
1959
a#MARCview, span#MARCview, a#MARCviewPop, a#ISBDview, span#ISBDview, a#Normalview, a#Briefhistory, span#Normalview, a#Fullhistory, span#Fullhistory, span#Briefhistory {
1960
 background-repeat : no-repeat;
1961
 font-size : 87%;
1962
       font-weight : normal;
1963
  padding : .2em .5em;
1964
    padding-left : 21px;
1965
  text-decoration: none;
1966
}
1967
1968
a#MARCview, span#MARCview {
1969
    background-image: url("../../images/sprite.png");
1970
    background-position: -5px -26px;
1971
    background-repeat: no-repeat;
1972
}
1973
a#MARCviewPop, span#MARCviewPop {
1974
    background-image: url("../../images/sprite.png");
1975
    background-position: -5px -26px;
1976
    background-repeat: no-repeat;
1977
}
1978
a#ISBDview, span#ISBDview {
1979
    background-image: url("../../images/sprite.png");
1980
    background-position: -5px -55px;
1981
    background-repeat: no-repeat;
1982
}
1983
a#Normalview, span#Normalview {
1984
    background-image: url("../../images/sprite.png");
1985
    background-position: -7px 3px;
1986
    background-repeat: no-repeat;
1987
    padding-left : 15px;
1988
}
1989
1990
a#MARCview, a#MARCviewPop, a#ISBDview, a#Normalview, a#Fullhistory, a#Briefhistory {
1991
   background-color : #F3F3F3;
1992
    border-left : 1px solid #E8E8E8;
1993
}
1994
1995
#shelfbrowser table {
1996
      margin : 0 20px;
1997
}
1998
#shelfbrowser table, #shelfbrowser td, #shelfbrowser th {
1999
   border : 0;
2000
    font-size : 90%;
2001
       text-align : center;
2002
}
2003
#shelfbrowser a {
2004
       font-size : 110%;
2005
      text-decoration : none;
2006
}
2007
#shelfbrowser td, #shelfbrowser th {
2008
 vertical-align : bottom;
2009
       width : 20%;
2010
}
2011
#shelfbrowser td.top {
2012
  vertical-align : top;
2013
}
2014
#shelfbrowser td.top a {
2015
       text-decoration : underline;
2016
}
2017
#shelfbrowser a {
2018
       display : block;
2019
}
2020
2021
#comments .commentline {
2022
   border-bottom : 2px solid #eeeeeb;
2023
     margin : 0 -.5em 0 -.5em;
2024
      padding : 0 .5em .5em .5em;
2025
}
2026
#comments .yours {
2027
       background-color : #effed5;
2028
}
2029
.commentline .avatar {
2030
   float : right;
2031
 padding-left : .5em;
2032
}
2033
#comments #addcomment {
2034
 margin : 0 -1em -1em -1em;
2035
     padding : .3em 1em;
2036
}
2037
input.tagbutton {
2038
        padding : 1px !important;
2039
}
2040
table#items th {
2041
   padding : 2px;
2042
}
2043
#action {
2044
     /*margin-top: 0;*/
2045
}
2046
#similars h4 {
2047
    text-align : left;
2048
}
2049
#similars table,
2050
#similars td {
2051
   border : 0;
2052
    margin : 0;
2053
}
2054
#similars td {
2055
   width : 13em;
2056
}
2057
#similars a {
2058
  display : block;
2059
       font-weight : normal;
2060
}
2061
#furtherm a,
2062
#furtherm a:link,
2063
#furtherm a:visited {
2064
   color : #006699;
2065
}
2066
#furtherm h4 {
2067
      font-size : 106%;
2068
      margin : .1em .5em;
2069
}
2070
#furtherm .bd {
2071
  background-color : #F3F3F3;
2072
    border:1px solid #DDD;
2073
}
2074
.results_summary img {
2075
        margin : 0 5px;
2076
 }
2077
span.no-image {
2078
     background-color : #FFF;
2079
       border: 1px solid #979797;
2080
     color : #AAA;
2081
  display:block;
2082
 font-size : 86%;
2083
       font-weight : bold;
2084
    text-align : center;
2085
   width : 75px;
2086
}
2087
#bookcover span.no-image {
2088
     margin-right : 10px;
2089
   margin-bottom : 10px;
2090
}
2091
#shelfbrowser a:link span.no-image,
2092
#shelfbrowser a:visited span.no-image,
2093
#shelfbrowser a:hover span.no-image,
2094
#shelfbrowser a:active span.no-image {
2095
 font-size : 95%;
2096
}
2097
#shelfbrowser a:link span.no-image,
2098
#shelfbrowser a:visited span.no-image,
2099
#shelfbrowser a:hover span.no-image,
2100
#shelfbrowser a:active span.no-image,
2101
td.jacketcell a:link,
2102
td.jacketcell a:visited,
2103
td.jacketcell a:hover,
2104
td.jacketcell a:active,
2105
a.p1:link,
2106
a.p1:visited,
2107
a.p1:hover,
2108
a.p1:active {
2109
      color : #AAA;
2110
  text-decoration : none;
2111
        font-weight : bold;
2112
}
2113
2114
.copies_row > td:first-child {
2115
    border-left-style : none;
2116
}
2117
2118
.rtl {
2119
  unicode-bidi: embed;
2120
  direction: rtl;
2121
  text-align: right;
2122
}
2123
2124
div.ft {
2125
        clear : both;
2126
}
2127
#basket td ul li {
2128
     font-size:90%;
2129
 list-style:disc outside url("../../images/item-bullet.gif");
2130
   padding:0.2em 0;
2131
}
2132
2133
#recentcomments {
2134
  margin:auto;
2135
   max-width:750px;
2136
    margin-left: 13.3207em;
2137
}
2138
2139
.searchresults .commentline {
2140
  background-color : rgb(255, 255, 204);
2141
 background-color : rgba(255, 255, 204, 0.4);
2142
   border : 1px solid #CCC;
2143
       display: inline-block;
2144
 -webkit-border-radius: 4px;
2145
    -moz-border-radius: 4px;
2146
       border-radius: 4px;
2147
    -webkit-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.2);
2148
    -moz-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.2);
2149
       box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.2);
2150
    margin : .3em;
2151
 padding : .4em;
2152
}
2153
2154
.searchresults .commentline.yours {
2155
 background-color : rgb(239, 254, 213);
2156
 background-color : rgba(239, 254, 213, 0.4);
2157
}
2158
2159
#plainmarc table { border: 0; margin: .7em 0 0 0; font-family: monospace; font-size: 95%; }
2160
#plainmarc th { background-color : #FFF; border: 0; white-space: nowrap; text-align:left; vertical-align: top; padding: 2px; }
2161
#plainmarc td { border: 0; padding : 2px; vertical-align: top; }
2162
2163
#catalogue_detail_biblio h1 { float:left; margin:0 1em 1em 0; }
2164
#catalogue_detail_biblio h1.title { float:none; margin-top:1em; }
2165
#catalogue_detail_biblio h3 {clear:both; }
2166
2167
#opac-detail #Normalview { font-weight:bold; }
2168
#opac-marcdetail #Normalview { font-weight:normal; }
2169
#opac-marcdetail #MARCview { font-weight:bold; }
2170
#opac-isbddetail #Normalview { font-weight:normal; }
2171
#opac-isbddetail #ISBDview { font-weight:bold; }
2172
#opac-isbddetail #isbdcontents { margin-top: 2em; }
2173
2174
div.bibmessage { background-color : #ffffb0; border-radius : 5px; padding : 3px; margin : 2px; }
2175
2176
#renewcontrols {
2177
   float: right;
2178
  font-size: 66%;
2179
}
2180
2181
#renewcontrols a {
2182
 background-repeat : no-repeat;
2183
 text-decoration:none;
2184
  padding : .1em .4em;
2185
   padding-left : 18px;
2186
}
2187
2188
#renewselected_link {
2189
    background-image : url("../../images/sprite.png");
2190
    background-position : -5px -988px;
2191
    background-repeat: no-repeat;
2192
}
2193
2194
#renewall_link {
2195
    background-image : url("../../images/sprite.png");
2196
    background-position : -8px -964px;
2197
    background-repeat: no-repeat;
2198
}
2199
2200
.koha_url {
2201
    color: #666666;
2202
}
2203
2204
div.koha_url {
2205
    border-top: none !important;
2206
}
2207
span.koha_url {
2208
    position: absolute;
2209
    right: 0;
2210
    font-size: 85%;
2211
}
2212
a.koha_url {
2213
    text-decoration:none;
2214
}
2215
/* pagination */
2216
.pagination {
2217
    position: absolute;
2218
    top:32px;
2219
    left: -1px;
2220
    width: 100%;
2221
    height:auto;
2222
    border: 1px solid #D0D0D0;
2223
    display: none;
2224
        background-color:#F3F3F3;
2225
      padding-bottom:10px;
2226
}
2227
2228
2229
/* nav */
2230
.nav .close_pagination {
2231
    padding-right: 10px;
2232
    position: absolute;
2233
    right: 3px;
2234
    top: -25px;
2235
}
2236
.nav .close_pagination a {
2237
    text-decoration:none!important;
2238
}
2239
2240
.nav ul {
2241
    padding-top: 10px;
2242
}
2243
2244
.nav li {
2245
 list-style:none;
2246
       float:left;
2247
    padding:4px;
2248
   color:#999;
2249
}
2250
2251
.nav li a {
2252
     text-decoration:none!important;
2253
}
2254
2255
.nav li a:hover {
2256
   text-decoration:underline;
2257
}
2258
2259
.nav li ul {
2260
     float:left;
2261
}
2262
2263
.back {
2264
 float:right;
2265
}
2266
2267
.back input{
2268
   background:none!important;
2269
     color:#999!important;
2270
}
2271
2272
.pagination_list {
2273
    float:bottom;
2274
}
2275
.pagination_list ul {
2276
    padding-top: 40px;
2277
   padding-left:0px;
2278
}
2279
.pagination_list li {
2280
      list-style:none;
2281
       float:bottom;
2282
  padding:4px;
2283
   color:#999;
2284
   /* border-bottom : 1px solid #DDDDDD;*/
2285
}
2286
.pagination_list li.highlight {
2287
   background-color : #F3F3F3;
2288
   border-top : 1px solid #DDDDDD;
2289
   border-bottom : 1px solid #DDDDDD;
2290
}
2291
.pagination_list span.li_pag_index {
2292
   color: #999999;
2293
    float: left;
2294
    font-size: 15px;
2295
    font-weight: bold;
2296
    padding-right: 10px;
2297
    text-align: right;
2298
    width: 13px;
2299
2300
}
2301
2302
.pagination_list li a {padding-left:0px;}
2303
2304
2305
.nav_results {
2306
    background-color: #F3F3F3;
2307
    border: 1px solid #D0D0D0;
2308
    margin-top: 0.5em;
2309
   position:relative;
2310
}
2311
2312
.nav_results .l_Results a {
2313
    background:#E1E1E1 url("../../images/sprite.png") no-repeat 0px -504px;
2314
    color:#006699;
2315
    display:block;
2316
    padding:8px 28px;
2317
    text-decoration:none;
2318
}
2319
.nav_results .l_Results a:hover {
2320
    background-color:#D9D9D9;
2321
}
2322
.nav_results ul.pg_menu {
2323
    border-top: 1px solid #D0D0D0;
2324
    white-space : nowrap;
2325
}
2326
.nav_results ul.pg_menu li {
2327
    color:#B2B2B2;
2328
    display:inline;
2329
    list-style:none;
2330
    margin: 0;
2331
}
2332
.nav_results ul.pg_menu li.back_results a {
2333
    border-left: 1px solid #D0D0D0;
2334
    border-right: 1px solid #D0D0D0;
2335
}
2336
.nav_results ul.pg_menu li a,
2337
.nav_results ul.pg_menu li span {
2338
      background-color: #F3F3F3;
2339
     display : block;
2340
    float:left;
2341
    padding:.4em .5em;
2342
    text-decoration:none;
2343
    font-weight:normal;
2344
    text-align:center;
2345
}
2346
2347
.nav_results ul.pg_menu li span {
2348
  color : #B2B2B2;
2349
}
2350
2351
.nav_results ul.pg_menu li.left_results a {
2352
        padding-left : 0;
2353
}
2354
2355
.nav_results ul.pg_menu li a:hover {
2356
}
2357
2358
.nav_results #listResults{
2359
    line-height: 0.7em;
2360
}
2361
2362
.nav_results  #listResults li  {
2363
    background-color:#999999;
2364
    color:#C5C5C5;
2365
    font-weight:normal;
2366
   display:block;
2367
 margin-right:1px;
2368
      font-size:0.9em;
2369
       padding:5px 0px;
2370
       text-align:center;
2371
     min-width:20px;
2372
}
2373
2374
.nav_results  #listResults li:hover  {background-color:#006699;}
2375
2376
.nav_results  #listResults li a { color:#FFFFFF; font-weight:normal;}
2377
2378
a.localimage img {
2379
 border : 1px solid #8EB3E7;
2380
    margin : 0 .5em;
2381
       padding : .3em;
2382
}
2383
2384
p.patronimage {
2385
     border:1px solid #EEE;
2386
 border-bottom-color:#000;
2387
      margin: 0.9em 0 0;
2388
     padding:1em;
2389
}
2390
2391
p.patronimage.edit {
2392
   border-color:#E8E8E8;
2393
  margin: 1em 1em 1em 0;
2394
}
2395
2396
span.sep {
2397
   color: #888;
2398
   padding: 0 .2em;
2399
       text-shadow: 1px 1px 0 #FFF;
2400
}
2401
2402
#daily-quote {
2403
    /*border-top : 1px solid #000000;*/
2404
    border : 1px solid #000000;
2405
    margin-top: 2px;
2406
    margin-bottom: 10px;
2407
    margin-left: 2px;
2408
    margin-right: 2px;
2409
    width: 300px;
2410
    text-align: center;
2411
}
2412
2413
#daily-quote h1 {
2414
    font-size: 18px;
2415
    font-weight: normal;
2416
    margin: 0;
2417
}
2418
2419
#daily-quote div {
2420
    font-size: 12px;
2421
    margin: 5px;
2422
}
2423
2424
#social_networks span {
2425
    color: #274D7F;
2426
    display : block;
2427
    float : left;
2428
    font-size: 85%;
2429
    font-weight: bold;
2430
    line-height: 2em;
2431
    margin : .5em 0 .5em .5em !important;
2432
}
2433
#social_networks a {
2434
    background: transparent url("../../images/social-sprite.png") no-repeat;
2435
    display: block;
2436
    height : 20px !important;
2437
    width : 20px;
2438
    text-indent : -999em;
2439
}
2440
2441
#social_networks div {
2442
    float : left !important;
2443
    margin : .5em 0 .5em .2em !important;
2444
}
2445
2446
#social_networks #facebook {
2447
    background-position : -7px -35px;
2448
}
2449
2450
#social_networks #twitter {
2451
    background-position : -7px -5px;
2452
}
2453
2454
#social_networks #linkedin {
2455
    background-position : -7px -95px;
2456
}
2457
2458
#social_networks #delicious {
2459
    background-position : -7px -66px;
2460
}
2461
2462
#social_networks #email {
2463
    background-position : -7px -126px;
2464
}
2465
2466
/* jQueryUI Core */
2467
2468
.ui-widget-content { border: 1px solid #AAA; background: #ffffff none; color: #222222; }
2469
.ui-widget-header { border: 1px solid #AAA; background: #E6F0F2 none; color: #222222; font-weight: bold; }
2470
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #AAA; background: #F4F8F9 none; font-weight: normal; color: #555555; }
2471
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #AAA; background: #E6F0F2 none; font-weight: normal; color: #212121; }
2472
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff none; font-weight: normal; color: #212121; }
2473
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fcefa1; background: #fbf9ee; color: #363636; }
2474
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec; color: #cd0a0a; }
2475
2476
/* jQuery UI standard tabs */
2477
.ui-tabs-nav .ui-tabs-active a,
2478
.ui-tabs-nav a:hover,
2479
.ui-tabs-nav a:focus,
2480
.ui-tabs-nav a:active,
2481
.ui-tabs-nav span.a {
2482
    background: none repeat scroll 0 0 transparent;
2483
    outline: 0 none;
2484
}
2485
2486
.ui-widget,
2487
.ui-widget input,
2488
.ui-widget select,
2489
.ui-widget textarea,
2490
.ui-widget button {
2491
    font-family : inherit;
2492
    font-size : inherit;
2493
}
2494
2495
ul.ui-tabs-nav li {
2496
    list-style : none;
2497
}
2498
.ui-tabs.ui-widget-content {
2499
    background : transparent none;
2500
    border : 0;
2501
}
2502
2503
.ui-tabs .ui-tabs-panel {
2504
    border : 1px solid #D8D8D8;
2505
}
2506
.ui-tabs-nav.ui-widget-header {
2507
    border : 0;
2508
    background : none;
2509
}
2510
.ui-tabs .ui-tabs-nav li {
2511
    background: #F3F3F3 none;
2512
    border-color: #D8D8D8;
2513
    margin-right : .4em;
2514
}
2515
2516
.ui-tabs .ui-tabs-nav li.ui-tabs-active {
2517
    background-color : #FFF;
2518
    border : 1px solid #D8D8D8;
2519
    border-bottom: 0;
2520
}
2521
.ui-tabs .ui-tabs-nav li.ui-tabs-active a {
2522
    color : #000;
2523
    font-weight : bold;
2524
}
2525
2526
.ui-tabs .ui-tabs-nav li.ui-state-default.ui-state-hover {
2527
    background : #F3F3F3 none;
2528
}
2529
2530
.ui-tabs .ui-tabs-nav li.ui-tabs-active.ui-state-hover {
2531
    background : #FFF none;
2532
}
2533
2534
.ui-tabs .ui-state-default a,
2535
.ui-tabs .ui-state-default a:link,
2536
.ui-tabs .ui-state-default a:visited {
2537
    color: #006699;
2538
}
2539
2540
.ui-tabs .ui-state-hover a,
2541
.ui-tabs .ui-state-hover a:link,
2542
.ui-tabs .ui-state-hover a:visited {
2543
    color: #990033;
2544
}
2545
2546
.statictabs ul {
2547
    background: none repeat scroll 0 0 transparent;
2548
    border: 0 none;
2549
    margin: 0;
2550
    padding: 0.2em 0.2em 0;
2551
    border-bottom-right-radius: 4px;
2552
    border-bottom-left-radius: 4px;
2553
    border-top-right-radius: 4px;
2554
    border-top-left-radius: 4px;
2555
    color: #222222;
2556
    font-weight: bold;
2557
    font-size: 100%;
2558
    line-height: 1.3;
2559
    list-style: none outside none;
2560
    outline: 0 none;
2561
    text-decoration: none;
2562
}
2563
2564
.statictabs ul:after {
2565
    clear: both;
2566
}
2567
2568
.statictabs ul:before,
2569
.statictabs ul:after {
2570
    content: "";
2571
    display: table;
2572
}
2573
2574
.statictabs ul li {
2575
    background: none repeat scroll 0 0 #E6F0F2;
2576
    border: 1px solid #B9D8D9;
2577
    border-bottom: 0 none !important;
2578
    border-top-right-radius: 4px;
2579
    border-top-left-radius: 4px;
2580
    float: left;
2581
    list-style: none outside none;
2582
    margin-bottom: 0;
2583
    margin-right: 0.4em;
2584
    padding: 0;
2585
    position: relative;
2586
    white-space: nowrap;
2587
    top: 1px;
2588
    color: #555555;
2589
    font-weight: normal;
2590
2591
}
2592
2593
.statictabs ul li.active {
2594
    background-color: #FFFFFF;
2595
    color: #212121;
2596
    font-weight: normal;
2597
    padding-bottom: 1px;
2598
}
2599
2600
.statictabs ul li a {
2601
    color: #004D99;
2602
    cursor: pointer;
2603
    float: left;
2604
    padding: 0.5em 1em;
2605
    text-decoration: none;
2606
}
2607
2608
.statictabs ul li a:hover {
2609
    background-color : #EDF4F5;
2610
    border-top-right-radius: 4px;
2611
    border-top-left-radius: 4px;
2612
    color : #538200;
2613
}
2614
2615
.statictabs ul li.active a {
2616
    color: #000000;
2617
    font-weight: bold;
2618
    cursor: text;
2619
    background: none repeat scroll 0 0 transparent;
2620
    outline: 0 none;
2621
}
2622
2623
.statictabs .tabs-container {
2624
    border: 1px solid #B9D8D9;
2625
    background: none repeat scroll 0 0 transparent;
2626
    display: block;
2627
    padding: 1em 1.4em;
2628
    border-bottom-right-radius: 4px;
2629
    border-bottom-left-radius: 4px;
2630
    color: #222222;
2631
}
2632
2633
.authref {
2634
    font-style: normal;
2635
    text-indent: 4em;
2636
}
2637
2638
.seefrom, .seealso {
2639
    font-style: italic;
2640
    text-indent: 2em;
2641
}
2642
2643
.authstanza {
2644
    margin-top: 1em;
2645
}
2646
2647
.authstanzaheading {
2648
    font-weight: bold;
2649
}
2650
2651
.authstanza li {
2652
    margin-left: 0.5em;
2653
}
2654
2655
#didyoumean {
2656
    background-color: #EEE;
2657
    border: 1px solid #E8E8E8;
2658
    margin: 0 0 0.5em;
2659
    text-align: left;
2660
    padding: 0.5em;
2661
    border-radius: 3px 3px 3px 3px;
2662
}
2663
2664
.suggestionlabel {
2665
    font-weight: bold;
2666
}
2667
2668
.searchsuggestion {
2669
    padding: 0.2em 0.5em;
2670
    white-space: nowrap;
2671
    display: inline-block;
2672
}
2673
2674
2675
/* jQuery UI Datepicker */
2676
.ui-datepicker table {width: 100%; font-size: .9em; border : 0; border-collapse: collapse; margin:0 0 .4em; }
2677
.ui-datepicker th { background : transparent none; padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
2678
2679
.ui-datepicker-trigger {
2680
    vertical-align: middle;
2681
    margin : 0 3px;
2682
}
2683
.ui-datepicker {
2684
    -moz-box-shadow: 1px 1px 3px 0 #666;
2685
    -webkit-box-shadow: 1px 1px 3px 0 #666;
2686
    box-shadow: 1px 1px 3px 0 #666;
2687
}
2688
2689
body#opac-main #opacmainuserblockmobile {
2690
    display: none;
2691
}
2692
2693
#hierarchies a {
2694
    font-weight: normal;
2695
    text-decoration: underline;
2696
    color: #069;
2697
}
2698
2699
#hierarchies a:hover {
2700
    color: #990033;
2701
}
2702
2703
.mobile_only {
2704
   display : none;
2705
}
2706
2707
/* different sizes for different tags in opac-tags.tt */
2708
.tagweight0 {
2709
    font-size: 12px;
2710
}
2711
2712
.tagweight1 {
2713
    font-size: 14px;
2714
}
2715
2716
.tagweight2 {
2717
    font-size: 16px;
2718
}
2719
2720
.tagweight3 {
2721
    font-size: 18px;
2722
}
2723
2724
.tagweight4 {
2725
    font-size: 20px;
2726
}
2727
2728
.tagweight5 {
2729
    font-size: 22px;
2730
}
2731
2732
.tagweight6 {
2733
    font-size: 24px;
2734
}
2735
2736
.tagweight7 {
2737
    font-size: 26px;
2738
}
2739
2740
.tagweight8 {
2741
    font-size: 28px;
2742
}
2743
2744
.tagweight9 {
2745
    font-size: 30px;
2746
}
2747
2748
.review {
2749
    margin-bottom: 20px;
2750
}
2751
2752
#idreambooksreadometer {
2753
    float: right;
2754
}
2755
a.idreambooksrating {
2756
    font-size: 30px;
2757
    color: #29ADE4;
2758
    padding-left: 85px;
2759
    line-height: 30px;
2760
    text-decoration: none;
2761
}
2762
2763
.idreambookslegend {
2764
    font-size: small;
2765
}
2766
2767
a.reviewlink,a.reviewlink:visited {
2768
    text-decoration: none;
2769
    color: black;
2770
    font-weight: normal;
2771
}
2772
2773
.idreambookssummary a {
2774
    color: #707070;
2775
    text-decoration: none;
2776
}
2777
2778
.idreambookssummary img, .idbresult img {
2779
    vertical-align: middle;
2780
}
2781
2782
.idbresult {
2783
    color: #29ADE4;
2784
    text-align: center;
2785
    margin: 0.5em;
2786
    padding: 0.5em;
2787
}
2788
2789
.idbresult a, .idbresult a:visited {
2790
    text-decoration: none;
2791
    color: #29ADE4;
2792
}
2793
2794
.idbresult img {
2795
    padding-right: 6px;
2796
}
2797
2798
.highlight-row-results {
2799
    font-size: 120%;
2800
}
2801
2802
.highlight-row-detail {
2803
    font-weight: bold;
2804
}
2805
2806
.authorSearch {
2807
    position: absolute;
2808
    display: none;
2809
    z-index: 2;
2810
    background-color: white;
2811
    border: 1px solid black;
2812
    padding: 4px;
2813
}
2814
.authorSearch li {
2815
    list-style-type: none;
2816
}
2817
.authorSearch ul {
2818
    padding-left: 0px;
2819
}
2820
.subjectSearch {
2821
    position: absolute;
2822
    display: none;
2823
    z-index: 2;
2824
    background-color: white;
2825
    border: 1px solid black;
2826
    padding: 4px;
2827
}
2828
.subjectSearch li {
2829
    list-style-type: none;
2830
}
2831
.subjectSearch ul {
2832
    padding-left: 0px;
2833
}
2834
2835
.branch-info-tooltip {
2836
    display: none;
2837
}
2838
2839
.sorting_asc {
2840
    padding-right: 19px;
2841
    background: url("../../images/asc.gif") no-repeat scroll right center #EEEEEE;
2842
}
2843
.sorting_desc {
2844
    padding-right: 19px;
2845
    background: url("../../images/desc.gif") no-repeat scroll right center #EEEEEE;
2846
}
2847
.sorting {
2848
    padding-right: 19px;
2849
    background: url("../../images/ascdesc.gif") no-repeat scroll right center #EEEEEE;
2850
}
2851
.nosort,
2852
.nosort.sorting_asc,
2853
.nosort.sorting_desc,
2854
.nosort.sorting {
2855
    padding-right: 19px;
2856
    background: #EEEEEE none;
2857
}
2858
2859
#overdrive-results {
2860
    font-weight: bold;
2861
    padding-left: 1em;
2862
}
2863
2864
.throbber {
2865
    vertical-align: middle;
2866
}
2867
2868
#overdrive-results-list .star-rating-control {
2869
    display: block;
2870
    overflow: auto;
2871
}
(-)a/koha-tmpl/opac-tmpl/ccsr/en/css/persona-buttons.css (-228 lines)
Lines 1-228 Link Here
1
/* Link body */
2
.persona-button{
3
  color: #fff;
4
  display: inline-block;
5
  font-size: 14px;
6
  font-family: Helvetica, Arial, sans-serif;
7
  font-weight: bold;
8
  line-height: 1.1;
9
  overflow: hidden;
10
  position: relative;
11
  text-decoration: none;
12
  text-shadow: 0 1px rgba(0,0,0,0.5), 0 0 2px rgba(0,0,0,0.2);
13
14
  background: #297dc3;
15
  background: -moz-linear-gradient(top, #43a6e2, #287cc2);
16
  background: -ms-linear-gradient(top, #43a6e2, #287cc2);
17
  background: -o-linear-gradient(top, #43a6e2, #287cc2);
18
  background: -webkit-linear-gradient(top, #43a6e2, #287cc2);
19
  background: linear-gradient(top, #43a6e2, #287cc2);
20
21
  -moz-border-radius:   3px;
22
  -ms-border-radius:     3px;
23
  -o-border-radius:     3px;
24
  -webkit-border-radius:   3px;
25
  border-radius:       3px;
26
27
  -moz-box-shadow:   0 1px 0 rgba(0,0,0,0.2);
28
  -ms-box-shadow:   0 1px 0 rgba(0,0,0,0.2);
29
  -o-box-shadow:     0 1px 0 rgba(0,0,0,0.2);
30
  -webkit-box-shadow: 0 1px 0 rgba(0,0,0,0.2);
31
  box-shadow:     0 1px 0 rgba(0,0,0,0.2);
32
}
33
34
.persona-button:hover{
35
  background: #21669f;
36
  background: -moz-linear-gradient(top, #3788b9, #21669f);
37
  background: -ms-linear-gradient(top, #3788b9, #21669f);
38
  background: -o-linear-gradient(top, #3788b9, #21669f);
39
  background: -webkit-linear-gradient(top, #3788b9, #21669f);
40
  background: linear-gradient(top, #3788b9, #21669f);
41
}
42
43
.persona-button:active, .persona-button:focus{
44
  top: 1px;
45
  -moz-box-shadow:   none;
46
  -ms-box-shadow:   none;
47
  -o-box-shadow:     none;
48
  -webkit-box-shadow: none;
49
  box-shadow:     none;
50
}
51
52
.persona-button span{
53
  display: inline-block;
54
  padding: 5px 10px 5px 40px;
55
}
56
57
/* Icon */
58
.persona-button span:after{
59
  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAPCAYAAAA/I0V3AAAA4klEQVR42o2RWaqEMBRE3YaCiDjPwQGcd9CrysLv4wTyoLFD90dxqbp1EgdPRB7Kskznea6Zn/aPoKoqUUrJOI5m4l2QBfSyLHKep1zXZSae3An1fS/7vst931bGkzuhaZrsLVbGkzuheZ7lOI6HyJ2QUkqv6yrbtv0LT+6E7G0UrfBfP3lZlpoXH4ZBmHgn5Pv+KwxDfqp0XQdgJp6c/RsUBIGOokiSJDE/s21bACbe5Ozp0TdAHMdSFIXUdS1N01C2wpObPT36HifwCJzI0iX29Oh7XP0E3CB9L01TzM+i/wePv4ZE5RtAngAAAABJRU5ErkJggg==) 10px center no-repeat;
60
  content: '';
61
  display: block;
62
  width: 31px;
63
64
  position: absolute;
65
  bottom: 0;
66
  left: -3px;
67
  top: 0;
68
  z-index: 10;
69
}
70
71
/*  Icon background */
72
.persona-button span:before{
73
  content: '';
74
  display: block;
75
  height: 100%;
76
  width: 20px;
77
78
  position: absolute;
79
  bottom: 0;
80
  left: 0;
81
  top: 0;
82
  z-index: 1;
83
84
  background: #42a9dd;
85
  background: -moz-linear-gradient(top, #50b8e8, #3095ce);
86
  background: -ms-linear-gradient(top, #50b8e8, #3095ce);
87
  background: -o-linear-gradient(top, #50b8e8, #3095ce);
88
  background: -webkit-linear-gradient(top, #50b8e8, #3095ce);
89
  background: linear-gradient(top, #50b8e8, #3095ce);
90
91
  -moz-border-radius:   3px 0 0 3px;
92
  -ms-border-radius:     3px 0 0 3px;
93
  -o-border-radius:     3px 0 0 3px;
94
  -webkit-border-radius:   3px 0 0 3px;
95
  border-radius:       3px 0 0 3px;
96
}
97
98
/* Triangle */
99
.persona-button:before{
100
  background: #42a9dd;
101
  content: '';
102
  display: block;
103
  height: 26px;
104
  width: 26px;
105
106
  position: absolute;
107
  left: 2px;
108
  top: 50%;
109
  margin-top: -13px;
110
  z-index: 0;
111
112
  background: -moz-linear-gradient(-45deg, #50b8e8, #3095ce);
113
  background: -ms-linear-gradient(-45deg, #50b8e8, #3095ce);
114
  background: -o-linear-gradient(-45deg, #50b8e8, #3095ce);
115
  background: -webkit-linear-gradient(-45deg, #50b8e8, #3095ce);
116
  background: linear-gradient(-45deg, #3095ce, #50b8e8); /* flipped for updated spec */
117
118
  -moz-box-shadow:   1px -1px 1px rgba(0,0,0,0.1);
119
  -ms-box-shadow:   1px -1px 1px rgba(0,0,0,0.1);
120
  -o-box-shadow:     1px -1px 1px rgba(0,0,0,0.1);
121
  -webkit-box-shadow: 1px -1px 1px rgba(0,0,0,0.1);
122
  box-shadow:     1px -1px 1px rgba(0,0,0,0.1);
123
124
  -moz-transform:   rotate(45deg);
125
  -ms-transform:     rotate(45deg);
126
  -o-transform:     rotate(45deg);
127
  -webkit-transform:   rotate(45deg);
128
  transform:       rotate(45deg);
129
}
130
131
/* Inset shadow (required here because the icon background clips it when on the `a` element) */
132
.persona-button:after{
133
  content: '';
134
  display: block;
135
  height: 100%;
136
  width: 100%;
137
138
  position: absolute;
139
  left: 0;
140
  top: 0;
141
  bottom: 0;
142
  right: 0;
143
  z-index: 10;
144
145
  -moz-border-radius:   3px;
146
  -ms-border-radius:     3px;
147
  -o-border-radius:     3px;
148
  -webkit-border-radius:   3px;
149
  border-radius:       3px;
150
151
  -moz-box-shadow:   inset 0 -1px 0 rgba(0,0,0,0.3);
152
  -ms-box-shadow:   inset 0 -1px 0 rgba(0,0,0,0.3);
153
  -o-box-shadow:     inset 0 -1px 0 rgba(0,0,0,0.3);
154
  -webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,0.3);
155
  box-shadow:     inset 0 -1px 0 rgba(0,0,0,0.3);
156
}
157
158
/* ========================================================
159
 *    Dark button
160
 * ===================================================== */
161
.persona-button.dark{
162
  background: #3c3c3c;
163
  background: -moz-linear-gradient(top, #606060, #3c3c3c);
164
  background: -ms-linear-gradient(top, #606060, #3c3c3c);
165
  background: -o-linear-gradient(top, #606060, #3c3c3c);
166
  background: -webkit-linear-gradient(top, #606060, #3c3c3c);
167
  background: linear-gradient(top, #606060, #3c3c3c);
168
}
169
.persona-button.dark:hover{
170
  background: #2d2d2d;
171
  background: -moz-linear-gradient(top, #484848, #2d2d2d);
172
  background: -ms-linear-gradient(top, #484848, #2d2d2d);
173
  background: -o-linear-gradient(top, #484848, #2d2d2d);
174
  background: -webkit-linear-gradient(top, #484848, #2d2d2d);
175
  background: linear-gradient(top, #484848, #2d2d2d);
176
}
177
.persona-button.dark span:before{ /* Icon BG */
178
  background: #d34f2d;
179
  background: -moz-linear-gradient(top, #ebac45, #d34f2d);
180
  background: -ms-linear-gradient(top, #ebac45, #d34f2d);
181
  background: -o-linear-gradient(top, #ebac45, #d34f2d);
182
  background: -webkit-linear-gradient(top, #ebac45, #d34f2d);
183
  background: linear-gradient(top, #ebac45, #d34f2d);
184
}
185
.persona-button.dark:before{ /* Triangle */
186
  background: #d34f2d;
187
  background: -moz-linear-gradient(-45deg, #ebac45, #d34f2d);
188
  background: -ms-linear-gradient(-45deg, #ebac45, #d34f2d);
189
  background: -o-linear-gradient(-45deg, #ebac45, #d34f2d);
190
  background: -webkit-linear-gradient(-45deg, #ebac45, #d34f2d);
191
  background: linear-gradient(-45deg, #d34f2d, #ebac45); /* flipped for updated spec */
192
}
193
194
/* ========================================================
195
 *    Orange button
196
 * ===================================================== */
197
.persona-button.orange{
198
  background: #ee731a;
199
  background: -moz-linear-gradient(top, #ee731a, #d03116);
200
  background: -ms-linear-gradient(top, #ee731a, #d03116);
201
  background: -o-linear-gradient(top, #ee731a, #d03116);
202
  background: -webkit-linear-gradient(top, #ee731a, #d03116);
203
  background: linear-gradient(top, #ee731a, #d03116);
204
}
205
.persona-button.orange:hover{
206
  background: #cb6216;
207
  background: -moz-linear-gradient(top, #cb6216, #b12a13);
208
  background: -ms-linear-gradient(top, #cb6216, #b12a13);
209
  background: -o-linear-gradient(top, #cb6216, #b12a13);
210
  background: -webkit-linear-gradient(top, #cb6216, #b12a13);
211
  background: linear-gradient(top, #cb6216, #b12a13);
212
}
213
.persona-button.orange span:before{ /* Icon BG */
214
  background: #e84a21;
215
  background: -moz-linear-gradient(top, #f7ad27, #e84a21);
216
  background: -ms-linear-gradient(top, #f7ad27, #e84a21);
217
  background: -o-linear-gradient(top, #f7ad27, #e84a21);
218
  background: -webkit-linear-gradient(top, #f7ad27, #e84a21);
219
  background: linear-gradient(top, #f7ad27, #e84a21);
220
}
221
.persona-button.orange:before{ /* Triangle */
222
  background: #e84a21;
223
  background: -moz-linear-gradient(-45deg, #f7ad27, #e84a21);
224
  background: -ms-linear-gradient(-45deg, #f7ad27, #e84a21);
225
  background: -o-linear-gradient(-45deg, #f7ad27, #e84a21);
226
  background: -webkit-linear-gradient(-45deg, #f7ad27, #e84a21);
227
  background: linear-gradient(-45deg, #e84a21, #f7ad27); /* flipped for updated spec */
228
}
(-)a/koha-tmpl/opac-tmpl/ccsr/en/css/print.css (-227 lines)
Lines 1-227 Link Here
1
a:link {
2
       color : #000066;
3
       text-decoration: none;
4
}
5
6
a:visited {
7
  color : #000066;
8
       text-decoration: none;
9
}
10
11
a:hover {
12
    color : #993300;
13
       text-decoration: none;
14
}
15
16
body {
17
       background-color : #FFF;
18
       color : #333333;
19
       font-family : arial, geneva, sans-serif;
20
       font-size : 14px;
21
      margin : 0px 0px 0px 0px;
22
    word-wrap : break-word;
23
}
24
25
caption {
26
     color : #000066;
27
       font-size : 18px;
28
      font-weight : bold;
29
    margin-top : 5px;
30
      text-align : left;
31
}
32
33
div.table {
34
      width : 100%;
35
}
36
37
form {
38
        margin : 0px;
39
  padding : 0px;
40
}
41
42
h1
43
   {
44
      color : #000066;
45
       font-size : 22px;
46
      font-weight : bold;
47
    margin-bottom : 3px;
48
   margin-top : 3px;
49
}
50
51
h2 {
52
      color : #000066;
53
       font-size : 20px;
54
      font-weight : bold;
55
    margin-bottom : 3px;
56
   margin-top : 3px;
57
}
58
59
h3 {
60
      color : #000066;
61
       font-size : 18px;
62
      font-weight : bold;
63
    margin-bottom : 3px;
64
   margin-top : 3px;
65
}
66
67
h4 {
68
      color : #000066;
69
       font-size : 16px;
70
      font-weight : bold;
71
    margin-bottom : 3px;
72
   margin-top : 3px;
73
}
74
75
h5 {
76
      color : #000066;
77
       font-size : 15px;
78
      font-weight : bold;
79
    margin-bottom : 1px;
80
   margin-top : 1px;
81
}
82
83
h6 {
84
      color : #000066;
85
       font-size : 14px;
86
      font-weight : bold;
87
    margin-bottom : 1px;
88
   margin-top : 1px;
89
}
90
91
p {
92
       margin-top : 0px;
93
}
94
95
table {
96
   background-color : #FFFFFF;
97
    border-bottom : 0px solid #CCCCCC;
98
     border-collapse : collapse;
99
    border-left : 0px solid #CCCCCC;
100
       margin : 3px 0px 5px 0px;
101
      padding : 0px;
102
 width : 99%;
103
}
104
105
td {
106
   background-color : #FFF;
107
       border-bottom : 1px solid #CCCCCC;
108
     border-right : 1px solid #CCCCCC;
109
      padding : 5px 5px 5px 5px;
110
     vertical-align : top;
111
}
112
113
td:last-child {
114
       background-color : #FFF;
115
       border-bottom : 1px solid #CCCCCC;
116
     border-right : 0px solid #CCCCCC;
117
      padding : 5px 5px 5px 5px;
118
     vertical-align : top;
119
}
120
121
th {
122
  background-color : #E9E9E9;
123
    border-bottom : 1px solid #CCCCCC;
124
     border-right : 1px solid #CCCCCC;
125
      font-weight : bold;
126
    padding : 5px 5px 5px 5px;
127
}
128
129
th:last-child {
130
  background-color : #E9E9E9;
131
    border-bottom : 1px solid #CCCCCC;
132
     border-right : 0px solid #CCCCCC;
133
      font-weight : bold;
134
    padding : 5px 5px 5px 5px;
135
}
136
137
tr.highlight {
138
   background-color: #e9e9e9;
139
}
140
141
body#basket tr.highlight {
142
       background-color : transparent;
143
}
144
145
body#basket a {
146
     font-weight : bold;
147
}
148
149
body#basket table {
150
     border-top : 1px solid #EEE;
151
   border-left : 1px solid #EEE;
152
}
153
body#basket td,
154
body#basket th {
155
       background-color : transparent;
156
        padding : 2px;
157
}
158
159
body#basket th {
160
     background-color : #EEE;
161
}
162
163
body#basket th,
164
body#basket th[scope=col] {
165
        text-align : center;
166
   vertical-align : middle;
167
}
168
169
body#basket th[scope=row] {
170
        font-size : 89%;
171
       text-align : right;
172
    vertical-align : top;
173
  width : 10%;
174
}
175
176
body#basket p {
177
        font-size : 85%;
178
       margin : .2em 0;
179
       text-indent : .5em;
180
}
181
182
.error {
183
        font-weight: bold;
184
}
185
186
.ex {
187
    font-family : "Courier New", Courier, monospace;
188
}
189
.inline {
190
   display : inline;
191
}
192
193
.screen {
194
 display : none;
195
}
196
197
#bookcover {
198
        float:left;
199
    margin:0pt;
200
    padding:0pt;
201
}
202
203
#members,#opac-main-search,#opac-user-views .ui-tabs-nav,input,h2 span.hint,td.resultscontrol,.pages,.suggestion,.views,#action,#export,#bibliodescriptions .ui-tabs-nav,#addshelf,fieldset.action, .list-actions, .ft, #facetcontainer,.results_summary.actions,.koha_url,.yui-b {
204
    display : none;
205
}
206
207
#userresults {
208
    position : absolute;
209
    right : 0px;
210
    word-wrap : break-word;
211
        display : block;
212
}
213
214
div#userupdate input,div#userupdate textarea {
215
     display : inline;
216
      border : 0;
217
}
218
219
#yui-main,
220
#yui-main .yui-b,
221
.yui-t1 #yui-main .yui-b {
222
    display : block !important;
223
    margin : 0 !important;
224
    padding : 0 !important;
225
    width : auto !important;
226
    float : none !important;
227
}
(-)a/koha-tmpl/opac-tmpl/ccsr/en/css/right-to-left.css (-252 lines)
Lines 1-252 Link Here
1
/*Search form */
2
form#searchform select {
3
    display:none;
4
    right: -9999em;
5
    position: absolute;
6
}
7
div#menu {
8
    border-left: 1px solid rgb(151, 151, 151);
9
    font-size: 94%;
10
    margin-left: 0.5em;
11
12
}
13
/*text alignment */
14
body,
15
#doc,
16
#doc2,
17
#doc3,
18
#doc4,
19
.yui-t1,
20
.yui-t2,
21
.yui-t3,
22
.yui-t4,
23
.yui-t5,
24
.yui-t6,
25
.yui-t7,
26
table#marc th,
27
caption
28
{
29
    text-align: right;
30
   direction: rtl;
31
}
32
h4
33
{
34
    text-align: right !important;
35
}
36
37
/*floats*/
38
.yui-g .yui-u, .yui-g .yui-g, .yui-g .yui-gb, .yui-g .yui-gc, .yui-g .yui-gd, .yui-g .yui-ge, .yui-g .yui-gf, .yui-gc .yui-u, .yui-gd .yui-g, .yui-g .yui-gc .yui-u, .yui-ge .yui-u, .yui-ge .yui-g, .yui-gf .yui-g, .yui-gf .yui-u {
39
    float: left;
40
}
41
.yui-g div.first, .yui-g div.first, .yui-gc div.first, .yui-gc div.first div.first, .yui-gd div.first, .yui-ge div.first, .yui-gf div.first {
42
    float: right;
43
}
44
fieldset.rows label, fieldset.rows span.label {
45
    float: right;
46
    margin-right: 1em;
47
    text-align: right;
48
}
49
.yui-t1 .yui-b {
50
    float: right;
51
    width: 12.3207em;
52
}
53
54
55
#opacmainuserblock, #news {
56
    margin-right: 7em;
57
}
58
ul#menu-left {
59
    margin: 0px 30px 0px 0px ;
60
    float: right;
61
}
62
#members {
63
    background: none repeat scroll 0% 0% transparent;
64
    margin: 0px;
65
    padding: 0px;
66
    float: left;
67
}
68
#members li {
69
    float: right;
70
    border-left: medium none;
71
}
72
.ui-tabs .ui-tabs-nav li {
73
    float: right;
74
}
75
div.rating-cancel, div.star-rating {
76
    float: right;
77
}
78
.left {
79
    float: right;
80
}
81
input#searchsubmit.left {
82
 float:right;
83
}
84
85
#fluid-offset {
86
    float: left;
87
    width: 100%;
88
}
89
90
#moresearches a:link, #moresearches a:visited {
91
    background: url("../../images/arrow-left-grey-11x6.png") no-repeat scroll right center transparent;
92
    margin-left: 0px;
93
    padding-left: 0px;
94
    padding-right: 12px;
95
}
96
form.single-library .input-wrapper {
97
    margin: 0px 0px 0px 237px;
98
}
99
form.multi-libraries .input-wrapper
100
{
101
margin: 0pt 0pt 0pt 416px;
102
}
103
104
.jqTransformSelectWrapper{
105
float:right;
106
margin-right: 5px;
107
margin-left: -5px;
108
}
109
110
111
form.multi-libraries #filters .jqTransformSelectWrapper {
112
left:230px;
113
right:auto;
114
}
115
form.single-library  #filters .jqTransformSelectWrapper,
116
form.multi-libraries #libraries .jqTransformSelectWrapper {
117
left:50px;
118
right:auto;
119
}
120
121
122
form#searchform input[type="submit"] {
123
    margin-right: 4px;
124
    margin-left: 0pt;
125
    position: absolute;
126
    left: 10px;
127
    right: auto;
128
}
129
ul#i18nMenu li {
130
float:right !important;
131
}
132
div.lang {
133
float:right !important;
134
}
135
136
#main_footer .colright {
137
    float: left;
138
}
139
#main_footer .colright .koha {
140
    background: url("../../images/img_logo_koha.jpg") no-repeat scroll left bottom transparent;
141
}
142
.yui-t1 #yui-main,
143
.yui-t2 #yui-main,
144
.yui-t3 #yui-main
145
{
146
   float: left;
147
}
148
.yui-t1 #yui-main .yui-b {
149
    margin-right: 13.3207em;
150
}
151
.yui-t1 #yui-main, .yui-t2 #yui-main, .yui-t3 #yui-main {
152
    margin-right: -25em;
153
    margin-left: auto;
154
}
155
.yui-t1 #yui-main .yui-b {
156
    margin-left: auto;
157
}
158
body#results div#userresults {
159
    border-right: 1px solid rgb(200, 200, 196);
160
}
161
162
form#searchform .input-wrapper {
163
    right: -39px;
164
    left: auto;
165
}
166
.statictabs ul li {
167
    float: right;
168
}
169
#auth {
170
    float: right;
171
}
172
173
.jqTransformSelectWrapper div a {
174
    left: 3px;
175
    right: auto;
176
}
177
.jqTransformSelectWrapper div span {
178
    float: right;
179
}
180
.resort {
181
    float: left;
182
}
183
184
ul#menu-left li a#cartmenulink {
185
    padding: 0px 30px 0px 0px ;
186
    background: url("../../images/img_toolbar-button-cart.png") no-repeat scroll right center transparent;
187
}
188
ul#menu-left li {
189
    float: right;
190
}
191
div#cartDetails {
192
    margin-left: -9.5em;
193
}
194
div#listsmenu {
195
    margin-left: -70px;
196
}
197
ul#menu-left li#listsmenulink a {
198
    padding: 0px 20px 0px 0px;
199
    background: url("../../images/img_toolbar-button-lists.png") no-repeat scroll right center transparent;
200
}
201
div.rating-cancel, div.star-rating {
202
    float: right !important;
203
}
204
.actions a.addtocart {
205
    background-position: 49px -572px;
206
    padding-right: 15px;
207
    padding-left: 0px;
208
}
209
210
.actions a.addtoshelf {
211
212
    background-position: 45px -27px;
213
    padding-right: 13px;
214
    padding-left: 0px;
215
}
216
217
#social_networks span {
218
    float: right;
219
    margin: 0.5em 0.5em 0px !important;
220
}
221
#social_networks div {
222
    float: right !important;
223
    margin: 0.5em 0.2em 0.5em 0px !important;
224
}
225
#action a.addtocart, #toolbar a.addtocart {
226
    background-position: 60px -265px;
227
}
228
#action a.print {
229
    background-position: 16px -186px;
230
}
231
#action a {
232
    padding-right: 35px;
233
    padding-left: 0px !important;
234
}
235
236
237
238
div#menu li a {
239
    background: -moz-linear-gradient(right center , rgb(238, 238, 238) 0%, rgb(238, 238, 238) 96%, rgb(230, 230, 230) 97%, rgb(204, 204, 204) 99%, rgb(193, 193, 193) 100%) repeat scroll 0% 0% transparent;
240
    text-decoration: none;
241
    display: block;
242
    border: 1px solid rgb(151, 151, 151);
243
    font-size: 111%;
244
    margin: 0.5em -1px 0.5em 0px;
245
    padding: 0.4em 0.3em;
246
}
247
248
#action a.addtoshelf, #toolbar a.addtoshelf {
249
    background-image: url("../../images/sprite.png");
250
    background-position: 68px -225px;
251
    background-repeat: no-repeat;
252
}
(-)a/koha-tmpl/opac-tmpl/ccsr/en/css/sco.css (-353 lines)
Lines 1-353 Link Here
1
@import url("../../../lib/yui/reset-fonts-grids.css");
2
@import url("../../../lib/yui/skin.css");
3
4
a {
5
  font-weight : bold;
6
}
7
8
a, a:visited {
9
  color : #006699;
10
}
11
12
a:hover,input.editshelf:hover,a.editshelf:hover,input.deleteshelf:hover {
13
  color : #990033;
14
}
15
16
body {
17
     background-color : white;
18
      text-align : left;
19
     padding : 0 0 2.5em 0;
20
}
21
22
caption {
23
    font-size : 110%;
24
      text-align : left;
25
     font-weight : bold;
26
}
27
28
fieldset {
29
      background-color: #FFF;
30
        border : 2px solid #EEEEEE;
31
    margin : 1em 1em 1em 0;
32
        padding : 1em;
33
}
34
35
h1,h2,h3,h4,h5,h6 {
36
  font-weight : bold;
37
    margin : .5em 0;
38
}
39
40
h1 {
41
       font-size : 138.5%;
42
}
43
44
h2 {
45
    font-size : 134%;
46
}
47
48
h3 {
49
      font-size : 123.1%;
50
}
51
52
h4 {
53
    font-size : 116%;
54
}
55
56
h5 {
57
      font-size : 108%;
58
}
59
60
h6 {
61
      font-size : 100%;
62
}
63
64
input[type=submit],
65
input[type=button],
66
input[type=reset],
67
fieldset.brief input[type=submit],
68
fieldset.brief input[type=button],
69
fieldset.brief input[type=reset]
70
{
71
       background: #f4f9fc; /* Old browsers */
72
        background: -moz-linear-gradient(top, #f4f9fc 0%, #dfeefa 4%, #bfd5ea 93%, #a1c4e2 97%, #b8d0e6 100%); /* FF3.6+ */
73
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f4f9fc), color-stop(4%,#dfeefa), color-stop(93%,#bfd5ea), color-stop(97%,#a1c4e2), color-stop(100%,#b8d0e6)); /* Chrome,Safari4+ */
74
 background: -webkit-linear-gradient(top, #f4f9fc 0%,#dfeefa 4%,#bfd5ea 93%,#a1c4e2 97%,#b8d0e6 100%); /* Chrome10+,Safari5.1+ */
75
       background: -o-linear-gradient(top, #f4f9fc 0%,#dfeefa 4%,#bfd5ea 93%,#a1c4e2 97%,#b8d0e6 100%); /* Opera11.10+ */
76
     background: -ms-linear-gradient(top, #f4f9fc 0%,#dfeefa 4%,#bfd5ea 93%,#a1c4e2 97%,#b8d0e6 100%); /* IE10+ */
77
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f9fc', endColorstr='#b8d0e6',GradientType=0 ); /* IE6-9 */
78
       background: linear-gradient(top, #f4f9fc 0%,#dfeefa 4%,#bfd5ea 93%,#a1c4e2 97%,#b8d0e6 100%); /* W3C */
79
        border-top: 1px solid #cccccc;
80
 border-left: 1px solid #cccccc;
81
        border-right: 1px solid #eeeeee;
82
       border-bottom: 1px solid #eeeeee;
83
      color : #333;
84
  font-size : 93%;
85
       font-weight : bold;
86
    padding : 4px;
87
}
88
89
input[type=submit]:active, input[type=button]:active, input[type=reset]:active {
90
     border: 1px inset #666666;
91
     float : none;
92
}
93
.dialog {
94
  border: 1px solid #bcbcbc;
95
 padding : .5em;
96
        margin : 1em auto;
97
  width: 65%;
98
  }
99
100
.dialog  h2, .dialog h3, .dialog h4 {
101
	margin : auto;
102
    text-align : center;
103
  }
104
105
div.alert {
106
  background: #fef8d3; /* Old browsers */
107
        background: -moz-linear-gradient(top, #fef8d3 0%, #ffec91 9%, #ffed87 89%, #f9dc00 100%); /* FF3.6+ */
108
 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fef8d3), color-stop(9%,#ffec91), color-stop(89%,#ffed87), color-stop(100%,#f9dc00)); /* Chrome,Safari4+ */
109
  background: -webkit-linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* Chrome10+,Safari5.1+ */
110
   background: -o-linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* Opera11.10+ */
111
 background: -ms-linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* IE10+ */
112
      filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fef8d3', endColorstr='#f9dc00',GradientType=0 ); /* IE6-9 */
113
       background: linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* W3C */
114
    text-align : center;
115
}
116
117
div.alert strong {
118
     color : #900;
119
}
120
121
div.message {
122
 background: #ffffff; /* Old browsers */
123
        background: -moz-linear-gradient(top, #ffffff 0%, #f4f6fa 2%, #eaeef5 23%, #e8edf6 94%, #cddbf2 100%); /* FF3.6+ */
124
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(2%,#f4f6fa), color-stop(23%,#eaeef5), color-stop(94%,#e8edf6), color-stop(100%,#cddbf2)); /* Chrome,Safari4+ */
125
 background: -webkit-linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* Chrome10+,Safari5.1+ */
126
       background: -o-linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* Opera11.10+ */
127
     background: -ms-linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* IE10+ */
128
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#cddbf2',GradientType=0 ); /* IE6-9 */
129
       background: linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* W3C */
130
        border : 1px solid #bcbcbc;
131
    width : 55%;
132
}
133
134
.dialog input {
135
	background : #FFF none;
136
	border : 1px solid #bcbcbc;
137
  margin : .4em;
138
 padding : .4em;
139
 }
140
141
142
.dialog input.back {
143
    background : #FFF url(/opac-tmpl/lib/famfamfam/silk/arrow_left.png) no-repeat 4px center;
144
    padding : .4em .4em .4em 25px;
145
 }
146
147
.dialog input.return {
148
    background : #FFF url(/opac-tmpl/lib/famfamfam/silk/book_previous.png) no-repeat 4px center;
149
 padding : .4em .4em .4em 25px;
150
 }
151
152
.dialog input.renew {
153
    background : #FFF url(/opac-tmpl/lib/famfamfam/silk/arrow_refresh.png) no-repeat 4px center;
154
  padding : .4em .4em .4em 25px;
155
 }
156
157
.dialog input.cancel {
158
    background : #FFF url(/opac-tmpl/lib/famfamfam/silk/cancel.png) no-repeat 4px center;
159
        padding : .4em .4em .4em 25px;
160
 }
161
162
input.finish {
163
      background : #dbe7ff url(/opac-tmpl/lib/famfamfam/silk/stop.png) no-repeat 4px center;
164
  border : 1px outset #666;
165
      padding : .2em .2em .2em 25px;
166
}
167
168
table {
169
      background-color: #FFF;
170
        border-collapse : collapse;
171
    margin : 1em 0;
172
        border-right : 1px solid #dddddd;
173
      border-top : 1px solid #dddddd;
174
}
175
176
td,th {
177
     background-color: #FFF;
178
        border-left : 1px solid #dddddd;
179
       border-bottom : 1px solid #dddddd;
180
     padding : 3px 3px;
181
}
182
183
th {
184
     background-color:#EEE;
185
 font-weight : bold;
186
    padding : 2px 23px;
187
    text-align : center;
188
}
189
190
tr.highlight td, tr.highlight th, tr.odd td {
191
  background-color : #F3F3F3;
192
   border-top : 1px solid #DDDDDD;
193
   border-bottom : 1px solid #DDDDDD;
194
}
195
196
tr.even td, tr.even.highlight td {
197
     background-color: #FFF;
198
}
199
200
p {
201
        margin: .7em 0;
202
}
203
204
strong {
205
    font-weight : bold;
206
}
207
208
em {
209
    font-style : italic;
210
}
211
#borrowerdetails {
212
      margin-top : 1em;
213
}
214
#barcode,
215
#patronid {
216
      font-size : 125%;
217
      padding-bottom : 3px;
218
}
219
input.focus {
220
  background-color : #FFC;
221
       border : 2px inset #336699;
222
}
223
#checkouthelp {
224
  background : #FFF url("/opac-tmpl/lib/famfamfam/silk/help.png") no-repeat 4px center;
225
   padding : 3px 3px 3px 26px;
226
    position : absolute;
227
   top : 0;
228
       right : 0;
229
}
230
div.button {
231
      float : left;
232
  margin-top : 2em;
233
      padding : .4em 0;
234
}
235
div.button a:link,
236
div.button a:visited,
237
div.button a:hover,
238
div.button a:active {
239
    background : #FFF url(/opac-tmpl/lib/famfamfam/silk/book_previous.png) no-repeat 4px center;
240
    border : 1px outset #666;
241
      color : #000;
242
  padding : .4em .4em .4em 25px;
243
 text-decoration : none;
244
}
245
div.button a:active {
246
        border : 1px inset #666;
247
}
248
249
div.koha_url {
250
    border-top: none !important;
251
}
252
span.koha_url {
253
    position: absolute;
254
    right: 0;
255
}
256
a.koha_url {
257
    text-decoration: none;
258
    color: #666666;
259
}
260
261
div#changelanguage{
262
    background-color: #fff;
263
    border-top: 1px solid #CCC;
264
    color : #666;
265
    font-size : 85%;
266
    padding : 1em;
267
    margin-top : 2em;
268
 }
269
270
div#changelanguage a {
271
    font-weight : normal;
272
    padding : .5em 0;
273
}
274
275
div#changelanguage li.yuimenuitem {
276
    font-size: 120%;
277
    font-weight: normal;
278
    margin: 0;
279
    padding: 0 1em;
280
}
281
div#changelanguage li.yuimenuitem a.yuimenuitemlabel {
282
    padding: 0;
283
}
284
285
ul#i18nMenu {
286
    margin : 0;
287
    padding : .2em 0;
288
 }
289
290
ul#i18nMenu li {
291
    border-left : 1px solid #CCC;
292
    display : inline;
293
    list-style : none;
294
    padding : 0 .4em;
295
 }
296
297
ul#i18nMenu li:first-child {
298
    border-left : 0;
299
 }
300
301
ul#i18nMenu li ul li {
302
    border : 0;
303
    display : block;
304
    padding : 0;
305
 }
306
307
308
ul#i18nMenu li.more a {
309
    background-image : url("../../images/sprite.png");
310
    background-position : 37px -940px;
311
    background-repeat:no-repeat;
312
    padding-right: 1.3em;
313
}
314
315
ul#i18nMenu li.more ul li a {
316
    background-image : none;
317
    padding: 0 1.3em;
318
}
319
320
span.lang{
321
    float:left;
322
    border-right : 1px solid black;
323
    padding : 0 .5em;
324
}
325
326
div.ft {
327
 clear : both;
328
}
329
330
.sorting_asc {
331
    padding-right: 19px;
332
    background: url("../../images/asc.gif") no-repeat scroll right center #EEEEEE;
333
}
334
.sorting_desc {
335
    padding-right: 19px;
336
    background: url("../../images/desc.gif") no-repeat scroll right center #EEEEEE;
337
}
338
.sorting {
339
    padding-right: 19px;
340
    background: url("../../images/ascdesc.gif") no-repeat scroll right center #EEEEEE;
341
}
342
.nosort,
343
.nosort.sorting_asc,
344
.nosort.sorting_desc,
345
.nosort.sorting {
346
    padding-right: 19px;
347
    background: #EEEEEE none;
348
}
349
350
#top-bar,
351
#main_footer {
352
    display: none;
353
}
(-)a/koha-tmpl/opac-tmpl/ccsr/en/includes/doc-head-close.inc (-145 lines)
Lines 1-145 Link Here
1
</title>
2
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
3
<meta name="generator" content="Koha [% Version %]" /> <!-- leave this for stats -->
4
<link rel="shortcut icon" href="[% IF ( OpacFavicon ) %][% OpacFavicon %][% ELSE %][% interface %]/[% theme %]/images/favicon.ico[% END %]" type="image/x-icon" />
5
<link rel="stylesheet" type="text/css" href="[% themelang %]/lib/jquery/jquery-ui.css" />
6
<link rel="stylesheet" type="text/css" href="/opac-tmpl/lib/yui/reset-fonts-grids.css" />
7
<link rel="stylesheet" type="text/css" href="/opac-tmpl/lib/yui/skin.css" />
8
[% SET opaclayoutstylesheet='opac.css' UNLESS opaclayoutstylesheet %]
9
[% IF (opaclayoutstylesheet.match('^https?:|^\/')) %]
10
    <link rel="stylesheet" type="text/css" href="[% opaclayoutstylesheet %]" />
11
[% ELSE %]
12
    <link rel="stylesheet" type="text/css" href="[% themelang %]/css/[% opaclayoutstylesheet %]" />
13
[% END %]
14
[% IF ( opaccolorstylesheet ) %]
15
    [% IF (opaccolorstylesheet.match('^https?:|^\/')) %]
16
        <link rel="stylesheet" type="text/css" href="[% opaccolorstylesheet %]" />
17
    [% ELSE %]
18
        <link rel="stylesheet" type="text/css" href="[% themelang %]/css/[% opaccolorstylesheet %]" />
19
    [% END %]
20
[% END %]
21
[% IF ( opac_css_override ) %]
22
    <link rel="stylesheet" type="text/css" href="[% themelang %]/css/[% opac_css_override %]" />
23
[% END %]
24
<link rel="stylesheet" type="text/css" media="print" href="[% themelang %]/css/print.css" />
25
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no">
26
<link rel="stylesheet" type="text/css" media="screen and (max-width:700px)" href="[% themelang %]/css/mobile.css" />
27
[% IF ( bidi ) %]
28
    <link rel="stylesheet" type="text/css" href="[% themelang %]/css/right-to-left.css" />
29
[% END %]
30
<style id="region-opacmobileusercss" type="text/css" media="screen and (max-width:700px)">[% OPACMobileUserCSS %]</style>
31
<style id="region-opacusercss" type="text/css">[% OPACUserCSS %]</style>
32
[% IF persona %]
33
 <link rel="stylesheet" type="text/css" href="[% themelang %]/css/persona-buttons.css" />
34
[% END %]
35
36
<!-- yui js -->
37
<script type="text/javascript" src="[% yuipath %]/utilities/utilities.js"></script>
38
<script type="text/javascript" src="[% yuipath %]/container/container-min.js"></script>
39
<script type="text/javascript" src="[% yuipath %]/menu/menu-min.js"></script>
40
<script type="text/javascript" src="[% themelang %]/lib/jquery/jquery.js"></script>
41
<script type="text/javascript" src="[% themelang %]/lib/jquery/jquery-ui.js"></script>
42
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.hoverIntent.minified.js"></script>
43
<script type="text/javascript" src="[% themelang %]/js/script.js"></script>
44
[% IF ( OPACAmazonCoverImages ) %]
45
<script type="text/javascript">//<![CDATA[
46
    var NO_AMAZON_IMAGE = _("No cover image available");
47
//]]>
48
</script>
49
<script type="text/javascript" src="[% themelang %]/js/amazonimages.js"></script>
50
[% END %]
51
[% IF ( SyndeticsCoverImages ) %]
52
<script type="text/javascript">//<![CDATA[
53
        var NO_AMAZON_IMAGE = _("No cover image available");
54
    //]]>
55
</script>
56
<script type="text/javascript" src="[% themelang %]/js/amazonimages.js"></script>          [% END %]
57
58
[% IF ( opacbookbag ) %]<script type="text/javascript" src="[% themelang %]/js/basket.js">
59
[% ELSIF ( virtualshelves ) %]<script type="text/javascript" src="[% themelang %]/js/basket.js">
60
[% ELSE %]<script type="text/javascript"> var readCookie;[% END %]
61
</script>
62
63
<script type="text/javascript">
64
//<![CDATA[
65
    [% IF ( opacbookbag ) %]var MSG_BASKET_EMPTY = _("Your cart is currently empty");
66
    var MSG_RECORD_IN_BASKET = _("This item is already in your cart");
67
    var MSG_RECORD_ADDED = _("This item has been added to your cart");
68
    var MSG_RECORD_REMOVED = _("This item has been removed from your cart");
69
    var MSG_NRECORDS_ADDED = _(" item(s) added to your cart");
70
    var MSG_NRECORDS_IN_BASKET = _("already in your cart");
71
    var MSG_NO_RECORD_SELECTED = _("No item was selected");
72
    var MSG_NO_RECORD_ADDED = _("No item was added to your cart");
73
    var MSG_CONFIRM_DEL_BASKET = _("Are you sure you want to empty your cart?");
74
    var MSG_CONFIRM_DEL_RECORDS = _("Are you sure you want to remove the selected items?");
75
    var MSG_ITEM_IN_CART = _("In your cart");
76
    var MSG_IN_YOUR_CART = _("Items in your cart: ");
77
    var MSG_ITEM_NOT_IN_CART = _("Add to your cart");
78
      $("#cartDetails").ready(function(){ $("#cmspan").html("<a href=\"#\" id=\"cartmenulink\" class=\"\"><span> "+_("Cart")+"<span id=\"basketcount\"><\/span><\/span><\/a>"); });
79
    [% ELSE %][% IF ( virtualshelves ) %]
80
    var MSG_NO_RECORD_SELECTED = _("No item was selected");[% END %][% END %]
81
    [% IF ( opacuserlogin ) %][% IF ( TagsEnabled ) %]var MSG_TAGS_DISABLED = _("Sorry, tags are not enabled on this system.");
82
    var MSG_TAG_ALL_BAD = _("Error! Your tag was entirely markup code.  It was NOT added.  Please try again with plain text.");
83
    var MSG_ILLEGAL_PARAMETER = _("Error! Illegal parameter");
84
    var MSG_TAG_SCRUBBED = _("Note: your tag contained markup code that was removed. The tag was added as ");
85
    var MSG_ADD_TAG_FAILED = _("Error! The add_tag operation failed on");
86
    var MSG_ADD_TAG_FAILED_NOTE = _("Note: you can only tag an item with a given term once.  Check 'My Tags' to see your current tags.");
87
    var MSG_DELETE_TAG_FAILED = _("Error! You cannot delete the tag");
88
    var MSG_DELETE_TAG_FAILED_NOTE = _("Note: you can only delete your own tags.")
89
    var MSG_LOGIN_REQUIRED = _("You must be logged in to add tags.");
90
    var MSG_TAGS_ADDED = _("Tags added: ");
91
    var MSG_TAGS_DELETED = _("Tags added: ");
92
    var MSG_TAGS_ERRORS = _("Errors: ");
93
    var MSG_MULTI_ADD_TAG_FAILED = _("Unable to add one or more tags.");
94
    var MSG_NO_TAG_SPECIFIED = _("No tag was specified.");[% END %][% END %]
95
    [% IF ( OPACAmazonCoverImages ) %]$(window).load(function() {
96
        verify_images();
97
    });[% END %]
98
    [% IF ( SyndeticsCoverImages ) %]$(window).load(function() {
99
            verify_images();
100
         });[% END %]
101
//]]>
102
[% IF ( opacbookbag ) %]</script><script type="text/javascript" src="[% themelang %]/js/basket.js">
103
[% ELSIF ( virtualshelves ) %]</script><script type="text/javascript" src="[% themelang %]/js/basket.js">
104
[% ELSE %]</script><script type="text/javascript">var readCookie;[% END %]</script>
105
[% IF ( opacuserlogin ) %][% IF ( TagsEnabled ) %]<script type="text/javascript" src="[% themelang %]/js/tags.js"></script>[% END %][% ELSE %][% END %]
106
[% IF ( GoogleJackets ) %]
107
<script type="text/javascript" src="[% themelang %]/js/google-jackets.js"></script>
108
<script type="text/javascript">
109
//<![CDATA[
110
    var NO_GOOGLE_JACKET = _("No cover image available");
111
//]]>
112
</script>
113
[% END %]
114
[% IF OpenLibraryCovers %]
115
<script type="text/javascript" src="[% themelang %]/js/openlibrary.js"></script>
116
<script type="text/javascript">
117
//<![CDATA[
118
var NO_OL_JACKET = _("No cover image available");
119
//]]>
120
</script>
121
[% END %]
122
123
[% IF OPACLocalCoverImages %]
124
<script type="text/javascript" src="[% themelang %]/js/localcovers.js"></script>
125
<script type="text/javascript">
126
//<![CDATA[
127
var NO_LOCAL_JACKET = _("No cover image available");
128
//]]>
129
</script>
130
[% END %]
131
132
[% IF ( BakerTaylorEnabled ) %]<script type="text/javascript" src="[% themelang %]/js/bakertaylorimages.js"></script>
133
<script type="text/javascript">
134
//<![CDATA[
135
    var NO_BAKERTAYLOR_IMAGE = _("No cover image available");
136
    $(window).load(function(){
137
        bt_verify_images();
138
    });
139
//]]>
140
</script>[% END %]
141
<link rel="unapi-server" type="application/xml" title="unAPI" href="[% OPACBaseURL %]/cgi-bin/koha/unapi" />
142
[% IF ( GoogleIndicTransliteration ) %]
143
        <script type="text/javascript" src="http://www.google.com/jsapi"></script>
144
        <script type="text/javascript" src="[% themelang %]/js/googleindictransliteration.js"></script>
145
[% END %]
(-)a/koha-tmpl/opac-tmpl/ccsr/en/includes/masthead.inc (-249 lines)
Lines 1-249 Link Here
1
<div id="header-wrapper">
2
3
<div id="opac-custom-header">
4
[% IF ( opacheader ) %]
5
    [% opacheader %]
6
[% END %]
7
</div>
8
9
<div id="opac-main-search" class="yui-g">
10
11
<a class="logo" href="/cgi-bin/koha/opac-main.pl">
12
  [% UNLESS ( opacsmallimage ) %]
13
      [% UNLESS ( LibraryName ) %]
14
    <img src="/opac-tmpl/ccsr/images/logo-koha.png" alt="Koha Online Catalog" />
15
      [% ELSE %]
16
    <img src="/opac-tmpl/ccsr/images/logo-koha.png" alt="[% LibraryName %] Online Catalog" />
17
      [% END %]
18
  [% ELSE %]
19
      [% UNLESS ( LibraryName ) %]
20
    <img src="[% opacsmallimage %]" alt="Koha Online Catalog" />
21
      [% ELSE %]
22
    <img src="[% opacsmallimage %]" alt="[% LibraryName %] Online Catalog" />
23
      [% END %]
24
  [% END %]
25
</a>
26
27
<div id="fluid">
28
29
[% IF ( OpacPublic ) %]
30
<div id="fluid-offset">
31
[% UNLESS ( advsearch ) %]
32
[% IF Koha.Preference( 'OpacAddMastheadLibraryPulldown' ) == 1 %]
33
    [% IF ( OpacShowFiltersPulldownMobile and not OpacShowLibrariesPulldownMobile ) or ( not OpacShowFiltersPulldownMobile and OpacShowLibrariesPulldownMobile ) %]
34
        <form name="searchform" method="get" action="/cgi-bin/koha/opac-search.pl" id="searchform" class="multi-libraries single-field-mobile">
35
    [% ELSE %]
36
        <form name="searchform" method="get" action="/cgi-bin/koha/opac-search.pl" id="searchform" class="multi-libraries">
37
    [% END %]
38
[% ELSE %]
39
    <form name="searchform" method="get" action="/cgi-bin/koha/opac-search.pl" id="searchform" class="single-library">
40
[% END %]
41
    <label for="masthead_search" class="left"> Search
42
    [% UNLESS ( OpacAddMastheadLibraryPulldown ) %]
43
            [% IF ( mylibraryfirst ) %] (in [% mylibraryfirst %] only)[% END %]
44
    [% END %]
45
    </label>
46
    [% IF ( OpacShowFiltersPulldownMobile ) %]
47
        <div id="filters">
48
    [% ELSE %]
49
        <div id="filters" class="mobile-hidden">
50
    [% END %]
51
    <select name="idx" id="masthead_search" class="left">
52
    [% IF ( ms_kw ) %]
53
        <option selected="selected" value="">Library catalog</option>
54
        [% ELSE %]
55
        <option value="">Library catalog</option>
56
        [% END %]
57
        [% IF ( ms_ti ) %]
58
        <option selected="selected" value="ti">Title</option>
59
        [% ELSE %]
60
        <option value="ti">Title</option>
61
        [% END %]
62
        [% IF ( ms_au ) %]
63
        <option selected="selected" value="au">Author</option>
64
        [% ELSE %]
65
        <option value="au">Author</option>
66
        [% END %]
67
        [% IF ( ms_su ) %]
68
        <option selected="selected" value="su">Subject</option>
69
        [% ELSE %]
70
        <option value="su">Subject</option>
71
        [% END %]
72
        [% IF ( ms_nb ) %]
73
        <option selected="selected" value="nb">ISBN</option>
74
        [% ELSE %]
75
        <option value="nb">ISBN</option>
76
        [% END %]
77
        [% IF ( ms_se ) %]
78
        <option selected="selected" value="se">Series</option>
79
        [% ELSE %]
80
        <option value="se">Series</option>
81
        [% END %]
82
        [% IF ( ms_callnum ) %]
83
        <option selected="selected" value="callnum">Call number</option>
84
        [% ELSE %]
85
        <option value="callnum">Call number</option>
86
        [% END %]</select>
87
    </div>
88
89
<div class="input-wrapper">
90
[% IF ( ms_value ) %]
91
        <input type="text" id = "transl1" name="q" value="[% ms_value |html %]" class="left" style="width: 35%; font-size: 111%;"/><div id="translControl"></div>
92
[% ELSE %]
93
        <input type="text" id = "transl1" name="q" class="left" style="width: 35%; font-size: 111%;"/><div id="translControl"></div>
94
[% END %]
95
</div>
96
97
   [% IF Koha.Preference( 'OpacAddMastheadLibraryPulldown' ) == 1 %]
98
        [% IF ( OpacShowLibrariesPulldownMobile ) %]
99
            <div id="libraries">
100
        [% ELSE %]
101
            <div id="libraries" class="mobile-hidden">
102
        [% END %]
103
104
        <select name="branch_group_limit" id="select_library" class="left">
105
           <option value="">All libraries</option>
106
           <optgroup label="Libraries">
107
               [% FOREACH BranchesLoo IN BranchesLoop %]
108
                  [% IF ( BranchesLoo.selected ) %]<option selected="selected" value="branch:[% BranchesLoo.value %]">[% BranchesLoo.branchname %]</option>
109
                  [% ELSE %]<option value="branch:[% BranchesLoo.value %]">[% BranchesLoo.branchname %]</option>[% END %]
110
               [% END %]
111
           </optgroup>
112
           [% IF BranchCategoriesLoop %]
113
               <optgroup label="Groups">
114
                   [% FOREACH bc IN BranchCategoriesLoop %]
115
                       [% IF ( bc.selected ) %]
116
                           <option selected="selected" value="multibranchlimit-[% bc.categorycode %]">[% bc.categoryname %]</option>
117
                       [% ELSE %]
118
                           <option value="multibranchlimit-[% bc.categorycode %]">[% bc.categoryname %]</option>
119
                       [% END %]
120
                   [% END %]
121
               </optgroup>
122
           [% END %]
123
        </select>
124
125
    </div>
126
   [% ELSE %]
127
      [% IF ( opac_limit_override ) %]
128
          [% IF ( opac_search_limit ) %]
129
            <input name="limit" value="[% opac_search_limit %]" type="hidden" />
130
          [% END %]
131
      [% ELSE %]
132
          [% IF ( mylibraryfirst ) %]
133
               <input name="limit" value="branch:[% mylibraryfirst %]" type="hidden" />
134
          [% END %]
135
      [% END %]
136
   [% END %]
137
138
139
    <input type="submit" value="Go" id="searchsubmit" class="left" />
140
141
    <div class="clear"></div>
142
143
    </form>
144
[% ELSE %] <!--advsearch -->
145
    [% IF Koha.Preference( 'OpacAddMastheadLibraryPulldown' ) == 1 %]
146
        [% IF ( OpacShowFiltersPulldownMobile and not OpacShowLibrariesPulldownMobile ) or ( not OpacShowFiltersPulldownMobile and OpacShowLibrariesPulldownMobile ) %]
147
            <form name="searchform" method="get" action="/cgi-bin/koha/opac-search.pl" id="searchform" class="multi-libraries single-field-mobile">
148
        [% ELSE %]
149
            <form name="searchform" method="get" action="/cgi-bin/koha/opac-search.pl" id="searchform" class="multi-libraries">
150
        [% END %]
151
    [% ELSE %]
152
        <form name="searchform" method="get" action="/cgi-bin/koha/opac-search.pl" id="searchform" class="single-library">
153
    [% END %]
154
    <label for="masthead_search" class="left"> Search
155
    [% UNLESS ( OpacAddMastheadLibraryPulldown ) %]
156
            [% IF ( mylibraryfirst ) %] (in [% mylibraryfirst %] only)[% END %]
157
    [% END %]
158
    </label>
159
    [% IF ( OpacShowFiltersPulldownMobile ) %]
160
        <div id="filters" class="transparent">
161
    [% ELSE %]
162
        <div id="filters" class="transparent mobile-hidden">
163
    [% END %]
164
        <select name="idx" id="masthead_search" class="left" disabled="disabled">
165
            <option selected="selected" value="">Library Catalog</option>
166
        </select>
167
    </div>
168
169
<div class="input-wrapper">
170
    <input type="text" id = "transl1" name="q" class="left transparent" style="width: 35%; font-size: 111%;" disabled="disabled"/><div id="translControl"></div>
171
</div>
172
173
   [% IF Koha.Preference( 'OpacAddMastheadLibraryPulldown' ) == 1 %]
174
        [% IF ( OpacShowLibrariesPulldownMobile ) %]
175
            <div id="libraries">
176
        [% ELSE %]
177
            <div id="libraries" class="mobile-hidden">
178
        [% END %]
179
          <select name="limit" id="select_library" class="left transparent">
180
             <option value="">All Libraries</option>
181
          </select>
182
        </div>
183
   [% END %]
184
185
186
    <input type="submit" value="Go" id="searchsubmit" class="left transparent" disabled="disabled" />
187
188
    <div class="clear"></div>
189
190
    </form>
191
[% END %]
192
193
<div id="moresearches">
194
<a href="/cgi-bin/koha/opac-search.pl">Advanced search</a>
195
[% IF Koha.Preference( 'UseCourseReserves' ) == 1 %]<span class="pipe"> | </span><a href="/cgi-bin/koha/opac-course-reserves.pl">Course reserves</a>[% END %]
196
[% IF ( OpacBrowser ) %]<span class="pipe"> | </span><a href="/cgi-bin/koha/opac-browser.pl">Browse by hierarchy</a>[% END %]
197
[% IF ( OpacAuthorities ) %]<span class="pipe"> | </span><a href="/cgi-bin/koha/opac-authorities-home.pl">Authority search</a>[% END %]
198
[% IF ( opacuserlogin && ( Koha.Preference( 'reviewson' ) == 1 ) && ( Koha.Preference( 'OpacShowRecentComments' ) == 1 ) ) %]<span class="pipe"> | </span><a href="/cgi-bin/koha/opac-showreviews.pl">Recent comments</a>[% END %]
199
[% IF ( TagsEnabled ) %]<span class="pipe"> | </span><a href="/cgi-bin/koha/opac-tags.pl">Tag cloud</a>[% END %]
200
[% IF ( OpacCloud ) %]<span class="pipe"> | </span><a href="/cgi-bin/koha/opac-tags_subject.pl">Subject cloud</a>[% END %]
201
[% IF ( OpacTopissue ) %]<span class="pipe"> | </span><a href="/cgi-bin/koha/opac-topissues.pl">Most popular</a>[% END %]
202
[% IF ( suggestion ) %]
203
  [% IF ( AnonSuggestions ) %]<span class="pipe"> | </span><a href="/cgi-bin/koha/opac-suggestions.pl">Purchase suggestions</a>
204
  [% ELSIF ( OPACViewOthersSuggestions ) %]<span class="pipe"> | </span><a href="/cgi-bin/koha/opac-suggestions.pl">Purchase suggestions</a>
205
  [% END %]
206
[% END %]
207
</div>
208
 </div>
209
</div>
210
211
<div id="libraryname">
212
    <h1></h1>
213
</div>
214
215
[% END %]  <!-- OpacPublic -->
216
217
</div>
218
</div>
219
220
<div id="container">
221
<div id="ctn_lt">
222
<div id="ctn_rt">
223
<div id="ctn_lb">
224
<div id="ctn_rb">
225
226
<div id="breadcrumbs" class="yui-g">
227
<p><a href="/cgi-bin/koha/opac-main.pl" title="Home">Home</a>
228
[% IF ( searchdesc ) %]<span class="rsaquo"> &rsaquo; </span><a href="/cgi-bin/koha/opac-search.pl" title="Search">Search</a><span class="rsaquo"> &rsaquo; </span>
229
[% IF ( total ) %]<strong>Your search returned [% total |html %] results.</strong>
230
[% IF ( related ) %] (related searches: [% FOREACH relate IN related %][% relate.related_search %][% END %]). [% END %]
231
<a href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi |html %][% limit_cgi |html %]&amp;count=[% countrss |html %]&amp;sort_by=acqdate_dsc&amp;format=rss2" class="rsssearchlink">
232
<img src="/opac-tmpl/ccsr/images/feed-icon-16x16.png" alt="Subscribe to this search" title="Subscribe to this search" border="0" class="rsssearchicon"/></a>
233
[% ELSE %]
234
<strong>No results found!</strong>
235
<p>
236
    [% IF ( searchdesc ) %]
237
    No results found for that in [% LibraryName %] catalog. <a href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi |html %][% limit_cgi |html %]&amp;format=rss2" class="rsssearchlink"><img src="/opac-tmpl/ccsr/images/feed-icon-16x16.png" alt="Subscribe to this search" title="Subscribe to this search" border="0" class="rsssearchicon"/></a>
238
    [% ELSE %]
239
    You did not specify any search criteria.
240
    [% END %]
241
</p>
242
<div id="noresultsfound">
243
[% OPACNoResultsFound %]
244
</div>
245
246
</div>
247
[% END %]</p>[% END %]</div>
248
249
<div class="ctn_in">
(-)a/koha-tmpl/opac-tmpl/ccsr/en/includes/navigation.inc (-9 lines)
Lines 1-9 Link Here
1
<div id="region-opacnav">
2
[% OpacNav %]
3
</div>
4
[% IF IsPatronPage %]
5
[% INCLUDE usermenu.inc %]
6
[% END %]
7
<div id="region-opacnavbottom">
8
[% OpacNavBottom %]
9
</div>
(-)a/koha-tmpl/opac-tmpl/ccsr/en/includes/opac-bottom.inc (-136 lines)
Lines 1-136 Link Here
1
<div class="ft">
2
    [% opaccredits %]
3
</div>
4
</div>
5
6
<div class="clear"></div>
7
</div>
8
</div>
9
</div>
10
</div>
11
</div>
12
</div>
13
14
[%# Sticking the div for the top bar here; since the
15
    top bar is positioned absolutely in this theme, it
16
    it makes the positioning of the rest of the elements
17
    easier to keep it out of the doc3 div.
18
%]
19
[% INCLUDE 'top-bar.inc' %]
20
21
<div id="main_footer">
22
    <div class="colleft">
23
    </div>
24
    [% IF ( OpacKohaUrl ) %]
25
    <div class="colright">
26
        <div class="koha">
27
            [% IF template.name.match('opac-main.tt') %]
28
                <a class="koha_url" href="http://koha-community.org">Powered by</a>
29
            [% ELSE %]
30
                <a class="koha_url" rel="nofollow" href="http://koha-community.org">Powered by</a>
31
            [% END %]
32
        </div>
33
    </div>
34
    [% END %]
35
    <div class="clear"></div>
36
</div>
37
38
[% IF ( opaclanguagesdisplay || OpacKohaUrl ) %]
39
    [% IF ( languages_loop && opaclanguagesdisplay ) %]
40
        [% UNLESS ( one_language_enabled ) %]
41
            <div id="changelanguage" class="ft">
42
            <div class="lang" style="float:left;padding: 0.1em 0;"><strong>Languages:&nbsp;</strong></div>
43
            <ul id="i18nMenu" class="footermenu">
44
            [% FOREACH languages_loo IN languages_loop %]
45
46
                [% IF ( languages_loo.group_enabled ) %]
47
                [% IF ( languages_loo.plural ) %]
48
                <li class="more" style="float:left;"><a class="sublangs" id="show[% languages_loo.rfc4646_subtag %]" href="#">[% IF ( languages_loo.native_description ) %][% languages_loo.native_description %][% ELSE %][% languages_loo.rfc4646_subtag %][% END %]</a><div id="sub[% languages_loo.rfc4646_subtag %]">
49
                <div class="bd"><ul>
50
                [% FOREACH sublanguages_loo IN languages_loo.sublanguages_loop %]
51
            [% IF ( sublanguages_loo.enabled ) %]
52
                    [% IF ( sublanguages_loo.sublanguage_current ) %]
53
                        <li> [% sublanguages_loo.native_description %] [% sublanguages_loo.script_description %] [% sublanguages_loo.region_description %] [% sublanguages_loo.variant_description %] ([% sublanguages_loo.rfc4646_subtag %])</li>
54
                    [% ELSE %]
55
                    <li><a href="/cgi-bin/koha/opac-changelanguage.pl?language=[% sublanguages_loo.rfc4646_subtag %]"> [% sublanguages_loo.native_description %] [% sublanguages_loo.script_description %] [% sublanguages_loo.region_description %] [% sublanguages_loo.variant_description %] ([% sublanguages_loo.rfc4646_subtag %])</a></li>
56
            [% END %]
57
                    [% END %]
58
59
                [% END %]
60
                </ul></div></div></li>
61
62
                [% ELSE %]
63
                [% IF ( languages_loo.group_enabled ) %]
64
                    [% IF ( languages_loo.current ) %]
65
                        <li style="float:left;">[% IF ( languages_loo.native_description ) %][% languages_loo.native_description %][% ELSE %][% languages_loo.rfc4646_subtag %][% END %]</li>
66
                    [% ELSE %]
67
                        <li style="float:left;"><a href="/cgi-bin/koha/opac-changelanguage.pl?language=[% languages_loo.rfc4646_subtag %]">[% IF ( languages_loo.native_description ) %][% languages_loo.native_description %][% ELSE %][% languages_loo.rfc4646_subtag %][% END %]</a></li>
68
                    [% END %]
69
            [% END %]
70
                [% END %]
71
                [% END %]
72
73
            [% END %]
74
            </ul>
75
            </div>
76
        [% END %]
77
    [% END %]
78
79
[% END %]
80
81
82
<script type="text/javascript" src="/opac-tmpl/lib/jquery/plugins/jquery.jqtransform_select.js"></script>
83
<script id="region-opacuserjs" type="text/javascript">
84
    [% opacuserjs %]
85
</script>
86
<script type="text/javascript">
87
$(function() {
88
    //find all form with class jqtransform and apply the plugin
89
    $("form#searchform").jqTransform();
90
});
91
</script>
92
93
<!-- /ADD JQUERY PLUGIN JQTRANSFORM - LIBÉO -->
94
95
[% IF persona %]
96
<script src="https://login.persona.org/include.js"></script>
97
<script type="text/javascript" language="javascript">
98
99
navigator.id.watch({
100
    loggedInUser: [% IF emailaddress && loggedinpersona %]'[% emailaddress %]'[% ELSE %]null[% END %],
101
    onlogin: function (assertion) {
102
        $.post('/cgi-bin/koha/svc/login',
103
        { assertion: assertion },
104
        function (data) {
105
            window.location = '/cgi-bin/koha/opac-user.pl';
106
        }
107
        )
108
        .fail(function() {
109
            var errstr = _("Could not login, perhaps your Persona email does not match your Koha one");
110
            alert(errstr);
111
        });
112
    },
113
    onlogout: function () {
114
        window.location = '/cgi-bin/koha/opac-main.pl?logout.x=1';
115
    }
116
});
117
118
var signinLink = document.getElementById('browserid');
119
120
if (signinLink) {
121
    signinLink.onclick = function(evt) {
122
        // Requests a signed identity assertion from the user.
123
        navigator.id.request({
124
            siteName: "[% LibraryName | html %]",
125
            returnTo: '/cgi-bin/koha/opac-user.pl',
126
            oncancel: function() { alert('user refuses to share identity.'); }
127
        });
128
    };
129
}
130
131
</script>
132
[% END %]
133
134
135
</body>
136
</html>
(-)a/koha-tmpl/opac-tmpl/ccsr/en/includes/top-bar.inc (-73 lines)
Lines 1-73 Link Here
1
<div id="top-bar">
2
<ul id="menu-left">
3
    <!-- [% IF ( opacbookbag ) %] -->
4
        <li>
5
            <span id="cmspan"></span>
6
            <div id="cartDetails">Your cart is empty.</div>
7
        </li>
8
    <!-- [% END %] -->
9
10
    [% IF ( virtualshelves ) %]
11
12
    <li id="listsmenulink">
13
        <a href="/cgi-bin/koha/opac-shelves.pl"  class="">
14
            <span>Lists</span>
15
        </a>
16
    <div id="listsmenu" class="yuimenu" style="display: none">
17
        <h4>Public lists</h4>
18
            [% IF ( pubshelves ) %]
19
                <ul class="first-of-type">
20
                [% FOREACH pubshelvesloo IN pubshelvesloop %]
21
                <li class="yuimenuitem"><a href="/cgi-bin/koha/opac-shelves.pl?viewshelf=[% pubshelvesloo.shelfnumber %]&amp;sortfield=[% pubshelvesloo.sortfield %]">[% pubshelvesloo.shelfname |html %]</a></li>
22
                [% END %]
23
                <li class="yuimenuitem"><a class="yuimenuitemlabel" href="/cgi-bin/koha/opac-shelves.pl?display=publicshelves">[View All]</a></li>
24
            </ul>
25
            [% ELSE %]
26
            No public lists
27
            [% END %]
28
      [% IF ( opacuserlogin ) %]
29
        <h4>Your lists</h4>
30
        [% IF ( loggedinusername ) %]
31
            [% IF ( barshelves ) %]
32
                <ul class="first-of-type">
33
                [% FOREACH barshelvesloo IN barshelvesloop %]
34
                <li class="yuimenuitem"><a href="/cgi-bin/koha/opac-shelves.pl?viewshelf=[% barshelvesloo.shelfnumber %]&amp;sortfield=[% barshelvesloo.sortfield %]">[% barshelvesloo.shelfname |html %]</a></li>
35
                [% END %]
36
            <li class="yuimenuitem"><a class="yuimenuitemlabel" href="/cgi-bin/koha/opac-shelves.pl?display=privateshelves">[View all]</a></li>
37
            </ul>
38
            [% ELSE %]
39
                <ul class="first-of-type">
40
            <li>No private lists</li>
41
            <li class="yuimenuitem"><a class="yuimenuitemlabel" href="/cgi-bin/koha/opac-shelves.pl?display=privateshelves">[New list]</a></li></ul>
42
            [% END %]
43
        [% ELSE %]
44
            <ul class="first-of-type"><li><a href="/cgi-bin/koha/opac-user.pl">Log in to create your own lists</a></li></ul>
45
        [% END %]
46
      [% END %]
47
    </div><!-- /listmenu /virtualshelves -->
48
[% END %]
49
<div id="listsDetails"></div>
50
51
</li>
52
</ul>
53
54
    <div id="members">
55
      [% IF ( opacuserlogin ) %]
56
        <ul>
57
    [% UNLESS ( loggedinusername ) %]
58
                   <li><a href="/cgi-bin/koha/opac-user.pl">Log in to your account</a></li>[% END %]
59
                [% IF ( loggedinusername ) %]
60
                    <li><span class="members">Welcome, <a href="/cgi-bin/koha/opac-user.pl"><span class="loggedinusername">[% FOREACH USER_INF IN USER_INFO %][% USER_INF.title %] [% USER_INF.firstname %] [% USER_INF.surname %][% END %]</span></a></span></li>
61
62
                [% END %]
63
                [% IF ( EnableOpacSearchHistory ) %]
64
                    <li><a href="/cgi-bin/koha/opac-search-history.pl" title="View your search history">Search history</a></li>
65
                [% END %]
66
 [% IF ( loggedinusername ) %]<li>[% IF persona %]<a class="logout" id="logout" href="/cgi-bin/koha/opac-main.pl?logout.x=1" onclick='navigator.id.logout();'>[% ELSE %]<a class="logout" id="logout" href="/cgi-bin/koha/opac-main.pl?logout.x=1">[% END %]Log Out</a></li>[% END %]
67
        </ul>
68
      [% END %]
69
    </div>
70
71
    <div class="clear"></div>
72
73
</div>
(-)a/koha-tmpl/opac-tmpl/ccsr/en/includes/usermenu.inc (-38 lines)
Lines 1-38 Link Here
1
[% IF ( opacuserlogin ) %][% IF ( loggedinusername ) %]
2
<div id="menu">
3
<ul>
4
  [% IF ( userview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/opac-user.pl">my summary</a></li>
5
  [% IF ( OPACFinesTab ) %]
6
  [% IF ( accountview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/opac-account.pl">my fines</a></li>
7
  [% END %]
8
  [% IF ( userupdateview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/opac-memberentry.pl">my personal details</a></li>
9
  [% IF ( TagsEnabled ) %]
10
    [% IF ( tagsview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/opac-tags.pl?mine=1">my tags</a></li>
11
  [% END %]
12
  [% IF ( OpacPasswordChange ) %]
13
    [% IF ( passwdview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/opac-passwd.pl">change my password</a></li>
14
  [% END %]
15
  [% IF EnableOpacSearchHistory %]
16
  [% IF ( searchhistoryview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/opac-search-history.pl">my search history</a></li>
17
  [% END %]
18
  [% IF ( opacreadinghistory ) %]
19
  [% IF ( readingrecview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/opac-readingrecord.pl">my reading history</a></li>
20
     [% IF ( OPACPrivacy ) %]
21
       [% IF ( privacyview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/opac-privacy.pl">my privacy</a></li>
22
     [% END %]
23
  [% END %]
24
  [% IF ( suggestion ) %]
25
    [% UNLESS ( AnonSuggestions ) %]
26
      [% IF ( suggestionsview ) %]<li class="active suggestions">[% ELSE %]<li class="suggestions">[% END %]<a href="/cgi-bin/koha/opac-suggestions.pl">my purchase suggestions</a></li>
27
    [% END %]
28
  [% END %]
29
  [% IF ( EnhancedMessagingPreferences ) %]
30
    [% IF ( messagingview ) %]<li class="active messaging">[% ELSE %]<li class="messaging">[% END %]<a href="/cgi-bin/koha/opac-messaging.pl">my messaging</a></li>
31
  [% END %]
32
  [% IF ( virtualshelves ) %]
33
  [% IF ( listsview ) %]<li class="active privateshelves">[% ELSE %]<li class="privateshelves">[% END %]<a href="/cgi-bin/koha/opac-shelves.pl?display=privateshelves">my lists</a></li>
34
  [% END %]
35
36
</ul>
37
</div>
38
[% END %][% ELSE %][% END %]
(-)a/koha-tmpl/opac-tmpl/ccsr/en/js/amazonimages.js (-14 lines)
Lines 1-14 Link Here
1
// http://www.oreillynet.com/pub/a/javascript/2003/10/21/amazonhacks.html
2
function verify_images() {
3
   $("img").each(function(i){
4
            if ((this.src.indexOf('images.amazon.com') >= 0) || (this.src.indexOf('g-images.amazon.com') >=0) || (this.src.indexOf('syndetics.com') >=0) ) {
5
            w = this.width;
6
            h = this.height;
7
            if ((w == 1) || (h == 1)) {
8
                               $(this).parent().html("<span class=\"no-image\">"+NO_AMAZON_IMAGE+"</span>");
9
            } else if ((this.complete != null) && (!this.complete)) {
10
                            $(this).parent().html("<span class=\"no-image\">"+NO_AMAZON_IMAGE+"</span>");
11
            }
12
        }
13
          });
14
            }
(-)a/koha-tmpl/opac-tmpl/ccsr/en/js/bakertaylorimages.js (-11 lines)
Lines 1-11 Link Here
1
// http://www.oreillynet.com/pub/a/javascript/2003/10/21/amazonhacks.html
2
function bt_verify_images() {
3
        $("img").each(function(i){
4
            if (this.src.indexOf('btol.com') >= 0) {
5
            h = this.height;
6
            if (h == 20) {
7
                                $(this).before("<span class=\"no-image\" style=\"margin-bottom:5px;width:80px;\">"+NO_BAKERTAYLOR_IMAGE+"</span>");
8
            }
9
              }
10
              });
11
            }
(-)a/koha-tmpl/opac-tmpl/ccsr/en/js/basket.js (-546 lines)
Lines 1-546 Link Here
1
//////////////////////////////////////////////////////////////////////////////
2
// BASIC FUNCTIONS FOR COOKIE MANAGEMENT //
3
//////////////////////////////////////////////////////////////////////////////
4
5
var CGIBIN = "/cgi-bin/koha/";
6
7
8
var nameCookie = "bib_list";
9
var valCookie = readCookie(nameCookie);
10
11
if(valCookie){
12
    var arrayRecords = valCookie.split("/");
13
    if(arrayRecords.length > 0){
14
        var basketcount = arrayRecords.length-1;
15
    } else {
16
        var basketcount = "";
17
    }
18
} else {
19
        var basketcount = "";
20
}
21
22
function writeCookie(name, val, wd) {
23
    if (wd) {
24
        parent.opener.document.cookie = name + "=" + val;
25
    }
26
    else {
27
        parent.document.cookie = name + "=" + val;
28
    }
29
}
30
31
function readCookieValue (str, val_beg) {
32
    var val_end = str.indexOf(";", val_end);
33
    if (val_end == -1)
34
        val_end = str.length;
35
    return str.substring(val_beg, val_end);
36
}
37
38
function readCookie(name, wd) {
39
    var str_name = name + "=";
40
    var str_len = str_name.length;
41
    var str_cookie = "";
42
    if (wd) {
43
        str_cookie = parent.opener.document.cookie;
44
    }
45
    else {
46
        str_cookie = parent.document.cookie;
47
    }
48
        // fixed - getting the part of the basket that is bib_list
49
        var cookie_parts = str_cookie.split(";");
50
            for(var i=0;i < cookie_parts.length;i++) {
51
                var c = cookie_parts[i];
52
                    while (c.charAt(0)==' ') c = c.substring(1,c.length);
53
            if(c.indexOf(str_name) == 0) return c.substring(str_name.length,c.length);
54
            }
55
    return null;
56
}
57
58
function delCookie(name) {
59
    var exp = new Date();
60
    exp.setTime(exp.getTime()-1);
61
    if(parent.opener){
62
    parent.opener.document.cookie = name + "=null; expires=" + exp.toGMTString();
63
    } else {
64
    document.cookie = name + "=null; expires=" + exp.toGMTString();
65
    }
66
}
67
68
///////////////////////////////////////////////////////////////////
69
// SPECIFIC FUNCTIONS USING COOKIES //
70
///////////////////////////////////////////////////////////////////
71
72
function openBasket() {
73
    var strCookie = "";
74
    var nameCookie = "bib_list";
75
    var valCookie = readCookie(nameCookie);
76
    if ( valCookie ) {
77
        strCookie = nameCookie + "=" + valCookie;
78
    }
79
80
    if ( strCookie ) {
81
        var iW = 820;
82
        var iH = 450;
83
        var optWin = "status=yes,scrollbars=yes,resizable=yes,toolbar=no,location=yes,height="+iH+",width="+iW;
84
        var loc = CGIBIN + "opac-basket.pl?" + strCookie;
85
        var basket = open(loc, "basket", optWin);
86
        if (window.focus) {basket.focus()}
87
    }
88
    else {
89
        showCartUpdate(MSG_BASKET_EMPTY);
90
    }
91
}
92
93
function addRecord(val, selection,NoMsgAlert) {
94
    var nameCookie = "bib_list";
95
    var valCookie = readCookie(nameCookie);
96
    var write = 0;
97
98
    if ( ! valCookie ) { // empty basket
99
        valCookie = val + '/';
100
        write = 1;
101
        updateBasket(1);
102
    }
103
    else {
104
        // is this record already in the basket ?
105
        var found = false;
106
        var arrayRecords = valCookie.split("/");
107
        for (var i = 0; i < valCookie.length - 1; i++) {
108
            if (val == arrayRecords[i]) {
109
                found = true;
110
                break;
111
            }
112
        }
113
        if ( found ) {
114
            if (selection) {
115
                return 0;
116
            }
117
            if (! NoMsgAlert ) {
118
                showCartUpdate(MSG_RECORD_IN_BASKET);
119
            }
120
        }
121
        else {
122
            valCookie += val + '/';
123
            write = 1;
124
            updateBasket(arrayRecords.length);
125
        }
126
    }
127
128
    if (write) {
129
        writeCookie(nameCookie, valCookie);
130
        if (selection) { // when adding a selection of records
131
            updateLink(val,"add");
132
            return 1;
133
        }
134
        if (! NoMsgAlert ) {
135
            showCartUpdate(MSG_RECORD_ADDED);
136
            updateLink(val,"add");
137
        }
138
    }
139
}
140
141
function AllAreChecked(s){
142
    if (! s.length)    { return false;}
143
    var l = s.length;
144
    for (var i=0; i < l; i++) {
145
        if(! s[i].checked) { return false; }
146
    }
147
    return true;
148
}
149
150
function SelectAll(){
151
    if(document.bookbag_form.biblionumber.length > 0) {
152
        var checky = AllAreChecked(document.bookbag_form.biblionumber);
153
        var l = document.bookbag_form.biblionumber.length;
154
        for (var i=0; i < l; i++) {
155
            document.bookbag_form.biblionumber[i].checked = (checky) ? false : true;
156
        }
157
    }
158
}
159
160
function addMultiple(){
161
    var c_value = "";
162
    if(document.bookbag_form.biblionumber.length > 0) {
163
        for (var i=0; i < document.bookbag_form.biblionumber.length; i++) {
164
            if (document.bookbag_form.biblionumber[i].checked) {
165
                c_value = c_value + document.bookbag_form.biblionumber[i].value + "/";
166
            }
167
        }
168
        addSelRecords(c_value);
169
    } else {
170
        c_value = c_value + document.bookbag_form.biblionumber.value + "/";
171
        addSelRecords(c_value);
172
    }
173
}
174
175
function addSelRecords(valSel) { // function for adding a selection of biblios to the basket
176
                                                // from the results list
177
    var arrayRecords = valSel.split("/");
178
    var i = 0;
179
    var nbAdd = 0;
180
    for (i=0;i<arrayRecords.length;i++) {
181
        if (arrayRecords[i]) {
182
            nbAdd += addRecord(arrayRecords[i], 1);
183
        }
184
        else {
185
            break;
186
        }
187
    }
188
    var msg = "";
189
    if (nbAdd) {
190
        if (i > nbAdd) {
191
            msg = nbAdd+" "+MSG_NRECORDS_ADDED+", "+(i-nbAdd)+" "+MSG_NRECORDS_IN_BASKET;
192
        }
193
        else {
194
            msg = nbAdd+" "+MSG_NRECORDS_ADDED;
195
        }
196
    }
197
    else {
198
        if (i < 1) {
199
            msg = MSG_NO_RECORD_SELECTED;
200
        }
201
        else {
202
            msg = MSG_NO_RECORD_ADDED+" ("+MSG_NRECORDS_IN_BASKET+") !";
203
        }
204
    }
205
    showCartUpdate(msg);
206
}
207
208
function showCartUpdate(msg){
209
    // set body of popup window
210
    $("#cartDetails").html(msg);
211
    showCart();
212
    setTimeout("hideCart()",2000);
213
}
214
215
function showListsUpdate(msg){
216
       // set body of popup window
217
       $("#listsDetails").html(msg);
218
       showLists();
219
       setTimeout("hideLists()",2000);
220
}
221
222
function selRecord(num, status) {
223
    var str = document.myform.records.value
224
    if (status){
225
        str += num+"/";
226
    }
227
    else {
228
        str = delRecord(num, str);
229
    }
230
231
    document.myform.records.value = str;
232
}
233
234
function delSingleRecord(biblionumber){
235
    var nameCookie = "bib_list";
236
    var valCookie = readCookie(nameCookie);
237
    var arrayRecords = valCookie.split("/");
238
    var pos = jQuery.inArray(biblionumber,arrayRecords);
239
    arrayRecords.splice(pos,1);
240
    valCookie = arrayRecords.join("/");
241
    writeCookie( nameCookie, valCookie );
242
    updateBasket( arrayRecords.length-1 );
243
    updateLink(biblionumber,"del");
244
    showCartUpdate(MSG_RECORD_REMOVED);
245
}
246
247
function delSelRecords() {
248
    var recordsSel = 0;
249
    var end = 0;
250
    var nameCookie = "bib_list";
251
    var valCookie = readCookie(nameCookie, 1);
252
    if (valCookie) {
253
        var str = document.myform.records.value;
254
        if (str.length > 0){
255
            recordsSel = 1;
256
            var str2 = valCookie;
257
            while (!end){
258
                s = str.indexOf("/");
259
                if (s>0){
260
                    num = str.substring(0, s);
261
                    str = delRecord(num,str);
262
                    str2 = delRecord(num,str2);
263
                    updateLink(num,"del",top.opener);
264
                } else {
265
                    end = 1;
266
                }
267
            }
268
269
            if (str2.length == 0) { // equivalent to emptying the basket
270
                var rep = false;
271
                rep = confirm(MSG_CONFIRM_DEL_BASKET);
272
                if (rep) {
273
                    delCookie(nameCookie);
274
                    document.location = "about:blank";
275
                    updateBasket(0,top.opener);
276
                    window.close();
277
                } else {
278
                    return;
279
                }
280
            } else {
281
                writeCookie(nameCookie, str2, 1);
282
            }
283
        }
284
    }
285
286
    if (recordsSel) {
287
        var strCookie = "";
288
        var nameCookie = "bib_list";
289
        var valCookie = readCookie(nameCookie, 1);
290
        strCookie = nameCookie + "=" + valCookie;
291
        var arrayRecords = valCookie.split("/");
292
        updateBasket(arrayRecords.length-1,top.opener);
293
        document.location = CGIBIN + "opac-basket.pl?" + strCookie;
294
    }
295
    else {
296
        alert(MSG_NO_RECORD_SELECTED);
297
    }
298
}
299
300
function delRecord (n, s) {
301
    var re = /\d/;
302
    var aux = s;
303
    var found = 0;
304
    var pos = -1;
305
306
    while (!found) {
307
        pos = aux.indexOf(n, pos+1);
308
        var charAfter = aux.charAt(pos+n.length); // character right after the researched string
309
        if (charAfter.match(re)) { // record number inside another one
310
            continue;
311
        }
312
        else { // good record number
313
            aux = s.substring(0, pos)+ s.substring(pos+n.length+1, s.length);
314
            s = aux;
315
            found = 1;
316
        }
317
    }
318
319
    return s;
320
}
321
322
323
function delBasket() {
324
    var nameCookie = "bib_list";
325
326
    var rep = false;
327
    rep = confirm(MSG_CONFIRM_DEL_BASKET);
328
    if (rep) {
329
        delCookie(nameCookie);
330
        updateAllLinks(top.opener);
331
        document.location = "about:blank";
332
        updateBasket(0,top.opener);
333
        window.close();
334
    }
335
}
336
337
338
function quit() {
339
    if (document.myform.records.value) {
340
        var rep = false;
341
        rep = confirm(MSG_CONFIRM_DEL_RECORDS);
342
        if (rep) {
343
            delSelRecords();
344
        }
345
    }
346
    updateBasket(arrayRecords.length-1,top.opener);
347
    window.close();
348
}
349
350
function sendBasket() {
351
    var nameCookie = "bib_list";
352
    var valCookie = readCookie(nameCookie);
353
    var strCookie = nameCookie + "=" + valCookie;
354
355
    var loc = CGIBIN + "opac-sendbasket.pl?" + strCookie;
356
357
    var optWin="scrollbars=no,resizable=no,height=300,width=450,top=50,left=100";
358
    var win_form = open(loc,"win_form",optWin);
359
}
360
361
function downloadBasket() {
362
    var nameCookie = "bib_list";
363
    var valCookie = readCookie(nameCookie);
364
    var strCookie = nameCookie + "=" + valCookie;
365
366
    var loc = CGIBIN + "opac-downloadcart.pl?" + strCookie;
367
368
    open(loc,"win_form",'scrollbars=no,resizable=no,height=300,width=450,top=50,left=100');
369
}
370
371
function printBasket() {
372
    var loc = document.location + "&print=1";
373
    document.location = loc;
374
}
375
376
function showMore() {
377
    var strCookie = "";
378
379
    var nameCookie = "bib_list";
380
    var valCookie = readCookie(nameCookie);
381
    if (valCookie) {
382
        strCookie = nameCookie + "=" + valCookie;
383
    }
384
    var loc = CGIBIN + "opac-basket.pl?" + strCookie + "&verbose=1";
385
    document.location = loc;
386
}
387
388
function showLess() {
389
    var strCookie = "";
390
391
    var nameCookie = "bib_list";
392
    var valCookie = readCookie(nameCookie);
393
    if (valCookie) {
394
        strCookie = nameCookie + "=" + valCookie;
395
    }
396
    var loc = CGIBIN + "opac-basket.pl?" + strCookie + "&verbose=0";
397
    document.location = loc;
398
}
399
400
function holdSel() {
401
    var items = document.getElementById('records').value;
402
    if (items) {
403
        parent.opener.document.location = "/cgi-bin/koha/opac-reserve.pl?biblionumbers=" + items;
404
        window.close();
405
    } else {
406
        alert(MSG_NO_RECORD_SELECTED);
407
    }
408
}
409
410
function updateBasket(updated_value,target) {
411
    if(target){
412
    target.$('#basketcount').html("<span>"+updated_value+"</span>");
413
    target.$('#cartDetails').html(MSG_IN_YOUR_CART+updated_value);
414
    } else {
415
    $('#basketcount').html("<span>"+updated_value+"</span>");
416
    $('#cartDetails').html(MSG_IN_YOUR_CART+updated_value);
417
    }
418
    var basketcount = updated_value;
419
}
420
421
function openBiblio(dest,biblionumber) {
422
    openerURL=dest+"?biblionumber="+biblionumber;
423
    opener.document.location = openerURL;
424
    opener.focus();
425
}
426
427
function addSelToShelf() {
428
    var items = document.getElementById('records').value;
429
    if(items){
430
    document.location = "/cgi-bin/koha/opac-addbybiblionumber.pl?biblionumber="+items;
431
    } else {
432
        alert(MSG_NO_RECORD_SELECTED);
433
    }
434
}
435
436
///  vShelfAdd()  builds url string for multiple-biblio adds.
437
438
function vShelfAdd() {
439
        bibs= new Array;
440
        if(document.bookbag_form.biblionumber.length > 0) {
441
                for (var i=0; i < document.bookbag_form.biblionumber.length; i++) {
442
                        if (document.bookbag_form.biblionumber[i].checked) {
443
                                bibs.push("biblionumber=" +  document.bookbag_form.biblionumber[i].value);
444
                        }
445
                }
446
        if (bibs.length == 0) { showListsUpdate(MSG_NO_RECORD_SELECTED); }
447
            return bibs.join("&");
448
        } else {
449
            if (document.bookbag_form.biblionumber.checked) {
450
                return "biblionumber=" + document.bookbag_form.biblionumber.value;
451
            }
452
        }
453
}
454
455
function showCart(){
456
        var position = $("#cartmenulink").offset();
457
        var scrolld = $(window).scrollTop();
458
        var top = position.top + $("#cartmenulink").outerHeight();
459
        if( scrolld > top ){
460
            top = scrolld + 15;
461
        }
462
        var menuWidth = 200;
463
        var buttonWidth = $("#cartmenulink").innerWidth();
464
        var buttonOffset = menuWidth - buttonWidth;
465
        var left = position.left;
466
        $("#cartDetails").css("position","fixed").css("left",left);
467
        $("#cartDetails").fadeIn("fast");
468
}
469
470
function showLists(){
471
    var position = $("#listsmenulink").offset();
472
    var top = position.top + $("#listsmenulink").outerHeight();
473
    var menuWidth = 200;
474
    var buttonWidth = $("#listsmenulink").innerWidth();
475
    var buttonOffset = menuWidth - buttonWidth;
476
    var left = position.left;
477
    $("#listsDetails").css("position","fixed").css("top",top);
478
    $("#listsDetails").css("position","fixed").css("left",left);
479
    $("#listsDetails").fadeIn("fast");
480
}
481
482
function hideCart(){
483
    $("#cartDetails").fadeOut("fast");
484
}
485
486
function hideLists(){
487
    $("#listsDetails").fadeOut("fast");
488
}
489
490
function updateLink(val,op,target){
491
    if(target){
492
        if(op == "add"){
493
            target.$("a.cart"+val).html(MSG_ITEM_IN_CART).addClass("incart");
494
            target.$("a.cartR"+val).show();
495
        } else {
496
            target.$("a.cart"+val).html(MSG_ITEM_NOT_IN_CART).removeClass("incart").addClass("addtocart cart"+val);
497
            target.$("a.cartR"+val).hide();
498
        }
499
    } else {
500
        if(op == "add"){
501
            $("a.cart"+val).html(MSG_ITEM_IN_CART).addClass("incart");
502
            $("a.cartR"+val).show();
503
        } else {
504
            $("a.cart"+val).html(MSG_ITEM_NOT_IN_CART).removeClass("incart").addClass("addtocart cart"+val);
505
            $("a.cartR"+val).hide();
506
        }
507
    }
508
}
509
510
function updateAllLinks(target){
511
    if(target){
512
        target.$("a.incart").html(MSG_ITEM_NOT_IN_CART).removeClass("incart").addClass("addtocart");
513
        target.$("a.cartRemove").hide();
514
    } else {
515
        $("a.incart").html(MSG_ITEM_NOT_IN_CART).removeClass("incart").addClass("addtocart");
516
        $("a.cartRemove").hide();
517
    }
518
}
519
520
$("#cartDetails").ready(function(){
521
    $("#cartDetails,#cartmenulink").click(function(){ hideCart(); });
522
    $("#cartmenulink").click(function(){ openBasket(); return false; });
523
    $("#cartmenulink").hoverIntent(function(){
524
        showCart();
525
    },function(){
526
        hideCart();
527
    });
528
    if(basketcount){ updateBasket(basketcount) }
529
});
530
531
$("#listsmenu").ready(function(){
532
   $("#listsmenulink").mouseenter(function(){
533
             var position = $("#listsmenulink").offset();
534
           var top = position.top + $("#listsmenulink").outerHeight();
535
            var menuWidth = 200;
536
           var buttonWidth = $("#listsmenulink").innerWidth();
537
            var buttonOffset = menuWidth - buttonWidth;
538
            var left = position.left;
539
              $("#listsmenu").css("position","fixed").css("top",top);
540
                $("#listsmenu").css("position","fixed").css("left",left);
541
              $("#listsmenu").fadeIn("fast");
542
        });
543
    $("#listsmenulink").mouseleave(function(){
544
             $("#listsmenu").fadeOut("fast");
545
       });
546
});
(-)a/koha-tmpl/opac-tmpl/ccsr/en/js/datatables.js (-100 lines)
Lines 1-100 Link Here
1
// These default options are for translation but can be used
2
// for any other datatables settings
3
// MSG_DT_* variables comes from datatables-strings.inc
4
// To use it, write:
5
//  $("#table_id").dataTable($.extend(true, {}, dataTableDefaults, {
6
//      // other settings
7
//  } ) );
8
var dataTablesDefaults = {
9
    "oLanguage": {
10
        "oPaginate": {
11
            "sFirst"    : window.MSG_DT_FIRST || "First",
12
            "sLast"     : window.MSG_DT_LAST || "Last",
13
            "sNext"     : window.MSG_DT_NEXT || "Next",
14
            "sPrevious" : window.MSG_DT_PREVIOUS || "Previous"
15
        },
16
        "sEmptyTable"       : window.MSG_DT_EMPTY_TABLE || "No data available in table",
17
        "sInfo"             : window.MSG_DT_INFO || "Showing _START_ to _END_ of _TOTAL_ entries",
18
        "sInfoEmpty"        : window.MSG_DT_INFO_EMPTY || "No entries to show",
19
        "sInfoFiltered"     : window.MSG_DT_INFO_FILTERED || "(filtered from _MAX_ total entries)",
20
        "sLengthMenu"       : window.MSG_DT_LENGTH_MENU || "Show _MENU_ entries",
21
        "sLoadingRecords"   : window.MSG_DT_LOADING_RECORDS || "Loading...",
22
        "sProcessing"       : window.MSG_DT_PROCESSING || "Processing...",
23
        "sSearch"           : window.MSG_DT_SEARCH || "Search:",
24
        "sZeroRecords"      : window.MSG_DT_ZERO_RECORDS || "No matching records found"
25
    },
26
    // "aaSorting": [$(" - select row position of th -")],
27
    "sDom": 't',
28
    "bPaginate": false,
29
    // "fnHeaderCallback": function() {
30
    //     return $('th.sorting.nosort,th.sorting_desc.nosort,th.sorting_asc.nosort').removeClass("sorting sorting_desc sorting_asc").unbind("click");
31
    // }
32
};
33
34
/* Plugin to allow sorting on data stored in a span's title attribute
35
 *
36
 * Ex: <td><span title="[% ISO_date %]">[% formatted_date %]</span></td>
37
 *
38
 * In DataTables config:
39
 *     "aoColumns": [
40
 *        { "sType": "title-string" },
41
 *      ]
42
 * http://datatables.net/plug-ins/sorting#hidden_title_string
43
 */
44
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
45
    "title-string-pre": function ( a ) {
46
        return a.match(/title="(.*?)"/)[1].toLowerCase();
47
    },
48
49
    "title-string-asc": function ( a, b ) {
50
        return ((a < b) ? -1 : ((a > b) ? 1 : 0));
51
    },
52
53
    "title-string-desc": function ( a, b ) {
54
        return ((a < b) ? 1 : ((a > b) ? -1 : 0));
55
    }
56
} );
57
58
(function() {
59
60
    /* Plugin to allow text sorting to ignore articles
61
     *
62
     * In DataTables config:
63
     *     "aoColumns": [
64
     *        { "sType": "anti-the" },
65
     *      ]
66
     * Based on the plugin found here:
67
     * http://datatables.net/plug-ins/sorting#anti_the
68
     * Modified to exclude HTML tags from sorting
69
     * Extended to accept a string of space-separated articles
70
     * from a configuration file (in English, "a," "an," and "the")
71
     */
72
73
    if(CONFIG_EXCLUDE_ARTICLES_FROM_SORT){
74
        var articles = CONFIG_EXCLUDE_ARTICLES_FROM_SORT.split(" ");
75
        var rpattern = "";
76
        for(i=0;i<articles.length;i++){
77
            rpattern += "^" + articles[i] + " ";
78
            if(i < articles.length - 1){ rpattern += "|"; }
79
        }
80
        var re = new RegExp(rpattern, "i");
81
    }
82
83
    jQuery.extend( jQuery.fn.dataTableExt.oSort, {
84
        "anti-the-pre": function ( a ) {
85
            var x = String(a).replace( /<[\s\S]*?>/g, "" );
86
            var y = x.trim();
87
            var z = y.replace(re, "").toLowerCase();
88
            return z;
89
        },
90
91
        "anti-the-asc": function ( a, b ) {
92
            return ((a < b) ? -1 : ((a > b) ? 1 : 0));
93
        },
94
95
        "anti-the-desc": function ( a, b ) {
96
            return ((a < b) ? 1 : ((a > b) ? -1 : 0));
97
        }
98
    });
99
100
}());
(-)a/koha-tmpl/opac-tmpl/ccsr/en/js/google-jackets.js (-76 lines)
Lines 1-76 Link Here
1
if (typeof KOHA == "undefined" || !KOHA) {
2
    var KOHA = {};
3
}
4
5
/**
6
 * A namespace for Google related functions.
7
 */
8
KOHA.Google = {
9
10
11
    /**
12
     * Search all:
13
     *    <div title="biblionumber" id="isbn" class="gbs-thumbnail"></div>
14
     * or
15
     *    <div title="biblionumber" id="isbn" class="gbs-thumbnail-preview"></div>
16
     * and run a search with all collected isbns to Google Book Search.
17
     * The result is asynchronously returned by Google and catched by
18
     * gbsCallBack().
19
     */
20
    GetCoverFromIsbn: function(newWindow) {
21
        var bibkeys = [];
22
        $("[id^=gbs-thumbnail]").each(function(i) {
23
            bibkeys.push($(this).attr("class")); // id=isbn
24
        });
25
        bibkeys = bibkeys.join(',');
26
        var scriptElement = document.createElement("script");
27
        this.openInNewWindow=newWindow;
28
        scriptElement.setAttribute("id", "jsonScript");
29
        scriptElement.setAttribute("src",
30
            "http://books.google.com/books?bibkeys=" + escape(bibkeys) +
31
            "&jscmd=viewapi&callback=KOHA.Google.gbsCallBack");
32
        scriptElement.setAttribute("type", "text/javascript");
33
        document.documentElement.firstChild.appendChild(scriptElement);
34
35
    },
36
37
    /**
38
     * Add cover pages <div
39
     * and link to preview if div id is gbs-thumbnail-preview
40
     */
41
    gbsCallBack: function(booksInfo) {
42
         var target = '';
43
         if (this.openInNewWindow) {
44
            target = 'target="_blank" ';
45
         }
46
         for (id in booksInfo) {
47
             var book = booksInfo[id];
48
             $("[id^=gbs-thumbnail]."+book.bib_key).each(function() {
49
                 var a = document.createElement("a");
50
                 a.href = book.info_url;
51
                 if (typeof(book.thumbnail_url) != "undefined") {
52
                     var img = document.createElement("img");
53
                     img.src = book.thumbnail_url;
54
                     $(this).append(img);
55
                     var re = /^gbs-thumbnail-preview/;
56
                     if ( re.exec($(this).attr("id")) ) {
57
                         $(this).append(
58
                             '<div style="margin-bottom:5px; margin-top:-5px;font-size:9px">' +
59
                             '<a '+target+'href="' +
60
                             book.info_url +
61
                             '"><img src="' +
62
                             'http://books.google.com/intl/en/googlebooks/images/gbs_preview_sticker1.gif' +
63
                             '"></a></div>'
64
                             );
65
                     }
66
                 } else {
67
                     var message = document.createElement("span");
68
                     $(message).attr("class","no-image");
69
                     $(message).html(NO_GOOGLE_JACKET);
70
                     $(this).append(message);
71
                 }
72
             });
73
         }
74
75
     }
76
};
(-)a/koha-tmpl/opac-tmpl/ccsr/en/js/googleindictransliteration.js (-27 lines)
Lines 1-27 Link Here
1
      // Load the Google Transliteration API
2
      google.load("elements", "1", {
3
            packages: "transliteration"
4
          });
5
6
       function onLoad() {
7
        var options = {
8
          sourceLanguage: 'en',
9
          destinationLanguage: ['hi','kn','ml','ta','te'],
10
          shortcutKey: 'ctrl+g',
11
          transliterationEnabled: true
12
        };
13
14
        // Create an instance on TransliterationControl with the required
15
        // options.
16
        var control =
17
            new google.elements.transliteration.TransliterationControl(options);
18
19
        // Enable transliteration in the textfields with the given ids.
20
        var ids = [ "transl1" ];
21
        control.makeTransliteratable(ids);
22
23
        // Show the transliteration control which can be used to toggle between
24
        // English and Hindi and also choose other destination language.
25
        control.showControl('translControl');
26
      }
27
      google.setOnLoadCallback(onLoad);
(-)a/koha-tmpl/opac-tmpl/ccsr/en/js/localcovers.js (-44 lines)
Lines 1-44 Link Here
1
if (typeof KOHA == "undefined" || !KOHA) {
2
    var KOHA = {};
3
}
4
5
/**
6
 * A namespace for local cover related functions.
7
 */
8
KOHA.LocalCover = {
9
10
11
    /**
12
     * Search all:
13
     *    <div title="biblionumber" id="isbn" class="openlibrary-thumbnail"></div>
14
     * or
15
     *    <div title="biblionumber" id="isbn" class="openlibrary-thumbnail-preview"></div>
16
     * and run a search with all collected isbns to Open Library Book Search.
17
     * The result is asynchronously returned by OpenLibrary and catched by
18
     * olCallBack().
19
     */
20
    GetCoverFromBibnumber: function(uselink) {
21
        $("div[id^=local-thumbnail],span[id^=local-thumbnail]").each(function(i) {
22
            var mydiv = this;
23
            var message = document.createElement("span");
24
            $(message).attr("class","no-image");
25
            $(message).html(NO_LOCAL_JACKET);
26
            $(mydiv).append(message);
27
            var img = $("<img />").attr('src',
28
                '/cgi-bin/koha/opac-image.pl?thumbnail=1&biblionumber=' + $(mydiv).attr("class"))
29
                .load(function () {
30
                    if (!this.complete || typeof this.naturalWidth == "undefined" || this.naturalWidth == 0) {
31
                    } else {
32
                        if (uselink) {
33
                            var a = $("<a />").attr('href', '/cgi-bin/koha/opac-imageviewer.pl?biblionumber=' + $(mydiv).attr("class"));
34
                            $(a).append(img);
35
                            $(mydiv).append(a);
36
                        } else {
37
                            $(mydiv).append(img);
38
                        }
39
                        $(mydiv).children('.no-image').remove();
40
                    }
41
                })
42
        });
43
    }
44
};
(-)a/koha-tmpl/opac-tmpl/ccsr/en/js/openlibrary.js (-67 lines)
Lines 1-67 Link Here
1
if (typeof KOHA == "undefined" || !KOHA) {
2
    var KOHA = {};
3
}
4
5
/**
6
 * A namespace for OpenLibrary related functions.
7
 */
8
KOHA.OpenLibrary = {
9
10
11
    /**
12
     * Search all:
13
     *    <div title="biblionumber" id="isbn" class="openlibrary-thumbnail"></div>
14
     * or
15
     *    <div title="biblionumber" id="isbn" class="openlibrary-thumbnail-preview"></div>
16
     * and run a search with all collected isbns to Open Library Book Search.
17
     * The result is asynchronously returned by OpenLibrary and catched by
18
     * olCallBack().
19
     */
20
    GetCoverFromIsbn: function() {
21
        var bibkeys = [];
22
        $("[id^=openlibrary-thumbnail]").each(function(i) {
23
            bibkeys.push("ISBN:" + $(this).attr("class")); // id=isbn
24
        });
25
        bibkeys = bibkeys.join(',');
26
        var scriptElement = document.createElement("script");
27
        scriptElement.setAttribute("id", "jsonScript");
28
        scriptElement.setAttribute("src",
29
            "http://openlibrary.org/api/books?bibkeys=" + escape(bibkeys) +
30
            "&callback=KOHA.OpenLibrary.olCallBack&jscmd=data");
31
        scriptElement.setAttribute("type", "text/javascript");
32
        document.documentElement.firstChild.appendChild(scriptElement);
33
    },
34
35
    /**
36
     * Add cover pages <div
37
     * and link to preview if div id is gbs-thumbnail-preview
38
     */
39
    olCallBack: function(booksInfo) {
40
        for (id in booksInfo) {
41
            var book = booksInfo[id];
42
            var isbn = id.substring(5);
43
            $("[id^=openlibrary-thumbnail]."+isbn).each(function() {
44
                var is_opacdetail = /openlibrary-thumbnail-preview/.exec($(this).attr("id"));
45
                var a = document.createElement("a");
46
                a.href = booksInfo.url;
47
                if (book.cover) {
48
                    var img = document.createElement("img");
49
                    if (is_opacdetail) {
50
                        img.src = book.cover.medium;
51
                        $(this).append(img);
52
                        $(this).append('<div class="results_summary">' + '<a href="' + book.url + '">Preview</a></div>');
53
                    } else {
54
                        img.src = book.cover.medium;
55
                        img.height = '110';
56
                        $(this).append(img);
57
                    }
58
                } else {
59
                    var message =  document.createElement("span");
60
                    $(message).attr("class","no-image");
61
                    $(message).html(NO_OL_JACKET);
62
                    $(this).append(message);
63
                }
64
            });
65
        }
66
    }
67
};
(-)a/koha-tmpl/opac-tmpl/ccsr/en/js/overdrive.js (-61 lines)
Lines 1-61 Link Here
1
if ( typeof KOHA == "undefined" || !KOHA ) {
2
    var KOHA = {};
3
}
4
5
KOHA.OverDrive = ( function() {
6
    var proxy_base_url = '/cgi-bin/koha/svc/overdrive_proxy';
7
    var library_base_url = 'http://api.overdrive.com/v1/libraries/';
8
    return {
9
        Get: function( url, params, callback ) {
10
            $.ajax( {
11
                type: 'GET',
12
                url: url.replace( /https?:\/\/api.overdrive.com\/v1/, proxy_base_url ),
13
                dataType: 'json',
14
                data: params,
15
                error: function( xhr, error ) {
16
                    try {
17
                        callback( JSON.parse( xhr.responseText ));
18
                    } catch ( e ) {
19
                        callback( {error: xhr.responseText || true} );
20
                    }
21
                },
22
                success: callback
23
            } );
24
        },
25
        GetCollectionURL: function( library_id, callback ) {
26
            if ( KOHA.OverDrive.collection_url ) {
27
                callback( KOHA.OverDrive.collection_url );
28
                return;
29
            }
30
31
            KOHA.OverDrive.Get(
32
                library_base_url + library_id,
33
                {},
34
                function ( data ) {
35
                    if ( data.error ) {
36
                        callback( data );
37
                        return;
38
                    }
39
40
                    KOHA.OverDrive.collection_url = data.links.products.href;
41
42
                    callback( data.links.products.href );
43
                }
44
            );
45
        },
46
        Search: function( library_id, q, limit, offset, callback ) {
47
            KOHA.OverDrive.GetCollectionURL( library_id, function( data ) {
48
                if ( data.error ) {
49
                    callback( data );
50
                    return;
51
                }
52
53
                KOHA.OverDrive.Get(
54
                    data,
55
                    {q: q, limit: limit, offset: offset},
56
                    callback
57
                );
58
            } );
59
        }
60
    };
61
} )();
(-)a/koha-tmpl/opac-tmpl/ccsr/en/js/script.js (-128 lines)
Lines 1-128 Link Here
1
function _(s) { return s } // dummy function for gettext
2
function confirmDelete(message) {
3
    return (confirm(message) ? true : false);
4
}
5
6
function Dopop(link) {
7
    newin=window.open(link,'popup','width=500,height=400,toolbar=false,scrollbars=yes,resizeable=yes');
8
}
9
10
$.datepicker.setDefaults({
11
        showOn: "both",
12
        changeMonth: true,
13
        changeYear: true,
14
        buttonImage: '/opac-tmpl/lib/famfamfam/silk/calendar.png',
15
        buttonImageOnly: true,
16
        showButtonPanel: true
17
    });
18
19
$(document).ready(function(){
20
    $(".close").click(function(){
21
        window.close();
22
    });
23
    $(".focus").focus();
24
    $( ".datepicker" ).datepicker();
25
    // http://jqueryui.com/demos/datepicker/#date-range
26
    var dates = $( ".datepickerfrom, .datepickerto" ).datepicker({
27
        changeMonth: true,
28
        numberOfMonths: 1,
29
        onSelect: function( selectedDate ) {
30
            var option = this.id == "from" ? "minDate" : "maxDate",
31
                instance = $( this ).data( "datepicker" );
32
                date = $.datepicker.parseDate(
33
                    instance.settings.dateFormat ||
34
                    $.datepicker._defaults.dateFormat,
35
                    selectedDate, instance.settings );
36
            dates.not( this ).datepicker( "option", option, date );
37
        }
38
    });
39
    // clear the basket when user logs out
40
    $("#logout").click(function(){
41
        var nameCookie = "bib_list";
42
        var valCookie = readCookie(nameCookie);
43
        if (valCookie) { // basket has contents
44
            updateBasket(0,null);
45
            delCookie(nameCookie);
46
            return true;
47
        } else {
48
            return true;
49
        }
50
    });
51
52
53
     // Add the mobile menu button if we are in some sections of the opac
54
   if($('body#opac-user, body#opac-passwd, body#opac-search-history, body#opac-readingrecord, body#opac-userupdate, body#opac-usersuggestions, body#opac-account, body#opac-privacy, body#opac-usertags').length != 0) {
55
          $('body').addClass('mobile_menu');
56
57
            var button = $('<input type="button" id="mobile_menu_button" value="">').addClass('mobile_only');
58
              $('#searchform').append(button);
59
60
              button.click(function() {
61
                      if($('body').hasClass('mobile_menu_opened')){
62
                          $('body').removeClass('mobile_menu_opened');
63
                   }
64
                      else {
65
                         $('body').addClass('mobile_menu_opened');
66
                      }
67
              });
68
    }
69
});
70
71
// build Change Language menus
72
YAHOO.util.Event.onContentReady("changelanguage", function () {
73
    $(".sublangs").each(function(){
74
        var menuid = $(this).attr("id");
75
        var menuid = menuid.replace("show","");
76
77
        var oMenu = new YAHOO.widget.Menu("sub"+menuid, { zindex: 2 });
78
        function positionoMenu() {
79
            oMenu.align("bl", "tl");
80
        }
81
        oMenu.subscribe("beforeShow", function () {
82
        if (this.getRoot() == this) {
83
            positionoMenu();
84
        }
85
        });
86
        oMenu.render();
87
        oMenu.cfg.setProperty("context", ["show"+menuid, "bl", "tl"]);
88
        function onYahooClick(p_oEvent) {
89
            // Position and display the menu
90
            positionoMenu();
91
            oMenu.show();
92
            // Stop propagation and prevent the default "click" behavior
93
            YAHOO.util.Event.stopEvent(p_oEvent);
94
        }
95
        YAHOO.util.Event.addListener("show"+menuid, "click", onYahooClick);
96
        YAHOO.widget.Overlay.windowResizeEvent.subscribe(positionoMenu);
97
98
    });
99
});
100
101
/*
102
// Build lists menu
103
YAHOO.util.Event.onContentReady("listsmenu", function () {
104
    YAHOO.widget.Menu.prototype.onRender = function () { };
105
    $("#listsmenu").css("display","block").css("visibility","hidden");
106
    $("#listsmenulink").attr("href","#");
107
    var listMenu = new YAHOO.widget.Menu("listsmenu");
108
        listMenu.render();
109
        listMenu.cfg.setProperty("context", ["listsmenulink", "tr", "br"]);
110
        listMenu.cfg.setProperty("effect",{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.05});
111
        listMenu.subscribe("beforeShow",positionlistMenu);
112
        listMenu.subscribe("show", listMenu.focus);
113
        function positionlistMenu() {
114
                    listMenu.align("tr", "br");
115
        }
116
        YAHOO.util.Event.addListener("listsmenulink", "click", listMenu.show, null, listMenu);
117
        YAHOO.widget.Overlay.windowResizeEvent.subscribe(positionlistMenu);
118
 });
119
*/
120
121
jQuery.fn.preventDoubleFormSubmit = function() {
122
    jQuery(this).submit(function() {
123
        if (this.beenSubmitted)
124
            return false;
125
        else
126
            this.beenSubmitted = true;
127
    });
128
};
(-)a/koha-tmpl/opac-tmpl/ccsr/en/js/tags.js (-145 lines)
Lines 1-145 Link Here
1
if (typeof KOHA == "undefined" || !KOHA) {
2
    var KOHA = {};
3
}
4
5
/**
6
* A namespace for Tags related functions.
7
8
$.ajaxSetup({
9
       url: "/cgi-bin/koha/opac-tags.pl",
10
     type: "POST",
11
  dataType: "script"
12
});
13
*/
14
KOHA.Tags = {
15
      add_tag_button: function(bibnum, tag){
16
          var mynewtag = "newtag" + bibnum;
17
            var mytagid = "#" + mynewtag;
18
          var mydata = {};
19
                mydata[mynewtag] = tag;
20
                var response;	// AJAX from server will assign value to response.
21
               $.post(
22
                        "/cgi-bin/koha/opac-tags.pl",
23
                  mydata,
24
                        function(data){
25
                                // alert("AJAX Response: " + data);
26
                            eval(data);
27
                            // alert("counts: " + response["added"] + response["deleted"] + response["errors"]);
28
                           KOHA.Tags.set_tag_status(
29
                                      mytagid + "_status",
30
                                   KOHA.Tags.common_status(response["added"], response["deleted"], response["errors"])
31
                            );
32
                             if (response.alerts) {
33
                                 alert(response.alerts.join("\n\n"));
34
                           }
35
                      },
36
                     'script'
37
               );
38
             return false;
39
  },
40
     common_status : function(addcount, delcount, errcount) {
41
           var cstat = "";
42
        if (addcount && addcount > 0) {cstat += MSG_TAGS_ADDED + addcount + ".  " ;}
43
           if (delcount && delcount > 0) {cstat += MSG_TAGS_DELETED + delcount + ".  " ;}
44
         if (errcount && errcount > 0) {cstat += MSG_TAGS_ERRORS + errcount + ". " ;}
45
           return cstat;
46
      },
47
     set_tag_status : function(tagid, newstatus) {
48
          $(tagid).html(newstatus);
49
              $(tagid).show();
50
      },
51
     append_tag_status : function(tagid, newstatus) {
52
               $(tagid).append(newstatus);
53
            $(tagid).show();
54
      },
55
     clear_all_tag_status : function() {
56
          $(".tagstatus").empty().hide();
57
      },
58
59
    tag_message: {
60
 tagsdisabled : function(arg) {return (MSG_TAGS_DISABLED);},
61
    scrubbed_all_bad : function(arg) {return (MSG_TAG_ALL_BAD);},
62
  badparam : function(arg) {return (MSG_ILLEGAL_PARAMETER+" "+arg);},
63
    scrubbed : function(arg) {return (MSG_TAG_SCRUBBED+" "+arg);},
64
    failed_add_tag : function(arg) {return (MSG_ADD_TAG_FAILED+ " '"+arg+"'. \n"+MSG_ADD_TAG_FAILED_NOTE);},
65
    failed_delete  : function(arg) {return (MSG_DELETE_TAG_FAILED+ " '"+arg+"'. \n"+MSG_DELETE_TAG_FAILED_NOTE);},
66
   login : function(arg) {return (MSG_LOGIN_REQUIRED);}
67
   },
68
69
    // Used to tag multiple items at once.  The main difference
70
    // is that status is displayed on a per item basis.
71
    add_multitags_button : function(bibarray, tag){
72
                var mydata = {};
73
        for (var i = 0; i < bibarray.length; i++) {
74
            var mynewtag = "newtag" + bibarray[i];
75
            mydata[mynewtag] = tag;
76
        }
77
           var response;	// AJAX from server will assign value to response.
78
               $.post(
79
                        "/cgi-bin/koha/opac-tags.pl",
80
                  mydata,
81
                        function(data){
82
                                eval(data);
83
                KOHA.Tags.clear_all_tag_status();
84
                var bibErrors = false;
85
86
                // Display the status for each tagged bib
87
                for (var i = 0; i < bibarray.length; i++) {
88
                    var bib = bibarray[i];
89
                    var mytagid = "#newtag" + bib;
90
                    var status = "";
91
92
                    // Number of tags added.
93
                    if (response[bib]) {
94
                        var added = response[bib]["added"];
95
                        if (added > 0) {
96
                            status = MSG_TAGS_ADDED + added + ".  ";
97
				        KOHA.Tags.set_tag_status(mytagid + "_status", status);
98
                        }
99
100
                        // Show a link that opens an error dialog, if necessary.
101
                        var errors = response[bib]["errors"];
102
                        if (errors.length > 0) {
103
                            bibErrors = true;
104
                            var errid = "tagerr_" + bib;
105
                            var errstat = "<a id=\"" + errid + "\" class=\"tagerror\" href=\"#\">";
106
                            errstat += MSG_TAGS_ERRORS + errors.length + ". ";
107
                            errstat += "</a>";
108
					    KOHA.Tags.append_tag_status(mytagid + "_status", errstat);
109
                            var errmsg = "";
110
                            for (var e = 0; e < errors.length; e++){
111
                                if (e) {
112
                                    errmsg += "\n\n";
113
                                }
114
                                errmsg += errors[e];
115
                            }
116
                            $("#" + errid).click(function(){
117
                                alert(errmsg);
118
                            });
119
                        }
120
                    }
121
                }
122
123
                if (bibErrors || response["global_errors"]) {
124
                    var msg = "";
125
                    if (bibErrors) {
126
                        msg = MSG_MULTI_ADD_TAG_FAILED;
127
                    }
128
129
                    // Show global errors in a dialog.
130
                    if (response["global_errors"]) {
131
                        var global_errors = response["global_errors"];
132
                        var msg;
133
                        for (var e = 0; e < global_errors.length; e++) {
134
                            msg += "\n\n";
135
                            msg += response.alerts[global_errors[e]];
136
                        }
137
                    }
138
                    alert(msg);
139
                }
140
                     },
141
                     'script'
142
               );
143
             return false;
144
    }
145
};
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/AJS.js (-525 lines)
Lines 1-525 Link Here
1
AJS={BASE_URL:"",drag_obj:null,drag_elm:null,_drop_zones:[],_cur_pos:null,join:function(_1,_2){
2
try{
3
return _2.join(_1);
4
}
5
catch(e){
6
var r=_2[0]||"";
7
AJS.map(_2,function(_4){
8
r+=_1+_4;
9
},1);
10
return r+"";
11
}
12
},getScrollTop:function(){
13
var t;
14
if(document.documentElement&&document.documentElement.scrollTop){
15
t=document.documentElement.scrollTop;
16
}else{
17
if(document.body){
18
t=document.body.scrollTop;
19
}
20
}
21
return t;
22
},addClass:function(){
23
var _6=AJS.forceArray(arguments);
24
var _7=_6.pop();
25
var _8=function(o){
26
if(!new RegExp("(^|\\s)"+_7+"(\\s|$)").test(o.className)){
27
o.className+=(o.className?" ":"")+_7;
28
}
29
};
30
AJS.map(_6,function(_a){
31
_8(_a);
32
});
33
},setStyle:function(){
34
var _b=AJS.forceArray(arguments);
35
var _c=_b.pop();
36
var _d=_b.pop();
37
AJS.map(_b,function(_e){
38
_e.style[_d]=AJS.getCssDim(_c);
39
});
40
},_getRealScope:function(fn,_10,_11,_12){
41
var _13=window;
42
_10=AJS.$A(_10);
43
if(fn._cscope){
44
_13=fn._cscope;
45
}
46
return function(){
47
var _14=[];
48
var i=0;
49
if(_11){
50
i=1;
51
}
52
AJS.map(arguments,function(arg){
53
_14.push(arg);
54
},i);
55
_14=_14.concat(_10);
56
if(_12){
57
_14=_14.reverse();
58
}
59
return fn.apply(_13,_14);
60
};
61
},preloadImages:function(){
62
AJS.AEV(window,"load",AJS.$p(function(_17){
63
AJS.map(_17,function(src){
64
var pic=new Image();
65
pic.src=src;
66
});
67
},arguments));
68
},_createDomShortcuts:function(){
69
var _1a=["ul","li","td","tr","th","tbody","table","input","span","b","a","div","img","button","h1","h2","h3","br","textarea","form","p","select","option","iframe","script","center","dl","dt","dd","small","pre"];
70
var _1b=function(elm){
71
var _1d="return AJS.createDOM.apply(null, ['"+elm+"', arguments]);";
72
var _1e="function() { "+_1d+"    }";
73
eval("AJS."+elm.toUpperCase()+"="+_1e);
74
};
75
AJS.map(_1a,_1b);
76
AJS.TN=function(_1f){
77
return document.createTextNode(_1f);
78
};
79
},documentInsert:function(elm){
80
if(typeof (elm)=="string"){
81
elm=AJS.HTML2DOM(elm);
82
}
83
document.write("<span id=\"dummy_holder\"></span>");
84
AJS.swapDOM(AJS.$("dummy_holder"),elm);
85
},getWindowSize:function(doc){
86
doc=doc||document;
87
var _22,_23;
88
if(self.innerHeight){
89
_22=self.innerWidth;
90
_23=self.innerHeight;
91
}else{
92
if(doc.documentElement&&doc.documentElement.clientHeight){
93
_22=doc.documentElement.clientWidth;
94
_23=doc.documentElement.clientHeight;
95
}else{
96
if(doc.body){
97
_22=doc.body.clientWidth;
98
_23=doc.body.clientHeight;
99
}
100
}
101
}
102
return {"w":_22,"h":_23};
103
},flattenList:function(_24){
104
var r=[];
105
var _26=function(r,l){
106
AJS.map(l,function(o){
107
if(o==null){
108
}else{
109
if(AJS.isArray(o)){
110
_26(r,o);
111
}else{
112
r.push(o);
113
}
114
}
115
});
116
};
117
_26(r,_24);
118
return r;
119
},setEventKey:function(e){
120
e.key=e.keyCode?e.keyCode:e.charCode;
121
if(window.event){
122
e.ctrl=window.event.ctrlKey;
123
e.shift=window.event.shiftKey;
124
}else{
125
e.ctrl=e.ctrlKey;
126
e.shift=e.shiftKey;
127
}
128
switch(e.key){
129
case 63232:
130
e.key=38;
131
break;
132
case 63233:
133
e.key=40;
134
break;
135
case 63235:
136
e.key=39;
137
break;
138
case 63234:
139
e.key=37;
140
break;
141
}
142
},removeElement:function(){
143
var _2b=AJS.forceArray(arguments);
144
AJS.map(_2b,function(elm){
145
AJS.swapDOM(elm,null);
146
});
147
},_unloadListeners:function(){
148
if(AJS.listeners){
149
AJS.map(AJS.listeners,function(elm,_2e,fn){
150
AJS.REV(elm,_2e,fn);
151
});
152
}
153
AJS.listeners=[];
154
},partial:function(fn){
155
var _31=AJS.forceArray(arguments);
156
return AJS.$b(fn,null,_31.slice(1,_31.length).reverse(),false,true);
157
},getIndex:function(elm,_33,_34){
158
for(var i=0;i<_33.length;i++){
159
if(_34&&_34(_33[i])||elm==_33[i]){
160
return i;
161
}
162
}
163
return -1;
164
},isDefined:function(o){
165
return (o!="undefined"&&o!=null);
166
},isArray:function(obj){
167
return obj instanceof Array;
168
},setLeft:function(){
169
var _38=AJS.forceArray(arguments);
170
_38.splice(_38.length-1,0,"left");
171
AJS.setStyle.apply(null,_38);
172
},appendChildNodes:function(elm){
173
if(arguments.length>=2){
174
AJS.map(arguments,function(n){
175
if(AJS.isString(n)){
176
n=AJS.TN(n);
177
}
178
if(AJS.isDefined(n)){
179
elm.appendChild(n);
180
}
181
},1);
182
}
183
return elm;
184
},isOpera:function(){
185
return (navigator.userAgent.toLowerCase().indexOf("opera")!=-1);
186
},isString:function(obj){
187
return (typeof obj=="string");
188
},hideElement:function(elm){
189
var _3d=AJS.forceArray(arguments);
190
AJS.map(_3d,function(elm){
191
elm.style.display="none";
192
});
193
},setOpacity:function(elm,p){
194
elm.style.opacity=p;
195
elm.style.filter="alpha(opacity="+p*100+")";
196
},setHeight:function(){
197
var _41=AJS.forceArray(arguments);
198
_41.splice(_41.length-1,0,"height");
199
AJS.setStyle.apply(null,_41);
200
},setWidth:function(){
201
var _42=AJS.forceArray(arguments);
202
_42.splice(_42.length-1,0,"width");
203
AJS.setStyle.apply(null,_42);
204
},createArray:function(v){
205
if(AJS.isArray(v)&&!AJS.isString(v)){
206
return v;
207
}else{
208
if(!v){
209
return [];
210
}else{
211
return [v];
212
}
213
}
214
},isDict:function(o){
215
var _45=String(o);
216
return _45.indexOf(" Object")!=-1;
217
},isMozilla:function(){
218
return (navigator.userAgent.toLowerCase().indexOf("gecko")!=-1&&navigator.productSub>=20030210);
219
},_listenOnce:function(elm,_47,fn){
220
var _49=function(){
221
AJS.removeEventListener(elm,_47,_49);
222
fn(arguments);
223
};
224
return _49;
225
},addEventListener:function(elm,_4b,fn,_4d,_4e){
226
if(!_4e){
227
_4e=false;
228
}
229
var _4f=AJS.$A(elm);
230
AJS.map(_4f,function(_50){
231
if(_4d){
232
fn=AJS._listenOnce(_50,_4b,fn);
233
}
234
if(AJS.isIn(_4b,["submit","load","scroll","resize"])){
235
var old=elm["on"+_4b];
236
elm["on"+_4b]=function(){
237
if(old){
238
fn(arguments);
239
return old(arguments);
240
}else{
241
return fn(arguments);
242
}
243
};
244
return;
245
}
246
if(AJS.isIn(_4b,["keypress","keydown","keyup","click"])){
247
var _52=fn;
248
fn=function(e){
249
AJS.setEventKey(e);
250
return _52.apply(null,arguments);
251
};
252
}
253
if(_50.attachEvent){
254
_50.attachEvent("on"+_4b,fn);
255
}else{
256
if(_50.addEventListener){
257
_50.addEventListener(_4b,fn,_4e);
258
}
259
}
260
AJS.listeners=AJS.$A(AJS.listeners);
261
AJS.listeners.push([_50,_4b,fn]);
262
});
263
},createDOM:function(_54,_55){
264
var i=0,_57;
265
elm=document.createElement(_54);
266
if(AJS.isDict(_55[i])){
267
for(k in _55[0]){
268
_57=_55[0][k];
269
if(k=="style"){
270
elm.style.cssText=_57;
271
}else{
272
if(k=="class"||k=="className"){
273
elm.className=_57;
274
}else{
275
elm.setAttribute(k,_57);
276
}
277
}
278
}
279
i++;
280
}
281
if(_55[0]==null){
282
i=1;
283
}
284
AJS.map(_55,function(n){
285
if(n){
286
if(AJS.isString(n)||AJS.isNumber(n)){
287
n=AJS.TN(n);
288
}
289
elm.appendChild(n);
290
}
291
},i);
292
return elm;
293
},setTop:function(){
294
var _59=AJS.forceArray(arguments);
295
_59.splice(_59.length-1,0,"top");
296
AJS.setStyle.apply(null,_59);
297
},getElementsByTagAndClassName:function(_5a,_5b,_5c){
298
var _5d=[];
299
if(!AJS.isDefined(_5c)){
300
_5c=document;
301
}
302
if(!AJS.isDefined(_5a)){
303
_5a="*";
304
}
305
var els=_5c.getElementsByTagName(_5a);
306
var _5f=els.length;
307
var _60=new RegExp("(^|\\s)"+_5b+"(\\s|$)");
308
for(i=0,j=0;i<_5f;i++){
309
if(_60.test(els[i].className)||_5b==null){
310
_5d[j]=els[i];
311
j++;
312
}
313
}
314
return _5d;
315
},removeClass:function(){
316
var _61=AJS.forceArray(arguments);
317
var cls=_61.pop();
318
var _63=function(o){
319
o.className=o.className.replace(new RegExp("\\s?"+cls,"g"),"");
320
};
321
AJS.map(_61,function(elm){
322
_63(elm);
323
});
324
},bindMethods:function(_66){
325
for(var k in _66){
326
var _68=_66[k];
327
if(typeof (_68)=="function"){
328
_66[k]=AJS.$b(_68,_66);
329
}
330
}
331
},log:function(o){
332
if(AJS.isMozilla()){
333
console.log(o);
334
}else{
335
var div=AJS.DIV({"style":"color: green"});
336
AJS.ACN(AJS.getBody(),AJS.setHTML(div,""+o));
337
}
338
},isNumber:function(obj){
339
return (typeof obj=="number");
340
},map:function(_6c,fn,_6e,_6f){
341
var i=0,l=_6c.length;
342
if(_6e){
343
i=_6e;
344
}
345
if(_6f){
346
l=_6f;
347
}
348
for(i;i<l;i++){
349
fn.apply(null,[_6c[i],i]);
350
}
351
},removeEventListener:function(elm,_73,fn,_75){
352
if(!_75){
353
_75=false;
354
}
355
if(elm.removeEventListener){
356
elm.removeEventListener(_73,fn,_75);
357
if(AJS.isOpera()){
358
elm.removeEventListener(_73,fn,!_75);
359
}
360
}else{
361
if(elm.detachEvent){
362
elm.detachEvent("on"+_73,fn);
363
}
364
}
365
},getCssDim:function(dim){
366
if(AJS.isString(dim)){
367
return dim;
368
}else{
369
return dim+"px";
370
}
371
},setHTML:function(elm,_78){
372
elm.innerHTML=_78;
373
return elm;
374
},bind:function(fn,_7a,_7b,_7c,_7d){
375
fn._cscope=_7a;
376
return AJS._getRealScope(fn,_7b,_7c,_7d);
377
},forceArray:function(_7e){
378
var r=[];
379
AJS.map(_7e,function(elm){
380
r.push(elm);
381
});
382
return r;
383
},update:function(l1,l2){
384
for(var i in l2){
385
l1[i]=l2[i];
386
}
387
return l1;
388
},getBody:function(){
389
return AJS.$bytc("body")[0];
390
},HTML2DOM:function(_84,_85){
391
var d=AJS.DIV();
392
d.innerHTML=_84;
393
if(_85){
394
return d.childNodes[0];
395
}else{
396
return d;
397
}
398
},getElement:function(id){
399
if(AJS.isString(id)||AJS.isNumber(id)){
400
return document.getElementById(id);
401
}else{
402
return id;
403
}
404
},showElement:function(){
405
var _88=AJS.forceArray(arguments);
406
AJS.map(_88,function(elm){
407
elm.style.display="";
408
});
409
},swapDOM:function(_8a,src){
410
_8a=AJS.getElement(_8a);
411
var _8c=_8a.parentNode;
412
if(src){
413
src=AJS.getElement(src);
414
_8c.replaceChild(src,_8a);
415
}else{
416
_8c.removeChild(_8a);
417
}
418
return src;
419
},isIn:function(elm,_8e){
420
var i=AJS.getIndex(elm,_8e);
421
if(i!=-1){
422
return true;
423
}else{
424
return false;
425
}
426
}};
427
AJS.$=AJS.getElement;
428
AJS.$$=AJS.getElements;
429
AJS.$f=AJS.getFormElement;
430
AJS.$p=AJS.partial;
431
AJS.$b=AJS.bind;
432
AJS.$A=AJS.createArray;
433
AJS.DI=AJS.documentInsert;
434
AJS.ACN=AJS.appendChildNodes;
435
AJS.RCN=AJS.replaceChildNodes;
436
AJS.AEV=AJS.addEventListener;
437
AJS.REV=AJS.removeEventListener;
438
AJS.$bytc=AJS.getElementsByTagAndClassName;
439
AJS.addEventListener(window,"unload",AJS._unloadListeners);
440
AJS._createDomShortcuts();
441
AJS.Class=function(_90){
442
var fn=function(){
443
if(arguments[0]!="no_init"){
444
return this.init.apply(this,arguments);
445
}
446
};
447
fn.prototype=_90;
448
AJS.update(fn,AJS.Class.prototype);
449
return fn;
450
};
451
AJS.Class.prototype={extend:function(_92){
452
var _93=new this("no_init");
453
for(k in _92){
454
var _94=_93[k];
455
var cur=_92[k];
456
if(_94&&_94!=cur&&typeof cur=="function"){
457
cur=this._parentize(cur,_94);
458
}
459
_93[k]=cur;
460
}
461
return new AJS.Class(_93);
462
},implement:function(_96){
463
AJS.update(this.prototype,_96);
464
},_parentize:function(cur,_98){
465
return function(){
466
this.parent=_98;
467
return cur.apply(this,arguments);
468
};
469
}};
470
AJS.$=AJS.getElement;
471
AJS.$$=AJS.getElements;
472
AJS.$f=AJS.getFormElement;
473
AJS.$b=AJS.bind;
474
AJS.$p=AJS.partial;
475
AJS.$FA=AJS.forceArray;
476
AJS.$A=AJS.createArray;
477
AJS.DI=AJS.documentInsert;
478
AJS.ACN=AJS.appendChildNodes;
479
AJS.RCN=AJS.replaceChildNodes;
480
AJS.AEV=AJS.addEventListener;
481
AJS.REV=AJS.removeEventListener;
482
AJS.$bytc=AJS.getElementsByTagAndClassName;
483
AJSDeferred=function(req){
484
this.callbacks=[];
485
this.errbacks=[];
486
this.req=req;
487
};
488
AJSDeferred.prototype={excCallbackSeq:function(req,_9b){
489
var _9c=req.responseText;
490
while(_9b.length>0){
491
var fn=_9b.pop();
492
var _9e=fn(_9c,req);
493
if(_9e){
494
_9c=_9e;
495
}
496
}
497
},callback:function(){
498
this.excCallbackSeq(this.req,this.callbacks);
499
},errback:function(){
500
if(this.errbacks.length==0){
501
alert("Error encountered:\n"+this.req.responseText);
502
}
503
this.excCallbackSeq(this.req,this.errbacks);
504
},addErrback:function(fn){
505
this.errbacks.unshift(fn);
506
},addCallback:function(fn){
507
this.callbacks.unshift(fn);
508
},addCallbacks:function(fn1,fn2){
509
this.addCallback(fn1);
510
this.addErrback(fn2);
511
},sendReq:function(_a3){
512
if(AJS.isObject(_a3)){
513
this.req.send(AJS.queryArguments(_a3));
514
}else{
515
if(AJS.isDefined(_a3)){
516
this.req.send(_a3);
517
}else{
518
this.req.send("");
519
}
520
}
521
}};
522
script_loaded=true;
523
524
525
script_loaded=true;
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/AJS_fx.js (-136 lines)
Lines 1-136 Link Here
1
AJS.fx={_shades:{0:"ffffff",1:"ffffee",2:"ffffdd",3:"ffffcc",4:"ffffbb",5:"ffffaa",6:"ffff99"},highlight:function(_1,_2){
2
var _3=new AJS.fx.Base();
3
_3.elm=AJS.$(_1);
4
_3.setOptions(_2);
5
_3.options.duration=600;
6
AJS.update(_3,{increase:function(){
7
if(this.now==7){
8
_1.style.backgroundColor="transparent";
9
}else{
10
_1.style.backgroundColor="#"+AJS.fx._shades[Math.floor(this.now)];
11
}
12
}});
13
return _3.custom(6,0);
14
},fadeIn:function(_4,_5){
15
_5=_5||{};
16
if(!_5.from){
17
_5.from=0;
18
AJS.setOpacity(_4,0);
19
}
20
if(!_5.to){
21
_5.to=1;
22
}
23
var s=new AJS.fx.Style(_4,"opacity",_5);
24
return s.custom(_5.from,_5.to);
25
},fadeOut:function(_7,_8){
26
_8=_8||{};
27
if(!_8.from){
28
_8.from=1;
29
}
30
if(!_8.to){
31
_8.to=0;
32
}
33
_8.duration=300;
34
var s=new AJS.fx.Style(_7,"opacity",_8);
35
return s.custom(_8.from,_8.to);
36
},setWidth:function(_a,_b){
37
var s=new AJS.fx.Style(_a,"width",_b);
38
return s.custom(_b.from,_b.to);
39
},setHeight:function(_d,_e){
40
var s=new AJS.fx.Style(_d,"height",_e);
41
return s.custom(_e.from,_e.to);
42
}};
43
AJS.fx.Base=new AJS.Class({init:function(){
44
AJS.bindMethods(this);
45
},setOptions:function(_10){
46
this.options=AJS.update({onStart:function(){
47
},onComplete:function(){
48
},transition:AJS.fx.Transitions.sineInOut,duration:500,wait:true,fps:50},_10||{});
49
},step:function(){
50
var _11=new Date().getTime();
51
if(_11<this.time+this.options.duration){
52
this.cTime=_11-this.time;
53
this.setNow();
54
}else{
55
setTimeout(AJS.$b(this.options.onComplete,this,[this.elm]),10);
56
this.clearTimer();
57
this.now=this.to;
58
}
59
this.increase();
60
},setNow:function(){
61
this.now=this.compute(this.from,this.to);
62
},compute:function(_12,to){
63
var _14=to-_12;
64
return this.options.transition(this.cTime,_12,_14,this.options.duration);
65
},clearTimer:function(){
66
clearInterval(this.timer);
67
this.timer=null;
68
return this;
69
},_start:function(_15,to){
70
if(!this.options.wait){
71
this.clearTimer();
72
}
73
if(this.timer){
74
return;
75
}
76
setTimeout(AJS.$p(this.options.onStart,this.elm),10);
77
this.from=_15;
78
this.to=to;
79
this.time=new Date().getTime();
80
this.timer=setInterval(this.step,Math.round(1000/this.options.fps));
81
return this;
82
},custom:function(_17,to){
83
return this._start(_17,to);
84
},set:function(to){
85
this.now=to;
86
this.increase();
87
return this;
88
},setStyle:function(elm,_1b,val){
89
if(this.property=="opacity"){
90
AJS.setOpacity(elm,val);
91
}else{
92
AJS.setStyle(elm,_1b,val);
93
}
94
}});
95
AJS.fx.Style=AJS.fx.Base.extend({init:function(elm,_1e,_1f){
96
this.parent();
97
this.elm=elm;
98
this.setOptions(_1f);
99
this.property=_1e;
100
},increase:function(){
101
this.setStyle(this.elm,this.property,this.now);
102
}});
103
AJS.fx.Styles=AJS.fx.Base.extend({init:function(elm,_21){
104
this.parent();
105
this.elm=AJS.$(elm);
106
this.setOptions(_21);
107
this.now={};
108
},setNow:function(){
109
for(p in this.from){
110
this.now[p]=this.compute(this.from[p],this.to[p]);
111
}
112
},custom:function(obj){
113
if(this.timer&&this.options.wait){
114
return;
115
}
116
var _23={};
117
var to={};
118
for(p in obj){
119
_23[p]=obj[p][0];
120
to[p]=obj[p][1];
121
}
122
return this._start(_23,to);
123
},increase:function(){
124
for(var p in this.now){
125
this.setStyle(this.elm,p,this.now[p]);
126
}
127
}});
128
AJS.fx.Transitions={linear:function(t,b,c,d){
129
return c*t/d+b;
130
},sineInOut:function(t,b,c,d){
131
return -c/2*(Math.cos(Math.PI*t/d)-1)+b;
132
}};
133
script_loaded=true;
134
135
136
script_loaded=true;
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/LGPL.txt (-502 lines)
Lines 1-502 Link Here
1
                  GNU LESSER GENERAL PUBLIC LICENSE
2
                   Version 2.1, February 1999
3
4
 Copyright (C) 1991, 1999 Free Software Foundation, Inc.
5
     51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
6
 Everyone is permitted to copy and distribute verbatim copies
7
 of this license document, but changing it is not allowed.
8
9
[This is the first released version of the Lesser GPL.  It also counts
10
 as the successor of the GNU Library Public License, version 2, hence
11
 the version number 2.1.]
12
13
                        Preamble
14
15
  The licenses for most software are designed to take away your
16
freedom to share and change it.  By contrast, the GNU General Public
17
Licenses are intended to guarantee your freedom to share and change
18
free software--to make sure the software is free for all its users.
19
20
  This license, the Lesser General Public License, applies to some
21
specially designated software packages--typically libraries--of the
22
Free Software Foundation and other authors who decide to use it.  You
23
can use it too, but we suggest you first think carefully about whether
24
this license or the ordinary General Public License is the better
25
strategy to use in any particular case, based on the explanations below.
26
27
  When we speak of free software, we are referring to freedom of use,
28
not price.  Our General Public Licenses are designed to make sure that
29
you have the freedom to distribute copies of free software (and charge
30
for this service if you wish); that you receive source code or can get
31
it if you want it; that you can change the software and use pieces of
32
it in new free programs; and that you are informed that you can do
33
these things.
34
35
  To protect your rights, we need to make restrictions that forbid
36
distributors to deny you these rights or to ask you to surrender these
37
rights.  These restrictions translate to certain responsibilities for
38
you if you distribute copies of the library or if you modify it.
39
40
  For example, if you distribute copies of the library, whether gratis
41
or for a fee, you must give the recipients all the rights that we gave
42
you.  You must make sure that they, too, receive or can get the source
43
code.  If you link other code with the library, you must provide
44
complete object files to the recipients, so that they can relink them
45
with the library after making changes to the library and recompiling
46
it.  And you must show them these terms so they know their rights.
47
48
  We protect your rights with a two-step method: (1) we copyright the
49
library, and (2) we offer you this license, which gives you legal
50
permission to copy, distribute and/or modify the library.
51
52
  To protect each distributor, we want to make it very clear that
53
there is no warranty for the free library.  Also, if the library is
54
modified by someone else and passed on, the recipients should know
55
that what they have is not the original version, so that the original
56
author's reputation will not be affected by problems that might be
57
introduced by others.
58
59
  Finally, software patents pose a constant threat to the existence of
60
any free program.  We wish to make sure that a company cannot
61
effectively restrict the users of a free program by obtaining a
62
restrictive license from a patent holder.  Therefore, we insist that
63
any patent license obtained for a version of the library must be
64
consistent with the full freedom of use specified in this license.
65
66
  Most GNU software, including some libraries, is covered by the
67
ordinary GNU General Public License.  This license, the GNU Lesser
68
General Public License, applies to certain designated libraries, and
69
is quite different from the ordinary General Public License.  We use
70
this license for certain libraries in order to permit linking those
71
libraries into non-free programs.
72
73
  When a program is linked with a library, whether statically or using
74
a shared library, the combination of the two is legally speaking a
75
combined work, a derivative of the original library.  The ordinary
76
General Public License therefore permits such linking only if the
77
entire combination fits its criteria of freedom.  The Lesser General
78
Public License permits more lax criteria for linking other code with
79
the library.
80
81
  We call this license the "Lesser" General Public License because it
82
does Less to protect the user's freedom than the ordinary General
83
Public License.  It also provides other free software developers Less
84
of an advantage over competing non-free programs.  These disadvantages
85
are the reason we use the ordinary General Public License for many
86
libraries.  However, the Lesser license provides advantages in certain
87
special circumstances.
88
89
  For example, on rare occasions, there may be a special need to
90
encourage the widest possible use of a certain library, so that it becomes
91
a de-facto standard.  To achieve this, non-free programs must be
92
allowed to use the library.  A more frequent case is that a free
93
library does the same job as widely used non-free libraries.  In this
94
case, there is little to gain by limiting the free library to free
95
software only, so we use the Lesser General Public License.
96
97
  In other cases, permission to use a particular library in non-free
98
programs enables a greater number of people to use a large body of
99
free software.  For example, permission to use the GNU C Library in
100
non-free programs enables many more people to use the whole GNU
101
operating system, as well as its variant, the GNU/Linux operating
102
system.
103
104
  Although the Lesser General Public License is Less protective of the
105
users' freedom, it does ensure that the user of a program that is
106
linked with the Library has the freedom and the wherewithal to run
107
that program using a modified version of the Library.
108
109
  The precise terms and conditions for copying, distribution and
110
modification follow.  Pay close attention to the difference between a
111
"work based on the library" and a "work that uses the library".  The
112
former contains code derived from the library, whereas the latter must
113
be combined with the library in order to run.
114
115
            GNU LESSER GENERAL PUBLIC LICENSE
116
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
117
118
  0. This License Agreement applies to any software library or other
119
program which contains a notice placed by the copyright holder or
120
other authorized party saying it may be distributed under the terms of
121
this Lesser General Public License (also called "this License").
122
Each licensee is addressed as "you".
123
124
  A "library" means a collection of software functions and/or data
125
prepared so as to be conveniently linked with application programs
126
(which use some of those functions and data) to form executables.
127
128
  The "Library", below, refers to any such software library or work
129
which has been distributed under these terms.  A "work based on the
130
Library" means either the Library or any derivative work under
131
copyright law: that is to say, a work containing the Library or a
132
portion of it, either verbatim or with modifications and/or translated
133
straightforwardly into another language.  (Hereinafter, translation is
134
included without limitation in the term "modification".)
135
136
  "Source code" for a work means the preferred form of the work for
137
making modifications to it.  For a library, complete source code means
138
all the source code for all modules it contains, plus any associated
139
interface definition files, plus the scripts used to control compilation
140
and installation of the library.
141
142
  Activities other than copying, distribution and modification are not
143
covered by this License; they are outside its scope.  The act of
144
running a program using the Library is not restricted, and output from
145
such a program is covered only if its contents constitute a work based
146
on the Library (independent of the use of the Library in a tool for
147
writing it).  Whether that is true depends on what the Library does
148
and what the program that uses the Library does.
149
150
  1. You may copy and distribute verbatim copies of the Library's
151
complete source code as you receive it, in any medium, provided that
152
you conspicuously and appropriately publish on each copy an
153
appropriate copyright notice and disclaimer of warranty; keep intact
154
all the notices that refer to this License and to the absence of any
155
warranty; and distribute a copy of this License along with the
156
Library.
157
158
  You may charge a fee for the physical act of transferring a copy,
159
and you may at your option offer warranty protection in exchange for a
160
fee.
161
162
  2. You may modify your copy or copies of the Library or any portion
163
of it, thus forming a work based on the Library, and copy and
164
distribute such modifications or work under the terms of Section 1
165
above, provided that you also meet all of these conditions:
166
167
    a) The modified work must itself be a software library.
168
169
    b) You must cause the files modified to carry prominent notices
170
    stating that you changed the files and the date of any change.
171
172
    c) You must cause the whole of the work to be licensed at no
173
    charge to all third parties under the terms of this License.
174
175
    d) If a facility in the modified Library refers to a function or a
176
    table of data to be supplied by an application program that uses
177
    the facility, other than as an argument passed when the facility
178
    is invoked, then you must make a good faith effort to ensure that,
179
    in the event an application does not supply such function or
180
    table, the facility still operates, and performs whatever part of
181
    its purpose remains meaningful.
182
183
    (For example, a function in a library to compute square roots has
184
    a purpose that is entirely well-defined independent of the
185
    application.  Therefore, Subsection 2d requires that any
186
    application-supplied function or table used by this function must
187
    be optional: if the application does not supply it, the square
188
    root function must still compute square roots.)
189
190
These requirements apply to the modified work as a whole.  If
191
identifiable sections of that work are not derived from the Library,
192
and can be reasonably considered independent and separate works in
193
themselves, then this License, and its terms, do not apply to those
194
sections when you distribute them as separate works.  But when you
195
distribute the same sections as part of a whole which is a work based
196
on the Library, the distribution of the whole must be on the terms of
197
this License, whose permissions for other licensees extend to the
198
entire whole, and thus to each and every part regardless of who wrote
199
it.
200
201
Thus, it is not the intent of this section to claim rights or contest
202
your rights to work written entirely by you; rather, the intent is to
203
exercise the right to control the distribution of derivative or
204
collective works based on the Library.
205
206
In addition, mere aggregation of another work not based on the Library
207
with the Library (or with a work based on the Library) on a volume of
208
a storage or distribution medium does not bring the other work under
209
the scope of this License.
210
211
  3. You may opt to apply the terms of the ordinary GNU General Public
212
License instead of this License to a given copy of the Library.  To do
213
this, you must alter all the notices that refer to this License, so
214
that they refer to the ordinary GNU General Public License, version 2,
215
instead of to this License.  (If a newer version than version 2 of the
216
ordinary GNU General Public License has appeared, then you can specify
217
that version instead if you wish.)  Do not make any other change in
218
these notices.
219
220
  Once this change is made in a given copy, it is irreversible for
221
that copy, so the ordinary GNU General Public License applies to all
222
subsequent copies and derivative works made from that copy.
223
224
  This option is useful when you wish to copy part of the code of
225
the Library into a program that is not a library.
226
227
  4. You may copy and distribute the Library (or a portion or
228
derivative of it, under Section 2) in object code or executable form
229
under the terms of Sections 1 and 2 above provided that you accompany
230
it with the complete corresponding machine-readable source code, which
231
must be distributed under the terms of Sections 1 and 2 above on a
232
medium customarily used for software interchange.
233
234
  If distribution of object code is made by offering access to copy
235
from a designated place, then offering equivalent access to copy the
236
source code from the same place satisfies the requirement to
237
distribute the source code, even though third parties are not
238
compelled to copy the source along with the object code.
239
240
  5. A program that contains no derivative of any portion of the
241
Library, but is designed to work with the Library by being compiled or
242
linked with it, is called a "work that uses the Library".  Such a
243
work, in isolation, is not a derivative work of the Library, and
244
therefore falls outside the scope of this License.
245
246
  However, linking a "work that uses the Library" with the Library
247
creates an executable that is a derivative of the Library (because it
248
contains portions of the Library), rather than a "work that uses the
249
library".  The executable is therefore covered by this License.
250
Section 6 states terms for distribution of such executables.
251
252
  When a "work that uses the Library" uses material from a header file
253
that is part of the Library, the object code for the work may be a
254
derivative work of the Library even though the source code is not.
255
Whether this is true is especially significant if the work can be
256
linked without the Library, or if the work is itself a library.  The
257
threshold for this to be true is not precisely defined by law.
258
259
  If such an object file uses only numerical parameters, data
260
structure layouts and accessors, and small macros and small inline
261
functions (ten lines or less in length), then the use of the object
262
file is unrestricted, regardless of whether it is legally a derivative
263
work.  (Executables containing this object code plus portions of the
264
Library will still fall under Section 6.)
265
266
  Otherwise, if the work is a derivative of the Library, you may
267
distribute the object code for the work under the terms of Section 6.
268
Any executables containing that work also fall under Section 6,
269
whether or not they are linked directly with the Library itself.
270
271
  6. As an exception to the Sections above, you may also combine or
272
link a "work that uses the Library" with the Library to produce a
273
work containing portions of the Library, and distribute that work
274
under terms of your choice, provided that the terms permit
275
modification of the work for the customer's own use and reverse
276
engineering for debugging such modifications.
277
278
  You must give prominent notice with each copy of the work that the
279
Library is used in it and that the Library and its use are covered by
280
this License.  You must supply a copy of this License.  If the work
281
during execution displays copyright notices, you must include the
282
copyright notice for the Library among them, as well as a reference
283
directing the user to the copy of this License.  Also, you must do one
284
of these things:
285
286
    a) Accompany the work with the complete corresponding
287
    machine-readable source code for the Library including whatever
288
    changes were used in the work (which must be distributed under
289
    Sections 1 and 2 above); and, if the work is an executable linked
290
    with the Library, with the complete machine-readable "work that
291
    uses the Library", as object code and/or source code, so that the
292
    user can modify the Library and then relink to produce a modified
293
    executable containing the modified Library.  (It is understood
294
    that the user who changes the contents of definitions files in the
295
    Library will not necessarily be able to recompile the application
296
    to use the modified definitions.)
297
298
    b) Use a suitable shared library mechanism for linking with the
299
    Library.  A suitable mechanism is one that (1) uses at run time a
300
    copy of the library already present on the user's computer system,
301
    rather than copying library functions into the executable, and (2)
302
    will operate properly with a modified version of the library, if
303
    the user installs one, as long as the modified version is
304
    interface-compatible with the version that the work was made with.
305
306
    c) Accompany the work with a written offer, valid for at
307
    least three years, to give the same user the materials
308
    specified in Subsection 6a, above, for a charge no more
309
    than the cost of performing this distribution.
310
311
    d) If distribution of the work is made by offering access to copy
312
    from a designated place, offer equivalent access to copy the above
313
    specified materials from the same place.
314
315
    e) Verify that the user has already received a copy of these
316
    materials or that you have already sent this user a copy.
317
318
  For an executable, the required form of the "work that uses the
319
Library" must include any data and utility programs needed for
320
reproducing the executable from it.  However, as a special exception,
321
the materials to be distributed need not include anything that is
322
normally distributed (in either source or binary form) with the major
323
components (compiler, kernel, and so on) of the operating system on
324
which the executable runs, unless that component itself accompanies
325
the executable.
326
327
  It may happen that this requirement contradicts the license
328
restrictions of other proprietary libraries that do not normally
329
accompany the operating system.  Such a contradiction means you cannot
330
use both them and the Library together in an executable that you
331
distribute.
332
333
  7. You may place library facilities that are a work based on the
334
Library side-by-side in a single library together with other library
335
facilities not covered by this License, and distribute such a combined
336
library, provided that the separate distribution of the work based on
337
the Library and of the other library facilities is otherwise
338
permitted, and provided that you do these two things:
339
340
    a) Accompany the combined library with a copy of the same work
341
    based on the Library, uncombined with any other library
342
    facilities.  This must be distributed under the terms of the
343
    Sections above.
344
345
    b) Give prominent notice with the combined library of the fact
346
    that part of it is a work based on the Library, and explaining
347
    where to find the accompanying uncombined form of the same work.
348
349
  8. You may not copy, modify, sublicense, link with, or distribute
350
the Library except as expressly provided under this License.  Any
351
attempt otherwise to copy, modify, sublicense, link with, or
352
distribute the Library is void, and will automatically terminate your
353
rights under this License.  However, parties who have received copies,
354
or rights, from you under this License will not have their licenses
355
terminated so long as such parties remain in full compliance.
356
357
  9. You are not required to accept this License, since you have not
358
signed it.  However, nothing else grants you permission to modify or
359
distribute the Library or its derivative works.  These actions are
360
prohibited by law if you do not accept this License.  Therefore, by
361
modifying or distributing the Library (or any work based on the
362
Library), you indicate your acceptance of this License to do so, and
363
all its terms and conditions for copying, distributing or modifying
364
the Library or works based on it.
365
366
  10. Each time you redistribute the Library (or any work based on the
367
Library), the recipient automatically receives a license from the
368
original licensor to copy, distribute, link with or modify the Library
369
subject to these terms and conditions.  You may not impose any further
370
restrictions on the recipients' exercise of the rights granted herein.
371
You are not responsible for enforcing compliance by third parties with
372
this License.
373
374
  11. If, as a consequence of a court judgment or allegation of patent
375
infringement or for any other reason (not limited to patent issues),
376
conditions are imposed on you (whether by court order, agreement or
377
otherwise) that contradict the conditions of this License, they do not
378
excuse you from the conditions of this License.  If you cannot
379
distribute so as to satisfy simultaneously your obligations under this
380
License and any other pertinent obligations, then as a consequence you
381
may not distribute the Library at all.  For example, if a patent
382
license would not permit royalty-free redistribution of the Library by
383
all those who receive copies directly or indirectly through you, then
384
the only way you could satisfy both it and this License would be to
385
refrain entirely from distribution of the Library.
386
387
If any portion of this section is held invalid or unenforceable under any
388
particular circumstance, the balance of the section is intended to apply,
389
and the section as a whole is intended to apply in other circumstances.
390
391
It is not the purpose of this section to induce you to infringe any
392
patents or other property right claims or to contest validity of any
393
such claims; this section has the sole purpose of protecting the
394
integrity of the free software distribution system which is
395
implemented by public license practices.  Many people have made
396
generous contributions to the wide range of software distributed
397
through that system in reliance on consistent application of that
398
system; it is up to the author/donor to decide if he or she is willing
399
to distribute software through any other system and a licensee cannot
400
impose that choice.
401
402
This section is intended to make thoroughly clear what is believed to
403
be a consequence of the rest of this License.
404
405
  12. If the distribution and/or use of the Library is restricted in
406
certain countries either by patents or by copyrighted interfaces, the
407
original copyright holder who places the Library under this License may add
408
an explicit geographical distribution limitation excluding those countries,
409
so that distribution is permitted only in or among countries not thus
410
excluded.  In such case, this License incorporates the limitation as if
411
written in the body of this License.
412
413
  13. The Free Software Foundation may publish revised and/or new
414
versions of the Lesser General Public License from time to time.
415
Such new versions will be similar in spirit to the present version,
416
but may differ in detail to address new problems or concerns.
417
418
Each version is given a distinguishing version number.  If the Library
419
specifies a version number of this License which applies to it and
420
"any later version", you have the option of following the terms and
421
conditions either of that version or of any later version published by
422
the Free Software Foundation.  If the Library does not specify a
423
license version number, you may choose any version ever published by
424
the Free Software Foundation.
425
426
  14. If you wish to incorporate parts of the Library into other free
427
programs whose distribution conditions are incompatible with these,
428
write to the author to ask for permission.  For software which is
429
copyrighted by the Free Software Foundation, write to the Free
430
Software Foundation; we sometimes make exceptions for this.  Our
431
decision will be guided by the two goals of preserving the free status
432
of all derivatives of our free software and of promoting the sharing
433
and reuse of software generally.
434
435
                          NO WARRANTY
436
437
  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
438
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
439
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
440
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
441
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
442
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
443
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
444
LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
445
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
446
447
  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
448
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
449
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
450
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
451
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
452
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
453
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
454
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
455
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
456
DAMAGES.
457
458
                END OF TERMS AND CONDITIONS
459
460
           How to Apply These Terms to Your New Libraries
461
462
  If you develop a new library, and you want it to be of the greatest
463
possible use to the public, we recommend making it free software that
464
everyone can redistribute and change.  You can do so by permitting
465
redistribution under these terms (or, alternatively, under the terms of the
466
ordinary General Public License).
467
468
  To apply these terms, attach the following notices to the library.  It is
469
safest to attach them to the start of each source file to most effectively
470
convey the exclusion of warranty; and each file should have at least the
471
"copyright" line and a pointer to where the full notice is found.
472
473
    <one line to give the library's name and a brief idea of what it does.>
474
    Copyright (C) <year>  <name of author>
475
476
    This library is free software; you can redistribute it and/or
477
    modify it under the terms of the GNU Lesser General Public
478
    License as published by the Free Software Foundation; either
479
    version 2.1 of the License, or (at your option) any later version.
480
481
    This library is distributed in the hope that it will be useful,
482
    but WITHOUT ANY WARRANTY; without even the implied warranty of
483
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
484
    Lesser General Public License for more details.
485
486
    You should have received a copy of the GNU Lesser General Public
487
    License along with this library; if not, write to the Free Software
488
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
489
490
Also add information on how to contact you by electronic and paper mail.
491
492
You should also get your employer (if you work as a programmer) or your
493
school, if any, to sign a "copyright disclaimer" for the library, if
494
necessary.  Here is a sample; alter the names:
495
496
  Yoyodyne, Inc., hereby disclaims all copyright interest in the
497
  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
498
499
  <signature of Ty Coon>, 1 April 1990
500
  Ty Coon, President of Vice
501
502
That's all there is to it!
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/about.html (-50 lines)
Lines 1-50 Link Here
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
3
<head>
4
    <title>GreyBox - About</title>
5
6
    <script type="text/javascript">
7
        var GB_ROOT_DIR = "./greybox/";
8
    </script>
9
10
    <script type="text/javascript" src="greybox/AJS.js"></script>
11
    <script type="text/javascript" src="greybox/AJS_fx.js"></script>
12
    <script type="text/javascript" src="greybox/gb_scripts.js"></script>
13
    <link href="greybox/gb_styles.css" rel="stylesheet" type="text/css" media="all" />
14
15
    <script type="text/javascript" src="static_files/help.js"></script>
16
    <link href="static_files/help.css" rel="stylesheet" type="text/css" media="all" />
17
</head>
18
19
<body>
20
21
<script>
22
    insertHeader();
23
    insertMenu('about');
24
</script>
25
26
<p>
27
GreyBox is copyrighted work by <a href="http://amix.dk/">Amir Salihefendic</a>.
28
</p>
29
30
<p>
31
It is based on <a href="http://orangoo.com/labs/AJS/">AJS</a> JavaScript library.
32
</p>
33
34
<p>
35
It is realesed under <a href="LGPL.txt">LGPL</a>.
36
</p>
37
38
<h3>Links</h3>
39
<ul>
40
    <li> <a href="http://orangoo.com/labs/GreyBox/">GreyBox official site</a> </li>
41
</ul>
42
43
<h3>Need help?</h3>
44
<ul>
45
    <li><a href="http://groups.google.com/group/greybox">GreyBox Google group</a> - A group where you can ask questions and get answers</li>
46
    <li><a href="http://orangoo.com/labs/GreyBox/FAQ/">GreyBox FAQ</a> -Frequently Asked Questions about GreyBox</li>
47
</ul>
48
49
</body>
50
</html>
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/advance_usage.html (-182 lines)
Lines 1-182 Link Here
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
3
<head>
4
    <title>GreyBox - Advance usage</title>
5
6
    <script type="text/javascript">
7
        var GB_ROOT_DIR = "./greybox/";
8
    </script>
9
10
    <script type="text/javascript" src="greybox/AJS.js"></script>
11
    <script type="text/javascript" src="greybox/AJS_fx.js"></script>
12
    <script type="text/javascript" src="greybox/gb_scripts.js"></script>
13
    <link href="greybox/gb_styles.css" rel="stylesheet" type="text/css" media="all" />
14
15
    <script type="text/javascript" src="static_files/help.js"></script>
16
    <link href="static_files/help.css" rel="stylesheet" type="text/css" media="all" />
17
</head>
18
<body>
19
20
<script>
21
insertHeader();
22
insertMenu('adv_usage');
23
</script>
24
25
<h2>Methods for showing windows</h2>
26
27
<h3 class="first">GB_show</h3>
28
29
<h4>Signature:</h4>
30
<script>
31
insertCode(
32
    'GB_show(caption, url, /*optional*/ height, width, callback_fn)'
33
);
34
</script>
35
36
<h4>Example:</h4>
37
<script>
38
insertCode(
39
    '<a href="http://google.com/" onclick="return GB_show(\'Google\', this.href)">Visit Google</a>'
40
);
41
</script>
42
43
<h4>Example rendered:</h4>
44
<a href="http://google.com/" onclick="return GB_show('Google', this.href)">Visit Google</a>
45
46
47
<h3>GB_showCenter</h3>
48
49
<h4>Signature:</h4>
50
<script>
51
insertCode(
52
    'GB_showCenter(caption, url, /* optional */ height, width, callback_fn)'
53
);
54
</script>
55
56
<h4>Example:</h4>
57
<script>
58
insertCode(
59
    '<a href="http://google.com/" onclick="return GB_showCenter(\'Google\', this.href)">Visit Google</a>'
60
);
61
</script>
62
63
<h4>Example rendered:</h4>
64
<a href="http://google.com/" onclick="return GB_showCenter('Google', this.href)">Visit Google</a>
65
66
67
<h3>GB_showFullScreen</h3>
68
69
<h4>Signature:</h4>
70
<script>
71
insertCode(
72
    'GB_showFullScreen(caption, url, callback_fn)'
73
);
74
</script>
75
76
<h4>Example:</h4>
77
<script>
78
insertCode(
79
    '<a href="http://google.com/" onclick="return GB_showFullScreen(\'Google\', this.href)">Visit Google</a>'
80
);
81
</script>
82
83
<h4>Example rendered:</h4>
84
<a href="http://google.com/" onclick="return GB_showFullScreen('Google', this.href)">Visit Google</a>
85
86
<h2>Methods for showing overlays</h2>
87
88
<h3 class="first">GB_showImage</h3>
89
<h4>Signature:</h4>
90
<script>
91
insertCode(
92
    'GB_showImage(caption, url, callback_fn)'
93
);
94
</script>
95
96
<h4>Example:</h4>
97
<script>
98
insertCode(
99
        '<a href="http://static.flickr.com/119/294309231_a3d2a339b9.jpg"\n'+
100
        'onclick="return GB_showImage(\'Flower\', this.href)">A flower in my hand</a>'
101
);
102
</script>
103
104
<h4>Example rendered:</h4>
105
<a href="http://static.flickr.com/119/294309231_a3d2a339b9.jpg" onclick="return GB_showImage('Flower', this.href)">A flower in my hand</a>
106
107
<h3>GB_showPage</h3>
108
<h4>Signature:</h4>
109
<script>
110
insertCode(
111
    'GB_showPage(caption, url, callback_fn)'
112
);
113
</script>
114
115
<h4>Example:</h4>
116
<script>
117
insertCode(
118
    '<a href="http://google.com" onclick="return GB_showPage(\'Google\', this.href)">Show Google in another layout</a>'
119
);
120
</script>
121
122
<h4>Example rendered:</h4>
123
<a href="http://google.com" onclick="return GB_showPage('Google', this.href)">Show Google in another layout</a>
124
125
126
<h2>Methods for showing sets</h2>
127
128
<h3 class="first">GB_showFullScreenSet</h3>
129
<h4>Signature:</h4>
130
<script>
131
insertCode(
132
    'GB_showFullScreenSet(set, start_index, callback_fn)'
133
);
134
</script>
135
136
<h4>Example:</h4>
137
<script>
138
insertCode(
139
    "<script>",
140
    "var page_set = [{'caption': 'Google', 'url': 'http://google.com/'},",
141
    "    {'caption': 'Yahoo', 'url': 'http://yahoo.com/'}];",
142
    "<\/script>",
143
    '<a href="#" onclick="return GB_showFullScreenSet(page_set, 1)">Show first page in page_set</a>'
144
);
145
</script>
146
147
<h4>Example rendered:</h4>
148
<script>
149
var page_set = [{'caption': 'Google', 'url': 'http://google.com/'},
150
    {'caption': 'Yahoo', 'url': 'http://yahoo.com/'}];
151
</script>
152
<a href="#" onclick="return GB_showFullScreenSet(page_set, 1)">Show first page in page_set</a>
153
154
<h3>GB_showImageSet</h3>
155
<h4>Signature:</h4>
156
<script>
157
insertCode(
158
    'GB_showImageSet(set, start_index, callback_fn)'
159
);
160
</script>
161
162
<h4>Example:</h4>
163
<script>
164
insertCode(
165
    "<script>",
166
    "var image_set = [{'caption': 'Flower', 'url': 'http://static.flickr.com/119/294309231_a3d2a339b9.jpg'},",
167
    "    {'caption': 'Nice waterfall', 'url': 'http://www.widerange.org/images/large/plitvicka.jpg'}];",
168
    "<\/script>",
169
    '<a href="#" onclick="return GB_showImageSet(image_set, 1)">Show first picture in image_set</a>'
170
);
171
</script>
172
173
<h4>Example rendered:</h4>
174
<script>
175
var image_set = [{'caption': 'Flower', 'url': 'http://static.flickr.com/119/294309231_a3d2a339b9.jpg'},
176
    {'caption': 'Nice waterfall', 'url': 'http://www.widerange.org/images/large/plitvicka.jpg'}];
177
</script>
178
<a href="#" onclick="return GB_showImageSet(image_set, 1)">Show first picture in image_set</a>
179
180
181
</body>
182
</html>
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/combiner.py (-134 lines)
Lines 1-134 Link Here
1
#!/usr/bin/env python
2
"""
3
Used to combine the different parts of GreyBox.
4
- Python 2.4 required
5
- Java 1.4+ required
6
- Dojo's JavaScript compressor (http://dojotoolkit.org/docs/compressor_system.html). Place it under compression_lib/custom_rhino.jar
7
"""
8
import os, sys, shutil
9
from compression_lib import AJS_minify
10
11
12
if __name__ == '__main__':
13
    args = sys.argv
14
15
    if len(args) < 2:
16
        print """
17
Usage is:
18
    python combiner.py [full|gallery|window]
19
Example usage:
20
    python combiner.py full
21
The files will be store in greybox_dist/* depending on the dist. type
22
"""
23
        sys.exit(0)
24
25
    type = args[1]
26
    output_dir = 'greybox'
27
28
    ##
29
    # Config file list
30
    #
31
    js = []
32
    css = []
33
    static = []
34
35
    append = lambda l, x: l.append('greybox_source/%s' % x)
36
37
    def appendBase():
38
        append(js, 'base/base.js')
39
        append(js, 'auto_deco.js')
40
        append(css, 'base/base.css')
41
        append(static, 'base/indicator.gif')
42
        append(static, 'base/loader_frame.html')
43
44
    def appendSet():
45
        append(js, 'set/set.js')
46
        append(css, 'set/set.css')
47
        append(static, 'set/next.gif')
48
        append(static, 'set/prev.gif')
49
50
    def appendGallery():
51
        append(js, 'gallery/gallery.js')
52
        append(css, 'gallery/gallery.css')
53
        append(static, 'gallery/g_close.gif')
54
55
    def appendWindow():
56
        append(js, 'window/window.js')
57
        append(css, 'window/window.css')
58
        append(static, 'window/header_bg.gif')
59
        append(static, 'window/w_close.gif')
60
61
    appendBase()
62
63
    if type == 'full':
64
        appendGallery()
65
        appendSet()
66
        appendWindow()
67
    elif type == 'gallery':
68
        appendGallery()
69
        appendSet()
70
    elif type == 'window':
71
        appendWindow()
72
    else:
73
        sys.exit('Uknown type')
74
75
    print 'Follwoing styles are used:'
76
    for style in css:
77
        print '   %s' % style
78
79
    print 'Follwoing JavaScript is used:'
80
    for script in js:
81
        print '   %s' % script
82
83
    ##
84
    # Copy the files
85
    #
86
    try:
87
        shutil.rmtree(output_dir)
88
    except:
89
        pass
90
    os.mkdir(output_dir)
91
92
    def concatFiles(f_list):
93
        data = []
94
        for f in f_list:
95
            data.append(open(f, 'r').read())
96
        return '\n\n'.join(data)
97
98
    def copyFiles(f_list):
99
        for f in f_list:
100
            shutil.copy(f, output_dir)
101
102
    copyFiles(static)
103
    fp = open('%s/%s' % (output_dir, 'gb_styles.css'), 'w')
104
    fp.write(concatFiles(css))
105
    fp.close()
106
    print 'Compressed styles in %s' % ('greybox/gb_styles.css')
107
108
    ##
109
    # Concat js
110
    #
111
    fp = open('%s/%s' % (output_dir, 'gb_scripts_tmp.js'), 'w')
112
    fp.write(concatFiles(js))
113
    fp.close()
114
115
    AJS_minify.AJS_SRC = 'greybox_source/base/AJS.js'
116
    AJS_minify.AJS_MINI_SRC = 'greybox/AJS_tmp.js'
117
    files = ['greybox/gb_scripts_tmp.js', 'greybox_source/base/AJS_fx.js', 'static_files/help.js']
118
    code_analyzer = AJS_minify.ExternalCodeAnalyzer(files)
119
    composer = AJS_minify.AjsComposer(code_analyzer.findFunctions())
120
    composer.writeToOutput()
121
122
    os.popen('java -jar compression_lib/custom_rhino.jar -c greybox/AJS_tmp.js > greybox/AJS.js')
123
    os.remove('greybox/AJS_tmp.js')
124
    os.popen('java -jar compression_lib/custom_rhino.jar -c greybox_source/base/AJS_fx.js > greybox/AJS_fx.js')
125
    print 'Compressed AJS.js and AJS.js into greybox/'
126
127
    os.popen('java -jar compression_lib/custom_rhino.jar -c greybox/gb_scripts_tmp.js > greybox/gb_scripts.js')
128
    os.remove('greybox/gb_scripts_tmp.js')
129
    print 'Compressed JavaScript in %s' % ('greybox/gb_scripts.css')
130
131
    #Append script_loaded
132
    open('greybox/AJS.js', 'a').write('\nscript_loaded=true;')
133
    open('greybox/AJS_fx.js', 'a').write('\nscript_loaded=true;')
134
    open('greybox/gb_scripts.js', 'a').write('\nscript_loaded=true;')
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/compressing_greybox.html (-55 lines)
Lines 1-55 Link Here
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
3
<head>
4
    <title>GreyBox - Compressing GreyBox</title>
5
6
    <script type="text/javascript">
7
        var GB_ROOT_DIR = "./greybox/";
8
    </script>
9
10
    <script type="text/javascript" src="greybox/AJS.js"></script>
11
    <script type="text/javascript" src="greybox/AJS_fx.js"></script>
12
    <script type="text/javascript" src="greybox/gb_scripts.js"></script>
13
    <link href="greybox/gb_styles.css" rel="stylesheet" type="text/css" media="all" />
14
15
    <script type="text/javascript" src="static_files/help.js"></script>
16
    <link href="static_files/help.css" rel="stylesheet" type="text/css" media="all" />
17
</head>
18
<body>
19
20
<script>
21
insertHeader();
22
insertMenu('cmpr');
23
</script>
24
25
<h2>Code structure</h2>
26
<ul>
27
    <li><b>greybox:</b> Generated and compressed JavaScript and CSS is located here</li>
28
    <li><b>greybox_source:</b> CSS and JavaScript structured in directories.</li>
29
</ul>
30
It's not recommend that you alter code in the <b>greybox</b> directory, since it's computer generated and very unreadable!
31
32
33
<h2>Download Dojo ShrinkSafe</h2>
34
To make the filesize as small as possible GreyBox JavaScript is compressed down using <a href="http://alex.dojotoolkit.org/shrinksafe/">Dojo ShrinkSafe</a>. This library requires <a href="http://www.java.com/getjava/">Java</a>, so make sure you got Java installed. Download following JAR file:
35
<ul>
36
    <li><a href="http://svn.dojotoolkit.org/dojo/trunk/buildscripts/lib/custom_rhino.jar">custom_rhino.jar</a></li>
37
</ul>
38
Place <b>custom_rhino.jar</b> in GreyBox's <b>compression_lib</b> directory.
39
40
41
<h2>Compressing GreyBox</h2>
42
Now, you are ready to compress GreyBox. This is done by running a Python script called <b>combiner.py</b>. I.e. you need to download and install <a href="http://www.python.org/download/">Pyhton</a>.
43
44
<p>
45
You can run <b>combiner.py</b> in following ways:
46
</p>
47
48
<ul>
49
    <li><b>python combiner.py full:</b> Compress everything</li>
50
    <li><b>python combiner.py gallery:</b> Compress only gallery related CSS and JavaScript</li>
51
    <li><b>python combiner.py window:</b> Compress only window related CSS and JavaScript</li>
52
</ul>
53
54
</body>
55
</html>
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/compression_lib/AJS_minify.py (-255 lines)
Lines 1-255 Link Here
1
#!/usr/bin/env python
2
#Last-update: 08/05/07 12:39:17
3
import re
4
import sys
5
from sets import Set
6
7
##
8
# External files
9
#
10
AJS_SRC = 'AJS.js'
11
AJS_MINI_SRC = 'AJS_compressed.js'
12
13
14
##
15
# Standard stuff that may change in the future
16
#
17
DOM_SHORTCUTS = [
18
    "ul", "li", "td", "tr", "th",
19
    "tbody", "table", "input", "span", "b",
20
    "a", "div", "img", "button", "h1",
21
    "h2", "h3", "br", "textarea", "form",
22
    "p", "select", "option", "iframe", "script",
23
    "center", "dl", "dt", "dd", "small",
24
    "pre", "tn"
25
]
26
27
FN_SHORTCUTS = {
28
    '$': 'getElement',
29
    '$$': 'getElements',
30
    '$f': 'getFormElement',
31
    '$b': 'bind',
32
    '$p': 'partial',
33
    '$A': 'createArray',
34
    'DI': 'documentInsert',
35
    'ACN': 'appendChildNodes',
36
    'RCN': 'replaceChildNodes',
37
    'AEV': 'addEventListener',
38
    'REV': 'removeEventListener',
39
    '$bytc': 'getElementsByTagAndClassName'
40
}
41
42
AJS_TEMPLATE = """//AJS JavaScript library (minify'ed version)
43
//Copyright (c) 2006 Amir Salihefendic. All rights reserved.
44
//Copyright (c) 2005 Bob Ippolito. All rights reserved.
45
//License: http://www.opensource.org/licenses/mit-license.php
46
//Visit http://orangoo.com/AmiNation/AJS for full version.
47
AJS = {
48
BASE_URL: "",
49
drag_obj: null,
50
drag_elm: null,
51
_drop_zones: [],
52
_cur_pos: null,
53
54
%(functions)s
55
}
56
57
AJS.$ = AJS.getElement;
58
AJS.$$ = AJS.getElements;
59
AJS.$f = AJS.getFormElement;
60
AJS.$p = AJS.partial;
61
AJS.$b = AJS.bind;
62
AJS.$A = AJS.createArray;
63
AJS.DI = AJS.documentInsert;
64
AJS.ACN = AJS.appendChildNodes;
65
AJS.RCN = AJS.replaceChildNodes;
66
AJS.AEV = AJS.addEventListener;
67
AJS.REV = AJS.removeEventListener;
68
AJS.$bytc = AJS.getElementsByTagAndClassName;
69
70
AJS.addEventListener(window, 'unload', AJS._unloadListeners);
71
AJS._createDomShortcuts();
72
73
%(AJSClass)s
74
75
%(AJSDeferred)s
76
script_loaded = true;
77
"""
78
79
80
def getAjsCode():
81
    return open(AJS_SRC).read()
82
83
def writeAjsMini(code):
84
    open(AJS_MINI_SRC, "w").write(code)
85
86
87
class AjsAnalyzer:
88
89
    def __init__(self):
90
        self.code = getAjsCode()
91
        self.ajs_fns = {}
92
        self.ajs_deps = {}
93
        self._parseAJS()
94
        self._findDeps()
95
96
    def _parseAJS(self):
97
        ajs_code = re.search("AJS =(.|\n)*\n}\n", self.code).group(0)
98
        fns = re.findall("\s+((\w*?):.*?{(.|\n)*?\n\s*})(,|\n+})\n", ajs_code)
99
        for f in fns:
100
            self.ajs_fns[f[1]] = f[0]
101
102
    def getFnCode(self, fn_name, caller=None):
103
        """
104
        Returns the code of function and it's dependencies as a list
105
        """
106
        fn_name = self._unfoldFn(fn_name)
107
        r = []
108
        if self.ajs_fns.get(fn_name):
109
            r.append(self.ajs_fns[fn_name])
110
            for dep_fn in self.ajs_deps[fn_name]:
111
                if fn_name != dep_fn and dep_fn != caller:
112
                    r.extend(self.getFnCode(dep_fn, fn_name))
113
        elif fn_name not in ['listeners', 'Class']:
114
            print 'Could not find "%s"' % fn_name
115
        return r
116
117
    def getAjsClassCode(self):
118
        return re.search("AJS.Class =(.|\n)*\n};\n", self.code).group(0)
119
120
    def getAjsDeferredCode(self):
121
        return re.search("AJSDeferred =(.|\n)*\n};\n", self.code).group(0)
122
123
    def _findDeps(self):
124
        """
125
        Parses AJS and for every function it finds dependencies for the other functions.
126
        """
127
        for fn_name, fn_code in self.ajs_fns.items():
128
            self.ajs_deps[fn_name] = self._findFns(fn_code)
129
130
    def _findFns(self, inner):
131
        """
132
        Searches after AJS.fnX( in inner and returns all the fnX in a Set.
133
        """
134
        s = re.findall("AJS\.([\w_$]*?)(?:\(|,|\.)", inner)
135
        s = list(Set(s))
136
        return self._unfoldFns(s)
137
138
    def _unfoldFns(self, list):
139
        """
140
        Unfolds:
141
            AJS.B, AJS.H1 etc. to _createDomShortcuts
142
            AJS.$ to AJS.getElement etc.
143
        """
144
        return [self._unfoldFn(n) for n in list]
145
146
    def _unfoldFn(self, fn_name):
147
        if fn_name.lower() in DOM_SHORTCUTS:
148
            return "_createDomShortcuts"
149
        elif FN_SHORTCUTS.get(fn_name):
150
            return FN_SHORTCUTS[fn_name]
151
        else:
152
            return fn_name
153
154
155
class ExternalCodeAnalyzer:
156
157
    def __init__(self, files):
158
        self.found_ajs_fns = []
159
        self.files = files
160
161
    def findFunctions(self):
162
        for f in self.files:
163
            self.found_ajs_fns.extend( self._parseFile(f) )
164
        return list(Set(self.found_ajs_fns))
165
166
    def _parseFile(self, f):
167
        """
168
        Parses the file, looks for AJS functions and returns all the found functions.
169
        """
170
        code = open(f).read()
171
        return re.findall("AJS\.([\w_$]*?)\(", code)
172
173
174
175
class AjsComposer:
176
177
    def __init__(self, fn_list):
178
        self.code = getAjsCode()
179
        self.analyzer = AjsAnalyzer()
180
        self.fn_list = fn_list
181
182
        #Append standard functions
183
        req = ['_unloadListeners', 'createDOM', '_createDomShortcuts', 'log', 'addEventListener']
184
        self.fn_list.extend(req)
185
186
        #Append AJSDeferred only if needed
187
        in_list = lambda x: x in self.fn_list
188
        if in_list('getRequest') or in_list('loadJSONDoc'):
189
            self.deferred = self._minify(self.analyzer.getAjsDeferredCode())
190
            self.fn_list.append('isObject')
191
        else:
192
            self.deferred = ''
193
194
    def writeToOutput(self):
195
        fns = self._getFns()
196
        d = {}
197
        d['functions'] = ",\n".join(fns)
198
        d['AJSDeferred'] = self.deferred
199
        d['AJSClass'] = self.analyzer.getAjsClassCode()
200
201
        mini_code = AJS_TEMPLATE % d
202
        writeAjsMini(mini_code)
203
204
    def _minify(self, code):
205
        new_lines = []
206
        for l in code.split("\n"):
207
            if l not in ['\n', '']:
208
                new_lines.append(l.lstrip())
209
        return "\n".join(new_lines)
210
211
    def _getFns(self):
212
        """
213
        Returns a list with real code of functions
214
        """
215
        r = []
216
        for fn in self.fn_list:
217
            r.extend(self.analyzer.getFnCode(fn))
218
219
        r = list(Set(r))
220
        return [self._minify(fn) for fn in r]
221
222
223
if __name__ == '__main__':
224
    args = sys.argv
225
226
    if len(args) < 3:
227
        print """Usage is:
228
    python AJS_minify.py [-o output_file] ajs_file js_file.js html_using_ajs.html ...
229
Example usage:
230
    Using relative paths:
231
        python AJS_minify.py -o AJS_mini.js AJS.js test.js index.html
232
        This will create AJS_mini.js from test.js and index.html.
233
    Using absolute paths:
234
        python AJS_minify.py ~/Desktop/AJS/AJS.js ~/Desktop/GreyBox_v3_42/greybox/greybox.js
235
        This will create a new file called '%s' that has the needed AJS functions.""" % AJS_MINI_SRC
236
237
        sys.exit(0)
238
239
    if sys.argv[1] == '-o':
240
        AJS_MINI_SRC = sys.argv[2]
241
        AJS_SRC = sys.argv[3]
242
        FILES = sys.argv[4:]
243
    else:
244
        AJS_SRC = sys.argv[1]
245
        FILES = sys.argv[2:]
246
247
    print 'Parsing through:\n    %s' % "\n    ".join(FILES)
248
249
    code_analyzer = ExternalCodeAnalyzer(FILES)
250
    found_fns = code_analyzer.findFunctions()
251
    print 'Found following AJS functions:\n    %s' % ("\n    ".join(found_fns))
252
253
    composer = AjsComposer(found_fns)
254
    composer.writeToOutput()
255
    print "Written the minified code to '%s'" % AJS_MINI_SRC
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/compression_lib/__init__.py (-1 lines)
Line 1 Link Here
1
#
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/examples.html (-95 lines)
Lines 1-95 Link Here
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
3
<head>
4
    <title>GreyBox - Examples</title>
5
6
    <script type="text/javascript">
7
        var GB_ROOT_DIR = "./greybox/";
8
    </script>
9
10
    <script type="text/javascript" src="greybox/AJS.js"></script>
11
    <script type="text/javascript" src="greybox/AJS_fx.js"></script>
12
    <script type="text/javascript" src="greybox/gb_scripts.js"></script>
13
    <link href="greybox/gb_styles.css" rel="stylesheet" type="text/css" media="all" />
14
15
    <script type="text/javascript" src="static_files/help.js"></script>
16
    <link href="static_files/help.css" rel="stylesheet" type="text/css" media="all" />
17
</head>
18
<body>
19
20
<script>
21
    insertHeader();
22
    insertMenu('examples');
23
</script>
24
25
26
<h3>One website</h3>
27
<ul>
28
    <li>
29
        <a href="http://google.com/" title="Google" rel="gb_page_center[640, 480]">Launch google.com in a 640x480 window</a>
30
    </li>
31
    <li>
32
        <a href="http://google.com/" title="Google" rel="gb_page_fs[]">Launch google.com in fullscreen window</a>
33
    </li>
34
</ul>
35
36
<h3>Website gallery</h3>
37
<ul>
38
    <li>
39
        <a href="http://google.com/" title="Google" rel="gb_pageset[search_sites]">Launch Google search</a>
40
    </li>
41
    <li>
42
        <a href="http://search.yahoo.com/" rel="gb_pageset[search_sites]">Launch Yahoo search</a>
43
    </li>
44
    <li>
45
        <a href="http://www.koders.com/" rel="gb_pageset[search_sites]">Launch Koders search</a>
46
    </li>
47
</ul>
48
49
<h3>Image gallery</h3>
50
<script type="text/javascript">
51
var image_set = [{'caption': 'Flower', 'url': 'http://static.flickr.com/119/294309231_a3d2a339b9.jpg'},
52
                 {'caption': 'Nice waterfall', 'url': 'http://www.widerange.org/images/large/plitvicka.jpg'}];
53
</script>
54
55
<ul>
56
    <li>
57
        <a href="#" onclick="return GB_showImageSet(image_set, 1)">Launch gallery</a>
58
    </li>
59
60
    <li>
61
        <a href="static_files/night_valley.jpg" rel="gb_imageset[nice_pics]" title="Night valley">
62
            <img src="static_files/night_valley_thumb.jpg" />
63
        </a>
64
    </li>
65
66
    <li>
67
        <a href="static_files/salt.jpg" rel="gb_imageset[nice_pics]" title="Salt flats in Chile">
68
            <img src="static_files/salt_thumb.gif" />
69
        </a>
70
    </li>
71
</ul>
72
73
<h3>Without loading</h3>
74
<script type="text/javascript">
75
GB_myShow = function(caption, url, /* optional */ height, width, callback_fn) {
76
    var options = {
77
        caption: caption,
78
        height: height || 500,
79
        width: width || 500,
80
        fullscreen: false,
81
        show_loading: false,
82
        callback_fn: callback_fn
83
    }
84
    var win = new GB_Window(options);
85
    return win.show(url);
86
}
87
</script>
88
<ul>
89
    <li>
90
        <a href="http://google.com/" onclick="return GB_myShow('Google', this.href)">Visit Google without loading</a>
91
    </li>
92
</ul>
93
94
</body>
95
</html>
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/greybox_source/auto_deco.js (-67 lines)
Lines 1-67 Link Here
1
var GB_SETS = {};
2
function decoGreyboxLinks() {
3
    var as = AJS.$bytc('a');
4
    AJS.map(as, function(a) {
5
        if(a.getAttribute('href') && a.getAttribute('rel')) {
6
            var rel = a.getAttribute('rel');
7
            if(rel.indexOf('gb_') == 0) {
8
                var name = rel.match(/\w+/)[0];
9
                var attrs = rel.match(/\[(.*)\]/)[1];
10
                var index = 0;
11
12
                var item = {
13
                    'caption': a.title || '',
14
                    'url': a.href
15
                }
16
17
                //Set up GB_SETS
18
                if(name == 'gb_pageset' || name == 'gb_imageset') {
19
                    if(!GB_SETS[attrs]) { GB_SETS[attrs] = []; }
20
                    GB_SETS[attrs].push(item);
21
                    index = GB_SETS[attrs].length;
22
                }
23
24
                //Append onclick
25
                if(name == 'gb_pageset') {
26
                    a.onclick = function() {
27
                        GB_showFullScreenSet(GB_SETS[attrs], index);
28
                        return false;
29
                    };
30
                }
31
                if(name == 'gb_imageset') {
32
                    a.onclick = function() {
33
                        GB_showImageSet(GB_SETS[attrs], index);
34
                        return false;
35
                    };
36
                }
37
                if(name == 'gb_image') {
38
                    a.onclick = function() {
39
                        GB_showImage(item.caption, item.url);
40
                        return false;
41
                    };
42
                }
43
                if(name == 'gb_page') {
44
                    a.onclick = function() {
45
                        var sp = attrs.split(/, ?/);
46
                        GB_show(item.caption, item.url, parseInt(sp[1]), parseInt(sp[0]));
47
                        return false;
48
                    };
49
                }
50
                if(name == 'gb_page_fs') {
51
                    a.onclick = function() {
52
                        GB_showFullScreen(item.caption, item.url);
53
                        return false;
54
                    };
55
                }
56
                if(name == 'gb_page_center') {
57
                    a.onclick = function() {
58
                        var sp = attrs.split(/, ?/);
59
                        GB_showCenter(item.caption, item.url, parseInt(sp[1]), parseInt(sp[0]));
60
                        return false;
61
                    };
62
                }
63
            }
64
        }});
65
}
66
67
AJS.AEV(window, 'load', decoGreyboxLinks);
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/greybox_source/base/AJS.js (-1371 lines)
Lines 1-1371 Link Here
1
/*
2
Last Modified: 29/01/07 14:16:09
3
4
AJS JavaScript library
5
    A very small library with a lot of functionality
6
AUTHOR
7
    4mir Salihefendic (http://amix.dk) - amix@amix.dk
8
LICENSE
9
    Copyright (c) 2006 Amir Salihefendic. All rights reserved.
10
    Copyright (c) 2005 Bob Ippolito. All rights reserved.
11
    http://www.opensource.org/licenses/mit-license.php
12
VERSION
13
    3.7
14
SITE
15
    http://orangoo.com/AmiNation/AJS
16
**/
17
if(!AJS) {
18
var AJS = {
19
    BASE_URL: "",
20
21
    drag_obj: null,
22
    drag_elm: null,
23
    _drop_zones: [],
24
    _drag_zones: [],
25
    _cur_pos: null,
26
27
    ajaxErrorHandler: null,
28
29
////
30
// General accessor functions
31
////
32
    getQueryArgument: function(var_name) {
33
        var query = window.location.search.substring(1);
34
        var vars = query.split("&");
35
        for (var i=0;i<vars.length;i++) {
36
            var pair = vars[i].split("=");
37
            if (pair[0] == var_name) {
38
                return pair[1];
39
            }
40
        }
41
        return null;
42
    },
43
44
    isIe: function() {
45
        return (navigator.userAgent.toLowerCase().indexOf("msie") != -1 && navigator.userAgent.toLowerCase().indexOf("opera") == -1);
46
    },
47
    isNetscape7: function() {
48
        return (navigator.userAgent.toLowerCase().indexOf("netscape") != -1 && navigator.userAgent.toLowerCase().indexOf("7.") != -1);
49
    },
50
    isSafari: function() {
51
        return (navigator.userAgent.toLowerCase().indexOf("khtml") != -1);
52
    },
53
    isOpera: function() {
54
        return (navigator.userAgent.toLowerCase().indexOf("opera") != -1);
55
    },
56
    isMozilla: function() {
57
        return (navigator.userAgent.toLowerCase().indexOf("gecko") != -1 && navigator.productSub >= 20030210);
58
    },
59
60
61
////
62
// Array functions
63
////
64
    //Shortcut: AJS.$A
65
    createArray: function(v) {
66
        if(AJS.isArray(v) && !AJS.isString(v))
67
            return v;
68
        else if(!v)
69
            return [];
70
        else
71
            return [v];
72
    },
73
74
    forceArray: function(args) {
75
        var r = [];
76
        AJS.map(args, function(elm) {
77
            r.push(elm);
78
        });
79
        return r;
80
    },
81
82
    join: function(delim, list) {
83
        try {
84
            return list.join(delim);
85
        }
86
        catch(e) {
87
            var r = list[0] || '';
88
            AJS.map(list, function(elm) {
89
                r += delim + elm;
90
            }, 1);
91
            return r + '';
92
        }
93
    },
94
95
    isIn: function(elm, list) {
96
        var i = AJS.getIndex(elm, list);
97
        if(i != -1)
98
            return true;
99
        else
100
            return false;
101
    },
102
103
    getIndex: function(elm, list/*optional*/, eval_fn) {
104
        for(var i=0; i < list.length; i++)
105
            if(eval_fn && eval_fn(list[i]) || elm == list[i])
106
                return i;
107
        return -1;
108
    },
109
110
    getFirst: function(list) {
111
        if(list.length > 0)
112
            return list[0];
113
        else
114
            return null;
115
    },
116
117
    getLast: function(list) {
118
        if(list.length > 0)
119
            return list[list.length-1];
120
        else
121
            return null;
122
    },
123
124
    update: function(l1, l2) {
125
        for(var i in l2)
126
            l1[i] = l2[i];
127
        return l1;
128
    },
129
130
    flattenList: function(list) {
131
        var r = [];
132
        var _flatten = function(r, l) {
133
            AJS.map(l, function(o) {
134
                if(o == null) {}
135
                else if (AJS.isArray(o))
136
                    _flatten(r, o);
137
                else
138
                    r.push(o);
139
            });
140
        }
141
        _flatten(r, list);
142
        return r;
143
    },
144
145
146
////
147
// Functional programming
148
////
149
    map: function(list, fn,/*optional*/ start_index, end_index) {
150
        var i = 0, l = list.length;
151
        if(start_index)
152
             i = start_index;
153
        if(end_index)
154
             l = end_index;
155
        for(i; i < l; i++)
156
            fn.apply(null, [list[i], i]);
157
    },
158
159
    rmap: function(list, fn) {
160
        var i = list.length-1, l = 0;
161
        for(i; i >= l; i--)
162
            fn.apply(null, [list[i], i]);
163
    },
164
165
    filter: function(list, fn, /*optional*/ start_index, end_index) {
166
        var r = [];
167
        AJS.map(list, function(elm) {
168
            if(fn(elm))
169
                r.push(elm);
170
        }, start_index, end_index);
171
        return r;
172
    },
173
174
    partial: function(fn) {
175
        var args = AJS.forceArray(arguments);
176
        return AJS.$b(fn, null, args.slice(1, args.length).reverse(), false, true);
177
    },
178
179
180
////
181
// DOM functions
182
////
183
    //Shortcut: AJS.$
184
    getElement: function(id) {
185
        if(AJS.isString(id) || AJS.isNumber(id))
186
            return document.getElementById(id);
187
        else
188
            return id;
189
    },
190
191
    //Shortcut: AJS.$$
192
    getElements: function(/*id1, id2, id3*/) {
193
        var args = AJS.forceArray(arguments);
194
        var elements = new Array();
195
            for (var i = 0; i < args.length; i++) {
196
                var element = AJS.getElement(args[i]);
197
                elements.push(element);
198
            }
199
            return elements;
200
    },
201
202
    //Shortcut: AJS.$bytc
203
    getElementsByTagAndClassName: function(tag_name, class_name, /*optional*/ parent) {
204
        var class_elements = [];
205
        if(!AJS.isDefined(parent))
206
            parent = document;
207
        if(!AJS.isDefined(tag_name))
208
            tag_name = '*';
209
210
        var els = parent.getElementsByTagName(tag_name);
211
        var els_len = els.length;
212
        var pattern = new RegExp("(^|\\s)" + class_name + "(\\s|$)");
213
214
        for (i = 0, j = 0; i < els_len; i++) {
215
            if ( pattern.test(els[i].className) || class_name == null ) {
216
                class_elements[j] = els[i];
217
                j++;
218
            }
219
        }
220
        return class_elements;
221
    },
222
223
    _nodeWalk: function(elm, tag_name, class_name, fn_next_elm) {
224
        var p = fn_next_elm(elm);
225
226
        var checkFn;
227
        if(tag_name && class_name) {
228
            checkFn = function(p) {
229
                return AJS.nodeName(p) == tag_name && AJS.hasClass(p, class_name);
230
            }
231
        }
232
        else if(tag_name) {
233
            checkFn = function(p) { return AJS.nodeName(p) == tag_name; }
234
        }
235
        else {
236
            checkFn = function(p) { return AJS.hasClass(p, class_name); }
237
        }
238
239
        while(p) {
240
            if(checkFn(p))
241
                return p;
242
            p = fn_next_elm(p);
243
        }
244
        return null;
245
    },
246
247
    getParentBytc: function(elm, tag_name, class_name) {
248
        return AJS._nodeWalk(elm, tag_name, class_name, function(m) { return m.parentNode; });
249
    },
250
251
    getPreviousSiblingBytc: function(elm, tag_name, class_name) {
252
        return AJS._nodeWalk(elm, tag_name, class_name, function(m) { return m.previousSibling; });
253
    },
254
255
    getNextSiblingBytc: function(elm, tag_name, class_name) {
256
        return AJS._nodeWalk(elm, tag_name, class_name, function(m) { return m.nextSibling; });
257
    },
258
259
    //Shortcut: AJS.$f
260
    getFormElement: function(form, name) {
261
        form = AJS.$(form);
262
        var r = null;
263
        AJS.map(form.elements, function(elm) {
264
            if(elm.name && elm.name == name)
265
                r = elm;
266
        });
267
        return r;
268
    },
269
270
    formContents: function(form) {
271
        var form = AJS.$(form);
272
        var r = {};
273
        var fn = function(elms) {
274
            AJS.map(elms, function(e) {
275
                if(e.name)
276
                    r[e.name] = e.value || '';
277
            });
278
        }
279
        fn(AJS.$bytc('input', null, form));
280
        fn(AJS.$bytc('textarea', null, form));
281
        return r;
282
    },
283
284
    getBody: function() {
285
        return AJS.$bytc('body')[0]
286
    },
287
288
    nodeName: function(elm) {
289
        return elm.nodeName.toLowerCase();
290
    },
291
292
    hasParent: function(elm, parent_to_consider, max_look_up) {
293
        if(elm == parent_to_consider)
294
            return true;
295
        if(max_look_up == 0)
296
            return false;
297
        return AJS.hasParent(elm.parentNode, parent_to_consider, max_look_up-1);
298
    },
299
300
    isElementHidden: function(elm) {
301
        return elm.style.visibility == "hidden";
302
    },
303
304
    //Shortcut: AJS.DI
305
    documentInsert: function(elm) {
306
        if(typeof(elm) == 'string')
307
            elm = AJS.HTML2DOM(elm);
308
        document.write('<span id="dummy_holder"></span>');
309
        AJS.swapDOM(AJS.$('dummy_holder'), elm);
310
    },
311
312
    cloner: function(element) {
313
        return function() {
314
            return element.cloneNode(true);
315
        }
316
    },
317
318
    appendToTop: function(elm/*, elms...*/) {
319
        var args = AJS.forceArray(arguments).slice(1);
320
        if(args.length >= 1) {
321
            var first_child = elm.firstChild;
322
            if(first_child) {
323
                while(true) {
324
                    var t_elm = args.shift();
325
                    if(t_elm)
326
                        AJS.insertBefore(t_elm, first_child);
327
                    else
328
                        break;
329
                }
330
            }
331
            else {
332
                AJS.ACN.apply(null, arguments);
333
            }
334
        }
335
        return elm;
336
    },
337
338
    //Shortcut: AJS.ACN
339
    appendChildNodes: function(elm/*, elms...*/) {
340
        if(arguments.length >= 2) {
341
            AJS.map(arguments, function(n) {
342
                if(AJS.isString(n))
343
                    n = AJS.TN(n);
344
                if(AJS.isDefined(n))
345
                    elm.appendChild(n);
346
            }, 1);
347
        }
348
        return elm;
349
    },
350
351
    //Shortcut: AJS.RCN
352
    replaceChildNodes: function(elm/*, elms...*/) {
353
        var child;
354
        while ((child = elm.firstChild))
355
            elm.removeChild(child);
356
        if (arguments.length < 2)
357
            return elm;
358
        else
359
            return AJS.appendChildNodes.apply(null, arguments);
360
        return elm;
361
    },
362
363
    insertAfter: function(elm, reference_elm) {
364
        reference_elm.parentNode.insertBefore(elm, reference_elm.nextSibling);
365
        return elm;
366
    },
367
368
    insertBefore: function(elm, reference_elm) {
369
        reference_elm.parentNode.insertBefore(elm, reference_elm);
370
        return elm;
371
    },
372
373
    showElement: function(/*elms...*/) {
374
        var args = AJS.forceArray(arguments);
375
        AJS.map(args, function(elm) { elm.style.display = ''});
376
    },
377
378
    hideElement: function(elm) {
379
        var args = AJS.forceArray(arguments);
380
        AJS.map(args, function(elm) { elm.style.display = 'none'});
381
    },
382
383
    swapDOM: function(dest, src) {
384
        dest = AJS.getElement(dest);
385
        var parent = dest.parentNode;
386
        if (src) {
387
            src = AJS.getElement(src);
388
            parent.replaceChild(src, dest);
389
        } else {
390
            parent.removeChild(dest);
391
        }
392
        return src;
393
    },
394
395
    removeElement: function(/*elm1, elm2...*/) {
396
        var args = AJS.forceArray(arguments);
397
        AJS.map(args, function(elm) { AJS.swapDOM(elm, null); });
398
    },
399
400
    createDOM: function(name, attrs) {
401
        var i=0, attr;
402
        elm = document.createElement(name);
403
404
        if(AJS.isDict(attrs[i])) {
405
            for(k in attrs[0]) {
406
                attr = attrs[0][k];
407
                if(k == "style")
408
                    elm.style.cssText = attr;
409
                else if(k == "class" || k == 'className')
410
                    elm.className = attr;
411
                else {
412
                    elm.setAttribute(k, attr);
413
                }
414
            }
415
            i++;
416
        }
417
418
        if(attrs[0] == null)
419
            i = 1;
420
421
        AJS.map(attrs, function(n) {
422
            if(n) {
423
                if(AJS.isString(n) || AJS.isNumber(n))
424
                    n = AJS.TN(n);
425
                elm.appendChild(n);
426
            }
427
        }, i);
428
        return elm;
429
    },
430
431
    _createDomShortcuts: function() {
432
        var elms = [
433
                "ul", "li", "td", "tr", "th",
434
                "tbody", "table", "input", "span", "b",
435
                "a", "div", "img", "button", "h1",
436
                "h2", "h3", "br", "textarea", "form",
437
                "p", "select", "option", "iframe", "script",
438
                "center", "dl", "dt", "dd", "small",
439
                "pre"
440
        ];
441
        var extends_ajs = function(elm) {
442
            var c_dom = "return AJS.createDOM.apply(null, ['" + elm + "', arguments]);";
443
            var c_fun_dom = 'function() { ' + c_dom + '    }';
444
            eval("AJS." + elm.toUpperCase() + "=" + c_fun_dom);
445
        }
446
        AJS.map(elms, extends_ajs);
447
        AJS.TN = function(text) { return document.createTextNode(text) };
448
    },
449
450
    getCssDim: function(dim) {
451
        if(AJS.isString(dim))
452
            return dim;
453
        else
454
            return dim + "px";
455
    },
456
    getCssProperty: function(elm, prop) {
457
        elm = AJS.$(elm);
458
        var y;
459
        if(elm.currentStyle)
460
            y = elm.currentStyle[prop];
461
     else if (window.getComputedStyle)
462
            y = document.defaultView.getComputedStyle(elm,null).getPropertyValue(prop);
463
      return y;
464
    },
465
466
    setStyle: function(/*elm1, elm2..., property, new_value*/) {
467
        var args = AJS.forceArray(arguments);
468
        var new_val = args.pop();
469
        var property = args.pop();
470
        AJS.map(args, function(elm) {
471
            elm.style[property] = AJS.getCssDim(new_val);
472
        });
473
    },
474
475
    setWidth: function(/*elm1, elm2..., width*/) {
476
        var args = AJS.forceArray(arguments);
477
        args.splice(args.length-1, 0, 'width');
478
        AJS.setStyle.apply(null, args);
479
    },
480
    setHeight: function(/*elm1, elm2..., height*/) {
481
        var args = AJS.forceArray(arguments);
482
        args.splice(args.length-1, 0, 'height');
483
        AJS.setStyle.apply(null, args);
484
    },
485
    setLeft: function(/*elm1, elm2..., left*/) {
486
        var args = AJS.forceArray(arguments);
487
        args.splice(args.length-1, 0, 'left');
488
        AJS.setStyle.apply(null, args);
489
    },
490
    setTop: function(/*elm1, elm2..., top*/) {
491
        var args = AJS.forceArray(arguments);
492
        args.splice(args.length-1, 0, 'top');
493
        AJS.setStyle.apply(null, args);
494
    },
495
    setClass: function(/*elm1, elm2..., className*/) {
496
        var args = AJS.forceArray(arguments);
497
        var c = args.pop();
498
        AJS.map(args, function(elm) { elm.className = c});
499
    },
500
    addClass: function(/*elm1, elm2..., className*/) {
501
        var args = AJS.forceArray(arguments);
502
        var cls = args.pop();
503
        var add_class = function(o) {
504
            if(!new RegExp("(^|\\s)" + cls + "(\\s|$)").test(o.className))
505
                o.className += (o.className ? " " : "") + cls;
506
        };
507
        AJS.map(args, function(elm) { add_class(elm); });
508
    },
509
    hasClass: function(elm, cls) {
510
        if(!elm.className)
511
            return false;
512
        return elm.className == cls ||
513
               elm.className.search(new RegExp(" " + cls)) != -1
514
    },
515
    removeClass: function(/*elm1, elm2..., className*/) {
516
        var args = AJS.forceArray(arguments);
517
        var cls = args.pop();
518
        var rm_class = function(o) {
519
            o.className = o.className.replace(new RegExp("\\s?" + cls, 'g'), "");
520
        };
521
        AJS.map(args, function(elm) { rm_class(elm); });
522
    },
523
524
    setHTML: function(elm, html) {
525
        elm.innerHTML = html;
526
        return elm;
527
    },
528
529
    RND: function(tmpl, ns, scope) {
530
        scope = scope || window;
531
        var fn = function(w, g) {
532
            g = g.split("|");
533
            var cnt = ns[g[0]];
534
            for(var i=1; i < g.length; i++)
535
                cnt = scope[g[i]](cnt);
536
            if(cnt == '')
537
                return '';
538
            if(cnt == 0 || cnt == -1)
539
                cnt += '';
540
            return cnt || w;
541
        };
542
        return tmpl.replace(/%\(([A-Za-z0-9_|.]*)\)/g, fn);
543
    },
544
545
    HTML2DOM: function(html,/*optional*/ first_child) {
546
        var d = AJS.DIV();
547
        d.innerHTML = html;
548
        if(first_child)
549
            return d.childNodes[0];
550
        else
551
            return d;
552
    },
553
554
    preloadImages: function(/*img_src1, ..., img_srcN*/) {
555
        AJS.AEV(window, 'load', AJS.$p(function(args) {
556
            AJS.map(args, function(src) {
557
                var pic = new Image();
558
                pic.src = src;
559
            });
560
        }, arguments));
561
    },
562
563
564
////
565
// Effects
566
////
567
    setOpacity: function(elm, p) {
568
        elm.style.opacity = p;
569
        elm.style.filter = "alpha(opacity="+ p*100 +")";
570
    },
571
572
573
////
574
// Ajax functions
575
////
576
    getXMLHttpRequest: function() {
577
        var try_these = [
578
            function () { return new XMLHttpRequest(); },
579
            function () { return new ActiveXObject('Msxml2.XMLHTTP'); },
580
            function () { return new ActiveXObject('Microsoft.XMLHTTP'); },
581
            function () { return new ActiveXObject('Msxml2.XMLHTTP.4.0'); },
582
            function () { throw "Browser does not support XMLHttpRequest"; }
583
        ];
584
        for (var i = 0; i < try_these.length; i++) {
585
            var func = try_these[i];
586
            try {
587
                return func();
588
            } catch (e) {
589
            }
590
        }
591
    },
592
593
    getRequest: function(url, data, type) {
594
        if(!type)
595
            type = "POST";
596
        var req = AJS.getXMLHttpRequest();
597
598
        if(url.indexOf("http://") == -1) {
599
            if(AJS.BASE_URL != '') {
600
                if(AJS.BASE_URL.lastIndexOf('/') != AJS.BASE_URL.length-1)
601
                    AJS.BASE_URL += '/';
602
                url = AJS.BASE_URL + url;
603
            }
604
            else
605
                url = window.location + url;
606
        }
607
608
        req.open(type, url, true);
609
        if(type == "POST")
610
            req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
611
        return AJS._sendXMLHttpRequest(req);
612
    },
613
614
    _sendXMLHttpRequest: function(req, data) {
615
        var d = new AJSDeferred(req);
616
617
        var onreadystatechange = function () {
618
            if (req.readyState == 4) {
619
                var status = '';
620
                try {
621
                    status = req.status;
622
                }
623
                catch(e) {};
624
                if(status == 200 || status == 304 || req.responseText == null) {
625
                    d.callback();
626
                }
627
                else {
628
                    if(AJS.ajaxErrorHandler)
629
                        AJS.ajaxErrorHandler(req.responseText, req);
630
                    else
631
                        d.errback();
632
                }
633
            }
634
        }
635
        req.onreadystatechange = onreadystatechange;
636
        return d;
637
    },
638
639
    _reprString: function(o) {
640
        return ('"' + o.replace(/(["\\])/g, '\\$1') + '"'
641
        ).replace(/[\f]/g, "\\f"
642
        ).replace(/[\b]/g, "\\b"
643
        ).replace(/[\n]/g, "\\n"
644
        ).replace(/[\t]/g, "\\t"
645
        ).replace(/[\r]/g, "\\r");
646
    },
647
648
    serializeJSON: function(o) {
649
        var objtype = typeof(o);
650
        if (objtype == "undefined") {
651
            return "undefined";
652
        } else if (objtype == "number" || objtype == "boolean") {
653
            return o + "";
654
        } else if (o === null) {
655
            return "null";
656
        }
657
        if (objtype == "string") {
658
            return AJS._reprString(o);
659
        }
660
        var me = arguments.callee;
661
        if (objtype != "function" && typeof(o.length) == "number") {
662
            var res = [];
663
            for (var i = 0; i < o.length; i++) {
664
                var val = me(o[i]);
665
                if (typeof(val) != "string") {
666
                    val = "undefined";
667
                }
668
                res.push(val);
669
            }
670
            return "[" + res.join(",") + "]";
671
        }
672
        // it's a function with no adapter, bad
673
        if (objtype == "function")
674
            return null;
675
        res = [];
676
        for (var k in o) {
677
            var useKey;
678
            if (typeof(k) == "number") {
679
                useKey = '"' + k + '"';
680
            } else if (typeof(k) == "string") {
681
                useKey = AJS._reprString(k);
682
            } else {
683
                // skip non-string or number keys
684
                continue;
685
            }
686
            val = me(o[k]);
687
            if (typeof(val) != "string") {
688
                // skip non-serializable values
689
                continue;
690
            }
691
            res.push(useKey + ":" + val);
692
        }
693
        return "{" + res.join(",") + "}";
694
    },
695
696
    loadJSONDoc: function(url) {
697
        var d = AJS.getRequest(url);
698
        var eval_req = function(data, req) {
699
            var text = req.responseText;
700
            if(text == "Error")
701
                d.errback(req);
702
            else
703
                return AJS.evalTxt(text);
704
        };
705
        d.addCallback(eval_req);
706
        return d;
707
    },
708
709
    evalTxt: function(txt) {
710
        try {
711
            return eval('('+ txt + ')');
712
        }
713
        catch(e) {
714
            return eval(txt);
715
        }
716
    },
717
718
    evalScriptTags: function(html) {
719
        var script_data = html.match(/<script.*?>((\n|\r|.)*?)<\/script>/g);
720
        if(script_data != null) {
721
            for(var i=0; i < script_data.length; i++) {
722
                var script_only = script_data[i].replace(/<script.*?>/g, "");
723
                script_only = script_only.replace(/<\/script>/g, "");
724
                eval(script_only);
725
            }
726
        }
727
    },
728
729
    queryArguments: function(data) {
730
        var post_data = [];
731
        for(k in data)
732
            post_data.push(k + "=" + AJS.urlencode(data[k]));
733
        return post_data.join("&");
734
    },
735
736
737
////
738
// Position and size
739
////
740
    getMousePos: function(e) {
741
        var posx = 0;
742
        var posy = 0;
743
        if (!e) var e = window.event;
744
        if (e.pageX || e.pageY)
745
        {
746
            posx = e.pageX;
747
            posy = e.pageY;
748
        }
749
        else if (e.clientX || e.clientY)
750
        {
751
            posx = e.clientX + document.body.scrollLeft;
752
            posy = e.clientY + document.body.scrollTop;
753
        }
754
        return {x: posx, y: posy};
755
    },
756
757
    getScrollTop: function() {
758
        //From: http://www.quirksmode.org/js/doctypes.html
759
        var t;
760
        if (document.documentElement && document.documentElement.scrollTop)
761
                t = document.documentElement.scrollTop;
762
        else if (document.body)
763
                t = document.body.scrollTop;
764
        return t;
765
    },
766
767
    absolutePosition: function(elm) {
768
        var posObj = {'x': elm.offsetLeft, 'y': elm.offsetTop};
769
        if(elm.offsetParent) {
770
            var temp_pos = AJS.absolutePosition(elm.offsetParent);
771
            posObj.x += temp_pos.x;
772
            posObj.y += temp_pos.y;
773
        }
774
        // safari bug
775
        if (AJS.isSafari() && elm.style.position == 'absolute' ) {
776
            posObj.x -= document.body.offsetLeft;
777
            posObj.y -= document.body.offsetTop;
778
        }
779
        return posObj;
780
    },
781
782
    getWindowSize: function(doc) {
783
        doc = doc || document;
784
        var win_w, win_h;
785
        if (self.innerHeight) {
786
            win_w = self.innerWidth;
787
            win_h = self.innerHeight;
788
        } else if (doc.documentElement && doc.documentElement.clientHeight) {
789
            win_w = doc.documentElement.clientWidth;
790
            win_h = doc.documentElement.clientHeight;
791
        } else if (doc.body) {
792
            win_w = doc.body.clientWidth;
793
            win_h = doc.body.clientHeight;
794
        }
795
        return {'w': win_w, 'h': win_h};
796
    },
797
798
    isOverlapping: function(elm1, elm2) {
799
        var pos_elm1 = AJS.absolutePosition(elm1);
800
        var pos_elm2 = AJS.absolutePosition(elm2);
801
802
        var top1 = pos_elm1.y;
803
        var left1 = pos_elm1.x;
804
        var right1 = left1 + elm1.offsetWidth;
805
        var bottom1 = top1 + elm1.offsetHeight;
806
        var top2 = pos_elm2.y;
807
        var left2 = pos_elm2.x;
808
        var right2 = left2 + elm2.offsetWidth;
809
        var bottom2 = top2 + elm2.offsetHeight;
810
        var getSign = function(v) {
811
            if(v > 0) return "+";
812
            else if(v < 0) return "-";
813
            else return 0;
814
        }
815
816
        if ((getSign(top1 - bottom2) != getSign(bottom1 - top2)) &&
817
                (getSign(left1 - right2) != getSign(right1 - left2)))
818
            return true;
819
        return false;
820
    },
821
822
823
////
824
// Events
825
////
826
    getEventElm: function(e) {
827
        if(e && !e.type && !e.keyCode)
828
            return e
829
        var targ;
830
        if (!e) var e = window.event;
831
        if (e.target) targ = e.target;
832
        else if (e.srcElement) targ = e.srcElement;
833
        if (targ.nodeType == 3) // defeat Safari bug
834
            targ = targ.parentNode;
835
        return targ;
836
    },
837
838
    _getRealScope: function(fn, /*optional*/ extra_args, dont_send_event, rev_extra_args) {
839
        var scope = window;
840
        extra_args = AJS.$A(extra_args);
841
        if(fn._cscope)
842
            scope = fn._cscope;
843
844
        return function() {
845
            //Append all the orginal arguments + extra_args
846
            var args = [];
847
            var i = 0;
848
            if(dont_send_event)
849
                i = 1;
850
851
            AJS.map(arguments, function(arg) { args.push(arg) }, i);
852
            args = args.concat(extra_args);
853
            if(rev_extra_args)
854
                args = args.reverse();
855
            return fn.apply(scope, args);
856
        };
857
    },
858
859
    _unloadListeners: function() {
860
        if(AJS.listeners)
861
            AJS.map(AJS.listeners, function(elm, type, fn) { AJS.REV(elm, type, fn) });
862
        AJS.listeners = [];
863
    },
864
865
    setEventKey: function(e) {
866
        e.key = e.keyCode ? e.keyCode : e.charCode;
867
868
        if(window.event) {
869
            e.ctrl = window.event.ctrlKey;
870
            e.shift = window.event.shiftKey;
871
        }
872
        else {
873
            e.ctrl = e.ctrlKey;
874
            e.shift = e.shiftKey;
875
        }
876
        switch(e.key) {
877
            case 63232:
878
                e.key = 38;
879
                break;
880
            case 63233:
881
                e.key = 40;
882
                break;
883
            case 63235:
884
                e.key = 39;
885
                break;
886
            case 63234:
887
                e.key = 37;
888
                break;
889
        }
890
    },
891
892
    //Shortcut: AJS.AEV
893
    addEventListener: function(elm, type, fn, /*optional*/listen_once, cancle_bubble) {
894
        if(!cancle_bubble)
895
            cancle_bubble = false;
896
897
        var elms = AJS.$A(elm);
898
        AJS.map(elms, function(elmz) {
899
            if(listen_once)
900
                fn = AJS._listenOnce(elmz, type, fn);
901
902
            //Hack since it does not work in all browsers
903
            if(AJS.isIn(type, ['submit', 'load', 'scroll', 'resize'])) {
904
                var old = elm['on' + type];
905
                elm['on' + type] = function() {
906
                    if(old) {
907
                        fn(arguments);
908
                        return old(arguments);
909
                    }
910
                    else
911
                        return fn(arguments);
912
                };
913
                return;
914
            }
915
916
            //Fix keyCode
917
            if(AJS.isIn(type, ['keypress', 'keydown', 'keyup', 'click'])) {
918
                var old_fn = fn;
919
                fn = function(e) {
920
                    AJS.setEventKey(e);
921
                    return old_fn.apply(null, arguments);
922
                }
923
            }
924
925
            if (elmz.attachEvent) {
926
                //FIXME: We ignore cancle_bubble for IE... could be a problem?
927
                elmz.attachEvent("on" + type, fn);
928
            }
929
            else if(elmz.addEventListener)
930
                elmz.addEventListener(type, fn, cancle_bubble);
931
932
            AJS.listeners = AJS.$A(AJS.listeners);
933
            AJS.listeners.push([elmz, type, fn]);
934
        });
935
    },
936
937
    //Shortcut: AJS.REV
938
    removeEventListener: function(elm, type, fn, /*optional*/cancle_bubble) {
939
        if(!cancle_bubble)
940
            cancle_bubble = false;
941
        if(elm.removeEventListener) {
942
            elm.removeEventListener(type, fn, cancle_bubble);
943
            if(AJS.isOpera())
944
                elm.removeEventListener(type, fn, !cancle_bubble);
945
        }
946
        else if(elm.detachEvent)
947
            elm.detachEvent("on" + type, fn);
948
    },
949
950
    //Shortcut: AJS.$b
951
    bind: function(fn, scope, /*optional*/ extra_args, dont_send_event, rev_extra_args) {
952
        fn._cscope = scope;
953
        return AJS._getRealScope(fn, extra_args, dont_send_event, rev_extra_args);
954
    },
955
956
    bindMethods: function(self) {
957
        for (var k in self) {
958
            var func = self[k];
959
            if (typeof(func) == 'function') {
960
                self[k] = AJS.$b(func, self);
961
            }
962
        }
963
    },
964
965
    _listenOnce: function(elm, type, fn) {
966
        var r_fn = function() {
967
            AJS.removeEventListener(elm, type, r_fn);
968
            fn(arguments);
969
        }
970
        return r_fn;
971
    },
972
973
    callLater: function(fn, interval) {
974
        var fn_no_send = function() {
975
            fn();
976
        };
977
        window.setTimeout(fn_no_send, interval);
978
    },
979
980
    preventDefault: function(e) {
981
        if(AJS.isIe())
982
            window.event.returnValue = false;
983
        else
984
            e.preventDefault();
985
    },
986
987
988
////
989
// Drag and drop
990
////
991
    dragAble: function(elm, /*optional*/ handler, args) {
992
        if(!args)
993
            args = {};
994
        if(!AJS.isDefined(args['move_x']))
995
            args['move_x'] = true;
996
        if(!AJS.isDefined(args['move_y']))
997
            args['move_y'] = true;
998
        if(!AJS.isDefined(args['moveable']))
999
            args['moveable'] = false;
1000
        if(!AJS.isDefined(args['hide_on_move']))
1001
            args['hide_on_move'] = true;
1002
        if(!AJS.isDefined(args['on_mouse_up']))
1003
            args['on_mouse_up'] = null;
1004
        if(!AJS.isDefined(args['cursor']))
1005
            args['cursor'] = 'move';
1006
        if(!AJS.isDefined(args['max_move']))
1007
            args['max_move'] = {'top': null, 'left': null};
1008
1009
        elm = AJS.$(elm);
1010
1011
        if(!handler)
1012
            handler = elm;
1013
1014
        handler = AJS.$(handler);
1015
        var old_cursor = handler.style.cursor;
1016
        handler.style.cursor = args['cursor'];
1017
        elm.style.position = 'relative';
1018
1019
        AJS.addClass(handler, '_ajs_handler');
1020
        handler._args = args;
1021
        handler._elm = elm;
1022
        AJS.AEV(handler, 'mousedown', AJS._dragStart);
1023
    },
1024
1025
    _dragStart: function(e) {
1026
        var handler = AJS.getEventElm(e);
1027
        if(!AJS.hasClass(handler, '_ajs_handler')) {
1028
            handler = AJS.getParentBytc(handler, null, '_ajs_handler');
1029
        }
1030
        if(handler)
1031
            AJS._dragInit(e, handler._elm, handler._args);
1032
    },
1033
1034
    dropZone: function(elm, args) {
1035
        elm = AJS.$(elm);
1036
        var item = {elm: elm};
1037
        AJS.update(item, args);
1038
        AJS._drop_zones.push(item);
1039
    },
1040
1041
    removeDragAble: function(elm) {
1042
        AJS.REV(elm, 'mousedown', AJS._dragStart);
1043
        elm.style.cursor = '';
1044
    },
1045
1046
    removeDropZone: function(elm) {
1047
        var i = AJS.getIndex(elm, AJS._drop_zones, function(item) {
1048
            if(item.elm == elm) return true;
1049
        });
1050
        if(i != -1) {
1051
            AJS._drop_zones.splice(i, 1);
1052
        }
1053
    },
1054
1055
    _dragInit: function(e, click_elm, args) {
1056
        AJS.drag_obj = new Object();
1057
        AJS.drag_obj.args = args;
1058
1059
        AJS.drag_obj.click_elm = click_elm;
1060
        AJS.drag_obj.mouse_pos = AJS.getMousePos(e);
1061
        AJS.drag_obj.click_elm_pos = AJS.absolutePosition(click_elm);
1062
1063
        AJS.AEV(document, 'mousemove', AJS._dragMove, false, true);
1064
        AJS.AEV(document, 'mouseup', AJS._dragStop, false, true);
1065
1066
        if (AJS.isIe())
1067
            window.event.cancelBubble = true;
1068
        AJS.preventDefault(e);
1069
    },
1070
1071
    _initDragElm: function(elm) {
1072
        if(AJS.drag_elm && AJS.drag_elm.style.display == 'none')
1073
            AJS.removeElement(AJS.drag_elm);
1074
1075
        if(!AJS.drag_elm) {
1076
            AJS.drag_elm = AJS.DIV();
1077
            var d = AJS.drag_elm;
1078
            AJS.insertBefore(d, AJS.getBody().firstChild);
1079
            AJS.setHTML(d, elm.innerHTML);
1080
1081
            d.className = elm.className;
1082
            d.style.cssText = elm.style.cssText;
1083
1084
            d.style.position = 'absolute';
1085
            d.style.zIndex = 10000;
1086
1087
            var t = AJS.absolutePosition(elm);
1088
            AJS.setTop(d, t.y);
1089
            AJS.setLeft(d, t.x);
1090
1091
            if(AJS.drag_obj.args.on_init) {
1092
                AJS.drag_obj.args.on_init(elm);
1093
            }
1094
        }
1095
    },
1096
1097
    _dragMove: function(e) {
1098
        var drag_obj = AJS.drag_obj;
1099
        var click_elm = drag_obj.click_elm;
1100
1101
        AJS._initDragElm(click_elm);
1102
        var drag_elm = AJS.drag_elm;
1103
1104
        if(drag_obj.args['hide_on_move'])
1105
            click_elm.style.visibility = 'hidden';
1106
1107
        var cur_pos = AJS.getMousePos(e);
1108
1109
        var mouse_pos = drag_obj.mouse_pos;
1110
1111
        var click_elm_pos = drag_obj.click_elm_pos;
1112
1113
        AJS.map(AJS._drop_zones, function(d_z) {
1114
            if(AJS.isOverlapping(d_z['elm'], drag_elm)) {
1115
                if(d_z['elm'] != drag_elm) {
1116
                    var on_hover = d_z['on_hover'];
1117
                    if(on_hover)
1118
                        on_hover(d_z['elm'], click_elm, drag_elm);
1119
                }
1120
            }
1121
        });
1122
1123
        if(drag_obj.args['on_drag'])
1124
            drag_obj.args['on_drag'](click_elm, e);
1125
1126
        var max_move_top = drag_obj.args['max_move']['top'];
1127
        var max_move_left = drag_obj.args['max_move']['left'];
1128
        var p;
1129
        if(drag_obj.args['move_x']) {
1130
            p = cur_pos.x - (mouse_pos.x - click_elm_pos.x);
1131
            if(max_move_left == null || max_move_left <= p)
1132
                AJS.setLeft(elm, p);
1133
        }
1134
1135
        if(drag_obj.args['move_y']) {
1136
            p = cur_pos.y - (mouse_pos.y - click_elm_pos.y);
1137
            if(max_move_top == null || max_move_top <= p)
1138
                AJS.setTop(elm, p);
1139
        }
1140
        if(AJS.isIe()) {
1141
            window.event.cancelBubble = true;
1142
            window.event.returnValue = false;
1143
        }
1144
        else
1145
            e.preventDefault();
1146
    },
1147
1148
    _dragStop: function(e) {
1149
        var drag_obj = AJS.drag_obj;
1150
        var drag_elm = AJS.drag_elm;
1151
        var click_elm = drag_obj.click_elm;
1152
1153
        AJS.REV(document, "mousemove", AJS._dragMove, true);
1154
        AJS.REV(document, "mouseup", AJS._dragStop, true);
1155
1156
        var dropped = false;
1157
        AJS.map(AJS._drop_zones, function(d_z) {
1158
            if(AJS.isOverlapping(d_z['elm'], click_elm)) {
1159
                if(d_z['elm'] != click_elm) {
1160
                    var on_drop = d_z['on_drop'];
1161
                    if(on_drop) {
1162
                        dropped = true;
1163
                        on_drop(d_z['elm'], click_elm);
1164
                    }
1165
                }
1166
            }
1167
        });
1168
1169
        if(drag_obj.args['moveable']) {
1170
            var t = parseInt(click_elm.style.top) || 0;
1171
            var l = parseInt(click_elm.style.left) || 0;
1172
            var drag_elm_xy = AJS.absolutePosition(drag_elm);
1173
            var click_elm_xy = AJS.absolutePosition(click_elm);
1174
            AJS.setTop(click_elm, t + drag_elm_xy.y - click_elm_xy.y);
1175
            AJS.setLeft(click_elm, l + drag_elm_xy.x - click_elm_xy.x);
1176
        }
1177
1178
        if(!dropped && drag_obj.args['on_mouse_up'])
1179
            drag_obj.args['on_mouse_up'](click_elm, e);
1180
1181
        if(drag_obj.args['hide_on_move'])
1182
            drag_obj.click_elm.style.visibility = 'visible';
1183
1184
        if(drag_obj.args.on_end) {
1185
            drag_obj.args.on_end(click_elm);
1186
        }
1187
1188
        AJS._dragObj = null;
1189
        if(drag_elm)
1190
            AJS.hideElement(drag_elm);
1191
        AJS.drag_elm = null;
1192
    },
1193
1194
1195
////
1196
// Misc.
1197
////
1198
    keys: function(obj) {
1199
        var rval = [];
1200
        for (var prop in obj) {
1201
            rval.push(prop);
1202
        }
1203
        return rval;
1204
    },
1205
1206
    values: function(obj) {
1207
        var rval = [];
1208
        for (var prop in obj) {
1209
            rval.push(obj[prop]);
1210
        }
1211
        return rval;
1212
    },
1213
1214
    urlencode: function(str) {
1215
        return encodeURIComponent(str.toString());
1216
    },
1217
1218
    isDefined: function(o) {
1219
        return (o != "undefined" && o != null)
1220
    },
1221
1222
    isArray: function(obj) {
1223
        return obj instanceof Array;
1224
    },
1225
1226
    isString: function(obj) {
1227
        return (typeof obj == 'string');
1228
    },
1229
1230
    isNumber: function(obj) {
1231
        return (typeof obj == 'number');
1232
    },
1233
1234
    isObject: function(obj) {
1235
        return (typeof obj == 'object');
1236
    },
1237
1238
    isFunction: function(obj) {
1239
        return (typeof obj == 'function');
1240
    },
1241
1242
    isDict: function(o) {
1243
        var str_repr = String(o);
1244
        return str_repr.indexOf(" Object") != -1;
1245
    },
1246
1247
    exportToGlobalScope: function() {
1248
        for(e in AJS)
1249
            eval(e + " = AJS." + e);
1250
    },
1251
1252
    log: function(o) {
1253
        if(AJS.isMozilla())
1254
            console.log(o);
1255
        else {
1256
            var div = AJS.DIV({'style': 'color: green'});
1257
            AJS.ACN(AJS.getBody(), AJS.setHTML(div, ''+o));
1258
        }
1259
    }
1260
1261
}
1262
1263
AJS.Class = function(members) {
1264
    var fn = function() {
1265
        if(arguments[0] != 'no_init') {
1266
            return this.init.apply(this, arguments);
1267
        }
1268
    }
1269
    fn.prototype = members;
1270
    AJS.update(fn, AJS.Class.prototype);
1271
    return fn;
1272
}
1273
AJS.Class.prototype = {
1274
    extend: function(members) {
1275
        var parent = new this('no_init');
1276
        for(k in members) {
1277
            var prev = parent[k];
1278
            var cur = members[k];
1279
            if (prev && prev != cur && typeof cur == 'function') {
1280
                cur = this._parentize(cur, prev);
1281
            }
1282
            parent[k] = cur;
1283
        }
1284
        return new AJS.Class(parent);
1285
    },
1286
1287
    implement: function(members) {
1288
        AJS.update(this.prototype, members);
1289
    },
1290
1291
    _parentize: function(cur, prev) {
1292
        return function(){
1293
            this.parent = prev;
1294
            return cur.apply(this, arguments);
1295
        }
1296
    }
1297
};
1298
1299
//Shortcuts
1300
AJS.$ = AJS.getElement;
1301
AJS.$$ = AJS.getElements;
1302
AJS.$f = AJS.getFormElement;
1303
AJS.$b = AJS.bind;
1304
AJS.$p = AJS.partial;
1305
AJS.$FA = AJS.forceArray;
1306
AJS.$A = AJS.createArray;
1307
AJS.DI = AJS.documentInsert;
1308
AJS.ACN = AJS.appendChildNodes;
1309
AJS.RCN = AJS.replaceChildNodes;
1310
AJS.AEV = AJS.addEventListener;
1311
AJS.REV = AJS.removeEventListener;
1312
AJS.$bytc = AJS.getElementsByTagAndClassName;
1313
1314
AJSDeferred = function(req) {
1315
    this.callbacks = [];
1316
    this.errbacks = [];
1317
    this.req = req;
1318
}
1319
AJSDeferred.prototype = {
1320
    excCallbackSeq: function(req, list) {
1321
        var data = req.responseText;
1322
        while (list.length > 0) {
1323
            var fn = list.pop();
1324
            var new_data = fn(data, req);
1325
            if(new_data)
1326
                data = new_data;
1327
        }
1328
    },
1329
1330
    callback: function () {
1331
        this.excCallbackSeq(this.req, this.callbacks);
1332
    },
1333
1334
    errback: function() {
1335
        if(this.errbacks.length == 0)
1336
            alert("Error encountered:\n" + this.req.responseText);
1337
1338
        this.excCallbackSeq(this.req, this.errbacks);
1339
    },
1340
1341
    addErrback: function(fn) {
1342
        this.errbacks.unshift(fn);
1343
    },
1344
1345
    addCallback: function(fn) {
1346
        this.callbacks.unshift(fn);
1347
    },
1348
1349
    addCallbacks: function(fn1, fn2) {
1350
        this.addCallback(fn1);
1351
        this.addErrback(fn2);
1352
    },
1353
1354
    sendReq: function(data) {
1355
        if(AJS.isObject(data)) {
1356
            this.req.send(AJS.queryArguments(data));
1357
        }
1358
        else if(AJS.isDefined(data))
1359
            this.req.send(data);
1360
        else {
1361
            this.req.send("");
1362
        }
1363
    }
1364
};
1365
1366
//Prevent memory-leaks
1367
AJS.addEventListener(window, 'unload', AJS._unloadListeners);
1368
AJS._createDomShortcuts()
1369
}
1370
1371
script_loaded = true;
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/greybox_source/base/AJS_fx.js (-194 lines)
Lines 1-194 Link Here
1
/*
2
Last Modified: 25/12/06 18:26:30
3
4
AJS effects
5
    A very small library with a lot of functionality
6
AUTHOR
7
    4mir Salihefendic (http://amix.dk) - amix@amix.dk
8
LICENSE
9
    Copyright (c) 2006 Amir Salihefendic. All rights reserved.
10
    Copyright (c) 2005 Bob Ippolito. All rights reserved.
11
    Copyright (c) 2006 Valerio Proietti, http://www.mad4milk.net
12
    http://www.opensource.org/licenses/mit-license.php
13
VERSION
14
    3.6
15
SITE
16
    http://orangoo.com/AmiNation/AJS
17
**/
18
AJS.fx = {
19
    _shades: {0: 'ffffff', 1: 'ffffee', 2: 'ffffdd',
20
              3: 'ffffcc', 4: 'ffffbb', 5: 'ffffaa',
21
              6: 'ffff99'},
22
23
    highlight: function(elm, options) {
24
        var base = new AJS.fx.Base();
25
        base.elm = AJS.$(elm);
26
        base.setOptions(options);
27
        base.options.duration = 600;
28
29
        AJS.update(base, {
30
            increase: function(){
31
                if(this.now == 7)
32
                    elm.style.backgroundColor = 'transparent';
33
                else
34
                    elm.style.backgroundColor = '#' + AJS.fx._shades[Math.floor(this.now)];
35
            }
36
        });
37
        return base.custom(6, 0);
38
    },
39
40
    fadeIn: function(elm, options) {
41
        options = options || {};
42
        if(!options.from) {
43
            options.from = 0;
44
            AJS.setOpacity(elm, 0);
45
        }
46
        if(!options.to) options.to = 1;
47
        var s = new AJS.fx.Style(elm, 'opacity', options);
48
        return s.custom(options.from, options.to);
49
    },
50
51
    fadeOut: function(elm, options) {
52
        options = options || {};
53
        if(!options.from) options.from = 1;
54
        if(!options.to) options.to = 0;
55
        options.duration = 300;
56
        var s = new AJS.fx.Style(elm, 'opacity', options);
57
        return s.custom(options.from, options.to);
58
    },
59
60
    setWidth: function(elm, options) {
61
        var s = new AJS.fx.Style(elm, 'width', options);
62
        return s.custom(options.from, options.to);
63
    },
64
65
    setHeight: function(elm, options) {
66
        var s = new AJS.fx.Style(elm, 'height', options);
67
        return s.custom(options.from, options.to);
68
    }
69
}
70
71
72
//From moo.fx
73
AJS.fx.Base = new AJS.Class({
74
    init: function() {
75
        AJS.bindMethods(this);
76
    },
77
78
    setOptions: function(options){
79
        this.options = AJS.update({
80
                onStart: function(){},
81
                onComplete: function(){},
82
                transition: AJS.fx.Transitions.sineInOut,
83
                duration: 500,
84
                wait: true,
85
                fps: 50
86
        }, options || {});
87
    },
88
89
    step: function(){
90
        var time = new Date().getTime();
91
        if (time < this.time + this.options.duration){
92
            this.cTime = time - this.time;
93
            this.setNow();
94
        } else {
95
            setTimeout(AJS.$b(this.options.onComplete, this, [this.elm]), 10);
96
            this.clearTimer();
97
            this.now = this.to;
98
        }
99
        this.increase();
100
    },
101
102
    setNow: function(){
103
        this.now = this.compute(this.from, this.to);
104
    },
105
106
    compute: function(from, to){
107
        var change = to - from;
108
        return this.options.transition(this.cTime, from, change, this.options.duration);
109
    },
110
111
    clearTimer: function(){
112
        clearInterval(this.timer);
113
        this.timer = null;
114
        return this;
115
    },
116
117
    _start: function(from, to){
118
        if (!this.options.wait) this.clearTimer();
119
        if (this.timer) return;
120
        setTimeout(AJS.$p(this.options.onStart, this.elm), 10);
121
        this.from = from;
122
        this.to = to;
123
        this.time = new Date().getTime();
124
        this.timer = setInterval(this.step, Math.round(1000/this.options.fps));
125
        return this;
126
    },
127
128
    custom: function(from, to){
129
        return this._start(from, to);
130
    },
131
132
    set: function(to){
133
        this.now = to;
134
        this.increase();
135
        return this;
136
    },
137
138
    setStyle: function(elm, property, val) {
139
        if(this.property == 'opacity')
140
            AJS.setOpacity(elm, val);
141
        else
142
            AJS.setStyle(elm, property, val);
143
    }
144
});
145
146
AJS.fx.Style = AJS.fx.Base.extend({
147
    init: function(elm, property, options) {
148
        this.parent();
149
        this.elm = elm;
150
        this.setOptions(options);
151
        this.property = property;
152
    },
153
154
    increase: function(){
155
        this.setStyle(this.elm, this.property, this.now);
156
    }
157
});
158
159
AJS.fx.Styles = AJS.fx.Base.extend({
160
    init: function(elm, options){
161
        this.parent();
162
        this.elm = AJS.$(elm);
163
        this.setOptions(options);
164
        this.now = {};
165
    },
166
167
    setNow: function(){
168
        for (p in this.from)
169
            this.now[p] = this.compute(this.from[p], this.to[p]);
170
    },
171
172
    custom: function(obj){
173
        if (this.timer && this.options.wait) return;
174
        var from = {};
175
        var to = {};
176
        for (p in obj){
177
                from[p] = obj[p][0];
178
                to[p] = obj[p][1];
179
        }
180
        return this._start(from, to);
181
    },
182
183
    increase: function(){
184
        for (var p in this.now) this.setStyle(this.elm, p, this.now[p]);
185
    }
186
});
187
188
//Transitions (c) 2003 Robert Penner (http://www.robertpenner.com/easing/), BSD License.
189
AJS.fx.Transitions = {
190
    linear: function(t, b, c, d) { return c*t/d + b; },
191
    sineInOut: function(t, b, c, d) { return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; }
192
};
193
194
script_loaded = true;
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/greybox_source/base/base.css (-32 lines)
Lines 1-32 Link Here
1
/* Last-Modified: 28/06/06 00:08:22 */
2
#GB_overlay {
3
    background-color: #000;
4
    position: absolute;
5
    margin: auto;
6
    top: 0;
7
    left: 0;
8
    z-index: 100;
9
}
10
11
#GB_window {
12
    left: 0;
13
    top: 0;
14
    font-size: 1px;
15
    position: absolute;
16
    overflow: visible;
17
    z-index: 150;
18
}
19
20
#GB_window .content {
21
    width: auto;
22
    margin: 0;
23
    padding: 0;
24
}
25
26
#GB_frame {
27
    border: 0;
28
    margin: 0;
29
    padding: 0;
30
    overflow: auto;
31
    white-space: nowrap;
32
}
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/greybox_source/base/base.js (-192 lines)
Lines 1-192 Link Here
1
var GB_CURRENT = null;
2
3
GB_hide = function() {
4
    GB_CURRENT.hide();
5
}
6
7
GreyBox = new AJS.Class({
8
    init: function(options) {
9
        this.use_fx = AJS.fx;
10
        this.type = "page";
11
        this.overlay_click_close = false;
12
        this.salt = 0;
13
        this.root_dir = GB_ROOT_DIR;
14
        this.callback_fns = [];
15
        this.reload_on_close = false;
16
        this.src_loader = this.root_dir + 'loader_frame.html';
17
18
        //Solve the www issue
19
        var h_www = window.location.hostname.indexOf('www');
20
        var src_www = this.src_loader.indexOf('www');
21
        if(h_www != -1 && src_www == -1)
22
            this.src_loader = this.src_loader.replace('://', '://www.');
23
24
        if(h_www == -1 && src_www != -1)
25
            this.src_loader = this.src_loader.replace('://www.', '://');
26
27
        this.show_loading = true;
28
        AJS.update(this, options);
29
    },
30
31
    addCallback: function(fn) {
32
        if(fn) this.callback_fns.push(fn);
33
    },
34
35
    show: function(url) {
36
        GB_CURRENT = this;
37
        this.url = url;
38
39
        var elms = [AJS.$bytc("object"), AJS.$bytc("select")];
40
        AJS.map(AJS.flattenList(elms), function(elm) {
41
            elm.style.visibility = "hidden";
42
        });
43
44
        this.createElements();
45
        return false;
46
    },
47
48
    hide: function() {
49
        var c_bs = this.callback_fns;
50
        if(c_bs != []) {
51
            AJS.map(c_bs, function(fn) {
52
                fn();
53
            });
54
        }
55
56
        this.onHide();
57
        if(this.use_fx) {
58
            var elm = this.overlay;
59
            AJS.fx.fadeOut(this.overlay, {
60
                onComplete: function() {
61
                    AJS.removeElement(elm);
62
                    elm = null;
63
                },
64
                duration: 300
65
            });
66
            AJS.removeElement(this.g_window);
67
        }
68
        else {
69
            AJS.removeElement(this.g_window, this.overlay);
70
        }
71
72
        this.removeFrame();
73
74
        AJS.REV(window, "scroll", _GB_setOverlayDimension);
75
        AJS.REV(window, "resize", _GB_update);
76
77
        var elms = [AJS.$bytc("object"), AJS.$bytc("select")];
78
        AJS.map(AJS.flattenList(elms), function(elm) {
79
            elm.style.visibility = "visible";
80
        });
81
82
        GB_CURRENT = null;
83
84
        if(this.reload_on_close)
85
            window.location.reload();
86
    },
87
88
    update: function() {
89
        this.setOverlayDimension();
90
        this.setFrameSize();
91
        this.setWindowPosition();
92
    },
93
94
    createElements: function() {
95
        this.initOverlay();
96
97
        this.g_window = AJS.DIV({'id': 'GB_window'});
98
        AJS.hideElement(this.g_window);
99
        AJS.getBody().insertBefore(this.g_window, this.overlay.nextSibling);
100
101
        this.initFrame();
102
        this.initHook();
103
        this.update();
104
105
        var me = this;
106
        if(this.use_fx) {
107
            AJS.fx.fadeIn(this.overlay, {
108
                duration: 300,
109
                to: 0.7,
110
                onComplete: function() {
111
                    me.onShow();
112
                    AJS.showElement(me.g_window);
113
                    me.startLoading();
114
                }
115
            });
116
        }
117
        else {
118
            AJS.setOpacity(this.overlay, 0.7);
119
            AJS.showElement(this.g_window);
120
            this.onShow();
121
            this.startLoading();
122
        }
123
124
        AJS.AEV(window, "scroll", _GB_setOverlayDimension);
125
        AJS.AEV(window, "resize", _GB_update);
126
    },
127
128
    removeFrame: function() {
129
        try{ AJS.removeElement(this.iframe); }
130
        catch(e) {}
131
132
        this.iframe = null;
133
    },
134
135
    startLoading: function() {
136
        this.iframe.src = this.src_loader + '?s='+this.salt++;
137
        AJS.showElement(this.iframe);
138
    },
139
140
    setOverlayDimension: function() {
141
        var page_size = AJS.getWindowSize();
142
        if(AJS.isMozilla() || AJS.isOpera())
143
            AJS.setWidth(this.overlay, "100%");
144
        else
145
            AJS.setWidth(this.overlay, page_size.w);
146
147
        var max_height = Math.max(AJS.getScrollTop()+page_size.h, AJS.getScrollTop()+this.height);
148
149
        if(max_height < AJS.getScrollTop())
150
            AJS.setHeight(this.overlay, max_height);
151
        else
152
            AJS.setHeight(this.overlay, AJS.getScrollTop()+page_size.h);
153
    },
154
155
    initOverlay: function() {
156
        this.overlay = AJS.DIV({'id': 'GB_overlay'});
157
158
        if(this.overlay_click_close)
159
            AJS.AEV(this.overlay, "click", GB_hide);
160
161
        AJS.setOpacity(this.overlay, 0);
162
        AJS.getBody().insertBefore(this.overlay, AJS.getBody().firstChild);
163
    },
164
165
    initFrame: function() {
166
        if(!this.iframe) {
167
            var d = {'name': 'GB_frame', 'class': 'GB_frame', 'frameBorder': 0};
168
            this.iframe = AJS.IFRAME(d);
169
            this.middle_cnt = AJS.DIV({'class': 'content'}, this.iframe);
170
171
            this.top_cnt = AJS.DIV();
172
            this.bottom_cnt = AJS.DIV();
173
174
            AJS.ACN(this.g_window, this.top_cnt, this.middle_cnt, this.bottom_cnt);
175
        }
176
    },
177
178
    /* Can be implemented */
179
    onHide: function() {},
180
    onShow: function() {},
181
    setFrameSize: function() {},
182
    setWindowPosition: function() {},
183
    initHook: function() {}
184
185
});
186
187
_GB_update = function() { if(GB_CURRENT) GB_CURRENT.update(); }
188
_GB_setOverlayDimension = function() { if(GB_CURRENT) GB_CURRENT.setOverlayDimension(); }
189
190
AJS.preloadImages(GB_ROOT_DIR+'indicator.gif');
191
192
script_loaded = true;
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/greybox_source/base/loader_frame.html (-104 lines)
Lines 1-104 Link Here
1
<!--
2
Notice: I feel so dirty doing this, but its the only way to make it cross browser.
3
-->
4
<html>
5
<head>
6
  <script>
7
    var GB = parent.GB_CURRENT;
8
    document.write('<script type="text/javascript" src="AJS.js"><\/script>');
9
    if(GB.use_fx) {
10
        document.write('<script type="text/javascript" src="AJS_fx.js"><\/script>');
11
    }
12
  </script>
13
  <style>
14
    body {
15
      padding: 0;
16
      margin: 0;
17
      overflow: hidden;
18
    }
19
20
    #GB_frame {
21
      visibility: hidden;
22
      width: 100%;
23
      height: 100%;
24
    }
25
26
    #loading {
27
      padding-top: 50px;
28
      position: absolute;
29
      width: 100%;
30
      top: 0;
31
      text-align: center;
32
      vertical-align: middle;
33
    }
34
  </style>
35
</head>
36
<body>
37
38
<div id="loading">
39
  <img src="indicator.gif">
40
</div>
41
42
<script>
43
var loading = AJS.$('loading');
44
var gb_type = GB.type;
45
var gb_url = GB.url;
46
47
//Start loading in the iframe
48
if(gb_type == "page") {
49
  document.write('<iframe id="GB_frame" src="' + gb_url + '" frameborder="0"></iframe>');
50
}
51
else {
52
  var img_holder = new Image();
53
  img_holder.src = gb_url;
54
  document.write('<img id="GB_frame" src="' + gb_url + '">');
55
}
56
var frame = AJS.$('GB_frame');
57
</script>
58
59
</body>
60
<script>
61
function setupOuterGB() {
62
    frame.style.visibility = 'visible';
63
    GB.setFrameSize();
64
    GB.setWindowPosition();
65
}
66
67
function loaded() {
68
    AJS.removeElement(loading);
69
70
    GB.overlay.innerHTML += "&nbsp;"; //Safari bugfix
71
72
    if(gb_type == "image") {
73
        if(img_holder.width != 0 && img_holder.height != 0) {
74
            var width = img_holder.width;
75
            var height = img_holder.height;
76
77
            GB.width = width;
78
            GB.height = height;
79
80
            setupOuterGB();
81
82
            if(GB.use_fx) {
83
                AJS.setOpacity(frame, 0);
84
                AJS.fx.fadeIn(frame);
85
            }
86
        }
87
    }
88
    else {
89
        GB.width = frame.offsetWidth;
90
        GB.height = frame.offsetHeight;
91
        setupOuterGB();
92
    }
93
}
94
95
if(GB.show_loading) {
96
    AJS.AEV(window, 'load', function(e) {
97
        loaded();
98
    });
99
}
100
else {
101
    loaded();
102
}
103
</script>
104
</html>
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/greybox_source/gallery/gallery.css (-51 lines)
Lines 1-51 Link Here
1
.GB_Gallery {
2
    margin: 0 22px 0 22px;
3
}
4
5
.GB_Gallery .content {
6
    background-color: #fff;
7
    border: 3px solid #ddd;
8
}
9
10
.GB_header {
11
    top: 10px;
12
    left: 0;
13
    margin: 0;
14
    z-index: 500;
15
    position: absolute;
16
    border-bottom: 2px solid #555;
17
    border-top: 2px solid #555;
18
}
19
20
.GB_header .inner {
21
    background-color: #333;
22
    font-family: Arial, Verdana, sans-serif;
23
    padding: 2px 20px 2px 20px;
24
}
25
26
.GB_header table {
27
    margin: 0;
28
    width: 100%;
29
    border-collapse: collapse;
30
}
31
32
.GB_header .caption {
33
    text-align: left;
34
    color: #eee;
35
    white-space: nowrap;
36
    font-size: 20px;
37
}
38
39
.GB_header .close {
40
    text-align: right;
41
}
42
43
.GB_header .close img {
44
    z-index: 500;
45
    cursor: pointer;
46
}
47
48
.GB_header .middle {
49
    white-space: nowrap;
50
    text-align: center;
51
}
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/greybox_source/gallery/gallery.js (-114 lines)
Lines 1-114 Link Here
1
GB_showImage = function(caption, url, callback_fn) {
2
    var options = {
3
        width: 300,
4
        height: 300,
5
        type: 'image',
6
7
        fullscreen: false,
8
        center_win: true,
9
        caption: caption,
10
        callback_fn: callback_fn
11
    }
12
    var win = new GB_Gallery(options);
13
    return win.show(url);
14
}
15
16
GB_showPage = function(caption, url, callback_fn) {
17
    var options = {
18
        type: 'page',
19
20
        caption: caption,
21
        callback_fn: callback_fn,
22
        fullscreen: true,
23
        center_win: false
24
    }
25
    var win = new GB_Gallery(options);
26
    return win.show(url);
27
}
28
29
GB_Gallery = GreyBox.extend({
30
    init: function(options) {
31
        this.parent({});
32
        this.img_close = this.root_dir + 'g_close.gif';
33
        AJS.update(this, options);
34
        this.addCallback(this.callback_fn);
35
    },
36
37
    initHook: function() {
38
        AJS.addClass(this.g_window, 'GB_Gallery');
39
40
        var inner = AJS.DIV({'class': 'inner'});
41
        this.header = AJS.DIV({'class': 'GB_header'}, inner);
42
        AJS.setOpacity(this.header, 0);
43
        AJS.getBody().insertBefore(this.header, this.overlay.nextSibling);
44
45
        var td_caption = AJS.TD({'id': 'GB_caption', 'class': 'caption', 'width': '40%'}, this.caption);
46
        var td_middle = AJS.TD({'id': 'GB_middle', 'class': 'middle', 'width': '20%'});
47
48
        var img_close = AJS.IMG({'src': this.img_close});
49
        AJS.AEV(img_close, 'click', GB_hide);
50
        var td_close = AJS.TD({'class': 'close', 'width': '40%'}, img_close);
51
52
        var tbody = AJS.TBODY(AJS.TR(td_caption, td_middle, td_close));
53
54
        var table = AJS.TABLE({'cellspacing': '0', 'cellpadding': 0, 'border': 0}, tbody);
55
        AJS.ACN(inner, table);
56
57
        if(this.fullscreen)
58
            AJS.AEV(window, 'scroll', AJS.$b(this.setWindowPosition, this));
59
        else
60
            AJS.AEV(window, 'scroll', AJS.$b(this._setHeaderPos, this));
61
    },
62
63
    setFrameSize: function() {
64
        var overlay_w = this.overlay.offsetWidth;
65
        var page_size = AJS.getWindowSize();
66
67
        if(this.fullscreen) {
68
            this.width = overlay_w-40;
69
            this.height = page_size.h-80;
70
        }
71
        AJS.setWidth(this.iframe, this.width);
72
        AJS.setHeight(this.iframe, this.height);
73
74
        AJS.setWidth(this.header, overlay_w);
75
    },
76
77
    _setHeaderPos: function() {
78
        AJS.setTop(this.header, AJS.getScrollTop()+10);
79
    },
80
81
    setWindowPosition: function() {
82
        var overlay_w = this.overlay.offsetWidth;
83
        var page_size = AJS.getWindowSize();
84
        AJS.setLeft(this.g_window, ((overlay_w - 50 - this.width)/2));
85
86
        var header_top = AJS.getScrollTop()+55;
87
        if(!this.center_win) {
88
            AJS.setTop(this.g_window, header_top);
89
        }
90
        else {
91
            var fl = ((page_size.h - this.height) /2) + 20 + AJS.getScrollTop();
92
            if(fl < 0) fl = 0;
93
            if(header_top > fl) {
94
                fl = header_top;
95
            }
96
            AJS.setTop(this.g_window, fl);
97
        }
98
        this._setHeaderPos();
99
    },
100
101
    onHide: function() {
102
        AJS.removeElement(this.header);
103
        AJS.removeClass(this.g_window, 'GB_Gallery');
104
    },
105
106
    onShow: function() {
107
        if(this.use_fx)
108
            AJS.fx.fadeIn(this.header, {to: 1});
109
        else
110
            AJS.setOpacity(this.header, 1);
111
    }
112
});
113
114
AJS.preloadImages(GB_ROOT_DIR+'g_close.gif');
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/greybox_source/set/set.css (-20 lines)
Lines 1-20 Link Here
1
#GB_middle {
2
    color: #eee;
3
}
4
5
#GB_middle img {
6
    cursor: pointer;
7
    vertical-align: middle;
8
}
9
10
#GB_middle .disabled {
11
    cursor: default;
12
}
13
14
#GB_middle .left {
15
    padding-right: 10px;
16
}
17
18
#GB_middle .right {
19
    padding-left: 10px;
20
}
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/greybox_source/set/set.js (-101 lines)
Lines 1-101 Link Here
1
GB_showFullScreenSet = function(set, start_index, callback_fn) {
2
    var options = {
3
        type: 'page',
4
        fullscreen: true,
5
        center_win: false
6
    }
7
    var gb_sets = new GB_Sets(options, set);
8
    gb_sets.addCallback(callback_fn);
9
    gb_sets.showSet(start_index-1);
10
    return false;
11
}
12
13
GB_showImageSet = function(set, start_index, callback_fn) {
14
    var options = {
15
        type: 'image',
16
        fullscreen: false,
17
        center_win: true,
18
        width: 300,
19
        height: 300
20
    }
21
    var gb_sets = new GB_Sets(options, set);
22
    gb_sets.addCallback(callback_fn);
23
    gb_sets.showSet(start_index-1);
24
    return false;
25
}
26
27
GB_Sets = GB_Gallery.extend({
28
    init: function(options, set) {
29
        this.parent(options);
30
        if(!this.img_next) this.img_next = this.root_dir + 'next.gif';
31
        if(!this.img_prev) this.img_prev = this.root_dir + 'prev.gif';
32
        this.current_set = set;
33
    },
34
35
    showSet: function(start_index) {
36
        this.current_index = start_index;
37
38
        var item = this.current_set[this.current_index];
39
        this.show(item.url);
40
        this._setCaption(item.caption);
41
42
        this.btn_prev = AJS.IMG({'class': 'left', src: this.img_prev});
43
        this.btn_next = AJS.IMG({'class': 'right', src: this.img_next});
44
45
        AJS.AEV(this.btn_prev, 'click', AJS.$b(this.switchPrev, this));
46
        AJS.AEV(this.btn_next, 'click', AJS.$b(this.switchNext, this));
47
48
        GB_STATUS = AJS.SPAN({'class': 'GB_navStatus'});
49
        AJS.ACN(AJS.$('GB_middle'), this.btn_prev, GB_STATUS, this.btn_next);
50
51
        this.updateStatus();
52
    },
53
54
    updateStatus: function() {
55
        AJS.setHTML(GB_STATUS, (this.current_index + 1) + ' / ' + this.current_set.length);
56
        if(this.current_index == 0) {
57
            AJS.addClass(this.btn_prev, 'disabled');
58
        }
59
        else {
60
            AJS.removeClass(this.btn_prev, 'disabled');
61
        }
62
63
        if(this.current_index == this.current_set.length-1) {
64
            AJS.addClass(this.btn_next, 'disabled');
65
        }
66
        else {
67
            AJS.removeClass(this.btn_next, 'disabled');
68
        }
69
    },
70
71
    _setCaption: function(caption) {
72
        AJS.setHTML(AJS.$('GB_caption'), caption);
73
    },
74
75
    updateFrame: function() {
76
        var item = this.current_set[this.current_index];
77
        this._setCaption(item.caption);
78
        this.url = item.url;
79
        this.startLoading();
80
    },
81
82
    switchPrev: function() {
83
        if(this.current_index != 0) {
84
            this.current_index--;
85
            this.updateFrame();
86
            this.updateStatus();
87
        }
88
    },
89
90
    switchNext: function() {
91
        if(this.current_index != this.current_set.length-1) {
92
            this.current_index++
93
            this.updateFrame();
94
            this.updateStatus();
95
        }
96
    }
97
});
98
99
AJS.AEV(window, 'load', function() {
100
    AJS.preloadImages(GB_ROOT_DIR+'next.gif', GB_ROOT_DIR+'prev.gif');
101
});
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/greybox_source/window/window.css (-39 lines)
Lines 1-39 Link Here
1
.GB_Window .content {
2
    background-color: #fff;
3
    border: 3px solid #ccc;
4
    border-top: none;
5
}
6
7
.GB_Window .header {
8
    border-bottom: 1px solid #aaa;
9
    border-top: 1px solid #999;
10
    border-left: 3px solid #ccc;
11
    border-right: 3px solid #ccc;
12
    margin: 0;
13
14
    height: 22px;
15
    font-size: 12px;
16
    padding: 3px 0;
17
    color: #333;
18
}
19
20
.GB_Window .caption {
21
    font-size: 12px;
22
    text-align: left;
23
    font-weight: bold;
24
    white-space: nowrap;
25
    padding-right: 20px;
26
}
27
28
.GB_Window .close { text-align: right; }
29
.GB_Window .close span {
30
    font-size: 12px;
31
    cursor: pointer;
32
}
33
.GB_Window .close img {
34
    cursor: pointer;
35
    padding: 0 3px 0 0;
36
}
37
38
.GB_Window .on { border-bottom: 1px solid #333; }
39
.GB_Window .click { border-bottom: 1px solid red; }
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/greybox_source/window/window.js (-109 lines)
Lines 1-109 Link Here
1
GB_show = function(caption, url, /* optional */ height, width, callback_fn) {
2
    var options = {
3
        caption: caption,
4
        height: height || 500,
5
        width: width || 500,
6
        fullscreen: false,
7
        callback_fn: callback_fn
8
    }
9
    var win = new GB_Window(options);
10
    return win.show(url);
11
}
12
13
GB_showCenter = function(caption, url, /* optional */ height, width, callback_fn) {
14
    var options = {
15
        caption: caption,
16
        center_win: true,
17
        height: height || 500,
18
        width: width || 500,
19
        fullscreen: false,
20
        callback_fn: callback_fn
21
    }
22
    var win = new GB_Window(options);
23
    return win.show(url);
24
}
25
26
GB_showFullScreen = function(caption, url, callback_fn) {
27
    var options = {
28
        caption: caption,
29
        fullscreen: true,
30
        callback_fn: callback_fn
31
    }
32
    var win = new GB_Window(options);
33
    return win.show(url);
34
}
35
36
GB_Window = GreyBox.extend({
37
    init: function(options) {
38
        this.parent({});
39
        this.img_header = this.root_dir+"header_bg.gif";
40
        this.img_close = this.root_dir+"w_close.gif";
41
        this.show_close_img = true;
42
        AJS.update(this, options);
43
        this.addCallback(this.callback_fn);
44
    },
45
46
    initHook: function() {
47
        AJS.addClass(this.g_window, 'GB_Window');
48
49
        this.header = AJS.TABLE({'class': 'header'});
50
        this.header.style.backgroundImage = "url("+ this.img_header +")";
51
52
        var td_caption = AJS.TD({'class': 'caption'}, this.caption);
53
        var td_close = AJS.TD({'class': 'close'});
54
55
        if(this.show_close_img) {
56
            var img_close = AJS.IMG({'src': this.img_close});
57
            var span = AJS.SPAN('Close');
58
59
            var btn = AJS.DIV(img_close, span);
60
61
            AJS.AEV([img_close, span], 'mouseover', function() { AJS.addClass(span, 'on'); });
62
            AJS.AEV([img_close, span], 'mouseout', function() { AJS.removeClass(span, 'on'); });
63
            AJS.AEV([img_close, span], 'mousedown', function() { AJS.addClass(span, 'click'); });
64
            AJS.AEV([img_close, span], 'mouseup', function() { AJS.removeClass(span, 'click'); });
65
            AJS.AEV([img_close, span], 'click', GB_hide);
66
67
            AJS.ACN(td_close, btn);
68
        }
69
70
        tbody_header = AJS.TBODY();
71
        AJS.ACN(tbody_header, AJS.TR(td_caption, td_close));
72
73
        AJS.ACN(this.header, tbody_header);
74
        AJS.ACN(this.top_cnt, this.header);
75
76
        if(this.fullscreen)
77
            AJS.AEV(window, 'scroll', AJS.$b(this.setWindowPosition, this));
78
    },
79
80
    setFrameSize: function() {
81
        if(this.fullscreen) {
82
            var page_size = AJS.getWindowSize();
83
            overlay_h = page_size.h;
84
            this.width = Math.round(this.overlay.offsetWidth - (this.overlay.offsetWidth/100)*10);
85
            this.height = Math.round(overlay_h - (overlay_h/100)*10);
86
        }
87
88
        AJS.setWidth(this.header, this.width+6); //6 is for the left+right border
89
        AJS.setWidth(this.iframe, this.width);
90
        AJS.setHeight(this.iframe, this.height);
91
    },
92
93
    setWindowPosition: function() {
94
        var page_size = AJS.getWindowSize();
95
        AJS.setLeft(this.g_window, ((page_size.w - this.width)/2)-13);
96
97
        if(!this.center_win) {
98
            AJS.setTop(this.g_window, AJS.getScrollTop());
99
        }
100
        else {
101
            var fl = ((page_size.h - this.height) /2) - 20 + AJS.getScrollTop();
102
            if(fl < 0)
103
                fl = 0;
104
            AJS.setTop(this.g_window, fl);
105
        }
106
    }
107
});
108
109
AJS.preloadImages(GB_ROOT_DIR+'w_close.gif', GB_ROOT_DIR+'header_bg.gif');
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/installation.html (-49 lines)
Lines 1-49 Link Here
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
3
<head>
4
    <title>GreyBox - Installation</title>
5
6
    <script type="text/javascript" src="greybox/AJS.js"></script>
7
8
    <script type="text/javascript" src="static_files/help.js"></script>
9
    <link href="static_files/help.css" rel="stylesheet" type="text/css" media="all" />
10
</head>
11
<body>
12
13
<script>
14
    insertHeader();
15
    insertMenu('installation');
16
</script>
17
18
<ol>
19
<li>
20
Append following to your header section (in between <code>&lt;header&gt;...&lt;/header&gt;</code>).
21
<br />
22
<span class="hl">GB_ROOT_DIR</span> is the URL where static files are located:
23
<pre>
24
<code>&lt;script type="text/javascript"&gt;
25
    var GB_ROOT_DIR = "http://mydomain.com/greybox/";
26
&lt;/script&gt;</code>
27
</pre>
28
</li>
29
GB_ROOT_DIR should be absolute.
30
31
<li>
32
Append also following scripts and one stylesheet:
33
<pre>
34
<code>&lt;script type="text/javascript" src="greybox/AJS.js"&gt;&lt;/script&gt;
35
&lt;script type="text/javascript" src="greybox/AJS_fx.js"&gt;&lt;/script&gt;
36
&lt;script type="text/javascript" src="greybox/gb_scripts.js"&gt;&lt;/script&gt;
37
&lt;link href="greybox/gb_styles.css" rel="stylesheet" type="text/css" /&gt;</code>
38
</pre>
39
40
AJS_fx.js is optional, it's used for effects. If you don't wish effects, then don't include AJS_fx.js in your header section.
41
</li>
42
43
<li>
44
That's it, you are now ready to use GreyBox!
45
</li>
46
</ol>
47
48
</body>
49
</html>
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/normal_usage.html (-126 lines)
Lines 1-126 Link Here
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
3
<head>
4
    <title>GreyBox - Normal usage</title>
5
6
    <script type="text/javascript">
7
        var GB_ROOT_DIR = "./greybox/";
8
    </script>
9
10
    <script type="text/javascript" src="greybox/AJS.js"></script>
11
    <script type="text/javascript" src="greybox/AJS_fx.js"></script>
12
    <script type="text/javascript" src="greybox/gb_scripts.js"></script>
13
    <link href="greybox/gb_styles.css" rel="stylesheet" type="text/css" media="all" />
14
15
    <script type="text/javascript" src="static_files/help.js"></script>
16
    <link href="static_files/help.css" rel="stylesheet" type="text/css" media="all" />
17
</head>
18
19
<body>
20
21
<script>
22
    insertHeader();
23
    insertMenu('nrm_usage');
24
</script>
25
26
<h2>Showing images</h2>
27
28
<h3 class="first">Showing one image:</h3>
29
<h4>Syntax:</h4>
30
<pre>
31
<code>&lt;a href="URL" title="CAPTION" rel="gb_image[]"&gt;HTML&lt;/a&gt;</code>
32
</pre>
33
34
<h4>Example:</h4>
35
<pre>
36
<code>&lt;a href="http://static.flickr.com/119/294309231_a3d2a339b9.jpg" title="Flower" rel="gb_image[]"&gt;Show flower&lt;/a&gt;</code>
37
</pre>
38
39
<h4>Example rendered:</h4>
40
<a href="http://static.flickr.com/119/294309231_a3d2a339b9.jpg" title="Flower" rel="gb_image[]">Show flower</a>
41
42
43
<h3>Showing a group of images:</h3>
44
<h4>Syntax:</h4>
45
<pre>
46
<code>&lt;a href="URL" title="CAPTION" rel="gb_imageset[NAME]"&gt;HTML&lt;/a&gt;</code>
47
<code>&lt;a href="URL" title="CAPTION" rel="gb_imageset[NAME]"&gt;HTML&lt;/a&gt;</code>
48
</pre>
49
50
<h4>Example:</h4>
51
<pre>
52
<code>&lt;a href="static_files/salt.jpg" rel="gb_imageset[nice_pics]" title="Salt flats in Chile"&gt;Salt flats&lt;/a&gt;</code>
53
<code>&lt;a href="static_files/night_valley.jpg" rel="gb_imageset[nice_pics]" title="Night valley"&gt;Night valley&lt;/a&gt;</code>
54
</pre>
55
56
<h4>Example rendered:</h4>
57
<a href="static_files/salt.jpg" rel="gb_imageset[nice_pics]" title="Salt flats in Chile">Salt flats</a>
58
<a href="static_files/night_valley.jpg" rel="gb_imageset[nice_pics]" title="Night valley">Night valley</a>
59
60
61
<h2>Showing pages</h2>
62
63
<h3>Showing one page:</h3>
64
<h4>Syntax:</h4>
65
<pre>
66
<code>&lt;a href="URL" title="CAPTION" rel="gb_page[WIDTH, HEIGHT]"&gt;HTML&lt;/a&gt;</code>
67
</pre>
68
69
<h4>Example:</h4>
70
<pre>
71
<code>&lt;a href="http://google.com/" title="Google" rel="gb_page[500, 500]"&gt;Launch Google.com&lt;/a&gt;</code>
72
</pre>
73
74
<h4>Example rendered:</h4>
75
<a href="http://google.com/" title="Google" rel="gb_page[500, 500]">Launch Google.com</a>
76
77
78
<h3>Showing one page as center window:</h3>
79
<h4>Syntax:</h4>
80
<pre>
81
<code>&lt;a href="URL" title="CAPTION" rel="gb_page_center[WIDTH, HEIGHT]"&gt;HTML&lt;/a&gt;</code>
82
</pre>
83
84
<h4>Example:</h4>
85
<pre>
86
<code>&lt;a href="http://google.com/" title="Google" rel="gb_page_center[500, 500]"&gt;Launch Google.com&lt;/a&gt;</code>
87
</pre>
88
89
<h4>Example rendered:</h4>
90
<a href="http://google.com/" title="Google" rel="gb_page_center[500, 500]">Launch Google.com</a>
91
92
93
<h3>Showing one page in fullscreen:</h3>
94
<h4>Syntax:</h4>
95
<pre>
96
<code>&lt;a href="URL" title="CAPTION" rel="gb_page_fs[]"&gt;HTML&lt;/a&gt;</code>
97
</pre>
98
99
<h4>Example:</h4>
100
<pre>
101
<code>&lt;a href="http://google.com/" title="Google" rel="gb_page_fs[]"&gt;Launch Google.com&lt;/a&gt;</code>
102
</pre>
103
104
<h4>Example rendered:</h4>
105
<a href="http://google.com/" title="Google" rel="gb_page_fs[]">Launch Google.com</a>
106
107
<h3>Showing a group of pages:</h3>
108
<h4>Syntax:</h4>
109
<pre>
110
<code>&lt;a href="URL" title="CAPTION" rel="gb_pageset[NAME]"&gt;HTML&lt;/a&gt;</code>
111
<code>&lt;a href="URL" title="CAPTION" rel="gb_pageset[NAME]"&gt;HTML&lt;/a&gt;</code>
112
</pre>
113
114
<h4>Example:</h4>
115
<pre>
116
<code>&lt;a href="http://google.com/" title="Google" rel="gb_pageset[search_sites]"&gt;Launch Google search&lt;/a&gt;</code>
117
<code>&lt;a href="http://search.yahoo.com/" rel="gb_pageset[search_sites]"&gt;Launch Yahoo search&lt;/a&gt;</code>
118
</pre>
119
120
<h4>Example rendered:</h4>
121
<a href="http://google.com/" title="Google" rel="gb_pageset[search_sites]">Launch Google search</a>
122
<a href="http://search.yahoo.com/" rel="gb_pageset[search_sites]">Launch Yahoo search</a>
123
124
125
</body>
126
</html>
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/static_files/help.css (-93 lines)
Lines 1-93 Link Here
1
body {
2
    font-family: helvetica, verdana, sans-serif;
3
    font-size: 12px;
4
    background-color: #fff;
5
    padding: 10px 35px 35px 35px;
6
    width: 800px;
7
    margin: auto;
8
}
9
10
#top {
11
    text-align: center;
12
}
13
14
h2 {
15
    font-size: 18px;
16
    color: #333;
17
    margin: 35px 0 10px 0;
18
}
19
20
h3 {
21
    color: #333;
22
    border-bottom: 1px solid #999;
23
    font-size: 15px;
24
    margin: 30px 0 3px 0;
25
}
26
27
.first {
28
    margin-top: 20px;
29
}
30
31
h4 {
32
    color: black;
33
    font-size: 13px;
34
    margin: 10px 0 5px 0;
35
}
36
37
pre {
38
    font-size: 11px;
39
    margin-top: 5px;
40
    padding: 4px;
41
    background-color: #e3e2c6;
42
    border: 1px solid #999;
43
}
44
45
.hl {
46
    background-color: #ffffcc;
47
}
48
49
ol {
50
    margin: 0;
51
    padding: 0 0px 0 20px;
52
}
53
54
li {
55
    padding: 5px 0 5px 0;
56
}
57
58
img {
59
    border: 0;
60
}
61
62
/*
63
 * Menu
64
 */
65
#menu {
66
    border-bottom: 1px solid #999;
67
    margin: 20px 0px;
68
    padding: 10px 0pt 5px;
69
    text-align: center;
70
}
71
72
#menu li {
73
    display: inline;
74
    margin: 0px;
75
    padding: 0px;
76
}
77
78
#menu a {
79
    background: #ddd none repeat;
80
    border: 1px solid #999;
81
    margin: 0 5px 0 5px;
82
    padding: 5px;
83
}
84
85
#menu a.current {
86
    background: #fff none repeat;
87
    border-bottom: 1px solid #fff;
88
}
89
90
#menu a {
91
    color: black;
92
    text-decoration: none;
93
}
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/GreyBox_v5_5/static_files/help.js (-52 lines)
Lines 1-52 Link Here
1
var tmpl_header = AJS.join('', [
2
    '<div id="top"> <img src="static_files/logo.gif" alt="" /> <br />',
3
    '<span style="font-weight: bold; color: #333">A pop-up window that doesn\'t suck.</span>',
4
    '</div>'
5
]);
6
7
function insertHeader() {
8
    AJS.DI(tmpl_header);
9
}
10
11
var LINKS = {
12
    'installation': 'installation.html',
13
    'examples': 'examples.html',
14
    'nrm_usage': 'normal_usage.html',
15
    'adv_usage': 'advance_usage.html',
16
    'cmpr': 'compressing_greybox.html',
17
    'about': 'about.html'
18
}
19
20
function insertMenu(current_page) {
21
    var menu = AJS.UL({id: 'menu'});
22
    var create_item = function(cls, name) {
23
        var item = AJS.LI({'class': cls});
24
        AJS.ACN(item, AJS.A({href: LINKS[cls]}, name));
25
        return item;
26
    }
27
    var items = [
28
        create_item('installation', 'Installation'),
29
        create_item('examples', 'Examples'),
30
        create_item('nrm_usage', 'Normal usage'),
31
        create_item('adv_usage', 'Advance usage'),
32
        create_item('cmpr', 'Compressing GreyBox'),
33
        create_item('about', 'About')
34
    ];
35
36
    AJS.map(items, function(item) {
37
        if(item.className == current_page) {
38
            AJS.addClass(AJS.$bytc('a', null, item)[0], 'current');
39
        }
40
        AJS.ACN(menu, item);
41
    });
42
    AJS.DI(menu);
43
}
44
45
function insertCode() {
46
    var code = AJS.join('\n', arguments);
47
    var result = '<pre><code>';
48
    code = code.replace(/</g, '&lt;').replace(/>/g, '&gt;');
49
    result += code;
50
    result += '</code></pre>';
51
    document.write(result);
52
}
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/gb_scripts.js (-436 lines)
Lines 1-436 Link Here
1
var GB_CURRENT=null;
2
GB_hide=function(){
3
GB_CURRENT.hide();
4
};
5
GreyBox=new AJS.Class({init:function(_1){
6
this.use_fx=AJS.fx;
7
this.type="page";
8
this.overlay_click_close=false;
9
this.salt=0;
10
this.root_dir=GB_ROOT_DIR;
11
this.callback_fns=[];
12
this.reload_on_close=false;
13
this.src_loader=this.root_dir+"loader_frame.html";
14
var _2=window.location.hostname.indexOf("www");
15
var _3=this.src_loader.indexOf("www");
16
if(_2!=-1&&_3==-1){
17
this.src_loader=this.src_loader.replace("://","://www.");
18
}
19
if(_2==-1&&_3!=-1){
20
this.src_loader=this.src_loader.replace("://www.","://");
21
}
22
this.show_loading=true;
23
AJS.update(this,_1);
24
},addCallback:function(fn){
25
if(fn){
26
this.callback_fns.push(fn);
27
}
28
},show:function(_5){
29
GB_CURRENT=this;
30
this.url=_5;
31
var _6=[AJS.$bytc("object"),AJS.$bytc("select")];
32
AJS.map(AJS.flattenList(_6),function(_7){
33
_7.style.visibility="hidden";
34
});
35
this.createElements();
36
return false;
37
},hide:function(){
38
var _8=this.callback_fns;
39
if(_8!=[]){
40
AJS.map(_8,function(fn){
41
fn();
42
});
43
}
44
this.onHide();
45
if(this.use_fx){
46
var _a=this.overlay;
47
AJS.fx.fadeOut(this.overlay,{onComplete:function(){
48
AJS.removeElement(_a);
49
_a=null;
50
},duration:300});
51
AJS.removeElement(this.g_window);
52
}else{
53
AJS.removeElement(this.g_window,this.overlay);
54
}
55
this.removeFrame();
56
AJS.REV(window,"scroll",_GB_setOverlayDimension);
57
AJS.REV(window,"resize",_GB_update);
58
var _b=[AJS.$bytc("object"),AJS.$bytc("select")];
59
AJS.map(AJS.flattenList(_b),function(_c){
60
_c.style.visibility="visible";
61
});
62
GB_CURRENT=null;
63
if(this.reload_on_close){
64
window.location.reload();
65
}
66
},update:function(){
67
this.setOverlayDimension();
68
this.setFrameSize();
69
this.setWindowPosition();
70
},createElements:function(){
71
this.initOverlay();
72
this.g_window=AJS.DIV({"id":"GB_window"});
73
AJS.hideElement(this.g_window);
74
AJS.getBody().insertBefore(this.g_window,this.overlay.nextSibling);
75
this.initFrame();
76
this.initHook();
77
this.update();
78
var me=this;
79
if(this.use_fx){
80
AJS.fx.fadeIn(this.overlay,{duration:300,to:0.7,onComplete:function(){
81
me.onShow();
82
AJS.showElement(me.g_window);
83
me.startLoading();
84
}});
85
}else{
86
AJS.setOpacity(this.overlay,0.7);
87
AJS.showElement(this.g_window);
88
this.onShow();
89
this.startLoading();
90
}
91
AJS.AEV(window,"scroll",_GB_setOverlayDimension);
92
AJS.AEV(window,"resize",_GB_update);
93
},removeFrame:function(){
94
try{
95
AJS.removeElement(this.iframe);
96
}
97
catch(e){
98
}
99
this.iframe=null;
100
},startLoading:function(){
101
this.iframe.src=this.src_loader+"?s="+this.salt++;
102
AJS.showElement(this.iframe);
103
},setOverlayDimension:function(){
104
var _e=AJS.getWindowSize();
105
if(AJS.isMozilla()||AJS.isOpera()){
106
AJS.setWidth(this.overlay,"100%");
107
}else{
108
AJS.setWidth(this.overlay,_e.w);
109
}
110
var _f=Math.max(AJS.getScrollTop()+_e.h,AJS.getScrollTop()+this.height);
111
if(_f<AJS.getScrollTop()){
112
AJS.setHeight(this.overlay,_f);
113
}else{
114
AJS.setHeight(this.overlay,AJS.getScrollTop()+_e.h);
115
}
116
},initOverlay:function(){
117
this.overlay=AJS.DIV({"id":"GB_overlay"});
118
if(this.overlay_click_close){
119
AJS.AEV(this.overlay,"click",GB_hide);
120
}
121
AJS.setOpacity(this.overlay,0);
122
AJS.getBody().insertBefore(this.overlay,AJS.getBody().firstChild);
123
},initFrame:function(){
124
if(!this.iframe){
125
var d={"name":"GB_frame","class":"GB_frame","frameBorder":0};
126
this.iframe=AJS.IFRAME(d);
127
this.middle_cnt=AJS.DIV({"class":"content"},this.iframe);
128
this.top_cnt=AJS.DIV();
129
this.bottom_cnt=AJS.DIV();
130
AJS.ACN(this.g_window,this.top_cnt,this.middle_cnt,this.bottom_cnt);
131
}
132
},onHide:function(){
133
},onShow:function(){
134
},setFrameSize:function(){
135
},setWindowPosition:function(){
136
},initHook:function(){
137
}});
138
_GB_update=function(){
139
if(GB_CURRENT){
140
GB_CURRENT.update();
141
}
142
};
143
_GB_setOverlayDimension=function(){
144
if(GB_CURRENT){
145
GB_CURRENT.setOverlayDimension();
146
}
147
};
148
AJS.preloadImages(GB_ROOT_DIR+"indicator.gif");
149
script_loaded=true;
150
var GB_SETS={};
151
function decoGreyboxLinks(){
152
var as=AJS.$bytc("a");
153
AJS.map(as,function(a){
154
if(a.getAttribute("href")&&a.getAttribute("rel")){
155
var rel=a.getAttribute("rel");
156
if(rel.indexOf("gb_")==0){
157
var _14=rel.match(/\w+/)[0];
158
var _15=rel.match(/\[(.*)\]/)[1];
159
var _16=0;
160
var _17={"caption":a.title||"","url":a.href};
161
if(_14=="gb_pageset"||_14=="gb_imageset"){
162
if(!GB_SETS[_15]){
163
GB_SETS[_15]=[];
164
}
165
GB_SETS[_15].push(_17);
166
_16=GB_SETS[_15].length;
167
}
168
if(_14=="gb_pageset"){
169
a.onclick=function(){
170
GB_showFullScreenSet(GB_SETS[_15],_16);
171
return false;
172
};
173
}
174
if(_14=="gb_imageset"){
175
a.onclick=function(){
176
GB_showImageSet(GB_SETS[_15],_16);
177
return false;
178
};
179
}
180
if(_14=="gb_image"){
181
a.onclick=function(){
182
GB_showImage(_17.caption,_17.url);
183
return false;
184
};
185
}
186
if(_14=="gb_page"){
187
a.onclick=function(){
188
var sp=_15.split(/, ?/);
189
GB_show(_17.caption,_17.url,parseInt(sp[1]),parseInt(sp[0]));
190
return false;
191
};
192
}
193
if(_14=="gb_page_fs"){
194
a.onclick=function(){
195
GB_showFullScreen(_17.caption,_17.url);
196
return false;
197
};
198
}
199
if(_14=="gb_page_center"){
200
a.onclick=function(){
201
var sp=_15.split(/, ?/);
202
GB_showCenter(_17.caption,_17.url,parseInt(sp[1]),parseInt(sp[0]));
203
return false;
204
};
205
}
206
}
207
}
208
});
209
}
210
AJS.AEV(window,"load",decoGreyboxLinks);
211
GB_showImage=function(_1a,url,_1c){
212
var _1d={width:300,height:300,type:"image",fullscreen:false,center_win:true,caption:_1a,callback_fn:_1c};
213
var win=new GB_Gallery(_1d);
214
return win.show(url);
215
};
216
GB_showPage=function(_1f,url,_21){
217
var _22={type:"page",caption:_1f,callback_fn:_21,fullscreen:true,center_win:false};
218
var win=new GB_Gallery(_22);
219
return win.show(url);
220
};
221
GB_Gallery=GreyBox.extend({init:function(_24){
222
this.parent({});
223
this.img_close=this.root_dir+"g_close.gif";
224
AJS.update(this,_24);
225
this.addCallback(this.callback_fn);
226
},initHook:function(){
227
AJS.addClass(this.g_window,"GB_Gallery");
228
var _25=AJS.DIV({"class":"inner"});
229
this.header=AJS.DIV({"class":"GB_header"},_25);
230
AJS.setOpacity(this.header,0);
231
AJS.getBody().insertBefore(this.header,this.overlay.nextSibling);
232
var _26=AJS.TD({"id":"GB_caption","class":"caption","width":"40%"},this.caption);
233
var _27=AJS.TD({"id":"GB_middle","class":"middle","width":"20%"});
234
var _28=AJS.IMG({"src":this.img_close});
235
AJS.AEV(_28,"click",GB_hide);
236
var _29=AJS.TD({"class":"close","width":"40%"},_28);
237
var _2a=AJS.TBODY(AJS.TR(_26,_27,_29));
238
var _2b=AJS.TABLE({"cellspacing":"0","cellpadding":0,"border":0},_2a);
239
AJS.ACN(_25,_2b);
240
if(this.fullscreen){
241
AJS.AEV(window,"scroll",AJS.$b(this.setWindowPosition,this));
242
}else{
243
AJS.AEV(window,"scroll",AJS.$b(this._setHeaderPos,this));
244
}
245
},setFrameSize:function(){
246
var _2c=this.overlay.offsetWidth;
247
var _2d=AJS.getWindowSize();
248
if(this.fullscreen){
249
this.width=_2c-40;
250
this.height=_2d.h-80;
251
}
252
AJS.setWidth(this.iframe,this.width);
253
AJS.setHeight(this.iframe,this.height);
254
AJS.setWidth(this.header,_2c);
255
},_setHeaderPos:function(){
256
AJS.setTop(this.header,AJS.getScrollTop()+10);
257
},setWindowPosition:function(){
258
var _2e=this.overlay.offsetWidth;
259
var _2f=AJS.getWindowSize();
260
AJS.setLeft(this.g_window,((_2e-50-this.width)/2));
261
var _30=AJS.getScrollTop()+55;
262
if(!this.center_win){
263
AJS.setTop(this.g_window,_30);
264
}else{
265
var fl=((_2f.h-this.height)/2)+20+AJS.getScrollTop();
266
if(fl<0){
267
fl=0;
268
}
269
if(_30>fl){
270
fl=_30;
271
}
272
AJS.setTop(this.g_window,fl);
273
}
274
this._setHeaderPos();
275
},onHide:function(){
276
AJS.removeElement(this.header);
277
AJS.removeClass(this.g_window,"GB_Gallery");
278
},onShow:function(){
279
if(this.use_fx){
280
AJS.fx.fadeIn(this.header,{to:1});
281
}else{
282
AJS.setOpacity(this.header,1);
283
}
284
}});
285
AJS.preloadImages(GB_ROOT_DIR+"g_close.gif");
286
GB_showFullScreenSet=function(set,_33,_34){
287
var _35={type:"page",fullscreen:true,center_win:false};
288
var _36=new GB_Sets(_35,set);
289
_36.addCallback(_34);
290
_36.showSet(_33-1);
291
return false;
292
};
293
GB_showImageSet=function(set,_38,_39){
294
var _3a={type:"image",fullscreen:false,center_win:true,width:300,height:300};
295
var _3b=new GB_Sets(_3a,set);
296
_3b.addCallback(_39);
297
_3b.showSet(_38-1);
298
return false;
299
};
300
GB_Sets=GB_Gallery.extend({init:function(_3c,set){
301
this.parent(_3c);
302
if(!this.img_next){
303
this.img_next=this.root_dir+"next.gif";
304
}
305
if(!this.img_prev){
306
this.img_prev=this.root_dir+"prev.gif";
307
}
308
this.current_set=set;
309
},showSet:function(_3e){
310
this.current_index=_3e;
311
var _3f=this.current_set[this.current_index];
312
this.show(_3f.url);
313
this._setCaption(_3f.caption);
314
this.btn_prev=AJS.IMG({"class":"left",src:this.img_prev});
315
this.btn_next=AJS.IMG({"class":"right",src:this.img_next});
316
AJS.AEV(this.btn_prev,"click",AJS.$b(this.switchPrev,this));
317
AJS.AEV(this.btn_next,"click",AJS.$b(this.switchNext,this));
318
GB_STATUS=AJS.SPAN({"class":"GB_navStatus"});
319
AJS.ACN(AJS.$("GB_middle"),this.btn_prev,GB_STATUS,this.btn_next);
320
this.updateStatus();
321
},updateStatus:function(){
322
AJS.setHTML(GB_STATUS,(this.current_index+1)+" / "+this.current_set.length);
323
if(this.current_index==0){
324
AJS.addClass(this.btn_prev,"disabled");
325
}else{
326
AJS.removeClass(this.btn_prev,"disabled");
327
}
328
if(this.current_index==this.current_set.length-1){
329
AJS.addClass(this.btn_next,"disabled");
330
}else{
331
AJS.removeClass(this.btn_next,"disabled");
332
}
333
},_setCaption:function(_40){
334
AJS.setHTML(AJS.$("GB_caption"),_40);
335
},updateFrame:function(){
336
var _41=this.current_set[this.current_index];
337
this._setCaption(_41.caption);
338
this.url=_41.url;
339
this.startLoading();
340
},switchPrev:function(){
341
if(this.current_index!=0){
342
this.current_index--;
343
this.updateFrame();
344
this.updateStatus();
345
}
346
},switchNext:function(){
347
if(this.current_index!=this.current_set.length-1){
348
this.current_index++;
349
this.updateFrame();
350
this.updateStatus();
351
}
352
}});
353
AJS.AEV(window,"load",function(){
354
AJS.preloadImages(GB_ROOT_DIR+"next.gif",GB_ROOT_DIR+"prev.gif");
355
});
356
GB_show=function(_42,url,_44,_45,_46){
357
var _47={caption:_42,height:_44||500,width:_45||500,fullscreen:false,callback_fn:_46};
358
var win=new GB_Window(_47);
359
return win.show(url);
360
};
361
GB_showCenter=function(_49,url,_4b,_4c,_4d){
362
var _4e={caption:_49,center_win:true,height:_4b||500,width:_4c||500,fullscreen:false,callback_fn:_4d};
363
var win=new GB_Window(_4e);
364
return win.show(url);
365
};
366
GB_showFullScreen=function(_50,url,_52){
367
var _53={caption:_50,fullscreen:true,callback_fn:_52};
368
var win=new GB_Window(_53);
369
return win.show(url);
370
};
371
GB_Window=GreyBox.extend({init:function(_55){
372
this.parent({});
373
this.img_header=this.root_dir+"header_bg.gif";
374
this.img_close=this.root_dir+"w_close.gif";
375
this.show_close_img=true;
376
AJS.update(this,_55);
377
this.addCallback(this.callback_fn);
378
},initHook:function(){
379
AJS.addClass(this.g_window,"GB_Window");
380
this.header=AJS.TABLE({"class":"header"});
381
this.header.style.backgroundImage="url("+this.img_header+")";
382
var _56=AJS.TD({"class":"caption"},this.caption);
383
var _57=AJS.TD({"class":"close"});
384
if(this.show_close_img){
385
var _58=AJS.IMG({"src":this.img_close});
386
var _59=AJS.SPAN("Close");
387
var btn=AJS.DIV(_58,_59);
388
AJS.AEV([_58,_59],"mouseover",function(){
389
AJS.addClass(_59,"on");
390
});
391
AJS.AEV([_58,_59],"mouseout",function(){
392
AJS.removeClass(_59,"on");
393
});
394
AJS.AEV([_58,_59],"mousedown",function(){
395
AJS.addClass(_59,"click");
396
});
397
AJS.AEV([_58,_59],"mouseup",function(){
398
AJS.removeClass(_59,"click");
399
});
400
AJS.AEV([_58,_59],"click",GB_hide);
401
AJS.ACN(_57,btn);
402
}
403
tbody_header=AJS.TBODY();
404
AJS.ACN(tbody_header,AJS.TR(_56,_57));
405
AJS.ACN(this.header,tbody_header);
406
AJS.ACN(this.top_cnt,this.header);
407
if(this.fullscreen){
408
AJS.AEV(window,"scroll",AJS.$b(this.setWindowPosition,this));
409
}
410
},setFrameSize:function(){
411
if(this.fullscreen){
412
var _5b=AJS.getWindowSize();
413
overlay_h=_5b.h;
414
this.width=Math.round(this.overlay.offsetWidth-(this.overlay.offsetWidth/100)*10);
415
this.height=Math.round(overlay_h-(overlay_h/100)*10);
416
}
417
AJS.setWidth(this.header,this.width+6);
418
AJS.setWidth(this.iframe,this.width);
419
AJS.setHeight(this.iframe,this.height);
420
},setWindowPosition:function(){
421
var _5c=AJS.getWindowSize();
422
AJS.setLeft(this.g_window,((_5c.w-this.width)/2)-13);
423
if(!this.center_win){
424
AJS.setTop(this.g_window,AJS.getScrollTop());
425
}else{
426
var fl=((_5c.h-this.height)/2)-20+AJS.getScrollTop();
427
if(fl<0){
428
fl=0;
429
}
430
AJS.setTop(this.g_window,fl);
431
}
432
}});
433
AJS.preloadImages(GB_ROOT_DIR+"w_close.gif",GB_ROOT_DIR+"header_bg.gif");
434
435
436
script_loaded=true;
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/gb_styles.css (-158 lines)
Lines 1-158 Link Here
1
/* Last-Modified: 28/06/06 00:08:22 */
2
#GB_overlay {
3
    background-color: #000;
4
    position: absolute;
5
    margin: auto;
6
    top: 0;
7
    left: 0;
8
    z-index: 100;
9
}
10
11
#GB_window {
12
    left: 0;
13
    top: 0;
14
    font-size: 1px;
15
    position: absolute;
16
    overflow: visible;
17
    z-index: 150;
18
}
19
20
#GB_window .content {
21
    width: auto;
22
    margin: 0;
23
    padding: 0;
24
}
25
26
#GB_frame {
27
    border: 0;
28
    margin: 0;
29
    padding: 0;
30
    overflow: auto;
31
    white-space: nowrap;
32
}
33
34
35
.GB_Gallery {
36
    margin: 0 22px 0 22px;
37
}
38
39
.GB_Gallery .content {
40
    background-color: #fff;
41
    border: 3px solid #ddd;
42
}
43
44
.GB_header {
45
    top: 10px;
46
    left: 0;
47
    margin: 0;
48
    z-index: 500;
49
    position: absolute;
50
    border-bottom: 2px solid #555;
51
    border-top: 2px solid #555;
52
}
53
54
.GB_header .inner {
55
    background-color: #333;
56
    font-family: Arial, Verdana, sans-serif;
57
    padding: 2px 20px 2px 20px;
58
}
59
60
.GB_header table {
61
    margin: 0;
62
    width: 100%;
63
    border-collapse: separate;
64
    border-right: 0px;
65
    border-top: 0px;
66
}
67
68
.GB_header td {
69
    background-color: #333333;
70
    border-bottom: 0px;
71
    border-left: 0px;
72
    padding: 0em 0em;
73
}
74
75
.GB_header .caption {
76
    text-align: left;
77
    color: #eee;
78
    white-space: nowrap;
79
    font-size: 20px;
80
    border-collapse: separate;
81
}
82
83
.GB_header .close {
84
    text-align: right;
85
}
86
87
.GB_header .close img {
88
    z-index: 500;
89
    cursor: pointer;
90
}
91
92
.GB_header .middle {
93
    white-space: nowrap;
94
    text-align: center;
95
}
96
97
98
#GB_middle {
99
    color: #eee;
100
}
101
102
#GB_middle img {
103
    cursor: pointer;
104
    vertical-align: middle;
105
}
106
107
#GB_middle .disabled {
108
    cursor: default;
109
}
110
111
#GB_middle .left {
112
    padding-right: 10px;
113
}
114
115
#GB_middle .right {
116
    padding-left: 10px;
117
}
118
119
120
.GB_Window .content {
121
    background-color: #fff;
122
    border: 3px solid #ccc;
123
    border-top: none;
124
}
125
126
.GB_Window .header {
127
    border-bottom: 1px solid #aaa;
128
    border-top: 1px solid #999;
129
    border-left: 3px solid #ccc;
130
    border-right: 3px solid #ccc;
131
    margin: 0;
132
133
    height: 22px;
134
    font-size: 12px;
135
    padding: 3px 0;
136
    color: #333;
137
}
138
139
.GB_Window .caption {
140
    font-size: 12px;
141
    text-align: left;
142
    font-weight: bold;
143
    white-space: nowrap;
144
    padding-right: 20px;
145
}
146
147
.GB_Window .close { text-align: right; }
148
.GB_Window .close span {
149
    font-size: 12px;
150
    cursor: pointer;
151
}
152
.GB_Window .close img {
153
    cursor: pointer;
154
    padding: 0 3px 0 0;
155
}
156
157
.GB_Window .on { border-bottom: 1px solid #333; }
158
.GB_Window .click { border-bottom: 1px solid red; }
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/greybox/loader_frame.html (-104 lines)
Lines 1-104 Link Here
1
<!--
2
Notice: I feel so dirty doing this, but its the only way to make it cross browser.
3
-->
4
<html>
5
<head>
6
  <script>
7
    var GB = parent.GB_CURRENT;
8
    document.write('<script type="text/javascript" src="AJS.js"><\/script>');
9
    if(GB.use_fx) {
10
        document.write('<script type="text/javascript" src="AJS_fx.js"><\/script>');
11
    }
12
  </script>
13
  <style>
14
    body {
15
      padding: 0;
16
      margin: 0;
17
      overflow: hidden;
18
    }
19
20
    #GB_frame {
21
      visibility: hidden;
22
      width: 100%;
23
      height: 100%;
24
    }
25
26
    #loading {
27
      padding-top: 50px;
28
      position: absolute;
29
      width: 100%;
30
      top: 0;
31
      text-align: center;
32
      vertical-align: middle;
33
    }
34
  </style>
35
</head>
36
<body>
37
38
<div id="loading">
39
  <img src="indicator.gif">
40
</div>
41
42
<script>
43
var loading = AJS.$('loading');
44
var gb_type = GB.type;
45
var gb_url = GB.url;
46
47
//Start loading in the iframe
48
if(gb_type == "page") {
49
  document.write('<iframe id="GB_frame" src="' + gb_url + '" frameborder="0"></iframe>');
50
}
51
else {
52
  var img_holder = new Image();
53
  img_holder.src = gb_url;
54
  document.write('<img id="GB_frame" src="' + gb_url + '">');
55
}
56
var frame = AJS.$('GB_frame');
57
</script>
58
59
</body>
60
<script>
61
function setupOuterGB() {
62
    frame.style.visibility = 'visible';
63
    GB.setFrameSize();
64
    GB.setWindowPosition();
65
}
66
67
function loaded() {
68
    AJS.removeElement(loading);
69
70
    GB.overlay.innerHTML += "&nbsp;"; //Safari bugfix
71
72
    if(gb_type == "image") {
73
        if(img_holder.width != 0 && img_holder.height != 0) {
74
            var width = img_holder.width;
75
            var height = img_holder.height;
76
77
            GB.width = width;
78
            GB.height = height;
79
80
            setupOuterGB();
81
82
            if(GB.use_fx) {
83
                AJS.setOpacity(frame, 0);
84
                AJS.fx.fadeIn(frame);
85
            }
86
        }
87
    }
88
    else {
89
        GB.width = frame.offsetWidth;
90
        GB.height = frame.offsetHeight;
91
        setupOuterGB();
92
    }
93
}
94
95
if(GB.show_loading) {
96
    AJS.AEV(window, 'load', function(e) {
97
        loaded();
98
    });
99
}
100
else {
101
    loaded();
102
}
103
</script>
104
</html>
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/jquery/jquery-ui.css (-5 lines)
Lines 1-5 Link Here
1
/*! jQuery UI - v1.9.2 - 2013-02-12
2
* http://jqueryui.com
3
* Includes: jquery.ui.core.css, jquery.ui.autocomplete.css, jquery.ui.datepicker.css, jquery.ui.menu.css, jquery.ui.slider.css, jquery.ui.tabs.css, jquery.ui.tooltip.css
4
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
5
* Copyright (c) 2013 jQuery Foundation and other contributors Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{zoom:1}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}* html .ui-autocomplete{width:1px}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0em}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-cover{position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;width:100%}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;zoom:1;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-tabs{position:relative;padding:.2em;zoom:1}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}* html .ui-tooltip{background-image:none}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/jquery/jquery-ui.js (-6 lines)
Lines 1-6 Link Here
1
/*! jQuery UI - v1.9.2 - 2013-02-12
2
* http://jqueryui.com
3
* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.sortable.js, jquery.ui.autocomplete.js, jquery.ui.datepicker.js, jquery.ui.menu.js, jquery.ui.slider.js, jquery.ui.tabs.js, jquery.ui.tooltip.js
4
* Copyright (c) 2013 jQuery Foundation and other contributors Licensed MIT */
5
6
(function(e,t){function i(t,n){var r,i,o,u=t.nodeName.toLowerCase();return"area"===u?(r=t.parentNode,i=r.name,!t.href||!i||r.nodeName.toLowerCase()!=="map"?!1:(o=e("img[usemap=#"+i+"]")[0],!!o&&s(o))):(/input|select|textarea|button|object/.test(u)?!t.disabled:"a"===u?t.href||n:n)&&s(t)}function s(t){return e.expr.filters.visible(t)&&!e(t).parents().andSelf().filter(function(){return e.css(this,"visibility")==="hidden"}).length}var n=0,r=/^ui-id-\d+$/;e.ui=e.ui||{};if(e.ui.version)return;e.extend(e.ui,{version:"1.9.2",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({_focus:e.fn.focus,focus:function(t,n){return typeof t=="number"?this.each(function(){var r=this;setTimeout(function(){e(r).focus(),n&&n.call(r)},t)}):this._focus.apply(this,arguments)},scrollParent:function(){var t;return e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?t=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):t=this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(n){if(n!==t)return this.css("zIndex",n);if(this.length){var r=e(this[0]),i,s;while(r.length&&r[0]!==document){i=r.css("position");if(i==="absolute"||i==="relative"||i==="fixed"){s=parseInt(r.css("zIndex"),10);if(!isNaN(s)&&s!==0)return s}r=r.parent()}}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++n)})},removeUniqueId:function(){return this.each(function(){r.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(n){return!!e.data(n,t)}}):function(t,n,r){return!!e.data(t,r[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var n=e.attr(t,"tabindex"),r=isNaN(n);return(r||n>=0)&&i(t,!r)}}),e(function(){var t=document.body,n=t.appendChild(n=document.createElement("div"));n.offsetHeight,e.extend(n.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),e.support.minHeight=n.offsetHeight===100,e.support.selectstart="onselectstart"in n,t.removeChild(n).style.display="none"}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(n,r){function u(t,n,r,s){return e.each(i,function(){n-=parseFloat(e.css(t,"padding"+this))||0,r&&(n-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(n-=parseFloat(e.css(t,"margin"+this))||0)}),n}var i=r==="Width"?["Left","Right"]:["Top","Bottom"],s=r.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+r]=function(n){return n===t?o["inner"+r].call(this):this.each(function(){e(this).css(s,u(this,n)+"px")})},e.fn["outer"+r]=function(t,n){return typeof t!="number"?o["outer"+r].call(this,t):this.each(function(){e(this).css(s,u(this,t,!0,n)+"px")})}}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(n){return arguments.length?t.call(this,e.camelCase(n)):t.call(this)}}(e.fn.removeData)),function(){var t=/msie ([\w.]+)/.exec(navigator.userAgent.toLowerCase())||[];e.ui.ie=t.length?!0:!1,e.ui.ie6=parseFloat(t[1],10)===6}(),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,n,r){var i,s=e.ui[t].prototype;for(i in r)s.plugins[i]=s.plugins[i]||[],s.plugins[i].push([n,r[i]])},call:function(e,t,n){var r,i=e.plugins[t];if(!i||!e.element[0].parentNode||e.element[0].parentNode.nodeType===11)return;for(r=0;r<i.length;r++)e.options[i[r][0]]&&i[r][1].apply(e.element,n)}},contains:e.contains,hasScroll:function(t,n){if(e(t).css("overflow")==="hidden")return!1;var r=n&&n==="left"?"scrollLeft":"scrollTop",i=!1;return t[r]>0?!0:(t[r]=1,i=t[r]>0,t[r]=0,i)},isOverAxis:function(e,t,n){return e>t&&e<t+n},isOver:function(t,n,r,i,s,o){return e.ui.isOverAxis(t,r,s)&&e.ui.isOverAxis(n,i,o)}})})(jQuery);(function(e,t){var n=0,r=Array.prototype.slice,i=e.cleanData;e.cleanData=function(t){for(var n=0,r;(r=t[n])!=null;n++)try{e(r).triggerHandler("remove")}catch(s){}i(t)},e.widget=function(t,n,r){var i,s,o,u,a=t.split(".")[0];t=t.split(".")[1],i=a+"-"+t,r||(r=n,n=e.Widget),e.expr[":"][i.toLowerCase()]=function(t){return!!e.data(t,i)},e[a]=e[a]||{},s=e[a][t],o=e[a][t]=function(e,t){if(!this._createWidget)return new o(e,t);arguments.length&&this._createWidget(e,t)},e.extend(o,s,{version:r.version,_proto:e.extend({},r),_childConstructors:[]}),u=new n,u.options=e.widget.extend({},u.options),e.each(r,function(t,i){e.isFunction(i)&&(r[t]=function(){var e=function(){return n.prototype[t].apply(this,arguments)},r=function(e){return n.prototype[t].apply(this,e)};return function(){var t=this._super,n=this._superApply,s;return this._super=e,this._superApply=r,s=i.apply(this,arguments),this._super=t,this._superApply=n,s}}())}),o.prototype=e.widget.extend(u,{widgetEventPrefix:s?u.widgetEventPrefix:t},r,{constructor:o,namespace:a,widgetName:t,widgetBaseClass:i,widgetFullName:i}),s?(e.each(s._childConstructors,function(t,n){var r=n.prototype;e.widget(r.namespace+"."+r.widgetName,o,n._proto)}),delete s._childConstructors):n._childConstructors.push(o),e.widget.bridge(t,o)},e.widget.extend=function(n){var i=r.call(arguments,1),s=0,o=i.length,u,a;for(;s<o;s++)for(u in i[s])a=i[s][u],i[s].hasOwnProperty(u)&&a!==t&&(e.isPlainObject(a)?n[u]=e.isPlainObject(n[u])?e.widget.extend({},n[u],a):e.widget.extend({},a):n[u]=a);return n},e.widget.bridge=function(n,i){var s=i.prototype.widgetFullName||n;e.fn[n]=function(o){var u=typeof o=="string",a=r.call(arguments,1),f=this;return o=!u&&a.length?e.widget.extend.apply(null,[o].concat(a)):o,u?this.each(function(){var r,i=e.data(this,s);if(!i)return e.error("cannot call methods on "+n+" prior to initialization; "+"attempted to call method '"+o+"'");if(!e.isFunction(i[o])||o.charAt(0)==="_")return e.error("no such method '"+o+"' for "+n+" widget instance");r=i[o].apply(i,a);if(r!==i&&r!==t)return f=r&&r.jquery?f.pushStack(r.get()):r,!1}):this.each(function(){var t=e.data(this,s);t?t.option(o||{})._init():e.data(this,s,new i(o,this))}),f}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,r){r=e(r||this.defaultElement||this)[0],this.element=e(r),this.uuid=n++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),r!==this&&(e.data(r,this.widgetName,this),e.data(r,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===r&&this.destroy()}}),this.document=e(r.style?r.ownerDocument:r.document||r),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(n,r){var i=n,s,o,u;if(arguments.length===0)return e.widget.extend({},this.options);if(typeof n=="string"){i={},s=n.split("."),n=s.shift();if(s.length){o=i[n]=e.widget.extend({},this.options[n]);for(u=0;u<s.length-1;u++)o[s[u]]=o[s[u]]||{},o=o[s[u]];n=s.pop();if(r===t)return o[n]===t?null:o[n];o[n]=r}else{if(r===t)return this.options[n]===t?null:this.options[n];i[n]=r}}return this._setOptions(i),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,e==="disabled"&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(t,n,r){var i,s=this;typeof t!="boolean"&&(r=n,n=t,t=!1),r?(n=i=e(n),this.bindings=this.bindings.add(n)):(r=n,n=this.element,i=this.widget()),e.each(r,function(r,o){function u(){if(!t&&(s.options.disabled===!0||e(this).hasClass("ui-state-disabled")))return;return(typeof o=="string"?s[o]:o).apply(s,arguments)}typeof o!="string"&&(u.guid=o.guid=o.guid||u.guid||e.guid++);var a=r.match(/^(\w+)\s*(.*)$/),f=a[1]+s.eventNamespace,l=a[2];l?i.delegate(l,f,u):n.bind(f,u)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function n(){return(typeof e=="string"?r[e]:e).apply(r,arguments)}var r=this;return setTimeout(n,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,n,r){var i,s,o=this.options[t];r=r||{},n=e.Event(n),n.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),n.target=this.element[0],s=n.originalEvent;if(s)for(i in s)i in n||(n[i]=s[i]);return this.element.trigger(n,r),!(e.isFunction(o)&&o.apply(this.element[0],[n].concat(r))===!1||n.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,n){e.Widget.prototype["_"+t]=function(r,i,s){typeof i=="string"&&(i={effect:i});var o,u=i?i===!0||typeof i=="number"?n:i.effect||n:t;i=i||{},typeof i=="number"&&(i={duration:i}),o=!e.isEmptyObject(i),i.complete=s,i.delay&&r.delay(i.delay),o&&e.effects&&(e.effects.effect[u]||e.uiBackCompat!==!1&&e.effects[u])?r[t](i):u!==t&&r[u]?r[u](i.duration,i.easing,s):r.queue(function(n){e(this)[t](),s&&s.call(r[0]),n()})}}),e.uiBackCompat!==!1&&(e.Widget.prototype._getCreateOptions=function(){return e.metadata&&e.metadata.get(this.element[0])[this.widgetName]})})(jQuery);(function(e,t){var n=!1;e(document).mouseup(function(e){n=!1}),e.widget("ui.mouse",{version:"1.9.2",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(n){if(!0===e.data(n.target,t.widgetName+".preventClickEvent"))return e.removeData(n.target,t.widgetName+".preventClickEvent"),n.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(n)return;this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var r=this,i=t.which===1,s=typeof this.options.cancel=="string"&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;if(!i||s||!this._mouseCapture(t))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){r.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)){this._mouseStarted=this._mouseStart(t)!==!1;if(!this._mouseStarted)return t.preventDefault(),!0}return!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return r._mouseMove(e)},this._mouseUpDelegate=function(e){return r._mouseUp(e)},e(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),n=!0,!0},_mouseMove:function(t){return!e.ui.ie||document.documentMode>=9||!!t.button?this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted):this._mouseUp(t)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(e){return this.mouseDelayMet},_mouseStart:function(e){},_mouseDrag:function(e){},_mouseStop:function(e){},_mouseCapture:function(e){return!0}})})(jQuery);(function(e,t){function h(e,t,n){return[parseInt(e[0],10)*(l.test(e[0])?t/100:1),parseInt(e[1],10)*(l.test(e[1])?n/100:1)]}function p(t,n){return parseInt(e.css(t,n),10)||0}e.ui=e.ui||{};var n,r=Math.max,i=Math.abs,s=Math.round,o=/left|center|right/,u=/top|center|bottom/,a=/[\+\-]\d+%?/,f=/^\w+/,l=/%$/,c=e.fn.position;e.position={scrollbarWidth:function(){if(n!==t)return n;var r,i,s=e("<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return e("body").append(s),r=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,r===i&&(i=s[0].clientWidth),s.remove(),n=r-i},getScrollInfo:function(t){var n=t.isWindow?"":t.element.css("overflow-x"),r=t.isWindow?"":t.element.css("overflow-y"),i=n==="scroll"||n==="auto"&&t.width<t.element[0].scrollWidth,s=r==="scroll"||r==="auto"&&t.height<t.element[0].scrollHeight;return{width:i?e.position.scrollbarWidth():0,height:s?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var n=e(t||window),r=e.isWindow(n[0]);return{element:n,isWindow:r,offset:n.offset()||{left:0,top:0},scrollLeft:n.scrollLeft(),scrollTop:n.scrollTop(),width:r?n.width():n.outerWidth(),height:r?n.height():n.outerHeight()}}},e.fn.position=function(t){if(!t||!t.of)return c.apply(this,arguments);t=e.extend({},t);var n,l,d,v,m,g=e(t.of),y=e.position.getWithinInfo(t.within),b=e.position.getScrollInfo(y),w=g[0],E=(t.collision||"flip").split(" "),S={};return w.nodeType===9?(l=g.width(),d=g.height(),v={top:0,left:0}):e.isWindow(w)?(l=g.width(),d=g.height(),v={top:g.scrollTop(),left:g.scrollLeft()}):w.preventDefault?(t.at="left top",l=d=0,v={top:w.pageY,left:w.pageX}):(l=g.outerWidth(),d=g.outerHeight(),v=g.offset()),m=e.extend({},v),e.each(["my","at"],function(){var e=(t[this]||"").split(" "),n,r;e.length===1&&(e=o.test(e[0])?e.concat(["center"]):u.test(e[0])?["center"].concat(e):["center","center"]),e[0]=o.test(e[0])?e[0]:"center",e[1]=u.test(e[1])?e[1]:"center",n=a.exec(e[0]),r=a.exec(e[1]),S[this]=[n?n[0]:0,r?r[0]:0],t[this]=[f.exec(e[0])[0],f.exec(e[1])[0]]}),E.length===1&&(E[1]=E[0]),t.at[0]==="right"?m.left+=l:t.at[0]==="center"&&(m.left+=l/2),t.at[1]==="bottom"?m.top+=d:t.at[1]==="center"&&(m.top+=d/2),n=h(S.at,l,d),m.left+=n[0],m.top+=n[1],this.each(function(){var o,u,a=e(this),f=a.outerWidth(),c=a.outerHeight(),w=p(this,"marginLeft"),x=p(this,"marginTop"),T=f+w+p(this,"marginRight")+b.width,N=c+x+p(this,"marginBottom")+b.height,C=e.extend({},m),k=h(S.my,a.outerWidth(),a.outerHeight());t.my[0]==="right"?C.left-=f:t.my[0]==="center"&&(C.left-=f/2),t.my[1]==="bottom"?C.top-=c:t.my[1]==="center"&&(C.top-=c/2),C.left+=k[0],C.top+=k[1],e.support.offsetFractions||(C.left=s(C.left),C.top=s(C.top)),o={marginLeft:w,marginTop:x},e.each(["left","top"],function(r,i){e.ui.position[E[r]]&&e.ui.position[E[r]][i](C,{targetWidth:l,targetHeight:d,elemWidth:f,elemHeight:c,collisionPosition:o,collisionWidth:T,collisionHeight:N,offset:[n[0]+k[0],n[1]+k[1]],my:t.my,at:t.at,within:y,elem:a})}),e.fn.bgiframe&&a.bgiframe(),t.using&&(u=function(e){var n=v.left-C.left,s=n+l-f,o=v.top-C.top,u=o+d-c,h={target:{element:g,left:v.left,top:v.top,width:l,height:d},element:{element:a,left:C.left,top:C.top,width:f,height:c},horizontal:s<0?"left":n>0?"right":"center",vertical:u<0?"top":o>0?"bottom":"middle"};l<f&&i(n+s)<l&&(h.horizontal="center"),d<c&&i(o+u)<d&&(h.vertical="middle"),r(i(n),i(s))>r(i(o),i(u))?h.important="horizontal":h.important="vertical",t.using.call(this,e,h)}),a.offset(e.extend(C,{using:u}))})},e.ui.position={fit:{left:function(e,t){var n=t.within,i=n.isWindow?n.scrollLeft:n.offset.left,s=n.width,o=e.left-t.collisionPosition.marginLeft,u=i-o,a=o+t.collisionWidth-s-i,f;t.collisionWidth>s?u>0&&a<=0?(f=e.left+u+t.collisionWidth-s-i,e.left+=u-f):a>0&&u<=0?e.left=i:u>a?e.left=i+s-t.collisionWidth:e.left=i:u>0?e.left+=u:a>0?e.left-=a:e.left=r(e.left-o,e.left)},top:function(e,t){var n=t.within,i=n.isWindow?n.scrollTop:n.offset.top,s=t.within.height,o=e.top-t.collisionPosition.marginTop,u=i-o,a=o+t.collisionHeight-s-i,f;t.collisionHeight>s?u>0&&a<=0?(f=e.top+u+t.collisionHeight-s-i,e.top+=u-f):a>0&&u<=0?e.top=i:u>a?e.top=i+s-t.collisionHeight:e.top=i:u>0?e.top+=u:a>0?e.top-=a:e.top=r(e.top-o,e.top)}},flip:{left:function(e,t){var n=t.within,r=n.offset.left+n.scrollLeft,s=n.width,o=n.isWindow?n.scrollLeft:n.offset.left,u=e.left-t.collisionPosition.marginLeft,a=u-o,f=u+t.collisionWidth-s-o,l=t.my[0]==="left"?-t.elemWidth:t.my[0]==="right"?t.elemWidth:0,c=t.at[0]==="left"?t.targetWidth:t.at[0]==="right"?-t.targetWidth:0,h=-2*t.offset[0],p,d;if(a<0){p=e.left+l+c+h+t.collisionWidth-s-r;if(p<0||p<i(a))e.left+=l+c+h}else if(f>0){d=e.left-t.collisionPosition.marginLeft+l+c+h-o;if(d>0||i(d)<f)e.left+=l+c+h}},top:function(e,t){var n=t.within,r=n.offset.top+n.scrollTop,s=n.height,o=n.isWindow?n.scrollTop:n.offset.top,u=e.top-t.collisionPosition.marginTop,a=u-o,f=u+t.collisionHeight-s-o,l=t.my[1]==="top",c=l?-t.elemHeight:t.my[1]==="bottom"?t.elemHeight:0,h=t.at[1]==="top"?t.targetHeight:t.at[1]==="bottom"?-t.targetHeight:0,p=-2*t.offset[1],d,v;a<0?(v=e.top+c+h+p+t.collisionHeight-s-r,e.top+c+h+p>a&&(v<0||v<i(a))&&(e.top+=c+h+p)):f>0&&(d=e.top-t.collisionPosition.marginTop+c+h+p-o,e.top+c+h+p>f&&(d>0||i(d)<f)&&(e.top+=c+h+p))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,n,r,i,s,o=document.getElementsByTagName("body")[0],u=document.createElement("div");t=document.createElement(o?"div":"body"),r={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},o&&e.extend(r,{position:"absolute",left:"-1000px",top:"-1000px"});for(s in r)t.style[s]=r[s];t.appendChild(u),n=o||document.documentElement,n.insertBefore(t,n.firstChild),u.style.cssText="position: absolute; left: 10.7432222px;",i=e(u).offset().left,e.support.offsetFractions=i>10&&i<11,t.innerHTML="",n.removeChild(t)}(),e.uiBackCompat!==!1&&function(e){var n=e.fn.position;e.fn.position=function(r){if(!r||!r.offset)return n.call(this,r);var i=r.offset.split(" "),s=r.at.split(" ");return i.length===1&&(i[1]=i[0]),/^\d/.test(i[0])&&(i[0]="+"+i[0]),/^\d/.test(i[1])&&(i[1]="+"+i[1]),s.length===1&&(/left|center|right/.test(s[0])?s[1]="center":(s[1]=s[0],s[0]="center")),n.call(this,e.extend(r,{at:s[0]+i[0]+" "+s[1]+i[1],offset:t}))}}(jQuery)})(jQuery);(function(e,t){e.widget("ui.sortable",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?e.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_setOption:function(t,n){t==="disabled"?(this.options[t]=n,this.widget().toggleClass("ui-sortable-disabled",!!n)):e.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(t,n){var r=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type=="static")return!1;this._refreshItems(t);var i=null,s=e(t.target).parents().each(function(){if(e.data(this,r.widgetName+"-item")==r)return i=e(this),!1});e.data(t.target,r.widgetName+"-item")==r&&(i=e(t.target));if(!i)return!1;if(this.options.handle&&!n){var o=!1;e(this.options.handle,i).find("*").andSelf().each(function(){this==t.target&&(o=!0)});if(!o)return!1}return this.currentItem=i,this._removeCurrentsFromItems(),!0},_mouseStart:function(t,n,r){var i=this.options;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),i.containment&&this._setContainment(),i.cursor&&(e("body").css("cursor")&&(this._storedCursor=e("body").css("cursor")),e("body").css("cursor",i.cursor)),i.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",i.opacity)),i.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",i.zIndex)),this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!r)for(var s=this.containers.length-1;s>=0;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var n=this.options,r=!1;this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<n.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+n.scrollSpeed:t.pageY-this.overflowOffset.top<n.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-n.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<n.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+n.scrollSpeed:t.pageX-this.overflowOffset.left<n.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-n.scrollSpeed)):(t.pageY-e(document).scrollTop()<n.scrollSensitivity?r=e(document).scrollTop(e(document).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<n.scrollSensitivity&&(r=e(document).scrollTop(e(document).scrollTop()+n.scrollSpeed)),t.pageX-e(document).scrollLeft()<n.scrollSensitivity?r=e(document).scrollLeft(e(document).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<n.scrollSensitivity&&(r=e(document).scrollLeft(e(document).scrollLeft()+n.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(var i=this.items.length-1;i>=0;i--){var s=this.items[i],o=s.item[0],u=this._intersectsWithPointer(s);if(!u)continue;if(s.instance!==this.currentContainer)continue;if(o!=this.currentItem[0]&&this.placeholder[u==1?"next":"prev"]()[0]!=o&&!e.contains(this.placeholder[0],o)&&(this.options.type=="semi-dynamic"?!e.contains(this.element[0],o):!0)){this.direction=u==1?"down":"up";if(this.options.tolerance!="pointer"&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,n){if(!t)return;e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t);if(this.options.revert){var r=this,i=this.placeholder.offset();this.reverting=!0,e(this.helper).animate({left:i.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:i.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){r._clear(t)})}else this._clear(t,n);return!1},cancel:function(){if(this.dragging){this._mouseUp({target:null}),this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},e(n).each(function(){var n=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[-=_](.+)/);n&&r.push((t.key||n[1]+"[]")+"="+(t.key&&t.expression?n[1]:n[2]))}),!r.length&&t.key&&r.push(t.key+"="),r.join("&")},toArray:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},n.each(function(){r.push(e(t.item||this).attr(t.attribute||"id")||"")}),r},_intersectsWith:function(e){var t=this.positionAbs.left,n=t+this.helperProportions.width,r=this.positionAbs.top,i=r+this.helperProportions.height,s=e.left,o=s+e.width,u=e.top,a=u+e.height,f=this.offset.click.top,l=this.offset.click.left,c=r+f>u&&r+f<a&&t+l>s&&t+l<o;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?c:s<t+this.helperProportions.width/2&&n-this.helperProportions.width/2<o&&u<r+this.helperProportions.height/2&&i-this.helperProportions.height/2<a},_intersectsWithPointer:function(t){var n=this.options.axis==="x"||e.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),r=this.options.axis==="y"||e.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),i=n&&r,s=this._getDragVerticalDirection(),o=this._getDragHorizontalDirection();return i?this.floating?o&&o=="right"||s=="down"?2:1:s&&(s=="down"?2:1):!1},_intersectsWithSides:function(t){var n=e.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),r=e.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),i=this._getDragVerticalDirection(),s=this._getDragHorizontalDirection();return this.floating&&s?s=="right"&&r||s=="left"&&!r:i&&(i=="down"&&n||i=="up"&&!n)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return e!=0&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return e!=0&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor==String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){var n=[],r=[],i=this._connectWith();if(i&&t)for(var s=i.length-1;s>=0;s--){var o=e(i[s]);for(var u=o.length-1;u>=0;u--){var a=e.data(o[u],this.widgetName);a&&a!=this&&!a.options.disabled&&r.push([e.isFunction(a.options.items)?a.options.items.call(a.element):e(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a])}}r.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var s=r.length-1;s>=0;s--)r[s][0].each(function(){n.push(this)});return e(n)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var n=0;n<t.length;n++)if(t[n]==e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var n=this.items,r=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],i=this._connectWith();if(i&&this.ready)for(var s=i.length-1;s>=0;s--){var o=e(i[s]);for(var u=o.length-1;u>=0;u--){var a=e.data(o[u],this.widgetName);a&&a!=this&&!a.options.disabled&&(r.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a))}}for(var s=r.length-1;s>=0;s--){var f=r[s][1],l=r[s][0];for(var u=0,c=l.length;u<c;u++){var h=e(l[u]);h.data(this.widgetName+"-item",f),n.push({item:h,instance:f,width:0,height:0,left:0,top:0})}}},refreshPositions:function(t){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());for(var n=this.items.length-1;n>=0;n--){var r=this.items[n];if(r.instance!=this.currentContainer&&this.currentContainer&&r.item[0]!=this.currentItem[0])continue;var i=this.options.toleranceElement?e(this.options.toleranceElement,r.item):r.item;t||(r.width=i.outerWidth(),r.height=i.outerHeight());var s=i.offset();r.left=s.left,r.top=s.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var n=this.containers.length-1;n>=0;n--){var s=this.containers[n].element.offset();this.containers[n].containerCache.left=s.left,this.containers[n].containerCache.top=s.top,this.containers[n].containerCache.width=this.containers[n].element.outerWidth(),this.containers[n].containerCache.height=this.containers[n].element.outerHeight()}return this},_createPlaceholder:function(t){t=t||this;var n=t.options;if(!n.placeholder||n.placeholder.constructor==String){var r=n.placeholder;n.placeholder={element:function(){var n=e(document.createElement(t.currentItem[0].nodeName)).addClass(r||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];return r||(n.style.visibility="hidden"),n},update:function(e,i){if(r&&!n.forcePlaceholderSize)return;i.height()||i.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),i.width()||i.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10))}}}t.placeholder=e(n.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),n.placeholder.update(t,t.placeholder)},_contactContainers:function(t){var n=null,r=null;for(var i=this.containers.length-1;i>=0;i--){if(e.contains(this.currentItem[0],this.containers[i].element[0]))continue;if(this._intersectsWith(this.containers[i].containerCache)){if(n&&e.contains(this.containers[i].element[0],n.element[0]))continue;n=this.containers[i],r=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0)}if(!n)return;if(this.containers.length===1)this.containers[r]._trigger("over",t,this._uiHash(this)),this.containers[r].containerCache.over=1;else{var s=1e4,o=null,u=this.containers[r].floating?"left":"top",a=this.containers[r].floating?"width":"height",f=this.positionAbs[u]+this.offset.click[u];for(var l=this.items.length-1;l>=0;l--){if(!e.contains(this.containers[r].element[0],this.items[l].item[0]))continue;if(this.items[l].item[0]==this.currentItem[0])continue;var c=this.items[l].item.offset()[u],h=!1;Math.abs(c-f)>Math.abs(c+this.items[l][a]-f)&&(h=!0,c+=this.items[l][a]),Math.abs(c-f)<s&&(s=Math.abs(c-f),o=this.items[l],this.direction=h?"up":"down")}if(!o&&!this.options.dropOnEmpty)return;this.currentContainer=this.containers[r],o?this._rearrange(t,o,null,!0):this._rearrange(t,null,this.containers[r].element,!0),this._trigger("change",t,this._uiHash()),this.containers[r]._trigger("change",t,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[r]._trigger("over",t,this._uiHash(this)),this.containers[r].containerCache.over=1}},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t,this.currentItem])):n.helper=="clone"?this.currentItem.clone():this.currentItem;return r.parents("body").length||e(n.appendTo!="parent"?n.appendTo:this.currentItem[0].parentNode)[0].appendChild(r[0]),r[0]==this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(r[0].style.width==""||n.forceHelperSize)&&r.width(this.currentItem.width()),(r[0].style.height==""||n.forceHelperSize)&&r.height(this.currentItem.height()),r},_adjustOffsetFromHelper:function(t){typeof t=="string"&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&e.ui.ie)t={top:0,left:0};return{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t=this.options;t.containment=="parent"&&(t.containment=this.helper[0].parentNode);if(t.containment=="document"||t.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,e(t.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(e(t.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(t.containment)){var n=e(t.containment)[0],r=e(t.containment).offset(),i=e(n).css("overflow")!="hidden";this.containment=[r.left+(parseInt(e(n).css("borderLeftWidth"),10)||0)+(parseInt(e(n).css("paddingLeft"),10)||0)-this.margins.left,r.top+(parseInt(e(n).css("borderTopWidth"),10)||0)+(parseInt(e(n).css("paddingTop"),10)||0)-this.margins.top,r.left+(i?Math.max(n.scrollWidth,n.offsetWidth):n.offsetWidth)-(parseInt(e(n).css("borderLeftWidth"),10)||0)-(parseInt(e(n).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,r.top+(i?Math.max(n.scrollHeight,n.offsetHeight):n.offsetHeight)-(parseInt(e(n).css("borderTopWidth"),10)||0)-(parseInt(e(n).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(t,n){n||(n=this.position);var r=t=="absolute"?1:-1,i=this.options,s=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(s[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():o?0:s.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():o?0:s.scrollLeft())*r}},_generatePosition:function(t){var n=this.options,r=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,i=/(html|body)/i.test(r[0].tagName);this.cssPosition=="relative"&&(this.scrollParent[0]==document||this.scrollParent[0]==this.offsetParent[0])&&(this.offset.relative=this._getRelativeOffset());var s=t.pageX,o=t.pageY;if(this.originalPosition){this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(s=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(s=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top));if(n.grid){var u=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1];o=this.containment?u-this.offset.click.top<this.containment[1]||u-this.offset.click.top>this.containment[3]?u-this.offset.click.top<this.containment[1]?u+n.grid[1]:u-n.grid[1]:u:u;var a=this.originalPageX+Math.round((s-this.originalPageX)/n.grid[0])*n.grid[0];s=this.containment?a-this.offset.click.left<this.containment[0]||a-this.offset.click.left>this.containment[2]?a-this.offset.click.left<this.containment[0]?a+n.grid[0]:a-n.grid[0]:a:a}}return{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():i?0:r.scrollTop()),left:s-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:r.scrollLeft())}},_rearrange:function(e,t,n,r){n?n[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],this.direction=="down"?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var i=this.counter;this._delay(function(){i==this.counter&&this.refreshPositions(!r)})},_clear:function(t,n){this.reverting=!1;var r=[];!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var i in this._storedCSS)if(this._storedCSS[i]=="auto"||this._storedCSS[i]=="static")this._storedCSS[i]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!n&&r.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),(this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!n&&r.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(n||(r.push(function(e){this._trigger("remove",e,this._uiHash())}),r.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),r.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer))));for(var i=this.containers.length-1;i>=0;i--)n||r.push(function(e){return function(t){e._trigger("deactivate",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over&&(r.push(function(e){return function(t){e._trigger("out",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over=0);this._storedCursor&&e("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!n){this._trigger("beforeStop",t,this._uiHash());for(var i=0;i<r.length;i++)r[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!1}n||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!=this.currentItem[0]&&this.helper.remove(),this.helper=null;if(!n){for(var i=0;i<r.length;i++)r[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var n=t||this;return{helper:n.helper,placeholder:n.placeholder||e([]),position:n.position,originalPosition:n.originalPosition,offset:n.positionAbs,item:n.currentItem,sender:t?t.element:null}}})})(jQuery);(function(e,t){var n=0;e.widget("ui.autocomplete",{version:"1.9.2",defaultElement:"<input>",options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},pending:0,_create:function(){var t,n,r;this.isMultiLine=this._isMultiLine(),this.valueMethod=this.element[this.element.is("input,textarea")?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(i){if(this.element.prop("readOnly")){t=!0,r=!0,n=!0;return}t=!1,r=!1,n=!1;var s=e.ui.keyCode;switch(i.keyCode){case s.PAGE_UP:t=!0,this._move("previousPage",i);break;case s.PAGE_DOWN:t=!0,this._move("nextPage",i);break;case s.UP:t=!0,this._keyEvent("previous",i);break;case s.DOWN:t=!0,this._keyEvent("next",i);break;case s.ENTER:case s.NUMPAD_ENTER:this.menu.active&&(t=!0,i.preventDefault(),this.menu.select(i));break;case s.TAB:this.menu.active&&this.menu.select(i);break;case s.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(i),i.preventDefault());break;default:n=!0,this._searchTimeout(i)}},keypress:function(r){if(t){t=!1,r.preventDefault();return}if(n)return;var i=e.ui.keyCode;switch(r.keyCode){case i.PAGE_UP:this._move("previousPage",r);break;case i.PAGE_DOWN:this._move("nextPage",r);break;case i.UP:this._keyEvent("previous",r);break;case i.DOWN:this._keyEvent("next",r)}},input:function(e){if(r){r=!1,e.preventDefault();return}this._searchTimeout(e)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}clearTimeout(this.searching),this.close(e),this._change(e)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete").appendTo(this.document.find(this.options.appendTo||"body")[0]).menu({input:e(),role:null}).zIndex(this.element.zIndex()+1).hide().data("menu"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var n=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(r){r.target!==t.element[0]&&r.target!==n&&!e.contains(n,r.target)&&t.close()})})},menufocus:function(t,n){if(this.isNewMenu){this.isNewMenu=!1;if(t.originalEvent&&/^mouse/.test(t.originalEvent.type)){this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)});return}}var r=n.item.data("ui-autocomplete-item")||n.item.data("item.autocomplete");!1!==this._trigger("focus",t,{item:r})?t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(r.value):this.liveRegion.text(r.value)},menuselect:function(e,t){var n=t.item.data("ui-autocomplete-item")||t.item.data("item.autocomplete"),r=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=r,this._delay(function(){this.previous=r,this.selectedItem=n})),!1!==this._trigger("select",e,{item:n})&&this._value(n.value),this.term=this._value(),this.close(e),this.selectedItem=n}}),this.liveRegion=e("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertAfter(this.element),e.fn.bgiframe&&this.menu.element.bgiframe(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),e==="source"&&this._initSource(),e==="appendTo"&&this.menu.element.appendTo(this.document.find(t||"body")[0]),e==="disabled"&&t&&this.xhr&&this.xhr.abort()},_isMultiLine:function(){return this.element.is("textarea")?!0:this.element.is("input")?!1:this.element.prop("isContentEditable")},_initSource:function(){var t,n,r=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(n,r){r(e.ui.autocomplete.filter(t,n.term))}):typeof this.options.source=="string"?(n=this.options.source,this.source=function(t,i){r.xhr&&r.xhr.abort(),r.xhr=e.ajax({url:n,data:t,dataType:"json",success:function(e){i(e)},error:function(){i([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){e=e!=null?e:this._value(),this.term=this._value();if(e.length<this.options.minLength)return this.close(t);if(this._trigger("search",t)===!1)return;return this._search(e)},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var e=this,t=++n;return function(r){t===n&&e.__response(r),e.pending--,e.pending||e.element.removeClass("ui-autocomplete-loading")}},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return typeof t=="string"?{label:t,value:t}:e.extend({label:t.label||t.value,value:t.value||t.label},t)})},_suggest:function(t){var n=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(n,t),this.menu.refresh(),n.show(),this._resizeMenu(),n.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,n){var r=this;e.each(n,function(e,n){r._renderItemData(t,n)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,n){return e("<li>").append(e("<a>").text(n.label)).appendTo(t)},_move:function(e,t){if(!this.menu.element.is(":visible")){this.search(null,t);return}if(this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)){this._value(this.term),this.menu.blur();return}this.menu[e](t)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){if(!this.isMultiLine||this.menu.element.is(":visible"))this._move(e,t),t.preventDefault()}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,n){var r=new RegExp(e.ui.autocomplete.escapeRegex(n),"i");return e.grep(t,function(e){return r.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var t;this._superApply(arguments);if(this.options.disabled||this.cancelSearch)return;e&&e.length?t=this.options.messages.results(e.length):t=this.options.messages.noResults,this.liveRegion.text(t)}})})(jQuery);(function($,undefined){function Datepicker(){this.debug=!1,this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},$.extend(this._defaults,this.regional[""]),this.dpDiv=bindHover($('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function bindHover(e){var t="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.delegate(t,"mouseout",function(){$(this).removeClass("ui-state-hover"),this.className.indexOf("ui-datepicker-prev")!=-1&&$(this).removeClass("ui-datepicker-prev-hover"),this.className.indexOf("ui-datepicker-next")!=-1&&$(this).removeClass("ui-datepicker-next-hover")}).delegate(t,"mouseover",function(){$.datepicker._isDisabledDatepicker(instActive.inline?e.parent()[0]:instActive.input[0])||($(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),$(this).addClass("ui-state-hover"),this.className.indexOf("ui-datepicker-prev")!=-1&&$(this).addClass("ui-datepicker-prev-hover"),this.className.indexOf("ui-datepicker-next")!=-1&&$(this).addClass("ui-datepicker-next-hover"))})}function extendRemove(e,t){$.extend(e,t);for(var n in t)if(t[n]==null||t[n]==undefined)e[n]=t[n];return e}$.extend($.ui,{datepicker:{version:"1.9.2"}});var PROP_NAME="datepicker",dpuuid=(new Date).getTime(),instActive;$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return extendRemove(this._defaults,e||{}),this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase(),inline=nodeName=="div"||nodeName=="span";target.id||(this.uuid+=1,target.id="dp"+this.uuid);var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{}),nodeName=="input"?this._connectDatepicker(target,inst):inline&&this._inlineDatepicker(target,inst)},_newInst:function(e,t){var n=e[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1");return{id:n,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:t,dpDiv:t?bindHover($('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')):this.dpDiv}},_connectDatepicker:function(e,t){var n=$(e);t.append=$([]),t.trigger=$([]);if(n.hasClass(this.markerClassName))return;this._attachments(n,t),n.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,n,r){t.settings[n]=r}).bind("getData.datepicker",function(e,n){return this._get(t,n)}),this._autoSize(t),$.data(e,PROP_NAME,t),t.settings.disabled&&this._disableDatepicker(e)},_attachments:function(e,t){var n=this._get(t,"appendText"),r=this._get(t,"isRTL");t.append&&t.append.remove(),n&&(t.append=$('<span class="'+this._appendClass+'">'+n+"</span>"),e[r?"before":"after"](t.append)),e.unbind("focus",this._showDatepicker),t.trigger&&t.trigger.remove();var i=this._get(t,"showOn");(i=="focus"||i=="both")&&e.focus(this._showDatepicker);if(i=="button"||i=="both"){var s=this._get(t,"buttonText"),o=this._get(t,"buttonImage");t.trigger=$(this._get(t,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:o,alt:s,title:s}):$('<button type="button"></button>').addClass(this._triggerClass).html(o==""?s:$("<img/>").attr({src:o,alt:s,title:s}))),e[r?"before":"after"](t.trigger),t.trigger.click(function(){return $.datepicker._datepickerShowing&&$.datepicker._lastInput==e[0]?$.datepicker._hideDatepicker():$.datepicker._datepickerShowing&&$.datepicker._lastInput!=e[0]?($.datepicker._hideDatepicker(),$.datepicker._showDatepicker(e[0])):$.datepicker._showDatepicker(e[0]),!1})}},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t=new Date(2009,11,20),n=this._get(e,"dateFormat");if(n.match(/[DM]/)){var r=function(e){var t=0,n=0;for(var r=0;r<e.length;r++)e[r].length>t&&(t=e[r].length,n=r);return n};t.setMonth(r(this._get(e,n.match(/MM/)?"monthNames":"monthNamesShort"))),t.setDate(r(this._get(e,n.match(/DD/)?"dayNames":"dayNamesShort"))+20-t.getDay())}e.input.attr("size",this._formatDate(e,t).length)}},_inlineDatepicker:function(e,t){var n=$(e);if(n.hasClass(this.markerClassName))return;n.addClass(this.markerClassName).append(t.dpDiv).bind("setData.datepicker",function(e,n,r){t.settings[n]=r}).bind("getData.datepicker",function(e,n){return this._get(t,n)}),$.data(e,PROP_NAME,t),this._setDate(t,this._getDefaultDate(t),!0),this._updateDatepicker(t),this._updateAlternate(t),t.settings.disabled&&this._disableDatepicker(e),t.dpDiv.css("display","block")},_dialogDatepicker:function(e,t,n,r,i){var s=this._dialogInst;if(!s){this.uuid+=1;var o="dp"+this.uuid;this._dialogInput=$('<input type="text" id="'+o+'" style="position: absolute; top: -100px; width: 0px;"/>'),this._dialogInput.keydown(this._doKeyDown),$("body").append(this._dialogInput),s=this._dialogInst=this._newInst(this._dialogInput,!1),s.settings={},$.data(this._dialogInput[0],PROP_NAME,s)}extendRemove(s.settings,r||{}),t=t&&t.constructor==Date?this._formatDate(s,t):t,this._dialogInput.val(t),this._pos=i?i.length?i:[i.pageX,i.pageY]:null;if(!this._pos){var u=document.documentElement.clientWidth,a=document.documentElement.clientHeight,f=document.documentElement.scrollLeft||document.body.scrollLeft,l=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[u/2-100+f,a/2-150+l]}return this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),s.settings.onSelect=n,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),$.blockUI&&$.blockUI(this.dpDiv),$.data(this._dialogInput[0],PROP_NAME,s),this},_destroyDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();$.removeData(e,PROP_NAME),r=="input"?(n.append.remove(),n.trigger.remove(),t.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):(r=="div"||r=="span")&&t.removeClass(this.markerClassName).empty()},_enableDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();if(r=="input")e.disabled=!1,n.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if(r=="div"||r=="span"){var i=t.children("."+this._inlineClass);i.children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)}this._disabledInputs=$.map(this._disabledInputs,function(t){return t==e?null:t})},_disableDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();if(r=="input")e.disabled=!0,n.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if(r=="div"||r=="span"){var i=t.children("."+this._inlineClass);i.children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)}this._disabledInputs=$.map(this._disabledInputs,function(t){return t==e?null:t}),this._disabledInputs[this._disabledInputs.length]=e},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;t<this._disabledInputs.length;t++)if(this._disabledInputs[t]==e)return!0;return!1},_getInst:function(e){try{return $.data(e,PROP_NAME)}catch(t){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,t,n){var r=this._getInst(e);if(arguments.length==2&&typeof t=="string")return t=="defaults"?$.extend({},$.datepicker._defaults):r?t=="all"?$.extend({},r.settings):this._get(r,t):null;var i=t||{};typeof t=="string"&&(i={},i[t]=n);if(r){this._curInst==r&&this._hideDatepicker();var s=this._getDateDatepicker(e,!0),o=this._getMinMaxDate(r,"min"),u=this._getMinMaxDate(r,"max");extendRemove(r.settings,i),o!==null&&i.dateFormat!==undefined&&i.minDate===undefined&&(r.settings.minDate=this._formatDate(r,o)),u!==null&&i.dateFormat!==undefined&&i.maxDate===undefined&&(r.settings.maxDate=this._formatDate(r,u)),this._attachments($(e),r),this._autoSize(r),this._setDate(r,s),this._updateAlternate(r),this._updateDatepicker(r)}},_changeDatepicker:function(e,t,n){this._optionDatepicker(e,t,n)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var n=this._getInst(e);n&&(this._setDate(n,t),this._updateDatepicker(n),this._updateAlternate(n))},_getDateDatepicker:function(e,t){var n=this._getInst(e);return n&&!n.inline&&this._setDateFromField(n,t),n?this._getDate(n):null},_doKeyDown:function(e){var t=$.datepicker._getInst(e.target),n=!0,r=t.dpDiv.is(".ui-datepicker-rtl");t._keyEvent=!0;if($.datepicker._datepickerShowing)switch(e.keyCode){case 9:$.datepicker._hideDatepicker(),n=!1;break;case 13:var i=$("td."+$.datepicker._dayOverClass+":not(."+$.datepicker._currentClass+")",t.dpDiv);i[0]&&$.datepicker._selectDay(e.target,t.selectedMonth,t.selectedYear,i[0]);var s=$.datepicker._get(t,"onSelect");if(s){var o=$.datepicker._formatDate(t);s.apply(t.input?t.input[0]:null,[o,t])}else $.datepicker._hideDatepicker();return!1;case 27:$.datepicker._hideDatepicker();break;case 33:$.datepicker._adjustDate(e.target,e.ctrlKey?-$.datepicker._get(t,"stepBigMonths"):-$.datepicker._get(t,"stepMonths"),"M");break;case 34:$.datepicker._adjustDate(e.target,e.ctrlKey?+$.datepicker._get(t,"stepBigMonths"):+$.datepicker._get(t,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&$.datepicker._clearDate(e.target),n=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&$.datepicker._gotoToday(e.target),n=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,r?1:-1,"D"),n=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&$.datepicker._adjustDate(e.target,e.ctrlKey?-$.datepicker._get(t,"stepBigMonths"):-$.datepicker._get(t,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,-7,"D"),n=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,r?-1:1,"D"),n=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&$.datepicker._adjustDate(e.target,e.ctrlKey?+$.datepicker._get(t,"stepBigMonths"):+$.datepicker._get(t,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,7,"D"),n=e.ctrlKey||e.metaKey;break;default:n=!1}else e.keyCode==36&&e.ctrlKey?$.datepicker._showDatepicker(this):n=!1;n&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var t=$.datepicker._getInst(e.target);if($.datepicker._get(t,"constrainInput")){var n=$.datepicker._possibleChars($.datepicker._get(t,"dateFormat")),r=String.fromCharCode(e.charCode==undefined?e.keyCode:e.charCode);return e.ctrlKey||e.metaKey||r<" "||!n||n.indexOf(r)>-1}},_doKeyUp:function(e){var t=$.datepicker._getInst(e.target);if(t.input.val()!=t.lastVal)try{var n=$.datepicker.parseDate($.datepicker._get(t,"dateFormat"),t.input?t.input.val():null,$.datepicker._getFormatConfig(t));n&&($.datepicker._setDateFromField(t),$.datepicker._updateAlternate(t),$.datepicker._updateDatepicker(t))}catch(r){$.datepicker.log(r)}return!0},_showDatepicker:function(e){e=e.target||e,e.nodeName.toLowerCase()!="input"&&(e=$("input",e.parentNode)[0]);if($.datepicker._isDisabledDatepicker(e)||$.datepicker._lastInput==e)return;var t=$.datepicker._getInst(e);$.datepicker._curInst&&$.datepicker._curInst!=t&&($.datepicker._curInst.dpDiv.stop(!0,!0),t&&$.datepicker._datepickerShowing&&$.datepicker._hideDatepicker($.datepicker._curInst.input[0]));var n=$.datepicker._get(t,"beforeShow"),r=n?n.apply(e,[e,t]):{};if(r===!1)return;extendRemove(t.settings,r),t.lastVal=null,$.datepicker._lastInput=e,$.datepicker._setDateFromField(t),$.datepicker._inDialog&&(e.value=""),$.datepicker._pos||($.datepicker._pos=$.datepicker._findPos(e),$.datepicker._pos[1]+=e.offsetHeight);var i=!1;$(e).parents().each(function(){return i|=$(this).css("position")=="fixed",!i});var s={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null,t.dpDiv.empty(),t.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),$.datepicker._updateDatepicker(t),s=$.datepicker._checkOffset(t,s,i),t.dpDiv.css({position:$.datepicker._inDialog&&$.blockUI?"static":i?"fixed":"absolute",display:"none",left:s.left+"px",top:s.top+"px"});if(!t.inline){var o=$.datepicker._get(t,"showAnim"),u=$.datepicker._get(t,"duration"),a=function(){var e=t.dpDiv.find("iframe.ui-datepicker-cover");if(!!e.length){var n=$.datepicker._getBorders(t.dpDiv);e.css({left:-n[0],top:-n[1],width:t.dpDiv.outerWidth(),height:t.dpDiv.outerHeight()})}};t.dpDiv.zIndex($(e).zIndex()+1),$.datepicker._datepickerShowing=!0,$.effects&&($.effects.effect[o]||$.effects[o])?t.dpDiv.show(o,$.datepicker._get(t,"showOptions"),u,a):t.dpDiv[o||"show"](o?u:null,a),(!o||!u)&&a(),t.input.is(":visible")&&!t.input.is(":disabled")&&t.input.focus(),$.datepicker._curInst=t}},_updateDatepicker:function(e){this.maxRows=4;var t=$.datepicker._getBorders(e.dpDiv);instActive=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var n=e.dpDiv.find("iframe.ui-datepicker-cover");!n.length||n.css({left:-t[0],top:-t[1],width:e.dpDiv.outerWidth(),height:e.dpDiv.outerHeight()}),e.dpDiv.find("."+this._dayOverClass+" a").mouseover();var r=this._getNumberOfMonths(e),i=r[1],s=17;e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),i>1&&e.dpDiv.addClass("ui-datepicker-multi-"+i).css("width",s*i+"em"),e.dpDiv[(r[0]!=1||r[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e==$.datepicker._curInst&&$.datepicker._datepickerShowing&&e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&e.input[0]!=document.activeElement&&e.input.focus();if(e.yearshtml){var o=e.yearshtml;setTimeout(function(){o===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),o=e.yearshtml=null},0)}},_getBorders:function(e){var t=function(e){return{thin:1,medium:2,thick:3}[e]||e};return[parseFloat(t(e.css("border-left-width"))),parseFloat(t(e.css("border-top-width")))]},_checkOffset:function(e,t,n){var r=e.dpDiv.outerWidth(),i=e.dpDiv.outerHeight(),s=e.input?e.input.outerWidth():0,o=e.input?e.input.outerHeight():0,u=document.documentElement.clientWidth+(n?0:$(document).scrollLeft()),a=document.documentElement.clientHeight+(n?0:$(document).scrollTop());return t.left-=this._get(e,"isRTL")?r-s:0,t.left-=n&&t.left==e.input.offset().left?$(document).scrollLeft():0,t.top-=n&&t.top==e.input.offset().top+o?$(document).scrollTop():0,t.left-=Math.min(t.left,t.left+r>u&&u>r?Math.abs(t.left+r-u):0),t.top-=Math.min(t.top,t.top+i>a&&a>i?Math.abs(i+o):0),t},_findPos:function(e){var t=this._getInst(e),n=this._get(t,"isRTL");while(e&&(e.type=="hidden"||e.nodeType!=1||$.expr.filters.hidden(e)))e=e[n?"previousSibling":"nextSibling"];var r=$(e).offset();return[r.left,r.top]},_hideDatepicker:function(e){var t=this._curInst;if(!t||e&&t!=$.data(e,PROP_NAME))return;if(this._datepickerShowing){var n=this._get(t,"showAnim"),r=this._get(t,"duration"),i=function(){$.datepicker._tidyDialog(t)};$.effects&&($.effects.effect[n]||$.effects[n])?t.dpDiv.hide(n,$.datepicker._get(t,"showOptions"),r,i):t.dpDiv[n=="slideDown"?"slideUp":n=="fadeIn"?"fadeOut":"hide"](n?r:null,i),n||i(),this._datepickerShowing=!1;var s=this._get(t,"onClose");s&&s.apply(t.input?t.input[0]:null,[t.input?t.input.val():"",t]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),$.blockUI&&($.unblockUI(),$("body").append(this.dpDiv))),this._inDialog=!1}},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(!$.datepicker._curInst)return;var t=$(e.target),n=$.datepicker._getInst(t[0]);(t[0].id!=$.datepicker._mainDivId&&t.parents("#"+$.datepicker._mainDivId).length==0&&!t.hasClass($.datepicker.markerClassName)&&!t.closest("."+$.datepicker._triggerClass).length&&$.datepicker._datepickerShowing&&(!$.datepicker._inDialog||!$.blockUI)||t.hasClass($.datepicker.markerClassName)&&$.datepicker._curInst!=n)&&$.datepicker._hideDatepicker()},_adjustDate:function(e,t,n){var r=$(e),i=this._getInst(r[0]);if(this._isDisabledDatepicker(r[0]))return;this._adjustInstDate(i,t+(n=="M"?this._get(i,"showCurrentAtPos"):0),n),this._updateDatepicker(i)},_gotoToday:function(e){var t=$(e),n=this._getInst(t[0]);if(this._get(n,"gotoCurrent")&&n.currentDay)n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear;else{var r=new Date;n.selectedDay=r.getDate(),n.drawMonth=n.selectedMonth=r.getMonth(),n.drawYear=n.selectedYear=r.getFullYear()}this._notifyChange(n),this._adjustDate(t)},_selectMonthYear:function(e,t,n){var r=$(e),i=this._getInst(r[0]);i["selected"+(n=="M"?"Month":"Year")]=i["draw"+(n=="M"?"Month":"Year")]=parseInt(t.options[t.selectedIndex].value,10),this._notifyChange(i),this._adjustDate(r)},_selectDay:function(e,t,n,r){var i=$(e);if($(r).hasClass(this._unselectableClass)||this._isDisabledDatepicker(i[0]))return;var s=this._getInst(i[0]);s.selectedDay=s.currentDay=$("a",r).html(),s.selectedMonth=s.currentMonth=t,s.selectedYear=s.currentYear=n,this._selectDate(e,this._formatDate(s,s.currentDay,s.currentMonth,s.currentYear))},_clearDate:function(e){var t=$(e),n=this._getInst(t[0]);this._selectDate(t,"")},_selectDate:function(e,t){var n=$(e),r=this._getInst(n[0]);t=t!=null?t:this._formatDate(r),r.input&&r.input.val(t),this._updateAlternate(r);var i=this._get(r,"onSelect");i?i.apply(r.input?r.input[0]:null,[t,r]):r.input&&r.input.trigger("change"),r.inline?this._updateDatepicker(r):(this._hideDatepicker(),this._lastInput=r.input[0],typeof r.input[0]!="object"&&r.input.focus(),this._lastInput=null)},_updateAlternate:function(e){var t=this._get(e,"altField");if(t){var n=this._get(e,"altFormat")||this._get(e,"dateFormat"),r=this._getDate(e),i=this.formatDate(n,r,this._getFormatConfig(e));$(t).each(function(){$(this).val(i)})}},noWeekends:function(e){var t=e.getDay();return[t>0&&t<6,""]},iso8601Week:function(e){var t=new Date(e.getTime());t.setDate(t.getDate()+4-(t.getDay()||7));var n=t.getTime();return t.setMonth(0),t.setDate(1),Math.floor(Math.round((n-t)/864e5)/7)+1},parseDate:function(e,t,n){if(e==null||t==null)throw"Invalid arguments";t=typeof t=="object"?t.toString():t+"";if(t=="")return null;var r=(n?n.shortYearCutoff:null)||this._defaults.shortYearCutoff;r=typeof r!="string"?r:(new Date).getFullYear()%100+parseInt(r,10);var i=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,s=(n?n.dayNames:null)||this._defaults.dayNames,o=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,u=(n?n.monthNames:null)||this._defaults.monthNames,a=-1,f=-1,l=-1,c=-1,h=!1,p=function(t){var n=y+1<e.length&&e.charAt(y+1)==t;return n&&y++,n},d=function(e){var n=p(e),r=e=="@"?14:e=="!"?20:e=="y"&&n?4:e=="o"?3:2,i=new RegExp("^\\d{1,"+r+"}"),s=t.substring(g).match(i);if(!s)throw"Missing number at position "+g;return g+=s[0].length,parseInt(s[0],10)},v=function(e,n,r){var i=$.map(p(e)?r:n,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)}),s=-1;$.each(i,function(e,n){var r=n[1];if(t.substr(g,r.length).toLowerCase()==r.toLowerCase())return s=n[0],g+=r.length,!1});if(s!=-1)return s+1;throw"Unknown name at position "+g},m=function(){if(t.charAt(g)!=e.charAt(y))throw"Unexpected literal at position "+g;g++},g=0;for(var y=0;y<e.length;y++)if(h)e.charAt(y)=="'"&&!p("'")?h=!1:m();else switch(e.charAt(y)){case"d":l=d("d");break;case"D":v("D",i,s);break;case"o":c=d("o");break;case"m":f=d("m");break;case"M":f=v("M",o,u);break;case"y":a=d("y");break;case"@":var b=new Date(d("@"));a=b.getFullYear(),f=b.getMonth()+1,l=b.getDate();break;case"!":var b=new Date((d("!")-this._ticksTo1970)/1e4);a=b.getFullYear(),f=b.getMonth()+1,l=b.getDate();break;case"'":p("'")?m():h=!0;break;default:m()}if(g<t.length){var w=t.substr(g);if(!/^\s+/.test(w))throw"Extra/unparsed characters found in date: "+w}a==-1?a=(new Date).getFullYear():a<100&&(a+=(new Date).getFullYear()-(new Date).getFullYear()%100+(a<=r?0:-100));if(c>-1){f=1,l=c;do{var E=this._getDaysInMonth(a,f-1);if(l<=E)break;f++,l-=E}while(!0)}var b=this._daylightSavingAdjust(new Date(a,f-1,l));if(b.getFullYear()!=a||b.getMonth()+1!=f||b.getDate()!=l)throw"Invalid date";return b},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1e7,formatDate:function(e,t,n){if(!t)return"";var r=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,i=(n?n.dayNames:null)||this._defaults.dayNames,s=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,o=(n?n.monthNames:null)||this._defaults.monthNames,u=function(t){var n=h+1<e.length&&e.charAt(h+1)==t;return n&&h++,n},a=function(e,t,n){var r=""+t;if(u(e))while(r.length<n)r="0"+r;return r},f=function(e,t,n,r){return u(e)?r[t]:n[t]},l="",c=!1;if(t)for(var h=0;h<e.length;h++)if(c)e.charAt(h)=="'"&&!u("'")?c=!1:l+=e.charAt(h);else switch(e.charAt(h)){case"d":l+=a("d",t.getDate(),2);break;case"D":l+=f("D",t.getDay(),r,i);break;case"o":l+=a("o",Math.round(((new Date(t.getFullYear(),t.getMonth(),t.getDate())).getTime()-(new Date(t.getFullYear(),0,0)).getTime())/864e5),3);break;case"m":l+=a("m",t.getMonth()+1,2);break;case"M":l+=f("M",t.getMonth(),s,o);break;case"y":l+=u("y")?t.getFullYear():(t.getYear()%100<10?"0":"")+t.getYear()%100;break;case"@":l+=t.getTime();break;case"!":l+=t.getTime()*1e4+this._ticksTo1970;break;case"'":u("'")?l+="'":c=!0;break;default:l+=e.charAt(h)}return l},_possibleChars:function(e){var t="",n=!1,r=function(t){var n=i+1<e.length&&e.charAt(i+1)==t;return n&&i++,n};for(var i=0;i<e.length;i++)if(n)e.charAt(i)=="'"&&!r("'")?n=!1:t+=e.charAt(i);else switch(e.charAt(i)){case"d":case"m":case"y":case"@":t+="0123456789";break;case"D":case"M":return null;case"'":r("'")?t+="'":n=!0;break;default:t+=e.charAt(i)}return t},_get:function(e,t){return e.settings[t]!==undefined?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()==e.lastVal)return;var n=this._get(e,"dateFormat"),r=e.lastVal=e.input?e.input.val():null,i,s;i=s=this._getDefaultDate(e);var o=this._getFormatConfig(e);try{i=this.parseDate(n,r,o)||s}catch(u){this.log(u),r=t?"":r}e.selectedDay=i.getDate(),e.drawMonth=e.selectedMonth=i.getMonth(),e.drawYear=e.selectedYear=i.getFullYear(),e.currentDay=r?i.getDate():0,e.currentMonth=r?i.getMonth():0,e.currentYear=r?i.getFullYear():0,this._adjustInstDate(e)},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(e,t,n){var r=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},i=function(t){try{return $.datepicker.parseDate($.datepicker._get(e,"dateFormat"),t,$.datepicker._getFormatConfig(e))}catch(n){}var r=(t.toLowerCase().match(/^c/)?$.datepicker._getDate(e):null)||new Date,i=r.getFullYear(),s=r.getMonth(),o=r.getDate(),u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,a=u.exec(t);while(a){switch(a[2]||"d"){case"d":case"D":o+=parseInt(a[1],10);break;case"w":case"W":o+=parseInt(a[1],10)*7;break;case"m":case"M":s+=parseInt(a[1],10),o=Math.min(o,$.datepicker._getDaysInMonth(i,s));break;case"y":case"Y":i+=parseInt(a[1],10),o=Math.min(o,$.datepicker._getDaysInMonth(i,s))}a=u.exec(t)}return new Date(i,s,o)},s=t==null||t===""?n:typeof t=="string"?i(t):typeof t=="number"?isNaN(t)?n:r(t):new Date(t.getTime());return s=s&&s.toString()=="Invalid Date"?n:s,s&&(s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)),this._daylightSavingAdjust(s)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,n){var r=!t,i=e.selectedMonth,s=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),(i!=e.selectedMonth||s!=e.selectedYear)&&!n&&this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(r?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&e.input.val()==""?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(e){var t=this._get(e,"stepMonths"),n="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){window["DP_jQuery_"+dpuuid].datepicker._adjustDate(n,-t,"M")},next:function(){window["DP_jQuery_"+dpuuid].datepicker._adjustDate(n,+t,"M")},hide:function(){window["DP_jQuery_"+dpuuid].datepicker._hideDatepicker()},today:function(){window["DP_jQuery_"+dpuuid].datepicker._gotoToday(n)},selectDay:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectDay(n,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectMonthYear(n,this,"M"),!1},selectYear:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectMonthYear(n,this,"Y"),!1}};$(this).bind(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t=new Date;t=this._daylightSavingAdjust(new Date(t.getFullYear(),t.getMonth(),t.getDate()));var n=this._get(e,"isRTL"),r=this._get(e,"showButtonPanel"),i=this._get(e,"hideIfNoPrevNext"),s=this._get(e,"navigationAsDateFormat"),o=this._getNumberOfMonths(e),u=this._get(e,"showCurrentAtPos"),a=this._get(e,"stepMonths"),f=o[0]!=1||o[1]!=1,l=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),c=this._getMinMaxDate(e,"min"),h=this._getMinMaxDate(e,"max"),p=e.drawMonth-u,d=e.drawYear;p<0&&(p+=12,d--);if(h){var v=this._daylightSavingAdjust(new Date(h.getFullYear(),h.getMonth()-o[0]*o[1]+1,h.getDate()));v=c&&v<c?c:v;while(this._daylightSavingAdjust(new Date(d,p,1))>v)p--,p<0&&(p=11,d--)}e.drawMonth=p,e.drawYear=d;var m=this._get(e,"prevText");m=s?this.formatDate(m,this._daylightSavingAdjust(new Date(d,p-a,1)),this._getFormatConfig(e)):m;var g=this._canAdjustMonth(e,-1,d,p)?'<a class="ui-datepicker-prev ui-corner-all" data-handler="prev" data-event="click" title="'+m+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"e":"w")+'">'+m+"</span></a>":i?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+m+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"e":"w")+'">'+m+"</span></a>",y=this._get(e,"nextText");y=s?this.formatDate(y,this._daylightSavingAdjust(new Date(d,p+a,1)),this._getFormatConfig(e)):y;var b=this._canAdjustMonth(e,1,d,p)?'<a class="ui-datepicker-next ui-corner-all" data-handler="next" data-event="click" title="'+y+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"w":"e")+'">'+y+"</span></a>":i?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+y+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"w":"e")+'">'+y+"</span></a>",w=this._get(e,"currentText"),E=this._get(e,"gotoCurrent")&&e.currentDay?l:t;w=s?this.formatDate(w,E,this._getFormatConfig(e)):w;var S=e.inline?"":'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" data-handler="hide" data-event="click">'+this._get(e,"closeText")+"</button>",x=r?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(n?S:"")+(this._isInRange(e,E)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" data-handler="today" data-event="click">'+w+"</button>":"")+(n?"":S)+"</div>":"",T=parseInt(this._get(e,"firstDay"),10);T=isNaN(T)?0:T;var N=this._get(e,"showWeek"),C=this._get(e,"dayNames"),k=this._get(e,"dayNamesShort"),L=this._get(e,"dayNamesMin"),A=this._get(e,"monthNames"),O=this._get(e,"monthNamesShort"),M=this._get(e,"beforeShowDay"),_=this._get(e,"showOtherMonths"),D=this._get(e,"selectOtherMonths"),P=this._get(e,"calculateWeek")||this.iso8601Week,H=this._getDefaultDate(e),B="";for(var j=0;j<o[0];j++){var F="";this.maxRows=4;for(var I=0;I<o[1];I++){var q=this._daylightSavingAdjust(new Date(d,p,e.selectedDay)),R=" ui-corner-all",U="";if(f){U+='<div class="ui-datepicker-group';if(o[1]>1)switch(I){case 0:U+=" ui-datepicker-group-first",R=" ui-corner-"+(n?"right":"left");break;case o[1]-1:U+=" ui-datepicker-group-last",R=" ui-corner-"+(n?"left":"right");break;default:U+=" ui-datepicker-group-middle",R=""}U+='">'}U+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+R+'">'+(/all|left/.test(R)&&j==0?n?b:g:"")+(/all|right/.test(R)&&j==0?n?g:b:"")+this._generateMonthYearHeader(e,p,d,c,h,j>0||I>0,A,O)+'</div><table class="ui-datepicker-calendar"><thead>'+"<tr>";var z=N?'<th class="ui-datepicker-week-col">'+this._get(e,"weekHeader")+"</th>":"";for(var W=0;W<7;W++){var X=(W+T)%7;z+="<th"+((W+T+6)%7>=5?' class="ui-datepicker-week-end"':"")+">"+'<span title="'+C[X]+'">'+L[X]+"</span></th>"}U+=z+"</tr></thead><tbody>";var V=this._getDaysInMonth(d,p);d==e.selectedYear&&p==e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,V));var J=(this._getFirstDayOfMonth(d,p)-T+7)%7,K=Math.ceil((J+V)/7),Q=f?this.maxRows>K?this.maxRows:K:K;this.maxRows=Q;var G=this._daylightSavingAdjust(new Date(d,p,1-J));for(var Y=0;Y<Q;Y++){U+="<tr>";var Z=N?'<td class="ui-datepicker-week-col">'+this._get(e,"calculateWeek")(G)+"</td>":"";for(var W=0;W<7;W++){var et=M?M.apply(e.input?e.input[0]:null,[G]):[!0,""],tt=G.getMonth()!=p,nt=tt&&!D||!et[0]||c&&G<c||h&&G>h;Z+='<td class="'+((W+T+6)%7>=5?" ui-datepicker-week-end":"")+(tt?" ui-datepicker-other-month":"")+(G.getTime()==q.getTime()&&p==e.selectedMonth&&e._keyEvent||H.getTime()==G.getTime()&&H.getTime()==q.getTime()?" "+this._dayOverClass:"")+(nt?" "+this._unselectableClass+" ui-state-disabled":"")+(tt&&!_?"":" "+et[1]+(G.getTime()==l.getTime()?" "+this._currentClass:"")+(G.getTime()==t.getTime()?" ui-datepicker-today":""))+'"'+((!tt||_)&&et[2]?' title="'+et[2]+'"':"")+(nt?"":' data-handler="selectDay" data-event="click" data-month="'+G.getMonth()+'" data-year="'+G.getFullYear()+'"')+">"+(tt&&!_?"&#xa0;":nt?'<span class="ui-state-default">'+G.getDate()+"</span>":'<a class="ui-state-default'+(G.getTime()==t.getTime()?" ui-state-highlight":"")+(G.getTime()==l.getTime()?" ui-state-active":"")+(tt?" ui-priority-secondary":"")+'" href="#">'+G.getDate()+"</a>")+"</td>",G.setDate(G.getDate()+1),G=this._daylightSavingAdjust(G)}U+=Z+"</tr>"}p++,p>11&&(p=0,d++),U+="</tbody></table>"+(f?"</div>"+(o[0]>0&&I==o[1]-1?'<div class="ui-datepicker-row-break"></div>':""):""),F+=U}B+=F}return B+=x+($.ui.ie6&&!e.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':""),e._keyEvent=!1,B},_generateMonthYearHeader:function(e,t,n,r,i,s,o,u){var a=this._get(e,"changeMonth"),f=this._get(e,"changeYear"),l=this._get(e,"showMonthAfterYear"),c='<div class="ui-datepicker-title">',h="";if(s||!a)h+='<span class="ui-datepicker-month">'+o[t]+"</span>";else{var p=r&&r.getFullYear()==n,d=i&&i.getFullYear()==n;h+='<select class="ui-datepicker-month" data-handler="selectMonth" data-event="change">';for(var v=0;v<12;v++)(!p||v>=r.getMonth())&&(!d||v<=i.getMonth())&&(h+='<option value="'+v+'"'+(v==t?' selected="selected"':"")+">"+u[v]+"</option>");h+="</select>"}l||(c+=h+(s||!a||!f?"&#xa0;":""));if(!e.yearshtml){e.yearshtml="";if(s||!f)c+='<span class="ui-datepicker-year">'+n+"</span>";else{var m=this._get(e,"yearRange").split(":"),g=(new Date).getFullYear(),y=function(e){var t=e.match(/c[+-].*/)?n+parseInt(e.substring(1),10):e.match(/[+-].*/)?g+parseInt(e,10):parseInt(e,10);return isNaN(t)?g:t},b=y(m[0]),w=Math.max(b,y(m[1]||""));b=r?Math.max(b,r.getFullYear()):b,w=i?Math.min(w,i.getFullYear()):w,e.yearshtml+='<select class="ui-datepicker-year" data-handler="selectYear" data-event="change">';for(;b<=w;b++)e.yearshtml+='<option value="'+b+'"'+(b==n?' selected="selected"':"")+">"+b+"</option>";e.yearshtml+="</select>",c+=e.yearshtml,e.yearshtml=null}}return c+=this._get(e,"yearSuffix"),l&&(c+=(s||!a||!f?"&#xa0;":"")+h),c+="</div>",c},_adjustInstDate:function(e,t,n){var r=e.drawYear+(n=="Y"?t:0),i=e.drawMonth+(n=="M"?t:0),s=Math.min(e.selectedDay,this._getDaysInMonth(r,i))+(n=="D"?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(r,i,s)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),(n=="M"||n=="Y")&&this._notifyChange(e)},_restrictMinMax:function(e,t){var n=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max"),i=n&&t<n?n:t;return i=r&&i>r?r:i,i},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return t==null?[1,1]:typeof t=="number"?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return(new Date(e,t,1)).getDay()},_canAdjustMonth:function(e,t,n,r){var i=this._getNumberOfMonths(e),s=this._daylightSavingAdjust(new Date(n,r+(t<0?t:i[0]*i[1]),1));return t<0&&s.setDate(this._getDaysInMonth(s.getFullYear(),s.getMonth())),this._isInRange(e,s)},_isInRange:function(e,t){var n=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max");return(!n||t.getTime()>=n.getTime())&&(!r||t.getTime()<=r.getTime())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t=typeof t!="string"?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,n,r){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var i=t?typeof t=="object"?t:this._daylightSavingAdjust(new Date(r,n,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),i,this._getFormatConfig(e))}}),$.fn.datepicker=function(e){if(!this.length)return this;$.datepicker.initialized||($(document).mousedown($.datepicker._checkExternalClick).find(document.body).append($.datepicker.dpDiv),$.datepicker.initialized=!0);var t=Array.prototype.slice.call(arguments,1);return typeof e!="string"||e!="isDisabled"&&e!="getDate"&&e!="widget"?e=="option"&&arguments.length==2&&typeof arguments[1]=="string"?$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this[0]].concat(t)):this.each(function(){typeof e=="string"?$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this].concat(t)):$.datepicker._attachDatepicker(this,e)}):$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this[0]].concat(t))},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="1.9.2",window["DP_jQuery_"+dpuuid]=$})(jQuery);(function(e,t){var n=!1;e.widget("ui.menu",{version:"1.9.2",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,e.proxy(function(e){this.options.disabled&&e.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(e){e.preventDefault()},"click .ui-state-disabled > a":function(e){e.preventDefault()},"click .ui-menu-item:has(a)":function(t){var r=e(t.target).closest(".ui-menu-item");!n&&r.not(".ui-state-disabled").length&&(n=!0,this.select(t),r.has(".ui-menu").length?this.expand(t):this.element.is(":focus")||(this.element.trigger("focus",[!0]),this.active&&this.active.parents(".ui-menu").length===1&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){var n=e(t.currentTarget);n.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(t,n)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var n=this.active||this.element.children(".ui-menu-item").eq(0);t||this.focus(e,n)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){e(t.target).closest(".ui-menu").length||this.collapseAll(t),n=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").andSelf().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){function a(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var n,r,i,s,o,u=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:u=!1,r=this.previousFilter||"",i=String.fromCharCode(t.keyCode),s=!1,clearTimeout(this.filterTimer),i===r?s=!0:i=r+i,o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())}),n=s&&n.index(this.active.next())!==-1?this.active.nextAll(".ui-menu-item"):n,n.length||(i=String.fromCharCode(t.keyCode),o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())})),n.length?(this.focus(t,n),n.length>1?(this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}u&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(e):this.select(e))},refresh:function(){var t,n=this.options.icons.submenu,r=this.element.find(this.options.menus);r.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),r=t.prev("a"),i=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);r.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",r.attr("id"))}),t=r.add(this.element),t.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),t.children(":not(.ui-menu-item)").each(function(){var t=e(this);/[^\-—–\s]/.test(t.text())||t.addClass("ui-widget-content ui-menu-divider")}),t.children(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},focus:function(e,t){var n,r;this.blur(e,e&&e.type==="focus"),this._scrollIntoView(t),this.active=t.first(),r=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",r.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),e&&e.type==="keydown"?this._close():this.timer=this._delay(function(){this._close()},this.delay),n=t.children(".ui-menu"),n.length&&/^mouse/.test(e.type)&&this._startOpening(n),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var n,r,i,s,o,u;this._hasScroll()&&(n=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,r=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,i=t.offset().top-this.activeMenu.offset().top-n-r,s=this.activeMenu.scrollTop(),o=this.activeMenu.height(),u=t.height(),i<0?this.activeMenu.scrollTop(s+i):i+u>o&&this.activeMenu.scrollTop(s+i-o+u))},blur:function(e,t){t||clearTimeout(this.timer);if(!this.active)return;this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active})},_startOpening:function(e){clearTimeout(this.timer);if(e.attr("aria-hidden")!=="true")return;this.timer=this._delay(function(){this._close(),this._open(e)},this.delay)},_open:function(t){var n=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(n)},collapseAll:function(t,n){clearTimeout(this.timer),this.timer=this._delay(function(){var r=n?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));r.length||(r=this.element),this._close(r),this.blur(t),this.activeMenu=r},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,n){var r;this.active&&(e==="first"||e==="last"?r=this.active[e==="first"?"prevAll":"nextAll"](".ui-menu-item").eq(-1):r=this.active[e+"All"](".ui-menu-item").eq(0));if(!r||!r.length||!this.active)r=this.activeMenu.children(".ui-menu-item")[t]();this.focus(n,r)},nextPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isLastItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r-i<0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())},previousPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isFirstItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r+i>0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item").first())},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var n={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,n)}})})(jQuery);(function(e,t){var n=5;e.widget("ui.slider",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var t,r,i=this.options,s=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),o="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",u=[];this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"+(i.disabled?" ui-slider-disabled ui-disabled":"")),this.range=e([]),i.range&&(i.range===!0&&(i.values||(i.values=[this._valueMin(),this._valueMin()]),i.values.length&&i.values.length!==2&&(i.values=[i.values[0],i.values[0]])),this.range=e("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(i.range==="min"||i.range==="max"?" ui-slider-range-"+i.range:""))),r=i.values&&i.values.length||1;for(t=s.length;t<r;t++)u.push(o);this.handles=s.add(e(u.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.add(this.range).filter("a").click(function(e){e.preventDefault()}).mouseenter(function(){i.disabled||e(this).addClass("ui-state-hover")}).mouseleave(function(){e(this).removeClass("ui-state-hover")}).focus(function(){i.disabled?e(this).blur():(e(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),e(this).addClass("ui-state-focus"))}).blur(function(){e(this).removeClass("ui-state-focus")}),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)}),this._on(this.handles,{keydown:function(t){var r,i,s,o,u=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:t.preventDefault();if(!this._keySliding){this._keySliding=!0,e(t.target).addClass("ui-state-active"),r=this._start(t,u);if(r===!1)return}}o=this.options.step,this.options.values&&this.options.values.length?i=s=this.values(u):i=s=this.value();switch(t.keyCode){case e.ui.keyCode.HOME:s=this._valueMin();break;case e.ui.keyCode.END:s=this._valueMax();break;case e.ui.keyCode.PAGE_UP:s=this._trimAlignValue(i+(this._valueMax()-this._valueMin())/n);break;case e.ui.keyCode.PAGE_DOWN:s=this._trimAlignValue(i-(this._valueMax()-this._valueMin())/n);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(i===this._valueMax())return;s=this._trimAlignValue(i+o);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(i===this._valueMin())return;s=this._trimAlignValue(i-o)}this._slide(t,u,s)},keyup:function(t){var n=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,n),this._change(t,n),e(t.target).removeClass("ui-state-active"))}}),this._refreshValue(),this._animateOff=!1},_destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var n,r,i,s,o,u,a,f,l=this,c=this.options;return c.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),n={x:t.pageX,y:t.pageY},r=this._normValueFromMouse(n),i=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var n=Math.abs(r-l.values(t));i>n&&(i=n,s=e(this),o=t)}),c.range===!0&&this.values(1)===c.min&&(o+=1,s=e(this.handles[o])),u=this._start(t,o),u===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,s.addClass("ui-state-active").focus(),a=s.offset(),f=!e(t.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=f?{left:0,top:0}:{left:t.pageX-a.left-s.width()/2,top:t.pageY-a.top-s.height()/2-(parseInt(s.css("borderTopWidth"),10)||0)-(parseInt(s.css("borderBottomWidth"),10)||0)+(parseInt(s.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,r),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},n=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,n),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,n,r,i,s;return this.orientation==="horizontal"?(t=this.elementSize.width,n=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,n=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),r=n/t,r>1&&(r=1),r<0&&(r=0),this.orientation==="vertical"&&(r=1-r),i=this._valueMax()-this._valueMin(),s=this._valueMin()+r*i,this._trimAlignValue(s)},_start:function(e,t){var n={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("start",e,n)},_slide:function(e,t,n){var r,i,s;this.options.values&&this.options.values.length?(r=this.values(t?0:1),this.options.values.length===2&&this.options.range===!0&&(t===0&&n>r||t===1&&n<r)&&(n=r),n!==this.values(t)&&(i=this.values(),i[t]=n,s=this._trigger("slide",e,{handle:this.handles[t],value:n,values:i}),r=this.values(t?0:1),s!==!1&&this.values(t,n,!0))):n!==this.value()&&(s=this._trigger("slide",e,{handle:this.handles[t],value:n}),s!==!1&&this.value(n))},_stop:function(e,t){var n={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("stop",e,n)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var n={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("change",e,n)}},value:function(e){if(arguments.length){this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0);return}return this._value()},values:function(t,n){var r,i,s;if(arguments.length>1){this.options.values[t]=this._trimAlignValue(n),this._refreshValue(),this._change(null,t);return}if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();r=this.options.values,i=arguments[0];for(s=0;s<r.length;s+=1)r[s]=this._trimAlignValue(i[s]),this._change(null,s);this._refreshValue()},_setOption:function(t,n){var r,i=0;e.isArray(this.options.values)&&(i=this.options.values.length),e.Widget.prototype._setOption.apply(this,arguments);switch(t){case"disabled":n?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.prop("disabled",!0),this.element.addClass("ui-disabled")):(this.handles.prop("disabled",!1),this.element.removeClass("ui-disabled"));break;case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":this._animateOff=!0,this._refreshValue();for(r=0;r<i;r+=1)this._change(null,r);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e),e},_values:function(e){var t,n,r;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t),t;n=this.options.values.slice();for(r=0;r<n.length;r+=1)n[r]=this._trimAlignValue(n[r]);return n},_trimAlignValue:function(e){if(e<=this._valueMin())return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,n=(e-this._valueMin())%t,r=e-n;return Math.abs(n)*2>=t&&(r+=n>0?t:-t),parseFloat(r.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var t,n,r,i,s,o=this.options.range,u=this.options,a=this,f=this._animateOff?!1:u.animate,l={};this.options.values&&this.options.values.length?this.handles.each(function(r){n=(a.values(r)-a._valueMin())/(a._valueMax()-a._valueMin())*100,l[a.orientation==="horizontal"?"left":"bottom"]=n+"%",e(this).stop(1,1)[f?"animate":"css"](l,u.animate),a.options.range===!0&&(a.orientation==="horizontal"?(r===0&&a.range.stop(1,1)[f?"animate":"css"]({left:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({width:n-t+"%"},{queue:!1,duration:u.animate})):(r===0&&a.range.stop(1,1)[f?"animate":"css"]({bottom:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({height:n-t+"%"},{queue:!1,duration:u.animate}))),t=n}):(r=this.value(),i=this._valueMin(),s=this._valueMax(),n=s!==i?(r-i)/(s-i)*100:0,l[this.orientation==="horizontal"?"left":"bottom"]=n+"%",this.handle.stop(1,1)[f?"animate":"css"](l,u.animate),o==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[f?"animate":"css"]({width:n+"%"},u.animate),o==="max"&&this.orientation==="horizontal"&&this.range[f?"animate":"css"]({width:100-n+"%"},{queue:!1,duration:u.animate}),o==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[f?"animate":"css"]({height:n+"%"},u.animate),o==="max"&&this.orientation==="vertical"&&this.range[f?"animate":"css"]({height:100-n+"%"},{queue:!1,duration:u.animate}))}})})(jQuery);(function(e,t){function i(){return++n}function s(e){return e.hash.length>1&&e.href.replace(r,"")===location.href.replace(r,"").replace(/\s/g,"%20")}var n=0,r=/#.*$/;e.widget("ui.tabs",{version:"1.9.2",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_create:function(){var t=this,n=this.options,r=n.active,i=location.hash.substring(1);this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",n.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs();if(r===null){i&&this.tabs.each(function(t,n){if(e(n).attr("aria-controls")===i)return r=t,!1}),r===null&&(r=this.tabs.index(this.tabs.filter(".ui-tabs-active")));if(r===null||r===-1)r=this.tabs.length?0:!1}r!==!1&&(r=this.tabs.index(this.tabs.eq(r)),r===-1&&(r=n.collapsible?!1:0)),n.active=r,!n.collapsible&&n.active===!1&&this.anchors.length&&(n.active=0),e.isArray(n.disabled)&&(n.disabled=e.unique(n.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.options.active!==!1&&this.anchors.length?this.active=this._findActive(this.options.active):this.active=e(),this._refresh(),this.active.length&&this.load(n.active)},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var n=e(this.document[0].activeElement).closest("li"),r=this.tabs.index(n),i=!0;if(this._handlePageNav(t))return;switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:r++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:i=!1,r--;break;case e.ui.keyCode.END:r=this.anchors.length-1;break;case e.ui.keyCode.HOME:r=0;break;case e.ui.keyCode.SPACE:t.preventDefault(),clearTimeout(this.activating),this._activate(r);return;case e.ui.keyCode.ENTER:t.preventDefault(),clearTimeout(this.activating),this._activate(r===this.options.active?!1:r);return;default:return}t.preventDefault(),clearTimeout(this.activating),r=this._focusNextTab(r,i),t.ctrlKey||(n.attr("aria-selected","false"),this.tabs.eq(r).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",r)},this.delay))},_panelKeydown:function(t){if(this._handlePageNav(t))return;t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP)return this._activate(this._focusNextTab(this.options.active-1,!1)),!0;if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN)return this._activate(this._focusNextTab(this.options.active+1,!0)),!0},_findNextTab:function(t,n){function i(){return t>r&&(t=0),t<0&&(t=r),t}var r=this.tabs.length-1;while(e.inArray(i(),this.options.disabled)!==-1)t=n?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){if(e==="active"){this._activate(t);return}if(e==="disabled"){this._setupDisabled(t);return}this._super(e,t),e==="collapsible"&&(this.element.toggleClass("ui-tabs-collapsible",t),!t&&this.options.active===!1&&this._activate(0)),e==="event"&&this._setupEvents(t),e==="heightStyle"&&this._setupHeightStyle(t)},_tabId:function(e){return e.attr("aria-controls")||"ui-tabs-"+i()},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,n=this.tablist.children(":has(a[href])");t.disabled=e.map(n.filter(".ui-state-disabled"),function(e){return n.index(e)}),this._processTabs(),t.active===!1||!this.anchors.length?(t.active=!1,this.active=e()):this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-expanded":"false","aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-expanded":"true","aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(n,r){var i,o,u,a=e(r).uniqueId().attr("id"),f=e(r).closest("li"),l=f.attr("aria-controls");s(r)?(i=r.hash,o=t.element.find(t._sanitizeSelector(i))):(u=t._tabId(f),i="#"+u,o=t.element.find(i),o.length||(o=t._createPanel(u),o.insertAfter(t.panels[n-1]||t.tablist)),o.attr("aria-live","polite")),o.length&&(t.panels=t.panels.add(o)),l&&f.data("ui-tabs-aria-controls",l),f.attr({"aria-controls":i.substring(1),"aria-labelledby":a}),o.attr("aria-labelledby",a)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var n=0,r;r=this.tabs[n];n++)t===!0||e.inArray(n,t)!==-1?e(r).addClass("ui-state-disabled").attr("aria-disabled","true"):e(r).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var n={click:function(e){e.preventDefault()}};t&&e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(this.anchors,n),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var n,r,i=this.element.parent();t==="fill"?(e.support.minHeight||(r=i.css("overflow"),i.css("overflow","hidden")),n=i.height(),this.element.siblings(":visible").each(function(){var t=e(this),r=t.css("position");if(r==="absolute"||r==="fixed")return;n-=t.outerHeight(!0)}),r&&i.css("overflow",r),this.element.children().not(this.panels).each(function(){n-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,n-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):t==="auto"&&(n=0,this.panels.each(function(){n=Math.max(n,e(this).height("").height())}).height(n))},_eventHandler:function(t){var n=this.options,r=this.active,i=e(t.currentTarget),s=i.closest("li"),o=s[0]===r[0],u=o&&n.collapsible,a=u?e():this._getPanelForTab(s),f=r.length?this._getPanelForTab(r):e(),l={oldTab:r,oldPanel:f,newTab:u?e():s,newPanel:a};t.preventDefault();if(s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||o&&!n.collapsible||this._trigger("beforeActivate",t,l)===!1)return;n.active=u?!1:this.tabs.index(s),this.active=o?e():s,this.xhr&&this.xhr.abort(),!f.length&&!a.length&&e.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,l)},_toggle:function(t,n){function o(){r.running=!1,r._trigger("activate",t,n)}function u(){n.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),i.length&&r.options.show?r._show(i,r.options.show,o):(i.show(),o())}var r=this,i=n.newPanel,s=n.oldPanel;this.running=!0,s.length&&this.options.hide?this._hide(s,this.options.hide,function(){n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),u()}):(n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),s.hide(),u()),s.attr({"aria-expanded":"false","aria-hidden":"true"}),n.oldTab.attr("aria-selected","false"),i.length&&s.length?n.oldTab.attr("tabIndex",-1):i.length&&this.tabs.filter(function(){return e(this).attr("tabIndex")===0}).attr("tabIndex",-1),i.attr({"aria-expanded":"true","aria-hidden":"false"}),n.newTab.attr({"aria-selected":"true",tabIndex:0})},_activate:function(t){var n,r=this._findActive(t);if(r[0]===this.active[0])return;r.length||(r=this.active),n=r.find(".ui-tabs-anchor")[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop})},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return typeof e=="string"&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeData("href.tabs").removeData("load.tabs").removeUniqueId(),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),n=t.data("ui-tabs-aria-controls");n?t.attr("aria-controls",n):t.removeAttr("aria-controls")}),this.panels.show(),this.options.heightStyle!=="content"&&this.panels.css("height","")},enable:function(n){var r=this.options.disabled;if(r===!1)return;n===t?r=!1:(n=this._getIndex(n),e.isArray(r)?r=e.map(r,function(e){return e!==n?e:null}):r=e.map(this.tabs,function(e,t){return t!==n?t:null})),this._setupDisabled(r)},disable:function(n){var r=this.options.disabled;if(r===!0)return;if(n===t)r=!0;else{n=this._getIndex(n);if(e.inArray(n,r)!==-1)return;e.isArray(r)?r=e.merge([n],r).sort():r=[n]}this._setupDisabled(r)},load:function(t,n){t=this._getIndex(t);var r=this,i=this.tabs.eq(t),o=i.find(".ui-tabs-anchor"),u=this._getPanelForTab(i),a={tab:i,panel:u};if(s(o[0]))return;this.xhr=e.ajax(this._ajaxSettings(o,n,a)),this.xhr&&this.xhr.statusText!=="canceled"&&(i.addClass("ui-tabs-loading"),u.attr("aria-busy","true"),this.xhr.success(function(e){setTimeout(function(){u.html(e),r._trigger("load",n,a)},1)}).complete(function(e,t){setTimeout(function(){t==="abort"&&r.panels.stop(!1,!0),i.removeClass("ui-tabs-loading"),u.removeAttr("aria-busy"),e===r.xhr&&delete r.xhr},1)}))},_ajaxSettings:function(t,n,r){var i=this;return{url:t.attr("href"),beforeSend:function(t,s){return i._trigger("beforeLoad",n,e.extend({jqXHR:t,ajaxSettings:s},r))}}},_getPanelForTab:function(t){var n=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+n))}}),e.uiBackCompat!==!1&&(e.ui.tabs.prototype._ui=function(e,t){return{tab:e,panel:t,index:this.anchors.index(e)}},e.widget("ui.tabs",e.ui.tabs,{url:function(e,t){this.anchors.eq(e).attr("href",t)}}),e.widget("ui.tabs",e.ui.tabs,{options:{ajaxOptions:null,cache:!1},_create:function(){this._super();var t=this;this._on({tabsbeforeload:function(n,r){if(e.data(r.tab[0],"cache.tabs")){n.preventDefault();return}r.jqXHR.success(function(){t.options.cache&&e.data(r.tab[0],"cache.tabs",!0)})}})},_ajaxSettings:function(t,n,r){var i=this.options.ajaxOptions;return e.extend({},i,{error:function(e,t){try{i.error(e,t,r.tab.closest("li").index(),r.tab[0])}catch(n){}}},this._superApply(arguments))},_setOption:function(e,t){e==="cache"&&t===!1&&this.anchors.removeData("cache.tabs"),this._super(e,t)},_destroy:function(){this.anchors.removeData("cache.tabs"),this._super()},url:function(e){this.anchors.eq(e).removeData("cache.tabs"),this._superApply(arguments)}}),e.widget("ui.tabs",e.ui.tabs,{abort:function(){this.xhr&&this.xhr.abort()}}),e.widget("ui.tabs",e.ui.tabs,{options:{spinner:"<em>Loading&#8230;</em>"},_create:function(){this._super(),this._on({tabsbeforeload:function(e,t){if(e.target!==this.element[0]||!this.options.spinner)return;var n=t.tab.find("span"),r=n.html();n.html(this.options.spinner),t.jqXHR.complete(function(){n.html(r)})}})}}),e.widget("ui.tabs",e.ui.tabs,{options:{enable:null,disable:null},enable:function(t){var n=this.options,r;if(t&&n.disabled===!0||e.isArray(n.disabled)&&e.inArray(t,n.disabled)!==-1)r=!0;this._superApply(arguments),r&&this._trigger("enable",null,this._ui(this.anchors[t],this.panels[t]))},disable:function(t){var n=this.options,r;if(t&&n.disabled===!1||e.isArray(n.disabled)&&e.inArray(t,n.disabled)===-1)r=!0;this._superApply(arguments),r&&this._trigger("disable",null,this._ui(this.anchors[t],this.panels[t]))}}),e.widget("ui.tabs",e.ui.tabs,{options:{add:null,remove:null,tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},add:function(n,r,i){i===t&&(i=this.anchors.length);var s,o,u=this.options,a=e(u.tabTemplate.replace(/#\{href\}/g,n).replace(/#\{label\}/g,r)),f=n.indexOf("#")?this._tabId(a):n.replace("#","");return a.addClass("ui-state-default ui-corner-top").data("ui-tabs-destroy",!0),a.attr("aria-controls",f),s=i>=this.tabs.length,o=this.element.find("#"+f),o.length||(o=this._createPanel(f),s?i>0?o.insertAfter(this.panels.eq(-1)):o.appendTo(this.element):o.insertBefore(this.panels[i])),o.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").hide(),s?a.appendTo(this.tablist):a.insertBefore(this.tabs[i]),u.disabled=e.map(u.disabled,function(e){return e>=i?++e:e}),this.refresh(),this.tabs.length===1&&u.active===!1&&this.option("active",0),this._trigger("add",null,this._ui(this.anchors[i],this.panels[i])),this},remove:function(t){t=this._getIndex(t);var n=this.options,r=this.tabs.eq(t).remove(),i=this._getPanelForTab(r).remove();return r.hasClass("ui-tabs-active")&&this.anchors.length>2&&this._activate(t+(t+1<this.anchors.length?1:-1)),n.disabled=e.map(e.grep(n.disabled,function(e){return e!==t}),function(e){return e>=t?--e:e}),this.refresh(),this._trigger("remove",null,this._ui(r.find("a")[0],i[0])),this}}),e.widget("ui.tabs",e.ui.tabs,{length:function(){return this.anchors.length}}),e.widget("ui.tabs",e.ui.tabs,{options:{idPrefix:"ui-tabs-"},_tabId:function(t){var n=t.is("li")?t.find("a[href]"):t;return n=n[0],e(n).closest("li").attr("aria-controls")||n.title&&n.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF\-]/g,"")||this.options.idPrefix+i()}}),e.widget("ui.tabs",e.ui.tabs,{options:{panelTemplate:"<div></div>"},_createPanel:function(t){return e(this.options.panelTemplate).attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)}}),e.widget("ui.tabs",e.ui.tabs,{_create:function(){var e=this.options;e.active===null&&e.selected!==t&&(e.active=e.selected===-1?!1:e.selected),this._super(),e.selected=e.active,e.selected===!1&&(e.selected=-1)},_setOption:function(e,t){if(e!=="selected")return this._super(e,t);var n=this.options;this._super("active",t===-1?!1:t),n.selected=n.active,n.selected===!1&&(n.selected=-1)},_eventHandler:function(){this._superApply(arguments),this.options.selected=this.options.active,this.options.selected===!1&&(this.options.selected=-1)}}),e.widget("ui.tabs",e.ui.tabs,{options:{show:null,select:null},_create:function(){this._super(),this.options.active!==!1&&this._trigger("show",null,this._ui(this.active.find(".ui-tabs-anchor")[0],this._getPanelForTab(this.active)[0]))},_trigger:function(e,t,n){var r,i,s=this._superApply(arguments);return s?(e==="beforeActivate"?(r=n.newTab.length?n.newTab:n.oldTab,i=n.newPanel.length?n.newPanel:n.oldPanel,s=this._super("select",t,{tab:r.find(".ui-tabs-anchor")[0],panel:i[0],index:r.closest("li").index()})):e==="activate"&&n.newTab.length&&(s=this._super("show",t,{tab:n.newTab.find(".ui-tabs-anchor")[0],panel:n.newPanel[0],index:n.newTab.closest("li").index()})),s):!1}}),e.widget("ui.tabs",e.ui.tabs,{select:function(e){e=this._getIndex(e);if(e===-1){if(!this.options.collapsible||this.options.selected===-1)return;e=this.options.selected}this.anchors.eq(e).trigger(this.options.event+this.eventNamespace)}}),function(){var t=0;e.widget("ui.tabs",e.ui.tabs,{options:{cookie:null},_create:function(){var e=this.options,t;e.active==null&&e.cookie&&(t=parseInt(this._cookie(),10),t===-1&&(t=!1),e.active=t),this._super()},_cookie:function(n){var r=[this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+ ++t)];return arguments.length&&(r.push(n===!1?-1:n),r.push(this.options.cookie)),e.cookie.apply(null,r)},_refresh:function(){this._super(),this.options.cookie&&this._cookie(this.options.active,this.options.cookie)},_eventHandler:function(){this._superApply(arguments),this.options.cookie&&this._cookie(this.options.active,this.options.cookie)},_destroy:function(){this._super(),this.options.cookie&&this._cookie(null,this.options.cookie)}})}(),e.widget("ui.tabs",e.ui.tabs,{_trigger:function(t,n,r){var i=e.extend({},r);return t==="load"&&(i.panel=i.panel[0],i.tab=i.tab.find(".ui-tabs-anchor")[0]),this._super(t,n,i)}}),e.widget("ui.tabs",e.ui.tabs,{options:{fx:null},_getFx:function(){var t,n,r=this.options.fx;return r&&(e.isArray(r)?(t=r[0],n=r[1]):t=n=r),r?{show:n,hide:t}:null},_toggle:function(e,t){function o(){n.running=!1,n._trigger("activate",e,t)}function u(){t.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),r.length&&s.show?r.animate(s.show,s.show.duration,function(){o()}):(r.show(),o())}var n=this,r=t.newPanel,i=t.oldPanel,s=this._getFx();if(!s)return this._super(e,t);n.running=!0,i.length&&s.hide?i.animate(s.hide,s.hide.duration,function(){t.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),u()}):(t.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),i.hide(),u())}}))})(jQuery);(function(e){function n(t,n){var r=(t.attr("aria-describedby")||"").split(/\s+/);r.push(n),t.data("ui-tooltip-id",n).attr("aria-describedby",e.trim(r.join(" ")))}function r(t){var n=t.data("ui-tooltip-id"),r=(t.attr("aria-describedby")||"").split(/\s+/),i=e.inArray(n,r);i!==-1&&r.splice(i,1),t.removeData("ui-tooltip-id"),r=e.trim(r.join(" ")),r?t.attr("aria-describedby",r):t.removeAttr("aria-describedby")}var t=0;e.widget("ui.tooltip",{version:"1.9.2",options:{content:function(){return e(this).attr("title")},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable()},_setOption:function(t,n){var r=this;if(t==="disabled"){this[n?"_disable":"_enable"](),this.options[t]=n;return}this._super(t,n),t==="content"&&e.each(this.tooltips,function(e,t){r._updateContent(t)})},_disable:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0)}),this.element.find(this.options.items).andSelf().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).attr("title","")})},_enable:function(){this.element.find(this.options.items).andSelf().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var n=this,r=e(t?t.target:this.element).closest(this.options.items);if(!r.length||r.data("ui-tooltip-id"))return;r.attr("title")&&r.data("ui-tooltip-title",r.attr("title")),r.data("ui-tooltip-open",!0),t&&t.type==="mouseover"&&r.parents().each(function(){var t=e(this),r;t.data("ui-tooltip-open")&&(r=e.Event("blur"),r.target=r.currentTarget=this,n.close(r,!0)),t.attr("title")&&(t.uniqueId(),n.parents[this.id]={element:this,title:t.attr("title")},t.attr("title",""))}),this._updateContent(r,t)},_updateContent:function(e,t){var n,r=this.options.content,i=this,s=t?t.type:null;if(typeof r=="string")return this._open(t,e,r);n=r.call(e[0],function(n){if(!e.data("ui-tooltip-open"))return;i._delay(function(){t&&(t.type=s),this._open(t,e,n)})}),n&&this._open(t,e,n)},_open:function(t,r,i){function f(e){a.of=e;if(s.is(":hidden"))return;s.position(a)}var s,o,u,a=e.extend({},this.options.position);if(!i)return;s=this._find(r);if(s.length){s.find(".ui-tooltip-content").html(i);return}r.is("[title]")&&(t&&t.type==="mouseover"?r.attr("title",""):r.removeAttr("title")),s=this._tooltip(r),n(r,s.attr("id")),s.find(".ui-tooltip-content").html(i),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:f}),f(t)):s.position(e.extend({of:r},this.options.position)),s.hide(),this._show(s,this.options.show),this.options.show&&this.options.show.delay&&(u=setInterval(function(){s.is(":visible")&&(f(a.of),clearInterval(u))},e.fx.interval)),this._trigger("open",t,{tooltip:s}),o={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var n=e.Event(t);n.currentTarget=r[0],this.close(n,!0)}},remove:function(){this._removeTooltip(s)}};if(!t||t.type==="mouseover")o.mouseleave="close";if(!t||t.type==="focusin")o.focusout="close";this._on(!0,r,o)},close:function(t){var n=this,i=e(t?t.currentTarget:this.element),s=this._find(i);if(this.closing)return;i.data("ui-tooltip-title")&&i.attr("title",i.data("ui-tooltip-title")),r(i),s.stop(!0),this._hide(s,this.options.hide,function(){n._removeTooltip(e(this))}),i.removeData("ui-tooltip-open"),this._off(i,"mouseleave focusout keyup"),i[0]!==this.element[0]&&this._off(i,"remove"),this._off(this.document,"mousemove"),t&&t.type==="mouseleave"&&e.each(this.parents,function(t,r){e(r.element).attr("title",r.title),delete n.parents[t]}),this.closing=!0,this._trigger("close",t,{tooltip:s}),this.closing=!1},_tooltip:function(n){var r="ui-tooltip-"+t++,i=e("<div>").attr({id:r,role:"tooltip"}).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||""));return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),e.fn.bgiframe&&i.bgiframe(),this.tooltips[r]=n,i},_find:function(t){var n=t.data("ui-tooltip-id");return n?e("#"+n):e()},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0),e("#"+n).remove(),r.data("ui-tooltip-title")&&(r.attr("title",r.data("ui-tooltip-title")),r.removeData("ui-tooltip-title"))})}})})(jQuery);
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/jquery/jquery.js (-4 lines)
Lines 1-4 Link Here
1
/*! jQuery v1.7.2 jquery.com | jquery.org/license */
2
(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="<div "+n+"display:block;'><div style='"+t+"0;display:block;overflow:hidden;'></div></div>"+"<table "+n+"' cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style='"+t+"0;display:none'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style='width:5px;'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(
3
a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);return c.result}},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")[\\s/>]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f
4
.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\([^)]*\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\-+]?(?:\d*\.)?\d+$/i,bt=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,bu=/^([\-+])=([\-+.\de]+)/,bv=/^margin/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),(e===""&&f.css(d,"display")==="none"||!f.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf("margin")&&(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&&c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&&c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){if(f.support.fixedPosition&&j.position==="fixed")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position==="relative"||j.position==="static")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&&j.position==="fixed"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/jquery/plugins/jquery.checkboxes.min.js (-13 lines)
Lines 1-13 Link Here
1
/*
2
 *
3
 * Copyright (c) 2006-2008 Sam Collett (http://www.texotela.co.uk)
4
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
5
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
6
 *
7
 * Version 2.1
8
 * Demo: http://www.texotela.co.uk/code/jquery/checkboxes/
9
 *
10
 * $LastChangedDate$
11
 * $Rev$
12
 */
13
;(function(d){d.fn.toggleCheckboxes=function(a,b){a=a||"*";b=b||false;var c=d([]);this.each(function(){var e=d("input[type=checkbox]",this).filter(a).each(function(){this.checked=!this.checked}).filter(":checked");c=e});if(!b){c=this}return c};d.fn.checkCheckboxes=function(a,b){a=a||"*";b=b||false;var c=d([]);this.each(function(){var e=d("input[type=checkbox]",this).filter(a).each(function(){this.checked=true}).filter(":checked");c=e});if(!b){c=this}return c};d.fn.unCheckCheckboxes=function(a,b){a=a||"*";b=b||false;var c=d([]);this.each(function(){var e=d("input[type=checkbox]",this).filter(a).each(function(){this.checked=false}).filter(":not(:checked)");c=e});if(!b){c=this}return c};d.radioCheckboxGroup=function(e,a){a=a||"*";var b="input[type=checkbox]";if(e){b+="[name="+e+"]"}var c=d(b).filter(a);c.click(function(){c.not(this).each(function(){this.checked=false}).end()})}})(jQuery);
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/jquery/plugins/jquery.highlight-3.js (-53 lines)
Lines 1-53 Link Here
1
/*
2
3
highlight v3
4
5
Highlights arbitrary terms.
6
7
<http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html>
8
9
MIT license.
10
11
Johann Burkard
12
<http://johannburkard.de>
13
<mailto:jb@eaio.com>
14
15
*/
16
17
jQuery.fn.highlight = function(pat) {
18
 function innerHighlight(node, pat) {
19
  var skip = 0;
20
  if (node.nodeType == 3) {
21
   var pos = node.data.toUpperCase().indexOf(pat);
22
   if (pos >= 0) {
23
    var spannode = document.createElement('span');
24
    spannode.className = 'term';
25
    var middlebit = node.splitText(pos);
26
    var endbit = middlebit.splitText(pat.length);
27
    var middleclone = middlebit.cloneNode(true);
28
    spannode.appendChild(middleclone);
29
    middlebit.parentNode.replaceChild(spannode, middlebit);
30
    skip = 1;
31
   }
32
  }
33
  else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
34
   for (var i = 0; i < node.childNodes.length; ++i) {
35
    i += innerHighlight(node.childNodes[i], pat);
36
   }
37
  }
38
  return skip;
39
 }
40
 return this.each(function() {
41
  innerHighlight(this, pat.toUpperCase());
42
 });
43
};
44
45
jQuery.fn.removeHighlight = function() {
46
 return this.find("span.term").each(function() {
47
  this.parentNode.firstChild.nodeName;
48
  with (this.parentNode) {
49
   replaceChild(this.firstChild, this);
50
   normalize();
51
  }
52
 }).end();
53
};
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/jquery/plugins/jquery.hoverIntent.minified.js (-9 lines)
Lines 1-9 Link Here
1
/**
2
* hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+
3
* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
4
*
5
* @param  f  onMouseOver function || An object with configuration options
6
* @param  g  onMouseOut function  || Nothing (use configuration options object)
7
* @author    Brian Cherne <brian@cherne.net>
8
*/
9
(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:7,interval:100,timeout:0};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY;};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;return cfg.over.apply(ob,[ev]);}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}};var delay=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);ob.hoverIntent_s=0;return cfg.out.apply(ob,[ev]);};var handleHover=function(e){var p=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(p&&p!=this){try{p=p.parentNode;}catch(e){p=this;}}if(p==this){return false;}var ev=jQuery.extend({},e);var ob=this;if(ob.hoverIntent_t){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);}if(e.type=="mouseover"){pX=ev.pageX;pY=ev.pageY;$(ob).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}}else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){delay(ev,ob);},cfg.timeout);}}};return this.mouseover(handleHover).mouseout(handleHover);};})(jQuery);
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/jquery/plugins/jquery.metadata.min.js (-8 lines)
Lines 1-8 Link Here
1
(function($){$.extend({metadata:{defaults:{type:'class',name:'metadata',cre:/({.*})/,single:'metadata'},setType:function(type,name){this.defaults.type=type;this.defaults.name=name;},get:function(elem,opts){var settings=$.extend({},this.defaults,opts);if(!settings.single.length)settings.single='metadata';var data=$.data(elem,settings.single);if(data)return data;data="{}";var getData=function(data){if(typeof data!="string")return data;if(data.indexOf('{')<0){data=eval("("+data+")");}}
2
var getObject=function(data){if(typeof data!="string")return data;data=eval("("+data+")");return data;}
3
if(settings.type=="html5"){var object={};$(elem.attributes).each(function(){var name=this.nodeName;if(name.match(/^data-/))name=name.replace(/^data-/,'');else return true;object[name]=getObject(this.nodeValue);});}else{if(settings.type=="class"){var m=settings.cre.exec(elem.className);if(m)
4
data=m[1];}else if(settings.type=="elem"){if(!elem.getElementsByTagName)returnvar;e=elem.getElementsByTagName(settings.name);if(e.length)
5
data=$.trim(e[0].innerHTML);}else if(elem.getAttribute!=undefined){var attr=elem.getAttribute(settings.name);if(attr)
6
data=attr;}
7
object=getObject(data.indexOf("{")<0?"{"+data+"}":data);}
8
$.data(elem,settings.single,object);return object;}}});$.fn.metadata=function(opts){return $.metadata.get(this[0],opts);};})(jQuery);
(-)a/koha-tmpl/opac-tmpl/ccsr/en/lib/jquery/plugins/jquery.rating.js (-392 lines)
Lines 1-392 Link Here
1
/*
2
 ### jQuery Star Rating Plugin v3.14 - 2012-01-26 ###
3
 * Home: http://www.fyneworks.com/jquery/star-rating/
4
 * Code: http://code.google.com/p/jquery-star-rating-plugin/
5
 *
6
    * Dual licensed under the MIT and GPL licenses:
7
 *   http://www.opensource.org/licenses/mit-license.php
8
 *   http://www.gnu.org/licenses/gpl.html
9
 ###
10
*/
11
12
/*# AVOID COLLISIONS #*/
13
;if(window.jQuery) (function($){
14
/*# AVOID COLLISIONS #*/
15
16
    // IE6 Background Image Fix
17
    if ($.browser.msie) try { document.execCommand("BackgroundImageCache", false, true)} catch(e) { };
18
    // Thanks to http://www.visualjquery.com/rating/rating_redux.html
19
20
    // plugin initialization
21
    $.fn.rating = function(options){
22
        if(this.length==0) return this; // quick fail
23
24
        // Handle API methods
25
        if(typeof arguments[0]=='string'){
26
            // Perform API methods on individual elements
27
            if(this.length>1){
28
                var args = arguments;
29
                return this.each(function(){
30
                    $.fn.rating.apply($(this), args);
31
    });
32
            };
33
            // Invoke API method handler
34
            $.fn.rating[arguments[0]].apply(this, $.makeArray(arguments).slice(1) || []);
35
            // Quick exit...
36
            return this;
37
        };
38
39
        // Initialize options for this call
40
        var options = $.extend(
41
            {}/* new object */,
42
            $.fn.rating.options/* default options */,
43
            options || {} /* just-in-time options */
44
        );
45
46
        // Allow multiple controls with the same name by making each call unique
47
        $.fn.rating.calls++;
48
49
        // loop through each matched element
50
        this
51
         .not('.star-rating-applied')
52
            .addClass('star-rating-applied')
53
        .each(function(){
54
55
            // Load control parameters / find context / etc
56
            var control, input = $(this);
57
            var eid = (this.name || 'unnamed-rating').replace(/\[|\]/g, '_').replace(/^\_+|\_+$/g,'');
58
            var context = $(this.form || document.body);
59
60
            // FIX: http://code.google.com/p/jquery-star-rating-plugin/issues/detail?id=23
61
            var raters = context.data('rating');
62
            if(!raters || raters.call!=$.fn.rating.calls) raters = { count:0, call:$.fn.rating.calls };
63
            var rater = raters[eid];
64
65
            // if rater is available, verify that the control still exists
66
            if(rater) control = rater.data('rating');
67
68
            if(rater && control)//{// save a byte!
69
                // add star to control if rater is available and the same control still exists
70
                control.count++;
71
72
            //}// save a byte!
73
            else{
74
                // create new control if first star or control element was removed/replaced
75
76
                // Initialize options for this rater
77
                control = $.extend(
78
                    {}/* new object */,
79
                    options || {} /* current call options */,
80
                    ($.metadata? input.metadata(): ($.meta?input.data():null)) || {}, /* metadata options */
81
                    { count:0, stars: [], inputs: [] }
82
                );
83
84
                // increment number of rating controls
85
                control.serial = raters.count++;
86
87
                // create rating element
88
                rater = $('<span class="star-rating-control"/>');
89
                input.before(rater);
90
91
                // Mark element for initialization (once all stars are ready)
92
                rater.addClass('rating-to-be-drawn');
93
94
                // Accept readOnly setting from 'disabled' property
95
                if(input.attr('disabled') || input.hasClass('disabled')) control.readOnly = true;
96
97
                // Accept required setting from class property (class='required')
98
                if(input.hasClass('required')) control.required = true;
99
100
                // Create 'cancel' button
101
                rater.append(
102
                    control.cancel = $('<div class="rating-cancel"><a title="' + control.cancel + '">' + control.cancelValue + '</a></div>')
103
                    .mouseover(function(){
104
                        $(this).rating('drain');
105
                        $(this).addClass('star-rating-hover');
106
                        //$(this).rating('focus');
107
                    })
108
                    .mouseout(function(){
109
                        $(this).rating('draw');
110
                        $(this).removeClass('star-rating-hover');
111
                        //$(this).rating('blur');
112
                    })
113
                    .click(function(){
114
                     $(this).rating('select');
115
                    })
116
                    .data('rating', control)
117
                );
118
119
            }; // first element of group
120
121
            // insert rating star
122
            var star = $('<div class="star-rating rater-'+ control.serial +'"><a title="' + (this.title || this.value) + '">' + this.value + '</a></div>');
123
            rater.append(star);
124
125
            // inherit attributes from input element
126
            if(this.id) star.attr('id', this.id);
127
            if(this.className) star.addClass(this.className);
128
129
            // Half-stars?
130
            if(control.half) control.split = 2;
131
132
            // Prepare division control
133
            if(typeof control.split=='number' && control.split>0){
134
                var stw = ($.fn.width ? star.width() : 0) || control.starWidth;
135
                var spi = (control.count % control.split), spw = Math.floor(stw/control.split);
136
                star
137
                // restrict star's width and hide overflow (already in CSS)
138
                .width(spw)
139
                // move the star left by using a negative margin
140
                // this is work-around to IE's stupid box model (position:relative doesn't work)
141
                .find('a').css({ 'margin-left':'-'+ (spi*spw) +'px' })
142
            };
143
144
            // readOnly?
145
            if(control.readOnly)//{ //save a byte!
146
                // Mark star as readOnly so user can customize display
147
                star.addClass('star-rating-readonly');
148
            //}  //save a byte!
149
            else//{ //save a byte!
150
             // Enable hover css effects
151
                star.addClass('star-rating-live')
152
                 // Attach mouse events
153
                    .mouseover(function(){
154
                        $(this).rating('fill');
155
                        $(this).rating('focus');
156
                    })
157
                    .mouseout(function(){
158
                        $(this).rating('draw');
159
                        $(this).rating('blur');
160
                    })
161
                    .click(function(){
162
                        $(this).rating('select');
163
                    })
164
                ;
165
            //}; //save a byte!
166
167
            // set current selection
168
            if(this.checked)	control.current = star;
169
170
            // set current select for links
171
            if(this.nodeName=="A"){
172
    if($(this).hasClass('selected'))
173
     control.current = star;
174
   };
175
176
            // hide input element
177
            input.hide();
178
179
            // backward compatibility, form element to plugin
180
            input.change(function(){
181
    $(this).rating('select');
182
   });
183
184
            // attach reference to star to input element and vice-versa
185
            star.data('rating.input', input.data('rating.star', star));
186
187
            // store control information in form (or body when form not available)
188
            control.stars[control.stars.length] = star[0];
189
            control.inputs[control.inputs.length] = input[0];
190
            control.rater = raters[eid] = rater;
191
            control.context = context;
192
193
            input.data('rating', control);
194
            rater.data('rating', control);
195
            star.data('rating', control);
196
            context.data('rating', raters);
197
  }); // each element
198
199
        // Initialize ratings (first draw)
200
        $('.rating-to-be-drawn').rating('draw').removeClass('rating-to-be-drawn');
201
202
        return this; // don't break the chain...
203
    };
204
205
    /*--------------------------------------------------------*/
206
207
    /*
208
        ### Core functionality and API ###
209
    */
210
    $.extend($.fn.rating, {
211
        // Used to append a unique serial number to internal control ID
212
        // each time the plugin is invoked so same name controls can co-exist
213
        calls: 0,
214
215
        focus: function(){
216
            var control = this.data('rating'); if(!control) return this;
217
            if(!control.focus) return this; // quick fail if not required
218
            // find data for event
219
            var input = $(this).data('rating.input') || $( this.tagName=='INPUT' ? this : null );
220
   // focus handler, as requested by focusdigital.co.uk
221
            if(control.focus) control.focus.apply(input[0], [input.val(), $('a', input.data('rating.star'))[0]]);
222
        }, // $.fn.rating.focus
223
224
        blur: function(){
225
            var control = this.data('rating'); if(!control) return this;
226
            if(!control.blur) return this; // quick fail if not required
227
            // find data for event
228
            var input = $(this).data('rating.input') || $( this.tagName=='INPUT' ? this : null );
229
   // blur handler, as requested by focusdigital.co.uk
230
            if(control.blur) control.blur.apply(input[0], [input.val(), $('a', input.data('rating.star'))[0]]);
231
        }, // $.fn.rating.blur
232
233
        fill: function(){ // fill to the current mouse position.
234
            var control = this.data('rating'); if(!control) return this;
235
            // do not execute when control is in read-only mode
236
            if(control.readOnly) return;
237
            // Reset all stars and highlight them up to this element
238
            this.rating('drain');
239
            this.prevAll().andSelf().filter('.rater-'+ control.serial).addClass('star-rating-hover');
240
        },// $.fn.rating.fill
241
242
        drain: function() { // drain all the stars.
243
            var control = this.data('rating'); if(!control) return this;
244
            // do not execute when control is in read-only mode
245
            if(control.readOnly) return;
246
            // Reset all stars
247
            control.rater.children().filter('.rater-'+ control.serial).removeClass('star-rating-on').removeClass('star-rating-hover');
248
        },// $.fn.rating.drain
249
250
        draw: function(){ // set value and stars to reflect current selection
251
            var control = this.data('rating'); if(!control) return this;
252
            // Clear all stars
253
            this.rating('drain');
254
            // Set control value
255
            if(control.current){
256
                control.current.data('rating.input').attr('checked','checked');
257
                control.current.prevAll().andSelf().filter('.rater-'+ control.serial).addClass('star-rating-on');
258
            }
259
            else
260
             $(control.inputs).removeAttr('checked');
261
            // Show/hide 'cancel' button
262
            control.cancel[control.readOnly || control.required?'hide':'show']();
263
            // Add/remove read-only classes to remove hand pointer
264
            this.siblings()[control.readOnly?'addClass':'removeClass']('star-rating-readonly');
265
        },// $.fn.rating.draw
266
267
268
269
270
271
        select: function(value,wantCallBack){ // select a value
272
273
                    // ***** MODIFICATION *****
274
                    // Thanks to faivre.thomas - http://code.google.com/p/jquery-star-rating-plugin/issues/detail?id=27
275
                    //
276
                    // ***** LIST OF MODIFICATION *****
277
                    // ***** added Parameter wantCallBack : false if you don't want a callback. true or undefined if you want postback to be performed at the end of this method'
278
                    // ***** recursive calls to this method were like : ... .rating('select') it's now like .rating('select',undefined,wantCallBack); (parameters are set.)
279
                    // ***** line which is calling callback
280
                    // ***** /LIST OF MODIFICATION *****
281
282
            var control = this.data('rating'); if(!control) return this;
283
            // do not execute when control is in read-only mode
284
            if(control.readOnly) return;
285
            // clear selection
286
            control.current = null;
287
            // programmatically (based on user input)
288
            if(typeof value!='undefined'){
289
             // select by index (0 based)
290
                if(typeof value=='number')
291
                     return $(control.stars[value]).rating('select',undefined,wantCallBack);
292
                // select by literal value (must be passed as a string
293
                if(typeof value=='string')
294
                    //return
295
                    $.each(control.stars, function(){
296
                        if($(this).data('rating.input').val()==value) $(this).rating('select',undefined,wantCallBack);
297
                    });
298
            }
299
            else
300
                control.current = this[0].tagName=='INPUT' ?
301
                 this.data('rating.star') :
302
                    (this.is('.rater-'+ control.serial) ? this : null);
303
304
            // Update rating control state
305
            this.data('rating', control);
306
            // Update display
307
            this.rating('draw');
308
            // find data for event
309
            var input = $( control.current ? control.current.data('rating.input') : null );
310
            // click callback, as requested here: http://plugins.jquery.com/node/1655
311
312
                    // **** MODIFICATION *****
313
                    // Thanks to faivre.thomas - http://code.google.com/p/jquery-star-rating-plugin/issues/detail?id=27
314
                    //
315
                    //old line doing the callback :
316
                    //if(control.callback) control.callback.apply(input[0], [input.val(), $('a', control.current)[0]]);// callback event
317
                    //
318
                    //new line doing the callback (if i want :)
319
                    if((wantCallBack ||wantCallBack == undefined) && control.callback) control.callback.apply(input[0], [input.val(), $('a', control.current)[0]]);// callback event
320
                    //to ensure retro-compatibility, wantCallBack must be considered as true by default
321
                    // **** /MODIFICATION *****
322
323
  },// $.fn.rating.select
324
325
326
327
328
329
        readOnly: function(toggle, disable){ // make the control read-only (still submits value)
330
            var control = this.data('rating'); if(!control) return this;
331
            // setread-only status
332
            control.readOnly = toggle || toggle==undefined ? true : false;
333
            // enable/disable control value submission
334
            if(disable) $(control.inputs).attr("disabled", "disabled");
335
            else     			$(control.inputs).removeAttr("disabled");
336
            // Update rating control state
337
            this.data('rating', control);
338
            // Update display
339
            this.rating('draw');
340
        },// $.fn.rating.readOnly
341
342
        disable: function(){ // make read-only and never submit value
343
            this.rating('readOnly', true, true);
344
        },// $.fn.rating.disable
345
346
        enable: function(){ // make read/write and submit value
347
            this.rating('readOnly', false, false);
348
        }// $.fn.rating.select
349
350
 });
351
352
    /*--------------------------------------------------------*/
353
354
    /*
355
        ### Default Settings ###
356
        eg.: You can override default control like this:
357
        $.fn.rating.options.cancel = 'Clear';
358
    */
359
    $.fn.rating.options = { //$.extend($.fn.rating, { options: {
360
            cancel: 'Cancel Rating',   // advisory title for the 'cancel' link
361
            cancelValue: '',           // value to submit when user click the 'cancel' link
362
            split: 0,                  // split the star into how many parts?
363
364
            // Width of star image in case the plugin can't work it out. This can happen if
365
            // the jQuery.dimensions plugin is not available OR the image is hidden at installation
366
            starWidth: 16//,
367
368
            //NB.: These don't need to be pre-defined (can be undefined/null) so let's save some code!
369
            //half:     false,         // just a shortcut to control.split = 2
370
            //required: false,         // disables the 'cancel' button so user can only select one of the specified values
371
            //readOnly: false,         // disable rating plugin interaction/ values cannot be changed
372
            //focus:    function(){},  // executed when stars are focused
373
            //blur:     function(){},  // executed when stars are focused
374
            //callback: function(){},  // executed when a star is clicked
375
 }; //} });
376
377
    /*--------------------------------------------------------*/
378
379
    /*
380
        ### Default implementation ###
381
        The plugin will attach itself to file inputs
382
        with the class 'multi' when the page loads
383
    */
384
    $(function(){
385
     $('input[type=radio].star').rating();
386
    });
387
388
389
390
/*# AVOID COLLISIONS #*/
391
})(jQuery);
392
/*# AVOID COLLISIONS #*/
(-)a/koha-tmpl/opac-tmpl/ccsr/itemtypeimg/crystal-clear/_COPYING.txt (-120 lines)
Lines 1-120 Link Here
1
License
2
3
The Crystal Project are released under LGPL.
4
5
GNU General Public License.
6
7
   0.
8
9
      This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you".
10
11
      A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.
12
13
      The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".)
14
15
      "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.
16
17
      Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.
18
   1.
19
20
      You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.
21
22
      You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
23
   2.
24
25
      You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
26
         1. The modified work must itself be a software library.
27
         2. You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.
28
         3. You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.
29
         4. If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.
30
31
      (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)
32
33
      These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
34
35
      Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.
36
37
      In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
38
   3.
39
40
      You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.
41
42
      Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.
43
44
      This option is useful when you wish to copy part of the code of the Library into a program that is not a library.
45
   4.
46
47
      You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.
48
49
      If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.
50
   5.
51
52
      A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.
53
      However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.
54
55
      When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.
56
57
      If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)
58
59
      Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.
60
   6.
61
62
      As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.
63
64
      You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:
65
         1. Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) .
66
         2. Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.
67
         3. Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.
68
         4. If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.
69
         5. Verify that the user has already received a copy of these materials or that you have already sent this user a copy.
70
71
      For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
72
73
      It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.
74
   7.
75
76
      You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:
77
         1.
78
79
            Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above.
80
         2.
81
82
            Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.
83
   8.
84
85
      You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
86
   9.
87
88
      You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.
89
  10.
90
91
      Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License.
92
  11.
93
94
      If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.
95
96
      If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.
97
98
      It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
99
100
      This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
101
  12.
102
103
      If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
104
  13.
105
106
      The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
107
108
      Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.
109
  14.
110
111
      If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
112
113
No Warranty
114
115
  15.
116
117
      Because the library is licensed free of charge, there is no warranty for the library, to the extent permitted by applicable law. Except when otherwise stated in writing the copyright holders and/or other parties provide the library "as is" without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of the library is with you. Should the library prove defective, you assume the cost of all necessary servicing, repair or correction.
118
  16.
119
120
      In no event unless required by applicable law or agreed to in writing will any copyright holder, or any other party who may modify and/or redistribute the library as permitted above, be liable to you for damages, including any general, special, incidental or consequential damages arising out of the use or inability to use the library (including but not limited to loss of data or data being rendered inaccurate or losses sustained by you or third parties or a failure of the library to operate with any other software), even if such holder or other party has been advised of the possibility of such damages.
(-)a/koha-tmpl/opac-tmpl/ccsr/itemtypeimg/crystal-clear/_README.txt (-27 lines)
Lines 1-27 Link Here
1
The Crystal Clear icon set was created by
2
Everaldo Coelho, http://www.everaldo.com/
3
Submitted:  Oct 11 2003
4
Updated:  Jun 16 2007
5
6
Icons were acquired from Wikimedia Commons,
7
http://commons.wikimedia.org/wiki/Crystal_Clear, 30 Jan 2010.
8
9
The images were renamed, organized and re-sized to create this packager in a
10
standard icon package format.  This was preformed by Jeff Israel at the Open
11
Icon Library.
12
13
This package was created by the Open Icon Library,
14
http://openiconlibrary.sourceforge.net/ and is available for download there.T
15
All Icons are free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose.
16
17
See COPYING.txt or http://www.everaldo.com/crystal/?action=license for details.
18
19
---------------
20
21
Added to this set were three images by RayAna Min Park (August 2011):
22
23
books-closed.png
24
books-open-cd.png
25
books-open.png
26
27
All Icons are free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
(-)a/koha-tmpl/opac-tmpl/prog/en/css/babeltheque.css (-171 lines)
Lines 1-171 Link Here
1
/* ## BABELTHEQUE ## */
2
/* Babeltheque is a french supplier for advanced features
3
this babeltheque.css is not used anywhere by Koha, it's not a mistake
4
If you're babeltheque customer, you have access to a specific configuration URL
5
on babeltheque website, where you can activate this css
6
So: it should not be removed from Koha !
7
*/
8
9
#BW_etiquettes {
10
  clear :left;
11
  border: 1px solid #E8E8E8;
12
  margin-top: 10px;
13
  width: 49%;
14
  float: left;
15
  visibility: hidden;
16
  visibility: visible\9;
17
}
18
#BW_etiquettes:not(:empty) {
19
  visibility: visible;
20
}
21
22
#BW_etiquettes h2 {
23
  clear:left;
24
  background-color: #E8E8E8;
25
  margin: 5px 10px;
26
  padding: 0 5px;
27
}
28
29
#BW_ulEti {max-width:100%;}
30
31
#BW_ulEti ul  {
32
  margin:0;
33
  padding:0 15px;
34
  list-style-type: none;
35
}
36
37
#BW_ulEti a {
38
  text-decoration: none;
39
}
40
41
#BW_ulEti a.tag_s0  {font-weight: 120;font-size:0.8em;}
42
#BW_ulEti a.tag_s1  {font-weight: 150;font-size:0.9em;}
43
#BW_ulEti a.tag_s2  {font-weight: 180;font-size:1.0em;}
44
#BW_ulEti a.tag_s3  {font-weight: 200;font-size:1.2em;}
45
#BW_ulEti a.tag_s4  {font-weight: 220;font-size:1.4em;}
46
#BW_ulEti a.tag_s5  {font-weight: 230;font-size:1.5em;}
47
#BW_ulEti a.tag_s6  {font-weight: 320;font-size:1.6em;}
48
#BW_ulEti a.tag_s7  {font-weight: 350;font-size:1.7em;}
49
#BW_ulEti a.tag_s8  {font-weight: 400;font-size:1.8em;}
50
#BW_ulEti { padding: 0px; line-height: 2em; text-align: center;}
51
#BW_ulEti a { padding: 2px; }
52
#BW_ulEti { margin: 0px; }
53
54
#BW_ulEti ol {
55
  float:left;
56
  display: inline;
57
  margin: 0 10px;
58
}
59
60
#BW_suggestions {
61
  border: 1px solid #E8E8E8;
62
  margin-top: 10px;
63
  float: right;
64
  width: 49%;
65
  visibility: hidden;
66
  visibility: visible\9;
67
}
68
#BW_suggestions:not(:empty) {
69
  visibility: visible;
70
}
71
#BW_suggestions h2 {
72
  background-color: #E8E8E8;
73
  margin: 5px 10px;
74
  padding: 0 5px;
75
}
76
#BW_suggestions .BW_livres_tag_page {
77
  padding: 0 15px;
78
}
79
#BW_suggestions .BW_livres_tag_page:before {
80
  content : '> ';
81
}
82
#BW_droite .BW_livres_tag:before {
83
  content : '> ';
84
}
85
86
#BW_podcasts {
87
  border: 1px solid #E8E8E8;
88
  margin-top: 10px;
89
  min-width: 100%;
90
  float: left;
91
  /*width: 49%;*/
92
  visibility: hidden;
93
  visibility: visible\9;
94
}
95
96
#BW_podcasts > iframe {
97
  margin: -20px 0 10px 20px;
98
}
99
100
#BW_videos {
101
  clear :left;
102
  border: 1px solid #E8E8E8;
103
  margin-top: 10px;
104
  min-width: 100%;
105
  /*width: 49%;*/
106
  float: left;
107
  visibility: hidden;
108
  visibility: visible\9;
109
}
110
111
#BW_videos:not(:empty) {
112
  visibility: visible;
113
}
114
115
#BW_podcasts:not(:empty) {
116
  visibility: visible;
117
}
118
119
#BW_videos h2, #BW_podcasts h2 {
120
  background-color: #E8E8E8;
121
  margin: 5px 10px;
122
  padding: 0 5px;
123
}
124
#BW_videos .BW_bloc_vid {
125
  clear: both;
126
  padding: 0 15px;
127
}
128
.BW_vignette_vid {
129
  border: 1px solid #DFD9CE;
130
  float: left;
131
  height: 141px;
132
  margin: 5px;
133
  min-height: 141px;
134
  padding: 5px;
135
  white-space: nowrap;
136
}
137
138
#BW_notes {clear :left;}
139
#BW_notes h2 {font-size:85%;}
140
141
#BW_citations {}
142
#BW_citations h2 {font-size:85%;}
143
144
#BW_critiques {}
145
#BW_critiques h2 {font-size:85%;}
146
147
#BW_critiques_pro {}
148
#BW_critiques_pro h2 {font-size:85%;}
149
150
#BW_citations,#BW_critiques,#BW_critiques_pro {
151
  background: -moz-linear-gradient(center top , #3399FF, #3333FF) repeat scroll 0 0 transparent;
152
  background: -webkit-gradient(linear, center top, center bottom, from(#3399FF), to(#3333FF));
153
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#3399FF', endColorstr='#3333FF');
154
  border: 1px solid #B7B7B7;
155
  border-radius: 5px 5px 5px 5px;
156
  color: #FFFFCC;
157
  display: inline-block;
158
  float: left;
159
  font-weight: bold;
160
  margin: 15px 20px 15px 0;
161
  min-width: 150px;
162
  padding: 0 15px 8px;
163
  position: relative;
164
  text-align: center;
165
  text-shadow: 1px 1px 1px #777777;
166
  white-space: nowrap;
167
}
168
169
#BW_citations a,#BW_critiques a,#BW_critiques_pro a {
170
  color: #FFFFCC;
171
}
(-)a/koha-tmpl/opac-tmpl/prog/en/css/datatables.css (-265 lines)
Lines 1-265 Link Here
1
input.search_init {
2
    color: #999999;
3
}
4
.sorting_asc {
5
    padding-right: 19px;
6
    background: url("../../img/asc.gif") no-repeat scroll right center #EEEEEE;
7
}
8
.sorting_desc {
9
    padding-right: 19px;
10
    background: url("../../img/desc.gif") no-repeat scroll right center #EEEEEE;
11
}
12
.sorting {
13
    padding-right: 19px;
14
    background: url("../../img/ascdesc.gif") no-repeat scroll right center #EEEEEE;
15
}
16
.sorting_asc_disabled {
17
    padding-right: 19px;
18
    background: url("../../img/datatables/sort_asc_disabled.png") no-repeat scroll right center #EEEEEE;
19
}
20
.sorting_desc_disabled {
21
    padding-right: 19px;
22
    background: url("../../img/datatables/sort_desc_disabled.png") no-repeat scroll right center #EEEEEE;
23
}
24
.sorting_disabled {
25
    padding-right: 19px;
26
    background-color: #EEEEEE;
27
}
28
29
div.top {clear : both; }
30
31
div.top.pager,
32
div.bottom.pager {
33
    background-color : #E5E5E5;
34
    padding : 0;
35
}
36
37
div.bottom.pager div.dataTables_paginate.paging_full_numbers,
38
div.bottom.pager div.dataTables_paginate.paging_four_button {
39
    border-right-width : 0;
40
}
41
42
div.dataTables_filter,
43
div.dataTables_length,
44
div.dataTables_info,
45
div.dataTables_paginate {
46
    float: left;
47
    padding : .3em .5em .3em .5em;
48
49
}
50
div.dataTables_length {
51
    border-right : 1px solid #686868;
52
    line-height:1.9em;
53
}
54
div.dataTables_info {
55
    border-right : 1px solid #AAA;
56
    line-height:1.9em;
57
}
58
div.dataTables_length,
59
div.dataTables_filter {
60
    border-left : 1px solid #FFF;
61
}
62
div.dataTables_filter {
63
    line-height : 1.9em;
64
}
65
div.dataTables_paginate {
66
    background-color : #F4F4F4;
67
    font-size: 110%;
68
    padding : 0;
69
}
70
71
.paging_full_numbers span.paginate_button,
72
.paging_full_numbers span.paginate_active {
73
    border-right : 1px solid #AAA;
74
    border-left : 1px solid #FFF;
75
    display : block;
76
    float : left;
77
    line-height:1.6em;
78
    padding: .3em .7em;
79
    cursor: pointer;
80
}
81
82
.paging_full_numbers span.paginate_button {
83
    color : #0000CC;
84
}
85
.paging_full_numbers span.paginate_button.first {
86
    background-image : url('../../img/first.png');
87
    background-repeat: no-repeat;
88
    background-position : 2px center;
89
    padding-left : 2em;
90
}
91
.paging_full_numbers span.paginate_button.previous {
92
    background-image : url('../../img/prev.png');
93
    background-repeat: no-repeat;
94
    background-position : 2px center;
95
    padding-left : 2em;
96
}
97
.paging_full_numbers span.paginate_button.next {
98
    background-image : url('../../img/next.png');
99
    background-repeat: no-repeat;
100
    background-position : right center;
101
    padding-right : 2em;
102
}
103
.paging_full_numbers span.paginate_button.last {
104
    background-image : url('../../img/last.png');
105
    background-repeat: no-repeat;
106
    background-position : right center;
107
    border-right : 1px solid #686868;
108
    padding-right : 2em;
109
}
110
div.bottom.pager .paging_full_numbers span.paginate_button.last {
111
    border-right-width : 0;
112
}
113
.paging_full_numbers span.paginate_active {
114
    background-color : #FFFFEA;
115
    color : #000;
116
    font-weight: bold;
117
}
118
119
.paging_full_numbers span.paginate_button:hover {
120
    background-color: #FFC;
121
}
122
123
.paging_full_numbers span.paginate_button.paginate_button_disabled {
124
    color : #666;
125
}
126
127
/* Two-button version */
128
129
div.dataTables_paginate.paging_two_button,
130
div.dataTables_paginate.paging_four_button {
131
    background-color : transparent;
132
    border-right : 1px solid #686868;
133
    border-left : 1px solid #FFF;
134
    line-height : 1.8em;
135
}
136
.paginate_disabled_first,
137
.paginate_enabled_first,
138
.paginate_disabled_previous,
139
.paginate_enabled_previous,
140
.paginate_disabled_next,
141
.paginate_enabled_next,
142
.paginate_disabled_last,
143
.paginate_enabled_last {
144
    float: left;
145
    height: 16px;
146
    margin: .5em;
147
    width: 16px;
148
}
149
.paginate_disabled_first {
150
    background-image: url("../../img/first-disabled.png");
151
}
152
.paginate_enabled_first {
153
    background-image: url("../../img/first.png");
154
    cursor: pointer;
155
}
156
.paginate_disabled_previous {
157
    background-image: url("../../img/prev-disabled.png");
158
}
159
.paginate_enabled_previous {
160
    background-image: url("../../img/prev.png");
161
    cursor: pointer;
162
}
163
.paginate_disabled_next {
164
    background-image: url("../../img/next-disabled.png");
165
}
166
.paginate_enabled_next {
167
    background-image: url("../../img/next.png");
168
    cursor: pointer;
169
}
170
.paginate_disabled_last {
171
    background-image: url("../../img/last-disabled.png");
172
}
173
.paginate_enabled_last {
174
    background-image: url("../../img/last.png");
175
    cursor: pointer;
176
}
177
178
179
/*
180
table.display {
181
    width: 100%;
182
}
183
table.display thead th {
184
    border-bottom: 1px solid black;
185
    cursor: pointer;
186
    font-weight: bold;
187
    padding: 3px 18px 3px 10px;
188
}
189
.dataTables_wrapper {
190
    clear: both;
191
    position: relative;
192
}
193
.dataTables_processing {
194
    background-color: white;
195
    border: 1px solid #DDDDDD;
196
    color: #999999;
197
    font-size: 14px;
198
    height: 30px;
199
    left: 50%;
200
    margin-left: -125px;
201
    margin-top: -15px;
202
    padding: 14px 0 2px;
203
    position: fixed;
204
    text-align: center;
205
    top: 50%;
206
    width: 250px;
207
}
208
.dataTables_info {
209
    float: left;
210
    width: 60%;
211
}
212
.dataTables_paginate {
213
    float: right;
214
    text-align: right;
215
    width: 44px;
216
}
217
.paging_full_numbers {
218
    height: 22px;
219
    line-height: 22px;
220
    width: 400px;
221
}
222
.paging_full_numbers span.paginate_button,
223
     .paging_full_numbers span.paginate_active {
224
    border: 1px solid #aaa;
225
    -webkit-border-radius: 5px;
226
    -moz-border-radius: 5px;
227
    padding: 2px 5px;
228
    margin: 0 3px;
229
    cursor: pointer;
230
    *cursor: hand;
231
}
232
233
.paging_full_numbers span.paginate_button {
234
    background-color: #ddd;
235
}
236
237
.paging_full_numbers span.paginate_button:hover {
238
    background-color: #ccc;
239
}
240
241
.paging_full_numbers span.paginate_active {
242
    background-color: #99B3FF;
243
}
244
.paginate_disabled_previous, .paginate_enabled_previous, .paginate_disabled_next, .paginate_enabled_next {
245
    float: left;
246
    height: 19px;
247
    margin-left: 3px;
248
    width: 19px;
249
}
250
.paginate_disabled_previous {
251
    background-image: url("../../img/datatables/back_disabled.jpg");
252
}
253
.paginate_enabled_previous {
254
    background-image: url("../../img/datatables/back_enabled.jpg");
255
}
256
.paginate_disabled_next {
257
    background-image: url("../../img/datatables/forward_disabled.jpg");
258
}
259
.paginate_enabled_next {
260
    background-image: url("../../img/datatables/forward_enabled.jpg");
261
}
262
.spacer {
263
    clear: both;
264
    height: 20px;
265
}
(-)a/koha-tmpl/opac-tmpl/prog/en/css/hierarchy.css (-105 lines)
Lines 1-105 Link Here
1
.hierarchies {
2
	background-color:#fff;
3
	color:#000000;
4
	padding:5px;
5
	margin-left:50px;
6
	-moz-border-radius:6px;
7
	display:block;
8
	font-size:10px;
9
}
10
.hierarchy {
11
	padding:5px;
12
	width:90%;
13
	-moz-border-radius:6px;
14
	display:block;
15
}
16
.child {
17
	display:none;
18
    margin-left : 50px;
19
    width:150%;
20
}
21
.child a:hover{
22
  background-color:#BFCFFF;
23
}
24
.parent {
25
	display:none;
26
    margin-left : -50px;
27
}
28
.parent a:hover{
29
  background-color:#BFCFFF;
30
}
31
.child0{
32
  width : 20%;
33
  text-align : left;
34
}
35
.child0 a:hover{
36
  background-color:#BFCFFF;
37
}
38
.child1{
39
  width : 20%;
40
  text-align : left;
41
  margin-left : 50px;
42
}
43
.child1 a:hover{
44
  background-color:#BFCFFF;
45
}
46
.child2{
47
  width : 20%;
48
  text-align : left;
49
  margin-left : 100px;
50
}
51
.child2 a:hover{
52
  background-color:#BFCFFF;
53
}
54
.child3{
55
  width : 20%;
56
  text-align : left;
57
  margin-left : 150px;
58
}
59
.child3 a:hover{
60
  background-color:#BFCFFF;
61
}
62
.child4{
63
  width : 20%;
64
  text-align : left;
65
  margin-left : 200px;
66
}
67
.child4 a:hover{
68
  background-color:#BFCFFF;
69
}
70
.child5{
71
  width : 20%;
72
  text-align : left;
73
  margin-left : 250px;
74
}
75
.child5 a:hover{
76
  background-color:#BFCFFF;
77
}
78
.child6{
79
  width : 20%;
80
  text-align : left;
81
  margin-left : 300px;
82
}
83
.child6 a:hover{
84
  background-color:#BFCFFF;
85
}
86
.child7{
87
  width : 20%;
88
  text-align : left;
89
  margin-left : 350px;
90
}
91
.child7 a:hover{
92
  background-color:#BFCFFF;
93
}
94
.child8{
95
  width : 10%;
96
  text-align : left;
97
  margin-left : 400px;
98
}
99
.child8 a:hover{
100
  background-color:#BFCFFF;
101
}
102
.parents{
103
  display:inline;
104
  cursor:crosshair;
105
}
(-)a/koha-tmpl/opac-tmpl/prog/en/css/jquery.rating.css (-14 lines)
Lines 1-14 Link Here
1
/* jQuery.Rating Plugin CSS - http://www.fyneworks.com/jquery/star-rating/ */
2
div.rating-cancel,div.star-rating{float:left;width:15px;height:15px;text-indent:-999em;cursor:pointer;display:block;background:transparent;overflow:hidden}
3
div.rating-cancel,div.rating-cancel a{background:url(../../images/star-ratings-sprite.png) no-repeat 0 -49px}
4
div.star-rating,div.star-rating a{background:url(../../images/star-ratings-sprite.png) no-repeat 0 0px}
5
div.rating-cancel a{display:block;width:16px;height:100%;background-position:0 -49px;border:0}
6
div.star-rating a{display:block;width:16px;height:100%;background-position:0 0px;border:0}
7
div.star-rating-on a{background-position:0 -32px!important}
8
div.rating-cancel.star-rating-hover a{background-position:0 -65px}
9
div.star-rating-hover a{background-position:0 -16px}
10
/* Read Only CSS */
11
div.star-rating-readonly a{cursor:default !important}
12
/* Partial Star CSS */
13
div.star-rating{background:transparent!important;overflow:hidden!important}
14
/* END jQuery.Rating Plugin CSS */
(-)a/koha-tmpl/opac-tmpl/prog/en/css/opac.css (-3080 lines)
Lines 1-3080 Link Here
1
@import url("/opac-tmpl/lib/yui/reset-fonts-grids.css");
2
@import url("/opac-tmpl/lib/yui/skin.css");
3
4
a {
5
	font-weight : bold;
6
}
7
8
a,
9
a:visited,
10
.ui-widget-content a,
11
.ui-widget-content a:visited {
12
	color : #006699;
13
}
14
15
a:hover,#toolbar input.editshelf:hover,input.editshelf:hover,a.editshelf:hover,input.deleteshelf:hover {
16
	color : #990033;
17
}
18
19
a.disabled {
20
	color : #888888 !important;
21
}
22
23
body {
24
	background-color : white;
25
	text-align : left;
26
	padding : 0 0 2.5em 0;
27
}
28
29
.required {
30
    color : #C00;
31
}
32
33
a.ButtonPlus, a.ButtonLess {
34
      text-decoration : none;
35
}
36
37
caption {
38
	font-size : 140%;
39
	font-weight : bold;
40
	line-height : 144%;
41
	text-align : left;
42
}
43
44
fieldset {
45
	background-color: #FFF;
46
	border : 2px solid #EEEEEE;
47
	margin : 1em 1em 1em 0;
48
	padding : 1em;
49
}
50
51
fieldset.rows {  
52
	border-width : 1px;
53
	border-bottom : 1px solid black;
54
	float : left;
55
	font-size : 90%;
56
	clear : left;
57
	margin: .9em 0 0 0;  
58
	padding: 0;
59
	width: 100%; 
60
}
61
62
fieldset.rows legend {  
63
	margin-left: 1em;
64
	font-weight: bold;
65
	font-size : 110%;
66
}
67
68
fieldset.rows label, fieldset.rows span.label {
69
	float: left;  
70
	font-weight : bold;
71
	width: 9em;  
72
	margin-right: 1em;  
73
	text-align: right;
74
}
75
76
fieldset.rows fieldset {
77
	border-width : 1px;
78
	margin : 0;
79
	padding : .3em;
80
}
81
82
fieldset.rows ol {  
83
	padding: 1em 1em 0 1em;  
84
	list-style-type: none;
85
}
86
87
fieldset.rows li {  
88
	float : left;
89
	clear : left;
90
	padding-bottom: 1em;
91
	list-style-type: none;
92
	width: 100%; 
93
}
94
95
fieldset.rows.left li {
96
	padding-bottom : .4em;
97
}
98
99
fieldset.rows li.radio {
100
	padding-left: 9em;
101
	width : auto;
102
}
103
104
fieldset.rows li.radio label {
105
	float : none;
106
	width : auto;
107
    margin : 0 .5em;
108
}
109
110
fieldset.rows ol.radio label {
111
	width : auto;
112
	float : none;
113
	margin-right : 0;
114
}
115
116
fieldset.rows ol.radio label.radio {
117
	float : left;
118
	width : 12em;
119
	margin-right : 1em;
120
}
121
122
fieldset.rows table {
123
	clear : both;
124
	margin-left : 1em;
125
}
126
127
fieldset.rows td label {
128
	float : none;
129
	font-weight : normal;
130
	width : auto;
131
}
132
133
fieldset.holds {
134
	background-color : #F3F3F3;
135
	border: 0;
136
	font-size : 110%;
137
	padding : 1px;
138
}
139
140
fieldset.holds ol {
141
	margin : 0;
142
	padding : 0;
143
}
144
145
fieldset.holds li {
146
	background-color : #FFF;
147
	border-bottom : 1px solid #F3F3F3;
148
	padding : .3em;
149
}
150
151
fieldset.holds label, fieldset.holds span.label {
152
153
}
154
155
fieldset.action {
156
	clear : both;
157
	float : none;
158
	border : none;
159
	margin : 0;
160
	padding : 1em 0 .3em 0;
161
	width : auto;
162
}
163
164
fieldset.action p {
165
	margin-bottom : 1em;
166
}
167
168
div.rows+div.rows {
169
    margin-top : .6em;
170
}
171
172
div.rows {
173
    float : left;
174
    clear : left;
175
    margin: 0 0 0 0;
176
    padding: 0;
177
    width: 100%;
178
}
179
180
181
div.rows span.label {
182
    float: left;
183
    font-weight : bold;
184
    width: 9em;
185
    margin-right: 1em;
186
    text-align: left;
187
}
188
189
div.rows ol {
190
    padding: .5em 1em 0 0;
191
    list-style-type: none;
192
}
193
194
div.rows ol li li {
195
    border-bottom: 0;
196
}
197
198
div.rows li {
199
    border-bottom :  1px solid #EEE;
200
    float : left;
201
    clear : left;
202
    padding-bottom: .2em;
203
    padding-top: .1em;
204
    list-style-type: none;
205
    width: 100%;
206
}
207
208
div.rows ul li:first-child {
209
    float: none;
210
    clear: none;
211
    margin-left: 0;
212
}
213
214
div.rows ul li {
215
    margin-left : 9em;
216
}
217
218
form {
219
	display : inline;
220
	margin : 0;
221
	padding : 0;
222
}
223
224
h1 {
225
	font-size : 138.5%;
226
}
227
228
h1#library {
229
	font-size : 100%;
230
	font-weight : normal;
231
	margin : .2em 0 .2em .5em;
232
} 
233
234
235
h1#libraryname {
236
	background:transparent url(../../images/koha-logo.gif) no-repeat scroll 0%;
237
	border: 0;
238
	float : left !important;
239
	margin:0;
240
	padding:0;
241
	width:120px;
242
}
243
244
h1#libraryname a {
245
	border:0;
246
	cursor:pointer;
247
	display:block;
248
	height:0px !important;
249
	margin:0;
250
	overflow:hidden;
251
	padding:40px 0 0;
252
	text-decoration:none;
253
	width:120px;
254
}
255
256
h1,h2,h3,h4,h5,h6 {
257
	font-weight : bold;
258
	margin : .5em 0;
259
}
260
261
h2 {
262
	font-size : 131%;
263
}
264
265
h5.author {
266
}
267
268
h3 {
269
	font-size : 123.1%;
270
}
271
272
h4 {
273
	font-size : 116%;
274
}
275
276
h5 {
277
	font-size : 108%;
278
}
279
280
h6 {
281
	font-size : 100%;
282
}
283
284
input[type=submit],
285
input[type=button],
286
input[type=reset],
287
fieldset.brief input[type=submit],
288
fieldset.brief input[type=button],
289
fieldset.brief input[type=reset]
290
{
291
	background: #f4f9fc; /* Old browsers */
292
	background: -moz-linear-gradient(top, #f4f9fc 0%, #dfeefa 4%, #bfd5ea 93%, #a1c4e2 97%, #b8d0e6 100%); /* FF3.6+ */
293
	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f4f9fc), color-stop(4%,#dfeefa), color-stop(93%,#bfd5ea), color-stop(97%,#a1c4e2), color-stop(100%,#b8d0e6)); /* Chrome,Safari4+ */
294
	background: -webkit-linear-gradient(top, #f4f9fc 0%,#dfeefa 4%,#bfd5ea 93%,#a1c4e2 97%,#b8d0e6 100%); /* Chrome10+,Safari5.1+ */
295
	background: -o-linear-gradient(top, #f4f9fc 0%,#dfeefa 4%,#bfd5ea 93%,#a1c4e2 97%,#b8d0e6 100%); /* Opera11.10+ */
296
	background: -ms-linear-gradient(top, #f4f9fc 0%,#dfeefa 4%,#bfd5ea 93%,#a1c4e2 97%,#b8d0e6 100%); /* IE10+ */
297
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f9fc', endColorstr='#b8d0e6',GradientType=0 ); /* IE6-9 */
298
	background: linear-gradient(top, #f4f9fc 0%,#dfeefa 4%,#bfd5ea 93%,#a1c4e2 97%,#b8d0e6 100%); /* W3C */
299
	border-top: 1px solid #cccccc;
300
	border-left: 1px solid #cccccc;
301
	border-right: 1px solid #eeeeee;
302
	border-bottom: 1px solid #eeeeee;
303
	color : #333;
304
	font-size : 93%;
305
	font-weight : bold;
306
	padding : 4px;
307
}
308
309
input[type=submit]:active, input[type=button]:active, input[type=reset]:active {
310
	border: 1px inset #666666;
311
}
312
313
td.resultscontrol,
314
.searchresults td.resultscontrol {
315
	background-color : #EEE;
316
	border : 1px solid #E8E8E8;
317
	vertical-align : middle;
318
	padding : 3px 3px 5px 5px;
319
}
320
321
table {
322
	background-color: #FFF;
323
	border-collapse : collapse;
324
	margin : 1em 0;
325
	border-right : 1px solid #dddddd;
326
	border-top : 1px solid #dddddd;
327
}
328
329
td,th {
330
	background-color: #FFF;
331
	border-left : 1px solid #dddddd;
332
	border-bottom : 1px solid #dddddd;
333
	padding : 3px 5px;
334
}
335
336
td.place_on_type table,
337
td.place_on_type table td {
338
	border : 0;
339
}
340
td caption {
341
	font-size : 105%;
342
}
343
344
th {
345
	background-color:#EEE;
346
	font-weight : bold;
347
	padding : 2px 23px;
348
	text-align : center;
349
}
350
351
th.sum {
352
	text-align: right;
353
}
354
355
td.sum {
356
	background-color: #FFC;
357
	font-weight: bold;
358
}
359
360
th[scope=row] {
361
	text-align : right;
362
}
363
364
tr.highlight td, tr.highlight th, tr.odd td {
365
	background-color : #F3F3F3;
366
   border-top : 1px solid #DDDDDD;
367
   border-bottom : 1px solid #DDDDDD;
368
}
369
370
tr.even td, tr.even.highlight td {
371
	background-color: #FFF;
372
}
373
374
tr.grouplabel td {
375
	background-color : #E8E8E8;
376
	border : 1px solid #DDDDDD;
377
	border-right : 1px solid #DDDDDD;
378
	text-align : center;
379
	font-weight : bold;
380
    padding: 10px;
381
}
382
383
tr.reserved td {
384
	background-color : #eeffd4;
385
}
386
tr.transfered td {
387
	background-color : #e8f0f6;
388
}
389
390
#editions table, #editions td {
391
	border : 0;
392
}
393
394
ul {
395
	list-style : disc;
396
	padding-left : 1em;
397
}
398
399
li {
400
	list-style : disc;
401
}
402
403
p.availability {
404
	font-size : 87%;
405
}
406
407
.available {
408
	color : #006600;
409
}
410
411
.waiting,.intransit,.notforloan,.checkedout,.lost,.notonhold {
412
	display : block;
413
}
414
.notforloan {
415
	color : #900;
416
}
417
.lost {
418
	color : #666;
419
}
420
.waiting {
421
	
422
}
423
424
/* "problem" enhancement */
425
.problem {
426
	color : white;
427
	background-color : red;
428
}
429
430
/* style for search terms in catalogsearch */
431
.term {
432
	/* color : blue; */
433
    color : #990000;
434
    background-color : #FFFFCC;
435
}
436
437
a .term {
438
	text-decoration : underline;
439
}
440
441
/* style for shelving location in catalogsearch */
442
.shelvingloc {
443
    display : block;
444
    font-style : italic;
445
}
446
447
.transfered {
448
	background-color : #F9FF9A;
449
}
450
451
/* action buttons */
452
#action {
453
	margin-top : .5em;
454
	background-color : #F3F3F3;
455
	border : 1px solid #E8E8E8;
456
	padding-bottom : 3px;
457
}
458
459
#action li {
460
	list-style : none;
461
	margin : .2em;
462
	padding : .3em 0;
463
}
464
465
#action a {
466
	background-position : 5px center;
467
	background-repeat : no-repeat;
468
	text-decoration : none;
469
	padding-left : 35px;
470
}
471
472
#action a.print {
473
  background-image: url("../../images/sprite.png"); /* Print */
474
  background-position: -5px -186px;
475
  background-repeat: no-repeat;
476
}
477
478
#action a.highlight_toggle {
479
    background-image: url("../../images/sprite.png"); /* Highlight */
480
    background-position: -5px -841px;
481
    background-repeat: no-repeat;
482
    display: none;
483
}
484
485
#action a#furthersearches {
486
    background-image: url("../../images/sprite.png"); /* Menu arrow */
487
    background-position: 106px -295px;
488
    background-repeat: no-repeat;
489
	border : 1px solid #F3F3F3;
490
	margin-left : 5px;
491
	padding : 2px 26px 2px 10px;
492
	text-decoration : none;
493
}
494
495
#action a#furthersearches:hover {
496
	border-top : 1px solid #FFF;
497
	border-left : 1px solid #FFF;
498
	border-right : 1px solid #979797;
499
	border-bottom : 1px solid #979797;
500
}
501
502
#action a.reserve,
503
.searchresults a.reserve {
504
  background-image: url("../../images/sprite.png"); /* Place hold */
505
  background-position: -5px -144px;
506
  background-repeat: no-repeat;
507
}
508
509
#action a.addtoshelf, #toolbar a.addtoshelf {
510
  background-image: url("../../images/sprite.png"); /* Virtual shelf */
511
  background-position: -5px -225px;
512
  background-repeat: no-repeat;
513
}
514
515
#action a.addtocart, #toolbar a.addtocart {
516
  background-image: url("../../images/sprite.png"); /* Cart */
517
  background-position: -5px -265px;
518
  background-repeat: no-repeat;
519
}
520
521
#action a.cartRemove, .actions a.cartRemove {
522
	color: #cc3333;
523
	font-size : 90%;
524
	margin : 0;
525
	padding: 0;
526
}
527
528
#action a.incart {
529
  background-image: url("../../images/sprite.png"); /* Cart */
530
  background-position: -5px -265px;
531
  background-repeat: no-repeat;
532
  color : #666;
533
}
534
535
/* toolbar buttons */
536
537
#toolbar,
538
#selections-toolbar {
539
background-color:#EEEEEE;
540
border:1px solid #E8E8E8;
541
margin : 0 0;
542
padding:3px 3px 5px 5px;
543
vertical-align:middle;
544
}
545
546
#basket #toolbar {
547
	padding: 7px 5px 9px 9px;
548
}
549
550
#selections-toolbar {
551
background: #E8E8E8; /* Old browsers */
552
background: -moz-linear-gradient(top, #b2b2b2 0%, #e0e0e0 14%, #e8e8e8 100%); /* FF3.6+ */
553
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#b2b2b2), color-stop(14%,#e0e0e0), color-stop(100%,#e8e8e8)); /* Chrome,Safari4+ */
554
background: -webkit-linear-gradient(top, #b2b2b2 0%,#e0e0e0 14%,#e8e8e8 100%); /* Chrome10+,Safari5.1+ */
555
background: -o-linear-gradient(top, #b2b2b2 0%,#e0e0e0 14%,#e8e8e8 100%); /* Opera 11.10+ */
556
background: -ms-linear-gradient(top, #b2b2b2 0%,#e0e0e0 14%,#e8e8e8 100%); /* IE10+ */
557
background: linear-gradient(top, #b2b2b2 0%,#e0e0e0 14%,#e8e8e8 100%); /* W3C */
558
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#e0e0e0', endColorstr='#e8e8e8',GradientType=0 ); /* IE6-9 */
559
	margin : 0 0 1em 0;
560
	padding-top : .5em;
561
	padding-left : 10px;
562
}
563
564
#toolbar a,
565
#selections-toolbar a,
566
#toolbar input,
567
#selections-toolbar input {
568
	white-space : nowrap;
569
}
570
571
#toolbar ul {
572
	padding-left : 0;
573
}
574
575
#toolbar ul li {
576
	display : inline;
577
	list-style : none;
578
}
579
580
#toolbar ul li a {
581
	border-left : 1px solid #e8e8e8;
582
}
583
584
#toolbar ul li:first-child a {
585
	border-left : 0;
586
}
587
588
589
#toolbar a.print {
590
    background-image: url("../../images/sprite.png"); /* Toolbar print */
591
    background-position : 0px -423px;
592
    background-repeat: no-repeat;
593
	text-decoration : none;
594
	padding-left : 30px;
595
}
596
597
#toolbar a.brief {
598
    background-image : url("../../images/sprite.png"); /* Zoom out */
599
    background-position : -2px -868px;
600
    background-repeat: no-repeat;
601
	text-decoration : none;
602
	padding-left : 27px;
603
}
604
605
#toolbar a.detail {
606
    background-image : url("../../images/sprite.png"); /* Zoom in */
607
    background-position : -2px -898px;
608
    background-repeat: no-repeat;
609
	text-decoration : none;
610
	padding-left : 27px;
611
}
612
613
#toolbar a.download {
614
    background-image : url("../../images/sprite.png"); /* Download */
615
    background-position : 2px -348px;
616
    background-repeat: no-repeat;
617
    padding-left : 28px;
618
	text-decoration : none;
619
}
620
621
#toolbar a.editshelf {
622
    background-image : url("../../images/sprite.png"); /* List edit */
623
    background-position : 2px -348px;
624
    background-repeat: no-repeat;
625
	padding-left : 26px;
626
	text-decoration : none;
627
}
628
629
#toolbar a.empty {
630
    background-image : url("../../images/sprite.png"); /* Trash */
631
    background-position : 2px -598px;
632
    background-repeat: no-repeat;
633
	text-decoration : none;
634
    padding-left : 30px;
635
}
636
637
#toolbar a.hide {
638
    background-image : url("../../images/sprite.png"); /* Close */
639
    background-position: -3px -814px;
640
    background-repeat: no-repeat;
641
	text-decoration : none;
642
	padding-left : 26px;
643
}
644
645
#toolbar a.hold,
646
#selections-toolbar a.hold {
647
    background-image: url("../../images/sprite.png"); /* Toolbar place hold */
648
    background-position : -5px -453px;
649
    background-repeat: no-repeat;
650
	text-decoration : none;
651
	padding-left : 23px;
652
}
653
654
#selections-toolbar a.hold.disabled {
655
    background-image: url("../../images/sprite.png"); /* Place hold disabled */
656
    background-position : -5px -621px;
657
    background-repeat: no-repeat;
658
}
659
660
#selections-toolbar a.removeitems,
661
#selections-toolbar a.deleteshelf {
662
    background-image : url("../../images/sprite.png"); /* Delete */
663
    background-position : 2px -690px;
664
    background-repeat: no-repeat;
665
	text-decoration : none;
666
	padding-left : 25px;
667
}
668
669
670
#selections-toolbar a.removeitems.disabled,
671
#selections-toolbar a.deleteshelf.disabled {
672
    background-image: url("../../images/sprite.png"); /* Delete disabled */
673
    background-position : 2px -712px;
674
    background-repeat: no-repeat;
675
}
676
677
#toolbar a.send,
678
a.send {
679
    background-image: url("../../images/sprite.png"); /* Email */
680
    background-position : 2px -386px;
681
    background-repeat: no-repeat;
682
	text-decoration : none;
683
	padding-left : 28px;
684
}
685
686
#toolbar a.new {
687
    background-image : url("../../images/sprite.png"); /* New */
688
    background-position : -4px -922px;
689
    background-repeat : no-repeat;
690
	padding-left : 23px;
691
	text-decoration : none;
692
}
693
694
#toolbar input.editshelf,
695
input.editshelf {
696
    background-image : url("../../images/sprite.png"); /* List edit */
697
    background-position : 2px -732px;
698
    background-repeat: no-repeat;
699
	border : 0;
700
	color : #006699;
701
	cursor : pointer;
702
    filter: none;
703
	font-size : 100%;
704
	padding-left : 29px;
705
	text-decoration : none;
706
}
707
708
#toolbar input.newshelf,
709
#toolbar a.newshelf,
710
a.newshelf {
711
    background-image: url("../../images/sprite.png"); /* List new */
712
    background-position: -4px -764px;
713
    background-repeat: no-repeat;
714
	border : 0;
715
	color : #006699;
716
	cursor : pointer;
717
    filter: none;
718
	font-size : 100%;
719
	margin: 0 0.5em;
720
    padding-left : 23px;
721
	text-decoration : none;
722
}
723
724
a.newshelf.disabled {
725
    background-image: url("../../images/sprite.png"); /* List new disabled */
726
    background-position: -4px -791px;
727
    background-repeat: no-repeat;
728
}
729
730
#toolbar input.deleteshelf,
731
input.deleteshelf {
732
    background-image : url("../../images/sprite.png"); /* Delete */
733
    background-position : 2px -685px;
734
    background-repeat: no-repeat;
735
	border : 0;
736
	color : #006699;
737
	cursor : pointer;
738
    filter: none;
739
	font-size : 100%;
740
    padding-left : 25px;
741
	text-decoration : none;
742
}
743
744
#toolbar input.deleteshelf:hover {
745
	color: #990033;
746
}
747
748
749
#toolbar input.editshelf:active,
750
input.editshelf:active,
751
#toolbar input.deleteshelf:active,
752
input.deleteshelf:active {
753
	border : 0;
754
}
755
756
#selections {
757
	font-weight : bold;
758
}
759
760
#tagsel_span input.submit,
761
#tagsel_tag {
762
    background-image : url("../../images/sprite.png"); /* Tags */
763
    background-position : 7px -640px;
764
	background-repeat : no-repeat;
765
	padding-left : 25px;
766
	text-decoration: none;
767
}
768
769
#tagsel_tag {
770
    background-position : -1px -643px;
771
}
772
773
#tagsel_tag.disabled {
774
    background-position : -1px -667px;
775
}
776
777
#tagslist li { display : inline; }
778
779
a.tag_add {
780
    background-image: url("../../images/sprite.png"); /* Tag results */
781
    background-position: -10px -1110px;
782
    background-repeat: no-repeat;
783
    padding-left : 13px;
784
    text-decoration: none;
785
}
786
787
#login4tags {
788
    background-image: url("../../images/sprite.png"); /* Tag results disabled */
789
    background-position: -10px -1130px;
790
    background-repeat: no-repeat;
791
    padding-left : 13px;
792
    text-decoration: none;
793
    margin-left: 1em;
794
}
795
796
.tag_results_input {
797
    background-color: #EEE;
798
    margin-left: 1em;
799
    padding: 0.3em;
800
}
801
802
#placehold input.submit:hover,
803
#tagsel_span input.submit:hover {
804
	color: #990033;
805
}
806
807
#addto {
808
	max-width : 10em;
809
}
810
811
/* Search results add to cart (lists disabled) */
812
.addto a.addtocart {
813
  background-image: url("../../images/sprite.png"); /* Cart */
814
  background-position: -5px -266px;
815
    background-repeat: no-repeat;
816
	text-decoration : none;
817
	padding-left : 33px;
818
}
819
820
/* Search results place hold link */
821
#placehold input.submit {
822
    background-image: url("../../images/sprite.png"); /* Place hold */
823
    background-position: -1px -140px;
824
    background-repeat: no-repeat;
825
	text-decoration : none;
826
	padding-left : 23px;
827
}
828
829
#placehold input.submit,
830
#tagsel_span input.submit {
831
	border : 0;
832
	background-color: transparent;
833
	font-size : 100%;
834
	font-weight : bold;
835
	padding-left : 31px;
836
	color : #336699;
837
	cursor : pointer;
838
}
839
.searchresults a.highlight_toggle {
840
    background-image: url("../../images/sprite.png"); /* Highlight */
841
    background-position: -11px -841px;
842
    background-repeat: no-repeat;
843
	display: none;
844
	font-weight: normal;
845
	padding : 0 10px 0 21px;
846
}
847
848
/* the itemtype list in advanced search */
849
.advsearch table {
850
	border-collapse : separate;
851
	border-spacing : 3px;
852
	border : 0px;
853
	margin : 0px;
854
	background-color : white;
855
	border : 0px solid #D8DEB8;
856
}
857
858
.advsearch table tr td {
859
	background-color : #F8F8EB;
860
	border : 0px;
861
	margin : 0px;
862
	width : 700px;
863
}
864
865
.advsearch td {
866
	font-size : 0.8em;
867
	background-color : #F8F8EB;
868
}
869
870
body#advsearch #breadcrumbs {
871
	line-height : 1px;
872
	height : 1px;
873
	padding : 0;	
874
}
875
876
body#advsearch #cartmenulink,
877
body#advsearch #listsmenulink {
878
	float : right;
879
}
880
881
#advsearch #branchloop,
882
#advsearch #sort_by {
883
	width : 23em;
884
}
885
886
#auth {
887
	float : left;
888
}
889
890
#facets {
891
	
892
}
893
894
.facet-count {
895
    display: inline-block;
896
}
897
898
/* the footer */
899
#footer {
900
	margin-top : 30px;
901
	margin-left : 30%;
902
	margin-right : 20%;
903
	border-top : 1px solid #384b73;
904
	color : #384b73;
905
	font-size : 1em;
906
	text-align : center;
907
}
908
909
/* facets bloc */
910
/* the USER information block */
911
#librarian_information {
912
	float : right;
913
	font-size : 10pt;
914
}
915
916
#header-wrapper {
917
	background-color: #FFF;
918
}
919
920
#holds,#opac-auth {
921
	min-width : 750px;
922
	width : 57.69em;
923
	margin : auto;
924
}
925
926
#members {
927
	background-color: #fff;
928
	font-size : 85%;
929
	margin-left : -10px;
930
	margin-right : -10px;
931
	padding : 4px 0 4px 0;
932
	color : #000066;
933
}
934
935
#members a {
936
	text-decoration : none;
937
}
938
939
#members a.logout {
940
	color : #cc3333;
941
	font-weight : bold;
942
	padding : 0 .3em 0 .3em;
943
	text-decoration : none;
944
}
945
946
#members li:last-child {
947
	border-right : 0;
948
}
949
950
#members li {
951
	border-right : 1px solid black;
952
	display : inline;
953
	list-style : none;
954
	margin : 0;
955
	padding : 0 .5em;
956
}
957
958
#members ul {
959
	margin : 0;
960
	padding : 0;
961
	text-align : right;
962
}
963
964
#opac-main-search {
965
	background: #8fb4e8; /* Old browsers */
966
	background: -moz-linear-gradient(top, #8fb4e8 0%, #8cb1e5 19%, #80a8dc 48%, #7da5d8 52%, #7198cf 83%, #618ac0 100%); /* FF3.6+ */
967
	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#8fb4e8), color-stop(19%,#8cb1e5), color-stop(48%,#80a8dc), color-stop(52%,#7da5d8), color-stop(83%,#7198cf), color-stop(100%,#618ac0)); /* Chrome,Safari4+ */
968
	background: -webkit-linear-gradient(top, #8fb4e8 0%,#8cb1e5 19%,#80a8dc 48%,#7da5d8 52%,#7198cf 83%,#618ac0 100%); /* Chrome10+,Safari5.1+ */
969
	background: -o-linear-gradient(top, #8fb4e8 0%,#8cb1e5 19%,#80a8dc 48%,#7da5d8 52%,#7198cf 83%,#618ac0 100%); /* Opera 11.10+ */
970
	background: -ms-linear-gradient(top, #8fb4e8 0%,#8cb1e5 19%,#80a8dc 48%,#7da5d8 52%,#7198cf 83%,#618ac0 100%); /* IE10+ */
971
	background: linear-gradient(top, #8fb4e8 0%,#8cb1e5 19%,#80a8dc 48%,#7da5d8 52%,#7198cf 83%,#618ac0 100%); /* W3C */
972
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#8fb4e8', endColorstr='#618ac0',GradientType=0 ); /* IE6-9 */
973
	border-top : 1px solid #335599;
974
	border-bottom : 1px solid #335599;
975
	margin-left : -10px;
976
	margin-right : -10px;
977
	padding : .7em 0 .4em .5em;
978
	font-size : 108%;
979
	line-height : 116%;
980
}
981
982
#opac-main-search form {
983
	display : inline;
984
	padding-right : 1em;
985
}
986
987
#opac-main-search label {
988
	color : #FFFFCC;
989
	font-weight : bold;
990
	margin : .2em .3em 0 0;
991
}
992
993
#masthead_search,
994
#select_library {
995
	max-width: 10em;
996
	width: 10em;
997
}
998
999
1000
#search-facets ul {
1001
	margin : 0;
1002
	padding : .3em;
1003
}
1004
1005
#search-facets {
1006
	border : 1px solid #e8e8e8;
1007
}
1008
1009
#search-facets h4 {
1010
	background-color : #EEE;
1011
	border-bottom : 1px solid #e8e8e8;
1012
	font-size : 90%;
1013
	margin : 0;
1014
	padding : .7em .2em;
1015
	text-align : center;
1016
}
1017
1018
#search-facets ul li {
1019
	font-weight : bold;
1020
	list-style-type : none;
1021
}
1022
1023
#search-facets li li {
1024
	font-weight : normal;
1025
	font-size : 85%;
1026
	margin-bottom : 2px;
1027
	padding : .1em .2em;
1028
}
1029
1030
#search-facets li li a {
1031
	font-weight : normal;
1032
}
1033
1034
#search-facets li.showmore a {
1035
	font-weight : bold;
1036
	text-indent : 1em;
1037
}
1038
1039
.suggestion {
1040
	background-color : #EEEEEB;
1041
	border : 1px solid #DDDED3;
1042
	margin : 10px auto;
1043
	padding : 4px;
1044
	width : 35%;
1045
}
1046
1047
#facets ul {
1048
	margin : 0;
1049
	padding : 0;
1050
}
1051
1052
#facets ul li {
1053
	font-weight : bold;
1054
	text-align : left;
1055
	list-style : none;
1056
}
1057
1058
#facets ul ul li {
1059
	border : 0;
1060
	font-size : 85%;
1061
	font-weight : normal;
1062
	padding : 2px;
1063
	text-align : left;
1064
}
1065
1066
#facets ul ul li a {
1067
	font-weight : normal;
1068
	text-decoration : underline;
1069
}
1070
1071
#facets h4 {
1072
	font-size : 93%;
1073
	padding:3px;
1074
	text-align:center;
1075
	background-color:#E7E7CA;
1076
	line-height:1.8em;
1077
	margin-left:-1px;
1078
	margin-right:-1px;
1079
	margin-top:-1px;
1080
}
1081
1082
#breadcrumbs {
1083
	padding : .7em;
1084
}
1085
1086
p {
1087
	margin: .7em 0;
1088
}
1089
1090
strong {
1091
	font-weight : bold;
1092
}
1093
1094
em {
1095
	font-style : italic;
1096
}
1097
1098
1099
table#marc,
1100
table#marc td,
1101
table#marc th {
1102
	background-color : transparent;
1103
	border : 0;
1104
}
1105
1106
table#marc p span.label {
1107
	font-weight : bold;
1108
}
1109
1110
table#marc p,
1111
table#marc ul {
1112
	padding-bottom: .6em;
1113
}
1114
1115
table#items,
1116
table#items td
1117
table#items th {
1118
	border-width : 1px solid #EEE;
1119
	font-size : 90%;
1120
}
1121
1122
1123
table#marc div.results_summary {
1124
	clear :  left;
1125
}
1126
table#marc div.results_summary ul {
1127
	display : inline;
1128
	float :  none;
1129
	clear :  none;
1130
	margin: 0;
1131
	padding: 0;
1132
	list-style : none;
1133
}
1134
1135
table#marc div.results_summary ul li {
1136
	display : inline;
1137
}
1138
1139
#basketcount {
1140
	display : inline;
1141
}
1142
1143
#bookcover {
1144
	float : left;
1145
	margin : 0;
1146
	padding : 0;
1147
}
1148
1149
#bookcover img {
1150
	margin : 0 1em 1em 0;	
1151
}
1152
1153
fieldset.brief {
1154
	border : 1px solid #E8E8E8;
1155
}
1156
1157
fieldset.brief legend {
1158
	font-weight : bold;
1159
	font-size : 100%;
1160
}
1161
1162
fieldset.brief label {
1163
	display : block;
1164
	padding : .3em 0;
1165
}
1166
1167
fieldset.brief input+input {
1168
	margin-top : 3px;
1169
}
1170
1171
fieldset.brief input, fieldset.brief textarea, fieldset.brief select {	
1172
	background-color: #F3F3F3;
1173
	border-top : 1px solid #979797;
1174
	border-left : 1px solid #979797;
1175
	border-right : 1px solid #DDDDDD;
1176
	border-bottom : 1px solid #DDDDDD;
1177
	font-size : 140%;
1178
	padding : .2em;
1179
	font-weight: normal;
1180
}
1181
1182
fieldset.brief textarea {
1183
	font-size: 105%;
1184
}
1185
1186
fieldset.brief input:focus {
1187
	background-color: #FFFFCC;
1188
}
1189
1190
fieldset.brief ol, fieldset.brief li {
1191
	list-style-type : none;
1192
}
1193
1194
fieldset.brief div.hint, fieldset.rows div.hint {
1195
	color : #666666;
1196
	font-size : 100%;
1197
	margin : .4em;
1198
}
1199
1200
h2 span.hint {
1201
	font-size: 76%;
1202
	font-weight : normal;
1203
}
1204
.thumbnail {
1205
	border : 0;
1206
	float : left;
1207
	margin : 0pt 5px 5px 0pt;
1208
}
1209
a.cancel {
1210
	padding-left : 1em;
1211
}
1212
1213
.resultscontrol, .resultscontrol select {
1214
	font-size: 90%;
1215
}
1216
1217
.cartlist {
1218
	margin-top : 5px;
1219
}
1220
1221
.cartlist input.submit, #tagsel_button {
1222
	background-color : #d8deb8;
1223
	background-image : none;
1224
	border-color : #bebf84;
1225
	color : #333;
1226
	font-size : 87%;
1227
	padding : 2px 0;
1228
	margin : 0 0 0 0;
1229
}
1230
1231
#CheckAll, #CheckNone {
1232
	font-weight : normal;
1233
	margin : 0 .5em;
1234
}
1235
1236
.resultscontrol label {
1237
	font-weight : bold;
1238
	margin-left : .5em;
1239
}
1240
1241
.resort {
1242
	float : right;
1243
	margin-top : 5px;
1244
}
1245
1246
.searchresults p.details {
1247
	color : #979797;
1248
}
1249
1250
.searchresults p {
1251
	margin: 0;
1252
	padding: 0 0 .6em 0;
1253
}
1254
1255
td.resultscontrol img {
1256
	vertical-align: middle;
1257
}
1258
1259
.searchresults table td {
1260
}
1261
1262
.searchresults table {
1263
	margin : 0;
1264
}
1265
1266
.searchresults td, .searchresults th, .searchresults table {
1267
	border: 0;
1268
}
1269
.searchresults td {
1270
	vertical-align: top;
1271
}
1272
1273
.searchresults tr {
1274
	border-bottom : 1px solid #f3f3f3;
1275
}
1276
1277
.searchresults tr:first-child {
1278
	border : 0;
1279
}
1280
1281
.searchresults table {
1282
	border-top : 0px solid #CCCCCC;
1283
	width : 100%;
1284
}
1285
1286
.searchresults a.reserve, .searchresults a.reserve:visited {
1287
	background-position:left top;
1288
	background-repeat:no-repeat;
1289
	float:right;
1290
	padding:2px 3px 2px 26px;
1291
}
1292
1293
.searchresults a.reserve {
1294
	background-color:transparent;
1295
	color:#006699;
1296
}
1297
1298
.unavailable, .tagerror, .tagerror:visited {
1299
	color: #990033;
1300
}
1301
1302
#libraryname {
1303
	float : left;
1304
	line-height : 2em;
1305
}
1306
1307
#corner {
1308
	float : right;
1309
	line-height : 2em;
1310
}
1311
1312
.pages {
1313
	line-height : 1.8em;
1314
	text-align: center;
1315
}
1316
1317
.current,
1318
.currentPage {
1319
	background-color: #FFFFFF;
1320
	color: #3366CC;
1321
	font-weight: bold;
1322
	padding: 1px 5px 1px 5px;
1323
	text-decoration: none;
1324
}
1325
1326
a:link.nav,
1327
div.pages a:link {
1328
	background-color: #EEE;
1329
	border: 1px solid #CCCC99;
1330
	color: #3366CC;
1331
	font-weight: bold;
1332
	padding: 1px 5px 1px 5px;
1333
	text-decoration: none;
1334
}
1335
1336
a:visited.nav,
1337
div.pages a:visited {
1338
	background-color: #EEE;
1339
	border: 1px solid #CCCC99;
1340
	color: #3366CC;
1341
	font-weight: bold;
1342
	padding: 1px 5px 1px 5px;
1343
	text-decoration: none;
1344
}
1345
1346
a:hover.nav,
1347
div.pages a:hover {
1348
	background-color: #FFFFCC;
1349
	border: 1px solid #CCCC99;
1350
	color: #CC3333;
1351
	font-weight: bold;
1352
	padding: 1px 5px 1px 5px;
1353
	text-decoration: none;
1354
}
1355
1356
a:active.nav,
1357
div.pages a:active {
1358
	background-color: #FFFFCC;
1359
	border: 1px solid #CCCC99;
1360
	color: #D25500;
1361
	font-weight: bold;
1362
	padding: 1px 5px 1px 5px;
1363
	text-decoration: none;
1364
}
1365
1366
/* Tabs */
1367
ul.link-tabs {
1368
	list-style-type: none;
1369
	margin: 9px 0 -2px 5px;
1370
	padding: 0;
1371
}
1372
1373
ul.link-tabs li {
1374
	display: inline;
1375
	padding: 0px;
1376
}
1377
1378
ul.link-tabs li a {
1379
	font-weight: bold;
1380
	padding: 2px 4px 2px 4px;
1381
	text-decoration: none;
1382
	border-top: 1px solid #DDDDDD;
1383
	border-left : 1px solid #DDDDDD;
1384
	border-right : 1px solid #666666;
1385
}
1386
1387
ul.link-tabs li#power_formButton a, ul.link-tabs li#proximity_formButton a {
1388
	padding: 2px 4px 3px 4px;
1389
}
1390
1391
ul.link-tabs li.off a {
1392
	background-color: #EEEEEB;
1393
	border-bottom: 1px solid #DDDDDD;
1394
}
1395
1396
ul.link-tabs li.off a:hover {
1397
	padding: 2px 3px 2px 4px;
1398
	background-color: #FFFFEC;
1399
	border-top: 1px solid #BEBF84;
1400
	border-left : 1px solid #BEBF84;
1401
	border-right : 2px solid #333333;
1402
}
1403
1404
ul.link-tabs li.on a {
1405
	background-color: #FFFFFF;
1406
	border-bottom: 1px solid #FFFFFF;
1407
}
1408
1409
ul.link-tabs li a.debit {
1410
	background-color : #FFFF99;
1411
	color : #990033;
1412
}
1413
1414
div.tab-container {
1415
	border : 1px solid #DDDDDD;	
1416
	margin-top : 4px;
1417
	padding : .7em;
1418
	width : 90%;
1419
}
1420
1421
tr.overdue td {
1422
	background-color : #ffcccc;
1423
	border-bottom : 1px solid #ffaeae;
1424
	border-right : 1px solid #ffaeae;
1425
	font-weight : bold;
1426
}
1427
1428
td.overdue {
1429
	color : #cc3333;
1430
}
1431
1432
.renewals {
1433
	display:block;
1434
	font-size:0.8em;
1435
	padding:0.5em;
1436
}
1437
1438
table#marc, table#marc td, table#marc th {
1439
	border : 0;
1440
}
1441
1442
table#marc th {
1443
	background-color : transparent;
1444
	text-align : left;
1445
}
1446
1447
table#marc td:first-child {
1448
	text-indent : 2em;
1449
}
1450
#masthead {
1451
float: left;
1452
width: 120px;
1453
}
1454
1455
#fluid {
1456
margin-left: 124px;
1457
margin-top : .4em;
1458
padding-left : 1em;
1459
}
1460
1461
#fluid-offset {
1462
float : right;
1463
width: 100%;
1464
}
1465
1466
#translControl{
1467
float : left;
1468
padding-left : .4em;
1469
}
1470
1471
.clearfix:after {
1472
    content: "."; 
1473
    display: block; 
1474
    height: 0; 
1475
    clear: both; 
1476
    visibility: hidden;
1477
}
1478
1479
/* Hides from IE-mac \*/
1480
* html .clearfix {height: 1%;}
1481
/* End hide from IE-mac */
1482
1483
.results_summary {
1484
	display: block;
1485
	font-size : 85%;
1486
	color: #707070;
1487
	padding : 0 0 .5em 0;
1488
}
1489
.results_summary .results_summary {
1490
	font-size : 100%;
1491
}
1492
1493
.results_summary.actions {
1494
    margin-top : .5em;
1495
}
1496
1497
.actions a {
1498
    white-space: nowrap;
1499
}
1500
1501
.m880 {
1502
    display:block; 
1503
    text-align:right; 
1504
    float:right; 
1505
    width:50%; 
1506
    padding-left:20px
1507
}
1508
1509
.tagstatus {
1510
    color: #707070;
1511
    padding: 0 4px 0 4px;
1512
    margin-left: 5px;
1513
    border: 1px solid #bcbcbc;
1514
    background-color: #ffffcc;
1515
    -webkit-border-radius: 4px;
1516
    -moz-border-radius: 4px;
1517
    border-radius: 4px;
1518
}
1519
1520
.results_summary.tagstatus {
1521
    display: inline;
1522
}
1523
1524
.results_summary .label {
1525
	color: #202020;
1526
}
1527
1528
.results_summary a {
1529
	font-weight: normal;
1530
}
1531
1532
.actions a.hold,
1533
.actions a.addtocart,
1534
.actions a.addtoshelf,
1535
.actions a.addtolist,
1536
.actions a.tag_add,
1537
.actions a.removefromlist {
1538
	margin-left : 1em;
1539
	text-decoration : none;
1540
}
1541
1542
/* Search results rows place hold */
1543
.actions a.hold {
1544
    background-image : url("../../images/sprite.png"); /* Place hold small */
1545
    background-position : -10px -542px;
1546
    background-repeat: no-repeat;
1547
	padding-left : 16px;
1548
}
1549
1550
/* Search results rows add to cart */
1551
.actions a.addtocart {
1552
    background-image : url("../../images/sprite.png"); /* Cart small */
1553
    background-position : -10px -572px;
1554
    background-repeat: no-repeat;
1555
    padding-left : 15px;
1556
	display : none;
1557
}
1558
1559
/* List contents remove from list link */
1560
.removefromlist  {
1561
    background-image : url("../../images/sprite.png"); /* Delete */
1562
    background-position : -8px -690px;
1563
    background-repeat: no-repeat;
1564
    text-decoration : none;
1565
    padding-left : 15px;
1566
    display : none;
1567
}
1568
1569
/* Search results rows save to lists */
1570
.actions a.addtoshelf {
1571
    background-image : url("../../images/sprite.png"); /* MARC view */
1572
    background-position: -10px -27px;
1573
    background-repeat: no-repeat;
1574
	padding-left : 13px;
1575
}
1576
1577
.dialog {
1578
  border: 1px solid #bcbcbc;
1579
	padding : .5em;
1580
	margin : 1em auto;
1581
  width: 65%;
1582
  }
1583
  
1584
.dialog  h2, .dialog h3, .dialog h4 {
1585
  	margin : auto;
1586
	text-align : center;
1587
  }
1588
 
1589
div.alert {
1590
	background: #fef8d3; /* Old browsers */
1591
	background: -moz-linear-gradient(top, #fef8d3 0%, #ffec91 9%, #ffed87 89%, #f9dc00 100%); /* FF3.6+ */
1592
	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fef8d3), color-stop(9%,#ffec91), color-stop(89%,#ffed87), color-stop(100%,#f9dc00)); /* Chrome,Safari4+ */
1593
	background: -webkit-linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* Chrome10+,Safari5.1+ */
1594
	background: -o-linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* Opera11.10+ */
1595
	background: -ms-linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* IE10+ */
1596
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fef8d3', endColorstr='#f9dc00',GradientType=0 ); /* IE6-9 */
1597
	background: linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* W3C */
1598
	text-align : center;
1599
}
1600
1601
div.alert strong {
1602
	color : #900;
1603
}
1604
1605
div.message {
1606
	background: #ffffff; /* Old browsers */
1607
	background: -moz-linear-gradient(top, #ffffff 0%, #f4f6fa 2%, #eaeef5 23%, #e8edf6 94%, #cddbf2 100%); /* FF3.6+ */
1608
	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(2%,#f4f6fa), color-stop(23%,#eaeef5), color-stop(94%,#e8edf6), color-stop(100%,#cddbf2)); /* Chrome,Safari4+ */
1609
	background: -webkit-linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* Chrome10+,Safari5.1+ */
1610
	background: -o-linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* Opera11.10+ */
1611
	background: -ms-linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* IE10+ */
1612
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eaeef5', endColorstr='#cddbf2',GradientType=0 ); /* IE6-9 */
1613
	background: linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* W3C */
1614
	border : 1px solid #bcbcbc;
1615
	width : 55%;
1616
}
1617
1618
#moresearches {
1619
	clear : left;
1620
	color : #000099;
1621
	font-size : 90%;
1622
	line-height : 110%;
1623
	margin : .6em 0 .3em 0;
1624
}
1625
1626
#moresearches a:link, #moresearches a:visited {
1627
	color : #e5ebff;
1628
	font-weight : normal;
1629
	text-decoration : none;
1630
}
1631
1632
#news th {
1633
	text-align : left;
1634
	padding : 3px 5px;
1635
}
1636
1637
strong em, em strong  {
1638
    font-weight: bold;
1639
    font-style: italic;
1640
}
1641
1642
#opac-main-search #listsmenu a, #opac-main-search #listsmenu h4 {
1643
	color : #000;
1644
	font-weight : normal;
1645
}
1646
 #opac-main-search #listsmenu h4 {
1647
 	font-size : 90%;
1648
	font-weight : bold;
1649
	margin : 0 .2em; 
1650
 }
1651
 
1652
#opac-main-search #listsmenu .yuimenuitemlabel {
1653
	cursor : pointer;
1654
}
1655
1656
#opac-main-search #listsmenu .bd {
1657
	background: #eef4fe; /* Old browsers */
1658
	background: -moz-linear-gradient(left, #eef4fe 0%, #eef4fe 88%, #f6f9fe 98%, #ffffff 99%, #a5c2f6 99%, #e6eefe 100%, #cbdefe 100%); /* FF3.6+ */
1659
	background: -webkit-gradient(linear, left top, right top, color-stop(0%,#eef4fe), color-stop(88%,#eef4fe), color-stop(98%,#f6f9fe), color-stop(99%,#ffffff), color-stop(99%,#a5c2f6), color-stop(100%,#e6eefe), color-stop(100%,#cbdefe)); /* Chrome,Safari4+ */
1660
	background: -webkit-linear-gradient(left, #eef4fe 0%,#eef4fe 88%,#f6f9fe 98%,#ffffff 99%,#a5c2f6 99%,#e6eefe 100%,#cbdefe 100%); /* Chrome10+,Safari5.1+ */
1661
	background: -o-linear-gradient(left, #eef4fe 0%,#eef4fe 88%,#f6f9fe 98%,#ffffff 99%,#a5c2f6 99%,#e6eefe 100%,#cbdefe 100%); /* Opera11.10+ */
1662
	background: -ms-linear-gradient(left, #eef4fe 0%,#eef4fe 88%,#f6f9fe 98%,#ffffff 99%,#a5c2f6 99%,#e6eefe 100%,#cbdefe 100%); /* IE10+ */
1663
	background: linear-gradient(left, #eef4fe 0%,#eef4fe 88%,#f6f9fe 98%,#ffffff 99%,#a5c2f6 99%,#e6eefe 100%,#cbdefe 100%); /* W3C */
1664
	border : 1px solid #739acf;
1665
	padding : .3em 1em 0 0;
1666
}
1667
1668
#opac-main-search #listsmenu .yuimenuitemlabel.selected {
1669
	background-color : #fff;
1670
}
1671
1672
#opac-main-search #listsmenu ul {
1673
	border-color : #b8d0e6;
1674
}
1675
1676
.selectcol {
1677
	vertical-align: top;
1678
	width: 10px;
1679
}
1680
.itypecol {
1681
	vertical-align: top;
1682
	width: 10px;
1683
}
1684
#container {
1685
	color : #000;
1686
}
1687
1688
div#changelanguage{
1689
	background-color: #fff;
1690
	border-top: 1px solid #CCC;
1691
	color : #666;
1692
	font-size : 85%;
1693
	padding : 1em;
1694
	margin-top : 2em;
1695
 }
1696
 
1697
div#changelanguage a {
1698
	font-weight : normal;
1699
	padding : .5em 0;
1700
}
1701
1702
div#changelanguage li.yuimenuitem {
1703
    font-size: 120%;
1704
    font-weight: normal;
1705
    margin: 0;
1706
    padding: 0 1em;
1707
}
1708
div#changelanguage li.yuimenuitem a.yuimenuitemlabel {
1709
    padding: 0;
1710
}
1711
1712
ul#i18nMenu {
1713
	margin : 0;
1714
	padding : .2em 0;
1715
 }
1716
1717
ul#i18nMenu li {
1718
	border-left : 1px solid #CCC;
1719
	display : inline;
1720
	list-style : none;
1721
	padding : 0 .4em;
1722
 }
1723
1724
ul#i18nMenu li:first-child {
1725
	border-left : 0;
1726
 }
1727
1728
ul#i18nMenu li ul li {
1729
	border : 0;
1730
	display : block;
1731
	padding : 0;
1732
 }
1733
1734
1735
ul#i18nMenu li.more a {
1736
    background-image : url("../../images/sprite.png"); /* Arrow up */
1737
    background-position : 37px -940px;
1738
	background-repeat:no-repeat;
1739
	padding-right: 1.3em;
1740
}
1741
1742
ul#i18nMenu li.more ul li a {
1743
	background-image : none;
1744
	padding: 0 1.3em;
1745
}
1746
.morelang,
1747
li.more {
1748
float:left
1749
}
1750
1751
span.lang{
1752
	float:left;
1753
	border-right : 1px solid black;
1754
	padding : 0 .5em;
1755
}
1756
1757
#cartDetails,#cartUpdate,#holdDetails,#listsDetails {
1758
	background-color : #FFF;
1759
	border: 1px solid #739acf;
1760
	color : black;
1761
	display : none;
1762
	margin : 0;
1763
	padding : 10px;
1764
	text-align : center;
1765
	width : 180px;
1766
	box-shadow: 1px 1px 3px #666;
1767
	-moz-box-shadow: 1px 1px 3px #666;
1768
	-webkit-box-shadow: 1px 1px 3px #666;
1769
	z-index: 2;
1770
1771
}
1772
1773
.yui-panel .hd, .yui-panel .bd, .yui-panel .ft {
1774
	background-color : transparent;
1775
	border : 0;
1776
	padding : inherit;
1777
}
1778
1779
#login #userid, #login #password {
1780
	width : 98%;	
1781
}
1782
1783
#opac-main-search input.submit {
1784
	background: #e6f3fe; /* Old browsers */
1785
	background: -moz-linear-gradient(top, #e6f3fe 0%, #dfeefa 8%, #bfd5ea 49%, #b8d0e6 52%, #b8d0e6 100%); /* FF3.6+ */
1786
	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#e6f3fe), color-stop(8%,#dfeefa), color-stop(49%,#bfd5ea), color-stop(52%,#b8d0e6), color-stop(100%,#b8d0e6)); /* Chrome,Safari4+ */
1787
	background: -webkit-linear-gradient(top, #e6f3fe 0%,#dfeefa 8%,#bfd5ea 49%,#b8d0e6 52%,#b8d0e6 100%); /* Chrome10+,Safari5.1+ */
1788
	background: -o-linear-gradient(top, #e6f3fe 0%,#dfeefa 8%,#bfd5ea 49%,#b8d0e6 52%,#b8d0e6 100%); /* Opera11.10+ */
1789
	background: -ms-linear-gradient(top, #e6f3fe 0%,#dfeefa 8%,#bfd5ea 49%,#b8d0e6 52%,#b8d0e6 100%); /* IE10+ */
1790
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#e6f3fe', endColorstr='#b8d0e6',GradientType=0 ); /* IE6-9 */
1791
	background: linear-gradient(top, #e6f3fe 0%,#dfeefa 8%,#bfd5ea 49%,#b8d0e6 52%,#b8d0e6 100%); /* W3C */
1792
	-webkit-border-radius: 4px;
1793
	-moz-border-radius: 4px;
1794
	border-radius: 4px;
1795
	-webkit-box-shadow: 1px 1px 1px 1px , , .3);
1796
	-moz-box-shadow: 1px 1px 1px 1px , , .3);
1797
	box-shadow: 1px 1px 1px 1px , , .3);
1798
1799
	color : #333;
1800
	font-weight : normal;
1801
	font-size : 80%;
1802
	padding : 2px;
1803
}
1804
1805
div#menu {
1806
	border-right : 1px solid #979797;
1807
	font-size : 94%;
1808
	margin-right : .5em;
1809
	padding-top : 1em;
1810
	padding-bottom : 2em;
1811
}
1812
1813
div#menu li a {
1814
	background: #eeeeee; /* Old browsers */
1815
	background: -moz-linear-gradient(left, #eeeeee 0%, #eeeeee 96%, #e6e6e6 97%, #cccccc 99%, #c1c1c1 100%); /* FF3.6+ */
1816
	background: -webkit-gradient(linear, left top, right top, color-stop(0%,#eeeeee), color-stop(96%,#eeeeee), color-stop(97%,#e6e6e6), color-stop(99%,#cccccc), color-stop(100%,#c1c1c1)); /* Chrome,Safari4+ */
1817
	background: -webkit-linear-gradient(left, #eeeeee 0%,#eeeeee 96%,#e6e6e6 97%,#cccccc 99%,#c1c1c1 100%); /* Chrome10+,Safari5.1+ */
1818
	background: -o-linear-gradient(left, #eeeeee 0%,#eeeeee 96%,#e6e6e6 97%,#cccccc 99%,#c1c1c1 100%); /* Opera 11.10+ */
1819
	background: -ms-linear-gradient(left, #eeeeee 0%,#eeeeee 96%,#e6e6e6 97%,#cccccc 99%,#c1c1c1 100%); /* IE10+ */
1820
	background: linear-gradient(left, #eeeeee 0%,#eeeeee 96%,#e6e6e6 97%,#cccccc 99%,#c1c1c1 100%); /* W3C */
1821
	text-decoration : none;
1822
	display : block;
1823
	border : 1px solid #979797;
1824
	font-size : 111%;
1825
	margin : .5em 0;
1826
	padding : .4em .3em;
1827
	margin-right : -1px;
1828
}
1829
1830
div#menu li a:hover {
1831
	background: #eaeef5; /* Old browsers */
1832
	background: -moz-linear-gradient(left, #eaeef5 0%, #dee6f4 96%, #c4d5ef 98%, #a2bee8 100%); /* FF3.6+ */
1833
	background: -webkit-gradient(linear, left top, right top, color-stop(0%,#eaeef5), color-stop(96%,#dee6f4), color-stop(98%,#c4d5ef), color-stop(100%,#a2bee8)); /* Chrome,Safari4+ */
1834
	background: -webkit-linear-gradient(left, #eaeef5 0%,#dee6f4 96%,#c4d5ef 98%,#a2bee8 100%); /* Chrome10+,Safari5.1+ */
1835
	background: -o-linear-gradient(left, #eaeef5 0%,#dee6f4 96%,#c4d5ef 98%,#a2bee8 100%); /* Opera 11.10+ */
1836
	background: -ms-linear-gradient(left, #eaeef5 0%,#dee6f4 96%,#c4d5ef 98%,#a2bee8 100%); /* IE10+ */
1837
	background: linear-gradient(left, #eaeef5 0%,#dee6f4 96%,#c4d5ef 98%,#a2bee8 100%); /* W3C */
1838
}
1839
1840
div#menu li.active a:hover {
1841
	background-color : #fff;
1842
	color : #0000CC;
1843
}
1844
1845
#menu ul li {
1846
	list-style-type : none;
1847
}
1848
1849
#menu ul li.active a {
1850
	background-color : #FFF;
1851
	background-image : none;
1852
	border-right : 0;
1853
	font-weight : bold;
1854
}
1855
1856
.left {
1857
	float : left;
1858
}
1859
1860
.right {
1861
	float : right;
1862
}
1863
1864
#searchsubmit {
1865
	cursor : default;
1866
	font-size : 87%;
1867
	font-weight :  normal;
1868
	margin-top : 0;
1869
	margin-left :  .2em;
1870
	padding: 2px 2px 1px 2px;
1871
}
1872
1873
#export,#further,.detailtagcell {
1874
	margin-top : .5em;
1875
	background-color : #F3F3F3;
1876
	border : 1px solid #E8E8E8;
1877
	font-size : 76%;
1878
	padding : 3px;
1879
	text-align : center;
1880
}
1881
#furtherm { margin-top : .5em; }
1882
1883
#export label, .detailtagcell label {
1884
	display : block;
1885
	font-weight : bold;
1886
	font-size : 110%;
1887
	margin-bottom : 2px;
1888
}
1889
1890
#export input, .detailtagcell input {
1891
	padding : 2px;
1892
}
1893
1894
#cartmenulink, #listsmenulink {
1895
	background-repeat: no-repeat;
1896
	-webkit-border-radius: 5px;
1897
	-moz-border-radius: 5px;
1898
	border-radius: 5px;
1899
	display : block;
1900
	position : relative;
1901
	float : left;
1902
	color : #333;
1903
	text-decoration : none;
1904
	cursor : pointer;
1905
	font-size : 105%;
1906
	font-weight : bold;
1907
	line-height : 185%;
1908
	margin-left : 1.5em;
1909
	padding : .3em .7em;
1910
}
1911
1912
#listsmenulink {
1913
	background : #9FBFFF;
1914
    background: url("../../images/sprite.png"),-moz-linear-gradient(top, #d7e5ff 0%, #b1cbff 50%, #9fbfff 100%); /* FF3.6+ */
1915
    background: url("../../images/sprite.png"),-webkit-gradient(linear, left top, left bottom, color-stop(0%,#d7e5ff), color-stop(50%,#b1cbff), color-stop(100%,#9fbfff)); /* Chrome,Safari4+ */
1916
    background: url("../../images/sprite.png"),-webkit-linear-gradient(top, #d7e5ff 0%,#b1cbff 50%,#9fbfff 100%); /* Chrome10+,Safari5.1+ */
1917
    background: url("../../images/sprite.png"),-o-linear-gradient(top, #d7e5ff 0%,#b1cbff 50%,#9fbfff 100%); /* Opera 11.10+ */
1918
    background: url("../../images/sprite.png"),-ms-linear-gradient(top, #d7e5ff 0%,#b1cbff 50%,#9fbfff 100%); /* IE10+ */
1919
    background: url("../../images/sprite.png"),linear-gradient(top, #d7e5ff 0%,#b1cbff 50%,#9fbfff 100%); /* W3C */
1920
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#d7e5ff', endColorstr='#9fbfff',GradientType=0 ); /* IE6-9 */
1921
    background-position: 40px -287px,top left;
1922
	background-repeat: no-repeat;
1923
	border: 1px solid #629DCF;
1924
	color : #006699;
1925
	padding-right: 20px;
1926
}
1927
1928
#listsmenulink:hover {
1929
	background-color : #b8d0e6;
1930
    background: url("../../images/sprite.png"),-moz-linear-gradient(top, #e2ecf5 0%, #c3d8ea 50%, #b8d0e6 100%); /* FF3.6+ */
1931
    background: url("../../images/sprite.png"),-webkit-gradient(linear, left top, left bottom, color-stop(0%,#e2ecf5), color-stop(50%,#c3d8ea), color-stop(100%,#b8d0e6)); /* Chrome,Safari4+ */
1932
    background: url("../../images/sprite.png"),-webkit-linear-gradient(top, #e2ecf5 0%,#c3d8ea 50%,#b8d0e6 100%); /* Chrome10+,Safari5.1+ */
1933
    background: url("../../images/sprite.png"),-o-linear-gradient(top, #e2ecf5 0%,#c3d8ea 50%,#b8d0e6 100%); /* Opera 11.10+ */
1934
    background: url("../../images/sprite.png"),-ms-linear-gradient(top, #e2ecf5 0%,#c3d8ea 50%,#b8d0e6 100%); /* IE10+ */
1935
    background: url("../../images/sprite.png"),linear-gradient(top, #e2ecf5 0%,#c3d8ea 50%,#b8d0e6 100%); /* W3C */
1936
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#e2ecf5', endColorstr='#b8d0e6',GradientType=0 ); /* IE6-9 */
1937
	background-repeat: no-repeat;
1938
    background-position: 40px -287px,top left;
1939
}
1940
1941
#cartmenulink {
1942
	background: #98CB58; /* Old browsers */
1943
    background: url("../../images/sprite.png"),-moz-linear-gradient(top, #d5eaba 0%, #b7db8a 50%, #98cb59 100%); /* FF3.6+ */
1944
    background: url("../../images/sprite.png"),-webkit-gradient(linear, left top, left bottom, color-stop(0%,#d5eaba), color-stop(50%,#b7db8a), color-stop(100%,#98cb59)); /* Chrome,Safari4+ */
1945
    background: url("../../images/sprite.png"),-webkit-linear-gradient(top, #d5eaba 0%,#b7db8a 50%,#98cb59 100%); /* Chrome10+,Safari5.1+ */
1946
    background: url("../../images/sprite.png"),-o-linear-gradient(top, #d5eaba 0%,#b7db8a 50%,#98cb59 100%); /* Opera 11.10+ */
1947
    background: url("../../images/sprite.png"),-ms-linear-gradient(top, #d5eaba 0%,#b7db8a 50%,#98cb59 100%); /* IE10+ */
1948
    background: url("../../images/sprite.png"),linear-gradient(top, #d5eaba 0%,#b7db8a 50%,#98cb59 100%); /* W3C */
1949
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#d5eaba', endColorstr='#98cb59',GradientType=0 ); /* IE6-9 */
1950
    background-position: -5px -256px, left top;
1951
	background-repeat: no-repeat;
1952
	border: 1px solid #5EA28C;
1953
	color : #336600;
1954
	padding-left : 30px;
1955
}
1956
1957
#cartmenulink:hover {
1958
	background-color : #BFDE96;
1959
    background: url("../../images/sprite.png"),-moz-linear-gradient(top, #e5f1d4 0%, #cbe4aa 50%, #c0de98 100%); /* FF3.6+ */
1960
    background: url("../../images/sprite.png"),-webkit-gradient(linear, left top, left bottom, color-stop(0%,#e5f1d4), color-stop(50%,#cbe4aa), color-stop(100%,#c0de98)); /* Chrome,Safari4+ */
1961
    background: url("../../images/sprite.png"),-webkit-linear-gradient(top, #e5f1d4 0%,#cbe4aa 50%,#c0de98 100%); /* Chrome10+,Safari5.1+ */
1962
    background: url("../../images/sprite.png"),-o-linear-gradient(top, #e5f1d4 0%,#cbe4aa 50%,#c0de98 100%); /* Opera 11.10+ */
1963
    background: url("../../images/sprite.png"),-ms-linear-gradient(top, #e5f1d4 0%,#cbe4aa 50%,#c0de98 100%); /* IE10+ */
1964
    background: url("../../images/sprite.png"),linear-gradient(top, #e5f1d4 0%,#cbe4aa 50%,#c0de98 100%); /* W3C */
1965
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#e5f1d4', endColorstr='#c0de98',GradientType=0 ); /* IE6-9 */
1966
	background-repeat: no-repeat;
1967
    background-position: -5px -256px, left top;
1968
}
1969
1970
/* IE 6 & 7  don't do multiple backgrounds, so remove extra padding */
1971
* html #listsmenulink,
1972
*+html #listsmenulink {
1973
	padding-right : .7em;
1974
}
1975
1976
/* IE 6 & 7  don't do multiple backgrounds, so remove extra padding */
1977
* html #cartmenulink,
1978
*+html #cartmenulink {
1979
	padding-left : .7em;
1980
}
1981
1982
/* IE 8 doesn't do multiple backgrounds, so remove extra padding */
1983
#listsmenulink {
1984
  padding-right: .7em\0/;
1985
}
1986
1987
/* IE 8 doesn't do multiple backgrounds, so remove extra padding */
1988
#cartmenulink {
1989
  padding-left: .7em\0/;
1990
}
1991
1992
#cartmenulink span#basketcount {
1993
	background-image : none;
1994
	float : none;
1995
	display : inline;
1996
	height : auto;
1997
	position : relative;
1998
	margin : 0;
1999
	padding : 0;
2000
	left : auto;
2001
	right : auto;
2002
	top : auto;
2003
}
2004
2005
#cartmenulink span#basketcount span {
2006
	background-image : none;
2007
	background-color : #E6FCB7;
2008
	color : #000;
2009
	display : inline;
2010
	float : none;
2011
	font-size : 80%;
2012
	font-weight : normal;
2013
	margin : 0 0 0 .9em;
2014
	padding : 0 .3em 0 .3em;
2015
	position : relative;
2016
	left : auto;
2017
	right : auto;
2018
	top : auto;
2019
}
2020
2021
#views {
2022
	border-bottom : 1px solid #E8E8E8;
2023
	margin-bottom : .5em;
2024
	padding : 0 2em 2px 0.2em;
2025
	white-space : nowrap;
2026
}
2027
2028
span.view {
2029
	padding : 0.2em .2em 2px .2em;
2030
}
2031
2032
#bibliodescriptions,
2033
#isbdcontents {
2034
	clear : left;
2035
	margin-top : .5em;
2036
}
2037
2038
a#MARCview, span#MARCview, a#MARCviewPop, a#ISBDview, span#ISBDview, a#Normalview, a#Briefhistory, span#Normalview, a#Fullhistory, span#Fullhistory, span#Briefhistory {
2039
	background-repeat : no-repeat;
2040
	font-size : 87%;
2041
	font-weight : normal;
2042
	padding : .2em .5em;
2043
    padding-left : 21px;
2044
	text-decoration: none;
2045
}
2046
2047
a#MARCview, span#MARCview {
2048
    background-image: url("../../images/sprite.png");
2049
    background-position: -5px -26px;
2050
    background-repeat: no-repeat;
2051
}
2052
a#MARCviewPop, span#MARCviewPop {
2053
    background-image: url("../../images/sprite.png");
2054
    background-position: -5px -26px;
2055
    background-repeat: no-repeat;
2056
}
2057
a#ISBDview, span#ISBDview {
2058
    background-image: url("../../images/sprite.png");
2059
    background-position: -5px -55px;
2060
    background-repeat: no-repeat;
2061
}
2062
a#Normalview, span#Normalview {
2063
    background-image: url("../../images/sprite.png");
2064
    background-position: -7px 3px;
2065
    background-repeat: no-repeat;
2066
	padding-left : 15px;
2067
}
2068
2069
a#MARCview, a#MARCviewPop, a#ISBDview, a#Normalview, a#Fullhistory, a#Briefhistory {
2070
	background-color : #F3F3F3;
2071
	border-left : 1px solid #E8E8E8;
2072
}
2073
2074
#shelfbrowser table {
2075
	margin : 0 20px;
2076
}
2077
#shelfbrowser table, #shelfbrowser td, #shelfbrowser th {
2078
	border : 0;
2079
	font-size : 90%;
2080
	text-align : center;
2081
}
2082
#shelfbrowser a {
2083
	font-size : 110%;
2084
	text-decoration : none;
2085
}
2086
#shelfbrowser td, #shelfbrowser th {
2087
	width : 20%;
2088
}
2089
#shelfbrowser td.top {
2090
	vertical-align : top;
2091
}
2092
#shelfbrowser td.top a {
2093
	text-decoration : underline;
2094
}
2095
#shelfbrowser a {
2096
	display : block;
2097
}
2098
#shelfbrowser #browser_next,
2099
#shelfbrowser #browser_previous {
2100
    background-image : url("../../images/sprite.png");
2101
    background-repeat: no-repeat;
2102
    width : 16px;
2103
}
2104
#shelfbrowser #browser_next a,
2105
#shelfbrowser #browser_previous a {
2106
    cursor: pointer;
2107
    display : block;
2108
    height: 0 !important;
2109
    margin: 0;
2110
    overflow: hidden;
2111
    padding: 50px 0 0;
2112
    text-decoration: none;
2113
    width: 16px;
2114
}
2115
#shelfbrowser #browser_previous {
2116
background-position: -9px -1007px;
2117
}
2118
#shelfbrowser #browser_next {
2119
background-position: -9px -1057px;
2120
}
2121
2122
#comments .commentline {
2123
	border-bottom : 2px solid #eeeeeb;
2124
	margin : 0 -.5em 0 -.5em;
2125
	padding : 0 .5em .5em .5em;
2126
}
2127
#comments .yours {
2128
	background-color : #effed5;
2129
}
2130
.commentline .avatar {
2131
	float : right;
2132
	padding-left : .5em;
2133
}
2134
#comments #addcomment {
2135
	margin : 0 -1em -1em -1em;
2136
	padding : .3em 1em;
2137
}
2138
input.tagbutton {
2139
	padding : 1px !important;
2140
}
2141
table#items th {
2142
	padding : 2px;
2143
}
2144
#action {
2145
	/*margin-top: 0;*/
2146
}
2147
#similars h4 {
2148
	text-align : left;
2149
}
2150
#similars table,
2151
#similars td {
2152
	border : 0;
2153
	margin : 0;
2154
}
2155
#similars td {
2156
	width : 13em;
2157
}
2158
#similars a {
2159
	display : block;
2160
	font-weight : normal;
2161
}
2162
#furtherm a,
2163
#furtherm a:link,
2164
#furtherm a:visited {
2165
	color : #006699;
2166
}
2167
#furtherm h4 {
2168
	font-size : 106%;
2169
	margin : .1em .5em;
2170
}
2171
#furtherm .bd {
2172
	background-color : #F3F3F3;
2173
	border:1px solid #DDD;
2174
}
2175
.results_summary img {
2176
	margin : 0 5px;
2177
 }
2178
span.no-image {
2179
	background-color : #FFF;
2180
	border: 1px solid #979797;
2181
	color : #AAA;
2182
	display:block;
2183
	font-size : 86%;
2184
	font-weight : bold;
2185
	text-align : center;
2186
	width : 75px;
2187
}
2188
#bookcover span.no-image {
2189
	margin-right : 10px;
2190
	margin-bottom : 10px;
2191
}
2192
#shelfbrowser a:link span.no-image,
2193
#shelfbrowser a:visited span.no-image,
2194
#shelfbrowser a:hover span.no-image,
2195
#shelfbrowser a:active span.no-image {
2196
	font-size : 95%;
2197
}
2198
#shelfbrowser a:link span.no-image,
2199
#shelfbrowser a:visited span.no-image,
2200
#shelfbrowser a:hover span.no-image,
2201
#shelfbrowser a:active span.no-image,
2202
td.jacketcell a:link,
2203
td.jacketcell a:visited,
2204
td.jacketcell a:hover,
2205
td.jacketcell a:active,
2206
a.p1:link,
2207
a.p1:visited,
2208
a.p1:hover,
2209
a.p1:active {
2210
	color : #AAA;
2211
	text-decoration : none;
2212
	font-weight : bold;
2213
}
2214
2215
.copies_row > td:first-child {
2216
    border-left-style : none;
2217
}
2218
2219
.rtl {
2220
  unicode-bidi: embed;
2221
  direction: rtl;
2222
  text-align: right;
2223
}
2224
2225
div.ft {
2226
	clear : both;
2227
}
2228
2229
.authorSearch {
2230
    position: absolute;
2231
    display: none;
2232
    z-index: 2;
2233
    background-color: white;
2234
    border: 1px solid black;
2235
    padding: 4px;
2236
}
2237
.authorSearch li {
2238
    list-style-type: none;
2239
}
2240
.authorSearch ul {
2241
    padding-left: 0px;
2242
}
2243
.subjectSearch {
2244
    position: absolute;
2245
    display: none;
2246
    z-index: 2;
2247
    background-color: white;
2248
    border: 1px solid black;
2249
    padding: 4px;
2250
}
2251
.subjectSearch li {
2252
    list-style-type: none;
2253
}
2254
.subjectSearch ul {
2255
    padding-left: 0px;
2256
}
2257
2258
#basket td ul li {
2259
	font-size:90%;
2260
    list-style:disc outside url(data:image/gif;base64,R0lGODlhBQAHAJECAP///5zD6v///wAAACH5BAEAAAIALAAAAAAFAAcAAAIMjCUGkbvhFGQSmVAAADs=);
2261
	padding:0.2em 0;
2262
}
2263
2264
#recentcomments {
2265
	margin:auto;
2266
	max-width:750px;
2267
    margin-left: 13.3207em;
2268
}
2269
2270
.searchresults .commentline {
2271
	background-color : rgb(255, 255, 204);
2272
	background-color : rgba(255, 255, 204, 0.4);
2273
	border : 1px solid #CCC;
2274
	display: inline-block;
2275
	-webkit-border-radius: 4px;
2276
	-moz-border-radius: 4px;
2277
	border-radius: 4px;
2278
	-webkit-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.2);
2279
	-moz-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.2);
2280
	box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.2);
2281
	margin : .3em;
2282
	padding : .4em;
2283
}
2284
2285
.searchresults .commentline.yours {
2286
	background-color : rgb(239, 254, 213);
2287
	background-color : rgba(239, 254, 213, 0.4);
2288
}
2289
2290
#plainmarc table { border: 0; margin: .7em 0 0 0; font-family: monospace; font-size: 95%; }
2291
#plainmarc th { background-color : #FFF; border: 0; white-space: nowrap; text-align:left; vertical-align: top; padding: 2px; }
2292
#plainmarc td { border: 0; padding : 2px; vertical-align: top; }
2293
2294
#catalogue_detail_biblio h1 { float:left; margin:0 1em 1em 0; }
2295
#catalogue_detail_biblio h1.title { float:none; margin-top:1em; }
2296
#catalogue_detail_biblio h3 {clear:both; }
2297
2298
#opac-detail #Normalview { font-weight:bold; }
2299
#opac-marcdetail #Normalview { font-weight:normal; }
2300
#opac-marcdetail #MARCview { font-weight:bold; }
2301
#opac-isbddetail #Normalview { font-weight:normal; }
2302
#opac-isbddetail #ISBDview { font-weight:bold; }
2303
#opac-isbddetail #isbdcontents { margin-top: 2em; }
2304
2305
div.bibmessage { background-color : #ffffb0; border-radius : 5px; padding : 3px; margin : 2px; }
2306
2307
#renewcontrols {
2308
	 float: right;
2309
	 font-size: 66%;
2310
}
2311
2312
#renewcontrols a {
2313
	background-repeat : no-repeat;
2314
	text-decoration:none;
2315
	padding : .1em .4em;
2316
	padding-left : 18px;
2317
}
2318
2319
#renewselected_link {
2320
    background-image : url("../../images/sprite.png");
2321
    background-position : -5px -986px;
2322
    background-repeat: no-repeat;
2323
}
2324
2325
#renewall_link {
2326
    background-image : url("../../images/sprite.png");
2327
    background-position : -8px -967px;
2328
    background-repeat: no-repeat;
2329
}
2330
2331
.koha_url {
2332
    color: #666666;
2333
}
2334
2335
div.koha_url {
2336
    border-top: none !important;
2337
}
2338
span.koha_url {
2339
    position: absolute;
2340
    right: 0;
2341
    font-size: 85%;
2342
}
2343
a.koha_url {
2344
    text-decoration:none;
2345
}
2346
/* pagination */
2347
.pagination {
2348
    position: absolute;
2349
    top:32px;
2350
    left: -1px;
2351
    width: 100%;
2352
    height:auto;
2353
    border: 1px solid #D0D0D0;
2354
    display: none;
2355
	background-color:#F3F3F3;
2356
	padding-bottom:10px;
2357
    z-index: 100;
2358
}
2359
2360
2361
/* nav */
2362
.nav .close_pagination {
2363
    padding-right: 10px;
2364
    position: absolute;
2365
    right: 3px;
2366
    top: -25px;
2367
}
2368
.nav .close_pagination a {
2369
    text-decoration:none!important;
2370
}
2371
2372
.nav ul {
2373
    padding-top: 10px;
2374
}
2375
2376
.nav li {
2377
	list-style:none;
2378
	float:left;
2379
	padding:4px;
2380
	color:#999;
2381
}
2382
2383
.nav li a {
2384
	text-decoration:none!important;
2385
}
2386
2387
.nav li a:hover {
2388
	text-decoration:underline;
2389
}
2390
2391
.nav li ul {
2392
	float:left;
2393
}
2394
2395
.back {
2396
	float:right;
2397
}
2398
2399
.back input{
2400
	background:none!important;
2401
	color:#999!important;
2402
}
2403
2404
.pagination_list {
2405
	float:bottom;
2406
}
2407
.pagination_list ul {
2408
    padding-top: 40px;
2409
	padding-left:0px;
2410
}
2411
.pagination_list li {
2412
	list-style:none;
2413
	float:bottom;
2414
	padding:4px;
2415
	color:#999;
2416
   /* border-bottom : 1px solid #DDDDDD;*/
2417
}
2418
.pagination_list li.highlight {
2419
   background-color : #F3F3F3;
2420
   border-top : 1px solid #DDDDDD;
2421
   border-bottom : 1px solid #DDDDDD;
2422
}
2423
.pagination_list span.li_pag_index {
2424
   color: #999999;
2425
    float: left;
2426
    font-size: 15px;
2427
    font-weight: bold;
2428
    padding-right: 10px;
2429
    text-align: right;
2430
    width: 13px;
2431
	
2432
}
2433
2434
.pagination_list li a {padding-left:0px;}
2435
2436
2437
.nav_results {
2438
    background-color: #F3F3F3;
2439
    border: 1px solid #D0D0D0;
2440
    margin-top: 0.5em;
2441
	position:relative;
2442
}
2443
2444
.nav_results .l_Results a {
2445
    background:#E1E1E1 url("../../images/sprite.png") no-repeat 0px -504px; /* Browse results menu */
2446
    color:#006699;
2447
    display:block;
2448
    padding:8px 28px;
2449
    text-decoration:none;
2450
}
2451
.nav_results .l_Results a:hover {
2452
    background-color:#D9D9D9;
2453
}
2454
.nav_results ul.pg_menu {
2455
    border-top: 1px solid #D0D0D0;
2456
    white-space : nowrap;
2457
}
2458
.nav_results ul.pg_menu li {
2459
    color:#B2B2B2;
2460
    display:inline;
2461
    list-style:none;
2462
    margin: 0;
2463
}
2464
.nav_results ul.pg_menu li.back_results a {
2465
    border-left: 1px solid #D0D0D0;
2466
    border-right: 1px solid #D0D0D0;
2467
}
2468
.nav_results ul.pg_menu li a,
2469
.nav_results ul.pg_menu li span {
2470
	background-color: #F3F3F3;
2471
	display : block;
2472
    float:left;
2473
    padding:.4em .5em;
2474
    text-decoration:none;
2475
    font-weight:normal;
2476
    text-align:center;
2477
}
2478
2479
.nav_results ul.pg_menu li span {
2480
	color : #B2B2B2;
2481
}
2482
2483
.nav_results ul.pg_menu li.left_results a {
2484
	padding-left : 0;
2485
}
2486
2487
.nav_results ul.pg_menu li a:hover {
2488
}
2489
2490
.nav_results #listResults{
2491
    line-height: 0.7em;
2492
}
2493
2494
.nav_results  #listResults li  {
2495
    background-color:#999999;
2496
    color:#C5C5C5;
2497
    font-weight:normal;
2498
	display:block;
2499
	margin-right:1px;
2500
	font-size:0.9em;
2501
	padding:5px 0px;
2502
	text-align:center;
2503
	min-width:20px;
2504
}
2505
2506
.nav_results  #listResults li:hover  {background-color:#006699;}
2507
2508
.nav_results  #listResults li a { color:#FFFFFF; font-weight:normal;}
2509
2510
a.localimage img {
2511
	border : 1px solid #8EB3E7;
2512
	margin : 0 .5em;
2513
	padding : .3em;
2514
}
2515
2516
p.patronimage {
2517
	border:1px solid #EEE;
2518
	border-bottom-color:#000;
2519
	margin: 0.9em 0 0;
2520
	padding:1em;
2521
}
2522
2523
p.patronimage.edit {
2524
	border-color:#E8E8E8;
2525
	margin: 1em 1em 1em 0;
2526
}
2527
2528
span.sep {
2529
	color: #888;
2530
	padding: 0 .2em;
2531
	text-shadow: 1px 1px 0 #FFF;
2532
}
2533
2534
#daily-quote {
2535
    /*border-top : 1px solid #000000;*/
2536
    border : 1px solid #000000;
2537
    margin-top: 2px;
2538
    margin-bottom: 10px;
2539
    margin-left: 2px;
2540
    margin-right: 2px;
2541
    width: 300px;
2542
    text-align: center;
2543
}
2544
2545
#daily-quote h1 {
2546
    font-size: 18px;
2547
    font-weight: normal;
2548
    margin: 0;
2549
}
2550
2551
#daily-quote div {
2552
    font-size: 12px;
2553
    margin: 5px;
2554
}
2555
2556
/* jQueryUI Core */
2557
2558
.ui-widget-content { border: 1px solid #AAA; background: #ffffff none; color: #222222; }
2559
.ui-widget-header { border: 1px solid #AAA; background: #E6F0F2 none; color: #222222; font-weight: bold; }
2560
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #AAA; background: #F4F8F9 none; font-weight: normal; color: #555555; }
2561
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #AAA; background: #E6F0F2 none; font-weight: normal; color: #212121; }
2562
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff none; font-weight: normal; color: #212121; }
2563
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fcefa1; background: #fbf9ee; color: #363636; }
2564
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec; color: #cd0a0a; }
2565
2566
/* jQueryUI autocomplete */
2567
2568
.ui-autocomplete { position: absolute; cursor: default; -webkit-box-shadow: 2px 2px 2px rgba(0,0,0,.3); -moz-box-shadow: 2px 2px 2px rgba(0,0,0,.3); box-shadow: 2px 2px 2px rgba(0,0,0,.3); }
2569
.ui-autocomplete.ui-widget-content .ui-state-hover { border: 1px solid #AAA; background: #E6F0F2 none; font-weight: normal; color: #212121; }
2570
.ui-autocomplete-loading { background: #FFF url("../../img/loading-small.gif") right center no-repeat; }
2571
.ui-menu li { list-style:none; }
2572
2573
#social_networks span {
2574
    color: #274D7F;
2575
    display : block;
2576
    float : left;
2577
    font-size: 85%;
2578
    font-weight: bold;
2579
    line-height: 2em;
2580
    margin : .5em 0 .5em .5em !important;
2581
}
2582
#social_networks a {
2583
    background: transparent url("../../images/social-sprite.png") no-repeat;
2584
    display: block;
2585
    height : 20px !important;
2586
    width : 20px;
2587
    text-indent : -999em;
2588
}
2589
2590
#social_networks div {
2591
    float : left !important;
2592
    margin : .5em 0 .5em .2em !important;
2593
}
2594
2595
#social_networks #facebook {
2596
    background-position : -7px -35px;
2597
}
2598
2599
#social_networks #twitter {
2600
    background-position : -7px -5px;
2601
}
2602
2603
#social_networks #linkedin {
2604
    background-position : -7px -95px;
2605
}
2606
2607
#social_networks #delicious {
2608
    background-position : -7px -66px;
2609
}
2610
2611
#social_networks #email {
2612
    background-position : -7px -126px;
2613
}
2614
2615
/* jQuery UI standard tabs */
2616
.ui-tabs-nav .ui-tabs-active a,
2617
.ui-tabs-nav a:hover,
2618
.ui-tabs-nav a:focus,
2619
.ui-tabs-nav a:active,
2620
.ui-tabs-nav span.a {
2621
    background: none repeat scroll 0 0 transparent;
2622
    outline: 0 none;
2623
}
2624
2625
.ui-widget,
2626
.ui-widget input,
2627
.ui-widget select,
2628
.ui-widget textarea,
2629
.ui-widget button {
2630
    font-family : inherit;
2631
    font-size : inherit;
2632
}
2633
2634
ul.ui-tabs-nav li {
2635
    list-style : none;
2636
}
2637
.ui-tabs.ui-widget-content {
2638
    background : transparent none;
2639
    border : 0;
2640
}
2641
2642
.ui-tabs .ui-tabs-panel {
2643
    border : 1px solid #D8D8D8;
2644
}
2645
.ui-tabs-nav.ui-widget-header {
2646
    border : 0;
2647
    background : none;
2648
}
2649
.ui-tabs .ui-tabs-nav li {
2650
    background: #F3F3F3 none;
2651
    border-color: #D8D8D8;
2652
    margin-right : .4em;
2653
}
2654
2655
.ui-tabs .ui-tabs-nav li.ui-tabs-active {
2656
    background-color : #FFF;
2657
    border : 1px solid #D8D8D8;
2658
    border-bottom: 0;
2659
}
2660
.ui-tabs .ui-tabs-nav li.ui-tabs-active a {
2661
    color : #000;
2662
    font-weight : bold;
2663
}
2664
2665
.ui-tabs .ui-tabs-nav li.ui-state-default.ui-state-hover {
2666
    background : #F3F3F3 none;
2667
}
2668
2669
.ui-tabs .ui-tabs-nav li.ui-tabs-active.ui-state-hover {
2670
    background : #FFF none;
2671
}
2672
2673
.ui-tabs .ui-state-default a,
2674
.ui-tabs .ui-state-default a:link,
2675
.ui-tabs .ui-state-default a:visited {
2676
    color: #006699;
2677
}
2678
2679
.ui-tabs .ui-state-hover a,
2680
.ui-tabs .ui-state-hover a:link,
2681
.ui-tabs .ui-state-hover a:visited {
2682
    color: #990033;
2683
}
2684
2685
.statictabs ul {
2686
    background: none repeat scroll 0 0 transparent;
2687
    border: 0 none;
2688
    margin: 0;
2689
    padding: 0.2em 0.2em 0;
2690
    border-bottom-right-radius: 4px;
2691
    border-bottom-left-radius: 4px;
2692
    border-top-right-radius: 4px;
2693
    border-top-left-radius: 4px;
2694
    color: #222222;
2695
    font-weight: bold;
2696
    font-size: 100%;
2697
    line-height: 1.3;
2698
    list-style: none outside none;
2699
    outline: 0 none;
2700
    text-decoration: none;
2701
}
2702
2703
.statictabs ul:after {
2704
    clear: both;
2705
}
2706
2707
.statictabs ul:before,
2708
.statictabs ul:after {
2709
    content: "";
2710
    display: table;
2711
}
2712
2713
.statictabs ul li {
2714
    background: none repeat scroll 0 0 #E6F0F2;
2715
    border: 1px solid #B9D8D9;
2716
    border-bottom: 0 none !important;
2717
    border-top-right-radius: 4px;
2718
    border-top-left-radius: 4px;
2719
    float: left;
2720
    list-style: none outside none;
2721
    margin-bottom: 0;
2722
    margin-right: 0.4em;
2723
    padding: 0;
2724
    position: relative;
2725
    white-space: nowrap;
2726
    top: 1px;
2727
    color: #555555;
2728
    font-weight: normal;
2729
2730
}
2731
2732
.statictabs ul li.active {
2733
    background-color: #FFFFFF;
2734
    color: #212121;
2735
    font-weight: normal;
2736
    padding-bottom: 1px;
2737
}
2738
2739
.statictabs ul li a {
2740
    color: #004D99;
2741
    cursor: pointer;
2742
    float: left;
2743
    padding: 0.5em 1em;
2744
    text-decoration: none;
2745
}
2746
2747
.statictabs ul li a:hover {
2748
    background-color : #EDF4F5;
2749
    border-top-right-radius: 4px;
2750
    border-top-left-radius: 4px;
2751
    color : #538200;
2752
}
2753
2754
.statictabs ul li.active a {
2755
    color: #000000;
2756
    font-weight: bold;
2757
    cursor: text;
2758
    background: none repeat scroll 0 0 transparent;
2759
    outline: 0 none;
2760
}
2761
2762
.statictabs .tabs-container {
2763
    border: 1px solid #B9D8D9;
2764
    background: none repeat scroll 0 0 transparent;
2765
    display: block;
2766
    padding: 1em 1.4em;
2767
    border-bottom-right-radius: 4px;
2768
    border-bottom-left-radius: 4px;
2769
    color: #222222;
2770
}
2771
2772
.authref {
2773
    font-style: normal;
2774
    text-indent: 4em;
2775
}
2776
2777
.seefrom, .seealso {
2778
    font-style: italic;
2779
    text-indent: 2em;
2780
}
2781
2782
.authstanza {
2783
    margin-top: 1em;
2784
}
2785
2786
.authstanzaheading {
2787
    font-weight: bold;
2788
}
2789
div.authorizedheading {
2790
    font-weight: bold;
2791
}
2792
.authstanza li {
2793
    margin-left: 0.5em;
2794
}
2795
.authres_notes, .authres_seealso, .authres_otherscript {
2796
  padding-top: 5px;
2797
}
2798
.authres_notes {
2799
  font-style: italic;
2800
}
2801
2802
#didyoumean {
2803
    background-color: #EEE;
2804
    border: 1px solid #E8E8E8;
2805
    margin: 0 0 0.5em;
2806
    text-align: left;
2807
    padding: 0.5em;
2808
    border-radius: 3px 3px 3px 3px;
2809
}
2810
2811
.suggestionlabel {
2812
    font-weight: bold;
2813
}
2814
2815
.searchsuggestion {
2816
    padding: 0.2em 0.5em;
2817
    white-space: nowrap;
2818
    display: inline-block;
2819
}
2820
2821
.authlink {
2822
    padding-left: 0.25em;
2823
}
2824
#hierarchies a {
2825
    font-weight: normal;
2826
    text-decoration: underline;
2827
    color: #069;
2828
}
2829
2830
#hierarchies a:hover {
2831
    color: #990033;
2832
}
2833
2834
#top-pages {
2835
    margin: 0 0 0.5em;
2836
}
2837
2838
/* jQuery UI Datepicker */
2839
.ui-datepicker table {width: 100%; font-size: .9em; border : 0; border-collapse: collapse; margin:0 0 .4em; }
2840
.ui-datepicker th { background : transparent none; padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
2841
2842
.ui-datepicker-trigger {
2843
    vertical-align: middle;
2844
    margin : 0 3px;
2845
}
2846
.ui-datepicker {
2847
    -moz-box-shadow: 1px 1px 3px 0 #666;
2848
    -webkit-box-shadow: 1px 1px 3px 0 #666;
2849
    box-shadow: 1px 1px 3px 0 #666;
2850
}
2851
2852
.contents {
2853
    width: 75%;
2854
}
2855
2856
2857
.contentblock {
2858
    position: relative;
2859
    margin-left: 2em;
2860
}
2861
2862
.contents .t:first-child:before {
2863
    content: "→ ";
2864
}
2865
2866
.contents .t:before {
2867
    content: "\A→ ";
2868
    white-space: pre;
2869
}
2870
2871
.contents .t {
2872
    font-weight: bold;
2873
    display: inline;
2874
}
2875
2876
.contents .r {
2877
    display: inline;
2878
}
2879
2880
body#opac-main #opacmainuserblockmobile {
2881
    display: none;
2882
}
2883
2884
.mobile_only {
2885
   display : none;
2886
}
2887
2888
/* different sizes for different tags in opac-tags.tt */
2889
.tagweight0 {
2890
    font-size: 12px;
2891
}
2892
2893
.tagweight1 {
2894
    font-size: 14px;
2895
}
2896
2897
.tagweight2 {
2898
    font-size: 16px;
2899
}
2900
2901
.tagweight3 {
2902
    font-size: 18px;
2903
}
2904
2905
.tagweight4 {
2906
    font-size: 20px;
2907
}
2908
2909
.tagweight5 {
2910
    font-size: 22px;
2911
}
2912
2913
.tagweight6 {
2914
    font-size: 24px;
2915
}
2916
2917
.tagweight7 {
2918
    font-size: 26px;
2919
}
2920
2921
.tagweight8 {
2922
    font-size: 28px;
2923
}
2924
2925
.tagweight9 {
2926
    font-size: 30px;
2927
}
2928
2929
#patronregistration {
2930
    background-color: #F7F7F7;
2931
    border : 1px solid #EAEAEA;
2932
    -moz-border-radius: 3px;
2933
    border-radius : 3px;
2934
    font-size : 90%;
2935
    margin : .7em 0;
2936
    padding : .5em;
2937
    text-align: center;
2938
}
2939
#patronregistration a {
2940
    display: block;
2941
}
2942
2943
video {
2944
    width: 480px;
2945
}
2946
2947
.review {
2948
    margin-bottom: 20px;
2949
}
2950
2951
#idreambooksreadometer {
2952
    float: right;
2953
}
2954
a.idreambooksrating {
2955
    font-size: 30px;
2956
    color: #29ADE4;
2957
    padding-left: 85px;
2958
    line-height: 30px;
2959
    text-decoration: none;
2960
}
2961
2962
.idreambookslegend {
2963
    font-size: small;
2964
}
2965
2966
a.reviewlink,a.reviewlink:visited {
2967
    text-decoration: none;
2968
    color: black;
2969
    font-weight: normal;
2970
}
2971
2972
.idreambookssummary a {
2973
    color: #707070;
2974
    text-decoration: none;
2975
}
2976
2977
.idreambookssummary img, .idbresult img {
2978
    vertical-align: middle;
2979
}
2980
2981
.idbresult {
2982
    color: #29ADE4;
2983
    text-align: center;
2984
    margin: 0.5em;
2985
    padding: 0.5em;
2986
}
2987
2988
.idbresult a, .idbresult a:visited {
2989
    text-decoration: none;
2990
    color: #29ADE4;
2991
}
2992
2993
.idbresult img {
2994
    padding-right: 6px;
2995
}
2996
2997
.highlight-row-results {
2998
    font-size: 120%;
2999
}
3000
3001
.highlight-row-detail {
3002
    font-weight: bold;
3003
}
3004
3005
.branch-info-tooltip {
3006
    display: none;
3007
}
3008
.lang {
3009
float:left;
3010
padding: 0.1em 0;
3011
}
3012
3013
.thumbnail-shelfbrowser span {
3014
    margin: 0px auto;
3015
}
3016
3017
.sorting_asc {
3018
    padding-right: 19px;
3019
    background: url("../../images/asc.gif") no-repeat scroll right center #EEEEEE;
3020
}
3021
.sorting_desc {
3022
    padding-right: 19px;
3023
    background: url("../../images/desc.gif") no-repeat scroll right center #EEEEEE;
3024
}
3025
.sorting {
3026
    padding-right: 19px;
3027
    background: url("../../images/ascdesc.gif") no-repeat scroll right center #EEEEEE;
3028
}
3029
.nosort,
3030
.nosort.sorting_asc,
3031
.nosort.sorting_desc,
3032
.nosort.sorting {
3033
    padding-right: 19px;
3034
    background: #EEEEEE none;
3035
}
3036
3037
#overdrive-results {
3038
    font-weight: bold;
3039
    padding-left: 1em;
3040
}
3041
3042
.throbber {
3043
    vertical-align: middle;
3044
}
3045
3046
#overdrive-results-list .star-rating-control {
3047
    display: block;
3048
    overflow: auto;
3049
}
3050
3051
.holdrow {
3052
    clear : both;
3053
    padding:1em;
3054
    border-bottom:1px solid #CCC;
3055
    margin-bottom:.5em;
3056
}
3057
.holdrow fieldset {
3058
    border : 0;
3059
    margin : 0;
3060
    float: none;
3061
}
3062
.hold-options {
3063
    clear : both;
3064
}
3065
.toggle-hold-options {
3066
    background-color: #eee;
3067
    clear : both;
3068
    display : block;
3069
    font-weight : bold;
3070
    margin: 1em 0;
3071
    padding: .5em;
3072
}
3073
.copiesrow {
3074
    clear : both;
3075
}
3076
3077
#transl1 {
3078
    width: 35%;
3079
    font-size: 111%;
3080
}
(-)a/koha-tmpl/opac-tmpl/prog/en/css/persona-buttons.css (-228 lines)
Lines 1-228 Link Here
1
/* Link body */
2
.persona-button{
3
  color: #fff;
4
  display: inline-block;
5
  font-size: 14px;
6
  font-family: Helvetica, Arial, sans-serif;
7
  font-weight: bold;
8
  line-height: 1.1;
9
  overflow: hidden;
10
  position: relative;
11
  text-decoration: none;
12
  text-shadow: 0 1px rgba(0,0,0,0.5), 0 0 2px rgba(0,0,0,0.2);
13
14
  background: #297dc3;
15
  background: -moz-linear-gradient(top, #43a6e2, #287cc2);
16
  background: -ms-linear-gradient(top, #43a6e2, #287cc2);
17
  background: -o-linear-gradient(top, #43a6e2, #287cc2);
18
  background: -webkit-linear-gradient(top, #43a6e2, #287cc2);
19
  background: linear-gradient(top, #43a6e2, #287cc2);
20
21
  -moz-border-radius:   3px;
22
  -ms-border-radius:     3px;
23
  -o-border-radius:     3px;
24
  -webkit-border-radius:   3px;
25
  border-radius:       3px;
26
27
  -moz-box-shadow:   0 1px 0 rgba(0,0,0,0.2);
28
  -ms-box-shadow:   0 1px 0 rgba(0,0,0,0.2);
29
  -o-box-shadow:     0 1px 0 rgba(0,0,0,0.2);
30
  -webkit-box-shadow: 0 1px 0 rgba(0,0,0,0.2);
31
  box-shadow:     0 1px 0 rgba(0,0,0,0.2);
32
}
33
34
.persona-button:hover{
35
  background: #21669f;
36
  background: -moz-linear-gradient(top, #3788b9, #21669f);
37
  background: -ms-linear-gradient(top, #3788b9, #21669f);
38
  background: -o-linear-gradient(top, #3788b9, #21669f);
39
  background: -webkit-linear-gradient(top, #3788b9, #21669f);
40
  background: linear-gradient(top, #3788b9, #21669f);
41
}
42
43
.persona-button:active, .persona-button:focus{
44
  top: 1px;
45
  -moz-box-shadow:   none;
46
  -ms-box-shadow:   none;
47
  -o-box-shadow:     none;
48
  -webkit-box-shadow: none;
49
  box-shadow:     none;
50
}
51
52
.persona-button span{
53
  display: inline-block;
54
  padding: 5px 10px 5px 40px;
55
}
56
57
/* Icon */
58
.persona-button span:after{
59
  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAPCAYAAAA/I0V3AAAA4klEQVR42o2RWaqEMBRE3YaCiDjPwQGcd9CrysLv4wTyoLFD90dxqbp1EgdPRB7Kskznea6Zn/aPoKoqUUrJOI5m4l2QBfSyLHKep1zXZSae3An1fS/7vst931bGkzuhaZrsLVbGkzuheZ7lOI6HyJ2QUkqv6yrbtv0LT+6E7G0UrfBfP3lZlpoXH4ZBmHgn5Pv+KwxDfqp0XQdgJp6c/RsUBIGOokiSJDE/s21bACbe5Ozp0TdAHMdSFIXUdS1N01C2wpObPT36HifwCJzI0iX29Oh7XP0E3CB9L01TzM+i/wePv4ZE5RtAngAAAABJRU5ErkJggg==) 10px center no-repeat;
60
  content: '';
61
  display: block;
62
  width: 31px;
63
64
  position: absolute;
65
  bottom: 0;
66
  left: -3px;
67
  top: 0;
68
  z-index: 10;
69
}
70
71
/*  Icon background */
72
.persona-button span:before{
73
  content: '';
74
  display: block;
75
  height: 100%;
76
  width: 20px;
77
78
  position: absolute;
79
  bottom: 0;
80
  left: 0;
81
  top: 0;
82
  z-index: 1;
83
84
  background: #42a9dd;
85
  background: -moz-linear-gradient(top, #50b8e8, #3095ce);
86
  background: -ms-linear-gradient(top, #50b8e8, #3095ce);
87
  background: -o-linear-gradient(top, #50b8e8, #3095ce);
88
  background: -webkit-linear-gradient(top, #50b8e8, #3095ce);
89
  background: linear-gradient(top, #50b8e8, #3095ce);
90
91
  -moz-border-radius:   3px 0 0 3px;
92
  -ms-border-radius:     3px 0 0 3px;
93
  -o-border-radius:     3px 0 0 3px;
94
  -webkit-border-radius:   3px 0 0 3px;
95
  border-radius:       3px 0 0 3px;
96
}
97
98
/* Triangle */
99
.persona-button:before{
100
  background: #42a9dd;
101
  content: '';
102
  display: block;
103
  height: 26px;
104
  width: 26px;
105
106
  position: absolute;
107
  left: 2px;
108
  top: 50%;
109
  margin-top: -13px;
110
  z-index: 0;
111
112
  background: -moz-linear-gradient(-45deg, #50b8e8, #3095ce);
113
  background: -ms-linear-gradient(-45deg, #50b8e8, #3095ce);
114
  background: -o-linear-gradient(-45deg, #50b8e8, #3095ce);
115
  background: -webkit-linear-gradient(-45deg, #50b8e8, #3095ce);
116
  background: linear-gradient(-45deg, #3095ce, #50b8e8); /* flipped for updated spec */
117
118
  -moz-box-shadow:   1px -1px 1px rgba(0,0,0,0.1);
119
  -ms-box-shadow:   1px -1px 1px rgba(0,0,0,0.1);
120
  -o-box-shadow:     1px -1px 1px rgba(0,0,0,0.1);
121
  -webkit-box-shadow: 1px -1px 1px rgba(0,0,0,0.1);
122
  box-shadow:     1px -1px 1px rgba(0,0,0,0.1);
123
124
  -moz-transform:   rotate(45deg);
125
  -ms-transform:     rotate(45deg);
126
  -o-transform:     rotate(45deg);
127
  -webkit-transform:   rotate(45deg);
128
  transform:       rotate(45deg);
129
}
130
131
/* Inset shadow (required here because the icon background clips it when on the `a` element) */
132
.persona-button:after{
133
  content: '';
134
  display: block;
135
  height: 100%;
136
  width: 100%;
137
138
  position: absolute;
139
  left: 0;
140
  top: 0;
141
  bottom: 0;
142
  right: 0;
143
  z-index: 10;
144
145
  -moz-border-radius:   3px;
146
  -ms-border-radius:     3px;
147
  -o-border-radius:     3px;
148
  -webkit-border-radius:   3px;
149
  border-radius:       3px;
150
151
  -moz-box-shadow:   inset 0 -1px 0 rgba(0,0,0,0.3);
152
  -ms-box-shadow:   inset 0 -1px 0 rgba(0,0,0,0.3);
153
  -o-box-shadow:     inset 0 -1px 0 rgba(0,0,0,0.3);
154
  -webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,0.3);
155
  box-shadow:     inset 0 -1px 0 rgba(0,0,0,0.3);
156
}
157
158
/* ========================================================
159
 *    Dark button
160
 * ===================================================== */
161
.persona-button.dark{
162
  background: #3c3c3c;
163
  background: -moz-linear-gradient(top, #606060, #3c3c3c);
164
  background: -ms-linear-gradient(top, #606060, #3c3c3c);
165
  background: -o-linear-gradient(top, #606060, #3c3c3c);
166
  background: -webkit-linear-gradient(top, #606060, #3c3c3c);
167
  background: linear-gradient(top, #606060, #3c3c3c);
168
}
169
.persona-button.dark:hover{
170
  background: #2d2d2d;
171
  background: -moz-linear-gradient(top, #484848, #2d2d2d);
172
  background: -ms-linear-gradient(top, #484848, #2d2d2d);
173
  background: -o-linear-gradient(top, #484848, #2d2d2d);
174
  background: -webkit-linear-gradient(top, #484848, #2d2d2d);
175
  background: linear-gradient(top, #484848, #2d2d2d);
176
}
177
.persona-button.dark span:before{ /* Icon BG */
178
  background: #d34f2d;
179
  background: -moz-linear-gradient(top, #ebac45, #d34f2d);
180
  background: -ms-linear-gradient(top, #ebac45, #d34f2d);
181
  background: -o-linear-gradient(top, #ebac45, #d34f2d);
182
  background: -webkit-linear-gradient(top, #ebac45, #d34f2d);
183
  background: linear-gradient(top, #ebac45, #d34f2d);
184
}
185
.persona-button.dark:before{ /* Triangle */
186
  background: #d34f2d;
187
  background: -moz-linear-gradient(-45deg, #ebac45, #d34f2d);
188
  background: -ms-linear-gradient(-45deg, #ebac45, #d34f2d);
189
  background: -o-linear-gradient(-45deg, #ebac45, #d34f2d);
190
  background: -webkit-linear-gradient(-45deg, #ebac45, #d34f2d);
191
  background: linear-gradient(-45deg, #d34f2d, #ebac45); /* flipped for updated spec */
192
}
193
194
/* ========================================================
195
 *    Orange button
196
 * ===================================================== */
197
.persona-button.orange{
198
  background: #ee731a;
199
  background: -moz-linear-gradient(top, #ee731a, #d03116);
200
  background: -ms-linear-gradient(top, #ee731a, #d03116);
201
  background: -o-linear-gradient(top, #ee731a, #d03116);
202
  background: -webkit-linear-gradient(top, #ee731a, #d03116);
203
  background: linear-gradient(top, #ee731a, #d03116);
204
}
205
.persona-button.orange:hover{
206
  background: #cb6216;
207
  background: -moz-linear-gradient(top, #cb6216, #b12a13);
208
  background: -ms-linear-gradient(top, #cb6216, #b12a13);
209
  background: -o-linear-gradient(top, #cb6216, #b12a13);
210
  background: -webkit-linear-gradient(top, #cb6216, #b12a13);
211
  background: linear-gradient(top, #cb6216, #b12a13);
212
}
213
.persona-button.orange span:before{ /* Icon BG */
214
  background: #e84a21;
215
  background: -moz-linear-gradient(top, #f7ad27, #e84a21);
216
  background: -ms-linear-gradient(top, #f7ad27, #e84a21);
217
  background: -o-linear-gradient(top, #f7ad27, #e84a21);
218
  background: -webkit-linear-gradient(top, #f7ad27, #e84a21);
219
  background: linear-gradient(top, #f7ad27, #e84a21);
220
}
221
.persona-button.orange:before{ /* Triangle */
222
  background: #e84a21;
223
  background: -moz-linear-gradient(-45deg, #f7ad27, #e84a21);
224
  background: -ms-linear-gradient(-45deg, #f7ad27, #e84a21);
225
  background: -o-linear-gradient(-45deg, #f7ad27, #e84a21);
226
  background: -webkit-linear-gradient(-45deg, #f7ad27, #e84a21);
227
  background: linear-gradient(-45deg, #e84a21, #f7ad27); /* flipped for updated spec */
228
}
(-)a/koha-tmpl/opac-tmpl/prog/en/css/print.css (-227 lines)
Lines 1-227 Link Here
1
a:link {
2
	color : #000066;
3
	text-decoration: none;
4
}
5
6
a:visited {
7
	color : #000066;
8
	text-decoration: none;
9
}
10
11
a:hover {
12
	color : #993300;
13
	text-decoration: none;
14
}
15
16
body {
17
	background-color : #FFF;
18
	color : #333333;
19
	font-family : arial, geneva, sans-serif;
20
	font-size : 14px;
21
	margin : 0px 0px 0px 0px;
22
    word-wrap : break-word;
23
}
24
25
caption {
26
	color : #000066;
27
	font-size : 18px;
28
	font-weight : bold;
29
	margin-top : 5px;
30
	text-align : left;
31
}
32
33
div.table {
34
	width : 100%;
35
}
36
37
form {
38
	margin : 0px;
39
	padding : 0px;
40
}
41
42
h1
43
	{
44
	color : #000066;
45
	font-size : 22px;
46
	font-weight : bold;
47
	margin-bottom : 3px;
48
	margin-top : 3px;
49
}
50
51
h2 {
52
	color : #000066;
53
	font-size : 20px;
54
	font-weight : bold;
55
	margin-bottom : 3px;
56
	margin-top : 3px;
57
}
58
59
h3 {
60
	color : #000066;
61
	font-size : 18px;
62
	font-weight : bold;
63
	margin-bottom : 3px;
64
	margin-top : 3px;
65
}
66
67
h4 {
68
	color : #000066;
69
	font-size : 16px;
70
	font-weight : bold;
71
	margin-bottom : 3px;
72
	margin-top : 3px;
73
}
74
75
h5 {
76
	color : #000066;
77
	font-size : 15px;
78
	font-weight : bold;
79
	margin-bottom : 1px;
80
	margin-top : 1px;
81
}
82
83
h6 {
84
	color : #000066;
85
	font-size : 14px;
86
	font-weight : bold;
87
	margin-bottom : 1px;
88
	margin-top : 1px;
89
}
90
91
p {
92
	margin-top : 0px;
93
}
94
95
table {
96
	background-color : #FFFFFF;
97
	border-bottom : 0px solid #CCCCCC;
98
	border-collapse : collapse;
99
	border-left : 0px solid #CCCCCC;
100
	margin : 3px 0px 5px 0px;
101
	padding : 0px;
102
	width : 99%;
103
}
104
105
td {
106
	background-color : #FFF;
107
	border-bottom : 1px solid #CCCCCC;
108
	border-right : 1px solid #CCCCCC;
109
	padding : 5px 5px 5px 5px;
110
	vertical-align : top;
111
}
112
113
td:last-child {
114
	background-color : #FFF;
115
	border-bottom : 1px solid #CCCCCC;
116
	border-right : 0px solid #CCCCCC;
117
	padding : 5px 5px 5px 5px;
118
	vertical-align : top;
119
}
120
121
th {
122
	background-color : #E9E9E9;
123
	border-bottom : 1px solid #CCCCCC;
124
	border-right : 1px solid #CCCCCC;
125
	font-weight : bold;
126
	padding : 5px 5px 5px 5px;
127
}
128
129
th:last-child {
130
	background-color : #E9E9E9;
131
	border-bottom : 1px solid #CCCCCC;
132
	border-right : 0px solid #CCCCCC;
133
	font-weight : bold;
134
	padding : 5px 5px 5px 5px;
135
}
136
137
tr.highlight {
138
	background-color: #e9e9e9;
139
}
140
141
body#basket tr.highlight {
142
	background-color : transparent;
143
}
144
145
body#basket a {
146
	font-weight : bold;
147
}
148
149
body#basket table {
150
	border-top : 1px solid #EEE;
151
	border-left : 1px solid #EEE;
152
}
153
body#basket td,
154
body#basket th {
155
	background-color : transparent;
156
	padding : 2px;
157
}
158
159
body#basket th {
160
	background-color : #EEE;
161
}
162
163
body#basket th,
164
body#basket th[scope=col] {
165
	text-align : center;
166
	vertical-align : middle;
167
}
168
169
body#basket th[scope=row] {
170
	font-size : 89%;
171
	text-align : right;
172
	vertical-align : top;
173
	width : 10%;
174
}
175
176
body#basket p {
177
	font-size : 85%;
178
	margin : .2em 0;
179
	text-indent : .5em;
180
}
181
182
.error {
183
	font-weight: bold;
184
}
185
186
.ex {
187
	font-family : "Courier New", Courier, monospace;
188
}
189
.inline {
190
	display : inline;
191
}
192
193
.screen {
194
	display : none;
195
}
196
197
#bookcover {
198
	float:left;
199
	margin:0pt;
200
	padding:0pt;
201
}
202
203
#members,#opac-main-search,#opac-user-views .ui-tabs-nav,input,h2 span.hint,td.resultscontrol,.pages,.suggestion,.views,#action,#export,#bibliodescriptions .ui-tabs-nav,#addshelf,fieldset.action, .list-actions, .ft, #facetcontainer,.results_summary.actions,.koha_url,.yui-b {
204
	display : none;
205
}
206
207
#userresults {
208
    position : absolute;
209
    right : 0px;
210
    word-wrap : break-word;
211
	display : block;
212
}
213
214
div#userupdate input,div#userupdate textarea {
215
	display : inline;
216
	border : 0;
217
}
218
219
#yui-main,
220
#yui-main .yui-b,
221
.yui-t1 #yui-main .yui-b {
222
    display : block !important;
223
    margin : 0 !important;
224
    padding : 0 !important;
225
    width : auto !important;
226
    float : none !important;
227
}
(-)a/koha-tmpl/opac-tmpl/prog/en/css/right-to-left.css (-237 lines)
Lines 1-237 Link Here
1
/* Adjust text directions */
2
body,
3
body #doc,
4
#doc2,
5
#doc3,
6
#doc4,
7
.yui-t1,
8
.yui-t2,
9
.yui-t3,
10
.yui-t4,
11
.yui-t5,
12
.yui-t6,
13
.yui-t7
14
{
15
   text-align:right;
16
   direction: rtl;
17
}
18
19
caption,
20
table#marc th
21
{
22
   text-align: right;
23
}
24
25
/* Swap floats */
26
27
28
body#advsearch #cartmenulink,
29
body#advsearch #listsmenulink,
30
#renewcontrols,
31
.commentline .avatar,
32
.resort,
33
.yui-t1 #yui-main,
34
.yui-t2 #yui-main,
35
.yui-t3 #yui-main
36
{
37
   float: left;
38
}
39
.ui-tabs .ui-tabs-nav li,
40
div.lang,
41
fieldset.rows label,
42
fieldset.rows span.label,
43
#auth,
44
#bookcover,
45
.left,
46
.nav_results ul.pg_menu li,
47
.ui-tabs-nav li,
48
.yui-g div.first,
49
.yui-gc div.first,
50
.yui-gc div.first div.first,
51
.yui-gd div.first,
52
.yui-ge div.first,
53
.yui-gf div.first,
54
.yui-t1 .yui-b
55
{
56
   float: right;
57
}
58
59
h1#libraryname
60
{
61
   float: right !important;
62
}
63
64
#fluid-offset
65
{
66
   float: none;
67
}
68
69
/* Adjust margins, padding, alignment and table-element widths */
70
71
div#menu li a
72
{
73
   margin-left: -1px;
74
}
75
76
.yui-t1 #yui-main,
77
.yui-t1 #yui-main .yui-b,
78
.yui-t2 #yui-main,
79
.yui-t3 #yui-main
80
{
81
   margin-left: 0;
82
}
83
84
h1,
85
h2,
86
h3,
87
h4,
88
h5,
89
h6
90
{
91
   margin-left: 0.5em;
92
}
93
94
.results_summary .label
95
{
96
   margin-left: 0.5em;
97
}
98
99
100
ul.pg_menu li,
101
.author,
102
.nav_results
103
{
104
   margin-right: 0.5em;
105
}
106
107
#usershowreviews
108
{
109
   margin-right: 15em;
110
}
111
112
#moresearches
113
{
114
   margin: .6em 10em .3em 0;
115
}
116
117
#menu ul
118
{
119
   padding-left:0;
120
}
121
122
#custom-doc,
123
#opac-main-search
124
{
125
   padding-right: 2em;
126
}
127
128
.nav_results .l_Results a
129
{
130
   padding: 8px 3px 8px 28px;
131
}
132
133
body#advsearch #moresearches
134
{
135
   clear:none;
136
}
137
138
span.koha_url
139
{
140
   left: 2em;
141
   right:auto;
142
}
143
144
.yui-u first
145
{
146
   right: 15em;
147
}
148
149
table#marc td:first-child
150
{
151
   width: 15em;
152
}
153
154
.yui-t1 #yui-main,
155
.yui-t2 #yui-main,
156
.yui-t3 #yui-main {
157
   width: 80%;
158
}
159
160
/* Borders */
161
162
div#menu {
163
   border-right: 0;
164
   border-left: 1px solid #979797;
165
}
166
167
#menu ul li.active a {
168
   border-left: 0;
169
   border-right: 1px solid #979797;
170
}
171
172
/* flip over breadcrumb image */
173
174
h3 img {
175
        -moz-transform: scaleX(-1);
176
        -o-transform: scaleX(-1);
177
        -webkit-transform: scaleX(-1);
178
        transform: scaleX(-1);
179
        filter: FlipH;
180
        -ms-filter: "FlipH";
181
}
182
183
184
#moresearches {
185
    clear: right;
186
}
187
188
#cartmenulink, #listsmenulink {
189
    float: right;
190
    margin-right: 1em;
191
    margin-left: 0em;
192
}
193
194
#listsmenulink {
195
196
    background-image: url("../../images/sprite.png"), -moz-linear-gradient(center top , rgb(215, 229, 255) 0%, rgb(177, 203, 255) 50%, rgb(159, 191, 255) 100%);
197
198
    background-position: -5px -287px, left top;
199
200
    padding-left: 20px;
201
}
202
#listsmenulink:hover {
203
    background-position: -5px -287px, left top;
204
}
205
206
#cartmenulink {
207
    padding-right: 30px;
208
    background-position: 20px -256px, left top;
209
    padding-left: 13px;
210
}
211
#cartmenulink:hover {
212
    background-position: 20px -256px, left top;
213
}
214
.lang {
215
float:right;
216
217
}
218
.morelang,
219
li.more {
220
float:right;
221
}
222
223
ul#i18nMenu li {
224
    border-right: 1px solid rgb(204, 204, 204);
225
}
226
div.rating-cancel, div.star-rating {
227
    float: right;
228
}
229
230
231
#shelfbrowser #browser_previous {
232
    background-position: -9px -1051px;
233
}
234
235
#shelfbrowser #browser_next {
236
    background-position: -9px -1001px;
237
}
(-)a/koha-tmpl/opac-tmpl/prog/en/css/sco.css (-353 lines)
Lines 1-353 Link Here
1
@import url("/opac-tmpl/lib/yui/reset-fonts-grids.css");
2
@import url("/opac-tmpl/lib/yui/skin.css");
3
4
a {
5
	font-weight : bold;
6
}
7
8
a, a:visited {
9
	color : #006699;
10
}
11
12
a:hover,input.editshelf:hover,a.editshelf:hover,input.deleteshelf:hover {
13
	color : #990033;
14
}
15
16
body {
17
	background-color : white;
18
	text-align : left;
19
	padding : 0 0 2.5em 0;
20
}
21
22
caption {
23
	font-size : 110%;
24
	text-align : left;
25
	font-weight : bold;
26
}
27
28
fieldset {
29
	background-color: #FFF;
30
	border : 2px solid #EEEEEE;
31
	margin : 1em 1em 1em 0;
32
	padding : 1em;
33
}
34
35
h1,h2,h3,h4,h5,h6 {
36
	font-weight : bold;
37
	margin : .5em 0;
38
}
39
40
h1 {
41
	font-size : 138.5%;
42
}
43
44
h2 {
45
	font-size : 134%;
46
}
47
48
h3 {
49
	font-size : 123.1%;
50
}
51
52
h4 {
53
	font-size : 116%;
54
}
55
56
h5 {
57
	font-size : 108%;
58
}
59
60
h6 {
61
	font-size : 100%;
62
}
63
64
input[type=submit],
65
input[type=button],
66
input[type=reset],
67
fieldset.brief input[type=submit],
68
fieldset.brief input[type=button],
69
fieldset.brief input[type=reset]
70
{
71
	background: #f4f9fc; /* Old browsers */
72
	background: -moz-linear-gradient(top, #f4f9fc 0%, #dfeefa 4%, #bfd5ea 93%, #a1c4e2 97%, #b8d0e6 100%); /* FF3.6+ */
73
	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f4f9fc), color-stop(4%,#dfeefa), color-stop(93%,#bfd5ea), color-stop(97%,#a1c4e2), color-stop(100%,#b8d0e6)); /* Chrome,Safari4+ */
74
	background: -webkit-linear-gradient(top, #f4f9fc 0%,#dfeefa 4%,#bfd5ea 93%,#a1c4e2 97%,#b8d0e6 100%); /* Chrome10+,Safari5.1+ */
75
	background: -o-linear-gradient(top, #f4f9fc 0%,#dfeefa 4%,#bfd5ea 93%,#a1c4e2 97%,#b8d0e6 100%); /* Opera11.10+ */
76
	background: -ms-linear-gradient(top, #f4f9fc 0%,#dfeefa 4%,#bfd5ea 93%,#a1c4e2 97%,#b8d0e6 100%); /* IE10+ */
77
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f9fc', endColorstr='#b8d0e6',GradientType=0 ); /* IE6-9 */
78
	background: linear-gradient(top, #f4f9fc 0%,#dfeefa 4%,#bfd5ea 93%,#a1c4e2 97%,#b8d0e6 100%); /* W3C */
79
	border-top: 1px solid #cccccc;
80
	border-left: 1px solid #cccccc;
81
	border-right: 1px solid #eeeeee;
82
	border-bottom: 1px solid #eeeeee;
83
	color : #333;
84
	font-size : 93%;
85
	font-weight : bold;
86
	padding : 4px;
87
}
88
89
input[type=submit]:active, input[type=button]:active, input[type=reset]:active {
90
	border: 1px inset #666666;
91
	float : none;
92
}
93
.dialog {
94
  border: 1px solid #bcbcbc;
95
	padding : .5em;
96
	margin : 1em auto;
97
  width: 65%;
98
  }
99
  
100
.dialog  h2, .dialog h3, .dialog h4 {
101
  	margin : auto;
102
	text-align : center;
103
  }
104
 
105
div.alert {
106
	background: #fef8d3; /* Old browsers */
107
	background: -moz-linear-gradient(top, #fef8d3 0%, #ffec91 9%, #ffed87 89%, #f9dc00 100%); /* FF3.6+ */
108
	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fef8d3), color-stop(9%,#ffec91), color-stop(89%,#ffed87), color-stop(100%,#f9dc00)); /* Chrome,Safari4+ */
109
	background: -webkit-linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* Chrome10+,Safari5.1+ */
110
	background: -o-linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* Opera11.10+ */
111
	background: -ms-linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* IE10+ */
112
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fef8d3', endColorstr='#f9dc00',GradientType=0 ); /* IE6-9 */
113
	background: linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* W3C */
114
	text-align : center;
115
}
116
117
div.alert strong {
118
	color : #900;
119
}
120
121
div.message {
122
	background: #ffffff; /* Old browsers */
123
	background: -moz-linear-gradient(top, #ffffff 0%, #f4f6fa 2%, #eaeef5 23%, #e8edf6 94%, #cddbf2 100%); /* FF3.6+ */
124
	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(2%,#f4f6fa), color-stop(23%,#eaeef5), color-stop(94%,#e8edf6), color-stop(100%,#cddbf2)); /* Chrome,Safari4+ */
125
	background: -webkit-linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* Chrome10+,Safari5.1+ */
126
	background: -o-linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* Opera11.10+ */
127
	background: -ms-linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* IE10+ */
128
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#cddbf2',GradientType=0 ); /* IE6-9 */
129
	background: linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* W3C */
130
	border : 1px solid #bcbcbc;
131
	width : 55%;
132
}
133
134
.dialog input {
135
 	background : #FFF none;
136
 	border : 1px solid #bcbcbc;
137
	margin : .4em;
138
	padding : .4em;
139
 }
140
141
 
142
.dialog input.back {
143
    background : #FFF url(/opac-tmpl/lib/famfamfam/silk/arrow_left.png) no-repeat 4px center;
144
    border: 1px solid #BCBCBC;
145
	padding : .4em .4em .4em 25px;	
146
 }
147
 
148
.dialog input.return {
149
    background : #FFF url(/opac-tmpl/lib/famfamfam/silk/book_previous.png) no-repeat 4px center;
150
	padding : .4em .4em .4em 25px;	
151
 }
152
 
153
.dialog input.renew {
154
    background : #FFF url(/opac-tmpl/lib/famfamfam/silk/arrow_refresh.png) no-repeat 4px center;
155
	padding : .4em .4em .4em 25px;	
156
 }
157
 
158
.dialog input.cancel {
159
    background : #FFF url(/opac-tmpl/lib/famfamfam/silk/cancel.png) no-repeat 4px center;
160
	padding : .4em .4em .4em 25px;	
161
 }
162
163
input.finish {
164
    background : #dbe7ff url(/opac-tmpl/lib/famfamfam/silk/stop.png) no-repeat 4px center;
165
	border : 1px outset #666;
166
	padding : .2em .2em .2em 25px;
167
}
168
 
169
table {
170
	background-color: #FFF;
171
	border-collapse : collapse;
172
	margin : 1em 0;
173
	border-right : 1px solid #dddddd;
174
	border-top : 1px solid #dddddd;
175
}
176
177
td,th {
178
	background-color: #FFF;
179
	border-left : 1px solid #dddddd;
180
	border-bottom : 1px solid #dddddd;
181
	padding : 3px 3px;
182
}
183
184
th {
185
	background-color:#EEE;
186
	font-weight : bold;
187
	padding : 2px 23px;
188
	text-align : center;
189
}
190
191
tr.highlight td, tr.highlight th, tr.odd td {
192
	background-color : #F3F3F3;
193
   border-top : 1px solid #DDDDDD;
194
   border-bottom : 1px solid #DDDDDD;
195
}
196
197
tr.even td, tr.even.highlight td {
198
	background-color: #FFF;
199
}
200
201
p {
202
	margin: .7em 0;
203
}
204
205
strong {
206
	font-weight : bold;
207
}
208
209
em {
210
	font-style : italic;
211
}
212
#borrowerdetails {
213
	margin-top : 1em;
214
}
215
#barcode,
216
#patronid {
217
	font-size : 125%;
218
	padding-bottom : 3px;
219
}
220
input.focus {
221
	background-color : #FFC;
222
	border : 2px inset #336699;
223
}
224
#checkouthelp {
225
    background : #FFF url("/opac-tmpl/lib/famfamfam/silk/help.png") no-repeat 4px center;
226
	padding : 3px 3px 3px 26px;
227
	position : absolute;
228
	top : 0;
229
	right : 0;
230
}
231
div.button {
232
	float : left;
233
	margin-top : 2em;
234
	padding : .4em 0;	
235
}
236
div.button a:link,
237
div.button a:visited,
238
div.button a:hover,
239
div.button a:active {
240
    background : #FFF url(/opac-tmpl/lib/famfamfam/silk/book_previous.png) no-repeat 4px center;
241
	border : 1px outset #666;
242
	color : #000;
243
	padding : .4em .4em .4em 25px;	
244
	text-decoration : none;
245
}
246
div.button a:active {
247
	border : 1px inset #666;
248
}
249
250
div.koha_url {
251
    border-top: none !important;
252
}
253
span.koha_url {
254
    position: absolute;
255
    right: 0;
256
}
257
a.koha_url {
258
    text-decoration: none;
259
    color: #666666;
260
}
261
262
div#changelanguage{
263
    background-color: #fff;
264
    border-top: 1px solid #CCC;
265
    color : #666;
266
    font-size : 85%;
267
    padding : 1em;
268
    margin-top : 2em;
269
 }
270
271
div#changelanguage a {
272
    font-weight : normal;
273
    padding : .5em 0;
274
}
275
276
div#changelanguage li.yuimenuitem {
277
    font-size: 120%;
278
    font-weight: normal;
279
    margin: 0;
280
    padding: 0 1em;
281
}
282
div#changelanguage li.yuimenuitem a.yuimenuitemlabel {
283
    padding: 0;
284
}
285
286
ul#i18nMenu {
287
    margin : 0;
288
    padding : .2em 0;
289
 }
290
291
ul#i18nMenu li {
292
    border-left : 1px solid #CCC;
293
    display : inline;
294
    list-style : none;
295
    padding : 0 .4em;
296
 }
297
298
ul#i18nMenu li:first-child {
299
    border-left : 0;
300
 }
301
302
ul#i18nMenu li ul li {
303
    border : 0;
304
    display : block;
305
    padding : 0;
306
 }
307
308
309
ul#i18nMenu li.more a {
310
    background-image : url("../../images/sprite.png");
311
    background-position : 37px -940px;
312
    background-repeat:no-repeat;
313
    padding-right: 1.3em;
314
}
315
316
ul#i18nMenu li.more ul li a {
317
    background-image : none;
318
    padding: 0 1.3em;
319
}
320
321
span.lang{
322
    float:left;
323
    border-right : 1px solid black;
324
    padding : 0 .5em;
325
}
326
327
div.ft {
328
	clear : both;
329
}
330
331
.inline {
332
    display: inline;
333
}
334
335
.sorting_asc {
336
    padding-right: 19px;
337
    background: url("../../images/asc.gif") no-repeat scroll right center #EEEEEE;
338
}
339
.sorting_desc {
340
    padding-right: 19px;
341
    background: url("../../images/desc.gif") no-repeat scroll right center #EEEEEE;
342
}
343
.sorting {
344
    padding-right: 19px;
345
    background: url("../../images/ascdesc.gif") no-repeat scroll right center #EEEEEE;
346
}
347
.nosort,
348
.nosort.sorting_asc,
349
.nosort.sorting_desc,
350
.nosort.sorting {
351
    padding-right: 19px;
352
    background: #EEEEEE none;
353
}
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/authorities-search-results.inc (-141 lines)
Lines 1-141 Link Here
1
[% BLOCK showreference %]
2
[%#
3
    Parameters:
4
    heading: the heading itself
5
    linkType: currently 'seefrom' or 'seealso', controls the label for the entry
6
    type:
7
    authid: if it is a linked authority, its authid
8
%]
9
    [% SET authidurl = '/cgi-bin/koha/opac-authoritiesdetail.pl?authid=' %]
10
    [% SET searchurl = '/cgi-bin/koha/opac-authorities-home.pl?op=do_search&type=opac&operator=contains&marclist=mainentry&and_or=and&orderby=HeadingAsc&value=' %]
11
    [% IF marcflavour == 'UNIMARC' %]
12
        [% SWITCH type %]
13
        [% CASE 'broader' %]
14
            <span class="BT">BT: [% heading | html %]</span>
15
        [% CASE 'narrower' %]
16
            <span class="NT">NT: [% heading | html %]</span>
17
        [% CASE 'seefrom' %]
18
            <span class="UF">UF: [% heading | html %]</span>
19
        [% CASE 'seealso' %]
20
            <span class="RT">RT: [% heading | html %]</span>
21
        [% END %]
22
    [% ELSE %]
23
        <span class="heading">
24
        [% IF ( linkType=='seealso' ) %]
25
            [% IF ( authid ) %]
26
            <a href="[% authidurl | url %][% authid | url %]">[% heading | html %]</a>
27
            [% ELSE %]
28
            <a href="[% searchurl | url %][% heading | html %]">[% heading | html %]</a>
29
            [% END %]
30
        [% ELSE %]
31
            [% heading | html %]
32
        [% END %]
33
        </span>
34
        [% UNLESS ( type=='seefrom' || type=='seealso' ) %]
35
        <span class="type">
36
            [% SWITCH type %]
37
            [% CASE 'earlier' %](Earlier heading)
38
            [% CASE 'later' %](Later heading)
39
            [% CASE 'acronym' %](Acronym)
40
            [% CASE 'musical' %](Musical composition)
41
            [% CASE 'broader' %](Broader heading)
42
            [% CASE 'narrower' %](Narrower heading)
43
            [% CASE 'parent' %](Immediate parent body)
44
            [% CASE %][% IF type %]([% type | html %])
45
            [% END %]
46
        [% END %]
47
        </span>
48
        [% END %]
49
    [% END %]
50
[% END %]
51
[% BLOCK authresult %]
52
    [% IF ( summary.summary ) %][% summary.summary | html %]:[% END %]
53
    <div class="authres_repet">
54
      [% FOREACH repet IN summary.repets %]
55
        <span>[% repet | html %]</span>
56
        [% UNLESS loop.last %] | [% END %]
57
      [% END %]
58
    </div>
59
    [% UNLESS ( summary.summaryonly ) %]
60
        <div class="authorizedheading">
61
          [% FOREACH authorize IN summary.authorized %]
62
            <span class="authorizedheading">[% authorize.heading | html %]</span>
63
            [% UNLESS loop.last %] | [% END %]
64
          [% END %]
65
        </div>
66
        [% IF ( marcflavour == 'UNIMARC' ) %]
67
            [% IF summary.notes %]
68
             <div class="authres_notes">
69
             [% FOREACH note IN summary.notes %]
70
               <span>[% note.note | html %]</span>
71
             [% END %]
72
             </div>
73
            [% END %]
74
            [% IF summary.seefrom %]
75
              <div class="authres_seefrom">
76
              [% FOREACH see IN summary.seefrom %]
77
                 [% PROCESS showreference heading=see.heading linkType="" type=see.type search='' %]
78
                 [% IF ! loop.last %] ; [% END %]
79
              [% END %]
80
              </div>
81
            [% END %]
82
            [% IF summary.seealso %]
83
              <div class="authres_seealso">
84
              [% FOREACH see IN summary.seealso %]
85
                 [% PROCESS showreference heading=see.heading linkType="" type=see.type search='' %]
86
                 [% IF ! loop.last %] ; [% END %]
87
              [% END %]
88
              </div>
89
            [% END %]
90
            [% IF summary.otherscript %]
91
              <div class="authres_otherscript">
92
              [% FOREACH other IN summary.otherscript %]
93
                [% PROCESS language lang=other.lang | trim %]:
94
                [% other.term %]
95
                [% IF ! loop.last %] ; [% END %]
96
              [% END %]
97
              </div>
98
            [% END %]
99
        [% ELSE %]
100
            [% IF ( summary.seefrom.size >= 1 ) %]
101
            <div class="seefrom">
102
                <span class="seefrom">used for/see from:</span>
103
                [% FOREACH seefro IN summary.seefrom %]
104
                    <div class="authref">
105
                    [% PROCESS showreference
106
                        heading=seefro.heading
107
                        linkType='seefrom'
108
                        type=seefro.type
109
                        authid=seefro.authid
110
                    %]
111
                    </div>
112
                [% END %]
113
            </div>
114
            [% END %]
115
            [% IF ( summary.seealso.size >= 1 ) %]
116
            <div class="seealso">
117
                <span class="seealso">see also:</span>
118
                [% FOREACH seeals IN summary.seealso %]
119
                    <div class="authref">
120
                    [% PROCESS showreference
121
                        heading=seeals.heading
122
                        linkType='seealso'
123
                        type=seeals.type
124
                        authid=seeals.authid
125
                    %]
126
                    </div>
127
                [% END %]
128
            </div>
129
            [% END %]
130
        [% END %]
131
    [% END %]
132
[% END %]
133
[% BLOCK language %]
134
  [% SWITCH lang %]
135
   [% CASE ['heb'] %]Hebrew
136
   [% CASE ['ara'] %]Arabic
137
   [% CASE ['gre'] %]Greek (modern)
138
   [% CASE ['grc'] %]Greek (to 1453)
139
   [% CASE %][% lang %]
140
  [% END %]
141
[% END %]
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/calendar.inc (-77 lines)
Lines 1-77 Link Here
1
<script type="text/javascript">
2
//<![CDATA[
3
4
var debug    = "[% debug %]";
5
var dformat  = "[% dateformat %]";
6
var sentmsg = 0;
7
if (debug > 1) {alert("dateformat: " + dformat + "\ndebug is on (level " + debug + ")");}
8
9
function Date_from_syspref(dstring) {
10
        var dateX = dstring.split(/[-/]/);
11
        if (debug > 1 && sentmsg < 1) {sentmsg++; alert("Date_from_syspref(" + dstring + ") splits to:\n" + dateX.join("\n"));}
12
        if (dformat === "iso") {
13
                return new Date(dateX[0], (dateX[1] - 1), dateX[2]);  // YYYY-MM-DD to (YYYY,m(0-11),d)
14
        } else if (dformat === "us") {
15
                return new Date(dateX[2], (dateX[0] - 1), dateX[1]);  // MM/DD/YYYY to (YYYY,m(0-11),d)
16
        } else if (dformat === "metric") {
17
                return new Date(dateX[2], (dateX[1] - 1), dateX[0]);  // DD/MM/YYYY to (YYYY,m(0-11),d)
18
        } else {
19
                if (debug > 0) {alert("KOHA ERROR - Unrecognized date format: " +dformat);}
20
                return 0;
21
        }
22
}
23
24
/* Instead of including multiple localization files as you would normally see with
25
   jQueryUI we expose the localization strings in the default configuration */
26
jQuery(function($){
27
    $.datepicker.regional[''] = {
28
        closeText: _("Done"),
29
        prevText: _("Prev"),
30
        nextText: _("Next"),
31
        currentText: _("Today"),
32
        monthNames: [_("January"),_("February"),_("March"),_("April"),_("May"),_("June"),
33
        _("July"),_("August"),_("September"),_("October"),_("November"),_("December")],
34
        monthNamesShort: [_("Jan"), _("Feb"), _("Mar"), _("Apr"), _("May"), _("Jun"),
35
        _("Jul"), _("Aug"), _("Sep"), _("Oct"), _("Nov"), _("Dec")],
36
        dayNames: [_("Sunday"), _("Monday"), _("Tuesday"), _("Wednesday"), _("Thursday"), _("Friday"), _("Saturday")],
37
        dayNamesShort: [_("Sun"), _("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat")],
38
        dayNamesMin: [_("Su"),_("Mo"),_("Tu"),_("We"),_("Th"),_("Fr"),_("Sa")],
39
        weekHeader: _("Wk"),
40
        dateFormat: '[% IF ( dateformat == "us" ) %]mm/dd/yy[% ELSIF ( dateformat == "metric" ) %]dd/mm/yy[% ELSE %]yy-mm-dd[% END %]',
41
        firstDay: [% CalendarFirstDayOfWeek %],
42
        isRTL: [% IF ( bidi ) %]true[% ELSE %]false[% END %],
43
        showMonthAfterYear: false,
44
        yearSuffix: ''};
45
    $.datepicker.setDefaults($.datepicker.regional['']);
46
});
47
48
$(document).ready(function(){
49
50
$.datepicker.setDefaults({
51
        showOn: "both",
52
        changeMonth: true,
53
        changeYear: true,
54
        buttonImage: '[% interface %]/lib/famfamfam/silk/calendar.png',
55
        buttonImageOnly: true,
56
        showButtonPanel: true,
57
        showOtherMonths: true
58
    });
59
60
    $( ".datepicker" ).datepicker();
61
    // http://jqueryui.com/demos/datepicker/#date-range
62
    var dates = $( ".datepickerfrom, .datepickerto" ).datepicker({
63
        changeMonth: true,
64
        numberOfMonths: 1,
65
        onSelect: function( selectedDate ) {
66
            var option = this.id == "from" ? "minDate" : "maxDate",
67
                instance = $( this ).data( "datepicker" );
68
                date = $.datepicker.parseDate(
69
                    instance.settings.dateFormat ||
70
                    $.datepicker._defaults.dateFormat,
71
                    selectedDate, instance.settings );
72
            dates.not( this ).datepicker( "option", option, date );
73
        }
74
    });
75
});
76
//]]>
77
</script>
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/datatables.inc (-20 lines)
Lines 1-20 Link Here
1
<script type="text/javascript" src="[% interface %]/lib/jquery/plugins/jquery.dataTables.min.js"></script>
2
<script type="text/javascript">
3
//<![CDATA[
4
    var MSG_DT_FIRST = _("First");
5
    var MSG_DT_LAST = _("Last");
6
    var MSG_DT_NEXT = _("Next");
7
    var MSG_DT_PREVIOUS = _("Previous");
8
    var MSG_DT_EMPTY_TABLE = _("No data available in table");
9
    var MSG_DT_INFO = _("Showing _START_ to _END_ of _TOTAL_");
10
    var MSG_DT_INFO_EMPTY = _("No entries to show");
11
    var MSG_DT_INFO_FILTERED = _("(filtered from _MAX_ total entries)");
12
    var MSG_DT_LENGTH_MENU = _("Show _MENU_ entries");
13
    var MSG_DT_LOADING_RECORDS = _("Loading...");
14
    var MSG_DT_PROCESSING = _("Processing...");
15
    var MSG_DT_SEARCH = _("Search:");
16
    var MSG_DT_ZERO_RECORDS = _("No matching records found");
17
    var CONFIG_EXCLUDE_ARTICLES_FROM_SORT = _("a an the");
18
//]]>
19
</script>
20
<script type="text/javascript" src="[% themelang %]/js/datatables.js"></script>
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/date-format.inc (-1 lines)
Line 1 Link Here
1
[% IF ( dateformat == "us" ) %](MM/DD/YYYY)[% ELSIF ( dateformat == "metric" ) %](DD/MM/YYYY)[% ELSE %](YYYY-MM-DD)[% END %]
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/doc-head-close.inc (-147 lines)
Lines 1-147 Link Here
1
</title>
2
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
3
<meta name="generator" content="Koha [% Version %]" /> <!-- leave this for stats -->
4
<link rel="shortcut icon" href="[% IF ( OpacFavicon ) %][% OpacFavicon %][% ELSE %][% interface %]/[% theme %]/images/favicon.ico[% END %]" type="image/x-icon" />
5
<link rel="stylesheet" type="text/css" href="[% themelang %]/lib/jquery/jquery-ui.css" />
6
[% SET opaclayoutstylesheet='opac.css' UNLESS opaclayoutstylesheet %]
7
[% IF (opaclayoutstylesheet.match('^https?:|^\/')) %]
8
    <link rel="stylesheet" type="text/css" href="[% opaclayoutstylesheet %]" />
9
[% ELSE %]
10
    <link rel="stylesheet" type="text/css" href="[% themelang %]/css/[% opaclayoutstylesheet %]" />
11
[% END %]
12
[% IF ( opaccolorstylesheet ) %]
13
    [% IF (opaccolorstylesheet.match('^https?:|^\/')) %]
14
        <link rel="stylesheet" type="text/css" href="[% opaccolorstylesheet %]" />
15
    [% ELSE %]
16
        <link rel="stylesheet" type="text/css" href="[% themelang %]/css/[% opaccolorstylesheet %]" />
17
    [% END %]
18
[% END %]
19
[% IF ( opac_css_override ) %]
20
    <link rel="stylesheet" type="text/css" href="[% themelang %]/css/[% opac_css_override %]" />
21
[% END %]
22
<link rel="stylesheet" type="text/css" media="print" href="[% themelang %]/css/print.css" />
23
[% IF persona %]
24
 <link rel="stylesheet" type="text/css" href="[% themelang %]/css/persona-buttons.css" />
25
[% END %]
26
<style id="region-opacmobileusercss" type="text/css" media="screen and (max-width:700px)">[% OPACMobileUserCSS %]</style>
27
[% IF ( bidi ) %]
28
    <link rel="stylesheet" type="text/css" href="[% themelang %]/css/right-to-left.css" />
29
[% END %]
30
<style id="region-opacusercss" type="text/css">[% OPACUserCSS %]</style>
31
<!-- yui js --> 
32
<script type="text/javascript" src="[% yuipath %]/utilities/utilities.js"></script> 
33
<script type="text/javascript" src="[% yuipath %]/container/container-min.js"></script> 
34
<script type="text/javascript" src="[% yuipath %]/menu/menu-min.js"></script> 
35
<script type="text/javascript" src="[% themelang %]/lib/jquery/jquery.js"></script>
36
<script type="text/javascript" src="[% themelang %]/lib/jquery/jquery-ui.js"></script>
37
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.hoverIntent.minified.js"></script>
38
<script type="text/javascript" src="[% themelang %]/js/script.js"></script>
39
[% IF ( OPACAmazonCoverImages ) %]
40
<script type="text/javascript" language="javascript">//<![CDATA[
41
		var NO_AMAZON_IMAGE = _("No cover image available");
42
	//]]>
43
</script>
44
<script type="text/javascript" language="javascript" src="[% themelang %]/js/amazonimages.js"></script>
45
[% END %]
46
[% IF ( SyndeticsCoverImages ) %]
47
<script type="text/javascript">//<![CDATA[
48
        var NO_AMAZON_IMAGE = _("No cover image available");
49
    //]]>
50
</script>
51
<script type="text/javascript" src="[% themelang %]/js/amazonimages.js"></script>          [% END %]
52
53
[% IF ( opacbookbag ) %]<script type="text/javascript" src="[% themelang %]/js/basket.js">
54
[% ELSIF ( virtualshelves ) %]<script type="text/javascript" src="[% themelang %]/js/basket.js">
55
[% ELSE %]<script type="text/javascript"> var readCookie;[% END %]
56
</script>
57
58
<script type="text/javascript">
59
	//<![CDATA[
60
	var MSG_CONFIRM_AGAIN = _("Warning: Cannot be undone. Please confirm once again")
61
    var MSG_DELETE_SEARCH_HISTORY = _("Are you sure you want to delete your search history?");
62
    [% IF ( opacbookbag ) %]var MSG_BASKET_EMPTY = _("Your cart is currently empty");
63
    var MSG_RECORD_IN_BASKET = _("This item is already in your cart");
64
    var MSG_RECORD_ADDED = _("This item has been added to your cart");
65
    var MSG_RECORD_REMOVED = _("This item has been removed from your cart");
66
    var MSG_NRECORDS_ADDED = _(" item(s) added to your cart");
67
    var MSG_NRECORDS_IN_BASKET = _("already in your cart");
68
    var MSG_NO_RECORD_SELECTED = _("No item was selected");
69
    var MSG_NO_RECORD_ADDED = _("No item was added to your cart");
70
    var MSG_CONFIRM_DEL_BASKET = _("Are you sure you want to empty your cart?");
71
    var MSG_CONFIRM_DEL_RECORDS = _("Are you sure you want to remove the selected items?");
72
    var MSG_ITEM_IN_CART = _("In your cart");
73
    var MSG_IN_YOUR_CART = _("Items in your cart: ");
74
    var MSG_ITEM_NOT_IN_CART = _("Add to your cart");
75
    $("#cartDetails").ready(function(){ $("#cmspan").html("<a href=\"#\" id=\"cartmenulink\"><span id=\"carticon\"></span> "+_("Cart")+"<span id=\"basketcount\"><\/span><\/a>"); }); [% ELSE %][% IF ( virtualshelves ) %]
76
    var MSG_NO_RECORD_SELECTED = _("No item was selected");[% END %][% END %]
77
    [% IF ( opacuserlogin ) %][% IF ( TagsEnabled ) %]var MSG_TAGS_DISABLED = _("Sorry, tags are not enabled on this system.");
78
    var MSG_TAG_ALL_BAD = _("Error! Your tag was entirely markup code.  It was NOT added.  Please try again with plain text.");
79
    var MSG_ILLEGAL_PARAMETER = _("Error! Illegal parameter");
80
    var MSG_TAG_SCRUBBED = _("Note: your tag contained markup code that was removed. The tag was added as ");
81
    var MSG_ADD_TAG_FAILED = _("Error! The add_tag operation failed on");
82
    var MSG_ADD_TAG_FAILED_NOTE = _("Note: you can only tag an item with a given term once.  Check 'My Tags' to see your current tags.");
83
    var MSG_DELETE_TAG_FAILED = _("Error! You cannot delete the tag");
84
    var MSG_DELETE_TAG_FAILED_NOTE = _("Note: you can only delete your own tags.")
85
    var MSG_LOGIN_REQUIRED = _("You must be logged in to add tags.");
86
    var MSG_TAGS_ADDED = _("Tags added: ");
87
    var MSG_TAGS_DELETED = _("Tags added: ");
88
    var MSG_TAGS_ERRORS = _("Errors: ");
89
    var MSG_MULTI_ADD_TAG_FAILED = _("Unable to add one or more tags.");
90
    var MSG_NO_TAG_SPECIFIED = _("No tag was specified.");[% END %][% END %]
91
	[% IF ( OPACAmazonCoverImages ) %]$(window).load(function() {
92
		 	verify_images();
93
		 });[% END %]
94
	[% IF ( SyndeticsCoverImages ) %]$(window).load(function() {
95
            verify_images();
96
         });[% END %]
97
    //]]>
98
</script>
99
<script id="region-opacuserjs" type="text/javascript">
100
    [% opacuserjs %]
101
</script>
102
<script type="text/javascript">
103
[% IF ( opacbookbag ) %]</script><script type="text/javascript" src="[% themelang %]/js/basket.js">
104
[% ELSIF ( virtualshelves ) %]</script><script type="text/javascript" src="[% themelang %]/js/basket.js">
105
[% ELSE %]</script><script type="text/javascript">var readCookie;[% END %]</script>
106
[% IF ( opacuserlogin ) %][% IF ( TagsEnabled ) %]<script type="text/javascript" src="[% themelang %]/js/tags.js"></script>[% END %][% ELSE %][% END %]
107
[% IF ( GoogleJackets ) %]
108
<script type="text/javascript" src="[% themelang %]/js/google-jackets.js"></script>
109
<script type="text/javascript">
110
	//<![CDATA[
111
	var NO_GOOGLE_JACKET = _("No cover image available");
112
	//]]>
113
</script>
114
[% END %]
115
[% IF OpenLibraryCovers %]
116
<script type="text/javascript" src="[% themelang %]/js/openlibrary.js"></script>
117
<script type="text/javascript">
118
//<![CDATA[
119
var NO_OL_JACKET = _("No cover image available");
120
//]]>
121
</script>
122
[% END %]
123
124
[% IF OPACLocalCoverImages %]
125
<script type="text/javascript" src="[% themelang %]/js/localcovers.js"></script>
126
<script type="text/javascript">
127
//<![CDATA[
128
var NO_LOCAL_JACKET = _("No cover image available");
129
//]]>
130
</script>
131
[% END %]
132
133
[% IF ( BakerTaylorEnabled ) %]<script type="text/javascript" src="[% themelang %]/js/bakertaylorimages.js"></script>
134
<script type="text/javascript">
135
	//<![CDATA[
136
	var NO_BAKERTAYLOR_IMAGE = _("No cover image available");
137
	$(window).load(function(){
138
		bt_verify_images();
139
	});
140
	//]]>
141
</script>[% END %]
142
<link rel="unapi-server" type="application/xml" title="unAPI" href="[% OPACBaseURL %]/cgi-bin/koha/unapi" />
143
[% IF ( GoogleIndicTransliteration ) %]
144
        <script type="text/javascript" src="http://www.google.com/jsapi"></script>
145
        <script type="text/javascript" src="[% themelang %]/js/googleindictransliteration.js"></script>
146
[% END %]
147
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/doc-head-open.inc (-4 lines)
Lines 1-4 Link Here
1
<!DOCTYPE html>
2
[% IF ( bidi ) %]<html lang="[% lang %]" dir="[% bidi %]">[% ELSE %]<html lang="[% lang %]">[% END %]
3
<head>
4
<title>
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/item-status-schema-org.inc (-9 lines)
Lines 1-9 Link Here
1
[% IF ( item.damaged or item.datedue or item.itemlost or item.transfertwhen or item.waiting ) %]
2
    <link property="availability" href="http://schema.org/OutOfStock" />
3
[% ELSIF ( item.withdrawn ) %]
4
    <link property="availability" href="http://schema.org/Discontinued" />
5
[% ELSIF ( item.itemnotforloan or item.notforloan_per_itemtype ) %]
6
    <link property="availability" href="http://schema.org/InStoreOnly" />
7
[% ELSE %]
8
    <link property="availability" href="http://schema.org/InStock" />
9
[% END %]
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/item-status.inc (-51 lines)
Lines 1-51 Link Here
1
[% USE AuthorisedValues %]
2
3
[%#-
4
This include takes two parameters: an item structure
5
and an optional loan (issue) structure.  The issue
6
structure is used by course reserves pages, which do
7
not use an API to fetch items that populates item.datedue.
8
-%]
9
10
[% IF ( item.itemlost ) %]
11
    [% av_lib_include = AuthorisedValues.GetByCode( 'LOST', item.itemlost, 1 ) %]
12
    [% IF ( av_lib_include ) %]
13
        [% av_lib_include %]
14
    [% ELSE %]
15
        [% IF ( item.lostimageurl ) %]
16
            <img src="[% item.lostimageurl %]" alt="[% item.lostimagelabel %]" title="[% item.lostimagelabel %]">
17
        [% ELSE %]
18
            Item lost
19
        [% END %]
20
    [% END %]
21
[% ELSIF ( item.datedue || issue.date_due ) %]
22
    [% IF ( OPACShowCheckoutName ) %]
23
        Checked out to [% item.cardnumber %] [% item.firstname %] [% item.surname %]
24
    [% ELSE %]
25
        Checked out
26
    [% END %]
27
[% ELSIF ( item.transfertwhen ) %]
28
    In transit from [% item.transfertfrom %]
29
    to [% item.transfertto %] since [% item.transfertwhen %]
30
[% ELSIF ( item.waiting ) %]
31
    On hold
32
[% ELSIF ( item.withdrawn ) %]
33
    Item withdrawn
34
[% ELSIF ( item.itemnotforloan ) %]
35
    [% IF ( item.notforloanvalueopac ) %]
36
        [% item.notforloanvalueopac %] [% IF ( item.restrictedopac ) %]<span class="restricted">([% item.restrictedopac %])</span>[% END %]
37
    [% ELSE %]
38
        Not for loan [% IF ( item.restrictedopac ) %]<span class="restricted">([% item.restrictedopac %])</span>[% END %]
39
    [% END %]
40
[% ELSIF ( item.notforloan_per_itemtype ) %]
41
    Not for loan [% IF ( item.restrictedopac ) %]<span class="restricted">([% item.restrictedopac %])</span>[% END %]
42
[% ELSIF ( item.damaged ) %]
43
    [% av_lib_include = AuthorisedValues.GetByCode( 'DAMAGED', item.damaged, 1 ) %]
44
    [% IF av_lib_include %]
45
        [% av_lib_include %]
46
    [% ELSE %]
47
        Item damaged
48
    [% END %]
49
[% ELSE %]
50
    Available [% IF ( item.restrictedopac ) %]<span class="restricted">([% item.restrictedopac %])</span>[% END %]
51
[% END %]
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/masthead.inc (-210 lines)
Lines 1-210 Link Here
1
<div id="header-wrapper"><div id="members">
2
  [% IF ( opacuserlogin ) %]
3
	<ul>
4
[% UNLESS ( loggedinusername ) %]
5
               <li><a href="/cgi-bin/koha/opac-user.pl">Log in to your account</a></li>[% END %]
6
            [% IF ( loggedinusername ) %]
7
                <li><span class="members">Welcome, <a href="/cgi-bin/koha/opac-user.pl"><span class="loggedinusername">[% FOREACH USER_INF IN USER_INFO %][% USER_INF.title %] [% USER_INF.firstname %] [% USER_INF.surname %][% END %]</span></a></span></li>
8
9
            [% END %]
10
            [% IF EnableOpacSearchHistory %]
11
                <li><a href="/cgi-bin/koha/opac-search-history.pl" title="View your search history">Search history</a> [<a class="logout" href="/cgi-bin/koha/opac-search-history.pl?action=delete" title="Delete your search history" onclick="return confirm(MSG_DELETE_SEARCH_HISTORY);">x</a>]</li>
12
            [% END %]
13
			[% IF ( loggedinusername ) %]<li>[% IF persona %]<a class="logout" id="logout" href="/cgi-bin/koha/opac-main.pl?logout.x=1" onclick='navigator.id.logout();'>[% ELSE %]<a class="logout" id="logout" href="/cgi-bin/koha/opac-main.pl?logout.x=1">[% END %]Log Out</a></li>[% END %]
14
   	</ul>	
15
  [% END %]
16
</div>
17
<div id="region-opacheader">
18
    [% opacheader %]
19
</div>
20
<div id="opac-main-search" class="yui-g">
21
   [% IF ( opacsmallimage ) %]
22
   <h1 id="libraryname" style="background-image: url('[% opacsmallimage %]');">
23
   [% ELSE %]
24
   <h1 id="libraryname">
25
   [% END %]<a href="/cgi-bin/koha/opac-main.pl">[% IF ( LibraryName ) %][% LibraryName %][% ELSE %]Koha Online Catalog[% END %]</a></h1>
26
27
<div id="fluid">
28
29
[% IF ( OpacPublic ) %]
30
<div id="fluid-offset">
31
[% UNLESS ( advsearch ) %]<form name="searchform" method="get" action="/cgi-bin/koha/opac-search.pl" id="searchform">
32
    <label for="masthead_search" class="left"> Search 
33
  [% UNLESS Koha.Preference( 'OpacAddMastheadLibraryPulldown' ) == 1 %]
34
            [% IF ( mylibraryfirst ) %] (in [% mylibraryfirst %] only)[% END %]
35
	[% END %]
36
    </label>
37
38
	<select name="idx" id="masthead_search" class="left">
39
	[% IF ( ms_kw ) %]
40
        <option selected="selected" value="">Library catalog</option>
41
		[% ELSE %]
42
        <option value="">Library catalog</option>
43
		[% END %]
44
		[% IF ( ms_ti ) %]
45
        <option selected="selected" value="ti">Title</option>
46
		[% ELSE %]
47
        <option value="ti">Title</option>
48
		[% END %]
49
		[% IF ( ms_au ) %]
50
        <option selected="selected" value="au">Author</option>
51
		[% ELSE %]
52
        <option value="au">Author</option>
53
		[% END %]
54
		[% IF ( ms_su ) %]
55
        <option selected="selected" value="su">Subject</option>
56
		[% ELSE %]
57
        <option value="su">Subject</option>
58
		[% END %]
59
		[% IF ( ms_nb ) %]
60
		<option selected="selected" value="nb">ISBN</option>
61
		[% ELSE %]
62
		<option value="nb">ISBN</option>
63
		[% END %]
64
		[% IF ( ms_se ) %]
65
        <option selected="selected" value="se">Series</option>
66
		[% ELSE %]
67
        <option value="se">Series</option>
68
		[% END %]
69
                [% IF ( numbersphr ) %]
70
                [% IF ( ms_callnum ) %]
71
        <option selected="selected" value="callnum,phr">Call number</option>
72
                [% ELSE %]
73
        <option value="callnum,phr">Call number</option>
74
                [% END %]
75
                [% ELSE %]
76
                [% IF ( ms_callnum ) %]
77
        <option selected="selected" value="callnum">Call number</option>
78
                [% ELSE %]
79
        <option value="callnum">Call number</option>
80
                [% END %]
81
                [% END %]</select>
82
[% IF ( ms_value ) %]
83
        <input type="text" title="Type search term" id = "transl1" name="q" value="[% ms_value |html %]" class="left" /><div id="translControl"></div>
84
[% ELSE %]
85
        <input type="text" title="Type search term" id = "transl1" name="q" class="left" /><div id="translControl"></div>
86
[% END %]
87
   [% IF Koha.Preference( 'OpacAddMastheadLibraryPulldown' ) == 1 %]
88
      <select name="branch_group_limit" id="select_library" class="left">
89
         <option value="">All libraries</option>
90
         [% IF BranchCategoriesLoop %]<optgroup label="Libraries">[% END %]
91
             [% FOREACH BranchesLoo IN BranchesLoop %]
92
                [% IF ( BranchesLoo.selected ) %]<option selected="selected" value="branch:[% BranchesLoo.value %]">[% BranchesLoo.branchname %]</option>
93
                [% ELSE %]<option value="branch:[% BranchesLoo.value %]">[% BranchesLoo.branchname %]</option>[% END %]
94
             [% END %]
95
         [% IF BranchCategoriesLoop %]
96
             </optgroup>
97
             <optgroup label="Groups">
98
                 [% FOREACH bc IN BranchCategoriesLoop %]
99
                     [% IF ( bc.selected ) %]
100
                         <option selected="selected" value="multibranchlimit-[% bc.categorycode %]">[% bc.categoryname %]</option>
101
                     [% ELSE %]
102
                         <option value="multibranchlimit-[% bc.categorycode %]">[% bc.categoryname %]</option>
103
                     [% END %]
104
                 [% END %]
105
             </optgroup>
106
         [% END %]
107
      </select>
108
   [% ELSE %]
109
      [% IF ( opac_limit_override ) %]
110
          [% IF ( opac_search_limit ) %]
111
            <input name="limit" value="[% opac_search_limit %]" type="hidden" />
112
          [% END %]
113
      [% ELSE %]
114
          [% IF ( mylibraryfirst ) %] 
115
               <input name="limit" value="branch:[% mylibraryfirst %]" type="hidden" />
116
          [% END %]
117
      [% END %]
118
   [% END %]
119
120
121
    <input type="submit" value="Go" id="searchsubmit" class="left" />
122
[% IF ( opacbookbag ) %]<span id="cmspan"></span>[% END %]
123
124
[% IF ( virtualshelves ) %]<a href="/cgi-bin/koha/opac-shelves.pl" id="listsmenulink">Lists</a>[% END %]
125
    </form>
126
[% ELSE %]
127
<div style="width:80%;*margin-bottom:-30px;">
128
[% IF ( virtualshelves ) %]<a href="/cgi-bin/koha/opac-shelves.pl" id="listsmenulink">Lists</a>[% END %][% IF ( opacbookbag ) %]<span id="cmspan"></span>[% END %]
129
</div>
130
[% END %]
131
132
<div id="moresearches">
133
<a href="/cgi-bin/koha/opac-search.pl">Advanced search</a>
134
[% IF Koha.Preference( 'UseCourseReserves' ) == 1 %]<span class="pipe"> | </span><a href="/cgi-bin/koha/opac-course-reserves.pl">Course reserves</a>[% END %]
135
[% IF ( OpacBrowser ) %]<span class="pipe"> | </span><a href="/cgi-bin/koha/opac-browser.pl">Browse by hierarchy</a>[% END %]
136
[% IF ( OpacAuthorities ) %]<span class="pipe"> | </span><a href="/cgi-bin/koha/opac-authorities-home.pl">Authority search</a>[% END %]
137
[% IF ( opacuserlogin && ( Koha.Preference( 'reviewson' ) == 1 ) && ( Koha.Preference( 'OpacShowRecentComments' ) == 1 ) ) %]<span class="pipe"> | </span><a href="/cgi-bin/koha/opac-showreviews.pl">Recent comments</a>[% END %]
138
[% IF ( TagsEnabled ) %]<span class="pipe"> | </span><a href="/cgi-bin/koha/opac-tags.pl">Tag cloud</a>[% END %]
139
[% IF ( OpacCloud ) %]<span class="pipe"> | </span><a href="/cgi-bin/koha/opac-tags_subject.pl">Subject cloud</a>[% END %]
140
[% IF ( OpacTopissue ) %]<span class="pipe"> | </span><a href="/cgi-bin/koha/opac-topissues.pl">Most popular</a>[% END %]
141
[% IF ( suggestion ) %]
142
  [% IF ( AnonSuggestions ) %]<span class="pipe"> | </span><a href="/cgi-bin/koha/opac-suggestions.pl">Purchase suggestions</a>
143
  [% ELSIF ( OPACViewOthersSuggestions ) %]<span class="pipe"> | </span><a href="/cgi-bin/koha/opac-suggestions.pl">Purchase suggestions</a>
144
  [% END %]
145
[% END %]
146
</div>
147
 </div>
148
</div>
149
150
[% END %]  <!-- OpacPublic --> 
151
152
[% IF ( opacbookbag ) %]<div id="cartDetails">Your cart is empty.</div>[% END %]
153
154
[% IF ( virtualshelves ) %]
155
<div id="listsmenu" class="yuimenu" style="display: none">
156
    <div class="bd">
157
    <h4>Public lists</h4>
158
		[% IF ( pubshelves ) %]
159
			<ul class="first-of-type">
160
			[% FOREACH pubshelvesloo IN pubshelvesloop %]
161
			<li class="yuimenuitem"><a href="/cgi-bin/koha/opac-shelves.pl?viewshelf=[% pubshelvesloo.shelfnumber %]&amp;sortfield=[% pubshelvesloo.sortfield %]">[% pubshelvesloo.shelfname |html %]</a></li>
162
			[% END %]
163
			<li class="yuimenuitem"><a class="yuimenuitemlabel" href="/cgi-bin/koha/opac-shelves.pl?display=publicshelves">[View All]</a></li>
164
        </ul>
165
		[% ELSE %]
166
        No public lists
167
		[% END %]
168
  [% IF ( opacuserlogin ) %]
169
    <h4>Your lists</h4>
170
	[% IF ( loggedinusername ) %]
171
		[% IF ( barshelves ) %]
172
			<ul class="first-of-type">
173
			[% FOREACH barshelvesloo IN barshelvesloop %]
174
			<li class="yuimenuitem"><a href="/cgi-bin/koha/opac-shelves.pl?viewshelf=[% barshelvesloo.shelfnumber %]&amp;sortfield=[% barshelvesloo.sortfield %]">[% barshelvesloo.shelfname |html %]</a></li>
175
			[% END %]
176
        <li class="yuimenuitem"><a class="yuimenuitemlabel" href="/cgi-bin/koha/opac-shelves.pl?display=privateshelves">[View all]</a></li>
177
        </ul>
178
		[% ELSE %]
179
			<ul class="first-of-type">
180
        <li>No private lists</li>
181
        <li class="yuimenuitem"><a class="yuimenuitemlabel" href="/cgi-bin/koha/opac-shelves.pl?display=privateshelves">[Create new list]</a></li></ul>
182
		[% END %]
183
	[% ELSE %]
184
        <ul class="first-of-type"><li><a href="/cgi-bin/koha/opac-user.pl">Log in to create your own lists</a></li></ul>
185
	[% END %]
186
  [% END %]
187
	  </div>
188
</div><!-- /listmenu /virtualshelves -->
189
[% END %]
190
<div id="listsDetails"></div>
191
</div>
192
</div>
193
<div id="breadcrumbs" class="yui-g">
194
[% IF ( searchdesc ) %]<p>[% IF ( total ) %]<strong>Your search returned [% total |html %] results.</strong> [% IF ( related ) %] (related searches: [% FOREACH relate IN related %][% relate.related_search %][% END %]). [% END %]
195
<a href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi |html |url %][% limit_cgi |html | url %]&amp;count=[% countrss |html %]&amp;sort_by=acqdate_dsc&amp;format=rss2" class="rsssearchlink"><img src="[% interface %]/[% theme %]/images/feed-icon-16x16.png" alt="Subscribe to this search" title="Subscribe to this search" class="rsssearchicon"/></a>
196
[% ELSE %]
197
<strong>No results found!</strong>
198
<p>
199
    [% IF ( searchdesc ) %]
200
    No results found for that in [% LibraryName %] catalog. <a href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi | html | url %][% limit_cgi | html | url %]&amp;format=rss2" class="rsssearchlink"><img src="[% interface %]/[% theme %]/images/feed-icon-16x16.png" alt="Subscribe to this search" title="Subscribe to this search" border="0" class="rsssearchicon"/></a>
201
    [% ELSE %]
202
    You did not specify any search criteria.
203
    [% END %]
204
</p>
205
<div id="noresultsfound">
206
[% OPACNoResultsFound %]
207
</div>
208
209
</div>
210
[% END %]</p>[% END %]</div>
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/navigation.inc (-9 lines)
Lines 1-9 Link Here
1
<div id="region-opacnav">
2
[% OpacNav %]
3
</div>
4
[% IF IsPatronPage %]
5
[% INCLUDE usermenu.inc %]
6
[% END %]
7
<div id="region-opacnavbottom">
8
[% OpacNavBottom %]
9
</div>
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/opac-authorities.inc (-66 lines)
Lines 1-66 Link Here
1
[% BLOCK showhierarchy %]
2
    [% FOREACH tree IN trees %]
3
        [% PROCESS showtree tree = tree %]
4
    [% END %]
5
[% END %]
6
[% BLOCK showtree %]
7
    <ul class="hierarchy">
8
        [% FOREACH node IN tree %]
9
            <li id="hier[% node.authid %]" class="[% node.class %] authnode">
10
            [% IF ( node.current_value ) %]
11
                <span class='currentauth'>[% node.value | html %]</span>
12
            [% ELSE %]
13
                <a href="opac-authoritiesdetail.pl?authid=[% node.authid %]" title="Term">[% node.value | html %]</a>
14
            [% END %]
15
            [% IF ( node.children && node.children.size > 0 ) %]
16
                [% PROCESS showtree tree = node.children %]
17
            [% END %]
18
            </li>
19
        [% END %]
20
    </ul>
21
[% END %]
22
23
[% BLOCK authtypelabel %]
24
    [% UNLESS ( type=='seefrom' || type=='seealso' || type=='' ) %]
25
        <span class="type">[% FILTER trim %][% SWITCH type %]
26
        [% CASE 'earlier' %]Earlier heading
27
        [% CASE 'later' %]Later heading
28
        [% CASE 'acronym' %]Acronym
29
        [% CASE 'musical' %]Musical composition
30
        [% CASE 'broader' %]Broader heading
31
        [% CASE 'narrower' %]Narrower heading
32
        [% CASE %][% type %]
33
        [% END %][% END %]</span>
34
    [% END %]
35
[% END %]
36
[% BLOCK otherscript %]
37
    [% FOREACH heading IN headings %]
38
        [% IF heading.category == wantcategory %]
39
            [% IF heading.direction == 'ltr' %]
40
                <div class="heading otherscript [% heading.category %]">
41
                <span class="[% heading.category %]">[% heading.term %]</span>
42
                </div>
43
            [% ELSIF heading.direction == 'rtl' %]
44
                <div class="heading otherscript [% heading.category %] rtl">
45
                <span class="[% heading.category %]">[% heading.term %]</span>
46
                </div>
47
            [% END %]
48
        [% END %]
49
    [% END %]
50
[% END %]
51
[% BLOCK authheadingdisplay %]
52
    [% IF authid %]<a href="/cgi-bin/koha/opac-authoritiesdetail.pl?authid=[% authid %]">[% heading %]</a>
53
    [% ELSIF search %]<a href="/cgi-bin/koha/opac-authorities-home.pl?op=do_search&type=opac&operator=contains&marclist=mainentry&and_or=and&orderby=HeadingAsc&value=[% search %]">[% heading %]</a>
54
    [% ELSE %][% heading %]
55
    [% END %]
56
[% END %]
57
[% BLOCK language %]
58
  [% SWITCH lang %]
59
   [% CASE ['en', 'eng'] %]English
60
   [% CASE ['fr', 'fre'] %]French
61
   [% CASE ['it', 'ita'] %]Italian
62
   [% CASE ['de', 'ger', 'deu'] %]German
63
   [% CASE ['es', 'spa'] %]Spanish
64
   [% CASE %][% lang %]
65
  [% END %]
66
[% END %]
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/opac-bottom.inc (-101 lines)
Lines 1-101 Link Here
1
<div id="region-opaccredits" class="ft">
2
    [% opaccredits %]
3
</div>
4
</div>
5
6
[% IF ( opaclanguagesdisplay || OpacKohaUrl ) %]
7
    [% IF ( languages_loop && opaclanguagesdisplay ) %]
8
        [% UNLESS ( one_language_enabled ) %]
9
            <div id="changelanguage" class="ft">
10
            <div class="lang"><strong>Languages:&nbsp;</strong></div>
11
            <ul id="i18nMenu" class="footermenu">
12
            [% FOREACH languages_loo IN languages_loop %]
13
14
                [% IF ( languages_loo.group_enabled ) %]
15
                [% IF ( languages_loo.plural ) %]
16
                <li class="more"><a class="sublangs" id="show[% languages_loo.rfc4646_subtag %]" href="#">[% IF ( languages_loo.native_description ) %][% languages_loo.native_description %][% ELSE %][% languages_loo.rfc4646_subtag %][% END %]</a><div id="sub[% languages_loo.rfc4646_subtag %]">
17
                <div class="bd"><ul>
18
                [% FOREACH sublanguages_loo IN languages_loo.sublanguages_loop %]
19
            [% IF ( sublanguages_loo.enabled ) %]
20
                    [% IF ( sublanguages_loo.sublanguage_current ) %]
21
                        <li> [% sublanguages_loo.native_description %] [% sublanguages_loo.script_description %] [% sublanguages_loo.region_description %] [% sublanguages_loo.variant_description %] ([% sublanguages_loo.rfc4646_subtag %])</li>
22
                    [% ELSE %]
23
                    <li><a href="/cgi-bin/koha/opac-changelanguage.pl?language=[% sublanguages_loo.rfc4646_subtag %]"> [% sublanguages_loo.native_description %] [% sublanguages_loo.script_description %] [% sublanguages_loo.region_description %] [% sublanguages_loo.variant_description %] ([% sublanguages_loo.rfc4646_subtag %])</a></li>
24
            [% END %]
25
                    [% END %]
26
27
                [% END %]
28
                </ul></div></div></li>
29
30
                [% ELSE %]
31
                [% IF ( languages_loo.group_enabled ) %]
32
                    [% IF ( languages_loo.current ) %]
33
                        <li class="morelang">[% IF ( languages_loo.native_description ) %][% languages_loo.native_description %][% ELSE %][% languages_loo.rfc4646_subtag %][% END %]</li>
34
                    [% ELSE %]
35
                        <li class="morelang"><a href="/cgi-bin/koha/opac-changelanguage.pl?language=[% languages_loo.rfc4646_subtag %]">[% IF ( languages_loo.native_description ) %][% languages_loo.native_description %][% ELSE %][% languages_loo.rfc4646_subtag %][% END %]</a></li>
36
                    [% END %]
37
            [% END %]
38
                [% END %]
39
                [% END %]
40
41
            [% END %]
42
            </ul>
43
            </div>
44
        [% END %]
45
    [% END %]
46
47
    [% IF ( OpacKohaUrl ) %]
48
    <span class="koha_url">
49
        Powered by <strong>
50
        [% IF template.name.match('opac-main.tt') %]
51
            <a class="koha_url" href="http://koha-community.org">Koha</a>
52
        [% ELSE %]
53
            <a class="koha_url" rel="nofollow" href="http://koha-community.org">Koha</a>
54
        [% END %]
55
        </strong>&nbsp;&nbsp;
56
    </span>
57
    [% END %]
58
59
[% END %]
60
61
[% IF persona %]
62
<script src="https://login.persona.org/include.js"></script>
63
<script type="text/javascript" language="javascript">
64
65
navigator.id.watch({
66
    loggedInUser: [% IF emailaddress && loggedinpersona %]'[% emailaddress %]'[% ELSE %]null[% END %],
67
    onlogin: function (assertion) {
68
        $.post('/cgi-bin/koha/svc/login',
69
            { assertion: assertion },
70
            function (data) {
71
                window.location = '/cgi-bin/koha/opac-user.pl';
72
            }
73
        )
74
        .fail(function() { var errstr = _("Could not login, perhaps your Persona email does not match your Koha one");
75
            alert(errstr);
76
        });
77
    },
78
    onlogout: function () {
79
        window.location = '/cgi-bin/koha/opac-main.pl?logout.x=1';
80
    }
81
});
82
83
var signinLink = document.getElementById('browserid');
84
85
if (signinLink) {
86
    signinLink.onclick = function(evt) {
87
        // Requests a signed identity assertion from the user.
88
        navigator.id.request({
89
            siteName: "[% LibraryName | html %]",
90
            returnTo: '/cgi-bin/koha/opac-user.pl',
91
            oncancel: function() { alert('user refuses to share identity.'); }
92
            });
93
        };
94
}
95
96
</script>
97
[% END %]
98
99
100
</body>
101
</html>
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/opac-detail-sidebar.inc (-72 lines)
Lines 1-72 Link Here
1
<ul id="action">
2
    [% UNLESS ( norequests ) %]
3
        [% IF ( opacuserlogin ) %]
4
            [% IF ( RequestOnOpac ) %]
5
                [% IF ( AllowOnShelfHolds ) %]
6
                    <li><a class="reserve" href="/cgi-bin/koha/opac-reserve.pl?biblionumber=[% biblionumber %]">Place hold</a></li>
7
                [% ELSE %]
8
                    [% IF ( ItemsIssued ) %]
9
                        <li><a class="reserve" href="/cgi-bin/koha/opac-reserve.pl?biblionumber=[% biblionumber %]">Place hold</a></li>
10
                    [% END %]
11
                [% END %]
12
            [% END %]
13
        [% END %]
14
    [% END %]
15
    <li><a class="print" href="#" onclick="window.print();">Print</a></li>
16
    [% IF ( virtualshelves ) %]
17
        [% IF ( opacuserlogin ) %][% IF ( loggedinusername ) %]
18
            <li><a class="addtoshelf" href="/cgi-bin/koha/opac-addbybiblionumber.pl?biblionumber=[% biblionumber %]" onclick="Dopop('opac-addbybiblionumber.pl?biblionumber=[% biblionumber %]'); return false;">
19
                Save to your lists
20
            </a></li>
21
        [% END %][% END %]
22
    [% END %]
23
    [% IF ( opacbookbag ) %]
24
        [% IF ( incart ) %]
25
            <li><a class="incart cart[% biblionumber %]" href="#" onclick="addRecord('[% biblionumber %]'); return false;">In your cart</a> <a class="cartRemove cartR[% biblionumber %]" href="#" onclick="delSingleRecord('[% biblionumber %]'); return false;">(remove)</a></li>
26
        [% ELSE %]
27
            <li><a class="addtocart cart[% biblionumber %]" href="#" onclick="addRecord('[% biblionumber %]'); return false;">Add to your cart</a>  <a style="display:none;" class="cartRemove cartR[% biblionumber %]" href="#" onclick="delSingleRecord('[% biblionumber %]'); return false;">(remove)</a></li>
28
        [% END %]
29
    [% END %]
30
    [% IF ( OpacHighlightedWords && query_desc ) %]
31
    <li>
32
        <a href="#" class="highlight_toggle" id="highlight_toggle_off">Unhighlight</a>
33
        <a href="#" class="highlight_toggle" id="highlight_toggle_on">Highlight</a>
34
    </li>
35
    [% END %]
36
    <li style="display:none;"><a href="#" id="furthersearches">More searches</a></li>
37
</ul>
38
39
[% IF ( OPACSearchForTitleIn ) %]
40
    <div id="furtherm" class="yuimenu">
41
    <div class="bd">
42
    <h4>Search for this title in:</h4>
43
    <ul class="first-of-type">
44
        [% OPACSearchForTitleIn %]
45
    </ul>
46
    </div>
47
    </div>
48
[% END %]
49
50
[% IF ( export_options.size ) %]
51
    <div id="export" class="detailtagcell">
52
        <form method="get" action="/cgi-bin/koha/opac-export.pl">
53
        <label for="format">Save record:</label>
54
        <select name="format" id="format">
55
        [% FOREACH option IN export_options %]
56
            [% SWITCH option %]
57
                [% CASE 'bibtex' %]<option value="bibtex">BIBTEX</option>
58
                [% CASE 'dc' %]<option value="dc">Dublin Core (XML)</option>
59
                [% CASE 'marcxml' %]<option value="marcxml">MARCXML</option>
60
                [% CASE 'marc8' %]<option value="marc8">MARC (non-Unicode/MARC-8)</option>
61
                [% CASE 'utf8' %]<option value="utf8">MARC (Unicode/UTF-8)</option>
62
                [% CASE 'marcstd' %]<option value="marcstd">MARC (Unicode/UTF-8, Standard)</option>
63
                [% CASE 'mods' %]<option value="mods">MODS (XML)</option>
64
                [% CASE 'ris' %]<option value="ris">RIS</option>
65
            [% END %]
66
        [% END %]
67
        </select>
68
        <input type="hidden" name="op" value="export" />
69
        <input type="hidden" name="bib" value="[% biblionumber %]" />
70
        <input type="submit" name="save" value="Go" /></form>
71
    </div>
72
[% END %]
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/opac-facets.inc (-61 lines)
Lines 1-61 Link Here
1
[% IF ( opacfacets ) && total %]
2
[% IF ( facets_loop ) %]
3
<div id="search-facets">
4
<h4>Refine your search</h4>
5
<ul>
6
    <li id="availability_facet">Availability<ul><li>[% IF ( available ) %]Showing only <strong>available</strong> items. <a href="/cgi-bin/koha/opac-search.pl?[% query_cgi |html %][% limit_cgi_not_availablity %][% IF ( sort_by ) %]&amp;sort_by=[% sort_by |html%][% END %]">Show all items</a>[% ELSE %]Limit to <a href="/cgi-bin/koha/opac-search.pl?[% query_cgi |html %][% limit_cgi |html %][% IF ( sort_by ) %]&amp;sort_by=[% sort_by |html%][% END %]&amp;limit=available">currently available items.</a>[% END %]</li></ul>
7
	[% IF ( related ) %] <li>(related searches: [% FOREACH relate IN related %][% relate.related_search %][% END %])</li>[% END %]
8
	</li>
9
	
10
[% FOREACH facets_loo IN facets_loop %]
11
[% IF facets_loo.facets.size > 0 %]
12
<li id="[% facets_loo.type_id %]">
13
[% IF facets_loo.type_label_Authors %]<span id="facet-authors">Authors</span>[% END %]
14
[% IF facets_loo.type_label_Titles %]<span id="facet-titles">Titles</span>[% END %]
15
[% IF facets_loo.type_label_Topics %]<span id="facet-topics">Topics</span>[% END %]
16
[% IF facets_loo.type_label_Places %]<span id="facet-places">Places</span>[% END %]
17
[% IF facets_loo.type_label_Series %]<span id="facet-series">Series</span>[% END %]
18
[% IF facets_loo.type_label_ItemTypes %]<span id="facet-itypes">Item types</span>[% END %]
19
[% UNLESS singleBranchMode %]
20
    [% IF ( facets_loo.type_label_HomeLibrary ) %]<span id="facet-home-libraries">Home libraries</span>[% END %]
21
    [% IF ( facets_loo.type_label_HoldingLibrary ) %]<span id="facet-holding-libraries">Holding libraries<span>[% END %]
22
[% END %]
23
[% IF facets_loo.type_label_Location %]<span id="facet-locations">Locations</span>[% END %]
24
<ul>
25
  [% FOREACH facet IN facets_loo.facets %]
26
    <li>
27
      [% SET query_cgi_f = query_cgi | html %]
28
      [% SET limit_cgi_f = limit_cgi | html %]
29
      [% SET url = "/cgi-bin/koha/opac-search.pl?" _ query_cgi_f _ limit_cgi_f %]
30
      [% IF ( sort_by ) %]
31
        [% SET url = url _ "&amp;sort_by=" _ sort_by |html %]
32
      [% END %]
33
      [% facet.facet_link_value = BLOCK %][% facet.facet_link_value | uri %][% END %]
34
      [% IF facet.active %]
35
        [% SET url = url _ "&amp;nolimit=" _ facet.type_link_value _ ":" _ facet.facet_link_value %]
36
        <span class="facet-label">[% facet.facet_label_value %]</span>
37
        [<a href="[% url %]" title="Remove facet [% facet.facet_link_value | html %]">x</a>]
38
      [% ELSE %]
39
        [% SET url = url _ "&amp;limit=" _ facet.type_link_value _ ":" _ facet.facet_link_value %]
40
        <span class="facet-label"><a href="[% url %]" title="[% facet.facet_title_value |html %]">[% facet.facet_label_value %]</a></span>
41
        [% IF ( displayFacetCount ) %]
42
          <span class="facet-count"> ([% facet.facet_count %])</span>
43
        [% END %]
44
      [% END %]
45
    </li>
46
  [% END %]
47
  [% IF ( facets_loo.expandable ) %]
48
    <li class="showmore"><a href="/cgi-bin/koha/opac-search.pl?[% query_cgi |html %][% limit_cgi |html %][% IF ( sort_by ) %]&amp;sort_by=[% sort_by |html %][% END %][% IF ( offset ) %]&amp;offset=[% offset %][% END %]&amp;expand=[% facets_loo.expand %]#[% facets_loo.type_id %]">Show more</a>
49
    </li>
50
  [% END %]
51
</ul>
52
</li>
53
[% END %]
54
[% END %]
55
</ul>
56
</div>
57
<div id="opacresultssidebar">
58
[% OPACResultsSidebar %]
59
</div>
60
[% END %]
61
[% END %]
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/opac-topissues.inc (-47 lines)
Lines 1-47 Link Here
1
<div id="search-facets">
2
<h4>Refine your search</h4>
3
<form method="get" action="/cgi-bin/koha/opac-topissues.pl">
4
		<fieldset>
5
          <ol>  <li><label for="limit">Show the top </label> <select name="limit" id="limit" style="width: 10em;">
6
                            [% IF ( limit == 10 ) %]<option value ="10" selected="selected">10 titles</option>[% ELSE %]<option value="10">10 titles</option>[% END %]
7
                            [% IF ( limit == 15 ) %]<option value ="15" selected="selected">15 titles</option>[% ELSE %]<option value="15">15 titles</option>[% END %]
8
                            [% IF ( limit == 20 ) %]<option value ="20" selected="selected">20 titles</option>[% ELSE %]<option value="20">20 titles</option>[% END %]
9
                            [% IF ( limit == 30 ) %]<option value ="30" selected="selected">30 titles</option>[% ELSE %]<option value="30">30 titles</option>[% END %]
10
                            [% IF ( limit == 40 ) %]<option value ="40" selected="selected">40 titles</option>[% ELSE %]<option value="40">40 titles</option>[% END %]
11
                            [% IF ( limit == 50 ) %]<option value ="50" selected="selected">50 titles</option>[% ELSE %]<option value="50">50 titles</option>[% END %]
12
                            [% IF ( limit == 100 ) %]<option value ="100" selected="selected">100 titles</option>[% ELSE %]<option value="100">100 titles</option>[% END %]
13
                        </select>
14
						</li>
15
				<li>
16
               <label for="branch">From: </label>
17
                <select name="branch" id="branch" style="width: 10em;">
18
                <option value="">All libraries</option>
19
                [% FOREACH branchloo IN branchloop %]
20
                    [% IF ( branchloo.selected ) %]<option value="[% branchloo.value %]" selected="selected">[% ELSE %]<option value="[% branchloo.value %]">[% END %]
21
                        [% branchloo.branchname %]
22
                    </option>
23
                [% END %]
24
                </select>
25
            </li>
26
            <li><label for="itemtype">Limit to: </label>
27
                    <select name="itemtype" id="itemtype" style="width: 10em;">
28
                        [% IF ( ccodesearch ) %]<option value="">All collections</option>[% ELSE %]<option value="">All item types</option>[% END %]
29
                        [% FOREACH itemtypeloo IN itemtypeloop %]
30
                            [% IF ( itemtypeloo.selected ) %]<option value="[% itemtypeloo.value %]" selected="selected">[% ELSE %]<option value="[% itemtypeloo.value %]">[% END %]
31
                                [% itemtypeloo.description %]
32
                            </option>
33
                        [% END %]
34
                    </select></li>
35
			<li>
36
            <label for="timeLimit">Acquired in the last:</label> <select name="timeLimit" id="timeLimit">
37
                [% IF ( timeLimit == 3 ) %]<option value="3" selected="selected">3 months</option>[% ELSE %]<option value="3">3 months</option>[% END %]
38
                 [% IF ( timeLimit == 6 ) %]<option value="6" selected="selected">6 months</option>[% ELSE %]<option value="6">6 months</option>[% END %]
39
                 [% IF ( timeLimit == 12 ) %]<option value="12" selected="selected">12 months</option>[% ELSE %]<option value="12">12 months</option>[% END %]
40
                 [% IF ( timeLimit == 999 ) %]<option value="999" selected="selected">No limit</option>[% ELSE %]<option value="999">No limit</option>[% END %]
41
				</select>
42
            </li></ol>
43
        <input type="hidden" name="do_it" value="1" />
44
		
45
    </fieldset><fieldset class="action"><input type="submit" value="Submit" /></fieldset>
46
    </form>
47
</div>
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/page-numbers.inc (-6 lines)
Lines 1-6 Link Here
1
[% IF ( PAGE_NUMBERS ) %]<div class="pages">
2
    <!-- Row of numbers corresponding to search result pages -->
3
        [% IF ( previous_page_offset.defined ) %]<a class="nav" href="/cgi-bin/koha/opac-search.pl?[% query_cgi |html %][% limit_cgi |html %]&amp;offset=[% previous_page_offset %][% IF ( sort_by ) %]&amp;sort_by=[% sort_by |html %][% END %]">&lt;&lt; Previous</a>[% END %]
4
    [% FOREACH PAGE_NUMBER IN PAGE_NUMBERS %][% IF ( PAGE_NUMBER.highlight ) %]<span class="current">[% PAGE_NUMBER.pg %]</span>[% ELSE %]        <a class="nav" href="/cgi-bin/koha/opac-search.pl?[% query_cgi |html %][% limit_cgi |html %]&amp;offset=[% PAGE_NUMBER.offset %][% IF ( sort_by ) %]&amp;sort_by=[% sort_by |html%][% END %]">[% PAGE_NUMBER.pg %]</a>[% END %]
5
    [% END %]
6
        [% IF ( next_page_offset ) %]<a class="nav" href="/cgi-bin/koha/opac-search.pl?[% query_cgi |html %][% limit_cgi |html %]&amp;offset=[% next_page_offset %][% IF ( sort_by ) %]&amp;sort_by=[% sort_by |html %][% END %]">Next &gt;&gt;</a>[% END %] </div>[% END %]
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/patron-title.inc (-5 lines)
Lines 1-5 Link Here
1
[% IF category_type == 'I' %]
2
    [% surname %] [% IF othernames %] ([% othernames %]) [% END %]
3
[% ELSE %]
4
    [% firstname %] [% surname %]
5
[% END %]
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/resort_form.inc (-70 lines)
Lines 1-70 Link Here
1
<option value="relevance">Relevance</option>
2
<optgroup label="Popularity">
3
[% IF ( sort_by == "popularity_dsc" ) %]
4
<option value="popularity_dsc" selected="selected">Popularity (most to least)</option>[% ELSE %]
5
<option value="popularity_dsc">Popularity (most to least)</option>
6
[% END %]
7
[% IF ( sort_by == "popularity_asc" ) %]
8
<option value="popularity_asc" selected="selected">Popularity (least to most)</option>[% ELSE %]
9
<option value="popularity_asc">Popularity (least to most)</option>
10
[% END %]
11
</optgroup>
12
<optgroup label="Author">
13
[% IF ( sort_by == "author_az" || sort_by == "author_asc" ) %]
14
<option value="author_az" selected="selected">Author (A-Z)</option>
15
[% ELSE %]
16
<option value="author_az">Author (A-Z)</option>
17
[% END %]
18
[% IF ( sort_by == "author_za" || sort_by == "author_dsc" ) %]
19
<option value="author_za" selected="selected">Author (Z-A)</option>
20
[% ELSE %]
21
<option value="author_za">Author (Z-A)</option>
22
[% END %]
23
</optgroup>
24
<optgroup label="Call Number">
25
[% IF ( sort_by == "call_number_asc" ) %]
26
<option value="call_number_asc" selected="selected">Call number (0-9 to A-Z)</option>
27
[% ELSE %]
28
<option value="call_number_asc">Call number (0-9 to A-Z)</option>
29
[% END %]
30
[% IF ( sort_by == "call_number_dsc" ) %]
31
<option value="call_number_dsc" selected="selected">Call number (Z-A to 9-0)</option>
32
[% ELSE %]
33
<option value="call_number_dsc">Call number (Z-A to 9-0)</option>
34
[% END %]
35
</optgroup>
36
<optgroup label="Dates">
37
[% IF ( sort_by == "pubdate_dsc" ) %]
38
<option value="pubdate_dsc" selected="selected">Publication/Copyright date: Newest to oldest</option>
39
[% ELSE %]
40
<option value="pubdate_dsc">Publication/Copyright date: Newest to oldest</option>
41
[% END %]
42
[% IF ( sort_by == "pubdate_asc" ) %]
43
<option value="pubdate_asc" selected="selected">Publication/Copyright date: Oldest to newest</option>
44
[% ELSE %]
45
<option value="pubdate_asc">Publication/Copyright date: Oldest to newest</option>
46
[% END %]
47
[% IF ( sort_by == "acqdate_dsc" ) %]
48
<option value="acqdate_dsc" selected="selected">Acquisition date: Newest to oldest</option>
49
[% ELSE %]
50
<option value="acqdate_dsc">Acquisition date: Newest to oldest</option>
51
[% END %]
52
[% IF ( sort_by == "acqdate_asc" ) %]
53
<option value="acqdate_asc" selected="selected">Acquisition date: Oldest to newest</option>
54
[% ELSE %]
55
<option value="acqdate_asc">Acquisition date: Oldest to newest</option>
56
[% END %]
57
</optgroup>
58
<optgroup label="Title">
59
[% IF ( sort_by == "title_az" || sort_by == "title_asc" ) %]
60
<option value="title_az" selected="selected">Title (A-Z)</option>
61
[% ELSE %]
62
<option value="title_az">Title (A-Z)</option>
63
[% END %]
64
[% IF ( sort_by == "title_za" || sort_by == "title_dsc" ) %]
65
<option value="title_za" selected="selected">Title (Z-A)</option>
66
[% ELSE %]
67
<option value="title_za">Title (Z-A)</option>
68
[% END %]
69
</optgroup>
70
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/search/facets.inc (-56 lines)
Lines 1-56 Link Here
1
[% IF facets_loop %]
2
  <div id="search-facets">
3
    <h4>Refine your search</h4>
4
    <ul>
5
      [% FOR facets IN facets_loop %]
6
        <li>
7
          [% facets.label %]
8
          <ul class="facets_list">
9
            [% FOR value IN facets.values %]
10
              <li>
11
                [% IF ( value.active ) %]
12
                  [% value.lib %] ([% value.count %])
13
                  [% SET url = "/cgi-bin/koha/opac-search.pl?" %]
14
                  [% SET first = 1 %]
15
                  [% FOR p IN follower_params %]
16
                    [% IF p.var != 'filters' %]
17
                      [% UNLESS first %]
18
                        [% SET url = url _ '&' %]
19
                      [% END %]
20
                      [% SET first = 0 %]
21
                      [% SET url = url _ p.var _ '=' _ p.val %]
22
                    [% END %]
23
                  [% END %]
24
                  [% FOR f IN filters %]
25
                    [% UNLESS f.var == facets.indexname && f.val == value.value %]
26
                      [% SET url = url _ '&filters=' _ f.var _ ':&quot;' _ f.val _ '&quot;' %]
27
                    [% END %]
28
                  [% END %]
29
                  [<a href="[% url |url %]">x</a>]
30
                [% ELSE %]
31
                  [% SET url = "/cgi-bin/koha/opac-search.pl?" %]
32
                  [% SET first = 1 %]
33
                  [% FOR p IN follower_params %]
34
                    [% IF p.var != 'filters' %]
35
                      [% UNLESS first %]
36
                        [% SET url = url _ '&' %]
37
                      [% END %]
38
                      [% SET first = 0 %]
39
                      [% SET url = url _ p.var _ '=' _ p.val %]
40
                    [% END %]
41
                  [% END %]
42
                  [% FOR f IN filters %]
43
                    [% SET url = url _ '&filters=' _ f.var _ ':&quot;' _ f.val _ '&quot;' %]
44
                  [% END %]
45
                  [% SET url = url _ '&filters=' _ facets.indexname _ ':&quot;' _ value.value _ '&quot;' %]
46
47
                  <a href="[% url |url %]">[% value.lib %]</a> ([% value.count %])
48
                [% END %]
49
              </li>
50
            [% END %]
51
          </ul>
52
        </li>
53
      [% END %]
54
    </ul>
55
</div>
56
[% END %]
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/search/page-numbers.inc (-17 lines)
Lines 1-17 Link Here
1
[% IF ( PAGE_NUMBERS ) %]
2
  <div class="pages">
3
    [% IF ( previous_page ) %]
4
      <a class="nav" href="?[% FOREACH fp IN follower_params %][% fp.var |url %]=[% fp.val |url %]&amp;[% END %]page=[% previous_page |url %]">&lt;&lt; Previous</a>
5
    [% END %]
6
    [% FOREACH PAGE_NUMBER IN PAGE_NUMBERS %]
7
      [% IF ( PAGE_NUMBER.current ) %]
8
        <span class="current">[% PAGE_NUMBER.page %]</span>
9
      [% ELSE %]
10
        <a class="nav" href="?[% FOREACH fp IN follower_params %][% fp.var |url %]=[% fp.val |url %]&amp;[% END %]page=[% PAGE_NUMBER.page |url %]">[% PAGE_NUMBER.page %]</a>
11
      [% END %]
12
    [% END %]
13
    [% IF ( next_page ) %]
14
      <a class="nav" href="?[% FOREACH fp IN follower_params %][% fp.var |url %]=[% fp.val |url %]&amp;[% END %]page=[% next_page |url %]">Next &gt;&gt;</a>
15
    [% END %]
16
  </div>
17
[% END %]
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/search/resort_form.inc (-23 lines)
Lines 1-23 Link Here
1
[% IF sort_by == "score asc" %]
2
  <option value="score asc" selected="selected">Relevance asc</option>
3
[% ELSE %]
4
  <option value="score asc">Relevance asc</option>
5
[% END %]
6
[% IF sort_by == "score desc" %]
7
  <option value="score desc" selected="selected">Relevance desc</option>
8
[% ELSE %]
9
  <option value="score desc">Relevance desc</option>
10
[% END %]
11
12
[% FOREACH ind IN sortable_indexes %]
13
  [% IF sort_by == "$ind.code asc" %]
14
    <option value="[% ind.code %] asc" selected="selected">[% ind.label %] asc</option>
15
  [% ELSE %]
16
    <option value="[% ind.code %] asc">[% ind.label %] asc</option>
17
  [% END %]
18
  [% IF sort_by == "$ind.code desc" %]
19
    <option value="[% ind.code %] desc" selected="selected">[% ind.label %] desc</option>
20
  [% ELSE %]
21
    <option value="[% ind.code %] desc">[% ind.label %] desc</option>
22
  [% END %]
23
[% END %]
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/shelfbrowser.inc (-143 lines)
Lines 1-143 Link Here
1
[% BLOCK shelfbrowser %]
2
  [% IF OpenOPACShelfBrowser %]
3
    <div id="shelfbrowser">
4
        <h5 style="text-align: center;">
5
            [% IF ( starting_homebranch ) %]Browsing [% starting_homebranch %] Shelves[% END %]
6
            [% IF ( starting_location ) %], Shelving location: [% starting_location %][% END %]
7
            [% IF ( starting_ccode ) %], Collection code: [% starting_ccode %][% END %]
8
            <a style="font-size: 75%;" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% biblionumber %]" class="close_shelf" >Close shelf browser</a>
9
        </h5>
10
11
        <table>
12
            <tr>
13
                <td rowspan="2" style="width:20px;">
14
                  [% IF shelfbrowser_prev_item %]
15
                    <div id="browser_previous">
16
                        <a href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% shelfbrowser_prev_item.biblionumber %]&amp;shelfbrowse_itemnumber=[% shelfbrowser_prev_item.itemnumber %]#shelfbrowser">Previous</a>
17
                    </div>
18
                  [% END %]
19
                </td>
20
21
                [% FOREACH item IN shelfbrowser_items %]
22
                    <td>
23
                        <a href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% item.biblionumber %]&amp;shelfbrowse_itemnumber=[% item.itemnumber %]#shelfbrowser">
24
                            [% IF ( OPACLocalCoverImages ) %]
25
                                <div title="[% item.biblionumber |url %]" class="[% item.biblionumber %] thumbnail-shelfbrowser" id="local-thumbnail-shelf-[% item.biblionumber %]"></div>
26
                            [% END %]
27
                            [% IF ( OPACAmazonCoverImages ) %]
28
                                [% IF ( item.browser_normalized_isbn ) %]
29
                                    <img border="0" src="http://images.amazon.com/images/P/[% item.browser_normalized_isbn %].01._AA75_PU_PU-5_.jpg" alt="" />
30
                                [% ELSE %]
31
                                    <span class="no-image">No cover image available</span>
32
                                [% END %]
33
                            [% END %]
34
35
                            [% IF ( SyndeticsEnabled ) %]
36
                                [% IF ( SyndeticsCoverImages ) %]
37
                                    [% IF ( content_identifier_exists ) %]
38
                                        [% IF ( using_https ) %]
39
                                            <img border="0" src="https://secure.syndetics.com/index.aspx?isbn=[% item.browser_normalized_isbn %]/SC.GIF&amp;client=[% SyndeticsClientCode %][% IF ( item.browser_normalized_upc ) %]&amp;upc=[% item.browser_normalized_upc %][% END %][% IF ( item.browser_normalized_oclc ) %]&amp;oclc=[% item.browser_normalized_oclc %][% END %]&amp;type=xw10" alt="" />
40
                                        [% ELSE %]
41
                                            <img border="0" src="http://www.syndetics.com/index.aspx?isbn=[% item.browser_normalized_isbn %]/SC.GIF&amp;client=[% SyndeticsClientCode %][% IF ( item.browser_normalized_upc ) %]&amp;upc=[% item.browser_normalized_upc %][% END %][% IF ( item.browser_normalized_oclc ) %]&amp;oclc=[% item.browser_normalized_oclc %][% END %]&amp;type=xw10" alt="" />
42
                                        [% END %]
43
                                    [% ELSE %]
44
                                        <span class="no-image">No cover image available</span>
45
                                    [% END %]
46
                                [% END %]
47
                            [% END %]
48
49
                            [% IF ( GoogleJackets ) %]
50
                                [% IF ( item.browser_normalized_isbn ) %]
51
                                    <div style="block" title="[% item.biblionumber |url %]" class="[% item.browser_normalized_isbn %]" id="gbs-thumbnail-preview[% loop.count %]"></div>
52
                                [% ELSE %]
53
                                    <span class="no-image">No cover image available</span>
54
                                [% END %]
55
                            [% END %]
56
                            [% IF ( BakerTaylorEnabled ) %]
57
                                [% IF ( item.browser_normalized_isbn ) %]
58
                                    <img alt="See Baker &amp; Taylor" src="[% BakerTaylorImageURL |html %][% item.browser_normalized_isbn %]" />
59
                                [% ELSE %]
60
                                    <span class="no-image">No cover image available</span>
61
                                [% END %]
62
                            [% END %]
63
                        </a>
64
                    </td>
65
                [% END %]
66
67
                <td rowspan="2" style="width:20px;">
68
                  [% IF shelfbrowser_next_item %]
69
                    <div id="browser_next">
70
                        <a href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% shelfbrowser_next_item.biblionumber %]&amp;shelfbrowse_itemnumber=[% shelfbrowser_next_item.itemnumber %]#shelfbrowser">Next</a>
71
                    </div>
72
                  [% END %]
73
                </td>
74
            </tr>
75
76
            <tr>
77
                [% FOREACH item IN shelfbrowser_items %]
78
                    <td class="top">
79
                        [% item.itemcallnumber %]
80
                        <a href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% item.biblionumber %]&amp;shelfbrowse_itemnumber=[% item.itemnumber %]#shelfbrowser">[% item.title |html %]</a>
81
                    </td>
82
                [% END %]
83
            </tr>
84
        </table>
85
    </div>
86
    <script type="text/javascript">
87
      $(document).ready(function(){
88
        $(".close_shelf").click(function(e){
89
            e.preventDefault();
90
            $("#shelfbrowser").toggle();
91
        });
92
        [% IF shelfbrowser_prev_item.itemnumber %]
93
          $("#browser_previous a").click(function(e){
94
            e.preventDefault();
95
            $.ajax({
96
                    url: "/cgi-bin/koha/svc/shelfbrowser.pl",
97
                type: "POST",
98
                data: {
99
                    "shelfbrowse_itemnumber": [% shelfbrowser_prev_item.itemnumber %]
100
                },
101
                success: function(data){
102
                    $("#shelfbrowser").replaceWith(data);
103
                    [% IF ( GoogleJackets ) %]
104
                      KOHA.Google.GetCoverFromIsbn([% covernewwindow %]);
105
                    [% END %]
106
                    [% IF OpenLibraryCovers %]
107
                      KOHA.OpenLibrary.GetCoverFromIsbn();
108
                    [% END %]
109
                    [% IF OPACLocalCoverImages %]
110
                      KOHA.LocalCover.GetCoverFromBibnumber(true);
111
                    [% END %]
112
                }
113
            });
114
          });
115
        [% END %]
116
        [% IF shelfbrowser_next_item.itemnumber %]
117
          $("#browser_next a").click(function(e){
118
            e.preventDefault();
119
            $.ajax({
120
                url: "/cgi-bin/koha/svc/shelfbrowser.pl",
121
                type: "POST",
122
                data: {
123
                    "shelfbrowse_itemnumber": [% shelfbrowser_next_item.itemnumber %]
124
                },
125
                success: function(data){
126
                    $("#shelfbrowser").replaceWith(data);
127
                    [% IF ( GoogleJackets ) %]
128
                      KOHA.Google.GetCoverFromIsbn([% covernewwindow %]);
129
                    [% END %]
130
                    [% IF OpenLibraryCovers %]
131
                      KOHA.OpenLibrary.GetCoverFromIsbn();
132
                    [% END %]
133
                    [% IF OPACLocalCoverImages %]
134
                      KOHA.LocalCover.GetCoverFromBibnumber(true);
135
                    [% END %]
136
                }
137
            });
138
          });
139
        [% END %]
140
      });
141
    </script>
142
  [% END %]
143
[% END %][%# end of shelfbrowser block %]
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/subtypes_unimarc.inc (-209 lines)
Lines 1-209 Link Here
1
    <fieldset>
2
    <legend>Coded fields</legend>
3
    <p>
4
    <label>Audience</label>
5
    <select name="limit" class="subtype">
6
            <option value="" selected="selected" >Any</option>
7
            <option value="ta:a">juvenile, general</option>
8
            <option value="ta:b">pre-primary (0-5)</option>
9
            <option value="ta:c">primary (5-8)</option>
10
            <option value="ta:d">children (9-14)</option>
11
            <option value="ta:e">young adult</option>
12
            <option value="ta:k">adult, serious</option>
13
            <option value="ta:m">adult, General</option>
14
            <option value="ta:u">unknown</option>
15
    </select>
16
    </p>
17
    <p>
18
    <label>Physical presentation</label>
19
        <select name="limit" class="subtype">
20
            <option value="" selected="selected" >Any</option>
21
            <option value="ff8-23:r">regular print</option>
22
            <option value="ff8-23:d">large print</option>
23
            <option value="ff8-23:e">newspaper format</option>
24
            <option value="ff8-23:f">Braille or Moon script</option>
25
            <option value="ff8-23:g">microprint</option>
26
            <option value="ff8-23:h">hand-written</option>
27
            <option value="ff8-23:i">multimedia</option>
28
            <option value="ff8-23:j">mini-print</option>
29
            <option value="ff8-23:s">electronic ressource</option>
30
            <option value="ff8-23:t">microform</option>
31
            <option value="ff8-23:z">other form of textual material</option>
32
    </select>
33
    </p>
34
    <p>
35
    <label>Literary genre</label>
36
    <select name="limit" class="subtype">
37
      <option value="" selected="selected" >Any</option>
38
            <option value="lf:a">fiction</option>
39
            <option value="lf:b">drama</option>
40
            <option value="lf:c">essays</option>
41
            <option value="lf:d">humour, satire</option>
42
            <option value="lf:e">letters</option>
43
            <option value="lf:f">short stories</option>
44
            <option value="lf:g">poetry</option>
45
            <option value="lf:h">speeches, oratory</option>
46
            <option value="lf:i">libretto</option>
47
            <option value="lf:y">not a literary text</option>
48
            <option value="lf:z">multiple/other literary forms</option>
49
    </select>
50
    </p>
51
        <p>
52
    <label>Biography</label>
53
        <select name="limit" class="subtype" size="1">
54
            <option value="">Any</option>
55
                <option value="bio:y">not a biography</option>
56
                <option value="bio:a">autobiography</option>
57
                <option value="bio:b">individual biography</option>
58
                <option value="bio:c">collective biography</option>
59
                <option value="bio:d">contains biographical data</option>
60
    </select>
61
        </p>
62
        <p>
63
    <label>Illustration</label>
64
        <select name="limit" class="subtype" size="1">
65
                <option value="">Any</option>
66
                <option value="ff8-18-21:a">illustrations</option>
67
                <option value="ff8-18-21:b">maps</option>
68
                <option value="ff8-18-21:c">portraits</option>
69
                <option value="ff8-18-21:d">charts</option>
70
                <option value="ff8-18-21:e">plans</option>
71
                <option value="ff8-18-21:f">plates</option>
72
                <option value="ff8-18-21:g">music</option>
73
                <option value="ff8-18-21:h">facsimiles</option>
74
                <option value="ff8-18-21:i">coats of arms</option>
75
                <option value="ff8-18-21:j">genealogical tables</option>
76
                <option value="ff8-18-21:k">forms</option>
77
                <option value="ff8-18-21:l">samples</option>
78
                <option value="ff8-18-21:m">sound recordings</option>
79
                <option value="ff8-18-21:n">transparencies</option>
80
                <option value="ff8-18-21:o">illuminations</option>
81
                <option value="ff8-18-21:y">no illustrations</option>
82
        </select>
83
        </p>
84
    <p>
85
    <label>Content</label>
86
    <select name="limit" class="subtype">
87
      <option value="" >Any</option>
88
            <option value="ctype:a" >bibliography</option>
89
            <option value="ctype:b" >catalogue</option>
90
            <option value="ctype:c" >index</option>
91
            <option value="ctype:d" >abstract</option>
92
            <option value="ctype:e" >dictionary</option>
93
            <option value="ctype:f" >encyclopaedia</option>
94
            <option value="ctype:g" >directory</option>
95
            <option value="ctype:h" >project description</option>
96
            <option value="ctype:i" >statistics</option>
97
            <option value="ctype:j" >programmed text books</option>
98
            <option value="ctype:k" >patent</option>
99
            <option value="ctype:l" >standard</option>
100
            <option value="ctype:m" >dissertation or thesis</option>
101
            <option value="ctype:n" >laws and legislation</option>
102
            <option value="ctype:o" >numeric table</option>
103
            <option value="ctype:p" >technical report</option>
104
            <option value="ctype:q" >examination paper</option>
105
            <option value="ctype:r" >literature surveys/reviews</option>
106
            <option value="ctype:s" >treaties</option>
107
            <option value="ctype:t" >cartoons or comic strips</option>
108
            <option value="ctype:v" >dissertation or thesis (revised)</option>
109
            <option value="ctype:w" >religious text</option>
110
            <option value="ctype:z" >other</option>
111
    </select>
112
        </p>
113
        <p>
114
    <label>Video types</label>
115
    <select name="limit" class="subtype">
116
            <option value="">Any</option>
117
      <option value="Video-mt:a">motion picture</option>
118
      <option value="Video-mt:b">visual projection</option>
119
      <option value="Video-mt:c">video recording</option>
120
    </select>
121
        </p>
122
    </fieldset>
123
    <fieldset>
124
    <legend>Serials</legend><p>
125
    <p>
126
    <label>Serial type</label>
127
    <select name="limit" class="subtype">
128
           <option value="">Any type</option>
129
            <option value="ff8-21:a">Periodical</option>
130
            <option value="ff8-21:b">Monographic series</option>
131
            <option value="ff8-21:c">Newspaper</option>
132
            <option value="ff8-21:e">Updating loose-leaf</option>
133
            <option value="ff8-21:f">Database</option>
134
            <option value="ff8-21:g">Updating website</option>
135
            <option value="ff8-21:z">Other</option>
136
    </select>
137
    </p>
138
    <p>
139
    <label>Periodicity</label>
140
    <select name="limit" class="subtype">
141
      <option value="">Any</option>
142
            <option value="ff8-18:a">Daily</option>
143
            <option value="ff8-18:b">Semiweekly</option>
144
            <option value="ff8-18:c">Weekly</option>
145
            <option value="ff8-18:d">Biweekly</option>
146
            <option value="ff8-18:e">Semimonthly</option>
147
            <option value="ff8-18:f">Monthly</option>
148
            <option value="ff8-18:g">Bimonthly</option>
149
            <option value="ff8-18:h">Quarterly</option>
150
            <option value="ff8-18:i">Three times a year</option>
151
            <option value="ff8-18:j">Semiannual</option>
152
            <option value="ff8-18:k">Annual</option>
153
            <option value="ff8-18:l">Biennial</option>
154
            <option value="ff8-18:m">Triennial</option>
155
            <option value="ff8-18:n">Three times a week</option>
156
            <option value="ff8-18:o">Three times a month</option>
157
            <option value="ff8-18:y">Without periodicity</option>
158
            <option value="ff8-18:u">Unknown</option>
159
            <option value="ff8-18:z">Other</option>
160
    </select>
161
    </p>
162
    <p>
163
    <label>Regularity</label>
164
    <select name="limit" class="subtype">
165
            <option value="">Any regularity</option>
166
            <option value="ff8-19:a">regular</option>
167
            <option value="ff8-19:b">normalised irregular</option>
168
            <option value="ff8-19:y">irregular</option>
169
            <option value="ff8-19:u">unknown</option>
170
        </select>
171
        </p>
172
173
        </fieldset>
174
    <fieldset>
175
    <legend>Picture</legend><p>
176
    <select name="limit" class="subtype">
177
        <option value="">Any</option>
178
        <option value="Graphics-type:a">collage</option>
179
        <option value="Graphics-type:b">drawing</option>
180
        <option value="Graphics-type:c">painting</option>
181
        <option value="Graphics-type:d">photomechanical reproduction</option>
182
        <option value="Graphics-type:e">photonegative</option>
183
        <option value="Graphics-type:f">photoprint</option>
184
        <option value="Graphics-type:h">picture</option>
185
        <option value="Graphics-type:i">print</option>
186
        <option value="Graphics-type:k">technical drawing</option>
187
        <option value="Graphics-type:z">other non-projected graphic type</option>
188
    </select>
189
    <select name="limit" class="subtype">
190
            <option value="">Any</option>
191
            <option value="Graphics-support:a">canvas</option>
192
            <option value="Graphics-support:b">bristol board</option>
193
            <option value="Graphics-support:c">cardboard/illustration board</option>
194
            <option value="Graphics-support:d">glass</option>
195
            <option value="Graphics-support:j">plaster</option>
196
            <option value="Graphics-support:k">hardboard</option>
197
            <option value="Graphics-support:l">porcelaine</option>
198
            <option value="Graphics-support:m">stone</option>
199
            <option value="Graphics-support:n">wood</option>
200
            <option value="Graphics-support:v">mixed collection</option>
201
            <option value="Graphics-support:e">synthetics</option>
202
            <option value="Graphics-support:f">skin</option>
203
            <option value="Graphics-support:g">textile</option>
204
            <option value="Graphics-support:h">metal</option>
205
            <option value="Graphics-support:i">paper</option>
206
            <option value="Graphics-support:z">others</option>
207
            <option value="Graphics-support:u">unknown</option>
208
    </select>
209
        </p>
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/usermenu.inc (-39 lines)
Lines 1-39 Link Here
1
[% IF ( opacuserlogin ) %][% IF ( loggedinusername ) %]
2
<div id="menu">
3
<ul>
4
  [% IF ( userview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/opac-user.pl">my summary</a></li>
5
  [% IF ( OPACFinesTab ) %]
6
  [% IF ( accountview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/opac-account.pl">my fines</a></li>
7
  [% END %]
8
  [% IF ( userupdateview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/opac-memberentry.pl">my personal details</a></li>
9
  [% IF ( TagsEnabled ) %]
10
    [% IF ( tagsview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/opac-tags.pl?mine=1">my tags</a></li>
11
  [% END %]
12
  [% IF ( OpacPasswordChange ) %]
13
    [% IF ( passwdview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/opac-passwd.pl">change my password</a></li>
14
  [% END %]
15
  [% IF EnableOpacSearchHistory %]
16
  [% IF ( searchhistoryview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/opac-search-history.pl">my search history</a></li>
17
  [% END %]
18
  [% IF ( opacreadinghistory ) %]
19
  [% IF ( readingrecview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/opac-readingrecord.pl">my reading history</a></li>
20
     [% IF ( OPACPrivacy ) %]
21
       [% IF ( privacyview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/opac-privacy.pl">my privacy</a></li>
22
     [% END %]
23
  [% END %]
24
  [% IF ( suggestion ) %]
25
    [% UNLESS ( AnonSuggestions ) %]
26
      [% IF ( suggestionsview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/opac-suggestions.pl">my purchase suggestions</a></li>
27
    [% END %]
28
  [% END %]
29
  [% IF ( EnhancedMessagingPreferences ) %]
30
    [% IF ( messagingview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/opac-messaging.pl">my messaging</a></li>
31
  [% END %]
32
  [% IF ( virtualshelves ) %] 
33
  [% IF ( listsview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/opac-shelves.pl?display=privateshelves">my lists</a></li>
34
  [% END %]
35
36
</ul>
37
</div>
38
[% END %][% ELSE %][% END %]
39
(-)a/koha-tmpl/opac-tmpl/prog/en/js/amazonimages.js (-14 lines)
Lines 1-14 Link Here
1
// http://www.oreillynet.com/pub/a/javascript/2003/10/21/amazonhacks.html
2
function verify_images() {
3
	$("img").each(function(i){
4
	       if ((this.src.indexOf('images.amazon.com') >= 0) || (this.src.indexOf('g-images.amazon.com') >=0) || (this.src.indexOf('syndetics.com') >=0) ) { 
5
            w = this.width;
6
            h = this.height;
7
            if ((w == 1) || (h == 1)) {
8
				$(this).parent().html("<span class=\"no-image\">"+NO_AMAZON_IMAGE+"</span>");
9
            } else if ((this.complete != null) && (!this.complete)) {
10
				$(this).parent().html("<span class=\"no-image\">"+NO_AMAZON_IMAGE+"</span>");
11
            }
12
        }
13
		});
14
		}
(-)a/koha-tmpl/opac-tmpl/prog/en/js/bakertaylorimages.js (-11 lines)
Lines 1-11 Link Here
1
// http://www.oreillynet.com/pub/a/javascript/2003/10/21/amazonhacks.html
2
function bt_verify_images() {
3
	$("img").each(function(i){
4
	       if (this.src.indexOf('btol.com') >= 0) {
5
            h = this.height;
6
            if (h == 20) {
7
				$(this).before("<span class=\"no-image\" style=\"margin-bottom:5px;width:80px;\">"+NO_BAKERTAYLOR_IMAGE+"</span>");
8
            }
9
		}
10
		});
11
		}
(-)a/koha-tmpl/opac-tmpl/prog/en/js/basket.js (-532 lines)
Lines 1-532 Link Here
1
//////////////////////////////////////////////////////////////////////////////
2
// BASIC FUNCTIONS FOR COOKIE MANAGEMENT //
3
//////////////////////////////////////////////////////////////////////////////
4
5
var CGIBIN = "/cgi-bin/koha/";
6
7
8
var nameCookie = "bib_list";
9
var valCookie = readCookie(nameCookie);
10
11
if(valCookie){
12
    var arrayRecords = valCookie.split("/");
13
    if(arrayRecords.length > 0){
14
        var basketcount = arrayRecords.length-1;
15
    } else {
16
        var basketcount = "";
17
    }
18
} else {
19
        var basketcount = "";
20
}
21
22
function writeCookie(name, val, wd) {
23
    if (wd) {
24
        parent.opener.document.cookie = name + "=" + val;
25
    }
26
    else {
27
        parent.document.cookie = name + "=" + val;
28
    }
29
}
30
31
function readCookieValue (str, val_beg) {
32
    var val_end = str.indexOf(";", val_end);
33
    if (val_end == -1)
34
        val_end = str.length;
35
    return str.substring(val_beg, val_end);
36
}
37
38
function readCookie(name, wd) {
39
    var str_name = name + "=";
40
    var str_len = str_name.length;
41
    var str_cookie = "";
42
    if (wd) {
43
        str_cookie = parent.opener.document.cookie;
44
    }
45
    else {
46
        str_cookie = parent.document.cookie;
47
    }
48
        // fixed - getting the part of the basket that is bib_list
49
        var cookie_parts = str_cookie.split(";");
50
            for(var i=0;i < cookie_parts.length;i++) {
51
	            var c = cookie_parts[i];
52
                    while (c.charAt(0)==' ') c = c.substring(1,c.length);
53
		    if(c.indexOf(str_name) == 0) return c.substring(str_name.length,c.length);
54
            }
55
    return null;
56
}
57
58
function delCookie(name) {
59
    var exp = new Date();
60
    exp.setTime(exp.getTime()-1);
61
	if(parent.opener){
62
    parent.opener.document.cookie = name + "=null; expires=" + exp.toGMTString();
63
	} else {
64
	document.cookie = name + "=null; expires=" + exp.toGMTString();
65
	}
66
}
67
68
///////////////////////////////////////////////////////////////////
69
// SPECIFIC FUNCTIONS USING COOKIES //
70
///////////////////////////////////////////////////////////////////
71
72
function openBasket() {
73
    var strCookie = "";
74
    var nameCookie = "bib_list";
75
    var valCookie = readCookie(nameCookie);
76
    if ( valCookie ) {
77
        strCookie = nameCookie + "=" + valCookie;
78
    }
79
80
    if ( strCookie ) {
81
        var iW = 820;
82
        var iH = 450;
83
        var optWin = "status=yes,scrollbars=yes,resizable=yes,toolbar=no,location=yes,height="+iH+",width="+iW;
84
        var loc = CGIBIN + "opac-basket.pl?" + strCookie;
85
        var basket = open(loc, "basket", optWin);
86
        if (window.focus) {basket.focus()}
87
    }
88
    else {
89
        showCartUpdate(MSG_BASKET_EMPTY);
90
    }
91
}
92
93
function addRecord(val, selection,NoMsgAlert) {
94
    var nameCookie = "bib_list";
95
    var valCookie = readCookie(nameCookie);
96
    var write = 0;
97
98
    if ( ! valCookie ) { // empty basket
99
        valCookie = val + '/';
100
        write = 1;
101
        updateBasket(1);
102
    }
103
    else {
104
        // is this record already in the basket ?
105
        var found = false;
106
        var arrayRecords = valCookie.split("/");
107
        for (var i = 0; i < valCookie.length - 1; i++) {
108
            if (val == arrayRecords[i]) {
109
                found = true;
110
                break;
111
            }
112
        }
113
        if ( found ) {
114
            if (selection) {
115
                return 0;
116
            }
117
            if (! NoMsgAlert ) {
118
                showCartUpdate(MSG_RECORD_IN_BASKET);
119
            }
120
        }
121
        else {
122
            valCookie += val + '/';
123
            write = 1;
124
            updateBasket(arrayRecords.length);
125
        }
126
    }
127
128
    if (write) {
129
        writeCookie(nameCookie, valCookie);
130
        if (selection) { // when adding a selection of records
131
            updateLink(val,"add");
132
            return 1;
133
        }
134
        if (! NoMsgAlert ) {
135
            showCartUpdate(MSG_RECORD_ADDED);
136
            updateLink(val,"add");
137
        }
138
    }
139
}
140
141
function AllAreChecked(s){
142
	if (! s.length)	{ return false;}
143
	var l = s.length;
144
	for (var i=0; i < l; i++) {
145
		if(! s[i].checked) { return false; }
146
	}
147
	return true;
148
}
149
150
function SelectAll(){
151
    if(document.bookbag_form.biblionumber.length > 0) {
152
		var checky = AllAreChecked(document.bookbag_form.biblionumber);
153
		var l = document.bookbag_form.biblionumber.length;
154
        for (var i=0; i < l; i++) {
155
            document.bookbag_form.biblionumber[i].checked = (checky) ? false : true;
156
        }
157
    }
158
}
159
160
function addMultiple(){
161
    var c_value = "";
162
    if(document.bookbag_form.biblionumber.length > 0) {
163
        for (var i=0; i < document.bookbag_form.biblionumber.length; i++) {
164
            if (document.bookbag_form.biblionumber[i].checked) {
165
                c_value = c_value + document.bookbag_form.biblionumber[i].value + "/";
166
            }
167
        }
168
        addSelRecords(c_value);
169
    } else {
170
        c_value = c_value + document.bookbag_form.biblionumber.value + "/";
171
        addSelRecords(c_value);
172
    }
173
}
174
175
function addSelRecords(valSel) { // function for adding a selection of biblios to the basket
176
                                                // from the results list
177
    var arrayRecords = valSel.split("/");
178
    var i = 0;
179
    var nbAdd = 0;
180
    for (i=0;i<arrayRecords.length;i++) {
181
        if (arrayRecords[i]) {
182
            nbAdd += addRecord(arrayRecords[i], 1);
183
        }
184
        else {
185
            break;
186
        }
187
    }
188
    var msg = "";
189
    if (nbAdd) {
190
        if (i > nbAdd) {
191
            msg = nbAdd+" "+MSG_NRECORDS_ADDED+", "+(i-nbAdd)+" "+MSG_NRECORDS_IN_BASKET;
192
        }
193
        else {
194
            msg = nbAdd+" "+MSG_NRECORDS_ADDED;
195
        }
196
    }
197
    else {
198
        if (i < 1) {
199
            msg = MSG_NO_RECORD_SELECTED;
200
        }
201
        else {
202
            msg = MSG_NO_RECORD_ADDED+" ("+MSG_NRECORDS_IN_BASKET+") !";
203
        }
204
    }
205
	showCartUpdate(msg);
206
}
207
208
function showCartUpdate(msg){
209
	// set body of popup window
210
	$("#cartDetails").html(msg);
211
	showCart();
212
	setTimeout("hideCart()",2000);	
213
}
214
215
function showListsUpdate(msg){
216
       // set body of popup window
217
       $("#listsDetails").html(msg);
218
       showLists();
219
       setTimeout("hideLists()",2000); 
220
}
221
222
function selRecord(num, status) {
223
    var str = document.myform.records.value
224
    if (status){
225
        str += num+"/";
226
    }
227
    else {
228
        str = delRecord(num, str);
229
    }
230
231
    document.myform.records.value = str;
232
}
233
234
function delSingleRecord(biblionumber){
235
    var nameCookie = "bib_list";
236
    var valCookie = readCookie(nameCookie);
237
    var arrayRecords = valCookie.split("/");
238
    var pos = jQuery.inArray(biblionumber,arrayRecords);
239
    arrayRecords.splice(pos,1);
240
    valCookie = arrayRecords.join("/");
241
    writeCookie( nameCookie, valCookie );
242
    updateBasket( arrayRecords.length-1 );
243
    updateLink(biblionumber,"del");
244
    showCartUpdate(MSG_RECORD_REMOVED);
245
}
246
247
function delSelRecords() {
248
    var recordsSel = 0;
249
    var end = 0;
250
    var nameCookie = "bib_list";
251
    var valCookie = readCookie(nameCookie, 1);
252
    if (valCookie) {
253
        var str = document.myform.records.value;
254
        if (str.length > 0){
255
            recordsSel = 1;
256
            var str2 = valCookie;
257
            while (!end){
258
                s = str.indexOf("/");
259
                if (s>0){
260
                    num = str.substring(0, s);
261
                    str = delRecord(num,str);
262
                    str2 = delRecord(num,str2);
263
                    updateLink(num,"del",top.opener);
264
                } else {
265
                    end = 1;
266
                }
267
            }
268
269
            if (str2.length == 0) { // equivalent to emptying the basket
270
                var rep = false;
271
                rep = confirm(MSG_CONFIRM_DEL_BASKET);
272
                if (rep) {
273
                    delCookie(nameCookie);
274
                    document.location = "about:blank";
275
                    updateBasket(0,top.opener);
276
                    window.close();
277
                } else {
278
                    return;
279
                }
280
            } else {
281
                writeCookie(nameCookie, str2, 1);
282
            }
283
        }
284
    }
285
286
    if (recordsSel) {
287
        var strCookie = "";
288
        var nameCookie = "bib_list";
289
        var valCookie = readCookie(nameCookie, 1);
290
        strCookie = nameCookie + "=" + valCookie;
291
        var arrayRecords = valCookie.split("/");
292
        updateBasket(arrayRecords.length-1,top.opener);
293
        document.location = CGIBIN + "opac-basket.pl?" + strCookie;
294
    }
295
    else {
296
        alert(MSG_NO_RECORD_SELECTED);
297
    }
298
}
299
300
function delRecord (n, s) {
301
    var re = /\d/;
302
    var aux = s;
303
    var found = 0;
304
    var pos = -1;
305
306
    while (!found) {
307
        pos = aux.indexOf(n, pos+1);
308
        var charAfter = aux.charAt(pos+n.length); // character right after the researched string
309
        if (charAfter.match(re)) { // record number inside another one
310
            continue;
311
        }
312
        else { // good record number
313
            aux = s.substring(0, pos)+ s.substring(pos+n.length+1, s.length);
314
            s = aux;
315
            found = 1;
316
        }
317
    }
318
319
    return s;
320
}
321
322
323
function delBasket() {
324
    var nameCookie = "bib_list";
325
326
    var rep = false;
327
    rep = confirm(MSG_CONFIRM_DEL_BASKET);
328
    if (rep) {
329
        delCookie(nameCookie);
330
        updateAllLinks(top.opener);
331
        document.location = "about:blank";
332
        updateBasket(0,top.opener);
333
        window.close();
334
    }
335
}
336
337
338
function quit() {
339
    if (document.myform.records.value) {
340
        var rep = false;
341
        rep = confirm(MSG_CONFIRM_DEL_RECORDS);
342
        if (rep) {
343
            delSelRecords();
344
        }
345
    }
346
    updateBasket(arrayRecords.length-1,top.opener);
347
    window.close();
348
}
349
350
function sendBasket() {
351
    var nameCookie = "bib_list";
352
    var valCookie = readCookie(nameCookie);
353
    var strCookie = nameCookie + "=" + valCookie;
354
355
    var loc = CGIBIN + "opac-sendbasket.pl?" + strCookie;
356
357
    var optWin="scrollbars=yes,resizable=yes,height=600,width=900,top=50,left=100";
358
    var win_form = open(loc,"win_form",optWin);
359
}
360
361
function downloadBasket() {
362
    var nameCookie = "bib_list";
363
    var valCookie = readCookie(nameCookie);
364
    var strCookie = nameCookie + "=" + valCookie;
365
366
    var loc = CGIBIN + "opac-downloadcart.pl?" + strCookie;
367
368
    open(loc,"win_form",'scrollbars=no,resizable=no,height=300,width=450,top=50,left=100');
369
}
370
371
function printBasket() {
372
    var loc = document.location + "&print=1";
373
    document.location = loc;
374
}
375
376
function showMore() {
377
    var strCookie = "";
378
379
    var nameCookie = "bib_list";
380
    var valCookie = readCookie(nameCookie);
381
    if (valCookie) {
382
        strCookie = nameCookie + "=" + valCookie;
383
    }
384
    var loc = CGIBIN + "opac-basket.pl?" + strCookie + "&verbose=1";
385
    document.location = loc;
386
}
387
388
function showLess() {
389
    var strCookie = "";
390
391
    var nameCookie = "bib_list";
392
    var valCookie = readCookie(nameCookie);
393
    if (valCookie) {
394
        strCookie = nameCookie + "=" + valCookie;
395
    }
396
    var loc = CGIBIN + "opac-basket.pl?" + strCookie + "&verbose=0";
397
    document.location = loc;
398
}
399
400
function holdSel() {
401
    var items = document.getElementById('records').value;
402
    if (items) {
403
        parent.opener.document.location = "/cgi-bin/koha/opac-reserve.pl?biblionumbers=" + items;
404
        window.close();
405
    } else {
406
        alert(MSG_NO_RECORD_SELECTED);
407
    }
408
}
409
410
function updateBasket(updated_value,target) {
411
	if(target){
412
	target.$('#basketcount').html("<span>"+updated_value+"</span>");
413
    target.$('#cartDetails').html(MSG_IN_YOUR_CART+updated_value);
414
	} else {
415
	$('#basketcount').html("<span>"+updated_value+"</span>");
416
    $('#cartDetails').html(MSG_IN_YOUR_CART+updated_value);
417
	}
418
	var basketcount = updated_value;
419
}
420
421
function openBiblio(dest,biblionumber) {
422
    openerURL=dest+"?biblionumber="+biblionumber;
423
    opener.document.location = openerURL;
424
    opener.focus();
425
}
426
427
function addSelToShelf() {
428
    var items = document.getElementById('records').value;
429
	if(items){
430
    document.location = "/cgi-bin/koha/opac-addbybiblionumber.pl?biblionumber="+items;
431
	} else {
432
        alert(MSG_NO_RECORD_SELECTED);
433
    }
434
}
435
436
///  vShelfAdd()  builds url string for multiple-biblio adds.
437
438
function vShelfAdd() {
439
        bibs= new Array;
440
        if(document.bookbag_form.biblionumber.length > 0) {
441
                for (var i=0; i < document.bookbag_form.biblionumber.length; i++) {
442
                        if (document.bookbag_form.biblionumber[i].checked) {
443
                                bibs.push("biblionumber=" +  document.bookbag_form.biblionumber[i].value);
444
                        }
445
                }
446
	    if (bibs.length == 0) { showListsUpdate(MSG_NO_RECORD_SELECTED); }
447
            return bibs.join("&");
448
        } else {
449
            if (document.bookbag_form.biblionumber.checked) {
450
                return "biblionumber=" + document.bookbag_form.biblionumber.value;
451
            }
452
        }
453
}
454
455
function showCart(){
456
		var position = $("#cartmenulink").offset();
457
        var scrolld = $(window).scrollTop();
458
		var top = position.top + $("#cartmenulink").outerHeight();
459
        if( scrolld > top ){
460
            top = scrolld + 15;
461
        }
462
		var menuWidth = 200;
463
		var buttonWidth = $("#cartmenulink").innerWidth();
464
		var buttonOffset = menuWidth - buttonWidth;
465
		var left = position.left -  buttonOffset;
466
		$("#cartDetails").css("position","absolute").css("top",top);
467
		$("#cartDetails").css("position","absolute").css("left",left);
468
		$("#cartDetails").fadeIn("fast");
469
}
470
471
function showLists(){
472
               var position = $("#listsmenulink").offset();
473
              var top = position.top + $("#listsmenulink").outerHeight();
474
               var menuWidth = 200;
475
               var buttonWidth = $("#listsmenulink").innerWidth();
476
               var buttonOffset = menuWidth - buttonWidth;
477
               var left = position.left -  buttonOffset;
478
               $("#listsDetails").css("position","absolute").css("top",top);
479
               $("#listsDetails").css("position","absolute").css("left",left);
480
               $("#listsDetails").fadeIn("fast");
481
}
482
483
function hideCart(){
484
    $("#cartDetails").fadeOut("fast");
485
}
486
487
function hideLists(){
488
    $("#listsDetails").fadeOut("fast");
489
}
490
491
function updateLink(val,op,target){
492
    if(target){
493
        if(op == "add"){
494
            target.$("a.cart"+val).html(MSG_ITEM_IN_CART).addClass("incart");
495
            target.$("a.cartR"+val).show();
496
        } else {
497
            target.$("a.cart"+val).html(MSG_ITEM_NOT_IN_CART).removeClass("incart").addClass("addtocart cart"+val);
498
            target.$("a.cartR"+val).hide();
499
        }
500
    } else {
501
        if(op == "add"){
502
            $("a.cart"+val).html(MSG_ITEM_IN_CART).addClass("incart");
503
            $("a.cartR"+val).show();
504
        } else {
505
            $("a.cart"+val).html(MSG_ITEM_NOT_IN_CART).removeClass("incart").addClass("addtocart cart"+val);
506
            $("a.cartR"+val).hide();
507
        }
508
    }
509
}
510
511
function updateAllLinks(target){
512
    if(target){
513
        target.$("a.incart").html(MSG_ITEM_NOT_IN_CART).removeClass("incart").addClass("addtocart");
514
        target.$("a.cartRemove").hide();
515
    } else {
516
        $("a.incart").html(MSG_ITEM_NOT_IN_CART).removeClass("incart").addClass("addtocart");
517
        $("a.cartRemove").hide();
518
    }
519
}
520
521
$("#cartDetails").ready(function(){
522
	$("#cartDetails,#cartmenulink").click(function(){ hideCart(); });
523
	$("#cartmenulink").click(function(){ openBasket(); return false; });
524
	$("#cartmenulink").hoverIntent(function(){
525
		showCart();
526
	},function(){
527
		hideCart();
528
	});
529
	if(basketcount){ updateBasket(basketcount) }
530
});
531
532
(-)a/koha-tmpl/opac-tmpl/prog/en/js/browserid_include.js (-1 lines)
Line 1 Link Here
1
(function(){var a=function(){function e(a){return Array.isArray?Array.isArray(a):a.constructor.toString().indexOf("Array")!=-1}function d(a,c,d){var e=b[c][d];for(var f=0;f<e.length;f++)e[f].win===a&&e.splice(f,1);b[c][d].length===0&&delete b[c][d]}function c(a,c,d,e){function f(b){for(var c=0;c<b.length;c++)if(b[c].win===a)return!0;return!1}var g=!1;if(c==="*")for(var h in b){if(!b.hasOwnProperty(h))continue;if(h==="*")continue;if(typeof b[h][d]=="object"){g=f(b[h][d]);if(g)break}}else b["*"]&&b["*"][d]&&(g=f(b["*"][d])),!g&&b[c]&&b[c][d]&&(g=f(b[c][d]));if(g)throw"A channel is already bound to the same window which overlaps with origin '"+c+"' and has scope '"+d+"'";typeof b[c]!="object"&&(b[c]={}),typeof b[c][d]!="object"&&(b[c][d]=[]),b[c][d].push({win:a,handler:e})}"use strict";var a=Math.floor(Math.random()*1000001),b={},f={},g=function(a){try{var c=JSON.parse(a.data);if(typeof c!="object"||c===null)throw"malformed"}catch(a){return}var d=a.source,e=a.origin,g,h,i;if(typeof c.method=="string"){var j=c.method.split("::");j.length==2?(g=j[0],i=j[1]):i=c.method}typeof c.id!="undefined"&&(h=c.id);if(typeof i=="string"){var k=!1;if(b[e]&&b[e][g])for(var h=0;h<b[e][g].length;h++)if(b[e][g][h].win===d){b[e][g][h].handler(e,i,c),k=!0;break}if(!k&&b["*"]&&b["*"][g])for(var h=0;h<b["*"][g].length;h++)if(b["*"][g][h].win===d){b["*"][g][h].handler(e,i,c);break}}else typeof h!="undefined"&&f[h]&&f[h](e,i,c)};window.addEventListener?window.addEventListener("message",g,!1):window.attachEvent&&window.attachEvent("onmessage",g);return{build:function(b){var g=function(a){if(b.debugOutput&&window.console&&window.console.log){try{typeof a!="string"&&(a=JSON.stringify(a))}catch(c){}console.log("["+j+"] "+a)}};if(!window.postMessage)throw"jschannel cannot run this browser, no postMessage";if(!window.JSON||!window.JSON.stringify||!window.JSON.parse)throw"jschannel cannot run this browser, no JSON parsing/serialization";if(typeof b!="object")throw"Channel build invoked without a proper object argument";if(!b.window||!b.window.postMessage)throw"Channel.build() called without a valid window argument";if(window===b.window)throw"target window is same as present window -- not allowed";var h=!1;if(typeof b.origin=="string"){var i;b.origin==="*"?h=!0:null!==(i=b.origin.match(/^https?:\/\/(?:[-a-zA-Z0-9_\.])+(?::\d+)?/))&&(b.origin=i[0].toLowerCase(),h=!0)}if(!h)throw"Channel.build() called with an invalid origin";if(typeof b.scope!="undefined"){if(typeof b.scope!="string")throw"scope, when specified, must be a string";if(b.scope.split("::").length>1)throw"scope may not contain double colons: '::'"}var j=function(){var a="",b="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";for(var c=0;c<5;c++)a+=b.charAt(Math.floor(Math.random()*b.length));return a}(),k={},l={},m={},n=!1,o=[],p=function(a,b,c){var d=!1,e=!1;return{origin:b,invoke:function(b,d){if(!m[a])throw"attempting to invoke a callback of a nonexistent transaction: "+a;var e=!1;for(var f=0;f<c.length;f++)if(b===c[f]){e=!0;break}if(!e)throw"request supports no such callback '"+b+"'";t({id:a,callback:b,params:d})},error:function(b,c){e=!0;if(!m[a])throw"error called for nonexistent message: "+a;delete m[a],t({id:a,error:b,message:c})},complete:function(b){e=!0;if(!m[a])throw"complete called for nonexistent message: "+a;delete m[a],t({id:a,result:b})},delayReturn:function(a){typeof a=="boolean"&&(d=a===!0);return d},completed:function(){return e}}},q=function(a,b,c){return window.setTimeout(function(){if(l[a]){var d="timeout ("+b+"ms) exceeded on method '"+c+"'";(1,l[a].error)("timeout_error",d),delete l[a],delete f[a]}},b)},r=function(a,c,d){if(typeof b.gotMessageObserver=="function")try{b.gotMessageObserver(a,d)}catch(h){g("gotMessageObserver() raised an exception: "+h.toString())}if(d.id&&c){if(k[c]){var i=p(d.id,a,d.callbacks?d.callbacks:[]);m[d.id]={};try{if(d.callbacks&&e(d.callbacks)&&d.callbacks.length>0)for(var j=0;j<d.callbacks.length;j++){var n=d.callbacks[j],o=d.params,q=n.split("/");for(var r=0;r<q.length-1;r++){var s=q[r];typeof o[s]!="object"&&(o[s]={}),o=o[s]}o[q[q.length-1]]=function(){var a=n;return function(b){return i.invoke(a,b)}}()}var t=k[c](i,d.params);!i.delayReturn()&&!i.completed()&&i.complete(t)}catch(h){var u="runtime_error",v=null;typeof h=="string"?v=h:typeof h=="object"&&(h&&e(h)&&h.length==2?(u=h[0],v=h[1]):typeof h.error=="string"&&(u=h.error,h.message?typeof h.message=="string"?v=h.message:h=h.message:v=""));if(v===null)try{v=JSON.stringify(h),typeof v=="undefined"&&(v=h.toString())}catch(w){v=h.toString()}i.error(u,v)}}}else d.id&&d.callback?!l[d.id]||!l[d.id].callbacks||!l[d.id].callbacks[d.callback]?g("ignoring invalid callback, id:"+d.id+" ("+d.callback+")"):l[d.id].callbacks[d.callback](d.params):d.id?l[d.id]?(d.error?(1,l[d.id].error)(d.error,d.message):d.result!==undefined?(1,l[d.id].success)(d.result):(1,l[d.id].success)(),delete l[d.id],delete f[d.id]):g("ignoring invalid response: "+d.id):c&&k[c]&&k[c](null,d.params)};c(b.window,b.origin,typeof b.scope=="string"?b.scope:"",r);var s=function(a){typeof b.scope=="string"&&b.scope.length&&(a=[b.scope,a].join("::"));return a},t=function(a,c){if(!a)throw"postMessage called with null message";var d=n?"post  ":"queue ";g(d+" message: "+JSON.stringify(a));if(!c&&!n)o.push(a);else{if(typeof b.postMessageObserver=="function")try{b.postMessageObserver(b.origin,a)}catch(e){g("postMessageObserver() raised an exception: "+e.toString())}b.window.postMessage(JSON.stringify(a),b.origin)}},u=function(a,c){g("ready msg received");if(n)throw"received ready message while in ready state.  help!";c==="ping"?j+="-R":j+="-L",v.unbind("__ready"),n=!0,g("ready msg accepted."),c==="ping"&&v.notify({method:"__ready",params:"pong"});while(o.length)t(o.pop());typeof b.onReady=="function"&&b.onReady(v)},v={unbind:function(a){if(k[a]){if(delete k[a])return!0;throw"can't delete method: "+a}return!1},bind:function(a,b){if(!a||typeof a!="string")throw"'method' argument to bind must be string";if(!b||typeof b!="function")throw"callback missing from bind params";if(k[a])throw"method '"+a+"' is already bound!";k[a]=b;return this},call:function(b){if(!b)throw"missing arguments to call function";if(!b.method||typeof b.method!="string")throw"'method' argument to call must be string";if(!b.success||typeof b.success!="function")throw"'success' callback missing from call";var c={},d=[],e=function(a,b){if(typeof b=="object")for(var f in b){if(!b.hasOwnProperty(f))continue;var g=a+(a.length?"/":"")+f;typeof b[f]=="function"?(c[g]=b[f],d.push(g),delete b[f]):typeof b[f]=="object"&&e(g,b[f])}};e("",b.params);var g={id:a,method:s(b.method),params:b.params};d.length&&(g.callbacks=d),b.timeout&&q(a,b.timeout,s(b.method)),l[a]={callbacks:c,error:b.error,success:b.success},f[a]=r,a++,t(g)},notify:function(a){if(!a)throw"missing arguments to notify function";if(!a.method||typeof a.method!="string")throw"'method' argument to notify must be string";t({method:s(a.method),params:a.params})},destroy:function(){d(b.window,b.origin,typeof b.scope=="string"?b.scope:""),window.removeEventListener?window.removeEventListener("message",r,!1):window.detachEvent&&window.detachEvent("onmessage",r),n=!1,k={},m={},l={},b.origin=null,o=[],g("channel destroyed"),j=""}};v.bind("__ready",u),setTimeout(function(){},0);return v}}}();WinChan=function(){function j(){var b=window.location,c=window.opener.frames,d=b.protocol+"//"+b.host;for(i=c.length-1;i>=0;i++)try{if(c[i].location.href.indexOf(d)===0&&c[i].name===a)return c[i]}catch(e){}return}function h(a){/^https?:\/\//.test(a)||(a=window.location.href);var b=/^(https?:\/\/[-_a-zA-Z\.0-9:]+)/.exec(a);return b?b[1]:a}function g(){return window.JSON&&window.JSON.stringify&&window.JSON.parse&&window.postMessage}function f(){try{return d.indexOf("Fennec/")!=-1||d.indexOf("Firefox/")!=-1&&d.indexOf("Android")!=-1}catch(a){}return!1}function e(){var a=-1;if(navigator.appName=="Microsoft Internet Explorer"){var b=navigator.userAgent,c=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");c.exec(b)!=null&&(a=parseFloat(RegExp.$1))}return a>=8}function c(a,b,c){a.detachEvent?a.detachEvent("on"+b,c):a.removeEventListener&&a.removeEventListener(b,c,!1)}function b(a,b,c){a.attachEvent?a.attachEvent("on"+b,c):a.addEventListener&&a.addEventListener(b,c,!1)}var a="__winchan_relay_frame",k=e();return g()?{open:function(d,e){function p(a){try{var b=JSON.parse(a.data);b.a==="ready"?l.postMessage(n,j):b.a==="error"?e&&(e(b.d),e=null):b.a==="response"&&(c(window,"message",p),c(window,"unload",o),o(),e&&(e(null,b.d),e=null))}catch(a){}}function o(){i&&document.body.removeChild(i),i=undefined,m&&m.close(),m=undefined}if(!e)throw"missing required callback argument";var g;d.url||(g="missing required 'url' parameter"),d.relay_url||(g="missing required 'relay_url' parameter"),g&&setTimeout(function(){e(g)},0);if(!d.window_features||f())d.window_features=undefined;var i,j=h(d.url);if(j!==h(d.relay_url))return setTimeout(function(){e("invalid arguments: origin of url and relay_url must match")},0);var l;k&&(i=document.createElement("iframe"),i.setAttribute("src",d.relay_url),i.style.display="none",i.setAttribute("name",a),document.body.appendChild(i),l=i.contentWindow);var m=window.open(d.url,null,d.window_features);l||(l=m);var n=JSON.stringify({a:"request",d:d.params});b(window,"unload",o),b(window,"message",p);return{close:o,focus:function(){if(m)try{m.focus()}catch(a){}}}}}:{open:function(a,b,c,d){setTimeout(function(){d("unsupported browser")},0)}}}();var b=function(){function l(){return c}function k(){c=g()||h()||i()||j();return!c}function j(){if(!(window.JSON&&window.JSON.stringify&&window.JSON.parse))return"JSON_NOT_SUPPORTED"}function i(){if(!a.postMessage)return"POSTMESSAGE_NOT_SUPPORTED"}function h(){try{var b="localStorage"in a&&a.localStorage!==null;if(b)a.localStorage.setItem("test","true"),a.localStorage.removeItem("test");else return"LOCALSTORAGE_NOT_SUPPORTED"}catch(c){return"LOCALSTORAGE_DISABLED"}}function g(){return f()}function f(){var a=e(),b=a>-1&&a<8;if(b)return"BAD_IE_VERSION"}function e(){var a=-1;if(b.appName=="Microsoft Internet Explorer"){var c=b.userAgent,d=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");d.exec(c)!=null&&(a=parseFloat(RegExp.$1))}return a}function d(c,d){b=c,a=d}var a=window,b=navigator,c;return{setTestEnv:d,isSupported:k,getNoSupportReason:l}}();navigator.id||(navigator.id={});if(!navigator.id.request||navigator.id._shimmed){var c="https://browserid.org",d=navigator.userAgent,e=d.indexOf("Fennec/")!=-1||d.indexOf("Firefox/")!=-1&&d.indexOf("Android")!=-1,f=e?undefined:"menubar=0,location=1,resizable=1,scrollbars=1,status=0,dialog=1,width=700,height=375",g,h={login:null,logout:null,ready:null},j=undefined;function k(a){a!==!0;if(j===undefined)j=a;else if(j!=a)throw"you cannot combine the navigator.id.watch() API with navigator.id.getVerifiedEmail() or navigator.id.get()this site should instead use navigator.id.request() and navigator.id.watch()"}var l,m=b.isSupported();function n(){if(!!m)try{if(!l){var b=window.document,d=b.createElement("iframe");d.style.display="none",b.body.appendChild(d),d.src=c+"/communication_iframe",l=a.build({window:d.contentWindow,origin:c,scope:"mozid_ni",onReady:function(){l.call({method:"loaded",success:function(){h.ready&&h.ready()},error:function(){}})}}),l.bind("logout",function(a,b){h.logout&&h.logout()}),l.bind("login",function(a,b){h.login&&h.login(b)})}}catch(e){l=undefined}}function o(a){if(typeof a=="object"){if(a.onlogin&&typeof a.onlogin!="function"||a.onlogout&&typeof a.onlogout!="function"||a.onready&&typeof a.onready!="function")throw"non-function where function expected in parameters to navigator.id.watch()";if(!a.onlogin)throw"'onlogin' is a required argument to navigator.id.watch()";if(!a.onlogout)throw"'onlogout' is a required argument to navigator.id.watch()";h.login=a.onlogin||null,h.logout=a.onlogout||null,h.ready=a.onready||null,n(),typeof a.loggedInEmail!="undefined"&&l&&l.notify({method:"loggedInUser",params:a.loggedInEmail})}}function p(a){if(g)try{g.focus()}catch(d){}else{if(!b.isSupported()){var e=b.getNoSupportReason(),i="unsupported_dialog";e==="LOCALSTORAGE_DISABLED"&&(i="cookies_disabled"),g=window.open(c+"/"+i,null,f);return}l&&l.notify({method:"dialog_running"}),g=WinChan.open({url:c+"/sign_in",relay_url:c+"/relay",window_features:f,params:{method:"get",params:a}},function(b,c){l&&(!b&&c&&c.email&&l.notify({method:"loggedInUser",params:c.email}),l.notify({method:"dialog_complete"})),g=undefined;if(!b&&c&&c.assertion)try{h.login&&h.login(c.assertion)}catch(d){}if(b==="client closed window"||!c)a&&a.oncancel&&a.oncancel(),delete a.oncancel})}}navigator.id={request:function(a){a=a||{},k(!1);return p(a)},watch:function(a){k(!1),o(a)},logout:function(a){n(),l&&l.notify({method:"logout"}),typeof a=="function"&&setTimeout(a,0)},get:function(a,b){b=b||{},k(!0),o({onlogin:function(b){a&&(a(b),a=null)},onlogout:function(){}}),b.oncancel=function(){a&&(a(null),a=null),h.login=h.logout=h.ready=null},b&&b.silent?a&&setTimeout(function(){a(null)},0):p(b)},getVerifiedEmail:function(a){k(!0),navigator.id.get(a)},_shimmed:!0}}})()
(-)a/koha-tmpl/opac-tmpl/prog/en/js/datatables.js (-100 lines)
Lines 1-100 Link Here
1
// These default options are for translation but can be used
2
// for any other datatables settings
3
// MSG_DT_* variables comes from datatables-strings.inc
4
// To use it, write:
5
//  $("#table_id").dataTable($.extend(true, {}, dataTableDefaults, {
6
//      // other settings
7
//  } ) );
8
var dataTablesDefaults = {
9
    "oLanguage": {
10
        "oPaginate": {
11
            "sFirst"    : window.MSG_DT_FIRST || "First",
12
            "sLast"     : window.MSG_DT_LAST || "Last",
13
            "sNext"     : window.MSG_DT_NEXT || "Next",
14
            "sPrevious" : window.MSG_DT_PREVIOUS || "Previous"
15
        },
16
        "sEmptyTable"       : window.MSG_DT_EMPTY_TABLE || "No data available in table",
17
        "sInfo"             : window.MSG_DT_INFO || "Showing _START_ to _END_ of _TOTAL_ entries",
18
        "sInfoEmpty"        : window.MSG_DT_INFO_EMPTY || "No entries to show",
19
        "sInfoFiltered"     : window.MSG_DT_INFO_FILTERED || "(filtered from _MAX_ total entries)",
20
        "sLengthMenu"       : window.MSG_DT_LENGTH_MENU || "Show _MENU_ entries",
21
        "sLoadingRecords"   : window.MSG_DT_LOADING_RECORDS || "Loading...",
22
        "sProcessing"       : window.MSG_DT_PROCESSING || "Processing...",
23
        "sSearch"           : window.MSG_DT_SEARCH || "Search:",
24
        "sZeroRecords"      : window.MSG_DT_ZERO_RECORDS || "No matching records found"
25
    },
26
    // "aaSorting": [$(" - select row position of th -")],
27
    "sDom": 't',
28
    "bPaginate": false,
29
    // "fnHeaderCallback": function() {
30
    //     return $('th.sorting.nosort,th.sorting_desc.nosort,th.sorting_asc.nosort').removeClass("sorting sorting_desc sorting_asc").unbind("click");
31
    // }
32
};
33
34
/* Plugin to allow sorting on data stored in a span's title attribute
35
 *
36
 * Ex: <td><span title="[% ISO_date %]">[% formatted_date %]</span></td>
37
 *
38
 * In DataTables config:
39
 *     "aoColumns": [
40
 *        { "sType": "title-string" },
41
 *      ]
42
 * http://datatables.net/plug-ins/sorting#hidden_title_string
43
 */
44
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
45
    "title-string-pre": function ( a ) {
46
        return a.match(/title="(.*?)"/)[1].toLowerCase();
47
    },
48
49
    "title-string-asc": function ( a, b ) {
50
        return ((a < b) ? -1 : ((a > b) ? 1 : 0));
51
    },
52
53
    "title-string-desc": function ( a, b ) {
54
        return ((a < b) ? 1 : ((a > b) ? -1 : 0));
55
    }
56
} );
57
58
(function() {
59
60
    /* Plugin to allow text sorting to ignore articles
61
     *
62
     * In DataTables config:
63
     *     "aoColumns": [
64
     *        { "sType": "anti-the" },
65
     *      ]
66
     * Based on the plugin found here:
67
     * http://datatables.net/plug-ins/sorting#anti_the
68
     * Modified to exclude HTML tags from sorting
69
     * Extended to accept a string of space-separated articles
70
     * from a configuration file (in English, "a," "an," and "the")
71
     */
72
73
    if(CONFIG_EXCLUDE_ARTICLES_FROM_SORT){
74
        var articles = CONFIG_EXCLUDE_ARTICLES_FROM_SORT.split(" ");
75
        var rpattern = "";
76
        for(i=0;i<articles.length;i++){
77
            rpattern += "^" + articles[i] + " ";
78
            if(i < articles.length - 1){ rpattern += "|"; }
79
        }
80
        var re = new RegExp(rpattern, "i");
81
    }
82
83
    jQuery.extend( jQuery.fn.dataTableExt.oSort, {
84
        "anti-the-pre": function ( a ) {
85
            var x = String(a).replace( /<[\s\S]*?>/g, "" );
86
            var y = x.trim();
87
            var z = y.replace(re, "").toLowerCase();
88
            return z;
89
        },
90
91
        "anti-the-asc": function ( a, b ) {
92
            return ((a < b) ? -1 : ((a > b) ? 1 : 0));
93
        },
94
95
        "anti-the-desc": function ( a, b ) {
96
            return ((a < b) ? 1 : ((a > b) ? -1 : 0));
97
        }
98
    });
99
100
}());
(-)a/koha-tmpl/opac-tmpl/prog/en/js/google-jackets.js (-76 lines)
Lines 1-76 Link Here
1
if (typeof KOHA == "undefined" || !KOHA) {
2
    var KOHA = {};
3
}
4
5
/**
6
 * A namespace for Google related functions.
7
 */
8
KOHA.Google = {
9
10
11
    /**
12
     * Search all:
13
     *    <div title="biblionumber" id="isbn" class="gbs-thumbnail"></div>
14
     * or
15
     *    <div title="biblionumber" id="isbn" class="gbs-thumbnail-preview"></div>
16
     * and run a search with all collected isbns to Google Book Search.
17
     * The result is asynchronously returned by Google and catched by
18
     * gbsCallBack().
19
     */
20
    GetCoverFromIsbn: function(newWindow) {
21
        var bibkeys = [];
22
        $("[id^=gbs-thumbnail]").each(function(i) {
23
            bibkeys.push($(this).attr("class")); // id=isbn
24
        });
25
        bibkeys = bibkeys.join(',');
26
        var scriptElement = document.createElement("script");
27
        this.openInNewWindow=newWindow;
28
        scriptElement.setAttribute("id", "jsonScript");
29
        scriptElement.setAttribute("src",
30
            "http://books.google.com/books?bibkeys=" + escape(bibkeys) +
31
            "&jscmd=viewapi&callback=KOHA.Google.gbsCallBack");
32
        scriptElement.setAttribute("type", "text/javascript");
33
        document.documentElement.firstChild.appendChild(scriptElement);
34
35
    },
36
37
    /**
38
     * Add cover pages <div
39
     * and link to preview if div id is gbs-thumbnail-preview
40
     */
41
    gbsCallBack: function(booksInfo) {
42
         var target = '';
43
         if (this.openInNewWindow) {
44
            target = 'target="_blank" ';
45
         }
46
         for (id in booksInfo) {
47
             var book = booksInfo[id];
48
             $("[id^=gbs-thumbnail]."+book.bib_key).each(function() {
49
                 var a = document.createElement("a");
50
                 a.href = book.info_url;
51
                 if (typeof(book.thumbnail_url) != "undefined") {
52
                     var img = document.createElement("img");
53
                     img.src = book.thumbnail_url;
54
                     $(this).empty().append(img);
55
                     var re = /^gbs-thumbnail-preview/;
56
                     if ( re.exec($(this).attr("id")) ) {
57
                         $(this).append(
58
                             '<div style="margin-bottom:5px; margin-top:-5px;font-size:9px">' +
59
                             '<a '+target+'href="' +
60
                             book.info_url +
61
                             '"><img src="' +
62
                             'http://books.google.com/intl/en/googlebooks/images/gbs_preview_sticker1.gif' +
63
                             '"></a></div>'
64
                             );
65
                     }
66
                 } else {
67
                     var message = document.createElement("span");
68
                     $(message).attr("class","no-image");
69
                     $(message).html(NO_GOOGLE_JACKET);
70
                     $(this).empty().append(message);
71
                 }
72
             });
73
         }
74
75
     }
76
};
(-)a/koha-tmpl/opac-tmpl/prog/en/js/googleindictransliteration.js (-29 lines)
Lines 1-29 Link Here
1
      // Load the Google Transliteration API
2
      google.load("elements", "1", {
3
            packages: "transliteration"
4
          });
5
      
6
	function onLoad() {
7
        var options = {
8
          sourceLanguage: 'en',
9
          destinationLanguage: ['hi','kn','ml','ta','te'],
10
          shortcutKey: 'ctrl+g',
11
          transliterationEnabled: true
12
        };
13
14
        // Create an instance on TransliterationControl with the required
15
        // options.
16
        var control =
17
            new google.elements.transliteration.TransliterationControl(options);
18
19
        // Enable transliteration in the textfields with the given ids.
20
        var ids = [ "transl1" ];
21
        control.makeTransliteratable(ids);
22
23
        // Show the transliteration control which can be used to toggle between
24
        // English and Hindi and also choose other destination language.
25
        control.showControl('translControl');
26
      }
27
      google.setOnLoadCallback(onLoad);
28
29
(-)a/koha-tmpl/opac-tmpl/prog/en/js/localcovers.js (-51 lines)
Lines 1-51 Link Here
1
if (typeof KOHA == "undefined" || !KOHA) {
2
    var KOHA = {};
3
}
4
5
/**
6
 * A namespace for local cover related functions.
7
 */
8
KOHA.LocalCover = {
9
10
11
    /**
12
     * Search all:
13
     *    <div title="biblionumber" id="isbn" class="openlibrary-thumbnail"></div>
14
     * or
15
     *    <div title="biblionumber" id="isbn" class="openlibrary-thumbnail-preview"></div>
16
     * and run a search with all collected isbns to Open Library Book Search.
17
     * The result is asynchronously returned by OpenLibrary and catched by
18
     * olCallBack().
19
     */
20
    GetCoverFromBibnumber: function(uselink) {
21
        $("div[id^=local-thumbnail],span[id^=local-thumbnail]").each(function(i) {
22
            var mydiv = this;
23
            var message = document.createElement("span");
24
            $(message).attr("class","no-image");
25
            $(message).html(NO_LOCAL_JACKET);
26
            $(mydiv).append(message);
27
            var img = $("<img />").attr('src',
28
                '/cgi-bin/koha/opac-image.pl?thumbnail=1&biblionumber=' + $(mydiv).attr("class"))
29
                .load(function () {
30
                    if (!this.complete || typeof this.naturalWidth == "undefined" || this.naturalWidth == 0) {
31
                        //IE HACK
32
                        try {
33
                            $(mydiv).append(img);
34
                            $(mydiv).children('.no-image').remove();
35
                        }
36
                        catch(err){
37
                        };
38
                    } else {
39
                        if (uselink) {
40
                            var a = $("<a />").attr('href', '/cgi-bin/koha/opac-imageviewer.pl?biblionumber=' + $(mydiv).attr("class"));
41
                            $(a).append(img);
42
                            $(mydiv).empty().append(a);
43
                        } else {
44
                            $(mydiv).empty().append(img);
45
                        }
46
                        $(mydiv).children('.no-image').remove();
47
                    }
48
                })
49
        });
50
    }
51
};
(-)a/koha-tmpl/opac-tmpl/prog/en/js/openlibrary.js (-67 lines)
Lines 1-67 Link Here
1
if (typeof KOHA == "undefined" || !KOHA) {
2
    var KOHA = {};
3
}
4
5
/**
6
 * A namespace for OpenLibrary related functions.
7
 */
8
KOHA.OpenLibrary = {
9
10
11
    /**
12
     * Search all:
13
     *    <div title="biblionumber" id="isbn" class="openlibrary-thumbnail"></div>
14
     * or
15
     *    <div title="biblionumber" id="isbn" class="openlibrary-thumbnail-preview"></div>
16
     * and run a search with all collected isbns to Open Library Book Search.
17
     * The result is asynchronously returned by OpenLibrary and catched by
18
     * olCallBack().
19
     */
20
    GetCoverFromIsbn: function() {
21
        var bibkeys = [];
22
        $("[id^=openlibrary-thumbnail]").each(function(i) {
23
            bibkeys.push("ISBN:" + $(this).attr("class")); // id=isbn
24
        });
25
        bibkeys = bibkeys.join(',');
26
        var scriptElement = document.createElement("script");
27
        scriptElement.setAttribute("id", "jsonScript");
28
        scriptElement.setAttribute("src",
29
            "http://openlibrary.org/api/books?bibkeys=" + escape(bibkeys) +
30
            "&callback=KOHA.OpenLibrary.olCallBack&jscmd=data");
31
        scriptElement.setAttribute("type", "text/javascript");
32
        document.documentElement.firstChild.appendChild(scriptElement);
33
    },
34
35
    /**
36
     * Add cover pages <div
37
     * and link to preview if div id is gbs-thumbnail-preview
38
     */
39
    olCallBack: function(booksInfo) {
40
        for (id in booksInfo) {
41
            var book = booksInfo[id];
42
            var isbn = id.substring(5);
43
            $("[id^=openlibrary-thumbnail]."+isbn).each(function() {
44
                var is_opacdetail = /openlibrary-thumbnail-preview/.exec($(this).attr("id"));
45
                var a = document.createElement("a");
46
                a.href = booksInfo.url;
47
                if (book.cover) {
48
                    var img = document.createElement("img");
49
                    if (is_opacdetail) {
50
                        img.src = book.cover.medium;
51
                        $(this).empty().append(img);
52
                        $(this).append('<div class="results_summary">' + '<a href="' + book.url + '">Preview</a></div>');
53
                    } else {
54
                        img.src = book.cover.medium;
55
                        img.height = '110';
56
                        $(this).append(img);
57
                    }
58
                } else {
59
                    var message =  document.createElement("span");
60
                    $(message).attr("class","no-image");
61
                    $(message).html(NO_OL_JACKET);
62
                    $(this).append(message);
63
                }
64
            });
65
        }
66
    }
67
};
(-)a/koha-tmpl/opac-tmpl/prog/en/js/overdrive.js (-61 lines)
Lines 1-61 Link Here
1
if ( typeof KOHA == "undefined" || !KOHA ) {
2
    var KOHA = {};
3
}
4
5
KOHA.OverDrive = ( function() {
6
    var proxy_base_url = '/cgi-bin/koha/svc/overdrive_proxy';
7
    var library_base_url = 'http://api.overdrive.com/v1/libraries/';
8
    return {
9
        Get: function( url, params, callback ) {
10
            $.ajax( {
11
                type: 'GET',
12
                url: url.replace( /https?:\/\/api.overdrive.com\/v1/, proxy_base_url ),
13
                dataType: 'json',
14
                data: params,
15
                error: function( xhr, error ) {
16
                    try {
17
                        callback( JSON.parse( xhr.responseText ));
18
                    } catch ( e ) {
19
                        callback( {error: xhr.responseText || true} );
20
                    }
21
                },
22
                success: callback
23
            } );
24
        },
25
        GetCollectionURL: function( library_id, callback ) {
26
            if ( KOHA.OverDrive.collection_url ) {
27
                callback( KOHA.OverDrive.collection_url );
28
                return;
29
            }
30
31
            KOHA.OverDrive.Get(
32
                library_base_url + library_id,
33
                {},
34
                function ( data ) {
35
                    if ( data.error ) {
36
                        callback( data );
37
                        return;
38
                    }
39
40
                    KOHA.OverDrive.collection_url = data.links.products.href;
41
42
                    callback( data.links.products.href );
43
                }
44
            );
45
        },
46
        Search: function( library_id, q, limit, offset, callback ) {
47
            KOHA.OverDrive.GetCollectionURL( library_id, function( data ) {
48
                if ( data.error ) {
49
                    callback( data );
50
                    return;
51
                }
52
53
                KOHA.OverDrive.Get(
54
                    data,
55
                    {q: q, limit: limit, offset: offset},
56
                    callback
57
                );
58
            } );
59
        }
60
    };
61
} )();
(-)a/koha-tmpl/opac-tmpl/prog/en/js/script.js (-85 lines)
Lines 1-85 Link Here
1
function _(s) { return s } // dummy function for gettext
2
function confirmDelete(message) {
3
	return (confirm(message) ? true : false);
4
}
5
6
function Dopop(link) {
7
	newin=window.open(link,'popup','width=500,height=400,toolbar=false,scrollbars=yes,resizeable=yes');
8
}
9
10
$(document).ready(function(){
11
	$(".close").click(function(){
12
		window.close();
13
	});
14
	$(".focus").focus();
15
16
	// clear the basket when user logs out
17
	$("#logout").click(function(){
18
		var nameCookie = "bib_list";
19
	    var valCookie = readCookie(nameCookie);
20
		if (valCookie) { // basket has contents
21
			updateBasket(0,null);
22
			delCookie(nameCookie);
23
			return true;
24
		} else {
25
			return true;
26
		}
27
	});
28
});
29
30
// build Change Language menus
31
YAHOO.util.Event.onContentReady("changelanguage", function () {
32
	$(".sublangs").each(function(){
33
		var menuid = $(this).attr("id");
34
		var menuid = menuid.replace("show","");
35
36
		var oMenu = new YAHOO.widget.Menu("sub"+menuid, { zindex: 2 });
37
		function positionoMenu() {
38
			oMenu.align("bl", "tl");
39
		}
40
		oMenu.subscribe("beforeShow", function () {
41
		if (this.getRoot() == this) {
42
			positionoMenu();
43
		}
44
		});
45
		oMenu.render();
46
		oMenu.cfg.setProperty("context", ["show"+menuid, "bl", "tl"]);
47
		function onYahooClick(p_oEvent) {
48
			// Position and display the menu        
49
			positionoMenu();
50
			oMenu.show();
51
			// Stop propagation and prevent the default "click" behavior
52
			YAHOO.util.Event.stopEvent(p_oEvent);
53
		}
54
		YAHOO.util.Event.addListener("show"+menuid, "click", onYahooClick);
55
		YAHOO.widget.Overlay.windowResizeEvent.subscribe(positionoMenu);
56
		
57
	});
58
});
59
			
60
// Build lists menu
61
YAHOO.util.Event.onContentReady("listsmenu", function () {
62
	YAHOO.widget.Menu.prototype.onRender = function () { };
63
    $("#listsmenu").css("display","block").css("visibility","hidden");
64
	$("#listsmenulink").attr("href","#");
65
	var listMenu = new YAHOO.widget.Menu("listsmenu");
66
		listMenu.render();
67
		listMenu.cfg.setProperty("context", ["listsmenulink", "tr", "br"]);
68
		listMenu.cfg.setProperty("effect",{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.05});
69
		listMenu.subscribe("beforeShow",positionlistMenu);
70
		listMenu.subscribe("show", listMenu.focus);
71
        function positionlistMenu() {
72
                    listMenu.align("tr", "br");
73
		}
74
		YAHOO.util.Event.addListener("listsmenulink", "click", listMenu.show, null, listMenu);
75
		YAHOO.widget.Overlay.windowResizeEvent.subscribe(positionlistMenu);
76
 });
77
78
jQuery.fn.preventDoubleFormSubmit = function() {
79
    jQuery(this).submit(function() {
80
        if (this.beenSubmitted)
81
            return false;
82
        else
83
            this.beenSubmitted = true;
84
    });
85
};
(-)a/koha-tmpl/opac-tmpl/prog/en/js/tags.js (-146 lines)
Lines 1-146 Link Here
1
if (typeof KOHA == "undefined" || !KOHA) {
2
    var KOHA = {};
3
}
4
5
/**
6
* A namespace for Tags related functions.
7
8
$.ajaxSetup({
9
	url: "/cgi-bin/koha/opac-tags.pl",
10
	type: "POST",
11
	dataType: "script"
12
});
13
*/
14
KOHA.Tags = {
15
    add_tag_button: function(bibnum, tag){
16
        var mynewtag = "newtag" + bibnum;
17
		var mytagid = "#" + mynewtag;
18
        var mydata = {};
19
        mydata[mynewtag] = tag;
20
		var response;	// AJAX from server will assign value to response.
21
		$.post(
22
			"/cgi-bin/koha/opac-tags.pl",
23
			mydata,
24
			function(data){
25
				// alert("AJAX Response: " + data);
26
				eval(data);
27
				// alert("counts: " + response["added"] + response["deleted"] + response["errors"]);
28
				KOHA.Tags.set_tag_status(
29
					mytagid + "_status",
30
					KOHA.Tags.common_status(response["added"], response["deleted"], response["errors"])
31
				);
32
				if (response.alerts) {
33
					alert(response.alerts.join("\n\n"));
34
				}
35
			},
36
			'script'
37
		);
38
		return false;
39
	},
40
	common_status : function(addcount, delcount, errcount) {
41
	    var cstat = "";
42
	    if (addcount && addcount > 0) {cstat += MSG_TAGS_ADDED + addcount + ".  " ;}
43
	    if (delcount && delcount > 0) {cstat += MSG_TAGS_DELETED + delcount + ".  " ;}
44
	    if (errcount && errcount > 0) {cstat += MSG_TAGS_ERRORS + errcount + ". " ;}
45
	    return cstat;
46
	},
47
	set_tag_status : function(tagid, newstatus) {
48
		$(tagid).html(newstatus);
49
        $(tagid).show();
50
	},
51
	append_tag_status : function(tagid, newstatus) {
52
		$(tagid).append(newstatus);
53
        $(tagid).show();
54
	},
55
    clear_all_tag_status : function() {
56
        $(".tagstatus").empty().hide();
57
    },
58
59
	tag_message: {
60
	tagsdisabled : function(arg) {return (MSG_TAGS_DISABLED);},
61
	scrubbed_all_bad : function(arg) {return (MSG_TAG_ALL_BAD);},
62
	badparam : function(arg) {return (MSG_ILLEGAL_PARAMETER+" "+arg);},
63
	scrubbed : function(arg) {return (MSG_TAG_SCRUBBED+" "+arg);},
64
    failed_add_tag : function(arg) {return (MSG_ADD_TAG_FAILED+ " '"+arg+"'. \n"+MSG_ADD_TAG_FAILED_NOTE);},
65
    failed_delete  : function(arg) {return (MSG_DELETE_TAG_FAILED+ " '"+arg+"'. \n"+MSG_DELETE_TAG_FAILED_NOTE);},
66
	login : function(arg) {return (MSG_LOGIN_REQUIRED);}
67
	},
68
69
    // Used to tag multiple items at once.  The main difference
70
    // is that status is displayed on a per item basis.
71
    add_multitags_button : function(bibarray, tag){
72
        var mydata = {};
73
        for (var i = 0; i < bibarray.length; i++) {
74
            var mynewtag = "newtag" + bibarray[i];
75
            mydata[mynewtag] = tag;
76
        }
77
		var response;	// AJAX from server will assign value to response.
78
		$.post(
79
			"/cgi-bin/koha/opac-tags.pl",
80
			mydata,
81
			function(data){
82
				eval(data);
83
                KOHA.Tags.clear_all_tag_status();
84
                var bibErrors = false;
85
86
                // Display the status for each tagged bib
87
                for (var i = 0; i < bibarray.length; i++) {
88
                    var bib = bibarray[i];
89
                    var mytagid = "#newtag" + bib;
90
                    var status = "";
91
92
                    // Number of tags added.
93
                    if (response[bib]) {
94
                        var added = response[bib]["added"];
95
                        if (added > 0) {
96
                            status = MSG_TAGS_ADDED + added + ".  ";
97
    				        KOHA.Tags.set_tag_status(mytagid + "_status", status);
98
                        }
99
100
                        // Show a link that opens an error dialog, if necessary.
101
                        var errors = response[bib]["errors"];
102
                        if (errors.length > 0) {
103
                            bibErrors = true;    
104
                            var errid = "tagerr_" + bib;
105
                            var errstat = "<a id=\"" + errid + "\" class=\"tagerror\" href=\"#\">";
106
                            errstat += MSG_TAGS_ERRORS + errors.length + ". ";
107
                            errstat += "</a>";
108
        				    KOHA.Tags.append_tag_status(mytagid + "_status", errstat);
109
                            var errmsg = "";
110
                            for (var e = 0; e < errors.length; e++){
111
                                if (e) {
112
                                    errmsg += "\n\n";
113
                                }
114
                                errmsg += errors[e];
115
                            }
116
                            $("#" + errid).click(function(){
117
                                alert(errmsg);
118
                            });
119
                        }
120
                    }
121
                }
122
123
                if (bibErrors || response["global_errors"]) {
124
                    var msg = "";
125
                    if (bibErrors) {
126
                        msg = MSG_MULTI_ADD_TAG_FAILED;
127
                    }
128
129
                    // Show global errors in a dialog.
130
                    if (response["global_errors"]) {
131
                        var global_errors = response["global_errors"];
132
                        var msg;
133
                        for (var e = 0; e < global_errors.length; e++) {
134
                            msg += "\n\n";
135
                            msg += response.alerts[global_errors[e]];
136
                        }
137
                    }
138
                    alert(msg);
139
                }
140
			},
141
			'script'
142
		);
143
		return false;
144
    }
145
};
146
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/AJS.js (-525 lines)
Lines 1-525 Link Here
1
AJS={BASE_URL:"",drag_obj:null,drag_elm:null,_drop_zones:[],_cur_pos:null,join:function(_1,_2){
2
try{
3
return _2.join(_1);
4
}
5
catch(e){
6
var r=_2[0]||"";
7
AJS.map(_2,function(_4){
8
r+=_1+_4;
9
},1);
10
return r+"";
11
}
12
},getScrollTop:function(){
13
var t;
14
if(document.documentElement&&document.documentElement.scrollTop){
15
t=document.documentElement.scrollTop;
16
}else{
17
if(document.body){
18
t=document.body.scrollTop;
19
}
20
}
21
return t;
22
},addClass:function(){
23
var _6=AJS.forceArray(arguments);
24
var _7=_6.pop();
25
var _8=function(o){
26
if(!new RegExp("(^|\\s)"+_7+"(\\s|$)").test(o.className)){
27
o.className+=(o.className?" ":"")+_7;
28
}
29
};
30
AJS.map(_6,function(_a){
31
_8(_a);
32
});
33
},setStyle:function(){
34
var _b=AJS.forceArray(arguments);
35
var _c=_b.pop();
36
var _d=_b.pop();
37
AJS.map(_b,function(_e){
38
_e.style[_d]=AJS.getCssDim(_c);
39
});
40
},_getRealScope:function(fn,_10,_11,_12){
41
var _13=window;
42
_10=AJS.$A(_10);
43
if(fn._cscope){
44
_13=fn._cscope;
45
}
46
return function(){
47
var _14=[];
48
var i=0;
49
if(_11){
50
i=1;
51
}
52
AJS.map(arguments,function(arg){
53
_14.push(arg);
54
},i);
55
_14=_14.concat(_10);
56
if(_12){
57
_14=_14.reverse();
58
}
59
return fn.apply(_13,_14);
60
};
61
},preloadImages:function(){
62
AJS.AEV(window,"load",AJS.$p(function(_17){
63
AJS.map(_17,function(src){
64
var pic=new Image();
65
pic.src=src;
66
});
67
},arguments));
68
},_createDomShortcuts:function(){
69
var _1a=["ul","li","td","tr","th","tbody","table","input","span","b","a","div","img","button","h1","h2","h3","br","textarea","form","p","select","option","iframe","script","center","dl","dt","dd","small","pre"];
70
var _1b=function(elm){
71
var _1d="return AJS.createDOM.apply(null, ['"+elm+"', arguments]);";
72
var _1e="function() { "+_1d+"    }";
73
eval("AJS."+elm.toUpperCase()+"="+_1e);
74
};
75
AJS.map(_1a,_1b);
76
AJS.TN=function(_1f){
77
return document.createTextNode(_1f);
78
};
79
},documentInsert:function(elm){
80
if(typeof (elm)=="string"){
81
elm=AJS.HTML2DOM(elm);
82
}
83
document.write("<span id=\"dummy_holder\"></span>");
84
AJS.swapDOM(AJS.$("dummy_holder"),elm);
85
},getWindowSize:function(doc){
86
doc=doc||document;
87
var _22,_23;
88
if(self.innerHeight){
89
_22=self.innerWidth;
90
_23=self.innerHeight;
91
}else{
92
if(doc.documentElement&&doc.documentElement.clientHeight){
93
_22=doc.documentElement.clientWidth;
94
_23=doc.documentElement.clientHeight;
95
}else{
96
if(doc.body){
97
_22=doc.body.clientWidth;
98
_23=doc.body.clientHeight;
99
}
100
}
101
}
102
return {"w":_22,"h":_23};
103
},flattenList:function(_24){
104
var r=[];
105
var _26=function(r,l){
106
AJS.map(l,function(o){
107
if(o==null){
108
}else{
109
if(AJS.isArray(o)){
110
_26(r,o);
111
}else{
112
r.push(o);
113
}
114
}
115
});
116
};
117
_26(r,_24);
118
return r;
119
},setEventKey:function(e){
120
e.key=e.keyCode?e.keyCode:e.charCode;
121
if(window.event){
122
e.ctrl=window.event.ctrlKey;
123
e.shift=window.event.shiftKey;
124
}else{
125
e.ctrl=e.ctrlKey;
126
e.shift=e.shiftKey;
127
}
128
switch(e.key){
129
case 63232:
130
e.key=38;
131
break;
132
case 63233:
133
e.key=40;
134
break;
135
case 63235:
136
e.key=39;
137
break;
138
case 63234:
139
e.key=37;
140
break;
141
}
142
},removeElement:function(){
143
var _2b=AJS.forceArray(arguments);
144
AJS.map(_2b,function(elm){
145
AJS.swapDOM(elm,null);
146
});
147
},_unloadListeners:function(){
148
if(AJS.listeners){
149
AJS.map(AJS.listeners,function(elm,_2e,fn){
150
AJS.REV(elm,_2e,fn);
151
});
152
}
153
AJS.listeners=[];
154
},partial:function(fn){
155
var _31=AJS.forceArray(arguments);
156
return AJS.$b(fn,null,_31.slice(1,_31.length).reverse(),false,true);
157
},getIndex:function(elm,_33,_34){
158
for(var i=0;i<_33.length;i++){
159
if(_34&&_34(_33[i])||elm==_33[i]){
160
return i;
161
}
162
}
163
return -1;
164
},isDefined:function(o){
165
return (o!="undefined"&&o!=null);
166
},isArray:function(obj){
167
return obj instanceof Array;
168
},setLeft:function(){
169
var _38=AJS.forceArray(arguments);
170
_38.splice(_38.length-1,0,"left");
171
AJS.setStyle.apply(null,_38);
172
},appendChildNodes:function(elm){
173
if(arguments.length>=2){
174
AJS.map(arguments,function(n){
175
if(AJS.isString(n)){
176
n=AJS.TN(n);
177
}
178
if(AJS.isDefined(n)){
179
elm.appendChild(n);
180
}
181
},1);
182
}
183
return elm;
184
},isOpera:function(){
185
return (navigator.userAgent.toLowerCase().indexOf("opera")!=-1);
186
},isString:function(obj){
187
return (typeof obj=="string");
188
},hideElement:function(elm){
189
var _3d=AJS.forceArray(arguments);
190
AJS.map(_3d,function(elm){
191
elm.style.display="none";
192
});
193
},setOpacity:function(elm,p){
194
elm.style.opacity=p;
195
elm.style.filter="alpha(opacity="+p*100+")";
196
},setHeight:function(){
197
var _41=AJS.forceArray(arguments);
198
_41.splice(_41.length-1,0,"height");
199
AJS.setStyle.apply(null,_41);
200
},setWidth:function(){
201
var _42=AJS.forceArray(arguments);
202
_42.splice(_42.length-1,0,"width");
203
AJS.setStyle.apply(null,_42);
204
},createArray:function(v){
205
if(AJS.isArray(v)&&!AJS.isString(v)){
206
return v;
207
}else{
208
if(!v){
209
return [];
210
}else{
211
return [v];
212
}
213
}
214
},isDict:function(o){
215
var _45=String(o);
216
return _45.indexOf(" Object")!=-1;
217
},isMozilla:function(){
218
return (navigator.userAgent.toLowerCase().indexOf("gecko")!=-1&&navigator.productSub>=20030210);
219
},_listenOnce:function(elm,_47,fn){
220
var _49=function(){
221
AJS.removeEventListener(elm,_47,_49);
222
fn(arguments);
223
};
224
return _49;
225
},addEventListener:function(elm,_4b,fn,_4d,_4e){
226
if(!_4e){
227
_4e=false;
228
}
229
var _4f=AJS.$A(elm);
230
AJS.map(_4f,function(_50){
231
if(_4d){
232
fn=AJS._listenOnce(_50,_4b,fn);
233
}
234
if(AJS.isIn(_4b,["submit","load","scroll","resize"])){
235
var old=elm["on"+_4b];
236
elm["on"+_4b]=function(){
237
if(old){
238
fn(arguments);
239
return old(arguments);
240
}else{
241
return fn(arguments);
242
}
243
};
244
return;
245
}
246
if(AJS.isIn(_4b,["keypress","keydown","keyup","click"])){
247
var _52=fn;
248
fn=function(e){
249
AJS.setEventKey(e);
250
return _52.apply(null,arguments);
251
};
252
}
253
if(_50.attachEvent){
254
_50.attachEvent("on"+_4b,fn);
255
}else{
256
if(_50.addEventListener){
257
_50.addEventListener(_4b,fn,_4e);
258
}
259
}
260
AJS.listeners=AJS.$A(AJS.listeners);
261
AJS.listeners.push([_50,_4b,fn]);
262
});
263
},createDOM:function(_54,_55){
264
var i=0,_57;
265
elm=document.createElement(_54);
266
if(AJS.isDict(_55[i])){
267
for(k in _55[0]){
268
_57=_55[0][k];
269
if(k=="style"){
270
elm.style.cssText=_57;
271
}else{
272
if(k=="class"||k=="className"){
273
elm.className=_57;
274
}else{
275
elm.setAttribute(k,_57);
276
}
277
}
278
}
279
i++;
280
}
281
if(_55[0]==null){
282
i=1;
283
}
284
AJS.map(_55,function(n){
285
if(n){
286
if(AJS.isString(n)||AJS.isNumber(n)){
287
n=AJS.TN(n);
288
}
289
elm.appendChild(n);
290
}
291
},i);
292
return elm;
293
},setTop:function(){
294
var _59=AJS.forceArray(arguments);
295
_59.splice(_59.length-1,0,"top");
296
AJS.setStyle.apply(null,_59);
297
},getElementsByTagAndClassName:function(_5a,_5b,_5c){
298
var _5d=[];
299
if(!AJS.isDefined(_5c)){
300
_5c=document;
301
}
302
if(!AJS.isDefined(_5a)){
303
_5a="*";
304
}
305
var els=_5c.getElementsByTagName(_5a);
306
var _5f=els.length;
307
var _60=new RegExp("(^|\\s)"+_5b+"(\\s|$)");
308
for(i=0,j=0;i<_5f;i++){
309
if(_60.test(els[i].className)||_5b==null){
310
_5d[j]=els[i];
311
j++;
312
}
313
}
314
return _5d;
315
},removeClass:function(){
316
var _61=AJS.forceArray(arguments);
317
var cls=_61.pop();
318
var _63=function(o){
319
o.className=o.className.replace(new RegExp("\\s?"+cls,"g"),"");
320
};
321
AJS.map(_61,function(elm){
322
_63(elm);
323
});
324
},bindMethods:function(_66){
325
for(var k in _66){
326
var _68=_66[k];
327
if(typeof (_68)=="function"){
328
_66[k]=AJS.$b(_68,_66);
329
}
330
}
331
},log:function(o){
332
if(AJS.isMozilla()){
333
console.log(o);
334
}else{
335
var div=AJS.DIV({"style":"color: green"});
336
AJS.ACN(AJS.getBody(),AJS.setHTML(div,""+o));
337
}
338
},isNumber:function(obj){
339
return (typeof obj=="number");
340
},map:function(_6c,fn,_6e,_6f){
341
var i=0,l=_6c.length;
342
if(_6e){
343
i=_6e;
344
}
345
if(_6f){
346
l=_6f;
347
}
348
for(i;i<l;i++){
349
fn.apply(null,[_6c[i],i]);
350
}
351
},removeEventListener:function(elm,_73,fn,_75){
352
if(!_75){
353
_75=false;
354
}
355
if(elm.removeEventListener){
356
elm.removeEventListener(_73,fn,_75);
357
if(AJS.isOpera()){
358
elm.removeEventListener(_73,fn,!_75);
359
}
360
}else{
361
if(elm.detachEvent){
362
elm.detachEvent("on"+_73,fn);
363
}
364
}
365
},getCssDim:function(dim){
366
if(AJS.isString(dim)){
367
return dim;
368
}else{
369
return dim+"px";
370
}
371
},setHTML:function(elm,_78){
372
elm.innerHTML=_78;
373
return elm;
374
},bind:function(fn,_7a,_7b,_7c,_7d){
375
fn._cscope=_7a;
376
return AJS._getRealScope(fn,_7b,_7c,_7d);
377
},forceArray:function(_7e){
378
var r=[];
379
AJS.map(_7e,function(elm){
380
r.push(elm);
381
});
382
return r;
383
},update:function(l1,l2){
384
for(var i in l2){
385
l1[i]=l2[i];
386
}
387
return l1;
388
},getBody:function(){
389
return AJS.$bytc("body")[0];
390
},HTML2DOM:function(_84,_85){
391
var d=AJS.DIV();
392
d.innerHTML=_84;
393
if(_85){
394
return d.childNodes[0];
395
}else{
396
return d;
397
}
398
},getElement:function(id){
399
if(AJS.isString(id)||AJS.isNumber(id)){
400
return document.getElementById(id);
401
}else{
402
return id;
403
}
404
},showElement:function(){
405
var _88=AJS.forceArray(arguments);
406
AJS.map(_88,function(elm){
407
elm.style.display="";
408
});
409
},swapDOM:function(_8a,src){
410
_8a=AJS.getElement(_8a);
411
var _8c=_8a.parentNode;
412
if(src){
413
src=AJS.getElement(src);
414
_8c.replaceChild(src,_8a);
415
}else{
416
_8c.removeChild(_8a);
417
}
418
return src;
419
},isIn:function(elm,_8e){
420
var i=AJS.getIndex(elm,_8e);
421
if(i!=-1){
422
return true;
423
}else{
424
return false;
425
}
426
}};
427
AJS.$=AJS.getElement;
428
AJS.$$=AJS.getElements;
429
AJS.$f=AJS.getFormElement;
430
AJS.$p=AJS.partial;
431
AJS.$b=AJS.bind;
432
AJS.$A=AJS.createArray;
433
AJS.DI=AJS.documentInsert;
434
AJS.ACN=AJS.appendChildNodes;
435
AJS.RCN=AJS.replaceChildNodes;
436
AJS.AEV=AJS.addEventListener;
437
AJS.REV=AJS.removeEventListener;
438
AJS.$bytc=AJS.getElementsByTagAndClassName;
439
AJS.addEventListener(window,"unload",AJS._unloadListeners);
440
AJS._createDomShortcuts();
441
AJS.Class=function(_90){
442
var fn=function(){
443
if(arguments[0]!="no_init"){
444
return this.init.apply(this,arguments);
445
}
446
};
447
fn.prototype=_90;
448
AJS.update(fn,AJS.Class.prototype);
449
return fn;
450
};
451
AJS.Class.prototype={extend:function(_92){
452
var _93=new this("no_init");
453
for(k in _92){
454
var _94=_93[k];
455
var cur=_92[k];
456
if(_94&&_94!=cur&&typeof cur=="function"){
457
cur=this._parentize(cur,_94);
458
}
459
_93[k]=cur;
460
}
461
return new AJS.Class(_93);
462
},implement:function(_96){
463
AJS.update(this.prototype,_96);
464
},_parentize:function(cur,_98){
465
return function(){
466
this.parent=_98;
467
return cur.apply(this,arguments);
468
};
469
}};
470
AJS.$=AJS.getElement;
471
AJS.$$=AJS.getElements;
472
AJS.$f=AJS.getFormElement;
473
AJS.$b=AJS.bind;
474
AJS.$p=AJS.partial;
475
AJS.$FA=AJS.forceArray;
476
AJS.$A=AJS.createArray;
477
AJS.DI=AJS.documentInsert;
478
AJS.ACN=AJS.appendChildNodes;
479
AJS.RCN=AJS.replaceChildNodes;
480
AJS.AEV=AJS.addEventListener;
481
AJS.REV=AJS.removeEventListener;
482
AJS.$bytc=AJS.getElementsByTagAndClassName;
483
AJSDeferred=function(req){
484
this.callbacks=[];
485
this.errbacks=[];
486
this.req=req;
487
};
488
AJSDeferred.prototype={excCallbackSeq:function(req,_9b){
489
var _9c=req.responseText;
490
while(_9b.length>0){
491
var fn=_9b.pop();
492
var _9e=fn(_9c,req);
493
if(_9e){
494
_9c=_9e;
495
}
496
}
497
},callback:function(){
498
this.excCallbackSeq(this.req,this.callbacks);
499
},errback:function(){
500
if(this.errbacks.length==0){
501
alert("Error encountered:\n"+this.req.responseText);
502
}
503
this.excCallbackSeq(this.req,this.errbacks);
504
},addErrback:function(fn){
505
this.errbacks.unshift(fn);
506
},addCallback:function(fn){
507
this.callbacks.unshift(fn);
508
},addCallbacks:function(fn1,fn2){
509
this.addCallback(fn1);
510
this.addErrback(fn2);
511
},sendReq:function(_a3){
512
if(AJS.isObject(_a3)){
513
this.req.send(AJS.queryArguments(_a3));
514
}else{
515
if(AJS.isDefined(_a3)){
516
this.req.send(_a3);
517
}else{
518
this.req.send("");
519
}
520
}
521
}};
522
script_loaded=true;
523
524
525
script_loaded=true;
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/AJS_fx.js (-136 lines)
Lines 1-136 Link Here
1
AJS.fx={_shades:{0:"ffffff",1:"ffffee",2:"ffffdd",3:"ffffcc",4:"ffffbb",5:"ffffaa",6:"ffff99"},highlight:function(_1,_2){
2
var _3=new AJS.fx.Base();
3
_3.elm=AJS.$(_1);
4
_3.setOptions(_2);
5
_3.options.duration=600;
6
AJS.update(_3,{increase:function(){
7
if(this.now==7){
8
_1.style.backgroundColor="transparent";
9
}else{
10
_1.style.backgroundColor="#"+AJS.fx._shades[Math.floor(this.now)];
11
}
12
}});
13
return _3.custom(6,0);
14
},fadeIn:function(_4,_5){
15
_5=_5||{};
16
if(!_5.from){
17
_5.from=0;
18
AJS.setOpacity(_4,0);
19
}
20
if(!_5.to){
21
_5.to=1;
22
}
23
var s=new AJS.fx.Style(_4,"opacity",_5);
24
return s.custom(_5.from,_5.to);
25
},fadeOut:function(_7,_8){
26
_8=_8||{};
27
if(!_8.from){
28
_8.from=1;
29
}
30
if(!_8.to){
31
_8.to=0;
32
}
33
_8.duration=300;
34
var s=new AJS.fx.Style(_7,"opacity",_8);
35
return s.custom(_8.from,_8.to);
36
},setWidth:function(_a,_b){
37
var s=new AJS.fx.Style(_a,"width",_b);
38
return s.custom(_b.from,_b.to);
39
},setHeight:function(_d,_e){
40
var s=new AJS.fx.Style(_d,"height",_e);
41
return s.custom(_e.from,_e.to);
42
}};
43
AJS.fx.Base=new AJS.Class({init:function(){
44
AJS.bindMethods(this);
45
},setOptions:function(_10){
46
this.options=AJS.update({onStart:function(){
47
},onComplete:function(){
48
},transition:AJS.fx.Transitions.sineInOut,duration:500,wait:true,fps:50},_10||{});
49
},step:function(){
50
var _11=new Date().getTime();
51
if(_11<this.time+this.options.duration){
52
this.cTime=_11-this.time;
53
this.setNow();
54
}else{
55
setTimeout(AJS.$b(this.options.onComplete,this,[this.elm]),10);
56
this.clearTimer();
57
this.now=this.to;
58
}
59
this.increase();
60
},setNow:function(){
61
this.now=this.compute(this.from,this.to);
62
},compute:function(_12,to){
63
var _14=to-_12;
64
return this.options.transition(this.cTime,_12,_14,this.options.duration);
65
},clearTimer:function(){
66
clearInterval(this.timer);
67
this.timer=null;
68
return this;
69
},_start:function(_15,to){
70
if(!this.options.wait){
71
this.clearTimer();
72
}
73
if(this.timer){
74
return;
75
}
76
setTimeout(AJS.$p(this.options.onStart,this.elm),10);
77
this.from=_15;
78
this.to=to;
79
this.time=new Date().getTime();
80
this.timer=setInterval(this.step,Math.round(1000/this.options.fps));
81
return this;
82
},custom:function(_17,to){
83
return this._start(_17,to);
84
},set:function(to){
85
this.now=to;
86
this.increase();
87
return this;
88
},setStyle:function(elm,_1b,val){
89
if(this.property=="opacity"){
90
AJS.setOpacity(elm,val);
91
}else{
92
AJS.setStyle(elm,_1b,val);
93
}
94
}});
95
AJS.fx.Style=AJS.fx.Base.extend({init:function(elm,_1e,_1f){
96
this.parent();
97
this.elm=elm;
98
this.setOptions(_1f);
99
this.property=_1e;
100
},increase:function(){
101
this.setStyle(this.elm,this.property,this.now);
102
}});
103
AJS.fx.Styles=AJS.fx.Base.extend({init:function(elm,_21){
104
this.parent();
105
this.elm=AJS.$(elm);
106
this.setOptions(_21);
107
this.now={};
108
},setNow:function(){
109
for(p in this.from){
110
this.now[p]=this.compute(this.from[p],this.to[p]);
111
}
112
},custom:function(obj){
113
if(this.timer&&this.options.wait){
114
return;
115
}
116
var _23={};
117
var to={};
118
for(p in obj){
119
_23[p]=obj[p][0];
120
to[p]=obj[p][1];
121
}
122
return this._start(_23,to);
123
},increase:function(){
124
for(var p in this.now){
125
this.setStyle(this.elm,p,this.now[p]);
126
}
127
}});
128
AJS.fx.Transitions={linear:function(t,b,c,d){
129
return c*t/d+b;
130
},sineInOut:function(t,b,c,d){
131
return -c/2*(Math.cos(Math.PI*t/d)-1)+b;
132
}};
133
script_loaded=true;
134
135
136
script_loaded=true;
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/LGPL.txt (-504 lines)
Lines 1-504 Link Here
1
		  GNU LESSER GENERAL PUBLIC LICENSE
2
		       Version 2.1, February 1999
3
4
 Copyright (C) 1991, 1999 Free Software Foundation, Inc.
5
     51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
6
 Everyone is permitted to copy and distribute verbatim copies
7
 of this license document, but changing it is not allowed.
8
9
[This is the first released version of the Lesser GPL.  It also counts
10
 as the successor of the GNU Library Public License, version 2, hence
11
 the version number 2.1.]
12
13
			    Preamble
14
15
  The licenses for most software are designed to take away your
16
freedom to share and change it.  By contrast, the GNU General Public
17
Licenses are intended to guarantee your freedom to share and change
18
free software--to make sure the software is free for all its users.
19
20
  This license, the Lesser General Public License, applies to some
21
specially designated software packages--typically libraries--of the
22
Free Software Foundation and other authors who decide to use it.  You
23
can use it too, but we suggest you first think carefully about whether
24
this license or the ordinary General Public License is the better
25
strategy to use in any particular case, based on the explanations below.
26
27
  When we speak of free software, we are referring to freedom of use,
28
not price.  Our General Public Licenses are designed to make sure that
29
you have the freedom to distribute copies of free software (and charge
30
for this service if you wish); that you receive source code or can get
31
it if you want it; that you can change the software and use pieces of
32
it in new free programs; and that you are informed that you can do
33
these things.
34
35
  To protect your rights, we need to make restrictions that forbid
36
distributors to deny you these rights or to ask you to surrender these
37
rights.  These restrictions translate to certain responsibilities for
38
you if you distribute copies of the library or if you modify it.
39
40
  For example, if you distribute copies of the library, whether gratis
41
or for a fee, you must give the recipients all the rights that we gave
42
you.  You must make sure that they, too, receive or can get the source
43
code.  If you link other code with the library, you must provide
44
complete object files to the recipients, so that they can relink them
45
with the library after making changes to the library and recompiling
46
it.  And you must show them these terms so they know their rights.
47
48
  We protect your rights with a two-step method: (1) we copyright the
49
library, and (2) we offer you this license, which gives you legal
50
permission to copy, distribute and/or modify the library.
51
52
  To protect each distributor, we want to make it very clear that
53
there is no warranty for the free library.  Also, if the library is
54
modified by someone else and passed on, the recipients should know
55
that what they have is not the original version, so that the original
56
author's reputation will not be affected by problems that might be
57
introduced by others.
58
59
  Finally, software patents pose a constant threat to the existence of
60
any free program.  We wish to make sure that a company cannot
61
effectively restrict the users of a free program by obtaining a
62
restrictive license from a patent holder.  Therefore, we insist that
63
any patent license obtained for a version of the library must be
64
consistent with the full freedom of use specified in this license.
65
66
  Most GNU software, including some libraries, is covered by the
67
ordinary GNU General Public License.  This license, the GNU Lesser
68
General Public License, applies to certain designated libraries, and
69
is quite different from the ordinary General Public License.  We use
70
this license for certain libraries in order to permit linking those
71
libraries into non-free programs.
72
73
  When a program is linked with a library, whether statically or using
74
a shared library, the combination of the two is legally speaking a
75
combined work, a derivative of the original library.  The ordinary
76
General Public License therefore permits such linking only if the
77
entire combination fits its criteria of freedom.  The Lesser General
78
Public License permits more lax criteria for linking other code with
79
the library.
80
81
  We call this license the "Lesser" General Public License because it
82
does Less to protect the user's freedom than the ordinary General
83
Public License.  It also provides other free software developers Less
84
of an advantage over competing non-free programs.  These disadvantages
85
are the reason we use the ordinary General Public License for many
86
libraries.  However, the Lesser license provides advantages in certain
87
special circumstances.
88
89
  For example, on rare occasions, there may be a special need to
90
encourage the widest possible use of a certain library, so that it becomes
91
a de-facto standard.  To achieve this, non-free programs must be
92
allowed to use the library.  A more frequent case is that a free
93
library does the same job as widely used non-free libraries.  In this
94
case, there is little to gain by limiting the free library to free
95
software only, so we use the Lesser General Public License.
96
97
  In other cases, permission to use a particular library in non-free
98
programs enables a greater number of people to use a large body of
99
free software.  For example, permission to use the GNU C Library in
100
non-free programs enables many more people to use the whole GNU
101
operating system, as well as its variant, the GNU/Linux operating
102
system.
103
104
  Although the Lesser General Public License is Less protective of the
105
users' freedom, it does ensure that the user of a program that is
106
linked with the Library has the freedom and the wherewithal to run
107
that program using a modified version of the Library.
108
109
  The precise terms and conditions for copying, distribution and
110
modification follow.  Pay close attention to the difference between a
111
"work based on the library" and a "work that uses the library".  The
112
former contains code derived from the library, whereas the latter must
113
be combined with the library in order to run.
114
115
		  GNU LESSER GENERAL PUBLIC LICENSE
116
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
117
118
  0. This License Agreement applies to any software library or other
119
program which contains a notice placed by the copyright holder or
120
other authorized party saying it may be distributed under the terms of
121
this Lesser General Public License (also called "this License").
122
Each licensee is addressed as "you".
123
124
  A "library" means a collection of software functions and/or data
125
prepared so as to be conveniently linked with application programs
126
(which use some of those functions and data) to form executables.
127
128
  The "Library", below, refers to any such software library or work
129
which has been distributed under these terms.  A "work based on the
130
Library" means either the Library or any derivative work under
131
copyright law: that is to say, a work containing the Library or a
132
portion of it, either verbatim or with modifications and/or translated
133
straightforwardly into another language.  (Hereinafter, translation is
134
included without limitation in the term "modification".)
135
136
  "Source code" for a work means the preferred form of the work for
137
making modifications to it.  For a library, complete source code means
138
all the source code for all modules it contains, plus any associated
139
interface definition files, plus the scripts used to control compilation
140
and installation of the library.
141
142
  Activities other than copying, distribution and modification are not
143
covered by this License; they are outside its scope.  The act of
144
running a program using the Library is not restricted, and output from
145
such a program is covered only if its contents constitute a work based
146
on the Library (independent of the use of the Library in a tool for
147
writing it).  Whether that is true depends on what the Library does
148
and what the program that uses the Library does.
149
  
150
  1. You may copy and distribute verbatim copies of the Library's
151
complete source code as you receive it, in any medium, provided that
152
you conspicuously and appropriately publish on each copy an
153
appropriate copyright notice and disclaimer of warranty; keep intact
154
all the notices that refer to this License and to the absence of any
155
warranty; and distribute a copy of this License along with the
156
Library.
157
158
  You may charge a fee for the physical act of transferring a copy,
159
and you may at your option offer warranty protection in exchange for a
160
fee.
161
162
  2. You may modify your copy or copies of the Library or any portion
163
of it, thus forming a work based on the Library, and copy and
164
distribute such modifications or work under the terms of Section 1
165
above, provided that you also meet all of these conditions:
166
167
    a) The modified work must itself be a software library.
168
169
    b) You must cause the files modified to carry prominent notices
170
    stating that you changed the files and the date of any change.
171
172
    c) You must cause the whole of the work to be licensed at no
173
    charge to all third parties under the terms of this License.
174
175
    d) If a facility in the modified Library refers to a function or a
176
    table of data to be supplied by an application program that uses
177
    the facility, other than as an argument passed when the facility
178
    is invoked, then you must make a good faith effort to ensure that,
179
    in the event an application does not supply such function or
180
    table, the facility still operates, and performs whatever part of
181
    its purpose remains meaningful.
182
183
    (For example, a function in a library to compute square roots has
184
    a purpose that is entirely well-defined independent of the
185
    application.  Therefore, Subsection 2d requires that any
186
    application-supplied function or table used by this function must
187
    be optional: if the application does not supply it, the square
188
    root function must still compute square roots.)
189
190
These requirements apply to the modified work as a whole.  If
191
identifiable sections of that work are not derived from the Library,
192
and can be reasonably considered independent and separate works in
193
themselves, then this License, and its terms, do not apply to those
194
sections when you distribute them as separate works.  But when you
195
distribute the same sections as part of a whole which is a work based
196
on the Library, the distribution of the whole must be on the terms of
197
this License, whose permissions for other licensees extend to the
198
entire whole, and thus to each and every part regardless of who wrote
199
it.
200
201
Thus, it is not the intent of this section to claim rights or contest
202
your rights to work written entirely by you; rather, the intent is to
203
exercise the right to control the distribution of derivative or
204
collective works based on the Library.
205
206
In addition, mere aggregation of another work not based on the Library
207
with the Library (or with a work based on the Library) on a volume of
208
a storage or distribution medium does not bring the other work under
209
the scope of this License.
210
211
  3. You may opt to apply the terms of the ordinary GNU General Public
212
License instead of this License to a given copy of the Library.  To do
213
this, you must alter all the notices that refer to this License, so
214
that they refer to the ordinary GNU General Public License, version 2,
215
instead of to this License.  (If a newer version than version 2 of the
216
ordinary GNU General Public License has appeared, then you can specify
217
that version instead if you wish.)  Do not make any other change in
218
these notices.
219
220
  Once this change is made in a given copy, it is irreversible for
221
that copy, so the ordinary GNU General Public License applies to all
222
subsequent copies and derivative works made from that copy.
223
224
  This option is useful when you wish to copy part of the code of
225
the Library into a program that is not a library.
226
227
  4. You may copy and distribute the Library (or a portion or
228
derivative of it, under Section 2) in object code or executable form
229
under the terms of Sections 1 and 2 above provided that you accompany
230
it with the complete corresponding machine-readable source code, which
231
must be distributed under the terms of Sections 1 and 2 above on a
232
medium customarily used for software interchange.
233
234
  If distribution of object code is made by offering access to copy
235
from a designated place, then offering equivalent access to copy the
236
source code from the same place satisfies the requirement to
237
distribute the source code, even though third parties are not
238
compelled to copy the source along with the object code.
239
240
  5. A program that contains no derivative of any portion of the
241
Library, but is designed to work with the Library by being compiled or
242
linked with it, is called a "work that uses the Library".  Such a
243
work, in isolation, is not a derivative work of the Library, and
244
therefore falls outside the scope of this License.
245
246
  However, linking a "work that uses the Library" with the Library
247
creates an executable that is a derivative of the Library (because it
248
contains portions of the Library), rather than a "work that uses the
249
library".  The executable is therefore covered by this License.
250
Section 6 states terms for distribution of such executables.
251
252
  When a "work that uses the Library" uses material from a header file
253
that is part of the Library, the object code for the work may be a
254
derivative work of the Library even though the source code is not.
255
Whether this is true is especially significant if the work can be
256
linked without the Library, or if the work is itself a library.  The
257
threshold for this to be true is not precisely defined by law.
258
259
  If such an object file uses only numerical parameters, data
260
structure layouts and accessors, and small macros and small inline
261
functions (ten lines or less in length), then the use of the object
262
file is unrestricted, regardless of whether it is legally a derivative
263
work.  (Executables containing this object code plus portions of the
264
Library will still fall under Section 6.)
265
266
  Otherwise, if the work is a derivative of the Library, you may
267
distribute the object code for the work under the terms of Section 6.
268
Any executables containing that work also fall under Section 6,
269
whether or not they are linked directly with the Library itself.
270
271
  6. As an exception to the Sections above, you may also combine or
272
link a "work that uses the Library" with the Library to produce a
273
work containing portions of the Library, and distribute that work
274
under terms of your choice, provided that the terms permit
275
modification of the work for the customer's own use and reverse
276
engineering for debugging such modifications.
277
278
  You must give prominent notice with each copy of the work that the
279
Library is used in it and that the Library and its use are covered by
280
this License.  You must supply a copy of this License.  If the work
281
during execution displays copyright notices, you must include the
282
copyright notice for the Library among them, as well as a reference
283
directing the user to the copy of this License.  Also, you must do one
284
of these things:
285
286
    a) Accompany the work with the complete corresponding
287
    machine-readable source code for the Library including whatever
288
    changes were used in the work (which must be distributed under
289
    Sections 1 and 2 above); and, if the work is an executable linked
290
    with the Library, with the complete machine-readable "work that
291
    uses the Library", as object code and/or source code, so that the
292
    user can modify the Library and then relink to produce a modified
293
    executable containing the modified Library.  (It is understood
294
    that the user who changes the contents of definitions files in the
295
    Library will not necessarily be able to recompile the application
296
    to use the modified definitions.)
297
298
    b) Use a suitable shared library mechanism for linking with the
299
    Library.  A suitable mechanism is one that (1) uses at run time a
300
    copy of the library already present on the user's computer system,
301
    rather than copying library functions into the executable, and (2)
302
    will operate properly with a modified version of the library, if
303
    the user installs one, as long as the modified version is
304
    interface-compatible with the version that the work was made with.
305
306
    c) Accompany the work with a written offer, valid for at
307
    least three years, to give the same user the materials
308
    specified in Subsection 6a, above, for a charge no more
309
    than the cost of performing this distribution.
310
311
    d) If distribution of the work is made by offering access to copy
312
    from a designated place, offer equivalent access to copy the above
313
    specified materials from the same place.
314
315
    e) Verify that the user has already received a copy of these
316
    materials or that you have already sent this user a copy.
317
318
  For an executable, the required form of the "work that uses the
319
Library" must include any data and utility programs needed for
320
reproducing the executable from it.  However, as a special exception,
321
the materials to be distributed need not include anything that is
322
normally distributed (in either source or binary form) with the major
323
components (compiler, kernel, and so on) of the operating system on
324
which the executable runs, unless that component itself accompanies
325
the executable.
326
327
  It may happen that this requirement contradicts the license
328
restrictions of other proprietary libraries that do not normally
329
accompany the operating system.  Such a contradiction means you cannot
330
use both them and the Library together in an executable that you
331
distribute.
332
333
  7. You may place library facilities that are a work based on the
334
Library side-by-side in a single library together with other library
335
facilities not covered by this License, and distribute such a combined
336
library, provided that the separate distribution of the work based on
337
the Library and of the other library facilities is otherwise
338
permitted, and provided that you do these two things:
339
340
    a) Accompany the combined library with a copy of the same work
341
    based on the Library, uncombined with any other library
342
    facilities.  This must be distributed under the terms of the
343
    Sections above.
344
345
    b) Give prominent notice with the combined library of the fact
346
    that part of it is a work based on the Library, and explaining
347
    where to find the accompanying uncombined form of the same work.
348
349
  8. You may not copy, modify, sublicense, link with, or distribute
350
the Library except as expressly provided under this License.  Any
351
attempt otherwise to copy, modify, sublicense, link with, or
352
distribute the Library is void, and will automatically terminate your
353
rights under this License.  However, parties who have received copies,
354
or rights, from you under this License will not have their licenses
355
terminated so long as such parties remain in full compliance.
356
357
  9. You are not required to accept this License, since you have not
358
signed it.  However, nothing else grants you permission to modify or
359
distribute the Library or its derivative works.  These actions are
360
prohibited by law if you do not accept this License.  Therefore, by
361
modifying or distributing the Library (or any work based on the
362
Library), you indicate your acceptance of this License to do so, and
363
all its terms and conditions for copying, distributing or modifying
364
the Library or works based on it.
365
366
  10. Each time you redistribute the Library (or any work based on the
367
Library), the recipient automatically receives a license from the
368
original licensor to copy, distribute, link with or modify the Library
369
subject to these terms and conditions.  You may not impose any further
370
restrictions on the recipients' exercise of the rights granted herein.
371
You are not responsible for enforcing compliance by third parties with
372
this License.
373
374
  11. If, as a consequence of a court judgment or allegation of patent
375
infringement or for any other reason (not limited to patent issues),
376
conditions are imposed on you (whether by court order, agreement or
377
otherwise) that contradict the conditions of this License, they do not
378
excuse you from the conditions of this License.  If you cannot
379
distribute so as to satisfy simultaneously your obligations under this
380
License and any other pertinent obligations, then as a consequence you
381
may not distribute the Library at all.  For example, if a patent
382
license would not permit royalty-free redistribution of the Library by
383
all those who receive copies directly or indirectly through you, then
384
the only way you could satisfy both it and this License would be to
385
refrain entirely from distribution of the Library.
386
387
If any portion of this section is held invalid or unenforceable under any
388
particular circumstance, the balance of the section is intended to apply,
389
and the section as a whole is intended to apply in other circumstances.
390
391
It is not the purpose of this section to induce you to infringe any
392
patents or other property right claims or to contest validity of any
393
such claims; this section has the sole purpose of protecting the
394
integrity of the free software distribution system which is
395
implemented by public license practices.  Many people have made
396
generous contributions to the wide range of software distributed
397
through that system in reliance on consistent application of that
398
system; it is up to the author/donor to decide if he or she is willing
399
to distribute software through any other system and a licensee cannot
400
impose that choice.
401
402
This section is intended to make thoroughly clear what is believed to
403
be a consequence of the rest of this License.
404
405
  12. If the distribution and/or use of the Library is restricted in
406
certain countries either by patents or by copyrighted interfaces, the
407
original copyright holder who places the Library under this License may add
408
an explicit geographical distribution limitation excluding those countries,
409
so that distribution is permitted only in or among countries not thus
410
excluded.  In such case, this License incorporates the limitation as if
411
written in the body of this License.
412
413
  13. The Free Software Foundation may publish revised and/or new
414
versions of the Lesser General Public License from time to time.
415
Such new versions will be similar in spirit to the present version,
416
but may differ in detail to address new problems or concerns.
417
418
Each version is given a distinguishing version number.  If the Library
419
specifies a version number of this License which applies to it and
420
"any later version", you have the option of following the terms and
421
conditions either of that version or of any later version published by
422
the Free Software Foundation.  If the Library does not specify a
423
license version number, you may choose any version ever published by
424
the Free Software Foundation.
425
426
  14. If you wish to incorporate parts of the Library into other free
427
programs whose distribution conditions are incompatible with these,
428
write to the author to ask for permission.  For software which is
429
copyrighted by the Free Software Foundation, write to the Free
430
Software Foundation; we sometimes make exceptions for this.  Our
431
decision will be guided by the two goals of preserving the free status
432
of all derivatives of our free software and of promoting the sharing
433
and reuse of software generally.
434
435
			    NO WARRANTY
436
437
  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
438
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
439
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
440
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
441
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
442
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
443
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
444
LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
445
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
446
447
  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
448
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
449
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
450
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
451
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
452
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
453
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
454
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
455
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
456
DAMAGES.
457
458
		     END OF TERMS AND CONDITIONS
459
460
           How to Apply These Terms to Your New Libraries
461
462
  If you develop a new library, and you want it to be of the greatest
463
possible use to the public, we recommend making it free software that
464
everyone can redistribute and change.  You can do so by permitting
465
redistribution under these terms (or, alternatively, under the terms of the
466
ordinary General Public License).
467
468
  To apply these terms, attach the following notices to the library.  It is
469
safest to attach them to the start of each source file to most effectively
470
convey the exclusion of warranty; and each file should have at least the
471
"copyright" line and a pointer to where the full notice is found.
472
473
    <one line to give the library's name and a brief idea of what it does.>
474
    Copyright (C) <year>  <name of author>
475
476
    This library is free software; you can redistribute it and/or
477
    modify it under the terms of the GNU Lesser General Public
478
    License as published by the Free Software Foundation; either
479
    version 2.1 of the License, or (at your option) any later version.
480
481
    This library is distributed in the hope that it will be useful,
482
    but WITHOUT ANY WARRANTY; without even the implied warranty of
483
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
484
    Lesser General Public License for more details.
485
486
    You should have received a copy of the GNU Lesser General Public
487
    License along with this library; if not, write to the Free Software
488
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
489
490
Also add information on how to contact you by electronic and paper mail.
491
492
You should also get your employer (if you work as a programmer) or your
493
school, if any, to sign a "copyright disclaimer" for the library, if
494
necessary.  Here is a sample; alter the names:
495
496
  Yoyodyne, Inc., hereby disclaims all copyright interest in the
497
  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
498
499
  <signature of Ty Coon>, 1 April 1990
500
  Ty Coon, President of Vice
501
502
That's all there is to it!
503
504
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/about.html (-50 lines)
Lines 1-50 Link Here
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
3
<head>
4
    <title>GreyBox - About</title>
5
6
    <script type="text/javascript">
7
        var GB_ROOT_DIR = "./greybox/";
8
    </script>
9
10
    <script type="text/javascript" src="greybox/AJS.js"></script>
11
    <script type="text/javascript" src="greybox/AJS_fx.js"></script>
12
    <script type="text/javascript" src="greybox/gb_scripts.js"></script>
13
    <link href="greybox/gb_styles.css" rel="stylesheet" type="text/css" media="all" />
14
15
    <script type="text/javascript" src="static_files/help.js"></script>
16
    <link href="static_files/help.css" rel="stylesheet" type="text/css" media="all" />
17
</head>
18
19
<body>
20
21
<script>
22
    insertHeader();
23
    insertMenu('about');
24
</script>
25
26
<p>
27
GreyBox is copyrighted work by <a href="http://amix.dk/">Amir Salihefendic</a>.
28
</p>
29
30
<p>
31
It is based on <a href="http://orangoo.com/labs/AJS/">AJS</a> JavaScript library.
32
</p>
33
34
<p>
35
It is realesed under <a href="LGPL.txt">LGPL</a>.
36
</p>
37
38
<h3>Links</h3>
39
<ul>
40
    <li> <a href="http://orangoo.com/labs/GreyBox/">GreyBox official site</a> </li>
41
</ul>
42
43
<h3>Need help?</h3>
44
<ul>
45
    <li><a href="http://groups.google.com/group/greybox">GreyBox Google group</a> - A group where you can ask questions and get answers</li>
46
    <li><a href="http://orangoo.com/labs/GreyBox/FAQ/">GreyBox FAQ</a> -Frequently Asked Questions about GreyBox</li>
47
</ul>
48
49
</body>
50
</html>
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/advance_usage.html (-182 lines)
Lines 1-182 Link Here
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
3
<head>
4
    <title>GreyBox - Advance usage</title>
5
6
    <script type="text/javascript">
7
        var GB_ROOT_DIR = "./greybox/";
8
    </script>
9
10
    <script type="text/javascript" src="greybox/AJS.js"></script>
11
    <script type="text/javascript" src="greybox/AJS_fx.js"></script>
12
    <script type="text/javascript" src="greybox/gb_scripts.js"></script>
13
    <link href="greybox/gb_styles.css" rel="stylesheet" type="text/css" media="all" />
14
15
    <script type="text/javascript" src="static_files/help.js"></script>
16
    <link href="static_files/help.css" rel="stylesheet" type="text/css" media="all" />
17
</head>
18
<body>
19
20
<script>
21
insertHeader();
22
insertMenu('adv_usage');
23
</script>
24
25
<h2>Methods for showing windows</h2>
26
27
<h3 class="first">GB_show</h3>
28
29
<h4>Signature:</h4>
30
<script>
31
insertCode(
32
    'GB_show(caption, url, /*optional*/ height, width, callback_fn)'
33
);
34
</script>
35
36
<h4>Example:</h4>
37
<script>
38
insertCode(
39
    '<a href="http://google.com/" onclick="return GB_show(\'Google\', this.href)">Visit Google</a>'
40
);
41
</script>
42
43
<h4>Example rendered:</h4>
44
<a href="http://google.com/" onclick="return GB_show('Google', this.href)">Visit Google</a>
45
46
47
<h3>GB_showCenter</h3>
48
49
<h4>Signature:</h4>
50
<script>
51
insertCode(
52
    'GB_showCenter(caption, url, /* optional */ height, width, callback_fn)'
53
);
54
</script>
55
56
<h4>Example:</h4>
57
<script>
58
insertCode(
59
    '<a href="http://google.com/" onclick="return GB_showCenter(\'Google\', this.href)">Visit Google</a>'
60
);
61
</script>
62
63
<h4>Example rendered:</h4>
64
<a href="http://google.com/" onclick="return GB_showCenter('Google', this.href)">Visit Google</a>
65
66
67
<h3>GB_showFullScreen</h3>
68
69
<h4>Signature:</h4>
70
<script>
71
insertCode(
72
    'GB_showFullScreen(caption, url, callback_fn)'
73
);
74
</script>
75
76
<h4>Example:</h4>
77
<script>
78
insertCode(
79
    '<a href="http://google.com/" onclick="return GB_showFullScreen(\'Google\', this.href)">Visit Google</a>'
80
);
81
</script>
82
83
<h4>Example rendered:</h4>
84
<a href="http://google.com/" onclick="return GB_showFullScreen('Google', this.href)">Visit Google</a>
85
86
<h2>Methods for showing overlays</h2>
87
88
<h3 class="first">GB_showImage</h3>
89
<h4>Signature:</h4>
90
<script>
91
insertCode(
92
    'GB_showImage(caption, url, callback_fn)'
93
);
94
</script>
95
96
<h4>Example:</h4>
97
<script>
98
insertCode(
99
        '<a href="http://static.flickr.com/119/294309231_a3d2a339b9.jpg"\n'+
100
        'onclick="return GB_showImage(\'Flower\', this.href)">A flower in my hand</a>'
101
);
102
</script>
103
104
<h4>Example rendered:</h4>
105
<a href="http://static.flickr.com/119/294309231_a3d2a339b9.jpg" onclick="return GB_showImage('Flower', this.href)">A flower in my hand</a>
106
107
<h3>GB_showPage</h3>
108
<h4>Signature:</h4>
109
<script>
110
insertCode(
111
    'GB_showPage(caption, url, callback_fn)'
112
);
113
</script>
114
115
<h4>Example:</h4>
116
<script>
117
insertCode(
118
    '<a href="http://google.com" onclick="return GB_showPage(\'Google\', this.href)">Show Google in another layout</a>'
119
);
120
</script>
121
122
<h4>Example rendered:</h4>
123
<a href="http://google.com" onclick="return GB_showPage('Google', this.href)">Show Google in another layout</a>
124
125
126
<h2>Methods for showing sets</h2>
127
128
<h3 class="first">GB_showFullScreenSet</h3>
129
<h4>Signature:</h4>
130
<script>
131
insertCode(
132
    'GB_showFullScreenSet(set, start_index, callback_fn)'
133
);
134
</script>
135
136
<h4>Example:</h4>
137
<script>
138
insertCode(
139
    "<script>",
140
    "var page_set = [{'caption': 'Google', 'url': 'http://google.com/'},",
141
    "    {'caption': 'Yahoo', 'url': 'http://yahoo.com/'}];",
142
    "<\/script>",
143
    '<a href="#" onclick="return GB_showFullScreenSet(page_set, 1)">Show first page in page_set</a>'
144
);
145
</script>
146
147
<h4>Example rendered:</h4>
148
<script>
149
var page_set = [{'caption': 'Google', 'url': 'http://google.com/'},
150
    {'caption': 'Yahoo', 'url': 'http://yahoo.com/'}];
151
</script>
152
<a href="#" onclick="return GB_showFullScreenSet(page_set, 1)">Show first page in page_set</a>
153
154
<h3>GB_showImageSet</h3>
155
<h4>Signature:</h4>
156
<script>
157
insertCode(
158
    'GB_showImageSet(set, start_index, callback_fn)'
159
);
160
</script>
161
162
<h4>Example:</h4>
163
<script>
164
insertCode(
165
    "<script>",
166
    "var image_set = [{'caption': 'Flower', 'url': 'http://static.flickr.com/119/294309231_a3d2a339b9.jpg'},",
167
    "    {'caption': 'Nice waterfall', 'url': 'http://www.widerange.org/images/large/plitvicka.jpg'}];",
168
    "<\/script>",
169
    '<a href="#" onclick="return GB_showImageSet(image_set, 1)">Show first picture in image_set</a>'
170
);
171
</script>
172
173
<h4>Example rendered:</h4>
174
<script>
175
var image_set = [{'caption': 'Flower', 'url': 'http://static.flickr.com/119/294309231_a3d2a339b9.jpg'},
176
    {'caption': 'Nice waterfall', 'url': 'http://www.widerange.org/images/large/plitvicka.jpg'}];
177
</script>
178
<a href="#" onclick="return GB_showImageSet(image_set, 1)">Show first picture in image_set</a>
179
180
181
</body>
182
</html>
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/combiner.py (-134 lines)
Lines 1-134 Link Here
1
#!/usr/bin/env python
2
"""
3
Used to combine the different parts of GreyBox.
4
- Python 2.4 required
5
- Java 1.4+ required
6
- Dojo's JavaScript compressor (http://dojotoolkit.org/docs/compressor_system.html). Place it under compression_lib/custom_rhino.jar
7
"""
8
import os, sys, shutil
9
from compression_lib import AJS_minify
10
11
12
if __name__ == '__main__':
13
    args = sys.argv
14
15
    if len(args) < 2:
16
        print """
17
Usage is:
18
    python combiner.py [full|gallery|window]
19
Example usage:
20
    python combiner.py full
21
The files will be store in greybox_dist/* depending on the dist. type
22
"""
23
        sys.exit(0)
24
25
    type = args[1]
26
    output_dir = 'greybox'
27
28
    ##
29
    # Config file list
30
    #
31
    js = []
32
    css = []
33
    static = []
34
35
    append = lambda l, x: l.append('greybox_source/%s' % x)
36
37
    def appendBase():
38
        append(js, 'base/base.js')
39
        append(js, 'auto_deco.js')
40
        append(css, 'base/base.css')
41
        append(static, 'base/indicator.gif')
42
        append(static, 'base/loader_frame.html')
43
44
    def appendSet():
45
        append(js, 'set/set.js')
46
        append(css, 'set/set.css')
47
        append(static, 'set/next.gif')
48
        append(static, 'set/prev.gif')
49
50
    def appendGallery():
51
        append(js, 'gallery/gallery.js')
52
        append(css, 'gallery/gallery.css')
53
        append(static, 'gallery/g_close.gif')
54
55
    def appendWindow():
56
        append(js, 'window/window.js')
57
        append(css, 'window/window.css')
58
        append(static, 'window/header_bg.gif')
59
        append(static, 'window/w_close.gif')
60
61
    appendBase()
62
63
    if type == 'full':
64
        appendGallery()
65
        appendSet()
66
        appendWindow()
67
    elif type == 'gallery':
68
        appendGallery()
69
        appendSet()
70
    elif type == 'window':
71
        appendWindow()
72
    else:
73
        sys.exit('Uknown type')
74
75
    print 'Follwoing styles are used:'
76
    for style in css:
77
        print '   %s' % style
78
79
    print 'Follwoing JavaScript is used:'
80
    for script in js:
81
        print '   %s' % script
82
83
    ##
84
    # Copy the files
85
    #
86
    try:
87
        shutil.rmtree(output_dir)
88
    except:
89
        pass
90
    os.mkdir(output_dir)
91
92
    def concatFiles(f_list):
93
        data = []
94
        for f in f_list:
95
            data.append(open(f, 'r').read())
96
        return '\n\n'.join(data)
97
98
    def copyFiles(f_list):
99
        for f in f_list:
100
            shutil.copy(f, output_dir)
101
102
    copyFiles(static)
103
    fp = open('%s/%s' % (output_dir, 'gb_styles.css'), 'w')
104
    fp.write(concatFiles(css))
105
    fp.close()
106
    print 'Compressed styles in %s' % ('greybox/gb_styles.css')
107
108
    ##
109
    # Concat js
110
    #
111
    fp = open('%s/%s' % (output_dir, 'gb_scripts_tmp.js'), 'w')
112
    fp.write(concatFiles(js))
113
    fp.close()
114
115
    AJS_minify.AJS_SRC = 'greybox_source/base/AJS.js'
116
    AJS_minify.AJS_MINI_SRC = 'greybox/AJS_tmp.js'
117
    files = ['greybox/gb_scripts_tmp.js', 'greybox_source/base/AJS_fx.js', 'static_files/help.js']
118
    code_analyzer = AJS_minify.ExternalCodeAnalyzer(files)
119
    composer = AJS_minify.AjsComposer(code_analyzer.findFunctions())
120
    composer.writeToOutput()
121
122
    os.popen('java -jar compression_lib/custom_rhino.jar -c greybox/AJS_tmp.js > greybox/AJS.js')
123
    os.remove('greybox/AJS_tmp.js')
124
    os.popen('java -jar compression_lib/custom_rhino.jar -c greybox_source/base/AJS_fx.js > greybox/AJS_fx.js')
125
    print 'Compressed AJS.js and AJS.js into greybox/'
126
127
    os.popen('java -jar compression_lib/custom_rhino.jar -c greybox/gb_scripts_tmp.js > greybox/gb_scripts.js')
128
    os.remove('greybox/gb_scripts_tmp.js')
129
    print 'Compressed JavaScript in %s' % ('greybox/gb_scripts.css')
130
131
    #Append script_loaded
132
    open('greybox/AJS.js', 'a').write('\nscript_loaded=true;')
133
    open('greybox/AJS_fx.js', 'a').write('\nscript_loaded=true;')
134
    open('greybox/gb_scripts.js', 'a').write('\nscript_loaded=true;')
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/compressing_greybox.html (-55 lines)
Lines 1-55 Link Here
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
3
<head>
4
    <title>GreyBox - Compressing GreyBox</title>
5
6
    <script type="text/javascript">
7
        var GB_ROOT_DIR = "./greybox/";
8
    </script>
9
10
    <script type="text/javascript" src="greybox/AJS.js"></script>
11
    <script type="text/javascript" src="greybox/AJS_fx.js"></script>
12
    <script type="text/javascript" src="greybox/gb_scripts.js"></script>
13
    <link href="greybox/gb_styles.css" rel="stylesheet" type="text/css" media="all" />
14
15
    <script type="text/javascript" src="static_files/help.js"></script>
16
    <link href="static_files/help.css" rel="stylesheet" type="text/css" media="all" />
17
</head>
18
<body>
19
20
<script>
21
insertHeader();
22
insertMenu('cmpr');
23
</script>
24
25
<h2>Code structure</h2>
26
<ul>
27
    <li><b>greybox:</b> Generated and compressed JavaScript and CSS is located here</li>
28
    <li><b>greybox_source:</b> CSS and JavaScript structured in directories.</li>
29
</ul>
30
It's not recommend that you alter code in the <b>greybox</b> directory, since it's computer generated and very unreadable!
31
32
33
<h2>Download Dojo ShrinkSafe</h2>
34
To make the filesize as small as possible GreyBox JavaScript is compressed down using <a href="http://alex.dojotoolkit.org/shrinksafe/">Dojo ShrinkSafe</a>. This library requires <a href="http://www.java.com/getjava/">Java</a>, so make sure you got Java installed. Download following JAR file:
35
<ul>
36
    <li><a href="http://svn.dojotoolkit.org/dojo/trunk/buildscripts/lib/custom_rhino.jar">custom_rhino.jar</a></li>
37
</ul>
38
Place <b>custom_rhino.jar</b> in GreyBox's <b>compression_lib</b> directory.
39
40
41
<h2>Compressing GreyBox</h2>
42
Now, you are ready to compress GreyBox. This is done by running a Python script called <b>combiner.py</b>. I.e. you need to download and install <a href="http://www.python.org/download/">Pyhton</a>. 
43
44
<p>
45
You can run <b>combiner.py</b> in following ways:
46
</p>
47
48
<ul>
49
    <li><b>python combiner.py full:</b> Compress everything</li>
50
    <li><b>python combiner.py gallery:</b> Compress only gallery related CSS and JavaScript</li>
51
    <li><b>python combiner.py window:</b> Compress only window related CSS and JavaScript</li>
52
</ul>
53
54
</body>
55
</html>
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/compression_lib/AJS_minify.py (-255 lines)
Lines 1-255 Link Here
1
#!/usr/bin/env python
2
#Last-update: 08/05/07 12:39:17
3
import re
4
import sys
5
from sets import Set
6
7
##
8
# External files
9
#
10
AJS_SRC = 'AJS.js'
11
AJS_MINI_SRC = 'AJS_compressed.js'
12
13
14
##
15
# Standard stuff that may change in the future
16
#
17
DOM_SHORTCUTS = [
18
    "ul", "li", "td", "tr", "th",
19
    "tbody", "table", "input", "span", "b",
20
    "a", "div", "img", "button", "h1",
21
    "h2", "h3", "br", "textarea", "form",
22
    "p", "select", "option", "iframe", "script",
23
    "center", "dl", "dt", "dd", "small",
24
    "pre", "tn"
25
]
26
27
FN_SHORTCUTS = {
28
    '$': 'getElement',
29
    '$$': 'getElements',
30
    '$f': 'getFormElement',
31
    '$b': 'bind',
32
    '$p': 'partial',
33
    '$A': 'createArray',
34
    'DI': 'documentInsert',
35
    'ACN': 'appendChildNodes',
36
    'RCN': 'replaceChildNodes',
37
    'AEV': 'addEventListener',
38
    'REV': 'removeEventListener',
39
    '$bytc': 'getElementsByTagAndClassName'
40
}
41
42
AJS_TEMPLATE = """//AJS JavaScript library (minify'ed version)
43
//Copyright (c) 2006 Amir Salihefendic. All rights reserved.
44
//Copyright (c) 2005 Bob Ippolito. All rights reserved.
45
//License: http://www.opensource.org/licenses/mit-license.php
46
//Visit http://orangoo.com/AmiNation/AJS for full version.
47
AJS = {
48
BASE_URL: "",
49
drag_obj: null,
50
drag_elm: null,
51
_drop_zones: [],
52
_cur_pos: null,
53
54
%(functions)s
55
}
56
57
AJS.$ = AJS.getElement;
58
AJS.$$ = AJS.getElements;
59
AJS.$f = AJS.getFormElement;
60
AJS.$p = AJS.partial;
61
AJS.$b = AJS.bind;
62
AJS.$A = AJS.createArray;
63
AJS.DI = AJS.documentInsert;
64
AJS.ACN = AJS.appendChildNodes;
65
AJS.RCN = AJS.replaceChildNodes;
66
AJS.AEV = AJS.addEventListener;
67
AJS.REV = AJS.removeEventListener;
68
AJS.$bytc = AJS.getElementsByTagAndClassName;
69
70
AJS.addEventListener(window, 'unload', AJS._unloadListeners);
71
AJS._createDomShortcuts();
72
73
%(AJSClass)s
74
75
%(AJSDeferred)s
76
script_loaded = true;
77
"""
78
79
80
def getAjsCode():
81
    return open(AJS_SRC).read()
82
83
def writeAjsMini(code):
84
    open(AJS_MINI_SRC, "w").write(code)
85
86
87
class AjsAnalyzer:
88
89
    def __init__(self):
90
        self.code = getAjsCode()
91
        self.ajs_fns = {}
92
        self.ajs_deps = {}
93
        self._parseAJS()
94
        self._findDeps()
95
96
    def _parseAJS(self):
97
        ajs_code = re.search("AJS =(.|\n)*\n}\n", self.code).group(0)
98
        fns = re.findall("\s+((\w*?):.*?{(.|\n)*?\n\s*})(,|\n+})\n", ajs_code)
99
        for f in fns:
100
            self.ajs_fns[f[1]] = f[0]
101
102
    def getFnCode(self, fn_name, caller=None):
103
        """
104
        Returns the code of function and it's dependencies as a list
105
        """
106
        fn_name = self._unfoldFn(fn_name)
107
        r = []
108
        if self.ajs_fns.get(fn_name):
109
            r.append(self.ajs_fns[fn_name])
110
            for dep_fn in self.ajs_deps[fn_name]:
111
                if fn_name != dep_fn and dep_fn != caller:
112
                    r.extend(self.getFnCode(dep_fn, fn_name))
113
        elif fn_name not in ['listeners', 'Class']:
114
            print 'Could not find "%s"' % fn_name
115
        return r
116
117
    def getAjsClassCode(self):
118
        return re.search("AJS.Class =(.|\n)*\n};\n", self.code).group(0)
119
120
    def getAjsDeferredCode(self):
121
        return re.search("AJSDeferred =(.|\n)*\n};\n", self.code).group(0)
122
123
    def _findDeps(self):
124
        """
125
        Parses AJS and for every function it finds dependencies for the other functions.
126
        """
127
        for fn_name, fn_code in self.ajs_fns.items():
128
            self.ajs_deps[fn_name] = self._findFns(fn_code)
129
130
    def _findFns(self, inner):
131
        """
132
        Searches after AJS.fnX( in inner and returns all the fnX in a Set.
133
        """
134
        s = re.findall("AJS\.([\w_$]*?)(?:\(|,|\.)", inner)
135
        s = list(Set(s))
136
        return self._unfoldFns(s)
137
138
    def _unfoldFns(self, list):
139
        """
140
        Unfolds:
141
            AJS.B, AJS.H1 etc. to _createDomShortcuts
142
            AJS.$ to AJS.getElement etc.
143
        """
144
        return [self._unfoldFn(n) for n in list]
145
146
    def _unfoldFn(self, fn_name):
147
        if fn_name.lower() in DOM_SHORTCUTS:
148
            return "_createDomShortcuts"
149
        elif FN_SHORTCUTS.get(fn_name):
150
            return FN_SHORTCUTS[fn_name]
151
        else:
152
            return fn_name
153
154
155
class ExternalCodeAnalyzer:
156
157
    def __init__(self, files):
158
        self.found_ajs_fns = []
159
        self.files = files
160
161
    def findFunctions(self):
162
        for f in self.files:
163
            self.found_ajs_fns.extend( self._parseFile(f) )
164
        return list(Set(self.found_ajs_fns))
165
166
    def _parseFile(self, f):
167
        """
168
        Parses the file, looks for AJS functions and returns all the found functions.
169
        """
170
        code = open(f).read()
171
        return re.findall("AJS\.([\w_$]*?)\(", code)
172
173
174
175
class AjsComposer:
176
177
    def __init__(self, fn_list):
178
        self.code = getAjsCode()
179
        self.analyzer = AjsAnalyzer()
180
        self.fn_list = fn_list
181
182
        #Append standard functions
183
        req = ['_unloadListeners', 'createDOM', '_createDomShortcuts', 'log', 'addEventListener']
184
        self.fn_list.extend(req)
185
186
        #Append AJSDeferred only if needed
187
        in_list = lambda x: x in self.fn_list
188
        if in_list('getRequest') or in_list('loadJSONDoc'):
189
            self.deferred = self._minify(self.analyzer.getAjsDeferredCode())
190
            self.fn_list.append('isObject')
191
        else:
192
            self.deferred = ''
193
194
    def writeToOutput(self):
195
        fns = self._getFns()
196
        d = {}
197
        d['functions'] = ",\n".join(fns)
198
        d['AJSDeferred'] = self.deferred
199
        d['AJSClass'] = self.analyzer.getAjsClassCode()
200
201
        mini_code = AJS_TEMPLATE % d
202
        writeAjsMini(mini_code)
203
204
    def _minify(self, code):
205
        new_lines = []
206
        for l in code.split("\n"):
207
            if l not in ['\n', '']:
208
                new_lines.append(l.lstrip())
209
        return "\n".join(new_lines)
210
211
    def _getFns(self):
212
        """
213
        Returns a list with real code of functions
214
        """
215
        r = []
216
        for fn in self.fn_list:
217
            r.extend(self.analyzer.getFnCode(fn))
218
219
        r = list(Set(r))
220
        return [self._minify(fn) for fn in r]
221
222
223
if __name__ == '__main__':
224
    args = sys.argv
225
226
    if len(args) < 3:
227
        print """Usage is:
228
    python AJS_minify.py [-o output_file] ajs_file js_file.js html_using_ajs.html ...
229
Example usage:
230
    Using relative paths:
231
        python AJS_minify.py -o AJS_mini.js AJS.js test.js index.html
232
        This will create AJS_mini.js from test.js and index.html.
233
    Using absolute paths:
234
        python AJS_minify.py ~/Desktop/AJS/AJS.js ~/Desktop/GreyBox_v3_42/greybox/greybox.js
235
        This will create a new file called '%s' that has the needed AJS functions.""" % AJS_MINI_SRC
236
237
        sys.exit(0)
238
239
    if sys.argv[1] == '-o':
240
        AJS_MINI_SRC = sys.argv[2]
241
        AJS_SRC = sys.argv[3]
242
        FILES = sys.argv[4:]
243
    else:
244
        AJS_SRC = sys.argv[1]
245
        FILES = sys.argv[2:]
246
247
    print 'Parsing through:\n    %s' % "\n    ".join(FILES)
248
249
    code_analyzer = ExternalCodeAnalyzer(FILES)
250
    found_fns = code_analyzer.findFunctions()
251
    print 'Found following AJS functions:\n    %s' % ("\n    ".join(found_fns))
252
253
    composer = AjsComposer(found_fns)
254
    composer.writeToOutput()
255
    print "Written the minified code to '%s'" % AJS_MINI_SRC
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/compression_lib/__init__.py (-1 lines)
Line 1 Link Here
1
#
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/examples.html (-95 lines)
Lines 1-95 Link Here
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
3
<head>
4
    <title>GreyBox - Examples</title>
5
6
    <script type="text/javascript">
7
        var GB_ROOT_DIR = "./greybox/";
8
    </script>
9
10
    <script type="text/javascript" src="greybox/AJS.js"></script>
11
    <script type="text/javascript" src="greybox/AJS_fx.js"></script>
12
    <script type="text/javascript" src="greybox/gb_scripts.js"></script>
13
    <link href="greybox/gb_styles.css" rel="stylesheet" type="text/css" media="all" />
14
15
    <script type="text/javascript" src="static_files/help.js"></script>
16
    <link href="static_files/help.css" rel="stylesheet" type="text/css" media="all" />
17
</head>
18
<body>
19
20
<script>
21
    insertHeader();
22
    insertMenu('examples');
23
</script>
24
25
26
<h3>One website</h3>
27
<ul>
28
    <li>
29
        <a href="http://google.com/" title="Google" rel="gb_page_center[640, 480]">Launch google.com in a 640x480 window</a>
30
    </li>
31
    <li>
32
        <a href="http://google.com/" title="Google" rel="gb_page_fs[]">Launch google.com in fullscreen window</a>
33
    </li>
34
</ul>
35
36
<h3>Website gallery</h3>
37
<ul>
38
    <li>
39
        <a href="http://google.com/" title="Google" rel="gb_pageset[search_sites]">Launch Google search</a>
40
    </li>
41
    <li>
42
        <a href="http://search.yahoo.com/" rel="gb_pageset[search_sites]">Launch Yahoo search</a>
43
    </li>
44
    <li>
45
        <a href="http://www.koders.com/" rel="gb_pageset[search_sites]">Launch Koders search</a>
46
    </li>
47
</ul>
48
49
<h3>Image gallery</h3>
50
<script type="text/javascript">
51
var image_set = [{'caption': 'Flower', 'url': 'http://static.flickr.com/119/294309231_a3d2a339b9.jpg'},
52
                 {'caption': 'Nice waterfall', 'url': 'http://www.widerange.org/images/large/plitvicka.jpg'}];
53
</script>
54
55
<ul>
56
    <li>
57
        <a href="#" onclick="return GB_showImageSet(image_set, 1)">Launch gallery</a>
58
    </li>
59
60
    <li>
61
        <a href="static_files/night_valley.jpg" rel="gb_imageset[nice_pics]" title="Night valley">
62
            <img src="static_files/night_valley_thumb.jpg" />
63
        </a>
64
    </li>
65
66
    <li>
67
        <a href="static_files/salt.jpg" rel="gb_imageset[nice_pics]" title="Salt flats in Chile">
68
            <img src="static_files/salt_thumb.gif" />
69
        </a>
70
    </li>
71
</ul>
72
73
<h3>Without loading</h3>
74
<script type="text/javascript">
75
GB_myShow = function(caption, url, /* optional */ height, width, callback_fn) {
76
    var options = {
77
        caption: caption,
78
        height: height || 500,
79
        width: width || 500,
80
        fullscreen: false,
81
        show_loading: false,
82
        callback_fn: callback_fn
83
    }
84
    var win = new GB_Window(options);
85
    return win.show(url);
86
}
87
</script>
88
<ul>
89
    <li>
90
        <a href="http://google.com/" onclick="return GB_myShow('Google', this.href)">Visit Google without loading</a>
91
    </li>
92
</ul>
93
94
</body>
95
</html>
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/greybox_source/auto_deco.js (-67 lines)
Lines 1-67 Link Here
1
var GB_SETS = {};
2
function decoGreyboxLinks() {
3
    var as = AJS.$bytc('a');
4
    AJS.map(as, function(a) {
5
        if(a.getAttribute('href') && a.getAttribute('rel')) {
6
            var rel = a.getAttribute('rel');
7
            if(rel.indexOf('gb_') == 0) {
8
                var name = rel.match(/\w+/)[0];
9
                var attrs = rel.match(/\[(.*)\]/)[1];
10
                var index = 0;
11
12
                var item = {
13
                    'caption': a.title || '',
14
                    'url': a.href
15
                }
16
17
                //Set up GB_SETS
18
                if(name == 'gb_pageset' || name == 'gb_imageset') {
19
                    if(!GB_SETS[attrs]) { GB_SETS[attrs] = []; }
20
                    GB_SETS[attrs].push(item);
21
                    index = GB_SETS[attrs].length;
22
                }
23
24
                //Append onclick
25
                if(name == 'gb_pageset') {
26
                    a.onclick = function() {
27
                        GB_showFullScreenSet(GB_SETS[attrs], index);
28
                        return false;
29
                    };
30
                }
31
                if(name == 'gb_imageset') {
32
                    a.onclick = function() {
33
                        GB_showImageSet(GB_SETS[attrs], index);
34
                        return false;
35
                    };
36
                }
37
                if(name == 'gb_image') {
38
                    a.onclick = function() {
39
                        GB_showImage(item.caption, item.url);
40
                        return false;
41
                    };
42
                }
43
                if(name == 'gb_page') {
44
                    a.onclick = function() {
45
                        var sp = attrs.split(/, ?/);
46
                        GB_show(item.caption, item.url, parseInt(sp[1]), parseInt(sp[0]));
47
                        return false;
48
                    };
49
                }
50
                if(name == 'gb_page_fs') {
51
                    a.onclick = function() {
52
                        GB_showFullScreen(item.caption, item.url);
53
                        return false;
54
                    };
55
                }
56
                if(name == 'gb_page_center') {
57
                    a.onclick = function() {
58
                        var sp = attrs.split(/, ?/);
59
                        GB_showCenter(item.caption, item.url, parseInt(sp[1]), parseInt(sp[0]));
60
                        return false;
61
                    };
62
                }
63
            }
64
        }});
65
}
66
67
AJS.AEV(window, 'load', decoGreyboxLinks);
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/greybox_source/base/AJS.js (-1371 lines)
Lines 1-1371 Link Here
1
/*
2
Last Modified: 29/01/07 14:16:09
3
4
AJS JavaScript library
5
    A very small library with a lot of functionality
6
AUTHOR
7
    4mir Salihefendic (http://amix.dk) - amix@amix.dk
8
LICENSE
9
    Copyright (c) 2006 Amir Salihefendic. All rights reserved.
10
    Copyright (c) 2005 Bob Ippolito. All rights reserved.
11
    http://www.opensource.org/licenses/mit-license.php
12
VERSION
13
    3.7
14
SITE
15
    http://orangoo.com/AmiNation/AJS
16
**/
17
if(!AJS) {
18
var AJS = {
19
    BASE_URL: "",
20
21
    drag_obj: null,
22
    drag_elm: null,
23
    _drop_zones: [],
24
    _drag_zones: [],
25
    _cur_pos: null,
26
27
    ajaxErrorHandler: null,
28
29
////
30
// General accessor functions
31
////
32
    getQueryArgument: function(var_name) {
33
        var query = window.location.search.substring(1);
34
        var vars = query.split("&");
35
        for (var i=0;i<vars.length;i++) {
36
            var pair = vars[i].split("=");
37
            if (pair[0] == var_name) {
38
                return pair[1];
39
            }
40
        }
41
        return null;
42
    },
43
44
    isIe: function() {
45
        return (navigator.userAgent.toLowerCase().indexOf("msie") != -1 && navigator.userAgent.toLowerCase().indexOf("opera") == -1);
46
    },
47
    isNetscape7: function() {
48
        return (navigator.userAgent.toLowerCase().indexOf("netscape") != -1 && navigator.userAgent.toLowerCase().indexOf("7.") != -1);
49
    },
50
    isSafari: function() {
51
        return (navigator.userAgent.toLowerCase().indexOf("khtml") != -1);
52
    },
53
    isOpera: function() {
54
        return (navigator.userAgent.toLowerCase().indexOf("opera") != -1);
55
    },
56
    isMozilla: function() {
57
        return (navigator.userAgent.toLowerCase().indexOf("gecko") != -1 && navigator.productSub >= 20030210);
58
    },
59
60
61
////
62
// Array functions
63
////
64
    //Shortcut: AJS.$A
65
    createArray: function(v) {
66
        if(AJS.isArray(v) && !AJS.isString(v))
67
            return v;
68
        else if(!v)
69
            return [];
70
        else
71
            return [v];
72
    },
73
74
    forceArray: function(args) {
75
        var r = [];
76
        AJS.map(args, function(elm) {
77
            r.push(elm);
78
        });
79
        return r;
80
    },
81
82
    join: function(delim, list) {
83
        try {
84
            return list.join(delim);
85
        }
86
        catch(e) {
87
            var r = list[0] || '';
88
            AJS.map(list, function(elm) {
89
                r += delim + elm;
90
            }, 1);
91
            return r + '';
92
        }
93
    },
94
95
    isIn: function(elm, list) {
96
        var i = AJS.getIndex(elm, list);
97
        if(i != -1)
98
            return true;
99
        else
100
            return false;
101
    },
102
103
    getIndex: function(elm, list/*optional*/, eval_fn) {
104
        for(var i=0; i < list.length; i++)
105
            if(eval_fn && eval_fn(list[i]) || elm == list[i])
106
                return i;
107
        return -1;
108
    },
109
110
    getFirst: function(list) {
111
        if(list.length > 0)
112
            return list[0];
113
        else
114
            return null;
115
    },
116
117
    getLast: function(list) {
118
        if(list.length > 0)
119
            return list[list.length-1];
120
        else
121
            return null;
122
    },
123
124
    update: function(l1, l2) {
125
        for(var i in l2)
126
            l1[i] = l2[i];
127
        return l1;
128
    },
129
130
    flattenList: function(list) {
131
        var r = [];
132
        var _flatten = function(r, l) {
133
            AJS.map(l, function(o) {
134
                if(o == null) {}
135
                else if (AJS.isArray(o))
136
                    _flatten(r, o);
137
                else
138
                    r.push(o);
139
            });
140
        }
141
        _flatten(r, list);
142
        return r;
143
    },
144
145
146
////
147
// Functional programming
148
////
149
    map: function(list, fn,/*optional*/ start_index, end_index) {
150
        var i = 0, l = list.length;
151
        if(start_index)
152
             i = start_index;
153
        if(end_index)
154
             l = end_index;
155
        for(i; i < l; i++)
156
            fn.apply(null, [list[i], i]);
157
    },
158
159
    rmap: function(list, fn) {
160
        var i = list.length-1, l = 0;
161
        for(i; i >= l; i--)
162
            fn.apply(null, [list[i], i]);
163
    },
164
165
    filter: function(list, fn, /*optional*/ start_index, end_index) {
166
        var r = [];
167
        AJS.map(list, function(elm) {
168
            if(fn(elm))
169
                r.push(elm);
170
        }, start_index, end_index);
171
        return r;
172
    },
173
174
    partial: function(fn) {
175
        var args = AJS.forceArray(arguments);
176
        return AJS.$b(fn, null, args.slice(1, args.length).reverse(), false, true);
177
    },
178
179
180
////
181
// DOM functions
182
////
183
    //Shortcut: AJS.$
184
    getElement: function(id) {
185
        if(AJS.isString(id) || AJS.isNumber(id))
186
            return document.getElementById(id);
187
        else
188
            return id;
189
    },
190
191
    //Shortcut: AJS.$$
192
    getElements: function(/*id1, id2, id3*/) {
193
        var args = AJS.forceArray(arguments);
194
        var elements = new Array();
195
            for (var i = 0; i < args.length; i++) {
196
                var element = AJS.getElement(args[i]);
197
                elements.push(element);
198
            }
199
            return elements;
200
    },
201
202
    //Shortcut: AJS.$bytc
203
    getElementsByTagAndClassName: function(tag_name, class_name, /*optional*/ parent) {
204
        var class_elements = [];
205
        if(!AJS.isDefined(parent))
206
            parent = document;
207
        if(!AJS.isDefined(tag_name))
208
            tag_name = '*';
209
210
        var els = parent.getElementsByTagName(tag_name);
211
        var els_len = els.length;
212
        var pattern = new RegExp("(^|\\s)" + class_name + "(\\s|$)");
213
214
        for (i = 0, j = 0; i < els_len; i++) {
215
            if ( pattern.test(els[i].className) || class_name == null ) {
216
                class_elements[j] = els[i];
217
                j++;
218
            }
219
        }
220
        return class_elements;
221
    },
222
223
    _nodeWalk: function(elm, tag_name, class_name, fn_next_elm) {
224
        var p = fn_next_elm(elm);
225
226
        var checkFn;
227
        if(tag_name && class_name) {
228
            checkFn = function(p) {
229
                return AJS.nodeName(p) == tag_name && AJS.hasClass(p, class_name);
230
            }
231
        }
232
        else if(tag_name) {
233
            checkFn = function(p) { return AJS.nodeName(p) == tag_name; }
234
        }
235
        else {
236
            checkFn = function(p) { return AJS.hasClass(p, class_name); }
237
        }
238
239
        while(p) {
240
            if(checkFn(p))
241
                return p;
242
            p = fn_next_elm(p);
243
        }
244
        return null;
245
    },
246
247
    getParentBytc: function(elm, tag_name, class_name) {
248
        return AJS._nodeWalk(elm, tag_name, class_name, function(m) { return m.parentNode; });
249
    },
250
251
    getPreviousSiblingBytc: function(elm, tag_name, class_name) {
252
        return AJS._nodeWalk(elm, tag_name, class_name, function(m) { return m.previousSibling; });
253
    },
254
255
    getNextSiblingBytc: function(elm, tag_name, class_name) {
256
        return AJS._nodeWalk(elm, tag_name, class_name, function(m) { return m.nextSibling; });
257
    },
258
259
    //Shortcut: AJS.$f
260
    getFormElement: function(form, name) {
261
        form = AJS.$(form);
262
        var r = null;
263
        AJS.map(form.elements, function(elm) {
264
            if(elm.name && elm.name == name)
265
                r = elm;
266
        });
267
        return r;
268
    },
269
270
    formContents: function(form) {
271
        var form = AJS.$(form);
272
        var r = {};
273
        var fn = function(elms) {
274
            AJS.map(elms, function(e) {
275
                if(e.name)
276
                    r[e.name] = e.value || '';
277
            });
278
        }
279
        fn(AJS.$bytc('input', null, form));
280
        fn(AJS.$bytc('textarea', null, form));
281
        return r;
282
    },
283
284
    getBody: function() {
285
        return AJS.$bytc('body')[0]
286
    },
287
288
    nodeName: function(elm) {
289
        return elm.nodeName.toLowerCase();
290
    },
291
292
    hasParent: function(elm, parent_to_consider, max_look_up) {
293
        if(elm == parent_to_consider)
294
            return true;
295
        if(max_look_up == 0)
296
            return false;
297
        return AJS.hasParent(elm.parentNode, parent_to_consider, max_look_up-1);
298
    },
299
300
    isElementHidden: function(elm) {
301
        return elm.style.visibility == "hidden";
302
    },
303
304
    //Shortcut: AJS.DI
305
    documentInsert: function(elm) {
306
        if(typeof(elm) == 'string')
307
            elm = AJS.HTML2DOM(elm);
308
        document.write('<span id="dummy_holder"></span>');
309
        AJS.swapDOM(AJS.$('dummy_holder'), elm);
310
    },
311
312
    cloner: function(element) {
313
        return function() {
314
            return element.cloneNode(true);
315
        }
316
    },
317
318
    appendToTop: function(elm/*, elms...*/) {
319
        var args = AJS.forceArray(arguments).slice(1);
320
        if(args.length >= 1) {
321
            var first_child = elm.firstChild;
322
            if(first_child) {
323
                while(true) {
324
                    var t_elm = args.shift();
325
                    if(t_elm)
326
                        AJS.insertBefore(t_elm, first_child);
327
                    else
328
                        break;
329
                }
330
            }
331
            else {
332
                AJS.ACN.apply(null, arguments);
333
            }
334
        }
335
        return elm;
336
    },
337
338
    //Shortcut: AJS.ACN
339
    appendChildNodes: function(elm/*, elms...*/) {
340
        if(arguments.length >= 2) {
341
            AJS.map(arguments, function(n) {
342
                if(AJS.isString(n))
343
                    n = AJS.TN(n);
344
                if(AJS.isDefined(n))
345
                    elm.appendChild(n);
346
            }, 1);
347
        }
348
        return elm;
349
    },
350
351
    //Shortcut: AJS.RCN
352
    replaceChildNodes: function(elm/*, elms...*/) {
353
        var child;
354
        while ((child = elm.firstChild))
355
            elm.removeChild(child);
356
        if (arguments.length < 2)
357
            return elm;
358
        else
359
            return AJS.appendChildNodes.apply(null, arguments);
360
        return elm;
361
    },
362
363
    insertAfter: function(elm, reference_elm) {
364
        reference_elm.parentNode.insertBefore(elm, reference_elm.nextSibling);
365
        return elm;
366
    },
367
368
    insertBefore: function(elm, reference_elm) {
369
        reference_elm.parentNode.insertBefore(elm, reference_elm);
370
        return elm;
371
    },
372
373
    showElement: function(/*elms...*/) {
374
        var args = AJS.forceArray(arguments);
375
        AJS.map(args, function(elm) { elm.style.display = ''});
376
    },
377
378
    hideElement: function(elm) {
379
        var args = AJS.forceArray(arguments);
380
        AJS.map(args, function(elm) { elm.style.display = 'none'});
381
    },
382
383
    swapDOM: function(dest, src) {
384
        dest = AJS.getElement(dest);
385
        var parent = dest.parentNode;
386
        if (src) {
387
            src = AJS.getElement(src);
388
            parent.replaceChild(src, dest);
389
        } else {
390
            parent.removeChild(dest);
391
        }
392
        return src;
393
    },
394
395
    removeElement: function(/*elm1, elm2...*/) {
396
        var args = AJS.forceArray(arguments);
397
        AJS.map(args, function(elm) { AJS.swapDOM(elm, null); });
398
    },
399
400
    createDOM: function(name, attrs) {
401
        var i=0, attr;
402
        elm = document.createElement(name);
403
404
        if(AJS.isDict(attrs[i])) {
405
            for(k in attrs[0]) {
406
                attr = attrs[0][k];
407
                if(k == "style")
408
                    elm.style.cssText = attr;
409
                else if(k == "class" || k == 'className')
410
                    elm.className = attr;
411
                else {
412
                    elm.setAttribute(k, attr);
413
                }
414
            }
415
            i++;
416
        }
417
418
        if(attrs[0] == null)
419
            i = 1;
420
421
        AJS.map(attrs, function(n) {
422
            if(n) {
423
                if(AJS.isString(n) || AJS.isNumber(n))
424
                    n = AJS.TN(n);
425
                elm.appendChild(n);
426
            }
427
        }, i);
428
        return elm;
429
    },
430
431
    _createDomShortcuts: function() {
432
        var elms = [
433
                "ul", "li", "td", "tr", "th",
434
                "tbody", "table", "input", "span", "b",
435
                "a", "div", "img", "button", "h1",
436
                "h2", "h3", "br", "textarea", "form",
437
                "p", "select", "option", "iframe", "script",
438
                "center", "dl", "dt", "dd", "small",
439
                "pre"
440
        ];
441
        var extends_ajs = function(elm) {
442
            var c_dom = "return AJS.createDOM.apply(null, ['" + elm + "', arguments]);";
443
            var c_fun_dom = 'function() { ' + c_dom + '    }';
444
            eval("AJS." + elm.toUpperCase() + "=" + c_fun_dom);
445
        }
446
        AJS.map(elms, extends_ajs);
447
        AJS.TN = function(text) { return document.createTextNode(text) };
448
    },
449
450
    getCssDim: function(dim) {
451
        if(AJS.isString(dim))
452
            return dim;
453
        else
454
            return dim + "px";
455
    },
456
    getCssProperty: function(elm, prop) {
457
        elm = AJS.$(elm);
458
        var y;
459
        if(elm.currentStyle)
460
            y = elm.currentStyle[prop];
461
	else if (window.getComputedStyle)
462
            y = document.defaultView.getComputedStyle(elm,null).getPropertyValue(prop);
463
	return y;
464
    },
465
466
    setStyle: function(/*elm1, elm2..., property, new_value*/) {
467
        var args = AJS.forceArray(arguments);
468
        var new_val = args.pop();
469
        var property = args.pop();
470
        AJS.map(args, function(elm) { 
471
            elm.style[property] = AJS.getCssDim(new_val);
472
        });
473
    },
474
475
    setWidth: function(/*elm1, elm2..., width*/) {
476
        var args = AJS.forceArray(arguments);
477
        args.splice(args.length-1, 0, 'width');
478
        AJS.setStyle.apply(null, args);
479
    },
480
    setHeight: function(/*elm1, elm2..., height*/) {
481
        var args = AJS.forceArray(arguments);
482
        args.splice(args.length-1, 0, 'height');
483
        AJS.setStyle.apply(null, args);
484
    },
485
    setLeft: function(/*elm1, elm2..., left*/) {
486
        var args = AJS.forceArray(arguments);
487
        args.splice(args.length-1, 0, 'left');
488
        AJS.setStyle.apply(null, args);
489
    },
490
    setTop: function(/*elm1, elm2..., top*/) {
491
        var args = AJS.forceArray(arguments);
492
        args.splice(args.length-1, 0, 'top');
493
        AJS.setStyle.apply(null, args);
494
    },
495
    setClass: function(/*elm1, elm2..., className*/) {
496
        var args = AJS.forceArray(arguments);
497
        var c = args.pop();
498
        AJS.map(args, function(elm) { elm.className = c});
499
    },
500
    addClass: function(/*elm1, elm2..., className*/) {
501
        var args = AJS.forceArray(arguments);
502
        var cls = args.pop();
503
        var add_class = function(o) {
504
            if(!new RegExp("(^|\\s)" + cls + "(\\s|$)").test(o.className))
505
                o.className += (o.className ? " " : "") + cls;
506
        };
507
        AJS.map(args, function(elm) { add_class(elm); });
508
    },
509
    hasClass: function(elm, cls) {
510
        if(!elm.className)
511
            return false;
512
        return elm.className == cls || 
513
               elm.className.search(new RegExp(" " + cls)) != -1
514
    },
515
    removeClass: function(/*elm1, elm2..., className*/) {
516
        var args = AJS.forceArray(arguments);
517
        var cls = args.pop();
518
        var rm_class = function(o) {
519
            o.className = o.className.replace(new RegExp("\\s?" + cls, 'g'), "");
520
        };
521
        AJS.map(args, function(elm) { rm_class(elm); });
522
    },
523
524
    setHTML: function(elm, html) {
525
        elm.innerHTML = html;
526
        return elm;
527
    },
528
529
    RND: function(tmpl, ns, scope) {
530
        scope = scope || window;
531
        var fn = function(w, g) {
532
            g = g.split("|");
533
            var cnt = ns[g[0]];
534
            for(var i=1; i < g.length; i++)
535
                cnt = scope[g[i]](cnt);
536
            if(cnt == '')
537
                return '';
538
            if(cnt == 0 || cnt == -1)
539
                cnt += '';
540
            return cnt || w;
541
        };
542
        return tmpl.replace(/%\(([A-Za-z0-9_|.]*)\)/g, fn);
543
    },
544
545
    HTML2DOM: function(html,/*optional*/ first_child) {
546
        var d = AJS.DIV();
547
        d.innerHTML = html;
548
        if(first_child)
549
            return d.childNodes[0];
550
        else
551
            return d;
552
    },
553
554
    preloadImages: function(/*img_src1, ..., img_srcN*/) {
555
        AJS.AEV(window, 'load', AJS.$p(function(args) {
556
            AJS.map(args, function(src) {
557
                var pic = new Image();
558
                pic.src = src;
559
            });
560
        }, arguments));
561
    },
562
563
564
////
565
// Effects
566
////
567
    setOpacity: function(elm, p) {
568
        elm.style.opacity = p;
569
        elm.style.filter = "alpha(opacity="+ p*100 +")";
570
    },
571
572
573
////
574
// Ajax functions
575
////
576
    getXMLHttpRequest: function() {
577
        var try_these = [
578
            function () { return new XMLHttpRequest(); },
579
            function () { return new ActiveXObject('Msxml2.XMLHTTP'); },
580
            function () { return new ActiveXObject('Microsoft.XMLHTTP'); },
581
            function () { return new ActiveXObject('Msxml2.XMLHTTP.4.0'); },
582
            function () { throw "Browser does not support XMLHttpRequest"; }
583
        ];
584
        for (var i = 0; i < try_these.length; i++) {
585
            var func = try_these[i];
586
            try {
587
                return func();
588
            } catch (e) {
589
            }
590
        }
591
    },
592
593
    getRequest: function(url, data, type) {
594
        if(!type)
595
            type = "POST";
596
        var req = AJS.getXMLHttpRequest();
597
598
        if(url.indexOf("http://") == -1) {
599
            if(AJS.BASE_URL != '') {
600
                if(AJS.BASE_URL.lastIndexOf('/') != AJS.BASE_URL.length-1)
601
                    AJS.BASE_URL += '/';
602
                url = AJS.BASE_URL + url;
603
            }
604
            else
605
                url = window.location + url;
606
        }
607
608
        req.open(type, url, true);
609
        if(type == "POST")
610
            req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
611
        return AJS._sendXMLHttpRequest(req);
612
    },
613
614
    _sendXMLHttpRequest: function(req, data) {
615
        var d = new AJSDeferred(req);
616
617
        var onreadystatechange = function () {
618
            if (req.readyState == 4) {
619
                var status = '';
620
                try {
621
                    status = req.status;
622
                }
623
                catch(e) {};
624
                if(status == 200 || status == 304 || req.responseText == null) {
625
                    d.callback();
626
                }
627
                else {
628
                    if(AJS.ajaxErrorHandler)
629
                        AJS.ajaxErrorHandler(req.responseText, req);
630
                    else 
631
                        d.errback();
632
                }
633
            }
634
        }
635
        req.onreadystatechange = onreadystatechange;
636
        return d;
637
    },
638
639
    _reprString: function(o) {
640
        return ('"' + o.replace(/(["\\])/g, '\\$1') + '"'
641
        ).replace(/[\f]/g, "\\f"
642
        ).replace(/[\b]/g, "\\b"
643
        ).replace(/[\n]/g, "\\n"
644
        ).replace(/[\t]/g, "\\t"
645
        ).replace(/[\r]/g, "\\r");
646
    },
647
648
    serializeJSON: function(o) {
649
        var objtype = typeof(o);
650
        if (objtype == "undefined") {
651
            return "undefined";
652
        } else if (objtype == "number" || objtype == "boolean") {
653
            return o + "";
654
        } else if (o === null) {
655
            return "null";
656
        }
657
        if (objtype == "string") {
658
            return AJS._reprString(o);
659
        }
660
        var me = arguments.callee;
661
        if (objtype != "function" && typeof(o.length) == "number") {
662
            var res = [];
663
            for (var i = 0; i < o.length; i++) {
664
                var val = me(o[i]);
665
                if (typeof(val) != "string") {
666
                    val = "undefined";
667
                }
668
                res.push(val);
669
            }
670
            return "[" + res.join(",") + "]";
671
        }
672
        // it's a function with no adapter, bad
673
        if (objtype == "function")
674
            return null;
675
        res = [];
676
        for (var k in o) {
677
            var useKey;
678
            if (typeof(k) == "number") {
679
                useKey = '"' + k + '"';
680
            } else if (typeof(k) == "string") {
681
                useKey = AJS._reprString(k);
682
            } else {
683
                // skip non-string or number keys
684
                continue;
685
            }
686
            val = me(o[k]);
687
            if (typeof(val) != "string") {
688
                // skip non-serializable values
689
                continue;
690
            }
691
            res.push(useKey + ":" + val);
692
        }
693
        return "{" + res.join(",") + "}";
694
    },
695
696
    loadJSONDoc: function(url) {
697
        var d = AJS.getRequest(url);
698
        var eval_req = function(data, req) {
699
            var text = req.responseText;
700
            if(text == "Error")
701
                d.errback(req);
702
            else
703
                return AJS.evalTxt(text);
704
        };
705
        d.addCallback(eval_req);
706
        return d;
707
    },
708
709
    evalTxt: function(txt) {
710
        try {
711
            return eval('('+ txt + ')');
712
        }
713
        catch(e) {
714
            return eval(txt);
715
        }
716
    },
717
718
    evalScriptTags: function(html) {
719
        var script_data = html.match(/<script.*?>((\n|\r|.)*?)<\/script>/g);
720
        if(script_data != null) {
721
            for(var i=0; i < script_data.length; i++) {
722
                var script_only = script_data[i].replace(/<script.*?>/g, "");
723
                script_only = script_only.replace(/<\/script>/g, "");
724
                eval(script_only);
725
            }
726
        }
727
    },
728
729
    queryArguments: function(data) {
730
        var post_data = [];
731
        for(k in data)
732
            post_data.push(k + "=" + AJS.urlencode(data[k]));
733
        return post_data.join("&");
734
    },
735
736
737
////
738
// Position and size
739
////
740
    getMousePos: function(e) {
741
        var posx = 0;
742
        var posy = 0;
743
        if (!e) var e = window.event;
744
        if (e.pageX || e.pageY)
745
        {
746
            posx = e.pageX;
747
            posy = e.pageY;
748
        }
749
        else if (e.clientX || e.clientY)
750
        {
751
            posx = e.clientX + document.body.scrollLeft;
752
            posy = e.clientY + document.body.scrollTop;
753
        }
754
        return {x: posx, y: posy};
755
    },
756
757
    getScrollTop: function() {
758
        //From: http://www.quirksmode.org/js/doctypes.html
759
        var t;
760
        if (document.documentElement && document.documentElement.scrollTop)
761
                t = document.documentElement.scrollTop;
762
        else if (document.body)
763
                t = document.body.scrollTop;
764
        return t;
765
    },
766
767
    absolutePosition: function(elm) {
768
        var posObj = {'x': elm.offsetLeft, 'y': elm.offsetTop};
769
        if(elm.offsetParent) {
770
            var temp_pos = AJS.absolutePosition(elm.offsetParent);
771
            posObj.x += temp_pos.x;
772
            posObj.y += temp_pos.y;
773
        }
774
        // safari bug
775
        if (AJS.isSafari() && elm.style.position == 'absolute' ) {
776
            posObj.x -= document.body.offsetLeft;
777
            posObj.y -= document.body.offsetTop;
778
        }
779
        return posObj;
780
    },
781
782
    getWindowSize: function(doc) {
783
        doc = doc || document;
784
        var win_w, win_h;
785
        if (self.innerHeight) {
786
            win_w = self.innerWidth;
787
            win_h = self.innerHeight;
788
        } else if (doc.documentElement && doc.documentElement.clientHeight) {
789
            win_w = doc.documentElement.clientWidth;
790
            win_h = doc.documentElement.clientHeight;
791
        } else if (doc.body) {
792
            win_w = doc.body.clientWidth;
793
            win_h = doc.body.clientHeight;
794
        }
795
        return {'w': win_w, 'h': win_h};
796
    },
797
798
    isOverlapping: function(elm1, elm2) {
799
        var pos_elm1 = AJS.absolutePosition(elm1);
800
        var pos_elm2 = AJS.absolutePosition(elm2);
801
802
        var top1 = pos_elm1.y;
803
        var left1 = pos_elm1.x;
804
        var right1 = left1 + elm1.offsetWidth;
805
        var bottom1 = top1 + elm1.offsetHeight;
806
        var top2 = pos_elm2.y;
807
        var left2 = pos_elm2.x;
808
        var right2 = left2 + elm2.offsetWidth;
809
        var bottom2 = top2 + elm2.offsetHeight;
810
        var getSign = function(v) {
811
            if(v > 0) return "+";
812
            else if(v < 0) return "-";
813
            else return 0;
814
        }
815
816
        if ((getSign(top1 - bottom2) != getSign(bottom1 - top2)) &&
817
                (getSign(left1 - right2) != getSign(right1 - left2)))
818
            return true;
819
        return false;
820
    },
821
822
823
////
824
// Events
825
////
826
    getEventElm: function(e) {
827
        if(e && !e.type && !e.keyCode)
828
            return e
829
        var targ;
830
        if (!e) var e = window.event;
831
        if (e.target) targ = e.target;
832
        else if (e.srcElement) targ = e.srcElement;
833
        if (targ.nodeType == 3) // defeat Safari bug
834
            targ = targ.parentNode;
835
        return targ;
836
    },
837
838
    _getRealScope: function(fn, /*optional*/ extra_args, dont_send_event, rev_extra_args) {
839
        var scope = window;
840
        extra_args = AJS.$A(extra_args);
841
        if(fn._cscope)
842
            scope = fn._cscope;
843
844
        return function() {
845
            //Append all the orginal arguments + extra_args
846
            var args = [];
847
            var i = 0;
848
            if(dont_send_event)
849
                i = 1;
850
851
            AJS.map(arguments, function(arg) { args.push(arg) }, i);
852
            args = args.concat(extra_args);
853
            if(rev_extra_args)
854
                args = args.reverse();
855
            return fn.apply(scope, args);
856
        };
857
    },
858
859
    _unloadListeners: function() {
860
        if(AJS.listeners)
861
            AJS.map(AJS.listeners, function(elm, type, fn) { AJS.REV(elm, type, fn) });
862
        AJS.listeners = [];
863
    },
864
865
    setEventKey: function(e) {
866
        e.key = e.keyCode ? e.keyCode : e.charCode;
867
868
        if(window.event) {
869
            e.ctrl = window.event.ctrlKey;
870
            e.shift = window.event.shiftKey;
871
        }
872
        else {
873
            e.ctrl = e.ctrlKey;
874
            e.shift = e.shiftKey;
875
        }
876
        switch(e.key) {
877
            case 63232:
878
                e.key = 38;
879
                break;
880
            case 63233:
881
                e.key = 40;
882
                break;
883
            case 63235:
884
                e.key = 39;
885
                break;
886
            case 63234:
887
                e.key = 37;
888
                break;
889
        }
890
    },
891
892
    //Shortcut: AJS.AEV
893
    addEventListener: function(elm, type, fn, /*optional*/listen_once, cancle_bubble) {
894
        if(!cancle_bubble)
895
            cancle_bubble = false;
896
897
        var elms = AJS.$A(elm);
898
        AJS.map(elms, function(elmz) {
899
            if(listen_once)
900
                fn = AJS._listenOnce(elmz, type, fn);
901
            
902
            //Hack since it does not work in all browsers
903
            if(AJS.isIn(type, ['submit', 'load', 'scroll', 'resize'])) {
904
                var old = elm['on' + type];
905
                elm['on' + type] = function() {
906
                    if(old) {
907
                        fn(arguments);
908
                        return old(arguments);
909
                    }
910
                    else
911
                        return fn(arguments);
912
                };
913
                return;
914
            }
915
916
            //Fix keyCode
917
            if(AJS.isIn(type, ['keypress', 'keydown', 'keyup', 'click'])) {
918
                var old_fn = fn;
919
                fn = function(e) {
920
                    AJS.setEventKey(e);
921
                    return old_fn.apply(null, arguments);
922
                }
923
            }
924
925
            if (elmz.attachEvent) {
926
                //FIXME: We ignore cancle_bubble for IE... could be a problem?
927
                elmz.attachEvent("on" + type, fn);
928
            }
929
            else if(elmz.addEventListener)
930
                elmz.addEventListener(type, fn, cancle_bubble);
931
932
            AJS.listeners = AJS.$A(AJS.listeners);
933
            AJS.listeners.push([elmz, type, fn]);
934
        });
935
    },
936
937
    //Shortcut: AJS.REV
938
    removeEventListener: function(elm, type, fn, /*optional*/cancle_bubble) {
939
        if(!cancle_bubble)
940
            cancle_bubble = false;
941
        if(elm.removeEventListener) {
942
            elm.removeEventListener(type, fn, cancle_bubble);
943
            if(AJS.isOpera())
944
                elm.removeEventListener(type, fn, !cancle_bubble);
945
        }
946
        else if(elm.detachEvent)
947
            elm.detachEvent("on" + type, fn);
948
    },
949
950
    //Shortcut: AJS.$b
951
    bind: function(fn, scope, /*optional*/ extra_args, dont_send_event, rev_extra_args) {
952
        fn._cscope = scope;
953
        return AJS._getRealScope(fn, extra_args, dont_send_event, rev_extra_args);
954
    },
955
956
    bindMethods: function(self) {
957
        for (var k in self) {
958
            var func = self[k];
959
            if (typeof(func) == 'function') {
960
                self[k] = AJS.$b(func, self);
961
            }
962
        }
963
    },
964
965
    _listenOnce: function(elm, type, fn) {
966
        var r_fn = function() {
967
            AJS.removeEventListener(elm, type, r_fn);
968
            fn(arguments);
969
        }
970
        return r_fn;
971
    },
972
973
    callLater: function(fn, interval) {
974
        var fn_no_send = function() {
975
            fn();
976
        };
977
        window.setTimeout(fn_no_send, interval);
978
    },
979
980
    preventDefault: function(e) {
981
        if(AJS.isIe()) 
982
            window.event.returnValue = false;
983
        else 
984
            e.preventDefault();
985
    },
986
987
988
////
989
// Drag and drop
990
////
991
    dragAble: function(elm, /*optional*/ handler, args) {
992
        if(!args)
993
            args = {};
994
        if(!AJS.isDefined(args['move_x']))
995
            args['move_x'] = true;
996
        if(!AJS.isDefined(args['move_y']))
997
            args['move_y'] = true;
998
        if(!AJS.isDefined(args['moveable']))
999
            args['moveable'] = false;
1000
        if(!AJS.isDefined(args['hide_on_move']))
1001
            args['hide_on_move'] = true;
1002
        if(!AJS.isDefined(args['on_mouse_up']))
1003
            args['on_mouse_up'] = null;
1004
        if(!AJS.isDefined(args['cursor']))
1005
            args['cursor'] = 'move';
1006
        if(!AJS.isDefined(args['max_move']))
1007
            args['max_move'] = {'top': null, 'left': null};
1008
1009
        elm = AJS.$(elm);
1010
1011
        if(!handler)
1012
            handler = elm;
1013
1014
        handler = AJS.$(handler);
1015
        var old_cursor = handler.style.cursor;
1016
        handler.style.cursor = args['cursor'];
1017
        elm.style.position = 'relative';
1018
1019
        AJS.addClass(handler, '_ajs_handler');
1020
        handler._args = args;
1021
        handler._elm = elm;
1022
        AJS.AEV(handler, 'mousedown', AJS._dragStart);
1023
    },
1024
1025
    _dragStart: function(e) {
1026
        var handler = AJS.getEventElm(e);
1027
        if(!AJS.hasClass(handler, '_ajs_handler')) {
1028
            handler = AJS.getParentBytc(handler, null, '_ajs_handler');
1029
        }
1030
        if(handler)
1031
            AJS._dragInit(e, handler._elm, handler._args);
1032
    },
1033
1034
    dropZone: function(elm, args) {
1035
        elm = AJS.$(elm);
1036
        var item = {elm: elm};
1037
        AJS.update(item, args);
1038
        AJS._drop_zones.push(item);
1039
    },
1040
1041
    removeDragAble: function(elm) {
1042
        AJS.REV(elm, 'mousedown', AJS._dragStart);
1043
        elm.style.cursor = '';
1044
    },
1045
1046
    removeDropZone: function(elm) {
1047
        var i = AJS.getIndex(elm, AJS._drop_zones, function(item) {
1048
            if(item.elm == elm) return true;
1049
        });
1050
        if(i != -1) {
1051
            AJS._drop_zones.splice(i, 1);
1052
        }
1053
    },
1054
1055
    _dragInit: function(e, click_elm, args) {
1056
        AJS.drag_obj = new Object();
1057
        AJS.drag_obj.args = args;
1058
1059
        AJS.drag_obj.click_elm = click_elm;
1060
        AJS.drag_obj.mouse_pos = AJS.getMousePos(e);
1061
        AJS.drag_obj.click_elm_pos = AJS.absolutePosition(click_elm);
1062
1063
        AJS.AEV(document, 'mousemove', AJS._dragMove, false, true);
1064
        AJS.AEV(document, 'mouseup', AJS._dragStop, false, true);
1065
1066
        if (AJS.isIe())
1067
            window.event.cancelBubble = true;
1068
        AJS.preventDefault(e);
1069
    },
1070
1071
    _initDragElm: function(elm) {
1072
        if(AJS.drag_elm && AJS.drag_elm.style.display == 'none')
1073
            AJS.removeElement(AJS.drag_elm);
1074
1075
        if(!AJS.drag_elm) {
1076
            AJS.drag_elm = AJS.DIV();
1077
            var d = AJS.drag_elm;
1078
            AJS.insertBefore(d, AJS.getBody().firstChild);
1079
            AJS.setHTML(d, elm.innerHTML);
1080
1081
            d.className = elm.className;
1082
            d.style.cssText = elm.style.cssText;
1083
1084
            d.style.position = 'absolute';
1085
            d.style.zIndex = 10000;
1086
1087
            var t = AJS.absolutePosition(elm);
1088
            AJS.setTop(d, t.y);
1089
            AJS.setLeft(d, t.x);
1090
1091
            if(AJS.drag_obj.args.on_init) {
1092
                AJS.drag_obj.args.on_init(elm);
1093
            }
1094
        }
1095
    },
1096
1097
    _dragMove: function(e) {
1098
        var drag_obj = AJS.drag_obj;
1099
        var click_elm = drag_obj.click_elm;
1100
1101
        AJS._initDragElm(click_elm);
1102
        var drag_elm = AJS.drag_elm;
1103
1104
        if(drag_obj.args['hide_on_move'])
1105
            click_elm.style.visibility = 'hidden';
1106
1107
        var cur_pos = AJS.getMousePos(e);
1108
1109
        var mouse_pos = drag_obj.mouse_pos;
1110
1111
        var click_elm_pos = drag_obj.click_elm_pos;
1112
1113
        AJS.map(AJS._drop_zones, function(d_z) {
1114
            if(AJS.isOverlapping(d_z['elm'], drag_elm)) {
1115
                if(d_z['elm'] != drag_elm) {
1116
                    var on_hover = d_z['on_hover'];
1117
                    if(on_hover)
1118
                        on_hover(d_z['elm'], click_elm, drag_elm);
1119
                }
1120
            }
1121
        });
1122
1123
        if(drag_obj.args['on_drag'])
1124
            drag_obj.args['on_drag'](click_elm, e);
1125
1126
        var max_move_top = drag_obj.args['max_move']['top'];
1127
        var max_move_left = drag_obj.args['max_move']['left'];
1128
        var p;
1129
        if(drag_obj.args['move_x']) {
1130
            p = cur_pos.x - (mouse_pos.x - click_elm_pos.x);
1131
            if(max_move_left == null || max_move_left <= p)
1132
                AJS.setLeft(elm, p);
1133
        }
1134
1135
        if(drag_obj.args['move_y']) {
1136
            p = cur_pos.y - (mouse_pos.y - click_elm_pos.y);
1137
            if(max_move_top == null || max_move_top <= p)
1138
                AJS.setTop(elm, p);
1139
        }
1140
        if(AJS.isIe()) {
1141
            window.event.cancelBubble = true;
1142
            window.event.returnValue = false;
1143
        }
1144
        else
1145
            e.preventDefault();
1146
    },
1147
1148
    _dragStop: function(e) {
1149
        var drag_obj = AJS.drag_obj;
1150
        var drag_elm = AJS.drag_elm;
1151
        var click_elm = drag_obj.click_elm;
1152
1153
        AJS.REV(document, "mousemove", AJS._dragMove, true);
1154
        AJS.REV(document, "mouseup", AJS._dragStop, true);
1155
1156
        var dropped = false;
1157
        AJS.map(AJS._drop_zones, function(d_z) {
1158
            if(AJS.isOverlapping(d_z['elm'], click_elm)) {
1159
                if(d_z['elm'] != click_elm) {
1160
                    var on_drop = d_z['on_drop'];
1161
                    if(on_drop) {
1162
                        dropped = true;
1163
                        on_drop(d_z['elm'], click_elm);
1164
                    }
1165
                }
1166
            }
1167
        });
1168
1169
        if(drag_obj.args['moveable']) {
1170
            var t = parseInt(click_elm.style.top) || 0;
1171
            var l = parseInt(click_elm.style.left) || 0;
1172
            var drag_elm_xy = AJS.absolutePosition(drag_elm);
1173
            var click_elm_xy = AJS.absolutePosition(click_elm);
1174
            AJS.setTop(click_elm, t + drag_elm_xy.y - click_elm_xy.y);
1175
            AJS.setLeft(click_elm, l + drag_elm_xy.x - click_elm_xy.x);
1176
        }
1177
1178
        if(!dropped && drag_obj.args['on_mouse_up'])
1179
            drag_obj.args['on_mouse_up'](click_elm, e);
1180
1181
        if(drag_obj.args['hide_on_move'])
1182
            drag_obj.click_elm.style.visibility = 'visible';
1183
1184
        if(drag_obj.args.on_end) {
1185
            drag_obj.args.on_end(click_elm);
1186
        }
1187
1188
        AJS._dragObj = null;
1189
        if(drag_elm)
1190
            AJS.hideElement(drag_elm);
1191
        AJS.drag_elm = null;
1192
    },
1193
1194
1195
////
1196
// Misc.
1197
////
1198
    keys: function(obj) {
1199
        var rval = [];
1200
        for (var prop in obj) {
1201
            rval.push(prop);
1202
        }
1203
        return rval;
1204
    },
1205
1206
    values: function(obj) {
1207
        var rval = [];
1208
        for (var prop in obj) {
1209
            rval.push(obj[prop]);
1210
        }
1211
        return rval;
1212
    },
1213
1214
    urlencode: function(str) {
1215
        return encodeURIComponent(str.toString());
1216
    },
1217
1218
    isDefined: function(o) {
1219
        return (o != "undefined" && o != null)
1220
    },
1221
1222
    isArray: function(obj) {
1223
        return obj instanceof Array;
1224
    },
1225
1226
    isString: function(obj) {
1227
        return (typeof obj == 'string');
1228
    },
1229
1230
    isNumber: function(obj) {
1231
        return (typeof obj == 'number');
1232
    },
1233
1234
    isObject: function(obj) {
1235
        return (typeof obj == 'object');
1236
    },
1237
1238
    isFunction: function(obj) {
1239
        return (typeof obj == 'function');
1240
    },
1241
1242
    isDict: function(o) {
1243
        var str_repr = String(o);
1244
        return str_repr.indexOf(" Object") != -1;
1245
    },
1246
1247
    exportToGlobalScope: function() {
1248
        for(e in AJS)
1249
            eval(e + " = AJS." + e);
1250
    },
1251
1252
    log: function(o) {
1253
        if(AJS.isMozilla())
1254
            console.log(o);
1255
        else {
1256
            var div = AJS.DIV({'style': 'color: green'});
1257
            AJS.ACN(AJS.getBody(), AJS.setHTML(div, ''+o));
1258
        }
1259
    }
1260
1261
}
1262
1263
AJS.Class = function(members) {
1264
    var fn = function() {
1265
        if(arguments[0] != 'no_init') {
1266
            return this.init.apply(this, arguments);
1267
        }
1268
    }
1269
    fn.prototype = members;
1270
    AJS.update(fn, AJS.Class.prototype);
1271
    return fn;
1272
}
1273
AJS.Class.prototype = {
1274
    extend: function(members) {
1275
        var parent = new this('no_init');
1276
        for(k in members) {
1277
            var prev = parent[k];
1278
            var cur = members[k];
1279
            if (prev && prev != cur && typeof cur == 'function') {
1280
                cur = this._parentize(cur, prev);
1281
            }
1282
            parent[k] = cur;
1283
        }
1284
        return new AJS.Class(parent);
1285
    },
1286
1287
    implement: function(members) {
1288
        AJS.update(this.prototype, members);
1289
    },
1290
1291
    _parentize: function(cur, prev) {
1292
        return function(){
1293
            this.parent = prev;
1294
            return cur.apply(this, arguments);
1295
        }
1296
    }
1297
};
1298
1299
//Shortcuts
1300
AJS.$ = AJS.getElement;
1301
AJS.$$ = AJS.getElements;
1302
AJS.$f = AJS.getFormElement;
1303
AJS.$b = AJS.bind;
1304
AJS.$p = AJS.partial;
1305
AJS.$FA = AJS.forceArray;
1306
AJS.$A = AJS.createArray;
1307
AJS.DI = AJS.documentInsert;
1308
AJS.ACN = AJS.appendChildNodes;
1309
AJS.RCN = AJS.replaceChildNodes;
1310
AJS.AEV = AJS.addEventListener;
1311
AJS.REV = AJS.removeEventListener;
1312
AJS.$bytc = AJS.getElementsByTagAndClassName;
1313
1314
AJSDeferred = function(req) {
1315
    this.callbacks = [];
1316
    this.errbacks = [];
1317
    this.req = req;
1318
}
1319
AJSDeferred.prototype = {
1320
    excCallbackSeq: function(req, list) {
1321
        var data = req.responseText;
1322
        while (list.length > 0) {
1323
            var fn = list.pop();
1324
            var new_data = fn(data, req);
1325
            if(new_data)
1326
                data = new_data;
1327
        }
1328
    },
1329
1330
    callback: function () {
1331
        this.excCallbackSeq(this.req, this.callbacks);
1332
    },
1333
1334
    errback: function() {
1335
        if(this.errbacks.length == 0)
1336
            alert("Error encountered:\n" + this.req.responseText);
1337
1338
        this.excCallbackSeq(this.req, this.errbacks);
1339
    },
1340
1341
    addErrback: function(fn) {
1342
        this.errbacks.unshift(fn);
1343
    },
1344
1345
    addCallback: function(fn) {
1346
        this.callbacks.unshift(fn);
1347
    },
1348
1349
    addCallbacks: function(fn1, fn2) {
1350
        this.addCallback(fn1);
1351
        this.addErrback(fn2);
1352
    },
1353
1354
    sendReq: function(data) {
1355
        if(AJS.isObject(data)) {
1356
            this.req.send(AJS.queryArguments(data));
1357
        }
1358
        else if(AJS.isDefined(data))
1359
            this.req.send(data);
1360
        else {
1361
            this.req.send("");
1362
        }
1363
    }
1364
};
1365
1366
//Prevent memory-leaks
1367
AJS.addEventListener(window, 'unload', AJS._unloadListeners);
1368
AJS._createDomShortcuts()
1369
}
1370
1371
script_loaded = true;
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/greybox_source/base/AJS_fx.js (-194 lines)
Lines 1-194 Link Here
1
/*
2
Last Modified: 25/12/06 18:26:30
3
4
AJS effects
5
    A very small library with a lot of functionality
6
AUTHOR
7
    4mir Salihefendic (http://amix.dk) - amix@amix.dk
8
LICENSE
9
    Copyright (c) 2006 Amir Salihefendic. All rights reserved.
10
    Copyright (c) 2005 Bob Ippolito. All rights reserved.
11
    Copyright (c) 2006 Valerio Proietti, http://www.mad4milk.net
12
    http://www.opensource.org/licenses/mit-license.php
13
VERSION
14
    3.6
15
SITE
16
    http://orangoo.com/AmiNation/AJS
17
**/
18
AJS.fx = {
19
    _shades: {0: 'ffffff', 1: 'ffffee', 2: 'ffffdd',
20
              3: 'ffffcc', 4: 'ffffbb', 5: 'ffffaa',
21
              6: 'ffff99'},
22
23
    highlight: function(elm, options) {
24
        var base = new AJS.fx.Base();
25
        base.elm = AJS.$(elm);
26
        base.setOptions(options);
27
        base.options.duration = 600;
28
29
        AJS.update(base, {
30
            increase: function(){
31
                if(this.now == 7)
32
                    elm.style.backgroundColor = 'transparent';
33
                else
34
                    elm.style.backgroundColor = '#' + AJS.fx._shades[Math.floor(this.now)];
35
            }
36
        });
37
        return base.custom(6, 0);
38
    },
39
40
    fadeIn: function(elm, options) {
41
        options = options || {};
42
        if(!options.from) {
43
            options.from = 0;
44
            AJS.setOpacity(elm, 0);
45
        }
46
        if(!options.to) options.to = 1;
47
        var s = new AJS.fx.Style(elm, 'opacity', options);
48
        return s.custom(options.from, options.to);
49
    },
50
51
    fadeOut: function(elm, options) {
52
        options = options || {};
53
        if(!options.from) options.from = 1;
54
        if(!options.to) options.to = 0;
55
        options.duration = 300;
56
        var s = new AJS.fx.Style(elm, 'opacity', options);
57
        return s.custom(options.from, options.to);
58
    },
59
    
60
    setWidth: function(elm, options) {
61
        var s = new AJS.fx.Style(elm, 'width', options);
62
        return s.custom(options.from, options.to);
63
    },
64
65
    setHeight: function(elm, options) {
66
        var s = new AJS.fx.Style(elm, 'height', options);
67
        return s.custom(options.from, options.to);
68
    }
69
}
70
71
72
//From moo.fx
73
AJS.fx.Base = new AJS.Class({
74
    init: function() {
75
        AJS.bindMethods(this);
76
    },
77
78
    setOptions: function(options){
79
        this.options = AJS.update({
80
                onStart: function(){},
81
                onComplete: function(){},
82
                transition: AJS.fx.Transitions.sineInOut,
83
                duration: 500,
84
                wait: true,
85
                fps: 50
86
        }, options || {});
87
    },
88
89
    step: function(){
90
        var time = new Date().getTime();
91
        if (time < this.time + this.options.duration){
92
            this.cTime = time - this.time;
93
            this.setNow();
94
        } else {
95
            setTimeout(AJS.$b(this.options.onComplete, this, [this.elm]), 10);
96
            this.clearTimer();
97
            this.now = this.to;
98
        }
99
        this.increase();
100
    },
101
102
    setNow: function(){
103
        this.now = this.compute(this.from, this.to);
104
    },
105
106
    compute: function(from, to){
107
        var change = to - from;
108
        return this.options.transition(this.cTime, from, change, this.options.duration);
109
    },
110
111
    clearTimer: function(){
112
        clearInterval(this.timer);
113
        this.timer = null;
114
        return this;
115
    },
116
117
    _start: function(from, to){
118
        if (!this.options.wait) this.clearTimer();
119
        if (this.timer) return;
120
        setTimeout(AJS.$p(this.options.onStart, this.elm), 10);
121
        this.from = from;
122
        this.to = to;
123
        this.time = new Date().getTime();
124
        this.timer = setInterval(this.step, Math.round(1000/this.options.fps));
125
        return this;
126
    },
127
128
    custom: function(from, to){
129
        return this._start(from, to);
130
    },
131
132
    set: function(to){
133
        this.now = to;
134
        this.increase();
135
        return this;
136
    },
137
138
    setStyle: function(elm, property, val) {
139
        if(this.property == 'opacity')
140
            AJS.setOpacity(elm, val);
141
        else
142
            AJS.setStyle(elm, property, val);
143
    }
144
});
145
146
AJS.fx.Style = AJS.fx.Base.extend({
147
    init: function(elm, property, options) {
148
        this.parent();
149
        this.elm = elm;
150
        this.setOptions(options);
151
        this.property = property;
152
    },
153
154
    increase: function(){
155
        this.setStyle(this.elm, this.property, this.now);
156
    }
157
});
158
159
AJS.fx.Styles = AJS.fx.Base.extend({
160
    init: function(elm, options){
161
        this.parent();
162
        this.elm = AJS.$(elm);
163
        this.setOptions(options);
164
        this.now = {};
165
    },
166
167
    setNow: function(){
168
        for (p in this.from) 
169
            this.now[p] = this.compute(this.from[p], this.to[p]);
170
    },
171
172
    custom: function(obj){
173
        if (this.timer && this.options.wait) return;
174
        var from = {};
175
        var to = {};
176
        for (p in obj){
177
                from[p] = obj[p][0];
178
                to[p] = obj[p][1];
179
        }
180
        return this._start(from, to);
181
    },
182
183
    increase: function(){
184
        for (var p in this.now) this.setStyle(this.elm, p, this.now[p]);
185
    }
186
});
187
188
//Transitions (c) 2003 Robert Penner (http://www.robertpenner.com/easing/), BSD License.
189
AJS.fx.Transitions = {
190
    linear: function(t, b, c, d) { return c*t/d + b; },
191
    sineInOut: function(t, b, c, d) { return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; }
192
};
193
194
script_loaded = true;
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/greybox_source/base/base.css (-32 lines)
Lines 1-32 Link Here
1
/* Last-Modified: 28/06/06 00:08:22 */
2
#GB_overlay {
3
    background-color: #000;
4
    position: absolute;
5
    margin: auto;
6
    top: 0;
7
    left: 0;
8
    z-index: 100;
9
}
10
11
#GB_window {
12
    left: 0;
13
    top: 0;
14
    font-size: 1px;
15
    position: absolute;
16
    overflow: visible;
17
    z-index: 150;
18
}
19
20
#GB_window .content {
21
    width: auto;
22
    margin: 0;
23
    padding: 0;
24
}
25
26
#GB_frame {
27
    border: 0;
28
    margin: 0;
29
    padding: 0;
30
    overflow: auto;
31
    white-space: nowrap;
32
}
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/greybox_source/base/base.js (-192 lines)
Lines 1-192 Link Here
1
var GB_CURRENT = null;
2
3
GB_hide = function() {
4
    GB_CURRENT.hide();
5
}
6
7
GreyBox = new AJS.Class({
8
    init: function(options) {
9
        this.use_fx = AJS.fx;
10
        this.type = "page";
11
        this.overlay_click_close = false;
12
        this.salt = 0;
13
        this.root_dir = GB_ROOT_DIR;
14
        this.callback_fns = [];
15
        this.reload_on_close = false;
16
        this.src_loader = this.root_dir + 'loader_frame.html';
17
18
        //Solve the www issue
19
        var h_www = window.location.hostname.indexOf('www');
20
        var src_www = this.src_loader.indexOf('www');
21
        if(h_www != -1 && src_www == -1)
22
            this.src_loader = this.src_loader.replace('://', '://www.');
23
24
        if(h_www == -1 && src_www != -1)
25
            this.src_loader = this.src_loader.replace('://www.', '://');
26
27
        this.show_loading = true;
28
        AJS.update(this, options);
29
    },
30
31
    addCallback: function(fn) {
32
        if(fn) this.callback_fns.push(fn);
33
    },
34
35
    show: function(url) {
36
        GB_CURRENT = this;
37
        this.url = url;
38
39
        var elms = [AJS.$bytc("object"), AJS.$bytc("select")];
40
        AJS.map(AJS.flattenList(elms), function(elm) {
41
            elm.style.visibility = "hidden";
42
        });
43
44
        this.createElements();
45
        return false;
46
    },
47
48
    hide: function() {
49
        var c_bs = this.callback_fns;
50
        if(c_bs != []) {
51
            AJS.map(c_bs, function(fn) { 
52
                fn();
53
            });
54
        }
55
56
        this.onHide();
57
        if(this.use_fx) {
58
            var elm = this.overlay;
59
            AJS.fx.fadeOut(this.overlay, {
60
                onComplete: function() {
61
                    AJS.removeElement(elm);
62
                    elm = null;
63
                },
64
                duration: 300
65
            });
66
            AJS.removeElement(this.g_window);
67
        }
68
        else {
69
            AJS.removeElement(this.g_window, this.overlay);
70
        }
71
72
        this.removeFrame();
73
74
        AJS.REV(window, "scroll", _GB_setOverlayDimension);
75
        AJS.REV(window, "resize", _GB_update);
76
77
        var elms = [AJS.$bytc("object"), AJS.$bytc("select")];
78
        AJS.map(AJS.flattenList(elms), function(elm) {
79
            elm.style.visibility = "visible";
80
        });
81
82
        GB_CURRENT = null;
83
84
        if(this.reload_on_close)
85
            window.location.reload();
86
    },
87
88
    update: function() {
89
        this.setOverlayDimension();
90
        this.setFrameSize();
91
        this.setWindowPosition();
92
    },
93
94
    createElements: function() {
95
        this.initOverlay();
96
97
        this.g_window = AJS.DIV({'id': 'GB_window'});
98
        AJS.hideElement(this.g_window);
99
        AJS.getBody().insertBefore(this.g_window, this.overlay.nextSibling);
100
101
        this.initFrame();
102
        this.initHook();
103
        this.update();
104
        
105
        var me = this;
106
        if(this.use_fx) {
107
            AJS.fx.fadeIn(this.overlay, {
108
                duration: 300,
109
                to: 0.7,
110
                onComplete: function() {
111
                    me.onShow();
112
                    AJS.showElement(me.g_window);
113
                    me.startLoading();
114
                }
115
            });
116
        }
117
        else {
118
            AJS.setOpacity(this.overlay, 0.7);
119
            AJS.showElement(this.g_window);
120
            this.onShow();
121
            this.startLoading();
122
        }
123
124
        AJS.AEV(window, "scroll", _GB_setOverlayDimension);
125
        AJS.AEV(window, "resize", _GB_update);
126
    },
127
128
    removeFrame: function() {
129
        try{ AJS.removeElement(this.iframe); }
130
        catch(e) {}
131
132
        this.iframe = null;
133
    },
134
135
    startLoading: function() {
136
        this.iframe.src = this.src_loader + '?s='+this.salt++;
137
        AJS.showElement(this.iframe);
138
    },
139
140
    setOverlayDimension: function() {
141
        var page_size = AJS.getWindowSize();
142
        if(AJS.isMozilla() || AJS.isOpera())
143
            AJS.setWidth(this.overlay, "100%");
144
        else
145
            AJS.setWidth(this.overlay, page_size.w);
146
147
        var max_height = Math.max(AJS.getScrollTop()+page_size.h, AJS.getScrollTop()+this.height);
148
149
        if(max_height < AJS.getScrollTop())
150
            AJS.setHeight(this.overlay, max_height);
151
        else
152
            AJS.setHeight(this.overlay, AJS.getScrollTop()+page_size.h);
153
    },
154
155
    initOverlay: function() {
156
        this.overlay = AJS.DIV({'id': 'GB_overlay'});
157
158
        if(this.overlay_click_close)
159
            AJS.AEV(this.overlay, "click", GB_hide);
160
161
        AJS.setOpacity(this.overlay, 0);
162
        AJS.getBody().insertBefore(this.overlay, AJS.getBody().firstChild);
163
    },
164
165
    initFrame: function() {
166
        if(!this.iframe) {
167
            var d = {'name': 'GB_frame', 'class': 'GB_frame', 'frameBorder': 0};
168
            this.iframe = AJS.IFRAME(d);
169
            this.middle_cnt = AJS.DIV({'class': 'content'}, this.iframe);
170
171
            this.top_cnt = AJS.DIV();
172
            this.bottom_cnt = AJS.DIV();
173
174
            AJS.ACN(this.g_window, this.top_cnt, this.middle_cnt, this.bottom_cnt);
175
        }
176
    },
177
178
    /* Can be implemented */
179
    onHide: function() {},
180
    onShow: function() {},
181
    setFrameSize: function() {},
182
    setWindowPosition: function() {},
183
    initHook: function() {}
184
185
});
186
187
_GB_update = function() { if(GB_CURRENT) GB_CURRENT.update(); }
188
_GB_setOverlayDimension = function() { if(GB_CURRENT) GB_CURRENT.setOverlayDimension(); }
189
190
AJS.preloadImages(GB_ROOT_DIR+'indicator.gif');
191
192
script_loaded = true;
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/greybox_source/base/loader_frame.html (-104 lines)
Lines 1-104 Link Here
1
<!--
2
Notice: I feel so dirty doing this, but its the only way to make it cross browser.
3
-->
4
<html>
5
<head>
6
  <script>
7
    var GB = parent.GB_CURRENT;
8
    document.write('<script type="text/javascript" src="AJS.js"><\/script>');
9
    if(GB.use_fx) {
10
        document.write('<script type="text/javascript" src="AJS_fx.js"><\/script>');
11
    }
12
  </script>
13
  <style>
14
    body {
15
      padding: 0;
16
      margin: 0;
17
      overflow: hidden;
18
    }
19
20
    #GB_frame {
21
      visibility: hidden;
22
      width: 100%;
23
      height: 100%;
24
    }
25
26
    #loading {
27
      padding-top: 50px;
28
      position: absolute;
29
      width: 100%;
30
      top: 0;
31
      text-align: center;
32
      vertical-align: middle;
33
    }
34
  </style>
35
</head>
36
<body>
37
38
<div id="loading">
39
  <img src="indicator.gif">
40
</div>
41
42
<script>
43
var loading = AJS.$('loading');
44
var gb_type = GB.type;
45
var gb_url = GB.url;
46
47
//Start loading in the iframe
48
if(gb_type == "page") {
49
  document.write('<iframe id="GB_frame" src="' + gb_url + '" frameborder="0"></iframe>');
50
}
51
else {
52
  var img_holder = new Image();
53
  img_holder.src = gb_url;
54
  document.write('<img id="GB_frame" src="' + gb_url + '">');
55
}
56
var frame = AJS.$('GB_frame');
57
</script>
58
59
</body>
60
<script>
61
function setupOuterGB() {
62
    frame.style.visibility = 'visible';
63
    GB.setFrameSize();
64
    GB.setWindowPosition();
65
}
66
67
function loaded() {
68
    AJS.removeElement(loading);
69
70
    GB.overlay.innerHTML += "&nbsp;"; //Safari bugfix
71
    
72
    if(gb_type == "image") {
73
        if(img_holder.width != 0 && img_holder.height != 0) {
74
            var width = img_holder.width;
75
            var height = img_holder.height;
76
77
            GB.width = width;
78
            GB.height = height;
79
80
            setupOuterGB();
81
82
            if(GB.use_fx) {
83
                AJS.setOpacity(frame, 0);
84
                AJS.fx.fadeIn(frame);
85
            }
86
        }
87
    }
88
    else {
89
        GB.width = frame.offsetWidth;
90
        GB.height = frame.offsetHeight;
91
        setupOuterGB();
92
    }
93
}
94
95
if(GB.show_loading) {
96
    AJS.AEV(window, 'load', function(e) {
97
        loaded();
98
    });
99
}
100
else {
101
    loaded();
102
}
103
</script>
104
</html>
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/greybox_source/gallery/gallery.css (-51 lines)
Lines 1-51 Link Here
1
.GB_Gallery {
2
    margin: 0 22px 0 22px;
3
}
4
5
.GB_Gallery .content {
6
    background-color: #fff;
7
    border: 3px solid #ddd;
8
}
9
10
.GB_header {
11
    top: 10px;
12
    left: 0;
13
    margin: 0;
14
    z-index: 500;
15
    position: absolute;
16
    border-bottom: 2px solid #555;
17
    border-top: 2px solid #555;
18
}
19
20
.GB_header .inner {
21
    background-color: #333;
22
    font-family: Arial, Verdana, sans-serif;
23
    padding: 2px 20px 2px 20px;
24
}
25
26
.GB_header table {
27
    margin: 0;
28
    width: 100%;
29
    border-collapse: collapse;
30
}
31
32
.GB_header .caption {
33
    text-align: left;
34
    color: #eee;
35
    white-space: nowrap;
36
    font-size: 20px;
37
}
38
39
.GB_header .close {
40
    text-align: right;
41
}
42
43
.GB_header .close img {
44
    z-index: 500;
45
    cursor: pointer;
46
}
47
48
.GB_header .middle {
49
    white-space: nowrap;
50
    text-align: center;
51
}
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/greybox_source/gallery/gallery.js (-114 lines)
Lines 1-114 Link Here
1
GB_showImage = function(caption, url, callback_fn) {
2
    var options = {
3
        width: 300,
4
        height: 300,
5
        type: 'image',
6
7
        fullscreen: false,
8
        center_win: true,
9
        caption: caption,
10
        callback_fn: callback_fn
11
    }
12
    var win = new GB_Gallery(options);
13
    return win.show(url);
14
}
15
16
GB_showPage = function(caption, url, callback_fn) {
17
    var options = {
18
        type: 'page',
19
20
        caption: caption,
21
        callback_fn: callback_fn,
22
        fullscreen: true,
23
        center_win: false
24
    }
25
    var win = new GB_Gallery(options);
26
    return win.show(url);
27
}
28
29
GB_Gallery = GreyBox.extend({
30
    init: function(options) {
31
        this.parent({});
32
        this.img_close = this.root_dir + 'g_close.gif';
33
        AJS.update(this, options);
34
        this.addCallback(this.callback_fn);
35
    },
36
37
    initHook: function() {
38
        AJS.addClass(this.g_window, 'GB_Gallery');
39
40
        var inner = AJS.DIV({'class': 'inner'});
41
        this.header = AJS.DIV({'class': 'GB_header'}, inner);
42
        AJS.setOpacity(this.header, 0);
43
        AJS.getBody().insertBefore(this.header, this.overlay.nextSibling);
44
45
        var td_caption = AJS.TD({'id': 'GB_caption', 'class': 'caption', 'width': '40%'}, this.caption);
46
        var td_middle = AJS.TD({'id': 'GB_middle', 'class': 'middle', 'width': '20%'});
47
48
        var img_close = AJS.IMG({'src': this.img_close});
49
        AJS.AEV(img_close, 'click', GB_hide);
50
        var td_close = AJS.TD({'class': 'close', 'width': '40%'}, img_close);
51
52
        var tbody = AJS.TBODY(AJS.TR(td_caption, td_middle, td_close));
53
54
        var table = AJS.TABLE({'cellspacing': '0', 'cellpadding': 0, 'border': 0}, tbody);
55
        AJS.ACN(inner, table);
56
57
        if(this.fullscreen)
58
            AJS.AEV(window, 'scroll', AJS.$b(this.setWindowPosition, this));
59
        else
60
            AJS.AEV(window, 'scroll', AJS.$b(this._setHeaderPos, this));
61
    },
62
63
    setFrameSize: function() {
64
        var overlay_w = this.overlay.offsetWidth;
65
        var page_size = AJS.getWindowSize();
66
67
        if(this.fullscreen) {
68
            this.width = overlay_w-40;
69
            this.height = page_size.h-80;
70
        }
71
        AJS.setWidth(this.iframe, this.width);
72
        AJS.setHeight(this.iframe, this.height);
73
74
        AJS.setWidth(this.header, overlay_w);
75
    },
76
77
    _setHeaderPos: function() {
78
        AJS.setTop(this.header, AJS.getScrollTop()+10);
79
    },
80
81
    setWindowPosition: function() {
82
        var overlay_w = this.overlay.offsetWidth;
83
        var page_size = AJS.getWindowSize();
84
        AJS.setLeft(this.g_window, ((overlay_w - 50 - this.width)/2));
85
86
        var header_top = AJS.getScrollTop()+55;
87
        if(!this.center_win) {
88
            AJS.setTop(this.g_window, header_top);
89
        }
90
        else {
91
            var fl = ((page_size.h - this.height) /2) + 20 + AJS.getScrollTop();
92
            if(fl < 0) fl = 0;
93
            if(header_top > fl) {
94
                fl = header_top;
95
            }
96
            AJS.setTop(this.g_window, fl);
97
        }
98
        this._setHeaderPos();
99
    },
100
101
    onHide: function() {
102
        AJS.removeElement(this.header);
103
        AJS.removeClass(this.g_window, 'GB_Gallery');
104
    },
105
106
    onShow: function() {
107
        if(this.use_fx)
108
            AJS.fx.fadeIn(this.header, {to: 1});
109
        else
110
            AJS.setOpacity(this.header, 1);
111
    }
112
});
113
114
AJS.preloadImages(GB_ROOT_DIR+'g_close.gif');
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/greybox_source/set/set.css (-20 lines)
Lines 1-20 Link Here
1
#GB_middle {
2
    color: #eee;
3
}
4
5
#GB_middle img {
6
    cursor: pointer;
7
    vertical-align: middle;
8
}
9
10
#GB_middle .disabled {
11
    cursor: default;
12
}
13
14
#GB_middle .left {
15
    padding-right: 10px;
16
}
17
18
#GB_middle .right {
19
    padding-left: 10px;
20
}
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/greybox_source/set/set.js (-101 lines)
Lines 1-101 Link Here
1
GB_showFullScreenSet = function(set, start_index, callback_fn) {
2
    var options = {
3
        type: 'page',
4
        fullscreen: true,
5
        center_win: false
6
    }
7
    var gb_sets = new GB_Sets(options, set);
8
    gb_sets.addCallback(callback_fn);
9
    gb_sets.showSet(start_index-1);
10
    return false;
11
}
12
13
GB_showImageSet = function(set, start_index, callback_fn) {
14
    var options = {
15
        type: 'image',
16
        fullscreen: false,
17
        center_win: true,
18
        width: 300,
19
        height: 300
20
    }
21
    var gb_sets = new GB_Sets(options, set);
22
    gb_sets.addCallback(callback_fn);
23
    gb_sets.showSet(start_index-1);
24
    return false;
25
}
26
27
GB_Sets = GB_Gallery.extend({
28
    init: function(options, set) {
29
        this.parent(options);
30
        if(!this.img_next) this.img_next = this.root_dir + 'next.gif';
31
        if(!this.img_prev) this.img_prev = this.root_dir + 'prev.gif';
32
        this.current_set = set; 
33
    },
34
35
    showSet: function(start_index) {
36
        this.current_index = start_index;
37
38
        var item = this.current_set[this.current_index];
39
        this.show(item.url);
40
        this._setCaption(item.caption);
41
42
        this.btn_prev = AJS.IMG({'class': 'left', src: this.img_prev});
43
        this.btn_next = AJS.IMG({'class': 'right', src: this.img_next});
44
45
        AJS.AEV(this.btn_prev, 'click', AJS.$b(this.switchPrev, this));
46
        AJS.AEV(this.btn_next, 'click', AJS.$b(this.switchNext, this));
47
48
        GB_STATUS = AJS.SPAN({'class': 'GB_navStatus'});
49
        AJS.ACN(AJS.$('GB_middle'), this.btn_prev, GB_STATUS, this.btn_next);
50
        
51
        this.updateStatus();
52
    },
53
54
    updateStatus: function() {
55
        AJS.setHTML(GB_STATUS, (this.current_index + 1) + ' / ' + this.current_set.length);
56
        if(this.current_index == 0) {
57
            AJS.addClass(this.btn_prev, 'disabled');
58
        }
59
        else {
60
            AJS.removeClass(this.btn_prev, 'disabled');
61
        }
62
63
        if(this.current_index == this.current_set.length-1) {
64
            AJS.addClass(this.btn_next, 'disabled');
65
        }
66
        else {
67
            AJS.removeClass(this.btn_next, 'disabled');
68
        }
69
    },
70
71
    _setCaption: function(caption) {
72
        AJS.setHTML(AJS.$('GB_caption'), caption);
73
    },
74
75
    updateFrame: function() {
76
        var item = this.current_set[this.current_index];
77
        this._setCaption(item.caption);
78
        this.url = item.url;
79
        this.startLoading();
80
    },
81
82
    switchPrev: function() {
83
        if(this.current_index != 0) {
84
            this.current_index--;
85
            this.updateFrame();
86
            this.updateStatus();
87
        }
88
    },
89
90
    switchNext: function() {
91
        if(this.current_index != this.current_set.length-1) {
92
            this.current_index++
93
            this.updateFrame();
94
            this.updateStatus();
95
        }
96
    }
97
});
98
99
AJS.AEV(window, 'load', function() {
100
    AJS.preloadImages(GB_ROOT_DIR+'next.gif', GB_ROOT_DIR+'prev.gif');
101
});
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/greybox_source/window/window.css (-39 lines)
Lines 1-39 Link Here
1
.GB_Window .content {
2
    background-color: #fff;
3
    border: 3px solid #ccc;
4
    border-top: none;
5
}
6
7
.GB_Window .header {
8
    border-bottom: 1px solid #aaa;
9
    border-top: 1px solid #999;
10
    border-left: 3px solid #ccc;
11
    border-right: 3px solid #ccc;
12
    margin: 0;
13
14
    height: 22px;
15
    font-size: 12px;
16
    padding: 3px 0;
17
    color: #333;
18
}
19
20
.GB_Window .caption {
21
    font-size: 12px;
22
    text-align: left;
23
    font-weight: bold;
24
    white-space: nowrap;
25
    padding-right: 20px;
26
}
27
28
.GB_Window .close { text-align: right; }
29
.GB_Window .close span { 
30
    font-size: 12px;
31
    cursor: pointer; 
32
}
33
.GB_Window .close img {
34
    cursor: pointer;
35
    padding: 0 3px 0 0;
36
}
37
38
.GB_Window .on { border-bottom: 1px solid #333; }
39
.GB_Window .click { border-bottom: 1px solid red; }
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/greybox_source/window/window.js (-109 lines)
Lines 1-109 Link Here
1
GB_show = function(caption, url, /* optional */ height, width, callback_fn) {
2
    var options = {
3
        caption: caption,
4
        height: height || 500,
5
        width: width || 500,
6
        fullscreen: false,
7
        callback_fn: callback_fn
8
    }
9
    var win = new GB_Window(options);
10
    return win.show(url);
11
}
12
13
GB_showCenter = function(caption, url, /* optional */ height, width, callback_fn) {
14
    var options = {
15
        caption: caption,
16
        center_win: true,
17
        height: height || 500,
18
        width: width || 500,
19
        fullscreen: false,
20
        callback_fn: callback_fn
21
    }
22
    var win = new GB_Window(options);
23
    return win.show(url);
24
}
25
26
GB_showFullScreen = function(caption, url, callback_fn) {
27
    var options = {
28
        caption: caption,
29
        fullscreen: true,
30
        callback_fn: callback_fn
31
    }
32
    var win = new GB_Window(options);
33
    return win.show(url);
34
}
35
36
GB_Window = GreyBox.extend({
37
    init: function(options) {
38
        this.parent({});
39
        this.img_header = this.root_dir+"header_bg.gif";
40
        this.img_close = this.root_dir+"w_close.gif";
41
        this.show_close_img = true;
42
        AJS.update(this, options);
43
        this.addCallback(this.callback_fn);
44
    },
45
46
    initHook: function() {
47
        AJS.addClass(this.g_window, 'GB_Window');
48
49
        this.header = AJS.TABLE({'class': 'header'});
50
        this.header.style.backgroundImage = "url("+ this.img_header +")";
51
52
        var td_caption = AJS.TD({'class': 'caption'}, this.caption);
53
        var td_close = AJS.TD({'class': 'close'});
54
55
        if(this.show_close_img) {
56
            var img_close = AJS.IMG({'src': this.img_close});
57
            var span = AJS.SPAN('Close');
58
59
            var btn = AJS.DIV(img_close, span);
60
61
            AJS.AEV([img_close, span], 'mouseover', function() { AJS.addClass(span, 'on'); });
62
            AJS.AEV([img_close, span], 'mouseout', function() { AJS.removeClass(span, 'on'); });
63
            AJS.AEV([img_close, span], 'mousedown', function() { AJS.addClass(span, 'click'); });
64
            AJS.AEV([img_close, span], 'mouseup', function() { AJS.removeClass(span, 'click'); });
65
            AJS.AEV([img_close, span], 'click', GB_hide);
66
67
            AJS.ACN(td_close, btn);
68
        }
69
70
        tbody_header = AJS.TBODY();
71
        AJS.ACN(tbody_header, AJS.TR(td_caption, td_close));
72
73
        AJS.ACN(this.header, tbody_header);
74
        AJS.ACN(this.top_cnt, this.header);
75
76
        if(this.fullscreen)
77
            AJS.AEV(window, 'scroll', AJS.$b(this.setWindowPosition, this));
78
    },
79
80
    setFrameSize: function() {
81
        if(this.fullscreen) {
82
            var page_size = AJS.getWindowSize();
83
            overlay_h = page_size.h;
84
            this.width = Math.round(this.overlay.offsetWidth - (this.overlay.offsetWidth/100)*10);
85
            this.height = Math.round(overlay_h - (overlay_h/100)*10);
86
        }
87
88
        AJS.setWidth(this.header, this.width+6); //6 is for the left+right border
89
        AJS.setWidth(this.iframe, this.width);
90
        AJS.setHeight(this.iframe, this.height);
91
    },
92
93
    setWindowPosition: function() {
94
        var page_size = AJS.getWindowSize();
95
        AJS.setLeft(this.g_window, ((page_size.w - this.width)/2)-13);
96
97
        if(!this.center_win) {
98
            AJS.setTop(this.g_window, AJS.getScrollTop());
99
        }
100
        else {
101
            var fl = ((page_size.h - this.height) /2) - 20 + AJS.getScrollTop();
102
            if(fl < 0)
103
                fl = 0;
104
            AJS.setTop(this.g_window, fl);
105
        }
106
    }
107
});
108
109
AJS.preloadImages(GB_ROOT_DIR+'w_close.gif', GB_ROOT_DIR+'header_bg.gif');
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/installation.html (-49 lines)
Lines 1-49 Link Here
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
3
<head>
4
    <title>GreyBox - Installation</title>
5
6
    <script type="text/javascript" src="greybox/AJS.js"></script>
7
8
    <script type="text/javascript" src="static_files/help.js"></script>
9
    <link href="static_files/help.css" rel="stylesheet" type="text/css" media="all" />
10
</head>
11
<body>
12
13
<script>
14
    insertHeader();
15
    insertMenu('installation');
16
</script>
17
18
<ol>
19
<li>
20
Append following to your header section (in between <code>&lt;header&gt;...&lt;/header&gt;</code>).
21
<br />
22
<span class="hl">GB_ROOT_DIR</span> is the URL where static files are located:
23
<pre>
24
<code>&lt;script type="text/javascript"&gt;
25
    var GB_ROOT_DIR = "http://mydomain.com/greybox/";
26
&lt;/script&gt;</code>
27
</pre>
28
</li>
29
GB_ROOT_DIR should be absolute.
30
31
<li>
32
Append also following scripts and one stylesheet:
33
<pre>
34
<code>&lt;script type="text/javascript" src="greybox/AJS.js"&gt;&lt;/script&gt;
35
&lt;script type="text/javascript" src="greybox/AJS_fx.js"&gt;&lt;/script&gt;
36
&lt;script type="text/javascript" src="greybox/gb_scripts.js"&gt;&lt;/script&gt;
37
&lt;link href="greybox/gb_styles.css" rel="stylesheet" type="text/css" /&gt;</code>
38
</pre>
39
40
AJS_fx.js is optional, it's used for effects. If you don't wish effects, then don't include AJS_fx.js in your header section.
41
</li>
42
43
<li>
44
That's it, you are now ready to use GreyBox!
45
</li>
46
</ol>
47
48
</body>
49
</html>
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/normal_usage.html (-126 lines)
Lines 1-126 Link Here
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
3
<head>
4
    <title>GreyBox - Normal usage</title>
5
6
    <script type="text/javascript">
7
        var GB_ROOT_DIR = "./greybox/";
8
    </script>
9
10
    <script type="text/javascript" src="greybox/AJS.js"></script>
11
    <script type="text/javascript" src="greybox/AJS_fx.js"></script>
12
    <script type="text/javascript" src="greybox/gb_scripts.js"></script>
13
    <link href="greybox/gb_styles.css" rel="stylesheet" type="text/css" media="all" />
14
15
    <script type="text/javascript" src="static_files/help.js"></script>
16
    <link href="static_files/help.css" rel="stylesheet" type="text/css" media="all" />
17
</head>
18
19
<body>
20
21
<script>
22
    insertHeader();
23
    insertMenu('nrm_usage');
24
</script>
25
26
<h2>Showing images</h2>
27
28
<h3 class="first">Showing one image:</h3>
29
<h4>Syntax:</h4>
30
<pre>
31
<code>&lt;a href="URL" title="CAPTION" rel="gb_image[]"&gt;HTML&lt;/a&gt;</code>
32
</pre>
33
34
<h4>Example:</h4>
35
<pre>
36
<code>&lt;a href="http://static.flickr.com/119/294309231_a3d2a339b9.jpg" title="Flower" rel="gb_image[]"&gt;Show flower&lt;/a&gt;</code>
37
</pre>
38
39
<h4>Example rendered:</h4>
40
<a href="http://static.flickr.com/119/294309231_a3d2a339b9.jpg" title="Flower" rel="gb_image[]">Show flower</a>
41
42
43
<h3>Showing a group of images:</h3>
44
<h4>Syntax:</h4>
45
<pre>
46
<code>&lt;a href="URL" title="CAPTION" rel="gb_imageset[NAME]"&gt;HTML&lt;/a&gt;</code>
47
<code>&lt;a href="URL" title="CAPTION" rel="gb_imageset[NAME]"&gt;HTML&lt;/a&gt;</code>
48
</pre>
49
50
<h4>Example:</h4>
51
<pre>
52
<code>&lt;a href="static_files/salt.jpg" rel="gb_imageset[nice_pics]" title="Salt flats in Chile"&gt;Salt flats&lt;/a&gt;</code>
53
<code>&lt;a href="static_files/night_valley.jpg" rel="gb_imageset[nice_pics]" title="Night valley"&gt;Night valley&lt;/a&gt;</code>
54
</pre>
55
56
<h4>Example rendered:</h4>
57
<a href="static_files/salt.jpg" rel="gb_imageset[nice_pics]" title="Salt flats in Chile">Salt flats</a>
58
<a href="static_files/night_valley.jpg" rel="gb_imageset[nice_pics]" title="Night valley">Night valley</a>
59
60
61
<h2>Showing pages</h2>
62
63
<h3>Showing one page:</h3>
64
<h4>Syntax:</h4>
65
<pre>
66
<code>&lt;a href="URL" title="CAPTION" rel="gb_page[WIDTH, HEIGHT]"&gt;HTML&lt;/a&gt;</code>
67
</pre>
68
69
<h4>Example:</h4>
70
<pre>
71
<code>&lt;a href="http://google.com/" title="Google" rel="gb_page[500, 500]"&gt;Launch Google.com&lt;/a&gt;</code>
72
</pre>
73
74
<h4>Example rendered:</h4>
75
<a href="http://google.com/" title="Google" rel="gb_page[500, 500]">Launch Google.com</a>
76
77
78
<h3>Showing one page as center window:</h3>
79
<h4>Syntax:</h4>
80
<pre>
81
<code>&lt;a href="URL" title="CAPTION" rel="gb_page_center[WIDTH, HEIGHT]"&gt;HTML&lt;/a&gt;</code>
82
</pre>
83
84
<h4>Example:</h4>
85
<pre>
86
<code>&lt;a href="http://google.com/" title="Google" rel="gb_page_center[500, 500]"&gt;Launch Google.com&lt;/a&gt;</code>
87
</pre>
88
89
<h4>Example rendered:</h4>
90
<a href="http://google.com/" title="Google" rel="gb_page_center[500, 500]">Launch Google.com</a>
91
92
93
<h3>Showing one page in fullscreen:</h3>
94
<h4>Syntax:</h4>
95
<pre>
96
<code>&lt;a href="URL" title="CAPTION" rel="gb_page_fs[]"&gt;HTML&lt;/a&gt;</code>
97
</pre>
98
99
<h4>Example:</h4>
100
<pre>
101
<code>&lt;a href="http://google.com/" title="Google" rel="gb_page_fs[]"&gt;Launch Google.com&lt;/a&gt;</code>
102
</pre>
103
104
<h4>Example rendered:</h4>
105
<a href="http://google.com/" title="Google" rel="gb_page_fs[]">Launch Google.com</a>
106
107
<h3>Showing a group of pages:</h3>
108
<h4>Syntax:</h4>
109
<pre>
110
<code>&lt;a href="URL" title="CAPTION" rel="gb_pageset[NAME]"&gt;HTML&lt;/a&gt;</code>
111
<code>&lt;a href="URL" title="CAPTION" rel="gb_pageset[NAME]"&gt;HTML&lt;/a&gt;</code>
112
</pre>
113
114
<h4>Example:</h4>
115
<pre>
116
<code>&lt;a href="http://google.com/" title="Google" rel="gb_pageset[search_sites]"&gt;Launch Google search&lt;/a&gt;</code>
117
<code>&lt;a href="http://search.yahoo.com/" rel="gb_pageset[search_sites]"&gt;Launch Yahoo search&lt;/a&gt;</code>
118
</pre>
119
120
<h4>Example rendered:</h4>
121
<a href="http://google.com/" title="Google" rel="gb_pageset[search_sites]">Launch Google search</a>
122
<a href="http://search.yahoo.com/" rel="gb_pageset[search_sites]">Launch Yahoo search</a>
123
124
125
</body>
126
</html>
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/static_files/help.css (-93 lines)
Lines 1-93 Link Here
1
body {
2
    font-family: helvetica, verdana, sans-serif;
3
    font-size: 12px;
4
    background-color: #fff;
5
    padding: 10px 35px 35px 35px;
6
    width: 800px;
7
    margin: auto;
8
}
9
10
#top {
11
    text-align: center;
12
}
13
14
h2 {
15
    font-size: 18px;
16
    color: #333;
17
    margin: 35px 0 10px 0;
18
}
19
20
h3 {
21
    color: #333;
22
    border-bottom: 1px solid #999;
23
    font-size: 15px;
24
    margin: 30px 0 3px 0;
25
}
26
27
.first {
28
    margin-top: 20px;
29
}
30
31
h4 {
32
    color: black;
33
    font-size: 13px;
34
    margin: 10px 0 5px 0;
35
}
36
37
pre {
38
    font-size: 11px;
39
    margin-top: 5px;
40
    padding: 4px;
41
    background-color: #e3e2c6;
42
    border: 1px solid #999;
43
}
44
45
.hl {
46
    background-color: #ffffcc;
47
}
48
49
ol {
50
    margin: 0;
51
    padding: 0 0px 0 20px;
52
}
53
54
li {
55
    padding: 5px 0 5px 0;
56
}
57
58
img {
59
    border: 0;
60
}
61
62
/* 
63
 * Menu
64
 */
65
#menu {
66
    border-bottom: 1px solid #999;
67
    margin: 20px 0px;
68
    padding: 10px 0pt 5px;
69
    text-align: center;
70
}
71
72
#menu li {
73
    display: inline;
74
    margin: 0px;
75
    padding: 0px;
76
}
77
78
#menu a {
79
    background: #ddd none repeat;
80
    border: 1px solid #999;
81
    margin: 0 5px 0 5px;
82
    padding: 5px;
83
}
84
85
#menu a.current {
86
    background: #fff none repeat;
87
    border-bottom: 1px solid #fff;
88
}
89
90
#menu a {
91
    color: black;
92
    text-decoration: none;
93
}
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/GreyBox_v5_5/static_files/help.js (-52 lines)
Lines 1-52 Link Here
1
var tmpl_header = AJS.join('', [
2
    '<div id="top"> <img src="static_files/logo.gif" alt="" /> <br />',
3
    '<span style="font-weight: bold; color: #333">A pop-up window that doesn\'t suck.</span>',
4
    '</div>'
5
]);
6
7
function insertHeader() {
8
    AJS.DI(tmpl_header);
9
}
10
11
var LINKS = {
12
    'installation': 'installation.html',
13
    'examples': 'examples.html',
14
    'nrm_usage': 'normal_usage.html',
15
    'adv_usage': 'advance_usage.html',
16
    'cmpr': 'compressing_greybox.html',
17
    'about': 'about.html'
18
}
19
20
function insertMenu(current_page) {
21
    var menu = AJS.UL({id: 'menu'});
22
    var create_item = function(cls, name) {
23
        var item = AJS.LI({'class': cls});
24
        AJS.ACN(item, AJS.A({href: LINKS[cls]}, name));
25
        return item;
26
    }
27
    var items = [
28
        create_item('installation', 'Installation'),
29
        create_item('examples', 'Examples'),
30
        create_item('nrm_usage', 'Normal usage'),
31
        create_item('adv_usage', 'Advance usage'),
32
        create_item('cmpr', 'Compressing GreyBox'),
33
        create_item('about', 'About')
34
    ];
35
36
    AJS.map(items, function(item) {
37
        if(item.className == current_page) {
38
            AJS.addClass(AJS.$bytc('a', null, item)[0], 'current');
39
        }
40
        AJS.ACN(menu, item);
41
    });
42
    AJS.DI(menu);
43
}
44
45
function insertCode() {
46
    var code = AJS.join('\n', arguments);
47
    var result = '<pre><code>';
48
    code = code.replace(/</g, '&lt;').replace(/>/g, '&gt;');
49
    result += code;
50
    result += '</code></pre>';
51
    document.write(result);
52
}
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/gb_scripts.js (-436 lines)
Lines 1-436 Link Here
1
var GB_CURRENT=null;
2
GB_hide=function(){
3
GB_CURRENT.hide();
4
};
5
GreyBox=new AJS.Class({init:function(_1){
6
this.use_fx=AJS.fx;
7
this.type="page";
8
this.overlay_click_close=false;
9
this.salt=0;
10
this.root_dir=GB_ROOT_DIR;
11
this.callback_fns=[];
12
this.reload_on_close=false;
13
this.src_loader=this.root_dir+"loader_frame.html";
14
var _2=window.location.hostname.indexOf("www");
15
var _3=this.src_loader.indexOf("www");
16
if(_2!=-1&&_3==-1){
17
this.src_loader=this.src_loader.replace("://","://www.");
18
}
19
if(_2==-1&&_3!=-1){
20
this.src_loader=this.src_loader.replace("://www.","://");
21
}
22
this.show_loading=true;
23
AJS.update(this,_1);
24
},addCallback:function(fn){
25
if(fn){
26
this.callback_fns.push(fn);
27
}
28
},show:function(_5){
29
GB_CURRENT=this;
30
this.url=_5;
31
var _6=[AJS.$bytc("object"),AJS.$bytc("select")];
32
AJS.map(AJS.flattenList(_6),function(_7){
33
_7.style.visibility="hidden";
34
});
35
this.createElements();
36
return false;
37
},hide:function(){
38
var _8=this.callback_fns;
39
if(_8!=[]){
40
AJS.map(_8,function(fn){
41
fn();
42
});
43
}
44
this.onHide();
45
if(this.use_fx){
46
var _a=this.overlay;
47
AJS.fx.fadeOut(this.overlay,{onComplete:function(){
48
AJS.removeElement(_a);
49
_a=null;
50
},duration:300});
51
AJS.removeElement(this.g_window);
52
}else{
53
AJS.removeElement(this.g_window,this.overlay);
54
}
55
this.removeFrame();
56
AJS.REV(window,"scroll",_GB_setOverlayDimension);
57
AJS.REV(window,"resize",_GB_update);
58
var _b=[AJS.$bytc("object"),AJS.$bytc("select")];
59
AJS.map(AJS.flattenList(_b),function(_c){
60
_c.style.visibility="visible";
61
});
62
GB_CURRENT=null;
63
if(this.reload_on_close){
64
window.location.reload();
65
}
66
},update:function(){
67
this.setOverlayDimension();
68
this.setFrameSize();
69
this.setWindowPosition();
70
},createElements:function(){
71
this.initOverlay();
72
this.g_window=AJS.DIV({"id":"GB_window"});
73
AJS.hideElement(this.g_window);
74
AJS.getBody().insertBefore(this.g_window,this.overlay.nextSibling);
75
this.initFrame();
76
this.initHook();
77
this.update();
78
var me=this;
79
if(this.use_fx){
80
AJS.fx.fadeIn(this.overlay,{duration:300,to:0.7,onComplete:function(){
81
me.onShow();
82
AJS.showElement(me.g_window);
83
me.startLoading();
84
}});
85
}else{
86
AJS.setOpacity(this.overlay,0.7);
87
AJS.showElement(this.g_window);
88
this.onShow();
89
this.startLoading();
90
}
91
AJS.AEV(window,"scroll",_GB_setOverlayDimension);
92
AJS.AEV(window,"resize",_GB_update);
93
},removeFrame:function(){
94
try{
95
AJS.removeElement(this.iframe);
96
}
97
catch(e){
98
}
99
this.iframe=null;
100
},startLoading:function(){
101
this.iframe.src=this.src_loader+"?s="+this.salt++;
102
AJS.showElement(this.iframe);
103
},setOverlayDimension:function(){
104
var _e=AJS.getWindowSize();
105
if(AJS.isMozilla()||AJS.isOpera()){
106
AJS.setWidth(this.overlay,"100%");
107
}else{
108
AJS.setWidth(this.overlay,_e.w);
109
}
110
var _f=Math.max(AJS.getScrollTop()+_e.h,AJS.getScrollTop()+this.height);
111
if(_f<AJS.getScrollTop()){
112
AJS.setHeight(this.overlay,_f);
113
}else{
114
AJS.setHeight(this.overlay,AJS.getScrollTop()+_e.h);
115
}
116
},initOverlay:function(){
117
this.overlay=AJS.DIV({"id":"GB_overlay"});
118
if(this.overlay_click_close){
119
AJS.AEV(this.overlay,"click",GB_hide);
120
}
121
AJS.setOpacity(this.overlay,0);
122
AJS.getBody().insertBefore(this.overlay,AJS.getBody().firstChild);
123
},initFrame:function(){
124
if(!this.iframe){
125
var d={"name":"GB_frame","class":"GB_frame","frameBorder":0};
126
this.iframe=AJS.IFRAME(d);
127
this.middle_cnt=AJS.DIV({"class":"content"},this.iframe);
128
this.top_cnt=AJS.DIV();
129
this.bottom_cnt=AJS.DIV();
130
AJS.ACN(this.g_window,this.top_cnt,this.middle_cnt,this.bottom_cnt);
131
}
132
},onHide:function(){
133
},onShow:function(){
134
},setFrameSize:function(){
135
},setWindowPosition:function(){
136
},initHook:function(){
137
}});
138
_GB_update=function(){
139
if(GB_CURRENT){
140
GB_CURRENT.update();
141
}
142
};
143
_GB_setOverlayDimension=function(){
144
if(GB_CURRENT){
145
GB_CURRENT.setOverlayDimension();
146
}
147
};
148
AJS.preloadImages(GB_ROOT_DIR+"indicator.gif");
149
script_loaded=true;
150
var GB_SETS={};
151
function decoGreyboxLinks(){
152
var as=AJS.$bytc("a");
153
AJS.map(as,function(a){
154
if(a.getAttribute("href")&&a.getAttribute("rel")){
155
var rel=a.getAttribute("rel");
156
if(rel.indexOf("gb_")==0){
157
var _14=rel.match(/\w+/)[0];
158
var _15=rel.match(/\[(.*)\]/)[1];
159
var _16=0;
160
var _17={"caption":a.title||"","url":a.href};
161
if(_14=="gb_pageset"||_14=="gb_imageset"){
162
if(!GB_SETS[_15]){
163
GB_SETS[_15]=[];
164
}
165
GB_SETS[_15].push(_17);
166
_16=GB_SETS[_15].length;
167
}
168
if(_14=="gb_pageset"){
169
a.onclick=function(){
170
GB_showFullScreenSet(GB_SETS[_15],_16);
171
return false;
172
};
173
}
174
if(_14=="gb_imageset"){
175
a.onclick=function(){
176
GB_showImageSet(GB_SETS[_15],_16);
177
return false;
178
};
179
}
180
if(_14=="gb_image"){
181
a.onclick=function(){
182
GB_showImage(_17.caption,_17.url);
183
return false;
184
};
185
}
186
if(_14=="gb_page"){
187
a.onclick=function(){
188
var sp=_15.split(/, ?/);
189
GB_show(_17.caption,_17.url,parseInt(sp[1]),parseInt(sp[0]));
190
return false;
191
};
192
}
193
if(_14=="gb_page_fs"){
194
a.onclick=function(){
195
GB_showFullScreen(_17.caption,_17.url);
196
return false;
197
};
198
}
199
if(_14=="gb_page_center"){
200
a.onclick=function(){
201
var sp=_15.split(/, ?/);
202
GB_showCenter(_17.caption,_17.url,parseInt(sp[1]),parseInt(sp[0]));
203
return false;
204
};
205
}
206
}
207
}
208
});
209
}
210
AJS.AEV(window,"load",decoGreyboxLinks);
211
GB_showImage=function(_1a,url,_1c){
212
var _1d={width:300,height:300,type:"image",fullscreen:false,center_win:true,caption:_1a,callback_fn:_1c};
213
var win=new GB_Gallery(_1d);
214
return win.show(url);
215
};
216
GB_showPage=function(_1f,url,_21){
217
var _22={type:"page",caption:_1f,callback_fn:_21,fullscreen:true,center_win:false};
218
var win=new GB_Gallery(_22);
219
return win.show(url);
220
};
221
GB_Gallery=GreyBox.extend({init:function(_24){
222
this.parent({});
223
this.img_close=this.root_dir+"g_close.gif";
224
AJS.update(this,_24);
225
this.addCallback(this.callback_fn);
226
},initHook:function(){
227
AJS.addClass(this.g_window,"GB_Gallery");
228
var _25=AJS.DIV({"class":"inner"});
229
this.header=AJS.DIV({"class":"GB_header"},_25);
230
AJS.setOpacity(this.header,0);
231
AJS.getBody().insertBefore(this.header,this.overlay.nextSibling);
232
var _26=AJS.TD({"id":"GB_caption","class":"caption","width":"40%"},this.caption);
233
var _27=AJS.TD({"id":"GB_middle","class":"middle","width":"20%"});
234
var _28=AJS.IMG({"src":this.img_close});
235
AJS.AEV(_28,"click",GB_hide);
236
var _29=AJS.TD({"class":"close","width":"40%"},_28);
237
var _2a=AJS.TBODY(AJS.TR(_26,_27,_29));
238
var _2b=AJS.TABLE({"cellspacing":"0","cellpadding":0,"border":0},_2a);
239
AJS.ACN(_25,_2b);
240
if(this.fullscreen){
241
AJS.AEV(window,"scroll",AJS.$b(this.setWindowPosition,this));
242
}else{
243
AJS.AEV(window,"scroll",AJS.$b(this._setHeaderPos,this));
244
}
245
},setFrameSize:function(){
246
var _2c=this.overlay.offsetWidth;
247
var _2d=AJS.getWindowSize();
248
if(this.fullscreen){
249
this.width=_2c-40;
250
this.height=_2d.h-80;
251
}
252
AJS.setWidth(this.iframe,this.width);
253
AJS.setHeight(this.iframe,this.height);
254
AJS.setWidth(this.header,_2c);
255
},_setHeaderPos:function(){
256
AJS.setTop(this.header,AJS.getScrollTop()+10);
257
},setWindowPosition:function(){
258
var _2e=this.overlay.offsetWidth;
259
var _2f=AJS.getWindowSize();
260
AJS.setLeft(this.g_window,((_2e-50-this.width)/2));
261
var _30=AJS.getScrollTop()+55;
262
if(!this.center_win){
263
AJS.setTop(this.g_window,_30);
264
}else{
265
var fl=((_2f.h-this.height)/2)+20+AJS.getScrollTop();
266
if(fl<0){
267
fl=0;
268
}
269
if(_30>fl){
270
fl=_30;
271
}
272
AJS.setTop(this.g_window,fl);
273
}
274
this._setHeaderPos();
275
},onHide:function(){
276
AJS.removeElement(this.header);
277
AJS.removeClass(this.g_window,"GB_Gallery");
278
},onShow:function(){
279
if(this.use_fx){
280
AJS.fx.fadeIn(this.header,{to:1});
281
}else{
282
AJS.setOpacity(this.header,1);
283
}
284
}});
285
AJS.preloadImages(GB_ROOT_DIR+"g_close.gif");
286
GB_showFullScreenSet=function(set,_33,_34){
287
var _35={type:"page",fullscreen:true,center_win:false};
288
var _36=new GB_Sets(_35,set);
289
_36.addCallback(_34);
290
_36.showSet(_33-1);
291
return false;
292
};
293
GB_showImageSet=function(set,_38,_39){
294
var _3a={type:"image",fullscreen:false,center_win:true,width:300,height:300};
295
var _3b=new GB_Sets(_3a,set);
296
_3b.addCallback(_39);
297
_3b.showSet(_38-1);
298
return false;
299
};
300
GB_Sets=GB_Gallery.extend({init:function(_3c,set){
301
this.parent(_3c);
302
if(!this.img_next){
303
this.img_next=this.root_dir+"next.gif";
304
}
305
if(!this.img_prev){
306
this.img_prev=this.root_dir+"prev.gif";
307
}
308
this.current_set=set;
309
},showSet:function(_3e){
310
this.current_index=_3e;
311
var _3f=this.current_set[this.current_index];
312
this.show(_3f.url);
313
this._setCaption(_3f.caption);
314
this.btn_prev=AJS.IMG({"class":"left",src:this.img_prev});
315
this.btn_next=AJS.IMG({"class":"right",src:this.img_next});
316
AJS.AEV(this.btn_prev,"click",AJS.$b(this.switchPrev,this));
317
AJS.AEV(this.btn_next,"click",AJS.$b(this.switchNext,this));
318
GB_STATUS=AJS.SPAN({"class":"GB_navStatus"});
319
AJS.ACN(AJS.$("GB_middle"),this.btn_prev,GB_STATUS,this.btn_next);
320
this.updateStatus();
321
},updateStatus:function(){
322
AJS.setHTML(GB_STATUS,(this.current_index+1)+" / "+this.current_set.length);
323
if(this.current_index==0){
324
AJS.addClass(this.btn_prev,"disabled");
325
}else{
326
AJS.removeClass(this.btn_prev,"disabled");
327
}
328
if(this.current_index==this.current_set.length-1){
329
AJS.addClass(this.btn_next,"disabled");
330
}else{
331
AJS.removeClass(this.btn_next,"disabled");
332
}
333
},_setCaption:function(_40){
334
AJS.setHTML(AJS.$("GB_caption"),_40);
335
},updateFrame:function(){
336
var _41=this.current_set[this.current_index];
337
this._setCaption(_41.caption);
338
this.url=_41.url;
339
this.startLoading();
340
},switchPrev:function(){
341
if(this.current_index!=0){
342
this.current_index--;
343
this.updateFrame();
344
this.updateStatus();
345
}
346
},switchNext:function(){
347
if(this.current_index!=this.current_set.length-1){
348
this.current_index++;
349
this.updateFrame();
350
this.updateStatus();
351
}
352
}});
353
AJS.AEV(window,"load",function(){
354
AJS.preloadImages(GB_ROOT_DIR+"next.gif",GB_ROOT_DIR+"prev.gif");
355
});
356
GB_show=function(_42,url,_44,_45,_46){
357
var _47={caption:_42,height:_44||500,width:_45||500,fullscreen:false,callback_fn:_46};
358
var win=new GB_Window(_47);
359
return win.show(url);
360
};
361
GB_showCenter=function(_49,url,_4b,_4c,_4d){
362
var _4e={caption:_49,center_win:true,height:_4b||500,width:_4c||500,fullscreen:false,callback_fn:_4d};
363
var win=new GB_Window(_4e);
364
return win.show(url);
365
};
366
GB_showFullScreen=function(_50,url,_52){
367
var _53={caption:_50,fullscreen:true,callback_fn:_52};
368
var win=new GB_Window(_53);
369
return win.show(url);
370
};
371
GB_Window=GreyBox.extend({init:function(_55){
372
this.parent({});
373
this.img_header=this.root_dir+"header_bg.gif";
374
this.img_close=this.root_dir+"w_close.gif";
375
this.show_close_img=true;
376
AJS.update(this,_55);
377
this.addCallback(this.callback_fn);
378
},initHook:function(){
379
AJS.addClass(this.g_window,"GB_Window");
380
this.header=AJS.TABLE({"class":"header"});
381
this.header.style.backgroundImage="url("+this.img_header+")";
382
var _56=AJS.TD({"class":"caption"},this.caption);
383
var _57=AJS.TD({"class":"close"});
384
if(this.show_close_img){
385
var _58=AJS.IMG({"src":this.img_close});
386
var _59=AJS.SPAN("Close");
387
var btn=AJS.DIV(_58,_59);
388
AJS.AEV([_58,_59],"mouseover",function(){
389
AJS.addClass(_59,"on");
390
});
391
AJS.AEV([_58,_59],"mouseout",function(){
392
AJS.removeClass(_59,"on");
393
});
394
AJS.AEV([_58,_59],"mousedown",function(){
395
AJS.addClass(_59,"click");
396
});
397
AJS.AEV([_58,_59],"mouseup",function(){
398
AJS.removeClass(_59,"click");
399
});
400
AJS.AEV([_58,_59],"click",GB_hide);
401
AJS.ACN(_57,btn);
402
}
403
tbody_header=AJS.TBODY();
404
AJS.ACN(tbody_header,AJS.TR(_56,_57));
405
AJS.ACN(this.header,tbody_header);
406
AJS.ACN(this.top_cnt,this.header);
407
if(this.fullscreen){
408
AJS.AEV(window,"scroll",AJS.$b(this.setWindowPosition,this));
409
}
410
},setFrameSize:function(){
411
if(this.fullscreen){
412
var _5b=AJS.getWindowSize();
413
overlay_h=_5b.h;
414
this.width=Math.round(this.overlay.offsetWidth-(this.overlay.offsetWidth/100)*10);
415
this.height=Math.round(overlay_h-(overlay_h/100)*10);
416
}
417
AJS.setWidth(this.header,this.width+6);
418
AJS.setWidth(this.iframe,this.width);
419
AJS.setHeight(this.iframe,this.height);
420
},setWindowPosition:function(){
421
var _5c=AJS.getWindowSize();
422
AJS.setLeft(this.g_window,((_5c.w-this.width)/2)-13);
423
if(!this.center_win){
424
AJS.setTop(this.g_window,AJS.getScrollTop());
425
}else{
426
var fl=((_5c.h-this.height)/2)-20+AJS.getScrollTop();
427
if(fl<0){
428
fl=0;
429
}
430
AJS.setTop(this.g_window,fl);
431
}
432
}});
433
AJS.preloadImages(GB_ROOT_DIR+"w_close.gif",GB_ROOT_DIR+"header_bg.gif");
434
435
436
script_loaded=true;
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/gb_styles.css (-158 lines)
Lines 1-158 Link Here
1
/* Last-Modified: 28/06/06 00:08:22 */
2
#GB_overlay {
3
    background-color: #000;
4
    position: absolute;
5
    margin: auto;
6
    top: 0;
7
    left: 0;
8
    z-index: 100;
9
}
10
11
#GB_window {
12
    left: 0;
13
    top: 0;
14
    font-size: 1px;
15
    position: absolute;
16
    overflow: visible;
17
    z-index: 150;
18
}
19
20
#GB_window .content {
21
    width: auto;
22
    margin: 0;
23
    padding: 0;
24
}
25
26
#GB_frame {
27
    border: 0;
28
    margin: 0;
29
    padding: 0;
30
    overflow: auto;
31
    white-space: nowrap;
32
}
33
34
35
.GB_Gallery {
36
    margin: 0 22px 0 22px;
37
}
38
39
.GB_Gallery .content {
40
    background-color: #fff;
41
    border: 3px solid #ddd;
42
}
43
44
.GB_header {
45
    top: 10px;
46
    left: 0;
47
    margin: 0;
48
    z-index: 500;
49
    position: absolute;
50
    border-bottom: 2px solid #555;
51
    border-top: 2px solid #555;
52
}
53
54
.GB_header .inner {
55
    background-color: #333;
56
    font-family: Arial, Verdana, sans-serif;
57
    padding: 2px 20px 2px 20px;
58
}
59
60
.GB_header table {
61
    margin: 0;
62
    width: 100%;
63
    border-collapse: separate;
64
    border-right: 0px;
65
    border-top: 0px;
66
}
67
68
.GB_header td {
69
    background-color: #333333;
70
    border-bottom: 0px;
71
    border-left: 0px;
72
    padding: 0em 0em;
73
}
74
75
.GB_header .caption {
76
    text-align: left;
77
    color: #eee;
78
    white-space: nowrap;
79
    font-size: 20px;
80
    border-collapse: separate;
81
}
82
83
.GB_header .close {
84
    text-align: right;
85
}
86
87
.GB_header .close img {
88
    z-index: 500;
89
    cursor: pointer;
90
}
91
92
.GB_header .middle {
93
    white-space: nowrap;
94
    text-align: center;
95
}
96
97
98
#GB_middle {
99
    color: #eee;
100
}
101
102
#GB_middle img {
103
    cursor: pointer;
104
    vertical-align: middle;
105
}
106
107
#GB_middle .disabled {
108
    cursor: default;
109
}
110
111
#GB_middle .left {
112
    padding-right: 10px;
113
}
114
115
#GB_middle .right {
116
    padding-left: 10px;
117
}
118
119
120
.GB_Window .content {
121
    background-color: #fff;
122
    border: 3px solid #ccc;
123
    border-top: none;
124
}
125
126
.GB_Window .header {
127
    border-bottom: 1px solid #aaa;
128
    border-top: 1px solid #999;
129
    border-left: 3px solid #ccc;
130
    border-right: 3px solid #ccc;
131
    margin: 0;
132
133
    height: 22px;
134
    font-size: 12px;
135
    padding: 3px 0;
136
    color: #333;
137
}
138
139
.GB_Window .caption {
140
    font-size: 12px;
141
    text-align: left;
142
    font-weight: bold;
143
    white-space: nowrap;
144
    padding-right: 20px;
145
}
146
147
.GB_Window .close { text-align: right; }
148
.GB_Window .close span { 
149
    font-size: 12px;
150
    cursor: pointer; 
151
}
152
.GB_Window .close img {
153
    cursor: pointer;
154
    padding: 0 3px 0 0;
155
}
156
157
.GB_Window .on { border-bottom: 1px solid #333; }
158
.GB_Window .click { border-bottom: 1px solid red; }
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/greybox/loader_frame.html (-104 lines)
Lines 1-104 Link Here
1
<!--
2
Notice: I feel so dirty doing this, but its the only way to make it cross browser.
3
-->
4
<html>
5
<head>
6
  <script>
7
    var GB = parent.GB_CURRENT;
8
    document.write('<script type="text/javascript" src="AJS.js"><\/script>');
9
    if(GB.use_fx) {
10
        document.write('<script type="text/javascript" src="AJS_fx.js"><\/script>');
11
    }
12
  </script>
13
  <style>
14
    body {
15
      padding: 0;
16
      margin: 0;
17
      overflow: hidden;
18
    }
19
20
    #GB_frame {
21
      visibility: hidden;
22
      width: 100%;
23
      height: 100%;
24
    }
25
26
    #loading {
27
      padding-top: 50px;
28
      position: absolute;
29
      width: 100%;
30
      top: 0;
31
      text-align: center;
32
      vertical-align: middle;
33
    }
34
  </style>
35
</head>
36
<body>
37
38
<div id="loading">
39
  <img src="indicator.gif">
40
</div>
41
42
<script>
43
var loading = AJS.$('loading');
44
var gb_type = GB.type;
45
var gb_url = GB.url;
46
47
//Start loading in the iframe
48
if(gb_type == "page") {
49
  document.write('<iframe id="GB_frame" src="' + gb_url + '" frameborder="0"></iframe>');
50
}
51
else {
52
  var img_holder = new Image();
53
  img_holder.src = gb_url;
54
  document.write('<img id="GB_frame" src="' + gb_url + '">');
55
}
56
var frame = AJS.$('GB_frame');
57
</script>
58
59
</body>
60
<script>
61
function setupOuterGB() {
62
    frame.style.visibility = 'visible';
63
    GB.setFrameSize();
64
    GB.setWindowPosition();
65
}
66
67
function loaded() {
68
    AJS.removeElement(loading);
69
70
    GB.overlay.innerHTML += "&nbsp;"; //Safari bugfix
71
    
72
    if(gb_type == "image") {
73
        if(img_holder.width != 0 && img_holder.height != 0) {
74
            var width = img_holder.width;
75
            var height = img_holder.height;
76
77
            GB.width = width;
78
            GB.height = height;
79
80
            setupOuterGB();
81
82
            if(GB.use_fx) {
83
                AJS.setOpacity(frame, 0);
84
                AJS.fx.fadeIn(frame);
85
            }
86
        }
87
    }
88
    else {
89
        GB.width = frame.offsetWidth;
90
        GB.height = frame.offsetHeight;
91
        setupOuterGB();
92
    }
93
}
94
95
if(GB.show_loading) {
96
    AJS.AEV(window, 'load', function(e) {
97
        loaded();
98
    });
99
}
100
else {
101
    loaded();
102
}
103
</script>
104
</html>
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/jquery/jquery-ui.css (-5 lines)
Lines 1-5 Link Here
1
/*! jQuery UI - v1.9.2 - 2013-02-12
2
* http://jqueryui.com
3
* Includes: jquery.ui.core.css, jquery.ui.autocomplete.css, jquery.ui.datepicker.css, jquery.ui.menu.css, jquery.ui.slider.css, jquery.ui.tabs.css, jquery.ui.tooltip.css
4
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
5
* Copyright (c) 2013 jQuery Foundation and other contributors Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{zoom:1}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}* html .ui-autocomplete{width:1px}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0em}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-cover{position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;width:100%}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;zoom:1;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-tabs{position:relative;padding:.2em;zoom:1}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}* html .ui-tooltip{background-image:none}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/jquery/jquery-ui.js (-6 lines)
Lines 1-6 Link Here
1
/*! jQuery UI - v1.9.2 - 2013-02-12
2
* http://jqueryui.com
3
* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.sortable.js, jquery.ui.autocomplete.js, jquery.ui.datepicker.js, jquery.ui.menu.js, jquery.ui.slider.js, jquery.ui.tabs.js, jquery.ui.tooltip.js
4
* Copyright (c) 2013 jQuery Foundation and other contributors Licensed MIT */
5
6
(function(e,t){function i(t,n){var r,i,o,u=t.nodeName.toLowerCase();return"area"===u?(r=t.parentNode,i=r.name,!t.href||!i||r.nodeName.toLowerCase()!=="map"?!1:(o=e("img[usemap=#"+i+"]")[0],!!o&&s(o))):(/input|select|textarea|button|object/.test(u)?!t.disabled:"a"===u?t.href||n:n)&&s(t)}function s(t){return e.expr.filters.visible(t)&&!e(t).parents().andSelf().filter(function(){return e.css(this,"visibility")==="hidden"}).length}var n=0,r=/^ui-id-\d+$/;e.ui=e.ui||{};if(e.ui.version)return;e.extend(e.ui,{version:"1.9.2",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({_focus:e.fn.focus,focus:function(t,n){return typeof t=="number"?this.each(function(){var r=this;setTimeout(function(){e(r).focus(),n&&n.call(r)},t)}):this._focus.apply(this,arguments)},scrollParent:function(){var t;return e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?t=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):t=this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(n){if(n!==t)return this.css("zIndex",n);if(this.length){var r=e(this[0]),i,s;while(r.length&&r[0]!==document){i=r.css("position");if(i==="absolute"||i==="relative"||i==="fixed"){s=parseInt(r.css("zIndex"),10);if(!isNaN(s)&&s!==0)return s}r=r.parent()}}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++n)})},removeUniqueId:function(){return this.each(function(){r.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(n){return!!e.data(n,t)}}):function(t,n,r){return!!e.data(t,r[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var n=e.attr(t,"tabindex"),r=isNaN(n);return(r||n>=0)&&i(t,!r)}}),e(function(){var t=document.body,n=t.appendChild(n=document.createElement("div"));n.offsetHeight,e.extend(n.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),e.support.minHeight=n.offsetHeight===100,e.support.selectstart="onselectstart"in n,t.removeChild(n).style.display="none"}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(n,r){function u(t,n,r,s){return e.each(i,function(){n-=parseFloat(e.css(t,"padding"+this))||0,r&&(n-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(n-=parseFloat(e.css(t,"margin"+this))||0)}),n}var i=r==="Width"?["Left","Right"]:["Top","Bottom"],s=r.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+r]=function(n){return n===t?o["inner"+r].call(this):this.each(function(){e(this).css(s,u(this,n)+"px")})},e.fn["outer"+r]=function(t,n){return typeof t!="number"?o["outer"+r].call(this,t):this.each(function(){e(this).css(s,u(this,t,!0,n)+"px")})}}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(n){return arguments.length?t.call(this,e.camelCase(n)):t.call(this)}}(e.fn.removeData)),function(){var t=/msie ([\w.]+)/.exec(navigator.userAgent.toLowerCase())||[];e.ui.ie=t.length?!0:!1,e.ui.ie6=parseFloat(t[1],10)===6}(),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,n,r){var i,s=e.ui[t].prototype;for(i in r)s.plugins[i]=s.plugins[i]||[],s.plugins[i].push([n,r[i]])},call:function(e,t,n){var r,i=e.plugins[t];if(!i||!e.element[0].parentNode||e.element[0].parentNode.nodeType===11)return;for(r=0;r<i.length;r++)e.options[i[r][0]]&&i[r][1].apply(e.element,n)}},contains:e.contains,hasScroll:function(t,n){if(e(t).css("overflow")==="hidden")return!1;var r=n&&n==="left"?"scrollLeft":"scrollTop",i=!1;return t[r]>0?!0:(t[r]=1,i=t[r]>0,t[r]=0,i)},isOverAxis:function(e,t,n){return e>t&&e<t+n},isOver:function(t,n,r,i,s,o){return e.ui.isOverAxis(t,r,s)&&e.ui.isOverAxis(n,i,o)}})})(jQuery);(function(e,t){var n=0,r=Array.prototype.slice,i=e.cleanData;e.cleanData=function(t){for(var n=0,r;(r=t[n])!=null;n++)try{e(r).triggerHandler("remove")}catch(s){}i(t)},e.widget=function(t,n,r){var i,s,o,u,a=t.split(".")[0];t=t.split(".")[1],i=a+"-"+t,r||(r=n,n=e.Widget),e.expr[":"][i.toLowerCase()]=function(t){return!!e.data(t,i)},e[a]=e[a]||{},s=e[a][t],o=e[a][t]=function(e,t){if(!this._createWidget)return new o(e,t);arguments.length&&this._createWidget(e,t)},e.extend(o,s,{version:r.version,_proto:e.extend({},r),_childConstructors:[]}),u=new n,u.options=e.widget.extend({},u.options),e.each(r,function(t,i){e.isFunction(i)&&(r[t]=function(){var e=function(){return n.prototype[t].apply(this,arguments)},r=function(e){return n.prototype[t].apply(this,e)};return function(){var t=this._super,n=this._superApply,s;return this._super=e,this._superApply=r,s=i.apply(this,arguments),this._super=t,this._superApply=n,s}}())}),o.prototype=e.widget.extend(u,{widgetEventPrefix:s?u.widgetEventPrefix:t},r,{constructor:o,namespace:a,widgetName:t,widgetBaseClass:i,widgetFullName:i}),s?(e.each(s._childConstructors,function(t,n){var r=n.prototype;e.widget(r.namespace+"."+r.widgetName,o,n._proto)}),delete s._childConstructors):n._childConstructors.push(o),e.widget.bridge(t,o)},e.widget.extend=function(n){var i=r.call(arguments,1),s=0,o=i.length,u,a;for(;s<o;s++)for(u in i[s])a=i[s][u],i[s].hasOwnProperty(u)&&a!==t&&(e.isPlainObject(a)?n[u]=e.isPlainObject(n[u])?e.widget.extend({},n[u],a):e.widget.extend({},a):n[u]=a);return n},e.widget.bridge=function(n,i){var s=i.prototype.widgetFullName||n;e.fn[n]=function(o){var u=typeof o=="string",a=r.call(arguments,1),f=this;return o=!u&&a.length?e.widget.extend.apply(null,[o].concat(a)):o,u?this.each(function(){var r,i=e.data(this,s);if(!i)return e.error("cannot call methods on "+n+" prior to initialization; "+"attempted to call method '"+o+"'");if(!e.isFunction(i[o])||o.charAt(0)==="_")return e.error("no such method '"+o+"' for "+n+" widget instance");r=i[o].apply(i,a);if(r!==i&&r!==t)return f=r&&r.jquery?f.pushStack(r.get()):r,!1}):this.each(function(){var t=e.data(this,s);t?t.option(o||{})._init():e.data(this,s,new i(o,this))}),f}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,r){r=e(r||this.defaultElement||this)[0],this.element=e(r),this.uuid=n++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),r!==this&&(e.data(r,this.widgetName,this),e.data(r,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===r&&this.destroy()}}),this.document=e(r.style?r.ownerDocument:r.document||r),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(n,r){var i=n,s,o,u;if(arguments.length===0)return e.widget.extend({},this.options);if(typeof n=="string"){i={},s=n.split("."),n=s.shift();if(s.length){o=i[n]=e.widget.extend({},this.options[n]);for(u=0;u<s.length-1;u++)o[s[u]]=o[s[u]]||{},o=o[s[u]];n=s.pop();if(r===t)return o[n]===t?null:o[n];o[n]=r}else{if(r===t)return this.options[n]===t?null:this.options[n];i[n]=r}}return this._setOptions(i),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,e==="disabled"&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(t,n,r){var i,s=this;typeof t!="boolean"&&(r=n,n=t,t=!1),r?(n=i=e(n),this.bindings=this.bindings.add(n)):(r=n,n=this.element,i=this.widget()),e.each(r,function(r,o){function u(){if(!t&&(s.options.disabled===!0||e(this).hasClass("ui-state-disabled")))return;return(typeof o=="string"?s[o]:o).apply(s,arguments)}typeof o!="string"&&(u.guid=o.guid=o.guid||u.guid||e.guid++);var a=r.match(/^(\w+)\s*(.*)$/),f=a[1]+s.eventNamespace,l=a[2];l?i.delegate(l,f,u):n.bind(f,u)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function n(){return(typeof e=="string"?r[e]:e).apply(r,arguments)}var r=this;return setTimeout(n,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,n,r){var i,s,o=this.options[t];r=r||{},n=e.Event(n),n.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),n.target=this.element[0],s=n.originalEvent;if(s)for(i in s)i in n||(n[i]=s[i]);return this.element.trigger(n,r),!(e.isFunction(o)&&o.apply(this.element[0],[n].concat(r))===!1||n.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,n){e.Widget.prototype["_"+t]=function(r,i,s){typeof i=="string"&&(i={effect:i});var o,u=i?i===!0||typeof i=="number"?n:i.effect||n:t;i=i||{},typeof i=="number"&&(i={duration:i}),o=!e.isEmptyObject(i),i.complete=s,i.delay&&r.delay(i.delay),o&&e.effects&&(e.effects.effect[u]||e.uiBackCompat!==!1&&e.effects[u])?r[t](i):u!==t&&r[u]?r[u](i.duration,i.easing,s):r.queue(function(n){e(this)[t](),s&&s.call(r[0]),n()})}}),e.uiBackCompat!==!1&&(e.Widget.prototype._getCreateOptions=function(){return e.metadata&&e.metadata.get(this.element[0])[this.widgetName]})})(jQuery);(function(e,t){var n=!1;e(document).mouseup(function(e){n=!1}),e.widget("ui.mouse",{version:"1.9.2",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(n){if(!0===e.data(n.target,t.widgetName+".preventClickEvent"))return e.removeData(n.target,t.widgetName+".preventClickEvent"),n.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(n)return;this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var r=this,i=t.which===1,s=typeof this.options.cancel=="string"&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;if(!i||s||!this._mouseCapture(t))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){r.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)){this._mouseStarted=this._mouseStart(t)!==!1;if(!this._mouseStarted)return t.preventDefault(),!0}return!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return r._mouseMove(e)},this._mouseUpDelegate=function(e){return r._mouseUp(e)},e(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),n=!0,!0},_mouseMove:function(t){return!e.ui.ie||document.documentMode>=9||!!t.button?this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted):this._mouseUp(t)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(e){return this.mouseDelayMet},_mouseStart:function(e){},_mouseDrag:function(e){},_mouseStop:function(e){},_mouseCapture:function(e){return!0}})})(jQuery);(function(e,t){function h(e,t,n){return[parseInt(e[0],10)*(l.test(e[0])?t/100:1),parseInt(e[1],10)*(l.test(e[1])?n/100:1)]}function p(t,n){return parseInt(e.css(t,n),10)||0}e.ui=e.ui||{};var n,r=Math.max,i=Math.abs,s=Math.round,o=/left|center|right/,u=/top|center|bottom/,a=/[\+\-]\d+%?/,f=/^\w+/,l=/%$/,c=e.fn.position;e.position={scrollbarWidth:function(){if(n!==t)return n;var r,i,s=e("<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return e("body").append(s),r=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,r===i&&(i=s[0].clientWidth),s.remove(),n=r-i},getScrollInfo:function(t){var n=t.isWindow?"":t.element.css("overflow-x"),r=t.isWindow?"":t.element.css("overflow-y"),i=n==="scroll"||n==="auto"&&t.width<t.element[0].scrollWidth,s=r==="scroll"||r==="auto"&&t.height<t.element[0].scrollHeight;return{width:i?e.position.scrollbarWidth():0,height:s?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var n=e(t||window),r=e.isWindow(n[0]);return{element:n,isWindow:r,offset:n.offset()||{left:0,top:0},scrollLeft:n.scrollLeft(),scrollTop:n.scrollTop(),width:r?n.width():n.outerWidth(),height:r?n.height():n.outerHeight()}}},e.fn.position=function(t){if(!t||!t.of)return c.apply(this,arguments);t=e.extend({},t);var n,l,d,v,m,g=e(t.of),y=e.position.getWithinInfo(t.within),b=e.position.getScrollInfo(y),w=g[0],E=(t.collision||"flip").split(" "),S={};return w.nodeType===9?(l=g.width(),d=g.height(),v={top:0,left:0}):e.isWindow(w)?(l=g.width(),d=g.height(),v={top:g.scrollTop(),left:g.scrollLeft()}):w.preventDefault?(t.at="left top",l=d=0,v={top:w.pageY,left:w.pageX}):(l=g.outerWidth(),d=g.outerHeight(),v=g.offset()),m=e.extend({},v),e.each(["my","at"],function(){var e=(t[this]||"").split(" "),n,r;e.length===1&&(e=o.test(e[0])?e.concat(["center"]):u.test(e[0])?["center"].concat(e):["center","center"]),e[0]=o.test(e[0])?e[0]:"center",e[1]=u.test(e[1])?e[1]:"center",n=a.exec(e[0]),r=a.exec(e[1]),S[this]=[n?n[0]:0,r?r[0]:0],t[this]=[f.exec(e[0])[0],f.exec(e[1])[0]]}),E.length===1&&(E[1]=E[0]),t.at[0]==="right"?m.left+=l:t.at[0]==="center"&&(m.left+=l/2),t.at[1]==="bottom"?m.top+=d:t.at[1]==="center"&&(m.top+=d/2),n=h(S.at,l,d),m.left+=n[0],m.top+=n[1],this.each(function(){var o,u,a=e(this),f=a.outerWidth(),c=a.outerHeight(),w=p(this,"marginLeft"),x=p(this,"marginTop"),T=f+w+p(this,"marginRight")+b.width,N=c+x+p(this,"marginBottom")+b.height,C=e.extend({},m),k=h(S.my,a.outerWidth(),a.outerHeight());t.my[0]==="right"?C.left-=f:t.my[0]==="center"&&(C.left-=f/2),t.my[1]==="bottom"?C.top-=c:t.my[1]==="center"&&(C.top-=c/2),C.left+=k[0],C.top+=k[1],e.support.offsetFractions||(C.left=s(C.left),C.top=s(C.top)),o={marginLeft:w,marginTop:x},e.each(["left","top"],function(r,i){e.ui.position[E[r]]&&e.ui.position[E[r]][i](C,{targetWidth:l,targetHeight:d,elemWidth:f,elemHeight:c,collisionPosition:o,collisionWidth:T,collisionHeight:N,offset:[n[0]+k[0],n[1]+k[1]],my:t.my,at:t.at,within:y,elem:a})}),e.fn.bgiframe&&a.bgiframe(),t.using&&(u=function(e){var n=v.left-C.left,s=n+l-f,o=v.top-C.top,u=o+d-c,h={target:{element:g,left:v.left,top:v.top,width:l,height:d},element:{element:a,left:C.left,top:C.top,width:f,height:c},horizontal:s<0?"left":n>0?"right":"center",vertical:u<0?"top":o>0?"bottom":"middle"};l<f&&i(n+s)<l&&(h.horizontal="center"),d<c&&i(o+u)<d&&(h.vertical="middle"),r(i(n),i(s))>r(i(o),i(u))?h.important="horizontal":h.important="vertical",t.using.call(this,e,h)}),a.offset(e.extend(C,{using:u}))})},e.ui.position={fit:{left:function(e,t){var n=t.within,i=n.isWindow?n.scrollLeft:n.offset.left,s=n.width,o=e.left-t.collisionPosition.marginLeft,u=i-o,a=o+t.collisionWidth-s-i,f;t.collisionWidth>s?u>0&&a<=0?(f=e.left+u+t.collisionWidth-s-i,e.left+=u-f):a>0&&u<=0?e.left=i:u>a?e.left=i+s-t.collisionWidth:e.left=i:u>0?e.left+=u:a>0?e.left-=a:e.left=r(e.left-o,e.left)},top:function(e,t){var n=t.within,i=n.isWindow?n.scrollTop:n.offset.top,s=t.within.height,o=e.top-t.collisionPosition.marginTop,u=i-o,a=o+t.collisionHeight-s-i,f;t.collisionHeight>s?u>0&&a<=0?(f=e.top+u+t.collisionHeight-s-i,e.top+=u-f):a>0&&u<=0?e.top=i:u>a?e.top=i+s-t.collisionHeight:e.top=i:u>0?e.top+=u:a>0?e.top-=a:e.top=r(e.top-o,e.top)}},flip:{left:function(e,t){var n=t.within,r=n.offset.left+n.scrollLeft,s=n.width,o=n.isWindow?n.scrollLeft:n.offset.left,u=e.left-t.collisionPosition.marginLeft,a=u-o,f=u+t.collisionWidth-s-o,l=t.my[0]==="left"?-t.elemWidth:t.my[0]==="right"?t.elemWidth:0,c=t.at[0]==="left"?t.targetWidth:t.at[0]==="right"?-t.targetWidth:0,h=-2*t.offset[0],p,d;if(a<0){p=e.left+l+c+h+t.collisionWidth-s-r;if(p<0||p<i(a))e.left+=l+c+h}else if(f>0){d=e.left-t.collisionPosition.marginLeft+l+c+h-o;if(d>0||i(d)<f)e.left+=l+c+h}},top:function(e,t){var n=t.within,r=n.offset.top+n.scrollTop,s=n.height,o=n.isWindow?n.scrollTop:n.offset.top,u=e.top-t.collisionPosition.marginTop,a=u-o,f=u+t.collisionHeight-s-o,l=t.my[1]==="top",c=l?-t.elemHeight:t.my[1]==="bottom"?t.elemHeight:0,h=t.at[1]==="top"?t.targetHeight:t.at[1]==="bottom"?-t.targetHeight:0,p=-2*t.offset[1],d,v;a<0?(v=e.top+c+h+p+t.collisionHeight-s-r,e.top+c+h+p>a&&(v<0||v<i(a))&&(e.top+=c+h+p)):f>0&&(d=e.top-t.collisionPosition.marginTop+c+h+p-o,e.top+c+h+p>f&&(d>0||i(d)<f)&&(e.top+=c+h+p))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,n,r,i,s,o=document.getElementsByTagName("body")[0],u=document.createElement("div");t=document.createElement(o?"div":"body"),r={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},o&&e.extend(r,{position:"absolute",left:"-1000px",top:"-1000px"});for(s in r)t.style[s]=r[s];t.appendChild(u),n=o||document.documentElement,n.insertBefore(t,n.firstChild),u.style.cssText="position: absolute; left: 10.7432222px;",i=e(u).offset().left,e.support.offsetFractions=i>10&&i<11,t.innerHTML="",n.removeChild(t)}(),e.uiBackCompat!==!1&&function(e){var n=e.fn.position;e.fn.position=function(r){if(!r||!r.offset)return n.call(this,r);var i=r.offset.split(" "),s=r.at.split(" ");return i.length===1&&(i[1]=i[0]),/^\d/.test(i[0])&&(i[0]="+"+i[0]),/^\d/.test(i[1])&&(i[1]="+"+i[1]),s.length===1&&(/left|center|right/.test(s[0])?s[1]="center":(s[1]=s[0],s[0]="center")),n.call(this,e.extend(r,{at:s[0]+i[0]+" "+s[1]+i[1],offset:t}))}}(jQuery)})(jQuery);(function(e,t){e.widget("ui.sortable",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?e.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_setOption:function(t,n){t==="disabled"?(this.options[t]=n,this.widget().toggleClass("ui-sortable-disabled",!!n)):e.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(t,n){var r=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type=="static")return!1;this._refreshItems(t);var i=null,s=e(t.target).parents().each(function(){if(e.data(this,r.widgetName+"-item")==r)return i=e(this),!1});e.data(t.target,r.widgetName+"-item")==r&&(i=e(t.target));if(!i)return!1;if(this.options.handle&&!n){var o=!1;e(this.options.handle,i).find("*").andSelf().each(function(){this==t.target&&(o=!0)});if(!o)return!1}return this.currentItem=i,this._removeCurrentsFromItems(),!0},_mouseStart:function(t,n,r){var i=this.options;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),i.containment&&this._setContainment(),i.cursor&&(e("body").css("cursor")&&(this._storedCursor=e("body").css("cursor")),e("body").css("cursor",i.cursor)),i.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",i.opacity)),i.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",i.zIndex)),this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!r)for(var s=this.containers.length-1;s>=0;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var n=this.options,r=!1;this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<n.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+n.scrollSpeed:t.pageY-this.overflowOffset.top<n.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-n.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<n.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+n.scrollSpeed:t.pageX-this.overflowOffset.left<n.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-n.scrollSpeed)):(t.pageY-e(document).scrollTop()<n.scrollSensitivity?r=e(document).scrollTop(e(document).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<n.scrollSensitivity&&(r=e(document).scrollTop(e(document).scrollTop()+n.scrollSpeed)),t.pageX-e(document).scrollLeft()<n.scrollSensitivity?r=e(document).scrollLeft(e(document).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<n.scrollSensitivity&&(r=e(document).scrollLeft(e(document).scrollLeft()+n.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(var i=this.items.length-1;i>=0;i--){var s=this.items[i],o=s.item[0],u=this._intersectsWithPointer(s);if(!u)continue;if(s.instance!==this.currentContainer)continue;if(o!=this.currentItem[0]&&this.placeholder[u==1?"next":"prev"]()[0]!=o&&!e.contains(this.placeholder[0],o)&&(this.options.type=="semi-dynamic"?!e.contains(this.element[0],o):!0)){this.direction=u==1?"down":"up";if(this.options.tolerance!="pointer"&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,n){if(!t)return;e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t);if(this.options.revert){var r=this,i=this.placeholder.offset();this.reverting=!0,e(this.helper).animate({left:i.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:i.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){r._clear(t)})}else this._clear(t,n);return!1},cancel:function(){if(this.dragging){this._mouseUp({target:null}),this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},e(n).each(function(){var n=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[-=_](.+)/);n&&r.push((t.key||n[1]+"[]")+"="+(t.key&&t.expression?n[1]:n[2]))}),!r.length&&t.key&&r.push(t.key+"="),r.join("&")},toArray:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},n.each(function(){r.push(e(t.item||this).attr(t.attribute||"id")||"")}),r},_intersectsWith:function(e){var t=this.positionAbs.left,n=t+this.helperProportions.width,r=this.positionAbs.top,i=r+this.helperProportions.height,s=e.left,o=s+e.width,u=e.top,a=u+e.height,f=this.offset.click.top,l=this.offset.click.left,c=r+f>u&&r+f<a&&t+l>s&&t+l<o;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?c:s<t+this.helperProportions.width/2&&n-this.helperProportions.width/2<o&&u<r+this.helperProportions.height/2&&i-this.helperProportions.height/2<a},_intersectsWithPointer:function(t){var n=this.options.axis==="x"||e.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),r=this.options.axis==="y"||e.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),i=n&&r,s=this._getDragVerticalDirection(),o=this._getDragHorizontalDirection();return i?this.floating?o&&o=="right"||s=="down"?2:1:s&&(s=="down"?2:1):!1},_intersectsWithSides:function(t){var n=e.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),r=e.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),i=this._getDragVerticalDirection(),s=this._getDragHorizontalDirection();return this.floating&&s?s=="right"&&r||s=="left"&&!r:i&&(i=="down"&&n||i=="up"&&!n)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return e!=0&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return e!=0&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor==String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){var n=[],r=[],i=this._connectWith();if(i&&t)for(var s=i.length-1;s>=0;s--){var o=e(i[s]);for(var u=o.length-1;u>=0;u--){var a=e.data(o[u],this.widgetName);a&&a!=this&&!a.options.disabled&&r.push([e.isFunction(a.options.items)?a.options.items.call(a.element):e(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a])}}r.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var s=r.length-1;s>=0;s--)r[s][0].each(function(){n.push(this)});return e(n)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var n=0;n<t.length;n++)if(t[n]==e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var n=this.items,r=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],i=this._connectWith();if(i&&this.ready)for(var s=i.length-1;s>=0;s--){var o=e(i[s]);for(var u=o.length-1;u>=0;u--){var a=e.data(o[u],this.widgetName);a&&a!=this&&!a.options.disabled&&(r.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a))}}for(var s=r.length-1;s>=0;s--){var f=r[s][1],l=r[s][0];for(var u=0,c=l.length;u<c;u++){var h=e(l[u]);h.data(this.widgetName+"-item",f),n.push({item:h,instance:f,width:0,height:0,left:0,top:0})}}},refreshPositions:function(t){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());for(var n=this.items.length-1;n>=0;n--){var r=this.items[n];if(r.instance!=this.currentContainer&&this.currentContainer&&r.item[0]!=this.currentItem[0])continue;var i=this.options.toleranceElement?e(this.options.toleranceElement,r.item):r.item;t||(r.width=i.outerWidth(),r.height=i.outerHeight());var s=i.offset();r.left=s.left,r.top=s.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var n=this.containers.length-1;n>=0;n--){var s=this.containers[n].element.offset();this.containers[n].containerCache.left=s.left,this.containers[n].containerCache.top=s.top,this.containers[n].containerCache.width=this.containers[n].element.outerWidth(),this.containers[n].containerCache.height=this.containers[n].element.outerHeight()}return this},_createPlaceholder:function(t){t=t||this;var n=t.options;if(!n.placeholder||n.placeholder.constructor==String){var r=n.placeholder;n.placeholder={element:function(){var n=e(document.createElement(t.currentItem[0].nodeName)).addClass(r||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];return r||(n.style.visibility="hidden"),n},update:function(e,i){if(r&&!n.forcePlaceholderSize)return;i.height()||i.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),i.width()||i.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10))}}}t.placeholder=e(n.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),n.placeholder.update(t,t.placeholder)},_contactContainers:function(t){var n=null,r=null;for(var i=this.containers.length-1;i>=0;i--){if(e.contains(this.currentItem[0],this.containers[i].element[0]))continue;if(this._intersectsWith(this.containers[i].containerCache)){if(n&&e.contains(this.containers[i].element[0],n.element[0]))continue;n=this.containers[i],r=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0)}if(!n)return;if(this.containers.length===1)this.containers[r]._trigger("over",t,this._uiHash(this)),this.containers[r].containerCache.over=1;else{var s=1e4,o=null,u=this.containers[r].floating?"left":"top",a=this.containers[r].floating?"width":"height",f=this.positionAbs[u]+this.offset.click[u];for(var l=this.items.length-1;l>=0;l--){if(!e.contains(this.containers[r].element[0],this.items[l].item[0]))continue;if(this.items[l].item[0]==this.currentItem[0])continue;var c=this.items[l].item.offset()[u],h=!1;Math.abs(c-f)>Math.abs(c+this.items[l][a]-f)&&(h=!0,c+=this.items[l][a]),Math.abs(c-f)<s&&(s=Math.abs(c-f),o=this.items[l],this.direction=h?"up":"down")}if(!o&&!this.options.dropOnEmpty)return;this.currentContainer=this.containers[r],o?this._rearrange(t,o,null,!0):this._rearrange(t,null,this.containers[r].element,!0),this._trigger("change",t,this._uiHash()),this.containers[r]._trigger("change",t,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[r]._trigger("over",t,this._uiHash(this)),this.containers[r].containerCache.over=1}},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t,this.currentItem])):n.helper=="clone"?this.currentItem.clone():this.currentItem;return r.parents("body").length||e(n.appendTo!="parent"?n.appendTo:this.currentItem[0].parentNode)[0].appendChild(r[0]),r[0]==this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(r[0].style.width==""||n.forceHelperSize)&&r.width(this.currentItem.width()),(r[0].style.height==""||n.forceHelperSize)&&r.height(this.currentItem.height()),r},_adjustOffsetFromHelper:function(t){typeof t=="string"&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&e.ui.ie)t={top:0,left:0};return{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t=this.options;t.containment=="parent"&&(t.containment=this.helper[0].parentNode);if(t.containment=="document"||t.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,e(t.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(e(t.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(t.containment)){var n=e(t.containment)[0],r=e(t.containment).offset(),i=e(n).css("overflow")!="hidden";this.containment=[r.left+(parseInt(e(n).css("borderLeftWidth"),10)||0)+(parseInt(e(n).css("paddingLeft"),10)||0)-this.margins.left,r.top+(parseInt(e(n).css("borderTopWidth"),10)||0)+(parseInt(e(n).css("paddingTop"),10)||0)-this.margins.top,r.left+(i?Math.max(n.scrollWidth,n.offsetWidth):n.offsetWidth)-(parseInt(e(n).css("borderLeftWidth"),10)||0)-(parseInt(e(n).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,r.top+(i?Math.max(n.scrollHeight,n.offsetHeight):n.offsetHeight)-(parseInt(e(n).css("borderTopWidth"),10)||0)-(parseInt(e(n).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(t,n){n||(n=this.position);var r=t=="absolute"?1:-1,i=this.options,s=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(s[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():o?0:s.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():o?0:s.scrollLeft())*r}},_generatePosition:function(t){var n=this.options,r=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,i=/(html|body)/i.test(r[0].tagName);this.cssPosition=="relative"&&(this.scrollParent[0]==document||this.scrollParent[0]==this.offsetParent[0])&&(this.offset.relative=this._getRelativeOffset());var s=t.pageX,o=t.pageY;if(this.originalPosition){this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(s=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(s=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top));if(n.grid){var u=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1];o=this.containment?u-this.offset.click.top<this.containment[1]||u-this.offset.click.top>this.containment[3]?u-this.offset.click.top<this.containment[1]?u+n.grid[1]:u-n.grid[1]:u:u;var a=this.originalPageX+Math.round((s-this.originalPageX)/n.grid[0])*n.grid[0];s=this.containment?a-this.offset.click.left<this.containment[0]||a-this.offset.click.left>this.containment[2]?a-this.offset.click.left<this.containment[0]?a+n.grid[0]:a-n.grid[0]:a:a}}return{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():i?0:r.scrollTop()),left:s-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:r.scrollLeft())}},_rearrange:function(e,t,n,r){n?n[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],this.direction=="down"?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var i=this.counter;this._delay(function(){i==this.counter&&this.refreshPositions(!r)})},_clear:function(t,n){this.reverting=!1;var r=[];!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var i in this._storedCSS)if(this._storedCSS[i]=="auto"||this._storedCSS[i]=="static")this._storedCSS[i]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!n&&r.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),(this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!n&&r.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(n||(r.push(function(e){this._trigger("remove",e,this._uiHash())}),r.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),r.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer))));for(var i=this.containers.length-1;i>=0;i--)n||r.push(function(e){return function(t){e._trigger("deactivate",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over&&(r.push(function(e){return function(t){e._trigger("out",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over=0);this._storedCursor&&e("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!n){this._trigger("beforeStop",t,this._uiHash());for(var i=0;i<r.length;i++)r[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!1}n||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!=this.currentItem[0]&&this.helper.remove(),this.helper=null;if(!n){for(var i=0;i<r.length;i++)r[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var n=t||this;return{helper:n.helper,placeholder:n.placeholder||e([]),position:n.position,originalPosition:n.originalPosition,offset:n.positionAbs,item:n.currentItem,sender:t?t.element:null}}})})(jQuery);(function(e,t){var n=0;e.widget("ui.autocomplete",{version:"1.9.2",defaultElement:"<input>",options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},pending:0,_create:function(){var t,n,r;this.isMultiLine=this._isMultiLine(),this.valueMethod=this.element[this.element.is("input,textarea")?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(i){if(this.element.prop("readOnly")){t=!0,r=!0,n=!0;return}t=!1,r=!1,n=!1;var s=e.ui.keyCode;switch(i.keyCode){case s.PAGE_UP:t=!0,this._move("previousPage",i);break;case s.PAGE_DOWN:t=!0,this._move("nextPage",i);break;case s.UP:t=!0,this._keyEvent("previous",i);break;case s.DOWN:t=!0,this._keyEvent("next",i);break;case s.ENTER:case s.NUMPAD_ENTER:this.menu.active&&(t=!0,i.preventDefault(),this.menu.select(i));break;case s.TAB:this.menu.active&&this.menu.select(i);break;case s.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(i),i.preventDefault());break;default:n=!0,this._searchTimeout(i)}},keypress:function(r){if(t){t=!1,r.preventDefault();return}if(n)return;var i=e.ui.keyCode;switch(r.keyCode){case i.PAGE_UP:this._move("previousPage",r);break;case i.PAGE_DOWN:this._move("nextPage",r);break;case i.UP:this._keyEvent("previous",r);break;case i.DOWN:this._keyEvent("next",r)}},input:function(e){if(r){r=!1,e.preventDefault();return}this._searchTimeout(e)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}clearTimeout(this.searching),this.close(e),this._change(e)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete").appendTo(this.document.find(this.options.appendTo||"body")[0]).menu({input:e(),role:null}).zIndex(this.element.zIndex()+1).hide().data("menu"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var n=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(r){r.target!==t.element[0]&&r.target!==n&&!e.contains(n,r.target)&&t.close()})})},menufocus:function(t,n){if(this.isNewMenu){this.isNewMenu=!1;if(t.originalEvent&&/^mouse/.test(t.originalEvent.type)){this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)});return}}var r=n.item.data("ui-autocomplete-item")||n.item.data("item.autocomplete");!1!==this._trigger("focus",t,{item:r})?t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(r.value):this.liveRegion.text(r.value)},menuselect:function(e,t){var n=t.item.data("ui-autocomplete-item")||t.item.data("item.autocomplete"),r=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=r,this._delay(function(){this.previous=r,this.selectedItem=n})),!1!==this._trigger("select",e,{item:n})&&this._value(n.value),this.term=this._value(),this.close(e),this.selectedItem=n}}),this.liveRegion=e("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertAfter(this.element),e.fn.bgiframe&&this.menu.element.bgiframe(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),e==="source"&&this._initSource(),e==="appendTo"&&this.menu.element.appendTo(this.document.find(t||"body")[0]),e==="disabled"&&t&&this.xhr&&this.xhr.abort()},_isMultiLine:function(){return this.element.is("textarea")?!0:this.element.is("input")?!1:this.element.prop("isContentEditable")},_initSource:function(){var t,n,r=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(n,r){r(e.ui.autocomplete.filter(t,n.term))}):typeof this.options.source=="string"?(n=this.options.source,this.source=function(t,i){r.xhr&&r.xhr.abort(),r.xhr=e.ajax({url:n,data:t,dataType:"json",success:function(e){i(e)},error:function(){i([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){e=e!=null?e:this._value(),this.term=this._value();if(e.length<this.options.minLength)return this.close(t);if(this._trigger("search",t)===!1)return;return this._search(e)},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var e=this,t=++n;return function(r){t===n&&e.__response(r),e.pending--,e.pending||e.element.removeClass("ui-autocomplete-loading")}},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return typeof t=="string"?{label:t,value:t}:e.extend({label:t.label||t.value,value:t.value||t.label},t)})},_suggest:function(t){var n=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(n,t),this.menu.refresh(),n.show(),this._resizeMenu(),n.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,n){var r=this;e.each(n,function(e,n){r._renderItemData(t,n)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,n){return e("<li>").append(e("<a>").text(n.label)).appendTo(t)},_move:function(e,t){if(!this.menu.element.is(":visible")){this.search(null,t);return}if(this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)){this._value(this.term),this.menu.blur();return}this.menu[e](t)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){if(!this.isMultiLine||this.menu.element.is(":visible"))this._move(e,t),t.preventDefault()}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,n){var r=new RegExp(e.ui.autocomplete.escapeRegex(n),"i");return e.grep(t,function(e){return r.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var t;this._superApply(arguments);if(this.options.disabled||this.cancelSearch)return;e&&e.length?t=this.options.messages.results(e.length):t=this.options.messages.noResults,this.liveRegion.text(t)}})})(jQuery);(function($,undefined){function Datepicker(){this.debug=!1,this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},$.extend(this._defaults,this.regional[""]),this.dpDiv=bindHover($('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function bindHover(e){var t="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.delegate(t,"mouseout",function(){$(this).removeClass("ui-state-hover"),this.className.indexOf("ui-datepicker-prev")!=-1&&$(this).removeClass("ui-datepicker-prev-hover"),this.className.indexOf("ui-datepicker-next")!=-1&&$(this).removeClass("ui-datepicker-next-hover")}).delegate(t,"mouseover",function(){$.datepicker._isDisabledDatepicker(instActive.inline?e.parent()[0]:instActive.input[0])||($(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),$(this).addClass("ui-state-hover"),this.className.indexOf("ui-datepicker-prev")!=-1&&$(this).addClass("ui-datepicker-prev-hover"),this.className.indexOf("ui-datepicker-next")!=-1&&$(this).addClass("ui-datepicker-next-hover"))})}function extendRemove(e,t){$.extend(e,t);for(var n in t)if(t[n]==null||t[n]==undefined)e[n]=t[n];return e}$.extend($.ui,{datepicker:{version:"1.9.2"}});var PROP_NAME="datepicker",dpuuid=(new Date).getTime(),instActive;$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return extendRemove(this._defaults,e||{}),this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase(),inline=nodeName=="div"||nodeName=="span";target.id||(this.uuid+=1,target.id="dp"+this.uuid);var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{}),nodeName=="input"?this._connectDatepicker(target,inst):inline&&this._inlineDatepicker(target,inst)},_newInst:function(e,t){var n=e[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1");return{id:n,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:t,dpDiv:t?bindHover($('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')):this.dpDiv}},_connectDatepicker:function(e,t){var n=$(e);t.append=$([]),t.trigger=$([]);if(n.hasClass(this.markerClassName))return;this._attachments(n,t),n.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,n,r){t.settings[n]=r}).bind("getData.datepicker",function(e,n){return this._get(t,n)}),this._autoSize(t),$.data(e,PROP_NAME,t),t.settings.disabled&&this._disableDatepicker(e)},_attachments:function(e,t){var n=this._get(t,"appendText"),r=this._get(t,"isRTL");t.append&&t.append.remove(),n&&(t.append=$('<span class="'+this._appendClass+'">'+n+"</span>"),e[r?"before":"after"](t.append)),e.unbind("focus",this._showDatepicker),t.trigger&&t.trigger.remove();var i=this._get(t,"showOn");(i=="focus"||i=="both")&&e.focus(this._showDatepicker);if(i=="button"||i=="both"){var s=this._get(t,"buttonText"),o=this._get(t,"buttonImage");t.trigger=$(this._get(t,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:o,alt:s,title:s}):$('<button type="button"></button>').addClass(this._triggerClass).html(o==""?s:$("<img/>").attr({src:o,alt:s,title:s}))),e[r?"before":"after"](t.trigger),t.trigger.click(function(){return $.datepicker._datepickerShowing&&$.datepicker._lastInput==e[0]?$.datepicker._hideDatepicker():$.datepicker._datepickerShowing&&$.datepicker._lastInput!=e[0]?($.datepicker._hideDatepicker(),$.datepicker._showDatepicker(e[0])):$.datepicker._showDatepicker(e[0]),!1})}},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t=new Date(2009,11,20),n=this._get(e,"dateFormat");if(n.match(/[DM]/)){var r=function(e){var t=0,n=0;for(var r=0;r<e.length;r++)e[r].length>t&&(t=e[r].length,n=r);return n};t.setMonth(r(this._get(e,n.match(/MM/)?"monthNames":"monthNamesShort"))),t.setDate(r(this._get(e,n.match(/DD/)?"dayNames":"dayNamesShort"))+20-t.getDay())}e.input.attr("size",this._formatDate(e,t).length)}},_inlineDatepicker:function(e,t){var n=$(e);if(n.hasClass(this.markerClassName))return;n.addClass(this.markerClassName).append(t.dpDiv).bind("setData.datepicker",function(e,n,r){t.settings[n]=r}).bind("getData.datepicker",function(e,n){return this._get(t,n)}),$.data(e,PROP_NAME,t),this._setDate(t,this._getDefaultDate(t),!0),this._updateDatepicker(t),this._updateAlternate(t),t.settings.disabled&&this._disableDatepicker(e),t.dpDiv.css("display","block")},_dialogDatepicker:function(e,t,n,r,i){var s=this._dialogInst;if(!s){this.uuid+=1;var o="dp"+this.uuid;this._dialogInput=$('<input type="text" id="'+o+'" style="position: absolute; top: -100px; width: 0px;"/>'),this._dialogInput.keydown(this._doKeyDown),$("body").append(this._dialogInput),s=this._dialogInst=this._newInst(this._dialogInput,!1),s.settings={},$.data(this._dialogInput[0],PROP_NAME,s)}extendRemove(s.settings,r||{}),t=t&&t.constructor==Date?this._formatDate(s,t):t,this._dialogInput.val(t),this._pos=i?i.length?i:[i.pageX,i.pageY]:null;if(!this._pos){var u=document.documentElement.clientWidth,a=document.documentElement.clientHeight,f=document.documentElement.scrollLeft||document.body.scrollLeft,l=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[u/2-100+f,a/2-150+l]}return this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),s.settings.onSelect=n,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),$.blockUI&&$.blockUI(this.dpDiv),$.data(this._dialogInput[0],PROP_NAME,s),this},_destroyDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();$.removeData(e,PROP_NAME),r=="input"?(n.append.remove(),n.trigger.remove(),t.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):(r=="div"||r=="span")&&t.removeClass(this.markerClassName).empty()},_enableDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();if(r=="input")e.disabled=!1,n.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if(r=="div"||r=="span"){var i=t.children("."+this._inlineClass);i.children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)}this._disabledInputs=$.map(this._disabledInputs,function(t){return t==e?null:t})},_disableDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();if(r=="input")e.disabled=!0,n.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if(r=="div"||r=="span"){var i=t.children("."+this._inlineClass);i.children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)}this._disabledInputs=$.map(this._disabledInputs,function(t){return t==e?null:t}),this._disabledInputs[this._disabledInputs.length]=e},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;t<this._disabledInputs.length;t++)if(this._disabledInputs[t]==e)return!0;return!1},_getInst:function(e){try{return $.data(e,PROP_NAME)}catch(t){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,t,n){var r=this._getInst(e);if(arguments.length==2&&typeof t=="string")return t=="defaults"?$.extend({},$.datepicker._defaults):r?t=="all"?$.extend({},r.settings):this._get(r,t):null;var i=t||{};typeof t=="string"&&(i={},i[t]=n);if(r){this._curInst==r&&this._hideDatepicker();var s=this._getDateDatepicker(e,!0),o=this._getMinMaxDate(r,"min"),u=this._getMinMaxDate(r,"max");extendRemove(r.settings,i),o!==null&&i.dateFormat!==undefined&&i.minDate===undefined&&(r.settings.minDate=this._formatDate(r,o)),u!==null&&i.dateFormat!==undefined&&i.maxDate===undefined&&(r.settings.maxDate=this._formatDate(r,u)),this._attachments($(e),r),this._autoSize(r),this._setDate(r,s),this._updateAlternate(r),this._updateDatepicker(r)}},_changeDatepicker:function(e,t,n){this._optionDatepicker(e,t,n)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var n=this._getInst(e);n&&(this._setDate(n,t),this._updateDatepicker(n),this._updateAlternate(n))},_getDateDatepicker:function(e,t){var n=this._getInst(e);return n&&!n.inline&&this._setDateFromField(n,t),n?this._getDate(n):null},_doKeyDown:function(e){var t=$.datepicker._getInst(e.target),n=!0,r=t.dpDiv.is(".ui-datepicker-rtl");t._keyEvent=!0;if($.datepicker._datepickerShowing)switch(e.keyCode){case 9:$.datepicker._hideDatepicker(),n=!1;break;case 13:var i=$("td."+$.datepicker._dayOverClass+":not(."+$.datepicker._currentClass+")",t.dpDiv);i[0]&&$.datepicker._selectDay(e.target,t.selectedMonth,t.selectedYear,i[0]);var s=$.datepicker._get(t,"onSelect");if(s){var o=$.datepicker._formatDate(t);s.apply(t.input?t.input[0]:null,[o,t])}else $.datepicker._hideDatepicker();return!1;case 27:$.datepicker._hideDatepicker();break;case 33:$.datepicker._adjustDate(e.target,e.ctrlKey?-$.datepicker._get(t,"stepBigMonths"):-$.datepicker._get(t,"stepMonths"),"M");break;case 34:$.datepicker._adjustDate(e.target,e.ctrlKey?+$.datepicker._get(t,"stepBigMonths"):+$.datepicker._get(t,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&$.datepicker._clearDate(e.target),n=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&$.datepicker._gotoToday(e.target),n=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,r?1:-1,"D"),n=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&$.datepicker._adjustDate(e.target,e.ctrlKey?-$.datepicker._get(t,"stepBigMonths"):-$.datepicker._get(t,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,-7,"D"),n=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,r?-1:1,"D"),n=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&$.datepicker._adjustDate(e.target,e.ctrlKey?+$.datepicker._get(t,"stepBigMonths"):+$.datepicker._get(t,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,7,"D"),n=e.ctrlKey||e.metaKey;break;default:n=!1}else e.keyCode==36&&e.ctrlKey?$.datepicker._showDatepicker(this):n=!1;n&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var t=$.datepicker._getInst(e.target);if($.datepicker._get(t,"constrainInput")){var n=$.datepicker._possibleChars($.datepicker._get(t,"dateFormat")),r=String.fromCharCode(e.charCode==undefined?e.keyCode:e.charCode);return e.ctrlKey||e.metaKey||r<" "||!n||n.indexOf(r)>-1}},_doKeyUp:function(e){var t=$.datepicker._getInst(e.target);if(t.input.val()!=t.lastVal)try{var n=$.datepicker.parseDate($.datepicker._get(t,"dateFormat"),t.input?t.input.val():null,$.datepicker._getFormatConfig(t));n&&($.datepicker._setDateFromField(t),$.datepicker._updateAlternate(t),$.datepicker._updateDatepicker(t))}catch(r){$.datepicker.log(r)}return!0},_showDatepicker:function(e){e=e.target||e,e.nodeName.toLowerCase()!="input"&&(e=$("input",e.parentNode)[0]);if($.datepicker._isDisabledDatepicker(e)||$.datepicker._lastInput==e)return;var t=$.datepicker._getInst(e);$.datepicker._curInst&&$.datepicker._curInst!=t&&($.datepicker._curInst.dpDiv.stop(!0,!0),t&&$.datepicker._datepickerShowing&&$.datepicker._hideDatepicker($.datepicker._curInst.input[0]));var n=$.datepicker._get(t,"beforeShow"),r=n?n.apply(e,[e,t]):{};if(r===!1)return;extendRemove(t.settings,r),t.lastVal=null,$.datepicker._lastInput=e,$.datepicker._setDateFromField(t),$.datepicker._inDialog&&(e.value=""),$.datepicker._pos||($.datepicker._pos=$.datepicker._findPos(e),$.datepicker._pos[1]+=e.offsetHeight);var i=!1;$(e).parents().each(function(){return i|=$(this).css("position")=="fixed",!i});var s={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null,t.dpDiv.empty(),t.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),$.datepicker._updateDatepicker(t),s=$.datepicker._checkOffset(t,s,i),t.dpDiv.css({position:$.datepicker._inDialog&&$.blockUI?"static":i?"fixed":"absolute",display:"none",left:s.left+"px",top:s.top+"px"});if(!t.inline){var o=$.datepicker._get(t,"showAnim"),u=$.datepicker._get(t,"duration"),a=function(){var e=t.dpDiv.find("iframe.ui-datepicker-cover");if(!!e.length){var n=$.datepicker._getBorders(t.dpDiv);e.css({left:-n[0],top:-n[1],width:t.dpDiv.outerWidth(),height:t.dpDiv.outerHeight()})}};t.dpDiv.zIndex($(e).zIndex()+1),$.datepicker._datepickerShowing=!0,$.effects&&($.effects.effect[o]||$.effects[o])?t.dpDiv.show(o,$.datepicker._get(t,"showOptions"),u,a):t.dpDiv[o||"show"](o?u:null,a),(!o||!u)&&a(),t.input.is(":visible")&&!t.input.is(":disabled")&&t.input.focus(),$.datepicker._curInst=t}},_updateDatepicker:function(e){this.maxRows=4;var t=$.datepicker._getBorders(e.dpDiv);instActive=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var n=e.dpDiv.find("iframe.ui-datepicker-cover");!n.length||n.css({left:-t[0],top:-t[1],width:e.dpDiv.outerWidth(),height:e.dpDiv.outerHeight()}),e.dpDiv.find("."+this._dayOverClass+" a").mouseover();var r=this._getNumberOfMonths(e),i=r[1],s=17;e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),i>1&&e.dpDiv.addClass("ui-datepicker-multi-"+i).css("width",s*i+"em"),e.dpDiv[(r[0]!=1||r[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e==$.datepicker._curInst&&$.datepicker._datepickerShowing&&e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&e.input[0]!=document.activeElement&&e.input.focus();if(e.yearshtml){var o=e.yearshtml;setTimeout(function(){o===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),o=e.yearshtml=null},0)}},_getBorders:function(e){var t=function(e){return{thin:1,medium:2,thick:3}[e]||e};return[parseFloat(t(e.css("border-left-width"))),parseFloat(t(e.css("border-top-width")))]},_checkOffset:function(e,t,n){var r=e.dpDiv.outerWidth(),i=e.dpDiv.outerHeight(),s=e.input?e.input.outerWidth():0,o=e.input?e.input.outerHeight():0,u=document.documentElement.clientWidth+(n?0:$(document).scrollLeft()),a=document.documentElement.clientHeight+(n?0:$(document).scrollTop());return t.left-=this._get(e,"isRTL")?r-s:0,t.left-=n&&t.left==e.input.offset().left?$(document).scrollLeft():0,t.top-=n&&t.top==e.input.offset().top+o?$(document).scrollTop():0,t.left-=Math.min(t.left,t.left+r>u&&u>r?Math.abs(t.left+r-u):0),t.top-=Math.min(t.top,t.top+i>a&&a>i?Math.abs(i+o):0),t},_findPos:function(e){var t=this._getInst(e),n=this._get(t,"isRTL");while(e&&(e.type=="hidden"||e.nodeType!=1||$.expr.filters.hidden(e)))e=e[n?"previousSibling":"nextSibling"];var r=$(e).offset();return[r.left,r.top]},_hideDatepicker:function(e){var t=this._curInst;if(!t||e&&t!=$.data(e,PROP_NAME))return;if(this._datepickerShowing){var n=this._get(t,"showAnim"),r=this._get(t,"duration"),i=function(){$.datepicker._tidyDialog(t)};$.effects&&($.effects.effect[n]||$.effects[n])?t.dpDiv.hide(n,$.datepicker._get(t,"showOptions"),r,i):t.dpDiv[n=="slideDown"?"slideUp":n=="fadeIn"?"fadeOut":"hide"](n?r:null,i),n||i(),this._datepickerShowing=!1;var s=this._get(t,"onClose");s&&s.apply(t.input?t.input[0]:null,[t.input?t.input.val():"",t]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),$.blockUI&&($.unblockUI(),$("body").append(this.dpDiv))),this._inDialog=!1}},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(!$.datepicker._curInst)return;var t=$(e.target),n=$.datepicker._getInst(t[0]);(t[0].id!=$.datepicker._mainDivId&&t.parents("#"+$.datepicker._mainDivId).length==0&&!t.hasClass($.datepicker.markerClassName)&&!t.closest("."+$.datepicker._triggerClass).length&&$.datepicker._datepickerShowing&&(!$.datepicker._inDialog||!$.blockUI)||t.hasClass($.datepicker.markerClassName)&&$.datepicker._curInst!=n)&&$.datepicker._hideDatepicker()},_adjustDate:function(e,t,n){var r=$(e),i=this._getInst(r[0]);if(this._isDisabledDatepicker(r[0]))return;this._adjustInstDate(i,t+(n=="M"?this._get(i,"showCurrentAtPos"):0),n),this._updateDatepicker(i)},_gotoToday:function(e){var t=$(e),n=this._getInst(t[0]);if(this._get(n,"gotoCurrent")&&n.currentDay)n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear;else{var r=new Date;n.selectedDay=r.getDate(),n.drawMonth=n.selectedMonth=r.getMonth(),n.drawYear=n.selectedYear=r.getFullYear()}this._notifyChange(n),this._adjustDate(t)},_selectMonthYear:function(e,t,n){var r=$(e),i=this._getInst(r[0]);i["selected"+(n=="M"?"Month":"Year")]=i["draw"+(n=="M"?"Month":"Year")]=parseInt(t.options[t.selectedIndex].value,10),this._notifyChange(i),this._adjustDate(r)},_selectDay:function(e,t,n,r){var i=$(e);if($(r).hasClass(this._unselectableClass)||this._isDisabledDatepicker(i[0]))return;var s=this._getInst(i[0]);s.selectedDay=s.currentDay=$("a",r).html(),s.selectedMonth=s.currentMonth=t,s.selectedYear=s.currentYear=n,this._selectDate(e,this._formatDate(s,s.currentDay,s.currentMonth,s.currentYear))},_clearDate:function(e){var t=$(e),n=this._getInst(t[0]);this._selectDate(t,"")},_selectDate:function(e,t){var n=$(e),r=this._getInst(n[0]);t=t!=null?t:this._formatDate(r),r.input&&r.input.val(t),this._updateAlternate(r);var i=this._get(r,"onSelect");i?i.apply(r.input?r.input[0]:null,[t,r]):r.input&&r.input.trigger("change"),r.inline?this._updateDatepicker(r):(this._hideDatepicker(),this._lastInput=r.input[0],typeof r.input[0]!="object"&&r.input.focus(),this._lastInput=null)},_updateAlternate:function(e){var t=this._get(e,"altField");if(t){var n=this._get(e,"altFormat")||this._get(e,"dateFormat"),r=this._getDate(e),i=this.formatDate(n,r,this._getFormatConfig(e));$(t).each(function(){$(this).val(i)})}},noWeekends:function(e){var t=e.getDay();return[t>0&&t<6,""]},iso8601Week:function(e){var t=new Date(e.getTime());t.setDate(t.getDate()+4-(t.getDay()||7));var n=t.getTime();return t.setMonth(0),t.setDate(1),Math.floor(Math.round((n-t)/864e5)/7)+1},parseDate:function(e,t,n){if(e==null||t==null)throw"Invalid arguments";t=typeof t=="object"?t.toString():t+"";if(t=="")return null;var r=(n?n.shortYearCutoff:null)||this._defaults.shortYearCutoff;r=typeof r!="string"?r:(new Date).getFullYear()%100+parseInt(r,10);var i=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,s=(n?n.dayNames:null)||this._defaults.dayNames,o=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,u=(n?n.monthNames:null)||this._defaults.monthNames,a=-1,f=-1,l=-1,c=-1,h=!1,p=function(t){var n=y+1<e.length&&e.charAt(y+1)==t;return n&&y++,n},d=function(e){var n=p(e),r=e=="@"?14:e=="!"?20:e=="y"&&n?4:e=="o"?3:2,i=new RegExp("^\\d{1,"+r+"}"),s=t.substring(g).match(i);if(!s)throw"Missing number at position "+g;return g+=s[0].length,parseInt(s[0],10)},v=function(e,n,r){var i=$.map(p(e)?r:n,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)}),s=-1;$.each(i,function(e,n){var r=n[1];if(t.substr(g,r.length).toLowerCase()==r.toLowerCase())return s=n[0],g+=r.length,!1});if(s!=-1)return s+1;throw"Unknown name at position "+g},m=function(){if(t.charAt(g)!=e.charAt(y))throw"Unexpected literal at position "+g;g++},g=0;for(var y=0;y<e.length;y++)if(h)e.charAt(y)=="'"&&!p("'")?h=!1:m();else switch(e.charAt(y)){case"d":l=d("d");break;case"D":v("D",i,s);break;case"o":c=d("o");break;case"m":f=d("m");break;case"M":f=v("M",o,u);break;case"y":a=d("y");break;case"@":var b=new Date(d("@"));a=b.getFullYear(),f=b.getMonth()+1,l=b.getDate();break;case"!":var b=new Date((d("!")-this._ticksTo1970)/1e4);a=b.getFullYear(),f=b.getMonth()+1,l=b.getDate();break;case"'":p("'")?m():h=!0;break;default:m()}if(g<t.length){var w=t.substr(g);if(!/^\s+/.test(w))throw"Extra/unparsed characters found in date: "+w}a==-1?a=(new Date).getFullYear():a<100&&(a+=(new Date).getFullYear()-(new Date).getFullYear()%100+(a<=r?0:-100));if(c>-1){f=1,l=c;do{var E=this._getDaysInMonth(a,f-1);if(l<=E)break;f++,l-=E}while(!0)}var b=this._daylightSavingAdjust(new Date(a,f-1,l));if(b.getFullYear()!=a||b.getMonth()+1!=f||b.getDate()!=l)throw"Invalid date";return b},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1e7,formatDate:function(e,t,n){if(!t)return"";var r=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,i=(n?n.dayNames:null)||this._defaults.dayNames,s=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,o=(n?n.monthNames:null)||this._defaults.monthNames,u=function(t){var n=h+1<e.length&&e.charAt(h+1)==t;return n&&h++,n},a=function(e,t,n){var r=""+t;if(u(e))while(r.length<n)r="0"+r;return r},f=function(e,t,n,r){return u(e)?r[t]:n[t]},l="",c=!1;if(t)for(var h=0;h<e.length;h++)if(c)e.charAt(h)=="'"&&!u("'")?c=!1:l+=e.charAt(h);else switch(e.charAt(h)){case"d":l+=a("d",t.getDate(),2);break;case"D":l+=f("D",t.getDay(),r,i);break;case"o":l+=a("o",Math.round(((new Date(t.getFullYear(),t.getMonth(),t.getDate())).getTime()-(new Date(t.getFullYear(),0,0)).getTime())/864e5),3);break;case"m":l+=a("m",t.getMonth()+1,2);break;case"M":l+=f("M",t.getMonth(),s,o);break;case"y":l+=u("y")?t.getFullYear():(t.getYear()%100<10?"0":"")+t.getYear()%100;break;case"@":l+=t.getTime();break;case"!":l+=t.getTime()*1e4+this._ticksTo1970;break;case"'":u("'")?l+="'":c=!0;break;default:l+=e.charAt(h)}return l},_possibleChars:function(e){var t="",n=!1,r=function(t){var n=i+1<e.length&&e.charAt(i+1)==t;return n&&i++,n};for(var i=0;i<e.length;i++)if(n)e.charAt(i)=="'"&&!r("'")?n=!1:t+=e.charAt(i);else switch(e.charAt(i)){case"d":case"m":case"y":case"@":t+="0123456789";break;case"D":case"M":return null;case"'":r("'")?t+="'":n=!0;break;default:t+=e.charAt(i)}return t},_get:function(e,t){return e.settings[t]!==undefined?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()==e.lastVal)return;var n=this._get(e,"dateFormat"),r=e.lastVal=e.input?e.input.val():null,i,s;i=s=this._getDefaultDate(e);var o=this._getFormatConfig(e);try{i=this.parseDate(n,r,o)||s}catch(u){this.log(u),r=t?"":r}e.selectedDay=i.getDate(),e.drawMonth=e.selectedMonth=i.getMonth(),e.drawYear=e.selectedYear=i.getFullYear(),e.currentDay=r?i.getDate():0,e.currentMonth=r?i.getMonth():0,e.currentYear=r?i.getFullYear():0,this._adjustInstDate(e)},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(e,t,n){var r=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},i=function(t){try{return $.datepicker.parseDate($.datepicker._get(e,"dateFormat"),t,$.datepicker._getFormatConfig(e))}catch(n){}var r=(t.toLowerCase().match(/^c/)?$.datepicker._getDate(e):null)||new Date,i=r.getFullYear(),s=r.getMonth(),o=r.getDate(),u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,a=u.exec(t);while(a){switch(a[2]||"d"){case"d":case"D":o+=parseInt(a[1],10);break;case"w":case"W":o+=parseInt(a[1],10)*7;break;case"m":case"M":s+=parseInt(a[1],10),o=Math.min(o,$.datepicker._getDaysInMonth(i,s));break;case"y":case"Y":i+=parseInt(a[1],10),o=Math.min(o,$.datepicker._getDaysInMonth(i,s))}a=u.exec(t)}return new Date(i,s,o)},s=t==null||t===""?n:typeof t=="string"?i(t):typeof t=="number"?isNaN(t)?n:r(t):new Date(t.getTime());return s=s&&s.toString()=="Invalid Date"?n:s,s&&(s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)),this._daylightSavingAdjust(s)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,n){var r=!t,i=e.selectedMonth,s=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),(i!=e.selectedMonth||s!=e.selectedYear)&&!n&&this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(r?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&e.input.val()==""?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(e){var t=this._get(e,"stepMonths"),n="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){window["DP_jQuery_"+dpuuid].datepicker._adjustDate(n,-t,"M")},next:function(){window["DP_jQuery_"+dpuuid].datepicker._adjustDate(n,+t,"M")},hide:function(){window["DP_jQuery_"+dpuuid].datepicker._hideDatepicker()},today:function(){window["DP_jQuery_"+dpuuid].datepicker._gotoToday(n)},selectDay:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectDay(n,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectMonthYear(n,this,"M"),!1},selectYear:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectMonthYear(n,this,"Y"),!1}};$(this).bind(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t=new Date;t=this._daylightSavingAdjust(new Date(t.getFullYear(),t.getMonth(),t.getDate()));var n=this._get(e,"isRTL"),r=this._get(e,"showButtonPanel"),i=this._get(e,"hideIfNoPrevNext"),s=this._get(e,"navigationAsDateFormat"),o=this._getNumberOfMonths(e),u=this._get(e,"showCurrentAtPos"),a=this._get(e,"stepMonths"),f=o[0]!=1||o[1]!=1,l=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),c=this._getMinMaxDate(e,"min"),h=this._getMinMaxDate(e,"max"),p=e.drawMonth-u,d=e.drawYear;p<0&&(p+=12,d--);if(h){var v=this._daylightSavingAdjust(new Date(h.getFullYear(),h.getMonth()-o[0]*o[1]+1,h.getDate()));v=c&&v<c?c:v;while(this._daylightSavingAdjust(new Date(d,p,1))>v)p--,p<0&&(p=11,d--)}e.drawMonth=p,e.drawYear=d;var m=this._get(e,"prevText");m=s?this.formatDate(m,this._daylightSavingAdjust(new Date(d,p-a,1)),this._getFormatConfig(e)):m;var g=this._canAdjustMonth(e,-1,d,p)?'<a class="ui-datepicker-prev ui-corner-all" data-handler="prev" data-event="click" title="'+m+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"e":"w")+'">'+m+"</span></a>":i?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+m+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"e":"w")+'">'+m+"</span></a>",y=this._get(e,"nextText");y=s?this.formatDate(y,this._daylightSavingAdjust(new Date(d,p+a,1)),this._getFormatConfig(e)):y;var b=this._canAdjustMonth(e,1,d,p)?'<a class="ui-datepicker-next ui-corner-all" data-handler="next" data-event="click" title="'+y+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"w":"e")+'">'+y+"</span></a>":i?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+y+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"w":"e")+'">'+y+"</span></a>",w=this._get(e,"currentText"),E=this._get(e,"gotoCurrent")&&e.currentDay?l:t;w=s?this.formatDate(w,E,this._getFormatConfig(e)):w;var S=e.inline?"":'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" data-handler="hide" data-event="click">'+this._get(e,"closeText")+"</button>",x=r?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(n?S:"")+(this._isInRange(e,E)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" data-handler="today" data-event="click">'+w+"</button>":"")+(n?"":S)+"</div>":"",T=parseInt(this._get(e,"firstDay"),10);T=isNaN(T)?0:T;var N=this._get(e,"showWeek"),C=this._get(e,"dayNames"),k=this._get(e,"dayNamesShort"),L=this._get(e,"dayNamesMin"),A=this._get(e,"monthNames"),O=this._get(e,"monthNamesShort"),M=this._get(e,"beforeShowDay"),_=this._get(e,"showOtherMonths"),D=this._get(e,"selectOtherMonths"),P=this._get(e,"calculateWeek")||this.iso8601Week,H=this._getDefaultDate(e),B="";for(var j=0;j<o[0];j++){var F="";this.maxRows=4;for(var I=0;I<o[1];I++){var q=this._daylightSavingAdjust(new Date(d,p,e.selectedDay)),R=" ui-corner-all",U="";if(f){U+='<div class="ui-datepicker-group';if(o[1]>1)switch(I){case 0:U+=" ui-datepicker-group-first",R=" ui-corner-"+(n?"right":"left");break;case o[1]-1:U+=" ui-datepicker-group-last",R=" ui-corner-"+(n?"left":"right");break;default:U+=" ui-datepicker-group-middle",R=""}U+='">'}U+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+R+'">'+(/all|left/.test(R)&&j==0?n?b:g:"")+(/all|right/.test(R)&&j==0?n?g:b:"")+this._generateMonthYearHeader(e,p,d,c,h,j>0||I>0,A,O)+'</div><table class="ui-datepicker-calendar"><thead>'+"<tr>";var z=N?'<th class="ui-datepicker-week-col">'+this._get(e,"weekHeader")+"</th>":"";for(var W=0;W<7;W++){var X=(W+T)%7;z+="<th"+((W+T+6)%7>=5?' class="ui-datepicker-week-end"':"")+">"+'<span title="'+C[X]+'">'+L[X]+"</span></th>"}U+=z+"</tr></thead><tbody>";var V=this._getDaysInMonth(d,p);d==e.selectedYear&&p==e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,V));var J=(this._getFirstDayOfMonth(d,p)-T+7)%7,K=Math.ceil((J+V)/7),Q=f?this.maxRows>K?this.maxRows:K:K;this.maxRows=Q;var G=this._daylightSavingAdjust(new Date(d,p,1-J));for(var Y=0;Y<Q;Y++){U+="<tr>";var Z=N?'<td class="ui-datepicker-week-col">'+this._get(e,"calculateWeek")(G)+"</td>":"";for(var W=0;W<7;W++){var et=M?M.apply(e.input?e.input[0]:null,[G]):[!0,""],tt=G.getMonth()!=p,nt=tt&&!D||!et[0]||c&&G<c||h&&G>h;Z+='<td class="'+((W+T+6)%7>=5?" ui-datepicker-week-end":"")+(tt?" ui-datepicker-other-month":"")+(G.getTime()==q.getTime()&&p==e.selectedMonth&&e._keyEvent||H.getTime()==G.getTime()&&H.getTime()==q.getTime()?" "+this._dayOverClass:"")+(nt?" "+this._unselectableClass+" ui-state-disabled":"")+(tt&&!_?"":" "+et[1]+(G.getTime()==l.getTime()?" "+this._currentClass:"")+(G.getTime()==t.getTime()?" ui-datepicker-today":""))+'"'+((!tt||_)&&et[2]?' title="'+et[2]+'"':"")+(nt?"":' data-handler="selectDay" data-event="click" data-month="'+G.getMonth()+'" data-year="'+G.getFullYear()+'"')+">"+(tt&&!_?"&#xa0;":nt?'<span class="ui-state-default">'+G.getDate()+"</span>":'<a class="ui-state-default'+(G.getTime()==t.getTime()?" ui-state-highlight":"")+(G.getTime()==l.getTime()?" ui-state-active":"")+(tt?" ui-priority-secondary":"")+'" href="#">'+G.getDate()+"</a>")+"</td>",G.setDate(G.getDate()+1),G=this._daylightSavingAdjust(G)}U+=Z+"</tr>"}p++,p>11&&(p=0,d++),U+="</tbody></table>"+(f?"</div>"+(o[0]>0&&I==o[1]-1?'<div class="ui-datepicker-row-break"></div>':""):""),F+=U}B+=F}return B+=x+($.ui.ie6&&!e.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':""),e._keyEvent=!1,B},_generateMonthYearHeader:function(e,t,n,r,i,s,o,u){var a=this._get(e,"changeMonth"),f=this._get(e,"changeYear"),l=this._get(e,"showMonthAfterYear"),c='<div class="ui-datepicker-title">',h="";if(s||!a)h+='<span class="ui-datepicker-month">'+o[t]+"</span>";else{var p=r&&r.getFullYear()==n,d=i&&i.getFullYear()==n;h+='<select class="ui-datepicker-month" data-handler="selectMonth" data-event="change">';for(var v=0;v<12;v++)(!p||v>=r.getMonth())&&(!d||v<=i.getMonth())&&(h+='<option value="'+v+'"'+(v==t?' selected="selected"':"")+">"+u[v]+"</option>");h+="</select>"}l||(c+=h+(s||!a||!f?"&#xa0;":""));if(!e.yearshtml){e.yearshtml="";if(s||!f)c+='<span class="ui-datepicker-year">'+n+"</span>";else{var m=this._get(e,"yearRange").split(":"),g=(new Date).getFullYear(),y=function(e){var t=e.match(/c[+-].*/)?n+parseInt(e.substring(1),10):e.match(/[+-].*/)?g+parseInt(e,10):parseInt(e,10);return isNaN(t)?g:t},b=y(m[0]),w=Math.max(b,y(m[1]||""));b=r?Math.max(b,r.getFullYear()):b,w=i?Math.min(w,i.getFullYear()):w,e.yearshtml+='<select class="ui-datepicker-year" data-handler="selectYear" data-event="change">';for(;b<=w;b++)e.yearshtml+='<option value="'+b+'"'+(b==n?' selected="selected"':"")+">"+b+"</option>";e.yearshtml+="</select>",c+=e.yearshtml,e.yearshtml=null}}return c+=this._get(e,"yearSuffix"),l&&(c+=(s||!a||!f?"&#xa0;":"")+h),c+="</div>",c},_adjustInstDate:function(e,t,n){var r=e.drawYear+(n=="Y"?t:0),i=e.drawMonth+(n=="M"?t:0),s=Math.min(e.selectedDay,this._getDaysInMonth(r,i))+(n=="D"?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(r,i,s)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),(n=="M"||n=="Y")&&this._notifyChange(e)},_restrictMinMax:function(e,t){var n=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max"),i=n&&t<n?n:t;return i=r&&i>r?r:i,i},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return t==null?[1,1]:typeof t=="number"?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return(new Date(e,t,1)).getDay()},_canAdjustMonth:function(e,t,n,r){var i=this._getNumberOfMonths(e),s=this._daylightSavingAdjust(new Date(n,r+(t<0?t:i[0]*i[1]),1));return t<0&&s.setDate(this._getDaysInMonth(s.getFullYear(),s.getMonth())),this._isInRange(e,s)},_isInRange:function(e,t){var n=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max");return(!n||t.getTime()>=n.getTime())&&(!r||t.getTime()<=r.getTime())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t=typeof t!="string"?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,n,r){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var i=t?typeof t=="object"?t:this._daylightSavingAdjust(new Date(r,n,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),i,this._getFormatConfig(e))}}),$.fn.datepicker=function(e){if(!this.length)return this;$.datepicker.initialized||($(document).mousedown($.datepicker._checkExternalClick).find(document.body).append($.datepicker.dpDiv),$.datepicker.initialized=!0);var t=Array.prototype.slice.call(arguments,1);return typeof e!="string"||e!="isDisabled"&&e!="getDate"&&e!="widget"?e=="option"&&arguments.length==2&&typeof arguments[1]=="string"?$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this[0]].concat(t)):this.each(function(){typeof e=="string"?$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this].concat(t)):$.datepicker._attachDatepicker(this,e)}):$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this[0]].concat(t))},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="1.9.2",window["DP_jQuery_"+dpuuid]=$})(jQuery);(function(e,t){var n=!1;e.widget("ui.menu",{version:"1.9.2",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,e.proxy(function(e){this.options.disabled&&e.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(e){e.preventDefault()},"click .ui-state-disabled > a":function(e){e.preventDefault()},"click .ui-menu-item:has(a)":function(t){var r=e(t.target).closest(".ui-menu-item");!n&&r.not(".ui-state-disabled").length&&(n=!0,this.select(t),r.has(".ui-menu").length?this.expand(t):this.element.is(":focus")||(this.element.trigger("focus",[!0]),this.active&&this.active.parents(".ui-menu").length===1&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){var n=e(t.currentTarget);n.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(t,n)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var n=this.active||this.element.children(".ui-menu-item").eq(0);t||this.focus(e,n)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){e(t.target).closest(".ui-menu").length||this.collapseAll(t),n=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").andSelf().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){function a(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var n,r,i,s,o,u=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:u=!1,r=this.previousFilter||"",i=String.fromCharCode(t.keyCode),s=!1,clearTimeout(this.filterTimer),i===r?s=!0:i=r+i,o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())}),n=s&&n.index(this.active.next())!==-1?this.active.nextAll(".ui-menu-item"):n,n.length||(i=String.fromCharCode(t.keyCode),o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())})),n.length?(this.focus(t,n),n.length>1?(this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}u&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(e):this.select(e))},refresh:function(){var t,n=this.options.icons.submenu,r=this.element.find(this.options.menus);r.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),r=t.prev("a"),i=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);r.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",r.attr("id"))}),t=r.add(this.element),t.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),t.children(":not(.ui-menu-item)").each(function(){var t=e(this);/[^\-—–\s]/.test(t.text())||t.addClass("ui-widget-content ui-menu-divider")}),t.children(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},focus:function(e,t){var n,r;this.blur(e,e&&e.type==="focus"),this._scrollIntoView(t),this.active=t.first(),r=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",r.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),e&&e.type==="keydown"?this._close():this.timer=this._delay(function(){this._close()},this.delay),n=t.children(".ui-menu"),n.length&&/^mouse/.test(e.type)&&this._startOpening(n),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var n,r,i,s,o,u;this._hasScroll()&&(n=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,r=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,i=t.offset().top-this.activeMenu.offset().top-n-r,s=this.activeMenu.scrollTop(),o=this.activeMenu.height(),u=t.height(),i<0?this.activeMenu.scrollTop(s+i):i+u>o&&this.activeMenu.scrollTop(s+i-o+u))},blur:function(e,t){t||clearTimeout(this.timer);if(!this.active)return;this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active})},_startOpening:function(e){clearTimeout(this.timer);if(e.attr("aria-hidden")!=="true")return;this.timer=this._delay(function(){this._close(),this._open(e)},this.delay)},_open:function(t){var n=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(n)},collapseAll:function(t,n){clearTimeout(this.timer),this.timer=this._delay(function(){var r=n?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));r.length||(r=this.element),this._close(r),this.blur(t),this.activeMenu=r},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,n){var r;this.active&&(e==="first"||e==="last"?r=this.active[e==="first"?"prevAll":"nextAll"](".ui-menu-item").eq(-1):r=this.active[e+"All"](".ui-menu-item").eq(0));if(!r||!r.length||!this.active)r=this.activeMenu.children(".ui-menu-item")[t]();this.focus(n,r)},nextPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isLastItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r-i<0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())},previousPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isFirstItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r+i>0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item").first())},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var n={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,n)}})})(jQuery);(function(e,t){var n=5;e.widget("ui.slider",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var t,r,i=this.options,s=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),o="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",u=[];this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"+(i.disabled?" ui-slider-disabled ui-disabled":"")),this.range=e([]),i.range&&(i.range===!0&&(i.values||(i.values=[this._valueMin(),this._valueMin()]),i.values.length&&i.values.length!==2&&(i.values=[i.values[0],i.values[0]])),this.range=e("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(i.range==="min"||i.range==="max"?" ui-slider-range-"+i.range:""))),r=i.values&&i.values.length||1;for(t=s.length;t<r;t++)u.push(o);this.handles=s.add(e(u.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.add(this.range).filter("a").click(function(e){e.preventDefault()}).mouseenter(function(){i.disabled||e(this).addClass("ui-state-hover")}).mouseleave(function(){e(this).removeClass("ui-state-hover")}).focus(function(){i.disabled?e(this).blur():(e(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),e(this).addClass("ui-state-focus"))}).blur(function(){e(this).removeClass("ui-state-focus")}),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)}),this._on(this.handles,{keydown:function(t){var r,i,s,o,u=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:t.preventDefault();if(!this._keySliding){this._keySliding=!0,e(t.target).addClass("ui-state-active"),r=this._start(t,u);if(r===!1)return}}o=this.options.step,this.options.values&&this.options.values.length?i=s=this.values(u):i=s=this.value();switch(t.keyCode){case e.ui.keyCode.HOME:s=this._valueMin();break;case e.ui.keyCode.END:s=this._valueMax();break;case e.ui.keyCode.PAGE_UP:s=this._trimAlignValue(i+(this._valueMax()-this._valueMin())/n);break;case e.ui.keyCode.PAGE_DOWN:s=this._trimAlignValue(i-(this._valueMax()-this._valueMin())/n);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(i===this._valueMax())return;s=this._trimAlignValue(i+o);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(i===this._valueMin())return;s=this._trimAlignValue(i-o)}this._slide(t,u,s)},keyup:function(t){var n=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,n),this._change(t,n),e(t.target).removeClass("ui-state-active"))}}),this._refreshValue(),this._animateOff=!1},_destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var n,r,i,s,o,u,a,f,l=this,c=this.options;return c.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),n={x:t.pageX,y:t.pageY},r=this._normValueFromMouse(n),i=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var n=Math.abs(r-l.values(t));i>n&&(i=n,s=e(this),o=t)}),c.range===!0&&this.values(1)===c.min&&(o+=1,s=e(this.handles[o])),u=this._start(t,o),u===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,s.addClass("ui-state-active").focus(),a=s.offset(),f=!e(t.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=f?{left:0,top:0}:{left:t.pageX-a.left-s.width()/2,top:t.pageY-a.top-s.height()/2-(parseInt(s.css("borderTopWidth"),10)||0)-(parseInt(s.css("borderBottomWidth"),10)||0)+(parseInt(s.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,r),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},n=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,n),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,n,r,i,s;return this.orientation==="horizontal"?(t=this.elementSize.width,n=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,n=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),r=n/t,r>1&&(r=1),r<0&&(r=0),this.orientation==="vertical"&&(r=1-r),i=this._valueMax()-this._valueMin(),s=this._valueMin()+r*i,this._trimAlignValue(s)},_start:function(e,t){var n={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("start",e,n)},_slide:function(e,t,n){var r,i,s;this.options.values&&this.options.values.length?(r=this.values(t?0:1),this.options.values.length===2&&this.options.range===!0&&(t===0&&n>r||t===1&&n<r)&&(n=r),n!==this.values(t)&&(i=this.values(),i[t]=n,s=this._trigger("slide",e,{handle:this.handles[t],value:n,values:i}),r=this.values(t?0:1),s!==!1&&this.values(t,n,!0))):n!==this.value()&&(s=this._trigger("slide",e,{handle:this.handles[t],value:n}),s!==!1&&this.value(n))},_stop:function(e,t){var n={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("stop",e,n)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var n={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("change",e,n)}},value:function(e){if(arguments.length){this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0);return}return this._value()},values:function(t,n){var r,i,s;if(arguments.length>1){this.options.values[t]=this._trimAlignValue(n),this._refreshValue(),this._change(null,t);return}if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();r=this.options.values,i=arguments[0];for(s=0;s<r.length;s+=1)r[s]=this._trimAlignValue(i[s]),this._change(null,s);this._refreshValue()},_setOption:function(t,n){var r,i=0;e.isArray(this.options.values)&&(i=this.options.values.length),e.Widget.prototype._setOption.apply(this,arguments);switch(t){case"disabled":n?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.prop("disabled",!0),this.element.addClass("ui-disabled")):(this.handles.prop("disabled",!1),this.element.removeClass("ui-disabled"));break;case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":this._animateOff=!0,this._refreshValue();for(r=0;r<i;r+=1)this._change(null,r);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e),e},_values:function(e){var t,n,r;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t),t;n=this.options.values.slice();for(r=0;r<n.length;r+=1)n[r]=this._trimAlignValue(n[r]);return n},_trimAlignValue:function(e){if(e<=this._valueMin())return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,n=(e-this._valueMin())%t,r=e-n;return Math.abs(n)*2>=t&&(r+=n>0?t:-t),parseFloat(r.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var t,n,r,i,s,o=this.options.range,u=this.options,a=this,f=this._animateOff?!1:u.animate,l={};this.options.values&&this.options.values.length?this.handles.each(function(r){n=(a.values(r)-a._valueMin())/(a._valueMax()-a._valueMin())*100,l[a.orientation==="horizontal"?"left":"bottom"]=n+"%",e(this).stop(1,1)[f?"animate":"css"](l,u.animate),a.options.range===!0&&(a.orientation==="horizontal"?(r===0&&a.range.stop(1,1)[f?"animate":"css"]({left:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({width:n-t+"%"},{queue:!1,duration:u.animate})):(r===0&&a.range.stop(1,1)[f?"animate":"css"]({bottom:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({height:n-t+"%"},{queue:!1,duration:u.animate}))),t=n}):(r=this.value(),i=this._valueMin(),s=this._valueMax(),n=s!==i?(r-i)/(s-i)*100:0,l[this.orientation==="horizontal"?"left":"bottom"]=n+"%",this.handle.stop(1,1)[f?"animate":"css"](l,u.animate),o==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[f?"animate":"css"]({width:n+"%"},u.animate),o==="max"&&this.orientation==="horizontal"&&this.range[f?"animate":"css"]({width:100-n+"%"},{queue:!1,duration:u.animate}),o==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[f?"animate":"css"]({height:n+"%"},u.animate),o==="max"&&this.orientation==="vertical"&&this.range[f?"animate":"css"]({height:100-n+"%"},{queue:!1,duration:u.animate}))}})})(jQuery);(function(e,t){function i(){return++n}function s(e){return e.hash.length>1&&e.href.replace(r,"")===location.href.replace(r,"").replace(/\s/g,"%20")}var n=0,r=/#.*$/;e.widget("ui.tabs",{version:"1.9.2",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_create:function(){var t=this,n=this.options,r=n.active,i=location.hash.substring(1);this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",n.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs();if(r===null){i&&this.tabs.each(function(t,n){if(e(n).attr("aria-controls")===i)return r=t,!1}),r===null&&(r=this.tabs.index(this.tabs.filter(".ui-tabs-active")));if(r===null||r===-1)r=this.tabs.length?0:!1}r!==!1&&(r=this.tabs.index(this.tabs.eq(r)),r===-1&&(r=n.collapsible?!1:0)),n.active=r,!n.collapsible&&n.active===!1&&this.anchors.length&&(n.active=0),e.isArray(n.disabled)&&(n.disabled=e.unique(n.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.options.active!==!1&&this.anchors.length?this.active=this._findActive(this.options.active):this.active=e(),this._refresh(),this.active.length&&this.load(n.active)},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var n=e(this.document[0].activeElement).closest("li"),r=this.tabs.index(n),i=!0;if(this._handlePageNav(t))return;switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:r++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:i=!1,r--;break;case e.ui.keyCode.END:r=this.anchors.length-1;break;case e.ui.keyCode.HOME:r=0;break;case e.ui.keyCode.SPACE:t.preventDefault(),clearTimeout(this.activating),this._activate(r);return;case e.ui.keyCode.ENTER:t.preventDefault(),clearTimeout(this.activating),this._activate(r===this.options.active?!1:r);return;default:return}t.preventDefault(),clearTimeout(this.activating),r=this._focusNextTab(r,i),t.ctrlKey||(n.attr("aria-selected","false"),this.tabs.eq(r).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",r)},this.delay))},_panelKeydown:function(t){if(this._handlePageNav(t))return;t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP)return this._activate(this._focusNextTab(this.options.active-1,!1)),!0;if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN)return this._activate(this._focusNextTab(this.options.active+1,!0)),!0},_findNextTab:function(t,n){function i(){return t>r&&(t=0),t<0&&(t=r),t}var r=this.tabs.length-1;while(e.inArray(i(),this.options.disabled)!==-1)t=n?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){if(e==="active"){this._activate(t);return}if(e==="disabled"){this._setupDisabled(t);return}this._super(e,t),e==="collapsible"&&(this.element.toggleClass("ui-tabs-collapsible",t),!t&&this.options.active===!1&&this._activate(0)),e==="event"&&this._setupEvents(t),e==="heightStyle"&&this._setupHeightStyle(t)},_tabId:function(e){return e.attr("aria-controls")||"ui-tabs-"+i()},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,n=this.tablist.children(":has(a[href])");t.disabled=e.map(n.filter(".ui-state-disabled"),function(e){return n.index(e)}),this._processTabs(),t.active===!1||!this.anchors.length?(t.active=!1,this.active=e()):this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-expanded":"false","aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-expanded":"true","aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(n,r){var i,o,u,a=e(r).uniqueId().attr("id"),f=e(r).closest("li"),l=f.attr("aria-controls");s(r)?(i=r.hash,o=t.element.find(t._sanitizeSelector(i))):(u=t._tabId(f),i="#"+u,o=t.element.find(i),o.length||(o=t._createPanel(u),o.insertAfter(t.panels[n-1]||t.tablist)),o.attr("aria-live","polite")),o.length&&(t.panels=t.panels.add(o)),l&&f.data("ui-tabs-aria-controls",l),f.attr({"aria-controls":i.substring(1),"aria-labelledby":a}),o.attr("aria-labelledby",a)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var n=0,r;r=this.tabs[n];n++)t===!0||e.inArray(n,t)!==-1?e(r).addClass("ui-state-disabled").attr("aria-disabled","true"):e(r).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var n={click:function(e){e.preventDefault()}};t&&e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(this.anchors,n),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var n,r,i=this.element.parent();t==="fill"?(e.support.minHeight||(r=i.css("overflow"),i.css("overflow","hidden")),n=i.height(),this.element.siblings(":visible").each(function(){var t=e(this),r=t.css("position");if(r==="absolute"||r==="fixed")return;n-=t.outerHeight(!0)}),r&&i.css("overflow",r),this.element.children().not(this.panels).each(function(){n-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,n-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):t==="auto"&&(n=0,this.panels.each(function(){n=Math.max(n,e(this).height("").height())}).height(n))},_eventHandler:function(t){var n=this.options,r=this.active,i=e(t.currentTarget),s=i.closest("li"),o=s[0]===r[0],u=o&&n.collapsible,a=u?e():this._getPanelForTab(s),f=r.length?this._getPanelForTab(r):e(),l={oldTab:r,oldPanel:f,newTab:u?e():s,newPanel:a};t.preventDefault();if(s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||o&&!n.collapsible||this._trigger("beforeActivate",t,l)===!1)return;n.active=u?!1:this.tabs.index(s),this.active=o?e():s,this.xhr&&this.xhr.abort(),!f.length&&!a.length&&e.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,l)},_toggle:function(t,n){function o(){r.running=!1,r._trigger("activate",t,n)}function u(){n.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),i.length&&r.options.show?r._show(i,r.options.show,o):(i.show(),o())}var r=this,i=n.newPanel,s=n.oldPanel;this.running=!0,s.length&&this.options.hide?this._hide(s,this.options.hide,function(){n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),u()}):(n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),s.hide(),u()),s.attr({"aria-expanded":"false","aria-hidden":"true"}),n.oldTab.attr("aria-selected","false"),i.length&&s.length?n.oldTab.attr("tabIndex",-1):i.length&&this.tabs.filter(function(){return e(this).attr("tabIndex")===0}).attr("tabIndex",-1),i.attr({"aria-expanded":"true","aria-hidden":"false"}),n.newTab.attr({"aria-selected":"true",tabIndex:0})},_activate:function(t){var n,r=this._findActive(t);if(r[0]===this.active[0])return;r.length||(r=this.active),n=r.find(".ui-tabs-anchor")[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop})},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return typeof e=="string"&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeData("href.tabs").removeData("load.tabs").removeUniqueId(),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),n=t.data("ui-tabs-aria-controls");n?t.attr("aria-controls",n):t.removeAttr("aria-controls")}),this.panels.show(),this.options.heightStyle!=="content"&&this.panels.css("height","")},enable:function(n){var r=this.options.disabled;if(r===!1)return;n===t?r=!1:(n=this._getIndex(n),e.isArray(r)?r=e.map(r,function(e){return e!==n?e:null}):r=e.map(this.tabs,function(e,t){return t!==n?t:null})),this._setupDisabled(r)},disable:function(n){var r=this.options.disabled;if(r===!0)return;if(n===t)r=!0;else{n=this._getIndex(n);if(e.inArray(n,r)!==-1)return;e.isArray(r)?r=e.merge([n],r).sort():r=[n]}this._setupDisabled(r)},load:function(t,n){t=this._getIndex(t);var r=this,i=this.tabs.eq(t),o=i.find(".ui-tabs-anchor"),u=this._getPanelForTab(i),a={tab:i,panel:u};if(s(o[0]))return;this.xhr=e.ajax(this._ajaxSettings(o,n,a)),this.xhr&&this.xhr.statusText!=="canceled"&&(i.addClass("ui-tabs-loading"),u.attr("aria-busy","true"),this.xhr.success(function(e){setTimeout(function(){u.html(e),r._trigger("load",n,a)},1)}).complete(function(e,t){setTimeout(function(){t==="abort"&&r.panels.stop(!1,!0),i.removeClass("ui-tabs-loading"),u.removeAttr("aria-busy"),e===r.xhr&&delete r.xhr},1)}))},_ajaxSettings:function(t,n,r){var i=this;return{url:t.attr("href"),beforeSend:function(t,s){return i._trigger("beforeLoad",n,e.extend({jqXHR:t,ajaxSettings:s},r))}}},_getPanelForTab:function(t){var n=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+n))}}),e.uiBackCompat!==!1&&(e.ui.tabs.prototype._ui=function(e,t){return{tab:e,panel:t,index:this.anchors.index(e)}},e.widget("ui.tabs",e.ui.tabs,{url:function(e,t){this.anchors.eq(e).attr("href",t)}}),e.widget("ui.tabs",e.ui.tabs,{options:{ajaxOptions:null,cache:!1},_create:function(){this._super();var t=this;this._on({tabsbeforeload:function(n,r){if(e.data(r.tab[0],"cache.tabs")){n.preventDefault();return}r.jqXHR.success(function(){t.options.cache&&e.data(r.tab[0],"cache.tabs",!0)})}})},_ajaxSettings:function(t,n,r){var i=this.options.ajaxOptions;return e.extend({},i,{error:function(e,t){try{i.error(e,t,r.tab.closest("li").index(),r.tab[0])}catch(n){}}},this._superApply(arguments))},_setOption:function(e,t){e==="cache"&&t===!1&&this.anchors.removeData("cache.tabs"),this._super(e,t)},_destroy:function(){this.anchors.removeData("cache.tabs"),this._super()},url:function(e){this.anchors.eq(e).removeData("cache.tabs"),this._superApply(arguments)}}),e.widget("ui.tabs",e.ui.tabs,{abort:function(){this.xhr&&this.xhr.abort()}}),e.widget("ui.tabs",e.ui.tabs,{options:{spinner:"<em>Loading&#8230;</em>"},_create:function(){this._super(),this._on({tabsbeforeload:function(e,t){if(e.target!==this.element[0]||!this.options.spinner)return;var n=t.tab.find("span"),r=n.html();n.html(this.options.spinner),t.jqXHR.complete(function(){n.html(r)})}})}}),e.widget("ui.tabs",e.ui.tabs,{options:{enable:null,disable:null},enable:function(t){var n=this.options,r;if(t&&n.disabled===!0||e.isArray(n.disabled)&&e.inArray(t,n.disabled)!==-1)r=!0;this._superApply(arguments),r&&this._trigger("enable",null,this._ui(this.anchors[t],this.panels[t]))},disable:function(t){var n=this.options,r;if(t&&n.disabled===!1||e.isArray(n.disabled)&&e.inArray(t,n.disabled)===-1)r=!0;this._superApply(arguments),r&&this._trigger("disable",null,this._ui(this.anchors[t],this.panels[t]))}}),e.widget("ui.tabs",e.ui.tabs,{options:{add:null,remove:null,tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},add:function(n,r,i){i===t&&(i=this.anchors.length);var s,o,u=this.options,a=e(u.tabTemplate.replace(/#\{href\}/g,n).replace(/#\{label\}/g,r)),f=n.indexOf("#")?this._tabId(a):n.replace("#","");return a.addClass("ui-state-default ui-corner-top").data("ui-tabs-destroy",!0),a.attr("aria-controls",f),s=i>=this.tabs.length,o=this.element.find("#"+f),o.length||(o=this._createPanel(f),s?i>0?o.insertAfter(this.panels.eq(-1)):o.appendTo(this.element):o.insertBefore(this.panels[i])),o.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").hide(),s?a.appendTo(this.tablist):a.insertBefore(this.tabs[i]),u.disabled=e.map(u.disabled,function(e){return e>=i?++e:e}),this.refresh(),this.tabs.length===1&&u.active===!1&&this.option("active",0),this._trigger("add",null,this._ui(this.anchors[i],this.panels[i])),this},remove:function(t){t=this._getIndex(t);var n=this.options,r=this.tabs.eq(t).remove(),i=this._getPanelForTab(r).remove();return r.hasClass("ui-tabs-active")&&this.anchors.length>2&&this._activate(t+(t+1<this.anchors.length?1:-1)),n.disabled=e.map(e.grep(n.disabled,function(e){return e!==t}),function(e){return e>=t?--e:e}),this.refresh(),this._trigger("remove",null,this._ui(r.find("a")[0],i[0])),this}}),e.widget("ui.tabs",e.ui.tabs,{length:function(){return this.anchors.length}}),e.widget("ui.tabs",e.ui.tabs,{options:{idPrefix:"ui-tabs-"},_tabId:function(t){var n=t.is("li")?t.find("a[href]"):t;return n=n[0],e(n).closest("li").attr("aria-controls")||n.title&&n.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF\-]/g,"")||this.options.idPrefix+i()}}),e.widget("ui.tabs",e.ui.tabs,{options:{panelTemplate:"<div></div>"},_createPanel:function(t){return e(this.options.panelTemplate).attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)}}),e.widget("ui.tabs",e.ui.tabs,{_create:function(){var e=this.options;e.active===null&&e.selected!==t&&(e.active=e.selected===-1?!1:e.selected),this._super(),e.selected=e.active,e.selected===!1&&(e.selected=-1)},_setOption:function(e,t){if(e!=="selected")return this._super(e,t);var n=this.options;this._super("active",t===-1?!1:t),n.selected=n.active,n.selected===!1&&(n.selected=-1)},_eventHandler:function(){this._superApply(arguments),this.options.selected=this.options.active,this.options.selected===!1&&(this.options.selected=-1)}}),e.widget("ui.tabs",e.ui.tabs,{options:{show:null,select:null},_create:function(){this._super(),this.options.active!==!1&&this._trigger("show",null,this._ui(this.active.find(".ui-tabs-anchor")[0],this._getPanelForTab(this.active)[0]))},_trigger:function(e,t,n){var r,i,s=this._superApply(arguments);return s?(e==="beforeActivate"?(r=n.newTab.length?n.newTab:n.oldTab,i=n.newPanel.length?n.newPanel:n.oldPanel,s=this._super("select",t,{tab:r.find(".ui-tabs-anchor")[0],panel:i[0],index:r.closest("li").index()})):e==="activate"&&n.newTab.length&&(s=this._super("show",t,{tab:n.newTab.find(".ui-tabs-anchor")[0],panel:n.newPanel[0],index:n.newTab.closest("li").index()})),s):!1}}),e.widget("ui.tabs",e.ui.tabs,{select:function(e){e=this._getIndex(e);if(e===-1){if(!this.options.collapsible||this.options.selected===-1)return;e=this.options.selected}this.anchors.eq(e).trigger(this.options.event+this.eventNamespace)}}),function(){var t=0;e.widget("ui.tabs",e.ui.tabs,{options:{cookie:null},_create:function(){var e=this.options,t;e.active==null&&e.cookie&&(t=parseInt(this._cookie(),10),t===-1&&(t=!1),e.active=t),this._super()},_cookie:function(n){var r=[this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+ ++t)];return arguments.length&&(r.push(n===!1?-1:n),r.push(this.options.cookie)),e.cookie.apply(null,r)},_refresh:function(){this._super(),this.options.cookie&&this._cookie(this.options.active,this.options.cookie)},_eventHandler:function(){this._superApply(arguments),this.options.cookie&&this._cookie(this.options.active,this.options.cookie)},_destroy:function(){this._super(),this.options.cookie&&this._cookie(null,this.options.cookie)}})}(),e.widget("ui.tabs",e.ui.tabs,{_trigger:function(t,n,r){var i=e.extend({},r);return t==="load"&&(i.panel=i.panel[0],i.tab=i.tab.find(".ui-tabs-anchor")[0]),this._super(t,n,i)}}),e.widget("ui.tabs",e.ui.tabs,{options:{fx:null},_getFx:function(){var t,n,r=this.options.fx;return r&&(e.isArray(r)?(t=r[0],n=r[1]):t=n=r),r?{show:n,hide:t}:null},_toggle:function(e,t){function o(){n.running=!1,n._trigger("activate",e,t)}function u(){t.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),r.length&&s.show?r.animate(s.show,s.show.duration,function(){o()}):(r.show(),o())}var n=this,r=t.newPanel,i=t.oldPanel,s=this._getFx();if(!s)return this._super(e,t);n.running=!0,i.length&&s.hide?i.animate(s.hide,s.hide.duration,function(){t.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),u()}):(t.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),i.hide(),u())}}))})(jQuery);(function(e){function n(t,n){var r=(t.attr("aria-describedby")||"").split(/\s+/);r.push(n),t.data("ui-tooltip-id",n).attr("aria-describedby",e.trim(r.join(" ")))}function r(t){var n=t.data("ui-tooltip-id"),r=(t.attr("aria-describedby")||"").split(/\s+/),i=e.inArray(n,r);i!==-1&&r.splice(i,1),t.removeData("ui-tooltip-id"),r=e.trim(r.join(" ")),r?t.attr("aria-describedby",r):t.removeAttr("aria-describedby")}var t=0;e.widget("ui.tooltip",{version:"1.9.2",options:{content:function(){return e(this).attr("title")},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable()},_setOption:function(t,n){var r=this;if(t==="disabled"){this[n?"_disable":"_enable"](),this.options[t]=n;return}this._super(t,n),t==="content"&&e.each(this.tooltips,function(e,t){r._updateContent(t)})},_disable:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0)}),this.element.find(this.options.items).andSelf().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).attr("title","")})},_enable:function(){this.element.find(this.options.items).andSelf().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var n=this,r=e(t?t.target:this.element).closest(this.options.items);if(!r.length||r.data("ui-tooltip-id"))return;r.attr("title")&&r.data("ui-tooltip-title",r.attr("title")),r.data("ui-tooltip-open",!0),t&&t.type==="mouseover"&&r.parents().each(function(){var t=e(this),r;t.data("ui-tooltip-open")&&(r=e.Event("blur"),r.target=r.currentTarget=this,n.close(r,!0)),t.attr("title")&&(t.uniqueId(),n.parents[this.id]={element:this,title:t.attr("title")},t.attr("title",""))}),this._updateContent(r,t)},_updateContent:function(e,t){var n,r=this.options.content,i=this,s=t?t.type:null;if(typeof r=="string")return this._open(t,e,r);n=r.call(e[0],function(n){if(!e.data("ui-tooltip-open"))return;i._delay(function(){t&&(t.type=s),this._open(t,e,n)})}),n&&this._open(t,e,n)},_open:function(t,r,i){function f(e){a.of=e;if(s.is(":hidden"))return;s.position(a)}var s,o,u,a=e.extend({},this.options.position);if(!i)return;s=this._find(r);if(s.length){s.find(".ui-tooltip-content").html(i);return}r.is("[title]")&&(t&&t.type==="mouseover"?r.attr("title",""):r.removeAttr("title")),s=this._tooltip(r),n(r,s.attr("id")),s.find(".ui-tooltip-content").html(i),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:f}),f(t)):s.position(e.extend({of:r},this.options.position)),s.hide(),this._show(s,this.options.show),this.options.show&&this.options.show.delay&&(u=setInterval(function(){s.is(":visible")&&(f(a.of),clearInterval(u))},e.fx.interval)),this._trigger("open",t,{tooltip:s}),o={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var n=e.Event(t);n.currentTarget=r[0],this.close(n,!0)}},remove:function(){this._removeTooltip(s)}};if(!t||t.type==="mouseover")o.mouseleave="close";if(!t||t.type==="focusin")o.focusout="close";this._on(!0,r,o)},close:function(t){var n=this,i=e(t?t.currentTarget:this.element),s=this._find(i);if(this.closing)return;i.data("ui-tooltip-title")&&i.attr("title",i.data("ui-tooltip-title")),r(i),s.stop(!0),this._hide(s,this.options.hide,function(){n._removeTooltip(e(this))}),i.removeData("ui-tooltip-open"),this._off(i,"mouseleave focusout keyup"),i[0]!==this.element[0]&&this._off(i,"remove"),this._off(this.document,"mousemove"),t&&t.type==="mouseleave"&&e.each(this.parents,function(t,r){e(r.element).attr("title",r.title),delete n.parents[t]}),this.closing=!0,this._trigger("close",t,{tooltip:s}),this.closing=!1},_tooltip:function(n){var r="ui-tooltip-"+t++,i=e("<div>").attr({id:r,role:"tooltip"}).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||""));return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),e.fn.bgiframe&&i.bgiframe(),this.tooltips[r]=n,i},_find:function(t){var n=t.data("ui-tooltip-id");return n?e("#"+n):e()},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0),e("#"+n).remove(),r.data("ui-tooltip-title")&&(r.attr("title",r.data("ui-tooltip-title")),r.removeData("ui-tooltip-title"))})}})})(jQuery);
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/jquery/jquery.js (-4 lines)
Lines 1-4 Link Here
1
/*! jQuery v1.7.2 jquery.com | jquery.org/license */
2
(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="<div "+n+"display:block;'><div style='"+t+"0;display:block;overflow:hidden;'></div></div>"+"<table "+n+"' cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style='"+t+"0;display:none'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style='width:5px;'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(
3
a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);return c.result}},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")[\\s/>]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f
4
.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\([^)]*\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\-+]?(?:\d*\.)?\d+$/i,bt=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,bu=/^([\-+])=([\-+.\de]+)/,bv=/^margin/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),(e===""&&f.css(d,"display")==="none"||!f.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf("margin")&&(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&&c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&&c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){if(f.support.fixedPosition&&j.position==="fixed")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position==="relative"||j.position==="static")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&&j.position==="fixed"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/jquery/plugins/jquery.checkboxes.min.js (-13 lines)
Lines 1-13 Link Here
1
/*
2
 *
3
 * Copyright (c) 2006-2008 Sam Collett (http://www.texotela.co.uk)
4
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
5
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
6
 * 
7
 * Version 2.1
8
 * Demo: http://www.texotela.co.uk/code/jquery/checkboxes/
9
 *
10
 * $LastChangedDate$
11
 * $Rev$
12
 */
13
;(function(d){d.fn.toggleCheckboxes=function(a,b){a=a||"*";b=b||false;var c=d([]);this.each(function(){var e=d("input[type=checkbox]",this).filter(a).each(function(){this.checked=!this.checked}).filter(":checked");c=e});if(!b){c=this}return c};d.fn.checkCheckboxes=function(a,b){a=a||"*";b=b||false;var c=d([]);this.each(function(){var e=d("input[type=checkbox]",this).filter(a).each(function(){this.checked=true}).filter(":checked");c=e});if(!b){c=this}return c};d.fn.unCheckCheckboxes=function(a,b){a=a||"*";b=b||false;var c=d([]);this.each(function(){var e=d("input[type=checkbox]",this).filter(a).each(function(){this.checked=false}).filter(":not(:checked)");c=e});if(!b){c=this}return c};d.radioCheckboxGroup=function(e,a){a=a||"*";var b="input[type=checkbox]";if(e){b+="[name="+e+"]"}var c=d(b).filter(a);c.click(function(){c.not(this).each(function(){this.checked=false}).end()})}})(jQuery);
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/jquery/plugins/jquery.highlight-3.js (-53 lines)
Lines 1-53 Link Here
1
/*
2
3
highlight v3
4
5
Highlights arbitrary terms.
6
7
<http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html>
8
9
MIT license.
10
11
Johann Burkard
12
<http://johannburkard.de>
13
<mailto:jb@eaio.com>
14
15
*/
16
17
jQuery.fn.highlight = function(pat) {
18
 function innerHighlight(node, pat) {
19
  var skip = 0;
20
  if (node.nodeType == 3) {
21
   var pos = node.data.toUpperCase().indexOf(pat);
22
   if (pos >= 0) {
23
    var spannode = document.createElement('span');
24
    spannode.className = 'term';
25
    var middlebit = node.splitText(pos);
26
    var endbit = middlebit.splitText(pat.length);
27
    var middleclone = middlebit.cloneNode(true);
28
    spannode.appendChild(middleclone);
29
    middlebit.parentNode.replaceChild(spannode, middlebit);
30
    skip = 1;
31
   }
32
  }
33
  else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
34
   for (var i = 0; i < node.childNodes.length; ++i) {
35
    i += innerHighlight(node.childNodes[i], pat);
36
   }
37
  }
38
  return skip;
39
 }
40
 return this.each(function() {
41
  innerHighlight(this, pat.toUpperCase());
42
 });
43
};
44
45
jQuery.fn.removeHighlight = function() {
46
 return this.find("span.term").each(function() {
47
  this.parentNode.firstChild.nodeName;
48
  with (this.parentNode) {
49
   replaceChild(this.firstChild, this);
50
   normalize();
51
  }
52
 }).end();
53
};
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/jquery/plugins/jquery.hoverIntent.minified.js (-9 lines)
Lines 1-9 Link Here
1
/**
2
* hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+
3
* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
4
* 
5
* @param  f  onMouseOver function || An object with configuration options
6
* @param  g  onMouseOut function  || Nothing (use configuration options object)
7
* @author    Brian Cherne <brian@cherne.net>
8
*/
9
(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:7,interval:100,timeout:0};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY;};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;return cfg.over.apply(ob,[ev]);}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}};var delay=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);ob.hoverIntent_s=0;return cfg.out.apply(ob,[ev]);};var handleHover=function(e){var p=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(p&&p!=this){try{p=p.parentNode;}catch(e){p=this;}}if(p==this){return false;}var ev=jQuery.extend({},e);var ob=this;if(ob.hoverIntent_t){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);}if(e.type=="mouseover"){pX=ev.pageX;pY=ev.pageY;$(ob).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}}else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){delay(ev,ob);},cfg.timeout);}}};return this.mouseover(handleHover).mouseout(handleHover);};})(jQuery);
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/jquery/plugins/jquery.metadata.min.js (-8 lines)
Lines 1-8 Link Here
1
(function($){$.extend({metadata:{defaults:{type:'class',name:'metadata',cre:/({.*})/,single:'metadata'},setType:function(type,name){this.defaults.type=type;this.defaults.name=name;},get:function(elem,opts){var settings=$.extend({},this.defaults,opts);if(!settings.single.length)settings.single='metadata';var data=$.data(elem,settings.single);if(data)return data;data="{}";var getData=function(data){if(typeof data!="string")return data;if(data.indexOf('{')<0){data=eval("("+data+")");}}
2
var getObject=function(data){if(typeof data!="string")return data;data=eval("("+data+")");return data;}
3
if(settings.type=="html5"){var object={};$(elem.attributes).each(function(){var name=this.nodeName;if(name.match(/^data-/))name=name.replace(/^data-/,'');else return true;object[name]=getObject(this.nodeValue);});}else{if(settings.type=="class"){var m=settings.cre.exec(elem.className);if(m)
4
data=m[1];}else if(settings.type=="elem"){if(!elem.getElementsByTagName)returnvar;e=elem.getElementsByTagName(settings.name);if(e.length)
5
data=$.trim(e[0].innerHTML);}else if(elem.getAttribute!=undefined){var attr=elem.getAttribute(settings.name);if(attr)
6
data=attr;}
7
object=getObject(data.indexOf("{")<0?"{"+data+"}":data);}
8
$.data(elem,settings.single,object);return object;}}});$.fn.metadata=function(opts){return $.metadata.get(this[0],opts);};})(jQuery);
(-)a/koha-tmpl/opac-tmpl/prog/en/lib/jquery/plugins/jquery.rating.js (-392 lines)
Lines 1-392 Link Here
1
/*
2
 ### jQuery Star Rating Plugin v3.14 - 2012-01-26 ###
3
 * Home: http://www.fyneworks.com/jquery/star-rating/
4
 * Code: http://code.google.com/p/jquery-star-rating-plugin/
5
 *
6
    * Dual licensed under the MIT and GPL licenses:
7
 *   http://www.opensource.org/licenses/mit-license.php
8
 *   http://www.gnu.org/licenses/gpl.html
9
 ###
10
*/
11
12
/*# AVOID COLLISIONS #*/
13
;if(window.jQuery) (function($){
14
/*# AVOID COLLISIONS #*/
15
16
    // IE6 Background Image Fix
17
    if ($.browser.msie) try { document.execCommand("BackgroundImageCache", false, true)} catch(e) { };
18
    // Thanks to http://www.visualjquery.com/rating/rating_redux.html
19
20
    // plugin initialization
21
    $.fn.rating = function(options){
22
        if(this.length==0) return this; // quick fail
23
24
        // Handle API methods
25
        if(typeof arguments[0]=='string'){
26
            // Perform API methods on individual elements
27
            if(this.length>1){
28
                var args = arguments;
29
                return this.each(function(){
30
                    $.fn.rating.apply($(this), args);
31
    });
32
            };
33
            // Invoke API method handler
34
            $.fn.rating[arguments[0]].apply(this, $.makeArray(arguments).slice(1) || []);
35
            // Quick exit...
36
            return this;
37
        };
38
39
        // Initialize options for this call
40
        var options = $.extend(
41
            {}/* new object */,
42
            $.fn.rating.options/* default options */,
43
            options || {} /* just-in-time options */
44
        );
45
46
        // Allow multiple controls with the same name by making each call unique
47
        $.fn.rating.calls++;
48
49
        // loop through each matched element
50
        this
51
         .not('.star-rating-applied')
52
            .addClass('star-rating-applied')
53
        .each(function(){
54
55
            // Load control parameters / find context / etc
56
            var control, input = $(this);
57
            var eid = (this.name || 'unnamed-rating').replace(/\[|\]/g, '_').replace(/^\_+|\_+$/g,'');
58
            var context = $(this.form || document.body);
59
60
            // FIX: http://code.google.com/p/jquery-star-rating-plugin/issues/detail?id=23
61
            var raters = context.data('rating');
62
            if(!raters || raters.call!=$.fn.rating.calls) raters = { count:0, call:$.fn.rating.calls };
63
            var rater = raters[eid];
64
65
            // if rater is available, verify that the control still exists
66
            if(rater) control = rater.data('rating');
67
68
            if(rater && control)//{// save a byte!
69
                // add star to control if rater is available and the same control still exists
70
                control.count++;
71
72
            //}// save a byte!
73
            else{
74
                // create new control if first star or control element was removed/replaced
75
76
                // Initialize options for this rater
77
                control = $.extend(
78
                    {}/* new object */,
79
                    options || {} /* current call options */,
80
                    ($.metadata? input.metadata(): ($.meta?input.data():null)) || {}, /* metadata options */
81
                    { count:0, stars: [], inputs: [] }
82
                );
83
84
                // increment number of rating controls
85
                control.serial = raters.count++;
86
87
                // create rating element
88
                rater = $('<span class="star-rating-control"/>');
89
                input.before(rater);
90
91
                // Mark element for initialization (once all stars are ready)
92
                rater.addClass('rating-to-be-drawn');
93
94
                // Accept readOnly setting from 'disabled' property
95
                if(input.attr('disabled') || input.hasClass('disabled')) control.readOnly = true;
96
97
                // Accept required setting from class property (class='required')
98
                if(input.hasClass('required')) control.required = true;
99
100
                // Create 'cancel' button
101
                rater.append(
102
                    control.cancel = $('<div class="rating-cancel"><a title="' + control.cancel + '">' + control.cancelValue + '</a></div>')
103
                    .mouseover(function(){
104
                        $(this).rating('drain');
105
                        $(this).addClass('star-rating-hover');
106
                        //$(this).rating('focus');
107
                    })
108
                    .mouseout(function(){
109
                        $(this).rating('draw');
110
                        $(this).removeClass('star-rating-hover');
111
                        //$(this).rating('blur');
112
                    })
113
                    .click(function(){
114
                     $(this).rating('select');
115
                    })
116
                    .data('rating', control)
117
                );
118
119
            }; // first element of group
120
121
            // insert rating star
122
            var star = $('<div class="star-rating rater-'+ control.serial +'"><a title="' + (this.title || this.value) + '">' + this.value + '</a></div>');
123
            rater.append(star);
124
125
            // inherit attributes from input element
126
            if(this.id) star.attr('id', this.id);
127
            if(this.className) star.addClass(this.className);
128
129
            // Half-stars?
130
            if(control.half) control.split = 2;
131
132
            // Prepare division control
133
            if(typeof control.split=='number' && control.split>0){
134
                var stw = ($.fn.width ? star.width() : 0) || control.starWidth;
135
                var spi = (control.count % control.split), spw = Math.floor(stw/control.split);
136
                star
137
                // restrict star's width and hide overflow (already in CSS)
138
                .width(spw)
139
                // move the star left by using a negative margin
140
                // this is work-around to IE's stupid box model (position:relative doesn't work)
141
                .find('a').css({ 'margin-left':'-'+ (spi*spw) +'px' })
142
            };
143
144
            // readOnly?
145
            if(control.readOnly)//{ //save a byte!
146
                // Mark star as readOnly so user can customize display
147
                star.addClass('star-rating-readonly');
148
            //}  //save a byte!
149
            else//{ //save a byte!
150
             // Enable hover css effects
151
                star.addClass('star-rating-live')
152
                 // Attach mouse events
153
                    .mouseover(function(){
154
                        $(this).rating('fill');
155
                        $(this).rating('focus');
156
                    })
157
                    .mouseout(function(){
158
                        $(this).rating('draw');
159
                        $(this).rating('blur');
160
                    })
161
                    .click(function(){
162
                        $(this).rating('select');
163
                    })
164
                ;
165
            //}; //save a byte!
166
167
            // set current selection
168
            if(this.checked)	control.current = star;
169
170
            // set current select for links
171
            if(this.nodeName=="A"){
172
    if($(this).hasClass('selected'))
173
     control.current = star;
174
   };
175
176
            // hide input element
177
            input.hide();
178
179
            // backward compatibility, form element to plugin
180
            input.change(function(){
181
    $(this).rating('select');
182
   });
183
184
            // attach reference to star to input element and vice-versa
185
            star.data('rating.input', input.data('rating.star', star));
186
187
            // store control information in form (or body when form not available)
188
            control.stars[control.stars.length] = star[0];
189
            control.inputs[control.inputs.length] = input[0];
190
            control.rater = raters[eid] = rater;
191
            control.context = context;
192
193
            input.data('rating', control);
194
            rater.data('rating', control);
195
            star.data('rating', control);
196
            context.data('rating', raters);
197
  }); // each element
198
199
        // Initialize ratings (first draw)
200
        $('.rating-to-be-drawn').rating('draw').removeClass('rating-to-be-drawn');
201
202
        return this; // don't break the chain...
203
    };
204
205
    /*--------------------------------------------------------*/
206
207
    /*
208
        ### Core functionality and API ###
209
    */
210
    $.extend($.fn.rating, {
211
        // Used to append a unique serial number to internal control ID
212
        // each time the plugin is invoked so same name controls can co-exist
213
        calls: 0,
214
215
        focus: function(){
216
            var control = this.data('rating'); if(!control) return this;
217
            if(!control.focus) return this; // quick fail if not required
218
            // find data for event
219
            var input = $(this).data('rating.input') || $( this.tagName=='INPUT' ? this : null );
220
   // focus handler, as requested by focusdigital.co.uk
221
            if(control.focus) control.focus.apply(input[0], [input.val(), $('a', input.data('rating.star'))[0]]);
222
        }, // $.fn.rating.focus
223
224
        blur: function(){
225
            var control = this.data('rating'); if(!control) return this;
226
            if(!control.blur) return this; // quick fail if not required
227
            // find data for event
228
            var input = $(this).data('rating.input') || $( this.tagName=='INPUT' ? this : null );
229
   // blur handler, as requested by focusdigital.co.uk
230
            if(control.blur) control.blur.apply(input[0], [input.val(), $('a', input.data('rating.star'))[0]]);
231
        }, // $.fn.rating.blur
232
233
        fill: function(){ // fill to the current mouse position.
234
            var control = this.data('rating'); if(!control) return this;
235
            // do not execute when control is in read-only mode
236
            if(control.readOnly) return;
237
            // Reset all stars and highlight them up to this element
238
            this.rating('drain');
239
            this.prevAll().andSelf().filter('.rater-'+ control.serial).addClass('star-rating-hover');
240
        },// $.fn.rating.fill
241
242
        drain: function() { // drain all the stars.
243
            var control = this.data('rating'); if(!control) return this;
244
            // do not execute when control is in read-only mode
245
            if(control.readOnly) return;
246
            // Reset all stars
247
            control.rater.children().filter('.rater-'+ control.serial).removeClass('star-rating-on').removeClass('star-rating-hover');
248
        },// $.fn.rating.drain
249
250
        draw: function(){ // set value and stars to reflect current selection
251
            var control = this.data('rating'); if(!control) return this;
252
            // Clear all stars
253
            this.rating('drain');
254
            // Set control value
255
            if(control.current){
256
                control.current.data('rating.input').attr('checked','checked');
257
                control.current.prevAll().andSelf().filter('.rater-'+ control.serial).addClass('star-rating-on');
258
            }
259
            else
260
             $(control.inputs).removeAttr('checked');
261
            // Show/hide 'cancel' button
262
            control.cancel[control.readOnly || control.required?'hide':'show']();
263
            // Add/remove read-only classes to remove hand pointer
264
            this.siblings()[control.readOnly?'addClass':'removeClass']('star-rating-readonly');
265
        },// $.fn.rating.draw
266
267
268
269
270
271
        select: function(value,wantCallBack){ // select a value
272
273
                    // ***** MODIFICATION *****
274
                    // Thanks to faivre.thomas - http://code.google.com/p/jquery-star-rating-plugin/issues/detail?id=27
275
                    //
276
                    // ***** LIST OF MODIFICATION *****
277
                    // ***** added Parameter wantCallBack : false if you don't want a callback. true or undefined if you want postback to be performed at the end of this method'
278
                    // ***** recursive calls to this method were like : ... .rating('select') it's now like .rating('select',undefined,wantCallBack); (parameters are set.)
279
                    // ***** line which is calling callback
280
                    // ***** /LIST OF MODIFICATION *****
281
282
            var control = this.data('rating'); if(!control) return this;
283
            // do not execute when control is in read-only mode
284
            if(control.readOnly) return;
285
            // clear selection
286
            control.current = null;
287
            // programmatically (based on user input)
288
            if(typeof value!='undefined'){
289
             // select by index (0 based)
290
                if(typeof value=='number')
291
			 return $(control.stars[value]).rating('select',undefined,wantCallBack);
292
                // select by literal value (must be passed as a string
293
                if(typeof value=='string')
294
                    //return
295
                    $.each(control.stars, function(){
296
                        if($(this).data('rating.input').val()==value) $(this).rating('select',undefined,wantCallBack);
297
                    });
298
            }
299
            else
300
                control.current = this[0].tagName=='INPUT' ?
301
                 this.data('rating.star') :
302
                    (this.is('.rater-'+ control.serial) ? this : null);
303
304
            // Update rating control state
305
            this.data('rating', control);
306
            // Update display
307
            this.rating('draw');
308
            // find data for event
309
            var input = $( control.current ? control.current.data('rating.input') : null );
310
            // click callback, as requested here: http://plugins.jquery.com/node/1655
311
312
                    // **** MODIFICATION *****
313
                    // Thanks to faivre.thomas - http://code.google.com/p/jquery-star-rating-plugin/issues/detail?id=27
314
                    //
315
                    //old line doing the callback :
316
                    //if(control.callback) control.callback.apply(input[0], [input.val(), $('a', control.current)[0]]);// callback event
317
                    //
318
                    //new line doing the callback (if i want :)
319
                    if((wantCallBack ||wantCallBack == undefined) && control.callback) control.callback.apply(input[0], [input.val(), $('a', control.current)[0]]);// callback event
320
                    //to ensure retro-compatibility, wantCallBack must be considered as true by default
321
                    // **** /MODIFICATION *****
322
323
  },// $.fn.rating.select
324
325
326
327
328
329
        readOnly: function(toggle, disable){ // make the control read-only (still submits value)
330
            var control = this.data('rating'); if(!control) return this;
331
            // setread-only status
332
            control.readOnly = toggle || toggle==undefined ? true : false;
333
            // enable/disable control value submission
334
            if(disable) $(control.inputs).attr("disabled", "disabled");
335
            else     			$(control.inputs).removeAttr("disabled");
336
            // Update rating control state
337
            this.data('rating', control);
338
            // Update display
339
            this.rating('draw');
340
        },// $.fn.rating.readOnly
341
342
        disable: function(){ // make read-only and never submit value
343
            this.rating('readOnly', true, true);
344
        },// $.fn.rating.disable
345
346
        enable: function(){ // make read/write and submit value
347
            this.rating('readOnly', false, false);
348
        }// $.fn.rating.select
349
350
 });
351
352
    /*--------------------------------------------------------*/
353
354
    /*
355
        ### Default Settings ###
356
        eg.: You can override default control like this:
357
        $.fn.rating.options.cancel = 'Clear';
358
    */
359
    $.fn.rating.options = { //$.extend($.fn.rating, { options: {
360
            cancel: 'Cancel Rating',   // advisory title for the 'cancel' link
361
            cancelValue: '',           // value to submit when user click the 'cancel' link
362
            split: 0,                  // split the star into how many parts?
363
364
            // Width of star image in case the plugin can't work it out. This can happen if
365
            // the jQuery.dimensions plugin is not available OR the image is hidden at installation
366
            starWidth: 16//,
367
368
            //NB.: These don't need to be pre-defined (can be undefined/null) so let's save some code!
369
            //half:     false,         // just a shortcut to control.split = 2
370
            //required: false,         // disables the 'cancel' button so user can only select one of the specified values
371
            //readOnly: false,         // disable rating plugin interaction/ values cannot be changed
372
            //focus:    function(){},  // executed when stars are focused
373
            //blur:     function(){},  // executed when stars are focused
374
            //callback: function(){},  // executed when a star is clicked
375
 }; //} });
376
377
    /*--------------------------------------------------------*/
378
379
    /*
380
        ### Default implementation ###
381
        The plugin will attach itself to file inputs
382
        with the class 'multi' when the page loads
383
    */
384
    $(function(){
385
     $('input[type=radio].star').rating();
386
    });
387
388
389
390
/*# AVOID COLLISIONS #*/
391
})(jQuery);
392
/*# AVOID COLLISIONS #*/
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/errors/400.tt (-30 lines)
Lines 1-30 Link Here
1
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo;  An error has occurred
2
[% INCLUDE 'doc-head-close.inc' %]
3
</head>
4
<body id="error400">
5
[% IF ( OpacNav ) %]<div id="doc3" class="yui-t1">[% ELSE %]<div id="doc3" class="yui-t7">[% END %]
6
<div id="bd">
7
[% INCLUDE 'masthead.inc' %]
8
9
<div id="yui-main">
10
<div class="yui-b">
11
<div class="yui-g">
12
            <h3>An error has occurred</h3>
13
            <h4>Error 400</h4>
14
            <ul>
15
                <li>This error means that the Koha is pointed an invalid link.</li>
16
                <li>To report this error, you can 
17
                        <a href="mailto:[% admin %]">email the Koha Administrator</a>.</li>
18
                <li>Use top menu bar to navigate to another part of Koha.</li>
19
            </ul>
20
</div>
21
</div>
22
</div>
23
[% IF ( OpacNav ) %]
24
<div class="yui-b">
25
<div id="leftmenus" class="container">
26
[% INCLUDE 'navigation.inc' %]
27
</div>
28
</div>[% END %]
29
</div>
30
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/errors/401.tt (-31 lines)
Lines 1-31 Link Here
1
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo;  An error has occurred
2
[% INCLUDE 'doc-head-close.inc' %]
3
</head>
4
<body id="error401">
5
[% IF ( OpacNav ) %]<div id="doc3" class="yui-t1">[% ELSE %]<div id="doc3" class="yui-t7">[% END %]
6
<div id="bd">
7
[% INCLUDE 'masthead.inc' %]
8
9
<div id="yui-main">
10
<div class="yui-b">
11
<div class="yui-g">
12
            <h3>An error has occurred</h3>
13
            <h4>Error 401</h4>
14
            <ul>
15
                <li>This error means that the you are trying to access a link that you're not authorized to see.</li>
16
                <li>Try logging in to the catalog</li>
17
                <li>To report this error, you can 
18
                        <a href="mailto:[% admin %]">email the Koha Administrator</a>.</li>
19
                <li>Use top menu bar to navigate to another part of Koha.</li>
20
            </ul>
21
</div>
22
</div>
23
</div>
24
[% IF ( OpacNav ) %]
25
<div class="yui-b">
26
<div id="leftmenus" class="container">
27
[% INCLUDE 'navigation.inc' %]
28
</div>
29
</div>[% END %]
30
</div>
31
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/errors/402.tt (-30 lines)
Lines 1-30 Link Here
1
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo;  An error has occurred
2
[% INCLUDE 'doc-head-close.inc' %]
3
</head>
4
<body id="error402">
5
[% IF ( OpacNav ) %]<div id="doc3" class="yui-t1">[% ELSE %]<div id="doc3" class="yui-t7">[% END %]
6
<div id="bd">
7
[% INCLUDE 'masthead.inc' %]
8
9
<div id="yui-main">
10
<div class="yui-b">
11
<div class="yui-g">
12
            <h3>An error has occurred</h3>
13
            <h4>Error 402</h4>
14
            <ul>
15
                <li>This error means that the Koha is pointed an invalid link.</li>
16
                <li>To report this error, you can 
17
                        <a href="mailto:[% admin %]">email the Koha Administrator</a>.</li>
18
                <li>Use top menu bar to navigate to another part of Koha.</li>
19
            </ul>
20
</div>
21
</div>
22
</div>
23
[% IF ( OpacNav ) %]
24
<div class="yui-b">
25
<div id="leftmenus" class="container">
26
[% INCLUDE 'navigation.inc' %]
27
</div>
28
</div>[% END %]
29
</div>
30
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/errors/403.tt (-30 lines)
Lines 1-30 Link Here
1
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo;  An error has occurred
2
[% INCLUDE 'doc-head-close.inc' %]
3
</head>
4
<body id="error403">
5
[% IF ( OpacNav ) %]<div id="doc3" class="yui-t1">[% ELSE %]<div id="doc3" class="yui-t7">[% END %]
6
<div id="bd">
7
[% INCLUDE 'masthead.inc' %]
8
9
<div id="yui-main">
10
<div class="yui-b">
11
<div class="yui-g">
12
            <h3>An error has occurred</h3>
13
            <h4>Error 403</h4>
14
            <ul>
15
                <li>This error means that you are forbidden for some reason to see this page.</li>
16
                <li>To report this error, you can 
17
                        <a href="mailto:[% admin %]">email the Koha Administrator</a>.</li>
18
                <li>Use top menu bar to navigate to another part of Koha.</li>
19
            </ul>
20
</div>
21
</div>
22
</div>
23
[% IF ( OpacNav ) %]
24
<div class="yui-b">
25
<div id="leftmenus" class="container">
26
[% INCLUDE 'navigation.inc' %]
27
</div>
28
</div>[% END %]
29
</div>
30
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/errors/404.tt (-30 lines)
Lines 1-30 Link Here
1
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo;  An error has occurred
2
[% INCLUDE 'doc-head-close.inc' %]
3
</head>
4
<body id="error404">
5
[% IF ( OpacNav ) %]<div id="doc3" class="yui-t1">[% ELSE %]<div id="doc3" class="yui-t7">[% END %]
6
<div id="bd">
7
[% INCLUDE 'masthead.inc' %]
8
9
<div id="yui-main">
10
<div class="yui-b">
11
<div class="yui-g">
12
            <h3>An error has occurred</h3>
13
            <h4>Error 404</h4>
14
            <ul>
15
                <li>This error means that the link was broken and that the page doesn't exist.</li>
16
                <li>To report this error, you can 
17
                        <a href="mailto:[% admin %]">email the Koha Administrator</a>.</li>
18
                <li>Use top menu bar to navigate to another part of Koha.</li>
19
            </ul>
20
</div>
21
</div>
22
</div>
23
[% IF ( OpacNav ) %]
24
<div class="yui-b">
25
<div id="leftmenus" class="container">
26
[% INCLUDE 'navigation.inc' %]
27
</div>
28
</div>[% END %]
29
</div>
30
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/errors/500.tt (-30 lines)
Lines 1-30 Link Here
1
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo;  An error has occurred
2
[% INCLUDE 'doc-head-close.inc' %]
3
</head>
4
<body id="error500">
5
[% IF ( OpacNav ) %]<div id="doc3" class="yui-t1">[% ELSE %]<div id="doc3" class="yui-t7">[% END %]
6
<div id="bd">
7
[% INCLUDE 'masthead.inc' %]
8
9
<div id="yui-main">
10
<div class="yui-b">
11
<div class="yui-g">
12
            <h3>An error has occurred</h3>
13
            <h4>Error 500</h4>
14
            <ul>
15
                <li>An error occurred while try to process your request.</li>
16
                <li>To report this error, you can 
17
                        <a href="mailto:[% admin %]">email the Koha Administrator</a>.</li>
18
                <li>Use top menu bar to navigate to another part of Koha.</li>
19
            </ul>
20
</div>
21
</div>
22
</div>
23
[% IF ( OpacNav ) %]
24
<div class="yui-b">
25
<div id="leftmenus" class="container">
26
[% INCLUDE 'navigation.inc' %]
27
</div>
28
</div>[% END %]
29
</div>
30
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/ilsdi.tt (-738 lines)
Lines 1-738 Link Here
1
[% INCLUDE 'doc-head-open.inc' %]
2
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; ILS-DI
3
[% INCLUDE 'doc-head-close.inc' %]
4
</head>
5
<body>
6
<div id="doc3" class="yui-t[% IF ( OpacNav ) %]1[% ELSE %]7[% END %]">
7
  <div id="bd">
8
[% INCLUDE 'masthead.inc' %]
9
10
	<div id="yui-main">
11
	  <div class="yui-b"><div class="yui-g">
12
            <h1>ILS-DI</h1>
13
            
14
[% IF ( GetAvailability ) %]
15
16
                <h2>GetAvailability</h2>
17
                <p>Given a set of bibliographic or item identifiers, returns a 
18
                list with availability of the items associated with the identifiers.</p>
19
                <h4>Parameters</h4>
20
                <dl>
21
                    <dt><strong>id</strong> (Required)</dt>
22
                    <dd>list of either bibliographic or item identifiers</dd>
23
                    <dt><strong>id_type</strong> (Required)</dt>
24
                    <dd>defines the type of record identifier being used in the request, possible values: 
25
                        <ul>
26
                            <li>bib</li>
27
                            <li>item</li>
28
                        </ul>
29
                    </dd>
30
                    <dt><strong>return_type</strong> (Optional)</dt>
31
                    <dd>requests a particular level of detail in reporting availability, possible values: 
32
                        <ul>
33
                            <li>bib</li>
34
                            <li>item</li>
35
                        </ul>
36
                    </dd>
37
                    <dt><strong>return_fmt</strong> (Optional)</dt>
38
                    <dd>requests a particular format or set of formats in reporting availability</dd>
39
                </dl>
40
                <h4>Example call</h4>
41
                <a href="ilsdi.pl?service=GetAvailability&amp;id=1+2+99999&amp;id_type=item">
42
                    ilsdi.pl?service=GetAvailability&amp;id=1+2+99999&amp;id_type=item
43
                </a>
44
                <h4>Example response</h4>
45
<pre>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
46
&lt;dlf:collection
47
  xmlns:dlf="http://diglib.org/ilsdi/1.1"
48
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
49
  xsi:schemaLocation="http://diglib.org/ilsdi/1.1
50
    http://diglib.org/architectures/ilsdi/schemas/1.1/dlfexpanded.xsd"&gt;
51
  &lt;dlf:record&gt;
52
    &lt;dlf:bibliographic id="1" /&gt;
53
    &lt;dlf:items&gt;
54
      &lt;dlf:item id="1"&gt;
55
        &lt;dlf:simpleavailability&gt;
56
          &lt;dlf:identifier&gt;1&lt;/dlf:identifier&gt;
57
          &lt;dlf:availabilitystatus&gt;available&lt;/dlf:availabilitystatus&gt;
58
          &lt;dlf:location&gt;Bibliothèque Jean Prunier&lt;/dlf:location&gt;
59
        &lt;/dlf:simpleavailability&gt;
60
      &lt;/dlf:item&gt;
61
    &lt;/dlf:items&gt;
62
  &lt;/dlf:record&gt;
63
  &lt;dlf:record&gt;
64
    &lt;dlf:bibliographic id="2" /&gt;
65
    &lt;dlf:items&gt;
66
      &lt;dlf:item id="2"&gt;
67
        &lt;dlf:simpleavailability&gt;
68
          &lt;dlf:identifier&gt;2&lt;/dlf:identifier&gt;
69
          &lt;dlf:availabilitystatus&gt;available&lt;/dlf:availabilitystatus&gt;
70
          &lt;dlf:location&gt;Bibliothèque Jean Prunier&lt;/dlf:location&gt;
71
        &lt;/dlf:simpleavailability&gt;
72
      &lt;/dlf:item&gt;
73
    &lt;/dlf:items&gt;
74
  &lt;/dlf:record&gt;
75
  &lt;dlf:record&gt;
76
    &lt;dlf:bibliographic id="99999" /&gt;
77
    &lt;dlf:items&gt;
78
      &lt;dlf:item id="99999"&gt;
79
        &lt;dlf:simpleavailability&gt;
80
          &lt;dlf:identifier&gt;99999&lt;/dlf:identifier&gt;
81
82
          &lt;dlf:availabilitystatus&gt;unknown&lt;/dlf:availabilitystatus&gt;
83
          &lt;dlf:availabilitymsg&gt;Error: could not retrieve availability for this ID&lt;/dlf:availabilitymsg&gt;
84
        &lt;/dlf:simpleavailability&gt;
85
      &lt;/dlf:item&gt;
86
    &lt;/dlf:items&gt;
87
  &lt;/dlf:record&gt;
88
&lt;/dlf:collection&gt;</pre>
89
90
[% ELSIF ( GetRecords ) %]
91
92
                <h2>GetRecords</h2>
93
                <p>Given a list of record identifiers, returns a list of record 
94
                objects that contain bibliographic information, as well as 
95
                associated holdings and item information. The caller may request 
96
                a specific metadata schema for the record objects to be returned. 
97
                This function behaves similarly to HarvestBibliographicRecords and 
98
                HarvestExpandedRecords in Data Aggregation, but allows quick, real 
99
                time lookup by bibliographic identifier.</p>
100
                <p>You can use OAI-PMH ListRecords instead of this service.</p>
101
                <h4>Parameters</h4>
102
                <dl>
103
                    <dt><strong>id</strong> (Required)</dt>
104
                    <dd>list of system record identifiers</dd>
105
                    <dt><strong>id_type</strong> (Optional)</dt>
106
                    <dd>Defines the metadata schema in which the records are 
107
                    returned, possible values: 
108
                        <ul>
109
                            <li>MARCXML</li>
110
                        </ul>
111
                    </dd>
112
                </dl>
113
                <h4>Example Call</h4>
114
                <a href="ilsdi.pl?service=GetRecords&amp;id=1+2+99999">
115
                    ilsdi.pl?service=GetRecords&amp;id=1+2+99999
116
                </a>
117
                <h4>Example response</h4>
118
<pre>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
119
&lt;GetRecords&gt;
120
  &lt;record&gt;
121
    &lt;biblioitemnumber&gt;1&lt;/biblioitemnumber&gt;
122
    &lt;isbn&gt;9782862749198&lt;/isbn&gt;
123
    &lt;marcxml&gt;
124
      &lt;?xml version="1.0" encoding="UTF-8" ?&gt;
125
      &lt;record
126
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
127
          xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/ standards/marcxml/schema/MARC21slim.xsd"
128
          xmlns="http://www.loc.gov/MARC21/slim"&gt;
129
        &lt;leader&gt;00397nac a22001451u 4500&lt;/leader&gt;
130
        &lt;datafield tag="010" ind1=" " ind2=" "&gt;
131
          &lt;subfield code="a"&gt;9782862749198&lt;/subfield&gt;
132
        &lt;/datafield&gt;
133
        &lt;datafield tag="090" ind1=" " ind2=" "&gt;
134
          &lt;subfield code="a"&gt;1&lt;/subfield&gt;
135
        &lt;/datafield&gt;
136
        &lt;datafield tag="101" ind1=" " ind2=" "&gt;
137
          &lt;subfield code="a"&gt;fre&lt;/subfield&gt;
138
        &lt;/datafield&gt;
139
        &lt;datafield tag="100" ind1=" " ind2=" "&gt;
140
          &lt;subfield code="a"&gt;20080725              frey50       &lt;/subfield&gt;
141
        &lt;/datafield&gt;
142
        &lt;datafield tag="200" ind1=" " ind2=" "&gt;
143
          &lt;subfield code="a"&gt;Jardins d'enfance&lt;/subfield&gt;
144
          &lt;subfield code="b"&gt;LITT&lt;/subfield&gt;
145
          &lt;subfield code="f"&gt;Abécassis, Eliette&lt;/subfield&gt;
146
        &lt;/datafield&gt;
147
        &lt;datafield tag="210" ind1=" " ind2=" "&gt;
148
          &lt;subfield code="c"&gt;cherche midi éditeur&lt;/subfield&gt;
149
          &lt;subfield code="d"&gt;11/2001&lt;/subfield&gt;
150
        &lt;/datafield&gt;
151
        &lt;datafield tag="215" ind1=" " ind2=" "&gt;
152
          &lt;subfield code="a"&gt;180&lt;/subfield&gt;
153
        &lt;/datafield&gt;
154
        &lt;datafield tag="225" ind1=" " ind2=" "&gt;
155
          &lt;subfield code="a"&gt;nouvelles&lt;/subfield&gt;
156
        &lt;/datafield&gt;
157
        &lt;datafield tag="995" ind1=" " ind2=" "&gt;
158
          &lt;subfield code="9"&gt;1&lt;/subfield&gt;
159
          &lt;subfield code="c"&gt;BIB&lt;/subfield&gt;
160
          &lt;subfield code="2"&gt;0&lt;/subfield&gt;
161
          &lt;subfield code="k"&gt;R ABE&lt;/subfield&gt;
162
          &lt;subfield code="o"&gt;0&lt;/subfield&gt;
163
          &lt;subfield code="e"&gt;Secteur Adulte&lt;/subfield&gt;
164
          &lt;subfield code="b"&gt;BIB&lt;/subfield&gt;
165
          &lt;subfield code="j"&gt;7786000200&lt;/subfield&gt;
166
          &lt;subfield code="q"&gt;a&lt;/subfield&gt;
167
          &lt;subfield code="r"&gt;2&lt;/subfield&gt;
168
          &lt;subfield code="s"&gt;Achats&lt;/subfield&gt;
169
        &lt;/datafield&gt;
170
        &lt;controlfield tag="001"&gt;1&lt;/controlfield&gt;
171
      &lt;/record&gt;
172
    &lt;/marcxml&gt;
173
    &lt;publicationyear&gt;2001&lt;/publicationyear&gt;
174
    &lt;collectiontitle&gt;nouvelles&lt;/collectiontitle&gt;
175
    &lt;pages&gt;180&lt;/pages&gt;
176
    &lt;issues&gt;
177
    &lt;/issues&gt;
178
    &lt;itemtype&gt;LITT&lt;/itemtype&gt;
179
    &lt;biblionumber&gt;1&lt;/biblionumber&gt;
180
    &lt;timestamp&gt;2008-09-03 18:43:19&lt;/timestamp&gt;
181
    &lt;cn_sort&gt;_&lt;/cn_sort&gt;
182
    &lt;publishercode&gt;cherche midi éditeur&lt;/publishercode&gt;
183
    &lt;reserves&gt;
184
    &lt;/reserves&gt;
185
    &lt;items&gt;
186
      &lt;item&gt;
187
        &lt;biblioitemnumber&gt;1&lt;/biblioitemnumber&gt;
188
        &lt;withdrawn&gt;0&lt;/withdrawn&gt;
189
        &lt;holdingbranchname&gt;Bibliothèque Jean Prunier&lt;/holdingbranchname&gt;
190
        &lt;notforloan&gt;0&lt;/notforloan&gt;
191
        &lt;replacementpricedate&gt;2008-08-20&lt;/replacementpricedate&gt;
192
        &lt;itemnumber&gt;1&lt;/itemnumber&gt;
193
        &lt;location&gt;Secteur Adulte&lt;/location&gt;
194
        &lt;itemcallnumber&gt;R ABE&lt;/itemcallnumber&gt;
195
        &lt;date_due&gt;&lt;/date_due&gt;
196
        &lt;itemlost&gt;0&lt;/itemlost&gt;
197
        &lt;datelastseen&gt;2008-08-20&lt;/datelastseen&gt;
198
        &lt;homebranch&gt;BIB&lt;/homebranch&gt;
199
        &lt;homebranchname&gt;Bibliothèque Jean Prunier&lt;/homebranchname&gt;
200
        &lt;biblionumber&gt;1&lt;/biblionumber&gt;
201
        &lt;holdingbranch&gt;BIB&lt;/holdingbranch&gt;
202
        &lt;timestamp&gt;2008-08-20 17:15:51&lt;/timestamp&gt;
203
        &lt;damaged&gt;0&lt;/damaged&gt;
204
        &lt;cn_sort&gt;R_ABE&lt;/cn_sort&gt;
205
        &lt;dateaccessioned&gt;2008-08-20&lt;/dateaccessioned&gt;
206
      &lt;/item&gt;
207
    &lt;/items&gt;
208
  &lt;/record&gt;
209
  &lt;record&gt;
210
    &lt;biblioitemnumber&gt;2&lt;/biblioitemnumber&gt;
211
    &lt;isbn&gt;9782265078031&lt;/isbn&gt;
212
    &lt;marcxml&gt;
213
      &lt;?xml version="1.0" encoding="UTF-8" ?&gt;
214
      &lt;record
215
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
216
          xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/ standards/marcxml/schema/MARC21slim.xsd"
217
          xmlns="http://www.loc.gov/MARC21/slim"&gt;
218
        &lt;leader&gt;00407nac a22001451u 4500&lt;/leader&gt;
219
        &lt;datafield tag="010" ind1=" " ind2=" "&gt;
220
          &lt;subfield code="a"&gt;9782265078031&lt;/subfield&gt;
221
        &lt;/datafield&gt;
222
        &lt;datafield tag="090" ind1=" " ind2=" "&gt;
223
          &lt;subfield code="a"&gt;2&lt;/subfield&gt;
224
        &lt;/datafield&gt;
225
        &lt;datafield tag="101" ind1=" " ind2=" "&gt;
226
          &lt;subfield code="a"&gt;fre&lt;/subfield&gt;
227
        &lt;/datafield&gt;
228
        &lt;datafield tag="100" ind1=" " ind2=" "&gt;
229
          &lt;subfield code="a"&gt;20080725              frey50       &lt;/subfield&gt;
230
        &lt;/datafield&gt;
231
        &lt;datafield tag="200" ind1=" " ind2=" "&gt;
232
          &lt;subfield code="a"&gt;(Les) tribulations d'une jeune divorcée&lt;/subfield&gt;
233
          &lt;subfield code="b"&gt;LITT&lt;/subfield&gt;
234
          &lt;subfield code="f"&gt;Abécassis, Eliette&lt;/subfield&gt;
235
        &lt;/datafield&gt;
236
        &lt;datafield tag="210" ind1=" " ind2=" "&gt;
237
          &lt;subfield code="c"&gt;bussière&lt;/subfield&gt;
238
          &lt;subfield code="d"&gt;01/2005&lt;/subfield&gt;
239
        &lt;/datafield&gt;
240
        &lt;datafield tag="215" ind1=" " ind2=" "&gt;
241
          &lt;subfield code="a"&gt;306&lt;/subfield&gt;
242
        &lt;/datafield&gt;
243
        &lt;datafield tag="225" ind1=" " ind2=" "&gt;
244
          &lt;subfield code="a"&gt;fleuve noir&lt;/subfield&gt;
245
        &lt;/datafield&gt;
246
        &lt;datafield tag="995" ind1=" " ind2=" "&gt;
247
          &lt;subfield code="9"&gt;2&lt;/subfield&gt;
248
          &lt;subfield code="c"&gt;BIB&lt;/subfield&gt;
249
          &lt;subfield code="2"&gt;0&lt;/subfield&gt;
250
          &lt;subfield code="k"&gt;R ABE&lt;/subfield&gt;
251
          &lt;subfield code="o"&gt;0&lt;/subfield&gt;
252
          &lt;subfield code="e"&gt;Secteur Adulte&lt;/subfield&gt;
253
          &lt;subfield code="b"&gt;BIB&lt;/subfield&gt;
254
          &lt;subfield code="j"&gt;7786004672&lt;/subfield&gt;
255
          &lt;subfield code="q"&gt;a&lt;/subfield&gt;
256
          &lt;subfield code="s"&gt;Achats&lt;/subfield&gt;
257
        &lt;/datafield&gt;
258
        &lt;controlfield tag="001"&gt;2&lt;/controlfield&gt;
259
      &lt;/record&gt;
260
    &lt;/marcxml&gt;
261
    &lt;publicationyear&gt;2005&lt;/publicationyear&gt;
262
    &lt;collectiontitle&gt;fleuve noir&lt;/collectiontitle&gt;
263
    &lt;pages&gt;306&lt;/pages&gt;
264
    &lt;issues&gt;
265
    &lt;/issues&gt;
266
    &lt;itemtype&gt;LITT&lt;/itemtype&gt;
267
    &lt;biblionumber&gt;2&lt;/biblionumber&gt;
268
    &lt;timestamp&gt;2008-09-03 18:43:19&lt;/timestamp&gt;
269
    &lt;cn_sort&gt;_&lt;/cn_sort&gt;
270
    &lt;publishercode&gt;bussière&lt;/publishercode&gt;
271
    &lt;reserves&gt;
272
    &lt;/reserves&gt;
273
    &lt;items&gt;
274
      &lt;item&gt;
275
        &lt;biblioitemnumber&gt;2&lt;/biblioitemnumber&gt;
276
        &lt;withdrawn&gt;0&lt;/withdrawn&gt;
277
        &lt;holdingbranchname&gt;Bibliothèque Jean Prunier&lt;/holdingbranchname&gt;
278
        &lt;notforloan&gt;0&lt;/notforloan&gt;
279
        &lt;replacementpricedate&gt;2008-08-20&lt;/replacementpricedate&gt;
280
        &lt;itemnumber&gt;2&lt;/itemnumber&gt;
281
        &lt;location&gt;Secteur Adulte&lt;/location&gt;
282
        &lt;itemcallnumber&gt;R ABE&lt;/itemcallnumber&gt;
283
        &lt;date_due&gt;&lt;/date_due&gt;
284
        &lt;itemlost&gt;0&lt;/itemlost&gt;
285
        &lt;datelastseen&gt;2008-08-20&lt;/datelastseen&gt;
286
        &lt;homebranch&gt;BIB&lt;/homebranch&gt;
287
        &lt;homebranchname&gt;Bibliothèque Jean Prunier&lt;/homebranchname&gt;
288
        &lt;biblionumber&gt;2&lt;/biblionumber&gt;
289
        &lt;holdingbranch&gt;BIB&lt;/holdingbranch&gt;
290
        &lt;timestamp&gt;2008-08-20 17:15:51&lt;/timestamp&gt;
291
        &lt;damaged&gt;0&lt;/damaged&gt;
292
        &lt;cn_sort&gt;R_ABE&lt;/cn_sort&gt;
293
        &lt;dateaccessioned&gt;2008-08-20&lt;/dateaccessioned&gt;
294
      &lt;/item&gt;
295
    &lt;/items&gt;
296
  &lt;/record&gt;
297
  &lt;record&gt;RecordNotFound&lt;/record&gt;
298
&lt;/GetRecords&gt;</pre>
299
300
[% ELSIF ( GetAuthorityRecords ) %]
301
302
                <h2>GetAuthorityRecords</h2>
303
                <p>Given a list of authority record identifiers, returns a list 
304
                of record objects that contain the authority records. The function 
305
                user may request a specific metadata schema for the record objects.</p>
306
                <h4>Parameters</h4>
307
                <dl>
308
                    <dt><strong>id</strong> (Required)</dt>
309
                    <dd>list of authority record identifiers</dd>
310
                    <dt><strong>schema</strong> (Optional)</dt>
311
                    <dd>specifies the metadata schema of records to be returned, possible values: 
312
                        <ul>
313
                            <li>MARCXML</li>
314
                        </ul>
315
                    </dd>
316
                </dl>
317
                <h4>Example call</h4>
318
                <a href="ilsdi.pl?service=GetAuthorityRecords&amp;id=1+2+99999">
319
                    ilsdi.pl?service=GetAuthorityRecords&amp;id=1+2+99999
320
                </a>
321
                <h4>Example response</h4>
322
<pre>&lt;xml version="1.0" encoding="UTF-8"&gt;;
323
&lt;GetAuthorityRecords&gt;
324
  &lt;record&gt;
325
    &lt;?xml version="1.0" encoding="UTF-8"?&gt;
326
  &lt;record
327
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
328
    xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/ standards/marcxml/schema/MARC21slim.xsd"
329
    xmlns="http://www.loc.gov/MARC21/slim"&gt;
330
      &lt;leader&gt;00182     2200085   4500&lt;/leader&gt;
331
    &lt;controlfield tag="001"&gt;1&lt;/controlfield&gt;
332
      &lt;datafield tag="200" ind1=" " ind2=" "&gt;
333
        &lt;subfield code="a"&gt;Hugo&lt;/subfield&gt;
334
        &lt;subfield code="b"&gt;Victor&lt;/subfield&gt;
335
    &lt;/datafield&gt;
336
      &lt;datafield tag="801" ind1=" " ind2=" "&gt;
337
        &lt;subfield code="a"&gt;France&lt;/subfield&gt;
338
        &lt;subfield code="b"&gt;Nimes&lt;/subfield&gt;
339
        &lt;subfield code="c"&gt;2010/04/13&lt;/subfield&gt;
340
    &lt;/datafield&gt;
341
    &lt;datafield tag="100" ind1=" " ind2=" "&gt;
342
        &lt;subfield code="a"&gt;20100413     50                    &lt;/subfield&gt;
343
    &lt;/datafield&gt;
344
    &lt;datafield tag="152" ind1=" " ind2=" "&gt;
345
        &lt;subfield code="b"&gt;NP&lt;/subfield&gt;
346
    &lt;/datafield&gt;
347
  &lt;/record&gt;
348
  &lt;/record&gt;
349
  &lt;record&gt;
350
    &lt;code&gt;RecordNotFound&lt;/code&gt;
351
  &lt;/record&gt;
352
  &lt;record&gt;
353
    &lt;code&gt;RecordNotFound&lt;/code&gt;
354
  &lt;/record&gt;
355
&lt;/GetAuthorityRecords&gt;</pre>
356
357
[% ELSIF ( LookupPatron ) %]
358
359
                <h2>LookupPatron</h2>
360
                <p>Looks up a patron in the ILS by an identifier, and returns 
361
                the ILS identifier for that patron, aka the patron identifier.</p>
362
                <h4>Parameters</h4>
363
                <dl>
364
                    <dt><strong>id</strong> (Required)</dt>
365
                    <dd>an identifier used to look up the patron in Koha</dd>
366
                    <dt><strong>id_type</strong> (Optional)</dt>
367
                    <dd>the type of the identifier, possible values: 
368
                        <ul>
369
                            <li>cardnumber</li>
370
                            <li>surname</li>
371
                            <li>borrowernumber</li>
372
                        </ul>
373
                    </dd>
374
                </dl>
375
                <h4>Example call</h4>
376
                <a href="ilsdi.pl?service=LookupPatron&amp;id=815&amp;id_type=cardnumber">
377
                    ilsdi.pl?service=LookupPatron&amp;id=815&amp;id_type=cardnumber
378
                </a>
379
                <h4>Example response</h4>
380
<pre>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
381
&lt;LookupPatron&gt;
382
  &lt;id&gt;419&lt;/id&gt;
383
&lt;/LookupPatron&gt;</pre>
384
385
[% ELSIF ( AuthenticatePatron ) %]
386
387
                <h2>AuthenticatePatron</h2>
388
                <p>Authenticates a user's login credentials and returns the identifier for the patron.</p>
389
                <h4>Parameters</h4>
390
                <dl>
391
                    <dt><strong>username</strong> (Required)</dt>
392
                    <dd>user's login identifier (userid or cardnumber)</dd>
393
                    <dt><strong>password</strong> (Required)</dt>
394
                    <dd>user's password</dd>
395
                </dl>
396
                <h4>Example call</h4>
397
                <a href="ilsdi.pl?service=AuthenticatePatron&amp;username=john9&amp;password=soul">
398
                    ilsdi.pl?service=AuthenticatePatron&amp;username=john9&amp;password=soul
399
                </a>
400
                <h4>Example Response</h4>
401
<pre>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
402
&lt;AuthenticatePatron&gt;
403
  &lt;id&gt;419&lt;/id&gt;
404
&lt;/AuthenticatePatron&gt;</pre>
405
406
[% ELSIF ( GetPatronInfo ) %]
407
408
                <h2>GetPatronInfo</h2>
409
                <p>Returns specified information about the patron, based on 
410
                options in the request. This function can optionally return 
411
                patron's contact information, fine information, hold request 
412
                information, loan information, and messages.</p>
413
                <h4>Parameters</h4>
414
                <dl>
415
                    <dt><strong>patron_id</strong> (Required)</dt>
416
                    <dd>the unique patron identifier in the ILS; the same identifier returned by LookupPatron or AuthenticatePatron</dd>
417
                    <dt><strong>show_contact</strong> (Optional, default 1)</dt>
418
                    <dd>whether or not to return patron's contact information in the response</dd>
419
                    <dt><strong>show_fines</strong> (Optional, default 0)</dt>
420
                    <dd>whether or not to return fine information in the response</dd>
421
                    <dt><strong>show_holds</strong> (Optional, default 0)</dt>
422
                    <dd>whether or not to return hold request information in the response</dd>
423
                    <dt><strong>show_loans</strong> (Optional, default 0)</dt>
424
                    <dd>whether or not to return loan information in the response</dd>
425
                </dl>
426
                <h4>Example call</h4>
427
                <a href="ilsdi.pl?service=GetPatronInfo&amp;patron_id=1&amp;show_contact=0&amp;show_loans=1">
428
                    ilsdi.pl?service=GetPatronInfo&amp;patron_id=1&amp;show_contact=0&amp;show_loans=1
429
                </a>
430
                <h4>Example response</h4>
431
<pre>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
432
&lt;GetPatronInfo&gt;
433
  &lt;category_type&gt;A&lt;/category_type&gt;
434
  &lt;categorycode&gt;ADUEXT&lt;/categorycode&gt;
435
  &lt;borrowernumber&gt;419&lt;/borrowernumber&gt;
436
  &lt;lost&gt;0&lt;/lost&gt;
437
  &lt;branchcode&gt;BIB&lt;/branchcode&gt;
438
  &lt;amountoutstanding&gt;6&lt;/amountoutstanding&gt;
439
  &lt;description&gt;Adulte extérieur&lt;/description&gt;
440
  &lt;title&gt;M&lt;/title&gt;
441
  &lt;enrolmentperiod&gt;12&lt;/enrolmentperiod&gt;
442
  &lt;charges&gt;6.00&lt;/charges&gt;
443
  &lt;dateenrolled&gt;2009-03-04&lt;/dateenrolled&gt;
444
  &lt;borrowernotes&gt;&lt;/borrowernotes&gt;
445
  &lt;dateexpiry&gt;2010-03-04&lt;/dateexpiry&gt;
446
  &lt;firstname&gt;Jean-André&lt;/firstname&gt;
447
  &lt;gonenoaddress&gt;0&lt;/gonenoaddress&gt;
448
  &lt;dateofbirth&gt;1984-06-08&lt;/dateofbirth&gt;
449
  &lt;debarred&gt;0&lt;/debarred&gt;
450
  &lt;branchname&gt;Bibliothèque Jean Prunier&lt;/branchname&gt;
451
  &lt;surname&gt;SANTONI&lt;/surname&gt;
452
  &lt;cardnumber&gt;815&lt;/cardnumber&gt;
453
  &lt;initials&gt;JAS&lt;/initials&gt;
454
  &lt;sort1&gt;CSP5&lt;/sort1&gt;
455
  &lt;sex&gt;M&lt;/sex&gt;
456
  &lt;loans&gt;
457
    &lt;loan&gt;
458
      &lt;lastreneweddate&gt;2009-04-03&lt;/lastreneweddate&gt;
459
      &lt;isbn&gt;2253003689&lt;/isbn&gt;
460
      &lt;borrowernumber&gt;419&lt;/borrowernumber&gt;
461
      &lt;branchcode&gt;BIB&lt;/branchcode&gt;
462
      &lt;itemnumber&gt;4454&lt;/itemnumber&gt;
463
      &lt;date_due&gt;2009-05-06&lt;/date_due&gt;
464
      &lt;barcode&gt;4765476&lt;/barcode&gt;
465
      &lt;datelastseen&gt;2008-08-23&lt;/datelastseen&gt;
466
      &lt;issuedate&gt;2008-08-23&lt;/issuedate&gt;
467
      &lt;title&gt;L'Île au trésor&lt;/title&gt;
468
      &lt;itemtype&gt;LITT&lt;/itemtype&gt;
469
      &lt;author&gt;Robert Louis Stevenson&lt;/author&gt;
470
      &lt;timestamp&gt;2009-04-03 14:46:10&lt;/timestamp&gt;
471
      &lt;publishercode&gt;Librairie générale française&lt;/publishercode&gt;
472
      &lt;datecreated&gt;2008-08-23&lt;/datecreated&gt;
473
      &lt;totalrenewals&gt;11&lt;/totalrenewals&gt;
474
      &lt;dateaccessioned&gt;2008-08-23&lt;/dateaccessioned&gt;
475
      &lt;onloan&gt;2008-09-17&lt;/onloan&gt;
476
      &lt;biblioitemnumber&gt;4483&lt;/biblioitemnumber&gt;
477
      &lt;withdrawn&gt;0&lt;/withdrawn&gt;
478
      &lt;notforloan&gt;0&lt;/notforloan&gt;
479
      &lt;replacementpricedate&gt;2008-08-23&lt;/replacementpricedate&gt;
480
      &lt;itemcallnumber&gt;RO STE&lt;/itemcallnumber&gt;
481
      &lt;location&gt;Salle de lecture&lt;/location&gt;
482
      &lt;itemlost&gt;0&lt;/itemlost&gt;
483
      &lt;publicationyear&gt;1985&lt;/publicationyear&gt;
484
      &lt;issues&gt;1&lt;/issues&gt;
485
      &lt;homebranch&gt;BIB&lt;/homebranch&gt;
486
      &lt;holdingbranch&gt;BIB&lt;/holdingbranch&gt;
487
      &lt;biblionumber&gt;4483&lt;/biblionumber&gt;
488
      &lt;renewals&gt;3&lt;/renewals&gt;
489
      &lt;damaged&gt;0&lt;/damaged&gt;
490
      &lt;cn_sort&gt;RO_STE&lt;/cn_sort&gt;
491
      &lt;frameworkcode&gt;&lt;/frameworkcode&gt;
492
      &lt;datelastborrowed&gt;2008-08-23&lt;/datelastborrowed&gt;
493
    &lt;/loan&gt;
494
    &lt;loan&gt;
495
      &lt;lastreneweddate&gt;2009-03-17&lt;/lastreneweddate&gt;
496
      &lt;isbn&gt;9782700017823&lt;/isbn&gt;
497
      &lt;borrowernumber&gt;419&lt;/borrowernumber&gt;
498
      &lt;branchcode&gt;BIB&lt;/branchcode&gt;
499
      &lt;itemnumber&gt;4456&lt;/itemnumber&gt;
500
      &lt;date_due&gt;2009-04-18&lt;/date_due&gt;
501
      &lt;barcode&gt;2700017UUU&lt;/barcode&gt;
502
      &lt;datelastseen&gt;2008-08-23&lt;/datelastseen&gt;
503
      &lt;issuedate&gt;2008-08-23&lt;/issuedate&gt;
504
      &lt;title&gt;La guitare en 10 leçons&lt;/title&gt;
505
      &lt;itemtype&gt;LITT&lt;/itemtype&gt;
506
      &lt;author&gt;Jon Buck&lt;/author&gt;
507
      &lt;timestamp&gt;2009-03-17 16:48:14&lt;/timestamp&gt;
508
      &lt;publishercode&gt;Gründ&lt;/publishercode&gt;
509
      &lt;datecreated&gt;2008-08-23&lt;/datecreated&gt;
510
      &lt;totalrenewals&gt;6&lt;/totalrenewals&gt;
511
      &lt;dateaccessioned&gt;2008-08-23&lt;/dateaccessioned&gt;
512
      &lt;notes&gt;La couv. porte en plus : "un guide simple et facile pour apprendre la guitare" | Glossaire. Index&lt;/notes&gt;
513
      &lt;onloan&gt;2008-09-25&lt;/onloan&gt;
514
      &lt;biblioitemnumber&gt;4486&lt;/biblioitemnumber&gt;
515
      &lt;withdrawn&gt;0&lt;/withdrawn&gt;
516
      &lt;notforloan&gt;0&lt;/notforloan&gt;
517
      &lt;replacementpricedate&gt;2008-08-23&lt;/replacementpricedate&gt;
518
      &lt;itemcallnumber&gt;787.87 BUC&lt;/itemcallnumber&gt;
519
      &lt;location&gt;Salle de lecture&lt;/location&gt;
520
      &lt;itemlost&gt;0&lt;/itemlost&gt;
521
      &lt;publicationyear&gt;2007&lt;/publicationyear&gt;
522
      &lt;issues&gt;1&lt;/issues&gt;
523
      &lt;homebranch&gt;BIB&lt;/homebranch&gt;
524
      &lt;holdingbranch&gt;BIB&lt;/holdingbranch&gt;
525
      &lt;biblionumber&gt;4486&lt;/biblionumber&gt;
526
      &lt;renewals&gt;3&lt;/renewals&gt;
527
      &lt;damaged&gt;0&lt;/damaged&gt;
528
      &lt;cn_sort&gt;78787_BUC&lt;/cn_sort&gt;
529
      &lt;volume&gt;une méthode simple et facile pour apprendre la guitare&lt;/volume&gt;
530
      &lt;frameworkcode&gt;&lt;/frameworkcode&gt;
531
      &lt;datelastborrowed&gt;2008-08-23&lt;/datelastborrowed&gt;
532
    &lt;/loan&gt;
533
  &lt;/loans&gt;
534
&lt;/GetPatronInfo&gt;</pre>
535
536
[% ELSIF ( GetPatronStatus ) %]
537
538
                <h2>GetPatronStatus</h2>
539
                <p>Returns a patron's status information from Koha.</p>
540
                <h4>Parameters</h4>
541
                <dl>
542
                    <dt><strong>patron_id</strong> (Required)</dt>
543
                    <dd>the unique patron identifier in the ILS; the same identifier returned by LookupPatron or AuthenticatePatron</dd>
544
                </dl>
545
                <h4>Example call</h4>
546
                <a href="ilsdi.pl?service=GetPatronStatus&amp;patron_id=1">
547
                    ilsdi.pl?service=GetPatronStatus&amp;patron_id=1
548
                </a>
549
                <h4>Example Response</h4>
550
<pre>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
551
&lt;GetPatronStatus&gt;
552
  &lt;expiry&gt;2010-03-04&lt;/expiry&gt;
553
  &lt;status&gt;0&lt;/status&gt;
554
  &lt;type&gt;ADUEXT&lt;/type&gt;
555
&lt;/GetPatronStatus&gt;</pre>
556
557
[% ELSIF ( GetServices ) %]
558
559
                <h2>GetServices</h2>
560
                <p>Returns information about the services available on a particular item for a particular patron.</p>
561
                <h4>Parameters</h4>
562
                <dl>
563
                    <dt><strong>patron_id</strong> (Required)</dt>
564
                    <dd>the unique patron identifier in the ILS; the same identifier returned by LookupPatron or AuthenticatePatron</dd>
565
                    <dt><strong>item_id</strong> (Required)</dt>
566
                    <dd>system item identifier</dd>
567
                </dl>
568
                <h4>Example call</h4>
569
                <a href="ilsdi.pl?service=GetServices&amp;patron_id=1&amp;item_id=1">
570
                    ilsdi.pl?service=GetServices&amp;patron_id=1&amp;item_id=1
571
                </a>
572
                <h4>Example response</h4>
573
<pre>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
574
&lt;GetServices&gt;
575
  &lt;AvailableFor&gt;title level hold&lt;/AvailableFor&gt;
576
  &lt;AvailableFor&gt;item level hold&lt;/AvailableFor&gt;
577
&lt;/GetServices&gt;</pre>
578
579
[% ELSIF ( RenewLoan ) %]
580
581
                <h2>RenewLoan</h2>
582
                <p>Extends the due date for a patron's existing loan.</p>
583
                <h4>Parameters</h4>
584
                <dl>
585
                    <dt><strong>patron_id</strong> (Required)</dt>
586
                    <dd>the unique patron identifier in the ILS; the same identifier returned by LookupPatron or AuthenticatePatron</dd>
587
                    <dt><strong>item_id</strong> (Required)</dt>
588
                    <dd>system item identifier</dd>
589
                    <dt><strong>desired_due_date</strong> (Required)</dt>
590
                    <dd>the date the patron would like the item returned by</dd>
591
                </dl>
592
                <h4>Example call</h4>
593
                <a href="ilsdi.pl?service=RenewLoan&amp;patron_id=1&amp;item_id=1">
594
                    ilsdi.pl?service=RenewLoan&amp;patron_id=1&amp;item_id=1
595
                </a>
596
                <h4>Example response</h4>
597
<pre>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
598
&lt;RenewLoan&gt;
599
  &lt;success&gt;0&lt;/success&gt;
600
  &lt;renewals&gt;5&lt;/renewals&gt;
601
  &lt;date_due&gt;2009-05-11&lt;/date_due&gt;
602
&lt;/RenewLoan&gt;</pre>
603
604
[% ELSIF ( HoldTitle ) %]
605
606
                <h2>HoldTitle</h2>
607
                <p>Creates, for a patron, a title-level hold request on a given bibliographic record in Koha.</p>
608
                <h4>Parameters</h4>
609
                <dl>
610
                    <dt><strong>patron_id</strong> (Required)</dt>
611
                    <dd>the ILS identifier for the patron for whom the request is placed</dd>
612
                    <dt><strong>bib_id</strong> (Required)</dt>
613
                    <dd>the ILS identifier for the bibliographic record on which the request is placed</dd>
614
                    <dt><strong>request_location</strong> (Required)</dt>
615
                    <dd>IP address where the end user request is being placed</dd>
616
                    <dt><strong>pickup_location</strong> (Optional)</dt>
617
                    <dd>an identifier indicating the location to which to deliver the item for pickup</dd>
618
                    <dt><strong>needed_before_date</strong> (Optional)</dt>
619
                    <dd>date after which hold request is no longer needed</dd>
620
                    <dt><strong>pickup_expiry_date</strong> (Optional)</dt>
621
                    <dd>date after which item returned to shelf if item is not picked up</dd>
622
                </dl>
623
                <h4>Example Call</h4>
624
                <a href="ilsdi.pl?service=HoldTitle&amp;patron_id=1&amp;bib_id=1&amp;request_location=127.0.0.1">
625
                    ilsdi.pl?service=HoldTitle&amp;patron_id=1&amp;bib_id=1&amp;request_location=127.0.0.1
626
                </a>
627
                <h4>Example response</h4>
628
<pre>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
629
&lt;HoldTitle&gt;
630
  &lt;title&gt;(les) galères de l'Orfèvre&lt;/title&gt;
631
  &lt;date_available&gt;2009-05-11&lt;/date_available&gt;
632
  &lt;pickup_location&gt;Bibliothèque Jean-Prunier&lt;/pickup_location&gt;
633
&lt;/HoldTitle&gt;</pre>
634
635
[% ELSIF ( HoldItem ) %]
636
637
                <h2>HoldItem</h2>
638
                <p>Creates, for a patron, an item-level hold request on a specific item of a bibliographic record Koha.</p>
639
                <h4>Parameters</h4>
640
                <dl>
641
                    <dt><strong>patron_id</strong> (Required)</dt>
642
                    <dd>the ILS identifier for the patron for whom the request is placed</dd>
643
                    <dt><strong>bib_id</strong> (Required)</dt>
644
                    <dd>the ILS identifier for the bibliographic record on which the request is placed</dd>
645
                    <dt><strong>item_id</strong> (Required)</dt>
646
                    <dd>the ILS identifier for the specific item on which the request is placed</dd>
647
                    <dt><strong>pickup_location</strong> (Optional)</dt>
648
                    <dd>an identifier indicating the location to which to deliver the item for pickup</dd>
649
                    <dt><strong>needed_before_date</strong> (Optional)</dt>
650
                    <dd>date after which hold request is no longer needed</dd>
651
                    <dt><strong>pickup_expiry_date</strong> (Optional)</dt>
652
                    <dd>date after which item returned to shelf if item is not picked up</dd>
653
                </dl>
654
                <h4>Example Call</h4>
655
                <a href="ilsdi.pl?service=HoldItem&amp;patron_id=1&amp;bib_id=1&amp;item_id=1">
656
                    ilsdi.pl?service=HoldItem&amp;patron_id=1&amp;bib_id=1&amp;item_id=1
657
                </a>
658
                <h4>Example response</h4>
659
<pre>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
660
&lt;HoldTitle&gt;
661
  &lt;title&gt;(les) galères de l'Orfèvre&lt;/title&gt;
662
  &lt;date_available&gt;2009-05-11&lt;/date_available&gt;
663
  &lt;pickup_location&gt;Bibliothèque Jean-Prunier&lt;/pickup_location&gt;
664
&lt;/HoldTitle&gt;</pre>
665
666
[% ELSIF ( CancelHold ) %]
667
668
                <h2>CancelHold</h2>
669
                <p>Cancels an active hold request for the patron.</p>
670
                <h4>Parameters</h4>
671
                <dl>
672
                    <dt><strong>patron_id</strong> (Required)</dt>
673
                    <dd>the unique patron identifier in the ILS; the same identifier returned by LookupPatron or AuthenticatePatron</dd>
674
                    <dt><strong>item_id</strong> (Required)</dt>
675
                    <dd>system item identifier</dd>
676
                </dl>
677
                <h4>Example call</h4>
678
                <a href="ilsdi.pl?service=CancelHold&amp;patron_id=1&amp;item_id=1">
679
                    ilsdi.pl?service=CancelHold&amp;patron_id=1&amp;item_id=1
680
                </a>
681
                <h4>Example response</h4>
682
<pre>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
683
&lt;CancelHold&gt;
684
  &lt;message&gt;Canceled&lt;/message&gt;
685
&lt;/CancelHold&gt;</pre>
686
687
[% ELSE %]
688
689
                <h2>Level 1: Basic discovery interfaces</h2>
690
                <ul>
691
                    <li>HarvestBibliographicRecords <em>(Use OAI-PMH instead)</em></li>
692
                    <li>HarvestExpandedRecords <em>(Use OAI-PMH instead)</em></li>
693
                    <li><a href="ilsdi.pl?service=Describe&amp;verb=GetAvailability">GetAvailability</a></li>
694
                    <li>GoToBibliographicRequestPage <em>(Use OPAC instead)</em></li>
695
                </ul>
696
                <h2>Level 2: Elementary OPAC supplement</h2>
697
                <ul>
698
                    <li>HarvestAuthorityRecords <em>(Use OAI-PMH instead)</em></li>
699
                    <li>HarvestHoldingsRecords <em>(Use OAI-PMH instead)</em></li>
700
                    <li><a href="ilsdi.pl?service=Describe&amp;verb=GetRecords">GetRecords</a></li>
701
                    <li>Search <em>(Use SRU instead)</em></li>
702
                    <li>Scan <em>(Use SRU instead)</em></li>
703
                    <li><a href="ilsdi.pl?service=Describe&amp;verb=GetAuthorityRecords">GetAuthorityRecords</a></li>
704
                    <li>OutputRewritablePage <em>(Not supported yet)</em></li>
705
                    <li>OutputIntermediateFormat <em>(Not supported yet)</em></li>
706
                </ul>
707
                <h2>Level 3: Elementary OPAC alternative</h2>
708
                <ul>
709
                    <li><a href="ilsdi.pl?service=Describe&amp;verb=LookupPatron">LookupPatron</a></li>
710
                    <li><a href="ilsdi.pl?service=Describe&amp;verb=AuthenticatePatron">AuthenticatePatron</a></li>
711
                    <li><a href="ilsdi.pl?service=Describe&amp;verb=GetPatronInfo">GetPatronInfo</a></li>
712
                    <li><a href="ilsdi.pl?service=Describe&amp;verb=GetPatronStatus">GetPatronStatus</a></li>
713
                    <li><a href="ilsdi.pl?service=Describe&amp;verb=GetServices">GetServices</a></li>
714
                    <li><a href="ilsdi.pl?service=Describe&amp;verb=RenewLoan">RenewLoan</a></li>
715
                    <li><a href="ilsdi.pl?service=Describe&amp;verb=HoldTitle">HoldTitle</a></li>
716
                    <li><a href="ilsdi.pl?service=Describe&amp;verb=HoldItem">HoldItem</a></li>
717
                    <li><a href="ilsdi.pl?service=Describe&amp;verb=CancelHold">CancelHold</a></li>
718
                    <li>RecallItem <em>(Not supported by Koha)</em></li>
719
                    <li>CancelRecall <em>(Not supported by Koha)</em></li>
720
                </ul>
721
                <h2>Level 4: Robust/domain specific discovery platforms</h2>
722
                <ul>
723
                    <li>SearchCourseReserves <em>(Not supported yet)</em></li>
724
                    <li>Explain <em>(Not supported yet)</em></li>
725
                </ul>
726
727
[% END %]
728
729
	  </div></div>
730
	</div>
731
	[% IF ( OpacNav ) %]
732
	<div class="yui-b"><div id="leftmenus" class="container">
733
	[% INCLUDE 'navigation.inc' %]
734
	</div></div>
735
	[% END %]
736
  </div>
737
</div>
738
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/maintenance.tt (-27 lines)
Lines 1-27 Link Here
1
[% INCLUDE 'doc-head-open.inc' %]
2
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog
3
[% INCLUDE 'doc-head-close.inc' %]
4
<style type="text/css">
5
#opac-maintenance-message {
6
background:none repeat scroll 0 0 #FFFFFF;
7
border:1px solid #A2A2A2;
8
margin:4em auto;
9
padding:1.5em;
10
position:relative;
11
right:auto;
12
top:auto;
13
width:50%;
14
}
15
</style>
16
</head>
17
<body><div id="doc3" class="yui-t7">
18
  [% IF ( opacheader ) %]
19
	[% opacheader %]
20
  [% END %]
21
   <div id="bd">
22
<div id="opac-maintenance-message">
23
<h2>System maintenance</h2>
24
<p>The [% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog is offline for system maintenance. We'll be back soon! If you have any questions, please contact the <a href="mailto:[% KohaAdminEmailAddress %]">site administrator</a></p>
25
</div>
26
</div>
27
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-ISBDdetail.tt (-57 lines)
Lines 1-57 Link Here
1
[% USE Koha %]
2
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; ISBD view
3
[% INCLUDE 'doc-head-close.inc' %]
4
<script type="text/javascript">
5
//<![CDATA[
6
    YAHOO.util.Event.onContentReady("furtherm", function () {
7
        $("#furtherm").css("display","block").css("visibility","hidden");
8
        $("#furthersearches").parent().show();
9
        var furthersearchesMenu = new YAHOO.widget.Menu("furtherm");
10
            furthersearchesMenu.render();
11
            furthersearchesMenu.cfg.setProperty("context", ["furthersearches", "tr", "br"]);
12
            furthersearchesMenu.subscribe("beforeShow",positionfurthersearchesMenu);
13
            furthersearchesMenu.subscribe("show", furthersearchesMenu.focus);
14
            function positionfurthersearchesMenu() {
15
                        furthersearchesMenu.align("tr", "br");
16
            }
17
            YAHOO.util.Event.addListener("furthersearches", "click", furthersearchesMenu.show, null, furthersearchesMenu);
18
            YAHOO.widget.Overlay.windowResizeEvent.subscribe(positionfurthersearchesMenu);
19
     });
20
//]]>
21
</script>
22
</head>
23
<body id="opac-isbddetail">
24
25
<div id="doc3" class="yui-t7">
26
   <div id="bd">
27
[% INCLUDE 'masthead.inc' %]
28
29
30
    <div id="yui-main">
31
    <div class="yui-b">
32
    <div id="opac-detail" class="yui-ge">
33
    <div class="yui-u first">
34
    <div id="userisbddetail" class="container">
35
    <div id="catalogue_detail_biblio">
36
	
37
     <div id="views">
38
     <span class="view"><a id="Normalview" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% biblionumber %]">Normal view</a></span> <span class="view"><a id="MARCview" href="/cgi-bin/koha/opac-MARCdetail.pl?biblionumber=[% biblionumber %]">MARC view</a></span> <span class="view"><span id="ISBDview">ISBD view</span></span></div>
39
40
    <div id="isbdcontents">[% ISBD %]</div>
41
42
	</div>
43
	</div>
44
	</div>
45
	<div class="yui-u">
46
	<div id="ulactioncontainer" class="container">
47
48
[% INCLUDE 'opac-detail-sidebar.inc' %]
49
50
</div>
51
</div>
52
</div>
53
54
</div>
55
</div>
56
57
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-MARCdetail.tt (-220 lines)
Lines 1-220 Link Here
1
[% USE Koha %]
2
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo;  MARC details for record no. [% biblionumber %]
3
[% INCLUDE 'doc-head-close.inc' %]
4
<script type="text/javascript">
5
//<![CDATA[
6
    YAHOO.util.Event.onContentReady("furtherm", function () {
7
        $("#furtherm").css("display","block").css("visibility","hidden");
8
        $("#furthersearches").parent().show();
9
        var furthersearchesMenu = new YAHOO.widget.Menu("furtherm");
10
            furthersearchesMenu.render();
11
            furthersearchesMenu.cfg.setProperty("context", ["furthersearches", "tr", "br"]);
12
            furthersearchesMenu.subscribe("beforeShow",positionfurthersearchesMenu);
13
            furthersearchesMenu.subscribe("show", furthersearchesMenu.focus);
14
            function positionfurthersearchesMenu() {
15
                        furthersearchesMenu.align("tr", "br");
16
            }
17
            YAHOO.util.Event.addListener("furthersearches", "click", furthersearchesMenu.show, null, furthersearchesMenu);
18
            YAHOO.widget.Overlay.windowResizeEvent.subscribe(positionfurthersearchesMenu);
19
     });
20
[% IF ( OPACXSLTDetailsDisplay ) %]
21
$(document).ready(function(){
22
    $.ajaxSetup({
23
        error:function(x,e){
24
            switch (x.status) {
25
                case 200: break;
26
                default:
27
                $('#switchview').parent().html("<div class=\"dialog alert\">"+_("Sorry, plain view is temporarily unavailable")+".</div>");
28
                $("#plainmarc").hide();
29
                $("#labeledmarc").show();
30
                break;
31
            }
32
        }
33
    });
34
35
    var loaded = 0;
36
    var toggle = 0;
37
    $("#switchview").on("click",function(e){
38
        e.preventDefault();
39
        if( toggle == 0){
40
            $(this).text(_("view labeled"));
41
            $("#labeledmarc").hide();
42
            if(!loaded){
43
                $("#plainmarc").show().html("<div style=\"margin:1em;padding:1em;border:1px solid #EEE;font-size:150%;\"><img src=\"[% interface %]/[% theme %]/images/loading.gif\" /> "+_("Loading")+"...</div>").load("/cgi-bin/koha/opac-showmarc.pl","id=[% biblionumber %]&viewas=html");
44
                loaded = 1;
45
            } else {
46
                $("#plainmarc").show();
47
            }
48
            toggle = 1;
49
        } else {
50
            $(this).text(_("view plain"));
51
            $("#labeledmarc").show();
52
            $("#plainmarc").hide();
53
            toggle = 0;
54
        }
55
    });
56
});
57
[% END %]
58
//]]>
59
</script>
60
</head>
61
<body id="opac-marcdetail">
62
63
<div id="doc3" class="yui-t7">
64
   <div id="bd">
65
[% INCLUDE 'masthead.inc' %]
66
67
    <div id="yui-main">
68
    <div class="yui-b"><div id="opac-detail" class="yui-ge">
69
    <div class="yui-u first">
70
    <div id="usermarcdetail" class="container">
71
    <div id="catalogue_detail_biblio">
72
73
    <div id="views">
74
    <span class="view"><a id="Normalview" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% biblionumber %]">Normal view</a></span>
75
76
<span class="view"><span id="MARCview">MARC view</span></span>
77
[% IF ( ISBD ) %]<span class="view"><a id="ISBDview"  href="/cgi-bin/koha/opac-ISBDdetail.pl?biblionumber=[% biblionumber %]">ISBD view</a></span>[% END %]
78
</div>
79
    <h1 class="title">[% bibliotitle %] (Record no. [% biblionumber %])</h1>
80
    [% IF ( OPACXSLTDetailsDisplay ) %]
81
    <div id="switchview_div">[ <a id="switchview" href="/cgi-bin/koha/opac-showmarc.pl?id=[% biblionumber %]&amp;viewas=html">view plain</a> ]</div>
82
    <div id="plainmarc"></div>[% END %]
83
    <div id="labeledmarc">
84
    <table id="marc">
85
        [% FOREACH tab0X IN tab0XX %]
86
        <tr><th colspan="2">[% tab0X.tag %]</th></tr>
87
        [% FOREACH subfiel IN tab0X.subfield %]
88
                <tr>
89
                    <td>[% subfiel.marc_lib %]</td>
90
                    <td>[% subfiel.marc_value %]</td>
91
                </tr>
92
            [% END %]
93
        [% END %]
94
        [% FOREACH tab1X IN tab1XX %]
95
        <tr><th colspan="2">[% tab1X.tag %]</th></tr>
96
        [% FOREACH subfiel IN tab1X.subfield %]
97
                <tr>
98
                    <td  >[% subfiel.marc_lib %]</td>
99
                    <td  >[% subfiel.marc_value %]</td>
100
                </tr>
101
            [% END %]
102
        [% END %]
103
104
        [% FOREACH tab2X IN tab2XX %]
105
        <tr><th colspan="2">[% tab2X.tag %]</th></tr>
106
        [% FOREACH subfiel IN tab2X.subfield %]
107
                <tr>
108
                    <td>[% subfiel.marc_lib %]</td>
109
                    <td>[% subfiel.marc_value %]</td>
110
                </tr>
111
            [% END %]
112
        [% END %]
113
114
        [% FOREACH tab3X IN tab3XX %]
115
        <tr><th colspan="2">[% tab3X.tag %]</th></tr>
116
        [% FOREACH subfiel IN tab3X.subfield %]
117
                <tr>
118
                    <td>[% subfiel.marc_lib %]</td>
119
                    <td>[% subfiel.marc_value %]</td>
120
                </tr>
121
            [% END %]
122
        [% END %]
123
124
        [% FOREACH tab4X IN tab4XX %]
125
        <tr><th colspan="2" >[% tab4X.tag %]</th></tr>
126
        [% FOREACH subfiel IN tab4X.subfield %]
127
                <tr>
128
                    <td>[% subfiel.marc_lib %]</td>
129
                    <td>[% subfiel.marc_value %]</td>
130
                </tr>
131
            [% END %]
132
        [% END %]
133
134
        [% FOREACH tab5X IN tab5XX %]
135
        <tr><th colspan="2">[% tab5X.tag %]</th></tr>
136
        [% FOREACH subfiel IN tab5X.subfield %]
137
                <tr>
138
                    <td>[% subfiel.marc_lib %]</td>
139
                    <td>[% subfiel.marc_value %]</td>
140
                </tr>
141
            [% END %]
142
        [% END %]
143
144
        [% FOREACH tab6X IN tab6XX %]
145
        <tr><th colspan="2">[% tab6X.tag %]</th></tr>
146
        [% FOREACH subfiel IN tab6X.subfield %]
147
                <tr>
148
                    <td>[% subfiel.marc_lib %]</td>
149
                    <td>[% subfiel.marc_value %]</td>
150
                </tr>
151
            [% END %]
152
        [% END %]
153
154
        [% FOREACH tab7X IN tab7XX %]
155
        <tr><th colspan="2">[% tab7X.tag %]</th></tr>
156
        [% FOREACH subfiel IN tab7X.subfield %]
157
                <tr>
158
                    <td>[% subfiel.marc_lib %]</td>
159
                    <td>[% subfiel.marc_value %]</td>
160
                </tr>
161
            [% END %]
162
        [% END %]
163
164
        [% FOREACH tab8X IN tab8XX %]
165
        <tr><th colspan="2">[% tab8X.tag %]</th></tr>
166
        [% FOREACH subfiel IN tab8X.subfield %]
167
                <tr>
168
                    <td>[% subfiel.marc_lib %]</td>
169
                    <td>[% subfiel.marc_value %]</td>
170
                </tr>
171
            [% END %]
172
        [% END %]
173
174
        [% FOREACH tab9X IN tab9XX %]
175
        <tr><th colspan="2">[% tab9X.tag %]</th></tr>
176
        [% FOREACH subfiel IN tab9X.subfield %]
177
                <tr>
178
                    <td>[% subfiel.marc_lib %]</td>
179
                    <td>[% subfiel.marc_value %]</td>
180
                </tr>
181
            [% END %]
182
        [% END %]
183
    </table>
184
    </div>
185
[% IF ( item_header_loop ) %]
186
        <table id="items">
187
            <caption>Holdings</caption>
188
                <tr>
189
                    [% FOREACH item_header_loo IN item_header_loop %]
190
                        <th>
191
                            [% item_header_loo.header_value %]
192
                        </th>
193
                    [% END %]
194
                </tr>
195
                [% FOREACH item_loo IN item_loop %]
196
                    <tr>
197
                        [% item_loo.item_value %]
198
                    </tr>
199
                [% END %]
200
        </table>[% ELSE %]
201
        <p>No items available.</p>
202
    [% END %]
203
    </div>
204
    </div>
205
    </div>
206
    <div class="yui-u">
207
    <div id="ulactioncontainer" class="container">
208
209
[% INCLUDE 'opac-detail-sidebar.inc' %]
210
211
</div>
212
</div>
213
</div>
214
215
</div>
216
</div>
217
218
</div>
219
[% INCLUDE 'opac-bottom.inc' %]
220
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-account.tt (-79 lines)
Lines 1-79 Link Here
1
[% USE Koha %]
2
[% USE KohaDates %]
3
4
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Your fines and charges
5
[% INCLUDE 'doc-head-close.inc' %]
6
</head>
7
<body id="opac-account">
8
<div id="doc3" class="yui-t1">
9
   <div id="bd">
10
[% INCLUDE 'masthead.inc' %]
11
12
	<div id="yui-main">
13
	<div class="yui-b"><div class="yui-g">
14
		<div id="useraccount" class="container">
15
<!--CONTENT-->
16
    [% FOREACH BORROWER_INF IN BORROWER_INFO %]
17
        <h3><a href="/cgi-bin/koha/opac-user.pl">[% BORROWER_INF.firstname %] [% BORROWER_INF.surname %]'s account</a> &#8674; Fines and charges</h3>
18
    [% END %]
19
20
    [% IF ( ACCOUNT_LINES ) %]
21
        <table>
22
            <thead>
23
                <tr>
24
                    <th>Date</th>
25
                    <th>Description</th>
26
                    <th>Fine amount</th>
27
                    <th>Amount outstanding</th>
28
                </tr>
29
            </thead>
30
31
            <tfoot>
32
            <tr>
33
                <th class="sum" colspan="3">Total due</th>
34
                <td class="sum">[% total %]</td>
35
            </tr>
36
            </tfoot>
37
38
            <tbody>
39
                [% FOREACH ACCOUNT_LINE IN ACCOUNT_LINES %]
40
                    [% IF ( ACCOUNT_LINE.odd ) %]<tr class="highlight">[% ELSE %]<tr>[% END %]
41
                        <td>[% ACCOUNT_LINE.date | $KohaDates %]</td>
42
                        <td>
43
                          [% SWITCH ACCOUNT_LINE.accounttype %]
44
                            [% CASE 'Pay' %]Payment,thanks
45
                            [% CASE 'Pay00' %]Payment,thanks (cash via SIP2)
46
                            [% CASE 'Pay01' %]Payment,thanks (VISA via SIP2)
47
                            [% CASE 'Pay02' %]Payment,thanks (credit card via SIP2)
48
                            [% CASE 'N' %]New Card
49
                            [% CASE 'F' %]Fine
50
                            [% CASE 'A' %]Account management fee
51
                            [% CASE 'M' %]Sundry
52
                            [% CASE 'L' %]Lost Item
53
                            [% CASE 'W' %]Writeoff
54
                            [% CASE %][% ACCOUNT_LINE.accounttype %]
55
                          [%- END -%]
56
                          [%- IF ACCOUNT_LINE.description %], [% ACCOUNT_LINE.description %][% END %]
57
                          [% IF ACCOUNT_LINE.title %]([% ACCOUNT_LINE.title %])[% END %]
58
                        </td>
59
                        [% IF ( ACCOUNT_LINE.amountcredit ) %]<td class="credit">[% ELSE %]<td class="debit">[% END %][% ACCOUNT_LINE.amount %]</td>
60
                        [% IF ( ACCOUNT_LINE.amountoutstandingcredit ) %]<td class="credit">[% ELSE %]<td class="debit">[% END %][% ACCOUNT_LINE.amountoutstanding %]</td>
61
                    </tr>
62
                [% END %]
63
            </tbody>
64
65
        </table>
66
    [% ELSE %]
67
        <h4>You have no fines or charges</h4>
68
    [% END %]
69
</div>
70
</div>
71
</div>
72
</div>
73
<div class="yui-b">
74
<div id="leftmenus" class="container">
75
[% INCLUDE 'navigation.inc' IsPatronPage=1 %]
76
</div>
77
</div>
78
</div>
79
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-addbybiblionumber.tt (-89 lines)
Lines 1-89 Link Here
1
[% INCLUDE 'doc-head-open.inc' %]
2
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Add to your list
3
<style type="text/css">
4
   #custom-doc { width:34.62em;*width:33.78em;min-width:450px; margin:auto; margin-top: .4em;text-align:left; }
5
   </style>
6
[% INCLUDE 'doc-head-close.inc' %]
7
</head>
8
<body id="addtolist">
9
<div id="custom-doc" class="yui-t7">
10
<div id="useraddbybiblionumber" class="container">
11
[% IF ( authorized ) %]
12
	[% UNLESS ( newshelf ) %]
13
		[% IF ( multiple ) %]
14
    		<h1>Add [% total %] items to [% IF ( singleshelf ) %]<em>[% shelfname %]</em>: [% ELSE %]a list:[% END %]</h1>
15
		[% ELSE %]
16
			<h1>Add to [% IF ( singleshelf ) %]<em>[% shelfname %]</em>[% ELSE %]a list:[% END %]</h1>
17
		[% END %]
18
    	<ul>
19
		[% FOREACH biblio IN biblios %]
20
    		<li> <span class="title">[% biblio.title |html %]</span>
21
        	[% IF ( biblio.author ) %]<span class="author"> [% biblio.author %] </span>[% END %]
22
        	</li>
23
        [% END %]
24
		</ul>
25
		[% IF ( existingshelves ) %]
26
			<form name="f1" action="/cgi-bin/koha/opac-addbybiblionumber.pl" method="post">
27
            <fieldset class="rows"><legend>Select a list</legend>
28
            <ol><li>    <label for="shelfnumber">Add to list:</label> <select name="shelfnumber" id="shelfnumber">
29
				[% IF ( privatevirtualshelves ) %]<optgroup label="Private Lists">
30
					[% FOREACH privatevirtualshelve IN privatevirtualshelves %]
31
					<option value="[% privatevirtualshelve.shelfnumber %]">[% privatevirtualshelve.shelfname %]</option>
32
					[% END %]
33
				</optgroup>[% END %]
34
				[% IF ( publicvirtualshelves ) %]<optgroup label="Public Lists">
35
					[% FOREACH publicvirtualshelve IN publicvirtualshelves %]
36
					<option value="[% publicvirtualshelve.shelfnumber %]">[% publicvirtualshelve.shelfname %]</option>
37
					[% END %]
38
				</optgroup>[% END %]
39
			</select></li></ol>
40
 			[% FOREACH biblio IN biblios %] <input type="hidden" name="biblionumber" value="[% biblio.biblionumber %]" />[% END %]
41
    		<input type="hidden" name="modifyshelfcontents" value="1" /></fieldset>
42
    		<fieldset class="action"><input type="submit" value="Save" class="submit" /> <a class="close cancel" href="#">Cancel</a></fieldset>
43
			</form>
44
			<p>...or...</p>
45
		[% ELSE %]
46
			[% IF ( singleshelf ) %]
47
				<form name="f1" action="/cgi-bin/koha/opac-addbybiblionumber.pl" method="post">
48
				[% FOREACH biblio IN biblios %] <input type="hidden" name="biblionumber" value="[% biblio.biblionumber %]">[% END %]
49
				<input type="hidden" name="shelfnumber" value="[% shelfnumber %]" />
50
				<input type="hidden" name="modifyshelfcontents" value="1" /></fieldset>
51
				<fieldset class="action"><input type="submit" value="Save" class="submit" /> <a class="close cancel" href="#">Cancel</a></fieldset>
52
				</form>
53
			[% END %]
54
		[% END %]
55
	[% END %]
56
	[% UNLESS ( singleshelf ) %]<form name="f2" method="post" action="/cgi-bin/koha/opac-addbybiblionumber.pl">
57
        <fieldset class="rows">    <legend>Add to a new list:</legend>
58
		<ol><li>
59
		<label for="newvirtualshelf">
60
        List name:
61
		</label>
62
		<input type="text" name="newvirtualshelf" id="newvirtualshelf" size="40" />
63
		</li>
64
		<li><label for="category">Category:</label>
65
		<select name="category" id="category">
66
		<option value="1">Private</option>
67
		[% IF (OpacAllowPublicListCreation) %]
68
			<option value="2">Public</option>
69
		[% END %]
70
		</select></li></ol></fieldset>
71
		[% FOREACH biblio IN biblios %] <input type="hidden" name="biblionumber" value="[% biblio.biblionumber | html%]" />[% END %]
72
		<fieldset class="action"><input type="submit" value="Save" class="submit" /> <a class="close cancel" href="#">Cancel</a></fieldset>
73
		</form>
74
	[% END %]
75
[% ELSE %]
76
	<p align="center">
77
	[% IF (errcode==1) %]
78
	Could not create new list. Please check if the name is unique.
79
	[% ELSE %]
80
	Sorry, you cannot add items to this list.
81
	[% END %]
82
	</p>
83
[% END %]
84
<p align="center">
85
    <a href="#" class="close">Close this window.</a>
86
</p>
87
</div></div>
88
</body>
89
</html>
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-advsearch.tt (-368 lines)
Lines 1-368 Link Here
1
[% USE Koha %]
2
[% INCLUDE 'doc-head-open.inc' %]
3
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %]
4
    catalog &rsaquo; Advanced search
5
[% INCLUDE 'doc-head-close.inc' %]
6
<script type="text/javascript" language="javascript">//<![CDATA[
7
            $(document).ready(function() {
8
            $('#advsearches').tabs();
9
});
10
    //]]>
11
</script>
12
</head>
13
<body id="advsearch"><div id="doc3" class="yui-t7">
14
<div id="bd">
15
[% INCLUDE 'masthead.inc' %]
16
<div id="yui-main">
17
<form action="/cgi-bin/koha/opac-search.pl" method="get">
18
    <div class="yui-g">
19
[% IF ( if_expanded_options_actually_worked ) %]
20
        <div id="databases" class="container"> [% IF ( outer_servers_loop ) %]
21
        <!-- DATABASES -->
22
            <fieldset>
23
                <legend>Select local databases:</legend>
24
                [% FOREACH outer_servers_loo IN outer_servers_loop %]
25
                    [% FOREACH inner_servers_loo IN outer_servers_loo.inner_servers_loop %]
26
27
[% IF ( inner_servers_loo.checked ) %]<input type="checkbox" id="[% inner_servers_loo.id %]" name="[% inner_servers_loo.name %]" checked="[% inner_servers_loo.checked %]" value="[% inner_servers_loo.value %]" />[% ELSE %]
28
                            <input type="checkbox" id="[% inner_servers_loo.id %]" name="[% inner_servers_loo.name %]"  value="[% inner_servers_loo.value %]" />[% END %]
29
                        <label for="[% inner_servers_loo.id %]"><img width="16" height="16" alt="[% inner_servers_loo.id %]" src="[% themelang %]/images/[% inner_servers_loo.icon %]" /> [% inner_servers_loo.label %]</label>
30
                    [% END %]
31
                [% END %]
32
            </fieldset>
33
        <!-- /DATABASES -->
34
        [% END %]
35
36
        [% IF ( outer_sup_servers_loop ) %]
37
            <!-- REMOTE DATABASES -->
38
            <fieldset>
39
                <legend>Select remote databases:</legend>
40
                [% FOREACH outer_sup_servers_loo IN outer_sup_servers_loop %]
41
                    [% FOREACH inner_sup_servers_loo IN outer_sup_servers_loo.inner_sup_servers_loop %]
42
43
[% IF ( inner_sup_servers_loo.checked ) %]<input type="checkbox" id="[% inner_sup_servers_loo.id %]" name="[% inner_sup_servers_loo.name %]" checked="[% inner_sup_servers_loo.checked %]" value="[% inner_sup_servers_loo.value %]" /><input type="checkbox" id="[% inner_sup_servers_loo.id %]" name="[% inner_sup_servers_loo.name %]" value="[% inner_sup_servers_loo.value %]" />
44
[% END %]
45
<label for="[% inner_sup_servers_loo.id %]"><img alt="[% inner_sup_servers_loo.id %]" src="[% themelang %]/images/[% inner_sup_servers_loo.icon %]" />[% inner_sup_servers_loo.label %]</label>
46
                    [% END %]
47
                [% END %]
48
            </fieldset>
49
            <!-- /REMOTE DATABASES -->
50
        [% END %]</div>
51
    [% END %]
52
53
    <!-- BOOLEAN SEARCH OPTIONS -->
54
    <div id="booleansearch" class="container"><fieldset>
55
        <legend>Search for:</legend>
56
    [% FOREACH search_box IN search_boxes_loop %]
57
        <p>
58
        [% IF ( expanded_options ) %]
59
            [% IF ( search_box.boolean ) %]
60
                <select name="op">
61
                    <option value="and" selected="selected">and</option>
62
                    <option value="or">or</option>
63
                    <option value="not">not</option>
64
                </select>
65
            [% END %]
66
        [% ELSE %]
67
            <label for="search-field_[% loop.index %]">
68
                [% IF loop.index == 0 %]
69
                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
70
                [% ELSE %]
71
                    and
72
                [% END %]
73
            </label>
74
            [% END %]
75
        [% IF ( expanded_options ) %][% left_content %][% END %] 
76
        <select name="idx" id="search-field_[% loop.index %]">
77
            <option value="kw">Keyword</option>
78
            <option value="su,wrdl">Subject</option>
79
[% IF ( expanded_options ) %]
80
            <option value="su,phr">&nbsp;&nbsp;&nbsp;&nbsp; Subject phrase</option>
81
            <option value="su-br">&nbsp;&nbsp;&nbsp;&nbsp; Subject and broader terms</option>
82
            <option value="su-na">&nbsp;&nbsp;&nbsp;&nbsp; Subject and narrower terms</option>
83
            <option value="su-rl">&nbsp;&nbsp;&nbsp;&nbsp; Subject and related terms</option>
84
[% END %]
85
            <option value="ti">Title</option>
86
[% IF ( expanded_options ) %]
87
            <option value="ti,phr">&nbsp;&nbsp;&nbsp;&nbsp; Title phrase</option>
88
            <option value="se,wrdl">Series title</option>
89
            [% IF ( numbersphr) %]
90
            <option value="callnum,phr">Call number</option>
91
            [% ELSE %]
92
            <option value="callnum">Call number</option>
93
            [% END %]
94
            <option value="location">Shelving location</option>
95
[% END %]
96
            <option value="au,wrdl">Author</option>
97
            
98
[% IF ( expanded_options ) %]
99
            <option value="au,phr">&nbsp;&nbsp;&nbsp;&nbsp; Author phrase</option>
100
            <option value="cpn,wrdl">&nbsp;&nbsp;&nbsp;&nbsp; Corporate name</option>
101
            <option value="cfn,wrdl">&nbsp;&nbsp;&nbsp;&nbsp; Conference name</option>
102
            <option value="cfn,phr">&nbsp;&nbsp;&nbsp;&nbsp; Conference name phrase</option>
103
            <option value="pn,wrdl">&nbsp;&nbsp;&nbsp;&nbsp; Personal name</option>
104
            <option value="pn,phr">&nbsp;&nbsp;&nbsp;&nbsp; Personal name phrase</option>
105
[% END %]
106
[% IF ( expanded_options ) %]
107
            <option value="nt">Notes/Comments</option>
108
    [% IF (marcflavour != 'UNIMARC') %]
109
            <option value="curriculum">Curriculum</option>
110
    [% END %]
111
[% END %]
112
            <option value="pb,wrdl">Publisher</option>
113
            <option value="pl,wrdl">Publisher location</option>
114
[% IF ( expanded_options ) %]
115
            [% IF ( numbersphr) %]
116
            <option value="sn,phr">Standard number</option>
117
            [% ELSE %]
118
            <option value="sn">Standard number</option>
119
            [% END %]
120
            <option value="nb">&nbsp;&nbsp;&nbsp;&nbsp; ISBN</option>
121
            <option value="ns">&nbsp;&nbsp;&nbsp;&nbsp; ISSN</option>
122
            [% IF ( numbersphr) %]
123
            <option value="lcn,phr">&nbsp;&nbsp;&nbsp;&nbsp; Call number</option>
124
            [% ELSE %]
125
            <option value="lcn">&nbsp;&nbsp;&nbsp;&nbsp; Call number</option>
126
            [% END %]
127
[% ELSE %]
128
            <option value="nb">ISBN</option>
129
[% END %]
130
            <option value="bc">Barcode</option>
131
        </select>
132
        <input type="text" size="30" name="q" title="Enter search terms" value="" />
133
[% IF ( expanded_options ) %]
134
        <!--   [% IF ( search_box.scan_index ) %]<input type="checkbox" name="scan" id="scan" value="1" /> Scan Indexes[% END %] -->
135
        [% IF ( !loop.first ) %]
136
            <a class="ButtonPlus" name="ButtonPlus" title="Add another field" href="#">[+]</a>
137
            <a class="ButtonLess" title="Remove field" href="#">[-]</a>
138
        [% END %]
139
[% END %]
140
        </p>
141
    [% END %]
142
143
    </fieldset></div>
144
    </div>
145
<div class="yui-g"><div class="container" style="text-align: center;"><!-- SEARCH BUTTONS -->
146
147
    <input class="submit" type="submit" accesskey="s" name="do" title="Search" value="Search" />
148
    [% IF ( expanded_options ) %]
149
        <a href="/cgi-bin/koha/opac-search.pl?expanded_options=0">[Fewer options]</a>
150
    [% ELSE %]
151
        <a href="/cgi-bin/koha/opac-search.pl?expanded_options=1">[More options]</a>
152
    [% END %]
153
    <a href="/cgi-bin/koha/opac-search.pl?do=Clear">[New search]</a>
154
155
<!-- /SEARCH BUTTONS --></div></div>
156
<div class="yui-g">
157
<div id="pubrange" class="container">
158
<fieldset>
159
<!-- PUB RANGE OPTION -->
160
<legend>Publication date range:</legend>
161
<p>For example:  1999-2001.  You could also use "-1987" for everything published in and before 1987 or "2008-" for everything published in 2008 and after.</p>
162
<input type="text" size="30" name="limit-yr" title="Enter search terms" value="" />
163
</fieldset>
164
<!-- /PUB RANGE OPTION -->
165
</div>
166
</div>
167
    <div class="yui-g">
168
      <div id="advsearches" class="toptabs">
169
      <ul>
170
      [% FOREACH advsearchloo IN advancedsearchesloop %]
171
        <li id="advsearch-tab-[% advsearchloo.advanced_search_type %]">
172
           <a href="#advsearch-[% advsearchloo.advanced_search_type %]">
173
           [% IF ( advsearchloo.advanced_search_type == 'itemtypes' ) %]Item type
174
           [% ELSIF ( advsearchloo.advanced_search_type == 'ccode' ) %]Collection
175
           [% ELSIF ( advsearchloo.advanced_search_type == 'loc' ) %]Shelving location
176
           [% ELSE %]Something else
177
           [% END %]
178
           </a>
179
        </li>
180
      [% END %]
181
      </ul>
182
<!-- /BOOLEAN SEARCH OPTIONS -->
183
    [% FOREACH advsearchloo IN advancedsearchesloop %]
184
    <div id="advsearch-[% advsearchloo.advanced_search_type %]" class="container advsearch">
185
    <fieldset>
186
    <legend>Limit to any of the following:</legend>
187
    <table>
188
        <tr>
189
    [% FOREACH itemtypeloo IN advsearchloo.code_loop %]
190
        <td><input type="checkbox" id="[% itemtypeloo.ccl FILTER remove(',') %]-[% itemtypeloo.number %]" name="limit" value="mc-[% itemtypeloo.ccl %]:[% itemtypeloo.code %]"/><label for="[% itemtypeloo.ccl FILTER remove(',') %]-[% itemtypeloo.number %]">[% UNLESS ( noItemTypeImages ) %][% IF ( itemtypeloo.imageurl ) %]<img border="0" src="[% itemtypeloo.imageurl %]" alt="[% itemtypeloo.description %]" />[% END %]&nbsp;[% END %]
191
        [% itemtypeloo.description %]</label></td>
192
        [% IF ( loop.last ) %]</tr>[% ELSE %][% UNLESS ( loop.count % 5 ) %]</tr><tr>[% END %][% END %]
193
    [% END %]
194
    </table>
195
    </fieldset>
196
    </div>
197
    [% END %]
198
    </div>
199
    <div id="langfilter">
200
    <fieldset><legend>Language</legend>
201
    <!-- LANGUAGE LIMIT -->
202
                <p><label for="language-limit">Language: </label>                                        
203
                <select id="language-limit" name="limit">
204
                <option value="">No limit</option>
205
                [% FOREACH search_languages_loo IN search_languages_loop %]
206
                    [% IF ( search_languages_loo.selected ) %]
207
                        <option value="ln,rtrn:[% search_languages_loo.iso639_2_code %]" selected="selected">[% search_languages_loo.language_description %]</option>
208
                    [% ELSE %]
209
                        <option value="ln,rtrn:[% search_languages_loo.iso639_2_code %]">[% search_languages_loo.language_description %]</option>
210
                    [% END %]
211
                [% END %]
212
                </select></p><!-- <a href="">Show all languages</a>-->
213
    <!-- /LANGUAGE LIMIT -->
214
    </fieldset>
215
    </div>
216
[% IF ( expanded_options ) %]
217
    [% IF ( usmarc ) %]
218
        <!-- SUBTYPE LIMITS -->
219
            <div id="subtypes" class="container"><fieldset>
220
            <legend>Subtype limits</legend><select name="limit" class="subtype">
221
                <option value="" selected="selected" class="menuheader">Any audience</option>
222
                    <option value="aud:a">Preschool</option>
223
                    <option value="aud:b">Primary</option>
224
                    <option value="aud:c">Pre-adolescent</option>
225
                    <option value="aud:d">Adolescent</option>
226
                    <option value="aud:e">Adult</option>
227
                    <option value="aud:f">Specialized</option>
228
                    <option value="aud:g">General</option>
229
                    <option value="aud:j">Juvenile</option>
230
                </select>
231
232
            <select name="limit" class="subtype">
233
                <option value="" selected="selected" class="menuheader">Any content</option>
234
                    <option value="fic:1">Fiction</option>
235
                    <option value="fic:0">Non fiction</option>
236
                    <option value="bio:b">Biography</option>
237
                    <option value="mus:j">Musical recording</option>
238
                    <option value="mus:i">Non-musical recording</option>
239
                </select>
240
    
241
            
242
            <select name="limit" class="subtype">
243
                <option value="" selected="selected" class="menuheader">Any format</option>
244
                    <option value="l-format:ta">Regular print</option>
245
                    <option value="l-format:tb">Large print</option>
246
                    <option value="l-format:fk">Braille</option>
247
                    <option value="">-----------</option>
248
                    <option value="l-format:sd">CD audio</option>
249
                    <option value="l-format:ss">Cassette recording</option>
250
                    <option value="l-format:vf">VHS tape / Videocassette</option>
251
                    <option value="l-format:vd">DVD video / Videodisc</option>
252
                    <option value="l-format:co">CD software</option>
253
                    <option value="l-format:cr">Website</option>
254
                </select>
255
            
256
            <select name="limit" class="subtype">
257
                <option value="">Additional content types for books/printed materials</option>
258
                    <option value="ctype:a">Abstracts/summaries</option>
259
                    <option value="ctype:b">Bibliographies</option>
260
                    <option value="ctype:c">Catalogs</option>
261
                    <option value="ctype:d">Dictionaries</option>
262
                    <option value="ctype:e">Encyclopedias </option>
263
                    <option value="ctype:f">Handbooks</option>
264
                    <option value="ctype:g">Legal articles</option>
265
                    <option value="ctype:i">Indexes</option>
266
                    <option value="ctype:j">Patent document</option>
267
                    <option value="ctype:k">Discographies</option>
268
                    <option value="ctype:l">Legislation</option>
269
                    <option value="ctype:m">Theses</option>
270
                    <option value="ctype:n">Surveys</option>
271
                    <option value="ctype:o">Reviews</option>
272
                    <option value="ctype:p">Programmed texts</option>
273
                    <option value="ctype:q">Filmographies</option>
274
                    <option value="ctype:r">Directories</option>
275
                    <option value="ctype:s">Statistics</option>
276
                    <option value="ctype:t">Technical reports</option>
277
                    <option value="ctype:v">Legal cases and case notes</option>
278
                    <option value="ctype:w">Law reports and digests</option>
279
                    <option value="ctype:z">Treaties </option>
280
                </select>
281
    
282
    </fieldset></div>
283
    [% END %]
284
    [% IF ( UNIMARC ) %]
285
        <div id="subtypes_unimarc" class="container"><!-- SUBTYPE LIMITS -->
286
    [% INCLUDE 'subtypes_unimarc.inc' %]</div>
287
    [% END %]
288
[% END %]
289
        
290
</div>
291
<div class="yui-g">
292
293
<div class="yui-u first">
294
<!-- AVAILABILITY LIMITS -->
295
    [% UNLESS ( singleBranchMode ) %]
296
    <div id="location" class="container"><fieldset><legend>Location and availability: </legend>
297
298
        <label for="branchloop">Library:</label>
299
        <select name="limit" id="branchloop">
300
        <option value="">All libraries</option>
301
        [% FOREACH BranchesLoo IN BranchesLoop %]
302
        [% IF ( BranchesLoo.selected ) %]
303
        <option value="branch:[% BranchesLoo.value %]" selected="selected">[% BranchesLoo.branchname %]</option>
304
        [% ELSE %]    
305
        <option value="branch:[% BranchesLoo.value %]">[% BranchesLoo.branchname %]</option>
306
        [% END %]    
307
        [% END %]
308
        </select>
309
        [% IF ( searchdomainloop ) %]
310
            <p>OR</p> <!-- should addjs to grey out group pulldown if a library is selected. -->
311
                <label for="categoryloop">Groups of libraries</label><select name="multibranchlimit" id="categoryloop">
312
                <option value=""> -- none -- </option>
313
                [% FOREACH searchdomainloo IN searchdomainloop %]
314
                <option value="[% searchdomainloo.categorycode %]">[% searchdomainloo.categoryname %]</option>
315
                [% END %]
316
                </select>
317
        [% END %]        
318
        <div style="margin-top:.4em"><label for="available-items"><input type="checkbox" id="available-items" name="limit" value="available" /> Only items currently available for loan or reference</label></div>
319
    </fieldset></div>
320
    [% END %]
321
<!-- /AVAILABILITY LIMITS -->
322
</div>
323
<div class="yui-u">
324
<!-- RANK LIMITS -->
325
    <div id="sortby" class="container"><fieldset><legend>Sorting: </legend>
326
        <label for="sort_by">Sort by:</label> <select id="sort_by" name="sort_by">
327
[% INCLUDE 'resort_form.inc' %]
328
</select></fieldset></div>
329
<!-- RANK LIMITS -->
330
</div>
331
</div>
332
333
<div class="yui-g"><div class="container" style="text-align: center;"><!-- SEARCH BUTTONS -->
334
335
    <input class="submit" type="submit" accesskey="s" name="do" title="Search" value="Search" />
336
    [% IF ( expanded_options ) %]
337
        <a href="/cgi-bin/koha/opac-search.pl?expanded_options=0">[Fewer options]</a>
338
    [% ELSE %]
339
        <a href="/cgi-bin/koha/opac-search.pl?expanded_options=1">[More options]</a>
340
    [% END %]
341
    <a href="/cgi-bin/koha/opac-search.pl?do=Clear">[New search]</a>
342
343
<!-- /SEARCH BUTTONS --></div></div>
344
</form>
345
</div>
346
<script type="text/javascript" language="javascript">
347
    /* This function allows to display a new field to search.
348
    */
349
    $(document).on("click", '.ButtonPlus', function(e) {
350
        e.preventDefault();
351
        $('.ButtonLess').show();
352
        var thisLine = $(this).parent();
353
        var newLine = thisLine.clone();
354
        newLine.find('input').val('');
355
        thisLine.after(newLine);
356
    });
357
358
    $(document).on("click", '.ButtonLess', function(e) {
359
        e.preventDefault();
360
        if($(this).parent().siblings().length <= 3 ) {
361
           $('.ButtonLess').hide();
362
        }
363
        $(this).parent().remove();
364
    });
365
</script>
366
367
</div>
368
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-alert-subscribe.tt (-43 lines)
Lines 1-43 Link Here
1
[% USE Koha %]
2
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo;  Serials
3
[% INCLUDE 'doc-head-close.inc' %]
4
</head>
5
<body id="opac-alert-subscribe">
6
[% INCLUDE 'masthead.inc' %]
7
8
<div id="doc3" class="yui-t1">
9
<div id="bd">
10
    <div id="yui-main">
11
    <div class="yui-b">
12
<div id="useralertsubscribe" class="container">    [% IF ( typeissue ) %]
13
        <h1 class="catalogue">Subscribe issue receive warning</h1>
14
            <form action="opac-alert-subscribe.pl" method="post">
15
                <p>Do you want to receive an email when a new issue of [% bibliotitle %] [% IF ( notes ) %]([% notes %])[% END %] arrives?</p>
16
                <input type="hidden" name="externalid" value="[% externalid %]">
17
                <input type="hidden" name="alerttype" value="issue">
18
                <input type="hidden" name="biblionumber" value="[% biblionumber %]">
19
                <input type="hidden" name="op" value="alert_confirmed">
20
                <input type="submit" value="Yes">
21
                <a href="opac-serial-issues.pl?biblionumber=[% biblionumber %]" >No</a>
22
            </form>
23
24
    [% END %]
25
    [% IF ( typeissuecancel ) %]
26
        <h1 class="catalogue">Unsubscribe</h1>
27
            <form action="opac-alert-subscribe.pl" method="post">
28
                <p>Please confirm that you do not want to receive email when a new issue arrives for this subscription</p>
29
                [% bibliotitle %] [% IF ( notes ) %]([% notes %])[% END %] ?</p>
30
                <input type="hidden" name="externalid" value="[% externalid %]">
31
                <input type="hidden" name="alerttype" value="issue">
32
                <input type="hidden" name="biblionumber" value="[% biblionumber %]">
33
                <input type="hidden" name="op" value="cancel_confirmed">
34
                <input type="submit" value="Yes" class="button">
35
                <a href="opac-serial-issues.pl?biblionumber=[% biblionumber %]" class="button">No</a>
36
            </form>
37
38
    [% END %]</div>
39
</div>
40
</div>
41
</div>
42
43
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-auth-MARCdetail.tt (-60 lines)
Lines 1-60 Link Here
1
[% USE Koha %]
2
[% PROCESS 'opac-authorities.inc' %]
3
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo;  Entry
4
[% INCLUDE 'doc-head-close.inc' %]
5
<script language="javascript" type="text/javascript" src="/opac-tmpl/lib/jquery/plugins/jquery.jstree.js"></script>
6
<script language="javascript" type="text/javascript">
7
//<![CDATA[
8
$(document).ready(function() {
9
    [% IF ( displayhierarchy ) %]
10
        var current_nodes = [];
11
        $('.currentauth').each(function() {
12
            current_nodes.push('#' + $(this).parent().parents('li:first').attr('id'));
13
            });
14
        $('#hierarchies').jstree({
15
                "plugins": [ "themes", "html_data"],
16
                "themes": { "theme": "classic",
17
                            "icons": false },
18
                "core": { "initially_open": current_nodes }
19
            });
20
    [% END %]
21
});
22
//]]>
23
</script>
24
</head>
25
<body id="opac-authoritiesdetail">
26
27
<div id="doc3" class="yui-t7">
28
   <div id="bd">
29
[% INCLUDE 'masthead.inc' %]
30
	<div id="yui-main">
31
	<div class="yui-b"><div class="yui-g">
32
<div id="userauthdetails" class="container">
33
34
    <div id="views"><span class="view"><a id="MARCview" href="/cgi-bin/koha/opac-authoritiesdetail.pl?authid=[% authid %]">Normal view</a></span> <span class="view"><span id="MARCview">MARC view</span></span></div>
35
36
[% IF ( displayhierarchy ) %]
37
<div id="hierarchies">
38
[% PROCESS showhierarchy trees = loophierarchies %]
39
</div>
40
[% END %]
41
42
<h1>Entry [% authtypetext %]</h1>
43
	<p>Used in <a href="opac-search.pl?type=opac&amp;q=[% authid %]&amp;idx=an,phr">[% count %] records</a></p>
44
        [% FOREACH Tag0X IN Tab0XX %]
45
        <p><b>[% Tag0X.tag %]</b></p>
46
        <ul>
47
        [% FOREACH subfiel IN Tag0X.subfield %]
48
            <p><b>[% subfiel.marc_lib %]:</b>
49
            [% IF subfiel.isurl %]<a href="[% subfiel.marc_value %]">[% subfiel.marc_value %]</a>
50
            [% ELSE %][% subfiel.marc_value %][% END %]</p>
51
        [% END %]
52
        </ul>
53
        [% END %]
54
</div>	
55
56
</div>
57
</div>
58
</div>
59
</div>
60
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-auth-detail.tt (-112 lines)
Lines 1-112 Link Here
1
[% USE Koha %]
2
[% PROCESS 'opac-authorities.inc' %]
3
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo;  Entry
4
[% INCLUDE 'doc-head-close.inc' %]
5
[% IF ( displayhierarchy ) %]
6
<script type="text/javascript" src="/opac-tmpl/lib/jquery/plugins/jquery.jstree.js"></script>
7
[% END %]
8
<script type="text/javascript">
9
//<![CDATA[
10
$(document).ready(function() {
11
    $('#authdescriptions').tabs();
12
    [% IF ( displayhierarchy ) %]
13
        var current_nodes = [];
14
        $('.currentauth').each(function() {
15
            current_nodes.push('#' + $(this).parent().parents('li:first').attr('id'));
16
            });
17
        $('#hierarchies').jstree({
18
                "plugins": [ "themes", "html_data"],
19
                "themes": { "theme": "classic",
20
                            "icons": false },
21
                "core": { "initially_open": current_nodes }
22
            });
23
    [% END %]
24
});
25
//]]>
26
</script>
27
</head>
28
<body id="opac-authoritiesdetail">
29
30
<div id="doc3" class="yui-t7">
31
   <div id="bd">
32
[% INCLUDE 'masthead.inc' %]
33
    <div id="yui-main">
34
    <div class="yui-b"><div class="yui-g">
35
36
    <div id="views"><span class="view"><span id="Normalview">Normal view</span></span> <span class="view"><a id="MARCview" href="/cgi-bin/koha/opac-authoritiesdetail.pl?authid=[% authid %]&amp;marc=1">MARC view</a></span></div>
37
38
<div id="userauthdetails" class="container">
39
40
[% IF ( displayhierarchy ) %]
41
<div id="hierarchies">
42
[% PROCESS showhierarchy trees = loophierarchies %]
43
</div>
44
[% END %]
45
46
<h1>[% summary.mainentry %][% IF authtypetext %] ([% authtypetext %])[% END %]</h1>
47
<div class="usedin">Used in <a href="opac-search.pl?type=opac&amp;q=[% authid %]&amp;idx=an,phr">[% count %] records</a></div>
48
<div class="authstanza">
49
[% FOREACH authorize IN summary.authorized %]
50
<div class="heading authorized auth[% seefro.field %]"><span class="label">Preferred form: </span><span class="authorized">[% authorize.heading %]</span></div>
51
[% END %]
52
[% PROCESS otherscript headings=summary.otherscript wantcategory='preferred' %]
53
</div>
54
[% IF summary.seefrom.size %]
55
    <div class="authstanza seefrom">
56
    <div class="authstanzaheading">Used for/see from:</div>
57
    <ul class="seefrom">
58
    [% FOREACH seefro IN summary.seefrom %]
59
        <li class="heading seefrom auth[% seefro.field %]">
60
        [% IF seefro.type && seefro.type != 'seefrom' %]<span class="label">[% PROCESS authtypelabel type=seefro.type | trim %]:</span>[% END %]
61
        <span class="seefrom">[% PROCESS authheadingdisplay heading=seefro.heading search=seefrosearch authid=seefro.authid %]</span>
62
        </li>
63
    [% END %]
64
    </ul>
65
    [% PROCESS otherscript headings=summary.otherscript wantcategory='seefrom' %]
66
    </div>
67
[% END %]
68
[% IF summary.seealso.size %]
69
    <div class="authstanza seealso">
70
    <div class="authstanzaheading">See also:</div>
71
    <ul class="seelso">
72
    [% FOREACH seeals IN summary.seealso %]
73
        <li class="heading seealso auth[% seeals.field %]">[% IF seeals.type && seeals.type != 'seealso' %]<span class="label">[% PROCESS authtypelabel type=seeals.type | trim %]:</span>[% END %]
74
        <span class="seealso">[% PROCESS authheadingdisplay heading=seeals.heading search=seeals.search authid=seeals.authid %]</span>
75
        </li>
76
    [% END %]
77
    [% PROCESS otherscript headings=summary.otherscript wantcategory='seealso' %]
78
    </div>
79
[% END %]
80
[% IF marcflavour == 'UNIMARC' && summary.otherscript %]
81
  <div class="authstanza">
82
    <div class="authstanzaheading">Other forms:</div>
83
    <ul>
84
    [% FOREACH otherscrip IN summary.otherscript %]
85
      <li>
86
        [% PROCESS language lang=otherscrip.lang | trim %]:
87
        <span class="otherscript">[% otherscrip.term %]</span>
88
      </li>
89
    [% END %]
90
    </ul>
91
  </div>
92
[% END %]
93
<div id="authdescriptions" class="toptabs">
94
<ul>
95
    <li id="tab_descriptions"><a href="#descriptions">Notes</a></li>
96
</ul>
97
<div id="descriptions">
98
<div class="content_set">
99
[% FOREACH note IN summary.notes %]
100
<p class="note auth[% note.field %]">[% note.note %]</p>
101
[% END %]
102
</div>
103
</div>
104
</div>
105
</div>
106
</div>
107
108
</div>
109
</div>
110
</div>
111
112
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-auth.tt (-121 lines)
Lines 1-121 Link Here
1
[% USE Koha %]
2
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %]
3
[% IF ( opacuserlogin ) %]
4
 catalog &rsaquo;  Log in to your account
5
[% ELSE %]
6
 catalog &rsaquo; Catalog login disabled
7
[% END %]
8
[% INCLUDE 'doc-head-close.inc' %]
9
10
<!-- Bug 4288: Hide circular 'Log in to Your Account' link in opac-auth.pl -->
11
<script type="text/javascript">
12
    $(document).ready(function() {
13
        if ( $("#auth" ) ) { $("#members ul li a").hide(); }
14
    });
15
</script>
16
</head>
17
<body id="opac-login-page">
18
<div id="doc3" class="yui-t7">
19
   <div id="bd">
20
[% INCLUDE 'masthead.inc' %]
21
22
	<div id="yui-g">
23
<div id="userauth" class="container">
24
<div id="opac-auth">
25
<!--CONTENT-->
26
[% IF ( opacuserlogin ) %]
27
[% IF ( nopermission ) %]
28
<!-- This is what is displayed if user doesnt have permission -->
29
<p>Sorry, the system doesn't think you have permission to access this page. </p>
30
[% END %]
31
[% IF ( loginprompt ) %]
32
<!-- login prompt time-->
33
<h3>Log In to Your Account</h3>
34
[% IF ( timed_out ) %]
35
<!-- This is what is displayed if login has timed out -->
36
<p>Sorry, your session has timed out.  Please log in again.</p>
37
[% END %]
38
39
[% IF ( different_ip ) %]
40
<!-- This is what is displayed if user doesnt have permission -->
41
<p>You are logging from a different IP address.  Please log in again.</p>
42
[% END %]
43
44
[% IF ( invalid_username_or_password ) %]
45
<!-- This is what is displayed if user doesnt have permission -->
46
<p>You entered an incorrect username or password. Please try again! And remember, usernames and passwords are case sensitive.</p>
47
[% END %]
48
49
[% IF ( casAuthentication ) %]
50
<h4>Cas login</h4>
51
52
[% IF ( invalidCasLogin ) %]
53
<!-- This is what is displayed if cas login has failed -->
54
<p>Sorry, the CAS login failed.</p>
55
[% END %]
56
57
<p>If you have a <acronym title="Central Authentication Service">CAS</acronym> account, 
58
[% IF ( casServerUrl ) %]
59
    please <a href="[% casServerUrl %]">click here to login</a>.<p>
60
[% END %]
61
62
[% IF ( casServersLoop ) %]
63
please choose against which one you would like to authenticate: </p>
64
<ul>
65
    [% FOREACH casServer IN casServersLoop %]
66
	<li><a href="[% casServer.value %]">[% casServer.name %]</a></li>
67
    [% END %]
68
[% END %]
69
</ul>
70
71
<h4>Local login</h4>
72
<p>If you do not have a CAS account, but a local account, you can still log in : </p>
73
74
[% END %]
75
76
<form action="[% url %]" name="auth" id="auth" method="post">
77
  <input type="hidden" name="koha_login_context" value="opac" />
78
<fieldset class="brief">[% FOREACH INPUT IN INPUTS %]
79
  <input type="hidden" name="[% INPUT.name |html %]" value="[% INPUT.value |html %]" />
80
[% END %]
81
<ol>
82
<li><label for="userid">Login</label>
83
<input type="text"  size="25" id="userid"  name="userid" /></li>
84
<li><label for="password">Password</label><input type="password"  size="25" id="password"  name="password" /></li>
85
</ol></fieldset>
86
87
<input type="submit" value="Log In" class="submit" />
88
<div id="nologininstructions">
89
[% IF Koha.Preference('NoLoginInstructions') %]
90
    [% Koha.Preference('NoLoginInstructions') %]
91
[% ELSE %]
92
    <h5>Don't have a password yet?</h5>
93
    <p>If you don't have a password yet, stop by the circulation desk the next time you're in the library. We'll happily set one up for you.</p>
94
    <h5>Don't have a library card?</h5>
95
    <p>If you don't have a library card, stop by your local library to sign up.</p>
96
[% END %]
97
[% IF PatronSelfRegistration && PatronSelfRegistrationDefaultCategory %]<span id="registrationinstructions">You may <a href="/cgi-bin/koha/opac-memberentry.pl">register here</a>.</span>[% END %]
98
</div>
99
</form>
100
101
102
[% END %]
103
[% ELSE %]
104
<h4>Logging on to the catalog has not been enabled by the library.</h4>
105
<ul>
106
  <li>To report this error, you can 
107
          <a href="mailto:[% admin %]">email the Koha Administrator</a>.</li>
108
  <li>Use top menu bar to navigate to another part of Koha.</li>
109
</ul>
110
[% END %]
111
112
[% IF persona %]
113
<a href="#" class="persona-button" id="browserid" ><span>Sign in with your Email</span></a>
114
[% END %]
115
116
</div>
117
</div>
118
</div>
119
</div>
120
121
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-authorities-home.tt (-62 lines)
Lines 1-62 Link Here
1
[% USE Koha %]
2
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Authority search
3
[% INCLUDE 'doc-head-close.inc' %]
4
</head>
5
<body id="opac-authorities">
6
[% IF ( OpacNav ) %]<div id="doc3" class="yui-t1">[% ELSE %]<div id="doc3" class="yui-t7">[% END %]
7
   <div id="bd">
8
[% INCLUDE 'masthead.inc' %]
9
10
	<div id="yui-main">
11
	<div class="yui-b"><div class="yui-g">
12
<div id="userauthhome" class="container">
13
<form name="f" action="/cgi-bin/koha/opac-authorities-home.pl" method="get">
14
        <input type="hidden" name="op" value="do_search" />
15
        <input type="hidden" name="type" value="opac" />
16
<fieldset class="rows">
17
            <legend>Authority search</legend>
18
<ol>
19
 <li><label for="authtypecode">Search: </label> <select name="authtypecode" id="authtypecode">
20
                [% FOREACH authtypesloo IN authtypesloop %]
21
                [% IF ( authtypesloo.selected ) %]<option value="[% authtypesloo.value %]" selected="selected">[% authtypesloo.authtypetext %]</option>
22
                [% ELSE %]<option value="[% authtypesloo.value %]"> [% authtypesloo.authtypetext %]</option>
23
                [% END %]
24
                [% END %]
25
                </select>
26
                <select name="operator" id="anywhere">
27
                    <option value="contains">contains</option>
28
                    <option value="start">starts with</option>
29
                    <option value="is">is exactly</option>
30
                </select>
31
                <input type="text" name="value" id="value" value="[% value %]" />
32
                <select name="marclist" id="marclist">
33
                    <option value="any" selected="selected">in keyword</option>
34
                    <option value="match">in any heading</option>
35
                    <option value="mainentry">in main entry</option>
36
                </select>
37
                <input type="hidden" name="and_or" value="and" />
38
                <input type="hidden" name="excluding" value="" />
39
            </li>
40
            <li><label for="orderby">Order by: </label><select name="orderby" id="orderby">
41
                <option value="">None</option>
42
                    <option value="HeadingAsc" selected="selected">Heading ascendant</option>
43
                    <option value="HeadingDsc">Heading descendant</option>
44
                </select>
45
            </li></ol>
46
			</fieldset>
47
            <fieldset class="action">
48
                <input type="submit" value="Submit" class="submit" />
49
            </fieldset>
50
    </form>
51
</div>
52
</div>
53
</div>
54
</div>
55
[% IF ( OpacNav ) %]
56
<div class="yui-b">
57
<div id="leftmenus" class="container">
58
[% INCLUDE 'navigation.inc' %]
59
</div>
60
</div>[% END %]
61
</div>
62
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-authoritiessearchresultlist.tt (-101 lines)
Lines 1-101 Link Here
1
[% USE Koha %]
2
[% PROCESS 'opac-authorities.inc' %]
3
[% PROCESS 'authorities-search-results.inc' %]
4
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; [% IF ( total ) %]Authority search result[% ELSE %]No results found[% END %]
5
[% INCLUDE 'doc-head-close.inc' %]
6
</head>
7
<body id="opac-authoritiesresultlist">
8
[% IF ( OpacNav ) %]<div id="doc3" class="yui-t1">[% ELSE %]<div id="doc3" class="yui-t7">[% END %]
9
   <div id="bd">
10
[% INCLUDE 'masthead.inc' %]
11
12
	<div id="yui-main">
13
	<div class="yui-b"><div class="yui-g">
14
<div id="userauthsearchresults" class="container">
15
	<h1>Authority search results</h1>
16
	<div id="pages">
17
			[% IF ( displayprev ) %]
18
				<a href="opac-authorities-home.pl?startfrom=[% startfromprev %]&amp;[% FOREACH searchdat IN searchdata %][% searchdat.term %]=[% searchdat.val |url %]&amp;[% END %]resultsperpage=[% resultsperpage %]&amp;type=opac&amp;op=do_search&amp;authtypecode=[% authtypecode %]&amp;orderby=[% orderby %]">
19
					&lt;&lt;
20
				</a>
21
			[% END %]
22
			[% FOREACH number IN numbers %]
23
				[% IF ( number.highlight ) %]
24
					<span class="current">[% number.number %]</span>
25
				[% ELSE %]
26
					<a href="opac-authorities-home.pl?startfrom=[% number.startfrom %]&amp;[% FOREACH searchdat IN number.searchdata %][% searchdat.term %]=[% searchdat.val |url %]&amp;[% END %]resultsperpage=[% resultsperpage %]&amp;type=opac&amp;op=do_search&amp;authtypecode=[% authtypecode %]&amp;orderby=[% orderby %]">[% number.number %]</a>
27
				[% END %]
28
			[% END %]
29
			[% IF ( displaynext ) %]
30
				<a href="opac-authorities-home.pl?startfrom=[% startfromnext %]&amp;[% FOREACH searchdat IN searchdata %][% searchdat.term %]=[% searchdat.val |url %]&amp;[% END %]&amp;resultsperpage=[% resultsperpage %]&amp;type=opac&amp;op=do_search&amp;authtypecode=[% authtypecode %]&amp;orderby=[% orderby %]">&gt;&gt;</a>
31
				[% END %]
32
		</div>
33
		<div id="results">
34
			[% IF ( total ) %]
35
                [% IF ( countfuzzy ) %]
36
                    <b>Showing [% resultcount %] of about [% total %] results</b>
37
                [% ELSE %]
38
                    <b>Results [% from %] to [% to %] of [% total %]</b>
39
                [% END %]
40
			[% ELSE %]
41
			No results found.
42
			[% END %]
43
		</div>
44
45
			[% IF ( total ) %]
46
<div class="searchresults">
47
    <table>
48
        <tr>
49
            <th>Authorized headings</th>
50
            <th>Type of heading</th>
51
        [% UNLESS ( isEDITORS ) %]
52
            <th>Biblio records</th>
53
        [% END %]
54
            <th>Full heading</th>
55
        </tr>
56
[% FOREACH resul IN result %]
57
    [% UNLESS ( loop.odd ) %]
58
        <tr class="highlight">
59
    [% ELSE %]
60
        <tr>
61
    [% END %]
62
            <td>[% PROCESS authresult summary=resul.summary %]</td>
63
            <td>[% resul.authtype %]</td>
64
        [% UNLESS ( resul.isEDITORS ) %]
65
            <td>
66
                <a href="/cgi-bin/koha/opac-search.pl?type=opac&amp;op=do_search&amp;q=an=[% resul.authid %]">[% resul.used %] biblios</a>
67
            </td>
68
        [% END %]
69
            <td>
70
                <a href="opac-authoritiesdetail.pl?authid=[% resul.authid %]">View full heading</a>
71
            </td>
72
        </tr>
73
[% END %]
74
    </table>
75
</div>
76
	<div id="resultnumber">
77
			[% IF ( displayprev ) %]
78
				<a href="opac-authorities-home.pl?startfrom=[% startfromprev %]&amp;[% FOREACH searchdat IN searchdata %][% searchdat.term %]=[% searchdat.val |url %]&amp;[% END %]resultsperpage=[% resultsperpage %]&amp;type=opac&amp;op=do_search&amp;authtypecode=[% authtypecode %]&amp;orderby=[% orderby %]">&lt;&lt;</a>
79
			[% END %]
80
			[% FOREACH number IN numbers %]
81
				[% IF ( number.highlight ) %]<span class="current">[% number.number %]</span>[% ELSE %]
82
					<a href="opac-authorities-home.pl?startfrom=[% number.startfrom %]&amp;[% FOREACH searchdat IN number.searchdata %][% searchdat.term %]=[% searchdat.val |url %]&amp;[% END %]resultsperpage=[% resultsperpage %]&amp;type=opac&amp;op=do_search&amp;authtypecode=[% authtypecode %]&amp;orderby=[% orderby %]">[% number.number %]</a>
83
				[% END %]
84
			[% END %]
85
			[% IF ( displaynext ) %]
86
				<a href="opac-authorities-home.pl?startfrom=[% startfromnext %]&amp;[% FOREACH searchdat IN searchdata %][% searchdat.term %]=[% searchdat.val |url %]&amp;[% END %]&amp;resultsperpage=[% resultsperpage %]&amp;type=opac&amp;op=do_search&amp;authtypecode=[% authtypecode %]&amp;orderby=[% orderby %]">&gt;&gt;</a>
87
				[% END %]
88
	</div>	
89
			[% END %]
90
</div>
91
</div>
92
</div>
93
</div>
94
[% IF ( OpacNav ) %]
95
<div class="yui-b">
96
<div id="leftmenus" class="container">
97
[% INCLUDE 'navigation.inc' %]
98
</div>
99
</div>[% END %]
100
</div>
101
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-basket.tt (-407 lines)
Lines 1-407 Link Here
1
[% SET TagsInputEnabled = ( opacuserlogin && TagsEnabled && TagsInputOnList ) %]
2
3
[% INCLUDE 'doc-head-open.inc' %]
4
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Your cart
5
[% INCLUDE 'doc-head-close.inc' %]
6
    [% IF ( print_basket ) %]
7
    <script type="text/javascript">
8
    //<![CDATA[
9
    var IEprint=0;
10
    $(document).ready(function(){
11
        if(navigator.appName.indexOf("Internet Explorer")>-1) {
12
        // too bad that we need this trick to make printing work in IE...
13
            window.setTimeout(function () {IE_Print_Page();}, 500);
14
        }
15
        else {
16
            print();
17
            location.href="/cgi-bin/koha/opac-basket.pl?bib_list=[% bib_list %][% IF ( verbose ) %]&verbose=1[% END %]";
18
        }
19
    });
20
    function IE_Print_Page() {
21
        if(IEprint==0) {
22
            IEprint++;
23
            window.print(); // IE needs the window object here
24
            window.onfocus=function() { // focus will not work in Firefox a.o.
25
                location.href="/cgi-bin/koha/opac-basket.pl?bib_list=[% bib_list %][% IF ( verbose ) %]&verbose=1[% END %]"; }
26
        }
27
    }
28
    //]]>
29
    </script>
30
    [% ELSE %]
31
    <script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.checkboxes.min.js"></script>
32
    [% INCLUDE 'datatables.inc' %]
33
    <script type="text/javascript">
34
    //<![CDATA[
35
36
$(document).ready(function(){
37
    $("#itemst").dataTable($.extend(true, {}, dataTablesDefaults, {
38
        "aaSorting": [[ 1, "asc" ]],
39
        "aoColumnDefs": [
40
          { "aTargets": [ 0,-1 ], "bSortable": false, "bSearchable": false }
41
        ],
42
        "aoColumns": [
43
            null,
44
            { "sType": "anti-the" },
45
            null,
46
            null,
47
            null
48
        ]
49
    }));
50
51
    $(".cb").click(function(){
52
      enableCheckboxActions();
53
    });
54
    enableCheckboxActions();
55
    }
56
);
57
58
[% IF ( TagsInputEnabled && loggedinusername ) %]
59
function tagSelected() {
60
    var bibs = document.getElementById('records').value;
61
    if (bibs) {
62
        $("#tagsel_tag").hide();
63
        $("#tag_hides").hide();
64
        $("#tagsel_form").show();
65
    } else {
66
        alert(MSG_NO_RECORD_SELECTED);
67
    }
68
}
69
70
function tagCanceled() {
71
    $("#tagsel_form").hide();
72
    $("#tagsel_tag").show();
73
    $("#tag_hides").show();
74
    $("#tagsel_new").val("");
75
    $(".tagstatus").empty().hide();
76
}
77
78
function tagAdded() {
79
    var checkedBoxes = $("input:checkbox:checked");
80
    if (!$(checkedBoxes).size()) {
81
        alert(MSG_NO_RECORD_SELECTED);
82
        return false;
83
    }
84
85
    var tag = $("#tagsel_new").val();
86
    if (!tag || (tag == "")) {
87
        alert(MSG_NO_TAG_SPECIFIED);
88
        return false;
89
    }
90
91
    var bibs = [];
92
    for (var i = 0; i < $(checkedBoxes).size(); i++) {
93
        var box = $(checkedBoxes).get(i);
94
        bibs[i] = $(box).val();
95
    }
96
97
    KOHA.Tags.add_multitags_button(bibs, tag);
98
    return false;
99
}
100
[% END %]
101
    $(document).ready(function(){
102
        $("#CheckAll").click(function(){
103
            var checked = [];
104
            $(".checkboxed").checkCheckboxes("*", true).each(
105
                function() {
106
                    selRecord(this.value,true);
107
                }
108
            );
109
            enableCheckboxActions();
110
            return false;
111
        });
112
        $("#CheckNone").click(function(){
113
        var checked = [];
114
        $(".checkboxed").unCheckCheckboxes("*",true).each(
115
            function() {
116
                selRecord(this.value,false);
117
            }
118
        );
119
        enableCheckboxActions();
120
            return false;
121
        });
122
123
    });
124
125
function enableCheckboxActions(){
126
    // Enable/disable controls if checkboxes are checked
127
    var checkedBoxes = $(".checkboxed input:checkbox:checked");
128
    if ($(checkedBoxes).size()) {
129
      $("#selections").html(_("With selected titles: "));
130
      $("#selections-toolbar .links a").removeClass("disabled");
131
    } else {
132
      $("#selections").html(_("Select titles to: "));
133
      $("#selections-toolbar .links a").addClass("disabled");
134
    }
135
}
136
    //]]>
137
    </script>
138
    [% END %]
139
</head>
140
<body id="basket" class="popup">
141
142
<div id="doc" class="yui-t7">
143
<div id="userbasket" class="container">
144
<h2>Your Cart</h2>
145
146
[% UNLESS ( print_basket ) %]
147
<div id="toolbar">
148
<ul>
149
    <li>[% IF ( verbose ) %]<a href="opac-basket.pl" class="brief" onclick="showLess(); return false;">Brief display</a>[% ELSE %]<a href="opac-basket.pl" class="detail" onclick="showMore(); return false;">More details</a>[% END %]</li>
150
    [% IF ( opacuserlogin ) %]<li><a class="send" href="opac-basket.pl" onclick="sendBasket(); return false;">Send</a></li>[% END %]
151
    <li><a class="download" href="opac-basket.pl" onclick="downloadBasket(); return false;">Download</a></li>
152
    <li><a class="print" href="opac-basket.pl" onclick="printBasket(); return false;">Print</a></li>
153
    <li><a class="empty" href="opac-basket.pl" onclick="delBasket(); return false;">Empty and close</a></li>
154
    <li><a class="hide close" href="opac-basket.pl">Hide window</a></li>
155
</ul>
156
</div>
157
[% END %]
158
159
[% UNLESS ( print_basket ) %]
160
<div id="selections-toolbar">
161
    <a id="CheckAll" href="#">Select all</a>
162
    <a id="CheckNone" href="#">Clear all</a>
163
    <span class="sep">|</span>
164
    <span class="links" id="tag_hides">
165
        <span id="selections">Select titles to: </span>
166
        <a href="#" class="deleteshelf disabled" onclick="delSelRecords(); return false;">Remove</a>
167
        [% IF ( opacuserlogin ) %]
168
          [% IF ( virtualshelves ) %][% IF ( loggedinusername ) %]
169
          <a href="#" class="newshelf disabled" onclick="addSelToShelf(); return false;">Add to a list</a>
170
          [% END %][% END %]
171
          [% IF ( RequestOnOpac ) %]<a href="#" class="hold disabled" onclick="holdSel(); return false;">Place hold</a>[% END %]
172
          [% IF ( TagsInputEnabled && loggedinusername ) %]
173
          <a href="#" id="tagsel_tag" class="disabled" onclick="tagSelected(); return false;">Tag</a>
174
          [% END %]
175
        [% END %]
176
    </span>
177
    [% IF ( TagsInputEnabled && loggedinusername ) %]
178
    <span id="tagsel_form" style="display:none">
179
        <label for="tagsel_new">New tag:</label>
180
        <input name="tagsel_new" id="tagsel_new" maxlength="100" />
181
        <input id="tagsel_button" name="tagsel_button" class="input tagsel_button" title="Add" type="submit" value="Add" onclick="tagAdded(); return false;" />
182
        <a href="#" id="tagsel_cancel" onclick="tagCanceled(); return false;">Cancel</a>
183
    </span>
184
    [% END %]
185
</div>
186
[% END %]
187
188
[% IF ( verbose ) %]
189
            <form action="opac-basket.pl" method="get" name="bookbag_form" id="bookbag_form" class="checkboxed">
190
    [% FOREACH BIBLIO_RESULT IN BIBLIO_RESULTS %]
191
    <h3>
192
        [% IF ( print_basket ) %]
193
            [% BIBLIO_RESULT.title |html %]
194
                [% IF ( BIBLIO_RESULT.subtitle ) %] [% FOREACH subtitl IN BIBLIO_RESULT.subtitle %] [% subtitl.subfield |html %] [% END %][% END %]
195
                [% IF ( BIBLIO_RESULT.author ) %] [% BIBLIO_RESULT.author |html %][% END %]
196
        [% ELSE %]
197
                <input type="checkbox" class="cb" value="[% BIBLIO_RESULT.biblionumber %]" name="bib[% BIBLIO_RESULT.biblionumber %]" id="bib[% BIBLIO_RESULT.biblionumber %]" onclick="selRecord(value,checked)" />
198
                [% BIBLIO_RESULT.title |html %]
199
                [% IF ( BIBLIO_RESULT.subtitle ) %] [% FOREACH subtitl IN BIBLIO_RESULT.subtitle %] [% subtitl.subfield |html %] [% END %][% END %]
200
                [% IF ( BIBLIO_RESULT.author ) %] [% BIBLIO_RESULT.author |html %][% END %]
201
        [% END %]
202
    </h3>
203
        <!-- COinS / Openurl -->
204
    <span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.au=[% BIBLIO_RESULT.author %]&amp;rft.btitle=[% BIBLIO_RESULT.title |url %]&amp;rft.date=[% BIBLIO_RESULT.publicationyear %]&amp;rft.tpages=[% BIBLIO_RESULT.size %]&amp;rft.isbn=[% BIBLIO_RESULT.isbn |url %]&amp;rft.aucorp=&amp;rft.place=[% BIBLIO_RESULT.place %]&amp;rft.pub=[% BIBLIO_RESULT.publisher |url %]&amp;rft.edition=[% BIBLIO_RESULT.edition %]&amp;rft.series=[% BIBLIO_RESULT.series %]&amp;rft.genre="></span>
205
    <table>
206
        [% IF ( BIBLIO_RESULT.isbn ) %]
207
        <tr>
208
            <th scope="row">ISBN</th>
209
            <td>[% BIBLIO_RESULT.isbn %]</td>
210
        </tr>
211
        [% END %]
212
213
        [% IF ( BIBLIO_RESULT.HASAUTHORS ) %]
214
        <tr>
215
            <th scope="row">Author(s)</th>
216
            <td>
217
                   [% IF ( BIBLIO_RESULT.author ) %]
218
                       <p>[% BIBLIO_RESULT.author %]</p>
219
                   [% END %]
220
                   [% IF ( BIBLIO_RESULT.MARCAUTHORS ) %]
221
                       [% FOREACH MARCAUTHOR IN BIBLIO_RESULT.MARCAUTHORS %]
222
                       <p> [% FOREACH MARCAUTHOR_SUBFIELDS_LOO IN MARCAUTHOR.MARCAUTHOR_SUBFIELDS_LOOP %]
223
                              [% MARCAUTHOR_SUBFIELDS_LOO.separator %]
224
                                  [% MARCAUTHOR_SUBFIELDS_LOO.value %]
225
                           [% END %]
226
                       </p>
227
                       [% END %]
228
                   [% END %]
229
        </td>
230
        </tr>
231
        [% END %]
232
233
        [% IF ( BIBLIO_RESULT.publishercode ) %]
234
            <tr>
235
                <th scope="row">Publisher</th>
236
                <td>[% BIBLIO_RESULT.place %] [% BIBLIO_RESULT.publishercode %] [% BIBLIO_RESULT.publicationyear %]
237
                </td>
238
            </tr>
239
        [% END %]
240
        [% IF ( BIBLIO_RESULT.pages ) %]
241
            <tr>
242
                <th scope="row">Details</th>
243
                <td>[% BIBLIO_RESULT.pages %] [% BIBLIO_RESULT.illus %] [% BIBLIO_RESULT.size %]</td>
244
            </tr>
245
        [% END %]
246
        [% IF ( BIBLIO_RESULT.seriestitle ) %]
247
        <tr>
248
            <th scope="row">Collection</th>
249
            <td> [% BIBLIO_RESULT.seriestitle %]</td>
250
        </tr>
251
        [% END %]
252
253
        [% IF ( BIBLIO_RESULT.MARCSUBJCTS ) %]
254
        <tr>
255
            <th scope="row">Subject(s)</th>
256
            <td>[% FOREACH MARCSUBJCT IN BIBLIO_RESULT.MARCSUBJCTS %]
257
                   <p> [% FOREACH MARCSUBJECT_SUBFIELDS_LOO IN MARCSUBJCT.MARCSUBJECT_SUBFIELDS_LOOP %]
258
                        [% MARCSUBJECT_SUBFIELDS_LOO.separator %][% MARCSUBJECT_SUBFIELDS_LOO.value %][% END %]
259
                   </p>
260
                [% END %]</td>
261
        </tr>
262
        [% END %]
263
264
        [% IF ( BIBLIO_RESULT.copyrightdate ) %]
265
            <tr><th scope="row">Copyright</th>
266
                <td> [% BIBLIO_RESULT.copyrightdate %]</td>
267
            </tr>
268
        [% END %]
269
270
        [% IF ( BIBLIO_RESULT.MARCNOTES ) %]
271
        <tr>
272
            <th scope="row">Notes</th>
273
            <td>
274
            [% FOREACH MARCNOTE IN BIBLIO_RESULT.MARCNOTES %]
275
                <p>- [% MARCNOTE.marcnote %]</p>
276
            [% END %]</td>
277
        </tr>
278
        [% END %]
279
280
        [% IF ( BIBLIO_RESULT.unititle ) %]
281
        <tr>
282
            <th scope="row">Unified title</th>
283
            <td> [% BIBLIO_RESULT.unititle %]</td>
284
        </tr>
285
        [% END %]
286
        [% IF ( BIBLIO_RESULT.serial ) %]
287
        <tr>
288
            <th scope="row">Serial</th>
289
            <td>[% BIBLIO_RESULT.serial %]</td>
290
        </tr>
291
        [% END %]
292
        [% IF ( BIBLIO_RESULT.dewey ) %]
293
        <tr>
294
            <th scope="row">Dewey</th>
295
            <td>[% BIBLIO_RESULT.dewey %]</td>
296
        </tr>
297
        [% END %]
298
        [% IF ( BIBLIO_RESULT.classification ) %]
299
        <tr>
300
            <th scope="row">Classification</th>
301
            <td> [% BIBLIO_RESULT.classification %]</td>
302
        </tr>
303
        [% END %]
304
        [% IF ( BIBLIO_RESULT.lccn ) %]
305
        <tr>
306
            <th scope="row">LCCN</th>
307
            <td> [% BIBLIO_RESULT.lccn %]</td>
308
        </tr>
309
        [% END %]
310
311
        [% IF ( BIBLIO_RESULT.MARCurlS ) %]
312
        <tr>
313
            <th scope="row">URL(s)</th>
314
            <td>
315
               [% FOREACH MARCurl IN BIBLIO_RESULT.MARCurlS %]
316
                    <p>
317
                    [% IF ( MARCurl.part ) %][% MARCurl.part %]
318
                        <br />
319
                    [% END %]
320
321
                    [% MARCurl.MARCurl %]
322
                        [% IF ( MARCurl.notes ) %][% FOREACH note IN MARCurl.notes %][% note.note %]<br />[% END %][% END %]
323
                    [% END %]
324
                    </p>
325
            </td>
326
        </tr>[% END %]
327
328
        <tr>
329
            <th scope="row">Location(s) (Status)</th>
330
            <td>[% IF ( BIBLIO_RESULT.ITEM_RESULTS ) %]<ul>[% FOREACH ITEM_RESULT IN BIBLIO_RESULT.ITEM_RESULTS %]
331
                            <li>
332
                                <strong>[% ITEM_RESULT.branchname %]</strong>[% IF ( ITEM_RESULT.location_opac ) %], [% ITEM_RESULT.location_opac %][% END %]
333
                                [% IF ( ITEM_RESULT.itemcallnumber ) %]
334
                                    ([% ITEM_RESULT.itemcallnumber %])
335
                                [% END %]
336
                                ([% INCLUDE 'item-status.inc' item = ITEM_RESULT %])
337
                            </li>
338
                            [% END %]</ul>[% ELSE %]This record has no items.[% END %]</td>
339
        </tr>
340
    </table>
341
    [% END %]
342
            </form>
343
344
[% ELSE %]
345
<form action="/cgi-bin/koha/opac-basket.pl" method="get" name="bookbag_form" id="bookbag_form" class="checkboxed">
346
    <table id="itemst">
347
    <thead>
348
        <tr>
349
            [% UNLESS ( print_basket ) %]<th>&nbsp;</th>[% END %]
350
            <th>Title</th>
351
            <th>Author</th>
352
            <th>Year</th>
353
            <th>Location (Status)</th>
354
        </tr>
355
    </thead>
356
357
        [% FOREACH BIBLIO_RESULT IN BIBLIO_RESULTS %]
358
            [% IF ( BIBLIO_RESULT.even ) %]
359
                <tr class="highlight">
360
            [% ELSE %]
361
                <tr>
362
            [% END %]
363
            [% UNLESS ( print_basket ) %]<td>
364
                        <input type="checkbox" class="cb" value="[% BIBLIO_RESULT.biblionumber %]" name="bib[% BIBLIO_RESULT.biblionumber %]" id="bib[% BIBLIO_RESULT.biblionumber %]" onclick="selRecord(value,checked);" />
365
366
                </td> [% END %]
367
            <td>
368
                <a href="#" onclick="openBiblio('[% BIBLIO_RESULT.dest %]',[% BIBLIO_RESULT.biblionumber %])">[% BIBLIO_RESULT.title |html %][% IF ( BIBLIO_RESULT.subtitle ) %] [% FOREACH subtitl IN BIBLIO_RESULT.subtitle %][% subtitl.subfield |html %][% END %][% END %]</a>
369
                <!-- COinS / Openurl -->
370
                <span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.au=[% BIBLIO_RESULT.author %]&amp;rft.btitle=[% BIBLIO_RESULT.title |url %]&amp;rft.date=[% BIBLIO_RESULT.publicationyear %]&amp;rft.tpages=[% BIBLIO_RESULT.size %]&amp;rft.isbn=[% BIBLIO_RESULT.isbn |url %]&amp;rft.aucorp=&amp;rft.place=[% BIBLIO_RESULT.place %]&amp;rft.pub=[% BIBLIO_RESULT.publisher |url %]&amp;rft.edition=[% BIBLIO_RESULT.edition %]&amp;rft.series=[% BIBLIO_RESULT.series %]&amp;rft.genre="></span>
371
                [% IF ( TagsInputEnabled && loggedinusername ) %]
372
                <span id="newtag[% BIBLIO_RESULT.biblionumber %]_status" class="tagstatus results_summary" style="display:none">Tag status here.</span>
373
                [% END %]
374
            </td>
375
            <td>[% BIBLIO_RESULT.author %]</td>
376
            <td>
377
                [% IF ( BIBLIO_RESULT.publicationyear ) %]
378
                    [% BIBLIO_RESULT.publicationyear %]
379
                [% ELSE %]
380
                    [% BIBLIO_RESULT.copyrightdate %]
381
                [% END %]
382
            </td>
383
            <td>[% IF ( BIBLIO_RESULT.ITEM_RESULTS ) %]<ul>[% FOREACH ITEM_RESULT IN BIBLIO_RESULT.ITEM_RESULTS %]
384
                <li>
385
                    [% ITEM_RESULT.branchname %][% IF ( ITEM_RESULT.location_opac ) %], [% ITEM_RESULT.location_opac %][% END %]
386
                    [% IF ( ITEM_RESULT.itemcallnumber ) %]
387
                        ([% ITEM_RESULT.itemcallnumber %])
388
                    [% END %]
389
                    ([% INCLUDE 'item-status.inc' item = ITEM_RESULT %])
390
                </li>
391
                [% END %]</ul>[% ELSE %]This record has no items.[% END %]
392
            </td>
393
        </tr>
394
        [% END %]
395
    </table></form>
396
[% END %]
397
398
[% UNLESS ( print_basket ) %]
399
<form name="myform" action="opac-basket.pl" method="get">
400
    <input type="hidden" name="records" id="records" />
401
</form>
402
[% END %]
403
404
</div>
405
</div>
406
</body>
407
</html>
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-blocked.tt (-32 lines)
Lines 1-32 Link Here
1
[% USE Koha %]
2
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo;  Blocked
3
[% INCLUDE 'doc-head-close.inc' %]
4
</head>
5
<body id="opac-blocked">
6
[% IF ( OpacNav ) %]<div id="doc3" class="yui-t1">[% ELSE %]<div id="doc3" class="yui-t7">[% END %]
7
<div id="bd">
8
[% INCLUDE 'masthead.inc' %]
9
10
<div id="yui-main">
11
<div class="yui-b">
12
<div class="yui-g">
13
            <div id="opac-blocked-message">
14
                <h3>Blocked</h3>
15
                <p>You are not authorized to view this record.</p>
16
                [% IF ( OpacSuppressionMessage ) %]
17
                    <div id="opacsuppressionmessage">
18
                        <p>[% OpacSuppressionMessage %]</p>
19
                    </div>
20
                [% END %]
21
            </div>
22
</div>
23
</div>
24
</div>
25
[% IF ( OpacNav ) %]
26
<div class="yui-b">
27
<div id="leftmenus" class="container">
28
[% INCLUDE 'navigation.inc' %]
29
</div>
30
</div>[% END %]
31
</div>
32
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-browser.tt (-57 lines)
Lines 1-57 Link Here
1
[% USE Koha %]
2
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo;  ISBD
3
[% INCLUDE 'doc-head-close.inc' %]
4
</head>
5
<body id="opac-browser">
6
	[% IF ( OpacNav ) %]<div id="doc3" class="yui-t1">[% ELSE %]<div id="doc3" class="yui-t7">[% END %]
7
   <div id="bd">
8
[% INCLUDE 'masthead.inc' %]
9
10
	<div id="yui-main">
11
	<div class="yui-b"><div class="yui-g">
12
<div id="userbrowser" class="container">
13
    <h1>Browse our catalogue</h1>
14
        [% IF ( have_hierarchy ) %]
15
        <ul>
16
        <li>
17
            [% description %] <a href="opac-browser.pl">Top level</a>
18
        </li>
19
        <li style="list-style-type: none;"><ul>
20
        [% FOREACH HIERARCHY_LOO IN HIERARCHY_LOOP %]
21
                <li>
22
                    <a href="opac-browser.pl?level=[% HIERARCHY_LOO.level %]&amp;filter=[% HIERARCHY_LOO.classification |uri %]">[% HIERARCHY_LOO.description |html %]</a>
23
                </li>
24
            <li  style="list-style-type: none;"><ul>
25
        [% END %]
26
        <li style="list-style-type: none;"><table><tr>
27
        [% FOREACH LEVEL_LOO IN LEVEL_LOOP %]
28
                <td width="33%">
29
                <p>
30
                [% IF ( LEVEL_LOO.endnode ) %]
31
                    <a href="opac-search.pl?q=Dewey-classification:[% LEVEL_LOO.classification |uri %]">[% LEVEL_LOO.description |html %]</a>
32
                [% ELSE %]
33
                    <a href="opac-browser.pl?level=[% LEVEL_LOO.level %]&amp;filter=[% LEVEL_LOO.classification |uri %]">[% LEVEL_LOO.description |html %]</a>
34
                [% END %]</p>
35
                <p style="font-size:0.75em"><i>([% LEVEL_LOO.number %] biblios)</i></p>
36
                </td>
37
                [% IF ( LEVEL_LOO.count3 ) %]</tr><tr>[% END %]
38
        [% END %]
39
        </tr></table></li>
40
        [% FOREACH HIERARCHY_LOO IN HIERARCHY_LOOP %]
41
            </ul></li>
42
        [% END %]
43
        </ul></li></ul>
44
        [% ELSE %]
45
            <div class="warning">The browser table is empty. this feature is not fully set-up. See the <a href="http://wiki.koha-community.org/wiki/Opac_browse_feature">Koha Wiki</a> for more information on what it does and how to configure it.</div>
46
        [% END %]
47
</div></div>
48
</div>
49
</div>
50
[% IF ( OpacNav ) %]
51
<div class="yui-b">
52
<div id="leftmenus" class="container">
53
[% INCLUDE 'navigation.inc' %]
54
</div>
55
</div>[% END %]
56
</div>
57
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-course-details.tt (-78 lines)
Lines 1-78 Link Here
1
[% USE Koha %]
2
[% USE KohaDates %]
3
[% USE AuthorisedValues %]
4
[% USE ItemTypes %]
5
[% USE Branches %]
6
[% INCLUDE 'doc-head-open.inc' %]
7
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Course reserves for [% course.course_name %]
8
[% INCLUDE 'doc-head-close.inc' %]
9
</head>
10
<body id="opac-main">
11
[% IF ( OpacNav ) %]<div id="doc3" class="yui-t1">[% ELSE %]<div id="doc3" class="yui-t7">[% END %]
12
   <div id="bd">
13
[% INCLUDE 'masthead.inc' %]
14
15
<div id="doc2" class="yui-t7">
16
    <div id="yui-main">
17
        <h2><a href="/cgi-bin/koha/opac-course-reserves.pl">Course reserves</a> &#8674; Course reserves for <i>[% course.course_name %]</i></h2>
18
        <div class="rows clearfix">
19
            <ol>
20
                [% IF ( course.term ) %]<li><span class="label">Term:</span> [% AuthorisedValues.GetByCode( 'TERM', course.term ) %]</li>[% END %]
21
                <li><span class="label">Department:</span> [% AuthorisedValues.GetByCode( 'DEPARTMENT', course.department ) %]</li>
22
                [% IF ( course.course_number ) %]<li><span class="label">Course number:</span> [% course.course_number %]</li>[% END %]
23
                [% IF ( course.section ) %]<li><span class="label">Section:</span> [% course.section %]</li>[% END %]
24
                [% IF ( course.instructors ) %]
25
                    <li><span class="label">Instructors:</span>
26
                        <ul>
27
                            [% FOREACH i IN course.instructors %]
28
                                <li><div class="instructor">[% i.firstname %] [% i.surname %]</div></li>
29
                            [% END %]
30
                        </ul>
31
                    </li>
32
                [% END %]
33
                [% IF ( course.public_note ) %]<li><span class="label">Notes:</span> [% course.public_note %]</li>[% END %]
34
            </ol>
35
        </div>
36
37
        [% IF ( course_reserves ) %]
38
            <table>
39
                <thead>
40
                    <tr>
41
                        <th>Title</th>
42
                        <th>Item type</th>
43
                        <th>Location</th>
44
                        <th>Collection</th>
45
                        <th>Call number</th>
46
                        <th>Copy number</th>
47
                        <th>Status</th>
48
                        <th>Date due</th>
49
                        <th>Notes</th>
50
                    </tr>
51
                </thead>
52
53
                <tbody>
54
                    [% FOREACH cr IN course_reserves %]
55
                        <tr>
56
                            <td><a href="opac-detail.pl?biblionumber=[% cr.item.biblionumber %]">[% cr.item.title %]</a></td>
57
                            <td>[% ItemTypes.GetDescription( cr.item.itype ) %]</td>
58
                            <td>[% Branches.GetName( cr.item.holdingbranch ) %] <br/> <i>[% AuthorisedValues.GetByCode( 'LOC', cr.item.location ) %]</i></td>
59
                            <td>[% AuthorisedValues.GetByCode( 'CCODE', cr.item.ccode ) %]</td>
60
                            <td>[% cr.item.itemcallnumber %]</td>
61
                            <td>[% cr.item.copynumber %]</td>
62
                            <td>[% INCLUDE 'item-status.inc' item=cr.item issue=cr.issue %]</td>
63
                            <td>[% cr.issue.date_due | $KohaDates as_due_date => 1 %]</td>
64
                            <td>[% cr.public_note %]</td>
65
                        </tr>
66
                    [% END %]
67
                </tbody>
68
            </table>
69
        [% ELSE %]
70
            <br style="clear:both;" />
71
            <div class="dialog message">
72
                <p>No reserves have been selected for this course.</p>
73
            </div>
74
        [% END %]
75
    </div>
76
</div>
77
</div>
78
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-course-reserves.tt (-65 lines)
Lines 1-65 Link Here
1
[% USE Koha %]
2
[% USE AuthorisedValues %]
3
4
[% INCLUDE 'doc-head-open.inc' %]
5
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Courses
6
[% INCLUDE 'doc-head-close.inc' %]
7
</head>
8
<body id="opac-main">
9
[% IF ( OpacNav ) %]<div id="doc3" class="yui-t1">[% ELSE %]<div id="doc3" class="yui-t7">[% END %]
10
   <div id="bd">
11
[% INCLUDE 'masthead.inc' %]
12
13
14
<div id="doc2" class="yui-t7">
15
        <div id="yui-main">
16
            <div class="yui-b">
17
                <div class="yui-g">
18
19
                    <h1>Courses</h1>
20
                    <div id="search-toolbar">
21
                        <form action="/cgi-bin/koha/opac-course-reserves.pl" method="get" id="search_courses_form">
22
                            <fieldset>
23
                                <label for="search_on">Search courses:</label> <input type="text" name="search_on" id="search_on" />
24
                                <input type="submit" value="Search" />
25
                            </fieldset>
26
                        </form>
27
                    </div><!-- /search-toolbar -->
28
29
                    <table id="course_reserves_table">
30
                        <thead>
31
                            <tr>
32
                                <th>Name</th>
33
                                <th>Dept.</th>
34
                                <th>Course #</th>
35
                                <th>Section</th>
36
                                <th>Term</th>
37
                                <th>Instructors</th>
38
                                <th>Notes</th>
39
                            </tr>
40
                        </thead>
41
42
                        <tbody>
43
                            [% FOREACH c IN courses %]
44
                                <tr>
45
                                    <td><a href="opac-course-details.pl?course_id=[% c.course_id %]">[% c.course_name %]</a></td>
46
                                    <td>[% AuthorisedValues.GetByCode( 'DEPARTMENT', c.department, 1 ) %]</td>
47
                                    <td>[% c.course_number %]</td>
48
                                    <td>[% c.section %]</td>
49
                                    <td>[% AuthorisedValues.GetByCode( 'TERM' c.term ) %]</td>
50
                                    <td>
51
                                      [% FOREACH i IN c.instructors %]
52
                                          <div class="instructor">[% i.firstname %] [% i.surname %]</div>
53
                                      [% END %]
54
                                    </td>
55
                                    <td>[% c.public_note %]</td>
56
                            [% END %]
57
                        </tbody>
58
                    </table>
59
                </div>
60
            </div>
61
        </div>
62
</div>
63
</div>
64
65
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt (-1641 lines)
Lines 1-1641 Link Here
1
[% USE Koha %]
2
[% USE KohaDates %]
3
[% USE Branches %]
4
[% USE AuthorisedValues %]
5
[% SET TagsShowEnabled = ( TagsEnabled && TagsShowOnDetail ) %]
6
[% SET TagsInputEnabled = ( opacuserlogin && TagsEnabled && TagsInputOnDetail ) %]
7
8
[% ShowCourseReservesHeader = 0 %]
9
[% IF Koha.Preference( 'UseCourseReserves' ) == 1 %]
10
    [% FOREACH ITEM_RESULT IN itemloop %]
11
       [% IF ITEM_RESULT.course_reserves %]
12
           [% FOREACH r IN ITEM_RESULT.course_reserves %]
13
               [% IF r.course.enabled == 'yes' %]
14
                   [% ShowCourseReservesHeader = 1 %]
15
               [% END %]
16
           [% END %]
17
        [% END %]
18
    [% END %]
19
[% END %]
20
21
[% IF ( using_https ) %]
22
    [% SET protocol = "https://" %]
23
    [% SET root_syndetics = "secure" %]
24
[% ELSE %]
25
    [% SET protocol = "http://" %]
26
    [% SET root_syndetics = "www" %]
27
[% END %]
28
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Details for: [% title |html %][% FOREACH subtitl IN subtitle %], [% subtitl.subfield |html %][% END %]
29
[% INCLUDE 'doc-head-close.inc' %]
30
[% INCLUDE 'datatables.inc' %]
31
[% IF ( SocialNetworks ) %]
32
    <script type="text/javascript" src="https://apis.google.com/js/plusone.js">
33
    //<![CDATA[
34
      {lang: '[% lang %]'}
35
    //]]>
36
    </script>
37
    <script type="text/javascript">!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
38
[% END %]
39
[% IF ( OpacStarRatings != 'disable' ) %]<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.rating.js"></script>
40
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/jquery.rating.css" />[% END %]
41
42
[% IF ( OpacHighlightedWords ) %]<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.highlight-3.js"></script>[% END %]
43
[% IF ( bidi ) %]
44
  <link rel="stylesheet" type="text/css" href="[% themelang %]/css/right-to-left.css" />
45
[% END %]
46
<script type="text/javascript">
47
//<![CDATA[
48
49
    [% IF ( OpacBrowseResults && busc ) %]
50
        var arrPagination = new Array();
51
        var pag_index_ini = [% indexPag %];
52
        [% IF ( listResults ) %]
53
            [% FOREACH listResult IN listResults %]
54
                arrPagination[[% listResult.index %]] = {
55
                    url:"[% listResult.url %][% IF ( listResult.url && query_desc && OpacHighlightedWords ) %]&query_desc=[% query_desc |uri %][% END %]",
56
                    title:"[% listResult.title|remove('\n')|html %]",
57
                    author:"[% listResult.author|html %]",
58
                    biblionumber:[% listResult.biblionumber %]
59
                };
60
           [% END %]
61
        [% END %]
62
    [% END %]
63
64
    [% IF ( OpacHighlightedWords ) %]
65
        var q_array = new Array();  // holds search terms if available
66
67
        function highlightOff() {
68
            $("#catalogue_detail_biblio").removeHighlight();
69
            $(".highlight_toggle").toggle();
70
        }
71
        function highlightOn() {
72
            var x;
73
            for (x in q_array) {
74
                q_array[x] = q_array[x].replace(/\w*:([\w])/, "$1");
75
                $(".title").highlight(q_array[x]);
76
                $(".author").highlight(q_array[x]);
77
                $(".results_summary").highlight(q_array[x]);
78
            }
79
            $(".highlight_toggle").toggle();
80
        }
81
    [% END %]
82
83
     $(document).ready(function() { 
84
        $('#bibliodescriptions').tabs();
85
        $(".branch-info-tooltip-trigger").tooltip({
86
            position: { my: "left+15 center", at: "right center" },
87
            show: 50,
88
            hide: 50,
89
            content: function(){
90
                var element = $(this).next("div");
91
                return element.html();
92
            }
93
        });
94
[% IF ( TagsInputEnabled && loggedinusername ) %]
95
        $(".tag_add").click(function(){
96
            var thisid = $(this).attr("id");
97
            thisid = thisid.replace("tag_add","");
98
            $(this).hide();
99
            $("#tagform"+thisid).show();
100
            $("#newtag"+thisid).focus();
101
            $("#newtag"+thisid+"_status").empty().hide();
102
            return false;
103
        });
104
        $(".cancel_tag_add").click(function(){
105
            var thisid = $(this).attr("id");
106
            thisid = thisid.replace("cancel","");
107
            $("#tagform"+thisid).hide();
108
            $("#tag_add"+thisid).show();
109
            $("#newtag"+thisid).val("");
110
            $("#newtag"+thisid+"_status").empty().hide();
111
            return false;
112
        });
113
        $(".tagbutton").click(function(){
114
            var thisid = $(this).attr("title");
115
            var tag = $("#newtag"+thisid).val();
116
            if (!tag || (tag == "")) {
117
                alert(MSG_NO_TAG_SPECIFIED);
118
                return false;
119
            }
120
            KOHA.Tags.add_tag_button(thisid, tag);
121
            return false;
122
        });
123
[% END %]
124
125
            $(".holdingst").dataTable($.extend(true, {}, dataTablesDefaults, {
126
                "aoColumns": [
127
                    [% IF ( item_level_itypes ) %]null,[% END %]
128
                    null,
129
                    [% IF ( itemdata_ccode ) %]null,[% END %]
130
                    null,
131
                    [% IF ( itemdata_enumchron ) %]null,[% END %]
132
                    [% IF ( itemdata_uri ) %]null,[% END %]
133
                    [% IF ( itemdata_copynumber ) %]null,[% END %]
134
                    null,
135
                    [% IF ( itemdata_itemnotes ) %]null,[% END %]
136
                    { "sType": "title-string" },
137
                    [% IF ( OPACShowBarcode ) %]null,[% END %]
138
                    [% IF holds_count.defined %]
139
                        null,
140
                    [% ELSIF show_priority %]
141
                        null,
142
                    [% END %]
143
                    [% IF ( ShowCourseReservesHeader ) %]null,[% END %]
144
                ]
145
            }));
146
147
        [% IF ( query_desc ) %][% IF ( OpacHighlightedWords ) %]var query_desc = "[% query_desc |replace("'", "\'") |replace('\n', '\\n') |replace('\r', '\\r') |html %]";
148
            q_array = query_desc.split(" ");
149
            highlightOn();
150
            $("#highlight_toggle_on" ).hide().click(function() {highlightOn() ; return false;});
151
            $("#highlight_toggle_off").show().click(function() {highlightOff(); return false;});[% END %][% END %]
152
	[% IF ( GoogleJackets ) %]
153
        KOHA.Google.GetCoverFromIsbn([% covernewwindow %]);
154
	[% END %]
155
	[% IF OpenLibraryCovers %]
156
	KOHA.OpenLibrary.GetCoverFromIsbn();
157
	[% END %]
158
	[% IF OPACLocalCoverImages %]
159
	KOHA.LocalCover.GetCoverFromBibnumber(true);
160
	[% END %]
161
        [% IF ( NovelistSelectProfile ) %]
162
        novSelect.loadContentForISBN('[% normalized_isbn %]','[% NovelistSelectProfile %]', '[% NovelistSelectPassword %]', function(d){});
163
        [% END %]
164
165
    [% IF ( OpacBrowseResults && busc ) %]
166
        if (arrPagination.length > 0) {
167
            renderPagIndexList(pag_index_ini, $("#listResults"));
168
        }
169
        $("#a_listResults").click(function(e) {
170
            if (arrPagination.length > 0) {
171
                e.preventDefault();
172
                var navigation = $(".pagination");
173
                if (navigation.css("display") == 'none') {
174
                    navigation.show();
175
                    var newtitle = $(this).attr('title').replace('Show', 'Hide')
176
                    $(this).attr('title',newtitle);
177
                    renderPagination(pag_index_ini, arrPagination.length - 1, $("#ul_pagination_list"), false);
178
                } else {
179
                    navigation.hide();
180
                    var newtitle = $(this).attr('title').replace('Hide', 'Show')
181
                    $(this).attr('title',newtitle);
182
                }
183
            }
184
        });
185
        $("#close_pagination").click(function(e) {
186
            e.preventDefault();
187
            var navigation = $(".pagination");
188
            navigation.hide();
189
        });
190
    [% END %]
191
192
[% IF ( OpacStarRatings != 'disable' ) %]
193
// -----------------------------------------------------
194
// star-ratings code
195
// -----------------------------------------------------
196
// hide 'rate' button if javascript enabled
197
198
$('input[name="rate_button"]').remove();
199
200
$(function () {
201
  $(".auto-submit-star").rating({
202
    callback: function (value, link) {
203
204
      // if the new value equals the old value, dont execute callback...
205
      // just do nothing!
206
      if ($("#rating_value").attr("value") != value) {
207
208
        $(function () {
209
210
          $.post("/cgi-bin/koha/opac-ratings-ajax.pl", {
211
            rating_old_value: $("#rating_value").attr("value"),
212
            borrowernumber: "[% borrowernumber %]",
213
            biblionumber: "[% biblionumber %]",
214
            rating_value: value,
215
            auth_error: value
216
          }, function (data) {
217
218
            if (data.auth_status != 'ok') {
219
              window.alert(_("Your CGI session cookie is not current. Please refresh the page and try again."));
220
            } else {
221
              $("#rating_value").val(data.rating_value);
222
223
              if (data.rating_value) {
224
                $("#rating_value_text").text(_("your rating:") + ' ' + data.rating_value + ', ');
225
              } else {
226
                $("#rating_value_text").text('');
227
              }
228
229
              $("#rating_text").text(_("average rating:") + " " + data.rating_avg_int + ' (' + data.rating_total + ' votes)');
230
231
            }
232
          }, "json");
233
        });
234
      };
235
    }
236
  });
237
});
238
// -----------------------------------------------------
239
[% END %]
240
[% IF ( IDreamBooksReviews || IDreamBooksReadometer ) %]
241
        var isbn = $(".isbn:last").text().split(" ")[1];
242
        if (isbn) {
243
        isbn = isbn.replace(/\W*$/, '');
244
        isbn = isbn.replace(/-/, '');
245
246
        if ($.browser.msie && parseInt($.browser.version, 10) >= 8 && window.XDomainRequest) {
247
        // Use Microsoft XDR for IE version 8 or above
248
            var xdr = new XDomainRequest();
249
            xdr.open("get", "http://idreambooks.com/newbooks/api.json?q="+encodeURIComponent(isbn)+"&key=8bf66516232d1b72f3e47df939653e1e");
250
            xdr.onload = function() {
251
                json = 'json = '+xdr.responseText; // the string now looks like..  json = { ... };
252
                eval(json); // json is now a regular JSON object
253
                parseIDBJSON(json); // parse using same function as for jQuery's success event
254
            }
255
            xdr.send();
256
        } else {
257
            $.getJSON("http://idreambooks.com/newbooks/api.json?q="+encodeURIComponent(isbn)+"&key=8bf66516232d1b72f3e47df939653e1e", function(json){
258
                parseIDBJSON(json);
259
            });
260
        }
261
    }
262
263
[% END %]
264
});
265
[% IF ( IDreamBooksReviews || IDreamBooksReadometer ) %]
266
function parseIDBJSON( json ) {
267
    if(json.total_results > 0 && json.book.rating > 0){
268
        var isbn = $(".isbn:last").text().split(" ")[1];
269
        isbn = isbn.replace(/-/, '');
270
271
[% IF ( IDreamBooksReadometer ) %]
272
        $(".title").append('<a href="'+json.book.detail_link+'" id="idreambooksreadometer"><img src="http://idreambooks.com/remotereadometer/'+isbn+'.jpg" alt="'+json.book.title+' by '+json.book.author+'" title="Rating based on reviews of '+json.book.title+'"></a>');
273
[% END %]
274
275
276
[% IF ( IDreamBooksReviews ) %]
277
        //build new tab for critic reviews
278
        $("#tab_idb_critic_reviews a").text($("#tab_idb_critic_reviews a").text().replace('XXX', json.book.review_count));
279
280
        //append happy-sad cloud review
281
282
        $("#catalogue_detail_biblio").append("<span class='idreambookssummary results_summary'><a href='"+json.book.detail_link+"'><img src='"+json.book.to_read_or_not_small+"' alt='"+json.book.title+" by "+json.book.author+"' title='Rating based on reviews of "+json.book.title+"'>"+json.book.rating+"%</a> <a href='http://www.idreambooks.com/'>rating based on reviews at iDreamBooks.com</a></span>");
283
284
        //insert data into Book reviews tab
285
        $.each(json.book.critic_reviews, function(){
286
                $("#idb_review_snippets").append("<div class='review'><div><a href='"+this.review_link+"'>"+this.source+"</a></div><div>\"..."+this.snippet+"...\"</div><div>Review date: "+this.review_date+"</div><div><a class='reviewlink' href='"+json.book.detail_link+"'>Review result: "+this.pos_or_neg+" <img src='"+this.smiley_or_sad_small+"' alt='iDreamBooks.com rating' title='"+this.pos_or_neg+"' /></a></div></div>");
287
                });
288
        $("#seemoreidb").attr('href', json.book.detail_link);
289
        $("#tab_idb_critic_reviews").show();
290
[% END %]
291
292
    }
293
294
}
295
[% END %]
296
297
[% IF ( OpacBrowseResults && busc ) %]
298
var timeoutRFW;
299
var totalPagItemList = 10;
300
301
function rewindList()
302
{
303
    var ul = $("#listResults");
304
    var li_ini = ul.children(':first').next();
305
    var index_ini = pag_index_ini;
306
    if (li_ini) {
307
        index_ini = parseInt(li_ini.attr("class").substring(7), 10);
308
    }
309
    var li_end = ul.children(':last').prev();
310
    var index_end = arrPagination.length - 1;
311
    if (li_end) {
312
        index_end = parseInt(li_end.attr("class").substring(7), 10);
313
    }
314
    if (index_ini > pag_index_ini) {
315
        renderPagIndexList(index_ini - 1, ul, false);
316
        renderPagination(index_ini - 1, arrPagination.length - 1, $("#ul_pagination_list"), true);
317
    }
318
}//rewindList
319
320
function forwardList()
321
{
322
    var ul = $("#listResults");
323
    var li_ini = ul.children(':first').next();
324
    var index_ini = pag_index_ini;
325
    if (li_ini) {
326
        index_ini = parseInt(li_ini.attr("class").substring(7), 10);
327
    }
328
    var li_end = ul.children(':last').prev();
329
    var index_end = arrPagination.length - 1;
330
    if (li_end) {
331
        index_end = parseInt(li_end.attr("class").substring(7), 10);
332
    }
333
    if (index_end < arrPagination.length - 1) {
334
        renderPagIndexList(index_ini + 1, ul, false);
335
        renderPagination(index_ini + 1, arrPagination.length - 1, $("#ul_pagination_list"), true);
336
    }
337
}//forwardList
338
339
function renderPagIndexList(index, ul)
340
{
341
    var $kids = ul.children("li");
342
    if ($kids.length > 0) {
343
        $kids.each(function() {
344
            $(this).remove();
345
        });
346
    }
347
    var li;
348
    var html = "";
349
    var ini = index - 1;
350
    var end = ini + totalPagItemList - 1;
351
    li = $("<li />");
352
    html = (index > pag_index_ini)?"<a href='#' id='rew_list_index' onclick='rewindList()' title='" + _("Click to rewind the list to") + " " + ini + " - " + end + "'>&laquo;</a>":"&laquo;";
353
    li.html(html);
354
    ul.append(li);
355
    var title = "";
356
    for (var i=index; i < arrPagination.length && i < index + totalPagItemList; i++) {
357
        if (arrPagination[i] == undefined) continue;
358
        var li = $("<li />");
359
        if (arrPagination[i].url != "") {
360
            title = _("See biblio") + " &quot;" + arrPagination[i].title + "&quot; ";
361
            if (arrPagination[i].author != "") title += " " + _("by") + "&quot;" + arrPagination[i].author + "&quot;";
362
            title += " " + _("with biblionumber") + " " + arrPagination[i].biblionumber;
363
            html = "<a href='" + arrPagination[i].url + "' title='" + title + "' class='a_pag' id='a_pag_" + i + "'";
364
            html += " onmouseover='renderPagination(" + i + ", " + (arrPagination.length - 1) + ", $(\"#ul_pagination_list\"), true)'";
365
            html += ">" + i + "</a>";
366
        } else html = i;
367
        li.html(html);
368
        li.attr("class", "li_pag_" + i);
369
        ul.append(li);
370
    }
371
    li = $("<li />");
372
    ini = index + 1;
373
    end = (arrPagination.length > index + totalPagItemList)?index + totalPagItemList:arrPagination.length - 1;
374
    html = (end <= arrPagination.length - 1 && (end - index) >= totalPagItemList)?"<a href='#' id='fw_list_index' onclick='forwardList()' title='" + _("Click to forward the list to") + " " + ini + " - " + end + "'>&raquo;</a>":"&raquo;";
375
    li.html(html);
376
    ul.append(li);
377
}//renderPagIndexList
378
379
380
function renderPagination(index, total, ul, highlIndex)
381
{
382
    for (var i = pag_index_ini; i <= total; i++) {
383
        if (arrPagination[i] == undefined || arrPagination[i].url == "") continue;
384
        $("#li_pag_" + i).remove();
385
    }
386
    var j = 0;
387
    for (var i = index; i <= total && j < totalPagItemList; i++) {
388
        if (arrPagination[i] == undefined || arrPagination[i].url == "") continue;
389
        var li = $("<li id='li_pag_" + i + "' " + ((j % 2 == 0)?"class='highlight'":"")  + " title='" + _("Go to detail") + "' />");
390
        var html = "<span class='li_pag_index'>" + i + "</span><a href='" + arrPagination[i].url + "'>" + arrPagination[i].title + "</a>";
391
        if (arrPagination[i].author) html += "<br /> by " + arrPagination[i].author;
392
        li.html(html);
393
        if (highlIndex && i == index) li.css("backgroundColor", "#DDDDDD");
394
        ul.append(li);
395
        j++;
396
    }
397
    for (i = pag_index_ini; i < index && j < totalPagItemList; i++) {
398
        if (arrPagination[i] == undefined || arrPagination[i].url == "") continue;
399
        $("#li_pag_" + i).remove();
400
        var li = $("<li id='li_pag_" + i + "' " + ((j % 2 == 0)?"class='highlight'":"")  + " title='" + _("Go to detail") + "' />");
401
        var html = "<span class='li_pag_index'>" + i + "</span><a href='" + arrPagination[i].url + "'>" + arrPagination[i].title + "</a>";
402
        if (arrPagination[i].author) html += "<br /> " + _("by") + " " + arrPagination[i].author;
403
        li.html(html);
404
        ul.append(li);
405
        j++;
406
    }
407
}//renderPagination
408
[% END %]
409
410
411
YAHOO.util.Event.onContentReady("furtherm", function () {
412
    $("#furtherm").css("display","block").css("visibility","hidden");
413
	$("#furthersearches").parent().show();
414
	var furthersearchesMenu = new YAHOO.widget.Menu("furtherm");
415
		furthersearchesMenu.render();
416
		furthersearchesMenu.cfg.setProperty("context", ["furthersearches", "tr", "br"]);
417
		furthersearchesMenu.subscribe("beforeShow",positionfurthersearchesMenu);
418
		furthersearchesMenu.subscribe("show", furthersearchesMenu.focus);
419
        function positionfurthersearchesMenu() {
420
                    furthersearchesMenu.align("tr", "br");
421
		}
422
		YAHOO.util.Event.addListener("furthersearches", "click", furthersearchesMenu.show, null, furthersearchesMenu);
423
		YAHOO.widget.Overlay.windowResizeEvent.subscribe(positionfurthersearchesMenu);
424
 });
425
//]]>
426
</script>
427
428
[% IF OPACPopupAuthorsSearch %]
429
<script type="text/JavaScript" language="JavaScript">
430
//<![CDATA[
431
    function showAuthors(element){
432
        var authornumber = $(element).attr("data-count");
433
        // Hide subjects menu if displayed
434
        hideMenu(".subjectSearch");
435
436
        // Check checkbox related to the clicked link
437
        $("#authorsList input[type='checkbox']").attr('checked', false);
438
        $("#author_"+authornumber).attr('checked', true);
439
440
        makeAuthorRequest();
441
442
        // Display menu
443
        var left = element.offsetLeft || 0;
444
        var top = element.offsetTop || 0;
445
        $('.authorSearch').css('display', 'block');
446
        $('.authorSearch').css('left', left);
447
        $('.authorSearch').css('top', top + 15);
448
    }
449
450
    function hideMenu(elem) {
451
        $(elem).css('display', 'none');
452
    }
453
454
    function checkAll(checkbox, elem) {
455
        var check = $(checkbox).attr('checked') ? true : false;
456
        $(elem).find("input[type='checkbox']").attr('checked', check);
457
        elem == "#authorsList" ? makeAuthorRequest() : makeSubjectRequest();
458
    }
459
460
    function makeAuthorRequest(){
461
        var values = [];
462
463
        $("#authorsList").find("input[type='checkbox']:checked").each(function () {
464
            values.push($(this).val());
465
        });
466
467
        if (values.length > 0) {
468
            var request = "/cgi-bin/koha/opac-search.pl?q=" + values.join(' and ');
469
            $("#validAuthorSearch").attr("href", request);
470
        } else {
471
            $("#validAuthorSearch").removeAttr("href");
472
        }
473
474
    }
475
476
    //Subjects
477
    function showSubjects(element, subjectnumber, subfieldnumber){
478
        // Hide author menu if displayed
479
        hideMenu(".authorSearch");
480
481
        // Check checkbox related to the clicked link
482
        $("#subjectsList input[type='checkbox']").attr('checked', false);
483
        $("#subject_"+subjectnumber+"_"+subfieldnumber).attr('checked', true);
484
485
        makeSubjectRequest();
486
487
        // Display menu
488
        var left = element.offsetLeft || 0;
489
        var top = element.offsetTop || 0;
490
        $('.subjectSearch').css('display', 'block');
491
        $('.subjectSearch').css('left', left);
492
        $('.subjectSearch').css('top', top + 15);
493
    }
494
495
    function makeSubjectRequest() {
496
        var values = [];
497
        $("#subjectsList > ul").each(function() {
498
            var all_checked = true;
499
            var local_values = [];
500
            $(this).find('input[type="checkbox"]').each(function() {
501
                if($(this).attr('checked')) {
502
                    local_values.push($(this).val());
503
                } else {
504
                    all_checked = false;
505
                }
506
            });
507
            var authid = $(this).attr('data-authid');
508
            if(all_checked && authid) {
509
                values.push('an:' + authid);
510
            } else {
511
                values = values.concat(local_values);
512
            }
513
        });
514
515
        if(values.length > 0) {
516
            var request = "/cgi-bin/koha/opac-search.pl?q=" + values.join(' and ');
517
            $("#validSubjectSearch").attr('href', request);
518
        } else {
519
            $("#validSubjectSearch").removeAttr("href");
520
        }
521
    }
522
    $(document).ready(function() {
523
        $("a.showauthors").click(function(){
524
            showAuthors(this);
525
            return false;
526
        });
527
    });
528
529
//]]>
530
</script>
531
[% END %]
532
533
</head>
534
<body id="opac-detail">
535
<div id="doc3" class="yui-t7">
536
   <div id="bd">
537
[% INCLUDE 'masthead.inc' %]
538
539
540
    <div id="yui-main">
541
    <div class="yui-b"><div id="opac-detail-yui-ge" class="yui-ge">
542
    <div class="yui-u first">
543
    <div id="userdetail" class="container">
544
    <div id="catalogue_detail_biblio">
545
546
    <div id="bookcover">
547
    [% IF ( OPACLocalCoverImages ) %]<div style="block" title="[% biblionumber |url %]" class="[% biblionumber %]" id="local-thumbnail-preview"></div>[% END %]
548
    [% IF ( OPACAmazonCoverImages ) %]
549
        [% IF ( OPACurlOpenInNewWindow ) %]
550
            <a href="http://www.amazon[% AmazonTld %]/dp/[% normalized_isbn %]" target="_blank">
551
        [% ELSE %]
552
            <a href="http://www.amazon[% AmazonTld %]/dp/[% normalized_isbn %]">
553
        [% END %]
554
        [% IF ( using_https ) %]
555
            <img border="0" src="https://images-na.ssl-images-amazon.com/images/P/[% normalized_isbn %].01.MZZZZZZZ.jpg" alt="Cover image" /></a>
556
        [% ELSE %]
557
            <img border="0" src="http://images.amazon.com/images/P/[% normalized_isbn %].01.MZZZZZZZ.jpg" alt="Cover image" /></a>
558
        [% END %]
559
    [% END %]
560
561
    [% IF ( SyndeticsEnabled ) %][% IF ( SyndeticsCoverImages ) %][% IF ( content_identifier_exists ) %]
562
        <img src="[% protocol %][% root_syndetics %].syndetics.com/index.aspx?isbn=[% normalized_isbn %]/[% SyndeticsCoverImageSize %].GIF&amp;client=[% SyndeticsClientCode %]&amp;type=xw10&amp;upc=[% normalized_upc %]&amp;oclc=[% normalized_oclc %]" alt="" class="thumbnail" />
563
564
    [% ELSE %]<span class="no-image">No cover image available</span>[% END %][% END %][% END %]
565
566
    [% IF ( GoogleJackets ) %]<div style="block" title="[% biblionumber |url %]" class="[% normalized_isbn %]" id="gbs-thumbnail-preview"></div>[% END %]
567
    [% IF OpenLibraryCovers %]<div style="block" title="[% biblionumber |url %]" class="[% normalized_isbn %]" id="openlibrary-thumbnail-preview"></div>[% END %]
568
    [% IF ( BakerTaylorEnabled ) %][% IF ( normalized_isbn ) %][% IF ( OPACurlOpenInNewWindow ) %]<a href="https://[% BakerTaylorBookstoreURL |html %][% normalized_isbn %]" target="_blank"><img alt="See Baker &amp; Taylor" src="[% BakerTaylorImageURL |html %][% normalized_isbn %]" /></a>[% ELSE %]<a href="https://[% BakerTaylorBookstoreURL |html %][% normalized_isbn %]"><img alt="See Baker &amp; Taylor" src="[% BakerTaylorImageURL |html %][% normalized_isbn %]" /></a>[% END %][% END %][% END %]
569
    </div>
570
571
    <abbr class="unapi-id" title="koha:biblionumber:[% biblionumber %]"><!-- unAPI --></abbr>
572
    [% IF ( ocoins ) %]
573
    <!-- COinS / Openurl -->
574
    <span class="Z3988" title="[% ocoins %]"></span>
575
    [% END %]
576
577
    <div id="views"><span class="view"><span id="Normalview">Normal view</span></span> <span class="view"><a id="MARCview" href="/cgi-bin/koha/opac-MARCdetail.pl?biblionumber=[% biblionumber %]">MARC view</a></span> [% IF ( ISBD ) %]<span class="view"><a id="ISBDview" href="/cgi-bin/koha/opac-ISBDdetail.pl?biblionumber=[% biblionumber %]">ISBD view</a></span>[% END %]
578
    </div>
579
    [% IF ( OPACXSLTDetailsDisplay ) %]
580
        [% XSLTBloc %]
581
    [% ELSE %]
582
    <h1 class="title">[% title |html %][% IF ( subtitle ) %] <span class="subtitle">[% FOREACH subtitl IN subtitle %][% subtitl.subfield |html %] [% END %]</span>[% END %]</h1>
583
    [% IF ( author ) %]<h5 class="author">by <a href="/cgi-bin/koha/opac-search.pl?q=au:[% author |url %]">[% author |html %]</a></h5>[% END %] 
584
585
    <span class="results_summary">[% UNLESS ( item_level_itypes ) %]
586
        [
587
        [% IF ( description ) %]
588
            [% description %]
589
        [% ELSE %]
590
            [% itemtype %]
591
        [% END %]
592
        ] [% END %]
593
        [% IF ( unititle ) %], [% unititle %][% END %]
594
    </span>
595
596
    [% IF ( MARCAUTHORS ) %]
597
    <span class="results_summary"><span class="label">Additional authors:</span>
598
        [% IF OPACPopupAuthorsSearch %]
599
        <div class="authorSearch" id="authorSearch">
600
            <span><b>Select the item(s) to search :</b></span>
601
            <br />
602
            <input type="checkbox" onchange="checkAll(this, '#authorsList')"> <b>all</b>
603
            <hr />
604
            <ul id="authorsList">
605
                [% FOREACH MARCAUTHOR IN MARCAUTHORS %]
606
                    <li>
607
                        [% IF (MARCAUTHOR.authoritylink) %]
608
                            <input type="checkbox" name="checkbox"
609
                                id="author_[% loop.count %]"
610
                                onclick="makeAuthorRequest()"
611
                                value="an:[% MARCAUTHOR.authoritylink %]" />
612
                        [% ELSE %]
613
                            <input type="checkbox" name="checkbox"
614
                                id="author_[% loop.count %]"
615
                                onclick="makeAuthorRequest()"
616
                                value="au,wrdl:[% FOREACH SUBFIELD IN MARCAUTHOR.MARCAUTHOR_SUBFIELDS_LOOP %][% SUBFIELD.value |url %][% UNLESS (loop.last) %]+[% END %][% END %]" />
617
                        [% END %]
618
                        <label for="author_[% loop.count %]">
619
                            [% FOREACH SUBFIELD IN MARCAUTHOR.MARCAUTHOR_SUBFIELDS_LOOP %]
620
                                [% SUBFIELD.value %]
621
                            [% END %]
622
                        </label>
623
                    </li>
624
                [% END %]
625
            </ul>
626
            <hr />
627
            <a href="#" onclick="hideMenu('.authorSearch'); return false">Cancel</a>
628
            &nbsp;|&nbsp;
629
            <a id="validAuthorSearch">Search</a>
630
        </div>
631
        [% END %]
632
        [% FOREACH MARCAUTHOR IN MARCAUTHORS %]
633
            [% authorsloop = loop %]
634
            [% FOREACH MARCAUTHOR_SUBFIELDS_LOO IN MARCAUTHOR.MARCAUTHOR_SUBFIELDS_LOOP %]
635
                [% MARCAUTHOR_SUBFIELDS_LOO.separator %]
636
                <a title="‡[% MARCAUTHOR_SUBFIELDS_LOO.code %] [% MARCAUTHOR_SUBFIELDS_LOO.value %]"
637
                    class="showauthors" data-count="[% authorsloop.count %]"
638
                    href="/cgi-bin/koha/opac-search.pl?q=[% FOREACH link_loo IN MARCAUTHOR_SUBFIELDS_LOO.link_loop %][% link_loo.operator |url %][% link_loo.limit |url %]:[% link_loo.link |url %][% END %]">[% MARCAUTHOR_SUBFIELDS_LOO.value %]</a>
639
            [% END %]
640
            [% IF (MARCAUTHOR.authoritylink) %]
641
                <a class='authlink' href="/cgi-bin/koha/opac-authoritiesdetail.pl?authid=[% MARCAUTHOR.authoritylink %]"><img style="vertical-align:middle" height="15" width="15" src="[% interface %]/[% theme %]/images/filefind.png"></a>
642
            [% END %]
643
            [% UNLESS ( loop.last ) %]|[% END %]
644
        [% END %]
645
    </span>
646
    [% END %]
647
648
    [% IF ( MARCSERIES ) %]
649
    <span class="results_summary series"><span class="label">Series:</span>
650
            [% FOREACH MARCSERIE IN MARCSERIES %]
651
            [% FOREACH MARCSERIES_SUBFIELDS_LOO IN MARCSERIE.MARCSERIES_SUBFIELDS_LOOP %]
652
            [% IF ( MARCSERIES_SUBFIELDS_LOO.value ) %]<a href="/cgi-bin/koha/opac-search.pl?q=se:[% MARCSERIES_SUBFIELDS_LOO.value |url %]">[% MARCSERIES_SUBFIELDS_LOO.value %]</a>[% END %][% IF ( MARCSERIES_SUBFIELDS_LOO.volumenum ) %]. [% MARCSERIES_SUBFIELDS_LOO.volumenum %][% END %]
653
            [% END %] [% UNLESS ( loop.last ) %]|[% END %]
654
            [% END %]
655
    </span>
656
    [% END %]
657
    [% IF ( editionstatement ) %]
658
    <span class="results_summary edition"><span class="label">Edition statement:</span>[% editionstatement %][% IF ( editionresponsibility ) %]/[% editionresponsibility %][% END %]</span>
659
    [% END %]
660
    [% IF ( publishercode ) %]
661
    <span class="results_summary publisher"><span class="label">Published by :</span>
662
        <a href="/cgi-bin/koha/opac-search.pl?q=pb:[% publishercode |url %] ">
663
            [% publishercode |html %] 
664
        </a> [% IF ( place ) %]([% place %])[% END %] [% IF ( publicationyear ) %], [% publicationyear %][% END %]
665
    </span>
666
    [% END %]
667
    
668
    [% IF ( pages ) %]<span class="results_summary physical"><span class="label">Physical details:</span> [% pages %] [% illus %] [% size %]</span>[% END %]
669
670
    [% IF ( MARCISBNS ) %]
671
        <span class="results_summary isbn"><span class="label">ISBN:</span>[% FOREACH MARCISBN IN MARCISBNS %][% MARCISBN %][% IF ( loop.last ) %].[% ELSE %]; [% END %][% END %]</span>
672
    [% ELSE %]
673
        [% IF ( normalized_isbn ) %]
674
            <span class="results_summary isbn"><span class="label">ISBN: </span>[% normalized_isbn %]</span>
675
        [% END %]
676
    [% END %]
677
    [% IF ( issn ) %]
678
    <span class="results_summary issn"><span class="label">ISSN:</span>[% issn %]</span>
679
    [% END %]
680
    [% IF ( collectiontitle ) %]
681
    <span class="results_summary collection"><span class="label">Collection: </span>
682
        [% collectiontitle %]
683
        [% IF ( collectionissn ) %], ISSN [% collectionissn %]    [% END %]
684
        [% IF ( collectionvolume ) %]; [% collectionvolume %] [% END %]
685
        
686
    </span>
687
    [% END %]
688
    [% IF ( unititles ) %]
689
    <span class="results_summary unititle"><span class="label">Uniform titles:</span>
690
        [% FOREACH unititle IN unititles %]
691
        [% unititle.unititle %] ;
692
        [% END %]
693
        
694
    </span>
695
    [% END %]
696
697
    [% IF ( MARCSUBJCTS ) %]
698
        <span class="results_summary subject">
699
            <span class="label">Subject(s):</span>
700
            [% IF OPACPopupAuthorsSearch %]
701
            <div class="subjectSearch" >
702
                <span><b>Select the item(s) to search :</b></span>
703
                <div id="subjectsList">
704
                    <input type="checkbox" id="all_subjects"
705
                        onchange="checkAll(this, '#subjectsList')" />
706
                    <label for="all_subjects">
707
                        <b>all</b>
708
                    </label>
709
                    <hr />
710
                    [% FOREACH MARCSUBJCT IN MARCSUBJCTS %]
711
                        [% subjectsloop = loop %]
712
                        [% IF MARCSUBJCT.authoritylink %]
713
                            <ul id="subjectsList[% loop.count %]"
714
                                data-authid="[% MARCSUBJCT.authoritylink %]">
715
                        [% ELSE %]
716
                            <ul id="subjectsList[% loop.count %]">
717
                        [% END %]
718
                        [% FOREACH SUBFIELD IN MARCSUBJCT.MARCSUBJECT_SUBFIELDS_LOOP %]
719
                            <li>
720
                                <input type="checkbox" onclick="makeSubjectRequest()"
721
                                    name="checkbox"
722
                                    id="subject_[% subjectsloop.count %]_[% loop.count %]"
723
                                    value="su,wrdl:[% SUBFIELD.value |url %]" />
724
                                <label for="subject_[% subjectsloop.count %]_[% loop.count %]">
725
                                    [% SUBFIELD.value %]
726
                                </label>
727
                            </li>
728
                        [% END %]
729
                        </ul>
730
                        <hr />
731
                    [% END %]
732
                </div>
733
                <a href="#"
734
                onclick="hideMenu('.subjectSearch'); return false">Cancel</a>
735
                &nbsp;|&nbsp;
736
                <a id="validSubjectSearch">Search</a>
737
            </div>
738
            [% END %]
739
            [% FOREACH MARCSUBJCT IN MARCSUBJCTS %]
740
                [% subjectsloop = loop %]
741
                [% FOREACH SUBFIELD IN MARCSUBJCT.MARCSUBJECT_SUBFIELDS_LOOP %]
742
                    [% SUBFIELD.separator %]
743
                    <a title="$[% SUBFIELD.code %] [% SUBFIELD.value %]" href="/cgi-bin/koha/opac-search.pl?q=[% FOREACH link_loo IN SUBFIELD.link_loop %][% link_loo.operator |url %][% link_loo.limit |url %]:[% link_loo.link |url %][% END %]" onclick="showSubjects(this, [% subjectsloop.count %], [% loop.count %]); return false;">[% SUBFIELD.value %]</a>
744
                [% END %]
745
                [% IF (MARCSUBJCT.authoritylink) %]
746
                    <a class="authlink" href="/cgi-bin/koha/opac-authoritiesdetail.pl?authid=[% MARCSUBJCT.authoritylink %]"><img style="vertical-align:middle" height="15" width="15" src="[% interface %]/[% theme %]/images/filefind.png" /></a>
747
                [% END %]
748
                [% UNLESS ( loop.last ) %] | [% END %]
749
            [% END %]
750
        </span>
751
    [% ELSE %]
752
    [% IF ( subjects ) %]<span class="results_summary subject"><span class="label">Subject(s):</span> [% FOREACH subject IN subjects %]<a href="/cgi-bin/koha/opac-search.pl?q=su:[% subject.subject |url %]">[% subject.subject %]</a> | [% END %]</span>[% END %]
753
    [% END %]
754
755
    [% IF ( copyrightdate ) %]
756
    <span class="results_summary year"><span class="label">Year: </span>[% copyrightdate %]</span>
757
    [% END %]
758
    [% UNLESS ( item_level_itypes ) %]<img src="[% imageurl %]" alt="[% description %]" title="[% description %]" />
759
    <span class="results_summary itemtype"><span class="label">Item type: </span>
760
        [% IF ( description ) %]
761
        [% description %]
762
        [% ELSE %]
763
        [% itemtype %]
764
        [% END %]
765
    </span>[% END %]
766
767
    [% IF ( MARCURLS ) %]
768
    <div class="results_summary online_resources"><span class="label">Online resources:</span>
769
    <ul>    [% FOREACH MARCurl IN MARCURLS %]
770
        <li>[% IF ( MARCurl.part ) %][% MARCurl.part %]
771
            <br />[% END %] 
772
        <!-- here you might do a tmpl_if name="toc" and use greybox or equivalent for table of contents -->
773
774
        [% IF ( OPACurlOpenInNewWindow ) %]
775
          [% IF trackclicks == 'track' || trackclicks == 'anonymous' %]
776
            <a href="/cgi-bin/koha/tracklinks.pl?uri=[% MARCurl.MARCURL |url%]&amp;biblionumber=[% biblionumber | url %]" title="[% MARCurl.MARCURL %]" target="_blank">
777
          [% ELSE %]
778
            <a href="[% MARCurl.MARCURL %]" title="[% MARCurl.MARCURL %]" target="_blank">
779
          [% END %]
780
        [% ELSE %]
781
          [% IF trackclicks == 'track' || trackclicks == 'anonymous' %]
782
            <a href="/cgi-bin/koha/tracklinks.pl?uri=[% MARCurl.MARCURL |url%]&amp;biblionumber=[% biblionumber | url %]" title="[% MARCurl.MARCURL %]">
783
          [% ELSE %]
784
            <a href="[% MARCurl.MARCURL %]" title="[% MARCurl.MARCURL %]">
785
          [% END %]
786
        [% END %]
787
788
        [% MARCurl.linktext %]</a>
789
            [% IF ( MARCurl.notes ) %]<ul>[% FOREACH note IN MARCurl.notes %]<li>[% note.note %]</li>[% END %]</ul>[% END %]</li>
790
            [% END %]</ul>
791
    </div>
792
    [% END %]
793
[% END %]
794
        [% IF ( AuthorisedValueImages ) %]
795
        [% IF ( authorised_value_images ) %]
796
        <div class="authorised_value_images">
797
          [% FOREACH authorised_value_image IN authorised_value_images %]
798
          <img src="[% authorised_value_image.imageurl %]" alt="[% authorised_value_image.label %]" title="[% authorised_value_image.label %]" />
799
          [% END %]
800
        </div>
801
        [% END %]
802
        [% END %]
803
804
<!-- This puts the LTFL reviews in, and if TabbedView is not set, puts the remaining content above the Tabs instead of in them -->
805
[% IF ( LibraryThingForLibrariesID ) %]
806
	[% UNLESS ( LibraryThingForLibrariesTabbedView ) %]
807
		<div class="results_summary"><div id="ltfl_related" class="ltfl"></div></div> 
808
		<div class="results_summary"><div id="ltfl_similars" class="ltfl"></div></div> 
809
		<div class="results_summary"><div id="ltfl_tagbrowse" class="ltfl"></div></div> 
810
	[% END %]
811
	<span class="results_summary">
812
        <span class="label">Reviews from LibraryThing.com:</span>	
813
        <span style="display: block;" class="ltfl_reviews"></span>
814
    </span>
815
[% END %] 
816
817
<!--This grabs all of the lists a bib record appears in -->
818
[% IF ( GetShelves ) %]
819
    <span class="results_summary lists"><span class="label">List(s) this item appears in: </span>
820
	[% FOREACH GetShelve IN GetShelves %]
821
		<a href="/cgi-bin/koha/opac-shelves.pl?viewshelf=[% GetShelve.shelfnumber %]">[% GetShelve.shelfname %]</a>
822
		[% IF ( loop.last ) %][% ELSE %]|[% END %]
823
	[% END %]
824
	</span>
825
[% END %]
826
827
[% IF ( TagsShowEnabled ) %]
828
        <div class="results_summary tags">
829
        [% IF ( TagLoop ) %]
830
        <span class="label">Tags from this library:</span>
831
            <ul id="tagslist">[% FOREACH TagLoo IN TagLoop %]
832
            <li><a href="/cgi-bin/koha/opac-search.pl?tag=[% TagLoo.term |url %]&amp;q=[% TagLoo.term |url %]">[% TagLoo.term |html %]</a> <span class="weight">([% TagLoo.weight_total %])</span>[% IF ( loop.last ) %][% ELSE %], [% END %]</li>
833
            [% END %]
834
            </ul>[% ELSE %]<span class="label">Tags from this library:</span><div>No tags from this library for this title.</div> 
835
    [% END %]
836
        </div>
837
[% END %]
838
[% IF ( TagsInputEnabled ) %]
839
      <div class="results_summary tagsinput">
840
        [% IF ( loggedinusername ) %]
841
            <a class="tag_add" id="tag_add[% biblionumber %]" href="#">Add</a>
842
            <form id="tagform[% biblionumber %]" method="post" action="/cgi-bin/koha/opac-tags.pl" style="display:none;">
843
                <label for="newtag[% biblionumber %]">New tag(s), separated by a comma:</label>
844
                <input name="newtag[% biblionumber %]" id="newtag[% biblionumber %]" maxlength="100" type="text"/>
845
                <input name="tagbutton" class="input tagbutton" title="[% biblionumber %]" type="submit" value="Add" />
846
                <a class="cancel_tag_add" id="cancel[% biblionumber %]" href="#">(done)</a>
847
            </form>
848
            <span id="newtag[% biblionumber %]_status" class="tagstatus" style="display:none;">
849
                Tag status here.
850
            </span>
851
        [% ELSE %]
852
            <span id="login4tags">Log in to add tags.</span>
853
        [% END %]
854
        </div>
855
[% END %]
856
857
        [% IF ( SyndeticsEnabled ) %][% IF ( SyndeticsSeries ) %][% IF ( SyndeticsSERIES1Exists ) %]
858
        <span class="results_summary">
859
            <span class="label">Series information:</span>
860
            <a target="_blank" href="[% protocol %][% root_syndetics %].syndetics.com/ffseries.aspx?isbn=[% normalized_isbn %]&amp;type=series&amp;num=1&amp;client=[% SyndeticsClientCode %][% IF ( normalized_upc ) %]&amp;upc=[% normalized_upc %][% END %][% IF ( normalized_oclc ) %]&amp;oclc=[% normalized_oclc %][% END %]">Click to open in new window</a>
861
        </span>
862
        [% END %][% END %]
863
        [% IF ( SyndeticsAVPROFILEExists ) %]
864
        <span class="results_summary">
865
            <span class="label">Audiovisual profile:</span>
866
            <a target="_blank" href="[% protocol %][% root_syndetics %].syndetics.com/index.aspx?isbn=[% normalized_isbn %]/avprofile.html&amp;client=[% SyndeticsClientCode %][% IF ( normalized_upc ) %]&amp;upc=[% normalized_upc %][% END %][% IF ( normalized_oclc ) %]&amp;oclc=[% normalized_oclc %][% END %]&amp;type=xw10">Click to open in new window</a>
867
        </span>
868
        [% END %]
869
        [% IF ( SyndeticsFICTIONExists ) %]
870
        <span class="results_summary">
871
            <span class="label">Fiction notes:</span>
872
            <a target="_blank" href="[% protocol %][% root_syndetics %].syndetics.com/index.aspx?isbn=[% normalized_isbn %]/fiction.html&amp;client=[% SyndeticsClientCode %][% IF ( normalized_upc ) %]&amp;upc=[% normalized_upc %][% END %][% IF ( normalized_oclc ) %]&amp;oclc=[% normalized_oclc %][% END %]&amp;type=xw10">Click to open in new window</a>
873
        </span>
874
        [% END %]
875
        [% IF ( SyndeticsAwards ) %][% IF ( SyndeticsAWARDS1Exists ) %]
876
        <span class="results_summary">
877
            <span class="label">Awards:</span>
878
            <a target="_blank" href="[% protocol %][% root_syndetics %].syndetics.com/ffawards.aspx?isbn=[% normalized_isbn %]&amp;type=awards&amp;client=[% SyndeticsClientCode %][% IF ( normalized_upc ) %]&amp;upc=[% normalized_upc %][% END %][% IF ( normalized_oclc ) %]&amp;oclc=[% normalized_oclc %][% END %]">Click to open in new window</a>
879
        </span>
880
        [% END %][% END %][% END %]
881
882
    [% IF ( OpacStarRatings != 'disable' ) %]
883
        <form method="post" action="/cgi-bin/koha/opac-ratings.pl">
884
        <div class="results_summary ratings">
885
886
      [% FOREACH i  IN [ 1 2 3 4 5  ] %]
887
        [% IF rating_avg == i && borrowernumber %]
888
            <input class="auto-submit-star" type="radio" name="rating"  value="[% i %]"  checked="checked" />
889
        [% ELSIF rating_avg == i %]
890
            <input class="auto-submit-star" type="radio" name="rating" value="[% i %]" checked="checked" disabled="disabled" />
891
        [% ELSIF borrowernumber  %]
892
            <input class="auto-submit-star" type="radio" name="rating" value="[% i %]" />
893
        [% ELSE   %]
894
            <input class="auto-submit-star" type="radio" name="rating" value="[% i %]" disabled="disabled" />
895
        [% END %]
896
      [% END %]
897
898
<!-- define some hidden vars for ratings -->
899
900
        <input  type="hidden" name='biblionumber'  value="[% biblionumber %]" />
901
        <input  type="hidden" name='borrowernumber'  value="[% borrowernumber %]" />
902
        <input  type="hidden" name='rating_value' id='rating_value' value="[% rating_value %]" />
903
        <input  type="hidden" name='rating_total' id='rating_total' value="[% rating_total %]" />
904
        <input  type="hidden" name='rating_avg_int' id='rating_avg_int' value="[% rating_avg_int %]" />
905
906
        [% UNLESS ( rating_readonly ) %]&nbsp;  <input name="rate_button" type="submit" value="Rate me" />[% END %]&nbsp;
907
908
        [% IF ( rating_value ) %]
909
            <span id="rating_value_text">your rating: [% rating_value %], </span>
910
        [% ELSE %]
911
            <span id="rating_value_text"></span>
912
        [% END %]
913
914
            <span id="rating_text">average rating: [% rating_avg_int %] ([% rating_total %] votes)</span>
915
916
        </div>
917
        </form>
918
    [% END %]
919
920
    [% IF ( BakerTaylorContentURL ) %]
921
        <span class="results_summary">
922
        <span class="label">Enhanced content: </span>
923
              [% IF ( OPACurlOpenInNewWindow ) %]<a href="[% BakerTaylorContentURL |html %]" target="_blank">Content Cafe</a>[% ELSE %]<a href="[% BakerTaylorContentURL |html %]">Content Cafe</a>[% END %]
924
        </span>
925
    [% END %]
926
    [% IF ( NovelistSelectProfile ) %] 
927
       [% IF ( NovelistSelectView == 'above') %]
928
        <span class="results_summary">
929
        <span class="label">Novelist Select: </span> 
930
        <div data-novelist-novelistselect=[% normalized_isbn %]></div>
931
        </span>
932
       [% END %]
933
    [% END %]
934
935
    [% IF ( Babeltheque ) %]
936
        <input type="hidden" name="BW_id_isbn" id="BW_id_isbn" value="[% normalized_isbn %]"/>
937
938
        <div id="BW_notes"></div>
939
        <div id="BW_critiques"></div>
940
        <div id="BW_critiques_pro"></div>
941
        <div id="BW_citations"></div>
942
    [% END %]
943
944
</div>
945
946
<div id="bibliodescriptions" class="toptabs">
947
948
<ul>   
949
    [% IF ( defaulttab == 'holdings' ) %]<li id="tab_holdings" class="ui-tabs-active">[% ELSE %]<li id="tab_holdings">[% END %]
950
        <a href="#holdings">[% IF SeparateHoldings %][% LoginBranchname %] holdings[% ELSE %]Holdings[% END %][% UNLESS too_many_items %]  ( [% itemloop.size || 0 %] )[% END %]</a>
951
    </li>
952
    [% IF (SeparateHoldings) %]
953
        <li><a href="#otherholdings">Other holdings ( [% otheritemloop.size || 0 %] )</a></li>
954
    [% END %]
955
[% IF ( MARCNOTES || notes || ( SyndeticsEnabled && SyndeticsSummary && SYNDETICS_SUMMARY )) %]
956
    <li id="tab_descriptions"> <a href="#descriptions">Title notes</a></li>
957
[% END %]
958
[% IF ( SYNDETICS_TOC ) %]
959
    <li id="tab_toc"> <a href="#toc">TOC</a></li>
960
[% END %]
961
[% IF ( SyndeticsEnabled ) %]
962
    [% IF ( SyndeticsExcerpt ) %][% IF ( SYNDETICS_EXCERPT ) %]
963
        <li id="tab_excerpt"> <a href="#excerpt">Excerpt</a></li>
964
    [% END %][% END %]
965
    [% IF ( SyndeticsReviews ) %][% IF ( SYNDETICS_REVIEWS ) %]
966
        <li id="tab_reviews"> <a href="#reviews">Reviews</a></li>
967
        <li id="tab_LTFLreviews">
968
            <script src="[% protocol %]www.librarything.com/forlibraries/widget.js?id=[% LibraryThingForLibrariesID %]" type="text/javascript"></script>
969
            <noscript>This page contains enriched content visible when JavaScript is enabled or by clicking <a href="[% protocol %]www.librarything.com/forlibraries/noscript.php?id=[% LibraryThingForLibrariesID %]&amp;accessibility=1">here</a>.</noscript>
970
        </li>
971
    [% END %][% END %]
972
    [% IF ( SyndeticsAuthorNotes ) %][% IF ( SYNDETICS_ANOTES ) %]
973
        <li id="tab_anotes"> <a href="#anotes">About the author</a></li>
974
    [% END %][% END %]
975
[% END %]
976
[% IF ( LibraryThingForLibrariesID ) %] 
977
[% IF ( LibraryThingForLibrariesTabbedView ) %]
978
    <li id="tab_LFTLSimilarItems"> <a href="#LFTLSimilarItems">Similar items</a></li>
979
    <li id="tab_LTFLTagBrowse"> <a href="#LTFLTagBrowse">Tag browser</a></li>
980
[% END %]
981
[% END %]
982
[% IF ( subscriptionsnumber ) %]
983
    [% IF ( defaulttab == 'subscriptions' ) %]<li id="tab_subscriptions" class="ui-tabs-active">[% ELSE %]<li id="tab_subscriptions">[% END %]
984
        <a href="#subscriptions">Subscriptions</a>
985
    </li>
986
[% END %]
987
[% IF ( Koha.Preference( 'reviewson' ) == 1 ) %]
988
    <li id="tab_comments"><a href="#comments">Comments ( [% reviews.size || 0 %] )</a></li>
989
[% END %]
990
991
[% IF ( NovelistSelectProfile ) %] 
992
    [% IF ( NovelistSelectView == 'tab') %]
993
        <li id="tab_NovelistSelect"> <a href="#NovelistSelect">Novelist Select</a></li>
994
    [% END %]
995
[% END %]
996
997
[% IF ( OPACFRBRizeEditions ) %][% IF ( XISBNS ) %]
998
    <li id="tab_editions"><a href="#editions">Editions</a></li>
999
[% END %][% END %]
1000
1001
[% IF ( serialcollection ) %]
1002
    [% IF ( defaulttab == 'serialcollection' ) %]<li id="tab_serialcollection" class="ui-tabs-active">[% ELSE %]<li id="tab_serialcollection">[% END %]
1003
        <a href="#serialcollection">Serial collection</a>
1004
    </li>
1005
[% END %]
1006
1007
[% IF ( OPACLocalCoverImages && localimages.size ) %]
1008
    <li id="tab_images"><a href="#images">Images</a></li>
1009
[% END %]
1010
1011
[% IF ( HTML5MediaEnabled ) %][% IF ( HTML5MediaSets ) %]
1012
    <li id="tab_html5media"><a href="#html5media">Play media</a></li>
1013
[% END %][% END %]
1014
1015
[% IF ( IDreamBooksReviews ) %]
1016
    <li id='tab_idb_critic_reviews' style="display:none;"><a href='#idb_critic_reviews'>Book reviews by critics ( XXX )</a></li>
1017
[% END %]
1018
</ul>
1019
1020
[% IF ( serialcollection ) %]
1021
<div id="serialcollection">
1022
    <table id="serialcollectiont">
1023
	<thead>
1024
	    <tr>
1025
            <th id="serial_library">Library</th>
1026
            <th id="serial_collection">Serial collection</th>
1027
            <th id="serial_itemcallnumber">Item callnumber</th>
1028
	    </tr>
1029
	</thead>
1030
	<tbody>
1031
	[% FOREACH serialcollection IN serialcollections %]
1032
	    <tr>
1033
		<td>[% serialcollection.branch %]</td>
1034
		<td>[% serialcollection.text %]</td>
1035
        <td>[% serialcollection.itemcallnumber %]</td>
1036
	    </tr>
1037
	[% END %]
1038
	</tbody>
1039
    </table>
1040
</div>
1041
[% END %]
1042
1043
1044
<div id="holdings">
1045
[% IF too_many_items %]
1046
    <p>This record has many physical items ([% items_count %]). <a href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% biblionumber %]&amp;viewallitems=1">Click here to view them all.</a></p>
1047
[% ELSIF ( itemloop.size ) %]
1048
    [% INCLUDE items_table items=itemloop tab="holdings" %]
1049
    [% IF holds_count.defined || priority %]
1050
    <div id="bib_holds">
1051
        [% IF holds_count.defined %]
1052
        Total holds: [% holds_count %]
1053
        [% END %]
1054
        [% IF priority %]
1055
            [% IF holds_count.defined %]
1056
            (priority [% priority %])
1057
            [% ELSE %]
1058
            Overall queue priority: [% priority %]
1059
            [% END %]
1060
        [% END %]
1061
        </div>
1062
    [% END %]
1063
[% ELSE %]
1064
    [% IF ( ALTERNATEHOLDINGS ) %]
1065
    [% FOREACH ALTERNATEHOLDING IN ALTERNATEHOLDINGS %]
1066
        <div id="alternateholdings"><span class="holdings_label">Holdings:</span> [% ALTERNATEHOLDING.holding %]</div>
1067
    [% END %]
1068
    [% ELSE %]
1069
    <div id="noitems">No physical items for this record</div>
1070
    [% END %]
1071
[% END %]
1072
1073
[% PROCESS 'shelfbrowser.inc' %]
1074
[% INCLUDE shelfbrowser tab='holdings' %]
1075
<br clear="all" />
1076
</div>
1077
1078
[% IF (SeparateHoldings) %]
1079
    <div id="otherholdings">
1080
        [% IF otheritemloop.size %]
1081
            [% INCLUDE items_table items=otheritemloop tab="otherholdings" %]
1082
        [% ELSE %]
1083
            No other items.
1084
        [% END %]
1085
        [% INCLUDE shelfbrowser tab='otherholdings' %]
1086
    </div>
1087
[% END %]
1088
1089
[% IF ( MARCNOTES || notes || ( SyndeticsEnabled && SyndeticsSummary && SYNDETICS_SUMMARY )) %]
1090
1091
<div id="descriptions">
1092
<div class="content_set">
1093
1094
[% IF ( SyndeticsEnabled ) %]
1095
[% IF ( SyndeticsSummary ) %]
1096
[% IF ( SYNDETICS_SUMMARY ) %]
1097
    <h4>Enhanced descriptions from Syndetics:</h4>
1098
    <p>[% SYNDETICS_SUMMARY %]</p>
1099
[% END %]
1100
[% END %]
1101
[% END %]
1102
1103
[% IF ( MARCNOTES ) %]
1104
    <div id="marcnotes">
1105
    [% FOREACH MARCNOTE IN MARCNOTES %]
1106
    <p>[% MARCNOTE.marcnote FILTER html_line_break %]</p>
1107
    [% END %]
1108
    </div>
1109
[% ELSE %]
1110
    [% IF ( notes ) %]
1111
    <p>[% notes %]</p>
1112
    [% END %]
1113
[% END %]
1114
1115
</div>
1116
</div>
1117
1118
[% END %]
1119
1120
[% IF ( SyndeticsEnabled ) %]
1121
1122
[% IF ( SyndeticsTOC ) %][% IF ( SYNDETICS_TOC ) %]
1123
<div id="toc">
1124
<div class="content_set">
1125
<h3>Table of contents provided by Syndetics</h3>
1126
<ul>
1127
[% FOREACH SYNDETICS_TO IN SYNDETICS_TOC %]
1128
    [% IF ( SYNDETICS_TO.p ) %]
1129
    <li><b>[% SYNDETICS_TO.l %] [% SYNDETICS_TO.t %]</b>[% IF ( SYNDETICS_TO.p ) %] ([% SYNDETICS_TO.p %])[% END %]</li>
1130
    [% END %]
1131
[% END %]
1132
</ul>
1133
</div>
1134
</div>
1135
[% END %][% END %]
1136
1137
[% IF ( SyndeticsExcerpt ) %][% IF ( SYNDETICS_EXCERPT ) %]
1138
<div id="excerpt">
1139
<div class="content_set">
1140
<h3>Excerpt provided by Syndetics</h3>
1141
[% SYNDETICS_EXCERPT %]
1142
</div>
1143
</div>
1144
[% END %][% END %]
1145
1146
[% IF ( SyndeticsReviews ) %][% IF ( SYNDETICS_REVIEWS ) %]
1147
<div id="reviews">
1148
<div class="content_set">
1149
<h3>Reviews provided by Syndetics</h3>
1150
[% FOREACH SYNDETICS_REVIEW IN SYNDETICS_REVIEWS %]
1151
    [% IF ( SYNDETICS_REVIEW.title ) %]
1152
    <h4>[% SYNDETICS_REVIEW.title %]</h4>
1153
	[% FOREACH review IN SYNDETICS_REVIEW.reviews %]
1154
1155
	[% IF ( review.content ) %]
1156
		[% review.content %]
1157
	[% END %]
1158
1159
	[% END %]
1160
    [% END %]
1161
[% END %]
1162
</div>
1163
</div>
1164
[% END %][% END %]
1165
1166
[% IF ( SyndeticsAuthorNotes ) %][% IF ( SYNDETICS_ANOTES ) %]
1167
<div id="anotes">
1168
<div class="content_set">
1169
<h3>Author notes provided by Syndetics</h3>
1170
[% FOREACH SYNDETICS_ANOTE IN SYNDETICS_ANOTES %]
1171
    [% IF ( SYNDETICS_ANOTE.content ) %]
1172
        [% SYNDETICS_ANOTE.content %]
1173
    [% END %]
1174
[% END %]
1175
</div>
1176
</div>
1177
[% END %][% END %]
1178
[% END %] <!-- /SyndeticsEnabled -->
1179
1180
[% IF ( NovelistSelectProfile ) %] [% IF ( NovelistSelectView == 'tab') %]
1181
   <div id="NovelistSelect">
1182
        <div data-novelist-novelistselect=[% normalized_isbn %]></div>
1183
   </div>
1184
[% END %] [% END %]
1185
1186
[% IF ( subscriptionsnumber ) %]
1187
<div id="subscriptions">
1188
    <h2>This is a serial</h2>
1189
    <p>There are [% subscriptionsnumber %] subscription(s) associated with this title.</p>
1190
    [% FOREACH subscription IN subscriptions %]
1191
    [% IF ( subscription.branchname ) %]<h3>At library: [% subscription.branchname %]</h3>[% ELSE %]
1192
    [% IF ( subscription.branchcode ) %]<h3>At library: [% subscription.branchcode %]</h3>[% END %][% END %]
1193
    [% IF ( subscription.closed ) %]<p>This subscription is closed.</p>[% END %]
1194
    <span style="display:none;"> [% IF ( subscription.callnumber ) %]<p>Callnumber: [% subscription.callnumber %]</p>[% END %]</span>
1195
    [% IF ( subscription.subscriptionnotes ) %]<p>[% subscription.subscriptionnotes FILTER html_line_break %] </p>[% END %]
1196
    <p>Subscription from: [% subscription.histstartdate | $KohaDates %] to:[% IF ( subscription.histenddate ) %] [% subscription.histenddate | $KohaDates %] [% ELSE %] now (current)[% END %]</p>
1197
    [% IF ( subscription.missinglist ) %]<p>Missing issues: [% subscription.missinglist %] </p>[% END %]
1198
    [% IF ( subscription.opacnote ) %]<p>[% subscription.opacnote FILTER html_line_break %]</p>[% END %]
1199
    [% IF ( subscription.callnumber ) %]<p>Callnumber: [% subscription.callnumber %]</p>[% END %]
1200
[% IF ( subscription.latestserials ) %]
1201
    <p> The [% subscription.opacdisplaycount %] latest issues for this subscription:</p>
1202
    <table>
1203
        <tr>
1204
            <th>Issue #</th>
1205
            <th>Date</th>
1206
            <th>Status</th>
1207
            <th>Note</th>
1208
        </tr>
1209
            [% FOREACH latestserial IN subscription.latestserials %]
1210
            <tr>
1211
                <td>    [% latestserial.serialseq %]
1212
                </td>
1213
                <td>    [% latestserial.planneddate %]
1214
                </td>
1215
                <td>
1216
                    [% IF ( latestserial.status1 ) %]Expected[% END %]
1217
                    [% IF ( latestserial.status2 ) %]Arrived[% END %]
1218
                    [% IF ( latestserial.status3 ) %]Late[% END %]
1219
                    [% IF ( latestserial.status4 ) %]Missing[% END %]
1220
                    [% IF ( latestserial.status41 ) %]Missing (never received)[% END %]
1221
                    [% IF ( latestserial.status42 ) %]Missing (sold out)[% END %]
1222
                    [% IF ( latestserial.status43 ) %]Missing (damaged)[% END %]
1223
                    [% IF ( latestserial.status44 ) %]Missing (lost)[% END %]
1224
                    [% IF ( latestserial.status5 ) %]Not issued[% END %]
1225
                    [% IF ( latestserial.status6 ) %]Delete[% END %]
1226
                    [% IF ( latestserial.status7 ) %]Claimed[% END %]
1227
                    [% IF ( latestserial.status8 ) %]Stopped[% END %]
1228
                </td>
1229
                <td>    [% latestserial.notes %]
1230
                </td>
1231
            </tr>
1232
            [% END %]
1233
        </table>
1234
        [% END %]
1235
        [% END %]
1236
        <p><a href="opac-serial-issues.pl?biblionumber=[% biblionumber %]">More details</a></p>
1237
    </div>
1238
    [% END %]
1239
1240
[% IF ( LibraryThingForLibrariesID ) %] 
1241
[% IF ( LibraryThingForLibrariesTabbedView ) %]
1242
	<!-- Library Thing for Libraries Content --> 
1243
		<div id="LFTLSimilarItems">
1244
			<div class="content_set">
1245
	<!-- Uncommenting this span makes the font smaller in the tab for LTFL -->
1246
    <!-- but breaks Xhtml validation -->
1247
 	<!--	<span class="results_summary">-->
1248
				<div id="ltfl_related"></div>
1249
				<div id="ltfl_similars"></div>
1250
	<!--			</span>-->
1251
			</div>
1252
		</div>
1253
		 <div id="LTFLTagBrowse">
1254
                        <div class="content_set">
1255
                                <!-- <span class="results_summary"> -->
1256
                                <div id="ltfl_tagbrowse" class="ltfl"></div>
1257
                                <!-- </span> -->
1258
                        </div>
1259
                </div>
1260
	[% END %]
1261
[% END %]
1262
<!-- /Library Thing for Libraries Content -->
1263
1264
1265
[% IF ( Koha.Preference( 'reviewson' ) == 1 ) %]
1266
<div id="comments">
1267
    <div id="newcomment"></div>
1268
    [% IF ( reviews ) %]
1269
        [% FOREACH review IN reviews %]
1270
            [% IF ( review.your_comment ) %]
1271
            <div class="commentline yours" id="c[% review.reviewid %]">
1272
                [% IF ( review.avatarurl ) %]
1273
            <img class="avatar" src="[% review.avatarurl %]" height="80" width="80" alt="" />
1274
                [% END %]
1275
            <h5>
1276
                Your comment
1277
            </h5>
1278
            <small>[% review.datereviewed | $KohaDates %]</small>
1279
        <p>
1280
          [% FILTER html_break %]
1281
          [% review.review |html %]
1282
          [% END %]
1283
          <a href="#" onclick="Dopop('/cgi-bin/koha/opac-review.pl?biblionumber=[% review.biblionumber %]&amp;reviewid=[% review.reviewid %]');">Edit</a>
1284
        </p></div>
1285
            [% ELSE %]
1286
            <div class="commentline">
1287
            [% IF ( ShowReviewer != "none" ) %]
1288
                    [% IF ( review.avatarurl ) %]
1289
                <img class="avatar" src="[% review.avatarurl %]" height="80" width="80" alt="" />
1290
                    [% END %]
1291
                    [% SWITCH ShowReviewer %]
1292
                    [% CASE 'full' %]
1293
                        <h5>Comment by [% review.title %] [% review.firstname %] [% review.surname %]</h5>
1294
                    [% CASE 'first' %]
1295
                        <h5>Comment by [% review.firstname %]</h5>
1296
                    [% CASE 'surname' %]
1297
                        <h5>Comment by [% review.surname %]</h5>
1298
                    [% CASE 'firstandinitial' %]
1299
                        <h5>Comment by [% review.firstname %] [% review.surname|truncate(2,'.') %]</h5>
1300
                    [% CASE 'username' %]
1301
                        <h5>Comment by [% review.userid %]</h5>
1302
                    [% END %]
1303
                <small>[% review.datereviewed | $KohaDates %]</small>
1304
            [% ELSIF ( ShowReviewer == "none") %]
1305
                <h5>Patron comment on [% review.datereviewed | $KohaDates %]</h5>
1306
            [% END %]
1307
        <p>
1308
          [% FILTER html_break %]
1309
          [% review.review |html %]
1310
          [% END %]
1311
        </p></div>
1312
            [% END %]
1313
        [% END %]
1314
    [% ELSE %]
1315
        <p>There are no comments for this item.</p>
1316
    [% END %]
1317
    [% IF ( loggedinusername ) %]
1318
        [% UNLESS ( loggedincommenter ) %]
1319
       <div id="addcomment"> <a href="#" onclick="Dopop('/cgi-bin/koha/opac-review.pl?biblionumber=[% biblionumber %]'); return false;">
1320
            Post or edit your comments on this item.
1321
        </a></div>
1322
        [% END %]
1323
    [% ELSE %]
1324
        <div id="addcomment"><a href="/cgi-bin/koha/opac-user.pl">Log in to your account</a> to post a comment.</div>
1325
    [% END %]
1326
</div>
1327
[% END %]
1328
1329
[% IF ( OPACFRBRizeEditions ) %][% IF ( XISBNS ) %]
1330
<div id="editions">
1331
1332
<h4>Other editions of this work</h4>
1333
<table>
1334
[% FOREACH XISBN IN XISBNS %]
1335
<tr>
1336
<td>
1337
[% IF ( OPACAmazonCoverImages ) %]<img src="http://images.amazon.com/images/P/[% XISBN.normalized_isbn %].01._AA75_PU_PU-5_.jpg" alt="" />[% END %]
1338
1339
[% IF ( SyndeticsEnabled ) %][% IF ( SyndeticsCoverImages ) %][% IF ( XISBN.content_identifier_exists ) %]
1340
    <img border="0" src="[% protocol %][% root_syndetics %].syndetics.com/index.aspx?isbn=[% XISBN.browser_normalized_isbn %]/SC.GIF&amp;client=[% SyndeticsClientCode %][% IF ( XISBN.browser_normalized_upc ) %]&amp;upc=[% XISBN.browser_normalized_upc %][% END %][% IF ( XISBN.browser_normalized_oclc ) %]&amp;oclc=[% XISBN.browser_normalized_oclc %][% END %]&amp;type=xw10" alt="" />
1341
[% ELSE %]<span class="no-image">No cover image available</span>[% END %][% END %][% END %]
1342
1343
</td>
1344
[% UNLESS ( item_level_itypes ) %]<td>[% XISBN.description %]</td>[% END %]<td><a href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% XISBN.biblionumber %]">[% XISBN.title |html %]</a>[% IF ( XISBN.author ) %] by [% XISBN.author |html %][% END %][% IF ( XISBN.copyrightdate ) %] &copy;[% XISBN.copyrightdate %][% END %][% IF ( XISBN.publishercode ) %]
1345
    <p>[% XISBN.publishercode |html %] 
1346
       [% IF ( XISBN.place ) %]([% XISBN.place %])[% END %] [% IF ( XISBN.publicationyear ) %], [% XISBN.publicationyear %][% END %]
1347
        [% IF ( XISBN.pages ) %][% XISBN.pages %] [% XISBN.illus %] [% XISBN.size %]</p>[% END %]
1348
    [% END %]</td>
1349
</tr>
1350
[% END %]
1351
</table>
1352
</div>[% END %][% END %]
1353
1354
[% IF ( HTML5MediaEnabled ) %]
1355
<div id="html5media">
1356
        <p>
1357
        <[% HTML5MediaParent %] controls preload=none>
1358
          [% FOREACH HTML5MediaSet IN HTML5MediaSets %]
1359
            <[% HTML5MediaSet.child  %] src="[% HTML5MediaSet.srcblock %]"[% HTML5MediaSet.typeblock %] />
1360
          [% END %]
1361
            [[% HTML5MediaParent %] tag not supported by your browser.]
1362
        </[% HTML5MediaParent %]>
1363
        </p>
1364
</div>
1365
[% END %]
1366
1367
[% IF ( OPACLocalCoverImages && localimages.size ) %]
1368
<div id="images">
1369
<p>Click on an image to view it in the image viewer</p>
1370
[% FOREACH image IN localimages %]
1371
[% IF image %]
1372
<a class="localimage" href="/cgi-bin/koha/opac-imageviewer.pl?biblionumber=[% biblionumber %]&amp;imagenumber=[% image %]"><img alt="" src="/cgi-bin/koha/opac-image.pl?thumbnail=1&amp;imagenumber=[% image %]" /></a>
1373
[% END %]
1374
[% END %]
1375
</div>
1376
[% END %]
1377
1378
[% IF ( IDreamBooksReviews ) %]
1379
    <div id="idb_critic_reviews">
1380
        <div id="idb_review_snippets">
1381
        </div>
1382
        <span><a id="seemoreidb">More book reviews at iDreamBooks.com</a></span>
1383
    </div>
1384
[% END %]
1385
1386
1387
</div>
1388
[% IF ( NovelistSelectProfile ) %][% IF ( NovelistSelectView == 'below' ) %]
1389
<div id="NovelistSelect">
1390
<h3>Novelist Select</h3>
1391
<div data-novelist-novelistselect="[% normalized_isbn %]"></div>
1392
</div>
1393
[% END %][% END %]
1394
</div>
1395
1396
[% IF ( Babeltheque ) %]
1397
    <div>
1398
        <div id="BW_etiquettes"></div>
1399
        <div id="BW_suggestions"></div>
1400
    </div>
1401
    <div class="clearfix"></div>
1402
    <div>
1403
    <div id="BW_podcasts"></div>
1404
    </div>
1405
    <div class="clearfix"></div>
1406
    <div>
1407
        <div id="BW_videos"></div>
1408
    </div>
1409
[% END %]
1410
1411
1412
</div>
1413
1414
1415
<div class="yui-u">
1416
<div id="ulactioncontainer" class="container">
1417
1418
[% IF ( OpacBrowseResults && busc ) %]
1419
    <div class="nav_results">
1420
        <div class="l_Results">[% IF ( listResults ) %]<a href="#" id="a_listResults" title="Show pagination list ([% indexPag %]-[% indexPagEnd %] / [% totalPag %])">Browse results</a>[% ELSE %]<span>Browse results</span>[% END %]</div>
1421
        <ul class="pg_menu clearfix">
1422
            <li class="left_results">
1423
                [% IF ( previousBiblionumber ) %]
1424
                    <a href="opac-detail.pl?biblionumber=[% previousBiblionumber %][% IF ( query_desc && OpacHighlightedWords ) %]&query_desc=[% query_desc |uri %][% END %]" title="See: [% IF ( previousTitle ) %][% previousTitle |html %][% ELSE %]previous biblio[% END %]">&laquo; Previous</a>
1425
                [% ELSE %]
1426
                    <span>Previous</span>
1427
                [% END %]
1428
            </li>
1429
            <li class="back_results"><a href="opac-search.pl?[% busc %]" title="Back to the results search list">Back to results</a></li>
1430
            <li class="right_results">
1431
                [% IF ( nextBiblionumber ) %]
1432
                    <a href="opac-detail.pl?biblionumber=[% nextBiblionumber %][% IF ( query_desc && OpacHighlightedWords ) %]&query_desc=[% query_desc |uri %][% END %]" title="See: [% IF ( nextTitle ) %][% nextTitle |html %][% ELSE %]next biblio[% END %]">Next &raquo;</a>
1433
                [% ELSE %]
1434
                    <span>Next</span>
1435
                [% END %]
1436
            </li>
1437
        </ul>
1438
        [% IF ( listResults ) %]
1439
        <div class="pagination">
1440
            <div class="nav">
1441
                <span class="close_pagination"><a href="#" id="close_pagination">Close</a></span>
1442
                <ul id="listResults"></ul>
1443
            </div>
1444
            <div class="pagination_list">
1445
                <ul id="ul_pagination_list"></ul>
1446
            </div>
1447
        </div>
1448
        [% END %]
1449
    </div>
1450
[% END %]
1451
1452
[% INCLUDE 'opac-detail-sidebar.inc' %]
1453
        [% IF ( NovelistSelectProfile ) %] [% IF ( NovelistSelectView == 'right') %]
1454
         <div id="NovelistSelect">
1455
            <h4>Novelist Select</h4>
1456
            <div data-novelist-novelistselect=[% normalized_isbn %]></div>
1457
         </div>
1458
        [% END %] [% END %]
1459
1460
[% IF ( Babeltheque ) %]
1461
    <div class="babeltheque_adds">
1462
        <div id="BW_critiques_aj"></div>
1463
        <div id="BW_citations_aj"></div>
1464
    </div>
1465
[% END %]
1466
1467
[% IF ( SocialNetworks ) %]
1468
    <div id="social_networks">
1469
        <span>Share</span>
1470
        <div><a id="facebook" href="http://www.facebook.com/sharer.php?u=[% protocol %][% current_url |url %]&amp;t=[% title |url %]" title="Share on Facebook">Facebook</a></div>
1471
        <div><a id="linkedin" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=[% protocol %][% current_url |url %]&amp;title=[% title |url %]" title="Share on LinkedIn">LinkedIn</a></div>
1472
        <div><a id="delicious" href="http://www.delicious.com/save?url=[% protocol %][% current_url |url %]&amp;title=[% title |url %]" title="Share on Delicious">Delicious</a></div>
1473
        <div><a id="email" href="mailto:?subject=[% title |url %]&amp;body=[% title |url %] ([% protocol %][% current_url |url %])" title="Share by email">Email</a></div>
1474
        <div><g:plusone size="small" annotation="none"></g:plusone></div>
1475
        <div><a id="twitter" href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-text="[% title %]" data-lang="[% lang %]">Tweet</a></div>
1476
    </div>
1477
[% END %]
1478
1479
</div>
1480
</div>
1481
</div>
1482
1483
1484
</div>
1485
</div>
1486
</div>
1487
[% IF ( LibraryThingForLibrariesID ) %]
1488
    <script src="[% protocol %]ltfl.librarything.com/forlibraries/widget.js?systype=koha&amp;id=[% LibraryThingForLibrariesID %]" type="text/javascript"></script>
1489
    <noscript>This page contains enriched content visible when JavaScript is enabled or by clicking
1490
    <a href="[% protocol %]www.librarything.com/forlibraries/noscript.php?id=[% LibraryThingForLibrariesID %]&amp;accessibility=1">here</a>.</noscript>
1491
[% END %]
1492
[% IF ( NovelistSelectProfile ) %]
1493
<script type="text/javascript" src="http://imageserver.ebscohost.com/novelistselect/ns2init.js"></script>
1494
[% END %]
1495
1496
[% IF ( Babeltheque ) %]
1497
    <script type="text/javascript" src="[% Babeltheque_url_js %]"></script>
1498
[% END %]
1499
1500
[% INCLUDE 'opac-bottom.inc' %]
1501
1502
[%# End of template %]
1503
1504
[% BLOCK items_table %]
1505
    <table class="holdingst">
1506
        <thead><tr>
1507
            [% IF ( item_level_itypes ) %]<th id="item_itemtype" class="itype">Item type</th>[% END %]
1508
            [% IF ( OpacLocationBranchToDisplay == 'holding' || OpacLocationBranchToDisplay == 'both' || singleBranchMode ) %]
1509
                <th>Current location</th>
1510
            [% END %]
1511
            [% UNLESS ( singleBranchMode ) %]
1512
                [% IF ( OpacLocationBranchToDisplay == 'home' || OpacLocationBranchToDisplay == 'both' ) %]
1513
                    <th>Home library</th>
1514
                [% END %]
1515
            [% END %]
1516
            [% IF ( itemdata_ccode ) %]<th id="item_ccode" class="collection">Collection</th>[% END %]
1517
            <th id="item_callnumber" class="call_no">Call number</th>
1518
            [% IF ( itemdata_enumchron ) %]<th id="item_enumchron" class="vol_info">Vol info</th>[% END %]
1519
            [% IF ( itemdata_uri ) %]<th id="item_url" class="url">url</th>[% END %]
1520
            [% IF ( itemdata_copynumber ) %]<th id="item_copy" class="copynumber">Copy number</th>[% END %]
1521
            <th id="item_status" class="status">Status</th>
1522
            [% IF ( itemdata_itemnotes ) %]<th id="item_notes" class="notes">Notes</th>[% END %]
1523
            <th id="item_datedue" class="date_due">Date due</th>
1524
            [% IF ( OPACShowBarcode ) %]<th id="item_barcode" class="barcode">Barcode</th>[% END %]
1525
        [% IF holds_count.defined %]
1526
            <th>Item holds</th>
1527
        [% ELSIF show_priority %]
1528
            <th>Item hold queue priority</th>
1529
        [% END %]
1530
        [% IF ( ShowCourseReservesHeader ) %]<th id="item_coursereserves">Course reserves</th>[% END %]
1531
        </tr></thead>
1532
	    <tbody>[% FOREACH ITEM_RESULT IN items %]
1533
      [% IF ITEM_RESULT.this_branch %]
1534
        <tr class="highlight-row-detail" vocab="http://schema.org/" typeof="Offer">
1535
      [% ELSE %]
1536
        <tr vocab="http://schema.org/" typeof="Offer">
1537
      [% END %]
1538
      [% IF ( item_level_itypes ) %]<td class="itype">[% UNLESS ( noItemTypeImages ) %][% IF ( ITEM_RESULT.imageurl ) %]<img src="[% ITEM_RESULT.imageurl %]" title="[% ITEM_RESULT.description %]" alt="[% ITEM_RESULT.description %]" />[% END %][% END %] [% ITEM_RESULT.description %]</td>[% END %]
1539
        [% UNLESS ( singleBranchMode ) %]
1540
            [% IF ( OpacLocationBranchToDisplay == 'holding' || OpacLocationBranchToDisplay == 'both' ) %]
1541
                <td class="location_holding" property="seller">
1542
                     <link property="itemOffered" href="#record" />
1543
                     <link property="businessFunction" href="http://purl.org/goodrelations/v1#LeaseOut">
1544
                     <span class="[% ITEM_RESULT.branch_opac_info ? 'branch-info-tooltip-trigger' : '' %]">
1545
                         [% IF ( ITEM_RESULT.branchurl ) %]
1546
                             <a href="[% ITEM_RESULT.branchurl %]">[% ITEM_RESULT.branchname %]</a>
1547
                         [% ELSE %]
1548
                             [% ITEM_RESULT.branchname %]
1549
                         [% END %]
1550
                     </span>
1551
1552
                    [% IF ( OpacLocationBranchToDisplayShelving == 'holding' || OpacLocationBranchToDisplayShelving == 'both' ) %]
1553
                        <span class="shelvingloc">[% ITEM_RESULT.location_description %]</span>
1554
                    [% END %]
1555
1556
                    <div class="branch-info-tooltip">[% ITEM_RESULT.branch_opac_info %]</div>
1557
                </td>
1558
            [% END %]
1559
1560
            [% IF ( OpacLocationBranchToDisplay == 'home' || OpacLocationBranchToDisplay == 'both' ) %]
1561
                    <td class="location_home" property="seller">
1562
                            <link property="itemOffered" href="#record" />
1563
                            <link property="businessFunction" href="http://purl.org/goodrelations/v1#LeaseOut">
1564
1565
                            <span class="[% ITEM_RESULT.branch_opac_info ? 'branch-info-tooltip-trigger' : '' %]">
1566
                                    [% IF ( Branches.GetURL( ITEM_RESULT.homebranch ) ) %]
1567
                                            <a href="[% Branches.GetURL( ITEM_RESULT.homebranch ) %]">[% Branches.GetName( ITEM_RESULT.homebranch ) %]</a>
1568
                                    [% ELSE %]
1569
                                             [% Branches.GetName( ITEM_RESULT.homebranch ) %]
1570
                                    [% END %]
1571
                            </span>
1572
1573
                            [% IF ( OpacLocationBranchToDisplayShelving == 'home' || OpacLocationBranchToDisplayShelving == 'both' ) %]
1574
                                    <span class="shelvingloc">[% ITEM_RESULT.location_description %]</span>
1575
                            [% END %]
1576
                    </td>
1577
            [% END %]
1578
        [% ELSE %]
1579
            <td class="location"><span class="shelvingloc">[% ITEM_RESULT.location_description %]</span></td>
1580
        [% END %]
1581
            [% IF ( itemdata_ccode ) %]<td class="collection">[% ITEM_RESULT.ccode %]</td>[% END %]
1582
        <td class="call_no" property="sku">
1583
            [% IF ( ITEM_RESULT.itemcallnumber ) %]
1584
                [% ITEM_RESULT.itemcallnumber %]
1585
                [% IF ( OPACShelfBrowser ) %]
1586
                    [% IF ( ITEM_RESULT.itemnumber == starting_itemnumber ) %]
1587
                        (<a class="close_shelf" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% ITEM_RESULT.biblionumber %]&amp;shelfbrowse_itemnumber=[% ITEM_RESULT.itemnumber %]#[% tab %]">Browse shelf</a>)
1588
                    [% ELSE %]
1589
                        (<a href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% ITEM_RESULT.biblionumber %]&amp;shelfbrowse_itemnumber=[% ITEM_RESULT.itemnumber %]#[% tab %]">Browse shelf</a>)
1590
                    [% END %]
1591
                [% END %]
1592
            [% END %]
1593
        </td>
1594
            [% IF ( itemdata_enumchron ) %]<td class="vol_info">[% ITEM_RESULT.enumchron %]</td>[% END %]
1595
            [% IF ( itemdata_uri ) %]<td class="url">
1596
              [% IF ITEM_RESULT.uri %]
1597
                [% IF trackclicks == 'track' || trackclicks == 'anonymous' %]
1598
                  <a href="/cgi-bin/koha/tracklinks.pl?uri=[% ITEM_RESULT.uri | url %]&amp;biblionumber=[% biblionumber |url %]&amp;itemnumber=[% ITEM_RESULT.itemnumber | url %]" property="url"> Link to resource </a>
1599
                [% ELSE %]
1600
                  <a href="[% ITEM_RESULT.uri %]" property="url">[% ITEM_RESULT.uri %]</a>
1601
                [% END %]
1602
              [% END %]
1603
              </td>
1604
            [% END %]
1605
               [% IF ( itemdata_copynumber ) %]<td class="copynumber">[% ITEM_RESULT.copynumber %]</td>[% END %]
1606
              <td class="status">[% INCLUDE 'item-status-schema-org.inc' item = ITEM_RESULT %][% INCLUDE 'item-status.inc' item = ITEM_RESULT %]</td>
1607
             [% IF ( itemdata_itemnotes ) %]<td class="notes" property="description">[% ITEM_RESULT.itemnotes %]</td>[% END %]
1608
        <td class="date_due"><span title="[% ITEM_RESULT.datedue %]">[% ITEM_RESULT.datedue | $KohaDates as_due_date => 1 %]</span></td>
1609
        [% IF ( OPACShowBarcode ) %]<td class="barcode" property="serialNumber">[% ITEM_RESULT.barcode %]</td>[% END %]
1610
        [% IF holds_count.defined || show_priority %]
1611
        <td class="holds_count">
1612
            [% IF holds_count.defined %] [% ITEM_RESULT.holds_count %] [% END %]
1613
            [% IF ITEM_RESULT.priority %]
1614
                [% IF holds_count.defined %]
1615
                (priority [% ITEM_RESULT.priority %])
1616
                [% ELSE %]
1617
                [% ITEM_RESULT.priority %]
1618
                [% END %]
1619
            [% END %]
1620
                </td>
1621
        [% END %]
1622
        [% IF ShowCourseReservesHeader %]
1623
            <td>
1624
                [% IF ITEM_RESULT.course_reserves %]
1625
                    [% FOREACH r IN ITEM_RESULT.course_reserves %]
1626
                        <p>
1627
                            <a href="opac-course-details.pl?course_id=[% r.course.course_id %]">
1628
                                [% r.course.course_name %]
1629
                                <!--[% IF r.course.course_number %] [% r.course.course_number %] [% END %]-->
1630
                                [% IF r.course.section %] [% r.course.section %] [% END %]
1631
                                [% IF r.course.term %] [% AuthorisedValues.GetByCode( 'TERM', r.course.term ) %] [% END %]
1632
                            </a>
1633
                        </p>
1634
                    [% END %]
1635
                [% END %]
1636
            </td>
1637
        [% END %]
1638
	    </tr>
1639
	    [% END %]</tbody>
1640
	</table>
1641
[% END %][%# end of items_table block %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-downloadcart.tt (-32 lines)
Lines 1-32 Link Here
1
[% USE Koha %]
2
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Download cart[% INCLUDE 'doc-head-close.inc' %]
3
</head>
4
<body id="opac-downloadcart" class="popup">
5
<div id="userdownloadcart" class="container">[% IF ( format ) %]
6
    <p>Your download should begin automatically.</p>
7
[% ELSE %]
8
<form method="post" action="/cgi-bin/koha/opac-downloadcart.pl">
9
	<fieldset class="rows">
10
	<ol><li><label for="format">Download cart:</label>
11
        <select name="format" id="format">
12
        <option value="">-- Choose format --</option>
13
        <option value="ris">RIS (Zotero, EndNote, others)</option>
14
        <option value="bibtex">BibTeX</option>
15
        <option value="iso2709">MARC</option>
16
	    [% FOREACH csv_profile IN csv_profiles %]
17
	    <option value="[% csv_profile.export_format_id %]">CSV - [% csv_profile.profile %]</option>
18
	    [% END %]
19
20
	</select></li></ol>
21
</fieldset>
22
<fieldset class="action">
23
	<input type="hidden" name="bib_list" value="[% bib_list | html %]" />
24
	<input type="submit" name="save" value="Go" />
25
</fieldset>
26
    </form>
27
28
    <p><a class="button close" href="#">Close this window</a></p>
29
30
[% END %]
31
</body>
32
</html>
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-downloadshelf.tt (-45 lines)
Lines 1-45 Link Here
1
[% USE Koha %]
2
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Download list[% INCLUDE 'doc-head-close.inc' %]
3
<script type="text/javascript">//<![CDATA[
4
	$(document).ready(function(){
5
		$(".close").html(_("Close this window"));
6
	});
7
//]]>
8
</script>
9
</head>
10
<body id="opac-downloadlist" class="popup">
11
<div id="userdownloadshelf" class="container">
12
[% UNLESS ( invalidlist ) %]
13
	[% IF ( format ) %]
14
	    <p>Your download should begin automatically.</p>
15
	[% ELSE %]
16
	<form method="post" action="/cgi-bin/koha/opac-downloadshelf.pl">
17
	<fieldset class="rows">
18
		<ol><li><label for="format">Download list:</label>
19
	        <select name="format" id="format">
20
            <option value="">-- Choose format --</option>
21
            <option value="ris">RIS (Zotero, EndNote, others)</option>
22
            <option value="bibtex">BibTeX</option>
23
            <option value="iso2709">MARC</option>
24
		    [% FOREACH csv_profile IN csv_profiles %]
25
		    <option value="[% csv_profile.export_format_id %]">CSV - [% csv_profile.profile %]</option>
26
		    [% END %]
27
28
		</select></li></ol>
29
	</fieldset>
30
	<fieldset class="action">	<input type="hidden" name="shelfid" value="[% shelfid | html %]" />
31
		<input type="submit" name="save" value="Go" /></fieldset>
32
	    </form>
33
34
	    <p><a class="button close" href="/cgi-bin/koha/opac-shelves.pl">Back to lists</a></p>
35
36
	[% END %]
37
[% ELSE %]
38
	<div class="dialog alert">
39
		<p>You do not have permission to download this list.</p>
40
	</div>
41
	<p><a class="button close" href="/cgi-bin/koha/opac-shelves.pl">Back to lists</a></p>
42
[% END %]
43
</div>
44
</body>
45
</html>
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-full-serial-issues.tt (-266 lines)
Lines 1-266 Link Here
1
[% USE Koha %]
2
[% USE KohaDates %]
3
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo;  Subscription information for [% bibliotitle %]
4
[% INCLUDE 'doc-head-close.inc' %]
5
[% INCLUDE 'datatables.inc' %]
6
<script type="text/javascript" language="javascript">
7
//<![CDATA[
8
9
$(document).ready(function(){
10
	showlayer([% yearmin %]);
11
	$("a.tabsubs:first").addClass("currentsubtab");
12
	$("#filterform").submit(function(){
13
		filterByLibrary();
14
		return false;
15
	});
16
	$("#libraryfilter").change(function(){
17
		filterByLibrary();
18
	});
19
	$("#subscriptionidfilter").change(function(){
20
		filterBySubscriptionId();
21
	});
22
	$("#reset").click(function(){
23
		clearFilters();
24
	});
25
	$("a.tabsubs").click(function(){
26
		$("a.tabsubs").removeClass("currentsubtab");
27
		$(this).addClass("currentsubtab");
28
	});
29
    $(".subscriptionstclass").dataTable($.extend(true, {}, dataTablesDefaults, {
30
        "aaSorting": [[ 0, "desc" ]],
31
        "aoColumns": [
32
            { "sType": "title-string" },
33
            null,
34
            null,
35
            { "sType": "title-string" },
36
            null,
37
            null,
38
            null
39
        ]
40
    }));
41
});
42
43
// Filters initialization
44
function initFilters() {
45
    // Deleting everything from the library filter
46
    $("#libraryfilter option").remove();
47
48
    // Getting each branchcode from the currently displayed tab
49
    var subarray = [];      
50
    $("div#" + currentYear + " table.subscriptionstclass tbody tr:visible td.libraryfilterclass").each(function() {
51
    	if (subarray.indexOf($(this).text()) == -1) { subarray.push($(this).text()); }
52
    });
53
54
    // Setting the option values with branchcodes 
55
    $("#libraryfilter").append('<option value="all">(All)</option>');    
56
    for (var i = 0; i < subarray.length; i++) {
57
        $("#libraryfilter").append('<option value="' + subarray[i] + '">' + subarray[i] + '</option>');    
58
    }
59
}
60
61
// Filter by Library
62
function filterByLibrary() {
63
    
64
    selectedStatus = $("#libraryfilter").val();
65
66
    // Reset the filters but keeps the selected library
67
    clearFilters(true);
68
69
    if (selectedStatus != 'all') {
70
71
     	// We hide everything
72
	$("table.subscriptionstclass tbody tr").hide();
73
	
74
	// Then show the lines that match the currently selected library 
75
	$("table.subscriptionstclass tbody tr td.libraryfilterclass:contains(" + selectedStatus + ")").parent().show();
76
77
78
	// We then prepare the subscription filter :
79
	
80
	// Getting subscription id's for the selected library 
81
	var subarray = [];	
82
	$("div#" + currentYear + " table.subscriptionstclass tbody tr:visible td.subscriptionidfilterclass").each(function() {
83
	    if (subarray.indexOf($(this).text()) == -1) { subarray.push($(this).text()); }
84
	});
85
	// Setting the option values with subscription id's
86
	$("#subscriptionidfilter").append('<option value="all">(All)</option>');    
87
	for (var i = 0; i < subarray.length; i++) {
88
	    $("#subscriptionidfilter").append('<option value="' + subarray[i] + '">' + subarray[i] + '</option>');    
89
	}
90
91
	// Subscription filtering is now ready
92
	$("#subscriptionidfilter").removeAttr("disabled");
93
    }
94
}
95
96
// Filter by subscription id
97
function filterBySubscriptionId() {
98
    
99
    selectedSubscription = $("#subscriptionidfilter").val();
100
    selectedLibrary      = $("#libraryfilter").val();
101
    
102
    if (selectedSubscription == "all") {
103
	clearFilters(true);
104
	filterByLibrary();
105
    } else {
106
107
	// We hide everything
108
	$("table.subscriptionstclass tbody tr").hide();
109
110
	// Then show the lines that match the currently selected library 
111
	$("table.subscriptionstclass tbody tr td.libraryfilterclass:contains(" + selectedLibrary + ")").parent().show();                
112
	
113
	// Then hide the lines where the subscription id does not match the selected one
114
	$("table.subscriptionstclass tbody tr td.subscriptionidfilterclass").not(
115
	    $("table.subscriptionstclass tbody tr td.subscriptionidfilterclass:contains(" + selectedSubscription + ")")
116
	).parent().hide();                
117
    }
118
}
119
120
// Clears filters : reset everything
121
// (Though preserves the selected library if the keeplibrary parameter is set to true)
122
function clearFilters(keeplibrary) {
123
124
    // Show all content
125
    $("table.subscriptionstclass tbody tr").show();
126
    
127
    // Remove old subscription options
128
    $("#subscriptionidfilter option").remove();
129
    $("#subscriptionidfilter option").append('<option value="all">(All)</option>');
130
    $("#subscriptionidfilter").attr("disabled", "disabled");
131
 
132
    if (keeplibrary != true) { 
133
	// Reinit library options
134
	initFilters();
135
	$("#libraryfilter option[value=all]").attr("selected", "selected");
136
    }
137
}
138
function showlayer(numlayer){
139
	$(".yeardata").each(function(){
140
		ong = $(this).attr("id");
141
		if(ong == "show"+numlayer){
142
			$(this).show();
143
			currentYear = ong;
144
		} else  {
145
			$(this).hide();
146
		}
147
	});
148
    clearFilters();
149
}
150
//]]>
151
</script>
152
<style type="text/css">
153
	#search-facets fieldset { border: 0; margin: 0;padding:0;}#search-facets ol{padding:.3em;}#search-facets li {list-style-type:none;padding:4px 4px;}#search-facets label{font-weight:bold;display:block;margin:.2em 0;}#search-facets fieldset.action {padding-left:4px;margin:.3em;}div.tabsub { clear:both;}#subtabs a { display:block;float:left;border:1px solid #CCC;padding:.2em .4em;margin-right:.3em;text-decoration:none;font-size:115%;}#subtabs strong { display:block; float: left; font-size:115%;padding:.2em .4em; }#subtabs { margin-top : 1em; }a.currentsubtab { background-color:#FFC;}
154
</style>
155
</head>
156
<body id="opac-full-serial-issues">
157
<div id="doc3" class="yui-t1">
158
   <div id="bd">
159
[% INCLUDE 'masthead.inc' %]
160
161
	<div id="yui-main">
162
	<div class="yui-b"><div class="yui-g">
163
164
[% UNLESS ( popup ) %]
165
    <h2>Subscription information for [% bibliotitle %]</h2>
166
	<div id="views">
167
		<span class="view"><a id="Normalview" href="opac-detail.pl?biblionumber=[% biblionumber %]">Normal view</a></span>
168
		<span class="view"><a id="Briefhistory" href="opac-serial-issues.pl?biblionumber=[% biblionumber %]&amp;selectview=small">Brief history</a></span>
169
		<span class="view"><span id="Fullhistory">Full history</span></span>
170
	</div>
171
172
[% END %]
173
    <div id="subtabs"><strong>Show year: </strong>
174
    [% FOREACH year IN years %]
175
        [% IF ( year.year ) %]
176
            <a class="tabsubs" href="#" onclick="showlayer([% year.year %]); return false;">[% year.year %]</a>
177
        [% END %]
178
    [% END %]
179
    </div>
180
181
    [% FOREACH year IN years %]
182
        [% IF loop.first %]
183
           <div class="yeardata tabsub" id="show[% year.year %]" style="display:block">
184
        [% ELSE %]
185
           <div class="yeardata tabsub" id="show[% year.year %]" style="display:none">
186
        [% END %]
187
        <table class="subscriptionstclass">
188
	    <thead>
189
		<tr>
190
		    <th>Date</th>
191
		    <th>Library</th>
192
		    <th>Notes</th>
193
		    <th>Date received</th>
194
		    <th>Number</th>
195
		    <th>Status</th>
196
		    <th>Subscription</th>
197
		</tr>
198
	    </thead>
199
	    <tbody>
200
		[% FOREACH serial IN year.serials %]
201
		<tr>
202
            <td>
203
                [% IF ( serial.publisheddate ) %]
204
                    <span title="[% serial.publisheddate %]">[% serial.publisheddate | $KohaDates %]</span>
205
                [% ELSE %]
206
                    &nbsp;
207
                [% END %]
208
            </td>
209
            <td class="libraryfilterclass">    [% serial.branchcode %]
210
		    </td>
211
		    <td>    [% serial.notes %]
212
		    </td>
213
            <td>
214
                [% IF ( serial.status2 && serial.planneddate ) %]
215
                    <span title="[% serial.planneddate %]">[% serial.planneddate | $KohaDates %]</span>
216
                [% ELSE %]
217
                    <span title="9999-12-31">&nbsp;</span>
218
                [% END %]
219
		    </td>
220
		    <td>    [% serial.serialseq %]
221
		    </td>
222
            <td>
223
              [% IF ( serial.status1 ) %]Expected[% END %]
224
              [% IF ( serial.status2 ) %]Arrived[% END %]
225
              [% IF ( serial.status3 ) %]Late[% END %]
226
              [% IF ( serial.status4 ) %]Missing[% END %]
227
              [% IF ( serial.status41 ) %]Missing (never received)[% END %]
228
              [% IF ( serial.status42 ) %]Missing (sold out)[% END %]
229
              [% IF ( serial.status43 ) %]Missing (damaged)[% END %]
230
              [% IF ( serial.status44 ) %]Missing (lost)[% END %]
231
              [% IF ( serial.status5 ) %]Not available[% END %]
232
              [% IF ( serial.status6 ) %]Delete[% END %]
233
              [% IF ( serial.status7 ) %]Claimed[% END %]
234
              [% IF ( serial.status8 ) %]Stopped[% END %]
235
		    </td>
236
		    <td class="subscriptionidfilterclass">    [% serial.subscriptionid %]
237
		    </td>
238
		</tr>
239
		[% END %]
240
	    </tbody>
241
        </table>
242
    </div>
243
    [% END %]
244
245
</div>
246
</div>
247
</div>
248
<div class="yui-b">
249
<div id="searchfacetscontainer" class="container">
250
<div id="search-facets">
251
<form action="opac-serial-issues.pl" id="filterform">
252
    <h4>Refine your search</h4>
253
	<fieldset>
254
	   <ol><li> <label for="libraryfilter">Library : </label>
255
	            <select id="libraryfilter" name="libraryfilter" style="width:10em;"></select></li>
256
	    <li><label for="subscriptionidfilter">Subscription : </label>
257
            <select id="subscriptionidfilter" name="subscriptionfilter" style="width:10em;" disabled="disabled"></select></li></ol>
258
		</fieldset>
259
		<fieldset class="action"><input type="reset" id="reset" value="Clear" /></fieldset>
260
    </form>
261
</div>
262
[% IF ( OpacNav ) %][% INCLUDE 'navigation.inc' %][% END %]
263
</div>
264
</div>
265
</div>
266
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-imageviewer.tt (-92 lines)
Lines 1-92 Link Here
1
[% USE Koha %]
2
[% INCLUDE 'doc-head-open.inc' %]
3
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Images for: [% biblio.title |html %]
4
[% INCLUDE 'doc-head-close.inc' %]
5
<script type="text/javascript">
6
//<![CDATA[
7
8
$(document).ready(function(){
9
    $("#largeCoverImg").attr("src","[% interface %]/[% theme %]/images/loading.gif");
10
    showCover([% imagenumber %]);
11
});
12
13
function showCover(img) {
14
    $('.thumbnail').attr('class', 'thumbnail');
15
    $('#largeCoverImg').attr('src', '/cgi-bin/koha/opac-image.pl?imagenumber=' + img);
16
    $('#' + img + '.thumbnail').attr('class', 'thumbnail selected');
17
}
18
//]]>
19
</script>
20
<style type="text/css">
21
#largeCoverImg {
22
    border : 1px solid #CCCCCC;
23
    display : block;
24
    margin : auto;
25
    padding : 1em;
26
}
27
#thumbnails {
28
    text-align : center;
29
}
30
#thumbnails a img {
31
    border : 2px solid #8EB3E7;
32
}
33
img.thumbnail {
34
    display : block;
35
    float : none;
36
    padding : .5em;
37
}
38
39
#thumbnails a img.selected {
40
    border-color: black;
41
    cursor : default;
42
    opacity:0.4;
43
    filter:alpha(opacity=40); /* For IE8 and earlier */
44
}
45
</style>
46
</head>
47
<body id="opac-imageviewer">
48
[% IF ( OpacNav ) %]<div id="doc3" class="yui-t1">[% ELSE %]<div id="doc3" class="yui-t7">[% END %]
49
   <div id="bd">
50
[% INCLUDE 'masthead.inc' %]
51
    <div id="yui-main">
52
    <div class="yui-b">
53
    <div class="yui-ge">
54
    <div class="container">
55
    <h1 class="title">Images for                 [% IF ( BiblioDefaultViewmarc ) %]<a class="title" href="/cgi-bin/koha/opac-MARCdetail.pl?biblionumber=[% biblionumber |url %]" title="View details for this title">
56
                                [% ELSE %]
57
                                [% IF ( BiblioDefaultViewisbd ) %]<a class="title" href="/cgi-bin/koha/opac-ISBDdetail.pl?biblionumber=[% biblionumber |url %]" title="View details for this title">
58
                                [% ELSE %]<a class="title" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% biblionumber |url %]" title="View details for this title">
59
                                [% END %]
60
                                [% END %][% biblio.title %]</a> [% biblio.author %]</h1>
61
    <div class="yui-u first">
62
63
        <div id="largeCover"><img id="largeCoverImg" alt="" src="/cgi-bin/koha/opac-image.pl?imagenumber=[% imagenumber %]" /></div></div>
64
65
    [% IF OPACLocalCoverImages == 1 %]
66
    <div class="yui-u"><div id="thumbnails">
67
            [% FOREACH img IN images %]
68
                [% IF img %]
69
                <a href="/cgi-bin/koha/opac-imageviewer.pl?biblionumber=[% biblionumber %]&amp;imagenumber=[% img %]" onclick="showCover([% img %]); return false;">
70
                [% IF ( imagenumber == img ) %]<img class="thumbnail selected" id="[% img %]" src="/cgi-bin/koha/opac-image.pl?imagenumber=[% img %]&amp;thumbnail=1" alt="Thumbnail"/>
71
                [% ELSE %]
72
                <img class="thumbnail" id="[% img %]" src="/cgi-bin/koha/opac-image.pl?imagenumber=[% img %]&amp;thumbnail=1" alt="Thumbnail"/>
73
                [% END %]
74
                </a>
75
                [% END %]
76
            [% END %]
77
        </div></div>
78
    </div>
79
[% ELSE %]
80
Unfortunately, images are not enabled for this catalog at this time.
81
[% END %]
82
83
</div>
84
</div>
85
</div>
86
[% IF ( OpacNav ) %]
87
<div class="yui-b"><div id="leftmenus" class="container">
88
[% INCLUDE 'navigation.inc' %]
89
</div></div>
90
[% END %]
91
</div>
92
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-main.tt (-85 lines)
Lines 1-85 Link Here
1
[% USE Koha %]
2
[% INCLUDE 'doc-head-open.inc' %]
3
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog
4
[% INCLUDE 'doc-head-close.inc' %]
5
</head>
6
<body id="opac-main">
7
[% IF ( OpacNav ) %]<div id="doc3" class="yui-t1">[% ELSE %]<div id="doc3" class="yui-t7">[% END %]
8
   <div id="bd">
9
[% INCLUDE 'masthead.inc' %]
10
11
	<div id="yui-main">
12
13
	<div class="yui-b">
14
     [% IF ( opacuserlogin ) %]
15
	 [% IF ( loggedinusername ) %]
16
         <div id="loggedin" class="yui-ge">
17
	 [% ELSE %]
18
        <div id="notloggedin" class="yui-ge">
19
         [% END %]
20
     [% ELSE %]
21
        <div id="notloggedin" class="yui-ge">
22
    [% END %]
23
        <div class="yui-u first">
24
<div id="news" class="container">
25
        [% IF ( koha_news_count ) %]
26
    <table>
27
    [% FOREACH koha_new IN koha_news %]
28
    <tr><th>[% koha_new.title %]</th></tr>
29
    <tr><td><p>[% koha_new.new %]</p>
30
                <p class="newsfooter"><i>(published on [% koha_new.newdate %])</i></p></td></tr>
31
    [% END %]
32
    </table>
33
[% END %]
34
</div>
35
36
      [% IF ( display_daily_quote && daily_quote ) %]
37
    <div id="daily-quote" class="container"><h1>Quote of the Day</h1><div><span id="daily-quote-text">[% daily_quote.text %]</span><span id="daily-quote-sep"> ~ </span><span id="daily-quote-source">[% daily_quote.source %]</span></div></div>
38
[% END %]
39
40
<div id="opacmainuserblock" class="container">[% OpacMainUserBlock %]</div>
41
<div id="opacmainuserblockmobile" class="container">[% OpacMainUserBlockMobile %]</div>
42
43
</div>
44
		
45
    [% IF ( opacuserlogin || OpacNavRight ) %]
46
    <div class="yui-u">
47
    [% IF ( opacuserlogin ) %]
48
    [% UNLESS ( loggedinusername ) %]
49
    [% UNLESS ( casAuthentication ) %]
50
    <div id="login" class="container clearfix">
51
	<form action="/cgi-bin/koha/opac-user.pl" method="post" name="auth" id="auth">
52
    <input type="hidden" name="koha_login_context" value="opac" />
53
	<fieldset class="brief">
54
        <legend>Log in to your account:</legend>
55
		<ol>
56
		<li><label for="userid">Login:</label><input type="text" id="userid" size="10" name="userid" /></li>
57
		<li><label for="password">Password:</label><input type="password" id="password" size="10" name="password" /></li>
58
		</ol>	 <fieldset class="action">
59
	 <input type="submit" value="Log In" class="submit" />
60
61
        [% IF PatronSelfRegistration && PatronSelfRegistrationDefaultCategory %]<div id="patronregistration">Don't have an account? <a href="/cgi-bin/koha/opac-memberentry.pl">Register here.</a></div>[% END %]
62
63
	 </fieldset></fieldset>
64
	</form>
65
	</div>
66
    [% END %]
67
    [% IF persona %]
68
     <a href="#" class="persona-button" id="browserid" ><span>Sign in with your Email</span></a>
69
    [% END %]
70
    [% END %]
71
    [% END %]
72
    <div id="opacrightsidebar" class="container">[% OpacNavRight %]</div>
73
    </div>
74
    [% END %]
75
</div>
76
</div>
77
</div>
78
[% IF ( OpacNav ) %]<div class="yui-b">
79
<div id="opacnav" class="container">
80
[% INCLUDE 'navigation.inc' %]
81
</div>
82
</div>[% END %]
83
</div>
84
85
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-memberentry-update-submitted.tt (-29 lines)
Lines 1-29 Link Here
1
[% USE Koha %]
2
[% INCLUDE 'doc-head-open.inc' %]
3
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Updates submitted
4
[% INCLUDE 'doc-head-close.inc' %]
5
</head>
6
<body id="opac-patron-update-submitted">
7
<div id="doc3" class="yui-t1">
8
   <div id="bd">
9
[% INCLUDE 'masthead.inc' %]
10
11
<div id="yui-main">
12
    <div class="yui-b">
13
        <div id="update-submitted" class="container">
14
15
            <h3><a href="/cgi-bin/koha/opac-user.pl">[% borrower.firstname %] [% borrower.surname %]'s account</a> &#8674; Updates to your record</h3>
16
            <div class="dialog message">
17
                <h3>Thank you</h3>
18
                <p>Your updates have been submitted. A librarian will review your updates before applying them.</p>
19
            </div>
20
        </div>
21
    </div>
22
</div>
23
<div class="yui-b">
24
<div id="leftmenus" class="container">
25
[% INCLUDE 'navigation.inc' IsPatronPage=1 %]
26
</div>
27
</div>
28
</div>
29
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-memberentry.tt (-776 lines)
Lines 1-776 Link Here
1
[% USE Koha %]
2
[% USE KohaDates %]
3
[% SET userupdateview = 1 %]
4
5
    [% INCLUDE 'doc-head-open.inc' %]
6
        [% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; [% IF action == 'edit' %]Update your personal details[% ELSE %]Register a new account[% END %]
7
    [% INCLUDE 'doc-head-close.inc' %]
8
    [% INCLUDE 'calendar.inc' %]
9
10
    <script type="text/javascript">
11
        //<![CDATA[
12
        $(document).ready(function() {
13
            [% IF action == 'edit' && !OPACPatronDetails %]
14
                $("#memberentry-form :input").attr('readonly', true);
15
                $("#borrower_branchcode").attr('disabled',true);
16
                $("#borrower_title").attr('disabled',true);
17
                $('#memberentry-form :radio').attr('disabled',true);
18
                $('span.required').remove();
19
                $('label.required').removeClass('required');
20
            [% ELSE %]
21
                $( "#borrower_dateofbirth" ).datepicker({ yearRange: "c-120:c" });
22
            [% END %]
23
        });
24
    //]]>
25
    </script>
26
</head>
27
[% IF action == 'edit' %]
28
<body id="opac-patron-update">
29
[% ELSE %]
30
<body id="opac-patron-registration">
31
[% END %]
32
    <div id="doc3" class="yui-t1">
33
        <div id="bd">
34
            [% INCLUDE 'masthead.inc' %]
35
36
            <div id="yui-main">
37
                <div class="yui-b">
38
                    <form method="post" action="/cgi-bin/koha/opac-memberentry.pl" id="memberentry-form">
39
                    [% IF action == 'edit' %]
40
                    <div id="update-account" class="container">
41
                    [% ELSE %]
42
                    <div id="add-account" class="container">
43
                    [% END %]
44
                        <div class="yui-g">
45
                        [% IF action == 'edit' %]
46
                            <h3><a href="/cgi-bin/koha/opac-user.pl">[% borrower.firstname %] [% borrower.surname %]'s account</a> &#8674; Personal details</h3>
47
                        [% ELSE %]
48
                            <h3>Register a new account</h3>
49
                        [% END %]
50
51
                            [% IF action == 'edit' %]
52
                            [% UNLESS OPACPatronDetails %]
53
                                <div class="dialog message">To make changes to your record please contact the library.</div>
54
                            [% END %]
55
                            [% END %]
56
57
                            [% IF empty_mandatory_fields %]
58
                                <div class="dialog alert">You have not filled out all required fields. Please fill in all missing fields and resubmit.</div>
59
                            [% END %]
60
61
                            [% IF failed_captcha %]
62
                                <div class="dialog alert">You typed in the wrong characters in the box before submitting. Please try again.</div>
63
                            [% END %]
64
65
                                [% UNLESS
66
                                    hidden.defined('branchcode')
67
                                %]
68
69
                                <fieldset class="rows" id="memberentry_library">
70
71
                                    <legend id="library_legend">Library</legend>
72
                                        <ol>
73
                                            <li>
74
                                                <label>Card number</label>
75
                                                <input type="text" value="[% borrower.cardnumber %]" disabled="disabled"/>
76
                                            </li>
77
78
                                            [% UNLESS hidden.defined('branchcode') %]
79
                                                <li>
80
                                                    [% IF mandatory.defined('branchcode') %]
81
                                                        <label for="borrower_branchcode" class="required">
82
                                                    [% ELSE %]
83
                                                        <label for="borrower_branchcode">
84
                                                    [% END %]
85
                                                    Home library:</label>
86
87
                                                    <select id="borrower_branchcode" name="borrower_branchcode">
88
                                                        [% FOREACH b IN branches %]
89
                                                            [% IF b.value == borrower.branchcode %]
90
                                                                <option value="[% b.value %]" selected="selected">[% b.branchname %]</option>
91
                                                            [% ELSE %]
92
                                                                <option value="[% b.value %]">[% b.branchname %]</option>
93
                                                            [% END %]
94
                                                        [% END %]
95
                                                    </select>
96
                                                </li>
97
                                            [% END %]
98
                                        </ol>
99
                                    </fieldset>
100
                                [% END %]
101
                        </div>
102
                                [% UNLESS
103
                                    hidden.defined('title') && hidden.defined('surname') && hidden.defined('firstname') &&
104
                                    hidden.defined('dateofbirth') && hidden.defined('initials') && hidden.defined('othernames') &&
105
                                    hidden.defined('sex')
106
                                %]
107
                                <div class="yui-g">
108
                                    [% IF ( display_patron_image ) %]
109
                                        <div class="yui-u first">
110
                                    [% END %]
111
                                    <fieldset class="rows" id="memberentry_identity">
112
                                        <legend id="identity_legend">Identity</legend>
113
114
                                        <ol>
115
                                            [% UNLESS hidden.defined('title') || !member_titles %]
116
                                                <li>
117
                                                    [% IF mandatory.defined('title') %]
118
                                                        <label for="borrower_title" class="required">
119
                                                    [% ELSE %]
120
                                                        <label for="borrower_title">
121
                                                    [% END %]
122
                                                    Salutation:</label>
123
124
                                                    <select id="borrower_title" name="borrower_title">
125
                                                        [% FOREACH mt IN member_titles %]
126
                                                            [% IF mt == borrower.title %]
127
                                                                <option value="[% mt %]" selected="selected">[% mt %]</option>
128
                                                            [% ELSE %]
129
                                                                <option value="[% mt %]">[% mt %]</option>
130
                                                            [% END %]
131
                                                        [% END %]
132
                                                    </select>
133
                                                </li>
134
                                            [% END %]
135
136
                                            [% UNLESS hidden.defined('surname') %]
137
                                                <li>
138
                                                    [% IF mandatory.defined('surname') %]
139
                                                        <label for="borrower_surname" class="required">
140
                                                    [% ELSE %]
141
                                                        <label for="borrower_surname">
142
                                                    [% END %]
143
                                                    Surname:</label>
144
145
                                                    <input type="text" id="borrower_surname" name="borrower_surname" value="[% borrower.surname %]" />
146
                                                    [% IF mandatory.defined('surname') %]<span class="required">Required</span>[% END %]
147
                                                </li>
148
                                            [% END %]
149
150
                                            [% UNLESS hidden.defined('firstname') %]
151
                                                <li>
152
                                                    [% IF mandatory.defined('firstname') %]
153
                                                        <label for="borrower_firstname" class="required">
154
                                                    [% ELSE %]
155
                                                        <label for="borrower_firstname">
156
                                                    [% END %]
157
                                                    First name:</label>
158
159
                                                    <input type="text" id="borrower_firstname" name="borrower_firstname" value="[% borrower.firstname %]" />
160
                                                    [% IF mandatory.defined('firstname') %]<span class="required">Required</span>[% END %]
161
                                                </li>
162
                                            [% END %]
163
164
                                            [% UNLESS hidden.defined('dateofbirth') %]
165
                                                <li>
166
                                                    [% IF mandatory.defined('dateofbirth') %]
167
                                                        <label for="borrower_dateofbirth" class="required">
168
                                                    [% ELSE %]
169
                                                        <label for="borrower_dateofbirth">
170
                                                    [% END %]
171
                                                    Date of birth:</label>
172
173
                                                    <input type="text" id="borrower_dateofbirth" name="borrower_dateofbirth" value="[% borrower.dateofbirth | $KohaDates %]" size="10" />
174
175
                                                    [% UNLESS action == 'edit' && !OPACPatronDetails %]
176
                                                        [% UNLESS ( mandatory.defined('dateofbirth') ) %]
177
                                                            <a href="#" style="font-size:85%;text-decoration:none;" onclick="document.getElementById('borrower_dateofbirth').value='';return false;">Clear date</a>
178
                                                        [% END %]
179
                                                    [% END %]
180
181
                                                    [% IF mandatory.defined('dateofbirth') %]<span class="required">Required</span>[% END %]
182
                                                </li>
183
                                            [% END %]
184
185
                                            [% UNLESS hidden.defined('initials') %]
186
                                                <li>
187
                                                    [% IF mandatory.defined('initials') %]
188
                                                        <label for="borrower_initials" class="required">
189
                                                    [% ELSE %]
190
                                                        <label for="borrower_initials">
191
                                                    [% END %]
192
                                                    Initials:</label>
193
194
                                                    <input type="text" id="borrower_initials" name="borrower_initials" value="[% borrower.initials %]" />
195
                                                    [% IF mandatory.defined('initials') %]<span class="required">Required</span>[% END %]
196
                                                </li>
197
                                            [% END %]
198
199
                                            [% UNLESS hidden.defined('othernames') %]
200
                                                <li>
201
                                                    [% IF mandatory.defined('othernames') %]
202
                                                        <label for="borrower_othernames" class="required">
203
                                                    [% ELSE %]
204
                                                        <label for="borrower_othernames">
205
                                                    [% END %]
206
                                                    Other names:</label>
207
208
                                                    <input type="text" id="borrower_othernames" name="borrower_othernames" value="[% borrower.othernames %]" />
209
                                                    [% IF mandatory.defined('othernames') %]<span class="required">Required</span>[% END %]
210
                                                </li>
211
                                            [% END %]
212
213
                                            [% UNLESS hidden.defined('sex') %]
214
                                                <li class="radio">
215
                                                    <label for="sex-female">Female:</label>
216
                                                    [% IF borrower.sex == 'F' %]
217
                                                        <input type="radio" name="borrower_sex" id="sex-female" value="F" checked="checked" />
218
                                                    [% ELSE %]
219
                                                        <input type="radio" name="borrower_sex" id="sex-female" value="F" />
220
                                                    [% END %]
221
222
                                                    <label for="sex-male">Male:</label>
223
                                                    [% IF borrower.sex == 'M' %]
224
                                                        <input type="radio" name="borrower_sex" id="sex-male" value="M" checked="checked" />
225
                                                    [% ELSE %]
226
                                                        <input type="radio" name="borrower_sex" id="sex-male" value="M" />
227
                                                    [% END %]
228
229
                                                    <label for="sex-none">N/A:</label>
230
                                                    [% IF borrower.sex == '' %]
231
                                                        <input type="radio" name="borrower_sex" id="sex-none" value="" checked="checked" />
232
                                                    [% ELSE %]
233
                                                        <input type="radio" name="borrower_sex" id="sex-none" value="" />
234
                                                    [% END %]
235
236
                                                    [% IF mandatory.defined('sex') %]<span class="required">Required</span>[% END %]
237
                                                </li>
238
                                            [% END %]
239
                                        </ol>
240
                                    </fieldset>
241
                                    [% IF ( display_patron_image ) %]
242
                                        </div>
243
                                        <div class="yui-u">
244
                                            <p class="patronimage">
245
                                                <img src="/cgi-bin/koha/opac-patron-image.pl" alt="" />
246
                                            </p>
247
                                        </div>
248
                                    [% END %]
249
                                </div>
250
                                [% END %]
251
252
                            <div class="yui-g">
253
                                [% UNLESS
254
                                    hidden.defined('streetnumber') && hidden.defined('address') && hidden.defined('address2') &&
255
                                    hidden.defined('city') && hidden.defined('state') && hidden.defined('zipcode') &&
256
                                    hidden.defined('country')
257
                                %]
258
                                    <fieldset class="rows" id="memberentry_mainaddress">
259
                                        <legend id="mainaddress_legend">Main address</legend>
260
261
                                        <ol>
262
                                            [% UNLESS hidden.defined('streetnumber') %]
263
                                                <li>
264
                                                    [% IF mandatory.defined('streetnumber') %]
265
                                                        <label for="borrower_streetnumber" class="required">
266
                                                    [% ELSE %]
267
                                                        <label for="borrower_streetnumber">
268
                                                    [% END %]
269
                                                    Street number:</label>
270
271
                                                    <input type="text" id="borrower_streetnumber" name="borrower_streetnumber" value="[% borrower.streetnumber %]" />
272
                                                    [% IF mandatory.defined('streetnumber') %]<span class="required">Required</span>[% END %]
273
                                                </li>
274
                                            [% END %]
275
276
                                            [% UNLESS hidden.defined('address') %]
277
                                                <li>
278
                                                    [% IF mandatory.defined('address') %]
279
                                                        <label for="borrower_address" class="required">
280
                                                    [% ELSE %]
281
                                                        <label for="borrower_address">
282
                                                    [% END %]
283
                                                    Address:</label>
284
285
                                                    <input type="text" id="borrower_address" name="borrower_address" value="[% borrower.address %]" />
286
                                                    [% IF mandatory.defined('address') %]<span class="required">Required</span>[% END %]
287
                                                </li>
288
                                            [% END %]
289
290
                                            [% UNLESS hidden.defined('address2') %]
291
                                                <li>
292
                                                    [% IF mandatory.defined('address2') %]
293
                                                        <label for="borrower_address2" class="required">
294
                                                    [% ELSE %]
295
                                                        <label for="borrower_address2">
296
                                                    [% END %]
297
                                                    Address 2:</label>
298
299
                                                    <input type="text" id="borrower_address2" name="borrower_address2" value="[% borrower.address2 %]" />
300
                                                    [% IF mandatory.defined('address2') %]<span class="required">Required</span>[% END %]
301
                                                </li>
302
                                            [% END %]
303
304
                                            [% UNLESS hidden.defined('city') %]
305
                                                <li>
306
                                                    [% IF mandatory.defined('city') %]
307
                                                        <label for="borrower_city" class="required">
308
                                                    [% ELSE %]
309
                                                        <label for="borrower_city">
310
                                                    [% END %]
311
                                                    City:</label>
312
313
                                                    <input type="text" id="borrower_city" name="borrower_city" value="[% borrower.city %]" />
314
                                                    [% IF mandatory.defined('city') %]<span class="required">Required</span>[% END %]
315
                                                </li>
316
                                            [% END %]
317
318
                                            [% UNLESS hidden.defined('state') %]
319
                                                <li>
320
                                                    [% IF mandatory.defined('state') %]
321
                                                        <label for="borrower_state" class="required">
322
                                                    [% ELSE %]
323
                                                        <label for="borrower_state">
324
                                                    [% END %]
325
                                                    State:</label>
326
327
                                                    <input type="text" id="borrower_state" name="borrower_state" value="[% borrower.state %]" />
328
                                                    [% IF mandatory.defined('state') %]<span class="required">Required</span>[% END %]
329
                                                </li>
330
                                            [% END %]
331
332
                                            [% UNLESS hidden.defined('zipcode') %]
333
                                                <li>
334
                                                    [% IF mandatory.defined('zipcode') %]
335
                                                        <label for="borrower_zipcode" class="required">
336
                                                    [% ELSE %]
337
                                                        <label for="borrower_zipcode">
338
                                                    [% END %]
339
                                                    Zip/Postal code:</label>
340
341
                                                    <input type="text" id="borrower_zipcode" name="borrower_zipcode" value="[% borrower.zipcode %]" />
342
                                                    [% IF mandatory.defined('zipcode') %]<span class="required">Required</span>[% END %]
343
                                                </li>
344
                                            [% END %]
345
346
                                            [% UNLESS hidden.defined('country') %]
347
                                                <li>
348
                                                    [% IF mandatory.defined('country') %]
349
                                                        <label for="borrower_country" class="required">
350
                                                    [% ELSE %]
351
                                                        <label for="borrower_country">
352
                                                    [% END %]
353
                                                    Country:</label>
354
355
                                                    <input type="text" id="borrower_country" name="borrower_country" value="[% borrower.country %]" />
356
                                                    [% IF mandatory.defined('country') %]<span class="required">Required</span>[% END %]
357
                                                </li>
358
                                            [% END %]
359
360
                                        </ol>
361
                                    </fieldset>
362
                                [% END %]
363
364
                                [% UNLESS
365
                                    hidden.defined('phone') && hidden.defined('phonepro') && hidden.defined('mobile') &&
366
                                    hidden.defined('email') && hidden.defined('emailpro') && hidden.defined('fax')
367
                                %]
368
                                    <fieldset class="rows" id="memberentry_contact">
369
                                        <legend id="contact_legend">Contact information</legend>
370
371
                                        <ol>
372
                                            [% UNLESS hidden.defined('phone') %]
373
                                                <li>
374
                                                    [% IF mandatory.defined('phone') %]
375
                                                        <label for="borrower_phone" class="required">
376
                                                    [% ELSE %]
377
                                                        <label for="borrower_phone">
378
                                                    [% END %]
379
                                                    Primary phone:</label>
380
381
                                                    <input type="text" id="borrower_phone" name="borrower_phone" value="[% borrower.phone %]" />
382
                                                    [% IF mandatory.defined('phone') %]<span class="required">Required</span>[% END %]
383
                                                </li>
384
                                            [% END %]
385
386
                                            [% UNLESS hidden.defined('phonepro') %]
387
                                                <li>
388
                                                    [% IF mandatory.defined('phonepro') %]
389
                                                        <label for="borrower_phonepro" class="required">
390
                                                    [% ELSE %]
391
                                                        <label for="borrower_phonepro">
392
                                                    [% END %]
393
                                                    Secondary phone:</label>
394
395
                                                    <input type="text" id="borrower_phonepro" name="borrower_phonepro" value="[% borrower.phonepro %]" />
396
                                                    [% IF mandatory.defined('phonepro') %]<span class="required">Required</span>[% END %]
397
                                                </li>
398
                                            [% END %]
399
400
                                            [% UNLESS hidden.defined('mobile') %]
401
                                                <li>
402
                                                    [% IF mandatory.defined('mobile') %]
403
                                                        <label for="borrower_mobile" class="required">
404
                                                    [% ELSE %]
405
                                                        <label for="borrower_mobile">
406
                                                    [% END %]
407
                                                    Mobile phone:</label>
408
409
                                                    <input type="text" id="borrower_mobile" name="borrower_mobile" value="[% borrower.mobile %]" />
410
                                                    [% IF mandatory.defined('mobile') %]<span class="required">Required</span>[% END %]
411
                                                </li>
412
                                            [% END %]
413
414
                                            [% UNLESS hidden.defined('email') %]
415
                                                <li>
416
                                                    [% IF mandatory.defined('email') %]
417
                                                        <label for="borrower_email" class="required">
418
                                                    [% ELSE %]
419
                                                        <label for="borrower_email">
420
                                                    [% END %]
421
                                                    Primary email:</label>
422
423
                                                    <input type="text" id="borrower_email" name="borrower_email" value="[% borrower.email %]" />
424
                                                    [% IF mandatory.defined('email') %]<span class="required">Required</span>[% END %]
425
                                                </li>
426
                                            [% END %]
427
428
                                            [% UNLESS hidden.defined('emailpro') %]
429
                                                <li>
430
                                                    [% IF mandatory.defined('emailpro') %]
431
                                                        <label for="borrower_emailpro" class="required">
432
                                                    [% ELSE %]
433
                                                        <label for="borrower_emailpro">
434
                                                    [% END %]
435
                                                    Secondary email:</label>
436
437
                                                    <input type="text" id="borrower_emailpro" name="borrower_emailpro" value="[% borrower.emailpro %]" />
438
                                                    [% IF mandatory.defined('emailpro') %]<span class="required">Required</span>[% END %]
439
                                                </li>
440
                                            [% END %]
441
442
                                            [% UNLESS hidden.defined('fax') %]
443
                                                <li>
444
                                                    [% IF mandatory.defined('fax') %]
445
                                                        <label for="borrower_fax" class="required">
446
                                                    [% ELSE %]
447
                                                        <label for="borrower_fax">
448
                                                    [% END %]
449
                                                    Fax:</label>
450
451
                                                    <input type="text" id="borrower_fax" name="borrower_fax" value="[% borrower.fax %]" />
452
                                                    [% IF mandatory.defined('fax') %]<span class="required">Required</span>[% END %]
453
                                                </li>
454
                                            [% END %]
455
                                        </ol>
456
                                    </fieldset>
457
                                [% END %]
458
459
                                [% UNLESS
460
                                    hidden.defined('B_address') && hidden.defined('B_address2') && hidden.defined('B_city') &&
461
                                    hidden.defined('B_state') && hidden.defined('B_zipcode') && hidden.defined('B_country') &&
462
                                    hidden.defined('B_phone') && hidden.defined('B_email') && hidden.defined('contactnote')
463
                                %]
464
                                    <fieldset class="rows" id="memberentry_alternateaddress">
465
                                        <legend id="alternateaddress_legend">Alternate address</legend>
466
467
                                        <ol>
468
                                            [% UNLESS hidden.defined('B_address') %]
469
                                                <li>
470
                                                    [% IF mandatory.defined('B_address') %]
471
                                                        <label for="borrower_B_address" class="required">
472
                                                    [% ELSE %]
473
                                                        <label for="borrower_B_address">
474
                                                    [% END %]
475
                                                    Address:</label>
476
477
                                                    <input type="text" id="borrower_B_address" name="borrower_B_address" value="[% borrower.B_address %]" />
478
                                                    [% IF mandatory.defined('B_address') %]<span class="required">Required</span>[% END %]
479
                                                </li>
480
                                            [% END %]
481
482
                                            [% UNLESS hidden.defined('B_address2') %]
483
                                                <li>
484
                                                    [% IF mandatory.defined('B_address2') %]
485
                                                        <label for="borrower_B_address2" class="required">
486
                                                    [% ELSE %]
487
                                                        <label for="borrower_B_address2">
488
                                                    [% END %]
489
                                                    Address 2:</label>
490
491
                                                    <input type="text" id="borrower_B_address2" name="borrower_B_address2" value="[% borrower.B_address2 %]" />
492
                                                    [% IF mandatory.defined('B_address2') %]<span class="required">Required</span>[% END %]
493
                                                </li>
494
                                            [% END %]
495
496
                                            [% UNLESS hidden.defined('B_city') %]
497
                                                <li>
498
                                                    [% IF mandatory.defined('B_city') %]
499
                                                        <label for="borrower_B_city" class="required">
500
                                                    [% ELSE %]
501
                                                        <label for="borrower_B_city">
502
                                                    [% END %]
503
                                                    City:</label>
504
505
                                                    <input type="text" id="borrower_B_city" name="borrower_B_city" value="[% borrower.B_city %]" />
506
                                                    [% IF mandatory.defined('B_city') %]<span class="required">Required</span>[% END %]
507
                                                </li>
508
                                            [% END %]
509
510
                                            [% UNLESS hidden.defined('B_state') %]
511
                                                <li>
512
                                                    [% IF mandatory.defined('B_state') %]
513
                                                        <label for="borrower_B_state" class="required">
514
                                                    [% ELSE %]
515
                                                        <label for="borrower_B_state">
516
                                                    [% END %]
517
                                                    State:</label>
518
519
                                                    <input type="text" id="borrower_B_state" name="borrower_B_state" value="[% borrower.B_state %]" />
520
                                                    [% IF mandatory.defined('B_state') %]<span class="required">Required</span>[% END %]
521
                                                </li>
522
                                            [% END %]
523
524
                                            [% UNLESS hidden.defined('B_zipcode') %]
525
                                                <li>
526
                                                    [% IF mandatory.defined('B_zipcode') %]
527
                                                        <label for="borrower_B_zipcode" class="required">
528
                                                    [% ELSE %]
529
                                                        <label for="borrower_B_zipcode">
530
                                                    [% END %]
531
                                                    Zip/Postal code:</label>
532
533
                                                    <input type="text" id="borrower_B_zipcode" name="borrower_B_zipcode" value="[% borrower.B_zipcode %]" />
534
                                                    [% IF mandatory.defined('B_zipcode') %]<span class="required">Required</span>[% END %]
535
                                                </li>
536
                                            [% END %]
537
538
                                            [% UNLESS hidden.defined('B_country') %]
539
                                                <li>
540
                                                    [% IF mandatory.defined('B_country') %]
541
                                                        <label for="borrower_B_country" class="required">
542
                                                    [% ELSE %]
543
                                                        <label for="borrower_B_country">
544
                                                    [% END %]
545
                                                    Country:</label>
546
547
                                                    <input type="text" id="borrower_B_country" name="borrower_B_country" value="[% borrower.B_country %]" />
548
                                                    [% IF mandatory.defined('B_country') %]<span class="required">Required</span>[% END %]
549
                                                </li>
550
                                            [% END %]
551
552
                                            [% UNLESS hidden.defined('B_phone') %]
553
                                                <li>
554
                                                    [% IF mandatory.defined('B_phone') %]
555
                                                        <label for="borrower_B_phone" class="required">
556
                                                    [% ELSE %]
557
                                                        <label for="borrower_B_phone">
558
                                                    [% END %]
559
                                                    Phone:</label>
560
561
                                                    <input type="text" id="borrower_B_phone" name="borrower_B_phone" value="[% borrower.B_phone %]" />
562
                                                    [% IF mandatory.defined('B_phone') %]<span class="required">Required</span>[% END %]
563
                                                </li>
564
                                            [% END %]
565
566
                                            [% UNLESS hidden.defined('B_email') %]
567
                                                <li>
568
                                                    [% IF mandatory.defined('B_email') %]
569
                                                        <label for="borrower_B_email" class="required">
570
                                                    [% ELSE %]
571
                                                        <label for="borrower_B_email">
572
                                                    [% END %]
573
                                                    Email:</label>
574
575
                                                    <input type="text" id="borrower_B_email" name="borrower_B_email" value="[% borrower.B_email %]" />
576
                                                    [% IF mandatory.defined('B_email') %]<span class="required">Required</span>[% END %]
577
                                                </li>
578
                                            [% END %]
579
580
                                            [% UNLESS hidden.defined('contactnote') %]
581
                                                <li>
582
                                                    [% IF mandatory.defined('contactnote') %]
583
                                                        <label for="borrower_contactnote" class="required">
584
                                                    [% ELSE %]
585
                                                        <label for="borrower_contactnote">
586
                                                    [% END %]
587
                                                    Contact Note:</label>
588
589
                                                    <textarea id="borrower_contactnote" name="borrower_contactnote" cols="40" rows="2">[% borrower.contactnote %]</textarea>
590
                                                    [% IF mandatory.defined('contactnote') %]<span class="required">Required</span>[% END %]
591
                                                </li>
592
                                            [% END %]
593
594
                                        </ol>
595
                                    </fieldset>
596
                                [% END %]
597
598
                                [% UNLESS
599
                                    hidden.defined('altcontactsurname') && hidden.defined('altcontactfirstname') && hidden.defined('altcontactaddress1') &&
600
                                    hidden.defined('altcontactaddress2') && hidden.defined('altcontactaddress3') && hidden.defined('altcontactstate') &&
601
                                    hidden.defined('altcontactzipcode') && hidden.defined('altcontactcountry') && hidden.defined('altcontactphone')
602
                                %]
603
                                    <fieldset class="rows" id="memberentry_alternatecontact">
604
                                        <legend id="alternatecontact_legend">Alternate contact</legend>
605
606
                                        <ol>
607
                                            [% UNLESS hidden.defined('altcontactsurname') %]
608
                                                <li>
609
                                                    [% IF mandatory.defined('altcontactsurname') %]
610
                                                        <label for="borrower_altcontactsurname" class="required">
611
                                                    [% ELSE %]
612
                                                        <label for="borrower_altcontactsurname">
613
                                                    [% END %]
614
                                                    Surname:</label>
615
616
                                                    <input type="text" id="borrower_altcontactsurname" name="borrower_altcontactsurname" value="[% borrower.altcontactsurname %]" />
617
                                                    [% IF mandatory.defined('altcontactsurname') %]<span class="required">Required</span>[% END %]
618
                                                </li>
619
                                            [% END %]
620
621
                                            [% UNLESS hidden.defined('altcontactfirstname') %]
622
                                                <li>
623
                                                    [% IF mandatory.defined('altcontactfirstname') %]
624
                                                        <label for="borrower_altcontactfirstname" class="required">
625
                                                    [% ELSE %]
626
                                                        <label for="borrower_altcontactfirstname">
627
                                                    [% END %]
628
                                                    First name:</label>
629
630
                                                    <input type="text" id="borrower_altcontactfirstname" name="borrower_altcontactfirstname" value="[% borrower.altcontactfirstname %]" />
631
                                                    [% IF mandatory.defined('altcontactfirstname') %]<span class="required">Required</span>[% END %]
632
                                                </li>
633
                                            [% END %]
634
635
                                            [% UNLESS hidden.defined('altcontactaddress1') %]
636
                                                <li>
637
                                                    [% IF mandatory.defined('altcontactaddress1') %]
638
                                                        <label for="borrower_altcontactaddress1" class="required">
639
                                                    [% ELSE %]
640
                                                        <label for="borrower_altcontactaddress1">
641
                                                    [% END %]
642
                                                    Address:</label>
643
644
                                                    <input type="text" id="borrower_altcontactaddress1" name="borrower_altcontactaddress1" value="[% borrower.altcontactaddress1 %]" />
645
                                                    [% IF mandatory.defined('altcontactaddress1') %]<span class="required">Required</span>[% END %]
646
                                                </li>
647
                                            [% END %]
648
649
                                            [% UNLESS hidden.defined('altcontactaddress2') %]
650
                                                <li>
651
                                                    [% IF mandatory.defined('altcontactaddress2') %]
652
                                                        <label for="borrower_altcontactaddress2" class="required">
653
                                                    [% ELSE %]
654
                                                        <label for="borrower_altcontactaddress2">
655
                                                    [% END %]
656
                                                    Address 2:</label>
657
658
                                                    <input type="text" id="borrower_altcontactaddress2" name="borrower_altcontactaddress2" value="[% borrower.altcontactaddress2 %]" />
659
                                                    [% IF mandatory.defined('altcontactaddress2') %]<span class="required">Required</span>[% END %]
660
                                                </li>
661
                                            [% END %]
662
663
                                            [% UNLESS hidden.defined('altcontactaddress3') %]
664
                                                <li>
665
                                                    [% IF mandatory.defined('altcontactaddress3') %]
666
                                                        <label for="borrower_altcontactaddress3" class="required">
667
                                                    [% ELSE %]
668
                                                        <label for="borrower_altcontactaddress3">
669
                                                    [% END %]
670
                                                    City:</label>
671
672
                                                    <input type="text" id="borrower_altcontactaddress3" name="borrower_altcontactaddress3" value="[% borrower.altcontactaddress3 %]" />
673
                                                    [% IF mandatory.defined('altcontactaddress3') %]<span class="required">Required</span>[% END %]
674
                                                </li>
675
                                            [% END %]
676
677
                                            [% UNLESS hidden.defined('altcontactstate') %]
678
                                                <li>
679
                                                    [% IF mandatory.defined('altcontactstate') %]
680
                                                        <label for="borrower_altcontactstate" class="required">
681
                                                    [% ELSE %]
682
                                                        <label for="borrower_altcontactstate">
683
                                                    [% END %]
684
                                                    State:</label>
685
686
                                                    <input type="text" id="borrower_altcontactstate" name="borrower_altcontactstate" value="[% borrower.altcontactstate %]" />
687
                                                    [% IF mandatory.defined('altcontactstate') %]<span class="required">Required</span>[% END %]
688
                                                </li>
689
                                            [% END %]
690
691
                                            [% UNLESS hidden.defined('altcontactzipcode') %]
692
                                                <li>
693
                                                    [% IF mandatory.defined('altcontactzipcode') %]
694
                                                        <label for="borrower_altcontactzipcode" class="required">
695
                                                    [% ELSE %]
696
                                                        <label for="borrower_altcontactzipcode">
697
                                                    [% END %]
698
                                                    Zip/Postal code:</label>
699
700
                                                    <input type="text" id="borrower_altcontactzipcode" name="borrower_altcontactzipcode" value="[% borrower.altcontactzipcode %]" />
701
                                                    [% IF mandatory.defined('altcontactzipcode') %]<span class="required">Required</span>[% END %]
702
                                                </li>
703
                                            [% END %]
704
705
                                            [% UNLESS hidden.defined('altcontactcountry') %]
706
                                                <li>
707
                                                    [% IF mandatory.defined('altcontactcountry') %]
708
                                                        <label for="borrower_altcontactcountry" class="required">
709
                                                    [% ELSE %]
710
                                                        <label for="borrower_altcontactcountry">
711
                                                    [% END %]
712
                                                    Country:</label>
713
714
                                                    <input type="text" id="borrower_altcontactcountry" name="borrower_altcontactcountry" value="[% borrower.altcontactcountry %]" />
715
                                                    [% IF mandatory.defined('altcontactcountry') %]<span class="required">Required</span>[% END %]
716
                                                </li>
717
                                            [% END %]
718
719
                                            [% UNLESS hidden.defined('altcontactphone') %]
720
                                                <li>
721
                                                    [% IF mandatory.defined('altcontactphone') %]
722
                                                        <label for="borrower_altcontactphone" class="required">
723
                                                    [% ELSE %]
724
                                                        <label for="borrower_altcontactphone">
725
                                                    [% END %]
726
                                                    Phone:</label>
727
728
                                                    <input type="text" id="borrower_altcontactphone" name="borrower_altcontactphone" value="[% borrower.altcontactphone %]" />
729
                                                    [% IF mandatory.defined('altcontactphone') %]<span class="required">Required</span>[% END %]
730
                                                </li>
731
                                            [% END %]
732
                                        </ol>
733
                                    </fieldset>
734
                                [% END %]
735
736
                                [% UNLESS action == 'edit' %]
737
                                    <fieldset class="rows" id="memberentry_captcha">
738
                                        <ol>
739
                                            <li>
740
                                                <label for="captcha" class="required">Verification:</label>
741
742
                                                <input type="text" name="captcha" id="captcha" />
743
                                                <input type="hidden" name="captcha_digest" value="[% captcha_digest %]" />
744
745
                                                <span class="hint">Please type this following characters into the preceding box: <strong>[% captcha %]</strong></span>
746
                                            </li>
747
                                        </ol>
748
                                    </fieldset>
749
                                [% END %]
750
751
                                [% IF action == 'edit' %]
752
                                    [% IF OPACPatronDetails %]
753
                                        <fieldset class="action">
754
                                            <input type="hidden" name="action" value="update" />
755
                                            <input type="submit" value="Submit update request" />
756
                                        </fieldset>
757
                                    [% END %]
758
                                [% ELSE %]
759
                                    <fieldset class="action">
760
                                        <input type="hidden" name="action" value="create" />
761
                                        <input type="submit" value="Submit" />
762
                                    </fieldset>
763
                                [% END %]
764
                            </div>
765
                        </div><!--/div id="update-account" -->
766
                    </form>
767
                </div>
768
            </div>
769
770
            <div class="yui-b">
771
                <div id="leftmenus" class="container">
772
                    [% INCLUDE 'navigation.inc' IsPatronPage=1 %]
773
                </div>
774
            </div>
775
        </div>
776
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-messaging.tt (-164 lines)
Lines 1-164 Link Here
1
[% USE Koha %]
2
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %][% ELSE %]Koha online[% END %] catalog &rsaquo; Your messaging settings
3
[% INCLUDE 'doc-head-close.inc' %]
4
<script type="text/javascript">//<![CDATA[
5
	$(document).ready(function(){
6
		$(".none").click(function(){
7
			if($(this).attr("checked")){
8
				var rowid = $(this).attr("id");
9
				newid = Number(rowid.replace("none","")) 
10
          $("#sms"+newid).removeAttr("checked");
11
          $("#email"+newid).removeAttr("checked");
12
          $("#digest"+newid).removeAttr("checked");
13
          $("#rss"+newid).removeAttr("checked");
14
			}
15
		});
16
	});
17
//]]>
18
</script>
19
</head>
20
<body id="opac-messaging">
21
<div id="doc3" class="yui-t1">
22
   <div id="bd">
23
[% INCLUDE 'masthead.inc' %]
24
25
	<div id="yui-main">
26
	<div class="yui-b"><div class="yui-g" id="usermessaging">
27
28
[% FOREACH BORROWER_INF IN BORROWER_INFO %]
29
<h3><a href="/cgi-bin/koha/opac-user.pl">[% BORROWER_INF.firstname %] [% BORROWER_INF.surname %]'s account</a> &#8674; Your messaging settings</h3>
30
[% END %]
31
32
<form action="/cgi-bin/koha/opac-messaging.pl" method="get" name="opacmessaging">
33
<input type="hidden" name="modify" value="yes" />
34
35
<fieldset class="rows">
36
  [% IF ( settings_updated ) %]
37
  <div class="dialog message"><h3>Settings updated</h3></div>
38
  [% END %]
39
  <table style="margin-right:1em;">
40
    <tr><th>&nbsp;</th><th>Days in advance</th>[% IF ( SMSSendDriver ) %]<th>SMS</th>[% END %][% IF ( TalkingTechItivaPhone ) %]<th>Phone</th>[% END %]<th>Email</th><th>Digests only?</th><!-- <th>RSS</th> --><th>Do not notify</th></tr>
41
    [% FOREACH messaging_preference IN messaging_preferences %]
42
    <tr>
43
      <td>[% IF ( messaging_preference.Item_Due ) %]Item due
44
          [% ELSIF ( messaging_preference.Advance_Notice ) %]Advance notice
45
          [% ELSIF ( messaging_preference.Upcoming_Events ) %]Upcoming events
46
          [% ELSIF ( messaging_preference.Hold_Filled ) %]Hold filled
47
          [% ELSIF ( messaging_preference.Item_Check_in ) %]Item check-in
48
          [% ELSIF ( messaging_preference.Item_Checkout ) %]Item checkout
49
          [% ELSE %]Unknown [% END %]</td>
50
      [% IF ( messaging_preference.takes_days ) %]
51
      <td><select name="[% messaging_preference.message_attribute_id %]-DAYS">
52
          [% FOREACH select_day IN messaging_preference.select_days %]
53
          [% IF ( select_day.selected ) %]<option value="[% select_day.day %]" selected="selected">[% select_day.day %]</option>
54
          [% ELSE %]<option value="[% select_day.day %]">[% select_day.day %]</option>
55
[% END %]
56
          [% END %]
57
        </select>
58
      </td>
59
      [% ELSE %]
60
      <td>-</td>
61
      [% END %]
62
      [% IF ( messaging_preference.transport_sms ) %]
63
        [% IF ( SMSSendDriver ) %]
64
        <td>
65
          [% IF ( messaging_preference.transports_sms ) %]
66
          <input type="checkbox"
67
                     id="sms[% messaging_preference.message_attribute_id %]"
68
                     name="[% messaging_preference.message_attribute_id %]"
69
                     value="sms" checked="checked" onclick = "document.opacmessaging.none[% messaging_preference.message_attribute_id %].checked=false;" />
70
          [% ELSE %]
71
          <input type="checkbox"
72
                     id="sms[% messaging_preference.message_attribute_id %]"
73
                     name="[% messaging_preference.message_attribute_id %]"
74
                     value="sms" onclick = "document.opacmessaging.none[% messaging_preference.message_attribute_id %].checked=false;" />
75
          [% END %]
76
        </td>
77
        [% END %]
78
      [% END %]
79
        [% IF ( TalkingTechItivaPhone ) %]
80
        <td>
81
          [% IF ( messaging_preference.transports_phone ) %]
82
          <input type="checkbox"
83
                     id="phone[% messaging_preference.message_attribute_id %]"
84
                     name="[% messaging_preference.message_attribute_id %]"
85
                     value="phone" checked="checked" onclick = "document.opacmessaging.none[% messaging_preference.message_attribute_id %].checked=false;" />
86
          [% ELSE %]
87
          <input type="checkbox"
88
                     id="phone[% messaging_preference.message_attribute_id %]"
89
                     name="[% messaging_preference.message_attribute_id %]"
90
                     value="phone" onclick = "document.opacmessaging.none[% messaging_preference.message_attribute_id %].checked=false;" />
91
          [% END %]
92
        </td>
93
      [% END %]
94
95
      [% IF ( messaging_preference.transport_email ) %]
96
      <td>
97
        [% IF ( messaging_preference.transports_email ) %]
98
        <input type="checkbox"
99
                   id="email[% messaging_preference.message_attribute_id %]"
100
                   name="[% messaging_preference.message_attribute_id %]"
101
                   value="email" checked="checked" onclick = "document.opacmessaging.none[% messaging_preference.message_attribute_id %].checked=false;" />
102
        [% ELSE %]
103
        <input type="checkbox"
104
                   id="email[% messaging_preference.message_attribute_id %]"
105
                   name="[% messaging_preference.message_attribute_id %]"
106
                   value="email" onclick = "document.opacmessaging.none[% messaging_preference.message_attribute_id %].checked=false;" />
107
        [% END %]
108
      </td>
109
      [% ELSE %]
110
      <td>-</td>
111
      [% END %]
112
113
      [% IF ( messaging_preference.has_digest ) %]
114
      <td>
115
      [% IF ( messaging_preference.digest ) %]
116
      <input type="checkbox"
117
                 id="digest[% messaging_preference.message_attribute_id %]"
118
                 value="[% messaging_preference.message_attribute_id %]"
119
                 name="digest" checked="checked" onclick = "document.opacmessaging.none[% messaging_preference.message_attribute_id %].checked=false;" />
120
      [% ELSE %]
121
      <input type="checkbox"
122
                 id="digest[% messaging_preference.message_attribute_id %]"
123
                 value="[% messaging_preference.message_attribute_id %]"
124
                 name="digest" onclick = "document.opacmessaging.none[% messaging_preference.message_attribute_id %].checked=false;" />
125
      [% END %]
126
      </td>
127
      [% ELSE %]
128
      <td>-</td>
129
      [% END %]
130
131
<!--       [% IF ( messaging_preference.transport_rss ) %]
132
      <td><input type="checkbox"
133
                 id="rss[% messaging_preference.message_attribute_id %]"
134
                 name="[% messaging_preference.message_attribute_id %]"
135
                 value="rss"  [% messaging_preference.transport_rss %] onclick = "document.opacmessaging.none[% messaging_preference.message_attribute_id %].checked=false;" />
136
      </td>
137
      [% ELSE %]
138
      <td>-</td>
139
      [% END %] -->
140
141
      <td><input type="checkbox" class="none" id="none[% messaging_preference.message_attribute_id %]" /></td>
142
    </tr>
143
    [% END %]
144
  </table>
145
[% IF ( SMSSendDriver ) %]<ol><li><label for="SMSnumber">SMS number:</label> <input type="text" id="SMSnumber" name="SMSnumber" value="[% SMSnumber %]" /></li></ol>[% END %]
146
147
</fieldset>
148
149
<fieldset class="action">
150
  <input type="submit" value="Submit Changes" /> <a class="cancel" href="/cgi-bin/koha/opac-user.pl">Cancel</a>
151
</fieldset>
152
153
154
</form>
155
</div>
156
</div>
157
</div>
158
<div class="yui-b">
159
<div id="leftmenus" class="container">
160
[% INCLUDE 'navigation.inc' IsPatronPage=1 %]
161
</div>
162
</div>
163
</div>
164
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-mymessages.tt (-24 lines)
Lines 1-24 Link Here
1
<?xml version="1.0"?>
2
<rss version="2.0">
3
   <channel>
4
      <title></title>
5
      <link></link>
6
      <description></description>
7
      <language></language>
8
      <pubDate></pubDate>
9
      <lastBuildDate></lastBuildDate>
10
      <docs></docs>
11
      <generator></generator>
12
      <managingEditor></managingEditor>
13
      <webMaster></webMaster>
14
      [% FOREACH message_lis IN message_list %]
15
      <item>
16
        <title>[% message_lis.subject |html %]</title>
17
        <link>[% message_lis.title |html %]</link>
18
        <description>[% message_lis.content |html %]</description>
19
        <pubDate>[% message_lis.time_queued |html %]</pubDate>
20
        <guid>[% message_lis.title |html %]</guid>
21
      </item>
22
      [% END %]
23
   </channel>
24
</rss>
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-opensearch.tt (-106 lines)
Lines 1-106 Link Here
1
<?xml version='1.0' encoding='utf-8'  ?>
2
[% IF ( opensearchdescription ) %]
3
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
4
   <ShortName>[% LibraryName |html %] Search</ShortName>
5
   <Description>Search the [% LibraryName |html %]</Description>
6
   <Tags>koha opac [% LibraryName |html %]</Tags>
7
   <Contact>[% KohaAdminEmailAddress |html %]</Contact>
8
   <Url type="application/rss+xml"
9
        template="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?q={searchTerms}&amp;pw={startPage?}&amp;format=rss2"/>
10
</OpenSearchDescription>
11
12
[% ELSE %]
13
14
[% IF ( rss2 ) %]
15
<rss version="2.0"
16
      xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"
17
      xmlns:dc="http://purl.org/dc/elements/1.1/"
18
      xmlns:atom="http://www.w3.org/2005/Atom">
19
   <channel>
20
     <title><![CDATA[[% LibraryName |html %] Search [% IF ( query_desc ) %]for '[% query_desc |html %]'[% END %][% IF ( limit_desc ) %] with limit(s): '[% limit_desc |html %]'[% END %]]]></title>
21
     <link>[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi |html %][% limit_cgi |html %]&amp;format=rss2</link>
22
     <atom:link rel="self" type="application/rss+xml" href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi |html %][% limit_cgi |html %]&amp;sort_by=[% sort_by |html %]&amp;format=rss2"/>
23
     <description><![CDATA[ Search results [% IF ( query_desc ) %]for '[% query_desc |html %]'[% END %][% IF ( limit_desc ) %] with limit(s): '[% limit_desc |html %]'[% END %] at [% LibraryName |html %]]]></description>
24
     <opensearch:totalResults>[% total %]</opensearch:totalResults>
25
     <opensearch:startIndex>[% offset %]</opensearch:startIndex>
26
     [% IF ( results_per_page ) %]
27
       <opensearch:itemsPerPage>[% results_per_page |html %]</opensearch:itemsPerPage>
28
     [% ELSE %]
29
       <opensearch:itemsPerPage>20</opensearch:itemsPerPage>
30
     [% END %]
31
	 [% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %]
32
     <atom:link rel="search" type="application/opensearchdescription+xml" href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% SEARCH_RESULT.query_cgi |html %][% SEARCH_RESULT.limit_cgi |html %]&amp;sort_by=[% SEARCH_RESULT.sort_by |html %]&amp;format=opensearchdescription"/>
33
     <opensearch:Query role="request" searchTerms="[% SEARCH_RESULT.query_desc |url %][% SEARCH_RESULT.limit_desc |url %]" startPage="[% SEARCH_RESULT.page %]" />
34
     <item>
35
       <title>[% SEARCH_RESULT.title |html %] [% FOREACH subtitl IN SEARCH_RESULT.subtitle %], [% subtitl.subfield |html %][% END %]</title>
36
       <dc:identifier>ISBN [% SEARCH_RESULT.isbn |html %]</dc:identifier>
37
       <link>[% IF ( SEARCH_RESULT.BiblioDefaultViewmarc ) %][% OPACBaseURL %]/cgi-bin/koha/opac-MARCdetail.pl?biblionumber=[% SEARCH_RESULT.biblionumber %][% ELSE %][% IF ( SEARCH_RESULT.BiblioDefaultViewisbd ) %][% OPACBaseURL %]/cgi-bin/koha/opac-ISBDdetail.pl?biblionumber=[% SEARCH_RESULT.biblionumber %][% ELSE %][% OPACBaseURL %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% SEARCH_RESULT.biblionumber %][% END %][% END %]</link>
38
       <description><![CDATA[
39
[% IF ( OPACAmazonCoverImages ) %][% IF ( SEARCH_RESULT.normalized_isbn ) %]<img src="http://images.amazon.com/images/P/[% SEARCH_RESULT.normalized_isbn %].01.TZZZZZZZ.jpg" alt="" />[% END %][% END %]
40
[% IF ( SyndeticsEnabled ) %][% IF ( SyndeticsCoverImages ) %][% IF ( SEARCH_RESULT.content_identifier_exists ) %]<img src="http://www.syndetics.com/index.aspx?isbn=[% SEARCH_RESULT.normalized_isbn %]/SC.GIF&amp;client=[% SEARCH_RESULT.SyndeticsClientCode %]&amp;type=xw10[% IF ( SEARCH_RESULT.normalized_upc ) %]&amp;upc=[% SEARCH_RESULT.normalized_upc %][% END %][% IF ( SEARCH_RESULT.normalized_oclc ) %]&amp;oclc=[% SEARCH_RESULT.normalized_oclc %][% END %]" alt="" />
41
[% ELSE %]
42
<img src="http://www.syndetics.com/index.aspx?isbn=[% SEARCH_RESULT.normalized_isbn %]/SC.GIF&amp;client=[% SyndeticsClientCode %]&amp;type=xw10&amp;upc=[% SEARCH_RESULT.normalized_upc %]&amp;oclc=[% SEARCH_RESULT.normalized_oclc %]" alt="" />
43
[% END %][% END %][% END %]
44
45
[% IF ( BakerTaylorEnabled ) %][% IF ( SEARCH_RESULT.normalized_isbn ) %]<a href="https://[% BakerTaylorBookstoreURL |html %][% SEARCH_RESULT.normalized_isbn %]"><img alt="See Baker &amp; Taylor" src="[% BakerTaylorImageURL |html %][% SEARCH_RESULT.normalized_isbn %]" /></a>[% END %][% END %]
46
	   <p>[% IF ( SEARCH_RESULT.author ) %]By [% SEARCH_RESULT.author |html %]. [% END %]
47
	   [% IF ( SEARCH_RESULT.place ) %][% SEARCH_RESULT.place |html %] [% END %][% IF ( SEARCH_RESULT.publishercode ) %][% SEARCH_RESULT.publishercode |html %][% END %][% IF ( SEARCH_RESULT.publicationyear ) %] [% SEARCH_RESULT.publicationyear |html %]
48
                    [% ELSE %][% IF ( SEARCH_RESULT.copyrightdate ) %] [% SEARCH_RESULT.copyrightdate |html %][% END %][% END %]
49
                        [% IF ( SEARCH_RESULT.pages ) %]. [% SEARCH_RESULT.pages |html %][% END %]
50
                        [% IF ( SEARCH_RESULT.notes ) %], [% SEARCH_RESULT.notes |html %][% END %]
51
                        [% IF ( SEARCH_RESULT.size ) %] [% SEARCH_RESULT.size |html %]. [% END %]
52
                        [% IF ( SEARCH_RESULT.isbn ) %] [% SEARCH_RESULT.isbn |html %][% END %]
53
       </p>
54
[% IF ( RequestOnOpac ) %]
55
<p><a href="[% OPACBaseURL %]/cgi-bin/koha/opac-reserve.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]">Place Hold on <i>[% SEARCH_RESULT.title %]</i></a></p>
56
[% END %]
57
						]]></description>
58
       <guid>[% OPACBaseURL %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]</guid>
59
     </item>
60
	 [% END %]
61
   </channel>
62
</rss>
63
[% END %]
64
65
[% IF ( atom ) %]
66
<feed xmlns="http://www.w3.org/2005/Atom"
67
       xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/">
68
   <id>[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi |html %][% limit_cgi |html %]&amp;format=atom</id>
69
   <title>[% LibraryName |html %] Search [% IF ( query_desc ) %]for '[% query_desc |html %]'[% END %][% IF ( limit_desc ) %]&nbsp;with limit(s):&nbsp;'[% limit_desc |html %]'[% END %]</title>
70
    <link href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi |html %][% limit_cgi |html %]&amp;format=rss2"/>
71
   <updated>[% timestamp %]</updated>
72
   <author>
73
     <name>[% LibraryName |html %]</name>
74
   </author>
75
   <!-- <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id> -->
76
   <opensearch:totalResults>[% total %]</opensearch:totalResults>
77
   <opensearch:startIndex>[% page %]</opensearch:startIndex>
78
   [% IF ( results_per_page ) %]
79
     <opensearch:itemsPerPage>[% results_per_page %]</opensearch:itemsPerPage>
80
   [% ELSE %]
81
     <opensearch:itemsPerPage>20</opensearch:itemsPerPage>
82
   [% END %]
83
   <opensearch:Query role="request" searchTerms="[% query_desc |html %] [% limit_desc |html %]" startPage="[% page |html %]" />
84
   <link rel="alternate" href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi %][% limit_cgi %]pw=[% page %]&amp;format=atom" type="application/atom+xml"/>
85
   <link rel="self" href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi %][% limit_cgi %]&amp;format=atom" type="application/atom+xml"/>
86
   <link rel="first" href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi %][% limit_cgi %]pw=1&amp;format=atom" type="application/atom+xml"/>
87
   <link rel="previous" href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi %][% limit_cgi %]pw=2&amp;format=atom" type="application/atom+xml"/>
88
   <link rel="next" href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi %][% limit_cgi %]pw=4&amp;format=atom" type="application/atom+xml"/>
89
   <link rel="last" href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi %][% limit_cgi %]pw=42299&amp;format=atom" type="application/atom+xml"/>
90
   <link rel="search" type="application/opensearchdescription+xml" href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?format=opensearchdescription"/>
91
92
   [% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %]
93
   <entry>
94
     <title>[% SEARCH_RESULT.title |html %]</title>
95
     <link href="[% OPACBaseURL %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]"/>
96
     <!-- <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> -->
97
     <updated>[% SEARCH_RESULT.timestamp %]</updated>
98
     <content type="text"><!-- put content here -->
99
     </content>
100
     <id>[% OPACBaseURL %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]</id>
101
   </entry>
102
   [% END %]
103
 </feed>
104
[% END %]
105
106
[% END %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-overdrive-search.tt (-171 lines)
Lines 1-171 Link Here
1
[% INCLUDE 'doc-head-open.inc' %]
2
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; OverDrive search for '[% q | html %]'
3
[% INCLUDE 'doc-head-close.inc' %]
4
<script type="text/javascript" src="[% themelang %]/js/overdrive.js"></script>
5
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.rating.js"></script>
6
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/jquery.rating.css" />
7
<script type="text/javascript">
8
var querystring = "[% q |replace( "'", "\'" ) |replace( '\n', '\\n' ) |replace( '\r', '\\r' ) |html %]";
9
var results_per_page = [% OPACnumSearchResults %];
10
11
function fetch_availability( prod, $tr ) {
12
    var $availability_summary = $( '<span class="results_summary"></span>' );
13
    $tr.find( '.info' ).append( $availability_summary );
14
    $availability_summary.html( '<span class="label">' + _("Availability:") + ' </span> ' + _("Loading...") );
15
16
    KOHA.OverDrive.Get(
17
        prod.links.availability.href,
18
        {},
19
        function ( data ) {
20
            if ( data.error ) return;
21
22
            $availability_summary.html( '<span class="label">' + _("Items available:") + ' </span><span class="available"><strong>' +  data.copiesAvailable + '</strong> ' + _("out of") + ' ' + data.copiesOwned + '</span>' );
23
24
            if ( data.numberOfHolds ) {
25
                $availability_summary.find( '.available' ).append( ', ' + _("waiting holds:") + ' <strong>' + data.numberOfHolds + '</strong>' );
26
            }
27
28
            $tr.find( '.info' ).append( '<span class="results_summary actions"><span class="label">' + _("Actions:") + ' </span><a href="' + prod.contentDetails[0].href + '" ' + ( data.copiesAvailable ? ( ' class="addtocart">' + _("Check out") ) : ( ' class="hold">' + _("Place hold") ) ) + '</a></span>' );
29
        }
30
    );
31
}
32
33
function search( offset ) {
34
    $( '#overdrive-status' ).html( _("Searching OverDrive...") + ' <img class="throbber" src="/opac-tmpl/lib/jquery/plugins/themes/classic/throbber.gif" /></span>' );
35
36
    KOHA.OverDrive.Search( "[% OverDriveLibraryID %]", querystring, results_per_page, offset, function( data ) {
37
        if ( data.error ) {
38
            $( '#overdrive-status' ).html( '<strong class="unavailable">' + _("Error searching OverDrive collection.") + '</strong>' );
39
            return;
40
        }
41
42
        if ( !data.totalItems ) {
43
            $( '#overdrive-status' ).html( '<strong>' + _("No results found in the library's OverDrive collection.") + '</strong>' );
44
            return;
45
        }
46
47
        $( '#overdrive-results-list tbody' ).empty();
48
49
        $( '#overdrive-status' ).html( '<strong>' + _("Found") + ' ' + data.totalItems + ' ' + _("results in the library's OverDrive collection.") + '</strong>' );
50
51
        for ( var i = 0; data.products[i]; i++ ) {
52
            var prod = data.products[i];
53
            var results = [];
54
55
            results.push( '<tr>' );
56
57
            results.push( '<td class="info"><a class="title" href="', prod.contentDetails[0].href, '">' );
58
            results.push( prod.title );
59
            if ( prod.subtitle ) results.push( ', ', prod.subtitle );
60
            results.push( '</a>' );
61
            results.push( '<p>' + _("by") + ' ', prod.primaryCreator.name, '</p>' );
62
            if ( prod.starRating ) {
63
                results.push( '<span class="results_summary ratings">' );
64
                for ( var rating = 1; rating <= 5; rating++ ) {
65
                    results.push( '<input class="star" type="radio" name="rating-' + i + '" value="' + rating + '"' + ( rating == Math.round( prod.starRating ) ? ' checked="checked"' : '' ) + ' disabled="disabled" />' );
66
                }
67
                results.push( '</span>' );
68
            }
69
            results.push( '<span class="results_summary"><span class="label">' + _("Type:") + ' </span>', prod.mediaType, '</span>' );
70
            results.push( '</td>' );
71
72
            results.push( '<td>' );
73
            if ( prod.images.thumbnail ) {
74
                results.push( '<a href="', prod.contentDetails[0].href, '">' );
75
                results.push( '<img class="thumbnail" src="', prod.images.thumbnail.href, '" />' );
76
                results.push( '</a>' );
77
            }
78
            results.push( '</td>' );
79
80
            results.push( '</tr>' );
81
            var $tr = $( results.join( '' ));
82
            $( '#overdrive-results-list tbody' ).append( $tr );
83
84
            fetch_availability( prod, $tr );
85
        }
86
87
        $( '#overdrive-results-list tr:odd' ).addClass( 'highlight' );
88
89
        var pages = [];
90
        var cur_page = offset / results_per_page;
91
        var max_page = Math.floor( data.totalItems / results_per_page );
92
93
        if ( cur_page != 0 ) {
94
            pages.push( '<a class="nav" href="#" data-offset="' + (offset - results_per_page) + '">&lt;&lt; ' + _("Previous") + '</a>' );
95
        }
96
97
        for ( var page = Math.max( 0, cur_page - 9 ); page <= Math.min( max_page, cur_page + 9 ); page++ ) {
98
            if ( page == cur_page ) {
99
                pages.push( ' <span class="current">' + ( page + 1 ) + '</span>' );
100
            } else {
101
                pages.push( ' <a class="nav" href="#" data-offset="' + ( page * results_per_page ) + '">' + ( page + 1 ) + '</a>' );
102
            }
103
        }
104
105
        if ( cur_page < max_page ) {
106
            pages.push( ' <a class="nav" href="#" data-offset="' + (offset + results_per_page) + '">' + _("Next") + ' >></a>' );
107
        }
108
109
        if ( pages.length > 1 ) $( '#top-pages, #bottom-pages' ).find( '.pages' ).html( pages.join( '' ) );
110
111
        $( '#overdrive-results-list input.star' ).rating();
112
    } );
113
}
114
115
$( document ).ready( function() {
116
    $( '#breadcrumbs p' )
117
        .append( ' ' )
118
        .append( '<span id="overdrive-status"></span>' );
119
120
    $( document ).on( 'click', 'a.nav', function() {
121
        search( $( this ).data( 'offset' ) );
122
        return false;
123
    });
124
125
    search( 0 );
126
} );
127
</script>
128
<style>
129
.actions a.addtocart {
130
    display: inline;
131
}
132
</style>
133
</head>
134
<body>
135
[% IF ( OpacNav ) %]
136
<div id="doc3" class="yui-t1">
137
[% ELSE %]
138
<div id="doc3" class="yui-t7">
139
[% END %]
140
   <div id="bd">
141
[% INCLUDE 'masthead.inc' %]
142
143
    <h1>OverDrive search for '[% q | html %]'</h1>
144
    <div id="breadcrumbs">
145
        <p></p>
146
    </div>
147
148
    <div id="yui-main"><div class="yui-b searchresults">
149
        <div id="top-pages">
150
            <div class="pages">
151
            </div>
152
        </div>
153
        <table id="overdrive-results-list">
154
            <tbody>
155
            </tbody>
156
        </table>
157
        <div id="bottom-pages">
158
            <div class="pages">
159
            </div>
160
        </div>
161
     </div></div>
162
163
[% IF ( OpacNav ) %]
164
<div class="yui-b"><div id="opacnav" class="container">
165
[% INCLUDE 'navigation.inc' %]
166
</div></div>
167
[% END %]
168
169
170
</div>
171
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-passwd.tt (-62 lines)
Lines 1-62 Link Here
1
[% USE Koha %]
2
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Change your password
3
[% INCLUDE 'doc-head-close.inc' %]
4
</head>
5
<body id="opac-passwd">
6
<div id="doc3" class="yui-t1">
7
   <div id="bd">
8
[% INCLUDE 'masthead.inc' %]
9
10
	<div id="yui-main">
11
	<div class="yui-b"><div class="yui-g">
12
	<div id="userpasswd" class="container">
13
    <h3><a href="/cgi-bin/koha/opac-user.pl">[% firstname %] [% surname %]'s account</a> &#8674; Change your password </h3>
14
15
    [% IF ( Error_messages ) %]
16
<div class="dialog error">        <h3>There was a problem with your submission</h3>
17
        <p>
18
            [% IF ( PassMismatch ) %]
19
            Passwords do not match.  Please re-type your new password.
20
            [% END %]
21
            [% IF ( ShortPass ) %]
22
            Your new password must be at least [% minpasslen %] characters long
23
            [% END %]
24
            [% IF ( WrongPass ) %]
25
            Your current password was entered incorrectly.  If this problem persists, please ask a librarian to re-set your password for you.
26
            [% END %]
27
        </p></div>
28
    [% END %]
29
    
30
    [% IF ( OpacPasswordChange ) %]
31
        [% IF ( Ask_data ) %]
32
        <form action="/cgi-bin/koha/opac-passwd.pl" name="mainform" id="mainform" method="post"><fieldset class="brief">
33
			[% UNLESS ( ShortPass ) %]<div class="hint">Your password must be at least [% minpasslen %] characters long.</div>[% END %]
34
          <ol>  <li><label for="Oldkey">Current password:</label> <input type="password" id="Oldkey" size="25"  name="Oldkey" /></li>
35
            <li><label for="Newkey">New password:</label> <input type="password" id="Newkey"  size="25"  name="Newkey" /></li>
36
            <li><label for="Confirm">Re-type new password:</label> <input type="password"  id="Confirm" size="25" name="Confirm" /></li></ol></fieldset>
37
            <fieldset class="action"><input type="submit" value="Submit changes" class="submit" /> <a href="/cgi-bin/koha/opac-user.pl" class="cancel">Cancel</a></fieldset>
38
        </form>
39
        [% END %]
40
    [% ELSE %]
41
        <div class="dialog alert">You can't change your password.</div>
42
    [% END %]
43
    
44
    [% IF ( password_updated ) %]
45
        <div class="dialog message"><h1>Password updated</h1>
46
        Your password has been changed</div>
47
        <form action="/cgi-bin/koha/opac-user.pl" method="post">
48
            <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
49
            <p><input type="submit" class="icon back" value="Return to your record" /></p>
50
        </form>
51
    [% END %]
52
</div>
53
</div>
54
</div>
55
</div>
56
<div class="yui-b">
57
<div id="leftmenus" class="container">
58
[% INCLUDE 'navigation.inc' IsPatronPage=1 %]
59
</div>
60
</div>
61
</div>
62
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-privacy.tt (-75 lines)
Lines 1-75 Link Here
1
[% USE Koha %]
2
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Your privacy management
3
[% INCLUDE 'doc-head-close.inc' %]
4
</head>
5
<body id="opac-privacy">
6
<div id="doc3" class="yui-t1">
7
   <div id="bd">
8
[% INCLUDE 'masthead.inc' %]
9
10
	<div id="yui-main">
11
	<div class="yui-b"><div class="yui-g">
12
	<div id="userprivacy" class="container">
13
    <h3><a href="/cgi-bin/koha/opac-user.pl">[% firstname %] [% surname %]'s account</a> &#8674; Privacy policy </h3>
14
15
    [% IF ( deleted ) %]
16
        <div class="dialog message">Your reading history has been deleted.</div>
17
    [% ELSIF ( err_history_not_deleted ) %]
18
        <div class="dialog alert">The deletion of your reading history failed, because there is a problem with the configuration of this feature. Please help to fix the system by informing your library of this error.</div>
19
    [% END %]
20
    [% IF ( privacy_updated ) %]
21
        <div class="dialog message">Your privacy rules have been updated.</div>
22
    [% END %]
23
    <div id="userprivacyrules" class="container">
24
    <h2>Privacy rule</h2>
25
    [% IF ( Ask_data ) %]
26
		<p>We take great care in protecting your privacy. On this screen, you can define how long we keep your reading history.</p>
27
		<p>Your options are: <p>
28
            <ul id="opac-privacy-options-list">
29
                <li class="privacy0">Forever: keep my reading history without limit. This is the option for users who want to keep track of what they are reading.</li>
30
                <li class="privacy1">Default: keep my reading history according to local laws. This is the default option : the library will keep your reading history for the duration permitted by local laws.</li>
31
                <li class="privacy2">Never: Delete my reading history immediately. This will delete all record of the item that was checked-out upon check-in.</li>
32
            </ul>
33
            <p id="note1">Please note that information on any book still checked-out must be kept by the library no matter which privacy option you choose.</p>
34
            <p id="note2">Please also note that the library staff can't update these values for you: it's your privacy!</p>
35
    </div>
36
    <form action="/cgi-bin/koha/opac-privacy.pl" method="post" id="opac-privacy-update-form">
37
            <input type="hidden" name="op" value="update_privacy" />
38
            <label for:"privacy">Please choose your privacy rule:</label>
39
            <select name="privacy">
40
                [% IF ( privacy0 ) %]
41
                    <option value="0" selected="1" class="privacy0">Forever</option>
42
                [% ELSE %]
43
                    <option value="0" class="privacy0">Forever</option>
44
                [% END %]
45
                [% IF ( privacy1 ) %]
46
                    <option value="1" selected="1" class="privacy1">Default</option>
47
                [% ELSE %]
48
                    <option value="1" class="privacy1">Default</option>
49
                [% END %]
50
                [% IF ( privacy2 ) %]
51
                    <option value="2" selected="1" class="privacy2">Never</option>
52
                [% ELSE %]
53
                    <option value="2" class="privacy2">Never</option>
54
                [% END %]
55
            </select>
56
            <input type="Submit" value="Submit" />
57
        </form>
58
        <h2>Immediate deletion</h2>
59
        <form action="/cgi-bin/koha/opac-privacy.pl" method="post" id="opac-privacy-delete-form">
60
            <input type="hidden" name="op" value="delete_record" />
61
            <p>Whatever your privacy rule you choose, you can delete all your reading history immediately by clicking here. <b>BE CAREFUL</b>. Once you've confirmed the deletion, no one can retrieve the list!</p>
62
            <input type="submit" value="Immediate deletion" onclick="return confirmDelete(MSG_CONFIRM_AGAIN);" />
63
        </form>
64
    [% END %]
65
    </div>
66
</div>
67
</div>
68
</div>
69
<div class="yui-b">
70
<div id="leftmenus" class="container">
71
[% INCLUDE 'navigation.inc' IsPatronPage=1 %]
72
</div>
73
</div>
74
</div>
75
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-readingrecord.tt (-146 lines)
Lines 1-146 Link Here
1
[% USE Koha %]
2
[% USE KohaDates %]
3
[% INCLUDE 'doc-head-open.inc' %]
4
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Your checkout history
5
[% INCLUDE 'doc-head-close.inc' %]
6
<style type="text/css">ul.ui-tabs-nav li a, ul.ui-tabs-nav li span.a  { padding:0.6em 1em; }</style>
7
<script type="text/javascript">
8
//<![CDATA[
9
$(document).ready(function(){
10
    [% IF ( GoogleJackets ) %]KOHA.Google.GetCoverFromIsbn();[% END %]
11
        $('#sortsubmit').hide();
12
    $('#order').change(function() {
13
        $('#sortform').submit();
14
    });
15
});
16
//]]>
17
</script>
18
</head>
19
<body id="opac-readingrecord">
20
<div id="doc3" class="yui-t1">
21
   <div id="bd">
22
[% INCLUDE 'masthead.inc' %]
23
24
	<div id="yui-main">
25
	<div class="yui-b"><div class="yui-g">
26
<div id="userreadingrecord" class="container">
27
<!--CONTENT-->
28
<h3><a href="/cgi-bin/koha/opac-user.pl">[% firstname %] [% surname %]'s account</a> &#8674; Checkout history</h3>
29
30
[% IF READING_RECORD.size() == 0 %]
31
You have never borrowed anything from this library.
32
[% ELSE %]
33
<div id="opac-user-readingrec" class="statictabs">
34
35
<div class="resultscontrol resort"> <form id="sortform" action="/cgi-bin/koha/opac-readingrecord.pl" method="get">
36
[% UNLESS ( limit ) %]<input type="hidden" name="limit" value="full" />[% END %]
37
<select name="order" id="order">
38
39
[% IF ( orderbydate ) %]<option value="" selected="selected">Order by date</option>[% ELSE %]<option value="">Order by date</option>[% END %]
40
41
[% IF ( orderbytitle ) %]<option value="title" selected="selected">Order by title</option>[% ELSE %]<option value="title">Order by title</option>[% END %]
42
43
 </select> <input type="submit" value="Go" id="sortsubmit" class="submit clearfix" /></form></div>
44
45
<ul>
46
47
[% IF ( showfulllink ) %]
48
[% IF ( limit ) %]
49
<li><a href="/cgi-bin/koha/opac-readingrecord.pl?limit=full[% IF ( orderbytitle ) %]&amp;order=title[% END %]">Show all items</a></li><li class="active"><a href="#readingrec">Showing last 50 items</a></li>
50
[% ELSE %]
51
<li class="active"><a href="/cgi-bin/koha/opac-readingrecord.pl#readingrec">Showing all items</a></li><li><a href="/cgi-bin/koha/opac-readingrecord.pl?limit=50[% IF ( orderbytitle ) %]&amp;order=title[% END %]">Show last 50 items only</a></li>
52
[% END %]
53
[% ELSE %]
54
<li class="active"><a href="/cgi-bin/koha/opac-readingrecord.pl#readingrec">Showing all items</a></li>
55
[% END %]
56
</ul>
57
<div class="tabs-container"><table id="readingrec">
58
<tr>
59
<th colspan="2">Title</th>
60
<th>Item type</th>
61
<th>Call no.</th>
62
<th>Date</th>
63
[% IF ( OPACMySummaryHTML ) %]
64
<th>Links</th>
65
[% END %]
66
</tr>
67
68
[% FOREACH issue IN READING_RECORD %]
69
70
[% IF  loop.even  %]<tr class="highlight">[% ELSE %]<tr>[% END %]
71
<td>
72
[% IF  OPACAmazonCoverImages %]
73
    [% IF  issue.normalized_isbn %]
74
        <a href="http://www.amazon.com/gp/reader/[% issue.normalized_isbn %]/ref=sib_dp_pt/002-7879865-0184864#reader-link"><img border="0" src="https://images-na.ssl-images-amazon.com/images/P/[% issue.normalized_isbn %].01.THUMBZZZ.jpg" alt="Cover Image" /></a>
75
    [% ELSE %]
76
         <span class="no-image">No cover image available</span>
77
    [% END %]
78
[% END %]
79
80
[% IF GoogleJackets %]
81
    [% IF  issue.normalized_isbn %]
82
        <div style="block" title="[% issue.biblionumber |url %]" class="[% issue.normalized_isbn %]" id="gbs-thumbnail[% loop.count %]"></div>
83
    [% ELSE %]
84
       <span class="no-image">No cover image available</span>
85
    [% END %]
86
[% END %]
87
88
[% IF BakerTaylorEnabled %]
89
    [% IF issue.normalized_isbn %]
90
      <a href="https://[% BakerTaylorBookstoreURL |html %][% issue.normalized_isbn %]"><img alt="See Baker &amp; Taylor" src="[% BakerTaylorImageURL |html %][% issue.normalized_isbn %]" /></a>
91
    [% ELSE %]
92
       <span class="no-image">No cover image available</span>
93
    [% END %]
94
[% END %]
95
96
[% IF SyndeticsEnabled %]
97
    [% IF SyndeticsCoverImages %]
98
        [% IF  using_https  %]
99
<img src="https://secure.syndetics.com/index.aspx?isbn=[% issue.normalized_isbn %]/SC.GIF&amp;client=[% SyndeticsClientCode %]&amp;type=xw10&amp;upc=[% issue.normalized_upc %]&amp;oclc=[% issue.normalized_oclc %]" alt="" class="thumbnail" />
100
       [% ELSE %]
101
<img src="http://www.syndetics.com/index.aspx?isbn=[% issue.normalized_isbn %]/SC.GIF&amp;client=[% SyndeticsClientCode %]&amp;type=xw10&amp;upc=[% issue.normalized_upc %]&amp;oclc=[% issue.normalized_oclc %]" alt="" class="thumbnail" />
102
       [% END %]
103
    [% END %]
104
[% END %]
105
</td>
106
<td>
107
[% IF  issue.BiblioDefaultViewmarc %]
108
     <a class="title" href="/cgi-bin/koha/opac-MARCdetail.pl?biblionumber=[% issue.biblionumber |url %]">[% issue.title |html %] [% IF  issue.subtitle  %][% FOREACH subtitl IN issue.subtitle %][% subtitl.subfield %][% END %][% END %]</a>
109
[% ELSIF issue.BiblioDefaultViewisbd %]
110
     <a class="title" href="/cgi-bin/koha/opac-ISBDdetail.pl?biblionumber=[% issue.biblionumber |url %]">[% issue.title |html %] [% IF issue.subtitle %][% FOREACH subtitl IN issue.subtitle %][% subtitl.subfield %][% END %][% END %]</a>
111
[% ELSE %]
112
     <a class="title" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% issue.biblionumber |url %]">[% issue.title |html %] [% IF issue.subtitle %][% FOREACH subtitl IN issue.subtitle %][% subtitl.subfield %][% END %][% END %]</a>
113
[% END %]
114
                    <span class="item-details">
115
                        [% issue.author %]
116
                    </span></td>
117
<td>
118
[% UNLESS ( noItemTypeImages ) %][% IF ( issue.imageurl ) %]<img src="[% issue.imageurl %]" alt="" />[% END %][% END %] [% issue.description %]</td>
119
<td>[% issue.itemcallnumber %]</td>
120
<td>
121
[% IF issue.returndate %]
122
    [% issue.returndate | $KohaDates %]
123
[% ELSE %]
124
    <em>(Checked out)</em>
125
[% END %]
126
</td>
127
[% IF OPACMySummaryHTML %]
128
    <td>[% issue.MySummaryHTML %]</td>
129
[% END %]
130
</tr>
131
132
[% END %]
133
</table></div></div>
134
135
[% END %]
136
</div>
137
</div>
138
</div>
139
</div>
140
<div class="yui-b">
141
<div id="leftmenus" class="container">
142
[% INCLUDE 'navigation.inc' IsPatronPage=1 %]
143
</div>
144
</div>
145
</div>
146
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-registration-confirmation.tt (-71 lines)
Lines 1-71 Link Here
1
[% USE Koha %]
2
[% INCLUDE 'doc-head-open.inc' %]
3
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog
4
[% INCLUDE 'doc-head-close.inc' %]
5
</head>
6
<body id="opac-main">
7
[% IF ( OpacNav ) %]<div id="doc3" class="yui-t1">[% ELSE %]<div id="doc3" class="yui-t7">[% END %]
8
   <div id="bd">
9
[% INCLUDE 'masthead.inc' %]
10
11
<div id="yui-main">
12
    <div class="yui-b">
13
        <div id="loggedin" class="yui-ge">
14
            <div class="yui-u first">
15
                <h1>Registration Complete!</h1>
16
17
                <p>You have successfully registered your new account. To log in, use the following credentials:</p>
18
19
                <p>
20
                    Username: [% borrower.userid %]
21
                    <br/>
22
                    Password: [% password_cleartext %]
23
                </p>
24
25
                <p>For your convenience, the login box on this page has been pre-filled with this data. Please log in[% IF OpacPasswordChange %] and change your password[% END %].</p>
26
27
                <div id="PatronSelfRegistrationAdditionalInstructions">[% PatronSelfRegistrationAdditionalInstructions %]</div>
28
            </div>
29
30
            [% IF ( opacuserlogin || OpacNavRight ) %]
31
                <div class="yui-u">
32
                    [% IF ( opacuserlogin ) %]
33
                        [% UNLESS ( loggedinusername ) %]
34
                            [% UNLESS ( casAuthentication ) %]
35
                                <div id="login" class="container clearfix">
36
                                    <form action="/cgi-bin/koha/opac-user.pl" method="post" name="auth" id="auth">
37
                                        <input type="hidden" name="koha_login_context" value="opac" />
38
39
                                        <fieldset class="brief">
40
                                            <legend>Log in to your account:</legend>
41
42
                                            <ol>
43
                                                <li><label for="userid">Login:</label><input type="text" id="userid" size="10" name="userid" value="[% borrower.userid %]" /></li>
44
                                                <li><label for="password">Password:</label><input type="password" id="password" size="10" name="password" value="[% password_cleartext %]" /></li>
45
                                            </ol>
46
47
                                            <fieldset class="action">
48
                                                <input type="submit" value="Log In" class="submit" />
49
                                            </fieldset>
50
                                        </fieldset>
51
                                    </form>
52
                                </div>
53
                            [% END %]
54
                        [% END %]
55
                    [% END %]
56
57
                    [% IF ( OpacNavRight ) %]<div id="opacrightsidebar" class="container">[% OpacNavRight %]</div>[% END %]
58
                </div>
59
            [% END %]
60
        </div>
61
    </div>
62
</div>
63
64
[% IF ( OpacNav ) %]<div class="yui-b">
65
    <div id="opacnav" class="container">
66
        [% INCLUDE 'navigation.inc' %]
67
    </div>
68
[% END %]
69
70
</div>
71
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-registration-email-sent.tt (-29 lines)
Lines 1-29 Link Here
1
[% USE Koha %]
2
[% INCLUDE 'doc-head-open.inc' %]
3
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Please confirm your registration
4
[% INCLUDE 'doc-head-close.inc' %]
5
</head>
6
<body id="opac-confirmation-pending">
7
[% IF ( OpacNav ) %]<div id="doc3" class="yui-t1">[% ELSE %]<div id="doc3" class="yui-t7">[% END %]
8
   <div id="bd">
9
[% INCLUDE 'masthead.inc' %]
10
11
<div id="yui-main">
12
    <div class="yui-b">
13
        <div id="confirmation-pending" class="dialog message">
14
            <h1>Please confirm your registration</h1>
15
16
                        <p>A confirmation email has been sent to the email address <strong>[% email %]</strong>.</p>
17
18
                        <p>Your account will not be activated until you follow the link provided in the confirmation email.</p></div>
19
        </div>
20
</div>
21
22
[% IF ( OpacNav ) %]<div class="yui-b">
23
    <div id="opacnav" class="container">
24
        [% INCLUDE 'navigation.inc' %]
25
    </div>
26
[% END %]
27
28
</div>
29
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-registration-invalid.tt (-31 lines)
Lines 1-31 Link Here
1
[% USE Koha %]
2
[% INCLUDE 'doc-head-open.inc' %]
3
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog
4
[% INCLUDE 'doc-head-close.inc' %]
5
</head>
6
<body id="opac-main">
7
[% IF ( OpacNav ) %]<div id="doc3" class="yui-t1">[% ELSE %]<div id="doc3" class="yui-t7">[% END %]
8
   <div id="bd">
9
[% INCLUDE 'masthead.inc' %]
10
11
<div id="yui-main">
12
    <div class="yui-b">
13
        <div id="loggedin" class="yui-ge">
14
            <div class="yui-u first">
15
                <h1>Registration invalid!</h1>
16
17
                <p>There were problems processing your registration. Please contact your library for help.</p>
18
19
            </div>
20
        </div>
21
    </div>
22
</div>
23
24
[% IF ( OpacNav ) %]<div class="yui-b">
25
    <div id="opacnav" class="container">
26
        [% INCLUDE 'navigation.inc' %]
27
    </div>
28
[% END %]
29
30
</div>
31
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-reserve.tt (-604 lines)
Lines 1-604 Link Here
1
[% USE Koha %]
2
[% USE KohaDates %]
3
[% INCLUDE 'doc-head-open.inc' %]
4
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Placing a hold
5
[% INCLUDE 'doc-head-close.inc' %]
6
[% INCLUDE 'calendar.inc' %]
7
<script type="text/javascript">
8
// <![CDATA[
9
 var MSG_NO_ITEM_SELECTED = _("Expecting a specific item selection.");
10
 var ForceHoldNotesReasons=new Array(
11
    _("This title consists of multiple volumes/parts. Please indicate which part you need. Clicking on specific item information may be helpful."),
12
    "*** Add a new reason above this line ***" ); // NOTE: Do not renumber reasons; this will affect use of existing ones.
13
14
 function prefixOf (s, tok) {
15
     var index = s.indexOf(tok);
16
     return s.substring(0, index);
17
 }
18
 function suffixOf (s, tok) {
19
     var index = s.indexOf(tok);
20
     return s.substring(index + 1);
21
 }
22
23
// Select the first item available
24
function select_first_available(id){
25
    var radios = $("input:radio[name='checkitem_" + id + "']");
26
    $(radios).first().attr("checked", "checked");
27
}
28
29
 $(document).ready(function() {
30
    $('#hold-request-form').preventDoubleFormSubmit();
31
32
    var copiesRowId = null;
33
    var wasSpecific = false;
34
    var lastCopiesRowId = null;
35
36
    $(".toggle-hold-options").show();
37
    $(".hold-options").hide();
38
    $(".holddatefrom,.holddateto").prop("readOnly", true);
39
40
    $(".checkitem").parent().click(function(e){
41
        if(e.target.tagName.toLowerCase() == 'td'){
42
           $(this).find("input.checkitem").each( function() {
43
               $(this).attr('checked', 'checked');
44
            });
45
        }
46
    });
47
48
    // click on a first td check the confirmjs checkbox
49
    $("td.hold").click(function(e){
50
      if(e.target.tagName.toLowerCase() == 'td'){
51
        $(this).find("input.confirmjs").each( function() {
52
           $(this).attr('checked', !$(this).attr('checked'));
53
           $(this).change();
54
        });
55
      }
56
    });
57
58
    $(".toggle-hold-options").on("click",function(e){
59
        e.preventDefault();
60
        toggleLink = $(this);
61
        var optionsID = this.id.replace("toggle-hold-options-","");
62
        $("#hold-options-"+optionsID).toggle(0, function() {
63
            toggleLink.text($(this).is(':visible') ? _("Hide options") : _("Show more options"));
64
        });
65
    });
66
67
    // Hides all 'specific copy' table rows on load.
68
    $(".copiesrow").hide();
69
70
    // Insert reasons for forced hold notes
71
    $(".forcenotesreason").each(function(){
72
        biblioNum = suffixOf($(this).attr("id"), "_");
73
        var j=$("#notesmandatory_"+biblioNum).val();
74
        if(j>0) {
75
            $(this).html(ForceHoldNotesReasons[j-1]);
76
        }
77
    });
78
79
    $(".date-format").each(function(){
80
        if($(this).hasClass("to")){ var op = "to"; }
81
        if($(this).hasClass("from")){ var op = "from"; }
82
        var bibNum = $(this).data("biblionumber");
83
        $(this).html("<a href=\"#\" class=\"clear-date\" data-op=\"" + op + "\" id=\"clear" + bibNum + "\">" + _("Clear date") + "</a>");
84
    });
85
86
    $(".clear-date").on("click",function(e){
87
        e.preventDefault();
88
        var fieldID = this.id.replace("clear","");
89
        var op = $(this).data("op");
90
        $("#" + op + fieldID).val("");
91
    });
92
93
    // Replace non-JS single-selection with multi-selection capability.
94
    $(".reserve_mode").val("multi");
95
    $(".confirm_nonjs").remove();
96
    $(".confirmjs_hold").each(function(){
97
        var bib = $(this).attr("title");
98
        var html = "<label><input type =\"checkbox\" class=\"confirmjs\" checked=\"checked\"";
99
        html += "value=\"" + bib + "\" id=\"" + bib + "\" /> " + _("Place a hold on") + " </label> ";
100
        $(this).html(html);
101
    });
102
    $(".confirmjs_nohold").each(function(){
103
        var bib = $(this).attr("title");
104
        var html = "<label><input type =\"checkbox\" class=\"confirmjs\" disabled=\"disabled\"";
105
        html += "value=\"" + bib + "\" id=\"" + bib + "\" />" + _("Place a hold on: ") + "</label>";
106
        $(this).html(html);
107
    });
108
109
    // expand or collapse the copiesrow tr
110
    function toggle_copiesrow(biblioNum) {
111
        var checkbox = $("input:checkbox[value='"+biblioNum+"']");
112
        newCopiesRowId = "#copiesrow_" + biblioNum;
113
        var select_specific = $("#reqspecific_"+biblioNum).is(":checked");
114
115
        // If the checkbox is checked AND we want a specific item, we display the items block
116
        if ( $(checkbox).is(":checked") && select_specific ) {
117
            $(newCopiesRowId).show();
118
        } else {
119
            $(newCopiesRowId).hide();
120
        }
121
    };
122
123
    $("#place_on_hdr").show();
124
125
    [% IF OPACItemHolds == '1' %]
126
        $(".place_on_type").show();
127
        // onload, selectany is checked
128
        $(".selectany").attr("checked", "checked");
129
    [% END %]
130
131
    // If the user is *allowed* to choose a specific item
132
    // The first one is preselected
133
    [% IF OPACItemHolds =="1" %]
134
        $("table.copiesrow").each(function(){
135
            var id = suffixOf($(this).attr("id"), "_");
136
            select_first_available(id);
137
        });
138
    [% END %]
139
140
    // On confirmsjs change
141
    $(".confirmjs").change(function(){
142
        var id = suffixOf($(this).attr("id"), "_");
143
        // If I m checked, I enable radio buttons
144
        if ( $(this).is(":checked") ) {
145
            $("#reqspecific_" + id).attr("disabled", false);
146
            $("#reqany_" + id).attr("disabled", false);
147
        }
148
        // Else its are disabled
149
        else {
150
            $("#reqspecific_" + id).attr("disabled", "disabled");
151
            $("#reqany_" + id).attr("disabled", "disabled");
152
        }
153
        // expand or collaspe the items block
154
        toggle_copiesrow(id);
155
   });
156
157
    // When 'specific copy' or 'first available' radio button is clicked
158
    $(".selectspecific, .selectany").click(function() {
159
        var id = suffixOf($(this).attr("id"), "_");
160
        toggle_copiesrow(id);
161
    });
162
163
    // Show or hide holds notes
164
    $(".shownotes").click(function(){
165
        biblioNum = suffixOf($(this).attr("id"), "_");
166
        $("#notesrow_"+biblioNum).toggle();
167
    });
168
169
    // When 'Place Hold' button is clicked
170
    $(".placehold").click(function(){
171
        var biblionumbers = "";
172
        var selections = "";
173
174
        if ($(".confirmjs:checked").size() == 0) {
175
            alert(MSG_NO_RECORD_SELECTED);
176
            return false;
177
        }
178
179
        // Find the items with the 'Hold' box checked
180
        var badBib = null;
181
        $(".confirmjs:checked").each(function() {
182
            var biblioNum = $(this).val();
183
            biblionumbers += biblioNum + "/";
184
            selections += biblioNum + "/";
185
186
            // If the 'specific copy' radio button is checked
187
            if ($("#reqspecific_" + biblioNum + ":checked").size() > 0) {
188
                // Find the selected copy
189
                var item = $(".checkitem_" + biblioNum + ":checked");
190
                if ($(item).size() == 0) {
191
                    badBib = biblioNum;
192
                    return false;
193
                } else {
194
                  selections += $(item).val();
195
                }
196
            }
197
            selections += "/";
198
199
            // Add the pickup location
200
            var branchSel = $("#branch_" + biblioNum);
201
            if (branchSel.size() > 0) {
202
                selections += $(branchSel).val();
203
            }
204
            selections += "/";
205
            return true;
206
        });
207
208
        if (badBib) {
209
            alert(MSG_NO_ITEM_SELECTED);
210
            return false;
211
        }
212
213
        $("#selections").val(selections);
214
        $("#biblionumbers").val(biblionumbers);
215
        return true;
216
    });
217
218
219
[% FOREACH bibitemloo IN bibitemloop %]
220
    [% IF ( bibitemloo.holdable ) %]
221
        // http://jqueryui.com/demos/datepicker/#date-range
222
        var dates[% bibitemloo.biblionumber %] = $( "#from[% bibitemloo.biblionumber %], #to[% bibitemloo.biblionumber %]" ).datepicker({
223
            minDate: 1,
224
            changeMonth: true,
225
            numberOfMonths: 1,
226
            onSelect: function( selectedDate ) {
227
                var option = this.id == "from[% bibitemloo.biblionumber %]" ? "minDate" : "maxDate",
228
                    instance = $( this ).data( "datepicker" );
229
                    date = $.datepicker.parseDate(
230
                        instance.settings.dateFormat ||
231
                        $.datepicker._defaults.dateFormat,
232
                        selectedDate, instance.settings );
233
                dates[% bibitemloo.biblionumber %].not( this ).datepicker( "option", option, date );
234
            }
235
        });
236
    [% END %]
237
[% END %]
238
239
 });
240
// ]]>
241
</script>
242
<style type="text/css">td ul { padding : 0; } td li { white-space: nowrap; font-size: 90%; list-style-type:none; padding : .3em 0; }</style>
243
</head>
244
245
<body id="opac-holds">
246
  <div id="doc3" class="yui-t7">
247
    <div id="bd">
248
    [% INCLUDE 'masthead.inc' %]
249
	  <div id="yui-g">
250
        <div id="holds" class="container">
251
        [% IF ( message ) %]
252
            [% IF ( GNA ) %]
253
              <div id="gna" class="dialog alert">
254
                <p><strong>Sorry</strong>, you cannot place holds because the library doesn't have up-to-date <a href="/cgi-bin/koha/opac-memberentry.pl">contact information</a> on file.</p>
255
              <p>Please contact your librarian, or use the <a href="/cgi-bin/koha/opac-memberentry.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>
256
              </div>
257
            [% END %]
258
            [% IF ( lost ) %]
259
              <div id="lost" class="dialog alert">
260
                <p><strong>Sorry</strong>, you cannot place holds because your library card has been marked as lost or stolen.</p>
261
                <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>
262
              </div>
263
            [% END %]
264
            [% IF ( debarred ) %]
265
              <div id="debarred" class="dialog alert">
266
                <p><strong>Sorry</strong>, you cannot place holds because your account has been frozen.</p>
267
                <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>
268
              </div>
269
            [% END %]
270
            [% IF ( too_much_oweing ) %]
271
              <div id="too_much_oweing" class="dialog alert">
272
                Sorry, you cannot place holds because you owe [% too_much_oweing %].
273
              </div>
274
            [% END %]
275
            [% IF ( too_many_reserves ) %]
276
              <div id="too_many_reserves" class="dialog alert">Sorry, you cannot place more than [% too_many_reserves %] holds.
277
              </div>
278
            [% END %]
279
            [% IF ( bad_biblionumber ) %]
280
              <div id="bad_biblionumber" class="dialog alert">ERROR: No biblio record found for biblionumber [% bad_biblionumber %].</div>
281
            [% END %]
282
            [% IF ( no_items_selected ) %]
283
              <div id="no_items_selected" class="dialog alert">
284
                You must select at least one item.
285
              </div>
286
            [% END %]
287
            [% IF ( no_branch_selected ) %]
288
              <div id="no_branch_selected" class="dialog alert">
289
                You must select a library for pickup.
290
              </div>
291
            [% END %]
292
            [% IF ( no_biblionumber ) %]
293
              <div id="no_biblionumber" class="dialog alert">ERROR: No biblionumber received.</div>
294
            [% END %]
295
            [% IF ( bad_data ) %]
296
              <div id="bad_data" class="dialog alert">ERROR: Internal error: incomplete hold request.</div>
297
            [% END %]
298
            [% IF ( expired_patron ) %]
299
                <div id="expired_patron" class="dialog alert"><p><strong>Sorry</strong>, you cannot place holds because your library card has expired.</p><p>Please contact your librarian if you wish to renew your card.</p></div>
300
            [% END %]
301
          [% ELSE %]
302
            [% IF ( none_available ) %]
303
                <div id="none_available" class="dialog alert"><strong>Sorry</strong>, none of these items can be placed on hold.
304
                </div>
305
              [% END %]
306
          [% END %]<!-- NAME="message" -->
307
308
      [% UNLESS ( message ) %][% UNLESS ( none_available ) %]<h3>Confirm holds for:
309
                      [% FOREACH USER_INF IN USER_INFO %]
310
                        [% USER_INF.firstname %] [% USER_INF.surname %] ([% USER_INF.cardnumber %])
311
                      [% END %]
312
                    </h3>[% END %]
313
	      [% IF (RESERVE_CHARGE) %]
314
	      <div class="dialog alert" id="reserve_fee">
315
	        There is a charge of [% RESERVE_CHARGE %] for placing this hold
316
	      </div>
317
	      [% END %]
318
319
            <form action="/cgi-bin/koha/opac-reserve.pl" method="post" id="hold-request-form">
320
            <input type="hidden" name="place_reserve" value="1"/>
321
322
            <!-- These values are set dynamically by js -->
323
            <input type="hidden" name="biblionumbers" id="biblionumbers"/>
324
            <input type="hidden" name="selecteditems" id="selections"/>
325
            <div id="bigloop">
326
327
                [% FOREACH bibitemloo IN bibitemloop %]
328
                    <div class="holdrow">
329
330
                        <p>
331
332
                        [% IF ( bibitemloo.holdable ) %]
333
                          <input class="reserve_mode" name="reserve_mode" type="hidden" value="single"/>
334
                          <input class="single_bib" name="single_bib" type="hidden" value="[% bibitemloo.biblionumber %]"/>
335
                            <span class="confirmjs_hold" title="[% bibitemloo.biblionumber %]" style="padding:.3em"></span>
336
                            <span class="confirm_nonjs">
337
                              <input type="radio" class="confirmbox checkitem [% bibitemloo.biblionumber %]"
338
                                     name="[% bibitemloo.biblionumber %]" checked="checked"
339
                                     id="single_[% bibitemloo.biblionumber %]"
340
                                     value="any" />
341
                              <label class="confirm_label" for="single_[% bibitemloo.biblionumber %]">Place a hold on </label>
342
                            </span>
343
                        [% ELSE %]
344
                        [% END %]
345
346
                            <a class="title" 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>
347
                                            [% IF ( bibitemloo.author ) %],  by [% bibitemloo.author %][% END %]</p>
348
349
350
351
352
                        [% UNLESS ( bibitemloo.holdable ) %]
353
                            [% IF ( bibitemloo.already_reserved ) %]
354
                                <div class="bibmessage">You have already requested this title.</div>
355
                            [% ELSE %]
356
                                [% UNLESS ( bibitemloo.bib_available ) %]
357
                                    <div class="bibmessage">No available items.</div>
358
                                [% ELSE %]
359
                                    [% IF ( bibitemloo.already_patron_possession ) %]
360
                                        <div class="bibmessage">This title cannot be requested because it's already in your possession.</div>
361
                                    [% ELSE %]
362
                                        <div class="bibmessage">This title cannot be requested.</div>
363
                                    [% END %]
364
                                [% END %]
365
                            [% END %]
366
                        [% END %]
367
368
                        [% IF ( bibitemloo.holdable ) %]
369
                            <fieldset class="rows">
370
                            <ul>
371
                            <!-- HOLDABLE -->
372
                            [% UNLESS ( item_level_itypes ) %]
373
                                <li class="itype">
374
                                    <span class="label">Item type: </span>
375
                                    [% IF ( bibitemloo.imageurl ) %]<img src="[% bibitemloo.imageurl %]" alt="" />[% END %]
376
                                    [% bibitemloo.description %]
377
                                </li>
378
                            [% END %]
379
                            [% IF showholds || showpriority %]
380
                                <li class="priority">
381
                                    <span class="label">Holds and priority: </span>
382
                                    [% IF showpriority %] [% bibitemloo.rank %] [% END %]
383
                                    [% IF showholds && showpriority %] out of [% END %]
384
                                    [% IF showholds %] [% bibitemloo.reservecount %] [% END %]
385
                                </li>
386
                            [% END %]
387
388
389
390
                            [% UNLESS ( singleBranchMode ) %]
391
                                [% IF ( bibitemloo.holdable ) %]
392
                                    [% IF ( choose_branch ) %]
393
                                        <li class="branch">
394
                                            <label for="branch_[% bibitemloo.biblionumber %]">Pick up location:</label>
395
                                            [% UNLESS ( bibitemloo.holdable ) %]
396
                                                <select name="branch" id="branch_[% bibitemloo.biblionumber %]" disabled="disabled">
397
                                                    [% FOREACH branchloo IN bibitemloo.branchloop %]
398
                                                        [% IF ( branchloo.selected ) %]
399
                                                            <option value="[% branchloo.branchcode %]" selected="selected">[% branchloo.branchname %]</option>
400
                                                        [% ELSE %]
401
                                                            <option value="[% branchloo.branchcode %]">[% branchloo.branchname %]</option>
402
                                                        [% END %]
403
                                                    [% END %]
404
                                                </select>
405
                                            [% ELSE %]
406
                                                <select name="branch" id="branch_[% bibitemloo.biblionumber %]">
407
                                                    [% FOREACH branchloo IN bibitemloo.branchloop %]
408
                                                        [% IF ( branchloo.selected ) %]
409
                                                            <option value="[% branchloo.branchcode %]" selected="selected">[% branchloo.branchname %]</option>
410
                                                        [% ELSE %]
411
                                                            <option value="[% branchloo.branchcode %]">[% branchloo.branchname %]</option>
412
                                                        [% END %]
413
                                                    [% END %]
414
                                                </select>
415
                                            [% END %]
416
                                        </li>
417
                                    [% END %]
418
                                [% END %]
419
                            [% END %]
420
                        </ul>
421
                        <a class="toggle-hold-options" id="toggle-hold-options-[% bibitemloo.biblionumber %]" style="display:none;" href="#">Show more options</a>
422
                        <div id="hold-options-[% bibitemloo.biblionumber %]" class="hold-options">
423
                        <ul>
424
                            [% IF ( reserve_in_future ) %]
425
                                <li><label for="from[% bibitemloo.biblionumber %]">Hold starts on date:</label>
426
                                    <input name="reserve_date_[% bibitemloo.biblionumber %]" id="from[% bibitemloo.biblionumber %]" size="10" class="holddatefrom"/>
427
                                    <span class="date-format from" data-biblionumber="[% bibitemloo.biblionumber %]">[% INCLUDE 'date-format.inc' %]</span>
428
                                </li>
429
                            [% END %]
430
431
                        [% END %]
432
                        [% IF ( bibitemloo.holdable ) %]
433
                            <li>
434
                                <label for="to[% bibitemloo.biblionumber %]">Hold not needed after:</label>
435
                                    <input name="expiration_date_[% bibitemloo.biblionumber %]" id="to[% bibitemloo.biblionumber %]" size="10" class="holddateto" />
436
                                    <span class="date-format to" data-biblionumber="[% bibitemloo.biblionumber %]">[% INCLUDE 'date-format.inc' %]</span>
437
                            </li>
438
                        [% END %]
439
440
                        [% IF ( OpacHoldNotes && bibitemloo.holdable ) %]
441
                            <li>
442
                                <div class="notesrow" id="notesrow_[% bibitemloo.biblionumber %]">
443
                                  <label for="holdnotes[% bibitemloo.biblionumber %]">Hold notes:</label>
444
                                  <span id="forcenotesreason_[% bibitemloo.biblionumber %]" class="forcenotesreason"></span>
445
                                  <textarea id="holdnotes[% bibitemloo.biblionumber %]" rows="2" cols="30" name="notes_[% bibitemloo.biblionumber %]">[% bibitemloo.holdnotes %]</textarea>
446
                                  <input type="hidden" id="notesmandatory_[% bibitemloo.biblionumber %]" value="[% bibitemloo.mandatorynotes %]"/>
447
                                </div>
448
                            </li>
449
                        [% END %]
450
451
                        [% IF ( bibitemloo.holdable ) %]
452
                            <!-- HOLD ABLE -->
453
                            [% IF OPACItemHolds == '1' or OPACItemHolds == 'force' %]
454
                            <!-- ITEM HOLDS -->
455
456
                                <li class="radio place_on_type" style="display:none;">
457
                                  [% IF OPACItemHolds == "1" %]
458
                                    <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]"
459
                                            id="reqany_[% bibitemloo.biblionumber %]"
460
                                            class="selectany"
461
                                            value="Any"
462
                                            checked="checked"
463
                                     />
464
                                  [% ELSE %]
465
                                    <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]"
466
                                            id="reqany_[% bibitemloo.biblionumber %]"
467
                                            class="selectany"
468
                                            value="Any"
469
                                     />
470
                                  [% END %]
471
                                  <label for="reqany_[% bibitemloo.biblionumber %]">Next available item</label>
472
                                  [% IF OPACItemHolds == "force" %]
473
                                      <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]"
474
                                             id="reqspecific_[% bibitemloo.biblionumber %]"
475
                                             class="selectspecific"
476
                                             value="Specific"
477
                                             checked="checked"
478
                                      />
479
                                  [% ELSE %]
480
                                      <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]"
481
                                             id="reqspecific_[% bibitemloo.biblionumber %]"
482
                                             class="selectspecific"
483
                                             value="Specific"
484
                                      />
485
                                  [% END %]
486
                                  <label for="reqspecific_[% bibitemloo.biblionumber %]">A specific item</label>
487
                                </li>
488
489
                        [% IF OPACItemHolds == 'force' %]
490
                            <script type="text/javascript">
491
                                $(document).ready(function() {
492
                                    $("#toggle-hold-options-[% bibitemloo.biblionumber %]").click();
493
                                    $("#copiesrow_[% bibitemloo.biblionumber %]").show();
494
                                });
495
                            </script>
496
                        [% END %]
497
498
                            [% END %]
499
                </ul>
500
                        [% END %]
501
                  [% IF OPACItemHolds == '1' || OPACItemHolds == 'force' %]
502
                  [% IF ( bibitemloo.holdable ) %]
503
504
                        <table class="copiesrow" id="copiesrow_[% bibitemloo.biblionumber %]">
505
                          <caption>Select a specific item:</caption>
506
                          <tr>
507
                            <th>Copy number</th>
508
                            [% IF ( item_level_itypes ) %]
509
                              <th>Item type</th>
510
                            [% END %]
511
                            <th>Barcode</th>
512
                            [% UNLESS ( singleBranchMode ) %]
513
                              <th>Home library</th>
514
                              <th>Last location</th>
515
                            [% END %]
516
                            <th>Call number</th>
517
                            [% IF ( itemdata_enumchron ) %]
518
                              <th>Vol info</th>
519
                            [% END %]
520
                            <th>Information</th>
521
                          </tr>
522
523
                          [% FOREACH itemLoo IN bibitemloo.itemLoop %]
524
                            <tr class="[% itemLoo.backgroundcolor %]">
525
                              <td class="copynumber">
526
                                [% IF ( itemLoo.available ) %]
527
                                  <input type="radio" class="checkitem checkitem_[% bibitemloo.biblionumber %]" name="checkitem_[% bibitemloo.biblionumber %]"
528
                                         value="[% itemLoo.itemnumber %]" />
529
                                [% ELSE %]
530
                                  <input disabled="disabled" type="radio" class="checkitem" name="checkitem" value="[% itemLoo.itemnumber %]"
531
                                         style="display:none;" />
532
                                  <img src="/opac-tmpl/lib/famfamfam/silk/cross.png" alt="Cannot be put on hold" title="Cannot be put on hold" />
533
                                [% END %] [% IF ( itemLoo.copynumber ) %][% itemLoo.copynumber %][% END %]
534
                              </td>
535
                              [% IF ( item_level_itypes ) %]
536
                                <td class="itype">
537
                                  [% UNLESS ( noItemTypeImages ) %]
538
                                  [% IF ( itemLoo.imageurl ) %]<img src="[% itemLoo.imageurl %]" alt="" />[% END %]
539
                                  [% END %]
540
								[% itemLoo.description %]
541
                                </td>
542
                              [% END %]
543
                              <td class="barcode">[% itemLoo.barcode %]</td>
544
                              [% UNLESS ( singleBranchMode ) %]
545
                                <td class="homebranch">[% itemLoo.homeBranchName %]</td>
546
                                <td class="holdingbranch">[% itemLoo.holdingBranchName %]</td>
547
                              [% END %]
548
                              <td class="call_no">[% itemLoo.callNumber %]</td>
549
                              [% IF ( itemdata_enumchron ) %]
550
                                <td class="vol_info">[% itemLoo.enumchron %]</td>
551
                              [% END %]
552
                              <td class="information">
553
                                [% IF ( itemLoo.dateDue ) %]
554
                                  <span class="checkedout">Due [% itemLoo.dateDue %]</span>
555
                                [% ELSIF ( itemLoo.transfertwhen ) %]
556
                                  <span class="intransit">In transit from [% itemLoo.transfertfrom %],
557
                                    to [% itemLoo.transfertto %], since [% itemLoo.transfertwhen %]</span>
558
                                [% END %]
559
                                [% IF ( itemLoo.message ) %]
560
                                  <span class="lost">Unavailable (lost or missing)</span>
561
                                [% END %]
562
                                [% IF ( itemLoo.notforloan ) %]
563
                                  <span class="notforloan">Not for loan ([% itemLoo.notforloanvalue %])</span>
564
                                [% END %]
565
                                [% IF ( itemLoo.reservedate ) %]
566
                                  <span class="waiting">[% IF ( itemLoo.waitingdate ) %]Waiting[% ELSE %]On hold[% END %] for patron
567
                                    [% IF ( itemLoo.waitingdate ) %]at[% ELSE %]expected at[% END %] [% itemLoo.ExpectedAtLibrary %]
568
                                    since
569
                                    [% IF ( itemLoo.waitingdate ) %][% itemLoo.waitingdate | $KohaDates %][% ELSE %][% IF ( itemLoo.reservedate ) %][% itemLoo.reservedate %][% END %][% END %].
570
                                  </span>
571
                                [% ELSE %]
572
                                  <span class="notonhold">Not on hold</span>
573
                                [% END %]&nbsp;
574
                              </td>
575
                            </tr>
576
                          [% END %]
577
                        </table>
578
                    </div>
579
580
                </fieldset>
581
                  [% END %]<!-- OPACItemHolds -->
582
583
                  [% END %]<!-- bib_available -->
584
585
            </div>
586
                [% END %]
587
              [% END %] <!-- if message -->
588
            </div><!-- bigloop -->
589
590
            [% UNLESS ( message ) %]
591
            [% UNLESS ( none_available ) %]
592
            <input type="submit" value="Place hold" class="placehold" />
593
            [% END %]
594
            [% END %]
595
596
            </form>
597
598
        </div><!-- holds -->
599
      </div><!-- yui-g -->
600
    </div><!-- bd    -->
601
  </div><!-- doc3  -->
602
603
<div><!-- The following include seems to have an extra "/div" in it... -->
604
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-results-grouped.tt (-321 lines)
Lines 1-321 Link Here
1
[% USE Koha %]
2
[% INCLUDE 'doc-head-open.inc' %]
3
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo;
4
[% IF ( searchdesc ) %]
5
    Results of search [% IF ( query_desc ) %]for '[% query_desc | html %]'[% END %][% IF ( limit_desc ) %]&nbsp;with limit(s):&nbsp;'[% limit_desc | html %]'[% END %]
6
[% ELSE %]
7
    You did not specify any search criteria.
8
[% END %]
9
[% INCLUDE 'doc-head-close.inc' %]
10
<link rel="alternate" type="application/rss+xml" title="Koha - RSS"
11
href="/cgi-bin/koha/opac-rss.pl?[% query_cgi %][% limit_cgi |html %]" />
12
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.checkboxes.min.js"></script>
13
<script type="text/javascript">
14
//<![CDATA[
15
16
var q_array = new Array();  // will hold the search terms, if possible
17
18
$(document).ready(function(){
19
    [% IF ( OpacHighlightedWords ) %]
20
        $('a.title').each(function() {
21
            $(this).attr("href", $(this).attr("href") + "&query_desc=[% query_desc | uri %]");
22
        });
23
    [% END %]
24
25
	$('#sortsubmit').hide();
26
    $('#sort_by').change(function() {
27
        $('#bookbag_form').submit();
28
    });
29
    $("span.clearall").html("<a id=\"CheckNone\" href=\"#\">Clear all</a>");
30
    $("span.checkall").html("<a id=\"CheckAll\" href=\"#\">Select all</a>");
31
    $("span.addto").html("<label for=\"addto\">Add to: </label><select name=\"addto\" id=\"addto\"><option value=\"\"></option>[% IF ( opacbookbag ) %]<option value=\"addtocart\">Cart</option>[% END %][% IF ( virtualshelves ) %][% IF ( loggedinusername ) %]<optgroup label=\"Lists:\">[% IF ( barshelves ) %][% FOREACH barshelvesloo IN barshelvesloop %][% IF ( category == 1 ) %]<option id=\"s[% barshelvesloo.shelfnumber %]\" value=\"addtolist\">[% barshelvesloo.shelfname %]</option>[% END %][% END %][% END %]<option value=\"newlist\">[ New list ]</option></optgroup>[% ELSE %]<option value=\"newlist\">List</option>[% END %][% END %]</select> <input type=\"submit\" class=\"submit\" value=\"Save\" />");
32
	$("#addto").change(function(){
33
		cartList();
34
	});
35
	$(".addto").find("input:submit").click(function(){
36
		cartList();
37
		return false;
38
	});
39
	function cartList(){
40
			if($("#addto").find("option:selected").attr("value") == "addtolist"){
41
			var shelfnumber = $("#addto").find("option:selected").attr("id").replace("s","");
42
			[% IF ( loggedinusername ) %]if (vShelfAdd()) {
43
			Dopop('/cgi-bin/koha/opac-addbybiblionumber.pl?selectedshelf='+shelfnumber+'&' + vShelfAdd());
44
			}[% ELSE %] alert(_("You must be logged in to create or add to Lists")); [% END %]
45
			return false;
46
		} else if($("#addto").find("option:selected").attr("value") == "newlist"){
47
			[% IF ( loggedinusername ) %]if (vShelfAdd()) {
48
			Dopop('/cgi-bin/koha/opac-addbybiblionumber.pl?newshelf=1&' + vShelfAdd());
49
			}[% ELSE %] alert(_("You must be logged in to create or add to Lists")); [% END %]
50
			return false;
51
		}
52
		if($("#addto").find("option:selected").attr("value") == "addtocart"){
53
			addMultiple();
54
			return false;
55
		 }
56
	}
57
    $("#CheckAll").click(function(){
58
        $("#bookbag_form").checkCheckboxes();
59
        return false;
60
    });
61
    $("#CheckNone").click(function(){
62
        $("#bookbag_form").unCheckCheckboxes();
63
        return false;
64
    });
65
    [% IF ( query_desc ) %]
66
    var query_desc = "[% query_desc |replace("'", "\'") |replace('\n', '\\n') |replace('\r', '\\r') |html %]";
67
    q_array = query_desc.split(" ");
68
    // ensure that we don't have "" at the end of the array, which can
69
    // break the highlighter
70
    while (q_array.length > 0 && q_array[q_array.length-1] == "") {
71
        q_array = q_array.splice(0,-1);
72
    }
73
    highlightOn();
74
    $("#highlight_toggle_on" ).hide().click(function() {highlightOn() ;});
75
    $("#highlight_toggle_off").show().click(function() {highlightOff();});
76
    [% END %]
77
});
78
79
function highlightOff() {
80
    $("td").removeHighlight();
81
    $(".highlight_toggle").toggle();
82
}
83
function highlightOn() {
84
    var x;
85
    for (x in q_array) {
86
        q_array[x] = q_array[x].replace(/\w*:([\w])/, "$1");
87
        $("td").highlight(q_array[x]);
88
    }
89
    $(".highlight_toggle").toggle();
90
}
91
//]]>
92
</script>
93
</head>
94
<body id="results">
95
[% INCLUDE 'masthead.inc' %]
96
97
<div id="doc3" class="yui-t1">
98
   <div id="bd">
99
100
	<div id="yui-main">
101
102
	<div class="yui-b">
103
  [% IF ( koha_spsuggest ) %]
104
	Did you mean:
105
    <ul style="list-style: none;">
106
        [% FOREACH SPELL_SUGGES IN SPELL_SUGGEST %]
107
        <li>
108
            <a href="/cgi-bin/koha/opac-search.pl?q=[% SPELL_SUGGES.spsuggestion %]">[% SPELL_SUGGES.spsuggestion %]</a>
109
        </li>
110
        [% END %]
111
    </ul>
112
[% END %]
113
114
[% IF ( query_error ) %]
115
<div class="dialog alert">
116
	<h4>Error:</h4>
117
    [% query_error %]
118
</div>
119
[% END %]
120
121
<!-- Search Results Table -->
122
[% IF ( total ) %]
123
[% IF ( scan ) %]
124
    <h1>Scan index:</h1>
125
    <form action="/cgi-bin/koha/opac-search.pl" method="get">
126
        <table>
127
            <tr>
128
                <td>
129
                    Scan index for: <input type="text" name="q" id="scan-index" size="35" value="" />
130
                </td>
131
            </tr>
132
            <tr>
133
                <td>
134
                    <label for="scan-index">Indexed in:</label>
135
                    <select name="idx" id="scan-index">
136
                        <option value="">Any word</option>
137
                        <option value="kw,phr:">Any phrase</option>
138
                        <option value="ti:">Title</option>
139
                        <option value="ti,phr:">Title phrase</option>
140
                        <option value="au,phr:">Author</option>
141
                        <option value="su:">Subject</option>
142
                        <option value="su,phr:">Subject phrase</option>
143
                        <option value="se:">Series</option>
144
                        <option value="pb:">Publisher</option>
145
                        <option value="nt:">Notes</option>
146
                        <option value="se:">Series Title</option>
147
                        <option value="sn:">ISBN</option>
148
                        <option value="ss:">ISSN</option>
149
                    </select>
150
                    <input type="hidden" name="scan" value="1" />
151
                </td>
152
            </tr>
153
        </table>
154
    </form>
155
156
    <form action="/cgi-bin/koha/opac-search.pl" method="get">
157
        <table>
158
            <tr>
159
                <th>Term/Phrase</th>
160
                <th>Count</th>
161
            </tr>
162
            [% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %]
163
			[% IF ( SEARCH_RESULT.even ) %]
164
            <tr class="highlight">
165
			[% ELSE %]
166
			<tr>
167
			[% END %]
168
                <td>
169
                    <a href="/cgi-bin/koha/opac-search.pl?q=[% SEARCH_RESULT.scan_use |url %]&quot;[% SEARCH_RESULT.title |url %]&quot;">[% SEARCH_RESULT.title |html %]</a>
170
                </td>
171
                <td>
172
                    [% FOREACH subtitl IN SEARCH_RESULT.subtitle %]
173
                      [% subtitl.subfield %]
174
                    [% END %]
175
                </td>
176
            </tr>
177
            [% END %]
178
        </table>
179
    </form>
180
[% ELSE %]
181
182
    <div class="searchresults">
183
	<form action="/cgi-bin/koha/opac-search.pl" method="get" name="bookbag_form" id="bookbag_form">
184
		[% IF ( searchdesc ) %]
185
		[% FOREACH QUERY_INPUT IN QUERY_INPUTS %]
186
		<input type="hidden" name="[% QUERY_INPUT.input_name |html %]" value="[% QUERY_INPUT.input_value |html %]"/>
187
		[% END %]
188
		[% FOREACH LIMIT_INPUT IN LIMIT_INPUTS %]
189
		<input type="hidden" name="[% LIMIT_INPUT.input_name |html %]" value="[% LIMIT_INPUT.input_value |html %]"/>
190
		[% END %]
191
		[% END %]
192
193
        <!-- TABLE RESULTS START -->
194
        <table>
195
		<tr><td colspan="3" class="resultscontrol">
196
		<div class="resort"> <select id="sort_by" name="sort_by"> [% INCLUDE 'resort_form.inc' %] </select> <input type="submit" class="submit clearfix" id="sortsubmit" value="Go" /></div>
197
        [% IF ( opacbookbag || virtualshelves ) %]<div class="cartlist"><span class="checkall"></span>
198
		<span class="clearall"></span>
199
        <a href="#" class="highlight_toggle" id="highlight_toggle_off">Unhighlight</a>
200
        <a href="#" class="highlight_toggle" id="highlight_toggle_on">Highlight</a>
201
		<span class="addto"></span></div>
202
		[% END %]
203
204
        </td></tr>
205
            <!-- Actual Search Results -->
206
            [% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %]
207
                <tr class="grouplabel"><td colspan="3">[% SEARCH_RESULT.group_label %]</td></tr>
208
            [% FOREACH GROUP_RESULT IN SEARCH_RESULT.GROUP_RESULTS %]
209
            [% IF ( GROUP_RESULT.even ) %]
210
                <tr class="highlight">
211
            [% ELSE %]
212
                <tr>
213
            [% END %]
214
                    <td>[% IF ( OPACAmazonCoverImages ) %]
215
                        <a class="p1" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% GROUP_RESULT.biblionumber |url %]">[% IF ( GROUP_RESULT.isbn ) %]<img src="http://images.amazon.com/images/P/[% GROUP_RESULT.isbn %].01.TZZZZZZZ.jpg" alt="" class="thumbnail" />[% ELSE %]<img src="http://g-images.amazon.com/images/G/01/x-site/icons/no-img-sm.gif" alt="" class="thumbnail" />[% END %]
216
                        </a>
217
                        [% ELSE %]
218
                        [% UNLESS ( noItemTypeImages ) %]
219
                            [% IF ( GROUP_RESULT.imageurl ) %]
220
                                <img src="[% GROUP_RESULT.imageurl %]" title="[% GROUP_RESULT.description %]" />
221
                            [% END %]
222
                        [% END %]
223
                        [% GROUP_RESULT.description %]
224
                        [% END %]
225
                    </td>
226
                    <td>[% GROUP_RESULT.result_number %]. [% IF ( GROUP_RESULT.BiblioDefaultViewmarc ) %]<a class="title" href="/cgi-bin/koha/opac-MARCdetail.pl?biblionumber=[% GROUP_RESULT.biblionumber |url %]" title="View details for this title">[% GROUP_RESULT.title %]
227
                      [% ELSE %]
228
                      [% IF ( GROUP_RESULT.BiblioDefaultViewisbd ) %]<a class="title" href="/cgi-bin/koha/opac-ISBDdetail.pl?biblionumber=[% GROUP_RESULT.biblionumber |url %]" title="View details for this title">[% GROUP_RESULT.title %]
229
                      [% ELSE %]<a class="title" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% GROUP_RESULT.biblionumber |url %]" title="View details for this title">[% GROUP_RESULT.title %]
230
                      [% END %]
231
                      [% FOREACH subtitl IN GROUP_RESULT.subtitle %]
232
                          [% subtitl.subfield %]
233
                      [% END %]
234
                      </a>
235
                      [% END %]
236
                      [% IF ( GROUP_RESULT.author ) %]by <a href="/cgi-bin/koha/opac-search.pl?q=au:[% GROUP_RESULT.author |url %]" title="Search for works by this author">[% GROUP_RESULT.author %]</a>
237
                      [% ELSE %]&nbsp;[% END %]
238
				<p> [% IF ( GROUP_RESULT.publicationyear ) %] - [% GROUP_RESULT.publicationyear %][% END %]
239
						[% IF ( GROUP_RESULT.publishercode ) %]- [% GROUP_RESULT.publishercode %][% END %]
240
						[% IF ( GROUP_RESULT.place ) %] ; [% GROUP_RESULT.place %][% END %]
241
						[% IF ( GROUP_RESULT.pages ) %] - [% GROUP_RESULT.pages %][% END %]
242
						[% IF ( GROUP_RESULT.notes ) %] : [% GROUP_RESULT.notes %][% END %]
243
						[% IF ( GROUP_RESULT.size ) %] ; [% GROUP_RESULT.size %][% END %]
244
						[% IF ( GROUP_RESULT.timestamp ) %] <i>(modified on [% GROUP_RESULT.timestamp %])</i>[% END %]
245
				</p>
246
        [% IF ( GROUP_RESULT.searchhighlightblob ) %]<p class="searchhighlightblob">[% GROUP_RESULT.searchhighlightblob %]</p>[% END %]
247
				<p class="availability">
248
					[% IF ( GROUP_RESULT.available_items_loop ) %]
249
                                       <span class="available"><strong>Items available at:</strong>
250
					[% FOREACH available_items_loo IN GROUP_RESULT.available_items_loop %]
251
					[% IF ( available_items_loo.branchname ) %][% available_items_loo.branchname %][% END %]
252
					[% IF ( OPACItemsResultsDisplay ) %]
253
                        [% IF ( available_items_loo.location ) %][% available_items_loo.location %][% END %]
254
                        [% IF ( available_items_loo.itemcallnumber ) %][<a href="/cgi-bin/koha/opac-search.pl?q=callnum:[% available_items_loo.itemcallnumber |url %]">[% available_items_loo.itemcallnumber %]</a>][% END %]
255
                    [% END %]
256
					([% available_items_loo.count %]),
257
					[% END %]
258
					</span>
259
					[% ELSE %]
260
					<span class="unavailable">No items available:</span>
261
					[% END %]
262
					<span class="unavailable">
263
					[% IF ( GROUP_RESULT.onloancount ) %] Checked out ([% GROUP_RESULT.onloancount %]), [% END %]
264
                                      [% IF ( GROUP_RESULT.withdrawncount ) %] Withdrawn ([% GROUP_RESULT.withdrawncount %]), [% END %]
265
					[% IF ( GROUP_RESULT.itemlostcount ) %] Lost ([% GROUP_RESULT.itemlostcount %]),[% END %]
266
					[% IF ( GROUP_RESULT.damagedcount ) %] Damaged ([% GROUP_RESULT.damagedcount %]),[% END %]
267
					[% IF ( GROUP_RESULT.orderedcount ) %] On order ([% GROUP_RESULT.orderedcount %]),[% END %]
268
                    [% IF ( GROUP_RESULT.intransitcount ) %] In transit ([% GROUP_RESULT.intransitcount %]),[% END %]
269
					</span>
270
				</p>
271
272
				<p>
273
                                [% IF ( RequestOnOpac ) %]
274
					[% UNLESS ( GROUP_RESULT.norequests ) %]
275
						[% IF ( opacuserlogin ) %]
276
							[% IF ( AllowOnShelfHolds ) %]
277
                                <a class="hold" href="/cgi-bin/koha/opac-reserve.pl?biblionumber=[% GROUP_RESULT.biblionumber %]">Place hold</a><!-- add back when available 0 holds in queue-->
278
							[% ELSE %]
279
								[% IF ( GROUP_RESULT.itemsissued ) %]
280
                                    <a class="hold" href="/cgi-bin/koha/opac-reserve.pl?biblionumber=[% GROUP_RESULT.biblionumber %]">Place hold</a><!-- add back when available 0 holds in queue-->
281
								[% END %]
282
							[% END %]
283
						[% END %]
284
					[% END %]
285
				[% END %]
286
287
				[% IF ( opacbookbag || virtualshelves ) %]<input type="checkbox" name="biblionumber" value="[% GROUP_RESULT.biblionumber %]" title="Click to add to cart" /> <label for="bib[% GROUP_RESULT.biblionumber %]">[% END %]<img src="[% themelang %]/images/[% GROUP_RESULT.itemtype %].gif" alt="[% GROUP_RESULT.ccode %]" title="[% GROUP_RESULT.ccode %]" />[% IF ( opacbookbag || virtualshelves ) %]</label>[% END %] [% IF ( GROUP_RESULT.classification ) %]
288
                                    <a href="/cgi-bin/koha/opac-search.pl?q=callnum:[% GROUP_RESULT.classification |url %]">
289
                                        [% GROUP_RESULT.classification %]
290
                                    </a>
291
[% END %]</p>
292
				</td>
293
                </tr>
294
                [% END %]
295
                [% END %]
296
            </table>
297
    </form>
298
        </div>
299
    [% END %]
300
	[% INCLUDE 'page-numbers.inc' %]
301
302
    [% ELSE %]
303
    [% END %]
304
305
	[% IF ( suggestion ) %]
306
[% IF ( AnonSuggestions ) %]<div class="suggestion">Not finding what you're looking for?<br />  Make a <a href="/cgi-bin/koha/opac-suggestions.pl?op=add">purchase suggestion</a></div>[% ELSE %][% IF ( loggedinusername ) %]<div class="suggestion">Not finding what you're looking for?<br />  Make a <a href="/cgi-bin/koha/opac-suggestions.pl?op=add">purchase suggestion</a></div>[% END %][% END %]
307
[% END %]
308
309
</div>
310
</div>
311
<div class="yui-b">
312
        <!-- FACETS START -->
313
        [% IF ( opacfacets ) %]
314
		[% INCLUDE 'opac-facets.inc' %]
315
        [% END %]
316
        <!-- FACETS END -->
317
</div>
318
</div>
319
</div>
320
321
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-results.tt (-777 lines)
Lines 1-777 Link Here
1
[% USE Koha %]
2
[% SET TagsShowEnabled = ( TagsEnabled && TagsShowOnList ) %]
3
[% SET TagsInputEnabled = ( opacuserlogin && TagsEnabled && TagsInputOnList ) %]
4
5
[% INCLUDE 'doc-head-open.inc' %]
6
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo;
7
[% IF ( searchdesc ) %]
8
    Results of search [% IF ( query_desc ) %]for '[% query_desc | html%]'[% END %][% IF ( limit_desc ) %]&nbsp;with limit(s):&nbsp;'[% limit_desc | html %]'[% END %]
9
[% ELSE %]
10
    You did not specify any search criteria.
11
[% END %]
12
[% INCLUDE 'doc-head-close.inc' %]
13
<link rel="alternate" type="application/rss+xml" title="[% LibraryName |html %] Search RSS Feed" href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi |html %][% limit_cgi |html %]&amp;count=[% countrss |html %]&amp;sort_by=acqdate_dsc&amp;format=rss2" />
14
[% IF OpacStarRatings == 'all' || Koha.Preference('Babeltheque') %]
15
  <script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.rating.js"></script>
16
  <link rel="stylesheet" type="text/css" href="[% themelang %]/css/jquery.rating.css" />
17
[% END %]
18
19
<script type="text/javascript" src="[% themelang %]/js/overdrive.js"></script>
20
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.checkboxes.min.js"></script>
21
[% IF ( OpacHighlightedWords ) %]<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.highlight-3.js"></script>
22
[% END %]<script type="text/javascript">
23
//<![CDATA[
24
[% IF ( opacuserlogin ) %][% IF ( RequestOnOpac ) %]
25
function holdMultiple() {
26
    var checkedBiblioNums = ""; // Separated by "/"
27
    var checkedCount = 0;
28
    if(document.bookbag_form.biblionumber.length > 0) {
29
        for (var i=0; i < document.bookbag_form.biblionumber.length; i++) {
30
            if (document.bookbag_form.biblionumber[i].checked) {
31
                checkedBiblioNums += (document.bookbag_form.biblionumber[i].value + "/");
32
                checkedCount++;
33
            }
34
        }
35
    }
36
37
    if (checkedCount > 0) {
38
        holdBiblioNums(checkedBiblioNums);
39
    } else {
40
        alert(MSG_NO_RECORD_SELECTED);
41
    }
42
}
43
44
function holdBiblioNums(numList) {
45
    // numList: biblio numbers separated by "/"
46
    $("#hold_form_biblios").attr("value", numList);
47
    $("#hold_form").submit();
48
}[% END %][% END %]
49
50
[% IF ( TagsInputEnabled && loggedinusername ) %]
51
function tagSelected() {
52
    var checkedBoxes = $(".searchresults :checkbox:checked");
53
    if ($(checkedBoxes).size() == 0) {
54
        alert(MSG_NO_RECORD_SELECTED);
55
    } else {
56
        $("#tagsel_tag").hide();
57
        $("#sort_by").hide();
58
        $("#tagsel_form").show();
59
    }
60
}
61
62
function tagCanceled() {
63
    $("#tagsel_form").hide();
64
    $("#tagsel_tag").show();
65
    $("#sort_by").show();
66
    $("#tagsel_new").val("");
67
    $("#tagsel_status, .tagstatus").empty().hide();
68
}
69
70
function tagAdded() {
71
    var checkedBoxes = $(".searchresults :checkbox:checked");
72
    if ($(checkedBoxes).size() == 0) {
73
        alert(MSG_NO_RECORD_SELECTED);
74
        return false;
75
    }
76
77
    var tag = $("#tagsel_new").val();
78
    if (!tag || (tag == "")) {
79
        alert(MSG_NO_TAG_SPECIFIED);
80
        return false;
81
    }
82
83
    var bibs = [];
84
    for (var i = 0; i < $(checkedBoxes).size(); i++) {
85
        var box = $(checkedBoxes).get(i);
86
        bibs[i] = $(box).val();
87
    }
88
89
    KOHA.Tags.add_multitags_button(bibs, tag);
90
    return false;
91
}[% END %]
92
[% IF ( OpacHighlightedWords ) %]
93
var q_array = new Array();  // holds search terms if available
94
95
function highlightOff() {
96
    $("td").removeHighlight();
97
    $(".highlight_toggle").toggle();
98
}
99
function highlightOn() {
100
    var x;
101
    for (x in q_array) {
102
        q_array[x] = q_array[x].replace(/\w*:([\w])/, "$1");
103
        if ( q_array[x].length > 0 ) {
104
            $(".title").highlight(q_array[x]);
105
            $(".author").highlight(q_array[x]);
106
            $(".results_summary").highlight(q_array[x]);
107
        }
108
    }
109
    $(".highlight_toggle").toggle();
110
}
111
[% END %]
112
$(document).ready(function(){
113
    [% IF ( OpacHighlightedWords ) %]
114
        $('a.title').each(function() {
115
            $(this).attr("href", $(this).attr("href") + "&query_desc=[% query_desc | uri %]");
116
        });
117
    [% END %]
118
119
    [% IF ( IDreamBooksResults ) %]
120
        $('.idbresult').each(function() {
121
            var isbn = $(this).children('a').text().replace(/\s*/,'');
122
            var element = this;
123
124
            if ($.browser.msie && parseInt($.browser.version, 10) >= 8 && window.XDomainRequest) {
125
            // Use Microsoft XDR for IE version 8 or above
126
                var xdr = new XDomainRequest();
127
                xdr.open("get", "http://idreambooks.com/newbooks/api.json?q="+encodeURIComponent(isbn)+"&key=8bf66516232d1b72f3e47df939653e1e");
128
                xdr.onload = function() {
129
                    json = 'json = '+xdr.responseText; // the string now looks like..  json = { ... };
130
                    eval(json); // json is now a regular JSON object
131
                    if(json.total_results > 0 && json.book.rating > 0){
132
                        $(element).children('a').html("<img src='"+json.book.to_read_or_not_small+"' alt='"+json.book.title+" by "+json.book.author+"' title='Rating based on reviews of "+json.book.title+"'>"+json.book.rating+"%");
133
                        $(element).show();
134
                    } else {
135
                        $(element).remove();
136
                    }
137
                }
138
                xdr.send();
139
            } else {
140
                $.getJSON("http://idreambooks.com/newbooks/api.json?q="+encodeURIComponent(isbn)+"&key=8bf66516232d1b72f3e47df939653e1e", function(json){
141
                    if(json.total_results > 0 && json.book.rating > 0){
142
                        $(element).children('a').html("<img src='"+json.book.to_read_or_not_small+"' alt='"+json.book.title+" by "+json.book.author+"' title='Rating based on reviews of "+json.book.title+"'>"+json.book.rating+"%");
143
                        $(element).show();
144
                    } else {
145
                        $(element).remove();
146
                    }
147
                });
148
            }
149
        });
150
    [% END %]
151
152
    [% IF ( opacbookbag ) %]$(".addtocart").show();[% END %]
153
154
[% IF ( opacbookbag ) %]
155
    [% IF ( virtualshelves ) %]
156
    var param1 = "<label for=\"addto\">"+_("Add to: ")+"<\/label><select name=\"addto\" id=\"addto\"><option value=\"\"><\/option>";
157
    [% IF ( opacbookbag ) %]    param1 += "<option value=\"addtocart\">"+_("Cart")+"<\/option>";
158
    [% END %][% IF ( virtualshelves ) %][% IF ( loggedinusername ) %][% IF ( addbarshelves ) %]
159
    param1 += "<optgroup label=\""+_("Your lists:")+"\">";[% FOREACH addbarshelvesloo IN addbarshelvesloop %]
160
    param1 += "<option id=\"s[% addbarshelvesloo.shelfnumber %]\" value=\"addtolist\">[% addbarshelvesloo.shelfname |html %]<\/option>";[% END %]
161
    param1 += "<\/optgroup>";[% END %]
162
    [% IF ( addpubshelves ) %]param1 += "<optgroup label=\""+_("Public lists:")+"\">"[% FOREACH addpubshelvesloo IN addpubshelvesloop %]+"<option id=\"s[% addpubshelvesloo.shelfnumber %]\" value=\"addtolist\">[% addpubshelvesloo.shelfname |html %]<\/option>"[% END %];
163
    param1 += "<\/optgroup>";[% END %]
164
    [% IF (( addbarshelvesloop && addbarshelvesloop.size>9) || (addpubshelvesloop && addpubshelvesloop.size>9 )) %]
165
        param1 += "<option value=\"morelists\">[ "+_("More lists")+" ]<\/option>";
166
    [% END %]
167
    param1 += "<option value=\"newlist\">[ "+_("New list")+" ]<\/option>";
168
    [% END %]
169
    [% END %]
170
    param1 += "<\/select> <input type=\"submit\" class=\"submit\" value=\""+_("Save")+"\" />";
171
    [% ELSE %]
172
        var param1 = "<a id=\"addto\" class=\"addtocart\" href=\"#\">" + _("Add to cart") + "<\/a>";
173
    [% END %]
174
[% ELSE %]
175
        var param1 = "<label for=\"addto\">"+_("Add to list: ")+"<\/label><select name=\"addto\" id=\"addto\"><option value=\"\"><\/option>";
176
[% IF ( virtualshelves ) %][% IF ( loggedinusername ) %][% IF ( addbarshelves ) %]
177
    param1 += "<optgroup label=\""+_("Your lists:")+"\">";[% FOREACH addbarshelvesloo IN addbarshelvesloop %]
178
    param1 += "<option id=\"s[% addbarshelvesloo.shelfnumber %]\" value=\"addtolist\">[% addbarshelvesloo.shelfname |html %]<\/option>";[% END %]
179
    param1 += "<\/optgroup>";[% END %]
180
    [% IF ( addpubshelves ) %]param1 += "<optgroup label=\""+_("Public lists:")+"\">"[% FOREACH addpubshelvesloo IN addpubshelvesloop %]+"<option id=\"s[% addpubshelvesloo.shelfnumber %]\" value=\"addtolist\">[% addpubshelvesloo.shelfname |html %]<\/option>"[% END %][% END %]
181
    param1 +="<\/optgroup><option value=\"newlist\">[ "+_("New list")+" ]<\/option>"
182
    [% END %]
183
    [% END %]
184
    param1 += "<\/select> <input type=\"submit\" class=\"submit\" value=\""+_("Save")+"\" />";
185
[% END %]
186
187
    $('#sortsubmit').hide();
188
    $('#sort_by').change(function() {
189
        $('#bookbag_form').submit();
190
    });
191
    $("span.clearall").html("<a id=\"CheckNone\" href=\"#\">"+_("Clear all")+"<\/a>");
192
    $("span.checkall").html("<a id=\"CheckAll\" href=\"#\">"+_("Select all")+"<\/a>");
193
[% IF ( opacbookbag ) %]$("span.addto").html(param1);[% ELSE %][% IF ( virtualshelves ) %][% IF ( loggedinusername ) %]$("span.addto").html(param1);[% END %][% END %][% END %]
194
[% IF ( opacbookbag || virtualshelves ) %]
195
    [% IF ( virtualshelves ) %]
196
    $("#addto").change(function(){
197
        cartList();
198
    });
199
    $(".addto").find("input:submit").click(function(){
200
        cartList();
201
        return false;
202
    });
203
    [% ELSE %]
204
    $("#addto").click(function(){
205
        cartList();
206
        return false;
207
    });
208
    [% END %]
209
[% END %]
210
211
    function cartList(){
212
        if($("#addto").find("option:selected").attr("value") == "addtolist"){
213
            var shelfnumber = $("#addto").find("option:selected").attr("id").replace("s","");
214
            if (vShelfAdd()) {
215
            Dopop('/cgi-bin/koha/opac-addbybiblionumber.pl?selectedshelf='+shelfnumber+'&' + vShelfAdd());
216
            }
217
            return false;
218
        } else if($("#addto").find("option:selected").attr("value") == "newlist"){
219
            [% IF ( loggedinusername ) %]if (vShelfAdd()) {
220
            Dopop('/cgi-bin/koha/opac-addbybiblionumber.pl?newshelf=1&' + vShelfAdd());
221
            }[% ELSE %] alert(_("You must be logged in to create or add to lists")); [% END %]
222
            return false;
223
        } else if($("#addto").find("option:selected").attr("value") == "morelists"){
224
            [% IF ( loggedinusername ) %]if (vShelfAdd()) {
225
            Dopop('/cgi-bin/koha/opac-addbybiblionumber.pl?' + vShelfAdd());
226
            }[% ELSE %] alert(_("You must be logged in to create or add to lists")); [% END %]
227
            return false;
228
        }
229
        if($("#addto").find("option:selected").attr("value") == "addtocart" || $("#addto").attr("class") == "addtocart"){
230
            addMultiple();
231
            return false;
232
         }
233
    }
234
    $("#CheckAll").click(function(){
235
        $("#bookbag_form").checkCheckboxes();
236
        return false;
237
    });
238
    $("#CheckNone").click(function(){
239
        $("#bookbag_form").unCheckCheckboxes();
240
        return false;
241
    });
242
[% IF ( RequestOnOpac ) %]
243
  [% IF ( opacuserlogin ) %]
244
  [% IF ( DisplayMultiPlaceHold ) %]
245
    $("#placehold").html("<input class=\"submit\" type=\"submit\" value=\""+_("Place hold")+"\"/>");
246
    $("#placehold").find("input:submit").click(function(){
247
        holdMultiple();
248
        return false;
249
    });
250
  [% END %]
251
  [% END %]
252
[% END %]
253
    $("#holdDetails").hide();
254
255
[% IF ( query_desc ) %]
256
    var query_desc = "[% query_desc |replace("'", "\'") |replace('\n', '\\n') |replace('\r', '\\r') |html %]";
257
    var querystring = "[% querystring |replace("'", "\'") |replace('\n', '\\n') |replace('\r', '\\r') |html %]";
258
    [% IF ( OpacHighlightedWords ) %]
259
        q_array = query_desc.split(" ");
260
        // ensure that we don't have "" at the end of the array, which can
261
        // break the highlighter
262
        while (q_array.length > 0 && q_array[q_array.length-1] == "") {
263
            q_array = q_array.splice(0,-1);
264
        }
265
        highlightOn();
266
        $("#highlight_toggle_on" ).hide().click(function() {highlightOn() ;});
267
        $("#highlight_toggle_off").show().click(function() {highlightOff();});
268
    [% END %]
269
    [% IF ( OverDriveEnabled ) %]
270
        var $overdrive_results = $( '<span id="overdrive-results">' + _( 'Searching OverDrive...' ) + ' <img class="throbber" src="/opac-tmpl/lib/jquery/plugins/themes/classic/throbber.gif" /></span>' );
271
        $( '#breadcrumbs p' ).eq(0)
272
            .append( ' ' )
273
            .append( $overdrive_results );
274
        KOHA.OverDrive.Search( "[% OverDriveLibraryID %]", querystring, 1, 0, function( data ) {
275
            if ( data.error ) {
276
                $overdrive_results.html( _( 'Error searching OverDrive collection' ) );
277
                return;
278
            }
279
280
            if ( data.totalItems ) {
281
                $overdrive_results.html( _( 'Found' ) + ' <a href="/cgi-bin/koha/opac-overdrive-search.pl?q=' + escape( querystring ) + '">' + data.totalItems + ' ' + _( 'results' ) + '</a> ' + _( 'in OverDrive collection' ) );
282
            } else {
283
                $overdrive_results.remove();
284
            }
285
        } );
286
    [% END %]
287
[% END %]
288
289
[% IF ( TagsInputEnabled && loggedinusername ) %]
290
            $("#tagsel_tag").click(function(){
291
                tagSelected();
292
                return false;
293
            });
294
            $("#tagsel_cancel").click(function(){
295
                tagCanceled();
296
                return false;
297
            });
298
            $("#tagsel_button").click(function(){
299
                tagAdded();
300
                return false;
301
            });
302
303
            $(".tag_add").click(function(){
304
                var thisid = $(this).attr("id");
305
                thisid = thisid.replace("tag_add","");
306
                $(this).hide();
307
                $("#tagform"+thisid).show();
308
                $("#newtag"+thisid).focus();
309
                $("#newtag"+thisid+"_status").empty().hide();
310
                return false;
311
            });
312
            $(".cancel_tag_add").click(function(){
313
                var thisid = $(this).attr("id");
314
                thisid = thisid.replace("cancel","");
315
                $("#tagform"+thisid).hide();
316
                $("#tag_add"+thisid).show();
317
                $("#newtag"+thisid).val("");
318
                $("#newtag"+thisid+"_status").empty().hide();
319
                return false;
320
            });
321
            $(".tagbutton").click(function(){
322
                var thisid = $(this).attr("title");
323
                var tag = $("#newtag"+thisid).val();
324
                if (!tag || (tag == "")) {
325
                    alert(MSG_NO_TAG_SPECIFIED);
326
                    return false;
327
                }
328
                KOHA.Tags.add_tag_button(thisid, tag);
329
                return false;
330
            });
331
[% END %]
332
    [% IF OpenLibraryCovers %]KOHA.OpenLibrary.GetCoverFromIsbn();[% END %]
333
    [% IF OPACLocalCoverImages %]KOHA.LocalCover.GetCoverFromBibnumber(false);[% END %]
334
    [% IF ( GoogleJackets ) %]KOHA.Google.GetCoverFromIsbn();[% END %]
335
336
[% IF ( DidYouMean ) %]
337
    $("#didyoumean").load("/cgi-bin/koha/svc/suggestion?render=stub&q=[% querystring |uri %]",
338
        function() {
339
            $(".searchsuggestion").parent().parent().css({
340
                "border-color": "#F4ECBE",
341
                "background-color": "#FFFBEA"
342
            });
343
        });
344
[% END %]
345
346
});
347
348
//]]>
349
</script>
350
</head>
351
<body id="results">
352
    [% IF ( opacfacets ) %]<div id="doc3" class="yui-t1">[% ELSE %]<div id="doc3" class="yui-t7">[% END %]
353
   <div id="bd">
354
355
[% INCLUDE 'masthead.inc' %]
356
357
358
    <div id="yui-main">
359
    <div class="yui-b">
360
    <div id="userresults" class="container">
361
    [% IF ( DidYouMean ) %]
362
        <div id="didyoumean">Not what you expected? Check for <a href="/cgi-bin/koha/svc/suggestion?render=standalone&amp;q=[% querystring |uri %]">suggestions</a></div>
363
    [% END %]
364
    <div id="top-pages">[% INCLUDE 'page-numbers.inc' %]</div>
365
  [% IF ( koha_spsuggest ) %]
366
    Did you mean:
367
    <ul style="list-style: none;">
368
        [% FOREACH SPELL_SUGGES IN SPELL_SUGGEST %]
369
        <li>
370
            <a href="/cgi-bin/koha/opac-search.pl?q=[% SPELL_SUGGES.spsuggestion %]">[% SPELL_SUGGES.spsuggestion %]</a>
371
        </li>
372
        [% END %]
373
    </ul>
374
[% END %]
375
376
[% IF ( query_error ) %]
377
<div class="dialog alert">
378
    <h4>Error:</h4>
379
    [% query_error %]
380
</div>
381
[% END %]
382
383
<!-- Search Results Table -->
384
[% IF ( total ) %]
385
[% IF ( scan ) %]
386
    <h1>Scan index:</h1>
387
    <form action="/cgi-bin/koha/opac-search.pl" method="get">
388
        <table>
389
            <tr>
390
                <td>
391
                    Scan index for: <input type="text" name="q" id="scan-index" size="35" value="" />
392
                </td>
393
            </tr>
394
            <tr>
395
                <td>
396
                    <label for="scan-index">Indexed in:</label>
397
                    <select name="idx" id="scan-index">
398
                        <option value="">Any word</option>
399
                        <option value="kw,phr:">Any phrase</option>
400
                        <option value="ti:">Title</option>
401
                        <option value="ti,phr:">Title phrase</option>
402
                        <option value="au,phr:">Author</option>
403
                        <option value="su:">Subject</option>
404
                        <option value="su,phr:">Subject phrase</option>
405
                        <option value="se:">Series</option>
406
                        <option value="pb:">Publisher</option>
407
                        <option value="nt:">Notes</option>
408
                        <option value="se:">Series Title</option>
409
                        <option value="sn:">ISBN</option>
410
                        <option value="ss:">ISSN</option>
411
                    </select>
412
                    <input type="hidden" name="scan" value="1" />
413
                </td>
414
            </tr>
415
        </table>
416
    </form>
417
418
    <form action="/cgi-bin/koha/opac-search.pl" method="get">
419
        <table>
420
            <tr>
421
                <th>Term/Phrase</th>
422
                <th>Count</th>
423
            </tr>
424
            [% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %]
425
            [% IF ( SEARCH_RESULT.even ) %]
426
            <tr class="highlight">
427
            [% ELSE %]
428
            <tr>
429
            [% END %]
430
                <td>
431
                    <a href="/cgi-bin/koha/opac-search.pl?q=[% SEARCH_RESULT.scan_use |url %]&quot;[% SEARCH_RESULT.title |url %]&quot;">[% IF ( SEARCH_RESULT.title ) %][% SEARCH_RESULT.title |html %][% ELSE %]No title[% END %]</a>
432
                </td>
433
                <td>
434
                    [% SEARCH_RESULT.author %]
435
                </td>
436
            </tr>
437
            [% END %]
438
        </table>
439
    </form>
440
[% ELSE %]
441
442
    <div class="searchresults">
443
    <form action="/cgi-bin/koha/opac-search.pl" method="get" name="bookbag_form" id="bookbag_form">
444
        [% IF ( searchdesc ) %]
445
        [% FOREACH QUERY_INPUT IN QUERY_INPUTS %]
446
        <input type="hidden" name="[% QUERY_INPUT.input_name |html %]" value="[% QUERY_INPUT.input_value |html %]"/>
447
        [% END %]
448
        [% FOREACH LIMIT_INPUT IN LIMIT_INPUTS %]
449
        <input type="hidden" name="[% LIMIT_INPUT.input_name |html %]" value="[% LIMIT_INPUT.input_value |html %]"/>
450
        [% END %]
451
        [% END %]
452
453
        <!-- TABLE RESULTS START -->
454
        <table>
455
        <tr><td colspan="5" class="resultscontrol">
456
        <div class="resort"> <select id="sort_by" name="sort_by"> [% INCLUDE 'resort_form.inc' %] </select> <input type="submit" class="submit clearfix" id="sortsubmit" value="Go" /></div>
457
        <div class="cartlist">
458
            <!-- checkall, clearall are now needed for placehold -->
459
            <span class="checkall"></span>
460
            <span class="clearall"></span>
461
            [% IF ( OpacHighlightedWords ) %]
462
                <a href="#" class="highlight_toggle" id="highlight_toggle_off">Unhighlight</a>
463
                <a href="#" class="highlight_toggle" id="highlight_toggle_on">Highlight</a>
464
            [% END %]
465
            [% IF ( opacbookbag || virtualshelves ) %]
466
                <span class="addto"></span>
467
            [% END %]
468
            <span id="placehold"><!-- input class="submit" type="submit" value="Place Hold"/ --></span>
469
            <div id="holdDetails"></div>
470
471
            [% IF ( TagsInputEnabled && loggedinusername ) %]
472
                            <span id="tagsel_span">
473
                              <input id="tagsel_tag" class="submit" type="submit" value="Tag"/>
474
                            </span>
475
                            <span id="tagsel_form" style="display:none">
476
                              <label for="tagsel_new">New tag:</label>
477
                              <input name="tagsel_new" id="tagsel_new" maxlength="100" />
478
                              <input id="tagsel_button" name="tagsel_button" class="input tagsel_button" title="Add" type="submit" value="Add" />
479
                              <a href="#" id="tagsel_cancel">(done)</a>
480
                            </span>
481
                            <span id="tagsel_status" class="tagsel_tatus" style="display:none;">
482
                              Tag status here.
483
                            </span>
484
            [% END %]
485
        </div>
486
487
        </td></tr>
488
            <!-- Actual Search Results -->
489
            [% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %]
490
            [% UNLESS ( loop.odd ) %]
491
                <tr class="highlight">
492
            [% ELSE %]
493
                <tr>
494
            [% END %]
495
496
                <td class="select selectcol">[% IF ( opacbookbag ) %]<input type="checkbox" id="bib[% SEARCH_RESULT.biblionumber %]" name="biblionumber" value="[% SEARCH_RESULT.biblionumber %]" /> <label for="bib[% SEARCH_RESULT.biblionumber %]"></label>[% ELSE %]
497
[% IF ( virtualshelves ) %]<input type="checkbox" id="bib[% SEARCH_RESULT.biblionumber %]" name="biblionumber" value="[% SEARCH_RESULT.biblionumber %]" /> <label for="bib[% SEARCH_RESULT.biblionumber %]"></label>[% ELSE %]
498
[% IF ( RequestOnOpac ) %][% UNLESS ( SEARCH_RESULT.norequests ) %][% IF ( opacuserlogin ) %]<input type="checkbox" id="bib[% SEARCH_RESULT.biblionumber %]" name="biblionumber" value="[% SEARCH_RESULT.biblionumber %]" /> <label for="bib[% SEARCH_RESULT.biblionumber %]"></label>[% END %][% END %][% END %][% END %][% END %]</td>
499
                <td class="select selectcol">[% UNLESS suppress_result_number %][% SEARCH_RESULT.result_number %].[% END %]</td>
500
501
                [% UNLESS ( item_level_itypes ) %]
502
                [% UNLESS ( noItemTypeImages ) %]
503
504
                <td class="itypecol">
505
                [% IF ( SEARCH_RESULT.imageurl ) %]
506
                <img src="[% SEARCH_RESULT.imageurl %]" title="[% SEARCH_RESULT.description %]" alt="[% SEARCH_RESULT.description %]" />
507
                [% END %]
508
                [% IF ( SEARCH_RESULT.score_avg ) %]
509
                    <img src="[% themelang %]/../images/bonus.png" title="bonus" style="max-height: 35px;"/>
510
                [% END %]
511
                </td>
512
                [% END %]
513
                [% END %]
514
515
                [% IF ( AuthorisedValueImages ) %]
516
                <td class="itypecol">
517
                [% FOREACH authorised_value_image IN SEARCH_RESULT.authorised_value_images %]
518
                    [% IF ( authorised_value_image.imageurl ) %]
519
                        <img src="[% authorised_value_image.imageurl %]" alt="[% authorised_value_image.label %]" title="[% authorised_value_image.label %]">
520
                    [% END %]
521
                [% END %]
522
                </td>
523
                [% END %]
524
525
                <td>
526
                [% IF ( COinSinOPACResults ) %]
527
                    [% IF ( SEARCH_RESULT.coins ) %]
528
                        <!-- COinS / Openurl --><span class="Z3988" title="[% SEARCH_RESULT.coins %]"></span>
529
                    [% END %]
530
                [% END %]
531
532
                [% IF ( OPACXSLTResultsDisplay ) %]
533
                [% SEARCH_RESULT.XSLTResultsRecord %]
534
                [% ELSE %]
535
                [% IF ( BiblioDefaultViewmarc ) %]<a class="title" href="/cgi-bin/koha/opac-MARCdetail.pl?biblionumber=[% SEARCH_RESULT.biblionumber |url %]" title="View details for this title">
536
                                [% ELSE %]
537
                                [% IF ( BiblioDefaultViewisbd ) %]<a class="title" href="/cgi-bin/koha/opac-ISBDdetail.pl?biblionumber=[% SEARCH_RESULT.biblionumber |url %]" title="View details for this title">
538
                                [% ELSE %]<a class="title" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% SEARCH_RESULT.biblionumber |url %]" title="View details for this title">
539
                                [% END %]
540
                                [% END %]
541
                                [% IF ( SEARCH_RESULT.title ) %][% SEARCH_RESULT.title |html %][% ELSE %]No title[% END %] [% FOREACH subtitl IN SEARCH_RESULT.subtitle %], [% subtitl.subfield|html %][% END %]</a>
542
                                [% IF ( SEARCH_RESULT.author ) %]by <a href="/cgi-bin/koha/opac-search.pl?q=au:[% SEARCH_RESULT.author |url %]" title="Search for works by this author" class="author">[% SEARCH_RESULT.author %]</a>
543
                                [% ELSE %]&nbsp;
544
                                [% END %]
545
                <span class="results_summary publisher"><span class="label">Publication:</span>
546
                        [% IF ( SEARCH_RESULT.place ) %][% SEARCH_RESULT.place %] [% END %][% IF ( SEARCH_RESULT.publishercode ) %][% SEARCH_RESULT.publishercode|html %][% END %][% IF ( SEARCH_RESULT.publicationyear ) %] [% SEARCH_RESULT.publicationyear %]
547
                    [% ELSE %][% IF ( SEARCH_RESULT.copyrightdate ) %] [% SEARCH_RESULT.copyrightdate %][% END %][% END %]
548
                        [% IF ( SEARCH_RESULT.pages ) %]. [% SEARCH_RESULT.pages %][% END %]
549
                        [% IF ( SEARCH_RESULT.notes ) %], [% SEARCH_RESULT.notes|html %][% END %]
550
                        [% IF ( SEARCH_RESULT.size ) %] [% SEARCH_RESULT.size %][% END %]
551
                        [% IF ( SEARCH_RESULT.timestamp ) %] <i>(modified on [% SEARCH_RESULT.timestamp %])</i>[% END %]
552
                </span>
553
                [% IF ( SEARCH_RESULT.summary ) %]
554
                <span class="result_summary">
555
                    [% SEARCH_RESULT.summary %]
556
                </span>
557
                [% END %]
558
                [% IF ( SEARCH_RESULT.copyrightdate ) %]<span class="results_summary date"><span class="label">Date:</span>[% SEARCH_RESULT.copyrightdate %]</span>[% END %]
559
560
                <span class="results_summary availability">
561
                <span class="label">Availability:</span>
562
                    [% IF ( SEARCH_RESULT.available_items_loop.size() ) %]
563
                    <span class="available"><strong>Items available:</strong>
564
                    [% FOREACH available_items_loo IN SEARCH_RESULT.available_items_loop %]
565
                    [% IF available_items_loo.this_branch %]<span class="highlight-row-results">[% ELSE %]<span>[% END %]
566
                    [% IF ( singleBranchMode ) %]
567
                        [% available_items_loo.location %]
568
                    [% ELSE %]
569
                        [% available_items_loo.branchname %]
570
                    [% END %]
571
572
                    [% IF ( OPACItemsResultsDisplay ) %]
573
                        [% UNLESS ( singleBranchMode ) %][% available_items_loo.location %][% END %]
574
                        [% IF ( available_items_loo.itemcallnumber ) %][<a href="/cgi-bin/koha/opac-search.pl?q=callnum:[% available_items_loo.itemcallnumber |url %]">[% available_items_loo.itemcallnumber %]</a>][% END %]
575
                    [% END %]
576
                    ([% available_items_loo.count %]),
577
                    </span>
578
                    [% END %]
579
                    </span>
580
                    [% ELSE %]
581
                    [% IF ( SEARCH_RESULT.ALTERNATEHOLDINGS ) %]
582
                    [% FOREACH ALTERNATEHOLDING IN SEARCH_RESULT.ALTERNATEHOLDINGS %]
583
                        &nbsp;<span id="alternateholdings">[% ALTERNATEHOLDING.holding %]</span>,
584
                    [% END %]
585
                    [% ELSE %]
586
                        <span class="unavailable">No items available:</span>
587
                    [% END %]
588
                    [% END %]
589
                    <span class="unavailable">
590
                    [% IF ( SEARCH_RESULT.onloancount ) %] Checked out ([% SEARCH_RESULT.onloancount %]), [% END %]
591
                    [% IF ( SEARCH_RESULT.withdrawncount ) %] Withdrawn ([% SEARCH_RESULT.withdrawncount %]), [% END %]
592
                    [% UNLESS ( SEARCH_RESULT.hidelostitems ) %][% IF ( SEARCH_RESULT.itemlostcount ) %] Lost ([% SEARCH_RESULT.itemlostcount %]),[% END %][% END %]
593
                    [% IF ( SEARCH_RESULT.damagedcount ) %] Damaged ([% SEARCH_RESULT.damagedcount %]),[% END %]
594
                    [% IF ( SEARCH_RESULT.orderedcount ) %] On order ([% SEARCH_RESULT.orderedcount %]),[% END %]
595
                    [% IF ( SEARCH_RESULT.onholdcount ) %] On hold ([% SEARCH_RESULT.onholdcount %]),[% END %]
596
                    [% IF ( SEARCH_RESULT.intransitcount ) %] In transit ([% SEARCH_RESULT.intransitcount %]),[% END %]
597
                    </span>
598
                </span>
599
                [% END %]
600
601
                [% IF ( SEARCH_RESULT.score_avg ) %]
602
                    <div class="results_summary">
603
                        [% FOREACH i  IN [ 1 2 3 4 5  ] %]
604
                            [% IF ( SEARCH_RESULT.score_int >= i ) %]
605
                                <div class="star-rating rater-[% i %] star star-rating-applied star-rating-readonly star-rating-on"><a title="[% i %]">[% i %]</a></div>
606
                            [% ELSE   %]
607
                                <div class="star-rating rater-[% i %] star star-rating-applied star-rating-readonly"><a title="[% i %]">[% i %]</a></div>
608
                            [% END %]
609
                        [% END %]
610
                        <span id="babeltheque-rating_total_[% SEARCH_RESULT.biblionumber %]">&nbsp;&nbsp; [% SEARCH_RESULT.score_avg %] / 5 (on [% SEARCH_RESULT.num_scores %] rates)</span>
611
612
                        [% IF ( SEARCH_RESULT.num_critics ) %]
613
                            <span class="social_data">[% SEARCH_RESULT.num_critics %] Internet user critics</span>
614
                        [% END %]
615
                        [% IF ( SEARCH_RESULT.num_critics_pro ) %]
616
                            <span class="social_data">[% SEARCH_RESULT.num_critics_pro %] Professional critics</span>
617
                        [% END %]
618
                        [% IF ( SEARCH_RESULT.num_videos ) %]
619
                            <span class="social_data">[% SEARCH_RESULT.num_videos %] Video extracts</span>
620
                        [% END %]
621
                        [% IF ( SEARCH_RESULT.num_quotations ) %]
622
                            <span class="social_data">[% SEARCH_RESULT.num_quotations %] Quotations</span>
623
                        [% END %]
624
                    </div>
625
                [% END %]
626
627
                [% IF ( LibraryThingForLibrariesID ) %]<div class="ltfl_reviews"></div>[% END %]
628
                [% IF ( TagsShowEnabled ) %]
629
                                [% IF ( SEARCH_RESULT.TagLoop.size ) %]
630
                                        <div class="results_summary tags"><span class="label">Tags:</span>
631
                                        <ul style="display: inline; list-style: none;">[% FOREACH TagLoo IN SEARCH_RESULT.TagLoop %]<li style="display: inline; list-style: none;"><a href="/cgi-bin/koha/opac-search.pl?tag=[% TagLoo.term |url %]&amp;q=[% TagLoo.term |url %]">[% TagLoo.term %]</a> <span class="weight">([% TagLoo.weight_total %])</span></li>
632
                                            [% END %]
633
                                        </ul>
634
                                        </div>
635
                                [% END %]
636
                [% END %]
637
                [% IF ( SEARCH_RESULT.searchhighlightblob ) %]<span class="results_summary"><span class="label">Match:</span> [% SEARCH_RESULT.searchhighlightblob %]</span>[% END %]
638
639
640
641
642
                [% IF ( OpacStarRatings == 'all' ) %]
643
                <div class="results_summary ratings">
644
645
[% FOREACH i  IN [ 1 2 3 4 5  ] %]
646
647
[% IF ( SEARCH_RESULT.rating_avg == i ) %]
648
    <input class="star" type="radio"  name="rating-[% SEARCH_RESULT.biblionumber %]" value="[% i %]" checked="checked" disabled="disabled"   />
649
[% ELSE   %]
650
    <input class="star" type="radio"  name="rating-[% SEARCH_RESULT.biblionumber %]" value="[% i %]" disabled="disabled"   />
651
[% END %]
652
653
[% END %]
654
                <input type="hidden" name="biblionumber"  value="[% SEARCH_RESULT.biblionumber %]" />
655
                <input type="hidden" name="loggedinuser"  value="[% loggedinuser %]" />
656
657
                [% IF (  SEARCH_RESULT.rating_total ) > 0  %]
658
                    <span id="rating_total_[% SEARCH_RESULT.biblionumber %]">&nbsp;&nbsp;([% SEARCH_RESULT.rating_total %] votes)</span>
659
                [% ELSE %]
660
                    <br />
661
                [% END %]
662
663
                </div>
664
                [% END %]
665
666
<span class="results_summary actions"><span class="label">Actions:</span>
667
                [% IF ( RequestOnOpac ) %]
668
                    [% UNLESS ( SEARCH_RESULT.norequests ) %]
669
                        [% IF ( opacuserlogin ) %]
670
                            [% IF ( AllowOnShelfHolds ) %]
671
                                <a class="hold" href="/cgi-bin/koha/opac-reserve.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]">Place hold</a><!-- add back when available 0 holds in queue-->
672
                            [% ELSE %]
673
                                [% IF ( SEARCH_RESULT.itemsissued ) %]
674
                                    <a class="hold" href="/cgi-bin/koha/opac-reserve.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]">Place hold</a><!-- add back when available 0 holds in queue-->
675
                                [% END %]
676
                            [% END %]
677
                        [% END %]
678
                    [% END %]
679
                [% END %]
680
681
                [% IF ( TagsInputEnabled ) %]
682
                    [% IF ( loggedinusername ) %]
683
                        <a class="tag_add" id="tag_add[% SEARCH_RESULT.biblionumber %]" href="#">Add tag</a>
684
                        <span id="tagform[% SEARCH_RESULT.biblionumber %]" class="tag_results_input" style="display:none;">
685
                          <label for="newtag[% SEARCH_RESULT.biblionumber %]">New tag(s), separated by a comma:</label>
686
                          <input name="newtag[% SEARCH_RESULT.biblionumber %]" id="newtag[% SEARCH_RESULT.biblionumber %]" maxlength="100" />
687
                          <input name="tagbutton" class="tagbutton" title="[% SEARCH_RESULT.biblionumber %]" type="submit" value="Add" />
688
                          <a class="cancel_tag_add" id="cancel[% SEARCH_RESULT.biblionumber %]" href="#">(done)</a>
689
                        </span>
690
                        <span id="newtag[% SEARCH_RESULT.biblionumber %]_status" class="tagstatus" style="display:none;">
691
                          Tag status here.
692
                        </span>
693
                    [% ELSIF ( loop.first ) %]<span id="login4tags">Log in to add tags.</span>
694
                    [% END %]
695
                [% END %]
696
697
                [% IF ( opacuserlogin ) %][% IF ( loggedinusername ) %][% IF ( virtualshelves ) %]<a class="addtoshelf" href="/cgi-bin/koha/opac-addbybiblionumber.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]" onclick="Dopop('opac-addbybiblionumber.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]'); return false;">Save to Lists</a>
698
                [% END %][% END %][% END %]
699
                [% IF ( opacbookbag ) %]
700
                    [% IF ( SEARCH_RESULT.incart ) %]
701
                        <a class="addtocart cart[% SEARCH_RESULT.biblionumber %]" href="#" onclick="addRecord('[% SEARCH_RESULT.biblionumber %]'); return false;">In your cart</a> <a class="cartRemove cartR[% SEARCH_RESULT.biblionumber %]" href="#" onclick="delSingleRecord('[% SEARCH_RESULT.biblionumber %]'); return false;">(remove)</a>
702
                    [% ELSE %]
703
                        <a class="addtocart cart[% SEARCH_RESULT.biblionumber %]" href="#" onclick="addRecord('[% SEARCH_RESULT.biblionumber %]'); return false;">Add to cart</a> <a style="display:none;" class="cartRemove cartR[% SEARCH_RESULT.biblionumber %]" href="#" onclick="delSingleRecord('[% SEARCH_RESULT.biblionumber %]'); return false;">(remove)</a>
704
                    [% END %]
705
                [% END %]
706
                </span>
707
                </td><td>
708
                    <a class="p1" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]">
709
            [% IF ( OPACLocalCoverImages ) %]<span title="[% SEARCH_RESULT.biblionumber |url %]" class="[% SEARCH_RESULT.biblionumber %]" id="local-thumbnail[% loop.count %]"></span>[% END %]
710
                    [% IF ( OPACAmazonCoverImages ) %][% IF ( SEARCH_RESULT.normalized_isbn ) %][% IF ( using_https ) %]<span title="[% SEARCH_RESULT.biblionumber %]" id="amazon-thumbnail[% loop.count %]"><img src="https://images-na.ssl-images-amazon.com/images/P/[% SEARCH_RESULT.normalized_isbn %].01.TZZZZZZZ.jpg" alt="" class="thumbnail" /></span>[% ELSE %]<span title="[% SEARCH_RESULT.biblionumber %]" id="amazon-thumbnail[% loop.count %]"><img src="http://images.amazon.com/images/P/[% SEARCH_RESULT.normalized_isbn %].01.TZZZZZZZ.jpg" alt="" class="thumbnail" /></span>[% END %][% ELSE %]<span class="no-image">No cover image available</span>[% END %][% END %]
711
712
                [% IF ( SyndeticsEnabled ) %]
713
                    [% IF ( SyndeticsCoverImages ) %]
714
                        [% IF SEARCH_RESULT.normalized_isbn %]
715
                                [% IF ( using_https ) %]
716
                            <span title="[% SEARCH_RESULT.biblionumber %]" id="syndetics-thumbnail[% loop.count %]"><img src="https://secure.syndetics.com/index.aspx?isbn=[% SEARCH_RESULT.normalized_isbn %]/SC.GIF&amp;client=[% SyndeticsClientCode %]&amp;type=xw10&amp;upc=[% SEARCH_RESULT.normalized_upc %]&amp;oclc=[% SEARCH_RESULT.normalized_oclc %]" alt="" class="thumbnail" /></span>
717
                        [% ELSE %]
718
                            <span title="[% SEARCH_RESULT.biblionumber %]" id="syndetics-thumbnail[% loop.count %]"><img src="http://www.syndetics.com/index.aspx?isbn=[% SEARCH_RESULT.normalized_isbn %]/SC.GIF&amp;client=[% SyndeticsClientCode %]&amp;type=xw10&amp;upc=[% SEARCH_RESULT.normalized_upc %]&amp;oclc=[% SEARCH_RESULT.normalized_oclc %]" alt="" class="thumbnail" /></span>
719
                    [% END %]
720
                    [% ELSE %]
721
                        <span class="no-image">No cover image available</span>
722
                    [% END %]
723
            [% END %]
724
                [% END %]
725
726
                [% IF ( GoogleJackets ) %][% IF ( SEARCH_RESULT.normalized_isbn ) %]<span style="block" title="[% SEARCH_RESULT.biblionumber |url %]" class="[% SEARCH_RESULT.normalized_isbn %]" id="gbs-thumbnail[% loop.count %]"></span>[% ELSE %]<span class="no-image">No cover image available</span>[% END %][% END %]
727
        [% IF OpenLibraryCovers %][% IF SEARCH_RESULT.normalized_isbn %]<span style="block" title="[% SEARCH_RESULT.biblionumber %]" class="[% SEARCH_RESULT.normalized_isbn %]" id="openlibrary-thumbnail[% loop.count %]"></span>[% ELSE %]<span class="no-image">No cover image available</span>[% END %][% END %]
728
                </a>
729
                [% IF ( BakerTaylorEnabled ) %][% IF ( SEARCH_RESULT.normalized_isbn ) %]<a href="https://[% BakerTaylorBookstoreURL |html %][% SEARCH_RESULT.normalized_isbn %]"><img alt="See Baker &amp; Taylor" src="[% BakerTaylorImageURL |html %][% SEARCH_RESULT.normalized_isbn %]" /></a>[% ELSE %]<span class="no-image">No cover image available</span>[% END %][% END %]
730
                [% IF ( IDreamBooksResults ) %][% IF ( SEARCH_RESULT.normalized_isbn ) %]<div class="idbresult" style="display: none;">
731
                    [% IF ( IDreamBooksReviews ) %]
732
                        <a href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]#idb_critic_reviews">
733
                    [% ELSE %]
734
                        <a href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]">
735
                    [% END %]
736
                    [% SEARCH_RESULT.normalized_isbn %]</a></div>
737
                [% END %][% END %]
738
                </td>
739
                </tr>
740
                [% END %]
741
            </table>
742
    </form>
743
    <form id="hold_form" name="hold_form" method="get" action="/cgi-bin/koha/opac-reserve.pl">
744
        <!-- The value will be set by holdBiblioNums() in basket.js -->
745
        <input id="hold_form_biblios" type="hidden" name="biblionumbers" value=""/>
746
    </form>
747
        </div>
748
    [% END %]
749
    <div id="bottom-pages">[% INCLUDE 'page-numbers.inc' %]</div>
750
751
    [% ELSE %]
752
    [% END %]
753
754
    [% IF ( suggestion ) %]
755
[% IF ( AnonSuggestions ) %]<div class="suggestion">Not finding what you're looking for?<br />  Make a <a href="/cgi-bin/koha/opac-suggestions.pl?op=add">purchase suggestion</a></div>[% ELSE %][% IF ( loggedinusername ) %]<div class="suggestion">Not finding what you're looking for?<br />  Make a <a href="/cgi-bin/koha/opac-suggestions.pl?op=add">purchase suggestion</a></div>[% END %][% END %]
756
[% END %]
757
</div>
758
</div>
759
</div>
760
        [% IF ( opacfacets ) %]
761
<div class="yui-b"><div id="facetcontainer" class="container">
762
        <!-- FACETS START -->
763
        [% INCLUDE 'opac-facets.inc' %]
764
        <!-- FACETS END -->
765
</div></div>
766
        [% END %]
767
</div>
768
769
[% IF ( LibraryThingForLibrariesID ) %]
770
[% IF ( using_https ) %]
771
<script src="https://ltfl.librarything.com/forlibraries/widget.js?id=[% LibraryThingForLibrariesID %]&amp;systype=koha" type="text/javascript"></script>
772
[% ELSE %]
773
<script src="http://ltfl.librarything.com/forlibraries/widget.js?id=[% LibraryThingForLibrariesID %]&amp;systype=koha" type="text/javascript"></script>
774
[% END %]
775
[% END %]
776
777
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-review.tt (-80 lines)
Lines 1-80 Link Here
1
[% INCLUDE 'doc-head-open.inc' %]
2
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Comments on [% title |html %]
3
<style type="text/css">
4
  #custom-doc { width:37.08em;*width:36.16em;min-width:485px; margin:1em auto; text-align:left; }
5
</style>
6
[% INCLUDE 'doc-head-close.inc' %]
7
<script type="text/javascript">
8
//<![CDATA[
9
	 $(document).ready(function() {
10
	 	var inject_old = function(comment) {
11
			[% IF ( reviewid ) %]
12
			[% IF ( cgi_debug ) %]alert(_("injecting OLD comment: ")+comment);[% END %]
13
            parent.opener.$('#c[% reviewid %] p').prev("small").prev("h5").html(_("Your edited comment (preview, pending approval)"));
14
			parent.opener.$('#c[% reviewid %] p').html(comment);
15
            parent.opener.$('#c[% reviewid %] p').append(" <a href=\"#comment\" onclick=\"Dopop(\'/cgi-bin/koha/opac-review.pl?biblionumber=[% biblionumber | uri %]&amp;reviewid=[% reviewid | uri%]\');\">"+_("Edit")+"<\/a>");
16
			[% END %]
17
			return 1;
18
		};
19
	 	var inject_new = function(comment) {
20
			[% IF ( cgi_debug ) %]alert(_("injecting NEW comment: ") +comment);[% END %]
21
			parent.opener.$('#newcomment').attr("class","yours");
22
			parent.opener.$('#newcomment').html(
23
                "<h5>" + _("Your comment (preview, pending approval)") + "<\/h5>" +
24
				"<p>"+comment+"<\/p>" +
25
                "<a href=\"#comment\" onclick=\"Dopop(\'/cgi-bin/koha/opac-review.pl?biblionumber=[% biblionumber |uri%]\');\">"+_("Edit")+"<\/a><\/p>"
26
			);
27
			parent.opener.$("#addcomment").prev("p").remove();
28
			parent.opener.$("#addcomment").remove();
29
		};
30
		[% IF ( clean_review ) %]
31
			var clean_review = "[% clean_review |replace("'", "\'") |replace('"', '\"') |replace('\n', '\\n') |replace('\r', '\\r') %]";		// TMPL var must not contain " quotes.
32
			[% IF ( reviewid ) %]
33
			inject_old(clean_review);
34
			[% ELSE %]
35
			inject_new(clean_review);
36
			[% END %]
37
		[% END %]
38
		[% IF ( WINDOW_CLOSE ) %]
39
			[% IF ( ERRORS ) %]
40
				setTimeout("window.close()",5000);	// flash this page, then close.  Change warning in template if you change this value.
41
			[% ELSE %]
42
				window.close();
43
			[% END %]
44
		[% END %]
45
	});
46
//]]>
47
</script>
48
</head>
49
<body id="comment">
50
<div id="custom-doc" class="yui-t7">
51
<div id="userreview" class="container">
52
[% IF ( cgi_debug ) %]<div class="debug">CGI debug is on.</div>[% END %]
53
[% IF ( ERRORS ) %]
54
    <div class="dialog alert">
55
	[% FOREACH ERROR IN ERRORS %]
56
		<p>
57
		[% IF ( ERROR.scrubbed ) %]Note: your comment contained illegal markup code.
58
			It has been saved with the markup removed, as below.
59
			You can edit the comment further, or cancel to retain the comment as is.
60
		[% END %]
61
		[% IF ( ERROR.scrubbed_all ) %]Error!  Your comment was entirely illegal markup code.  It has NOT been added.[% END %]
62
		[% IF ( ERROR.empty ) %]Error!  You cannot add an empty comment.  Please add content or cancel.[% END %]
63
		</p>
64
	[% END %]
65
	[% IF ( WINDOW_CLOSE ) %]Note: this window will close automatically in 5 seconds[% END %]
66
	</div>
67
[% END %]
68
<form id="reviewf" action="/cgi-bin/koha/opac-review.pl[% IF ( cgi_debug ) %]?debug=1[% END %]" method="post">
69
    <input type="hidden" name="biblionumber" value="[% biblionumber | html%]" />
70
    [% IF ( reviewid ) %]<input type="hidden" name="reviewid" value="[% reviewid | html%]" />[% END %]
71
	<fieldset class="brief">
72
	<legend>Comments on <i>[% title |html %] [% subtitle %]</i>[% IF ( author ) %]by [% author |html %][% END %]</legend>
73
            <ol><li><textarea id="review" name="review" cols="60" rows="8">[% review %]</textarea></li></ol>
74
		</fieldset>
75
    <p>Note: Your comment must be approved by a librarian. </p>
76
		<fieldset class="action"> <input type="submit" value="Submit and close this window" /> <a class="cancel close" href="#">Cancel</a></fieldset>
77
</form></div>
78
</div>
79
</body>
80
</html>
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-search-history.tt (-196 lines)
Lines 1-196 Link Here
1
[% USE Koha %]
2
[% USE KohaDates %]
3
[% INCLUDE 'doc-head-open.inc' %]
4
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Your search history
5
[% INCLUDE 'doc-head-close.inc' %]
6
[% INCLUDE 'datatables.inc' %]
7
<script type="text/javascript">
8
//<![CDATA[
9
var MSG_CONFIRM_DELETE_HISTORY = _("Are you sure you want to delete your search history?");
10
$(document).ready(function() {
11
    // We show table ordered by descending dates by default
12
    // (so that the more recent query is shown first)
13
    $(".historyt").dataTable($.extend(true, {}, dataTablesDefaults, {
14
        "aaSorting": [[ 0, "desc" ]],
15
        "aoColumns": [
16
            { "sType": "title-string" },
17
            null,
18
            null
19
        ]
20
    }));
21
22
    [% IF Koha.Preference( 'OpacAuthorities' ) == 1 %]$('#tabs').tabs();[% END %]
23
});
24
//]]>
25
26
</script>
27
</head>
28
<body id="opac-search-history">
29
[% IF ( OpacNav ) %]
30
<div id="doc3" class="yui-t1">
31
[% ELSIF ( loggedinusername ) %]
32
<div id="doc3" class="yui-t1">
33
[% ELSE %]
34
<div id="doc3" class="yui-t7">
35
[% END %]
36
   <div id="bd">
37
[% INCLUDE 'masthead.inc' %]
38
39
<div id="yui-main">
40
  <div class="yui-b">
41
    <div class="yui-g">
42
      <h1>Search history</h1>
43
      [% IF Koha.Preference( 'OpacAuthorities' ) == 1 %]
44
        <div id="tabs" class="toptabs">
45
          <ul>
46
            <li><a href="#biblio_tab">Catalog searches</a></li>
47
            <li><a href="#authority_tab">Authority searches</a></li>
48
          </ul>
49
      [% END %]
50
        <div id="biblio_tab">
51
          [% IF ( current_biblio_searches ) %]
52
            <h2>Current session</h2>
53
            <form action="/cgi-bin/koha/opac-search-history.pl" method="get">
54
              <input type="hidden" name="action" value="delete" />
55
              <input type="hidden" name="previous" value="0" />
56
              <input type="hidden" name="type" value="biblio" />
57
              <input type="submit" class="deleteshelf" value="Delete your current catalog history" onclick="return confirm(MSG_CONFIRM_DELETE_HISTORY);" />
58
            </form>
59
            <table class="historyt">
60
              <thead>
61
                <tr>
62
                  <th>Date</th>
63
                  <th>Search</th>
64
                  <th>Results</th>
65
                </tr>
66
              </thead>
67
              <tbody>
68
              [% FOREACH s IN current_biblio_searches %]
69
                <tr>
70
                  <td><span title="[% s.time %]">[% s.time |$KohaDates with_hours => 1 %]</span></td>
71
                  <td><a href="/cgi-bin/koha/opac-search.pl?[% s.query_cgi |html %]">[% s.query_desc |html %]</a></td>
72
                  <td>[% s.total %]</td>
73
                </tr>
74
              [% END %]
75
              </tbody>
76
            </table>
77
          [% END %]
78
79
          [% IF ( previous_biblio_searches ) %]
80
            <h2>Previous sessions</h2>
81
            <form action="/cgi-bin/koha/opac-search-history.pl" method="get">
82
              <input type="hidden" name="action" value="delete" />
83
              <input type="hidden" name="previous" value="1" />
84
              <input type="hidden" name="type" value="biblio" />
85
              <input type="submit" class="deleteshelf" value="Delete your previous catalog search history" onclick="return confirm(MSG_CONFIRM_DELETE_HISTORY);" />
86
            </form>
87
            <table class="historyt">
88
              <thead>
89
                <tr>
90
                  <th>Date</th>
91
                  <th>Search</th>
92
                  <th>Results</th>
93
                </tr>
94
              </thead>
95
              <tbody>
96
              [% FOREACH s IN previous_biblio_searches %]
97
                <tr>
98
                  <td><span title="[% s.time %]">[% s.time |$KohaDates with_hours => 1 %]</span></td>
99
                  <td><a href="/cgi-bin/koha/opac-search.pl?[% s.query_cgi |html %]">[% s.query_desc |html %]</a></td>
100
                  <td>[% s.total %]</td>
101
                </tr>
102
              [% END %]
103
              </tbody>
104
            </table>
105
          [% END %]
106
107
          [% IF !current_biblio_searches && !previous_biblio_searches %]
108
            <p>Your catalog search history is empty.</p>
109
          [% END %]
110
        </div>
111
112
113
      [% IF Koha.Preference( 'OpacAuthorities' ) == 1 %]
114
        <div id="authority_tab">
115
          [% IF ( current_authority_searches ) %]
116
            <h2>Current session</h2>
117
            <form action="/cgi-bin/koha/opac-search-history.pl" method="get">
118
              <input type="hidden" name="action" value="delete" />
119
              <input type="hidden" name="previous" value="0" />
120
              <input type="hidden" name="type" value="authority" />
121
              <input type="submit" class="deleteshelf" value="Delete your current authority search history" onclick="return confirm(MSG_CONFIRM_DELETE_HISTORY);" />
122
            </form>
123
            <table class="historyt">
124
              <thead>
125
                <tr>
126
                  <th>Date</th>
127
                  <th>Search</th>
128
                  <th>Results</th>
129
                </tr>
130
              </thead>
131
              <tbody>
132
              [% FOREACH s IN current_authority_searches %]
133
                <tr>
134
                  <td><span title="[% s.time %]">[% s.time %]</span></td>
135
                  <td><a href="/cgi-bin/koha/opac-authorities-home.pl?[% s.query_cgi |html %]">[% s.query_desc |html %]</a></td>
136
                  <td>[% s.total %]</td>
137
                </tr>
138
              [% END %]
139
              </tbody>
140
            </table>
141
          [% END %]
142
143
          [% IF ( previous_authority_searches ) %]
144
            <h2>Previous sessions</h2>
145
            <form action="/cgi-bin/koha/opac-search-history.pl" method="get">
146
              <input type="hidden" name="action" value="delete" />
147
              <input type="hidden" name="previous" value="1" />
148
              <input type="hidden" name="type" value="authority" />
149
              <input type="submit" class="deleteshelf" value="Delete your previous authority search history" onclick="return confirm(MSG_CONFIRM_DELETE_HISTORY);" />
150
            </form>
151
            <table class="historyt">
152
              <thead>
153
                <tr>
154
                  <th>Date</th>
155
                  <th>Search</th>
156
                  <th>Results</th>
157
                </tr>
158
              </thead>
159
              <tbody>
160
              [% FOREACH s IN previous_authority_searches %]
161
                <tr>
162
                  <td><span title="[% s.time %]">[% s.time |$KohaDates with_hours => 1 %]</span></td>
163
                  <td><a href="/cgi-bin/koha/opac-authorities-home.pl?[% s.query_cgi |html %]">[% s.query_desc |html %]</a></td>
164
                  <td>[% s.total %]</td>
165
                </tr>
166
              [% END %]
167
              </tbody>
168
            </table>
169
          [% END %]
170
171
          [% IF !current_authority_searches && !previous_authority_searches %]
172
            <p>Your authority search history is empty.</p>
173
          [% END %]
174
        </div>
175
      </div>
176
        [% END %]
177
    </div>
178
  </div>
179
</div>
180
181
[% IF ( OpacNav ) %]
182
  <div class="yui-b">
183
    <div id="leftmenus" class="container">
184
      [% INCLUDE 'navigation.inc' IsPatronPage=1 %]
185
    </div>
186
  </div>
187
[% ELSIF ( loggedinusername ) %]
188
  <div class="yui-b">
189
    <div id="leftmenus" class="container">
190
      [% INCLUDE 'navigation.inc' IsPatronPage=1 %]
191
    </div>
192
  </div>
193
[% END %]
194
195
</div>
196
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-sendbasket.tt (-158 lines)
Lines 1-158 Link Here
1
<SUBJECT>
2
Your cart
3
<END_SUBJECT>
4
5
[% USE HtmlToText %]
6
[% myhtml FILTER html2text(leftmargin => 0, rightmargin => 0) %]
7
[% myhtmltext | html2text %]
8
9
<HEADER>
10
11
[% FILTER html2text %]
12
    <p>Hi,</p>
13
14
    <p>[% firstname %] [% surname %] sent you a cart from our online catalog.</p>
15
16
    <p>Please note that the attached file is a MARC bibliographic records file
17
    which can be imported into personal bibliographic software like EndNote,
18
    Reference Manager or ProCite.</p>
19
    <hr/>
20
[% END %]
21
<END_HEADER>
22
23
<MESSAGE>
24
[% FILTER html2text %]
25
26
    [% IF comment %]
27
        <p>[% comment %]</p>
28
        <hr/>
29
    [% END %]
30
    <ol>
31
    [% FOREACH BIBLIO_RESULT IN BIBLIO_RESULTS %]
32
        <li>
33
            <span>
34
                [% BIBLIO_RESULT.title %]
35
                [% IF ( BIBLIO_RESULT.subtitle ) %] [% BIBLIO_RESULT.subtitle %][% END %]
36
            </span>
37
38
            <p>
39
            [% IF ( BIBLIO_RESULT.HASAUTHORS ) %]
40
            <span>Author(s): [% IF ( BIBLIO_RESULT.author ) %][% BIBLIO_RESULT.author %][% END %]
41
42
            [% IF ( BIBLIO_RESULT.MARCAUTHORS ) %]
43
                [% IF ( BIBLIO_RESULT.author ) %]; [% END %]
44
                [% FOREACH MARCAUTHOR IN BIBLIO_RESULT.MARCAUTHORS %]
45
                    [% FOREACH MARCAUTHOR_SUBFIELDS_LOO IN MARCAUTHOR.MARCAUTHOR_SUBFIELDS_LOOP %]
46
                        [% MARCAUTHOR_SUBFIELDS_LOO.separator %][% MARCAUTHOR_SUBFIELDS_LOO.value %]
47
                    [% END %]
48
                    [% UNLESS ( loop.last ) %];[% END %]
49
                [% END %]
50
            [% END %]
51
            </span><br/>
52
            [% END %]
53
54
            [% IF ( BIBLIO_RESULT.ISBN ) %]
55
            <span>
56
                ISBN: [% BIBLIO_RESULT.ISBN %]
57
            </span><br/>
58
            [% END %]
59
60
            [% IF BIBLIO_RESULT.publishercode %]
61
            <span>
62
                Published by: [% BIBLIO_RESULT.publishercode %]
63
                [% IF ( BIBLIO_RESULT.publicationyear ) %]
64
                    in [% BIBLIO_RESULT.publicationyear %]
65
                [% END %]
66
                [% IF ( BIBLIO_RESULT.pages ) %]
67
                    , [% BIBLIO_RESULT.pages %]
68
                [% END %]
69
                [% IF BIBLIO_RESULT.size %]
70
                , [% BIBLIO_RESULT.size %]
71
                [% END %]
72
            </span><br/>
73
            [% END %]
74
75
            [% IF BIBLIO_RESULT.collection %]
76
            <span>
77
                Collection: [% BIBLIO_RESULT.seriestitle %]
78
            </span><br/>
79
            [% END %]
80
81
            [% IF ( BIBLIO_RESULT.subject ) %]
82
            <span>
83
                Subject: [% BIBLIO_RESULT.subject %]
84
            <span><br/>
85
            [% END %]
86
87
            [% IF ( BIBLIO_RESULT.copyrightdate ) %]
88
            <span>
89
                Copyright year: [% BIBLIO_RESULT.copyrightdate %]
90
            </span><br/>
91
            [% END %]
92
93
            [% IF ( BIBLIO_RESULT.notes ) %]
94
            <span>
95
                Notes : [% BIBLIO_RESULT.notes %]
96
            </span><br/>
97
            [% END %]
98
99
            [% IF ( BIBLIO_RESULT.unititle ) %]
100
            <span>
101
                Unified title: [% BIBLIO_RESULT.unititle %]
102
            </span><br/>
103
            [% END %]
104
105
            [% IF ( BIBLIO_RESULT.serial ) %]
106
            <span>
107
                Serial: [% BIBLIO_RESULT.serial %]
108
            </span><br/>
109
            [% END %]
110
111
            [% IF ( BIBLIO_RESULT.dewey ) %]
112
            <span>
113
                Dewey: [% BIBLIO_RESULT.dewey %]
114
            </span><br/>
115
            [% END %]
116
117
            [% IF ( BIBLIO_RESULT.classification ) %]
118
            <span>
119
                Classification: [% BIBLIO_RESULT.classification %]
120
            </span><br/>
121
            [% END %]
122
123
            [% IF ( BIBLIO_RESULT.lccn ) %]
124
            <span>
125
                LCCN: [% BIBLIO_RESULT.lccn %]
126
            </span><br/>
127
            [% END %]
128
            [% IF ( BIBLIO_RESULT.url ) %]
129
            <span>
130
                URL: [% BIBLIO_RESULT.url |url %]
131
            </span>
132
            [% END %]
133
            </p>
134
135
            [% IF ( OPACBaseURL ) %]
136
            <p>
137
                In online catalog: [% OPACBaseURL %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% BIBLIO_RESULT.biblionumber %]
138
            </p>
139
            [% END %]
140
            [% IF ( BIBLIO_RESULT.ITEM_RESULTS.size ) %]
141
            <p>Items:
142
            <ul>
143
                [% FOREACH ITEM_RESULT IN BIBLIO_RESULT.ITEM_RESULTS %]<li>
144
                    [% ITEM_RESULT.branchname %]
145
                    [% ITEM_RESULT.location %]
146
                    [% IF ITEM_RESULT.itemcallnumber %]([% ITEM_RESULT.itemcallnumber %])[% END %]
147
                    [% ITEM_RESULT.barcode %]
148
                </li>[% END %]
149
            </ul>
150
            </p>
151
            [% END %]
152
            <hr/>
153
        </li>
154
    [% END %]
155
    </ol>
156
157
[% END %]
158
<END_MESSAGE>
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-sendbasketform.tt (-38 lines)
Lines 1-38 Link Here
1
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo;  Sending your cart
2
[% INCLUDE 'doc-head-close.inc' %]
3
</head>
4
<body id="sendbasket" class="popup">
5
<div id="usersendbasket" class="container">[% IF ( email_add ) %]
6
7
	[% IF ( SENT ) %]
8
        <h3>Message sent</h3>
9
        <p>The cart was sent to: [% email_add %]</p>
10
		<p><a class="focus close" href="#">Close window</a></p>
11
	[% END %]
12
	[% IF ( error ) %]
13
	<p>Problem sending the cart...</p>
14
	[% END %]
15
	
16
[% ELSE %]
17
18
<form action="[% url %]" method="post" id="sendbasketform">
19
20
<fieldset class="rows"> 
21
<legend>Sending your cart</legend>
22
<ol>   <li>
23
        <label for="email_add">Email address:</label>
24
        <input type="text" id="email_add" name="email_add" size="43" class="focus" />
25
    </li>
26
    <li>
27
            <label for="comment">Comment:</label>
28
            <textarea id="comment" name="comment" rows="4" cols="40"></textarea>
29
    </li>
30
    <li>
31
        <input type="hidden" name="bib_list" value="[% bib_list %]" />
32
    </li></ol></fieldset>
33
       <fieldset class="action"> <input type="submit" value="Send" /> <a class="cancel close" href="#">Cancel</a> </fieldset>
34
</form>
35
36
[% END %]</div>
37
</body>
38
</html>
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-sendshelf.tt (-167 lines)
Lines 1-167 Link Here
1
<SUBJECT>
2
Your list : [% shelfname %]
3
<END_SUBJECT>
4
5
[% USE HtmlToText %]
6
[% myhtml FILTER html2text(leftmargin => 0, rightmargin => 0) %]
7
[% myhtmltext | html2text %]
8
9
<HEADER>
10
[% FILTER html2text %]
11
    <p>Hi,</p>
12
13
    <p>[% firstname %] [% surname %] sent you from our online catalog, the
14
    virtual shelf called : [% shelfname %].</p>
15
16
    <p>Please note that the attached file is a MARC bibliographic records file
17
    which can be imported into personal bibliographic software like EndNote,
18
    Reference Manager or ProCite.</p>
19
    <hr/>
20
[% END %]
21
22
<END_HEADER>
23
24
<MESSAGE>
25
[% FILTER html2text %]
26
27
    [% IF comment %]
28
        <p>[% comment %]</p>
29
        <hr/>
30
    [% END %]
31
    <ol>
32
    [% FOREACH BIBLIO_RESULT IN BIBLIO_RESULTS %]
33
        <li>
34
            <span>
35
                [% BIBLIO_RESULT.title %]
36
                [% IF ( BIBLIO_RESULT.subtitle.size ) %]
37
                  [% FOREACH subtitle IN BIBLIO_RESULT.subtitle %]
38
                    [% subtitle.subfield %]
39
                  [% END %]
40
                [% END %]
41
            </span>
42
43
            <p>
44
            [% IF ( BIBLIO_RESULT.HASAUTHORS ) %]
45
            <span>Author(s): [% IF ( BIBLIO_RESULT.author ) %][% BIBLIO_RESULT.author %][% END %]
46
47
            [% IF ( BIBLIO_RESULT.MARCAUTHORS ) %]
48
                [% IF ( BIBLIO_RESULT.author ) %]; [% END %]
49
                [% FOREACH MARCAUTHOR IN BIBLIO_RESULT.MARCAUTHORS %]
50
                    [% FOREACH MARCAUTHOR_SUBFIELDS_LOO IN MARCAUTHOR.MARCAUTHOR_SUBFIELDS_LOOP %]
51
                        [% MARCAUTHOR_SUBFIELDS_LOO.separator %][% MARCAUTHOR_SUBFIELDS_LOO.value %]
52
                    [% END %]
53
                    [% UNLESS ( loop.last ) %];[% END %]
54
                [% END %]
55
            [% END %]
56
            </span><br/>
57
            [% END %]
58
59
            [% IF ( BIBLIO_RESULT.ISBN && BIBLIO_RESULT.size > 0 ) %]
60
            <span>
61
                ISBN: [% FOREACH isbn IN BIBLIO_RESULT.ISBN %]
62
                          [% isbn %]
63
                          [% UNLESS ( loop.last ) %]; [% END %]
64
                      [% END %]
65
            </span><br/>
66
            [% END %]
67
68
            [% IF BIBLIO_RESULT.publishercode %]
69
            <span>
70
                Published by: [% BIBLIO_RESULT.publishercode %]
71
                [% IF ( BIBLIO_RESULT.publicationyear ) %]
72
                    in [% BIBLIO_RESULT.publicationyear %]
73
                [% END %]
74
                [% IF ( BIBLIO_RESULT.pages ) %]
75
                    , [% BIBLIO_RESULT.pages %]
76
                [% END %]
77
                [% IF BIBLIO_RESULT.size %]
78
                , [% BIBLIO_RESULT.size %]
79
                [% END %]
80
            </span><br/>
81
            [% END %]
82
83
            [% IF BIBLIO_RESULT.collection %]
84
            <span>
85
                Collection: [% BIBLIO_RESULT.seriestitle %]
86
            </span><br/>
87
            [% END %]
88
89
            [% IF ( BIBLIO_RESULT.subject ) %]
90
            <span>
91
                Subject: [% BIBLIO_RESULT.subject %]
92
            <span><br/>
93
            [% END %]
94
95
            [% IF ( BIBLIO_RESULT.copyrightdate ) %]
96
            <span>
97
                Copyright year: [% BIBLIO_RESULT.copyrightdate %]
98
            </span><br/>
99
            [% END %]
100
101
            [% IF ( BIBLIO_RESULT.notes ) %]
102
            <span>
103
                Notes : [% BIBLIO_RESULT.notes %]
104
            </span><br/>
105
            [% END %]
106
107
            [% IF ( BIBLIO_RESULT.unititle ) %]
108
            <span>
109
                Unified title: [% BIBLIO_RESULT.unititle %]
110
            </span><br/>
111
            [% END %]
112
113
            [% IF ( BIBLIO_RESULT.serial ) %]
114
            <span>
115
                Serial: [% BIBLIO_RESULT.serial %]
116
            </span><br/>
117
            [% END %]
118
119
            [% IF ( BIBLIO_RESULT.dewey ) %]
120
            <span>
121
                Dewey: [% BIBLIO_RESULT.dewey %]
122
            </span><br/>
123
            [% END %]
124
125
            [% IF ( BIBLIO_RESULT.classification ) %]
126
            <span>
127
                Classification: [% BIBLIO_RESULT.classification %]
128
            </span><br/>
129
            [% END %]
130
131
            [% IF ( BIBLIO_RESULT.lccn ) %]
132
            <span>
133
                LCCN: [% BIBLIO_RESULT.lccn %]
134
            </span><br/>
135
            [% END %]
136
            [% IF ( BIBLIO_RESULT.url ) %]
137
            <span>
138
                URL: [% BIBLIO_RESULT.url |url %]
139
            </span>
140
            [% END %]
141
            </p>
142
143
            [% IF ( OPACBaseURL ) %]
144
            <p>
145
                In online catalog: [% OPACBaseURL %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% BIBLIO_RESULT.biblionumber %]
146
            </p>
147
            [% END %]
148
            [% IF ( BIBLIO_RESULT.ITEM_RESULTS.size ) %]
149
            <p>Items:
150
            <ul>
151
                [% FOREACH ITEM_RESULT IN BIBLIO_RESULT.ITEM_RESULTS %]<li>
152
                    [% ITEM_RESULT.branchname %]
153
                    [% ITEM_RESULT.location %]
154
                    [% IF ITEM_RESULT.itemcallnumber %]([% ITEM_RESULT.itemcallnumber %])[% END %]
155
                    [% ITEM_RESULT.barcode %]
156
                </li>[% END %]
157
            </ul>
158
            </p>
159
            [% END %]
160
            <hr/>
161
        </li>
162
    [% END %]
163
    </ol>
164
165
[% END %]
166
167
<END_MESSAGE>
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-sendshelfform.tt (-49 lines)
Lines 1-49 Link Here
1
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo;  Sending your list
2
[% INCLUDE 'doc-head-close.inc' %]
3
<script type="text/javascript">//<![CDATA[
4
	$(document).ready(function(){
5
		$(".close").html(_("Close this window"));
6
	});
7
//]]>
8
</script>
9
</head>
10
<body id="sendshelf" class="popup">
11
<div id="usersendshelfform" class="container">[% IF ( email ) %]
12
13
    [% IF ( SENT ) %]
14
        <h3>Message sent</h3>
15
        <p>The list was sent to: [% email %]</p>
16
        <p><a class="focus close" href="/cgi-bin/koha/opac-shelves.pl">Back to lists</a></p>
17
    [% END %]
18
    [% IF ( error ) %]
19
    <p>Problem sending the list...</p>
20
    [% END %]
21
    
22
[% ELSE %]
23
    [% IF ( invalidlist ) %]
24
        <div class="dialog alert">
25
        <p>You do not have permission to send this list.</p>
26
        </div>
27
        <p><a class="button close" href="/cgi-bin/koha/opac-shelves.pl">Back to lists</a></p>
28
    [% ELSE %]
29
        <form action="[% url %]" method="post" id="sendshelfform">
30
31
        <fieldset class="rows">
32
        <legend>Sending your list</legend>
33
        <ol>   <li>
34
                <label for="email">Email address:</label>
35
                <input type="text" id="email" name="email" size="43" class="focus" />
36
            </li>
37
            <li>
38
                    <label for="comment">Comment:</label>
39
                    <textarea id="comment" name="comment" rows="4" cols="40"></textarea>
40
            </li>
41
            <li>
42
                <input type="hidden" name="shelfid" value="[% shelfid %]" />
43
            </li></ol></fieldset>
44
               <fieldset class="action"> <input type="submit" value="Send" /> <a class="cancel close" href="#">Cancel</a> </fieldset>
45
        </form>
46
    [% END %]
47
[% END %]</div>
48
</body>
49
</html>
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-serial-issues.tt (-146 lines)
Lines 1-146 Link Here
1
[% USE Koha %]
2
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo;  Serials
3
[% INCLUDE 'doc-head-close.inc' %]
4
</head>
5
<body id="opac-serial-issues">
6
[% IF ( OpacNav ) %]<div id="doc3" class="yui-t1">[% ELSE %]<div id="doc3" class="yui-t7">[% END %]
7
   <div id="bd">
8
[% INCLUDE 'masthead.inc' %]
9
10
	<div id="yui-main">
11
	<div class="yui-b"><div class="yui-g">
12
13
<div id="userserialissues" class="container">
14
<h2>Issues for a subscription</h2>
15
<div id="views">
16
    <span class="view"><a id="Normalview" href="opac-detail.pl?biblionumber=[% biblionumber | html %]" class="button">Normal view</a></span>
17
		<span class="view"><span id="Briefhistory">Brief history</span></span>
18
    <span class="view"><a id="Fullhistory" href="opac-serial-issues.pl?selectview=full&amp;biblionumber=[% biblionumber | html%]" class="button">Full history</a></span>
19
</div>
20
<form method="post" name="f">
21
[% FOREACH subscription_LOO IN subscription_LOOP %]
22
<div id="subscriptionline[% subscription_LOO.subscriptionid %]" style="border-bottom:1px solid #EEE;">
23
<h3>Subscription information for [% subscription_LOO.bibliotitle %]</h3>
24
            <p>The current subscription began on [% subscription_LOO.startdate %] and is issued
25
		[% IF ( subscription_LOO.periodicity1 ) %]
26
                               twice per day
27
		[% END %]
28
		[% IF ( subscription_LOO.periodicity2 ) %]
29
                         every day
30
		[% END %]
31
		[% IF ( subscription_LOO.periodicity3 ) %]
32
                             three times per week
33
		[% END %]
34
		[% IF ( subscription_LOO.periodicity4 ) %]
35
                          every week
36
		[% END %]
37
		[% IF ( subscription_LOO.periodicity5 ) %]
38
                            every 2 weeks
39
		[% END %]
40
		[% IF ( subscription_LOO.periodicity6 ) %]
41
                         every 3 weeks
42
		[% END %]
43
		[% IF ( subscription_LOO.periodicity7 ) %]
44
                         every month
45
		[% END %]
46
		[% IF ( subscription_LOO.periodicity8 ) %]
47
                           every 2 months
48
		[% END %]
49
		[% IF ( subscription_LOO.periodicity9 ) %]
50
                                every quarter
51
		[% END %]
52
		[% IF ( subscription_LOO.periodicity10 ) %]
53
                                twice per year
54
		[% END %]
55
		[% IF ( subscription_LOO.periodicity11 ) %]
56
                               every year
57
             [% END %]
58
              [% IF ( subscription_LOO.periodicity12 ) %]
59
                            every 2 years
60
          [% END %]
61
              [% IF ( subscription_LOO.periodicity13 ) %]
62
                            irregularly
63
		[% END %]
64
		[% IF ( subscription_LOO.arrival1 ) %]
65
			on Monday
66
		[% END %]
67
		[% IF ( subscription_LOO.arrival2 ) %]
68
				on Tuesday
69
		[% END %]
70
		[% IF ( subscription_LOO.arrival3 ) %]
71
				on Wednesday
72
		[% END %]
73
		[% IF ( subscription_LOO.arrival4 ) %]
74
				on Thursday
75
		[% END %]
76
		[% IF ( subscription_LOO.arrival5 ) %]
77
				on Friday
78
		[% END %]
79
		[% IF ( subscription_LOO.arrival6 ) %]
80
				on Saturday
81
		[% END %]
82
		[% IF ( subscription_LOO.arrival7 ) %]
83
				on Sunday
84
		[% END %]
85
		
86
		for 
87
			[% IF ( subscription_LOO.numberlength ) %][% subscription_LOO.numberlength %] issues[% END %]
88
			[% IF ( subscription_LOO.weeklength ) %][% subscription_LOO.weeklength %] weeks[% END %]
89
			[% IF ( subscription_LOO.monthlength ) %][% subscription_LOO.monthlength %] months[% END %]
90
			
91
		<p>The first subscription was started on  [% subscription_LOO.histstartdate %]</p>
92
		[% IF ( subscription_LOO.histenddate ) %]
93
            <p>The subscription expired on [% subscription_LOO.histenddate %]</p>
94
        [% END %]
95
		</p>
96
    <h4>[% subscription_LOO.branchname %]</h4>
97
    [% IF ( subscription_LOO.notes ) %]
98
        <p>[% subscription_LOO.notes FILTER html_line_break %]</p>
99
    [% END %]
100
  [% IF ( subscription_LOO.recievedlist ) %]
101
    <h5>Available issues</h5>
102
    <p>
103
      [% subscription_LOO.recievedlist %]
104
    </p>
105
  [% END %]
106
  [% IF ( subscription_LOO.missinglist ) %]
107
    <h5>Unavailable issues</h5>
108
    <p>
109
      [% subscription_LOO.missinglist %]
110
    </p>
111
  [% END %]
112
    [% IF ( subscription_LOO.opacnote ) %]
113
        <h5>Issues summary</h5>
114
        <p>
115
            [% subscription_LOO.opacnote FILTER html_line_break %]
116
        </p>
117
    [% END %]
118
    [% IF ( subscription_LOO.letter ) %]
119
        [% IF ( loggedinusername ) %]
120
            [% IF ( subscription_LOO.hasalert ) %]
121
                You have subscribed to email notification on new issues <a href="opac-alert-subscribe.pl?op=cancel&amp;externalid=[% subscription_LOO.subscriptionid %]&amp;alerttype=issue&amp;biblionumber=[% subscription_LOO.biblionumber %]" class="button" title="Cancel email notification">
122
                    Cancel email notification
123
                </a>
124
            [% ELSE %]
125
                <a href="opac-alert-subscribe.pl?externalid=[% subscription_LOO.subscriptionid %]&amp;alerttype=issue&amp;biblionumber=[% subscription_LOO.biblionumber %]" class="button" title="Subscribe to email notification on new issues">
126
                    Subscribe to email notification on new issues
127
                </a>
128
            [% END %]
129
        [% ELSE %]
130
            You must log in if you want to subscribe to email notification on new issues
131
        [% END %]
132
    [% END %]
133
</div>
134
[% END %]
135
</div>
136
</div>
137
</div>
138
</div>
139
			[% IF ( OpacNav ) %]
140
			<div class="yui-b">
141
			<div id="leftmenus" class="container">
142
			[% INCLUDE 'navigation.inc' %]
143
			</div>
144
			</div>[% END %]
145
</div>
146
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-shareshelf.tt (-74 lines)
Lines 1-74 Link Here
1
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Share a list
2
[% INCLUDE 'doc-head-close.inc' %]
3
</head>
4
<body id="opac-shareshelf">
5
<div id="doc3" class="yui-t1">
6
<div id="bd">
7
[% INCLUDE 'masthead.inc' %]
8
9
<div id="yui-main">
10
  <div class="yui-b"><div class="yui-g">
11
12
[%# This section contains the essential code for error messages and three operations: invite, confirm_invite and accept. %]
13
    <h1>Share a list with another patron</h1>
14
    [% IF errcode %]
15
        [% IF errcode==1 && op %]<div class="dialog alert">The operation [% op %] is not supported.</div>[% END %]
16
        [% IF errcode==1 && !op %]<div class="dialog alert">No operation parameter has been passed.</div>[% END %]
17
        [% IF errcode==2 %]<div class="dialog alert">Invalid shelf number.</div>[% END %]
18
        [% IF errcode==3 %]<div class="dialog alert">The feature of sharing lists is not in use in this library.</div>[% END %]
19
        [% IF errcode==4 %]<div class="dialog alert">You can only share a list if you are the owner.</div>[% END %]
20
        [% IF errcode==5 %]<div class="dialog alert">You cannot share a public list.</div>[% END %]
21
        [% IF errcode==6 %]<div class="dialog alert">Sorry, but you did not enter a valid email address.</div>[% END %]
22
        [% IF errcode==7 %]<div class="dialog alert">Sorry, but we could not accept this key. The invitation may have expired. Contact the patron who sent you the invitation.</div>[% END %]
23
        [% IF errcode==8 %]<div class="dialog alert">As owner of a list you cannot accept an invitation for sharing it.</div>[% END %]
24
        <p><a href="/cgi-bin/koha/opac-shelves.pl?display=privateshelves">Return to your lists</a></p>
25
26
    [% ELSIF op=='invite' %]
27
        <form method="post" onsubmit="return $('#invite_address').val().trim()!='';">
28
            <input type="hidden" name="op" value="conf_invite"/>
29
            <input type="hidden" name="shelfnumber" value="[% shelfnumber %]"/>
30
            <fieldset class="rows">
31
                <ol>
32
                    <li><span class="label">List name:</span> [% shelfname %]</li>
33
                    <li><label for="invite_address">Email address:</label> <input id="invite_address" name="invite_address"/></li>
34
                </ol>
35
            </fieldset>
36
37
            <fieldset class="action">
38
                <input type="submit" value="Send" />
39
                <a href="/cgi-bin/koha/opac-shelves.pl?display=privateshelves" class="cancel">Cancel</a>
40
            </fieldset>
41
        </form>
42
43
    [% ELSIF op=='conf_invite' %]
44
        [% IF approvedaddress %]
45
        <p>An invitation to share list <i>[% shelfname %]</i> has been sent to [% approvedaddress %].</p>
46
        [% END %]
47
        [% IF failaddress %]
48
            <p>Something went wrong while processing the following addresses. Please check them. These are: [% failaddress %]</p>
49
        [% END %]
50
        [% IF approvedaddress %]
51
        <p>You will receive an email notification if someone accepts your share within two weeks.</p>
52
        [% END %]
53
        <p><a href="/cgi-bin/koha/opac-shelves.pl?display=privateshelves">Return to your lists</a></p>
54
55
    [% ELSIF op=='accept' %]
56
        [%# Nothing to do: we already display an error or we redirect. %]
57
    [% END %]
58
[%# End of essential part %]
59
60
</div>
61
</div>
62
</div>
63
64
[% IF ( OpacNav ) %]
65
    <div class="yui-b">
66
        <div id="leftmenus" class="container">
67
            [% INCLUDE 'navigation.inc' IsPatronPage=1 %]
68
        </div>
69
    </div>
70
[% END %]
71
72
</div>
73
</div>
74
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-shelves.tt (-839 lines)
Lines 1-839 Link Here
1
[% USE Koha %]
2
[% SET TagsShowEnabled = ( TagsEnabled && TagsShowOnList ) %]
3
[% SET TagsInputEnabled = ( opacuserlogin && TagsEnabled && TagsInputOnList ) %]
4
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo;   [% IF ( viewshelf ) %]Contents of [% shelfname |html %][% ELSE %]Your lists[% END %][% INCLUDE 'doc-head-close.inc' %]
5
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.checkboxes.min.js"></script>
6
<script type="text/javascript">
7
//<![CDATA[
8
var MSG_REMOVE_FROM_LIST = _("Are you sure you want to remove these items from the list?");
9
var MSG_REMOVE_ONE_FROM_LIST = _("Are you sure you want to remove this item from the list?");
10
var MSG_CONFIRM_DELETE_LIST = _("Are you sure you want to delete this list?");
11
var MSG_CONFIRM_REMOVE_SHARE = _("Are you sure you want to remove this share?");
12
13
[% IF ( opacuserlogin ) %][% IF ( RequestOnOpac ) %]
14
function holdSelections() {
15
    var checkedBoxes = $("input:checkbox:checked");
16
    if ($(checkedBoxes).size() == 0) {
17
        alert(MSG_NO_RECORD_SELECTED);
18
    } else {
19
        var bibs = "";
20
        $(checkedBoxes).each(function(){
21
            var name = $(this).attr("name");
22
            bib = name.substr(4);
23
            bibs += bib + "/";
24
        });
25
        document.location = "/cgi-bin/koha/opac-reserve.pl?biblionumbers="+bibs;
26
    }
27
}
28
[% END %][% END %]
29
[% IF ( TagsInputEnabled && loggedinusername ) %]
30
function tagSelected() {
31
    var checkedBoxes = $("input:checkbox:checked");
32
    if ($(checkedBoxes).size()) {
33
        $("#tagsel_tag").hide();
34
        $(".tag_hides").hide();
35
        $("#tagsel_form").show();
36
    } else {
37
        alert(MSG_NO_RECORD_SELECTED);
38
    }
39
}
40
41
function tagCanceled() {
42
    $("#tagsel_form").hide();
43
    $("#tagsel_tag").show();
44
    $(".tag_hides").show();
45
    $("#tagsel_new").val("");
46
    $(".tagstatus").empty().hide();
47
}
48
49
function tagAdded() {
50
    var checkedBoxes = $("input:checkbox:checked");
51
    if (!$(checkedBoxes).size()) {
52
        alert(MSG_NO_RECORD_SELECTED);
53
        return false;
54
    }
55
56
    var tag = $("#tagsel_new").val();
57
    if (!tag || (tag == "")) {
58
        alert(MSG_NO_TAG_SPECIFIED);
59
        return false;
60
    }
61
62
    var bibs = [];
63
    for (var i = 0; i < $(checkedBoxes).size(); i++) {
64
        var box = $(checkedBoxes).get(i);
65
        bibs[i] = $(box).val();
66
    }
67
68
    KOHA.Tags.add_multitags_button(bibs, tag);
69
    return false;
70
}[% END %]
71
72
function enableCheckboxActions(){
73
    // Enable/disable controls if checkboxes are checked
74
    var checkedBoxes = $(".checkboxed input:checkbox:checked");
75
    if ($(checkedBoxes).size()) {
76
      $("#selections").html(_("With selected titles: "));
77
      $("#selections-toolbar .links a").removeClass("disabled");
78
    } else {
79
      $("#selections").html(_("Select titles to: "));
80
      $("#selections-toolbar .links a").addClass("disabled");
81
    }
82
}
83
84
$(function() {
85
    [% IF ( opacbookbag ) %]$(".addtocart").show();[% END %]
86
    $("span.clearall").html("<a id=\"CheckNone\" href=\"#\">"+_("Clear all")+"<\/a>");
87
    $("span.checkall").html("<a id=\"CheckAll\" href=\"#\">"+_("Select all")+"<\/a>");
88
  $("a.print").show();
89
90
    [% IF ( opacuserlogin ) %][% IF ( RequestOnOpac ) %]$("#placehold").html("<a href=\"#\" class=\"hold tag_hides disabled\">"+_("Place hold")+"<\/a>");
91
      $("#selections-toolbar a.hold").click(function(){
92
         holdSelections();
93
         return false;
94
      });[% END %][% END %]
95
96
    $("#CheckAll").click(function(){
97
        $(".checkboxed").checkCheckboxes();
98
        enableCheckboxActions();
99
        return false;
100
    });
101
    $("#CheckNone").click(function(){
102
        $(".checkboxed").unCheckCheckboxes();
103
        enableCheckboxActions();
104
        return false;
105
    });
106
107
    $(".cb").click(function(){
108
      enableCheckboxActions();
109
    });
110
    enableCheckboxActions();
111
112
[% IF ( TagsInputEnabled && loggedinusername ) %]
113
        $("#tagsel_tag").click(function(){
114
            tagSelected();
115
            return false;
116
        });
117
        $("#tagsel_cancel").click(function(){
118
            tagCanceled();
119
            return false;
120
        });
121
        $("#tagsel_button").click(function(){
122
            tagAdded();
123
            return false;
124
        });
125
126
        $(".tag_add").click(function(){
127
            var thisid = $(this).attr("id");
128
            thisid = thisid.replace("tag_add","");
129
            $(this).hide();
130
            $("#tagform"+thisid).show();
131
            $("#newtag"+thisid).focus();
132
            $("#newtag"+thisid+"_status").empty().hide();
133
            return false;
134
        });
135
        $(".cancel_tag_add").click(function(){
136
            var thisid = $(this).attr("id");
137
            thisid = thisid.replace("cancel","");
138
            $("#tagform"+thisid).hide();
139
            $("#tag_add"+thisid).show();
140
            $("#newtag"+thisid).val("");
141
            $("#newtag"+thisid+"_status").empty().hide();
142
            return false;
143
        });
144
        $(".tagbutton").click(function(){
145
          var thisid = $(this).attr("title");
146
          var tag = $("#newtag"+thisid).val();
147
          if (!tag || (tag == "")) {
148
              alert(MSG_NO_TAG_SPECIFIED);
149
              return false;
150
          }
151
          KOHA.Tags.add_tag_button(thisid, tag);
152
          return false;
153
        });
154
[% END %]
155
  [% IF ( loggedinusername && allowremovingitems ) %]
156
  var removeFromListLinks = $(".removefromlist");
157
  removeFromListLinks.show();
158
  // "remove from list" appearing on each line of the list output
159
  removeFromListLinks.on("click",function(){
160
      $(".checkboxed").unCheckCheckboxes();
161
      var listitem = $("input[name="+this.id+"]");
162
      listitem.prop("checked",true);
163
      $("#myform").submit();
164
  });
165
  $("#myform").submit(function(){
166
    var checkedBoxes = $(".checkboxed input:checkbox:checked");
167
    var numchecked = $(checkedBoxes).size();
168
    if (numchecked) {
169
        if( numchecked > 1 ){
170
            return confirmDelete(MSG_REMOVE_FROM_LIST);
171
        } else {
172
            return confirmDelete(MSG_REMOVE_ONE_FROM_LIST);
173
        }
174
    } else {
175
      alert(MSG_NO_RECORD_SELECTED);
176
      return false;
177
    }
178
  });
179
    $("#removeitems").html("<a href=\"#\" class=\"removeitems tag_hides disabled\">"+_("Remove from list")+"</a>")
180
    .click(function(){
181
      $("#myform").submit();
182
      return false;
183
    });
184
  [% END %]
185
    [% IF OpenLibraryCovers %]KOHA.OpenLibrary.GetCoverFromIsbn();[% END %]
186
    [% IF OPACLocalCoverImages %]KOHA.LocalCover.GetCoverFromBibnumber(false);[% END %]
187
  [% IF ( GoogleJackets ) %]KOHA.Google.GetCoverFromIsbn();[% END %]
188
});
189
      function Check(f) {
190
		var _alertString="";
191
		var alertString2;
192
193
	    if(f.addshelf.value.length ==0){
194
        _alertString += _("- You must enter a list name") + "\n";
195
		}
196
197
		if (_alertString.length==0) {
198
			f.submit();
199
		} else {
200
			alertString2 = _("Form not submitted because of the following problem(s)");
201
			alertString2 += "\n------------------------------------------------------------------------------------\n\n";
202
			alertString2 += _alertString;
203
			alert(alertString2);
204
		}
205
	}
206
207
$(document).ready(function() {
208
  $('#sort-submit').hide();
209
});
210
211
//]]>
212
</script>
213
</head>
214
[% IF ( loggedinusername ) %]<body id="opac-userlists">[% ELSE %]<body id="opac-lists">[% END %]
215
216
[% BLOCK list_permissions %]
217
    <li>
218
        <label for="allow_add">Permissions: </label>
219
        <select name="allow_add" id="allow_add">
220
            [% IF allow_add %]<option value="0">Do not allow</option>[% ELSE %]<option value="0" selected="selected">Do not allow</option>[% END %]
221
            [% IF allow_add %]<option value="1" selected="selected">Allow</option>[% ELSE %]<option value="1">Allow</option>[% END %]
222
        </select>
223
        &nbsp;<span>anyone else to add entries. (The owner of a list is always allowed to add entries, but needs permission to remove.)</span>
224
    </li>
225
    <li>
226
        <label>&nbsp;</label>
227
        <select name="allow_delete_own" id="allow_delete_own">
228
            [% IF allow_delete_own %]<option value="0">Do not allow</option>[% ELSE %]<option value="0" selected="selected">Do not allow</option>[% END %]
229
            [% IF allow_delete_own %]<option value="1" selected="selected">Allow</option>[% ELSE %]<option value="1">Allow</option>[% END %]
230
        </select>
231
        &nbsp;<span>anyone to remove his own contributed entries.</span>
232
    </li>
233
    <li>
234
        <label>&nbsp;</label>
235
        <select name="allow_delete_other" id="allow_delete_other">
236
            [% IF allow_delete_other %]<option value="0">Do not allow</option>[% ELSE %]<option value="0" selected="selected">Do not allow</option>[% END %]
237
            [% IF allow_delete_other %]<option value="1" selected="selected">Allow</option>[% ELSE %]<option value="1">Allow</option>[% END %]
238
        </select>
239
        &nbsp;<span>anyone to remove other contributed entries.</span>
240
    </li>
241
[% END %]
242
243
[%# When using the next block, add the parameter for shelfnumber and add a tag to end the form %]
244
[% BLOCK remove_share %]
245
    <form action="opac-shelves.pl" method="post">
246
        <input type="hidden" name="shelves" value="1" />
247
        <input type="hidden" name="display" value="privateshelves" />
248
        <input type="hidden" name="shelfoff" value="[% shelfoff %]" />
249
        <input type="submit" class="removeshare" onclick="return confirmDelete(MSG_CONFIRM_REMOVE_SHARE);" value="Remove share" />
250
[% END %]
251
252
[% IF ( OpacNav ) %]<div id="doc3" class="yui-t1">[% ELSIF ( loggedinusername ) %]<div id="doc3" class="yui-t1">[% ELSE %]<div id="doc3" class="yui-t7">[% END %]
253
    <div id="bd">
254
      [% INCLUDE 'masthead.inc' %]
255
      <div id="yui-main">
256
        <div class="yui-b">
257
          <div id="usershelves" class="container">
258
          
259
            [% IF ( paramsloop ) %]
260
              [% FOREACH paramsloo IN paramsloop %]
261
                <div class="yui-ge">
262
                  <div class="yui-u first">
263
                    [% IF ( paramsloo.already ) %]<div class="dialog alert">A list named <b>[% paramsloo.already %]</b> already exists!</div>[% END %]
264
                    [% IF ( paramsloo.addshelf_failed ) %]<div class="dialog alert">List could not be created. [% IF loggedinuser==0 %](Do not use the database administrator account.)[% END %]</div>[% END %]
265
                    [% IF ( paramsloo.status ) %]<div class="dialog alert">[% paramsloo.string %]</div>[% END %]
266
                    [% IF ( paramsloo.nobarcode ) %]<div class="dialog alert">ERROR: No barcode given.</div>[% END %]
267
                    [% IF ( paramsloo.noshelfnumber ) %]<div class="dialog alert">ERROR: No shelfnumber given.</div>[% END %]
268
                    [% IF ( paramsloo.need_confirm ) %]
269
                      <div class="dialog alert">
270
                        The list <i>[% paramsloo.need_confirm %]</i> is not empty.
271
                        <br />It has <b>[% paramsloo.count %]</b> [% IF ( paramsloo.single ) %]entry[% ELSE %]entries[% END %].
272
                        <br />Use the "Confirm" button below to confirm deletion.
273
                     </div>
274
                    [% END %]
275
                    [% IF ( paramsloo.nopermission ) %]
276
                      <div class="dialog alert">ERROR: You do not have adequate permission for that action on list [% paramsloo.nopermission |html%].</div>
277
                    [% END %]
278
                    [% IF ( paramsloo.failgetitem ) %]
279
                      <div class="dialog alert">ERROR: No item found with barcode [% paramsloo.failgetitem %].</div>
280
                    [% END %]
281
                    [% IF ( paramsloo.duplicatebiblio ) %]
282
                      <div class="dialog alert">A record matching barcode <b>[% paramsloo.duplicatebiblio %]</b> has already been added.</div>
283
                    [% END %]
284
                    [% IF ( paramsloo.delete_ok ) %]
285
                      <div class="dialog message">List [% paramsloo.delete_ok %] Deleted.</div>
286
                    [% END %]
287
                    [% IF ( paramsloo.delete_fail ) %]
288
                      <div class="dialog message">ERROR: Database error. Delete (list number [% paramsloo.delete_fail %]) failed.</div>
289
                    [% END %]
290
                    [% IF ( paramsloo.unrecognized ) %]
291
                      <div class="dialog message">ERROR: List number [% paramsloo.unrecognized %] unrecognized.</div>
292
                    [% END %]
293
                    [% IF ( paramsloo.modifyfailure) %]
294
                      <div class="dialog message">ERROR: Shelf could not be renamed to [% paramsloo.modifyfailure %]. This name may not be unique for this type of list. Please check.</div>
295
                    [% END %]
296
                    [% IF ( paramsloo.nothingdeleted) %]
297
                      <div class="dialog message">Warning: You could not delete any selected items from this shelf.</div>
298
                    [% END %]
299
                    [% IF ( paramsloo.somedeleted) %]
300
                      <div class="dialog message">Warning: You could not delete all selected items from this shelf.</div>
301
                    [% END %]
302
                  </div>
303
                </div>
304
              [% END %]<!-- /paramsloop -->
305
            [% END %] <!-- /paramsloop -->
306
307
            <div class="yui-g">
308
309
            [% IF ( viewshelf ) %]<!--  Viewing a particular shelf -->
310
              <h3><a href="/cgi-bin/koha/opac-shelves.pl">Lists</a> &#8674; <em>[% shelfname |html %]</em></h3>
311
              [% IF ( itemsloop ) %]
312
                  <div id="toolbar" class="list-actions">
313
314
                      <a href="/cgi-bin/koha/opac-downloadshelf.pl?shelfid=[% shelfnumber %]" class="download" onclick="open(CGIBIN+'opac-downloadshelf.pl?shelfid=[% shelfnumber %]','win_form','scrollbars=no,resizable=no,height=300,width=450,top=50,left=100'); return false;">Download list</a>
315
316
[% IF ( opacuserlogin ) %]<span class="sendlist"><a href="/cgi-bin/koha/opac-sendshelf.pl?shelfid=[% shelfnumber %]" class="send" onclick="open(CGIBIN+'opac-sendshelf.pl?shelfid=[% shelfnumber %]','win_form','scrollbars=no,resizable=no,height=300,width=450,top=50,left=100'); return false; ">Send list</a></span>[% END %]
317
318
<a class="print" href="opac-shelves.pl" onclick="print(); return false;">Print list</a>
319
320
<form action="/cgi-bin/koha/opac-shelves.pl" id="sorting-form">
321
    <input type="hidden" name="viewshelf" value="[% shelfnumber %]" />
322
323
    <label for="sort">Sort by: </label>
324
    <select name="sort" onchange="$('#sorting-form').submit()">
325
        <option value="">Default sorting</option>
326
327
        [% IF sort == 'author' %]
328
            <option value="author" selected="selected">Author</option>
329
        [% ELSE %]
330
            <option value="author">Author</option>
331
        [% END %]
332
333
        [% IF sort == 'title' %]
334
            <option value="title" selected="selected">Title</option>
335
        [% ELSE %]
336
            <option value="title">Title</option>
337
        [% END %]
338
339
        [% IF sort == 'itemcallnumber' %]
340
            <option value="itemcallnumber" selected="selected">Call number</option>
341
        [% ELSE %]
342
            <option value="itemcallnumber">Call number</option>
343
        [% END %]
344
345
        [% IF sort == 'copyrightdate' %]
346
            <option value="copyrightdate" selected="selected">Copyright date</option>
347
        [% ELSE %]
348
            <option value="copyrightdate">Copyright date</option>
349
        [% END %]
350
    </select>
351
352
    <select name="direction" onchange="$('#sorting-form').submit()">
353
        [% IF direction == 'asc' %]
354
            <option value="asc" selected="selected">Ascending</option>
355
        [% ELSE %]
356
            <option value="asc">Ascending</option>
357
        [% END %]
358
359
        [% IF direction == 'desc' %]
360
            <option value="desc" selected="selected">Descending</option>
361
        [% ELSE %]
362
            <option value="desc">Descending</option>
363
        [% END %]
364
    </select>
365
366
    <input type="submit" id="sort-submit" value="Resort list" />
367
</form>
368
369
                [% IF ( manageshelf ) %] <span class="sep">|</span> <form method="get" action="opac-shelves.pl"><input type="hidden" name="op" value="modif" />
370
                <input type="hidden" name="display" value="viewshelf" />
371
                <input type="hidden" name="shelfnumber" value="[% shelfnumber %]" /> <input type="submit" class="editshelf" value="Edit list" /></form>
372
373
                      <form method="post" action="opac-shelves.pl">
374
                        <input type="hidden" value="1" name="shelves"/>
375
                         <input type="hidden" value="1" name="DEL-[% shelfnumber %]"/>
376
                         [% IF ( showprivateshelves ) %]<input type="hidden" name="display" value="privateshelves"/>[% END %]<input type="submit" class="deleteshelf" value="Delete list" onclick="return confirmDelete(MSG_CONFIRM_DELETE_LIST);"/>
377
                      </form>
378
                    [% IF showprivateshelves && Koha.Preference('OpacAllowSharingPrivateLists') %]
379
                        <form action="opac-shareshelf.pl" method="post">
380
                            <input type="hidden" name="shelfnumber" value="[% shelfnumber %]" />
381
                            <input type="hidden" name="op" value="invite" />
382
                            <input type="submit" class="Share" value="Share" />
383
                        </form>
384
                    [% END %]
385
                [% ELSIF showprivateshelves %]
386
                    [% INCLUDE remove_share %]
387
                    <input type="hidden" name="REMSHR-[% shelfnumber %]" value="1" />
388
                    </form>
389
                [% END %]
390
391
392
                  </div>
393
                  <div id="selections-toolbar" class="list-actions">
394
                  <span class="checkall"></span> <span class="clearall"></span> <span class="sep">|</span>
395
                  <span class="links"><span id="selections">Select titles to: </span>
396
                                      [% IF ( RequestOnOpac ) %]
397
                                        <span id="placehold"></span>
398
                                      [% END %]
399
                                      [% IF ( TagsInputEnabled && loggedinusername ) %]
400
                                        <span id="addtags">
401
                                          <a id="tagsel_tag" href="#" class="disabled">Tag</a>
402
                                        </span>
403
                                        <span id="tagsel_form" style="display:none">
404
                                          <label for="tagsel_new">New tag:</label>
405
                                          <input name="tagsel_new" id="tagsel_new" maxlength="100" />
406
                                          <input id="tagsel_button" name="tagsel_button" class="input tagsel_button" title="tagsel_button" type="submit" value="Add" />
407
                                          <a href="#" id="tagsel_cancel">Cancel</a>
408
                                        </span>
409
                                      [% END %]
410
                    [% IF ( loggedinusername && allowremovingitems ) %]<span id="removeitems"></span>[% END %]</span>
411
                  </div>
412
                  <form action="/cgi-bin/koha/opac-shelves.pl" method="post" id="myform" name="myform" class="checkboxed">
413
                [% IF ( manageshelf ) %]
414
                    <input type="hidden" name="viewshelf" value="[% shelfnumber %]" />
415
                    <input type="hidden" name="modifyshelfcontents" value="1" />
416
                [% END %]
417
                <div class="searchresults">
418
                <table id="listcontents">
419
                  <tbody>
420
                  [% FOREACH itemsloo IN itemsloop %]
421
                    [% UNLESS ( loop.odd ) %]
422
                      <tr class="highlight">
423
                    [% ELSE %]
424
                      <tr>
425
                    [% END %]
426
                        <td><input type="checkbox" class="cb" name="REM-[% itemsloo.biblionumber %]"
427
                                   value="[% itemsloo.biblionumber %]" /></td>
428
                    [% UNLESS ( item_level_itypes ) %]
429
                        <td>
430
                          [% UNLESS ( noItemTypeImages ) %]
431
                          <img src="[% itemsloo.imageurl %]" alt="[% itemsloo.description %]" title="[% itemsloo.description %]" />
432
                          [% END %]
433
                          [% itemsloo.description %]
434
                        </td>
435
                    [% END %]
436
                        <td>
437
                        [% IF ( itemsloo.XSLTBloc ) %]
438
                         [% itemsloo.XSLTBloc %]
439
                        [% ELSE %]
440
441
                                [% IF ( itemsloo.BiblioDefaultViewmarc ) %]<a class="title" href="/cgi-bin/koha/opac-MARCdetail.pl?biblionumber=[% itemsloo.biblionumber |url %]" title="View details for this title">
442
                                [% ELSE %]
443
                                [% IF ( itemsloo.BiblioDefaultViewisbd ) %]<a class="title" href="/cgi-bin/koha/opac-ISBDdetail.pl?biblionumber=[% itemsloo.biblionumber |url %]" title="View details for this title">
444
                                [% ELSE %]<a class="title" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% itemsloo.biblionumber |url %]" title="View details for this title">
445
                                [% END %]
446
                                [% END %]
447
                [% IF ( itemsloo.title ) %][% itemsloo.title |html %][% ELSE %]No title[% END %] [% FOREACH subtitl IN itemsloo.subtitle %][% subtitl.subfield|html %][% END %]</a>
448
                                [% IF ( itemsloo.author ) %]by <a href="/cgi-bin/koha/opac-search.pl?q=au:[% itemsloo.author |url %]" title="Search for works by this author" class="author">[% itemsloo.author %]</a>
449
450
                                [% ELSE %]&nbsp;
451
                                [% END %]
452
        <span class="results_summary"><span class="label">Publication:</span>
453
                        [% IF ( itemsloo.place ) %][% itemsloo.place %] [% END %][% IF ( itemsloo.publishercode ) %][% itemsloo.publishercode|html %][% END %][% IF ( itemsloo.publicationyear ) %] [% itemsloo.publicationyear %]
454
                    [% ELSE %][% IF ( itemsloo.copyrightdate ) %] [% itemsloo.copyrightdate %][% END %][% END %]
455
                        [% IF ( itemsloo.pages ) %]. [% itemsloo.pages %][% END %]
456
                        [% IF ( itemsloo.notes ) %], [% itemsloo.notes|html %][% END %]
457
                        [% IF ( itemsloo.size ) %] [% itemsloo.size %][% END %]
458
                </span>
459
                <span class="results_summary"><span class="label">Holdings:</span>[% IF ( itemsloo.ITEM_RESULTS ) %][% FOREACH ITEM_RESULT IN itemsloo.ITEM_RESULTS %]
460
          [% ITEM_RESULT.homebranch %][% IF ( ITEM_RESULT.location_opac ) %], [% ITEM_RESULT.location_opac %][% END %]
461
          [% IF ( ITEM_RESULT.itemcallnumber ) %]
462
        ([% ITEM_RESULT.itemcallnumber %])[% IF ( loop.last ) %].[% ELSE %],[% END %]
463
          [% END %]
464
          [% END %][% ELSE %]This record has no items.[% END %]</span>
465
            [% END %]
466
          [% IF ( TagsShowEnabled ) %]
467
            [% IF ( itemsloo.TagLoop.size ) %]
468
              <div class="results_summary">
469
              <span class="label">Tags:</span>
470
              <ul style="display: inline; list-style: none;">[% FOREACH TagLoo IN itemsloo.TagLoop %]<li style="display: inline; list-style: none;"><a href="/cgi-bin/koha/opac-search.pl?tag=[% TagLoo.term |url %]&amp;q=[% TagLoo.term |url %]">[% TagLoo.term %]</a> <span class="weight">([% TagLoo.weight_total %])</span></li>
471
                  [% END %]
472
              </ul>
473
              </div>
474
            [% END %]
475
          [% END %]
476
477
    <span class="results_summary actions">
478
        <span class="label">Actions:</span>
479
480
        [% IF ( TagsInputEnabled ) %]
481
              [% IF ( loggedinusername ) %]
482
                    <a class="tag_add" id="tag_add[% itemsloo.biblionumber %]" href="#">Add tag</a>
483
                    <span id="tagform[% itemsloo.biblionumber %]" class="tag_results_input" style="display:none;">
484
                        <label for="newtag[% itemsloo.biblionumber %]">New tag(s):</label>
485
                        <input name="newtag[% itemsloo.biblionumber %]" id="newtag[% itemsloo.biblionumber %]" maxlength="100" />
486
                        <input name="tagbutton" class="tagbutton" title="[% itemsloo.biblionumber %]" type="submit" value="Add" />
487
                        <a class="cancel_tag_add" id="cancel[% itemsloo.biblionumber %]" href="#">(done)</a>
488
                    </span>
489
                    <span id="newtag[% itemsloo.biblionumber %]_status" class="tagstatus" style="display:none;">
490
                        Tag status here.
491
                    </span>
492
              [% ELSIF ( loop.first ) %]
493
                    <span class="tagstatus" id="login4tags">Log in to add tags.</span>
494
              [% END %]
495
          [% END %]
496
497
      [% IF ( RequestOnOpac ) %]
498
          [% UNLESS ( itemsloo.norequests ) %]
499
            [% IF ( opacuserlogin ) %]
500
              [% IF ( AllowOnShelfHolds ) %]
501
                <a class="hold" href="/cgi-bin/koha/opac-reserve.pl?biblionumber=[% itemsloo.biblionumber %]">Place hold</a><!-- add back when available 0 holds in queue-->
502
              [% ELSE %]
503
                [% IF ( itemsloo.itemsissued ) %]
504
                  <a class="hold" href="/cgi-bin/koha/opac-reserve.pl?biblionumber=[% itemsloo.biblionumber %]">Place hold</a><!-- add back when available 0 holds in queue-->
505
                [% END %]
506
              [% END %]
507
            [% END %]
508
          [% END %]
509
        [% END %]
510
511
        [% IF ( opacuserlogin ) %][% IF ( loggedinusername ) %][% IF ( virtualshelves ) %]<a class="addtoshelf" href="/cgi-bin/koha/opac-addbybiblionumber.pl?biblionumber=[% itemsloo.biblionumber %]" onclick="Dopop('opac-addbybiblionumber.pl?biblionumber=[% itemsloo.biblionumber %]'); return false;">Save to another list</a>
512
          [% END %][% END %][% END %]
513
514
        [% IF ( allowremovingitems ) %]
515
            <a class="removefromlist" id="REM-[% itemsloo.biblionumber %]" href="#">Remove from this list</a>
516
        [% END %]
517
518
          [% IF ( opacbookbag ) %]
519
              [% IF ( itemsloo.incart ) %]
520
                  <a class="addtocart cart[% itemsloo.biblionumber %]" href="#" onclick="addRecord('[% itemsloo.biblionumber %]'); return false;">In your cart</a> <a class="cartRemove cartR[% itemsloo.biblionumber %]" href="#" onclick="delSingleRecord('[% itemsloo.biblionumber %]'); return false;">(remove)</a>
521
              [% ELSE %]
522
                  <a class="addtocart cart[% itemsloo.biblionumber %]" href="#" onclick="addRecord('[% itemsloo.biblionumber %]'); return false;">Add to cart</a> <a style="display:none;" class="cartRemove cartR[% itemsloo.biblionumber %]" href="#" onclick="delSingleRecord('[% itemsloo.biblionumber %]'); return false;">(remove)</a>
523
              [% END %]
524
          [% END %]
525
        </span>
526
527
                          <!-- COinS / Openurl --><span class="Z3988" title="[% itemsloo.coins %]"></span>
528
                        </td>
529
          <td>
530
          <a class="p1" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% itemsloo.biblionumber %]">
531
            [% IF ( OPACLocalCoverImages ) %]<span title="[% itemsloo.biblionumber |url %]" class="[% itemsloo.biblionumber %]" id="local-thumbnail[% loop.count %]"></span>[% END %]
532
                    [% IF ( OPACAmazonCoverImages ) %][% IF ( itemsloo.normalized_isbn ) %]<span title="[% SEARCH_RESULT.biblionumber %]" id="amazon-thumbnail[% loop.count %]"><img src="http://images.amazon.com/images/P/[% itemsloo.normalized_isbn %].01.TZZZZZZZ.jpg" alt="" class="thumbnail" /></span>[% ELSE %]<span class="no-image">No cover image available</span>[% END %][% END %]
533
534
          [% IF ( SyndeticsEnabled ) %][% IF ( SyndeticsCoverImages ) %][% IF ( using_https ) %]
535
                <span title="[% SEARCH_RESULT.biblionumber %]" id="syndetics-thumbnail[% loop.count %]"><img src="https://secure.syndetics.com/index.aspx?isbn=[% itemsloo.normalized_isbn %]/SC.GIF&amp;client=[% SyndeticsClientCode %]&amp;type=xw10&amp;upc=[% itemsloo.normalized_upc %]&amp;oclc=[% itemsloo.normalized_oclc %]" alt="" class="thumbnail" /></span>
536
                [% ELSE %]
537
                <span title="[% SEARCH_RESULT.biblionumber %]" id="syndetics-thumbnail[% loop.count %]"><img src="http://www.syndetics.com/index.aspx?isbn=[% itemsloo.normalized_isbn %]/SC.GIF&amp;client=[% SyndeticsClientCode %]&amp;type=xw10&amp;upc=[% itemsloo.normalized_upc %]&amp;oclc=[% itemsloo.normalized_oclc %]" alt="" class="thumbnail" /></span>[% END %][% END %][% END %]
538
539
                [% IF ( GoogleJackets ) %][% IF ( itemsloo.normalized_isbn ) %]<div style="block" title="[% itemsloo.biblionumber |url %]" class="[% itemsloo.normalized_isbn %]" id="gbs-thumbnail[% loop.count %]"></div>[% ELSE %]<span class="no-image">No cover image available</span>[% END %][% END %]
540
                [% IF OpenLibraryCovers %][% IF itemsloo.normalized_isbn %]<span style="block" title="[% itemsloo.biblionumber %]" class="[% itemsloo.normalized_isbn %]" id="openlibrary-thumbnail[% loop.count %]"></span>[% ELSE %]<span class="no-image">No cover image available</span>[% END %][% END %]
541
                </a>
542
                [% IF ( BakerTaylorEnabled ) %][% IF ( itemsloo.normalized_isbn ) %]<a href="https://[% BakerTaylorBookstoreURL |html %][% itemsloo.normalized_isbn %]"><img alt="See Baker &amp; Taylor" src="[% BakerTaylorImageURL |html %][% itemsloo.normalized_isbn %]" /></a>[% ELSE %]<span class="no-image">No cover image available</span>[% END %][% END %]
543
        </td>
544
                      </tr>
545
                  [% END %]<!-- /itemsloop -->
546
                    </tbody>
547
                  </table>
548
                  </div>
549
                  [% IF ( pagination_bar ) %]<div class="pages">[% pagination_bar %]</div>[% END %]
550
                [% ELSE %]
551
                  <div class="dialog message">This list is empty.  [% IF ( opacuserlogin ) %]You can add to your lists from the results of any <a href="opac-main.pl">search</a>![% END %]</div>
552
              [% END %]<!-- /itemsloop -->
553
            [% END %]<!-- /viewshelf -->
554
555
556
            [% IF ( itemsloop && allowremovingitems ) %]
557
                <form method="post" action="opac-shelves.pl">
558
                <input type="hidden" name="shelfnumber" value="[% shelfnumber %]" />
559
                <input type="hidden" name="modifyshelfcontents" value="1" />
560
                <input type="hidden" name="viewshelf" value="[% shelfnumber %]" /><input type="submit" value="Remove selected items" class="icon delete"/>
561
                </form>
562
            [% ELSIF ( !itemsloop && manageshelf ) %]
563
                <form method="post" action="opac-shelves.pl">
564
                  <input type="hidden" name="DEL-[% shelfnumber %]" value="1" />
565
                  <input type="hidden" name="shelves" value="1" />
566
		  <input type="hidden" name="shelfoff" value="[% shelfoff %]" />
567
                  <input type="submit" class="icon delete" value="Delete this list" onclick="return confirmDelete(MSG_CONFIRM_DELETE_LIST)" />
568
                </form>
569
            [% END %]
570
571
            
572
            [% IF ( edit ) %]
573
                <h3><a href="/cgi-bin/koha/opac-shelves.pl">Lists</a> &#8674; <a href="/cgi-bin/koha/opac-shelves.pl?viewshelf=[% shelfnumber %]"><em>[% shelfname |html %]</em></a> &#8674; Editing</h3>
574
                <form method="post" action="/cgi-bin/koha/opac-shelves.pl">
575
                  <input type="hidden" name="op" value="modifsave" />
576
                  <input type="hidden" name="display" value="[% display %]" />
577
                  <input type="hidden" name="shelfnumber" value="[% shelfnumber %]" />
578
                  <fieldset class="rows">
579
                    <ol>
580
                      <li><label for="shelfname">List name: </label><input type="text" id="shelfname" name="shelfname" size="60" value="[% shelfname |html %]" /></li>
581
                      <li>
582
                        <label for="sortfield" >Sort this list by: </label>
583
                        <select name="sortfield" id="sortfield">
584
                          [% IF ( sortfield == "title" ) %]<option value="title" selected="selected">Title</option>[% ELSE %]<option value="title">Title</option>[% END %]
585
                          [% IF ( sortfield == "author" ) %]<option value="author" selected="selected">Author</option>[% ELSE %]<option value="author">Author</option>[% END %]
586
                          [% IF ( sortfield == "copyrightdate" ) %]<option value="copyrightdate" selected="selected">Year</option>[% ELSE %]<option value="copyrightdate">Year</option>[% END %]
587
                          [% IF ( sortfield == "itemcallnumber" ) %]<option value="itemcallnumber" selected="selected">Call number</option>[% ELSE %]<option value="itemcallnumber">Call number</option>[% END %]
588
                        </select>
589
                      </li>
590
                      [% IF ( OpacAllowPublicListCreation || category2 ) %]
591
                      <li>
592
                        <label for="category">Category:</label>
593
                        <select name="category" id="category">
594
                          [% IF ( category1 ) %]<option value="1" selected="selected">Private</option>[% ELSE %]<option value="1">Private</option>[% END %]
595
                          [% IF ( category2 ) %]<option value="2" selected="selected">Public</option>[% ELSE %]<option value="2">Public</option>[% END %]
596
                        </select>
597
                          [% IF ( category2 && !OpacAllowPublicListCreation ) %]
598
                              The library has disabled the ability for patrons to create new public lists.  If you make your list private, you will not be able to make it public again.
599
                          [% END %]
600
                      </li>
601
                      [% INCLUDE list_permissions %]
602
                      [% END %]
603
                    </ol>
604
                    [% UNLESS ( OpacAllowPublicListCreation || category2 ) %]
605
                        <input type="hidden" name="category" value="1" />
606
                    [% END %]
607
                  </fieldset>
608
                  <fieldset class="action"><input type="submit" value="Save" class="submit" /> [% IF ( showprivateshelves ) %]<a class="cancel" href="/cgi-bin/koha/opac-shelves.pl?shelfnumber=[% shelfnumber %]&amp;display=privateshelves">Cancel</a>[% ELSE %]<a class="cancel" href="/cgi-bin/koha/opac-shelves.pl?shelfnumber=[% shelfnumber %]">Cancel</a>[% END %]</fieldset>
609
                </form>
610
            [% END %]<!-- /edit -->
611
612
613
            [% UNLESS ( edit ) %]
614
              [% UNLESS ( viewshelf ) %]
615
                [% UNLESS ( shelves ) %]
616
                  <h2>Lists</h2>
617
                  <ul class="link-tabs">
618
                  [% IF ( opacuserlogin ) %]
619
                  [% IF ( showprivateshelves ) %]
620
                    <li id="privateshelves_tab" class="on"><a href="/cgi-bin/koha/opac-shelves.pl?display=privateshelves">Your lists</a></li>
621
                  [% ELSE %]
622
                    <li id="privateshelves_tab" class="off"><a href="/cgi-bin/koha/opac-shelves.pl?display=privateshelves">Your lists</a></li>
623
                  [% END %]
624
                  [% END %]
625
                  [% IF ( showpublicshelves ) %]
626
                    <li id="publicshelves_tab" class="on"><a href="/cgi-bin/koha/opac-shelves.pl?display=publicshelves">Public lists</a></li>
627
                  [% ELSE %]
628
                    <li id="publicshelves_tab" class="off"><a href="/cgi-bin/koha/opac-shelves.pl?display=publicshelves">Public lists</a></li>
629
                  [% END %]
630
                  </ul>
631
                  
632
                  [% IF ( showprivateshelves ) %]
633
                    <div id="privateshelves" class="tab-container" style="display:block;">
634
                  [% ELSE %]
635
                    <div id="privateshelves" class="tab-container" style="display:none;">
636
                  [% END %]
637
        
638
                  [% IF ( loggedinusername ) %]
639
                    <div id="toolbar"><a class="newshelf" href="/cgi-bin/koha/opac-shelves.pl?shelves=1">New list</a></div>
640
                  [% IF ( showprivateshelves ) %]
641
                    [% IF ( shelveslooppriv ) %]
642
                      <table>
643
                        <tr>
644
                          <th>List name</th>
645
                          <th>Contents</th>
646
                          <th>Type</th>
647
                          <th>Options</th>
648
                        </tr>
649
                        [% FOREACH shelveslooppri IN shelveslooppriv %]
650
                          [% UNLESS ( loop.odd ) %]
651
                            <tr class="highlight">
652
                          [% ELSE %]
653
                            <tr>
654
                          [% END %]
655
                              <td><a href="/cgi-bin/koha/opac-shelves.pl?display=privateshelves&amp;viewshelf=[% shelveslooppri.shelf %]&amp;sortfield=[% shelveslooppri.sortfield %]">[% shelveslooppri.shelfname |html %]</a></td>
656
                              <td>[% IF ( shelveslooppri.count ) %][% shelveslooppri.count %] [% IF ( shelveslooppri.single ) %]item[% ELSE %]items[% END %][% ELSE %]Empty[% END %]</td>
657
                              <td>
658
                                [% IF ( shelveslooppri.viewcategory1 ) %][% IF !shelveslooppri.shares %]Private[% ELSE %]Shared[% END %][% END %]
659
                                [% IF ( shelveslooppri.viewcategory2 ) %]Public[% END %]
660
                              </td>
661
                              <td>
662
                              [% IF ( shelveslooppri.mine ) %]
663
                                <form action="/cgi-bin/koha/opac-shelves.pl" method="get">
664
                                  <input type="hidden" name="shelfnumber" value="[% shelveslooppri.shelf %]" />
665
                                  <input type="hidden" name="display" value="privateshelves" />
666
                                  <input type="hidden" name="op" value="modif" />
667
                                  <input type="submit" class="editshelf" value="Edit" />
668
                                </form>
669
                                <form action="opac-shelves.pl" method="post">
670
                                  <input type="hidden" name="shelves" value="1" />
671
                                  <input type="hidden" name="display" value="privateshelves" />
672
                                  <input type="hidden" name="DEL-[% shelveslooppri.shelf %]" value="1" />
673
				  <input type="hidden" name="shelfoff" value="[% shelfoff %]" />
674
                              [% IF ( shelveslooppri.confirm ) %]
675
                                    <input type="hidden" name="CONFIRM-[% shelveslooppri.confirm %]" value="1" />
676
                                    <input type="submit" class="confirm" value="Confirm" />
677
                              [% ELSE %]
678
                                    <input type="submit" class="deleteshelf" onclick="return confirmDelete(MSG_CONFIRM_DELETE_LIST);" value="Delete" />
679
                              [% END %]
680
                              </form>
681
                              [% IF Koha.Preference('OpacAllowSharingPrivateLists') %]
682
                                <form action="opac-shareshelf.pl" method="post">
683
                                  <input type="hidden" name="shelfnumber" value="[% shelveslooppri.shelf %]" />
684
                                  <input type="hidden" name="op" value="invite" />
685
                                  <input type="submit" class="Share" value="Share" />
686
                                </form>
687
                              [% END %]
688
                            [% ELSIF shelveslooppri.shares %]
689
                                [% INCLUDE remove_share %]
690
                                <input type="hidden" name="REMSHR-[% shelveslooppri.shelf %]" value="1" />
691
                                </form>
692
                            [% END %]&nbsp;
693
                            </td>
694
                          </tr>
695
                        [% END %]
696
                      </table>
697
                      <div class="pages">[% pagination_bar %]</div>
698
                    [% ELSE %]
699
                         <p>No private lists.</p>
700
                    [% END %]<!-- /shelveslooppriv -->
701
                  [% END %]<!-- /showprivateshelves -->
702
                  [% ELSE %]<!-- /loggedinusername -->
703
                      [% IF ( opacuserlogin ) %]<div><a href="/cgi-bin/koha/opac-user.pl">Log in</a> to create new lists.</div>[% END %]
704
                  [% END %]<!-- /loggedinusername -->
705
706
                  
707
		            </div><!-- /privateshelves -->
708
709
                  [% IF ( showpublicshelves ) %]
710
                    <div id="publicshelves" class="tab-container" style="display:block;">
711
                  [% ELSE %]
712
                    <div id="publicshelves" class="tab-container" style="display:none;">
713
                  [% END %]
714
                  [% IF ( loggedinusername ) %]
715
                 <div id="toolbar"> <a class="newshelf" href="/cgi-bin/koha/opac-shelves.pl?shelves=1">New list</a></div>
716
                  [% ELSE %]
717
                  [% IF ( opacuserlogin ) %]<div><a href="/cgi-bin/koha/opac-user.pl">Log in</a> to create new lists.</div>[% END %]
718
                  [% END %]
719
                  [% IF ( shelvesloop ) %]
720
                      <table>
721
                        <tr>
722
                          <th>List name</th>
723
                          <th>Contents</th>
724
                          <th>Type</th>
725
                          <th>Options</th>
726
                        </tr>
727
                    [% FOREACH shelvesloo IN shelvesloop %]
728
                      [% UNLESS ( loop.odd ) %]
729
                        <tr class="highlight">
730
                      [% ELSE %]
731
                        <tr>
732
                      [% END %]
733
                          <td><a href="/cgi-bin/koha/opac-shelves.pl?viewshelf=[% shelvesloo.shelf %]&amp;sortfield=[% shelvesloo.sortfield %]">[% shelvesloo.shelfname |html %]</a></td>
734
                          <td>[% shelvesloo.count %] [% IF ( shelvesloo.single ) %]item[% ELSE %]item(s)[% END %]</td>
735
                          <td>
736
                            [% IF ( shelvesloo.viewcategory1 ) %]Private[% END %]
737
                            [% IF ( shelvesloo.viewcategory2 ) %]Public[% END %]
738
	                      </td>
739
                          <td>
740
							[% IF ( shelvesloo.mine ) %]
741
                              <form action="/cgi-bin/koha/opac-shelves.pl" method="get">
742
                                <input type="hidden" name="shelfnumber" value="[% shelvesloo.shelf %]" />
743
                                <input type="hidden" name="op" value="modif" />
744
                                <input type="hidden" name="display" value="publicshelves" />
745
                                <input type="submit" class="editshelf" value="Edit" />
746
                              </form>
747
                              <form action="opac-shelves.pl" method="post">
748
                                <input type="hidden" name="shelves" value="1" />
749
                                <input type="hidden" name="DEL-[% shelvesloo.shelf %]" value="1" />
750
                                [% IF ( shelvesloo.confirm ) %]
751
                                  <input type="hidden" name="CONFIRM-[% shelvesloo.confirm %]" value="1" />
752
                                  <input type="submit" class="confirm" value="Confirm" />
753
                                [% ELSE %]
754
                                  <input type="submit" class="deleteshelf" onclick="return confirmDelete(MSG_CONFIRM_DELETE_LIST);" value="Delete" />
755
                                [% END %]
756
                              </form>
757
                            [% END %]&nbsp;
758
                          </td>
759
                        </tr>
760
                    [% END %]<!-- /shelvesloop -->
761
                      </table>
762
                  [% IF ( pagination_bar ) %]<div class="pages">[% pagination_bar %]</div>[% END %]
763
                  [% ELSE %]<!-- /shelvesloop -->
764
                    [% IF ( showpublicshelves ) %]<p>No public lists.</p>[% END %]
765
                  [% END %]<!-- /shelvesloop -->
766
                  
767
                    </div><!-- /publicshelves -->
768
                    
769
                [% END %]<!-- /shelves -->
770
              [% END %]<!-- /viewshelf -->
771
            [% END %]<!-- /edit -->
772
773
            [% IF ( shelves ) %]
774
              <div id="addshelf">
775
                <form method="post" action="/cgi-bin/koha/opac-shelves.pl">
776
                  <fieldset class="rows">
777
                    <legend>Create a new list</legend>
778
                    <input type="hidden" name="shelves" value="1" />
779
                    <ol>
780
                      <li>
781
                        <label class="required" for="addshelf">List name:</label>
782
                        [% IF ( already ) %]
783
                          <input id="addshelf" type="text" name="addshelf" value="[% already %]" size="60" />
784
                        [% ELSE %]
785
                          <input id="addshelf" type="text" name="addshelf" size="60" />
786
                        [% END %]
787
                        <input type="hidden" name="owner" id="owner" value="[% loggedinuser %]" />
788
                      </li>
789
                      <li>
790
                        <label for="sortfield" >Sort this list by: </label>
791
                        <select name="sortfield" id="sortfield">
792
                          <option value="title">Title</option>
793
                          <option value="author">Author</option>
794
                          <option value="copyrightdate">Year</option>
795
                          <option value="itemcallnumber">Call number</option>
796
                        </select>
797
                      </li>
798
                  [% IF (OpacAllowPublicListCreation) %]
799
                      <li>
800
                        <label for="category">Category:</label>
801
                        <select name="category" id="category">
802
                          <option value="1">Private</option>
803
                          <option value="2">Public</option>
804
                        </select>
805
                      </li>
806
                      [% INCLUDE list_permissions %]
807
                  [% END %]
808
                    </ol>
809
                  [% UNLESS (OpacAllowPublicListCreation) %]
810
                      <input type="hidden" name="category" value="1" />
811
                  [% END %]
812
                  </fieldset>
813
                  <fieldset class="action">
814
                    <input type="submit" onclick="Check(this.form); return false;" value="Save" class="submit" />
815
                    <a class="cancel" href="/cgi-bin/koha/opac-shelves.pl">Cancel</a>
816
                  </fieldset>
817
                </form>
818
              </div>
819
            [% END %]<!-- /shelves -->
820
821
            
822
            </div>
823
          </div>
824
        </div>
825
      </div>
826
      [% IF ( OpacNav||loggedinusername ) %]
827
        <div class="yui-b">
828
          <div id="leftmenus" class="container">
829
            [% INCLUDE 'navigation.inc' IsPatronPage=1 %]
830
          </div>
831
        </div>
832
      [% END %]
833
    </div><!-- /bd -->
834
835
<!-- </div> -->
836
<!-- DEBUG -->
837
    <div id="debug"></div>
838
839
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-showmarc.tt (-10 lines)
Lines 1-10 Link Here
1
[% INCLUDE 'doc-head-open.inc' %]
2
MARC view</title>
3
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4
</head>
5
<body id="opac-showmarc">
6
<div id="main">
7
<pre>[% MARC_FORMATTED %]</pre>
8
</div>
9
</body>
10
</html>
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-showreviews-rss.tt (-36 lines)
Lines 1-36 Link Here
1
[% USE KohaDates # XML declaration should have no white space before it %]<?xml version="1.0" encoding="utf-8"?>
2
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
3
<channel>
4
     <title><![CDATA[[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] Catalog Recent Comments]]></title>
5
     <link>[% OPACBaseURL %]/cgi-bin/koha/opac-showreviews.pl&amp;format=rss2</link>
6
     <description><![CDATA[ The most recent comments from [% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] Catalog. Comments can be made by logged in users and are moderated by library staff.]]></description>
7
     <atom:link href="[% OPACBaseURL %]/cgi-bin/koha/opac-showreviews.pl&amp;format=rss2" rel="self" type="application/rss+xml" />
8
     <lastBuildDate>[% timestamp %]</lastBuildDate>
9
	 [% FOREACH review IN reviews %]
10
     <item>
11
       <title>New comment on [% review.title |html %] [% FOREACH subtitl IN review.subtitle %], [% subtitl.subfield |html %][% END %]</title>
12
       <link>[% OPACBaseURL %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% review.biblionumber %]#comments</link>
13
       <description><![CDATA[
14
[% IF ( OPACAmazonCoverImages ) %][% IF ( review.normalized_isbn ) %]<img src="http://images.amazon.com/images/P/[% review.normalized_isbn %].01.TZZZZZZZ.jpg" alt="" />[% END %][% END %]
15
16
[% IF ( SyndeticsEnabled ) %][% IF ( SyndeticsCoverImages ) %][% IF ( review.content_identifier_exists ) %][% IF ( using_https ) %]<img src="https://secure.syndetics.com/index.aspx?isbn=[% review.normalized_isbn %]/SC.GIF&amp;client=[% SyndeticsClientCode %]&amp;type=xw10&amp;upc=[% review.normalized_upc %]&amp;oclc=[% review.normalized_oclc %]" alt="" />
17
[% ELSE %]
18
<img src="http://www.syndetics.com/index.aspx?isbn=[% review.normalized_isbn %]/SC.GIF&amp;client=[% SyndeticsClientCode %]&amp;type=xw10&amp;upc=[% review.normalized_upc %]&amp;oclc=[% review.normalized_oclc %]" alt="" />
19
[% END %][% END %][% END %][% END %]
20
21
[% IF ( BakerTaylorEnabled ) %][% IF ( review.normalized_isbn ) %]<a href="https://[% BakerTaylorBookstoreURL |html %][% review.normalized_isbn %]"><img alt="See Baker &amp; Taylor" src="[% BakerTaylorImageURL |html %][% review.normalized_isbn %]" /></a>[% END %][% END %]
22
	   [% IF ( review.author ) %]<p>By [% review.author |html %].</p> [% END %]
23
	   <p>[% IF ( review.place ) %][% review.place |html %] [% END %][% IF ( review.publishercode ) %][% review.publishercode |html %][% END %][% IF ( review.publicationyear ) %] [% review.publicationyear |html %]
24
                    [% ELSE %][% IF ( review.copyrightdate ) %] [% review.copyrightdate |html %][% END %][% END %]
25
                        [% IF ( review.pages ) %]. [% review.pages |html %][% END %]
26
                        [% IF ( review.notes ) %], [% review.notes |html %][% END %]
27
                        [% IF ( review.size ) %] [% review.size |html %]. [% END %]
28
                        [% IF ( review.isbn ) %] [% review.isbn |html %][% END %] </p>
29
<p>[% IF ( review.borrowernumber && ShowReviewer ) %][% review.firstname %] [% review.surname %] commented[% ELSE %]Comment[% END %] on [% review.datereviewed | $KohaDates %]: [% review.review |html %]</p>
30
						]]></description>
31
       <guid>[% OPACBaseURL %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% review.biblionumber %]&amp;reviewid=[% review.reviewid %]</guid>
32
       <pubDate>[% review.timestamp %]</pubDate>
33
     </item>
34
	 [% END %]
35
   </channel>
36
</rss>
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-showreviews.tt (-116 lines)
Lines 1-116 Link Here
1
[% USE Koha %]
2
[% USE KohaDates %]
3
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Recent comments
4
[% INCLUDE 'doc-head-close.inc' %]
5
<link rel="alternate" type="application/rss+xml" title="[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog recent comments" href="[% OPACBaseURL %]/cgi-bin/koha/opac-showreviews.pl?format=rss" />
6
<script type="text/javascript">
7
//<![CDATA[
8
$(document).ready(function(){
9
    [% IF ( GoogleJackets ) %]KOHA.Google.GetCoverFromIsbn();[% END %]
10
});
11
//]]>
12
</script>
13
</head>
14
<body id="opac-showreviews">
15
[% IF ( OpacNav ) %]<div id="doc3" class="yui-t1">[% ELSE %]<div id="doc3" class="yui-t7">[% END %]
16
   <div id="bd">
17
[% INCLUDE 'masthead.inc' %]
18
	<div id="yui-main">
19
	<div id="usershowreviews" class="container">
20
    <div id="recentcomments" class="searchresults">
21
<h3>Recent comments</h3>
22
<table>
23
    [% FOREACH review IN reviews %]
24
    [% UNLESS ( loop.odd ) %]<tr class="highlight">[% ELSE %]<tr>[% END %]
25
        <td>
26
27
<p>[% IF ( BiblioDefaultViewmarc ) %]<a class="title" href="/cgi-bin/koha/opac-MARCdetail.pl?biblionumber=[% review.biblionumber |url %]" title="View details for this title">
28
    [% ELSE %]
29
    [% IF ( BiblioDefaultViewisbd ) %]<a class="title" href="/cgi-bin/koha/opac-ISBDdetail.pl?biblionumber=[% review.biblionumber |url %]" title="View details for this title">
30
    [% ELSE %]<a class="title" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% review.biblionumber |url %]#comments" title="View details for this title">
31
    [% END %]
32
    [% END %]
33
    [% IF ( review.title ) %][% review.title %][% ELSE %]No title[% END %] [% FOREACH subtitl IN review.subtitle %] [% subtitl.subfield |html %][% END %]</a>
34
    [% IF ( review.author ) %]by <a href="/cgi-bin/koha/opac-search.pl?q=au:[% review.author |url %]" title="Search for works by this author" class="author">[% review.author %]</a></p>
35
    [% END %]
36
    <p>
37
    <span class="results_summary"><span class="label">Publication:</span>
38
            [% IF ( review.place ) %][% review.place %] [% END %][% IF ( review.publishercode ) %][% review.publishercode %][% END %][% IF ( review.publicationyear ) %] [% review.publicationyear %]
39
        [% ELSE %][% IF ( review.copyrightdate ) %] [% review.copyrightdate %][% END %][% END %]
40
            [% IF ( review.pages ) %]. [% review.pages %][% END %]
41
            [% IF ( review.notes ) %], [% review.notes %][% END %]
42
            [% IF ( review.size ) %] [% review.size %][% END %]
43
    </span>
44
    [% IF ( review.summary ) %]
45
    <span class="result_summary">
46
        [% review.summary %]
47
    </span>
48
    [% END %]
49
    [% IF ( review.copyrightdate ) %]<span class="results_summary"><span class="label">Date:</span>[% review.copyrightdate %]</span>[% END %]</p>
50
51
            <p class="commentline[% IF ( review.your_comment ) %] yours[% END %]">
52
            [% IF ( review.avatarurl ) %]
53
                <img class="avatar" src="[% review.avatarurl %]" height="40" width="40" alt="" />
54
            [% END %]
55
            [% FILTER html_break %]
56
            [% review.review |html %]
57
            [% END %]
58
            <span style="font-size:87%;font-color:#CCC;">Added [% review.datereviewed | $KohaDates %] [% IF ( review.your_comment ) %] by <strong>you</strong>[% ELSE %]
59
            [% IF ( review.borrowernumber && ShowReviewer != "none" ) %] by
60
                [% SWITCH ShowReviewer %]
61
                [% CASE 'full' %]
62
                    [% review.borrtitle %] [% review.firstname %] [% review.surname %]
63
                [% CASE 'first' %]
64
                    [% review.firstname %]
65
                [% CASE 'surname' %]
66
                    [% review.surname %]
67
                [% CASE 'firstandinitial' %]
68
                    [% review.firstname %] [% review.surname|truncate(2,'.') %]
69
                [% CASE 'username' %]
70
                    [% review.userid %]
71
                [% END %]
72
            [% END %][% END %]</span></p>
73
        </td>
74
        <td>
75
[% IF ( review.BiblioDefaultViewmarc ) %]<a class="title" href="/cgi-bin/koha/opac-MARCdetail.pl?biblionumber=[% review.biblionumber |url %]" title="View details for this title">
76
    [% ELSE %]
77
    [% IF ( review.BiblioDefaultViewisbd ) %]<a class="title" href="/cgi-bin/koha/opac-ISBDdetail.pl?biblionumber=[% review.biblionumber |url %]" title="View details for this title">
78
    [% ELSE %]<a class="title" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% review.biblionumber |url %]#comments" title="View details for this title">
79
    [% END %]
80
    [% END %]
81
82
83
            [% IF ( OPACAmazonCoverImages ) %][% IF ( review.normalized_isbn ) %]<img src="http://images.amazon.com/images/P/[% review.normalized_isbn %].01.TZZZZZZZ.jpg" alt="" class="thumbnail" />[% ELSE %]<span class="no-image">No cover image available</span>[% END %][% END %]
84
85
            [% IF ( SyndeticsEnabled ) %][% IF ( SyndeticsCoverImages ) %][% IF ( using_https ) %]
86
        <img src="https://secure.syndetics.com/index.aspx?isbn=[% review.normalized_isbn %]/SC.GIF&amp;client=[% SyndeticsClientCode %]&amp;type=xw10&amp;upc=[% review.normalized_upc %]&amp;oclc=[% review.normalized_oclc %]" alt="" class="thumbnail" />
87
        [% ELSE %]
88
        <img src="http://www.syndetics.com/index.aspx?isbn=[% review.normalized_isbn %]/SC.GIF&amp;client=[% SyndeticsClientCode %]&amp;type=xw10&amp;upc=[% review.normalized_upc %]&amp;oclc=[% review.normalized_oclc %]" alt="" class="thumbnail" />[% END %][% END %][% END %]
89
90
        [% IF ( GoogleJackets ) %][% IF ( review.normalized_isbn ) %]<div style="block" title="[% review.biblionumber |url %]" class="[% review.normalized_isbn %]" id="gbs-thumbnail[% loop.count %]"></div>[% ELSE %]<span class="no-image">No cover image available</span>[% END %][% END %]
91
        </a>
92
        [% IF ( BakerTaylorEnabled ) %][% IF ( review.normalized_isbn ) %]<a href="https://[% review.BakerTaylorBookstoreURL |html %][% review.normalized_isbn %]"><img alt="See Baker &amp; Taylor" src="[% review.BakerTaylorImageURL |html %][% review.normalized_isbn %]" /></a>[% ELSE %]<span class="no-image">No cover image available</span>[% END %][% END %]
93
        </td>
94
    </tr>
95
    [% END %]
96
</table>
97
[% IF ( PAGE_NUMBERS ) %]<div class="pages">
98
    <!-- Row of numbers corresponding to showreviews result pages -->
99
        [% IF ( previous_page_offset ) %]<a class="nav" href="/cgi-bin/koha/opac-showreviews.pl?offset=[% previous_page_offset %]">&lt;&lt; Previous</a>
100
        [% ELSE %]
101
        [% IF ( previous_page_first ) %]<a class="nav" href="/cgi-bin/koha/opac-showreviews.pl?offset=0">&lt;&lt; Previous</a>[% END %]
102
        [% END %]
103
    [% FOREACH PAGE_NUMBER IN PAGE_NUMBERS %][% IF ( PAGE_NUMBER.highlight ) %]<span class="current">[% PAGE_NUMBER.pg %]</span>[% ELSE %]<a class="nav" href="/cgi-bin/koha/opac-showreviews.pl?offset=[% PAGE_NUMBER.offset %]">[% PAGE_NUMBER.pg %]</a>[% END %]
104
    [% END %]
105
        [% IF ( next_page_offset ) %]<a class="nav" href="/cgi-bin/koha/opac-showreviews.pl?offset=[% next_page_offset %]">Next &gt;&gt;</a>[% END %]
106
</div>[% END %]
107
</div>
108
</div>
109
</div>
110
[% IF ( OpacNav ) %]
111
<div class="yui-b"><div id="leftmenus" class="container">
112
[% INCLUDE 'navigation.inc' %]
113
</div></div>
114
[% END %]
115
</div>
116
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-suggestions.tt (-243 lines)
Lines 1-243 Link Here
1
[% USE Koha %]
2
[% USE AuthorisedValues %]
3
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo;
4
[% IF ( op_add ) %]Enter a new purchase suggestion[% END %]
5
[% IF ( op_else ) %]Purchase Suggestions[% END %]
6
[% INCLUDE 'doc-head-close.inc' %]
7
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.checkboxes.min.js"></script>
8
[% INCLUDE 'datatables.inc' %]
9
<script type="text/javascript">
10
//<![CDATA[
11
[% IF ( loggedinusername ) %]function enableCheckboxActions(){
12
    // Enable/disable controls if checkboxes are checked
13
    var checkedBoxes = $(".checkboxed input:checkbox:checked");
14
    if ($(checkedBoxes).size()) {
15
      $("#selections").html(_("With selected suggestions: "));
16
      $("#selections-toolbar .links a").removeClass("disabled");
17
    } else {
18
      $("#selections").html(_("Select suggestions to: "));
19
      $("#selections-toolbar .links a").addClass("disabled");
20
    }
21
}[% END %]
22
23
       $(function() {
24
            $("#suggestt").dataTable($.extend(true, {}, dataTablesDefaults, {
25
                "aaSorting": [[ 1, "asc" ]],
26
                "aoColumnDefs": [
27
                  [% IF ( loggedinusername ) %]{ "aTargets": [ 0 ], "bSortable": false, "bSearchable": false }[% END %]
28
                ],
29
                "aoColumns": [
30
                    [% IF ( loggedinusername ) %]null,[% END %]
31
                    { "sType": "anti-the" },
32
                    null,
33
                    [% IF ( OPACViewOthersSuggestions ) %]null,[% END %]
34
                    [% IF Koha.Preference( 'OpacSuggestionManagedBy' ) %]null,[% END %]
35
                    null
36
                ]
37
            }));
38
            [% IF ( loggedinusername ) %]$("span.clearall").html("<a id=\"CheckNone\" href=\"#\">"+_("Clear all")+"<\/a>");
39
            $("span.checkall").html("<a id=\"CheckAll\" href=\"#\">"+_("Select all")+"<\/a>");
40
            $("#CheckAll").click(function(){
41
                $(".checkboxed").checkCheckboxes();
42
                enableCheckboxActions();
43
                return false;
44
            });
45
            $("#CheckNone").click(function(){
46
                $(".checkboxed").unCheckCheckboxes();
47
                enableCheckboxActions();
48
                return false;
49
            });
50
            $(".cb").click(function(){
51
              enableCheckboxActions();
52
            });
53
            $("#removeitems").html("<a href=\"#\" class=\"removeitems tag_hides disabled\">"+_("Delete")+"</a>")
54
            .click(function(){
55
              $("#myform").submit();
56
              return false;
57
            });
58
            enableCheckboxActions();
59
            [% END %]
60
       });
61
62
      function Check(f) {
63
		var _alertString="";
64
		var alertString2;
65
66
	    if(f.title.value.length ==0){
67
			_alertString += _("- You must enter a Title") + "\n";
68
		}
69
70
		if (_alertString.length==0) {
71
			f.submit();
72
		} else {
73
			alertString2 = _("Form not submitted because of the following problem(s)");
74
			alertString2 += "\n------------------------------------------------------------------------------------\n\n";
75
			alertString2 += _alertString;
76
			alert(alertString2);
77
		}
78
	}
79
//]]>
80
</script>
81
</head>
82
[% IF ( loggedinusername ) %]<body id="opac-usersuggestions">[% ELSE %]<body id="opac-suggestions">[% END %]
83
84
<div id="doc3" class="yui-t1">
85
   <div id="bd">
86
[% INCLUDE 'masthead.inc' %]
87
	<div id="yui-main">
88
	<div class="yui-b"><div class="yui-g">
89
<div id="usersuggestions" class="container">
90
[% IF ( op_add ) %]
91
    <h1>Enter a new purchase suggestion</h1>
92
93
    <p>Please fill out this form to make a purchase suggestion. You will receive an email when the library processes your suggestion</p>
94
    <p>Only the title is required, but the more information you enter the easier it will be for the librarians to find the title you're requesting. The "Notes" field can be used to provide any additional information.</p>
95
    <form action="/cgi-bin/koha/opac-suggestions.pl" method="post">
96
   <fieldset class="rows"> <ol>
97
    <li><label class="required" for="title">Title:</label><input type="text" id="title" name="title" size="80" maxlength="255" /></li>
98
    <li><label for="author">Author:</label><input type="text" id="author" name="author" size="50" maxlength="80" /></li>
99
    <li><label for="copyrightdate">Copyright date:</label><input type="text" id="copyrightdate" name="copyrightdate" size="4" maxlength="4" /></li>
100
    <li><label for="isbn">Standard number (ISBN, ISSN or other):</label><input type="text" id="isbn" name="isbn" size="50" maxlength="80" /></li>
101
    <li><label for="publishercode">Publisher:</label><input type="text" id="publishercode" name="publishercode" size="50" maxlength="80" /></li>
102
    <li><label for="collectiontitle">Collection title:</label><input type="text" id="collectiontitle" name="collectiontitle" size="50" maxlength="80" /></li>
103
    <li><label for="place">Publication place:</label><input type="text" id="place" name="place" size="50" maxlength="80" /></li>
104
    <li><label for="itemtype">Item type:</label><select name="itemtype" id="itemtype">
105
            <option value="">Default</option>
106
        [% FOREACH itemtypeloo IN itemtypeloop %]
107
			[% IF ( itemtypeloo.selected ) %]<option value="[% itemtypeloo.itemtype %]" selected="selected"> [% ELSE %]<option value="[% itemtypeloo.itemtype %]"> [% END %] [% itemtypeloo.description %]</option>
108
        [% END %]
109
        </select> </li>
110
    [% IF ( branchloop ) %]
111
    <li><label for="branch">Library:</label>
112
        <select name="branch" id="branch">
113
        [% FOREACH branchloo IN branchloop %]
114
            [% IF ( branchloo.selected ) %]
115
            <option value="[% branchloo.branchcode %]" selected="selected">[% branchloo.branchname %]</option>
116
            [% ELSE %]
117
            <option value="[% branchloo.branchcode %]">[% branchloo.branchname %]</option>
118
            [% END %]
119
        [% END %]
120
        </select>
121
    </li>
122
    [% END %]
123
    [% IF ( patron_reason_loop ) %]<li><label for="patronreason">Reason for suggestion: </label><select name="patronreason" id="patronreason"><option value="">-- Choose --</option>[% FOREACH patron_reason_loo IN patron_reason_loop %]
124
           <option value="[% patron_reason_loo.authorised_value %]">[% patron_reason_loo.lib %]</option>
125
    [% END %]</select></li>[% END %]
126
    <li><label for="note">Notes:</label><textarea name="note" id="note" rows="5" cols="40"></textarea></li>
127
    </ol></fieldset>
128
        <fieldset class="action"><input type="hidden" name="suggestedby" value="[% suggestedbyme %]" /><input type="hidden" name="op" value="add_confirm" /><input type="submit" onclick="Check(this.form); return false;" value="Submit your suggestion" /> <a class="action" href="/cgi-bin/koha/opac-suggestions.pl">Cancel</a></fieldset>
129
    </form>
130
131
[% END %]
132
133
[% IF ( op_else ) %]
134
    <h1>[% IF ( OPACViewOthersSuggestions ) %]Purchase suggestions[% ELSE %][% IF ( loggedinusername ) %]My purchase suggestions[% ELSE %]Purchase suggestions[% END %][% END %]</h1>
135
136
    [% IF ( deleted ) %]<div class="dialog message">The selected suggestions have been deleted.</div>[% END %]
137
    [% IF ( submitted ) %]<div class="dialog message">Your suggestion has been submitted.</div>[% END %]
138
139
    [% IF ( suggestions_loop ) %]
140
    [% IF ( OPACViewOthersSuggestions ) %]
141
	<form action="/cgi-bin/koha/opac-suggestions.pl" method="get">
142
    <table>
143
        <tr>
144
                <th>
145
                    Search for:
146
                </th>
147
                <td>
148
                    <input type="text" name="title" value="[% title |html %]" />
149
                </td>
150
                <th>
151
                Suggested by:
152
                </th>
153
                <td>
154
                    <select name="suggestedby">
155
                        <option value="0">Anyone</option>
156
                        <option value="1">Me</option>
157
                    </select>
158
                </td>
159
                <th>
160
                    <input type="submit" value="Search" />
161
                </th>
162
        </tr>
163
		</table>
164
            </form>[% END %]
165
        <form action="/cgi-bin/koha/opac-suggestions.pl" method="post" id="myform">
166
            <input type="hidden" name="op" value="delete_confirm" />
167
            <div id="toolbar" class="list-actions">[% IF ( loggedinusername ) %]<a class="new" href="/cgi-bin/koha/opac-suggestions.pl?op=add">New purchase suggestion</a>[% ELSE %][% IF ( AnonSuggestions ) %]<a class="new" href="/cgi-bin/koha/opac-suggestions.pl?op=add">New purchase suggestion</a>[% END %][% END %]
168
</div>
169
          [% IF ( loggedinusername ) %]<div id="selections-toolbar" class="list-actions">
170
                  <span class="checkall"></span> <span class="clearall"></span> <span class="sep">|</span>
171
                  <span class="links"><span id="selections">Select suggestions to: </span>
172
                  <span id="removeitems"></span>
173
          </div>[% END %]
174
			<table id="suggestt" class="checkboxed">
175
			<thead><tr>
176
            [% IF ( loggedinusername ) %]<th>&nbsp;</th>[% END %]
177
            <th>Summary</th>
178
            <th>Note</th>
179
            [% IF ( OPACViewOthersSuggestions ) %]<th>Suggested for</th>[% END %]
180
            [% IF Koha.Preference( 'OpacSuggestionManagedBy' ) %]<th>Managed by</th>[% END %]
181
            <th>Status</th>
182
        </tr></thead>
183
        <tbody>[% FOREACH suggestions_loo IN suggestions_loop %]
184
            [% IF ( suggestions_loo.even ) %]<tr>[% ELSE %]<tr class="highlight">[% END %]
185
[% IF ( loggedinusername ) %]<td>
186
    [% IF ( suggestions_loo.showcheckbox ) %]
187
                    <input type="checkbox" class="cb" name="delete_field" value="[% suggestions_loo.suggestionid %]" />
188
    [% END %]
189
                </td>[% END %]
190
                <td>
191
                    <p><strong>[% suggestions_loo.title |html %]</strong></p>
192
                    <p>[% IF ( suggestions_loo.author ) %][% suggestions_loo.author |html %],[% END %]
193
                        [% IF ( suggestions_loo.copyrightdate ) %] - [% suggestions_loo.copyrightdate |html %],[% END %]
194
                        [% IF ( suggestions_loo.publishercode ) %] - [% suggestions_loo.publishercode |html %][% END %]
195
                        [% IF ( suggestions_loo.place ) %]([% suggestions_loo.place |html %])[% END %]
196
                        [% IF ( suggestions_loo.collectiontitle ) %] , [% suggestions_loo.collectiontitle |html%][% END %]
197
                        [% IF ( suggestions_loo.itemtype ) %] - [% suggestions_loo.itemtype %][% END %]
198
                    </p>
199
                </td>
200
                <td>
201
                    [% suggestions_loo.note |html %]
202
                </td>
203
                [% IF ( OPACViewOthersSuggestions ) %]<td>
204
                    [% IF ( suggestions_loo.branchcodesuggestedby ) %][% suggestions_loo.branchcodesuggestedby %][% ELSE %]&nbsp;[% END %]
205
                </td>[% END %]
206
                [% IF Koha.Preference( 'OpacSuggestionManagedBy' ) %]
207
                <td>
208
					[% IF ( suggestions_loo.surnamemanagedby ) %][% suggestions_loo.surnamemanagedby %][% IF ( suggestions_loo.firstnamemanagedby ) %],[% END %] [% suggestions_loo.firstnamemanagedby %][% ELSE %]&nbsp;[% END %]
209
                </td>
210
                [% END %]
211
                <td>
212
                    [% IF    ( suggestions_loo.ASKED ) %]Requested
213
                    [% ELSIF ( suggestions_loo.CHECKED ) %]Checked by the library
214
                    [% ELSIF ( suggestions_loo.ACCEPTED ) %]Accepted by the library
215
                    [% ELSIF ( suggestions_loo.ORDERED ) %]Ordered by the library
216
                    [% ELSIF ( suggestions_loo.REJECTED ) %]Suggestion declined
217
                    [% ELSIF ( suggestions_loo.AVAILABLE ) %]Available in the library
218
                    [% ELSE %] [% AuthorisedValues.GetByCode( 'SUGGEST_STATUS', suggestions_loo.STATUS, 1 ) %] [% END %]
219
220
                    [% IF ( suggestions_loo.reason ) %]([% suggestions_loo.reason |html %])[% END %]
221
                </td>
222
            </tr>
223
        [% END %]
224
       </tbody>
225
    </table> [% IF ( loggedinusername ) %]<fieldset class="action">
226
                <input type="submit" value="Delete selected" />
227
            </fieldset>
228
        [% END %]
229
        </form>
230
    [% ELSE %]<p>There are no pending purchase suggestions.</p> [% IF ( loggedinusername ) %]<p><a class="new" href="/cgi-bin/koha/opac-suggestions.pl?op=add">New purchase suggestion</a></p>[% ELSE %][% IF ( AnonSuggestions ) %]<p><a class="new" href="/cgi-bin/koha/opac-suggestions.pl?op=add">New purchase suggestion</a></p>[% END %][% END %][% END %]
231
	
232
[% END %]
233
</div>
234
</div>
235
</div>
236
</div>
237
<div class="yui-b">
238
<div id="leftmenus" class="container">
239
[% INCLUDE 'navigation.inc' IsPatronPage=1 %]
240
</div>
241
</div>
242
</div>
243
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-tags.tt (-128 lines)
Lines 1-128 Link Here
1
[% USE Koha %]
2
[% USE KohaDates %]
3
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Tags
4
[% INCLUDE 'doc-head-close.inc' %]
5
[% INCLUDE 'datatables.inc' %]
6
<style type="text/css">
7
	fieldset { padding : .3em;margin:.3em 0;}
8
	#tagcloud    {background-color: #F3F3F3; text-align: justify;padding:7px;}
9
	.tag a       {text-decoration: none;}
10
	.tag a:hover {text-decoration: underline;}
11
	.tag         {display: block; padding-left: 1em;}
12
	.tagcount    {display: none;}
13
	.cloudweight {display: none;}
14
	.tagweight {
15
		display: none;
16
		position: relative;
17
		bottom: 0.4em;
18
		color: red;
19
		font-size: 12px;
20
	}
21
</style>
22
<script type="text/javascript">
23
//<![CDATA[
24
    $(document).ready(function(){
25
        $("#mytagst").dataTable($.extend(true, {}, dataTablesDefaults, {
26
            "aaSorting": [[ 2, "asc" ]],
27
            "aoColumnDefs": [
28
              { "aTargets": [ -1 ], "bSortable": false, "bSearchable": false }
29
            ],
30
            "aoColumns": [
31
                null,
32
                { "sType": "anti-the" },
33
                { "sType": "title-string" },
34
                null
35
            ]
36
        }));
37
    });
38
//]]>
39
</script>
40
</head>
41
[% IF ( loggedinusername ) %]<body id="opac-usertags">[% ELSE %]<body id="opac-tags">[% END %]
42
[% IF ( OpacNav||loggedinusername ) %]<div id="doc3" class="yui-t1">[% ELSE %]<div id="doc3" class="yui-t7">[% END %]
43
<div id="bd">
44
[% INCLUDE 'masthead.inc' %]
45
46
<div id="yui-main">
47
  <div class="yui-b"><div class="yui-g">
48
	<div id="usertags" class="container">
49
	[% IF ( ERRORS ) %]
50
	[% FOREACH ERROR IN ERRORS %]
51
		<div class="dialog alert">There was a problem with this operation:
52
		[% IF ( ERROR.tagsdisabled ) %]Sorry, tags are not enabled on this system.
53
		[% ELSIF ( ERROR.badparam ) %]ERROR: illegal parameter [% ERROR.badparam %]
54
		[% ELSIF ( ERROR.login ) %]ERROR: You must log in to complete that action.
55
		[% ELSIF ( ERROR.failed_delete ) %]ERROR: You cannot delete the tag [% ERROR.failed_delete %].
56
					<br />Note: you can only delete your own tags.
57
		[% ELSIF ( ERROR.scrubbed ) %]Note: your tag contained markup code that was removed. 
58
					<br />The tag was added as &quot;[% ERROR.scrubbed %]&quot;.
59
		[% ELSIF ( ERROR.scrubbed_all_bad ) %]Note: your tag was entirely markup code.  It was NOT added.
60
					<br />Please try again with plain text.
61
		[% ELSE %]Unrecognized error.
62
		[% END %]
63
		</div>
64
	[% END %]
65
	[% END %]
66
	<h1>All Tags</h1>
67
	
68
		<form method="get" action="opac-tags.pl">
69
		<fieldset>Show up to <input type="text" name="limit" style="text-align: right;" maxlength="4" size="4" value="[% limit or "100" %]" />
70
			tags[% IF ( opacuserlogin ) %] from other users[% END %].
71
			<input type="submit" value="OK" />
72
            [% IF ( opacuserlogin ) %][% UNLESS ( loggedinusername ) %]
73
            <a href="/cgi-bin/koha/opac-user.pl">Log in</a> to see your own saved tags.
74
            [% END %][% END %]</fieldset>
75
		</form>
76
	
77
	[% IF ( TAGLOOP ) %]
78
	<div id="tagcloud">
79
	[% FOREACH TAGLOO IN TAGLOOP %]
80
            <span class="tag tagweight[% TAGLOO.stratum %]" id="tag[% loop.count %]" style="display:inline;">
81
		<a href="/cgi-bin/koha/opac-search.pl?tag=[% TAGLOO.term |url %]&amp;q=[% TAGLOO.term |url %]">
82
		[% TAGLOO.term |html %]</a>
83
			<span class="tagweight">[% TAGLOO.weight_total %]</span>
84
	</span>
85
	[% END %]
86
	</div>
87
	[% END %]
88
	[% IF ( add_op ) %]
89
	  [% IF ( added_count ) %]
90
		<div class="dialog message">[% added_count %] [% IF ( added_count ==1 ) %] tag[% ELSE %]tags[% END %] successfully added.</div>
91
	  [% END %]
92
	  [% IF ( deleted_count ) %]
93
		<div class="dialog message">[% deleted_count %][% IF ( deleted_count ==1 ) %] tag[% ELSE %]tags[% END %] successfully deleted.</div>
94
	  [% END %]
95
	[% END %]
96
97
	[% IF ( MY_TAGS ) %]
98
		<form method="post" action="opac-tags.pl">
99
		<h2>My Tags</h2>
100
		<table id="mytagst">
101
        <thead><tr><th>Term</th><th>Title</th><th>Date added</th><th>Delete</th>
102
		</tr></thead>
103
	<tbody>[% FOREACH MY_TAG IN MY_TAGS %]
104
        <tr><td class="tagterm"><a href="/cgi-bin/koha/opac-search.pl?tag=[% MY_TAG.term |url %]&amp;q=[% MY_TAG.term |url %]">
105
				[% MY_TAG.term |html %]</a>
106
			</td>
107
			<td><a href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% MY_TAG.biblionumber %]">
108
				[% MY_TAG.bib_summary |html %]</a></td>
109
            <td><span title="[% MY_TAG.date_created %]">[% MY_TAG.date_created | $KohaDates %]</span></td>
110
			<td><input type="submit" name="del[% MY_TAG.tag_id %]" value="Delete" /></td>
111
		</tr>
112
	[% END %]</tbody>
113
		</table>
114
		</form>
115
	[% END %]
116
117
</div>
118
</div>
119
</div>
120
</div>
121
[% IF ( OpacNav||loggedinusername ) %]
122
<div class="yui-b"><div id="leftmenus" class="container">
123
[% INCLUDE 'navigation.inc' IsPatronPage=1 %]
124
</div></div>
125
[% END %]
126
</div>
127
[% INCLUDE 'opac-bottom.inc' %]
128
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-tags_subject.tt (-43 lines)
Lines 1-43 Link Here
1
[% USE Koha %]
2
[% INCLUDE 'doc-head-open.inc' %]
3
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; ISBD
4
[% INCLUDE 'doc-head-close.inc' %]
5
</head>
6
<body id="opac-tags-subject">
7
<div id="doc3" class="yui-t[% IF ( OpacNav ) %]1[% ELSE %]7[% END %]">
8
  <div id="bd">
9
[% INCLUDE 'masthead.inc' %]
10
11
	<div id="yui-main">
12
	  <div class="yui-b"><div class="yui-g">
13
		<div id="subjectcloud" class="container"> <h1>Subject cloud</h1>
14
	[% IF ( OpacCloud ) %]
15
		[% IF ( LOOP ) %]
16
    	<p>This &quot;cloud&quot; shows the most used topics in our catalog.
17
		Click on any subject below to see the items in our collection.</p>
18
        <fieldset>
19
        <legend>Show</legend>
20
        <form action="/cgi-bin/koha/opac-tags_subject.pl" method="post">
21
            <p>up to <input type="text" name="number" value="[% number %]" size="4" maxlength="4" /> subjects <input type="submit" value="OK" /></p>
22
        </form>
23
        </fieldset>
24
25
        [% FOREACH LOO IN LOOP %]
26
            <a href="/cgi-bin/koha/opac-search.pl?idx=su&amp;q=&quot;[% LOO.entry |html %]&quot;" style="font-size:[% LOO.weight %]px;">[% LOO.entry %]</a>
27
        [% END %]
28
		[% ELSE %]
29
			<p>Note: This feature only available to French catalogs where ISBD subjects have been populated, and an index built by separate script.</p>
30
		[% END %]
31
	[% ELSE %]
32
		<p>The ISBD cloud is not enabled.</p>
33
	[% END %]
34
		</div>
35
	  </div></div>
36
	</div>
37
	[% IF ( OpacNav ) %]
38
	<div class="yui-b"><div id="leftmenus" class="container">
39
	[% INCLUDE 'navigation.inc' %]
40
	</div></div>
41
	[% END %]
42
</div>
43
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-topissues.tt (-159 lines)
Lines 1-159 Link Here
1
[% USE Koha %]
2
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Most popular titles
3
[% INCLUDE 'doc-head-close.inc' %]
4
[% INCLUDE 'datatables.inc' %]
5
<script type="text/javascript">
6
//<![CDATA[
7
    $(function() {
8
        $("#topissuest").dataTable($.extend(true, {}, dataTablesDefaults, {
9
            "aoColumnDefs": [
10
              [% IF ( opacuserlogin ) %]{ "aTargets": [ -1 ], "bSortable": false, "bSearchable": false }[% END %]
11
            ],
12
            "aaSorting": [ [2, "desc"], [0, "asc"] ],
13
            "aoColumns": [
14
                { "sType": "anti-the" },
15
                null,
16
                null,
17
                [% IF ( opacuserlogin ) %]null,[% END %]
18
            ]
19
        }));
20
    });
21
function Dopop(link) {
22
    newin=window.open(link,'width=500,height=400,toolbar=false,scrollbars=yes');
23
}
24
//]]>
25
</script>
26
<style type="text/css">
27
	#search-facets fieldset { border: 0; margin: 0;padding:0;}#search-facets ol{padding:.3em;}#search-facets li {list-style-type:none;padding:4px 4px;}#search-facets label{font-weight:bold;display:block;margin:.2em 0;}#search-facets fieldset.action {padding-left:4px;margin:.3em;};
28
</style>
29
</head>
30
<body id="opac-topissues">
31
32
[% IF ( results_loop ) %]
33
<div id="doc3" class="yui-t1">
34
[% ELSE %]
35
[% IF ( OpacNav ) %]
36
<div id="doc3" class="yui-t1">
37
[% ELSE %]
38
<div id="doc3" class="yui-t7">
39
[% END %]
40
[% END %]
41
42
	
43
44
   <div id="bd">
45
[% INCLUDE 'masthead.inc' %]
46
47
	<div id="yui-main">
48
	<div class="yui-b"><div class="yui-g">
49
	<div id="topissues" class="container">
50
    [% IF ( results_loop ) %]
51
    
52
        <table id="topissuest">
53
		<caption>The [% limit %] most checked-out 
54
        [% IF ( itemtype ) %]
55
            [% itemtype %]
56
        [% END %]
57
        [% IF ( branch ) %]
58
        at 
59
        [% branch %]
60
        [% END %]
61
        [% IF ( timeLimitFinite ) %]
62
        in the past [% timeLimitFinite %] months
63
        [% ELSE %] of all time[% END %]
64
    </caption>
65
            <thead><tr>
66
                <th>Title</th>
67
                <th>[% IF ( ccodesearch ) %]Collection[% ELSE %]Item type[% END %]</th>
68
                <th>Checkouts</th>
69
				[% IF ( opacuserlogin ) %]<th>&nbsp;</th>[% END %]
70
				
71
            </tr></thead>
72
                <tbody>[% FOREACH results_loo IN results_loop %]
73
                    <tr>
74
                        <td><a href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% results_loo.biblionumber %]">[% results_loo.title |html %]</a><p>[% results_loo.author %]
75
                        [% IF ( results_loo.publishercode ) %]- [% results_loo.publishercode %][% END %] [% IF ( results_loo.seriestitle ) %]([% results_loo.seriestitle %])[% END %]
76
                        [% IF ( results_loo.place ) %][% results_loo.place %][% END %]
77
                        [% IF ( results_loo.publicationyear ) %]
78
                            [% results_loo.publicationyear %]
79
                        [% ELSIF ( results_loo.copyrightdate ) %]
80
                            [% results_loo.copyrightdate %]
81
                        [% END %]
82
                        [% IF ( results_loo.pages ) %] - [% results_loo.pages %][% END %]
83
                        [% IF ( results_loo.size ) %][% results_loo.size %][% END %]</p>
84
                        </td>
85
                        <td>[% results_loo.description %]</td>
86
                        <td>[% results_loo.tot %]</td>
87
                        [% IF ( opacuserlogin ) %]<td>[% IF ( RequestOnOpac ) %][% UNLESS ( results_loo.norequests ) %]<a href="/cgi-bin/koha/opac-reserve.pl?biblionumber=[% results_loo.biblionumber %]">Place hold</a>[% END %][% END %]</td>[% END %]
88
                        </tr>
89
                [% END %]</tbody>
90
        </table>
91
[% ELSE %]
92
<form method="post" action="/cgi-bin/koha/opac-topissues.pl">
93
		<fieldset class="rows">
94
        <legend>See the most popular titles</legend>
95
          <ol>  <li><label for="limit">Show the top </label> <select name="limit" id="limit">
96
                            [% IF ( limit == 10 ) %]<option value ="10" selected="selected">10 titles</option>[% ELSE %]<option value="10">10 titles</option>[% END %]
97
                            [% IF ( limit == 15 ) %]<option value ="15" selected="selected">15 titles</option>[% ELSE %]<option value="15">15 titles</option>[% END %]
98
                            [% IF ( limit == 20 ) %]<option value ="20" selected="selected">20 titles</option>[% ELSE %]<option value="20">20 titles</option>[% END %]
99
                            [% IF ( limit == 30 ) %]<option value ="30" selected="selected">30 titles</option>[% ELSE %]<option value="30">30 titles</option>[% END %]
100
                            [% IF ( limit == 40 ) %]<option value ="40" selected="selected">40 titles</option>[% ELSE %]<option value="40">40 titles</option>[% END %]
101
                            [% IF ( limit == 50 ) %]<option value ="50" selected="selected">50 titles</option>[% ELSE %]<option value="50">50 titles</option>[% END %]
102
                            [% IF ( limit == 100 ) %]<option value ="100" selected="selected">100 titles</option>[% ELSE %]<option value="100">100 titles</option>[% END %]
103
                        </select>
104
						</li>
105
				<li>
106
               <label for="branch">From: </label>
107
                <select name="branch" id="branch">
108
                <option value="">All libraries</option>
109
                [% FOREACH branchloo IN branchloop %]
110
                    [% IF ( branchloo.selected ) %]
111
                        <option value="[% branchloo.value %]" selected="selected">[% branchloo.branchname %]</option>
112
                    [% ELSE %]
113
                        <option value="[% branchloo.value %]">[% branchloo.branchname %]</option>
114
                    [% END %]
115
                [% END %]
116
                </select>
117
            </li>
118
            <li><label for="itemtype">Limit to: </label>
119
                    <select name="itemtype" id="itemtype">
120
                        [% IF ( ccodesearch ) %]<option value="">All collections</option>[% ELSE %]<option value="">All item types</option>[% END %]
121
                        [% FOREACH itemtypeloo IN itemtypeloop %]
122
                            [% IF ( itemtypeloo.selected ) %]<option value="[% itemtypeloo.value %]" selected="selected">[% ELSE %]<option value="[% itemtypeloo.value %]">[% END %]
123
                                [% itemtypeloo.description %]
124
                            </option>
125
                        [% END %]
126
                    </select></li>
127
			<li>
128
            <label for="timeLimit">of the last:</label> <select name="timeLimit" id="timeLimit">
129
                [% IF ( timeLimit == 3 ) %]<option value="3" selected="selected">3 months</option>[% ELSE %]<option value="3">3 months</option>[% END %]
130
                 [% IF ( timeLimit == 6 ) %]<option value="6" selected="selected">6 months</option>[% ELSE %]<option value="6">6 months</option>[% END %]
131
                 [% IF ( timeLimit == 12 ) %]<option value="12" selected="selected">12 months</option>[% ELSE %]<option value="12">12 months</option>[% END %]
132
                 [% IF ( timeLimit == 999 ) %]<option value="999" selected="selected">No limit</option>[% ELSE %]<option value="999">No limit</option>[% END %]
133
				</select>
134
            </li></ol>
135
        <input type="hidden" name="do_it" value="1" />
136
    </fieldset>
137
	<fieldset class="action">
138
        <input type="submit" value="Submit" /></fieldset>
139
    </form>
140
   [% END %]
141
	</div>
142
</div>
143
</div>
144
</div>
145
[% IF ( results_loop ) %]
146
<div class="yui-b"><div id="usertopissues" class="container">
147
[% INCLUDE 'opac-topissues.inc' %]
148
[% IF ( OpacNav ) %][% INCLUDE 'navigation.inc' %][% END %]
149
</div></div>
150
[% ELSE %]
151
[% IF ( OpacNav ) %]
152
<div class="yui-b"><div id="leftmenus" class="container">
153
[% INCLUDE 'navigation.inc' %]
154
</div></div>
155
[% END %]
156
[% END %]
157
158
</div>
159
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/opac-user.tt (-539 lines)
Lines 1-539 Link Here
1
[% USE Koha %]
2
[% USE KohaDates %]
3
[% INCLUDE 'doc-head-open.inc' %]
4
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Your library home
5
[% INCLUDE 'doc-head-close.inc' %]
6
[% INCLUDE 'calendar.inc' %]
7
[% INCLUDE 'datatables.inc' %]
8
<script type="text/JavaScript">
9
//<![CDATA[
10
var MSG_CONFIRM_DELETE_HOLD   = _("Are you sure you want to cancel this hold?");
11
var MSG_CONFIRM_SUSPEND_HOLDS = _("Are you sure you want to suspend all holds?");
12
var MSG_CONFIRM_RESUME_HOLDS  = _("Are you sure you want to resume all suspended holds?");
13
14
    $(document).ready(function(){
15
16
        $('#opac-user-views').tabs();
17
18
        var dTables = $("#checkoutst,#holdst,#overduest");
19
        dTables.each(function(){
20
            var thIndex = $(this).find("th.psort").index();
21
            $(this).dataTable($.extend(true, {}, dataTablesDefaults, {
22
                "aaSorting" : [[ thIndex, 'asc' ]],
23
                "aoColumnDefs": [
24
                    { "aTargets": [ "nosort" ],"bSortable": false,"bSearchable": false },
25
                    { "sType": "anti-the", "aTargets" : [ "anti-the" ] },
26
                    { "sType": "title-string", "aTargets" : [ "title-string" ] }
27
                ]
28
            }));
29
        });
30
31
    [% IF ( GoogleJackets ) %]KOHA.Google.GetCoverFromIsbn();[% END %]
32
33
    [% IF ( OpacRenewalAllowed && canrenew && !userdebarred ) %]
34
        $("#renewselected").submit(function(){
35
            valid = false;
36
            $("input[type=checkbox]").each(function(){
37
                if($(this).is(':checked')){
38
                    valid = true;
39
                }
40
            });
41
            if(!valid){
42
                alert(_("Nothing has been selected. Check the box for each item you want to renew"));
43
            }
44
            return valid;
45
        });
46
        $("body").on("click","#renewselected_link",function(){
47
            $("#renewselected").submit();
48
        });
49
        $("body").on("click","#renewall_link",function(){
50
            $("#renewall").submit();
51
        });
52
        [% IF ( canrenew && !userdebarred && OpacRenewalAllowed && !( borrower.is_expired && borrower.BlockExpiredPatronOpacActions ) ) %]
53
            $("#checkoutst caption").append("<div id=\"renewcontrols\"><a id=\"renewselected_link\" href=\"#\">"+_("Renew selected")+"</a> <a id=\"renewall_link\" href=\"#\">"+_("Renew all")+"</a></div>");
54
        [% END %]
55
    [% END %]
56
57
    $( ".suspend-until" ).datepicker({ minDate: 1 }); // Require that "until date" be in the future
58
59
    });
60
//]]>
61
</script>
62
</head>
63
<body id="opac-user">
64
<div id="doc3" class="yui-t1">
65
   <div id="bd">
66
[% INCLUDE 'masthead.inc' %]
67
68
    <div id="yui-main">
69
    <div class="yui-b"><div class="yui-g">
70
	<div id="userdetails" class="container">
71
	[% IF ( bor_messages ) %]
72
	       <div class="dialog message">
73
                   <h3>Messages for you</h3>
74
	               <ul>
75
	                       [% FOREACH bor_messages_loo IN bor_messages_loop %]
76
					<li>
77
						<strong>[% bor_messages_loo.message %]</strong><br>
78
                            &nbsp;&nbsp;&nbsp;<i>Written on [% bor_messages_loo.message_date | $KohaDates %] by [% bor_messages_loo.branchname %]</i>
79
					</li>
80
	                        [% END %]
81
82
				[% IF ( opacnote ) %]<li>[% opacnote %]</li>[% END %]
83
	               </ul>
84
	       </div>
85
	[% END %]
86
    [% FOREACH BORROWER_INF IN BORROWER_INFO %]
87
        <h2>Hello, [% INCLUDE 'patron-title.inc' category_type = BORROWER_INF.category_type firstname = BORROWER_INF.firstname surname = BORROWER_INF.surname othernames = BORROWER_INF.othernames cardnumber = BORROWER_INF.cardnumber %]
88
        <span class="hint">(<a href="/cgi-bin/koha/opac-main.pl?logout.x=1">Click here</a> if you're not
89
        [% BORROWER_INF.title %] [% INCLUDE 'patron-title.inc' category_type = BORROWER_INF.category_type firstname = BORROWER_INF.firstname surname = BORROWER_INF.surname othernames = BORROWER_INF.othernames cardnumber = BORROWER_INF.cardnumber %])
90
        </span></h2>
91
        
92
		[% IF ( patronupdate ) %]<div class="dialog message"><h3>Thank you!</h3><p>Your corrections have been submitted to the library, and a staff member will update your record as soon as possible.</p></div>[% END %]
93
		
94
        [% IF ( BORROWER_INF.warndeparture ) %]
95
        <div class="dialog alert" id="warndeparture">
96
                <strong>Please note:</strong><span> Your card will expire on <span id="warndeparture_date">[% BORROWER_INF.warndeparture | $KohaDates %]</span>. Please contact the library for more information.</span>
97
                [% IF ( BORROWER_INF.returnbeforeexpiry ) %]<span id="warndeparture_returnbeforeexpiry"> Also note that you must return all checked out items before your card expires.</span>[% END %]
98
        </div>
99
        [% END %]
100
101
        [% IF ( BORROWER_INF.warnexpired ) %]
102
        <div class="dialog alert" id="warnexpired">
103
            <strong>Please note: </strong><span>Your account has expired as of [% BORROWER_INF.warnexpired | $KohaDates %]. Please contact the library if you wish to renew your account.</span>
104
        </div>
105
        [% END %]
106
107
        [% IF ( RENEW_ERROR ) %]
108
        <div class="dialog alert">
109
                <strong>Please note:</strong>
110
                <span>
111
                    Your loan renewal failed because of the following reason(s):
112
                    [% FOREACH error IN RENEW_ERROR.split('\|') %]
113
                        [% IF error == 'card_expired' %]
114
                            Your account has expired. Please contact the library for more information.
115
                        [% ELSIF error == 'too_many' %]
116
                            You have renewed this item the maximum number of times allowed.
117
                        [% ELSIF error == 'on_reserve' %]
118
                            This item is on hold for another patron.
119
                        [% END %]
120
                    [% END %]
121
                </span>
122
        </div>
123
        [% END %]
124
125
        [% IF ( patron_flagged ) %]
126
		<div class="dialog alert">
127
        <ul>
128
            [% IF ( userdebarred ) %]
129
                <span id="userdebarred"><li><strong>Please note:</strong> Your account has been frozen[% IF ( BORROWER_INF.userdebarreddate ) %] until <span id="userdebarred_date">[% BORROWER_INF.userdebarreddate | $KohaDates %]</span>[% END %][% IF ( BORROWER_INF.debarredcomment ) %] with the comment <span id="userdebarred_comment">"[% BORROWER_INF.debarredcomment %]"</span>[% END %]. 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 contact the library.</li></span>
130
            [% END %]
131
            [% IF ( BORROWER_INF.gonenoaddress ) %]
132
                <span id="gonenoaddress"><li><strong>Please note:</strong> According to our records, we don't have up-to-date [% UNLESS ( BORROWER_INF.OPACPatronDetails ) %]<a href="/cgi-bin/koha/opac-memberentry.pl">contact information</a>[% ELSE %]contact information[% END %] on file.  Please contact the library[% IF ( BORROWER_INF.OPACPatronDetails ) %] or use the <a href="/cgi-bin/koha/opac-memberentry.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)[% END %].</li></span>
133
            [% END %]
134
            [% IF ( BORROWER_INF.lost ) %]
135
                <span id="lost"><li><strong>Please note: </strong> Your library card has been marked as lost or stolen. If this is an error, please contact the library.</li></span>
136
            [% END %]
137
            [% IF ( renewal_blocked_fines ) && ( OpacRenewalAllowed ) %]
138
                <span id="renewal_blocked_fines"><li><strong>Please note: </strong> Since you have <a href="/cgi-bin/koha/opac-account.pl">[% IF renewal_blocked_fines != "0.00" %] more than <span id="renewal_blocked_fines_amount">[% renewal_blocked_fines %]</span> in [% END %] fines</a>, you cannot renew your books online. Please pay your fines if you wish to renew your books.</li></span>
139
            [% END %]
140
        </ul></div>
141
        [% END %]
142
143
        [% SET OPACMySummaryNote = Koha.Preference('OPACMySummaryNote') %]
144
        [% IF OPACMySummaryNote %][% OPACMySummaryNote %][% END %]
145
        
146
<div id="opac-user-views" class="toptabs">
147
        <ul>
148
            <li><a href="#opac-user-checkouts">Checked out</a></li>
149
            [% IF ( overdues_count ) %]<li><a href="#opac-user-overdues">Overdue</a></li>[% END %]
150
[% IF ( OPACFinesTab ) %]
151
            [% IF ( BORROWER_INF.amountoverfive ) %]<li><a href="#opac-user-fines">Fines</a></li>[% END %]
152
            [% IF ( BORROWER_INF.amountoverzero ) %]<li><a href="#opac-user-fines">Fines</a></li>[% END %]
153
            [% IF ( BORROWER_INF.amountlessthanzero ) %]<li><a href="#opac-user-fines">Credits</a></li>[% END %]
154
[% END %]
155
            [% IF ( waiting_count ) %][% IF ( BORROWER_INF.atdestination ) %]<li><a href="#opac-user-waiting">Waiting</a></li>[% END %][% END %]
156
            [% IF ( reserves_count ) %]<li><a href="#opac-user-holds">Holds</a></li>[% END %]
157
        </ul>
158
159
    <div id="opac-user-checkouts">[% IF ( issues_count ) %]
160
        <form id="renewselected" action="/cgi-bin/koha/opac-renew.pl" method="post">
161
    <input type="hidden" name="borrowernumber" value="[% borrowernumber %]">
162
    <input type="hidden" name="from" value="opac_user" />
163
        <table id="checkoutst">
164
        <caption>[% issues_count %] Item(s) checked out</caption>
165
       <thead><tr>
166
        [% IF ( JacketImages ) %]<th class="nosort">&nbsp;</th>[% END %]
167
        <th class="anti-the">Title</th>
168
        <th class="title-string psort">Due</th>
169
        [% UNLESS ( item_level_itypes ) %]<th>Item type</th> [% END %]
170
        [% IF ( show_barcode ) %]<th>Barcode</th>[% END %]
171
        <th>Call No.</th>
172
        [% IF ( OpacRenewalAllowed && !( borrower.is_expired && borrower.BlockExpiredPatronOpacActions ) ) %]
173
        <th class="nosort">Renew</th>
174
        [% END %]
175
[% IF ( OPACFinesTab ) %]
176
        <th>Fines</th>
177
[% END %]
178
        [% IF ( OPACMySummaryHTML ) %]
179
        <th class="nosort">Links</th>
180
        [% END %]
181
        </tr></thead>
182
        <tbody>
183
        <!-- FIXME: the styling for highlight overrides the overdue red background,
184
                so currently we don't use this conditional as the first thing inside the LOOP:
185
        [% UNLESS ( __odd__ ) %]
186
           <tr[% IF ( overdue ) %] class="overdue"[% END %]>
187
        [% ELSE %]
188
           <tr class="[% IF ( overdue ) %]overdue [% END %]highlight">
189
        [% END %]
190
        -->
191
        [% FOREACH ISSUE IN ISSUES %]
192
        [% IF ( ISSUE.overdue ) %]<tr class="overdue">[% ELSE %]<tr>[% END %]
193
194
[% IF ( JacketImages ) %]<td class="jacketcell">
195
196
[% IF ( OPACAmazonCoverImages ) %][% IF ( ISSUE.normalized_isbn ) %]<a href="http://www.amazon.com/gp/reader/[% ISSUE.normalized_isbn %]/ref=sib_dp_pt/002-7879865-0184864#reader-link" title="View on Amazon.com"><img border="0" src="https://images-na.ssl-images-amazon.com/images/P/[% ISSUE.normalized_isbn %].01.THUMBZZZ.jpg" alt="View on Amazon.com" /></a>[% ELSE %]<a href="#"><span class="no-image">No cover image available</span></a>[% END %][% END %]
197
198
[% IF ( GoogleJackets ) %][% IF ( ISSUE.normalized_isbn ) %]<div style="display:block;" title="Click to view in Google Books" class="[% ISSUE.normalized_isbn %]" id="gbs-thumbnail[% loop.count %]"></div>[% ELSE %]<a href="http://books.google.com/books?q=[% ISSUE.title |url %]"><span class="no-image">No cover image available</span></a>[% END %][% END %]
199
200
[% IF ( BakerTaylorEnabled ) %][% IF ( ISSUE.normalized_isbn ) %]<a href="https://[% BakerTaylorBookstoreURL |html %][% ISSUE.normalized_isbn %]"><img alt="See Baker &amp; Taylor" src="[% BakerTaylorImageURL |html %][% ISSUE.normalized_isbn %]" /></a>[% ELSE %]<span class="no-image">No cover image available</span><!-- BakerTaylor needs normalized_isbn! -->[% END %][% END %]
201
202
[% IF ( SyndeticsEnabled ) %][% IF ( SyndeticsCoverImages ) %][% IF ( using_https ) %]
203
<img src="https://secure.syndetics.com/index.aspx?isbn=[% ISSUE.normalized_isbn %]/SC.GIF&amp;client=[% SyndeticsClientCode %]&amp;type=xw10&amp;upc=[% ISSUE.normalized_upc %]&amp;oclc=[% ISSUE.normalized_oclc %]" alt="" class="thumbnail" />
204
[% ELSE %]
205
<img src="http://www.syndetics.com/index.aspx?isbn=[% ISSUE.normalized_isbn %]/SC.GIF&amp;client=[% SyndeticsClientCode %]&amp;type=xw10&amp;upc=[% ISSUE.normalized_upc %]&amp;oclc=[% ISSUE.normalized_oclc %]" alt="" class="thumbnail" />[% END %][% END %][% END %]
206
207
</td>[% END %]
208
209
                <td class="title"><a href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% ISSUE.biblionumber %]">[% ISSUE.title |html %][% FOREACH subtitl IN ISSUE.subtitle %] [% subtitl.subfield %][% END %]</a><span class="item-details">
210
                        [% ISSUE.author %]
211
                    </span></td>
212
                [% IF ( ISSUE.overdue ) %]
213
                    <td class="date_due overdue"><span title="[% ISSUE.date_due %]">[% ISSUE.date_due | $KohaDates as_due_date => 1 %]</span></td>
214
                [% ELSE %]
215
                    <td class="date_due"><span title="[% ISSUE.date_due %]">[% ISSUE.date_due | $KohaDates as_due_date => 1 %]</span></td>
216
                [% END %]
217
                [% UNLESS ( item_level_itypes ) %]<td class="itype">[% IF ( ISSUE.imageurl ) %]<img src="[% ISSUE.imageurl %]" title="[% ISSUE.description %]" alt="[% ISSUE.description %]" />[% END %] [% ISSUE.description %]</td>[% END %]
218
                [% IF ( show_barcode ) %]<td class="barcode">[% ISSUE.barcode %]</td>[% END %]
219
                <td class="call_no">[% ISSUE.itemcallnumber %]</td>
220
                [% IF ( OpacRenewalAllowed && !( borrower.is_expired && borrower.BlockExpiredPatronOpacActions ) ) %]
221
                    <td class="renew">
222
                    [% IF ( ISSUE.status ) %]
223
                        [% IF ( canrenew ) %]
224
                            <input type="checkbox" name="item" value="[% ISSUE.itemnumber %]"/> <a href="/cgi-bin/koha/opac-renew.pl?from=opac_user&amp;item=[% ISSUE.itemnumber %]&amp;borrowernumber=[% ISSUE.borrowernumber %]">Renew</a>
225
                        [% END %]
226
                        <span class="renewals">([% ISSUE.renewsleft %] of [% ISSUE.renewsallowed %] renewals remaining)</span>
227
                    [% ELSIF ( ISSUE.too_many ) %]
228
                        Not renewable
229
                    [% ELSIF ( ISSUE.too_soon ) %]
230
                        No renewal before [% ISSUE.soonestrenewdate %]
231
                        <span class="renewals">([% ISSUE.renewsleft %] of [% ISSUE.renewsallowed %] renewals remaining)</span>
232
                    [% ELSIF ( ISSUE.on_reserve ) %]
233
                        <span class="renewals">(On hold)</span>
234
                    [% END %]
235
                    </td>
236
                [% END %]
237
[% IF ( OPACFinesTab ) %]
238
                <td class="fines">[% IF ( ISSUE.charges ) %]Yes[% ELSE %]No[% END %]</td>
239
[% END %]
240
            [% IF ( OPACMySummaryHTML ) %]
241
                <td class="links">[% ISSUE.MySummaryHTML %]</td>
242
            [% END %]
243
            </tr>
244
        [% END %]</tbody>
245
        </table>
246
        [% IF ( canrenew && !userdebarred && OpacRenewalAllowed && !( borrower.is_expired && borrower.BlockExpiredPatronOpacActions ) ) %]
247
        <input type="submit" value="Renew Selected" />
248
        [% END %]
249
        </form>
250
        [% IF ( canrenew && !userdebarred && OpacRenewalAllowed && !( borrower.is_expired && borrower.BlockExpiredPatronOpacActions ) ) %]
251
        <form id="renewall" action="/cgi-bin/koha/opac-renew.pl" method="post">
252
            <input type="hidden" name="from" value="opac_user" />
253
            <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
254
            [% FOREACH ISSUE IN ISSUES %]
255
            <input type="hidden" name="item" value="[% ISSUE.itemnumber %]" />
256
            [% END %]
257
            <input type="submit" value="Renew all" />
258
        </form>
259
        [% END %]
260
    [% ELSE %]
261
        <table>
262
            <tr><td>You have nothing checked out</td></tr>
263
        </table>
264
    [% END %]</div>
265
266
[% IF ( OPACFinesTab ) %]
267
        <!-- FINES BOX -->
268
        [% IF ( BORROWER_INF.amountoverfive ) %]
269
            <div id="opac-user-fines"> <h3>Fines and charges</h3>
270
            <table>
271
                <tr><th colspan="2">Amount</th></tr>
272
                <tr>
273
                    <td>You currently owe fines and charges amounting to:</td>
274
                    <td><a href="/cgi-bin/koha/opac-account.pl">[% BORROWER_INF.amountoutstanding %]</a></td>
275
                </tr>
276
            </table></div>
277
        [% END %]
278
279
        [% IF ( BORROWER_INF.amountoverzero ) %]
280
           <div id="opac-user-fines"> <h3>Fines and charges</h3>
281
            <table>
282
                <tr><th colspan="2">Amount</th></tr>
283
                <tr><td>You currently owe fines and charges amounting to:</td>
284
                <td><a href="/cgi-bin/koha/opac-account.pl">[% BORROWER_INF.amountoutstanding %]</a></td></tr>
285
            </table></div>
286
        [% END %]
287
288
        [% IF ( BORROWER_INF.amountlessthanzero ) %]
289
          <div id="opac-user-fines">  <h3>Credits</h3>
290
            <table>
291
            <tr><th colspan="2">Amount</th></tr>
292
            <tr><td>You have a credit of:</td><td><a href="/cgi-bin/koha/opac-account.pl">[% BORROWER_INF.amountoutstanding %]</a></td></tr>
293
            </table></div>
294
        [% END %]
295
[% END %]
296
    
297
    [% END %]
298
299
    [% IF ( waiting_count ) %]
300
    [% IF ( atdestination ) %]
301
    <div id="opac-user-waiting">
302
        <table id="waitingt">
303
            <caption>Holds waiting</caption>
304
           <thead> <tr>
305
                <th>Title</th>
306
                <th>Hold date</th>
307
                <th>Pick up library</th>
308
            </tr></thead>
309
            <tbody>[% FOREACH WAITIN IN WAITING %]
310
                <tr>
311
                    <td><img src="[% themelang %]/images/[% WAITIN.itemtype %].gif" alt="[% WAITIN.itemtype %]" title="[% WAITIN.itemtype %]" /></td>
312
                    <td><a href="opac-detail.pl?biblionumber=[% WAITIN.biblionumber %]">
313
                            [% WAITIN.waiting_title %]
314
                        </a><span class="item-details">
315
                            [% WAITIN.author %]
316
                        </span></td>
317
                    <td>[% WAITIN.reservedate | $KohaDates %]</td>
318
                    <td>[% IF ( WAITIN.atdestination ) %]<strong>Waiting</strong> at [% WAITIN.branch %]
319
                        [% ELSE %]
320
                        In transit from [% WAITIN.holdingbranch %] to [% WAITIN.branch %]
321
                        [% END %]</td>
322
                </tr>
323
            [% END %]</tbody>
324
        </table></div>
325
        [% END %]
326
    [% END %]
327
328
[% IF ( overdues_count ) %]
329
<div id="opac-user-overdues"><table id="overduest">
330
<caption>Overdues <span class="count">([% overdues_count %] total)</span></caption>
331
<!-- OVERDUES TABLE ROWS -->
332
<thead><tr>
333
[% IF ( JacketImages ) %]<th class="nosort">&nbsp;</th>[% END %]
334
<th>Title</th>
335
[% UNLESS ( item_level_itypes ) %]<th>Item type</th> [% END %]
336
[% IF ( show_barcode ) %]<th>Barcode</th>[% END %]
337
<th>Call no.</th>
338
<th class="psort">Due</th>
339
[% IF ( OpacRenewalAllowed ) %]
340
                    <th class="nosort">Renew</th>
341
[% END %]
342
[% IF ( OPACFinesTab ) %]
343
<th>Fines</th>
344
[% END %]
345
</tr></thead>
346
347
<tbody>[% FOREACH OVERDUE IN OVERDUES %]
348
<tr>
349
[% IF ( JacketImages ) %]<td class="jacketcell">
350
351
[% IF ( OPACAmazonCoverImages ) %][% IF ( OVERDUE.normalized_isbn ) %]<a href="http://www.amazon.com/gp/reader/[% OVERDUE.normalized_isbn %]/ref=sib_dp_pt/002-7879865-0184864#reader-link" title="View on Amazon.com"><img src="https://images-na.ssl-images-amazon.com/images/P/[% ISSUE.normalized_isbn %].01.THUMBZZZ.jpg" alt="View on Amazon.com" class="thumbnail" /></a>[% ELSE %]<a href="#"><span class="no-image">No cover image available</span></a>[% END %][% END %]
352
353
[% IF ( GoogleJackets ) %][% IF ( OVERDUE.normalized_isbn ) %]<div style="display:block;" title="Click to view in Google Books" class="[% OVERDUE.normalized_isbn %]" id="gbs-thumbnail[% loop.count %]"></div>[% ELSE %]<a href="http://books.google.com/books?q=[% OVERDUE.title |url %]"><span class="no-image">No cover image available</span></a>[% END %][% END %]
354
355
[% IF ( BakerTaylorEnabled ) %][% IF ( OVERDUE.normalized_isbn ) %]<a href="https://[% BakerTaylorBookstoreURL |html %][% OVERDUE.normalized_isbn %]"><img alt="See Baker &amp; Taylor" src="[% BakerTaylorImageURL |html %][% OVERDUE.normalized_isbn %]" /></a>[% ELSE %]<!-- BakerTaylor needs normalized_isbn! --><span class="no-image">No cover image available</span>[% END %][% END %]
356
357
[% IF ( SyndeticsCoverImages ) %]
358
[% IF ( using_https ) %]
359
<img src="https://secure.syndetics.com/index.aspx?isbn=[% OVERDUE.normalized_isbn %]/SC.GIF&amp;client=[% SyndeticsClientCode %]&amp;upc=[% OVERDUE.normalized_upc %]&amp;oclc=[% OVERDUE.normalized_oclc %]&amp;type=xw10" alt="" class="thumbnail"/>
360
[% ELSE %]
361
<img src="http://www.syndetics.com/index.aspx?isbn=[% OVERDUE.normalized_isbn %]/SC.GIF&amp;client=[% SyndeticsClientCode %]&amp;upc=[% OVERDUE.normalized_upc %]&amp;oclc=[% OVERDUE.normalized_oclc %]&amp;type=xw10" alt="" class="thumbnail"/>
362
[% END %]
363
[% END %]
364
</td>[% END %]
365
366
<td><a href="/cgi-bin/koha/opac-detail.pl?bib=[% OVERDUE.biblionumber %]">[% OVERDUE.title |html %][% FOREACH subtitl IN OVERDUE.subtitle %] [% subtitl.subfield %][% END %]</a> <span class="item-details">[% OVERDUE.author %]</span></td>
367
368
[% UNLESS ( item_level_itypes ) %]<td>[% IF ( OVERDUE.imageurl ) %]<img src="[% OVERDUE.imageurl %]" title="[% OVERDUE.description %]" alt="[% OVERDUE.description %]" />[% END %] [% OVERDUE.description %]</td>[% END %]
369
[% IF ( show_barcode ) %]<td>[% OVERDUE.barcode %]</td>[% END %]
370
<td>[% OVERDUE.itemcallnumber %]</td>
371
<td><span title="[% OVERDUE.date_due %]">[% OVERDUE.date_due | $KohaDates as_due_date => 1 %]</span></td>
372
                [% IF ( OpacRenewalAllowed ) %]
373
<td>
374
[% IF ( OVERDUE.debarred ) %]Account frozen
375
[% ELSIF ( OVERDUE.status ) %]
376
[% IF ( canrenew ) %]<a href="/cgi-bin/koha/opac-renew.pl?from=opac_user&amp;item=[% OVERDUE.itemnumber %]&amp;bornum=[% OVERDUE.borrowernumber %]">Renew</a>[% END %] <span class="renewals">([% OVERDUE.renewsleft %] of [% OVERDUE.renewsallowed %] renewals remaining)</span>
377
[% ELSIF ( OVERDUE.onreserve ) %]On hold
378
[% ELSE %]No renewals left
379
[% END %]
380
</td>[% END %]
381
[% IF ( OPACFinesTab ) %]
382
<td>[% IF ( OVERDUE.charges ) %]Yes[% ELSE %]No[% END %]</td>
383
[% END %]
384
</tr>
385
[% END %]</tbody>
386
</table></div>
387
[% END %]
388
    
389
390
    [% IF ( reserves_count ) %]
391
        <div id="opac-user-holds">
392
        <table id="holdst">
393
        <caption>Holds <span class="count">([% reserves_count %] total)</span></caption>
394
395
        <!-- RESERVES TABLE ROWS -->
396
        <thead>
397
            <tr>
398
                <th>Title</th>
399
                <th class="psort">Placed on</th>
400
                [% IF OpacHoldNotes %]
401
                    <th>Notes</th>
402
                [% END %]
403
                <th>Expires on</th>
404
                <th>Pick up location</th>
405
                [% IF ( showpriority ) %]
406
                    <th>Priority</th>
407
                [% END %]
408
                <th>Status</th>
409
                <th class="nosort">Modify</th>
410
                [% IF SuspendHoldsOpac %]
411
                    <th class="nosort" >Suspend individual holds</th>
412
                [% END %]
413
            </tr>
414
        </thead>
415
        <tbody>
416
            [% FOREACH RESERVE IN RESERVES %]
417
           [% IF ( RESERVE.wait ) %]
418
                        [% IF ( RESERVE.atdestination ) %]
419
                            [% IF ( RESERVE.found ) %]
420
                            <tr class="reserved">
421
                            [% ELSE %]
422
                            <tr>
423
                        [% END %]
424
                        [% ELSE %]
425
                            <tr class="transfered">
426
                        [% END %]
427
                    [% ELSE %]
428
                            <tr>
429
                    [% END %]
430
                <td class="title"><a href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% RESERVE.biblionumber %]">[% RESERVE.reserves_title %][% FOREACH subtitl IN RESERVE.subtitle %] [% subtitl.subfield %][% END %]</a>
431
                    [% RESERVE.author %]
432
                </td>
433
                <td class="reservedate"><span title="[% RESERVE.reservedate %]">[% RESERVE.reservedate | $KohaDates %]</span></td>
434
                [% IF OpacHoldNotes %]<td class="reservenotes">[% RESERVE.reservenotes %]</td>[% END %]
435
                <td class="expirationdate">
436
                    [% IF ( RESERVE.expirationdate ) %]
437
                        <span title="[% RESERVE.expirationdate %]">[% RESERVE.expirationdate | $KohaDates %]</span>
438
                    [% ELSE %]
439
                        Never expires
440
                    [% END %]
441
                </td>
442
                <td class="branch">[% RESERVE.branch %]</td>
443
				[% IF ( showpriority ) %]
444
                             <td class="priority">[% RESERVE.priority %] </td>
445
				[% END %]
446
                <td class="status">
447
                    [% IF ( RESERVE.wait ) %]
448
                        [% IF ( RESERVE.atdestination ) %]
449
                            [% IF ( RESERVE.found ) %]
450
                            Item waiting at <b> [% RESERVE.wbrname %]</b>[% IF ( RESERVE.waitingdate ) %] since [% RESERVE.waitingdate | $KohaDates %][% END %]
451
                            <input type="hidden" name="pickup" value="[% RESERVE.wbrcd %]" />
452
                            [% ELSE %]
453
                            Item waiting to be pulled from <b> [% RESERVE.wbrname %]</b>
454
                        [% END %]
455
                        [% ELSE %]
456
                            Item in transit to <b> [% RESERVE.wbrname %]</b> <input type="hidden" name="pickup" value="[% RESERVE.wbrcd %]" />
457
                        [% END %]
458
                    [% ELSE %]
459
                            [% IF ( RESERVE.intransit ) %]
460
                                Item in transit from <b> [% RESERVE.frombranch %]</b> since 
461
                                [% RESERVE.datesent | $KohaDates %]
462
                            [% ELSIF ( RESERVE.suspend ) %]
463
                                Suspended [% IF ( RESERVE.suspend_until ) %] until [% RESERVE.suspend_until %] [% END %]
464
                            [% ELSE %]
465
                                Pending
466
                            [% END %]
467
                    [% END %]
468
                </td>
469
              <td class="modify">
470
		[% IF ( RESERVE.cancelable ) %]
471
			<form action="/cgi-bin/koha/opac-modrequest.pl" method="post">
472
			<input type="hidden" name="biblionumber" value="[% RESERVE.biblionumber %]" />
473
          <input type="hidden" name="reserve_id" value="[% RESERVE.reserve_id %]" />
474
			<input type="submit" name="submit" class="icon delete cancel" value="Cancel" onclick="return confirmDelete(MSG_CONFIRM_DELETE_HOLD);" /></form>
475
		[% ELSE %]
476
		[% END %]
477
		</td>
478
479
        [% IF SuspendHoldsOpac %]
480
            <td>
481
                [% IF ( RESERVE.cancelable ) %]
482
                    <form action="/cgi-bin/koha/opac-modrequest-suspend.pl" method="post">
483
                        <input type="hidden" name="reserve_id" value="[% RESERVE.reserve_id %]" />
484
485
                        [% IF RESERVE.suspend %]
486
                            <input type="submit" name="submit" value="Resume suspended hold" />
487
                        [% ELSE %]
488
                            <input type="submit" name="submit" class="icon delete cancel" value="Suspend hold" />
489
490
                            [% IF AutoResumeSuspendedHolds %]
491
                                <label for="suspend_until_[% RESERVE.reserve_id %]"> until </label>
492
                                <input name="suspend_until" id="suspend_until_[% RESERVE.reserve_id %]" class="suspend-until" readonly="readonly" size="10" />
493
                                <a href="#" style="font-size:85%;text-decoration:none;" onclick="document.getElementById('suspend_until_[% RESERVE.reserve_id %]').value='';return false;">Clear date</a>
494
                            [% END %]
495
                        [% END %]
496
                    </form>
497
                [% END %]
498
            </td>
499
        [% END %]
500
501
            </tr>
502
            [% END %]
503
			</tbody>
504
        </table>
505
506
        [% IF SuspendHoldsOpac %]
507
	<div>
508
            <form action="/cgi-bin/koha/opac-modrequest-suspend.pl" method="post">
509
              <input type="submit" name="submit" class="icon delete cancel" value="Suspend all holds" onclick="return confirmDelete(MSG_CONFIRM_SUSPEND_HOLDS);" />
510
              <input type="hidden" name="suspend" value="1" />
511
512
	      [% IF AutoResumeSuspendedHolds %]
513
	      <label for="suspend_until"> until </label>
514
              <input name="suspend_until" id="suspend_until" class="suspend-until" readonly="readonly" size="10" />
515
              <a href="#" style="font-size:85%;text-decoration:none;" onclick="document.getElementById('suspend_until').value='';return false;">Clear date</a></p>
516
              [% END %]
517
            </form>
518
	</div>
519
	<div>
520
            <form action="/cgi-bin/koha/opac-modrequest-suspend.pl" method="post">
521
              <input type="submit" name="submit" class="icon delete cancel" value="Resume all suspended holds" onclick="return confirmDelete(MSG_CONFIRM_RESUME_HOLDS);" />
522
              <input type="hidden" name="suspend" value="0" />
523
            </form>
524
	</div>
525
        [% END %]
526
    </div>
527
    [% END %]
528
    </div><!-- /opac-user views -->
529
    </div><!-- /userdetails -->
530
</div>
531
</div>
532
</div>
533
<div class="yui-b">
534
<div id="leftmenus" class="container">
535
[% INCLUDE 'navigation.inc' IsPatronPage=1 %]
536
</div>
537
</div>
538
</div>
539
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/sco/help.tt (-48 lines)
Lines 1-48 Link Here
1
[% INCLUDE 'doc-head-open.inc' %][% LibraryName %] &rsaquo; Self checkout</title>
2
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
3
<meta name="generator" content="Koha [% Version %]" /> <!-- leave this for stats -->
4
<link rel="shortcut icon" href="[% interface %]/[% theme %]/images/favicon.ico" type="image/x-icon" />
5
6
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/sco.css" />
7
[% IF ( SCOUserCSS ) %]<style type="text/css">[% SCOUserCSS %]</style>[% END %]
8
9
[% IF ( SCOUserJS ) %]<script type="text/javascript">[% SCOUserJS %]</script>[% END %]
10
</head>
11
<body>
12
<div id="doc" class="yui-t7">
13
  <div id="bd">
14
    <div class="yui-g">
15
16
<h1>Self checkout help</h1>
17
18
[% IF ( SelfCheckHelpMessage ) %]
19
<div id="selfcheckhelpmessage">
20
[% SelfCheckHelpMessage %]
21
</div>
22
[% END %]
23
24
<p>If this is your first time using the self checkout system, or if the system
25
is not behaving as expected, you may want to refer to this guide to get
26
yourself started.</p>
27
28
<h3>Step one: Enter your user id[% IF ( SelfCheckoutByLogin ) %] and password[% END %]</h3>
29
<p>Enter your User ID[% IF ( SelfCheckoutByLogin ) %] and password[% END %], and click the 
30
submit button (or press the enter key).</p>
31
32
<h3>Step two: Scan the barcode for each item, one at a time</h3>
33
<p>Scan each item and wait for the page to reload before scanning the next item.
34
The checked-out item should appear in your checkouts list.
35
The Submit button only needs to be clicked if you enter the barcode manually.</p>
36
37
<h3>Step three: Click the 'Finish' button</h3>
38
<p>If you do not click the 'Finish' button, your session will automatically expire in
39
[% SelfCheckTimeout %] seconds.</p>
40
41
    <div class="button">
42
        <a href="javascript:history.go(-1)">Return to the self-checkout</a>
43
    </div>
44
45
</div></div></div>
46
</body>
47
</html>
48
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/sco/printslip.tt (-26 lines)
Lines 1-26 Link Here
1
[% INCLUDE 'doc-head-open.inc' %]
2
<title>[% title %]</title>
3
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4
<link rel="shortcut icon" href="[% IF ( IntranetFavicon ) %][% IntranetFavicon %][% ELSE %][% interface %]/[% theme %]/images/favicon.ico[% END %]" type="image/x-icon" />
5
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/print.css" />
6
[% IF stylesheet %]
7
<link rel="stylesheet" type="text/css" href="[% stylesheet %]" />
8
[% END %]
9
10
<script language="javascript">
11
    function printThenClose() {
12
        window.print();
13
        window.close();
14
    }
15
</script>
16
</head>
17
<body id="circ_printslip" class="circ" onload="printThenClose();">
18
<div id="receipt">
19
20
[% IF plain %]
21
<pre>
22
[% slip %]
23
</pre>
24
[% ELSE %]
25
[% slip %]
26
[% END %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/sco/receipt.tt (-55 lines)
Lines 1-55 Link Here
1
<!DOCTYPE html PUBLIC "-//W3C//DTD html 4.01 Transitional//EN">
2
<html>
3
4
<head>
5
<title> RECEIPT </title>
6
7
<script language="JavaScript" type="text/javascript">
8
x = 0; 
9
function callPrint()
10
{
11
     while (x == 0)
12
      
13
     {
14
      self.print();
15
      javascript:window.opener.location='/cgi-bin/koha/sco/sco-main.pl?logout.x=1';
16
      x = 1; 
17
     }
18
}
19
20
function closeNow()
21
{
22
  if (x == 1)
23
  {
24
    setTimeout('self.close()',1000);
25
  }    
26
}
27
</script> 
28
29
[% IF ( SCOUserCSS ) %]<style type="text/css">[% SCOUserCSS %]</style>[% END %]
30
[% IF ( SCOUserJS ) %]<script type="text/javascript">[% SCOUserJS %]</script>[% END %]
31
32
</head>
33
34
<body onLoad="callPrint(); closeNow();"> 
35
36
[% branchname %]<br><br>
37
[% cardnumber %]<br>      
38
39
<!-- begin code Mamata-->
40
[% IF ( todayissues ) %]<br>
41
<p><b>Today's checkouts</b></p>
42
[% FOREACH todayissue IN todayissues %]<br>
43
[% todayissue.title |html %]<br> 
44
[% todayissue.author %]<br>
45
[% todayissue.dd %]<br>	    
46
[% todayissue.barcode %]<br>
47
[% END %]
48
[% END %]
49
50
<!-- end code Mamata-->
51
52
53
</body>
54
55
</html>
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/sco/sco-main.tt (-333 lines)
Lines 1-333 Link Here
1
[% USE Koha %]
2
[% USE KohaDates %]
3
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha [% END %] &rsaquo; Self checkout </title>
4
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5
<meta name="generator" content="Koha [% Version %]" /> <!-- leave this for stats -->
6
<link rel="shortcut icon" href="[% interface %]/[% theme %]/images/favicon.ico" type="image/x-icon" />
7
<!-- yui js -->
8
<script type="text/javascript" src="[% yuipath %]/utilities/utilities.js"></script>
9
<script type="text/javascript" src="[% yuipath %]/container/container-min.js"></script>
10
<script type="text/javascript" src="[% yuipath %]/menu/menu-min.js"></script>
11
<script type="text/javascript" src="[% themelang %]/lib/jquery/jquery.js"></script>
12
<script type="text/javascript" src="[% themelang %]/lib/jquery/jquery-ui.js"></script>
13
<script type="text/javascript">//<![CDATA[
14
    function _(s) { return s } // dummy function for gettext
15
//]]>
16
</script>
17
[% INCLUDE 'datatables.inc' %]
18
<script type="text/javascript">//<![CDATA[
19
function mungeHistory() {
20
    // prevent back button from allowing form resubmission
21
    if (history && history.pushState) {
22
        history.replaceState(null, document.title, window.location.href);
23
    }
24
}
25
var mainTimeout;
26
function sco_init() {
27
    mainTimeout = setTimeout(function() {
28
        location.href = '/cgi-bin/koha/sco/sco-main.pl?op=logout';
29
    }, [% SelfCheckTimeout %]);
30
}
31
function dofocus() {    // named function req'd for body onload event by some FF and IE7 security models
32
    // alert("dofocus called");
33
    $(".focus:last").select();
34
}
35
var slip_re = /slip/;
36
function printx_window(print_type) {
37
  var handler = print_type.match(slip_re) ? "printslip" : "moremember";
38
39
  return false;
40
}
41
function checkout_confirm(patronid) {
42
    var   barcode = $("#barcode").val();
43
    // alert("checkout_confirm('" + patronid + "') called for barcode '" + barcode + "'");
44
    if (! barcode) { dofocus(); return false; }    // no barcode
45
    if (barcode == "__KOHA_NEW_CIRC__") {   // magic barcode 
46
        window.location.href='/cgi-bin/koha/sco/sco-main.pl?op=logout';
47
        return false;
48
    }
49
    return true;
50
}
51
52
// build Change Language menus
53
YAHOO.util.Event.onContentReady("changelanguage", function () {
54
  $(".sublangs").each(function(){
55
    var menuid = $(this).attr("id");
56
    var menuid = menuid.replace("show","");
57
58
    var oMenu = new YAHOO.widget.Menu("sub"+menuid, { zindex: 2 });
59
    function positionoMenu() {
60
      oMenu.align("bl", "tl");
61
    }
62
    oMenu.subscribe("beforeShow", function () {
63
    if (this.getRoot() == this) {
64
      positionoMenu();
65
    }
66
    });
67
    oMenu.render();
68
    oMenu.cfg.setProperty("context", ["show"+menuid, "bl", "tl"]);
69
    function onYahooClick(p_oEvent) {
70
      // Position and display the menu
71
      positionoMenu();
72
      oMenu.show();
73
      // Stop propagation and prevent the default "click" behavior
74
      YAHOO.util.Event.stopEvent(p_oEvent);
75
    }
76
    YAHOO.util.Event.addListener("show"+menuid, "click", onYahooClick);
77
    YAHOO.widget.Overlay.windowResizeEvent.subscribe(positionoMenu);
78
  });
79
});
80
81
$(document).ready(function() {
82
    dofocus();
83
    [% IF ( patronid ) %]sco_init();[% END %]
84
    $("#loanTable").dataTable($.extend(true, {}, dataTablesDefaults, {
85
        "aaSorting": [ [2, "desc"], [0, "asc"] ],
86
        "aoColumnDefs": [
87
            { "aTargets": [ "nosort" ],"bSortable": false,"bSearchable": false },
88
            { "sType": "anti-the", "aTargets" : [ "anti-the" ] },
89
            { "sType": "title-string", "aTargets" : [ "title-string" ] }
90
        ]
91
    }));
92
    $("#logout_form").submit(function(){
93
        clearTimeout(mainTimeout);
94
        [% IF Koha.Preference('SelfCheckReceiptPrompt') %]
95
            if( confirm("Would you like to print a receipt?") ) {
96
                window.open("/cgi-bin/koha/sco/printslip.pl?borrowernumber=[% borrowernumber %]&amp;print=qslip");
97
            }
98
        [% END %]
99
        return true;
100
    });
101
});
102
//]]>
103
</script>
104
[% IF ( opacuserjs ) %]<script type="text/javascript">[% opacuserjs %]</script>[% END %]
105
[% IF ( SCOUserJS ) %]<script type="text/javascript">[% SCOUserJS %]</script>[% END %]
106
107
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/sco.css" />
108
[% IF ( OPACUserCSS ) %]<style type="text/css">[% OPACUserCSS %]</style>[% END %]
109
[% IF ( SCOUserCSS ) %]<style type="text/css">[% SCOUserCSS %]</style>[% END %]
110
111
</head>
112
<body onload="dofocus();" onunload="mungeHistory();">
113
114
<div id="doc" class="yui-t7">
115
116
<div id="masthead"><h1>[% LibraryName %] Self checkout system</h1></div>
117
<div id="bd">
118
119
[% IF ( impossible ) %]<!-- We tried to issue, but failed. -->
120
<div class="dialog alert"><h3>Item cannot be checked out.</h3><p>Sorry, this item cannot be checked out at this station.  </p>
121
[% IF ( title ) %]<p>Title: <em>[% title |html %]</em> </p>[% END %]
122
<p>
123
   [% IF ( circ_error_UNKNOWN_BARCODE ) %]
124
    <em>MESSAGE 1:</em> The system does not recognize this barcode.
125
   [% ELSIF ( circ_error_max_loans_allowed ) %]
126
    <em>MESSAGE 2:</em> You have checked out too many items and can't check out any more.
127
   [% ELSIF ( circ_error_ISSUED_TO_ANOTHER ) %]
128
    <em>MESSAGE 3:</em> This item is checked out to someone else.
129
   [% ELSIF ( circ_error_NO_MORE_RENEWALS ) %]
130
    <em>MESSAGE 4:</em> You cannot renew this item again.
131
   [% ELSIF ( circ_error_NOT_FOR_LOAN ) %]
132
    <em>MESSAGE 5:</em> This item is not for loan.
133
   [% ELSIF ( circ_error_DEBT ) %]
134
    <em>MESSAGE 6:</em> You owe the library [% amount %] and cannot check out.
135
   [% ELSIF ( circ_error_WTHDRAWN ) %]
136
    <em>MESSAGE 7:</em> This item has been withdrawn from the collection.
137
   [% ELSIF ( circ_error_RESTRICTED ) %]
138
    <em>MESSAGE 8:</em>
139
   [% ELSIF ( circ_error_RESERVED ) %]
140
    <em>MESSAGE 9:</em> This item is on hold for another patron.
141
   [% ELSIF ( circ_error_ITEMNOTSAMEBRANCH ) %]
142
    <em>MESSAGE 10:</em>
143
   [% ELSIF ( circ_error_EXPIRED ) %]
144
    <em>MESSAGE 11:</em> Your account has expired.
145
   [% ELSIF ( circ_error_DEBARRED ) %]
146
    <em>MESSAGE 12:</em> Your account has been suspended.
147
   [% ELSIF ( circ_error_CARD_LOST ) %]
148
    <em>MESSAGE 13:</em> This card has been declared lost.
149
   [% ELSIF ( circ_error_GNA ) %]
150
    <em>MESSAGE 14:</em>
151
   [% ELSIF ( circ_error_INVALID_DATE ) %]
152
    <em>MESSAGE 15:</em>
153
   [% END %]
154
   Please see a member of the library staff.
155
</p>
156
[% IF ( returnitem ) %]
157
[% IF ( AllowSelfCheckReturns ) %]
158
<form action="/cgi-bin/koha/sco/sco-main.pl" name="errorForm" class="inline" method="post">
159
    <input type="hidden" name="op" value="returnbook" />
160
    <input type="hidden" name="patronid" value="[% patronid %]" />
161
    <input type="hidden" name="barcode" value="[% barcode %]" />
162
    <input type="submit" name="returnbook" value="Return this item" class="return" />
163
</form>
164
[% END %]
165
[% END %]
166
<form action="/cgi-bin/koha/sco/sco-main.pl" name="errorForm" class="inline" method="post">
167
    <input type="hidden" name="op" value="" />
168
    <input type="hidden" name="patronid" value="[% patronid %]" />
169
    <input type="hidden" name="barcode" value="[% barcode %]" />
170
    <input type="submit" name= "confirm" value="Return to account summary" class="back focus" />
171
</form>
172
[% END %]
173
[% IF ( confirm ) %]<!-- We need to confirm the issue.. -->
174
<div class="dialog alert"><h3>Please confirm the checkout:</h3>
175
<p>[% IF ( confirm_renew_issue ) %]This item is already checked out to you.[% END %]</p>
176
177
[% IF ( renew ) %]
178
[% IF ( AllowSelfCheckReturns ) %]
179
    <form action="/cgi-bin/koha/sco/sco-main.pl" name="confirmForm" class="inline" method="post">
180
        <input type="hidden" name="op" value="returnbook" />
181
        <input type="hidden" name="patronid" value="[% patronid %]" />
182
        <input type="hidden" name="barcode" value="[% barcode %]" />
183
        <input type="hidden" name="confirmed" value="" />
184
        <input type="submit" value="Return item" name="confirm" class="return" />
185
    </form>
186
[% END %]
187
[% END %]
188
189
[% UNLESS ( renew ) %]
190
    <form action="/cgi-bin/koha/sco/sco-main.pl" name="confirmForm" class="inline" method="post">
191
        <input type="hidden" name="op" value="checkout" />
192
        <input type="hidden" name="patronid" value="[% patronid %]" />
193
        <input type="hidden" name="barcode" value="[% barcode %]" />
194
        <input type="hidden" name="confirmed" value="1" />
195
        <input type="submit" value="Renew item" name="confirm" class="renew" />
196
      </form>
197
[% ELSE %]
198
    <form action="/cgi-bin/koha/sco/sco-main.pl" name="confirmForm" class="inline" method="post">
199
        <input type="hidden" name="op" value="checkout" />
200
        <input type="hidden" name="patronid" value="[% patronid %]" />
201
        <input type="hidden" name="barcode" value="[% barcode %]" />
202
        <input type="hidden" name="confirmed" value="1" />
203
        <input type="submit" value="Renew item" class="renew" />
204
    </form>
205
[% END %]
206
    <form action="/cgi-bin/koha/sco/sco-main.pl" name="confirmForm" class="inline" method="post">
207
      <input type="hidden" name="op" value="" />
208
      <input type="hidden" name="patronid" value="[% patronid %]" />
209
      <input type="submit" value="Cancel" class="cancel" />
210
    </form>
211
</div>
212
[% END %]
213
214
[% IF ( nopermission ) %]<!-- This is what is displayed if user doesnt have permission --><div class="dialog alert"><h3>Access denied</h3>
215
Sorry, this self-checkout station has lost authentication.  Please contact the administrator to resolve this problem. </div>
216
[% END %]
217
[% IF ( different_ip ) %]<!-- This is what is displayed if user doesnt have permission --><div class="dialog alert"><h3>Session lost</h3>You are accessing self-checkout from a different IP address! please log in again.</div>[% END %]
218
[% IF ( invalid_username_or_password ) %]
219
<!-- This is what is displayed if user doesnt have permission --><div class="dialog alert"><h3>Record not found</h3><p>Your userid was not found in the database.  Please try again.</p></div>[% END %]
220
221
222
[% UNLESS ( hide_main ) %]
223
	<div class="sco_head">
224
	[% UNLESS ( validuser ) %] 
225
    <h3>Self checkout</h3>
226
	[% END %]
227
228
	<div id="checkouthelp">
229
		<a href="/cgi-bin/koha/sco/help.pl">HELP</a> with the self checkout system
230
	</div>
231
232
	[% IF ( patronid ) %]
233
	[% IF ( validuser ) %]
234
    <h3 class="warning">You are logged in as [% borrowername %].</h3>
235
	[% END %]
236
	</div>
237
	[% IF ( nouser ) %]
238
	<div class="dialog alert"><h4>Sorry</h4><p>The userid <strong>[% patronid %]</strong> was not found in the database.  Please try again.</p></div>
239
	<br />
240
	[% END %]
241
	[% END %]
242
243
	[% IF ( validuser ) %]
244
  [% IF ( display_patron_image ) %]<div class="yui-ge"><div class="yui-u first">[% END %]
245
	<div id="newcheckout" class="sco_entry">
246
	<form id="scan_form" name="scan_form" method="post" action="/cgi-bin/koha/sco/sco-main.pl" onsubmit="return checkout_confirm('[% patronid %]');">
247
	<fieldset><legend> Check out[% IF ( AllowSelfCheckReturns ) %], return[% END %] or renew an item: </legend>
248
	<label for="barcode">Scan a new item or enter its barcode:</label>
249
    <input id="barcode" name="barcode" size="20" class="focus" autocomplete="off" />
250
	<input type="hidden" name="op" value="checkout" />
251
	<input type="hidden" name="patronid" value="[% patronid %]" />
252
	<input type="submit" value="Submit" class="submit" /></fieldset>
253
	</form>
254
    <div><form method="post" action="#" id="logout_form"><input type="submit" value="Finish" class="finish" /></form></div>
255
	</div> <!-- sco_entry --> <!-- newcheckout -->
256
  [% IF ( display_patron_image ) %]</div> <!-- /yui-u first -->[% END %]
257
  [% IF ( display_patron_image ) %]
258
  <div class="yui-u">
259
        <img src="/cgi-bin/koha/sco/sco-patron-image.pl?borrowernumber=[% borrowernumber %]" alt="" />
260
  </div>
261
  [% END %]
262
  </div> <!-- /yui-ge -->
263
  <div class="yui-g">
264
	<div id="borrowerdetails">
265
	[% IF ( issues_count ) %]
266
	<table id="loanTable"><caption>Checkouts for [% borrowername %] <span class="count">([% issues_count %] total)</span></caption>
267
	<!-- ISSUES TABLE ROWS -->
268
    <thead>
269
        <tr><th class="anti-the">Title</th><th>Call no.</th><th class="title-string">Due</th><th class="nosort">Renew</th>[% UNLESS ( nofines ) %]<th class="nosort">Fines</th>[% END %]</tr>
270
    </thead>
271
272
    <tbody>
273
	[% FOREACH ISSUE IN ISSUES %]
274
	[% UNLESS ( loop.odd ) %]<tr class="highlight">[% ELSE %]<tr>[% END %]
275
    <!-- FIXME: yet another jacket image breakpoint -->
276
	<td>[% UNLESS ( noitemlinks ) %]<a href="/cgi-bin/koha/opac-detail.pl?bib=[% ISSUE.biblionumber %]">[% ISSUE.title |html %]</a>[% ELSE %]<strong>[% ISSUE.title |html %]</strong>[% END %]<span class="item-details">
277
	[% ISSUE.author %]</span> ([% ISSUE.barcode %])</td>
278
	<td>[% ISSUE.itemcallnumber %]</td>
279
    [% IF ( ISSUE.overdue ) %]<td class="overdue"><span title="[% ISSUE.date_due %]">[% ISSUE.date_due | $KohaDates as_due_date => 1 %]</span></td>[% ELSE %]<td><span title="[% ISSUE.date_due %]">[% ISSUE.date_due | $KohaDates as_due_date => 1 %]</span></td>[% END %]
280
	<td>
281
    <form action="/cgi-bin/koha/sco/sco-main.pl" method="post">
282
    <input type="hidden" name="patronid" value="[% patronid %]" />
283
    <input type="hidden" name="barcode" value="[% ISSUE.barcode %]" />
284
        [% IF ( ISSUE.norenew ) %]
285
          [% IF ( AllowSelfCheckReturns ) %]
286
            <input type="submit" value="Check in item" name="confirm" class="return" />
287
            <input type="hidden" name="op" value="returnbook" />
288
            <input type="hidden" name="confirmed" value=""  />
289
          [% ELSE %]
290
            <span>No renewals allowed</span>
291
          [% END %]
292
        [% ELSE %]
293
            <input type="hidden" name="op" value="checkout" />
294
            <input type="hidden" name="confirmed" value="1" />
295
            [% UNLESS ( ISSUE.renew ) %]<input type="submit" value="Renew item"  name="confirm" class="renew" />
296
            [% ELSE %]<input type="submit" value="Renew item" class="renew" />[% END %]
297
        [% END %]
298
    </form>
299
	</td>
300
	[% UNLESS ( nofines ) %]<td>[% IF ( ISSUE.charges ) %]Yes[% ELSE %]No[% END %]</td>[% END %]</tr>
301
	[% END %]
302
    </tbody>
303
304
	</table>
305
	[% ELSE %]
306
	<h3>You currently have nothing checked out.</h3>
307
	[% END %]
308
</div> <!-- /yui-g -->
309
	[% ELSE %]<!-- not validuser -->
310
	<div class="sco_entry" >
311
	<form id="mainform" action="/cgi-bin/koha/sco/sco-main.pl" name="mainform" method="post">
312
       [% IF ( authbylogin ) %]
313
	<fieldset class="checkout">
314
       <legend>Please login with your username and password</legend>
315
       <label for="patronlogin">Username:</label>
316
	<input type="text" id="patronlogin" class="focus" size="20" name="patronlogin" />
317
       <label for="patronpw">Password:</label>
318
	<input type="password" id="patronpw" size="20" name="patronpw" />
319
       [% ELSE %]
320
	<fieldset class="checkout"><label for="patronid">Please enter your card number:</label> 
321
    <input type="text" id="patronid" class="focus" size="20" name="patronid" autocomplete="off" />
322
	[% END %]
323
324
 	[% FOREACH INPUT IN INPUTS %]<input type="hidden" name="[% INPUT.name |html %]" value="[% INPUT.value |html %]">[% END %]
325
	<input type="hidden" name="op" value="login" />
326
 	<input type="submit" value="Submit" class="submit" /></fieldset></form>
327
	</div>
328
	[% END %]
329
[% END %] <!-- ( / hide main) -->	
330
	
331
	</div>
332
</div>
333
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/search/results.tt (-108 lines)
Lines 1-108 Link Here
1
[% INCLUDE 'doc-head-open.inc' %]
2
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo;
3
[% IF ( searchdesc ) %]
4
    Results of search [% IF ( query_desc ) %]for '[% query_desc | html%]'[% END %][% IF ( limit_desc ) %]&nbsp;with limit(s):&nbsp;'[% limit_desc | html %]'[% END %]
5
[% ELSE %]
6
    You did not specify any search criteria.
7
[% END %]
8
[% INCLUDE 'doc-head-close.inc' %]
9
<link rel="alternate" type="application/rss+xml" title="[% LibraryName |html %] Search RSS Feed" href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi |html %][% limit_cgi |html %]&amp;count=[% countrss |html %]&amp;sort_by=acqdate_dsc&amp;format=rss2" />
10
<script type="text/javascript" src="[% themelang %]/lib/jquery/jquery.js"></script>
11
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/jquery.rating.css" />
12
13
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.checkboxes.min.js"></script>
14
15
<script type="text/javascript">
16
  $(document).ready(function() {
17
    $('#bookbag_form').find("input").hide();
18
    $('#sort_by').change(function() {
19
        $('#bookbag_form').submit();
20
    });
21
  } );
22
</script>
23
</head>
24
25
<body id="results">
26
  <div id="doc3" class="yui-t1">
27
    <div id="bd">
28
29
[% INCLUDE 'masthead.inc' %]
30
31
32
    <div id="yui-main">
33
    <div class="yui-b">
34
    <div id="userresults" class="container">
35
36
[% IF ( query_error ) %]
37
<div class="dialog alert">
38
    <h4>Error:</h4>
39
    [% query_error %]
40
</div>
41
[% END %]
42
43
<!-- Search Results Table -->
44
[% IF ( total ) %]
45
  <div class="num_of_results">
46
    We have [% total %] results for your search
47
  </div>
48
  <div class="searchresults">
49
    <form action="/cgi-bin/koha/opac-search.pl" method="get" name="bookbag_form" id="bookbag_form">
50
      <!-- TABLE RESULTS START -->
51
      <table>
52
        <thead>
53
          <tr>
54
            <th colspan="5" class="resultscontrol">
55
              <div class="resort">
56
                <form method="get" id="sortbyform">
57
                  [% FOREACH param IN follower_params %]
58
                    [% UNLESS param.var == 'sort_by' %]
59
                      <input type="hidden" name='[% param.var |html %]' value='[% param.val %]' />
60
                    [% END %]
61
                  [% END %]
62
                  <label for="sort_by">Sort By: </label>
63
                  <select id="sort_by" name="sort_by">
64
                    [% INCLUDE 'search/resort_form.inc' %]
65
                  </select>
66
                  <input type="submit" value="Go" />
67
                </form>
68
              </div>
69
              <div class="cartlist">
70
                <!-- checkall, clearall are now needed for placehold -->
71
                <span class="checkall"></span>
72
                <span class="clearall"></span>
73
              </div>
74
            </th>
75
          </tr>
76
        </thead>
77
        <!-- Actual Search Results -->
78
        <tbody>
79
          [% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %]
80
            <tr>
81
              <td>
82
                <input type="checkbox" id="bib[% SEARCH_RESULT.biblionumber %]" name="biblionumber" value="[% SEARCH_RESULT.biblionumber %]" /> <label for="bib[% SEARCH_RESULT.biblionumber %]"></label>
83
              </td>
84
              <td>
85
                <a class="title" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% SEARCH_RESULT.biblionumber |url %]" title="View details for this title">[% SEARCH_RESULT.title |html %]</a>
86
                by <a href="/cgi-bin/koha/opac-search.pl?q=author:[% SEARCH_RESULT.author |url %]" title="Search for works by this author" class="author">[% SEARCH_RESULT.author %]</a>
87
              </td>
88
            </tr>
89
          [% END %]
90
        </tbody>
91
      </table>
92
    </form>
93
  </div>
94
  [% INCLUDE 'search/page-numbers.inc' %]
95
[% END %]
96
</div>
97
</div>
98
</div>
99
100
<div class="yui-b">
101
  <div class="container">
102
    [% INCLUDE 'search/facets.inc' %]
103
  </div>
104
</div>
105
106
</div>
107
108
[% INCLUDE 'opac-bottom.inc' %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/svc/shelfbrowser.tt (-2 lines)
Lines 1-2 Link Here
1
[% PROCESS 'shelfbrowser.inc' %]
2
[% INCLUDE shelfbrowser %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/svc/suggestion.tt (-36 lines)
Lines 1-36 Link Here
1
[% IF (render=='standalone') %]
2
[% INCLUDE 'doc-head-open.inc' %]Search suggestions</title>
3
    [% INCLUDE 'doc-head-close.inc' %]
4
</head>
5
<body id="opac-suggestion">
6
    [% IF ( OpacNav ) %]<div id="doc3" class="yui-t1">[% ELSE %]<div id="doc3" class="yui-t7">[% END %]
7
        <div id="bd">
8
            [% INCLUDE 'masthead.inc' %]
9
            <div id="yui-main">
10
            <div class="yui-b">
11
            <div class="yui-ge">
12
            <div class="container">
13
            <h1 class="title">Suggestions</h1>
14
[% END %]
15
[% IF suggestions && suggestions.size %]
16
    <div>
17
    <span class="suggestionlabel">Did you mean:</span>
18
    [% FOREACH suggestion IN suggestions %]
19
        <span class="searchsuggestion"><a href="/cgi-bin/koha/opac-search.pl?q=[% suggestion.search |uri %]">[% suggestion.label |html %]</a></span>
20
    [% END %]
21
    </div>
22
[% ELSE %]
23
    <span class="nosuggestions">Sorry, no suggestions.</span>
24
[% END %]
25
[% IF (render=='standalone') %]
26
    </div>
27
    </div>
28
    </div>
29
    [% IF ( OpacNav ) %]
30
        <div class="yui-b"><div id="leftmenus" class="container">
31
        [% INCLUDE 'navigation.inc' %]
32
        </div></div>
33
    [% END %]
34
    </div>
35
    [% INCLUDE 'opac-bottom.inc' %]
36
[% END %]
(-)a/koha-tmpl/opac-tmpl/prog/en/modules/text/explodedterms.tt (-8 lines)
Lines 1-8 Link Here
1
[%- SWITCH index -%]
2
[%- CASE 'su-na' -%]
3
Search also for narrower subjects
4
[%- CASE 'su-br' -%]
5
Search also for broader subjects
6
[%- CASE 'su-rl' -%]
7
Search also for related subjects
8
[%- END -%]
(-)a/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACDetail.xsl (-1143 lines)
Lines 1-1143 Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
<!-- $Id: MARC21slim2DC.xsl,v 1.1 2003/01/06 08:20:27 adam Exp $ -->
3
<!DOCTYPE stylesheet [<!ENTITY nbsp "&#160;" >]>
4
<xsl:stylesheet version="1.0"
5
  xmlns:marc="http://www.loc.gov/MARC21/slim"
6
  xmlns:items="http://www.koha-community.org/items"
7
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
8
  exclude-result-prefixes="marc items">
9
    <xsl:import href="MARC21slimUtils.xsl"/>
10
    <xsl:output method = "html" indent="yes" omit-xml-declaration = "yes" encoding="UTF-8"/>
11
12
    <xsl:template match="/">
13
            <xsl:apply-templates/>
14
    </xsl:template>
15
16
    <xsl:template match="marc:record">
17
18
        <!-- Option: Display Alternate Graphic Representation (MARC 880)  -->
19
        <xsl:variable name="display880" select="boolean(marc:datafield[@tag=880])"/>
20
21
    <xsl:variable name="UseControlNumber" select="marc:sysprefs/marc:syspref[@name='UseControlNumber']"/>
22
    <xsl:variable name="DisplayOPACiconsXSLT" select="marc:sysprefs/marc:syspref[@name='DisplayOPACiconsXSLT']"/>
23
    <xsl:variable name="OPACURLOpenInNewWindow" select="marc:sysprefs/marc:syspref[@name='OPACURLOpenInNewWindow']"/>
24
    <xsl:variable name="URLLinkText" select="marc:sysprefs/marc:syspref[@name='URLLinkText']"/>
25
    
26
    <xsl:variable name="SubjectModifier"><xsl:if test="marc:sysprefs/marc:syspref[@name='TraceCompleteSubfields']='1'">,complete-subfield</xsl:if></xsl:variable>
27
    <xsl:variable name="UseAuthoritiesForTracings" select="marc:sysprefs/marc:syspref[@name='UseAuthoritiesForTracings']"/>
28
    <xsl:variable name="TraceSubjectSubdivisions" select="marc:sysprefs/marc:syspref[@name='TraceSubjectSubdivisions']"/>
29
    <xsl:variable name="Show856uAsImage" select="marc:sysprefs/marc:syspref[@name='OPACDisplay856uAsImage']"/>
30
    <xsl:variable name="OPACTrackClicks" select="marc:sysprefs/marc:syspref[@name='TrackClicks']"/>
31
    <xsl:variable name="biblionumber" select="marc:datafield[@tag=999]/marc:subfield[@code='c']"/>
32
    <xsl:variable name="TracingQuotesLeft">
33
      <xsl:choose>
34
        <xsl:when test="marc:sysprefs/marc:syspref[@name='UseICU']='1'">{</xsl:when>
35
        <xsl:otherwise>"</xsl:otherwise>
36
      </xsl:choose>
37
    </xsl:variable>
38
    <xsl:variable name="TracingQuotesRight">
39
      <xsl:choose>
40
        <xsl:when test="marc:sysprefs/marc:syspref[@name='UseICU']='1'">}</xsl:when>
41
        <xsl:otherwise>"</xsl:otherwise>
42
      </xsl:choose>
43
    </xsl:variable>
44
        <xsl:variable name="leader" select="marc:leader"/>
45
        <xsl:variable name="leader6" select="substring($leader,7,1)"/>
46
        <xsl:variable name="leader7" select="substring($leader,8,1)"/>
47
        <xsl:variable name="leader19" select="substring($leader,20,1)"/>
48
        <xsl:variable name="controlField008" select="marc:controlfield[@tag=008]"/>
49
        <xsl:variable name="materialTypeCode">
50
            <xsl:choose>
51
                <xsl:when test="$leader19='a'">ST</xsl:when>
52
                <xsl:when test="$leader6='a'">
53
                    <xsl:choose>
54
                        <xsl:when test="$leader7='c' or $leader7='d' or $leader7='m'">BK</xsl:when>
55
                        <xsl:when test="$leader7='i' or $leader7='s'">SE</xsl:when>
56
                        <xsl:when test="$leader7='a' or $leader7='b'">AR</xsl:when>
57
                    </xsl:choose>
58
                </xsl:when>
59
                <xsl:when test="$leader6='t'">BK</xsl:when>
60
                <xsl:when test="$leader6='o' or $leader6='p'">MX</xsl:when>
61
                <xsl:when test="$leader6='m'">CF</xsl:when>
62
                <xsl:when test="$leader6='e' or $leader6='f'">MP</xsl:when>
63
                <xsl:when test="$leader6='g' or $leader6='k' or $leader6='r'">VM</xsl:when>
64
                <xsl:when test="$leader6='i' or $leader6='j'">MU</xsl:when>
65
                <xsl:when test="$leader6='c' or $leader6='d'">PR</xsl:when>
66
            </xsl:choose>
67
        </xsl:variable>
68
        <xsl:variable name="materialTypeLabel">
69
            <xsl:choose>
70
                <xsl:when test="$leader19='a'">Set</xsl:when>
71
                <xsl:when test="$leader6='a'">
72
                    <xsl:choose>
73
                        <xsl:when test="$leader7='c' or $leader7='d' or $leader7='m'">Book</xsl:when>
74
                        <xsl:when test="$leader7='i' or $leader7='s'">
75
                            <xsl:choose>
76
                                <xsl:when test="substring($controlField008,22,1)!='m'">Continuing Resource</xsl:when>
77
                                <xsl:otherwise>Series</xsl:otherwise>
78
                            </xsl:choose>
79
                        </xsl:when>
80
                        <xsl:when test="$leader7='a' or $leader7='b'">Article</xsl:when>
81
                    </xsl:choose>
82
                </xsl:when>
83
                <xsl:when test="$leader6='t'">Book</xsl:when>
84
				<xsl:when test="$leader6='o'">Kit</xsl:when>
85
                <xsl:when test="$leader6='p'">Mixed materials</xsl:when>
86
                <xsl:when test="$leader6='m'">Computer file</xsl:when>
87
                <xsl:when test="$leader6='e' or $leader6='f'">Map</xsl:when>
88
                <xsl:when test="$leader6='g' or $leader6='k' or $leader6='r'">Visual material</xsl:when>
89
                <xsl:when test="$leader6='j'">Music</xsl:when>
90
                <xsl:when test="$leader6='i'">Sound</xsl:when>
91
                <xsl:when test="$leader6='c' or $leader6='d'">Score</xsl:when>
92
            </xsl:choose>
93
        </xsl:variable>
94
95
        <!-- Schema.org type -->
96
        <xsl:variable name="schemaOrgType">
97
            <xsl:choose>
98
                <xsl:when test="$materialTypeLabel='Book'">Book</xsl:when>
99
                <xsl:when test="$materialTypeLabel='Map'">Map</xsl:when>
100
                <xsl:when test="$materialTypeLabel='Music'">MusicAlbum</xsl:when>
101
                <xsl:otherwise>CreativeWork</xsl:otherwise>
102
            </xsl:choose>
103
        </xsl:variable>
104
105
        <!-- Wrapper div for our schema.org object -->
106
        <xsl:element name="div">
107
            <xsl:attribute name="class">record</xsl:attribute>
108
            <xsl:attribute name="vocab">http://schema.org/</xsl:attribute>
109
            <xsl:attribute name="typeof"><xsl:value-of select='$schemaOrgType' /> Product</xsl:attribute>
110
            <xsl:attribute name="resource">#record</xsl:attribute>
111
112
        <!-- Title Statement -->
113
        <!-- Alternate Graphic Representation (MARC 880) -->
114
        <xsl:if test="$display880">
115
            <h1 class="title" property="alternateName">
116
                <xsl:call-template name="m880Select">
117
                    <xsl:with-param name="basetags">245</xsl:with-param>
118
                    <xsl:with-param name="codes">abhfgknps</xsl:with-param>
119
                </xsl:call-template>
120
            </h1>
121
        </xsl:if>
122
123
        <xsl:if test="marc:datafield[@tag=245]">
124
        <h1 class="title" property="name">
125
            <xsl:for-each select="marc:datafield[@tag=245]">
126
                    <xsl:call-template name="subfieldSelect">
127
                        <xsl:with-param name="codes">a</xsl:with-param>
128
                    </xsl:call-template>
129
                    <xsl:if test="marc:subfield[@code='h']">
130
                        <xsl:text> </xsl:text>
131
                        <xsl:call-template name="subfieldSelect">
132
                            <xsl:with-param name="codes">h</xsl:with-param>
133
                        </xsl:call-template>
134
                    </xsl:if>
135
                    <xsl:if test="marc:subfield[@code='b']">
136
                        <xsl:text> </xsl:text>
137
                        <xsl:call-template name="subfieldSelect">
138
                            <xsl:with-param name="codes">b</xsl:with-param>
139
                        </xsl:call-template>
140
                    </xsl:if>
141
                <xsl:text> </xsl:text>
142
                    <xsl:call-template name="subfieldSelect">
143
                        <xsl:with-param name="codes">fgknps</xsl:with-param>
144
                    </xsl:call-template>
145
            </xsl:for-each>
146
        </h1>
147
        </xsl:if>
148
149
        <!-- Author Statement: Alternate Graphic Representation (MARC 880) -->
150
        <xsl:if test="$display880">
151
            <h5 class="author">
152
                <xsl:call-template name="m880Select">
153
                    <xsl:with-param name="basetags">100,110,111,700,710,711</xsl:with-param>
154
                    <xsl:with-param name="codes">abc</xsl:with-param>
155
                    <xsl:with-param name="index">au</xsl:with-param>
156
                    <!-- do not use label 'by ' here, it would be repeated for every occurence of 100,110,111,700,710,711 -->
157
                </xsl:call-template>
158
            </h5>
159
        </xsl:if>
160
        <xsl:choose>
161
            <xsl:when test="marc:datafield[@tag=100] or marc:datafield[@tag=110] or marc:datafield[@tag=111] or marc:datafield[@tag=700] or marc:datafield[@tag=710] or marc:datafield[@tag=711]">
162
                <h5 class="author">by
163
                    <xsl:call-template name="showAuthor">
164
                        <xsl:with-param name="authorfield" select="marc:datafield[@tag=100 or @tag=110 or @tag=111 or @tag=700 or @tag=710 or @tag=711]"/>
165
                        <xsl:with-param name="UseAuthoritiesForTracings" select="$UseAuthoritiesForTracings"/>
166
                        <xsl:with-param name="materialTypeLabel" select="$materialTypeLabel"/>
167
                    </xsl:call-template>
168
                </h5>
169
            </xsl:when>
170
        </xsl:choose>
171
172
   <xsl:if test="$DisplayOPACiconsXSLT!='0'">
173
        <xsl:if test="$materialTypeCode!=''">
174
        <span class="results_summary type"><span class="label">Material type: </span>
175
        <xsl:element name="img"><xsl:attribute name="src">/opac-tmpl/lib/famfamfam/<xsl:value-of select="$materialTypeCode"/>.png</xsl:attribute><xsl:attribute name="alt">materialTypeLabel</xsl:attribute><xsl:attribute name="class">materialtype</xsl:attribute></xsl:element>
176
        <xsl:value-of select="$materialTypeLabel"/>
177
        </span>
178
        </xsl:if>
179
   </xsl:if>
180
181
        <!--Series: Alternate Graphic Representation (MARC 880) -->
182
        <xsl:if test="$display880">
183
            <xsl:call-template name="m880Select">
184
                <xsl:with-param name="basetags">440,490</xsl:with-param>
185
                <xsl:with-param name="codes">av</xsl:with-param>
186
                <xsl:with-param name="class">results_summary series</xsl:with-param>
187
                <xsl:with-param name="label">Series: </xsl:with-param>
188
                <xsl:with-param name="index">se</xsl:with-param>
189
            </xsl:call-template>
190
        </xsl:if>
191
192
        <!-- Series -->
193
        <xsl:if test="marc:datafield[@tag=440 or @tag=490]">
194
        <span class="results_summary series"><span class="label">Series: </span>
195
        <!-- 440 -->
196
        <xsl:for-each select="marc:datafield[@tag=440]">
197
            <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=se,phr:"<xsl:value-of select="marc:subfield[@code='a']"/>"</xsl:attribute>
198
            <xsl:call-template name="chopPunctuation">
199
                            <xsl:with-param name="chopString">
200
                                <xsl:call-template name="subfieldSelect">
201
                                    <xsl:with-param name="codes">av</xsl:with-param>
202
                                </xsl:call-template>
203
                            </xsl:with-param>
204
                        </xsl:call-template>
205
            </a>
206
            <xsl:call-template name="part"/>
207
            <xsl:choose><xsl:when test="position()=last()"><xsl:text>. </xsl:text></xsl:when><xsl:otherwise><xsl:text> ; </xsl:text></xsl:otherwise></xsl:choose>
208
        </xsl:for-each>
209
210
        <!-- 490 Series not traced, Ind1 = 0 -->
211
        <xsl:for-each select="marc:datafield[@tag=490][@ind1!=1]">
212
            <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=se,phr:"<xsl:value-of select="marc:subfield[@code='a']"/>"</xsl:attribute>
213
                        <xsl:call-template name="chopPunctuation">
214
                            <xsl:with-param name="chopString">
215
                                <xsl:call-template name="subfieldSelect">
216
                                    <xsl:with-param name="codes">av</xsl:with-param>
217
                                </xsl:call-template>
218
                            </xsl:with-param>
219
                        </xsl:call-template>
220
            </a>
221
                    <xsl:call-template name="part"/>
222
        <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
223
        </xsl:for-each>
224
        <!-- 490 Series traced, Ind1 = 1 -->
225
        <xsl:if test="marc:datafield[@tag=490][@ind1=1]">
226
            <xsl:for-each select="marc:datafield[@tag=800 or @tag=810 or @tag=811 or @tag=830]">
227
                <xsl:choose>
228
                    <xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']">
229
                        <a href="/cgi-bin/koha/opac-search.pl?q=rcn:{marc:subfield[@code='w']}">
230
                            <xsl:call-template name="chopPunctuation">
231
                                <xsl:with-param name="chopString">
232
                                    <xsl:call-template name="subfieldSelect">
233
                                        <xsl:with-param name="codes">a_t</xsl:with-param>
234
                                    </xsl:call-template>
235
                                </xsl:with-param>
236
                            </xsl:call-template>
237
                        </a>
238
                    </xsl:when>
239
                    <xsl:otherwise>
240
                        <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=se,phr:"<xsl:value-of select="marc:subfield[@code='a']"/>"</xsl:attribute>
241
                            <xsl:call-template name="chopPunctuation">
242
                                <xsl:with-param name="chopString">
243
                                    <xsl:call-template name="subfieldSelect">
244
                                        <xsl:with-param name="codes">a_t</xsl:with-param>
245
                                    </xsl:call-template>
246
                                </xsl:with-param>
247
                            </xsl:call-template>
248
                        </a>
249
                        <xsl:call-template name="part"/>
250
                    </xsl:otherwise>
251
                </xsl:choose>
252
                <xsl:text>: </xsl:text>
253
                <xsl:value-of  select="marc:subfield[@code='v']" />
254
            <xsl:choose><xsl:when test="position()=last()"><xsl:text></xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
255
            </xsl:for-each>
256
        </xsl:if>
257
        </span>
258
        </xsl:if>
259
        
260
        <!-- Analytics -->
261
        <xsl:if test="$leader7='s'">
262
        <span class="results_summary analytics"><span class="label">Analytics: </span>
263
            <a>
264
            <xsl:choose>
265
            <xsl:when test="$UseControlNumber = '1' and marc:controlfield[@tag=001]">
266
                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=rcn:<xsl:value-of select="marc:controlfield[@tag=001]"/>+and+(bib-level:a+or+bib-level:b)</xsl:attribute>
267
            </xsl:when>
268
            <xsl:otherwise>
269
                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=Host-item:<xsl:value-of select="translate(marc:datafield[@tag=245]/marc:subfield[@code='a'], '/', '')"/></xsl:attribute>
270
            </xsl:otherwise>
271
            </xsl:choose>
272
            <xsl:text>Show analytics</xsl:text>
273
            </a>
274
        </span>
275
        </xsl:if>
276
277
        <!-- Volumes of sets and traced series -->
278
        <xsl:if test="$materialTypeCode='ST' or substring($controlField008,22,1)='m'">
279
        <span class="results_summary volumes"><span class="label">Volumes: </span>
280
            <a>
281
            <xsl:choose>
282
            <xsl:when test="$UseControlNumber = '1' and marc:controlfield[@tag=001]">
283
                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=rcn:<xsl:value-of select="marc:controlfield[@tag=001]"/>+not+(bib-level:a+or+bib-level:b)</xsl:attribute>
284
            </xsl:when>
285
            <xsl:otherwise>
286
                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=ti,phr:<xsl:value-of select="translate(marc:datafield[@tag=245]/marc:subfield[@code='a'], '/', '')"/></xsl:attribute>
287
            </xsl:otherwise>
288
            </xsl:choose>
289
            <xsl:text>Show volumes</xsl:text>
290
            </a>
291
        </span>
292
        </xsl:if>
293
294
        <!-- Set -->
295
        <xsl:if test="$leader19='c'">
296
        <span class="results_summary set"><span class="label">Set: </span>
297
        <xsl:for-each select="marc:datafield[@tag=773]">
298
            <a>
299
            <xsl:choose>
300
            <xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']">
301
                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=Control-number:<xsl:call-template name="extractControlNumber"><xsl:with-param name="subfieldW" select="marc:subfield[@code='w']"/></xsl:call-template></xsl:attribute>
302
            </xsl:when>
303
            <xsl:otherwise>
304
                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=ti,phr:<xsl:value-of select="translate(//marc:datafield[@tag=245]/marc:subfield[@code='a'], '.', '')"/></xsl:attribute>
305
            </xsl:otherwise>
306
            </xsl:choose>
307
            <xsl:value-of select="translate(//marc:datafield[@tag=245]/marc:subfield[@code='a'], '.', '')" />
308
            </a>
309
            <xsl:choose>
310
                <xsl:when test="position()=last()"></xsl:when>
311
                <xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise>
312
            </xsl:choose>
313
        </xsl:for-each>
314
        </span>
315
        </xsl:if>
316
317
        <!-- Publisher Statement: Alternate Graphic Representation (MARC 880) -->
318
        <xsl:if test="$display880">
319
            <xsl:call-template name="m880Select">
320
                <xsl:with-param name="basetags">260</xsl:with-param>
321
                <xsl:with-param name="codes">abcg</xsl:with-param>
322
                <xsl:with-param name="class">results_summary publisher</xsl:with-param>
323
                <xsl:with-param name="label">Publisher: </xsl:with-param>
324
            </xsl:call-template>
325
        </xsl:if>
326
327
        <xsl:if test="marc:datafield[@tag=260]">
328
        <span class="results_summary publisher"><span class="label">Publisher: </span>
329
            <xsl:for-each select="marc:datafield[@tag=260]">
330
                <span property="publisher" typeof="Organization">
331
                <xsl:if test="marc:subfield[@code='a']">
332
                    <span property="location">
333
                    <xsl:call-template name="subfieldSelect">
334
                        <xsl:with-param name="codes">a</xsl:with-param>
335
                    </xsl:call-template>
336
                    </span>
337
                </xsl:if>
338
                <xsl:text> </xsl:text>
339
                <xsl:if test="marc:subfield[@code='b']">
340
                <span property="name"><a href="/cgi-bin/koha/opac-search.pl?q=pb:{marc:subfield[@code='b']}">
341
                    <xsl:call-template name="subfieldSelect">
342
                        <xsl:with-param name="codes">b</xsl:with-param>
343
                    </xsl:call-template>
344
                </a></span>
345
                </xsl:if>
346
                </span>
347
                <xsl:text> </xsl:text>
348
                <xsl:if test="marc:subfield[@code='c' or @code='g']">
349
                <span property="datePublished">
350
                    <xsl:call-template name="chopPunctuation">
351
                      <xsl:with-param name="chopString">
352
                        <xsl:call-template name="subfieldSelect">
353
                            <xsl:with-param name="codes">cg</xsl:with-param>
354
                        </xsl:call-template>
355
                       </xsl:with-param>
356
                   </xsl:call-template>
357
                </span>
358
                </xsl:if>
359
                <xsl:choose><xsl:when test="position()=last()"><xsl:text></xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
360
            </xsl:for-each>
361
        </span>
362
        </xsl:if>
363
364
        <!-- Edition Statement: Alternate Graphic Representation (MARC 880) -->
365
        <xsl:if test="$display880">
366
            <xsl:call-template name="m880Select">
367
                <xsl:with-param name="basetags">250</xsl:with-param>
368
                <xsl:with-param name="codes">ab</xsl:with-param>
369
                <xsl:with-param name="class">results_summary edition</xsl:with-param>
370
                <xsl:with-param name="label">Edition: </xsl:with-param>
371
            </xsl:call-template>
372
        </xsl:if>
373
374
        <xsl:if test="marc:datafield[@tag=250]">
375
        <span class="results_summary edition"><span class="label">Edition: </span>
376
            <xsl:for-each select="marc:datafield[@tag=250]">
377
                <span property="bookEdition">
378
                <xsl:call-template name="chopPunctuation">
379
                  <xsl:with-param name="chopString">
380
                    <xsl:call-template name="subfieldSelect">
381
                        <xsl:with-param name="codes">ab</xsl:with-param>
382
                    </xsl:call-template>
383
                   </xsl:with-param>
384
               </xsl:call-template>
385
                </span>
386
                    <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
387
            </xsl:for-each>
388
        </span>
389
        </xsl:if>
390
391
        <!-- Description: Alternate Graphic Representation (MARC 880) -->
392
        <xsl:if test="$display880">
393
            <xsl:call-template name="m880Select">
394
                <xsl:with-param name="basetags">300</xsl:with-param>
395
                <xsl:with-param name="codes">abceg</xsl:with-param>
396
                <xsl:with-param name="class">results_summary description</xsl:with-param>
397
                <xsl:with-param name="label">Description: </xsl:with-param>
398
            </xsl:call-template>
399
        </xsl:if>
400
401
        <xsl:if test="marc:datafield[@tag=300]">
402
        <span class="results_summary description"><span class="label">Description: </span>
403
            <xsl:for-each select="marc:datafield[@tag=300]">
404
                <span property="description">
405
                <xsl:call-template name="chopPunctuation">
406
                  <xsl:with-param name="chopString">
407
                    <xsl:call-template name="subfieldSelect">
408
                        <xsl:with-param name="codes">abceg</xsl:with-param>
409
                    </xsl:call-template>
410
                   </xsl:with-param>
411
               </xsl:call-template>
412
                </span>
413
                    <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
414
            </xsl:for-each>
415
        </span>
416
       </xsl:if>
417
418
       <xsl:if test="marc:datafield[@tag=020]">
419
        <span class="results_summary isbn"><span class="label">ISBN: </span>
420
        <xsl:for-each select="marc:datafield[@tag=020]">
421
        <span property="isbn">
422
        <xsl:variable name="isbn" select="marc:subfield[@code='a']"/>
423
                <xsl:value-of select="marc:subfield[@code='a']"/>
424
                <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
425
        </span>
426
        </xsl:for-each>
427
        </span>
428
        </xsl:if>
429
430
        <xsl:if test="marc:datafield[@tag=022]">
431
        <span class="results_summary issn"><span class="label">ISSN: </span>
432
        <xsl:for-each select="marc:datafield[@tag=022]">
433
                <xsl:value-of select="marc:subfield[@code='a']"/>
434
                <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
435
        </xsl:for-each>
436
        </span>
437
        </xsl:if>
438
439
        <xsl:if test="marc:datafield[@tag=013]">
440
            <span class="results_summary patent_info">
441
                <span class="label">Patent information: </span>
442
                <xsl:for-each select="marc:datafield[@tag=013]">
443
                    <xsl:call-template name="subfieldSelect">
444
                        <xsl:with-param name="codes">acdef</xsl:with-param>
445
                        <xsl:with-param name="delimeter">, </xsl:with-param>
446
                    </xsl:call-template>
447
                <xsl:choose><xsl:when test="position()=last()"><xsl:text></xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
448
                </xsl:for-each>
449
            </span>
450
        </xsl:if>
451
452
        <xsl:if test="marc:datafield[@tag=088]">
453
            <span class="results_summary report_number">
454
                <span class="label">Report number: </span>
455
                <xsl:for-each select="marc:datafield[@tag=088]">
456
                    <xsl:call-template name="subfieldSelect">
457
                        <xsl:with-param name="codes">a</xsl:with-param>
458
                    </xsl:call-template>
459
                <xsl:choose><xsl:when test="position()=last()"><xsl:text></xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
460
                </xsl:for-each>
461
            </span>
462
        </xsl:if>
463
464
        <!-- Other Title  Statement: Alternate Graphic Representation (MARC 880) -->
465
        <xsl:if test="$display880">
466
            <xsl:call-template name="m880Select">
467
                <xsl:with-param name="basetags">246</xsl:with-param>
468
                <xsl:with-param name="codes">abhfgnp</xsl:with-param>
469
                <xsl:with-param name="class">results_summary other_title</xsl:with-param>
470
                <xsl:with-param name="label">Other title: </xsl:with-param>
471
            </xsl:call-template>
472
        </xsl:if>
473
474
        <xsl:if test="marc:datafield[@tag=246]">
475
        <span class="results_summary other_title"><span class="label">Other title: </span>
476
            <xsl:for-each select="marc:datafield[@tag=246]">
477
                <span property="alternateName">
478
                <xsl:call-template name="chopPunctuation">
479
                  <xsl:with-param name="chopString">
480
                    <xsl:call-template name="subfieldSelect">
481
                        <xsl:with-param name="codes">iabhfgnp</xsl:with-param>
482
                    </xsl:call-template>
483
                   </xsl:with-param>
484
               </xsl:call-template>
485
                </span>
486
                    <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
487
            </xsl:for-each>
488
        </span>
489
       </xsl:if>
490
491
492
        <xsl:if test="marc:datafield[@tag=242]">
493
        <span class="results_summary translated_title"><span class="label">Title translated: </span>
494
            <xsl:for-each select="marc:datafield[@tag=242]">
495
                <span property="alternateName">
496
                <xsl:call-template name="chopPunctuation">
497
                  <xsl:with-param name="chopString">
498
                    <xsl:call-template name="subfieldSelect">
499
                        <xsl:with-param name="codes">abchnp</xsl:with-param>
500
                    </xsl:call-template>
501
                   </xsl:with-param>
502
               </xsl:call-template>
503
                </span>
504
                    <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
505
            </xsl:for-each>
506
        </span>
507
       </xsl:if>
508
509
        <!-- Uniform Title  Statement: Alternate Graphic Representation (MARC 880) -->
510
        <xsl:if test="$display880">
511
            <span property="alternateName">
512
            <xsl:call-template name="m880Select">
513
                <xsl:with-param name="basetags">130,240</xsl:with-param>
514
                <xsl:with-param name="codes">adfklmor</xsl:with-param>
515
                <xsl:with-param name="class">results_summary uniform_title</xsl:with-param>
516
                <xsl:with-param name="label">Uniform titles: </xsl:with-param>
517
            </xsl:call-template>
518
            </span>
519
        </xsl:if>
520
521
        <xsl:if test="marc:datafield[@tag=130]|marc:datafield[@tag=240]|marc:datafield[@tag=730][@ind2!=2]">
522
        <span class="results_summary uniform_titles"><span class="label">Uniform titles: </span>
523
        <xsl:for-each select="marc:datafield[@tag=130]|marc:datafield[@tag=240]|marc:datafield[@tag=730][@ind2!=2]">
524
            <span property="alternateName">
525
            <xsl:variable name="str">
526
                <xsl:for-each select="marc:subfield">
527
                    <xsl:if test="(contains('adfklmor',@code) and (not(../marc:subfield[@code='n' or @code='p']) or (following-sibling::marc:subfield[@code='n' or @code='p'])))">
528
                        <xsl:value-of select="text()"/>
529
                        <xsl:text> </xsl:text>
530
                     </xsl:if>
531
                </xsl:for-each>
532
            </xsl:variable>
533
            <xsl:call-template name="chopPunctuation">
534
                <xsl:with-param name="chopString">
535
                    <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
536
537
                </xsl:with-param>
538
            </xsl:call-template>
539
            </span>
540
            <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
541
        </xsl:for-each>
542
        </span>
543
        </xsl:if>
544
545
        <xsl:if test="marc:datafield[substring(@tag, 1, 1) = '6']">
546
            <span class="results_summary subjects"><span class="label">Subject(s): </span>
547
            <xsl:for-each select="marc:datafield[substring(@tag, 1, 1) = '6']">
548
            <span property="keywords">
549
            <a>
550
            <xsl:choose>
551
            <xsl:when test="marc:subfield[@code=9] and $UseAuthoritiesForTracings='1'">
552
                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=an:<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
553
            </xsl:when>
554
            <xsl:when test="$TraceSubjectSubdivisions='1'">
555
                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=<xsl:call-template name="subfieldSelect">
556
                        <xsl:with-param name="codes">abcdfgklmnopqrstvxyz</xsl:with-param>
557
                        <xsl:with-param name="delimeter"> AND </xsl:with-param>
558
                        <xsl:with-param name="prefix">(su<xsl:value-of select="$SubjectModifier"/>:<xsl:value-of select="$TracingQuotesLeft"/></xsl:with-param>
559
                        <xsl:with-param name="suffix"><xsl:value-of select="$TracingQuotesRight"/>)</xsl:with-param>
560
                    </xsl:call-template>
561
                </xsl:attribute>
562
            </xsl:when>
563
            <xsl:otherwise>
564
                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=su<xsl:value-of select="$SubjectModifier"/>:<xsl:value-of select="$TracingQuotesLeft"/><xsl:value-of select="marc:subfield[@code='a']"/><xsl:value-of select="$TracingQuotesRight"/></xsl:attribute>
565
            </xsl:otherwise>
566
            </xsl:choose>
567
            <xsl:call-template name="chopPunctuation">
568
                <xsl:with-param name="chopString">
569
                    <xsl:call-template name="subfieldSelect">
570
                        <xsl:with-param name="codes">abcdfgklmnopqrstvxyz</xsl:with-param>
571
                        <xsl:with-param name="subdivCodes">vxyz</xsl:with-param>
572
                        <xsl:with-param name="subdivDelimiter">-- </xsl:with-param>
573
                    </xsl:call-template>
574
                </xsl:with-param>
575
            </xsl:call-template>
576
            </a>
577
            </span>
578
            <xsl:if test="marc:subfield[@code=9]">
579
                <a class='authlink'>
580
                    <xsl:attribute name="href">/cgi-bin/koha/opac-authoritiesdetail.pl?authid=<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
581
                    <img style="vertical-align:middle" height="15" width="15" src="/opac-tmpl/prog/images/filefind.png"/>
582
                </a>
583
            </xsl:if>
584
            <xsl:choose>
585
            <xsl:when test="position()=last()"></xsl:when>
586
            <xsl:otherwise> | </xsl:otherwise>
587
            </xsl:choose>
588
589
            </xsl:for-each>
590
            </span>
591
        </xsl:if>
592
593
<!-- Image processing code added here, takes precedence over text links including y3z text   -->
594
        <xsl:if test="marc:datafield[@tag=856]">
595
        <span class="results_summary online_resources"><span class="label">Online resources: </span>
596
        <xsl:for-each select="marc:datafield[@tag=856]">
597
            <xsl:variable name="SubqText"><xsl:value-of select="marc:subfield[@code='q']"/></xsl:variable>
598
	    <a property="url">
599
	    <xsl:choose>
600
	      <xsl:when test="$OPACTrackClicks='track'">
601
	        <xsl:attribute name="href">/cgi-bin/koha/tracklinks.pl?uri=<xsl:value-of select="marc:subfield[@code='u']"/>;biblionumber=<xsl:value-of select="$biblionumber"/></xsl:attribute>
602
	      </xsl:when>
603
	      <xsl:when test="$OPACTrackClicks='anonymous'">
604
	        <xsl:attribute name="href">/cgi-bin/koha/tracklinks.pl?uri=<xsl:value-of select="marc:subfield[@code='u']"/>;biblionumber=<xsl:value-of select="$biblionumber"/></xsl:attribute>
605
	      </xsl:when>
606
	      <xsl:otherwise>
607
                <xsl:attribute name="href"><xsl:value-of select="marc:subfield[@code='u']"/></xsl:attribute>
608
	      </xsl:otherwise>
609
	    </xsl:choose>
610
            <xsl:if test="$OPACURLOpenInNewWindow='1'">
611
                <xsl:attribute name="target">_blank</xsl:attribute>
612
            </xsl:if>
613
            <xsl:choose>
614
            <xsl:when test="($Show856uAsImage='Details' or $Show856uAsImage='Both') and (substring($SubqText,1,6)='image/' or $SubqText='img' or $SubqText='bmp' or $SubqText='cod' or $SubqText='gif' or $SubqText='ief' or $SubqText='jpe' or $SubqText='jpeg' or $SubqText='jpg' or $SubqText='jfif' or $SubqText='png' or $SubqText='svg' or $SubqText='tif' or $SubqText='tiff' or $SubqText='ras' or $SubqText='cmx' or $SubqText='ico' or $SubqText='pnm' or $SubqText='pbm' or $SubqText='pgm' or $SubqText='ppm' or $SubqText='rgb' or $SubqText='xbm' or $SubqText='xpm' or $SubqText='xwd')">
615
                <xsl:element name="img"><xsl:attribute name="src"><xsl:value-of select="marc:subfield[@code='u']"/></xsl:attribute><xsl:attribute name="alt"><xsl:value-of select="marc:subfield[@code='y']"/></xsl:attribute><xsl:attribute name="height">100</xsl:attribute></xsl:element><xsl:text></xsl:text>
616
            </xsl:when>                                    
617
            <xsl:when test="marc:subfield[@code='y' or @code='3' or @code='z']">
618
                <xsl:call-template name="subfieldSelect">
619
                    <xsl:with-param name="codes">y3z</xsl:with-param>
620
                </xsl:call-template>
621
            </xsl:when>
622
            <xsl:when test="$URLLinkText!=''">
623
                <xsl:value-of select="$URLLinkText"/>
624
            </xsl:when>
625
            <xsl:otherwise>
626
                <xsl:text>Click here to access online</xsl:text>
627
            </xsl:otherwise>
628
            </xsl:choose>
629
            </a>
630
            <xsl:choose>
631
            <xsl:when test="position()=last()"><xsl:text>  </xsl:text></xsl:when>
632
            <xsl:otherwise> | </xsl:otherwise>
633
            </xsl:choose>
634
        </xsl:for-each>
635
        </span>
636
        </xsl:if>
637
638
        <!-- 530 -->
639
        <xsl:if test="marc:datafield[@tag=530]">
640
        <xsl:for-each select="marc:datafield[@tag=530]">
641
        <span class="results_summary additionalforms">
642
            <xsl:call-template name="subfieldSelect">
643
                <xsl:with-param name="codes">abcd</xsl:with-param>
644
            </xsl:call-template>
645
            <xsl:for-each select="marc:subfield[@code='u']">
646
                <a><xsl:attribute name="href"><xsl:value-of select="text()"/></xsl:attribute>
647
                <xsl:if test="$OPACURLOpenInNewWindow='1'">
648
                    <xsl:attribute name="target">_blank</xsl:attribute>
649
                </xsl:if>
650
                <xsl:value-of select="text()"/>
651
                </a>
652
            </xsl:for-each>
653
        </span>
654
        </xsl:for-each>
655
        </xsl:if>
656
657
        <!-- 505 -->
658
        <xsl:if test="marc:datafield[@tag=505]">
659
        <div class="results_summary contents">
660
        <xsl:for-each select="marc:datafield[@tag=505]">
661
        <xsl:if test="position()=1">
662
            <xsl:choose>
663
            <xsl:when test="@ind1=1">
664
                <span class="label">Incomplete contents:</span>
665
            </xsl:when>
666
            <xsl:when test="@ind1=2">
667
                <span class="label">Partial contents:</span>
668
            </xsl:when>
669
            <xsl:otherwise>
670
                <span class="label">Contents:</span>
671
            </xsl:otherwise>
672
            </xsl:choose>
673
        </xsl:if>
674
        <div class='contentblock' property='description'>
675
        <xsl:choose>
676
        <xsl:when test="@ind2=0">
677
            <xsl:call-template name="subfieldSelectSpan">
678
                <xsl:with-param name="codes">tru</xsl:with-param>
679
            </xsl:call-template>
680
        </xsl:when>
681
        <xsl:otherwise>
682
            <xsl:call-template name="subfieldSelectSpan">
683
                <xsl:with-param name="codes">atru</xsl:with-param>
684
            </xsl:call-template>
685
        </xsl:otherwise>
686
        </xsl:choose>
687
        </div>
688
        </xsl:for-each>
689
        </div>
690
        </xsl:if>
691
692
        <!-- 583 -->
693
        <xsl:if test="marc:datafield[@tag=583]">
694
        <xsl:for-each select="marc:datafield[@tag=583]">
695
            <xsl:if test="@ind1=1 or @ind1=' '">
696
            <span class="results_summary actionnote">
697
                <xsl:choose>
698
                <xsl:when test="marc:subfield[@code='z']">
699
                    <xsl:value-of select="marc:subfield[@code='z']"/>
700
                </xsl:when>
701
                <xsl:otherwise>
702
                    <xsl:call-template name="subfieldSelect">
703
                        <xsl:with-param name="codes">abcdefgijklnou</xsl:with-param>
704
                    </xsl:call-template>
705
                </xsl:otherwise>
706
                </xsl:choose>
707
            </span>
708
            </xsl:if>
709
        </xsl:for-each>
710
        </xsl:if>
711
712
        <!-- 586 -->
713
        <xsl:if test="marc:datafield[@tag=586]">
714
        <xsl:for-each select="marc:datafield[@tag=586]">
715
            <span class="results_summary awardsnote">
716
                <xsl:if test="@ind1=' '">
717
                <span class="label">Awards: </span>
718
                </xsl:if>
719
                <xsl:value-of select="marc:subfield[@code='a']"/>
720
            </span>
721
        </xsl:for-each>
722
        </xsl:if>
723
724
        <!-- 773 -->
725
        <xsl:if test="marc:datafield[@tag=773]">
726
        <xsl:for-each select="marc:datafield[@tag=773]">
727
        <xsl:if test="@ind1=0">
728
        <span class="results_summary in"><span class="label">
729
        <xsl:choose>
730
        <xsl:when test="@ind2=' '">
731
            In:
732
        </xsl:when>
733
        <xsl:when test="@ind2=8">
734
            <xsl:if test="marc:subfield[@code='i']">
735
                <xsl:value-of select="marc:subfield[@code='i']"/>
736
            </xsl:if>
737
        </xsl:when>
738
        </xsl:choose>
739
        </span>
740
                <xsl:variable name="f773">
741
                    <xsl:call-template name="chopPunctuation"><xsl:with-param name="chopString"><xsl:call-template name="subfieldSelect">
742
                        <xsl:with-param name="codes">a_t</xsl:with-param>
743
                    </xsl:call-template></xsl:with-param></xsl:call-template>
744
                </xsl:variable>
745
            <xsl:choose>
746
                <xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']">
747
                    <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=Control-number:<xsl:call-template name="extractControlNumber"><xsl:with-param name="subfieldW" select="marc:subfield[@code='w']"/></xsl:call-template></xsl:attribute>
748
                        <xsl:value-of select="translate($f773, '()', '')"/>
749
                    </a>
750
                    <xsl:if test="marc:subfield[@code='g']"><xsl:text> </xsl:text><xsl:value-of select="marc:subfield[@code='g']"/></xsl:if>
751
                </xsl:when>
752
                <xsl:when test="marc:subfield[@code='0']">
753
                    <a><xsl:attribute name="href">/cgi-bin/koha/opac-detail.pl?biblionumber=<xsl:value-of select="marc:subfield[@code='0']"/></xsl:attribute>
754
                        <xsl:value-of select="$f773"/>
755
                    </a>
756
                </xsl:when>
757
                <xsl:otherwise>
758
                    <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=ti,phr:<xsl:value-of select="translate($f773, '()', '')"/></xsl:attribute>
759
                        <xsl:value-of select="$f773"/>
760
                    </a>
761
                    <xsl:if test="marc:subfield[@code='g']"><xsl:text> </xsl:text><xsl:value-of select="marc:subfield[@code='g']"/></xsl:if>
762
                </xsl:otherwise>
763
            </xsl:choose>
764
        </span>
765
766
        <xsl:if test="marc:subfield[@code='n']">
767
            <span class="results_summary"><xsl:value-of select="marc:subfield[@code='n']"/></span>
768
        </xsl:if>
769
770
        </xsl:if>
771
        </xsl:for-each>
772
        </xsl:if>
773
774
        <xsl:for-each select="marc:datafield[@tag=511]">
775
            <span class="results_summary perf_note">
776
                <span class="label">
777
                    <xsl:if test="@ind1=1"><xsl:text>Cast: </xsl:text></xsl:if>
778
                </span>
779
                <xsl:call-template name="subfieldSelect">
780
                    <xsl:with-param name="codes">a</xsl:with-param>
781
                </xsl:call-template>
782
            </span>
783
        </xsl:for-each>
784
785
        <xsl:if test="marc:datafield[@tag=502]">
786
            <span class="results_summary diss_note">
787
                <span class="label">Dissertation note: </span>
788
                <xsl:for-each select="marc:datafield[@tag=502]">
789
                    <xsl:call-template name="subfieldSelect">
790
                        <xsl:with-param name="codes">abcdgo</xsl:with-param>
791
                    </xsl:call-template>
792
                </xsl:for-each>
793
                <xsl:choose><xsl:when test="position()=last()"><xsl:text></xsl:text></xsl:when><xsl:otherwise><xsl:text> </xsl:text></xsl:otherwise></xsl:choose>
794
            </span>
795
        </xsl:if>
796
797
        <xsl:for-each select="marc:datafield[@tag=520]">
798
        <span class="results_summary summary"><span class="label">
799
        <xsl:choose>
800
          <xsl:when test="@ind1=0"><xsl:text>Subject: </xsl:text></xsl:when>
801
          <xsl:when test="@ind1=1"><xsl:text>Review: </xsl:text></xsl:when>
802
          <xsl:when test="@ind1=2"><xsl:text>Scope and content: </xsl:text></xsl:when>
803
          <xsl:when test="@ind1=3"><xsl:text>Abstract: </xsl:text></xsl:when>
804
          <xsl:when test="@ind1=4"><xsl:text>Content advice: </xsl:text></xsl:when>
805
          <xsl:otherwise><xsl:text>Summary: </xsl:text></xsl:otherwise>
806
        </xsl:choose>
807
        </span>
808
        <xsl:call-template name="subfieldSelect">
809
          <xsl:with-param name="codes">abcu</xsl:with-param>
810
        </xsl:call-template>
811
        </span>
812
        </xsl:for-each>
813
814
        <!-- 866 textual holdings -->
815
        <xsl:if test="marc:datafield[@tag=866]">
816
            <span class="results_summary holdings_note"><span class="label">Holdings note: </span>
817
                <xsl:for-each select="marc:datafield[@tag=866]">
818
                    <xsl:call-template name="subfieldSelect">
819
                        <xsl:with-param name="codes">az</xsl:with-param>
820
                    </xsl:call-template>
821
                    <xsl:choose><xsl:when test="position()=last()"><xsl:text></xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
822
                </xsl:for-each>
823
            </span>
824
        </xsl:if>
825
826
        <!--  775 Other Edition  -->
827
        <xsl:if test="marc:datafield[@tag=775]">
828
        <span class="results_summary other_editions"><span class="label">Other editions: </span>
829
        <xsl:for-each select="marc:datafield[@tag=775]">
830
            <xsl:variable name="f775">
831
                <xsl:call-template name="chopPunctuation"><xsl:with-param name="chopString"><xsl:call-template name="subfieldSelect">
832
                <xsl:with-param name="codes">a_t</xsl:with-param>
833
                </xsl:call-template></xsl:with-param></xsl:call-template>
834
            </xsl:variable>
835
            <xsl:if test="marc:subfield[@code='i']">
836
                <xsl:call-template name="subfieldSelect">
837
                    <xsl:with-param name="codes">i</xsl:with-param>
838
                </xsl:call-template>
839
                <xsl:text>: </xsl:text>
840
            </xsl:if>
841
            <a>
842
            <xsl:choose>
843
            <xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']">
844
                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=Control-number:<xsl:call-template name="extractControlNumber"><xsl:with-param name="subfieldW" select="marc:subfield[@code='w']"/></xsl:call-template></xsl:attribute>
845
            </xsl:when>
846
            <xsl:otherwise>
847
                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=ti,phr:<xsl:value-of select="translate($f775, '()', '')"/></xsl:attribute>
848
            </xsl:otherwise>
849
            </xsl:choose>
850
            <xsl:call-template name="subfieldSelect">
851
                <xsl:with-param name="codes">a_t</xsl:with-param>
852
            </xsl:call-template>
853
            </a>
854
            <xsl:choose>
855
                <xsl:when test="position()=last()"></xsl:when>
856
                <xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise>
857
            </xsl:choose>
858
        </xsl:for-each>
859
        </span>
860
        </xsl:if>
861
862
        <!-- 780 -->
863
        <xsl:if test="marc:datafield[@tag=780]">
864
        <xsl:for-each select="marc:datafield[@tag=780]">
865
        <xsl:if test="@ind1=0">
866
        <span class="results_summary preceeding_entry">
867
        <xsl:choose>
868
        <xsl:when test="@ind2=0">
869
            <span class="label">Continues:</span>
870
        </xsl:when>
871
        <xsl:when test="@ind2=1">
872
            <span class="label">Continues in part:</span>
873
        </xsl:when>
874
        <xsl:when test="@ind2=2">
875
            <span class="label">Supersedes:</span>
876
        </xsl:when>
877
        <xsl:when test="@ind2=3">
878
            <span class="label">Supersedes in part:</span>
879
        </xsl:when>
880
        <xsl:when test="@ind2=4">
881
            <span class="label">Formed by the union: ... and: ...</span>
882
        </xsl:when>
883
        <xsl:when test="@ind2=5">
884
            <span class="label">Absorbed:</span>
885
        </xsl:when>
886
        <xsl:when test="@ind2=6">
887
            <span class="label">Absorbed in part:</span>
888
        </xsl:when>
889
        <xsl:when test="@ind2=7">
890
            <span class="label">Separated from:</span>
891
        </xsl:when>
892
        </xsl:choose>
893
        <xsl:text> </xsl:text>
894
                <xsl:variable name="f780">
895
                    <xsl:call-template name="subfieldSelect">
896
                        <xsl:with-param name="codes">a_t</xsl:with-param>
897
                    </xsl:call-template>
898
                </xsl:variable>
899
            <xsl:choose>
900
                <xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']">
901
                    <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=Control-number:<xsl:call-template name="extractControlNumber"><xsl:with-param name="subfieldW" select="marc:subfield[@code='w']"/></xsl:call-template></xsl:attribute>
902
                        <xsl:value-of select="translate($f780, '()', '')"/>
903
                    </a>
904
                </xsl:when>
905
                <xsl:otherwise>
906
                    <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=ti,phr:<xsl:value-of select="translate($f780, '()', '')"/></xsl:attribute>
907
                        <xsl:value-of select="translate($f780, '()', '')"/>
908
                    </a>
909
                </xsl:otherwise>
910
            </xsl:choose>
911
        </span>
912
913
        <xsl:if test="marc:subfield[@code='n']">
914
            <span class="results_summary"><xsl:value-of select="marc:subfield[@code='n']"/></span>
915
        </xsl:if>
916
917
        </xsl:if>
918
        </xsl:for-each>
919
        </xsl:if>
920
921
        <!-- 785 -->
922
        <xsl:if test="marc:datafield[@tag=785]">
923
        <xsl:for-each select="marc:datafield[@tag=785]">
924
        <xsl:if test="@ind1=0">
925
        <span class="results_summary succeeding_entry">
926
        <xsl:choose>
927
        <xsl:when test="@ind2=0">
928
            <span class="label">Continued by:</span>
929
        </xsl:when>
930
        <xsl:when test="@ind2=1">
931
            <span class="label">Continued in part by:</span>
932
        </xsl:when>
933
        <xsl:when test="@ind2=2">
934
            <span class="label">Superseded by:</span>
935
        </xsl:when>
936
        <xsl:when test="@ind2=3">
937
            <span class="label">Superseded in part by:</span>
938
        </xsl:when>
939
        <xsl:when test="@ind2=4">
940
            <span class="label">Absorbed by:</span>
941
        </xsl:when>
942
        <xsl:when test="@ind2=5">
943
            <span class="label">Absorbed in part by:</span>
944
        </xsl:when>
945
        <xsl:when test="@ind2=6">
946
            <span class="label">Split into .. and ...:</span>
947
        </xsl:when>
948
        <xsl:when test="@ind2=7">
949
            <span class="label">Merged with ... to form ...</span>
950
        </xsl:when>
951
        <xsl:when test="@ind2=8">
952
            <span class="label">Changed back to:</span>
953
        </xsl:when>
954
        </xsl:choose>
955
        <xsl:text> </xsl:text>
956
                   <xsl:variable name="f785">
957
                    <xsl:call-template name="subfieldSelect">
958
                        <xsl:with-param name="codes">a_t</xsl:with-param>
959
                    </xsl:call-template>
960
                </xsl:variable>
961
962
            <xsl:choose>
963
                <xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']">
964
                    <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=Control-number:<xsl:call-template name="extractControlNumber"><xsl:with-param name="subfieldW" select="marc:subfield[@code='w']"/></xsl:call-template></xsl:attribute>
965
                        <xsl:value-of select="translate($f785, '()', '')"/>
966
                    </a>
967
                </xsl:when>
968
                <xsl:otherwise>
969
                    <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=ti,phr:<xsl:value-of select="translate($f785, '()', '')"/></xsl:attribute>
970
                        <xsl:value-of select="translate($f785, '()', '')"/>
971
                    </a>
972
                </xsl:otherwise>
973
            </xsl:choose>
974
975
        </span>
976
977
        <xsl:if test="marc:subfield[@code='n']">
978
            <span class="results_summary"><xsl:value-of select="marc:subfield[@code='n']"/></span>
979
        </xsl:if>
980
981
        </xsl:if>
982
        </xsl:for-each>
983
        </xsl:if>
984
985
    </xsl:element>
986
    </xsl:template>
987
988
    <xsl:template name="showAuthor">
989
        <xsl:param name="authorfield" />
990
        <xsl:param name="UseAuthoritiesForTracings" />
991
        <xsl:param name="materialTypeLabel" />
992
        <xsl:for-each select="$authorfield">
993
            <xsl:choose><xsl:when test="position()!=1"><xsl:text>; </xsl:text></xsl:when></xsl:choose>
994
            <xsl:choose>
995
                <xsl:when test="not(@tag=111 or @tag=711)" />
996
                <xsl:when test="marc:subfield[@code='n']">
997
                    <xsl:text> </xsl:text>
998
                    <xsl:call-template name="subfieldSelect">
999
                        <xsl:with-param name="codes">n</xsl:with-param>
1000
                    </xsl:call-template>
1001
                    <xsl:text> </xsl:text>
1002
                </xsl:when>
1003
            </xsl:choose>
1004
            <a>
1005
                <xsl:choose>
1006
                    <xsl:when test="marc:subfield[@code=9] and $UseAuthoritiesForTracings='1'">
1007
                        <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=an:"<xsl:value-of select="marc:subfield[@code=9]"/>"</xsl:attribute>
1008
                    </xsl:when>
1009
                    <xsl:otherwise>
1010
                        <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=au:"<xsl:value-of select="marc:subfield[@code='a']"/>"</xsl:attribute>
1011
                    </xsl:otherwise>
1012
                </xsl:choose>
1013
                <span resource="#record"><span>
1014
                    <xsl:choose>
1015
                        <xsl:when test="substring(@tag, 1, 1)='1'">
1016
                            <xsl:choose>
1017
                                <xsl:when test="$materialTypeLabel='Music'"><xsl:attribute name="property">byArtist</xsl:attribute></xsl:when>
1018
                                <xsl:otherwise><xsl:attribute name="property">author</xsl:attribute></xsl:otherwise>
1019
                            </xsl:choose>
1020
                        </xsl:when>
1021
                        <xsl:otherwise><xsl:attribute name="property">contributor</xsl:attribute></xsl:otherwise>
1022
                    </xsl:choose>
1023
                    <xsl:choose>
1024
                        <xsl:when test="substring(@tag, 2, 1)='0'">
1025
                            <xsl:choose>
1026
                                <xsl:when test="$materialTypeLabel='Music'"><xsl:attribute name="typeof">MusicGroup</xsl:attribute></xsl:when>
1027
                                <xsl:otherwise><xsl:attribute name="typeof">Person</xsl:attribute></xsl:otherwise>
1028
                            </xsl:choose>
1029
                        </xsl:when>
1030
                        <xsl:otherwise><xsl:attribute name="typeof">Organization</xsl:attribute></xsl:otherwise>
1031
                    </xsl:choose>
1032
                <span property="name">
1033
                <xsl:choose>
1034
                    <xsl:when test="@tag=100 or @tag=700"><xsl:call-template name="nameABCQ"/></xsl:when>
1035
                    <xsl:when test="@tag=110 or @tag=710"><xsl:call-template name="nameABCDN"/></xsl:when>
1036
                    <xsl:when test="@tag=111 or @tag=711"><xsl:call-template name="nameACDEQ"/></xsl:when>
1037
                </xsl:choose>
1038
                </span></span></span>
1039
                <!-- add relator code too between brackets-->
1040
                <xsl:if test="marc:subfield[@code='4' or @code='e']">
1041
                    <span class="relatorcode">
1042
                    <xsl:text> [</xsl:text>
1043
                    <xsl:choose>
1044
                        <xsl:when test="marc:subfield[@code=4]"><xsl:value-of select="marc:subfield[@code=4]"/></xsl:when>
1045
                        <xsl:otherwise><xsl:value-of select="marc:subfield[@code='e']"/></xsl:otherwise>
1046
                    </xsl:choose>
1047
                    <xsl:text>]</xsl:text>
1048
                    </span>
1049
                </xsl:if>
1050
            </a>
1051
            <xsl:if test="marc:subfield[@code=9]">
1052
                <a class='authlink'>
1053
                    <xsl:attribute name="href">/cgi-bin/koha/opac-authoritiesdetail.pl?authid=<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
1054
                    <img style="vertical-align:middle" height="15" width="15" src="/opac-tmpl/prog/images/filefind.png"/>
1055
                </a>
1056
            </xsl:if>
1057
        </xsl:for-each>
1058
        <xsl:text>.</xsl:text>
1059
    </xsl:template>
1060
1061
    <xsl:template name="nameABCQ">
1062
            <xsl:call-template name="chopPunctuation">
1063
                <xsl:with-param name="chopString">
1064
                    <xsl:call-template name="subfieldSelect">
1065
                        <xsl:with-param name="codes">abcq</xsl:with-param>
1066
                    </xsl:call-template>
1067
                </xsl:with-param>
1068
                <xsl:with-param name="punctuation">
1069
                    <xsl:text>:,;/ </xsl:text>
1070
                </xsl:with-param>
1071
            </xsl:call-template>
1072
    </xsl:template>
1073
1074
    <xsl:template name="nameABCDN">
1075
        <xsl:for-each select="marc:subfield[@code='a']">
1076
                <xsl:call-template name="chopPunctuation">
1077
                    <xsl:with-param name="chopString" select="."/>
1078
                </xsl:call-template>
1079
        </xsl:for-each>
1080
        <xsl:for-each select="marc:subfield[@code='b']">
1081
            <xsl:value-of select="."/>
1082
            <xsl:choose>
1083
                <xsl:when test="position() != last()">
1084
                    <xsl:text> -- </xsl:text>
1085
                </xsl:when>
1086
            </xsl:choose>
1087
        </xsl:for-each>
1088
        <xsl:if test="marc:subfield[@code='c'] or marc:subfield[@code='d'] or marc:subfield[@code='n']">
1089
                <xsl:call-template name="subfieldSelect">
1090
                    <xsl:with-param name="codes">cdn</xsl:with-param>
1091
                </xsl:call-template>
1092
        </xsl:if>
1093
    </xsl:template>
1094
1095
    <xsl:template name="nameACDEQ">
1096
            <xsl:call-template name="subfieldSelect">
1097
                <xsl:with-param name="codes">acdeq</xsl:with-param>
1098
            </xsl:call-template>
1099
    </xsl:template>
1100
1101
    <xsl:template name="part">
1102
        <xsl:variable name="partNumber">
1103
            <xsl:call-template name="specialSubfieldSelect">
1104
                <xsl:with-param name="axis">n</xsl:with-param>
1105
                <xsl:with-param name="anyCodes">n</xsl:with-param>
1106
                <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
1107
            </xsl:call-template>
1108
        </xsl:variable>
1109
        <xsl:variable name="partName">
1110
            <xsl:call-template name="specialSubfieldSelect">
1111
                <xsl:with-param name="axis">p</xsl:with-param>
1112
                <xsl:with-param name="anyCodes">p</xsl:with-param>
1113
                <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
1114
            </xsl:call-template>
1115
        </xsl:variable>
1116
        <xsl:if test="string-length(normalize-space($partNumber))">
1117
                <xsl:call-template name="chopPunctuation">
1118
                    <xsl:with-param name="chopString" select="$partNumber"/>
1119
                </xsl:call-template>
1120
        </xsl:if>
1121
        <xsl:if test="string-length(normalize-space($partName))">
1122
                <xsl:call-template name="chopPunctuation">
1123
                    <xsl:with-param name="chopString" select="$partName"/>
1124
                </xsl:call-template>
1125
        </xsl:if>
1126
    </xsl:template>
1127
1128
    <xsl:template name="specialSubfieldSelect">
1129
        <xsl:param name="anyCodes"/>
1130
        <xsl:param name="axis"/>
1131
        <xsl:param name="beforeCodes"/>
1132
        <xsl:param name="afterCodes"/>
1133
        <xsl:variable name="str">
1134
            <xsl:for-each select="marc:subfield">
1135
                <xsl:if test="contains($anyCodes, @code)      or (contains($beforeCodes,@code) and following-sibling::marc:subfield[@code=$axis])      or (contains($afterCodes,@code) and preceding-sibling::marc:subfield[@code=$axis])">
1136
                    <xsl:value-of select="text()"/>
1137
                    <xsl:text> </xsl:text>
1138
                </xsl:if>
1139
            </xsl:for-each>
1140
        </xsl:variable>
1141
        <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
1142
    </xsl:template>
1143
</xsl:stylesheet>
(-)a/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACResults.xsl (-1282 lines)
Lines 1-1282 Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
<!-- $Id: MARC21slim2DC.xsl,v 1.1 2003/01/06 08:20:27 adam Exp $ -->
3
<!DOCTYPE stylesheet [<!ENTITY nbsp "&#160;" >]>
4
<xsl:stylesheet version="1.0"
5
  xmlns:marc="http://www.loc.gov/MARC21/slim"
6
  xmlns:items="http://www.koha-community.org/items"
7
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
8
  exclude-result-prefixes="marc items">
9
    <xsl:import href="MARC21slimUtils.xsl"/>
10
    <xsl:output method = "html" indent="yes" omit-xml-declaration = "yes" encoding="UTF-8"/>
11
    <xsl:key name="item-by-status" match="items:item" use="items:status"/>
12
    <xsl:key name="item-by-status-and-branch" match="items:item" use="concat(items:status, ' ', items:homebranch)"/>
13
14
    <xsl:template match="/">
15
            <xsl:apply-templates/>
16
    </xsl:template>
17
    <xsl:template match="marc:record">
18
19
        <!-- Option: Display Alternate Graphic Representation (MARC 880)  -->
20
        <xsl:variable name="display880" select="boolean(marc:datafield[@tag=880])"/>
21
22
    <xsl:variable name="hidelostitems" select="marc:sysprefs/marc:syspref[@name='hidelostitems']"/>
23
    <xsl:variable name="DisplayOPACiconsXSLT" select="marc:sysprefs/marc:syspref[@name='DisplayOPACiconsXSLT']"/>
24
    <xsl:variable name="OPACURLOpenInNewWindow" select="marc:sysprefs/marc:syspref[@name='OPACURLOpenInNewWindow']"/>
25
    <xsl:variable name="URLLinkText" select="marc:sysprefs/marc:syspref[@name='URLLinkText']"/>
26
    <xsl:variable name="Show856uAsImage" select="marc:sysprefs/marc:syspref[@name='OPACDisplay856uAsImage']"/>
27
    <xsl:variable name="AlternateHoldingsField" select="substring(marc:sysprefs/marc:syspref[@name='AlternateHoldingsField'], 1, 3)"/>
28
    <xsl:variable name="AlternateHoldingsSubfields" select="substring(marc:sysprefs/marc:syspref[@name='AlternateHoldingsField'], 4)"/>
29
    <xsl:variable name="AlternateHoldingsSeparator" select="marc:sysprefs/marc:syspref[@name='AlternateHoldingsSeparator']"/>
30
    <xsl:variable name="OPACItemLocation" select="marc:sysprefs/marc:syspref[@name='OPACItemLocation']"/>
31
    <xsl:variable name="singleBranchMode" select="marc:sysprefs/marc:syspref[@name='singleBranchMode']"/>
32
    <xsl:variable name="OPACTrackClicks" select="marc:sysprefs/marc:syspref[@name='TrackClicks']"/>
33
        <xsl:variable name="leader" select="marc:leader"/>
34
        <xsl:variable name="leader6" select="substring($leader,7,1)"/>
35
        <xsl:variable name="leader7" select="substring($leader,8,1)"/>
36
        <xsl:variable name="leader19" select="substring($leader,20,1)"/>
37
        <xsl:variable name="biblionumber" select="marc:datafield[@tag=999]/marc:subfield[@code='c']"/>
38
        <xsl:variable name="isbn" select="marc:datafield[@tag=020]/marc:subfield[@code='a']"/>
39
        <xsl:variable name="controlField008" select="marc:controlfield[@tag=008]"/>
40
        <xsl:variable name="typeOf008">
41
            <xsl:choose>
42
                <xsl:when test="$leader19='a'">ST</xsl:when>
43
                <xsl:when test="$leader6='a'">
44
                    <xsl:choose>
45
                        <xsl:when test="$leader7='a' or $leader7='c' or $leader7='d' or $leader7='m'">BK</xsl:when>
46
                        <xsl:when test="$leader7='b' or $leader7='i' or $leader7='s'">CR</xsl:when>
47
                    </xsl:choose>
48
                </xsl:when>
49
                <xsl:when test="$leader6='t'">BK</xsl:when>
50
                <xsl:when test="$leader6='o' or $leader6='p'">MX</xsl:when>
51
                <xsl:when test="$leader6='m'">CF</xsl:when>
52
                <xsl:when test="$leader6='e' or $leader6='f'">MP</xsl:when>
53
                <xsl:when test="$leader6='g' or $leader6='k' or $leader6='r'">VM</xsl:when>
54
                <xsl:when test="$leader6='i' or $leader6='j'">MU</xsl:when>
55
                <xsl:when test="$leader6='c' or $leader6='d'">PR</xsl:when>
56
            </xsl:choose>
57
        </xsl:variable>
58
        <xsl:variable name="controlField008-23" select="substring($controlField008,24,1)"/>
59
        <xsl:variable name="controlField008-21" select="substring($controlField008,22,1)"/>
60
        <xsl:variable name="controlField008-22" select="substring($controlField008,23,1)"/>
61
        <xsl:variable name="controlField008-24" select="substring($controlField008,25,4)"/>
62
        <xsl:variable name="controlField008-26" select="substring($controlField008,27,1)"/>
63
        <xsl:variable name="controlField008-29" select="substring($controlField008,30,1)"/>
64
        <xsl:variable name="controlField008-34" select="substring($controlField008,35,1)"/>
65
        <xsl:variable name="controlField008-33" select="substring($controlField008,34,1)"/>
66
        <xsl:variable name="controlField008-30-31" select="substring($controlField008,31,2)"/>
67
68
        <xsl:variable name="physicalDescription">
69
            <xsl:if test="$typeOf008='CF' and marc:controlfield[@tag=007][substring(.,12,1)='a']">
70
                reformatted digital
71
            </xsl:if>
72
            <xsl:if test="$typeOf008='CF' and marc:controlfield[@tag=007][substring(.,12,1)='b']">
73
                digitized microfilm
74
            </xsl:if>
75
            <xsl:if test="$typeOf008='CF' and marc:controlfield[@tag=007][substring(.,12,1)='d']">
76
                digitized other analog
77
            </xsl:if>
78
79
            <xsl:variable name="check008-23">
80
                <xsl:if test="$typeOf008='BK' or $typeOf008='MU' or $typeOf008='CR' or $typeOf008='MX'">
81
                    <xsl:value-of select="true()"></xsl:value-of>
82
                </xsl:if>
83
            </xsl:variable>
84
            <xsl:variable name="check008-29">
85
                <xsl:if test="$typeOf008='MP' or $typeOf008='VM'">
86
                    <xsl:value-of select="true()"></xsl:value-of>
87
                </xsl:if>
88
            </xsl:variable>
89
            <xsl:choose>
90
                <xsl:when test="($check008-23 and $controlField008-23='f') or ($check008-29 and $controlField008-29='f')">
91
                    braille
92
                </xsl:when>
93
                <xsl:when test="($controlField008-23=' ' and ($leader6='c' or $leader6='d')) or (($typeOf008='BK' or $typeOf008='CR') and ($controlField008-23=' ' or $controlField008='r'))">
94
                    print
95
                </xsl:when>
96
                <xsl:when test="$leader6 = 'm' or ($check008-23 and $controlField008-23='s') or ($check008-29 and $controlField008-29='s')">
97
                    electronic
98
                </xsl:when>
99
                <xsl:when test="($check008-23 and $controlField008-23='b') or ($check008-29 and $controlField008-29='b')">
100
                    microfiche
101
                </xsl:when>
102
                <xsl:when test="($check008-23 and $controlField008-23='a') or ($check008-29 and $controlField008-29='a')">
103
                    microfilm
104
                </xsl:when>
105
            </xsl:choose>
106
<!--
107
            <xsl:if test="marc:datafield[@tag=130]/marc:subfield[@code='h']">
108
                    <xsl:call-template name="chopBrackets">
109
                        <xsl:with-param name="chopString">
110
                            <xsl:value-of select="marc:datafield[@tag=130]/marc:subfield[@code='h']"></xsl:value-of>
111
                        </xsl:with-param>
112
                    </xsl:call-template>
113
            </xsl:if>
114
            <xsl:if test="marc:datafield[@tag=240]/marc:subfield[@code='h']">
115
                    <xsl:call-template name="chopBrackets">
116
                        <xsl:with-param name="chopString">
117
                            <xsl:value-of select="marc:datafield[@tag=240]/marc:subfield[@code='h']"></xsl:value-of>
118
                        </xsl:with-param>
119
                    </xsl:call-template>
120
            </xsl:if>
121
            <xsl:if test="marc:datafield[@tag=242]/marc:subfield[@code='h']">
122
                    <xsl:call-template name="chopBrackets">
123
                        <xsl:with-param name="chopString">
124
                            <xsl:value-of select="marc:datafield[@tag=242]/marc:subfield[@code='h']"></xsl:value-of>
125
                        </xsl:with-param>
126
                    </xsl:call-template>
127
            </xsl:if>
128
            <xsl:if test="marc:datafield[@tag=245]/marc:subfield[@code='h']">
129
                    <xsl:call-template name="chopBrackets">
130
                        <xsl:with-param name="chopString">
131
                            <xsl:value-of select="marc:datafield[@tag=245]/marc:subfield[@code='h']"></xsl:value-of>
132
                        </xsl:with-param>
133
                    </xsl:call-template>
134
            </xsl:if>
135
            <xsl:if test="marc:datafield[@tag=246]/marc:subfield[@code='h']">
136
                    <xsl:call-template name="chopBrackets">
137
                        <xsl:with-param name="chopString">
138
                            <xsl:value-of select="marc:datafield[@tag=246]/marc:subfield[@code='h']"></xsl:value-of>
139
                        </xsl:with-param>
140
                    </xsl:call-template>
141
            </xsl:if>
142
            <xsl:if test="marc:datafield[@tag=730]/marc:subfield[@code='h']">
143
                    <xsl:call-template name="chopBrackets">
144
                        <xsl:with-param name="chopString">
145
                            <xsl:value-of select="marc:datafield[@tag=730]/marc:subfield[@code='h']"></xsl:value-of>
146
                        </xsl:with-param>
147
                    </xsl:call-template>
148
            </xsl:if>
149
            <xsl:for-each select="marc:datafield[@tag=256]/marc:subfield[@code='a']">
150
                    <xsl:value-of select="."></xsl:value-of>
151
            </xsl:for-each>
152
            <xsl:for-each select="marc:controlfield[@tag=007][substring(text(),1,1)='c']">
153
                <xsl:choose>
154
                    <xsl:when test="substring(text(),14,1)='a'">
155
                        access
156
                    </xsl:when>
157
                    <xsl:when test="substring(text(),14,1)='p'">
158
                        preservation
159
                    </xsl:when>
160
                    <xsl:when test="substring(text(),14,1)='r'">
161
                        replacement
162
                    </xsl:when>
163
                </xsl:choose>
164
            </xsl:for-each>
165
-->
166
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='b']">
167
                chip cartridge
168
            </xsl:if>
169
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='c']">
170
                <img src="/opac-tmpl/lib/famfamfam/silk/cd.png" alt="computer optical disc cartridge" title="computer optical disc cartridge" class="format"/>
171
            </xsl:if>
172
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='j']">
173
                magnetic disc
174
            </xsl:if>
175
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='m']">
176
                magneto-optical disc
177
            </xsl:if>
178
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='o']">
179
                <img src="/opac-tmpl/lib/famfamfam/silk/cd.png" alt="optical disc" title="optical disc" class="format"/>
180
            </xsl:if>
181
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='r']">
182
		available online
183
                <img src="/opac-tmpl/lib/famfamfam/silk/drive_web.png" alt="remote" title="remote" class="format"/>
184
            </xsl:if>
185
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='a']">
186
                tape cartridge
187
            </xsl:if>
188
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='f']">
189
                tape cassette
190
            </xsl:if>
191
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='h']">
192
                tape reel
193
            </xsl:if>
194
195
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='a']">
196
                <img src="/opac-tmpl/lib/famfamfam/silk/world.png" alt="celestial globe" title="celestial globe" class="format"/>
197
            </xsl:if>
198
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='e']">
199
                <img src="/opac-tmpl/lib/famfamfam/silk/world.png" alt="earth moon globe" title="earth moon globe" class="format"/>
200
            </xsl:if>
201
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='b']">
202
                <img src="/opac-tmpl/lib/famfamfam/silk/world.png" alt="planetary or lunar globe" title="planetary or lunar globe" class="format"/>
203
            </xsl:if>
204
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='c']">
205
                <img src="/opac-tmpl/lib/famfamfam/silk/world.png" alt="terrestrial globe" title="terrestrial globe" class="format"/>
206
            </xsl:if>
207
208
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='o'][substring(text(),2,1)='o']">
209
                kit
210
            </xsl:if>
211
212
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='d']">
213
                atlas
214
            </xsl:if>
215
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='g']">
216
                diagram
217
            </xsl:if>
218
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='j']">
219
                map
220
            </xsl:if>
221
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='q']">
222
                model
223
            </xsl:if>
224
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='k']">
225
                profile
226
            </xsl:if>
227
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='r']">
228
                remote-sensing image
229
            </xsl:if>
230
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='s']">
231
                section
232
            </xsl:if>
233
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='y']">
234
                view
235
            </xsl:if>
236
237
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='a']">
238
                aperture card
239
            </xsl:if>
240
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='e']">
241
                microfiche
242
            </xsl:if>
243
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='f']">
244
                microfiche cassette
245
            </xsl:if>
246
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='b']">
247
                microfilm cartridge
248
            </xsl:if>
249
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='c']">
250
                microfilm cassette
251
            </xsl:if>
252
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='d']">
253
                microfilm reel
254
            </xsl:if>
255
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='g']">
256
                microopaque
257
            </xsl:if>
258
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='m'][substring(text(),2,1)='c']">
259
                film cartridge
260
            </xsl:if>
261
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='m'][substring(text(),2,1)='f']">
262
                film cassette
263
            </xsl:if>
264
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='m'][substring(text(),2,1)='r']">
265
                film reel
266
            </xsl:if>
267
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='n']">
268
                <img src="/opac-tmpl/lib/famfamfam/silk/chart_curve.png" alt="chart" title="chart" class="format"/>
269
            </xsl:if>
270
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='c']">
271
                collage
272
            </xsl:if>
273
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='d']">
274
                 <img src="/opac-tmpl/lib/famfamfam/silk/pencil.png" alt="drawing" title="drawing" class="format"/>
275
            </xsl:if>
276
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='o']">
277
                <img src="/opac-tmpl/lib/famfamfam/silk/note.png" alt="flash card" title="flash card" class="format"/>
278
            </xsl:if>
279
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='e']">
280
                <img src="/opac-tmpl/lib/famfamfam/silk/paintbrush.png" alt="painting" title="painting" class="format"/>
281
            </xsl:if>
282
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='f']">
283
                photomechanical print
284
            </xsl:if>
285
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='g']">
286
                photonegative
287
            </xsl:if>
288
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='h']">
289
                photoprint
290
            </xsl:if>
291
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='i']">
292
                <img src="/opac-tmpl/lib/famfamfam/silk/picture.png" alt="picture" title="picture" class="format"/>
293
            </xsl:if>
294
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='j']">
295
                print
296
            </xsl:if>
297
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='l']">
298
                technical drawing
299
            </xsl:if>
300
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='q'][substring(text(),2,1)='q']">
301
                <img src="/opac-tmpl/lib/famfamfam/silk/script.png" alt="notated music" title="notated music" class="format"/>
302
            </xsl:if>
303
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='d']">
304
                filmslip
305
            </xsl:if>
306
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='c']">
307
                filmstrip cartridge
308
            </xsl:if>
309
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='o']">
310
                filmstrip roll
311
            </xsl:if>
312
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='f']">
313
                other filmstrip type
314
            </xsl:if>
315
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='s']">
316
                <img src="/opac-tmpl/lib/famfamfam/silk/pictures.png" alt="slide" title="slide" class="format"/>
317
            </xsl:if>
318
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='t']">
319
                transparency
320
            </xsl:if>
321
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='r'][substring(text(),2,1)='r']">
322
                remote-sensing image
323
            </xsl:if>
324
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='e']">
325
                cylinder
326
            </xsl:if>
327
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='q']">
328
                roll
329
            </xsl:if>
330
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='g']">
331
                sound cartridge
332
            </xsl:if>
333
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='s']">
334
                sound cassette
335
            </xsl:if>
336
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='d']">
337
                <img src="/opac-tmpl/lib/famfamfam/silk/cd.png" alt="sound disc" title="sound disc" class="format"/>
338
            </xsl:if>
339
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='t']">
340
                sound-tape reel
341
            </xsl:if>
342
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='i']">
343
                sound-track film
344
            </xsl:if>
345
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='w']">
346
                wire recording
347
            </xsl:if>
348
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='c']">
349
                braille
350
            </xsl:if>
351
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='b']">
352
                combination
353
            </xsl:if>
354
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='a']">
355
                moon
356
            </xsl:if>
357
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='d']">
358
                tactile, with no writing system
359
            </xsl:if>
360
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='c']">
361
                braille
362
            </xsl:if>
363
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='b']">
364
                <img src="/opac-tmpl/lib/famfamfam/silk/magnifier.png" alt="large print" title="large print" class="format"/>
365
            </xsl:if>
366
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='a']">
367
                regular print
368
            </xsl:if>
369
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='d']">
370
                text in looseleaf binder
371
            </xsl:if>
372
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='c']">
373
                videocartridge
374
            </xsl:if>
375
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='f']">
376
                videocassette
377
            </xsl:if>
378
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='d']">
379
                <img src="/opac-tmpl/lib/famfamfam/silk/dvd.png" alt="videodisc" title="videodisc" class="format"/>
380
            </xsl:if>
381
            <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='r']">
382
                videoreel
383
            </xsl:if>
384
<!--
385
            <xsl:for-each select="marc:datafield[@tag=856]/marc:subfield[@code='q'][string-length(.)>1]">
386
                    <xsl:value-of select="."></xsl:value-of>
387
            </xsl:for-each>
388
            <xsl:for-each select="marc:datafield[@tag=300]">
389
                    <xsl:call-template name="subfieldSelect">
390
                        <xsl:with-param name="codes">abce</xsl:with-param>
391
                    </xsl:call-template>
392
            </xsl:for-each>
393
-->
394
        </xsl:variable>
395
396
        <!-- Title Statement: Alternate Graphic Representation (MARC 880) -->
397
        <xsl:if test="$display880">
398
           <xsl:call-template name="m880Select">
399
              <xsl:with-param name="basetags">245</xsl:with-param>
400
              <xsl:with-param name="codes">abhfgknps</xsl:with-param>
401
              <xsl:with-param name="bibno"><xsl:value-of  select="$biblionumber"/></xsl:with-param>
402
           </xsl:call-template>
403
        </xsl:if>
404
405
        <a><xsl:attribute name="href">/cgi-bin/koha/opac-detail.pl?biblionumber=<xsl:value-of select="$biblionumber"/></xsl:attribute><xsl:attribute name="class">title</xsl:attribute>
406
407
        <xsl:if test="marc:datafield[@tag=245]">
408
        <xsl:for-each select="marc:datafield[@tag=245]">
409
            <xsl:variable name="title">
410
                     <xsl:call-template name="subfieldSelect">
411
                        <xsl:with-param name="codes">a</xsl:with-param>
412
                    </xsl:call-template>
413
                    <xsl:if test="marc:subfield[@code='h']">
414
                        <xsl:text> </xsl:text>
415
                        <xsl:call-template name="subfieldSelect">
416
                            <xsl:with-param name="codes">h</xsl:with-param>
417
                        </xsl:call-template>
418
                    </xsl:if>
419
                    <xsl:if test="marc:subfield[@code='b']">
420
                        <xsl:text> </xsl:text>
421
                        <xsl:call-template name="subfieldSelect">
422
                            <xsl:with-param name="codes">b</xsl:with-param>
423
                        </xsl:call-template>
424
                    </xsl:if>
425
                <xsl:text> </xsl:text>
426
                    <xsl:call-template name="subfieldSelect">
427
                        <xsl:with-param name="codes">fgknps</xsl:with-param>
428
                     </xsl:call-template>
429
            </xsl:variable>
430
            <xsl:variable name="titleChop">
431
                <xsl:call-template name="chopPunctuation">
432
                    <xsl:with-param name="chopString">
433
                        <xsl:value-of select="$title"/>
434
                    </xsl:with-param>
435
                </xsl:call-template>
436
            </xsl:variable>
437
            <xsl:value-of select="$titleChop"/>
438
        </xsl:for-each>
439
        </xsl:if>
440
    </a>
441
    <p>
442
443
    <!-- Author Statement: Alternate Graphic Representation (MARC 880) -->
444
    <xsl:if test="$display880">
445
      <xsl:call-template name="m880Select">
446
      <xsl:with-param name="basetags">100,110,111,700,710,711</xsl:with-param>
447
      <xsl:with-param name="codes">abc</xsl:with-param>
448
      </xsl:call-template>
449
    </xsl:if>
450
451
    <xsl:choose>
452
    <xsl:when test="marc:datafield[@tag=100] or marc:datafield[@tag=110] or marc:datafield[@tag=111] or marc:datafield[@tag=700] or marc:datafield[@tag=710] or marc:datafield[@tag=711]">
453
454
    by <span class="author">
455
        <xsl:for-each select="marc:datafield[(@tag=100 or @tag=700) and @ind1!='z']">
456
            <xsl:choose>
457
            <xsl:when test="position()=last()">
458
                <xsl:call-template name="nameABCQ"/>.
459
            </xsl:when>
460
            <xsl:otherwise>
461
                <xsl:call-template name="nameABCQ"/>;
462
            </xsl:otherwise>
463
            </xsl:choose>
464
        </xsl:for-each>
465
466
        <xsl:for-each select="marc:datafield[(@tag=110 or @tag=710) and @ind1!='z']">
467
            <xsl:choose>
468
            <xsl:when test="position()=1">
469
		<xsl:text> -- </xsl:text>
470
            </xsl:when>
471
            </xsl:choose>
472
            <xsl:choose>
473
            <xsl:when test="position()=last()">
474
                <xsl:call-template name="nameABCDN"/> 
475
            </xsl:when>
476
            <xsl:otherwise>
477
                <xsl:call-template name="nameABCDN"/>;
478
            </xsl:otherwise>
479
            </xsl:choose>
480
        </xsl:for-each>
481
482
        <xsl:for-each select="marc:datafield[(@tag=111 or @tag=711) and @ind1!='z']">
483
            <xsl:choose>
484
            <xsl:when test="position()=1">
485
		<xsl:text> -- </xsl:text>
486
            </xsl:when>
487
            </xsl:choose>
488
            <xsl:choose>
489
            <xsl:when test="marc:subfield[@code='n']">
490
               <xsl:text> </xsl:text>
491
               <xsl:call-template name="subfieldSelect">
492
                  <xsl:with-param name="codes">n</xsl:with-param> 
493
               </xsl:call-template>
494
               <xsl:text> </xsl:text>
495
            </xsl:when>
496
            </xsl:choose>
497
            <xsl:choose>
498
            <xsl:when test="position()=last()">
499
                <xsl:call-template name="nameACDEQ"/>.
500
            </xsl:when>
501
            <xsl:otherwise>
502
                <xsl:call-template name="nameACDEQ"/>;
503
            </xsl:otherwise>
504
            </xsl:choose>
505
        </xsl:for-each>
506
    </span>
507
    </xsl:when>
508
    </xsl:choose>
509
    </p>
510
511
    <xsl:if test="marc:datafield[@tag=250]">
512
    <span class="results_summary edition">
513
    <span class="label">Edition: </span>
514
            <xsl:for-each select="marc:datafield[@tag=250]">
515
                    <xsl:call-template name="subfieldSelect">
516
                        <xsl:with-param name="codes">ab</xsl:with-param>
517
                    </xsl:call-template>
518
            </xsl:for-each>
519
	</span>
520
    </xsl:if>
521
522
    <xsl:if test="marc:datafield[@tag=773]">
523
        <xsl:for-each select="marc:datafield[@tag=773]">
524
            <xsl:if test="marc:subfield[@code='t']">
525
    <span class="results_summary source">
526
    <span class="label">Source: </span>
527
            <xsl:value-of select="marc:subfield[@code='t']"/>
528
    </span>
529
            </xsl:if>
530
        </xsl:for-each>
531
    </xsl:if>
532
533
<xsl:if test="$DisplayOPACiconsXSLT!='0'">
534
    <span class="results_summary type">
535
    <xsl:if test="$typeOf008!=''">
536
        <span class="label">Material type: </span>
537
            <xsl:choose>
538
                <xsl:when test="$leader19='a'"><img src="/opac-tmpl/lib/famfamfam/silk/book_link.png" alt="book" title="book" class="materialtype"/> Set</xsl:when>
539
                <xsl:when test="$leader6='a'">
540
                    <xsl:choose>
541
                        <xsl:when test="$leader7='c' or $leader7='d' or $leader7='m'"><img src="/opac-tmpl/lib/famfamfam/silk/book.png" alt="book" title="book" class="materialtype"/> Book</xsl:when>
542
                        <xsl:when test="$leader7='i' or $leader7='s'"><img src="/opac-tmpl/lib/famfamfam/silk/newspaper.png" alt="serial" title="serial" class="materialtype"/> Continuing Resource</xsl:when>
543
                        <xsl:when test="$leader7='a' or $leader7='b'"><img src="/opac-tmpl/lib/famfamfam/silk/book_open.png" alt="article" title="article" class="materialtype"/> Article</xsl:when>
544
                    </xsl:choose>
545
                </xsl:when>
546
                <xsl:when test="$leader6='t'"><img src="/opac-tmpl/lib/famfamfam/silk/book.png" alt="book" title="book" class="materialtype"/> Book</xsl:when>
547
                <xsl:when test="$leader6='o'"><img src="/opac-tmpl/lib/famfamfam/silk/report_disk.png" alt="kit" title="kit" class="materialtype"/> Kit</xsl:when>
548
                <xsl:when test="$leader6='p'"><img src="/opac-tmpl/lib/famfamfam/silk/report_disk.png" alt="mixed materials" title="mixed materials" class="materialtype"/>Mixed Materials</xsl:when>
549
                <xsl:when test="$leader6='m'"><img src="/opac-tmpl/lib/famfamfam/silk/computer_link.png" alt="computer file" title="computer file" class="materialtype"/> Computer File</xsl:when>
550
                <xsl:when test="$leader6='e' or $leader6='f'"><img src="/opac-tmpl/lib/famfamfam/silk/map.png" alt="map" title="map" class="materialtype"/> Map</xsl:when>
551
                <xsl:when test="$leader6='g' or $leader6='k' or $leader6='r'"><img src="/opac-tmpl/lib/famfamfam/silk/film.png" alt="visual material" title="visual material" class="materialtype"/> Visual Material</xsl:when>
552
                <xsl:when test="$leader6='c' or $leader6='d'"><img src="/opac-tmpl/lib/famfamfam/silk/music.png" alt="score" title="score" class="materialtype"/> Score</xsl:when>
553
                <xsl:when test="$leader6='i'"><img src="/opac-tmpl/lib/famfamfam/silk/sound.png" alt="sound" title="sound" class="materialtype"/> Sound</xsl:when>
554
                <xsl:when test="$leader6='j'"><img src="/opac-tmpl/lib/famfamfam/silk/sound.png" alt="music" title="music" class="materialtype"/> Music</xsl:when>
555
            </xsl:choose>
556
    </xsl:if>
557
    <xsl:if test="string-length(normalize-space($physicalDescription))">
558
        <span class="label">; Format: </span><xsl:copy-of select="$physicalDescription"></xsl:copy-of>
559
    </xsl:if>
560
561
        <xsl:if test="$controlField008-21 or $controlField008-22 or $controlField008-24 or $controlField008-26 or $controlField008-29 or $controlField008-34 or $controlField008-33 or $controlField008-30-31 or $controlField008-33">
562
563
        <xsl:if test="$typeOf008='CR'">
564
        <xsl:if test="$controlField008-21 and $controlField008-21 !='|' and $controlField008-21 !=' '">
565
        <span class="label">; Type of continuing resource: </span>
566
        </xsl:if>
567
            <xsl:choose>
568
                <xsl:when test="$controlField008-21='d'">
569
                     <img src="/opac-tmpl/lib/famfamfam/silk/database.png" alt="database" title="database" class="format"/>
570
                </xsl:when>
571
                <xsl:when test="$controlField008-21='l'">
572
                    loose-leaf
573
                </xsl:when>
574
                <xsl:when test="$controlField008-21='m'">
575
                    series
576
                </xsl:when>
577
                <xsl:when test="$controlField008-21='n'">
578
                    newspaper
579
                </xsl:when>
580
                <xsl:when test="$controlField008-21='p'">
581
                    periodical
582
                </xsl:when>
583
                <xsl:when test="$controlField008-21='w'">
584
                     <img src="/opac-tmpl/lib/famfamfam/silk/world_link.png" alt="web site" title="web site" class="format"/>
585
                </xsl:when>
586
            </xsl:choose>
587
        </xsl:if>
588
        <xsl:if test="$typeOf008='BK' or $typeOf008='CR'">
589
        <xsl:if test="contains($controlField008-24,'abcdefghijklmnopqrstvwxyz')">
590
        <span class="label">; Nature of contents: </span>
591
        </xsl:if>
592
            <xsl:choose>
593
                <xsl:when test="contains($controlField008-24,'a')">
594
                    abstract or summary
595
                </xsl:when>
596
                <xsl:when test="contains($controlField008-24,'b')">
597
			bibliography
598
                     <img src="/opac-tmpl/lib/famfamfam/silk/text_list_bullets.png" alt="bibliography" title="bibliography" class="natureofcontents"/>
599
                </xsl:when>
600
                <xsl:when test="contains($controlField008-24,'c')">
601
                    catalog
602
                </xsl:when>
603
                <xsl:when test="contains($controlField008-24,'d')">
604
                    dictionary
605
                </xsl:when>
606
                <xsl:when test="contains($controlField008-24,'e')">
607
                    encyclopedia
608
                </xsl:when>
609
                <xsl:when test="contains($controlField008-24,'f')">
610
                    handbook
611
                </xsl:when>
612
                <xsl:when test="contains($controlField008-24,'g')">
613
                    legal article
614
                </xsl:when>
615
                <xsl:when test="contains($controlField008-24,'i')">
616
                    index
617
                </xsl:when>
618
                <xsl:when test="contains($controlField008-24,'k')">
619
                    discography
620
                </xsl:when>
621
                <xsl:when test="contains($controlField008-24,'l')">
622
                    legislation
623
                </xsl:when>
624
                <xsl:when test="contains($controlField008-24,'m')">
625
                    theses
626
                </xsl:when>
627
                <xsl:when test="contains($controlField008-24,'n')">
628
                    survey of literature
629
                </xsl:when>
630
                <xsl:when test="contains($controlField008-24,'o')">
631
                    review
632
                </xsl:when>
633
                <xsl:when test="contains($controlField008-24,'p')">
634
                    programmed text
635
                </xsl:when>
636
                <xsl:when test="contains($controlField008-24,'q')">
637
                    filmography
638
                </xsl:when>
639
                <xsl:when test="contains($controlField008-24,'r')">
640
                    directory
641
                </xsl:when>
642
                <xsl:when test="contains($controlField008-24,'s')">
643
                    statistics
644
                </xsl:when>
645
                <xsl:when test="contains($controlField008-24,'t')">
646
                     <img src="/opac-tmpl/lib/famfamfam/silk/report.png" alt="technical report" title="technical report" class="natureofcontents"/>
647
                </xsl:when>
648
                <xsl:when test="contains($controlField008-24,'v')">
649
                    legal case and case notes
650
                </xsl:when>
651
                <xsl:when test="contains($controlField008-24,'w')">
652
                    law report or digest
653
                </xsl:when>
654
                <xsl:when test="contains($controlField008-24,'z')">
655
                    treaty
656
                </xsl:when>
657
            </xsl:choose>
658
            <xsl:choose>
659
                <xsl:when test="$controlField008-29='1'">
660
                    conference publication
661
                </xsl:when>
662
            </xsl:choose>
663
        </xsl:if>
664
        <xsl:if test="$typeOf008='CF'">
665
            <xsl:if test="$controlField008-26='a' or $controlField008-26='e' or $controlField008-26='f' or $controlField008-26='g'">
666
            <span class="label">; Type of computer file: </span>
667
            </xsl:if>
668
            <xsl:choose>
669
                <xsl:when test="$controlField008-26='a'">
670
                    numeric data
671
                </xsl:when>
672
                <xsl:when test="$controlField008-26='e'">
673
                     <img src="/opac-tmpl/lib/famfamfam/silk/database.png" alt="database" title="database" class="format"/>
674
                </xsl:when>
675
                <xsl:when test="$controlField008-26='f'">
676
                     <img src="/opac-tmpl/lib/famfamfam/silk/font.png" alt="font" title="font" class="format"/>
677
                </xsl:when>
678
                <xsl:when test="$controlField008-26='g'">
679
                     <img src="/opac-tmpl/lib/famfamfam/silk/controller.png" alt="game" title="game" class="format"/>
680
                </xsl:when>
681
            </xsl:choose>
682
        </xsl:if>
683
        <xsl:if test="$typeOf008='BK'">
684
            <xsl:if test="(substring($controlField008,25,1)='j') or (substring($controlField008,25,1)='1') or ($controlField008-34='a' or $controlField008-34='b' or $controlField008-34='c' or $controlField008-34='d')">
685
            <span class="label">; Nature of contents: </span>
686
            </xsl:if>
687
            <xsl:if test="substring($controlField008,25,1)='j'">
688
                patent
689
            </xsl:if>
690
            <xsl:if test="substring($controlField008,31,1)='1'">
691
                festschrift
692
            </xsl:if>
693
            <xsl:if test="$controlField008-34='a' or $controlField008-34='b' or $controlField008-34='c' or $controlField008-34='d'">
694
                 <img src="/opac-tmpl/lib/famfamfam/silk/user.png" alt="biography" title="biography" class="natureofcontents"/>
695
            </xsl:if>
696
697
            <xsl:if test="$controlField008-33 and $controlField008-33!='|' and $controlField008-33!='u' and $controlField008-33!=' '">
698
            <span class="label">; Literary form: </span>
699
            </xsl:if>
700
            <xsl:choose>
701
                <xsl:when test="$controlField008-33='0'">
702
                    not fiction
703
                </xsl:when>
704
                <xsl:when test="$controlField008-33='1'">
705
                    fiction
706
                </xsl:when> 
707
                <xsl:when test="$controlField008-33='e'">
708
                    essay
709
                </xsl:when>
710
                <xsl:when test="$controlField008-33='d'">
711
                    drama
712
                </xsl:when>
713
                <xsl:when test="$controlField008-33='c'">
714
                    comic strip
715
                </xsl:when>
716
                <xsl:when test="$controlField008-33='l'">
717
                    fiction
718
                </xsl:when>
719
                <xsl:when test="$controlField008-33='h'">
720
                    humor, satire
721
                </xsl:when>
722
                <xsl:when test="$controlField008-33='i'">
723
                    letter
724
                </xsl:when>
725
                <xsl:when test="$controlField008-33='f'">
726
                    novel
727
                </xsl:when>
728
                <xsl:when test="$controlField008-33='j'">
729
                    short story
730
                </xsl:when>
731
                <xsl:when test="$controlField008-33='s'">
732
                    speech
733
                </xsl:when>
734
            </xsl:choose>
735
        </xsl:if> 
736
        <xsl:if test="$typeOf008='MU' and $controlField008-30-31 and $controlField008-30-31!='||' and $controlField008-30-31!='  '">
737
            <span class="label">; Literary form: </span> <!-- Literary text for sound recordings -->
738
            <xsl:if test="contains($controlField008-30-31,'b')">
739
                biography
740
            </xsl:if>
741
            <xsl:if test="contains($controlField008-30-31,'c')">
742
                conference publication
743
            </xsl:if>
744
            <xsl:if test="contains($controlField008-30-31,'d')">
745
                drama
746
            </xsl:if>
747
            <xsl:if test="contains($controlField008-30-31,'e')">
748
                essay
749
            </xsl:if>
750
            <xsl:if test="contains($controlField008-30-31,'f')">
751
                fiction
752
            </xsl:if>
753
            <xsl:if test="contains($controlField008-30-31,'o')">
754
                folktale
755
            </xsl:if>
756
            <xsl:if test="contains($controlField008-30-31,'h')">
757
                history
758
            </xsl:if>
759
            <xsl:if test="contains($controlField008-30-31,'k')">
760
                humor, satire
761
            </xsl:if>
762
            <xsl:if test="contains($controlField008-30-31,'m')">
763
                memoir
764
            </xsl:if>
765
            <xsl:if test="contains($controlField008-30-31,'p')">
766
                poetry
767
            </xsl:if>
768
            <xsl:if test="contains($controlField008-30-31,'r')">
769
                rehearsal
770
            </xsl:if>
771
            <xsl:if test="contains($controlField008-30-31,'g')">
772
                reporting
773
            </xsl:if>
774
            <xsl:if test="contains($controlField008-30-31,'s')">
775
                sound
776
            </xsl:if>
777
            <xsl:if test="contains($controlField008-30-31,'l')">
778
                speech
779
            </xsl:if>
780
        </xsl:if>
781
        <xsl:if test="$typeOf008='VM'">
782
            <span class="label">; Type of visual material: </span>
783
            <xsl:choose>
784
                <xsl:when test="$controlField008-33='a'">
785
                    art original
786
                </xsl:when>
787
                <xsl:when test="$controlField008-33='b'">
788
                    kit
789
                </xsl:when>
790
                <xsl:when test="$controlField008-33='c'">
791
                    art reproduction
792
                </xsl:when>
793
                <xsl:when test="$controlField008-33='d'">
794
                    diorama
795
                </xsl:when>
796
                <xsl:when test="$controlField008-33='f'">
797
                    filmstrip
798
                </xsl:when>
799
                <xsl:when test="$controlField008-33='g'">
800
                    legal article
801
                </xsl:when>
802
                <xsl:when test="$controlField008-33='i'">
803
                    picture
804
                </xsl:when>
805
                <xsl:when test="$controlField008-33='k'">
806
                    graphic
807
                </xsl:when>
808
                <xsl:when test="$controlField008-33='l'">
809
                    technical drawing
810
                </xsl:when>
811
                <xsl:when test="$controlField008-33='m'">
812
                    motion picture
813
                </xsl:when>
814
                <xsl:when test="$controlField008-33='n'">
815
                    chart
816
                </xsl:when>
817
                <xsl:when test="$controlField008-33='o'">
818
                    flash card
819
                </xsl:when>
820
                <xsl:when test="$controlField008-33='p'">
821
                    microscope slide
822
                </xsl:when>
823
                <xsl:when test="$controlField008-33='q' or marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2
824
,1)='q']">
825
                    model
826
                </xsl:when>
827
                <xsl:when test="$controlField008-33='r'">
828
                    realia
829
                </xsl:when>
830
                <xsl:when test="$controlField008-33='s'">
831
                    slide
832
                </xsl:when>
833
                <xsl:when test="$controlField008-33='t'">
834
                    transparency
835
                </xsl:when>
836
                <xsl:when test="$controlField008-33='v'">
837
                    videorecording
838
                </xsl:when>
839
                <xsl:when test="$controlField008-33='w'">
840
                    toy
841
                </xsl:when>
842
            </xsl:choose>
843
        </xsl:if>
844
        </xsl:if> 
845
846
    <xsl:if test="($typeOf008='BK' or $typeOf008='CF' or $typeOf008='MU' or $typeOf008='VM') and ($controlField008-22='a' or $controlField008-22='b' or $controlField008-22='c' or $controlField008-22='d' or $controlField008-22='e' or $controlField008-22='g' or $controlField008-22='j' or $controlField008-22='f')">
847
        <span class="label">; Audience: </span>
848
        <xsl:choose>
849
            <xsl:when test="$controlField008-22='a'">
850
             Preschool;
851
            </xsl:when>
852
            <xsl:when test="$controlField008-22='b'">
853
             Primary;
854
            </xsl:when>
855
            <xsl:when test="$controlField008-22='c'">
856
             Pre-adolescent;
857
            </xsl:when>
858
            <xsl:when test="$controlField008-22='d'">
859
             Adolescent;
860
            </xsl:when>
861
            <xsl:when test="$controlField008-22='e'">
862
             Adult;
863
            </xsl:when>
864
            <xsl:when test="$controlField008-22='g'">
865
             General;
866
            </xsl:when>
867
            <xsl:when test="$controlField008-22='j'">
868
             Juvenile;
869
            </xsl:when>
870
            <xsl:when test="$controlField008-22='f'">
871
             Specialized;
872
            </xsl:when>
873
            </xsl:choose>
874
    </xsl:if>
875
<xsl:text> </xsl:text> <!-- added blank space to fix font display problem, see Bug 3671 -->
876
	</span>
877
</xsl:if>
878
879
    <!-- Publisher Statement: Alternate Graphic Representation (MARC 880) -->
880
    <xsl:if test="$display880">
881
      <xsl:call-template name="m880Select">
882
        <xsl:with-param name="basetags">260</xsl:with-param>
883
        <xsl:with-param name="codes">abcg</xsl:with-param>
884
        <xsl:with-param name="class">results_summary publisher</xsl:with-param>
885
        <xsl:with-param name="label">Publisher: </xsl:with-param>
886
      </xsl:call-template>
887
    </xsl:if>
888
889
    <xsl:if test="marc:datafield[@tag=260]">
890
        <span class="results_summary publisher"><span class="label">Publisher: </span>
891
            <xsl:for-each select="marc:datafield[@tag=260]">
892
                <xsl:if test="marc:subfield[@code='a']">
893
                    <xsl:call-template name="subfieldSelect">
894
                        <xsl:with-param name="codes">a</xsl:with-param>
895
                    </xsl:call-template>
896
                </xsl:if>
897
                <xsl:text> </xsl:text>
898
                <xsl:if test="marc:subfield[@code='b']">
899
                    <xsl:call-template name="subfieldSelect">
900
                        <xsl:with-param name="codes">b</xsl:with-param>
901
                    </xsl:call-template>
902
                </xsl:if>
903
                <xsl:text> </xsl:text>
904
                <xsl:call-template name="chopPunctuation">
905
                  <xsl:with-param name="chopString">
906
                    <xsl:call-template name="subfieldSelect">
907
                        <xsl:with-param name="codes">cg</xsl:with-param>
908
                    </xsl:call-template>
909
                   </xsl:with-param>
910
                </xsl:call-template>
911
                <xsl:choose><xsl:when test="position()=last()"><xsl:text></xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
912
            </xsl:for-each>
913
        </span>
914
    </xsl:if>
915
916
    <!-- Other Title  Statement: Alternate Graphic Representation (MARC 880) -->
917
    <xsl:if test="$display880">
918
       <xsl:call-template name="m880Select">
919
         <xsl:with-param name="basetags">246</xsl:with-param>
920
         <xsl:with-param name="codes">ab</xsl:with-param>
921
         <xsl:with-param name="class">results_summary other_title</xsl:with-param>
922
         <xsl:with-param name="label">Other title: </xsl:with-param>
923
       </xsl:call-template>
924
    </xsl:if>
925
        
926
    <xsl:if test="marc:datafield[@tag=246]">
927
    <span class="results_summary other_title">
928
    <span class="label">Other title: </span>
929
            <xsl:for-each select="marc:datafield[@tag=246]">
930
                    <xsl:call-template name="subfieldSelect">
931
                        <xsl:with-param name="codes">ab</xsl:with-param>
932
                    </xsl:call-template>
933
                    <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
934
            </xsl:for-each>
935
	</span>
936
    </xsl:if>
937
    <xsl:if test="marc:datafield[@tag=242]">
938
    <span class="results_summary translated_title">
939
    <span class="label">Title translated: </span>
940
            <xsl:for-each select="marc:datafield[@tag=242]">
941
                    <xsl:call-template name="subfieldSelect">
942
                        <xsl:with-param name="codes">abh</xsl:with-param>
943
                    </xsl:call-template>
944
                    <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
945
            </xsl:for-each>
946
	</span>
947
    </xsl:if>
948
    <xsl:if test="marc:datafield[@tag=856]">
949
         <span class="results_summary online_resources">
950
			   <span class="label">Online Access: </span>
951
                            <xsl:for-each select="marc:datafield[@tag=856]">
952
                            <xsl:variable name="SubqText"><xsl:value-of select="marc:subfield[@code='q']"/></xsl:variable>
953
                            <xsl:if test="$OPACURLOpenInNewWindow='0'">
954
			      <a>
955
			      <xsl:choose>
956
			        <xsl:when test="$OPACTrackClicks='track'">
957
				  <xsl:attribute name="href">/cgi-bin/koha/tracklinks.pl?uri=<xsl:value-of select="marc:subfield[@code='u']"/>;biblionumber=<xsl:value-of select="$biblionumber"/></xsl:attribute>
958
				</xsl:when>
959
	                        <xsl:when test="$OPACTrackClicks='anonymous'">
960
		                  <xsl:attribute name="href">/cgi-bin/koha/tracklinks.pl?uri=<xsl:value-of select="marc:subfield[@code='u']"/>;biblionumber=<xsl:value-of select="$biblionumber"/></xsl:attribute>
961
				</xsl:when>
962
				<xsl:otherwise>
963
				  <xsl:attribute name="href"><xsl:value-of select="marc:subfield[@code='u']"/></xsl:attribute>
964
				</xsl:otherwise>
965
			      </xsl:choose>
966
                                    <xsl:choose>
967
                                     <xsl:when test="($Show856uAsImage='Results' or $Show856uAsImage='Both') and (substring($SubqText,1,6)='image/' or $SubqText='img' or $SubqText='bmp' or $SubqText='cod' or $SubqText='gif' or $SubqText='ief' or $SubqText='jpe' or $SubqText='jpeg' or $SubqText='jpg' or $SubqText='jfif' or $SubqText='png' or $SubqText='svg' or $SubqText='tif' or $SubqText='tiff' or $SubqText='ras' or $SubqText='cmx' or $SubqText='ico' or $SubqText='pnm' or $SubqText='pbm' or $SubqText='pgm' or $SubqText='ppm' or $SubqText='rgb' or $SubqText='xbm' or $SubqText='xpm' or $SubqText='xwd')">
968
                                        <xsl:element name="img"><xsl:attribute name="src"><xsl:value-of select="marc:subfield[@code='u']"/></xsl:attribute><xsl:attribute name="alt"><xsl:value-of select="marc:subfield[@code='y']"/></xsl:attribute><xsl:attribute name="height">100</xsl:attribute></xsl:element><xsl:text></xsl:text>
969
                                    </xsl:when>
970
                                    <xsl:when test="marc:subfield[@code='y' or @code='3' or @code='z']">
971
                                        <xsl:call-template name="subfieldSelect">                        
972
                                        <xsl:with-param name="codes">y3z</xsl:with-param>                    
973
                                        </xsl:call-template>
974
                                    </xsl:when>
975
                                    <xsl:when test="not(marc:subfield[@code='y']) and not(marc:subfield[@code='3']) and not(marc:subfield[@code='z'])">
976
					<xsl:choose>
977
					<xsl:when test="$URLLinkText!=''">
978
						<xsl:value-of select="$URLLinkText"/>
979
					</xsl:when>
980
					<xsl:otherwise>
981
						<xsl:text>Click here to access online</xsl:text>
982
					</xsl:otherwise>
983
					</xsl:choose>
984
                                    </xsl:when>
985
                                    </xsl:choose>
986
                                    </a>
987
                              </xsl:if>
988
                            <xsl:if test="$OPACURLOpenInNewWindow='1'">
989
                                   <a target='_blank'>
990
				   <xsl:choose>
991
				     <xsl:when test="$OPACTrackClicks='track'">
992
				       <xsl:attribute name="href">/cgi-bin/koha/tracklinks.pl?uri=<xsl:value-of select="marc:subfield[@code='u']"/>;biblionumber=<xsl:value-of select="$biblionumber"/></xsl:attribute>
993
				     </xsl:when>
994
				     <xsl:when test="$OPACTrackClicks='anonymous'">
995
				       <xsl:attribute name="href">/cgi-bin/koha/tracklinks.pl?uri=<xsl:value-of select="marc:subfield[@code='u']"/>;biblionumber=<xsl:value-of select="$biblionumber"/></xsl:attribute>
996
				     </xsl:when>
997
				     <xsl:otherwise>
998
		                       <xsl:attribute name="href"><xsl:value-of select="marc:subfield[@code='u']"/></xsl:attribute>
999
				     </xsl:otherwise>
1000
				   </xsl:choose>
1001
                                    <xsl:choose>
1002
                                    <xsl:when test="($Show856uAsImage='Results' or $Show856uAsImage='Both') and ($SubqText='img' or $SubqText='bmp' or $SubqText='cod' or $SubqText='gif' or $SubqText='ief' or $SubqText='jpe' or $SubqText='jpeg' or $SubqText='jpg' or $SubqText='jfif' or $SubqText='png' or $SubqText='svg' or $SubqText='tif' or $SubqText='tiff' or $SubqText='ras' or $SubqText='cmx' or $SubqText='ico' or $SubqText='pnm' or $SubqText='pbm' or $SubqText='pgm' or $SubqText='ppm' or $SubqText='rgb' or $SubqText='xbm' or $SubqText='xpm' or $SubqText='xwd')">
1003
                                        <xsl:element name="img"><xsl:attribute name="src"><xsl:value-of select="marc:subfield[@code='u']"/></xsl:attribute><xsl:attribute name="alt"><xsl:value-of select="marc:subfield[@code='y']"/></xsl:attribute><xsl:attribute name="height">100</xsl:attribute></xsl:element><xsl:text></xsl:text>
1004
                                    </xsl:when>
1005
                                    <xsl:when test="marc:subfield[@code='y' or @code='3' or @code='z']">
1006
                                        <xsl:call-template name="subfieldSelect">                        
1007
                                        <xsl:with-param name="codes">y3z</xsl:with-param>                    
1008
                                        </xsl:call-template>
1009
                                    </xsl:when>
1010
                                    <xsl:when test="not(marc:subfield[@code='y']) and not(marc:subfield[@code='3']) and not(marc:subfield[@code='z'])">
1011
					<xsl:choose>
1012
					<xsl:when test="$URLLinkText!=''">
1013
						<xsl:value-of select="$URLLinkText"/>
1014
					</xsl:when>
1015
					<xsl:otherwise>
1016
						<xsl:text>Click here to access online</xsl:text>
1017
					</xsl:otherwise>
1018
					</xsl:choose>
1019
                                    </xsl:when>
1020
                                    </xsl:choose>
1021
                                    </a>
1022
                              </xsl:if>
1023
                                    <xsl:choose>
1024
                                    <xsl:when test="position()=last()"><xsl:text> </xsl:text></xsl:when>
1025
                                    <xsl:otherwise> | </xsl:otherwise>
1026
                                    </xsl:choose>
1027
                            </xsl:for-each>
1028
                            </span>
1029
                        </xsl:if>
1030
                        <span class="results_summary availability">
1031
                        <span class="label">Availability: </span>
1032
                        <xsl:choose>
1033
				   <xsl:when test="count(key('item-by-status', 'available'))=0 and count(key('item-by-status', 'reference'))=0">
1034
                        <xsl:choose>
1035
                            <xsl:when test="string-length($AlternateHoldingsField)=3 and marc:datafield[@tag=$AlternateHoldingsField]">
1036
                            <xsl:variable name="AlternateHoldingsCount" select="count(marc:datafield[@tag=$AlternateHoldingsField])"/>
1037
                            <xsl:for-each select="marc:datafield[@tag=$AlternateHoldingsField][1]">
1038
                                <xsl:call-template select="marc:datafield[@tag=$AlternateHoldingsField]" name="subfieldSelect">
1039
                                    <xsl:with-param name="codes"><xsl:value-of select="$AlternateHoldingsSubfields"/></xsl:with-param>
1040
                                    <xsl:with-param name="delimeter"><xsl:value-of select="$AlternateHoldingsSeparator"/></xsl:with-param>
1041
                                </xsl:call-template>
1042
                            </xsl:for-each>
1043
                            (<xsl:value-of select="$AlternateHoldingsCount"/>)
1044
                            </xsl:when>
1045
                            <xsl:otherwise>No items available </xsl:otherwise>
1046
                        </xsl:choose>
1047
				   </xsl:when>
1048
                   <xsl:when test="count(key('item-by-status', 'available'))>0">
1049
                   <span class="available">
1050
                       <b><xsl:text>Items available for loan: </xsl:text></b>
1051
                       <xsl:variable name="available_items"
1052
                           select="key('item-by-status', 'available')"/>
1053
               <xsl:choose>
1054
               <xsl:when test="$singleBranchMode=1">
1055
               <xsl:for-each select="$available_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]">
1056
                   <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber"> [<xsl:value-of select="items:itemcallnumber"/>]</xsl:if>
1057
                               <xsl:text> (</xsl:text>
1058
                               <xsl:value-of select="count(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch)))"/>
1059
                               <xsl:text>)</xsl:text>
1060
                               <xsl:choose><xsl:when test="position()=last()"><xsl:text>. </xsl:text></xsl:when><xsl:otherwise><xsl:text>, </xsl:text></xsl:otherwise></xsl:choose>
1061
                               </xsl:for-each>
1062
               </xsl:when>
1063
               <xsl:otherwise>
1064
                   <xsl:for-each select="$available_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]">
1065
                       <xsl:value-of select="items:homebranch"/>
1066
                   <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber and $OPACItemLocation='callnum'"> [<xsl:value-of select="items:itemcallnumber"/>]</xsl:if>
1067
                               <xsl:text> (</xsl:text>
1068
                               <xsl:value-of select="count(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch)))"/>
1069
                               <xsl:text>)</xsl:text>
1070
                               <xsl:choose><xsl:when test="position()=last()"><xsl:text>. </xsl:text></xsl:when><xsl:otherwise><xsl:text>, </xsl:text></xsl:otherwise></xsl:choose>
1071
                               </xsl:for-each>
1072
               </xsl:otherwise>
1073
               </xsl:choose>
1074
1075
           </span>
1076
                   </xsl:when>
1077
				   </xsl:choose>
1078
1079
            <xsl:choose>
1080
                <xsl:when test="count(key('item-by-status', 'reference'))>0">
1081
                    <span class="available">
1082
                        <b><xsl:text>Items available for reference: </xsl:text></b>
1083
                        <xsl:variable name="reference_items" select="key('item-by-status', 'reference')"/>
1084
                        <xsl:for-each select="$reference_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]">
1085
                            <xsl:if test="$singleBranchMode=0">
1086
                                <xsl:value-of select="items:homebranch"/>
1087
                            </xsl:if>
1088
                            <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber"> [<xsl:value-of select="items:itemcallnumber"/>]</xsl:if>
1089
                            <xsl:text> (</xsl:text>
1090
                            <xsl:value-of select="count(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch)))"/>
1091
                            <xsl:text> )</xsl:text>
1092
                            <xsl:choose><xsl:when test="position()=last()"><xsl:text>. </xsl:text></xsl:when><xsl:otherwise><xsl:text>, </xsl:text></xsl:otherwise></xsl:choose>
1093
                        </xsl:for-each>
1094
                    </span>
1095
                </xsl:when>
1096
            </xsl:choose>
1097
1098
                   <xsl:choose> <xsl:when test="count(key('item-by-status', 'available'))>0">
1099
                       <xsl:choose><xsl:when test="count(key('item-by-status', 'reference'))>0">
1100
                            <br/>
1101
                       </xsl:when></xsl:choose>
1102
                   </xsl:when> </xsl:choose>
1103
1104
                   <xsl:if test="count(key('item-by-status', 'Checked out'))>0">
1105
                   <span class="unavailable">
1106
                       <xsl:text>Checked out (</xsl:text>
1107
                       <xsl:value-of select="count(key('item-by-status', 'Checked out'))"/>
1108
                       <xsl:text>). </xsl:text>
1109
				   </span>
1110
                   </xsl:if>
1111
                   <xsl:if test="count(key('item-by-status', 'Withdrawn'))>0">
1112
                   <span class="unavailable">
1113
                       <xsl:text>Withdrawn (</xsl:text>
1114
                       <xsl:value-of select="count(key('item-by-status', 'Withdrawn'))"/>
1115
                       <xsl:text>). </xsl:text>                   </span>
1116
				   </xsl:if>
1117
                    <xsl:if test="$hidelostitems='0' and count(key('item-by-status', 'Lost'))>0">
1118
                   <span class="unavailable">
1119
                       <xsl:text>Lost (</xsl:text>
1120
                       <xsl:value-of select="count(key('item-by-status', 'Lost'))"/>
1121
                       <xsl:text>). </xsl:text>                   </span>
1122
				   </xsl:if>
1123
                    <xsl:if test="count(key('item-by-status', 'Damaged'))>0">
1124
                   <span class="unavailable">
1125
                       <xsl:text>Damaged (</xsl:text>
1126
                       <xsl:value-of select="count(key('item-by-status', 'Damaged'))"/>
1127
                       <xsl:text>). </xsl:text>                   </span>
1128
                   </xsl:if>
1129
                    <xsl:if test="count(key('item-by-status', 'On order'))>0">
1130
                   <span class="unavailable">
1131
                       <xsl:text>On order (</xsl:text>
1132
                       <xsl:value-of select="count(key('item-by-status', 'On order'))"/>
1133
                       <xsl:text>). </xsl:text>                   </span>
1134
                   </xsl:if>
1135
                    <xsl:if test="count(key('item-by-status', 'In transit'))>0">
1136
                   <span class="unavailable">
1137
                       <xsl:text>In transit (</xsl:text>
1138
                       <xsl:value-of select="count(key('item-by-status', 'In transit'))"/>
1139
                       <xsl:text>). </xsl:text>                   </span>
1140
                   </xsl:if>
1141
                    <xsl:if test="count(key('item-by-status', 'Waiting'))>0">
1142
                   <span class="unavailable">
1143
                       <xsl:text>On hold (</xsl:text>
1144
                       <xsl:value-of select="count(key('item-by-status', 'Waiting'))"/>
1145
                       <xsl:text>). </xsl:text>                   </span>
1146
                   </xsl:if>
1147
               </span>
1148
    <xsl:choose>
1149
        <xsl:when test="($OPACItemLocation='location' or $OPACItemLocation='ccode') and (count(key('item-by-status', 'available'))!=0 or count(key('item-by-status', 'reference'))!=0)">
1150
            <span class="results_summary" id="location">
1151
                <span class="label">Location(s): </span>
1152
                <xsl:choose>
1153
                <xsl:when test="count(key('item-by-status', 'available'))>0">
1154
                    <span class="available">
1155
                        <xsl:variable name="available_items" select="key('item-by-status', 'available')"/>
1156
                        <xsl:for-each select="$available_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]">
1157
                            <xsl:choose>
1158
                                <xsl:when test="$OPACItemLocation='location'"><b><xsl:value-of select="concat(items:location,' ')"/></b></xsl:when>
1159
                                <xsl:when test="$OPACItemLocation='ccode'"><b><xsl:value-of select="concat(items:ccode,' ')"/></b></xsl:when>
1160
                            </xsl:choose>
1161
                            <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber"> <xsl:value-of select="items:itemcallnumber"/></xsl:if>
1162
                            <xsl:choose><xsl:when test="position()=last()"><xsl:text>. </xsl:text></xsl:when><xsl:otherwise><xsl:text>, </xsl:text></xsl:otherwise></xsl:choose>
1163
                        </xsl:for-each>
1164
                    </span>
1165
                </xsl:when>
1166
                <xsl:when test="count(key('item-by-status', 'reference'))>0">
1167
                    <span class="available">
1168
                        <xsl:variable name="reference_items" select="key('item-by-status', 'reference')"/>
1169
                        <xsl:for-each select="$reference_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]">
1170
                            <xsl:choose>
1171
                                <xsl:when test="$OPACItemLocation='location'"><b><xsl:value-of select="concat(items:location,' ')"/></b></xsl:when>
1172
                                <xsl:when test="$OPACItemLocation='ccode'"><b><xsl:value-of select="concat(items:ccode,' ')"/></b></xsl:when>
1173
                            </xsl:choose>
1174
                            <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber"> <xsl:value-of select="items:itemcallnumber"/></xsl:if>
1175
                            <xsl:choose><xsl:when test="position()=last()"><xsl:text>. </xsl:text></xsl:when><xsl:otherwise><xsl:text>, </xsl:text></xsl:otherwise></xsl:choose>
1176
                        </xsl:for-each>
1177
                    </span>
1178
                </xsl:when>
1179
                </xsl:choose>
1180
            </span>
1181
        </xsl:when>
1182
       </xsl:choose>
1183
    </xsl:template>
1184
1185
    <xsl:template name="nameABCQ">
1186
            <xsl:call-template name="chopPunctuation">
1187
                <xsl:with-param name="chopString">
1188
                    <xsl:call-template name="subfieldSelect">
1189
                        <xsl:with-param name="codes">abcq</xsl:with-param>
1190
                    </xsl:call-template>
1191
                </xsl:with-param>
1192
                <xsl:with-param name="punctuation">
1193
                    <xsl:text>:,;/ </xsl:text>
1194
                </xsl:with-param>
1195
            </xsl:call-template>
1196
    </xsl:template>
1197
1198
    <xsl:template name="nameABCDN">
1199
        <xsl:for-each select="marc:subfield[@code='a']">
1200
                <xsl:call-template name="chopPunctuation">
1201
                    <xsl:with-param name="chopString" select="."/>
1202
                </xsl:call-template>
1203
        </xsl:for-each>
1204
        <xsl:for-each select="marc:subfield[@code='b']">
1205
                <xsl:value-of select="."/>
1206
        </xsl:for-each>
1207
        <xsl:if test="marc:subfield[@code='c'] or marc:subfield[@code='d'] or marc:subfield[@code='n']">
1208
                <xsl:call-template name="subfieldSelect">
1209
                    <xsl:with-param name="codes">cdn</xsl:with-param>
1210
                </xsl:call-template>
1211
        </xsl:if>
1212
    </xsl:template>
1213
1214
    <xsl:template name="nameACDEQ">
1215
            <xsl:call-template name="subfieldSelect">
1216
                <xsl:with-param name="codes">acdeq</xsl:with-param>
1217
            </xsl:call-template>
1218
    </xsl:template>
1219
1220
    <xsl:template name="nameDate">
1221
        <xsl:for-each select="marc:subfield[@code='d']">
1222
            <xsl:call-template name="chopPunctuation">
1223
                <xsl:with-param name="chopString" select="."/>
1224
            </xsl:call-template>
1225
        </xsl:for-each>
1226
    </xsl:template>
1227
1228
    <xsl:template name="role">
1229
        <xsl:for-each select="marc:subfield[@code='e']">
1230
                    <xsl:value-of select="."/>
1231
        </xsl:for-each>
1232
        <xsl:for-each select="marc:subfield[@code='4']">
1233
                    <xsl:value-of select="."/>
1234
        </xsl:for-each>
1235
    </xsl:template>
1236
1237
    <xsl:template name="specialSubfieldSelect">
1238
        <xsl:param name="anyCodes"/>
1239
        <xsl:param name="axis"/>
1240
        <xsl:param name="beforeCodes"/>
1241
        <xsl:param name="afterCodes"/>
1242
        <xsl:variable name="str">
1243
            <xsl:for-each select="marc:subfield">
1244
                <xsl:if test="contains($anyCodes, @code) or (contains($beforeCodes,@code) and following-sibling::marc:subfield[@code=$axis]) or (contains($afterCodes,@code) and preceding-sibling::marc:subfield[@code=$axis])">
1245
                    <xsl:value-of select="text()"/>
1246
                    <xsl:text> </xsl:text>
1247
                </xsl:if>
1248
            </xsl:for-each>
1249
        </xsl:variable>
1250
        <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
1251
    </xsl:template>
1252
1253
    <xsl:template name="subtitle">
1254
        <xsl:if test="marc:subfield[@code='b']">
1255
                <xsl:call-template name="chopPunctuation">
1256
                    <xsl:with-param name="chopString">
1257
                        <xsl:value-of select="marc:subfield[@code='b']"/>
1258
1259
                        <!--<xsl:call-template name="subfieldSelect">
1260
                            <xsl:with-param name="codes">b</xsl:with-param>                                 
1261
                        </xsl:call-template>-->
1262
                    </xsl:with-param>
1263
                </xsl:call-template>
1264
        </xsl:if>
1265
    </xsl:template>
1266
1267
    <xsl:template name="chopBrackets">
1268
        <xsl:param name="chopString"></xsl:param>
1269
        <xsl:variable name="string">
1270
            <xsl:call-template name="chopPunctuation">
1271
                <xsl:with-param name="chopString" select="$chopString"></xsl:with-param>
1272
            </xsl:call-template>
1273
        </xsl:variable>
1274
        <xsl:if test="substring($string, 1,1)='['">
1275
            <xsl:value-of select="substring($string,2, string-length($string)-2)"></xsl:value-of>
1276
        </xsl:if>
1277
        <xsl:if test="substring($string, 1,1)!='['">
1278
            <xsl:value-of select="$string"></xsl:value-of>
1279
        </xsl:if>
1280
    </xsl:template>
1281
1282
</xsl:stylesheet>
(-)a/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slimUtils.xsl (-200 lines)
Lines 1-200 Link Here
1
<?xml version='1.0'?>
2
<!DOCTYPE stylesheet [<!ENTITY nbsp "&#160;" >]>
3
<xsl:stylesheet version="1.0" xmlns:marc="http://www.loc.gov/MARC21/slim" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
4
	<xsl:template name="datafield">
5
		<xsl:param name="tag"/>
6
		<xsl:param name="ind1"><xsl:text> </xsl:text></xsl:param>
7
		<xsl:param name="ind2"><xsl:text> </xsl:text></xsl:param>
8
		<xsl:param name="subfields"/>
9
		<xsl:element name="datafield">
10
			<xsl:attribute name="tag">
11
				<xsl:value-of select="$tag"/>
12
			</xsl:attribute>
13
			<xsl:attribute name="ind1">
14
				<xsl:value-of select="$ind1"/>
15
			</xsl:attribute>
16
			<xsl:attribute name="ind2">
17
				<xsl:value-of select="$ind2"/>
18
			</xsl:attribute>
19
			<xsl:copy-of select="$subfields"/>
20
		</xsl:element>
21
	</xsl:template>
22
23
	<xsl:template name="subfieldSelect">
24
		<xsl:param name="codes"/>
25
		<xsl:param name="delimeter"><xsl:text> </xsl:text></xsl:param>
26
		<xsl:param name="subdivCodes"/>
27
		<xsl:param name="subdivDelimiter"/>
28
        <xsl:param name="prefix"/>
29
        <xsl:param name="suffix"/>
30
		<xsl:variable name="str">
31
			<xsl:for-each select="marc:subfield">
32
				<xsl:if test="contains($codes, @code)">
33
                    <xsl:if test="contains($subdivCodes, @code)">
34
                        <xsl:value-of select="$subdivDelimiter"/>
35
                    </xsl:if>
36
					<xsl:value-of select="$prefix"/><xsl:value-of select="text()"/><xsl:value-of select="$suffix"/><xsl:value-of select="$delimeter"/>
37
				</xsl:if>
38
			</xsl:for-each>
39
		</xsl:variable>
40
		<xsl:value-of select="substring($str,1,string-length($str)-string-length($delimeter))"/>
41
	</xsl:template>
42
43
    <xsl:template name="subfieldSelectSpan">
44
        <xsl:param name="codes"/>
45
        <xsl:param name="delimeter"><xsl:text> </xsl:text></xsl:param>
46
        <xsl:param name="subdivCodes"/>
47
        <xsl:param name="subdivDelimiter"/>
48
        <xsl:param name="prefix"/>
49
        <xsl:param name="suffix"/>
50
            <xsl:for-each select="marc:subfield">
51
                <xsl:if test="contains($codes, @code)">
52
                    <span>
53
                        <xsl:attribute name="class"><xsl:value-of select="@code"/></xsl:attribute>
54
                        <xsl:if test="contains($subdivCodes, @code)">
55
                            <xsl:value-of select="$subdivDelimiter"/>
56
                        </xsl:if>
57
                        <xsl:value-of select="$prefix"/><xsl:value-of select="text()"/><xsl:value-of select="$suffix"/><xsl:if test="position()!=last()"><xsl:value-of select="$delimeter"/></xsl:if>
58
                    </span>
59
                </xsl:if>
60
            </xsl:for-each>
61
    </xsl:template>
62
63
	<xsl:template name="buildSpaces">
64
		<xsl:param name="spaces"/>
65
		<xsl:param name="char"><xsl:text> </xsl:text></xsl:param>
66
		<xsl:if test="$spaces>0">
67
			<xsl:value-of select="$char"/>
68
			<xsl:call-template name="buildSpaces">
69
				<xsl:with-param name="spaces" select="$spaces - 1"/>
70
				<xsl:with-param name="char" select="$char"/>
71
			</xsl:call-template>
72
		</xsl:if>
73
	</xsl:template>
74
75
	<xsl:template name="chopPunctuation">
76
		<xsl:param name="chopString"/>
77
		<xsl:variable name="length" select="string-length($chopString)"/>
78
		<xsl:choose>
79
			<xsl:when test="$length=0"/>
80
			<xsl:when test="contains('.:,;/ ', substring($chopString,$length,1))">
81
				<xsl:call-template name="chopPunctuation">
82
					<xsl:with-param name="chopString" select="substring($chopString,1,$length - 1)"/>
83
				</xsl:call-template>
84
			</xsl:when>
85
			<xsl:when test="not($chopString)"/>
86
			<xsl:otherwise><xsl:value-of select="$chopString"/></xsl:otherwise>
87
		</xsl:choose>
88
	</xsl:template>
89
90
	<!-- Function extractControlNumber is used to extract the control number (record number) from MARC tags 773/80/85 [etc.] subfield $w.
91
	     Parameter: control number string.
92
	     Assumes LOC convention: (OrgCode)recordNumber.
93
	     If OrgCode is not present, return full string.
94
	     Additionally, handle various brackets/parentheses. Chop leading and trailing spaces.
95
	-->
96
	<xsl:template name="extractControlNumber">
97
	    <xsl:param name="subfieldW"/>
98
	    <xsl:variable name="tranW" select="translate($subfieldW,']})&gt;','))))')"/>
99
	    <xsl:choose>
100
	      <xsl:when test="contains($tranW,')')">
101
	        <xsl:value-of select="normalize-space(translate(substring-after($tranW,')'),'[]{}()&lt;&gt;',''))"/>
102
	      </xsl:when>
103
	      <xsl:otherwise>
104
	        <xsl:value-of select="normalize-space($subfieldW)"/>
105
	      </xsl:otherwise>
106
	    </xsl:choose>
107
	</xsl:template>
108
109
    <!-- Function m880Select:  Display Alternate Graphic Representation (MARC 880) for selected latin "base"tags
110
        - should be called immediately before the corresonding latin tags are processed 
111
        - tags in right-to-left languages are displayed floating right
112
        * Parameter:
113
           + basetags: display these tags if found in linkage section ( subfield 6) of tag 880
114
           + codes: display these subfields codes
115
        * Options: 
116
            - class: wrap output in <span class="$class">...</span>
117
            - label: prefix each(!) tag with label $label
118
            - bibno: link to biblionumber $bibno
119
            - index: build a search link using index $index with subfield $a as key; if subfield $9 is present use index 'an' with key $9 instead.
120
         * Limitations:
121
            - displays every field on a separate line (to switch between rtl and ltr)
122
         * Pitfalls:
123
           (!) output might be empty
124
    -->
125
    <xsl:template name="m880Select">
126
         <xsl:param name="basetags"/> <!-- e.g.  100,700,110,710 -->
127
        <xsl:param name="codes"/> <!-- e.g. abc  -->
128
        <xsl:param name="class"/> <!-- e.g. results_summary -->
129
        <xsl:param name="label"/> <!-- e.g.  Edition -->
130
        <xsl:param name="bibno"/>
131
        <xsl:param name="index"/> <!-- e.g.  au -->
132
133
        <xsl:for-each select="marc:datafield[@tag=880]">
134
            <xsl:variable name="code6" select="marc:subfield[@code=6]"/>
135
            <xsl:if test="contains(string($basetags), substring($code6,1,3))">
136
                <span>
137
                    <xsl:choose>
138
                    <xsl:when test="boolean($class) and substring($code6,string-length($code6)-1,2) ='/r'">
139
                        <xsl:attribute name="class"><xsl:value-of select="$class"/> m880</xsl:attribute>
140
                        <xsl:attribute name="dir">rtl</xsl:attribute>
141
                    </xsl:when>
142
                     <xsl:when test="boolean($class)">
143
                        <xsl:attribute name="class"><xsl:value-of select="$class"/></xsl:attribute>
144
                        <xsl:attribute name="style">display:block; </xsl:attribute>
145
                    </xsl:when>    
146
                     <xsl:when test="substring($code6,string-length($code6)-1,2) ='/r'">
147
                        <xsl:attribute name="class"><xsl:value-of select="$class"/> m880</xsl:attribute>
148
                    </xsl:when>                                    
149
                    </xsl:choose>
150
                    <xsl:if test="boolean($label)">
151
                        <span class="label">
152
                            <xsl:value-of select="$label"/>
153
                        </span>
154
                    </xsl:if>
155
                    <xsl:variable name="str">
156
                        <xsl:for-each select="marc:subfield">
157
                            <xsl:if test="contains($codes, @code)">
158
                                <xsl:value-of select="text()"/>
159
                                <xsl:text> </xsl:text>
160
                            </xsl:if>
161
                        </xsl:for-each>
162
                    </xsl:variable>
163
                    <xsl:if test="string-length($str) &gt; 0">
164
                        <xsl:choose>
165
                            <xsl:when test="boolean($bibno)">
166
                                <a>
167
                                    <xsl:attribute name="href">/cgi-bin/koha/opac-detail.pl?biblionumber=<xsl:value-of  select="$bibno"/></xsl:attribute>
168
                                    <xsl:value-of select="$str"/>
169
                                </a>
170
                            </xsl:when>
171
                           <xsl:when test="boolean($index) and boolean(marc:subfield[@code=9])">
172
                                <a>
173
                                    <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=an:<xsl:value-of  select="marc:subfield[@code=9]"/></xsl:attribute>
174
                                    <xsl:value-of select="$str"/>
175
                                </a>
176
                            </xsl:when>
177
                            <xsl:when test="boolean($index)">
178
                                <a>
179
                                    <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=<xsl:value-of  select="$index"/>:<xsl:value-of  select="marc:subfield[@code='a']"/></xsl:attribute>
180
                                    <xsl:value-of select="$str"/>
181
                                </a>
182
                            </xsl:when>
183
                            <xsl:otherwise>
184
                                <xsl:value-of select="$str"/>
185
                            </xsl:otherwise>
186
                        </xsl:choose>
187
                    </xsl:if>
188
                </span>
189
            </xsl:if>
190
        </xsl:for-each>
191
192
    </xsl:template>
193
194
</xsl:stylesheet>
195
196
<!-- Stylus Studio meta-information - (c)1998-2002 eXcelon Corp.
197
<metaInformation>
198
<scenarios/><MapperInfo srcSchemaPath="" srcSchemaRoot="" srcSchemaPathIsRelative="yes" srcSchemaInterpretAsXML="no" destSchemaPath="" destSchemaRoot="" destSchemaPathIsRelative="yes" destSchemaInterpretAsXML="no"/>
199
</metaInformation>
200
-->
(-)a/koha-tmpl/opac-tmpl/prog/en/xslt/NORMARCslim2OPACDetail.xsl (-639 lines)
Lines 1-639 Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
3
<!DOCTYPE stylesheet [<!ENTITY nbsp "&#160;" >]>
4
5
<!-- $Id: MARC21slim2DC.xsl,v 1.1 2003/01/06 08:20:27 adam Exp $ -->
6
<xsl:stylesheet version="1.0"
7
  xmlns:marc="http://www.loc.gov/MARC21/slim"
8
  xmlns:items="http://www.koha-community.org/items"
9
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
10
  exclude-result-prefixes="marc items">
11
    <xsl:import href="NORMARCslimUtils.xsl"/>
12
    <xsl:output method = "html" indent="yes" omit-xml-declaration = "yes" encoding="UTF-8"/>
13
    <xsl:template match="/">
14
            <xsl:apply-templates/>
15
    </xsl:template>
16
17
    <xsl:template match="marc:record">
18
19
        <!-- Sysprefs -->
20
        <xsl:variable name="UseControlNumber" select="marc:sysprefs/marc:syspref[@name='UseControlNumber']"/>
21
        <xsl:variable name="SubjectModifier"><xsl:if test="marc:sysprefs/marc:syspref[@name='TraceCompleteSubfields']='1'">,complete-subfield</xsl:if></xsl:variable>
22
        <xsl:variable name="TraceSubjectSubdivisions" select="marc:sysprefs/marc:syspref[@name='TraceSubjectSubdivisions']"/>
23
        <xsl:variable name="TracingQuotesLeft">
24
          <xsl:choose>
25
            <xsl:when test="marc:sysprefs/marc:syspref[@name='UseICU']='1'">{</xsl:when>
26
            <xsl:otherwise>"</xsl:otherwise>
27
          </xsl:choose>
28
        </xsl:variable>
29
        <xsl:variable name="TracingQuotesRight">
30
          <xsl:choose>
31
            <xsl:when test="marc:sysprefs/marc:syspref[@name='UseICU']='1'">}</xsl:when>
32
            <xsl:otherwise>"</xsl:otherwise>
33
          </xsl:choose>
34
        </xsl:variable>
35
        <xsl:variable name="DisplayOPACiconsXSLT" select="marc:sysprefs/marc:syspref[@name='DisplayOPACiconsXSLT']"/>
36
37
        <xsl:variable name="leader" select="marc:leader"/>
38
        <xsl:variable name="leader6" select="substring($leader,7,1)"/>
39
        <xsl:variable name="leader7" select="substring($leader,8,1)"/>
40
        <xsl:variable name="controlField008" select="marc:controlfield[@tag=008]"/>
41
        <xsl:variable name="field019b" select="marc:datafield[@tag=019]/marc:subfield[@code='b']"/>
42
        <xsl:variable name="typeOf008">
43
            <!-- The logic here should be exactly the same for NORMARCslim2intranetDetail.xsl, NORMARCslim2intranetResults.xsl, NORMARCslim2OPACDetail.xsl and NORMARCslim2OPACResults.xsl -->
44
            <xsl:choose>
45
                <xsl:when test="$field019b='b' or $field019b='k' or $field019b='l' or $leader6='b'">Mon</xsl:when>
46
                <xsl:when test="$field019b='e' or contains($field019b,'ec') or contains($field019b,'ed') or contains($field019b,'ee') or contains($field019b,'ef') or $leader6='g'">FV</xsl:when>
47
                <xsl:when test="$field019b='c' or $field019b='d' or contains($field019b,'da') or contains($field019b,'db') or contains($field019b,'dc') or contains($field019b,'dd') or contains($field019b,'dg') or contains($field019b,'dh') or contains($field019b,'di') or contains($field019b,'dj') or contains($field019b,'dk') or $leader6='c' or $leader6='d' or $leader6='i' or $leader6='j'">Mus</xsl:when>
48
                <xsl:when test="$field019b='a' or contains($field019b,'ab') or contains($field019b,'aj') or $leader6='e' or $leader6='f'">Kar</xsl:when>
49
                <xsl:when test="$field019b='f' or $field019b='i' or contains($field019b,'ib') or contains($field019b,'ic') or contains($field019b,'fd') or contains($field019b,'ff') or contains($field019b,'fi') or $leader6='k'">gra</xsl:when>
50
                <xsl:when test="$field019b='g' or contains($field019b,'gb') or contains($field019b,'gd') or contains($field019b,'ge') or $leader6='m'">Fil</xsl:when>
51
                <xsl:when test="$leader6='o'">kom</xsl:when>
52
                <xsl:when test="$field019b='h' or $leader6='r'">trd</xsl:when>
53
                <xsl:when test="$field019b='j' or $leader6='a'">
54
                    <xsl:choose>
55
                        <xsl:when test="$leader7='a' or $leader7='c' or $leader7='m' or $leader7='p'">Mon</xsl:when>
56
                        <xsl:when test="$field019b='j' or $leader7='b' or $leader7='s'">Per</xsl:when>
57
                    </xsl:choose>
58
                </xsl:when>
59
            </xsl:choose>
60
        </xsl:variable>
61
62
        <!-- Tittel og ansvarsopplysninger -->
63
        <xsl:if test="marc:datafield[@tag=245]">
64
        <h1 class="title">
65
            <xsl:for-each select="marc:datafield[@tag=245]">
66
                    <xsl:call-template name="subfieldSelect">
67
                        <xsl:with-param name="codes">a</xsl:with-param>
68
                    </xsl:call-template>
69
                    <xsl:if test="marc:subfield[@code='h']">
70
                        <xsl:text> </xsl:text>
71
                        (<xsl:call-template name="subfieldSelect">
72
                            <xsl:with-param name="codes">h</xsl:with-param>
73
                        </xsl:call-template>) 
74
                    </xsl:if>
75
                    <xsl:if test="marc:subfield[@code='b']">
76
                        <xsl:text> : </xsl:text>
77
                        <xsl:call-template name="subfieldSelect">
78
                            <xsl:with-param name="codes">b</xsl:with-param>
79
                        </xsl:call-template>
80
                    </xsl:if>
81
                    <xsl:text> </xsl:text>
82
                    <xsl:call-template name="subfieldSelect">
83
                        <xsl:with-param name="codes">np</xsl:with-param>
84
                    </xsl:call-template>
85
            </xsl:for-each>
86
        </h1>
87
        </xsl:if>
88
89
        <!-- Author Statement -->
90
		<!-- 245$9 is Koha authority number --> 
91
        <xsl:choose>
92
        <xsl:when test="marc:datafield[@tag=100] or marc:datafield[@tag=110] or marc:datafield[@tag=111] or marc:datafield[@tag=700] or marc:datafield[@tag=710] or marc:datafield[@tag=711]">
93
        <h5 class="author">av
94
        <xsl:for-each select="marc:datafield[@tag=100 or @tag=700]">
95
        <a>
96
        <xsl:choose>
97
            <xsl:when test="marc:subfield[@code=9]">
98
                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=an:<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
99
            </xsl:when>
100
            <xsl:otherwise>
101
            <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=au:<xsl:value-of select="marc:subfield[@code='a']"/></xsl:attribute>
102
            </xsl:otherwise>
103
        </xsl:choose>
104
        <xsl:call-template name="nameABCDQ"/></a>
105
        <xsl:if test="marc:subfield[@code=9]">
106
            <a class='authlink'>
107
                <xsl:attribute name="href">/cgi-bin/koha/opac-authoritiesdetail.pl?authid=<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
108
                <img style="vertical-align:middle" height="15" width="15" src="/opac-tmpl/prog/images/filefind.png"/>
109
            </a>
110
        </xsl:if>
111
        <xsl:choose>
112
        <xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
113
        </xsl:for-each>
114
115
        <xsl:for-each select="marc:datafield[@tag=110 or @tag=710]">
116
        <a>
117
        <xsl:choose>
118
            <xsl:when test="marc:subfield[@code=9]">
119
                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=an:<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
120
            </xsl:when>
121
            <xsl:otherwise>
122
            <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=au:<xsl:value-of select="marc:subfield[@code='a']"/></xsl:attribute>      
123
            </xsl:otherwise>
124
        </xsl:choose>
125
        <xsl:call-template name="nameABCDN"/></a>
126
        <xsl:if test="marc:subfield[@code=9]">
127
            <a class='authlink'>
128
                <xsl:attribute name="href">/cgi-bin/koha/opac-authoritiesdetail.pl?authid=<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
129
                <img style="vertical-align:middle" height="15" width="15" src="/opac-tmpl/prog/images/filefind.png"/>
130
            </a>
131
        </xsl:if>
132
        <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
133
        </xsl:for-each>
134
135
        <xsl:for-each select="marc:datafield[@tag=111 or @tag=711]">
136
        <a>
137
        <xsl:choose>
138
            <xsl:when test="marc:subfield[@code=9]">
139
                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=an:<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
140
            </xsl:when>
141
            <xsl:otherwise>
142
            <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=au:<xsl:value-of select="marc:subfield[@code='a']"/></xsl:attribute>
143
            </xsl:otherwise>
144
        </xsl:choose>
145
        <xsl:call-template name="nameACDEQ"/></a>
146
        <xsl:if test="marc:subfield[@code=9]">
147
            <a class='authlink'>
148
                <xsl:attribute name="href">/cgi-bin/koha/opac-authoritiesdetail.pl?authid=<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
149
                <img style="vertical-align:middle" height="15" width="15" src="/opac-tmpl/prog/images/filefind.png"/>
150
            </a>
151
        </xsl:if>
152
        <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
153
154
        </xsl:for-each>
155
        </h5>
156
        </xsl:when>
157
        </xsl:choose>
158
159
    <xsl:if test="$DisplayOPACiconsXSLT!='0'">
160
        <xsl:if test="$typeOf008!=''">
161
        <span class="results_summary">
162
            <span class="label">Materialtype: </span>
163
            <xsl:choose>
164
                <xsl:when test="$typeOf008='Mon'"><img src="/opac-tmpl/lib/famfamfam/BK.png" alt="Bok" title="Bok"/> Bok</xsl:when>
165
                <xsl:when test="$typeOf008='Per'"><img src="/opac-tmpl/lib/famfamfam/AR.png" alt="Periodika" title="Periodika"/> Periodika</xsl:when>
166
                <xsl:when test="$typeOf008='Fil'"><img src="/opac-tmpl/lib/famfamfam/CF.png" alt="Fil" title="Fil"/> Fil</xsl:when>
167
                <xsl:when test="$typeOf008='Kar'"><img src="/opac-tmpl/lib/famfamfam/MP.png" alt="Kart" title="Kart"/> Kart</xsl:when>
168
                <xsl:when test="$typeOf008='FV'"><img  src="/opac-tmpl/lib/famfamfam/VM.png" alt="Film og video" title="Film og video"/> Film og video</xsl:when>
169
                <xsl:when test="$typeOf008='Mus'"><img src="/opac-tmpl/lib/famfamfam/PR.png" alt="Musikktrykk og lydopptak" title="Musikktrykk og lydopptak"/> Musikk</xsl:when>
170
                <xsl:when test="$typeOf008='gra'"><img src="/opac-tmpl/lib/famfamfam/GR.png" alt="Grafisk materiale" title="Grafisk materiale"/> Grafisk materiale</xsl:when>
171
                <xsl:when test="$typeOf008='kom'"><img src="/opac-tmpl/lib/famfamfam/MX.png" alt="Kombidokumenter" title="Kombidokumenter"/> Kombidokumenter</xsl:when>
172
                <xsl:when test="$typeOf008='trd'"><img src="/opac-tmpl/lib/famfamfam/TD.png" alt="Tre-dimensjonale gjenstander" title="Tre-dimensjonale gjenstander"/> Tre-dimensjonale gjenstander</xsl:when>
173
            </xsl:choose>
174
        </span>
175
        </xsl:if>
176
    </xsl:if>
177
178
        <!--Series -->
179
        <xsl:if test="marc:datafield[@tag=440 or @tag=490]">
180
	        <span class="results_summary"><span class="label">Series: </span>
181
	        <xsl:for-each select="marc:datafield[@tag=440]">
182
	             <a href="/cgi-bin/koha/opac-search.pl?q=se:{marc:subfield[@code='a']}">
183
	            <xsl:call-template name="chopPunctuation">
184
	                            <xsl:with-param name="chopString">
185
	                                <xsl:call-template name="subfieldSelect">
186
	                                    <xsl:with-param name="codes">av</xsl:with-param>
187
	                                </xsl:call-template>
188
	                            </xsl:with-param>
189
	                        </xsl:call-template>
190
				</a>
191
	                    <xsl:text> </xsl:text><xsl:call-template name="part"/>
192
	            <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
193
	        </xsl:for-each>
194
	
195
	        <xsl:for-each select="marc:datafield[@tag=490][@ind1=0]">
196
	             <a href="/cgi-bin/koha/opac-search.pl?q=se:{marc:subfield[@code='a']}">
197
	                        <xsl:call-template name="chopPunctuation">
198
	                            <xsl:with-param name="chopString">
199
	                                <xsl:call-template name="subfieldSelect">
200
	                                    <xsl:with-param name="codes">av</xsl:with-param>
201
	                                </xsl:call-template>
202
	                            </xsl:with-param>
203
	                        </xsl:call-template>
204
	            </a>
205
	                    <xsl:call-template name="part"/>
206
	        <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
207
	        </xsl:for-each>
208
	        </span>
209
        </xsl:if>
210
211
        <!-- Analytics -->
212
        <xsl:if test="$leader7='s' or $leader7='c'">
213
        <span class="results_summary analytics"><span class="label">Analytics: </span>
214
            <a>
215
            <xsl:choose>
216
            <xsl:when test="$UseControlNumber = '1' and marc:controlfield[@tag=001]">
217
                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=rcn:<xsl:value-of select="marc:controlfield[@tag=001]"/>+and+(bib-level:a+or+bib-level:b)</xsl:attribute>
218
            </xsl:when>
219
            <xsl:otherwise>
220
                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=Host-item:<xsl:value-of select="translate(marc:datafield[@tag=245]/marc:subfield[@code='a'], '/', '')"/></xsl:attribute>
221
            </xsl:otherwise>
222
            </xsl:choose>
223
            <xsl:text>Show analytics</xsl:text>
224
            </a>
225
        </span>
226
        </xsl:if>
227
228
        <!-- 773 - Links from child to parent -->
229
        <xsl:if test="marc:datafield[@tag=773]">
230
        <xsl:for-each select="marc:datafield[@tag=773]">
231
        <xsl:if test="@ind1=0">
232
        <span class="results_summary in"><span class="label">
233
        <xsl:choose>
234
        <xsl:when test="@ind2=' '">
235
            In:
236
        </xsl:when>
237
        <xsl:when test="@ind2=8">
238
            <xsl:if test="marc:subfield[@code='i']">
239
                <xsl:value-of select="marc:subfield[@code='i']"/>
240
            </xsl:if>
241
        </xsl:when>
242
        </xsl:choose>
243
        </span>
244
                <xsl:variable name="f773">
245
                    <xsl:call-template name="chopPunctuation"><xsl:with-param name="chopString"><xsl:call-template name="subfieldSelect">
246
                        <xsl:with-param name="codes">a_t</xsl:with-param>
247
                    </xsl:call-template></xsl:with-param></xsl:call-template>
248
                </xsl:variable>
249
            <xsl:choose>
250
                <xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']">
251
                    <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=Control-number:<xsl:call-template name="extractControlNumber"><xsl:with-param name="subfieldW" select="marc:subfield[@code='w']"/></xsl:call-template></xsl:attribute>
252
                        <xsl:value-of select="translate($f773, '()', '')"/>
253
                    </a>
254
                    <xsl:if test="marc:subfield[@code='g']"><xsl:text> </xsl:text><xsl:value-of select="marc:subfield[@code='g']"/></xsl:if>
255
                </xsl:when>
256
                <xsl:when test="marc:subfield[@code='0']">
257
                    <a><xsl:attribute name="href">/cgi-bin/koha/opac-detail.pl?biblionumber=<xsl:value-of select="marc:subfield[@code='0']"/></xsl:attribute>
258
                        <xsl:value-of select="$f773"/>
259
                    </a>
260
                </xsl:when>
261
                <xsl:otherwise>
262
                    <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=ti,phr:<xsl:value-of select="translate($f773, '()', '')"/></xsl:attribute>
263
                        <xsl:value-of select="$f773"/>
264
                    </a>
265
                    <xsl:if test="marc:subfield[@code='g']"><xsl:text> </xsl:text><xsl:value-of select="marc:subfield[@code='g']"/></xsl:if>
266
                </xsl:otherwise>
267
            </xsl:choose>
268
        </span>
269
        <xsl:if test="marc:subfield[@code='n']">
270
            <span class="results_summary"><xsl:value-of select="marc:subfield[@code='n']"/></span>
271
        </xsl:if>
272
        </xsl:if>
273
        </xsl:for-each>
274
        </xsl:if>
275
276
        <!-- Publisher Statement -->
277
        
278
        <xsl:if test="marc:datafield[@tag=260]">
279
        <span class="results_summary"><span class="label">Utgiver: </span>
280
            <xsl:for-each select="marc:datafield[@tag=260]">
281
                <xsl:call-template name="chopPunctuation">
282
                  <xsl:with-param name="chopString">
283
                    <xsl:call-template name="subfieldSelect">
284
                        <xsl:with-param name="codes">bcg</xsl:with-param>
285
                    </xsl:call-template>
286
                   </xsl:with-param>
287
               </xsl:call-template>
288
                    <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
289
            </xsl:for-each>
290
        </span> 
291
        </xsl:if>
292
293
        <!-- Edition Statement -->
294
        
295
        <xsl:if test="marc:datafield[@tag=250]">
296
        <span class="results_summary"><span class="label">Utgave: </span>
297
            <xsl:for-each select="marc:datafield[@tag=250]">
298
                <xsl:call-template name="chopPunctuation">
299
                  <xsl:with-param name="chopString">
300
                    <xsl:call-template name="subfieldSelect">
301
                        <xsl:with-param name="codes">ab</xsl:with-param>
302
                    </xsl:call-template>
303
                   </xsl:with-param>
304
               </xsl:call-template>
305
                    <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
306
            </xsl:for-each>
307
        </span>
308
        </xsl:if>
309
310
        <!-- Description -->
311
        
312
        <xsl:if test="marc:datafield[@tag=300]">
313
        <span class="results_summary"><span class="label">Beskrivelse: </span>
314
            <xsl:for-each select="marc:datafield[@tag=300]">
315
                <xsl:call-template name="chopPunctuation">
316
                  <xsl:with-param name="chopString">
317
                    <xsl:call-template name="subfieldSelect">
318
                        <xsl:with-param name="codes">abceg</xsl:with-param>
319
                    </xsl:call-template>
320
                   </xsl:with-param>
321
               </xsl:call-template>
322
                    <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
323
            </xsl:for-each>
324
        </span>
325
       </xsl:if>
326
327
       <abbr class="unapi-id" title="koha:biblionumber:{marc:datafield[@tag=999]/marc:subfield[@code='c']}" ><!-- unAPI --></abbr>
328
329
       <xsl:if test="marc:datafield[@tag=020]">
330
        <span class="results_summary"><span class="label">ISBN: </span>
331
        <xsl:for-each select="marc:datafield[@tag=020]">
332
        <xsl:variable name="isbn" select="marc:subfield[@code='a']"/>
333
                <xsl:value-of select="marc:subfield[@code='a']"/>
334
                <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
335
        </xsl:for-each>
336
        </span>
337
        </xsl:if>
338
339
        <xsl:if test="marc:datafield[@tag=022]">
340
        <span class="results_summary"><span class="label">ISSN: </span>
341
        <xsl:for-each select="marc:datafield[@tag=022]">
342
                <xsl:value-of select="marc:subfield[@code='a']"/>
343
                <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
344
        </xsl:for-each>
345
        </span>
346
        </xsl:if>
347
348
        <!-- Other Title  Statement -->
349
350
        <xsl:if test="marc:datafield[@tag=246]">
351
        <span class="results_summary"><span class="label">Parallelltittel: </span>
352
            <xsl:for-each select="marc:datafield[@tag=246]">
353
                <xsl:call-template name="chopPunctuation">
354
                  <xsl:with-param name="chopString">
355
                    <xsl:call-template name="subfieldSelect">
356
                        <xsl:with-param name="codes">abhfgnp</xsl:with-param>
357
                    </xsl:call-template>
358
                   </xsl:with-param>
359
               </xsl:call-template>
360
                    <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
361
            </xsl:for-each>
362
        </span>
363
       </xsl:if>
364
365
        <!-- Uniform Title  Statement -->
366
367
        <xsl:if test="marc:datafield[@tag=130]|marc:datafield[@tag=240]|marc:datafield[@tag=730][@ind2!=2]">
368
        <span class="results_summary"><span class="label">Standardtittel: </span>
369
        <xsl:for-each select="marc:datafield[@tag=130]|marc:datafield[@tag=240]|marc:datafield[@tag=730][@ind2!=2]">
370
            <xsl:variable name="str">
371
                <xsl:for-each select="marc:subfield">
372
                    <xsl:if test="(contains('adfklmor',@code) and (not(../marc:subfield[@code='n' or @code='p']) or (following-sibling::marc:subfield[@code='n' or @code='p'])))">
373
                        <xsl:value-of select="text()"/>
374
                        <xsl:text> </xsl:text>
375
                     </xsl:if>
376
                </xsl:for-each>
377
            </xsl:variable>
378
            <xsl:call-template name="chopPunctuation">
379
                <xsl:with-param name="chopString">
380
                    <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
381
                        
382
                </xsl:with-param>
383
            </xsl:call-template>
384
            <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
385
        </xsl:for-each>
386
        </span>
387
        </xsl:if>
388
389
        <!-- Subjects -->
390
391
        <xsl:if test="marc:datafield[substring(@tag, 1, 1) = '6']">
392
            <span class="results_summary subjects"><span class="label">Emne(r): </span>
393
            <xsl:for-each select="marc:datafield[substring(@tag, 1, 1) = '6']">
394
            <a>
395
            <xsl:choose>
396
            <!-- Will implement this later
397
                <xsl:when test="marc:subfield[@code=9] and $UseAuthoritiesForTracings='1'">
398
                    <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=an:<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
399
                </xsl:when>
400
            -->
401
            <xsl:when test="$TraceSubjectSubdivisions='1'">
402
                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=<xsl:call-template name="subfieldSelect">
403
                        <xsl:with-param name="codes">abcdvxyz</xsl:with-param>
404
                        <xsl:with-param name="delimeter"> AND </xsl:with-param>
405
                        <xsl:with-param name="prefix">(su<xsl:value-of select="$SubjectModifier"/>:<xsl:value-of select="$TracingQuotesLeft"/></xsl:with-param>
406
                        <xsl:with-param name="suffix"><xsl:value-of select="$TracingQuotesRight"/>)</xsl:with-param>
407
                    </xsl:call-template>
408
                </xsl:attribute>
409
            </xsl:when>
410
            <xsl:otherwise>
411
                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=su<xsl:value-of select="$SubjectModifier"/>:<xsl:value-of select="$TracingQuotesLeft"/><xsl:value-of select="marc:subfield[@code='a']"/><xsl:value-of select="$TracingQuotesRight"/></xsl:attribute>
412
            </xsl:otherwise>
413
            </xsl:choose>
414
            <xsl:call-template name="chopPunctuation">
415
                <xsl:with-param name="chopString">
416
                    <xsl:call-template name="subfieldSelect">
417
                        <xsl:with-param name="codes">abcdvxyz</xsl:with-param>
418
                        <xsl:with-param name="subdivCodes">vxyz</xsl:with-param>
419
                        <xsl:with-param name="subdivDelimiter">-- </xsl:with-param>
420
                    </xsl:call-template>
421
                </xsl:with-param>
422
            </xsl:call-template>
423
            </a>
424
            <xsl:if test="marc:subfield[@code=9]">
425
                <a class='authlink'>
426
                    <xsl:attribute name="href">/cgi-bin/koha/opac-authoritiesdetail.pl?authid=<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
427
                    <img style="vertical-align:middle" height="15" width="15" src="/opac-tmpl/prog/images/filefind.png"/>
428
                </a>
429
            </xsl:if>
430
            <xsl:choose>
431
            <xsl:when test="position()=last()"></xsl:when>
432
            <xsl:otherwise> | </xsl:otherwise>
433
            </xsl:choose>
434
435
            </xsl:for-each>
436
            </span>
437
        </xsl:if>
438
439
        <xsl:if test="marc:datafield[@tag=856]">
440
        <span class="results_summary"><span class="label">Nettbasert ressurs: </span>
441
        <xsl:for-each select="marc:datafield[@tag=856]">
442
            <a><xsl:attribute name="href"><xsl:value-of select="marc:subfield[@code='u']"/></xsl:attribute>
443
        <xsl:choose>
444
            <xsl:when test="marc:subfield[@code='y' or @code='3' or @code='z']">
445
                    <xsl:call-template name="subfieldSelect">
446
                        <xsl:with-param name="codes">y3z</xsl:with-param>
447
                    </xsl:call-template>
448
            </xsl:when>
449
        <xsl:when test="not(marc:subfield[@code='y']) and not(marc:subfield[@code='3']) and not(marc:subfield[@code='z'])">
450
        Klikk her for tilgang
451
        </xsl:when>
452
        </xsl:choose>
453
        </a>
454
            <xsl:choose>
455
            <xsl:when test="position()=last()"></xsl:when>
456
            <xsl:otherwise> | </xsl:otherwise>
457
            </xsl:choose>  
458
        </xsl:for-each>
459
        </span>
460
        </xsl:if>
461
        
462
        <!-- NORMARC does not define indicators for 505
463
        <xsl:if test="marc:datafield[@tag=505]">
464
        <xsl:for-each select="marc:datafield[@tag=505]">
465
        <span class="results_summary"><span class="label">
466
        <xsl:choose>
467
        <xsl:when test="@ind1=0">
468
            Contents:
469
        </xsl:when>
470
        <xsl:when test="@ind1=1">
471
            Incomplete contents:
472
        </xsl:when>
473
        <xsl:when test="@ind1=1">
474
            Partial contents:
475
        </xsl:when>
476
        </xsl:choose>  
477
        </span>
478
        <xsl:choose>
479
        <xsl:when test="@ind2=0">
480
            <xsl:for-each select="marc:subfield[@code='t']">
481
                <xsl:value-of select="marc:subfield[@code=t]"/> <xsl:value-of select="marc:subfield[@code=r]"/>
482
            </xsl:for-each> 
483
        </xsl:when>
484
        <xsl:otherwise>
485
            <xsl:call-template name="subfieldSelect">
486
                <xsl:with-param name="codes">au</xsl:with-param>
487
            </xsl:call-template>
488
        </xsl:otherwise>
489
        </xsl:choose>
490
        </span>
491
        </xsl:for-each>
492
        </xsl:if>
493
        -->
494
        <xsl:if test="marc:datafield[@tag=505]">
495
	        <xsl:call-template name="subfieldSelect">
496
                <xsl:with-param name="codes">a</xsl:with-param>
497
            </xsl:call-template>
498
		</xsl:if>
499
		
500
        <!-- 780 -->
501
        <xsl:if test="marc:datafield[@tag=780]">
502
        <xsl:for-each select="marc:datafield[@tag=780]">
503
        <span class="results_summary"><span class="label">
504
        <xsl:choose>
505
	        <xsl:when test="@ind2=0">
506
	            Fortsettelse av:
507
	        </xsl:when>
508
	        <xsl:when test="@ind2=1">
509
	            Delvis fortsettelse av:
510
	        </xsl:when>
511
	        <xsl:when test="@ind2=2">
512
	            Avløser:
513
	        </xsl:when>
514
	        <xsl:when test="@ind2=3">
515
	            Avløser delvis:
516
	        </xsl:when>
517
	        <xsl:when test="@ind2=4">
518
	            Sammenslåing av: ... ; og ...
519
	        </xsl:when>
520
	        <xsl:when test="@ind2=5">
521
	            Har tatt opp:
522
	        </xsl:when>
523
	        <xsl:when test="@ind2=6">
524
	            Har delvis tatt opp:
525
	        </xsl:when>
526
	        <xsl:when test="@ind2=7">
527
	            Utskilt fra:
528
	        </xsl:when>
529
        </xsl:choose>
530
        </span>
531
                <xsl:variable name="f780">
532
                    <xsl:call-template name="subfieldSelect">
533
                        <xsl:with-param name="codes">a_t</xsl:with-param>
534
                    </xsl:call-template>
535
                </xsl:variable>
536
             <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=<xsl:value-of select="translate($f780, '()', '')"/></xsl:attribute>
537
                <xsl:value-of select="translate($f780, '()', '')"/>
538
            </a>
539
        </span>
540
 
541
        <xsl:choose>
542
        <xsl:when test="@ind1=0">
543
            <span class="results_summary"><xsl:value-of select="marc:subfield[@code='n']"/></span>
544
        </xsl:when>
545
        </xsl:choose>
546
547
        </xsl:for-each>
548
        </xsl:if>
549
550
        <!-- 785 -->
551
        <xsl:if test="marc:datafield[@tag=785]">
552
        <xsl:for-each select="marc:datafield[@tag=785]">
553
        <span class="results_summary"><span class="label">
554
        <xsl:choose>
555
	        <xsl:when test="@ind2=0">
556
	            Fortsettelse i:
557
	        </xsl:when>
558
	        <xsl:when test="@ind2=1">
559
	            Fortsettes delvis i:
560
	        </xsl:when>
561
	        <xsl:when test="@ind2=2">
562
	            Avløst av:
563
	        </xsl:when>
564
	        <xsl:when test="@ind2=3">
565
	            Delvsi avløst av:
566
	        </xsl:when>
567
	        <xsl:when test="@ind2=4">
568
	            Gått inn i:
569
	        </xsl:when>
570
	        <xsl:when test="@ind2=5">
571
	            Delvis gått inn i:
572
	        </xsl:when>
573
	        <xsl:when test="@ind2=6">
574
	            Fortsettes av: ...; og ...
575
	        </xsl:when>
576
	        <xsl:when test="@ind2=7">
577
	             	Slått sammen med: .., til: ...
578
	        </xsl:when>
579
        </xsl:choose>
580
        </span>
581
                   <xsl:variable name="f785">
582
                    <xsl:call-template name="subfieldSelect">
583
                        <xsl:with-param name="codes">a_t</xsl:with-param>
584
                    </xsl:call-template>
585
                </xsl:variable>
586
587
                <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=<xsl:value-of select="translate($f785, '()', '')"/></xsl:attribute>
588
                <xsl:value-of select="translate($f785, '()', '')"/>
589
            </a>
590
591
        </span>
592
        </xsl:for-each>
593
        </xsl:if>
594
595
    </xsl:template>
596
597
    <xsl:template name="part">
598
        <xsl:variable name="partNumber">
599
            <xsl:call-template name="specialSubfieldSelect">
600
                <xsl:with-param name="axis">n</xsl:with-param>
601
                <xsl:with-param name="anyCodes">n</xsl:with-param>
602
                <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
603
            </xsl:call-template>
604
        </xsl:variable>
605
        <xsl:variable name="partName">
606
            <xsl:call-template name="specialSubfieldSelect">
607
                <xsl:with-param name="axis">p</xsl:with-param>
608
                <xsl:with-param name="anyCodes">p</xsl:with-param>
609
                <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
610
            </xsl:call-template>
611
        </xsl:variable>
612
        <xsl:if test="string-length(normalize-space($partNumber))">
613
                <xsl:call-template name="chopPunctuation">
614
                    <xsl:with-param name="chopString" select="$partNumber"/>
615
                </xsl:call-template>
616
        </xsl:if>
617
        <xsl:if test="string-length(normalize-space($partName))">
618
                <xsl:call-template name="chopPunctuation">
619
                    <xsl:with-param name="chopString" select="$partName"/>
620
                </xsl:call-template>
621
        </xsl:if>
622
    </xsl:template>
623
624
    <xsl:template name="specialSubfieldSelect">
625
        <xsl:param name="anyCodes"/>
626
        <xsl:param name="axis"/>
627
        <xsl:param name="beforeCodes"/>
628
        <xsl:param name="afterCodes"/>
629
        <xsl:variable name="str">
630
            <xsl:for-each select="marc:subfield">
631
                <xsl:if test="contains($anyCodes, @code)      or (contains($beforeCodes,@code) and following-sibling::marc:subfield[@code=$axis])      or (contains($afterCodes,@code) and preceding-sibling::marc:subfield[@code=$axis])">
632
                    <xsl:value-of select="text()"/>
633
                    <xsl:text> </xsl:text>
634
                </xsl:if>
635
            </xsl:for-each>
636
        </xsl:variable>
637
        <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
638
    </xsl:template>
639
</xsl:stylesheet>
(-)a/koha-tmpl/opac-tmpl/prog/en/xslt/NORMARCslim2OPACResults.xsl (-958 lines)
Lines 1-958 Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
3
<!DOCTYPE stylesheet [<!ENTITY nbsp "&#160;" >]>
4
5
<!-- $Id: MARC21slim2DC.xsl,v 1.1 2003/01/06 08:20:27 adam Exp $ -->
6
<xsl:stylesheet version="1.0"
7
  xmlns:marc="http://www.loc.gov/MARC21/slim"
8
  xmlns:items="http://www.koha-community.org/items"
9
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
10
  exclude-result-prefixes="marc items">
11
    <xsl:import href="NORMARCslimUtils.xsl"/>
12
    <xsl:output method = "html" indent="yes" omit-xml-declaration = "yes" encoding="UTF-8"/>
13
    <xsl:key name="item-by-status" match="items:item" use="items:status"/>
14
    <xsl:key name="item-by-status-and-branch" match="items:item" use="concat(items:status, ' ', items:homebranch)"/>
15
16
    <xsl:template match="/">
17
            <xsl:apply-templates/>
18
    </xsl:template>
19
    <xsl:template match="marc:record">
20
21
    <!-- System preferences -->
22
    <xsl:variable name="UseControlNumber" select="marc:sysprefs/marc:syspref[@name='UseControlNumber']"/>
23
    <xsl:variable name="DisplayOPACiconsXSLT" select="marc:sysprefs/marc:syspref[@name='DisplayOPACiconsXSLT']"/>
24
    <xsl:variable name="singleBranchMode" select="marc:sysprefs/marc:syspref[@name='singleBranchMode']"/>
25
26
        <xsl:variable name="leader" select="marc:leader"/>
27
        <xsl:variable name="leader6" select="substring($leader,7,1)"/>
28
        <xsl:variable name="leader7" select="substring($leader,8,1)"/>
29
        <xsl:variable name="biblionumber" select="marc:datafield[@tag=999]/marc:subfield[@code='c']"/>
30
        <xsl:variable name="isbn" select="marc:datafield[@tag=020]/marc:subfield[@code='a']"/>
31
        <xsl:variable name="controlField007" select="marc:controlfield[@tag=007]"/>
32
        <xsl:variable name="controlField007-00" select="substring($controlField007,1,1)"/>
33
        <xsl:variable name="controlField007-01" select="substring($controlField007,2,1)"/>
34
        <xsl:variable name="controlField008" select="marc:controlfield[@tag=008]"/>
35
        <xsl:variable name="field019b" select="marc:datafield[@tag=019]/marc:subfield[@code='b']"/>
36
        <xsl:variable name="typeOf008">
37
            <!-- The logic here should be exactly the same for NORMARCslim2intranetDetail.xsl, NORMARCslim2intranetResults.xsl, NORMARCslim2OPACDetail.xsl and NORMARCslim2OPACResults.xsl -->
38
            <xsl:choose>
39
                <xsl:when test="$field019b='b' or $field019b='k' or $field019b='l' or $leader6='b'">Mon</xsl:when>
40
                <xsl:when test="$field019b='e' or contains($field019b,'ec') or contains($field019b,'ed') or contains($field019b,'ee') or contains($field019b,'ef') or $leader6='g'">FV</xsl:when>
41
                <xsl:when test="$field019b='c' or $field019b='d' or contains($field019b,'da') or contains($field019b,'db') or contains($field019b,'dc') or contains($field019b,'dd') or contains($field019b,'dg') or contains($field019b,'dh') or contains($field019b,'di') or contains($field019b,'dj') or contains($field019b,'dk') or $leader6='c' or $leader6='d' or $leader6='i' or $leader6='j'">Mus</xsl:when>
42
                <xsl:when test="$field019b='a' or contains($field019b,'ab') or contains($field019b,'aj') or $leader6='e' or $leader6='f'">Kar</xsl:when>
43
                <xsl:when test="$field019b='f' or $field019b='i' or contains($field019b,'ib') or contains($field019b,'ic') or contains($field019b,'fd') or contains($field019b,'ff') or contains($field019b,'fi') or $leader6='k'">gra</xsl:when>
44
                <xsl:when test="$field019b='g' or contains($field019b,'gb') or contains($field019b,'gd') or contains($field019b,'ge') or $leader6='m'">Fil</xsl:when>
45
                <xsl:when test="$leader6='o'">kom</xsl:when>
46
                <xsl:when test="$field019b='h' or $leader6='r'">trd</xsl:when>
47
                <xsl:when test="$field019b='j' or $leader6='a'">
48
                    <xsl:choose>
49
                        <xsl:when test="$leader7='a' or $leader7='c' or $leader7='m' or $leader7='p'">Mon</xsl:when>
50
                        <xsl:when test="$field019b='j' or $leader7='b' or $leader7='s'">Per</xsl:when>
51
                    </xsl:choose>
52
                </xsl:when>
53
            </xsl:choose>
54
        </xsl:variable>
55
        <xsl:variable name="controlField008-23" select="substring($controlField008,24,1)"/>
56
        <xsl:variable name="controlField008-21" select="substring($controlField008,22,1)"/>
57
        <xsl:variable name="controlField008-22" select="substring($controlField008,23,1)"/>
58
        <xsl:variable name="controlField008-24" select="substring($controlField008,25,4)"/>
59
        <xsl:variable name="controlField008-26" select="substring($controlField008,27,1)"/>
60
        <xsl:variable name="controlField008-29" select="substring($controlField008,30,1)"/>
61
        <xsl:variable name="controlField008-34" select="substring($controlField008,35,1)"/>
62
        <xsl:variable name="controlField008-33" select="substring($controlField008,34,1)"/>
63
        <xsl:variable name="controlField008-30-31" select="substring($controlField008,31,2)"/>
64
65
        <xsl:variable name="physicalDescription">
66
        
67
        <!-- Why are these treated specially? 
68
        
69
            <xsl:if test="$typeOf008='CF' and marc:controlfield[@tag=007][substring(.,12,1)='a']">
70
                reformatted digital
71
            </xsl:if>
72
            <xsl:if test="$typeOf008='CF' and marc:controlfield[@tag=007][substring(.,12,1)='b']">
73
                digitized microfilm
74
            </xsl:if>
75
            <xsl:if test="$typeOf008='CF' and marc:controlfield[@tag=007][substring(.,12,1)='d']">
76
                digitized other analog
77
            </xsl:if>
78
79
            <xsl:variable name="check008-23">
80
                <xsl:if test="$typeOf008='BK' or $typeOf008='MU' or $typeOf008='CR' or $typeOf008='MX'">
81
                    <xsl:value-of select="true()"></xsl:value-of>
82
                </xsl:if>
83
            </xsl:variable>
84
            <xsl:variable name="check008-29">
85
                <xsl:if test="$typeOf008='MP' or $typeOf008='VM'">
86
                    <xsl:value-of select="true()"></xsl:value-of>
87
                </xsl:if>
88
            </xsl:variable>
89
            
90
            <xsl:choose>
91
                <xsl:when test="($check008-23 and $controlField008-23='f') or ($check008-29 and $controlField008-29='f')">
92
                    braille
93
                </xsl:when>
94
                <xsl:when test="($controlField008-23=' ' and ($leader6='c' or $leader6='d')) or (($typeOf008='BK' or $typeOf008='CR') and ($controlField008-23=' ' or $controlField008='r'))">
95
                    print
96
                </xsl:when>
97
                <xsl:when test="$leader6 = 'm' or ($check008-23 and $controlField008-23='s') or ($check008-29 and $controlField008-29='s')">
98
                    electronic
99
                </xsl:when>
100
                <xsl:when test="($check008-23 and $controlField008-23='b') or ($check008-29 and $controlField008-29='b')">
101
                    microfiche
102
                </xsl:when>
103
                <xsl:when test="($check008-23 and $controlField008-23='a') or ($check008-29 and $controlField008-29='a')">
104
                    microfilm
105
                </xsl:when>
106
            </xsl:choose>
107
            
108
            -->
109
            
110
            <!-- 019$b from BSMARC -->
111
            
112
            <xsl:if test="$field019b">
113
				<xsl:if test="$field019b='a'"> Kartografisk materiale</xsl:if>
114
				<xsl:if test="contains($field019b,'ab')"> Atlas</xsl:if>
115
				<xsl:if test="contains($field019b,'aj')"> Kart</xsl:if>
116
				<xsl:if test="$field019b='b'"> Manuskripter</xsl:if>
117
				<xsl:if test="$field019b='c'"> Musikktrykk</xsl:if>
118
				<xsl:if test="$field019b='d'"> Lydopptak</xsl:if>
119
				<xsl:if test="contains($field019b,'da')"> Grammofonplate</xsl:if>
120
				<xsl:if test="contains($field019b,'db')"> Kassett</xsl:if>
121
				<xsl:if test="contains($field019b,'dc')"> Kompaktplate</xsl:if>
122
				<xsl:if test="contains($field019b,'dd')"> Avspiller med lydfil (eks. Digibøker)</xsl:if>
123
				<xsl:if test="contains($field019b,'dg')"> Musikk</xsl:if>
124
				<xsl:if test="contains($field019b,'dh')"> Språkkurs</xsl:if>
125
				<xsl:if test="contains($field019b,'di')"> Lydbok</xsl:if>
126
				<xsl:if test="contains($field019b,'dj')"> Annen tale/annet</xsl:if>
127
				<xsl:if test="contains($field019b,'dk')"> Kombidokument</xsl:if>
128
				<xsl:if test="$field019b='e'"> Film og video</xsl:if>
129
				<xsl:if test="contains($field019b,'ec')"> Filmspole</xsl:if>
130
				<xsl:if test="contains($field019b,'ed')"> Videokassett (VHS)</xsl:if>
131
				<xsl:if test="contains($field019b,'ee')"> Videoplate (DVD)</xsl:if>
132
				<xsl:if test="contains($field019b,'ef')"> Blu-ray-plate</xsl:if>
133
				<xsl:if test="$field019b='f'"> Grafisk materiale</xsl:if>
134
				<xsl:if test="contains($field019b,'fd')"> Dias</xsl:if>
135
				<xsl:if test="contains($field019b,'ff')"> Fotografi</xsl:if>
136
				<xsl:if test="contains($field019b,'fi')"> Kunstreproduksjon</xsl:if>
137
				<xsl:if test="$field019b='g'"> Elektroniske ressurser</xsl:if>
138
				<xsl:if test="contains($field019b,'gb')"> Diskett</xsl:if>
139
				<xsl:if test="contains($field019b,'gd')"> Optiske lagringsmedia (CD-ROM)</xsl:if>
140
				<xsl:if test="contains($field019b,'ge')"> Nettressurser</xsl:if>
141
				<xsl:if test="$field019b='h'"> Tredimensjonale gjenstander</xsl:if>
142
				<xsl:if test="$field019b='i'"> Mikroformer</xsl:if>
143
				<xsl:if test="contains($field019b,'ib')"> Mikrofilmspole</xsl:if>
144
				<xsl:if test="contains($field019b,'ic')"> Mikrofilmkort</xsl:if>
145
				<xsl:if test="$field019b='j'"> Periodika</xsl:if>
146
				<xsl:if test="$field019b='k'"> Artikler (i bøker eller periodika)</xsl:if>
147
				<xsl:if test="$field019b='l'"> Fysiske bøker</xsl:if>
148
            </xsl:if>
149
            
150
            <!-- Check positions 00 and 01 of controlfield 007 -->
151
152
            <xsl:if test="$controlField007-00='a'">
153
            	<!-- Kartografisk materiale (unntatt globus) -->
154
				<xsl:if test="$controlField007-01='a'">Anamorfisk kart</xsl:if>
155
				<xsl:if test="$controlField007-01='b'">Atlas</xsl:if>
156
				<xsl:if test="$controlField007-01='c'">Fantasikart</xsl:if>
157
				<xsl:if test="$controlField007-01='d'">Flykart</xsl:if>
158
				<xsl:if test="$controlField007-01='e'">Sjøkart</xsl:if>
159
				<xsl:if test="$controlField007-01='f'">Navigasjonskart</xsl:if>
160
				<xsl:if test="$controlField007-01='g'">Blokkdiagram</xsl:if>
161
				<xsl:if test="$controlField007-01='h'">Stjernekart</xsl:if>
162
				<xsl:if test="$controlField007-01='j'">Kart</xsl:if>
163
				<xsl:if test="$controlField007-01='k'">Kartprofil</xsl:if>
164
				<xsl:if test="$controlField007-01='l'">Fotokart</xsl:if>
165
				<xsl:if test="$controlField007-01='m'">Fotomosaikk</xsl:if>
166
				<xsl:if test="$controlField007-01='n'">Ortofoto</xsl:if>
167
				<xsl:if test="$controlField007-01='o'">Tegnet kart</xsl:if>
168
				<xsl:if test="$controlField007-01='p'">Trykt kart</xsl:if>
169
				<xsl:if test="$controlField007-01='q'">Terrengmodell</xsl:if>
170
				<xsl:if test="$controlField007-01='r'">Fjernanalysebilde</xsl:if>
171
				<xsl:if test="$controlField007-01='s'">Kartseksjon</xsl:if>
172
				<xsl:if test="$controlField007-01='t'">Plan</xsl:if>
173
				<xsl:if test="$controlField007-01='y'">Perspektivkart</xsl:if>
174
				<xsl:if test="$controlField007-01='z'">Annen karttype</xsl:if>
175
            </xsl:if>
176
177
            <xsl:if test="$controlField007-00='c'">
178
            	<!-- Maskinlesbar fil -->
179
				<xsl:if test="$controlField007-01='a'">Magnetisk-optisk plate</xsl:if>
180
				<xsl:if test="$controlField007-01='b'">Lagringsbrikke</xsl:if>
181
				<xsl:if test="$controlField007-01='c'">Optisk kassett</xsl:if>
182
				<xsl:if test="$controlField007-01='d'">Diskett</xsl:if>
183
				<xsl:if test="$controlField007-01='h'">Platelager (harddisk)</xsl:if>
184
				<xsl:if test="$controlField007-01='k'">Magnetbåndkassett</xsl:if>
185
				<xsl:if test="$controlField007-01='m'">Magnetbåndspole</xsl:if>
186
				<xsl:if test="$controlField007-01='n'">Fjerntilgang (online)</xsl:if>
187
				<xsl:if test="$controlField007-01='o'">Optisk plate</xsl:if>
188
				<xsl:if test="$controlField007-01='z'">Annet lagringsmedium</xsl:if>
189
            </xsl:if>
190
191
            <xsl:if test="$controlField007-00='d'">
192
            	<!-- Globus -->
193
				<xsl:if test="$controlField007-01='a'">Stjerneglobus</xsl:if>
194
				<xsl:if test="$controlField007-01='b'">Planet- eller måneglobus</xsl:if>
195
				<xsl:if test="$controlField007-01='c'">Jordglobus</xsl:if>
196
				<xsl:if test="$controlField007-01='z'">Annen globustype</xsl:if>
197
            </xsl:if>
198
199
            <xsl:if test="$controlField007-00='g'">
200
            	<!-- Grafisk materiale som er tenkt projisert eller gjennomlyst -->
201
				<xsl:if test="$controlField007-01='h'">Hologram</xsl:if>
202
				<xsl:if test="$controlField007-01='o'">Billedbånd</xsl:if>
203
				<xsl:if test="$controlField007-01='p'">Stereobilde</xsl:if>
204
				<xsl:if test="$controlField007-01='r'">Røntgenbilde</xsl:if>
205
				<xsl:if test="$controlField007-01='s'">Dia</xsl:if>
206
				<xsl:if test="$controlField007-01='t'">Transparent</xsl:if>
207
				<xsl:if test="$controlField007-01='z'">Annen materialtype</xsl:if>
208
            </xsl:if>
209
	
210
            <xsl:if test="$controlField007-00='h'">
211
            	<!-- Mikroform -->
212
				<xsl:if test="$controlField007-01='a'">Vinduskort</xsl:if>
213
				<xsl:if test="$controlField007-01='c'">Mikrofilmkassett</xsl:if>
214
				<xsl:if test="$controlField007-01='d'">Mikrofilmspole</xsl:if>
215
				<xsl:if test="$controlField007-01='e'">Mikrofilmkort</xsl:if>
216
				<xsl:if test="$controlField007-01='g'">Mikro-opak</xsl:if>
217
				<xsl:if test="$controlField007-01='z'">Annen mikroformtype</xsl:if>
218
            </xsl:if>
219
220
            <xsl:if test="$controlField007-00='k'">
221
            	<!-- Grafisk materiale som er ugjennomtrengelig for lys -->
222
				<xsl:if test="$controlField007-01='c'">Collage</xsl:if> <!-- Originalt kunstverk -->
223
				<xsl:if test="$controlField007-01='d'">Tegning</xsl:if> <!-- Originalt kunstverk -->
224
				<xsl:if test="$controlField007-01='e'">Maleri</xsl:if> <!-- Originalt kunstverk -->
225
				<xsl:if test="$controlField007-01='g'">Fotografi - negativ</xsl:if>
226
				<xsl:if test="$controlField007-01='h'">Fotografi</xsl:if> <!-- Brukes også om ugjennomsiktige stereobilder. -->
227
				<xsl:if test="$controlField007-01='i'">Bilde</xsl:if> <!-- Brukes når en mer spesifikk betegnelse er ukjent eller uønsket. -->
228
				<xsl:if test="$controlField007-01='j'">Grafisk blad</xsl:if>
229
				<xsl:if test="$controlField007-01='k'">Flipover</xsl:if>
230
				<xsl:if test="$controlField007-01='l'">Teknisk tegning</xsl:if>
231
				<xsl:if test="$controlField007-01='m'">Studieplansje</xsl:if>
232
				<xsl:if test="$controlField007-01='n'">Plansje</xsl:if>
233
				<xsl:if test="$controlField007-01='o'">Billedkort</xsl:if>
234
				<xsl:if test="$controlField007-01='p'">Ordkort</xsl:if>
235
				<xsl:if test="$controlField007-01='q'">Symbolkort</xsl:if>
236
				<xsl:if test="$controlField007-01='r'">Kunstreproduksjon</xsl:if>
237
				<xsl:if test="$controlField007-01='s'">Postkort</xsl:if>
238
				<xsl:if test="$controlField007-01='t'">Plakat</xsl:if>
239
				<xsl:if test="$controlField007-01='z'">Annen materialtype</xsl:if>
240
            </xsl:if>
241
	
242
            <xsl:if test="$controlField007-00='m'">
243
            	<!-- Film -->
244
				<xsl:if test="$controlField007-01='c'">Filmsløyfe</xsl:if>
245
				<xsl:if test="$controlField007-01='f'">Filmkassett</xsl:if>
246
				<xsl:if test="$controlField007-01='r'">Filmspole</xsl:if>
247
				<xsl:if test="$controlField007-01='z'">Annen filmtype</xsl:if>
248
            </xsl:if>
249
250
            <xsl:if test="$controlField007-00='s'">
251
            	<!-- Lydopptak -->
252
				<xsl:if test="$controlField007-01='c'">Kompaktplate</xsl:if>
253
				<xsl:if test="$controlField007-01='d'">Grammofonplate</xsl:if>
254
				<xsl:if test="$controlField007-01='e'">Sylinder</xsl:if> <!-- Lydrull, voksrull, fonografsylinder -->
255
				<xsl:if test="$controlField007-01='g'">Sløyfekassett</xsl:if>
256
				<xsl:if test="$controlField007-01='i'">Filmlydspor</xsl:if>
257
				<xsl:if test="$controlField007-01='q'">Rull (pianorull/orgelrull)</xsl:if>
258
				<xsl:if test="$controlField007-01='s'">Lydkassett</xsl:if>
259
				<xsl:if test="$controlField007-01='t'">Lydbånd</xsl:if>
260
				<xsl:if test="$controlField007-01='w'">Wire</xsl:if>
261
				<xsl:if test="$controlField007-01='z'">Annet lydmateriale</xsl:if>
262
            </xsl:if>
263
264
            <xsl:if test="$controlField007-00='u'">
265
            	<!-- Tre-dimensjonal gjenstand -->
266
				<xsl:if test="$controlField007-01='a'">Originalt kunstverk</xsl:if> <!-- F.eks. en skulptur. -->
267
				<xsl:if test="$controlField007-01='c'">Kunstreproduksjon</xsl:if>
268
				<xsl:if test="$controlField007-01='d'">Diorama</xsl:if>
269
				<xsl:if test="$controlField007-01='e'">Øvelsesmodell</xsl:if>
270
				<xsl:if test="$controlField007-01='g'">Spill</xsl:if>
271
				<xsl:if test="$controlField007-01='p'">Mikroskopdia</xsl:if>
272
				<xsl:if test="$controlField007-01='q'">Modell</xsl:if>
273
				<xsl:if test="$controlField007-01='r'">Realia</xsl:if>
274
				<xsl:if test="$controlField007-01='u'">Utstilling</xsl:if>
275
				<xsl:if test="$controlField007-01='z'">Annen type gjenstand</xsl:if>
276
            </xsl:if>
277
278
            <xsl:if test="$controlField007-00='v'">
279
            	<!-- Videoopptak -->
280
				<xsl:if test="$controlField007-01='d'">Videoplate</xsl:if>
281
				<xsl:if test="$controlField007-01='f'">Videokassett</xsl:if>
282
				<xsl:if test="$controlField007-01='r'">Videospole</xsl:if>
283
				<xsl:if test="$controlField007-01='z'">Annen type videoopptak</xsl:if>
284
            </xsl:if>
285
286
        </xsl:variable>
287
288
		<!-- Tittel og ansvarsopplysninger -->
289
     	<a><xsl:attribute name="href">/cgi-bin/koha/opac-detail.pl?biblionumber=<xsl:value-of select="$biblionumber"/></xsl:attribute>
290
        <xsl:if test="marc:datafield[@tag=245]">
291
        <xsl:for-each select="marc:datafield[@tag=245]">
292
            <xsl:variable name="title">
293
                     <xsl:call-template name="subfieldSelect">
294
                        <xsl:with-param name="codes">a</xsl:with-param>
295
                    </xsl:call-template>
296
                    <xsl:if test="marc:subfield[@code='h']">
297
                        <xsl:text> </xsl:text>
298
                        (<xsl:call-template name="subfieldSelect">
299
                            <xsl:with-param name="codes">h</xsl:with-param>
300
                        </xsl:call-template>) 
301
                    </xsl:if>
302
                    <xsl:if test="marc:subfield[@code='b']">
303
                        <xsl:text> : </xsl:text>
304
                        <xsl:call-template name="subfieldSelect">
305
                            <xsl:with-param name="codes">b</xsl:with-param>
306
                        </xsl:call-template>
307
                    </xsl:if>
308
                    <xsl:text> </xsl:text>
309
                    <xsl:call-template name="subfieldSelect">
310
                        <xsl:with-param name="codes">np</xsl:with-param>
311
                     </xsl:call-template>
312
            </xsl:variable>
313
            <xsl:variable name="titleChop">
314
                <xsl:call-template name="chopPunctuation">
315
                    <xsl:with-param name="chopString">
316
                        <xsl:value-of select="$title"/>
317
                    </xsl:with-param>
318
                </xsl:call-template>
319
            </xsl:variable>
320
            <xsl:value-of select="$titleChop"/>
321
        </xsl:for-each>
322
        </xsl:if>
323
    </a>
324
    <p>
325
326
    <xsl:choose>
327
    <xsl:when test="marc:datafield[@tag=100] or marc:datafield[@tag=110] or marc:datafield[@tag=111] or marc:datafield[@tag=700] or marc:datafield[@tag=710] or marc:datafield[@tag=711]">
328
329
    av 
330
        <xsl:for-each select="marc:datafield[(@tag=100 or @tag=700) and @ind1!='z']">
331
            <xsl:choose>
332
            <xsl:when test="position()=last()">
333
                <xsl:call-template name="nameABCDQ"/>.
334
            </xsl:when>
335
            <xsl:otherwise>
336
                <xsl:call-template name="nameABCDQ"/>;
337
            </xsl:otherwise>
338
            </xsl:choose>
339
        </xsl:for-each>
340
341
        <xsl:for-each select="marc:datafield[(@tag=110 or @tag=710) and @ind1!='z']">
342
            <xsl:choose>
343
            <xsl:when test="position()=last()">
344
                <xsl:call-template name="nameABCDN"/>.
345
            </xsl:when>
346
            <xsl:otherwise>
347
                <xsl:call-template name="nameABCDN"/>;
348
            </xsl:otherwise>
349
            </xsl:choose>
350
        </xsl:for-each>
351
352
        <xsl:for-each select="marc:datafield[(@tag=111 or @tag=711) and @ind1!='z']">
353
            <xsl:choose>
354
            <xsl:when test="position()=last()">
355
                <xsl:call-template name="nameACDEQ"/>.
356
            </xsl:when>
357
            <xsl:otherwise>
358
                <xsl:call-template name="nameACDEQ"/>;
359
            </xsl:otherwise>
360
            </xsl:choose>
361
        </xsl:for-each>
362
    </xsl:when>
363
    </xsl:choose>
364
    </p>
365
366
    <xsl:if test="marc:datafield[@tag=250]">
367
	<span class="results_summary">
368
    <span class="label">Utgave: </span>
369
            <xsl:for-each select="marc:datafield[@tag=250]">
370
                    <xsl:call-template name="subfieldSelect">
371
                        <xsl:with-param name="codes">ab</xsl:with-param>
372
                    </xsl:call-template>
373
            </xsl:for-each>
374
	</span>
375
    </xsl:if>
376
377
        <!-- Analytics -->
378
        <xsl:if test="$leader7='s' or $leader7='c'">
379
        <span class="results_summary analytics"><span class="label">Analytics: </span>
380
            <a>
381
            <xsl:choose>
382
            <xsl:when test="$UseControlNumber = '1' and marc:controlfield[@tag=001]">
383
                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=rcn:<xsl:value-of select="marc:controlfield[@tag=001]"/>+and+(bib-level:a+or+bib-level:b)</xsl:attribute>
384
            </xsl:when>
385
            <xsl:otherwise>
386
                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=Host-item:<xsl:value-of select="translate(marc:datafield[@tag=245]/marc:subfield[@code='a'], '/', '')"/></xsl:attribute>
387
            </xsl:otherwise>
388
            </xsl:choose>
389
            <xsl:text>Show analytics</xsl:text>
390
            </a>
391
        </span>
392
        </xsl:if>
393
394
        <!-- 773 - Links from child to parent -->
395
        <xsl:if test="marc:datafield[@tag=773]">
396
        <xsl:for-each select="marc:datafield[@tag=773]">
397
        <xsl:if test="@ind1=0">
398
        <span class="results_summary in"><span class="label">
399
        <xsl:choose>
400
        <xsl:when test="@ind2=' '">
401
            In:
402
        </xsl:when>
403
        <xsl:when test="@ind2=8">
404
            <xsl:if test="marc:subfield[@code='i']">
405
                <xsl:value-of select="marc:subfield[@code='i']"/>
406
            </xsl:if>
407
        </xsl:when>
408
        </xsl:choose>
409
        </span>
410
                <xsl:variable name="f773">
411
                    <xsl:call-template name="chopPunctuation"><xsl:with-param name="chopString"><xsl:call-template name="subfieldSelect">
412
                        <xsl:with-param name="codes">a_t</xsl:with-param>
413
                    </xsl:call-template></xsl:with-param></xsl:call-template>
414
                </xsl:variable>
415
            <xsl:choose>
416
                <xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']">
417
                    <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=Control-number:<xsl:call-template name="extractControlNumber"><xsl:with-param name="subfieldW" select="marc:subfield[@code='w']"/></xsl:call-template></xsl:attribute>
418
                        <xsl:value-of select="translate($f773, '()', '')"/>
419
                    </a>
420
                    <xsl:if test="marc:subfield[@code='g']"><xsl:text> </xsl:text><xsl:value-of select="marc:subfield[@code='g']"/></xsl:if>
421
                </xsl:when>
422
                <xsl:when test="marc:subfield[@code='0']">
423
                    <a><xsl:attribute name="href">/cgi-bin/koha/opac-detail.pl?biblionumber=<xsl:value-of select="marc:subfield[@code='0']"/></xsl:attribute>
424
                        <xsl:value-of select="$f773"/>
425
                    </a>
426
                </xsl:when>
427
                <xsl:otherwise>
428
                    <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=ti,phr:<xsl:value-of select="translate($f773, '()', '')"/></xsl:attribute>
429
                        <xsl:value-of select="$f773"/>
430
                    </a>
431
                    <xsl:if test="marc:subfield[@code='g']"><xsl:text> </xsl:text><xsl:value-of select="marc:subfield[@code='g']"/></xsl:if>
432
                </xsl:otherwise>
433
            </xsl:choose>
434
        </span>
435
        <xsl:if test="marc:subfield[@code='n']">
436
            <span class="results_summary"><xsl:value-of select="marc:subfield[@code='n']"/></span>
437
        </xsl:if>
438
        </xsl:if>
439
        </xsl:for-each>
440
        </xsl:if>
441
442
<xsl:if test="$DisplayOPACiconsXSLT!='0'">
443
    <span class="results_summary">
444
    <xsl:if test="$typeOf008!=''">
445
        <span class="label">Materialtype: </span>
446
        <xsl:choose>
447
            <xsl:when test="$typeOf008='Mon'"><img src="/opac-tmpl/lib/famfamfam/BK.png" alt="Bok" title="Bok"/> Bok</xsl:when>
448
            <xsl:when test="$typeOf008='Per'"><img src="/opac-tmpl/lib/famfamfam/AR.png" alt="Periodika" title="Periodika"/> Periodika</xsl:when>
449
            <xsl:when test="$typeOf008='Fil'"><img src="/opac-tmpl/lib/famfamfam/CF.png" alt="Fil" title="Fil"/> Fil</xsl:when>
450
            <xsl:when test="$typeOf008='Kar'"><img src="/opac-tmpl/lib/famfamfam/MP.png" alt="Kart" title="Kart"/> Kart</xsl:when>
451
            <xsl:when test="$typeOf008='FV'"><img  src="/opac-tmpl/lib/famfamfam/VM.png" alt="Film og video" title="Film og video"/> Film og video</xsl:when>
452
            <xsl:when test="$typeOf008='Mus'"><img src="/opac-tmpl/lib/famfamfam/PR.png" alt="Musikktrykk og lydopptak" title="Musikktrykk og lydopptak"/> Musikk</xsl:when>
453
            <xsl:when test="$typeOf008='gra'"><img src="/opac-tmpl/lib/famfamfam/GR.png" alt="Grafisk materiale" title="Grafisk materiale"/> Grafisk materiale</xsl:when>
454
            <xsl:when test="$typeOf008='kom'"><img src="/opac-tmpl/lib/famfamfam/MX.png" alt="Kombidokumenter" title="Kombidokumenter"/> Kombidokumenter</xsl:when>
455
            <xsl:when test="$typeOf008='trd'"><img src="/opac-tmpl/lib/famfamfam/TD.png" alt="Tre-dimensjonale gjenstander" title="Tre-dimensjonale gjenstander"/> Tre-dimensjonale gjenstander</xsl:when>
456
        </xsl:choose>
457
    </xsl:if>
458
    <xsl:if test="string-length(normalize-space($physicalDescription))">
459
        <span class="label">; Format: </span><xsl:copy-of select="$physicalDescription"></xsl:copy-of>
460
    </xsl:if>
461
    
462
    <!-- test 
463
    <xsl:for-each select="marc:datafield[@tag=019]">
464
    019b: 
465
    <xsl:call-template name="subfieldSelect">
466
		<xsl:with-param name="codes">b</xsl:with-param>
467
		</xsl:call-template>
468
    </xsl:for-each>
469
	-->
470
	
471
        <xsl:if test="$controlField008-21 or $controlField008-22 or $controlField008-24 or $controlField008-26 or $controlField008-29 or $controlField008-34 or $controlField008-33 or $controlField008-30-31 or $controlField008-33">
472
473
        <xsl:if test="$typeOf008='Per'">
474
        <xsl:if test="$controlField008-21 and contains($controlField008-21,'amnpz')">
475
        <span class="label">; Type periodikum: </span>
476
        </xsl:if>
477
            <xsl:choose>
478
                <xsl:when test="$controlField008-21='a'">Årbok</xsl:when>
479
				<xsl:when test="$controlField008-21='m'">Monografiserie</xsl:when>
480
				<xsl:when test="$controlField008-21='n'">Avis</xsl:when>
481
				<xsl:when test="$controlField008-21='p'">Tidsskrift</xsl:when>
482
				<xsl:when test="$controlField008-21='z'">Andre typer periodika</xsl:when>
483
            </xsl:choose>
484
        </xsl:if>
485
        
486
        <xsl:if test="$typeOf008='Mon' or $typeOf008='Per'">
487
        <xsl:if test="contains($controlField008-24,'abcdefhiklmnoqrstx')">
488
        <span class="label">; Innhold: </span>
489
        </xsl:if>
490
            <xsl:choose>
491
                <xsl:when test="contains($controlField008-24,'a')"> Sammendrag(abstracts)/Referatorganer</xsl:when>
492
                <xsl:when test="contains($controlField008-24,'b')"> Bibliografier</xsl:when>
493
                <xsl:when test="contains($controlField008-24,'c')"> Kataloger</xsl:when>
494
                <xsl:when test="contains($controlField008-24,'d')"> Ordbøker</xsl:when>
495
                <xsl:when test="contains($controlField008-24,'e')"> Konversasjonsleksika</xsl:when>
496
                <xsl:when test="contains($controlField008-24,'f')"> Håndbøker</xsl:when>
497
                <xsl:when test="contains($controlField008-24,'h')"> Referanseverk</xsl:when>
498
                <xsl:when test="contains($controlField008-24,'i')"> Registre</xsl:when>
499
                <xsl:when test="contains($controlField008-24,'k')"> Diskografier</xsl:when>
500
                <xsl:when test="contains($controlField008-24,'l')"> Lover og forskrifter</xsl:when>
501
                <xsl:when test="contains($controlField008-24,'m')"> Hovedoppgaver/diplomoppgaver</xsl:when>
502
                <xsl:when test="contains($controlField008-24,'n')"> Oversiktsverker innenfor et emne</xsl:when>
503
                <xsl:when test="contains($controlField008-24,'o')"> Anmeldelser</xsl:when>
504
                <xsl:when test="contains($controlField008-24,'q')"> Filmografier</xsl:when>
505
                <xsl:when test="contains($controlField008-24,'r')"> Adressebøker</xsl:when>
506
                <xsl:when test="contains($controlField008-24,'s')"> Statistikker</xsl:when>
507
                <xsl:when test="contains($controlField008-24,'t')"> Tekniske rapporter</xsl:when>
508
                <xsl:when test="contains($controlField008-24,'x')"> Doktoravhandlinger/lisensiat-avhandlinger</xsl:when>
509
                <!--
510
                <xsl:when test="contains($controlField008-24,'z')"> Annet</xsl:when>
511
                -->
512
            </xsl:choose>
513
            <xsl:choose>
514
                <xsl:when test="$controlField008-29='1'">
515
                    Konferansepublikasjon
516
                </xsl:when>
517
            </xsl:choose>
518
        </xsl:if>
519
        <xsl:if test="$typeOf008='CF'">
520
            <xsl:if test="$controlField008-26='a' or $controlField008-26='b' or $controlField008-26='c' or $controlField008-26='d' or $controlField008-26='e' or $controlField008-26='f' or $controlField008-26='g' or $controlField008-26='h' or $controlField008-26='i' or $controlField008-26='j'">
521
            <span class="label">; Type maskinlesbar fil: </span>
522
            </xsl:if>
523
            <xsl:choose>
524
                <xsl:when test="$controlField008-26='a'">Numeriske data</xsl:when>
525
                <xsl:when test="$controlField008-26='b'">Programvare</xsl:when>
526
                <xsl:when test="$controlField008-26='c'">Grafiske data</xsl:when>
527
                <xsl:when test="$controlField008-26='d'">Tekst</xsl:when>
528
                <xsl:when test="$controlField008-26='e'">Bibliografiske data</xsl:when>
529
                <xsl:when test="$controlField008-26='f'">Font</xsl:when>
530
                <xsl:when test="$controlField008-26='g'">Spill</xsl:when>
531
                <xsl:when test="$controlField008-26='h'">Lyd</xsl:when>
532
                <xsl:when test="$controlField008-26='i'">Interaktivt multimedium</xsl:when>
533
                <xsl:when test="$controlField008-26='j'">Online tjeneste</xsl:when>
534
                <!-- Probably makes no sense to display these
535
                <xsl:when test="$controlField008-26='m'">En kombinasjon av to eller flere av de ovennevnte</xsl:when>
536
                <xsl:when test="$controlField008-26='u'">Ukjent</xsl:when>
537
                <xsl:when test="$controlField008-26='z'">Annen type data</xsl:when>
538
                -->
539
            </xsl:choose>
540
        </xsl:if>
541
        <xsl:if test="$typeOf008='Mon'">
542
            <xsl:if test="(substring($controlField008,25,1)='j') or (substring($controlField008,25,1)='1') or ($controlField008-34='a' or $controlField008-34='b' or $controlField008-34='c' or $controlField008-34='d')">
543
            <span class="label">; Innhold: </span>
544
            </xsl:if>
545
            <xsl:if test="substring($controlField008,31,1)='1' or substring($controlField008,31,1)='a' or substring($controlField008,31,1)='b'">
546
                Festskrift
547
            </xsl:if>
548
            <xsl:if test="$controlField008-34='a' or $controlField008-34='a' or $controlField008-34='b' or $controlField008-34='c' or $controlField008-34='d'">
549
                Biografi
550
            </xsl:if>
551
552
            <xsl:if test="$controlField008-33 and $controlField008-33!='^' and $controlField008-33!=' '">
553
            <span class="label">; Litterær form: </span>
554
            </xsl:if>
555
            <xsl:choose>
556
                <xsl:when test="$controlField008-33='0'">Ikke skjønnlitteratur</xsl:when>
557
                <xsl:when test="$controlField008-33='l'">Lærebok, brevkurs</xsl:when>
558
                <xsl:when test="$controlField008-33='1'">Skjønnlitteratur</xsl:when>
559
                <xsl:when test="$controlField008-33='r'">Roman</xsl:when>
560
                <xsl:when test="$controlField008-33='n'">Novelle / fortelling</xsl:when>
561
                <xsl:when test="$controlField008-33='d'">Dikt</xsl:when>
562
                <xsl:when test="$controlField008-33='s'">Skuespill</xsl:when>
563
                <xsl:when test="$controlField008-33='t'">Tegneserie</xsl:when>
564
                <xsl:when test="$controlField008-33='a'">Antologi</xsl:when>
565
                <xsl:when test="$controlField008-33='p'">Pekebok</xsl:when>
566
            </xsl:choose>
567
        </xsl:if> 
568
        <xsl:if test="$typeOf008='Mus' and $controlField008-30-31 and $controlField008-30-31!='^^' and $controlField008-30-31!='  '">
569
            <span class="label">; Litterær form: </span> <!-- Literary text for sound recordings -->
570
            <xsl:if test="contains($controlField008-30-31,'a')">Selvbiografier</xsl:if>
571
            <xsl:if test="contains($controlField008-30-31,'b')">Biografier</xsl:if>
572
            <xsl:if test="contains($controlField008-30-31,'c')">Samtaler og diskusjoner</xsl:if>
573
            <xsl:if test="contains($controlField008-30-31,'d')">Drama</xsl:if>
574
            <xsl:if test="contains($controlField008-30-31,'e')">Essays</xsl:if>
575
            <xsl:if test="contains($controlField008-30-31,'f')">Romaner</xsl:if>
576
            <xsl:if test="contains($controlField008-30-31,'g')">Rapporter, referater</xsl:if>
577
            <xsl:if test="contains($controlField008-30-31,'h')">Fortellinger, noveller</xsl:if>
578
            <xsl:if test="contains($controlField008-30-31,'i')">Undervisning</xsl:if>
579
            <xsl:if test="contains($controlField008-30-31,'j')">Språkundervisning</xsl:if>
580
            <xsl:if test="contains($controlField008-30-31,'k')">Komedier</xsl:if>
581
            <xsl:if test="contains($controlField008-30-31,'l')">Foredrag, taler</xsl:if>
582
            <xsl:if test="contains($controlField008-30-31,'m')">Memoarer</xsl:if>
583
            <xsl:if test="contains($controlField008-30-31,'o')">Eventyr</xsl:if>
584
            <xsl:if test="contains($controlField008-30-31,'p')">Dikt</xsl:if>
585
            <xsl:if test="contains($controlField008-30-31,'r')">Fremføring av alle typer ikke-musikalske produksjoner</xsl:if>
586
            <xsl:if test="contains($controlField008-30-31,'s')">Lyder (f.eks. fuglelyder)</xsl:if>
587
            <xsl:if test="contains($controlField008-30-31,'t')">Intervjuer</xsl:if>
588
            <xsl:if test="contains($controlField008-30-31,'z')">Andre typer innhold</xsl:if>
589
        </xsl:if>
590
        
591
        <!--
592
        <xsl:if test="$typeOf008='VM'">
593
            <span class="label">; Type of visual material: </span>
594
            <xsl:choose>
595
                <xsl:when test="$controlField008-33='a'">
596
                    art original
597
                </xsl:when>
598
                <xsl:when test="$controlField008-33='b'">
599
                    kit
600
                </xsl:when>
601
                <xsl:when test="$controlField008-33='c'">
602
                    art reproduction
603
                </xsl:when>
604
                <xsl:when test="$controlField008-33='d'">
605
                    diorama
606
                </xsl:when>
607
                <xsl:when test="$controlField008-33='f'">
608
                    filmstrip
609
                </xsl:when>
610
                <xsl:when test="$controlField008-33='g'">
611
                    legal article
612
                </xsl:when>
613
                <xsl:when test="$controlField008-33='i'">
614
                    picture
615
                </xsl:when>
616
                <xsl:when test="$controlField008-33='k'">
617
                    graphic
618
                </xsl:when>
619
                <xsl:when test="$controlField008-33='l'">
620
                    technical drawing
621
                </xsl:when>
622
                <xsl:when test="$controlField008-33='m'">
623
                    motion picture
624
                </xsl:when>
625
                <xsl:when test="$controlField008-33='n'">
626
                    chart
627
                </xsl:when>
628
                <xsl:when test="$controlField008-33='o'">
629
                    flash card
630
                </xsl:when>
631
                <xsl:when test="$controlField008-33='p'">
632
                    microscope slide
633
                </xsl:when>
634
                <xsl:when test="$controlField008-33='q' or marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2
635
,1)='q']">
636
                    model
637
                </xsl:when>
638
                <xsl:when test="$controlField008-33='r'">
639
                    realia
640
                </xsl:when>
641
                <xsl:when test="$controlField008-33='s'">
642
                    slide
643
                </xsl:when>
644
                <xsl:when test="$controlField008-33='t'">
645
                    transparency
646
                </xsl:when>
647
                <xsl:when test="$controlField008-33='v'">
648
                    videorecording
649
                </xsl:when>
650
                <xsl:when test="$controlField008-33='w'">
651
                    toy
652
                </xsl:when>
653
            </xsl:choose>
654
        </xsl:if>
655
        -->
656
        
657
        </xsl:if> 
658
	
659
	<!--
660
    <xsl:if test="($typeOf008='Mon' or $typeOf008='Per' or $typeOf008='Mus' or $typeOf008='FV' or $typeOf008='Fil') and ($controlField008-22='a' or $controlField008-22='b' or $controlField008-22='c' or $controlField008-22='d' or $controlField008-22='e' or $controlField008-22='g' or $controlField008-22='j' or $controlField008-22='f')">
661
    -->
662
    <xsl:if test="$typeOf008='Mon'">
663
        <span class="label">; Målgruppe: </span>
664
        <xsl:choose>
665
			<xsl:when test="$controlField008-22='a'">Voksne;</xsl:when>
666
			<xsl:when test="$controlField008-22='b'">Billedbøker for voksne;</xsl:when>
667
			<xsl:when test="$controlField008-22='j'">Barn og ungdom;</xsl:when>
668
			<xsl:when test="$controlField008-22='k'">Billedbøker;</xsl:when>
669
			<xsl:when test="$controlField008-22='l'">Barn i alderen til og med 5 år;</xsl:when>
670
			<xsl:when test="$controlField008-22='m'">Elever på 1. til 3. klassetrinn;</xsl:when>
671
			<xsl:when test="$controlField008-22='n'">Elever på 4. og 5. klassetrinn;</xsl:when>
672
			<xsl:when test="$controlField008-22='o'">Elever på 6. og 7. klassetrinn;</xsl:when>
673
			<xsl:when test="$controlField008-22='p'">Elever på ungdomstrinnet;</xsl:when>
674
			<xsl:when test="$controlField008-22='v'">Billedbøker for barn i alderen til og med 5 år;</xsl:when>
675
			<xsl:when test="$controlField008-22='w'">Billedbøker for elever på 1. til 3. klassetrinn;</xsl:when>
676
			<xsl:when test="$controlField008-22='x'">Billedbøker for elever på 4. og 5. klassetrinn;</xsl:when>
677
			<xsl:when test="$controlField008-22='y'">Billedbøker for elever på 6. og 7. klassetrinn;</xsl:when>
678
			<xsl:when test="$controlField008-22='z'">Billedbøker for elever på ungdomstrinnet;</xsl:when>
679
			<xsl:when test="$controlField008-22='f'">Spesialisert;</xsl:when>
680
			<xsl:when test="$controlField008-22='q'">Lettlest;</xsl:when>
681
			<xsl:when test="$controlField008-22='r'">For psykisk utviklingshemmede;</xsl:when>
682
			<xsl:when test="$controlField008-22='s'">Storskrift;</xsl:when>
683
			<xsl:when test="$controlField008-22='g'">Generell;</xsl:when>
684
			<xsl:when test="$controlField008-22='u'">Ukjent;</xsl:when>
685
        </xsl:choose>
686
    </xsl:if>
687
    <xsl:if test="$typeOf008='Per'">
688
        <span class="label">; Målgruppe: </span>
689
        <xsl:choose>
690
			<xsl:when test="$controlField008-22='a'">Voksne;</xsl:when>
691
			<xsl:when test="$controlField008-22='b'">Tegneserier for voksne;</xsl:when>
692
			<xsl:when test="$controlField008-22='j'">Barn og ungdom;</xsl:when>
693
			<xsl:when test="$controlField008-22='k'">Tegneserier;</xsl:when>
694
			<xsl:when test="$controlField008-22='l'">Barn i alderen til og med 5 år;</xsl:when>
695
			<xsl:when test="$controlField008-22='m'">Elever på 1. til 3. klassetrinn;</xsl:when>
696
			<xsl:when test="$controlField008-22='n'">Elever på 4. og 5. klassetrinn;</xsl:when>
697
			<xsl:when test="$controlField008-22='o'">Elever på 6. og 7. klassetrinn;</xsl:when>
698
			<xsl:when test="$controlField008-22='p'">Elever på ungdomstrinnet;</xsl:when>
699
			<xsl:when test="$controlField008-22='v'">Tegneserier for barn i alderen til og med 5 år;</xsl:when>
700
			<xsl:when test="$controlField008-22='w'">Tegneserier for elever på 1. til 3. klassetrinn;</xsl:when>
701
			<xsl:when test="$controlField008-22='x'">Tegneserier for elever på 4. og 5. klassetrinn;</xsl:when>
702
			<xsl:when test="$controlField008-22='y'">Tegneserier for elever på 6. og 7. klassetrinn;</xsl:when>
703
			<xsl:when test="$controlField008-22='z'">Tegneserier for elever på ungdomstrinnet;</xsl:when>
704
			<xsl:when test="$controlField008-22='f'">Spesialisert;</xsl:when>
705
			<xsl:when test="$controlField008-22='q'">Lettlest;</xsl:when>
706
			<xsl:when test="$controlField008-22='r'">For psykisk utviklingshemmede;</xsl:when>
707
			<xsl:when test="$controlField008-22='s'">Storskrift;</xsl:when>
708
			<xsl:when test="$controlField008-22='g'">Generell;</xsl:when>
709
			<xsl:when test="$controlField008-22='u'">Ukjent;</xsl:when>
710
        </xsl:choose>
711
    </xsl:if>
712
    <xsl:if test="$typeOf008='Fil' or $typeOf008='Mus'">
713
        <span class="label">; Målgruppe: </span>
714
        <xsl:choose>
715
			<xsl:when test="$controlField008-22='a'">Voksne;</xsl:when>
716
			<xsl:when test="$controlField008-22='j'">Barn og ungdom;</xsl:when>
717
			<xsl:when test="$controlField008-22='1'">Barn i alderen til og med 5 år;</xsl:when>
718
			<xsl:when test="$controlField008-22='m'">Elever på 1. til 3. klassetrinn;</xsl:when>
719
			<xsl:when test="$controlField008-22='n'">Elever på 4. og 5. klassetrinn;</xsl:when>
720
			<xsl:when test="$controlField008-22='o'">Elever på 6. og 7. klassetrinn;</xsl:when>
721
			<xsl:when test="$controlField008-22='p'">Elever på ungdomstrinnet;</xsl:when>
722
			<xsl:when test="$controlField008-22='f'">Spesialisert;</xsl:when>
723
			<xsl:when test="$controlField008-22='q'">Lettlest;</xsl:when>
724
			<xsl:when test="$controlField008-22='r'">For psykisk utviklingshemmede;</xsl:when>
725
			<xsl:when test="$controlField008-22='s'">Storskrift;</xsl:when>
726
			<xsl:when test="$controlField008-22='g'">Generell;</xsl:when>
727
			<xsl:when test="$controlField008-22='u'">Ukjent;</xsl:when>
728
        </xsl:choose>
729
    </xsl:if>
730
    <xsl:if test="$typeOf008='FV'">
731
        <span class="label">; Målgruppe: </span>
732
        <xsl:choose>
733
			<xsl:when test="$controlField008-22='a'">Voksne;</xsl:when>
734
			<xsl:when test="$controlField008-22='1'">Voksne over 18 år;</xsl:when>
735
			<xsl:when test="$controlField008-22='2'">Voksne over 15 år;</xsl:when>
736
			<xsl:when test="$controlField008-22='j'">Barn og ungdom;</xsl:when>
737
			<xsl:when test="$controlField008-22='4'">Ungdom over 12 år;</xsl:when>
738
			<xsl:when test="$controlField008-22='5'">Barn over 7 år;</xsl:when>
739
			<xsl:when test="$controlField008-22='6'">Småbarn;</xsl:when>
740
			<xsl:when test="$controlField008-22='f'">Spesialisert;</xsl:when>
741
			<xsl:when test="$controlField008-22='g'">Generell;</xsl:when>
742
			<xsl:when test="$controlField008-22='u'">Ukjent;</xsl:when>
743
        </xsl:choose>
744
    </xsl:if>
745
	</span>
746
</xsl:if>
747
748
	<!-- Utgivelse, distribusjon osv -->
749
    <xsl:if test="marc:datafield[@tag=260]">
750
	<span class="results_summary">
751
    <span class="label">Utgiver: </span> 
752
            <xsl:for-each select="marc:datafield[@tag=260]">
753
                    <xsl:call-template name="subfieldSelect">
754
                        <xsl:with-param name="codes">bcg</xsl:with-param>
755
                    </xsl:call-template>
756
            </xsl:for-each>
757
	</span>
758
    </xsl:if>
759
    
760
    <!-- Parallelltittel (R) -->
761
    <xsl:if test="marc:datafield[@tag=246]">
762
	<span class="results_summary">
763
    <span class="label">Parallelltittel: </span>
764
            <xsl:for-each select="marc:datafield[@tag=246]">
765
                    <xsl:call-template name="subfieldSelect">
766
                        <xsl:with-param name="codes">ab</xsl:with-param>
767
                    </xsl:call-template>
768
            </xsl:for-each>
769
	</span>
770
771
    </xsl:if>
772
773
<span class="results_summary">
774
                        <span class="label">Availability: </span>
775
                        <xsl:choose>
776
                             <xsl:when test="count(key('item-by-status', 'available'))=0 and count(key('item-by-status', 'reference'))=0">No items available
777
				   </xsl:when>
778
779
                   <xsl:when test="count(key('item-by-status', 'available'))>0">
780
                   <span class="available">
781
                       <b><xsl:text>Items available for loan: </xsl:text></b>
782
                       <xsl:variable name="available_items" select="key('item-by-status', 'available')"/>
783
               <xsl:choose>
784
               <xsl:when test="$singleBranchMode=1">
785
               <xsl:for-each select="$available_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]">
786
                 <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber"> [<xsl:value-of select="items:itemcallnumber"/>]</xsl:if>
787
               <xsl:text> (</xsl:text>
788
               <xsl:value-of select="count(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch)))"/>
789
                <xsl:text>)</xsl:text>
790
                <xsl:choose><xsl:when test="position()=last()"><xsl:text>. </xsl:text></xsl:when><xsl:otherwise><xsl:text>, </xsl:text></xsl:otherwise></xsl:choose>
791
            </xsl:for-each>
792
            </xsl:when>
793
               <xsl:otherwise>
794
                       <xsl:for-each select="$available_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]">
795
                           <xsl:value-of select="items:homebranch"/>
796
						   <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber"> [<xsl:value-of select="items:itemcallnumber"/>]</xsl:if>
797
798
                           <xsl:text> (</xsl:text>
799
                           <xsl:value-of select="count(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch)))"/>
800
                           <xsl:text>)</xsl:text>
801
<xsl:choose><xsl:when test="position()=last()"><xsl:text>. </xsl:text></xsl:when><xsl:otherwise><xsl:text>, </xsl:text></xsl:otherwise></xsl:choose>
802
                       </xsl:for-each>
803
               </xsl:otherwise>
804
               </xsl:choose>
805
                   </span>
806
                   </xsl:when>
807
808
				   </xsl:choose>
809
810
                   <xsl:choose>
811
                   <xsl:when test="count(key('item-by-status', 'reference'))>0">
812
                   <span class="available">
813
                       <b><xsl:text>Items available for reference: </xsl:text></b>
814
                       <xsl:variable name="reference_items"
815
                           select="key('item-by-status', 'reference')"/>
816
                       <xsl:for-each select="$reference_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]">
817
                           <xsl:if test="$singleBranchMode=0">
818
                               <xsl:value-of select="items:homebranch"/>
819
                           </xsl:if>
820
						   <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber"> [<xsl:value-of select="items:itemcallnumber"/>]</xsl:if>
821
                           <xsl:text> (</xsl:text>
822
                           <xsl:value-of select="count(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch)))"/>
823
                           <xsl:text>)</xsl:text>
824
                   <xsl:choose><xsl:when test="position()=last()"><xsl:text>. </xsl:text></xsl:when><xsl:otherwise><xsl:text>, </xsl:text></xsl:otherwise></xsl:choose>
825
826
                       </xsl:for-each>
827
                   </span>
828
                   </xsl:when>
829
                   </xsl:choose>
830
831
                   <xsl:if test="count(key('item-by-status', 'Checked out'))>0">
832
                   <span class="unavailable">
833
                       <xsl:text>Checked out (</xsl:text>
834
                       <xsl:value-of select="count(key('item-by-status', 'Checked out'))"/>
835
836
                       <xsl:text>). </xsl:text>
837
				   </span>
838
                   </xsl:if>
839
                   <xsl:if test="count(key('item-by-status', 'Withdrawn'))>0">
840
                   <span class="unavailable">
841
                       <xsl:text>Withdrawn (</xsl:text>
842
                       <xsl:value-of select="count(key('item-by-status', 'Withdrawn'))"/>
843
                       <xsl:text>). </xsl:text>                   </span>
844
845
				   </xsl:if>
846
                    <xsl:if test="count(key('item-by-status', 'Lost'))>0">
847
                   <span class="unavailable">
848
                       <xsl:text>Lost (</xsl:text>
849
                       <xsl:value-of select="count(key('item-by-status', 'Lost'))"/>
850
                       <xsl:text>). </xsl:text>                   </span>
851
				   </xsl:if>
852
853
                    <xsl:if test="count(key('item-by-status', 'Damaged'))>0">
854
                   <span class="unavailable">
855
                       <xsl:text>Damaged (</xsl:text>
856
                       <xsl:value-of select="count(key('item-by-status', 'Damaged'))"/>
857
                       <xsl:text>). </xsl:text>                   </span>
858
                   </xsl:if>
859
                    <xsl:if test="count(key('item-by-status', 'On order'))>0">
860
861
                   <span class="unavailable">
862
                       <xsl:text>On order (</xsl:text>
863
                       <xsl:value-of select="count(key('item-by-status', 'On order'))"/>
864
                       <xsl:text>). </xsl:text>                   </span>
865
                   </xsl:if>
866
                    <xsl:if test="count(key('item-by-status', 'In transit'))>0">
867
                   <span class="unavailable">
868
869
                       <xsl:text>In transit (</xsl:text>
870
                       <xsl:value-of select="count(key('item-by-status', 'In transit'))"/>
871
                       <xsl:text>). </xsl:text>                   </span>
872
                   </xsl:if>
873
                    <xsl:if test="count(key('item-by-status', 'Waiting'))>0">
874
                   <span class="unavailable">
875
                       <xsl:text>On hold (</xsl:text>
876
877
                       <xsl:value-of select="count(key('item-by-status', 'Waiting'))"/>
878
                       <xsl:text>). </xsl:text>                   </span>
879
                   </xsl:if>
880
               </span>
881
882
    </xsl:template>
883
884
    <xsl:template name="termsOfAddress">
885
        <xsl:if test="marc:subfield[@code='b' or @code='c']">
886
            <xsl:call-template name="chopPunctuation">
887
                <xsl:with-param name="chopString">
888
                    <xsl:call-template name="subfieldSelect">
889
                        <xsl:with-param name="codes">bc</xsl:with-param>
890
                    </xsl:call-template>
891
                </xsl:with-param>
892
            </xsl:call-template>
893
        </xsl:if>
894
    </xsl:template>
895
896
    <xsl:template name="nameDate">
897
        <xsl:for-each select="marc:subfield[@code='d']">
898
            <xsl:call-template name="chopPunctuation">
899
                <xsl:with-param name="chopString" select="."/>
900
            </xsl:call-template>
901
        </xsl:for-each>
902
    </xsl:template>
903
904
    <xsl:template name="role">
905
        <xsl:for-each select="marc:subfield[@code='e']">
906
                    <xsl:value-of select="."/>
907
        </xsl:for-each>
908
        <xsl:for-each select="marc:subfield[@code='4']">
909
                    <xsl:value-of select="."/>
910
        </xsl:for-each>
911
    </xsl:template>
912
913
    <xsl:template name="specialSubfieldSelect">
914
        <xsl:param name="anyCodes"/>
915
        <xsl:param name="axis"/>
916
        <xsl:param name="beforeCodes"/>
917
        <xsl:param name="afterCodes"/>
918
        <xsl:variable name="str">
919
            <xsl:for-each select="marc:subfield">
920
                <xsl:if test="contains($anyCodes, @code) or (contains($beforeCodes,@code) and following-sibling::marc:subfield[@code=$axis]) or (contains($afterCodes,@code) and preceding-sibling::marc:subfield[@code=$axis])">
921
                    <xsl:value-of select="text()"/>
922
                    <xsl:text> </xsl:text>
923
                </xsl:if>
924
            </xsl:for-each>
925
        </xsl:variable>
926
        <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
927
    </xsl:template>
928
929
    <xsl:template name="subtitle">
930
        <xsl:if test="marc:subfield[@code='b']">
931
                <xsl:call-template name="chopPunctuation">
932
                    <xsl:with-param name="chopString">
933
                        <xsl:value-of select="marc:subfield[@code='b']"/>
934
935
                        <!--<xsl:call-template name="subfieldSelect">
936
                            <xsl:with-param name="codes">b</xsl:with-param>                                 
937
                        </xsl:call-template>-->
938
                    </xsl:with-param>
939
                </xsl:call-template>
940
        </xsl:if>
941
    </xsl:template>
942
943
    <xsl:template name="chopBrackets">
944
        <xsl:param name="chopString"></xsl:param>
945
        <xsl:variable name="string">
946
            <xsl:call-template name="chopPunctuation">
947
                <xsl:with-param name="chopString" select="$chopString"></xsl:with-param>
948
            </xsl:call-template>
949
        </xsl:variable>
950
        <xsl:if test="substring($string, 1,1)='['">
951
            <xsl:value-of select="substring($string,2, string-length($string)-2)"></xsl:value-of>
952
        </xsl:if>
953
        <xsl:if test="substring($string, 1,1)!='['">
954
            <xsl:value-of select="$string"></xsl:value-of>
955
        </xsl:if>
956
    </xsl:template>
957
958
</xsl:stylesheet>
(-)a/koha-tmpl/opac-tmpl/prog/en/xslt/NORMARCslimUtils.xsl (-229 lines)
Lines 1-229 Link Here
1
<?xml version='1.0'?>
2
<!DOCTYPE stylesheet [<!ENTITY nbsp "&#160;" >]>
3
<xsl:stylesheet version="1.0" xmlns:marc="http://www.loc.gov/MARC21/slim" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
4
	<xsl:template name="datafield">
5
		<xsl:param name="tag"/>
6
		<xsl:param name="ind1"><xsl:text> </xsl:text></xsl:param>
7
		<xsl:param name="ind2"><xsl:text> </xsl:text></xsl:param>
8
		<xsl:param name="subfields"/>
9
		<xsl:element name="datafield">
10
			<xsl:attribute name="tag">
11
				<xsl:value-of select="$tag"/>
12
			</xsl:attribute>
13
			<xsl:attribute name="ind1">
14
				<xsl:value-of select="$ind1"/>
15
			</xsl:attribute>
16
			<xsl:attribute name="ind2">
17
				<xsl:value-of select="$ind2"/>
18
			</xsl:attribute>
19
			<xsl:copy-of select="$subfields"/>
20
		</xsl:element>
21
	</xsl:template>
22
23
	<xsl:template name="subfieldSelect">
24
		<xsl:param name="codes"/>
25
		<xsl:param name="delimeter"><xsl:text> </xsl:text></xsl:param>
26
		<xsl:param name="subdivCodes"/>
27
		<xsl:param name="subdivDelimiter"/>
28
        <xsl:param name="prefix"/>
29
        <xsl:param name="suffix"/>
30
		<xsl:variable name="str">
31
			<xsl:for-each select="marc:subfield">
32
				<xsl:if test="contains($codes, @code)">
33
                    <xsl:if test="contains($subdivCodes, @code)">
34
                        <xsl:value-of select="$subdivDelimiter"/>
35
                    </xsl:if>
36
					<xsl:value-of select="$prefix"/><xsl:value-of select="text()"/><xsl:value-of select="$suffix"/><xsl:value-of select="$delimeter"/>
37
				</xsl:if>
38
			</xsl:for-each>
39
		</xsl:variable>
40
		<xsl:value-of select="substring($str,1,string-length($str)-string-length($delimeter))"/>
41
	</xsl:template>
42
43
	<xsl:template name="buildSpaces">
44
		<xsl:param name="spaces"/>
45
		<xsl:param name="char"><xsl:text> </xsl:text></xsl:param>
46
		<xsl:if test="$spaces>0">
47
			<xsl:value-of select="$char"/>
48
			<xsl:call-template name="buildSpaces">
49
				<xsl:with-param name="spaces" select="$spaces - 1"/>
50
				<xsl:with-param name="char" select="$char"/>
51
			</xsl:call-template>
52
		</xsl:if>
53
	</xsl:template>
54
55
	<xsl:template name="chopPunctuation">
56
		<xsl:param name="chopString"/>
57
		<xsl:variable name="length" select="string-length($chopString)"/>
58
		<xsl:choose>
59
			<xsl:when test="$length=0"/>
60
			<xsl:when test="contains('.:,;/ ', substring($chopString,$length,1))">
61
				<xsl:call-template name="chopPunctuation">
62
					<xsl:with-param name="chopString" select="substring($chopString,1,$length - 1)"/>
63
				</xsl:call-template>
64
			</xsl:when>
65
			<xsl:when test="not($chopString)"/>
66
			<xsl:otherwise><xsl:value-of select="$chopString"/></xsl:otherwise>
67
		</xsl:choose>
68
<xsl:text> </xsl:text>
69
	</xsl:template>
70
71
	<!-- Function extractControlNumber is used to extract the control number (record number) from MARC tags 773/80/85 [etc.] subfield $w.
72
	     Parameter: control number string.
73
	     Assumes LOC convention: (OrgCode)recordNumber.
74
	     If OrgCode is not present, return full string.
75
	     Additionally, handle various brackets/parentheses. Chop leading and trailing spaces.
76
	-->
77
	<xsl:template name="extractControlNumber">
78
	    <xsl:param name="subfieldW"/>
79
	    <xsl:variable name="tranW" select="translate($subfieldW,']})&gt;','))))')"/>
80
	    <xsl:choose>
81
	      <xsl:when test="contains($tranW,')')">
82
	        <xsl:value-of select="normalize-space(translate(substring-after($tranW,')'),'[]{}()&lt;&gt;',''))"/>
83
	      </xsl:when>
84
	      <xsl:otherwise>
85
	        <xsl:value-of select="normalize-space($subfieldW)"/>
86
	      </xsl:otherwise>
87
	    </xsl:choose>
88
	</xsl:template>
89
90
<xsl:template name="nameABCDQ">
91
<xsl:call-template name="chopPunctuation">
92
<xsl:with-param name="chopString">
93
<xsl:call-template name="subfieldSelect">
94
<xsl:with-param name="codes">aq</xsl:with-param>
95
</xsl:call-template>
96
</xsl:with-param>
97
<xsl:with-param name="punctuation">
98
<xsl:text>:,;/ </xsl:text>
99
</xsl:with-param>
100
</xsl:call-template>
101
<xsl:call-template name="termsOfAddress"/>
102
</xsl:template>
103
104
<xsl:template name="nameABCDN">
105
<xsl:for-each select="marc:subfield[@code='a']">
106
<xsl:call-template name="chopPunctuation">
107
<xsl:with-param name="chopString" select="."/>
108
</xsl:call-template>
109
</xsl:for-each>
110
<xsl:for-each select="marc:subfield[@code='b']">
111
<xsl:value-of select="."/>
112
</xsl:for-each>
113
<xsl:if test="marc:subfield[@code='c'] or marc:subfield[@code='d'] or marc:subfield[@code='n']">
114
<xsl:call-template name="subfieldSelect">
115
<xsl:with-param name="codes">cdn</xsl:with-param>
116
</xsl:call-template>
117
</xsl:if>
118
</xsl:template>
119
120
<xsl:template name="nameACDEQ">
121
<xsl:call-template name="subfieldSelect">
122
<xsl:with-param name="codes">acdeq</xsl:with-param>
123
</xsl:call-template>
124
</xsl:template>
125
126
<xsl:template name="termsOfAddress">
127
<xsl:if test="marc:subfield[@code='b' or @code='c']">
128
<xsl:call-template name="chopPunctuation">
129
<xsl:with-param name="chopString">
130
<xsl:call-template name="subfieldSelect">
131
<xsl:with-param name="codes">bc</xsl:with-param>
132
</xsl:call-template>
133
</xsl:with-param>
134
</xsl:call-template>
135
</xsl:if>
136
</xsl:template>
137
138
    <!-- Function m880Select:  Display Alternate Graphic Representation (MARC 880) for selected latin "base"tags
139
        - should be called immediately before the corresonding latin tags are processed 
140
        - tags in right-to-left languages are displayed floating right
141
        * Parameter:
142
           + basetags: display these tags if found in linkage section ( subfield 6) of tag 880
143
           + codes: display these subfields codes
144
        * Options: 
145
            - class: wrap output in <span class="$class">...</span>
146
            - label: prefix each(!) tag with label $label
147
            - bibno: link to biblionumber $bibno
148
            - index: build a search link using index $index with subfield $a as key; if subfield $9 is present use index 'an' with key $9 instead.
149
         * Limitations:
150
            - displays every field on a separate line (to switch between rtl and ltr)
151
         * Pitfalls:
152
           (!) output might be empty
153
    -->
154
    <xsl:template name="m880Select">
155
         <xsl:param name="basetags"/> <!-- e.g.  100,700,110,710 -->
156
        <xsl:param name="codes"/> <!-- e.g. abc  -->
157
        <xsl:param name="class"/> <!-- e.g. results_summary -->
158
        <xsl:param name="label"/> <!-- e.g.  Edition -->
159
        <xsl:param name="bibno"/>
160
        <xsl:param name="index"/> <!-- e.g.  au -->
161
162
        <xsl:for-each select="marc:datafield[@tag=880]">
163
            <xsl:variable name="code6" select="marc:subfield[@code=6]"/>
164
            <xsl:if test="contains(string($basetags), substring($code6,1,3))">
165
                <span>
166
                    <xsl:if test="boolean($class)">
167
                        <xsl:attribute name="class"><xsl:value-of select="$class"/></xsl:attribute>
168
                    </xsl:if>
169
                    <xsl:choose>
170
                        <!-- display right-to-left tags floating right of their left-to-right counterparts -->
171
                        <xsl:when test="substring($code6,10,2) ='/r'">
172
                            <xsl:attribute name="style">display:block; text-align:right; float:right; width:50%; padding-left:20px</xsl:attribute>
173
                            <xsl:attribute name="dir">rtl</xsl:attribute>
174
                        </xsl:when>
175
                        <xsl:otherwise>
176
                            <xsl:attribute name="style">display:block; </xsl:attribute>
177
                        </xsl:otherwise>
178
                    </xsl:choose>
179
                    <xsl:if test="boolean($label)">
180
                        <span class="label">
181
                            <xsl:value-of select="$label"/>
182
                        </span>
183
                    </xsl:if>
184
                    <xsl:variable name="str">
185
                        <xsl:for-each select="marc:subfield">
186
                            <xsl:if test="contains($codes, @code)">
187
                                <xsl:value-of select="text()"/>
188
                                <xsl:text> </xsl:text>
189
                            </xsl:if>
190
                        </xsl:for-each>
191
                    </xsl:variable>
192
                    <xsl:if test="string-length($str) &gt; 0">
193
                        <xsl:choose>
194
                            <xsl:when test="boolean($bibno)">
195
                                <a>
196
                                    <xsl:attribute name="href">/cgi-bin/koha/opac-detail.pl?biblionumber=<xsl:value-of  select="$bibno"/></xsl:attribute>
197
                                    <xsl:value-of select="$str"/>
198
                                </a>
199
                            </xsl:when>
200
                           <xsl:when test="boolean($index) and boolean(marc:subfield[@code=9])">
201
                                <a>
202
                                    <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=an:<xsl:value-of  select="marc:subfield[@code=9]"/></xsl:attribute>
203
                                    <xsl:value-of select="$str"/>
204
                                </a>
205
                            </xsl:when>
206
                            <xsl:when test="boolean($index)">
207
                                <a>
208
                                    <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=<xsl:value-of  select="$index"/>:<xsl:value-of  select="marc:subfield[@code='a']"/></xsl:attribute>
209
                                    <xsl:value-of select="$str"/>
210
                                </a>
211
                            </xsl:when>
212
                            <xsl:otherwise>
213
                                <xsl:value-of select="$str"/>
214
                            </xsl:otherwise>
215
                        </xsl:choose>
216
                    </xsl:if>
217
                </span>
218
            </xsl:if>
219
        </xsl:for-each>
220
221
    </xsl:template>
222
223
</xsl:stylesheet>
224
225
<!-- Stylus Studio meta-information - (c)1998-2002 eXcelon Corp.
226
<metaInformation>
227
<scenarios/><MapperInfo srcSchemaPath="" srcSchemaRoot="" srcSchemaPathIsRelative="yes" srcSchemaInterpretAsXML="no" destSchemaPath="" destSchemaRoot="" destSchemaPathIsRelative="yes" destSchemaInterpretAsXML="no"/>
228
</metaInformation>
229
-->
(-)a/koha-tmpl/opac-tmpl/prog/en/xslt/UNIMARCslim2OPACDetail.xsl (-533 lines)
Lines 1-533 Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
3
<!DOCTYPE stylesheet [<!ENTITY nbsp "&#160;" >]>
4
5
<xsl:stylesheet version="1.0"
6
  xmlns:marc="http://www.loc.gov/MARC21/slim"
7
  xmlns:items="http://www.koha-community.org/items"
8
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
9
  exclude-result-prefixes="marc items">
10
11
<xsl:import href="UNIMARCslimUtils.xsl"/>
12
<xsl:output method = "html" indent="yes" omit-xml-declaration = "yes" encoding="UTF-8"/>
13
<xsl:template match="/">
14
  <xsl:apply-templates/>
15
</xsl:template>
16
17
<xsl:template match="marc:record">
18
  <xsl:variable name="leader" select="marc:leader"/>
19
  <xsl:variable name="leader6" select="substring($leader,7,1)"/>
20
  <xsl:variable name="leader7" select="substring($leader,8,1)"/>
21
  <xsl:variable name="biblionumber" select="marc:datafield[@tag=090]/marc:subfield[@code='a']"/>
22
  <xsl:variable name="DisplayOPACiconsXSLT" select="marc:sysprefs/marc:syspref[@name='DisplayOPACiconsXSLT']"/>
23
  <xsl:variable name="OPACURLOpenInNewWindow" select="marc:sysprefs/marc:syspref[@name='OPACURLOpenInNewWindow']"/>
24
  <xsl:variable name="URLLinkText" select="marc:sysprefs/marc:syspref[@name='URLLinkText']"/>
25
26
  <xsl:if test="marc:datafield[@tag=200]">
27
    <xsl:for-each select="marc:datafield[@tag=200]">
28
      <h1 class="title">
29
        <xsl:call-template name="addClassRtl" />
30
        <xsl:for-each select="marc:subfield">
31
          <xsl:choose>
32
            <xsl:when test="@code='a'">
33
              <xsl:variable name="title" select="."/>
34
              <xsl:variable name="ntitle"
35
               select="translate($title, '&#x0088;&#x0089;&#x0098;&#x009C;','')"/>
36
              <xsl:value-of select="$ntitle" />
37
            </xsl:when>
38
            <xsl:when test="@code='b'">
39
              <xsl:text> [</xsl:text>
40
              <xsl:value-of select="."/>
41
              <xsl:text>]</xsl:text>
42
            </xsl:when>
43
            <xsl:when test="@code='d'">
44
              <xsl:text> = </xsl:text>
45
              <xsl:value-of select="."/>
46
            </xsl:when>
47
            <xsl:when test="@code='e'">
48
              <xsl:text> : </xsl:text>
49
              <xsl:value-of select="."/>
50
            </xsl:when>
51
            <xsl:when test="@code='f'">
52
              <xsl:text> / </xsl:text>
53
              <xsl:value-of select="."/>
54
            </xsl:when>
55
            <xsl:when test="@code='g'">
56
              <xsl:text> ; </xsl:text>
57
              <xsl:value-of select="."/>
58
            </xsl:when>
59
            <xsl:otherwise>
60
              <xsl:text>, </xsl:text>
61
              <xsl:value-of select="."/>
62
            </xsl:otherwise>
63
          </xsl:choose>
64
        </xsl:for-each>
65
      </h1>
66
    </xsl:for-each>
67
  </xsl:if>
68
69
  <xsl:call-template name="tag_title">
70
    <xsl:with-param name="tag">454</xsl:with-param>
71
    <xsl:with-param name="label">Translation of</xsl:with-param>
72
    <xsl:with-param name="spanclass">original_title</xsl:with-param>
73
  </xsl:call-template>
74
75
  <xsl:call-template name="tag_title">
76
    <xsl:with-param name="tag">461</xsl:with-param>
77
    <xsl:with-param name="label">Set Level</xsl:with-param>
78
    <xsl:with-param name="spanclass">set_level</xsl:with-param>
79
  </xsl:call-template>
80
81
  <xsl:call-template name="tag_title">
82
    <xsl:with-param name="tag">464</xsl:with-param>
83
    <xsl:with-param name="label">Piece-Analytic Level</xsl:with-param>
84
    <xsl:with-param name="spanclass">piece_analytic_level</xsl:with-param>
85
  </xsl:call-template>
86
87
  <xsl:call-template name="tag_7xx">
88
    <xsl:with-param name="tag">700</xsl:with-param>
89
    <xsl:with-param name="label">Main Author</xsl:with-param>
90
    <xsl:with-param name="spanclass">main_author</xsl:with-param>
91
  </xsl:call-template>
92
93
  <xsl:call-template name="tag_7xx">
94
    <xsl:with-param name="tag">710</xsl:with-param>
95
    <xsl:with-param name="label">Corporate Author (Main)</xsl:with-param>
96
    <xsl:with-param name="spanclass">corporate_main_author</xsl:with-param>
97
  </xsl:call-template>
98
99
  <xsl:call-template name="tag_7xx">
100
    <xsl:with-param name="tag">701</xsl:with-param>
101
    <xsl:with-param name="label">Coauthor</xsl:with-param>
102
    <xsl:with-param name="spanclass">coauthor</xsl:with-param>
103
  </xsl:call-template>
104
105
  <xsl:call-template name="tag_7xx">
106
    <xsl:with-param name="tag">702</xsl:with-param>
107
    <xsl:with-param name="label">Secondary Author</xsl:with-param>
108
    <xsl:with-param name="spanclass">secondary_author</xsl:with-param>
109
  </xsl:call-template>
110
111
  <xsl:call-template name="tag_7xx">
112
    <xsl:with-param name="tag">711</xsl:with-param>
113
    <xsl:with-param name="label">Corporate Author (Coauthor)</xsl:with-param>
114
    <xsl:with-param name="spanclass">corporate_coauthor</xsl:with-param>
115
  </xsl:call-template>
116
117
  <xsl:call-template name="tag_7xx">
118
    <xsl:with-param name="tag">712</xsl:with-param>
119
    <xsl:with-param name="label">Corporate Author (Secondary)</xsl:with-param>
120
    <xsl:with-param name="spanclass">corporate_secondary_author</xsl:with-param>
121
  </xsl:call-template>
122
123
  <xsl:call-template name="tag_title">
124
    <xsl:with-param name="tag">500</xsl:with-param>
125
    <xsl:with-param name="label">Uniform Title</xsl:with-param>
126
    <xsl:with-param name="spanclass">uniform_title</xsl:with-param>
127
  </xsl:call-template>
128
129
  <xsl:call-template name="tag_title">
130
    <xsl:with-param name="tag">503</xsl:with-param>
131
    <xsl:with-param name="label">Uniform Conventional Heading</xsl:with-param>
132
    <xsl:with-param name="spanclass">uniform_conventional_heading</xsl:with-param>
133
  </xsl:call-template>
134
135
  <xsl:if test="marc:datafield[@tag=101]">
136
    <span class="results_summary language">
137
      <span class="label">Language: </span>
138
      <xsl:for-each select="marc:datafield[@tag=101]">
139
        <xsl:for-each select="marc:subfield">
140
          <xsl:choose>
141
            <xsl:when test="@code='b'">of intermediate text, </xsl:when>
142
            <xsl:when test="@code='c'">of original work, </xsl:when>
143
            <xsl:when test="@code='d'">of summary, </xsl:when>
144
            <xsl:when test="@code='e'">of contents page, </xsl:when>
145
            <xsl:when test="@code='f'">of title page, </xsl:when>
146
            <xsl:when test="@code='g'">of title proper, </xsl:when>
147
            <xsl:when test="@code='h'">of libretto, </xsl:when>
148
            <xsl:when test="@code='i'">of accompanying material, </xsl:when>
149
            <xsl:when test="@code='j'">of subtitles, </xsl:when>
150
          </xsl:choose>
151
          <xsl:value-of select="text()"/>
152
          <xsl:choose>
153
            <xsl:when test="position()=last()">
154
              <xsl:text>.</xsl:text>
155
            </xsl:when>
156
            <xsl:otherwise>
157
              <xsl:text> ; </xsl:text>
158
            </xsl:otherwise>
159
          </xsl:choose>
160
        </xsl:for-each>
161
      </xsl:for-each>
162
    </span>
163
  </xsl:if>
164
165
  <xsl:if test="marc:datafield[@tag=102]">
166
	  <span class="results_summary country">
167
      <span class="label">Country: </span>
168
      <xsl:for-each select="marc:datafield[@tag=102]">
169
        <xsl:for-each select="marc:subfield">
170
          <xsl:value-of select="text()"/>
171
          <xsl:choose>
172
            <xsl:when test="position()=last()">
173
              <xsl:text>.</xsl:text>
174
            </xsl:when>
175
              <xsl:otherwise><xsl:text>, </xsl:text>
176
            </xsl:otherwise>
177
          </xsl:choose>
178
        </xsl:for-each>
179
      </xsl:for-each>
180
    </span>
181
  </xsl:if>
182
183
  <xsl:call-template name="tag_comma">
184
    <xsl:with-param name="tag">205</xsl:with-param>
185
    <xsl:with-param name="label">Edition Statement</xsl:with-param>
186
    <xsl:with-param name="spanclass">edition</xsl:with-param>
187
  </xsl:call-template>
188
189
  <xsl:call-template name="tag_210" />
190
191
  <xsl:call-template name="tag_215" />
192
193
  <xsl:if test="marc:datafield[@tag=010]/marc:subfield[@code='a']">
194
    <span class="results_summary isbn"><span class="label">ISBN: </span>
195
    <xsl:for-each select="marc:datafield[@tag=010]">
196
      <xsl:variable name="isbn" select="marc:subfield[@code='a']"/>
197
      <xsl:value-of select="marc:subfield[@code='a']"/>
198
      <xsl:choose>
199
        <xsl:when test="position()=last()">
200
          <xsl:text>.</xsl:text>
201
        </xsl:when>
202
        <xsl:otherwise>
203
          <xsl:text> ; </xsl:text>
204
        </xsl:otherwise>
205
      </xsl:choose>
206
    </xsl:for-each>
207
    </span>
208
  </xsl:if>
209
210
  <xsl:if test="marc:datafield[@tag=011]">
211
    <span class="results_summary issn">
212
      <span class="label">ISSN: </span>
213
      <xsl:for-each select="marc:datafield[@tag=011]">
214
        <xsl:value-of select="marc:subfield[@code='a']"/>
215
        <xsl:choose>
216
          <xsl:when test="position()=last()">
217
            <xsl:text>.</xsl:text>
218
          </xsl:when>
219
          <xsl:otherwise>
220
            <xsl:text>; </xsl:text>
221
          </xsl:otherwise>
222
        </xsl:choose>
223
      </xsl:for-each>
224
    </span>
225
  </xsl:if>
226
227
  <xsl:call-template name="tag_title">
228
    <xsl:with-param name="tag">225</xsl:with-param>
229
    <xsl:with-param name="label">Series</xsl:with-param>
230
    <xsl:with-param name="spanclass">series</xsl:with-param>
231
  </xsl:call-template>
232
233
  <xsl:if test="marc:datafield[@tag=676]">
234
    <span class="results_summary dewey">
235
    <span class="label">Dewey: </span>
236
      <xsl:for-each select="marc:datafield[@tag=676]">
237
        <xsl:value-of select="marc:subfield[@code='a']"/>
238
        <xsl:if test="marc:subfield[@code='v']">
239
          <xsl:text>, </xsl:text>
240
          <xsl:value-of select="marc:subfield[@code='v']"/>
241
        </xsl:if>
242
        <xsl:if test="marc:subfield[@code='z']">
243
          <xsl:text>, </xsl:text>
244
          <xsl:value-of select="marc:subfield[@code='z']"/>
245
        </xsl:if>
246
        <xsl:if test="not (position()=last())">
247
          <xsl:text> ; </xsl:text>
248
        </xsl:if>
249
      </xsl:for-each>
250
    </span>
251
  </xsl:if>
252
253
  <xsl:if test="marc:datafield[@tag=686]">
254
    <span class="results_summary classification">
255
    <span class="label">Classification: </span>
256
      <xsl:for-each select="marc:datafield[@tag=686]">
257
        <xsl:value-of select="marc:subfield[@code='a']"/>
258
        <xsl:if test="marc:subfield[@code='b']">
259
          <xsl:text>, </xsl:text>
260
          <xsl:value-of select="marc:subfield[@code='b']"/>
261
        </xsl:if>
262
        <xsl:if test="marc:subfield[@code='c']">
263
          <xsl:text>, </xsl:text>
264
          <xsl:value-of select="marc:subfield[@code='c']"/>
265
        </xsl:if>
266
        <xsl:if test="not (position()=last())"><xsl:text> ; </xsl:text></xsl:if>
267
      </xsl:for-each>
268
    </span>
269
  </xsl:if>
270
271
  <xsl:if test="marc:datafield[@tag=327]">
272
    <span class="results_summary contents">
273
      <span class="label">Contents note: </span>
274
      <xsl:for-each select="marc:datafield[@tag=327]">
275
        <xsl:call-template name="chopPunctuation">
276
          <xsl:with-param name="chopString">
277
            <xsl:call-template name="subfieldSelect">
278
                <xsl:with-param name="codes">abcdjpvxyz</xsl:with-param>
279
                <xsl:with-param name="subdivCodes">jpxyz</xsl:with-param>
280
                <xsl:with-param name="subdivDelimiter">-- </xsl:with-param>
281
            </xsl:call-template>
282
          </xsl:with-param>
283
        </xsl:call-template>
284
      </xsl:for-each>
285
    </span>
286
  </xsl:if>
287
288
  <xsl:if test="marc:datafield[@tag=330]">
289
    <span class="results_summary abstract">
290
      <span class="label">Abstract: </span>
291
      <xsl:for-each select="marc:datafield[@tag=330]">
292
        <xsl:value-of select="marc:subfield[@code='a']"/>
293
        <xsl:choose>
294
          <xsl:when test="position()=last()">
295
            <xsl:text>.</xsl:text>
296
          </xsl:when>
297
          <xsl:otherwise>
298
            <xsl:text>; </xsl:text>
299
          </xsl:otherwise>
300
        </xsl:choose>
301
      </xsl:for-each>
302
    </span>
303
  </xsl:if>
304
305
  <xsl:if test="marc:datafield[@tag=317]">
306
    <span class="results_summary provenance">
307
      <span class="label">Provenance note: </span>
308
      <xsl:for-each select="marc:datafield[@tag=317]">
309
          <xsl:value-of select="marc:subfield[@code='a']"/>
310
      </xsl:for-each>
311
    </span>
312
  </xsl:if>
313
314
  <xsl:if test="marc:datafield[@tag=320]">
315
    <span class="results_summary bibliography">
316
      <span class="label">Bibliography: </span>
317
      <xsl:for-each select="marc:datafield[@tag=320]">
318
        <xsl:value-of select="marc:subfield[@code='a']"/>
319
        <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
320
      </xsl:for-each>
321
    </span>
322
  </xsl:if>
323
324
  <xsl:if test="marc:datafield[@tag=328]">
325
    <span class="results_summary thesis">
326
      <span class="label">Thesis: </span>
327
      <xsl:for-each select="marc:datafield[@tag=328]">
328
        <xsl:value-of select="marc:subfield[@code='a']"/>
329
        <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
330
      </xsl:for-each>
331
    </span>
332
  </xsl:if>
333
334
  <xsl:if test="marc:datafield[@tag=333]">
335
    <span class="results_summary audience">
336
      <span class="label">Audience: </span>
337
      <xsl:for-each select="marc:datafield[@tag=333]">
338
        <xsl:value-of select="marc:subfield[@code='a']"/>
339
        <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
340
      </xsl:for-each>
341
    </span>
342
  </xsl:if>
343
344
  <xsl:if test="marc:datafield[@tag=955]">
345
    <span class="results_summary sudoc_serial_history">
346
      <span class="label">SUDOC serial history: </span>
347
      <xsl:for-each select="marc:datafield[@tag=955]">
348
        <xsl:value-of select="marc:subfield[@code='9']"/>:
349
        <xsl:value-of select="marc:subfield[@code='r']"/>
350
        <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
351
      </xsl:for-each>
352
    </span>
353
  </xsl:if>
354
355
  <xsl:call-template name="tag_subject">
356
    <xsl:with-param name="tag">600</xsl:with-param>
357
    <xsl:with-param name="label">Subject - Personal Name</xsl:with-param>
358
  </xsl:call-template>
359
360
  <xsl:call-template name="tag_subject">
361
    <xsl:with-param name="tag">601</xsl:with-param>
362
    <xsl:with-param name="label">Subject - Corporate Author</xsl:with-param>
363
  </xsl:call-template>
364
365
  <xsl:call-template name="tag_subject">
366
    <xsl:with-param name="tag">602</xsl:with-param>
367
    <xsl:with-param name="label">Subject - Family</xsl:with-param>
368
  </xsl:call-template>
369
370
  <xsl:call-template name="tag_subject">
371
    <xsl:with-param name="tag">604</xsl:with-param>
372
    <xsl:with-param name="label">Subject - Author/Title</xsl:with-param>
373
  </xsl:call-template>
374
375
  <xsl:call-template name="tag_subject">
376
    <xsl:with-param name="tag">606</xsl:with-param>
377
    <xsl:with-param name="label">Subject - Topical Name</xsl:with-param>
378
  </xsl:call-template>
379
380
  <xsl:call-template name="tag_subject">
381
    <xsl:with-param name="tag">607</xsl:with-param>
382
    <xsl:with-param name="label">Subject - Geographical Name</xsl:with-param>
383
  </xsl:call-template>
384
385
  <xsl:call-template name="tag_subject">
386
    <xsl:with-param name="tag">608</xsl:with-param>
387
    <xsl:with-param name="label">Subject - Form</xsl:with-param>
388
  </xsl:call-template>
389
390
  <xsl:call-template name="tag_subject">
391
    <xsl:with-param name="tag">610</xsl:with-param>
392
    <xsl:with-param name="label">Subject</xsl:with-param>
393
  </xsl:call-template>
394
395
  <xsl:call-template name="tag_subject">
396
    <xsl:with-param name="tag">615</xsl:with-param>
397
    <xsl:with-param name="label">Subject Category</xsl:with-param>
398
  </xsl:call-template>
399
400
  <xsl:call-template name="tag_subject">
401
    <xsl:with-param name="tag">616</xsl:with-param>
402
    <xsl:with-param name="label">Trademark</xsl:with-param>
403
  </xsl:call-template>
404
405
  <xsl:if test="marc:datafield[@tag=856]">
406
    <span class="results_summary online_resources">
407
      <span class="label">Online Resources:</span>
408
      <xsl:for-each select="marc:datafield[@tag=856]">
409
        <a>
410
          <xsl:attribute name="href">
411
            <xsl:value-of select="marc:subfield[@code='u']"/>
412
          </xsl:attribute>
413
          <xsl:if test="$OPACURLOpenInNewWindow='1'">
414
            <xsl:attribute name="target">_blank</xsl:attribute>
415
          </xsl:if>
416
          <xsl:choose>
417
            <xsl:when test="marc:subfield[@code='y' or @code='3' or @code='z']">
418
              <xsl:call-template name="subfieldSelect">
419
                <xsl:with-param name="codes">y3z</xsl:with-param>
420
              </xsl:call-template>
421
            </xsl:when>
422
            <xsl:when test="not(marc:subfield[@code='y']) and not(marc:subfield[@code='3']) and not(marc:subfield[@code='z'])">
423
              <xsl:choose>
424
                <xsl:when test="$URLLinkText!=''">
425
                  <xsl:value-of select="$URLLinkText"/>
426
                </xsl:when>
427
                <xsl:otherwise>
428
                  <xsl:text>Click here to access online</xsl:text>
429
                </xsl:otherwise>
430
              </xsl:choose>
431
            </xsl:when>
432
          </xsl:choose>
433
        </a>
434
        <xsl:choose>
435
          <xsl:when test="position()=last()"></xsl:when>
436
          <xsl:otherwise> | </xsl:otherwise>
437
        </xsl:choose>
438
      </xsl:for-each>
439
    </span>
440
  </xsl:if>
441
</xsl:template>
442
443
    <xsl:template name="nameABCDQ">
444
            <xsl:call-template name="chopPunctuation">
445
                <xsl:with-param name="chopString">
446
                    <xsl:call-template name="subfieldSelect">
447
                        <xsl:with-param name="codes">aq</xsl:with-param>
448
                    </xsl:call-template>
449
                </xsl:with-param>
450
                <xsl:with-param name="punctuation">
451
                    <xsl:text>:,;/ </xsl:text>
452
                </xsl:with-param>
453
            </xsl:call-template>
454
        <xsl:call-template name="termsOfAddress"/>
455
    </xsl:template>
456
457
    <xsl:template name="nameABCDN">
458
        <xsl:for-each select="marc:subfield[@code='a']">
459
                <xsl:call-template name="chopPunctuation">
460
                    <xsl:with-param name="chopString" select="."/>
461
                </xsl:call-template>
462
        </xsl:for-each>
463
        <xsl:for-each select="marc:subfield[@code='b']">
464
                <xsl:value-of select="."/>
465
        </xsl:for-each>
466
        <xsl:if test="marc:subfield[@code='c'] or marc:subfield[@code='d'] or marc:subfield[@code='n']">
467
                <xsl:call-template name="subfieldSelect">
468
                    <xsl:with-param name="codes">cdn</xsl:with-param>
469
                </xsl:call-template>
470
        </xsl:if>
471
    </xsl:template>
472
473
    <xsl:template name="nameACDEQ">
474
            <xsl:call-template name="subfieldSelect">
475
                <xsl:with-param name="codes">acdeq</xsl:with-param>
476
            </xsl:call-template>
477
    </xsl:template>
478
    <xsl:template name="termsOfAddress">
479
        <xsl:if test="marc:subfield[@code='b' or @code='c']">
480
            <xsl:call-template name="chopPunctuation">
481
                <xsl:with-param name="chopString">
482
                    <xsl:call-template name="subfieldSelect">
483
                        <xsl:with-param name="codes">bc</xsl:with-param>
484
                    </xsl:call-template>
485
                </xsl:with-param>
486
            </xsl:call-template>
487
        </xsl:if>
488
    </xsl:template>
489
490
    <xsl:template name="part">
491
        <xsl:variable name="partNumber">
492
            <xsl:call-template name="specialSubfieldSelect">
493
                <xsl:with-param name="axis">n</xsl:with-param>
494
                <xsl:with-param name="anyCodes">n</xsl:with-param>
495
                <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
496
            </xsl:call-template>
497
        </xsl:variable>
498
        <xsl:variable name="partName">
499
            <xsl:call-template name="specialSubfieldSelect">
500
                <xsl:with-param name="axis">p</xsl:with-param>
501
                <xsl:with-param name="anyCodes">p</xsl:with-param>
502
                <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
503
            </xsl:call-template>
504
        </xsl:variable>
505
        <xsl:if test="string-length(normalize-space($partNumber))">
506
                <xsl:call-template name="chopPunctuation">
507
                    <xsl:with-param name="chopString" select="$partNumber"/>
508
                </xsl:call-template>
509
        </xsl:if>
510
        <xsl:if test="string-length(normalize-space($partName))">
511
                <xsl:call-template name="chopPunctuation">
512
                    <xsl:with-param name="chopString" select="$partName"/>
513
                </xsl:call-template>
514
        </xsl:if>
515
    </xsl:template>
516
517
    <xsl:template name="specialSubfieldSelect">
518
        <xsl:param name="anyCodes"/>
519
        <xsl:param name="axis"/>
520
        <xsl:param name="beforeCodes"/>
521
        <xsl:param name="afterCodes"/>
522
        <xsl:variable name="str">
523
            <xsl:for-each select="marc:subfield">
524
                <xsl:if test="contains($anyCodes, @code)      or (contains($beforeCodes,@code) and following-sibling::marc:subfield[@code=$axis])      or (contains($afterCodes,@code) and preceding-sibling::marc:subfield[@code=$axis])">
525
                    <xsl:value-of select="text()"/>
526
                    <xsl:text> </xsl:text>
527
                </xsl:if>
528
            </xsl:for-each>
529
        </xsl:variable>
530
        <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
531
    </xsl:template>
532
533
</xsl:stylesheet>
(-)a/koha-tmpl/opac-tmpl/prog/en/xslt/UNIMARCslim2OPACResults.xsl (-253 lines)
Lines 1-253 Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
3
<!DOCTYPE stylesheet [<!ENTITY nbsp "&#160;" >]>
4
5
<xsl:stylesheet version="1.0"
6
  xmlns:marc="http://www.loc.gov/MARC21/slim"
7
  xmlns:items="http://www.koha-community.org/items"
8
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
9
  exclude-result-prefixes="marc items">
10
11
<xsl:import href="UNIMARCslimUtils.xsl"/>
12
<xsl:output method = "html" indent="yes" omit-xml-declaration = "yes" encoding="UTF-8"/>
13
<xsl:key name="item-by-status" match="items:item" use="items:status"/>
14
<xsl:key name="item-by-status-and-branch" match="items:item" use="concat(items:status, ' ', items:homebranch)"/>
15
16
<xsl:template match="/">
17
  <xsl:apply-templates/>
18
</xsl:template>
19
20
<xsl:template match="marc:record">
21
  <xsl:variable name="leader" select="marc:leader"/>
22
  <xsl:variable name="leader6" select="substring($leader,7,1)"/>
23
  <xsl:variable name="leader7" select="substring($leader,8,1)"/>
24
  <xsl:variable name="biblionumber"
25
   select="marc:datafield[@tag=090]/marc:subfield[@code='a']"/>
26
  <xsl:variable name="isbn"
27
   select="marc:datafield[@tag=010]/marc:subfield[@code='a']"/>
28
29
  <xsl:variable name="hidelostitems" select="marc:sysprefs/marc:syspref[@name='hidelostitems']"/>
30
  <xsl:variable name="singleBranchMode" select="marc:sysprefs/marc:syspref[@name='singleBranchMode']"/>
31
  <xsl:variable name="OPACURLOpenInNewWindow" select="marc:sysprefs/marc:syspref[@name='OPACURLOpenInNewWindow']"/>
32
33
  <xsl:if test="marc:datafield[@tag=200]">
34
    <xsl:for-each select="marc:datafield[@tag=200]">
35
        <xsl:call-template name="addClassRtl" />
36
        <xsl:for-each select="marc:subfield">
37
          <xsl:choose>
38
            <xsl:when test="@code='a'">
39
              <xsl:variable name="title" select="."/>
40
              <xsl:variable name="ntitle"
41
                select="translate($title, '&#x0088;&#x0089;&#x0098;&#x009C;','')"/>
42
              <a>
43
                <xsl:attribute name="href">
44
                  <xsl:text>/cgi-bin/koha/opac-detail.pl?biblionumber=</xsl:text>
45
                  <xsl:value-of select="$biblionumber"/>
46
                </xsl:attribute>
47
                <xsl:value-of select="$ntitle" />
48
              </a>
49
            </xsl:when>
50
            <xsl:when test="@code='b'">
51
              <xsl:text> [</xsl:text>
52
              <xsl:value-of select="."/>
53
              <xsl:text>]</xsl:text>
54
            </xsl:when>
55
            <xsl:when test="@code='d'">
56
              <xsl:text> = </xsl:text>
57
              <xsl:value-of select="."/>
58
            </xsl:when>
59
            <xsl:when test="@code='e'">
60
              <xsl:text> : </xsl:text>
61
              <xsl:value-of select="."/>
62
            </xsl:when>
63
            <xsl:when test="@code='f'">
64
              <xsl:text> / </xsl:text>
65
              <xsl:value-of select="."/>
66
            </xsl:when>
67
            <xsl:when test="@code='g'">
68
              <xsl:text> ; </xsl:text>
69
              <xsl:value-of select="."/>
70
            </xsl:when>
71
            <xsl:otherwise>
72
              <xsl:text>, </xsl:text>
73
              <xsl:value-of select="."/>
74
            </xsl:otherwise>
75
          </xsl:choose>
76
        </xsl:for-each>
77
    </xsl:for-each>
78
  </xsl:if>
79
80
  <xsl:call-template name="tag_title">
81
    <xsl:with-param name="tag">454</xsl:with-param>
82
    <xsl:with-param name="label">Translation of</xsl:with-param>
83
    <xsl:with-param name="spanclass">original_title</xsl:with-param>
84
  </xsl:call-template>
85
86
  <xsl:call-template name="tag_title">
87
    <xsl:with-param name="tag">461</xsl:with-param>
88
    <xsl:with-param name="label">Set Level</xsl:with-param>
89
    <xsl:with-param name="spanclass">set_level</xsl:with-param>
90
  </xsl:call-template>
91
92
  <xsl:call-template name="tag_title">
93
    <xsl:with-param name="tag">464</xsl:with-param>
94
    <xsl:with-param name="label">Piece-Analytic Level</xsl:with-param>
95
    <xsl:with-param name="spanclass">piece_analytic_level</xsl:with-param>
96
  </xsl:call-template>
97
98
  <xsl:call-template name="tag_210" />
99
100
  <xsl:call-template name="tag_215" />
101
102
  <span class="results_summary availability">
103
    <span class="label">Availability: </span>
104
    <xsl:choose>
105
      <xsl:when test="marc:datafield[@tag=856]">
106
        <xsl:for-each select="marc:datafield[@tag=856]">
107
          <xsl:choose>
108
            <xsl:when test="@ind2=0">
109
              <a>
110
                <xsl:attribute name="href">
111
                  <xsl:value-of select="marc:subfield[@code='u']"/>
112
                </xsl:attribute>
113
                <xsl:if test="$OPACURLOpenInNewWindow='1'">
114
                    <xsl:attribute name="target">_blank</xsl:attribute>
115
                </xsl:if>
116
                <xsl:choose>
117
                  <xsl:when test="marc:subfield[@code='y' or @code='3' or @code='z']">
118
                    <xsl:call-template name="subfieldSelect">                        
119
                      <xsl:with-param name="codes">y3z</xsl:with-param>                    
120
                    </xsl:call-template>
121
                  </xsl:when>
122
                  <xsl:when test="not(marc:subfield[@code='y']) and not(marc:subfield[@code='3']) and not(marc:subfield[@code='z'])">
123
                    Click here to access online
124
                  </xsl:when>
125
                </xsl:choose>
126
              </a>
127
              <xsl:choose>
128
                <xsl:when test="position()=last()"></xsl:when>
129
                <xsl:otherwise> | </xsl:otherwise>
130
              </xsl:choose>
131
            </xsl:when> 
132
          </xsl:choose>
133
        </xsl:for-each>
134
      </xsl:when>
135
      <xsl:when test="count(key('item-by-status', 'available'))=0 and count(key('item-by-status', 'reference'))=0">
136
        No items available
137
      </xsl:when>
138
      <xsl:when test="count(key('item-by-status', 'available'))>0">
139
        <span class="available">
140
          <b><xsl:text>Items available for loan: </xsl:text></b>
141
          <xsl:variable name="available_items" select="key('item-by-status', 'available')"/>
142
      <xsl:choose>
143
      <xsl:when test="$singleBranchMode=1">
144
      <xsl:for-each select="$available_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]">
145
        <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber"> [<xsl:value-of select="items:itemcallnumber"/>]</xsl:if>
146
          <xsl:text> (</xsl:text>
147
          <xsl:value-of select="count(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch)))"/>
148
          <xsl:text>)</xsl:text>
149
          <xsl:choose><xsl:when test="position()=last()"><xsl:text>. </xsl:text></xsl:when><xsl:otherwise><xsl:text>, </xsl:text></xsl:otherwise></xsl:choose>
150
      </xsl:for-each>
151
      </xsl:when>
152
      <xsl:otherwise>
153
          <xsl:for-each select="$available_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]">
154
            <xsl:value-of select="items:homebranch"/>
155
  			    <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber">[<xsl:value-of select="items:itemcallnumber"/>]
156
  			    </xsl:if>
157
            <xsl:text> (</xsl:text>
158
            <xsl:value-of select="count(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch)))"/>
159
            <xsl:text>)</xsl:text>
160
            <xsl:choose>
161
              <xsl:when test="position()=last()">
162
                <xsl:text>. </xsl:text>
163
              </xsl:when>
164
              <xsl:otherwise>
165
                <xsl:text>, </xsl:text>
166
              </xsl:otherwise>
167
            </xsl:choose>
168
          </xsl:for-each>
169
      </xsl:otherwise>
170
      </xsl:choose>
171
        </span>
172
      </xsl:when>
173
    </xsl:choose>
174
    <xsl:choose>
175
      <xsl:when test="count(key('item-by-status', 'reference'))>0">
176
        <span class="available">
177
          <b><xsl:text>Items available for reference: </xsl:text></b>
178
          <xsl:variable name="reference_items"
179
                        select="key('item-by-status', 'reference')"/>
180
          <xsl:for-each select="$reference_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]">
181
            <xsl:if test="$singleBranchMode=0">
182
                <xsl:value-of select="items:homebranch"/>
183
            </xsl:if>
184
            <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber">[<xsl:value-of select="items:itemcallnumber"/>]</xsl:if>
185
            <xsl:text> (</xsl:text>
186
            <xsl:value-of select="count(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch)))"/>
187
            <xsl:text>)</xsl:text>
188
            <xsl:choose>
189
              <xsl:when test="position()=last()">
190
                <xsl:text>. </xsl:text>
191
              </xsl:when>
192
              <xsl:otherwise>
193
                <xsl:text>, </xsl:text>
194
              </xsl:otherwise>
195
            </xsl:choose>
196
          </xsl:for-each>
197
        </span>
198
      </xsl:when>
199
    </xsl:choose>
200
    <xsl:if test="count(key('item-by-status', 'Checked out'))>0">
201
      <span class="unavailable">
202
        <xsl:text>Checked out (</xsl:text>
203
        <xsl:value-of select="count(key('item-by-status', 'Checked out'))"/>
204
        <xsl:text>). </xsl:text>
205
      </span>
206
    </xsl:if>
207
    <xsl:if test="count(key('item-by-status', 'Withdrawn'))>0">
208
      <span class="unavailable">
209
        <xsl:text>Withdrawn (</xsl:text>
210
        <xsl:value-of select="count(key('item-by-status', 'Withdrawn'))"/>
211
        <xsl:text>). </xsl:text>
212
      </span>
213
    </xsl:if>
214
    <xsl:if test="$hidelostitems='0' and count(key('item-by-status', 'Lost'))>0">
215
      <span class="unavailable">
216
        <xsl:text>Lost (</xsl:text>
217
        <xsl:value-of select="count(key('item-by-status', 'Lost'))"/>
218
        <xsl:text>). </xsl:text>
219
      </span>
220
    </xsl:if>
221
    <xsl:if test="count(key('item-by-status', 'Damaged'))>0">
222
      <span class="unavailable">
223
        <xsl:text>Damaged (</xsl:text>
224
        <xsl:value-of select="count(key('item-by-status', 'Damaged'))"/>
225
        <xsl:text>). </xsl:text>
226
      </span>
227
    </xsl:if>
228
    <xsl:if test="count(key('item-by-status', 'On order'))>0">
229
      <span class="unavailable">
230
        <xsl:text>On order (</xsl:text>
231
        <xsl:value-of select="count(key('item-by-status', 'On order'))"/>
232
        <xsl:text>). </xsl:text>
233
      </span>
234
    </xsl:if>
235
    <xsl:if test="count(key('item-by-status', 'In transit'))>0">
236
      <span class="unavailable">
237
        <xsl:text>In transit (</xsl:text>
238
        <xsl:value-of select="count(key('item-by-status', 'In transit'))"/>
239
        <xsl:text>). </xsl:text>
240
      </span>
241
    </xsl:if>
242
    <xsl:if test="count(key('item-by-status', 'Waiting'))>0">
243
      <span class="unavailable">
244
        <xsl:text>On hold (</xsl:text>
245
        <xsl:value-of select="count(key('item-by-status', 'Waiting'))"/>
246
        <xsl:text>). </xsl:text>
247
      </span>
248
    </xsl:if>
249
  </span>
250
251
</xsl:template>
252
253
</xsl:stylesheet>
(-)a/koha-tmpl/opac-tmpl/prog/en/xslt/UNIMARCslimUtils.xsl (-368 lines)
Lines 1-368 Link Here
1
<?xml version='1.0'?>
2
3
<!DOCTYPE stylesheet [<!ENTITY nbsp "&#160;" >]>
4
5
<xsl:stylesheet version="1.0"
6
  xmlns:marc="http://www.loc.gov/MARC21/slim"
7
  xmlns:items="http://www.koha-community.org/items"
8
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
9
  exclude-result-prefixes="marc items">
10
11
  <xsl:template name="datafield">
12
    <xsl:param name="tag"/>
13
    <xsl:param name="ind1"><xsl:text> </xsl:text></xsl:param>
14
    <xsl:param name="ind2"><xsl:text> </xsl:text></xsl:param>
15
    <xsl:param name="subfields"/>
16
    <xsl:element name="datafield">
17
      <xsl:attribute name="tag">
18
        <xsl:value-of select="$tag"/>
19
      </xsl:attribute>
20
      <xsl:attribute name="ind1">
21
        <xsl:value-of select="$ind1"/>
22
      </xsl:attribute>
23
      <xsl:attribute name="ind2">
24
       <xsl:value-of select="$ind2"/>
25
         </xsl:attribute>
26
       <xsl:copy-of select="$subfields"/>
27
    </xsl:element>
28
  </xsl:template>
29
30
  <xsl:template name="subfieldSelect">
31
    <xsl:param name="codes"/>
32
    <xsl:param name="delimeter"><xsl:text> </xsl:text></xsl:param>
33
    <xsl:param name="subdivCodes"/>
34
    <xsl:param name="subdivDelimiter"/>
35
    <xsl:variable name="str">
36
      <xsl:for-each select="marc:subfield">
37
        <xsl:if test="contains($codes, @code)">
38
          <xsl:if test="contains($subdivCodes, @code)">
39
            <xsl:value-of select="$subdivDelimiter"/>
40
          </xsl:if>
41
          <xsl:value-of select="text()"/><xsl:value-of select="$delimeter"/>
42
        </xsl:if>
43
      </xsl:for-each>
44
    </xsl:variable>
45
    <xsl:value-of select="substring($str,1,string-length($str)-string-length($delimeter))"/>
46
  </xsl:template>
47
48
  <xsl:template name="buildSpaces">
49
    <xsl:param name="spaces"/>
50
    <xsl:param name="char"><xsl:text> </xsl:text></xsl:param>
51
    <xsl:if test="$spaces>0">
52
      <xsl:value-of select="$char"/>
53
      <xsl:call-template name="buildSpaces">
54
        <xsl:with-param name="spaces" select="$spaces - 1"/>
55
        <xsl:with-param name="char" select="$char"/>
56
      </xsl:call-template>
57
    </xsl:if>
58
  </xsl:template>
59
60
  <xsl:template name="chopPunctuation">
61
    <xsl:param name="chopString"/>
62
    <xsl:variable name="length" select="string-length($chopString)"/>
63
    <xsl:choose>
64
      <xsl:when test="$length=0"/>
65
      <xsl:when test="contains('.:,;/ ', substring($chopString,$length,1))">
66
        <xsl:call-template name="chopPunctuation">
67
          <xsl:with-param name="chopString" select="substring($chopString,1,$length - 1)"/>
68
        </xsl:call-template>
69
      </xsl:when>
70
      <xsl:when test="not($chopString)"/>
71
      <xsl:otherwise><xsl:value-of select="$chopString"/></xsl:otherwise>
72
    </xsl:choose>
73
    <xsl:text> </xsl:text>
74
  </xsl:template>
75
76
  <xsl:template name="addClassRtl">
77
    <xsl:variable name="lang" select="marc:subfield[@code='7']" />
78
    <xsl:if test="$lang = 'ha' or $lang = 'Hebrew' or $lang = 'fa' or $lang = 'Arabe'">
79
      <xsl:attribute name="class">rtl</xsl:attribute>
80
    </xsl:if>
81
  </xsl:template>
82
83
  <xsl:template name="tag_title">
84
    <xsl:param name="tag" />
85
    <xsl:param name="label" />
86
    <xsl:param name="spanclass" />
87
    <xsl:if test="marc:datafield[@tag=$tag]">
88
      <span class="results_summary {$spanclass}">
89
        <span class="label">
90
        <xsl:value-of select="$label"/>: </span>
91
        <xsl:for-each select="marc:datafield[@tag=$tag]">
92
          <xsl:call-template name="addClassRtl" />
93
          <xsl:for-each select="marc:subfield">
94
            <xsl:choose>
95
              <xsl:when test="@code='a'">
96
                <xsl:variable name="title" select="."/>
97
                <xsl:variable name="ntitle"
98
                 select="translate($title, '&#x0088;&#x0089;&#x0098;&#x009C;','')"/>
99
                <xsl:value-of select="$ntitle" />
100
              </xsl:when>
101
              <xsl:when test="@code='b'">
102
                <xsl:text>[</xsl:text>
103
                <xsl:value-of select="."/>
104
                <xsl:text>]</xsl:text>
105
              </xsl:when>
106
              <xsl:when test="@code='d'">
107
                <xsl:text> = </xsl:text>
108
                <xsl:value-of select="."/>
109
              </xsl:when>
110
              <xsl:when test="@code='e'">
111
                <xsl:text> : </xsl:text>
112
                <xsl:value-of select="."/>
113
              </xsl:when>
114
              <xsl:when test="@code='f'">
115
                <xsl:text> / </xsl:text>
116
                <xsl:value-of select="."/>
117
              </xsl:when>
118
              <xsl:when test="@code='g'">
119
                <xsl:text> ; </xsl:text>
120
                <xsl:value-of select="."/>
121
              </xsl:when>
122
              <xsl:otherwise>
123
                <xsl:if test="position()>1">
124
                  <xsl:text>, </xsl:text>
125
                </xsl:if>
126
                <xsl:value-of select="."/>
127
              </xsl:otherwise>
128
            </xsl:choose>
129
          </xsl:for-each>
130
          <xsl:if test="not (position() = last())">
131
            <xsl:text> • </xsl:text>
132
          </xsl:if>
133
        </xsl:for-each>
134
      </span>
135
    </xsl:if>
136
  </xsl:template>
137
138
  <xsl:template name="tag_comma">
139
    <xsl:param name="tag" />
140
    <xsl:param name="label" />
141
    <xsl:param name="spanclass" />
142
    <xsl:if test="marc:datafield[@tag=$tag]">
143
      <span class="results_summary {$spanclass}">
144
        <span class="label">
145
        <xsl:value-of select="$label"/>: </span>
146
        <xsl:for-each select="marc:datafield[@tag=$tag]">
147
          <xsl:call-template name="addClassRtl" />
148
          <xsl:for-each select="marc:subfield">
149
            <xsl:if test="position()>1">
150
              <xsl:text>, </xsl:text>
151
            </xsl:if>
152
            <xsl:value-of select="."/>
153
          </xsl:for-each>
154
          <xsl:if test="not (position() = last())">
155
            <xsl:text> • </xsl:text>
156
          </xsl:if>
157
        </xsl:for-each>
158
      </span>
159
    </xsl:if>
160
  </xsl:template>
161
162
  <xsl:template name="tag_210">
163
    <span class="results_summary publication">
164
      <span class="label">Publication: </span>
165
      <xsl:for-each select="marc:datafield[@tag=210]">
166
        <span>
167
          <xsl:call-template name="addClassRtl" />
168
          <xsl:for-each select="marc:subfield">
169
            <xsl:choose>
170
              <xsl:when test="@code='c' or @code='g'">
171
                <xsl:if test="position()>1">
172
                  <xsl:text> : </xsl:text>
173
                </xsl:if>
174
                <xsl:value-of select="."/>
175
              </xsl:when>
176
              <xsl:otherwise>
177
                <xsl:if test="position()>1">
178
                  <xsl:text>, </xsl:text>
179
                </xsl:if>
180
                <xsl:value-of select="."/>
181
              </xsl:otherwise>
182
            </xsl:choose>
183
          </xsl:for-each>
184
          <xsl:if test="not (position() = last())">
185
            <xsl:text> • </xsl:text>
186
          </xsl:if>
187
        </span>
188
      </xsl:for-each>
189
    </span>
190
  </xsl:template>
191
192
  <xsl:template name="tag_215">
193
    <xsl:for-each select="marc:datafield[@tag=215]">
194
	  <span class="results_summary description">
195
        <span class="label">Description: </span>
196
        <xsl:if test="marc:subfield[@code='a']">
197
          <xsl:value-of select="marc:subfield[@code='a']"/>
198
        </xsl:if>
199
        <xsl:if test="marc:subfield[@code='c']"> :
200
          <xsl:value-of select="marc:subfield[@code='c']"/>
201
        </xsl:if>
202
        <xsl:if test="marc:subfield[@code='d']"> ;
203
          <xsl:value-of select="marc:subfield[@code='d']"/>
204
        </xsl:if>
205
        <xsl:if test="marc:subfield[@code='e']"> +
206
          <xsl:value-of select="marc:subfield[@code='e']"/>
207
        </xsl:if>
208
      </span>
209
    </xsl:for-each>
210
  </xsl:template>
211
212
  <xsl:template name="tag_onesubject">
213
    <xsl:choose>
214
      <xsl:when test="marc:subfield[@code=9]">
215
        <xsl:for-each select="marc:subfield">
216
          <xsl:if test="@code='9'">
217
            <xsl:variable name="start" select="position()"/>
218
            <xsl:variable name="ends">
219
              <xsl:for-each select="../marc:subfield[position() &gt; $start]">
220
                <xsl:if test="@code=9">
221
                  <xsl:variable name="end" select="position() + $start"/>
222
                  <xsl:value-of select="$end"/>
223
                  <xsl:text>,</xsl:text>
224
                </xsl:if>
225
              </xsl:for-each>
226
            </xsl:variable>
227
            <xsl:variable name="end">
228
              <xsl:choose>
229
                <xsl:when test="string-length($ends) > 0">
230
                  <xsl:value-of select="substring-before($ends,',')"/>
231
                </xsl:when>
232
                <xsl:otherwise>
233
                  <xsl:text>1000</xsl:text>
234
                </xsl:otherwise>
235
              </xsl:choose>
236
            </xsl:variable>
237
            <xsl:variable name="display">
238
              <xsl:for-each select="../marc:subfield[position() &gt; $start and position() &lt; $end and @code!=2 and @code!=3]">
239
                <xsl:value-of select="."/>
240
                <xsl:if test="not(position()=last())">
241
                  <xsl:text>, </xsl:text>
242
                </xsl:if>
243
              </xsl:for-each>
244
            </xsl:variable>
245
            <a>
246
              <xsl:attribute name="href">
247
                <xsl:text>/cgi-bin/koha/opac-search.pl?q=an:</xsl:text>
248
                <xsl:value-of select="."/>
249
              </xsl:attribute>
250
              <xsl:choose>
251
                <xsl:when test="string-length($display) &gt; 0">
252
                  <xsl:call-template name="chopPunctuation">
253
                    <xsl:with-param name="chopString">
254
                      <xsl:value-of select="$display"/>
255
                    </xsl:with-param>
256
                  </xsl:call-template>
257
                </xsl:when>
258
                <xsl:otherwise>
259
                  <xsl:value-of select="."/>
260
                </xsl:otherwise>
261
              </xsl:choose>
262
            </a>
263
            <xsl:variable name="ncommas"
264
                 select="string-length($ends) - string-length(translate($ends, ',', ''))" />
265
            <xsl:if test="$ncommas &gt; 1">
266
              <xsl:text> -- </xsl:text>
267
            </xsl:if>
268
          </xsl:if>
269
        </xsl:for-each>
270
      </xsl:when>
271
      <xsl:when test="marc:subfield[@code=a]">
272
        <a>
273
          <xsl:attribute name="href">
274
            <xsl:text>/cgi-bin/koha/opac-search.pl?q=su:</xsl:text>
275
            <xsl:value-of select="marc:subfield[@code='a']"/>
276
          </xsl:attribute>
277
          <xsl:call-template name="chopPunctuation">
278
            <xsl:with-param name="chopString">
279
              <xsl:call-template name="subfieldSelect">
280
                <xsl:with-param name="codes">abcdfijkmnpvxyz</xsl:with-param>
281
                <xsl:with-param name="subdivCodes">ijknpxyz</xsl:with-param>
282
                <xsl:with-param name="subdivDelimiter">-- </xsl:with-param>
283
              </xsl:call-template>
284
            </xsl:with-param>
285
          </xsl:call-template>
286
        </a>
287
      </xsl:when>
288
      <xsl:otherwise/>
289
    </xsl:choose>
290
    <xsl:if test="not(position()=last())">
291
      <xsl:text> | </xsl:text>
292
    </xsl:if>
293
  </xsl:template>
294
295
  <xsl:template name="tag_subject">
296
    <xsl:param name="tag" />
297
    <xsl:param name="label" />
298
    <xsl:param name="spanclass" />
299
    <xsl:if test="marc:datafield[@tag=$tag]">
300
      <span class="results_summary subjects {$spanclass}">
301
        <span class="label">
302
          <xsl:value-of select="$label"/>
303
          <xsl:text>: </xsl:text>
304
        </span>
305
        <span class="value">
306
          <xsl:for-each select="marc:datafield[@tag=$tag]">
307
            <xsl:call-template name="tag_onesubject">
308
            </xsl:call-template>
309
          </xsl:for-each>
310
        </span>
311
      </span>
312
    </xsl:if>
313
  </xsl:template>
314
315
  <xsl:template name="tag_7xx">
316
    <xsl:param name="tag" />
317
    <xsl:param name="label" />
318
    <xsl:param name="spanclass" />
319
    <xsl:if test="marc:datafield[@tag=$tag]">
320
      <span class="results_summary author {$spanclass}">
321
        <span class="label">
322
          <xsl:value-of select="$label" />
323
          <xsl:text>: </xsl:text>
324
        </span>
325
        <span class="value">
326
          <xsl:for-each select="marc:datafield[@tag=$tag]">
327
            <a>
328
              <xsl:choose>
329
                <xsl:when test="marc:subfield[@code=9]">
330
                  <xsl:attribute name="href">
331
                    <xsl:text>/cgi-bin/koha/opac-search.pl?q=an:</xsl:text>
332
                    <xsl:value-of select="marc:subfield[@code=9]"/>
333
                  </xsl:attribute>
334
                </xsl:when>
335
                <xsl:otherwise>
336
                  <xsl:attribute name="href">
337
                    <xsl:text>/cgi-bin/koha/opac-search.pl?q=au:</xsl:text>
338
                    <xsl:value-of select="marc:subfield[@code='a']"/>
339
                    <xsl:text> </xsl:text>
340
                    <xsl:value-of select="marc:subfield[@code='b']"/>
341
                  </xsl:attribute>
342
                </xsl:otherwise>
343
              </xsl:choose>
344
              <xsl:for-each select="marc:subfield[@code='a' or @code='b' or @code='4' or @code='c' or @code='d' or @code='f' or @code='g' or @code='p']">
345
                <xsl:choose>
346
                  <xsl:when test="@code='9'">
347
                  </xsl:when>
348
                  <xsl:otherwise>
349
                    <xsl:value-of select="."/>
350
                  </xsl:otherwise>
351
                </xsl:choose>
352
                <xsl:if test="not(position() = last())">
353
                  <xsl:text>, </xsl:text>
354
                </xsl:if>
355
              </xsl:for-each>
356
            </a>
357
            <xsl:if test="not(position() = last())">
358
              <span style="padding: 3px;">
359
                <xsl:text>;</xsl:text>
360
              </span>
361
            </xsl:if>
362
          </xsl:for-each>
363
        </span>
364
      </span>
365
    </xsl:if>
366
  </xsl:template>
367
368
</xsl:stylesheet>
(-)a/koha-tmpl/opac-tmpl/prog/en/xslt/compact.xsl (-88 lines)
Lines 1-88 Link Here
1
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
3
<!DOCTYPE stylesheet [<!ENTITY nbsp "&#160;" >]>
4
5
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
6
  xmlns="http://www.w3.org/1999/xhtml"
7
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8
  xmlns:marc="http://www.loc.gov/MARC21/slim" 
9
  exclude-result-prefixes="xsi marc"
10
  version="1.0">
11
  <xsl:output method="xml" version="1.0" encoding="UTF-8" doctype-public="-//W3C//DTD Xhtml 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" />    
12
      <xsl:template match="/">
13
        <html>
14
          <head>
15
	    <title>MARC Card View</title>
16
          </head>
17
          <body>
18
           <xsl:apply-templates/>
19
          </body>
20
        </html>
21
      </xsl:template>
22
      
23
      <xsl:template match="marc:record">
24
        <div class="cardimage">
25
        <xsl:apply-templates select="marc:datafield[@tag!='082' and @tag!='092' and @tag!='010']"/>
26
        <span class="bottom">
27
          <xsl:apply-templates select="marc:controlfield[@tag='001']"/>
28
          <xsl:apply-templates select="marc:datafield[@tag='082' or @tag='092' or @tag='010']"/>
29
        </span>
30
        </div>
31
      </xsl:template>
32
      
33
      <xsl:template match="marc:controlfield">
34
          <span class="oclc">#<xsl:value-of select="substring(.,4)"/></span>
35
      </xsl:template>
36
      
37
      <xsl:template match="marc:datafield">
38
        <xsl:if test="starts-with(@tag, '1')">
39
          <p class="mainheading"><xsl:value-of select="."/></p>
40
        </xsl:if>
41
        <xsl:if test="starts-with(@tag, '24') and /marc:record/marc:datafield[@tag='100']">
42
          <span class="title"><xsl:value-of select="."/></span>
43
        </xsl:if>
44
        <xsl:if test="starts-with(@tag, '24') and not(/marc:record/marc:datafield[@tag='100'])">
45
          <span class="titlemain"><xsl:value-of select="."/></span><br/>
46
        </xsl:if>
47
        <xsl:if test="@tag='260'">
48
          <xsl:value-of select="."/>
49
        </xsl:if>
50
        <xsl:if test="@tag='300'">
51
          <p class="extent"><xsl:value-of select="."/></p>
52
        </xsl:if>
53
        <xsl:if test="starts-with(@tag, '5')">
54
          <p class="note"><xsl:value-of select="."/></p>
55
        </xsl:if>
56
        <xsl:if test="@tag='650'">
57
          <span class='counter'><xsl:number count="marc:datafield[@tag='650']"/>.</span> <xsl:apply-templates select="marc:subfield"/>
58
        </xsl:if>
59
        <xsl:if test="@tag='653'">
60
          <span class="counter"><xsl:number format="i" count="marc:datafield[@tag='653']"/>.</span> <xsl:apply-templates select="marc:subfield"/>
61
        </xsl:if>
62
        <xsl:if test="@tag='010'">
63
          <xsl:variable name="LCCN.nospace" select="translate(., ' ', '')"/>
64
          <xsl:variable name="LCCN.length" select="string-length($LCCN.nospace)"/>
65
          <xsl:variable name="LCCN.display" select="concat(substring($LCCN.nospace, 1, $LCCN.length - 6), '-', format-number(substring($LCCN.nospace, $LCCN.length - 5),'#'))"/>
66
          <span class="LCCN">LCCN:<xsl:value-of select="$LCCN.display"/></span>
67
        </xsl:if>
68
        <xsl:if test="@tag='082' or @tag='092'">
69
          <span class="DDC"><xsl:value-of select="marc:subfield[@code='a']"/></span>
70
        </xsl:if>
71
        <xsl:if test="@tag='856'">
72
          <br/><xsl:apply-templates mode="link" select="marc:subfield" />
73
        </xsl:if>
74
      </xsl:template>
75
      <xsl:template match="marc:subfield" mode="link">
76
        <xsl:if test="@code='u'">
77
          <span class="link">
78
            <a class="url" href="{.}"/>
79
        </span>
80
        </xsl:if>
81
      </xsl:template>
82
      <xsl:template match="marc:subfield">
83
        <xsl:if test="@code!='2'">    
84
        <xsl:if test="@code!='a'">--</xsl:if>
85
        <xsl:value-of select="."/>
86
      </xsl:if>
87
      </xsl:template>
88
    </xsl:stylesheet>
(-)a/koha-tmpl/opac-tmpl/prog/en/xslt/plainMARC.xsl (-59 lines)
Lines 1-59 Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
<!DOCTYPE stylesheet [<!ENTITY nbsp "&#160;" >]>
3
<xsl:stylesheet version="1.0" xmlns:marc="http://www.loc.gov/MARC21/slim" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
4
    <xsl:output method="html" encoding="UTF-8"/>
5
6
	<xsl:template match="/">
7
		<html>
8
          <head><title>MARC View</title></head>
9
          <body>
10
           <xsl:apply-templates/>
11
          </body>
12
		</html>
13
	</xsl:template>
14
15
	<xsl:template match="marc:record">
16
		<table>
17
			<tr>
18
				<th style="white-space:nowrap">
19
					000
20
				</th>
21
				<td colspan="2"></td>
22
				<td>
23
					<xsl:value-of select="marc:leader"/>
24
				</td>
25
			</tr>
26
			<xsl:apply-templates select="marc:datafield|marc:controlfield"/>
27
		</table>
28
	</xsl:template>
29
30
	<xsl:template match="marc:controlfield">
31
		<tr>
32
			<th style="white-space:nowrap">
33
				<xsl:value-of select="@tag"/>
34
			</th>
35
			<td colspan="2"></td>
36
			<td>
37
				<xsl:value-of select="."/>
38
			</td>
39
		</tr>
40
	</xsl:template>
41
42
	<xsl:template match="marc:datafield">
43
		<tr>
44
			<th style="white-space:nowrap">
45
				<xsl:value-of select="@tag"/>
46
			</th>
47
			<td><xsl:value-of select="@ind1"/></td>
48
			<td><xsl:value-of select="@ind2"/></td>
49
			<td><xsl:apply-templates select="marc:subfield"/></td>
50
		</tr>
51
	</xsl:template>
52
53
	<xsl:template match="marc:subfield">
54
		<strong>_<xsl:value-of select="@code"/></strong> <xsl:value-of select="."/>
55
		<xsl:choose>
56
		<xsl:when test="position()=last()"><xsl:text> </xsl:text></xsl:when><xsl:otherwise><br /></xsl:otherwise></xsl:choose>
57
	</xsl:template>
58
59
</xsl:stylesheet>
(-)a/koha-tmpl/opac-tmpl/prog/itemtypeimg/crystal-clear/_COPYING.txt (-122 lines)
Lines 1-122 Link Here
1
License
2
3
The Crystal Project are released under LGPL.
4
5
GNU General Public License.
6
7
   0.
8
9
      This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you".
10
11
      A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.
12
13
      The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".)
14
15
      "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.
16
17
      Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.
18
   1.
19
20
      You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.
21
22
      You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
23
   2.
24
25
      You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
26
         1. The modified work must itself be a software library.
27
         2. You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.
28
         3. You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.
29
         4. If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.
30
31
      (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)
32
33
      These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
34
35
      Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.
36
37
      In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
38
   3.
39
40
      You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.
41
42
      Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.
43
44
      This option is useful when you wish to copy part of the code of the Library into a program that is not a library.
45
   4.
46
47
      You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.
48
49
      If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.
50
   5.
51
52
      A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.
53
      However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.
54
55
      When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.
56
57
      If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)
58
59
      Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.
60
   6.
61
62
      As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.
63
64
      You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:
65
         1. Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) .
66
         2. Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.
67
         3. Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.
68
         4. If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.
69
         5. Verify that the user has already received a copy of these materials or that you have already sent this user a copy.
70
71
      For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
72
73
      It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.
74
   7.
75
76
      You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:
77
         1.
78
79
            Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above.
80
         2.
81
82
            Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.
83
   8.
84
85
      You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
86
   9.
87
88
      You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.
89
  10.
90
91
      Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License.
92
  11.
93
94
      If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.
95
96
      If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.
97
98
      It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
99
100
      This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
101
  12.
102
103
      If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
104
  13.
105
106
      The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
107
108
      Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.
109
  14.
110
111
      If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
112
113
No Warranty
114
115
  15.
116
117
      Because the library is licensed free of charge, there is no warranty for the library, to the extent permitted by applicable law. Except when otherwise stated in writing the copyright holders and/or other parties provide the library "as is" without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of the library is with you. Should the library prove defective, you assume the cost of all necessary servicing, repair or correction.
118
  16.
119
120
      In no event unless required by applicable law or agreed to in writing will any copyright holder, or any other party who may modify and/or redistribute the library as permitted above, be liable to you for damages, including any general, special, incidental or consequential damages arising out of the use or inability to use the library (including but not limited to loss of data or data being rendered inaccurate or losses sustained by you or third parties or a failure of the library to operate with any other software), even if such holder or other party has been advised of the possibility of such damages.
121
122
(-)a/koha-tmpl/opac-tmpl/prog/itemtypeimg/crystal-clear/_README.txt (-27 lines)
Lines 1-27 Link Here
1
The Crystal Clear icon set was created by 
2
Everaldo Coelho, http://www.everaldo.com/
3
Submitted:  Oct 11 2003
4
Updated:  Jun 16 2007
5
6
Icons were acquired from Wikimedia Commons, 
7
http://commons.wikimedia.org/wiki/Crystal_Clear, 30 Jan 2010.
8
9
The images were renamed, organized and re-sized to create this packager in a
10
standard icon package format.  This was preformed by Jeff Israel at the Open
11
Icon Library.
12
13
This package was created by the Open Icon Library,
14
http://openiconlibrary.sourceforge.net/ and is available for download there.T
15
All Icons are free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. 
16
17
See COPYING.txt or http://www.everaldo.com/crystal/?action=license for details.
18
19
---------------
20
21
Added to this set were three images by RayAna Min Park (August 2011):
22
23
books-closed.png
24
books-open-cd.png
25
books-open.png
26
27
All Icons are free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. 

Return to bug 12233